linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC] ARM64, PCIe, annd ACPI
@ 2018-08-08  0:10 Ray Jui
  2018-08-08  2:10 ` Bjorn Helgaas
  2018-08-08  9:38 ` Lorenzo Pieralisi
  0 siblings, 2 replies; 11+ messages in thread
From: Ray Jui @ 2018-08-08  0:10 UTC (permalink / raw)
  To: Lorenzo Pieralisi, Bjorn Helgaas, linux-pci, Tomasz Nowicki
  Cc: Vladimir Olovyannikov, BCM Kernel Feedback

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?

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?

I might be missing something here so I'd like to send out this email and 
get your opinion on this. Your feedback is highly appreciated.

Regards,

Ray

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC] ARM64, PCIe, annd ACPI
  2018-08-08  0:10 [RFC] ARM64, PCIe, annd ACPI Ray Jui
@ 2018-08-08  2:10 ` Bjorn Helgaas
  2018-08-08 18:46   ` Ray Jui
  2018-08-08  9:38 ` Lorenzo Pieralisi
  1 sibling, 1 reply; 11+ messages in thread
From: Bjorn Helgaas @ 2018-08-08  2:10 UTC (permalink / raw)
  To: Ray Jui
  Cc: Lorenzo Pieralisi, Bjorn Helgaas, linux-pci, Tomasz Nowicki,
	Vladimir Olovyannikov, BCM Kernel Feedback

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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC] ARM64, PCIe, annd ACPI
  2018-08-08  0:10 [RFC] ARM64, PCIe, annd ACPI Ray Jui
  2018-08-08  2:10 ` Bjorn Helgaas
@ 2018-08-08  9:38 ` Lorenzo Pieralisi
  2018-08-08 18:49   ` Ray Jui
  1 sibling, 1 reply; 11+ messages in thread
From: Lorenzo Pieralisi @ 2018-08-08  9:38 UTC (permalink / raw)
  To: Ray Jui
  Cc: Bjorn Helgaas, linux-pci, Tomasz Nowicki, Vladimir Olovyannikov,
	BCM Kernel Feedback

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?
> 
> 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?

Yes and it is not just MMIO, config space must be ECAM compliant as described
in the PCI firmware specification and enforced here:

http://infocenter.arm.com/help/topic/com.arm.doc.den0029b/Server_Base_System_Architecture_v5_0_ARM_DEN_0029B.pdf

In short: what's in the mainline (+ adequate PCI controller firmware
configuration) must be sufficient to bootstrap your PCI subsystem in
ACPI, it is a very simple litmus test and we won't add anything that
deviates from that to the mainline kernel ARM64 ACPI PCI code support.

Thanks,
Lorenzo

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC] ARM64, PCIe, annd ACPI
  2018-08-08  2:10 ` Bjorn Helgaas
@ 2018-08-08 18:46   ` Ray Jui
  0 siblings, 0 replies; 11+ messages in thread
From: Ray Jui @ 2018-08-08 18:46 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Lorenzo Pieralisi, Bjorn Helgaas, linux-pci, Tomasz Nowicki,
	Vladimir Olovyannikov, BCM Kernel Feedback



On 8/7/2018 7:10 PM, Bjorn Helgaas wrote:
> 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
> 

Thanks for the pointers, Bjorn! Very helpful!

Ray

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC] ARM64, PCIe, annd ACPI
  2018-08-08  9:38 ` Lorenzo Pieralisi
@ 2018-08-08 18:49   ` Ray Jui
  2018-08-09  8:59     ` Lorenzo Pieralisi
  0 siblings, 1 reply; 11+ messages in thread
From: Ray Jui @ 2018-08-08 18:49 UTC (permalink / raw)
  To: Lorenzo Pieralisi
  Cc: Bjorn Helgaas, linux-pci, Tomasz Nowicki, Vladimir Olovyannikov,
	BCM Kernel Feedback



On 8/8/2018 2:38 AM, Lorenzo Pieralisi wrote:
> 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?
>>
>> 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?
> 
> Yes and it is not just MMIO, config space must be ECAM compliant as described
> in the PCI firmware specification and enforced here:
> 
> http://infocenter.arm.com/help/topic/com.arm.doc.den0029b/Server_Base_System_Architecture_v5_0_ARM_DEN_0029B.pdf
> 

Okay, got it, the SBSA spec makes it very clear that the PCIe controller 
needs to support ECAM.

> In short: what's in the mainline (+ adequate PCI controller firmware
> configuration) must be sufficient to bootstrap your PCI subsystem in
> ACPI, it is a very simple litmus test and we won't add anything that
> deviates from that to the mainline kernel ARM64 ACPI PCI code support.
> 

It sounds like I'll have to look into ways to work around this at the 
driver level as Bjorn pointed out with some other examples.

> Thanks,
> Lorenzo
> 

Thanks!

Ray

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC] ARM64, PCIe, annd ACPI
  2018-08-08 18:49   ` Ray Jui
