Certain hardware devices, such as the IBM POWER9 CPU, transparently swap PCI bus MMIO data endianness when running in big endian mode. This transparent data swapping presents issues for certain types of BARs, for example little endian framebuffers, where the device driver needs to be aware the PCI BAR is now appearing as big endian from the host's perspective.
Introduce CONFIG_PCI_ARCH_ENDIAN_AUTOSWAP and enable on ppc64 systems. Signed-off-by: Timothy Pearson <[email protected]> --- arch/powerpc/Kconfig | 1 + drivers/pci/Kconfig | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index e24f4d88885a..0e75fe570389 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -314,6 +314,7 @@ config PPC select OF_EARLY_FLATTREE select OLD_SIGACTION if PPC32 select OLD_SIGSUSPEND + select PCI_ARCH_ENDIAN_AUTOSWAP if PCI && PPC64 select PCI_DOMAINS if PCI select PCI_MSI_ARCH_FALLBACKS if PCI_MSI select PCI_SYSCALL if PCI diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig index 7065a8e5f9b1..fccc01110763 100644 --- a/drivers/pci/Kconfig +++ b/drivers/pci/Kconfig @@ -40,6 +40,10 @@ config PCI_DOMAINS_GENERIC config PCI_SYSCALL bool +config PCI_ARCH_ENDIAN_AUTOSWAP + bool + depends on PCI + source "drivers/pci/pcie/Kconfig" config PCI_MSI -- 2.51.0
