summaryrefslogtreecommitdiffstats
path: root/MAINTAINERS
diff options
context:
space:
mode:
authorShawn Lin <shawn.lin@rock-chips.com>2017-07-03 17:21:02 +0800
committerBjorn Helgaas <bhelgaas@google.com>2017-07-03 08:12:19 -0500
commitdc8cca5ef25ac4cb0dfc37467521a759767ff361 (patch)
tree67e3568fe55a19532d2eae71da394991ded58b1a /MAINTAINERS
parentc2741cb6eba7ce5f59f0b7475b01ea9054fb69fe (diff)
downloadlinux-dc8cca5ef25ac4cb0dfc37467521a759767ff361.tar.bz2
PCI: rockchip: Use normal register bank for config accessors
Rockchip's RC has two banks of registers for the root port: a normal bank that is strictly compatible with the PCIe spec, and a privileged bank that can be used to change RO bits of root port registers. When probing the RC driver, we use the privileged bank to do some basic setup work as some RO bits are hw-inited to wrong value. But we didn't change to the normal bank after probing the driver. This leads to a serious problem when the PME code tries to clear the PME status by writing PCI_EXP_RTSTA_PME to the register of PCI_EXP_RTSTA. Per PCIe 3.0 spec, section 7.8.14, the PME status bit is RW1C. So the PME code is doing the right thing to clear the PME status but we find the RC doesn't clear it but actually setting it to one. So finally the system trap in pcie_pme_work_fn() as PCI_EXP_RTSTA_PME is true now forever. This issue can be reproduced by booting kernel with pci=nomsi. Use the normal register bank for the PCI config accessors. The privileged bank is used only internally by this driver. Fixes: e77f847d ("PCI: rockchip: Add Rockchip PCIe controller support") Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Cc: stable@vger.kernel.org Cc: Jeffy Chen <jeffy.chen@rock-chips.com> Cc: Brian Norris <briannorris@chromium.org>
Diffstat (limited to 'MAINTAINERS')
0 files changed, 0 insertions, 0 deletions