@ 2018-08-09  8:59     ` Lorenzo Pieralisi
  2018-08-09 14:57       ` Ray Jui
  0 siblings, 1 reply; 11+ messages in thread
From: Lorenzo Pieralisi @ 2018-08-09  8:59 UTC (permalink / raw)
  To: Ray Jui
  Cc: Bjorn Helgaas, linux-pci, Tomasz Nowicki, Vladimir Olovyannikov,
	BCM Kernel Feedback

On Wed, Aug 08, 2018 at 11:49:46AM -0700, Ray Jui wrote:
> 
> 
> On 8/8/2018 2:38 AM, Lorenzo Pieralisi wrote:
> >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?
> >>
> >>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?
> >
> >Yes and it is not just MMIO, config space must be ECAM compliant as described
> >in the PCI firmware specification and enforced here:
> >
> >http://infocenter.arm.com/help/topic/com.arm.doc.den0029b/Server_Base_System_Architecture_v5_0_ARM_DEN_0029B.pdf
> >
> 
> Okay, got it, the SBSA spec makes it very clear that the PCIe controller
> needs to support ECAM.
> 
> >In short: what's in the mainline (+ adequate PCI controller firmware
> >configuration) must be sufficient to bootstrap your PCI subsystem in
> >ACPI, it is a very simple litmus test and we won't add anything that
> >deviates from that to the mainline kernel ARM64 ACPI PCI code support.
> >
> 
> It sounds like I'll have to look into ways to work around this at the driver
> level as Bjorn pointed out with some other examples.

As I said ARM64 ACPI PCI kernel support is in the mainline today and I
am not willing to merge any more MCFG quirks at driver level - the
information is out there, it is public and must be followed, either
designers do that or no ACPI PCI support on your platform, sorry.

Lorenzo

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC] ARM64, PCIe, annd ACPI
  2018-08-09  8:59     ` Lorenzo Pieralisi
@ 2018-08-09 14:57       ` Ray Jui
  2018-08-09 15:41         ` Lorenzo Pieralisi
  0 siblings, 1 reply; 11+ messages in thread
From: Ray Jui @ 2018-08-09 14:57 UTC (permalink / raw)
  To: Lorenzo Pieralisi
  Cc: Bjorn Helgaas, linux-pci, Tomasz Nowicki, Vladimir Olovyannikov,
	BCM Kernel Feedback

Hi Lorenzo,

On 8/9/2018 1:59 AM, Lorenzo Pieralisi wrote:
> On Wed, Aug 08, 2018 at 11:49:46AM -0700, Ray Jui wrote:
>>
>>
>> On 8/8/2018 2:38 AM, Lorenzo Pieralisi wrote:
>>> 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?
>>>>
>>>> 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?
>>>
>>> Yes and it is not just MMIO, config space must be ECAM compliant as described
>>> in the PCI firmware specification and enforced here:
>>>
>>> http://infocenter.arm.com/help/topic/com.arm.doc.den0029b/Server_Base_System_Architecture_v5_0_ARM_DEN_0029B.pdf
>>>
>>
>> Okay, got it, the SBSA spec makes it very clear that the PCIe controller
>> needs to support ECAM.
>>
>>> In short: what's in the mainline (+ adequate PCI controller firmware
>>> configuration) must be sufficient to bootstrap your PCI subsystem in
>>> ACPI, it is a very simple litmus test and we won't add anything that
>>> deviates from that to the mainline kernel ARM64 ACPI PCI code support.
>>>
>>
>> It sounds like I'll have to look into ways to work around this at the driver
>> level as Bjorn pointed out with some other examples.
> 
> As I said ARM64 ACPI PCI kernel support is in the mainline today and I
> am not willing to merge any more MCFG quirks at driver level - the
> information is out there, it is public and must be followed, either
> designers do that or no ACPI PCI support on your platform, sorry.
> 
> Lorenzo
> 

I just want to make sure I interpret this properly. This means if the 
PCIe controller hardware does not support ECAM, there's pretty much no 
way around it with SW based workaround going forward with mainline kernel?

What about for the PCIe controller that was designed a few years back?

Thanks,

Ray

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC] ARM64, PCIe, annd ACPI
  2018-08-09 14:57       ` Ray Jui
