On Tue, Aug 07, 2018 at 05:10:15PM -0700, Ray Jui wrote: > Hi Lorenzo/Bjorn, > > I have a question on PCIe controller APCI support on ARM64 based systems. > > If my understanding of the implementation of "pci_acpi_scan_root" under > "arch/arm64/kernel/pci.c" is correct, it appears > "pci_acpi_setup_ecam_mapping" is called within "pci_acpi_scan_root". > > Does that mean for a PCIe host controller on ARM64 to support ACPI, it needs > to support ECAM and MMIO based access to the configuration space registers? Yes. In my opinion, a PCIe host controller is generally required to support ECAM even if the platform doesn't support ACPI. I base this on PCIe r4.0, sec 7.2.2: For systems that are PC-compatible, or that do not implement a processor-architecture-specific firmware interface standard that allows access to the Configuration Space, the ECAM is required as defined in this section. > If the above statement is true, does it imply that any PCIe controller on > ARM64 that does not support MMIO based access to the config space register > cannot have ACPI support? We would treat that as a non-compliant platform that requires special quirks to work around the problem. That does mean we have to add platform-specific quirks, which of course means we can't run an old kernel on a new platform that lacks standard ECAM. There are several existing systems like this. The notes and examples here should be a place to start: drivers/pci/controller/Makefile drivers/pci/controller/dwc/Makefile drivers/acpi/pci_mcfg.c Bjorn