PCI: designware-ep: Fix ->get_msi() to check MSI_EN bit
authorKishon Vijay Abraham I <kishon@ti.com>
Tue, 19 Dec 2017 09:55:41 +0000 (15:25 +0530)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Tue, 19 Dec 2017 11:05:44 +0000 (11:05 +0000)
commita134a457ed985dca8cce7ac4ea66129ea70eba73
treeee892f45a46c94de7b7c2764af0f4a932fdeaec6
parent35ad61921f495ee14915d185de79478c1737b4da
PCI: designware-ep: Fix ->get_msi() to check MSI_EN bit

->get_msi() now checks MSI_EN bit in the MSI CAPABILITY register to
find whether the host supports MSI instead of using the
MSI ADDRESS in the MSI CAPABILITY register.

This fixes the issue with the following sequence
  'modprobe pci_endpoint_test' enables MSI
  'rmmod pci_endpoint_test' disables MSI but MSI address (in EP's
capability register) has a valid value
  'modprobe pci_endpoint_test no_msi=1' - Since MSI address (in EP's
capability register) has a valid value (set during the previous
insertion of the module), EP thinks host supports MSI.

Fixes: f8aed6ec624f ("PCI: dwc: designware: Add EP mode support")
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
drivers/pci/dwc/pcie-designware-ep.c
drivers/pci/dwc/pcie-designware.h