@ 2018-08-09 15:41         ` Lorenzo Pieralisi
  2018-08-09 15:44           ` Ray Jui
  0 siblings, 1 reply; 11+ messages in thread
From: Lorenzo Pieralisi @ 2018-08-09 15:41 UTC (permalink / raw)
  To: Ray Jui
  Cc: Bjorn Helgaas, linux-pci, Tomasz Nowicki, Vladimir Olovyannikov,
	BCM Kernel Feedback

On Thu, Aug 09, 2018 at 07:57:52AM -0700, Ray Jui wrote:

[...]

> >As I said ARM64 ACPI PCI kernel support is in the mainline today and I
> >am not willing to merge any more MCFG quirks at driver level - the
> >information is out there, it is public and must be followed, either
> >designers do that or no ACPI PCI support on your platform, sorry.
> >
> >Lorenzo
> >
> 
> I just want to make sure I interpret this properly. This means if
> the PCIe controller hardware does not support ECAM, there's pretty
> much no way around it with SW based workaround going forward with
> mainline kernel?

Yes.

> What about for the PCIe controller that was designed a few years back?

It will bootstrap with DT :)

Thanks,
Lorenzo

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC] ARM64, PCIe, annd ACPI
  2018-08-09 15:41         ` Lorenzo Pieralisi
@ 2018-08-09 15:44           ` Ray Jui
  2018-08-09 16:00             ` Lorenzo Pieralisi
  0 siblings, 1 reply; 11+ messages in thread
From: Ray Jui @ 2018-08-09 15:44 UTC (permalink / raw)
  To: Lorenzo Pieralisi
  Cc: Bjorn Helgaas, linux-pci, Tomasz Nowicki, Vladimir Olovyannikov,
	BCM Kernel Feedback

Hi Lorenzo,

On 8/9/2018 8:41 AM, Lorenzo Pieralisi wrote:
> On Thu, Aug 09, 2018 at 07:57:52AM -0700, Ray Jui wrote:
> 
> [...]
> 
>>> As I said ARM64 ACPI PCI kernel support is in the mainline today and I
>>> am not willing to merge any more MCFG quirks at driver level - the
>>> information is out there, it is public and must be followed, either
>>> designers do that or no ACPI PCI support on your platform, sorry.
>>>
>>> Lorenzo
>>>
>>
>> I just want to make sure I interpret this properly. This means if
>> the PCIe controller hardware does not support ECAM, there's pretty
>> much no way around it with SW based workaround going forward with
>> mainline kernel?
> 
> Yes.
> 
>> What about for the PCIe controller that was designed a few years back?
> 
> It will bootstrap with DT :)

Okay, one more quick question, what about for distributions that will 
eventually disable DT and force ACPI?

> 
> Thanks,
> Lorenzo
> 

Thanks,

Ray

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC] ARM64, PCIe, annd ACPI
  2018-08-09 15:44           ` Ray Jui
@ 2018-08-09 16:00             ` Lorenzo Pieralisi
  2018-08-09 16:04               ` Ray Jui
  0 siblings, 1 reply; 11+ messages in thread
From: Lorenzo Pieralisi @ 2018-08-09 16:00 UTC (permalink / raw)
  To: Ray Jui
  Cc: Bjorn Helgaas, linux-pci, Tomasz Nowicki, Vladimir Olovyannikov,
	BCM Kernel Feedback

