PCI: designware-ep: dw_pcie_ep_set_msi() should only set MMC bits
authorNiklas Cassel <niklas.cassel@axis.com>
Tue, 19 Dec 2017 23:29:23 +0000 (00:29 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 27 Mar 2019 05:13:55 +0000 (14:13 +0900)
commita9d76f59faffc0447701b902ed8322d35c45a983
tree1d9148ed6fe598cec0d7063c072a8c9c7a102637
parent4aac26ecb4ace3df840af95408f2279c85684f62
PCI: designware-ep: dw_pcie_ep_set_msi() should only set MMC bits

commit 099a95f3591ade29da52131895a3ba9f92a0e82c upstream.

Previously, dw_pcie_ep_set_msi() wrote all bits in the Message Control
register, thus overwriting the PCI_MSI_FLAGS_64BIT bit.
By clearing the PCI_MSI_FLAGS_64BIT bit, we break MSI
on systems where the RC has set a 64 bit MSI address.
Fix dw_pcie_ep_set_msi() so that it only sets MMC bits.

Tested-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
Signed-off-by: Niklas Cassel <niklas.cassel@axis.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Joao Pinto <jpinto@synopsys.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/pci/dwc/pcie-designware-ep.c
drivers/pci/dwc/pcie-designware.h