On Thu, Aug 09, 2018 at 08:44:34AM -0700, Ray Jui wrote:
> Hi Lorenzo,
> 
> On 8/9/2018 8:41 AM, Lorenzo Pieralisi wrote:
> >On Thu, Aug 09, 2018 at 07:57:52AM -0700, Ray Jui wrote:
> >
> >[...]
> >
> >>>As I said ARM64 ACPI PCI kernel support is in the mainline today and I
> >>>am not willing to merge any more MCFG quirks at driver level - the
> >>>information is out there, it is public and must be followed, either
> >>>designers do that or no ACPI PCI support on your platform, sorry.
> >>>
> >>>Lorenzo
> >>>
> >>
> >>I just want to make sure I interpret this properly. This means if
> >>the PCIe controller hardware does not support ECAM, there's pretty
> >>much no way around it with SW based workaround going forward with
> >>mainline kernel?
> >
> >Yes.
> >
> >>What about for the PCIe controller that was designed a few years back?
> >
> >It will bootstrap with DT :)
> 
> Okay, one more quick question, what about for distributions that
> will eventually disable DT and force ACPI?

ACPI PCI support revolves around a FW model that requires, among other
things, ECAM and its firmware description, MCFG table, to work.

If the host controller is not ECAM compliant it is not PCI firmware
compliant, so it is not ACPI compliant, you can't run ACPI only
distributions on it.

It is a model that has been run for decades in basically all
ACPI based systems out there and there is not a reason to
deviate from it, I understand the frustration but that's the
way it is, sorry.

Thanks,
Lorenzo

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RFC] ARM64, PCIe, annd ACPI
  2018-08-09 16:00             ` Lorenzo Pieralisi
@ 2018-08-09 16:04               ` Ray Jui
  0 siblings, 0 replies; 11+ messages in thread
From: Ray Jui @ 2018-08-09 16:04 UTC (permalink / raw)
  To: Lorenzo Pieralisi
  Cc: Bjorn Helgaas, linux-pci, Tomasz Nowicki, Vladimir Olovyannikov,
	BCM Kernel Feedback

Hi Lorenzo,

On 8/9/2018 9:00 AM, Lorenzo Pieralisi wrote:
> On Thu, Aug 09, 2018 at 08:44:34AM -0700, Ray Jui wrote:
>> Hi Lorenzo,
>>
>> On 8/9/2018 8:41 AM, Lorenzo Pieralisi wrote:
>>> On Thu, Aug 09, 2018 at 07:57:52AM -0700, Ray Jui wrote:
>>>
>>> [...]
>>>
>>>>> As I said ARM64 ACPI PCI kernel support is in the mainline today and I
>>>>> am not willing to merge any more MCFG quirks at driver level - the
>>>>> information is out there, it is public and must be followed, either
>>>>> designers do that or no ACPI PCI support on your platform, sorry.
>>>>>
>>>>> Lorenzo
>>>>>
>>>>
>>>> I just want to make sure I interpret this properly. This means if
>>>> the PCIe controller hardware does not support ECAM, there's pretty
>>>> much no way around it with SW based workaround going forward with
>>>> mainline kernel?
>>>
>>> Yes.
>>>
>>>> What about for the PCIe controller that was designed a few years back?
>>>
>>> It will bootstrap with DT :)
>>
>> Okay, one more quick question, what about for distributions that
>> will eventually disable DT and force ACPI?
> 
> ACPI PCI support revolves around a FW model that requires, among other
> things, ECAM and its firmware description, MCFG table, to work.
> 
> If the host controller is not ECAM compliant it is not PCI firmware
> compliant, so it is not ACPI compliant, you can't run ACPI only
> distributions on it.
> 
> It is a model that has been run for decades in basically all
> ACPI based systems out there and there is not a reason to
> deviate from it, I understand the frustration but that's the
> way it is, sorry.
> 
> Thanks,
> Lorenzo
> 

Okay that draws the line. Thanks for confirming.

Ray

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2018-08-09 18:30 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-08  0:10 [RFC] ARM64, PCIe, annd ACPI Ray Jui
2018-08-08  2:10 ` Bjorn Helgaas
2018-08-08 18:46   ` Ray Jui
2018-08-08  9:38 ` Lorenzo Pieralisi
2018-08-08 18:49   ` Ray Jui
2018-08-09  8:59     ` Lorenzo Pieralisi
2018-08-09 14:57       ` Ray Jui
2018-08-09 15:41         ` Lorenzo Pieralisi
2018-08-09 15:44           ` Ray Jui
2018-08-09 16:00             ` Lorenzo Pieralisi
2018-08-09 16:04               ` Ray Jui

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).