All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Zheng, Lv" <lv.zheng@intel.com>
To: Bjorn Helgaas <bhelgaas@google.com>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>
Cc: "linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linaro-acpi@lists.linaro.org" <linaro-acpi@lists.linaro.org>
Subject: RE: [PATCH] PCI: Add information about describing PCI in ACPI
Date: Wed, 23 Nov 2016 03:23:35 +0000	[thread overview]
Message-ID: <1AE640813FDE7649BE1B193DEA596E886A2949AF@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <20161117175938.17465.45820.stgit@bhelgaas-glaptop.roam.corp.google.com>

Hi, Bjorn

Thanks for the documentation.
It really helps!

However I have a question below.

> From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-owner@vger.kernel.org] On Behalf Of Bjorn
> Helgaas
> Subject: [PATCH] PCI: Add information about describing PCI in ACPI
> 
> Add a writeup about how PCI host bridges should be described in ACPI
> using PNP0A03/PNP0A08 devices, PNP0C02 devices, and the MCFG table.
> 
> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
> ---
>  Documentation/PCI/00-INDEX      |    2 +
>  Documentation/PCI/acpi-info.txt |  136 +++++++++++++++++++++++++++++++++++++++
>  2 files changed, 138 insertions(+)
>  create mode 100644 Documentation/PCI/acpi-info.txt
> 
> diff --git a/Documentation/PCI/00-INDEX b/Documentation/PCI/00-INDEX
> index 147231f..0780280 100644
> --- a/Documentation/PCI/00-INDEX
> +++ b/Documentation/PCI/00-INDEX
> @@ -1,5 +1,7 @@
>  00-INDEX
>  	- this file
> +acpi-info.txt
> +	- info on how PCI host bridges are represented in ACPI
>  MSI-HOWTO.txt
>  	- the Message Signaled Interrupts (MSI) Driver Guide HOWTO and FAQ.
>  PCIEBUS-HOWTO.txt
> diff --git a/Documentation/PCI/acpi-info.txt b/Documentation/PCI/acpi-info.txt
> new file mode 100644
> index 0000000..ccbcfda
> --- /dev/null
> +++ b/Documentation/PCI/acpi-info.txt
> @@ -0,0 +1,136 @@
> +	    ACPI considerations for PCI host bridges
> +
> +The basic requirement is that the ACPI namespace should describe
> +*everything* that consumes address space unless there's another
> +standard way for the OS to find it [1, 2].  For example, windows that
> +are forwarded to PCI by a PCI host bridge should be described via ACPI
> +devices, since the OS can't locate the host bridge by itself.  PCI
> +devices *below* the host bridge do not need to be described via ACPI,
> +because the resources they consume are inside the host bridge windows,
> +and the OS can discover them via the standard PCI enumeration
> +mechanism (using config accesses to read and size the BARs).
> +
> +This ACPI resource description is done via _CRS methods of devices in
> +the ACPI namespace [2].   _CRS methods are like generalized PCI BARs:
> +the OS can read _CRS and figure out what resource is being consumed
> +even if it doesn't have a driver for the device [3].  That's important
> +because it means an old OS can work correctly even on a system with
> +new devices unknown to the OS.  The new devices won't do anything, but
> +the OS can at least make sure no resources conflict with them.
> +
> +Static tables like MCFG, HPET, ECDT, etc., are *not* mechanisms for
> +reserving address space!  The static tables are for things the OS
> +needs to know early in boot, before it can parse the ACPI namespace.
> +If a new table is defined, an old OS needs to operate correctly even
> +though it ignores the table.  _CRS allows that because it is generic
> +and understood by the old OS; a static table does not.

The entire document doesn't talk about the details of _CBA.
There is only one line below mentioned _CBA as an example.

> +
> +If the OS is expected to manage an ACPI device, that device will have
> +a specific _HID/_CID that tells the OS what driver to bind to it, and
> +the _CRS tells the OS and the driver where the device's registers are.
> +
> +PNP0C02 "motherboard" devices are basically a catch-all.  There's no
> +programming model for them other than "don't use these resources for
> +anything else."  So any address space that is (1) not claimed by some
> +other ACPI device and (2) should not be assigned by the OS to
> +something else, should be claimed by a PNP0C02 _CRS method.
> +
> +PCI host bridges are PNP0A03 or PNP0A08 devices.  Their _CRS should
> +describe all the address space they consume.  In principle, this would
> +be all the windows they forward down to the PCI bus, as well as the
> +bridge registers themselves.  The bridge registers include things like
> +secondary/subordinate bus registers that determine the bus range below
> +the bridge, window registers that describe the apertures, etc.  These
> +are all device-specific, non-architected things, so the only way a
> +PNP0A03/PNP0A08 driver can manage them is via _PRS/_CRS/_SRS, which
> +contain the device-specific details.  These bridge registers also
> +include ECAM space, since it is consumed by the bridge.
> +
> +ACPI defined a Producer/Consumer bit that was intended to distinguish
> +the bridge apertures from the bridge registers [4, 5].  However,
> +BIOSes didn't use that bit correctly, and the result is that OSes have
> +to assume that everything in a PCI host bridge _CRS is a window.  That
> +leaves no way to describe the bridge registers in the PNP0A03/PNP0A08
> +device itself.
> +
> +The workaround is to describe the bridge registers (including ECAM
> +space) in PNP0C02 catch-all devices [6].  With the exception of ECAM,
> +the bridge register space is device-specific anyway, so the generic
> +PNP0A03/PNP0A08 driver (pci_root.c) has no need to know about it.  For
> +ECAM, pci_root.c learns about the space from either MCFG or the _CBA
> +method.

Should the relationship of MCFG and _CBA be covered in this document?

Thanks and best regards
Lv

> +
> +Note that the PCIe spec actually does require ECAM unless there's a
> +standard firmware interface for config access, e.g., the ia64 SAL
> +interface [7].  One reason is that we want a generic host bridge
> +driver (pci_root.c), and a generic driver requires a generic way to
> +access config space.
> +
> +
> +[1] ACPI 6.0, sec 6.1:
> +    For any device that is on a non-enumerable type of bus (for
> +    example, an ISA bus), OSPM enumerates the devices' identifier(s)
> +    and the ACPI system firmware must supply an _HID object ... for
> +    each device to enable OSPM to do that.
> +
> +[2] ACPI 6.0, sec 3.7:
> +    The OS enumerates motherboard devices simply by reading through
> +    the ACPI Namespace looking for devices with hardware IDs.
> +
> +    Each device enumerated by ACPI includes ACPI-defined objects in
> +    the ACPI Namespace that report the hardware resources the device
> +    could occupy [_PRS], an object that reports the resources that are
> +    currently used by the device [_CRS], and objects for configuring
> +    those resources [_SRS].  The information is used by the Plug and
> +    Play OS (OSPM) to configure the devices.
> +
> +[3] ACPI 6.0, sec 6.2:
> +    OSPM uses device configuration objects to configure hardware
> +    resources for devices enumerated via ACPI.  Device configuration
> +    objects provide information about current and possible resource
> +    requirements, the relationship between shared resources, and
> +    methods for configuring hardware resources.
> +
> +    When OSPM enumerates a device, it calls _PRS to determine the
> +    resource requirements of the device.  It may also call _CRS to
> +    find the current resource settings for the device.  Using this
> +    information, the Plug and Play system determines what resources
> +    the device should consume and sets those resources by calling the
> +    device’s _SRS control method.
> +
> +    In ACPI, devices can consume resources (for example, legacy
> +    keyboards), provide resources (for example, a proprietary PCI
> +    bridge), or do both.  Unless otherwise specified, resources for a
> +    device are assumed to be taken from the nearest matching resource
> +    above the device in the device hierarchy.
> +
> +[4] ACPI 6.0, sec 6.4.3.5.4:
> +    Extended Address Space Descriptor
> +    General Flags: Bit [0] Consumer/Producer:
> +	1–This device consumes this resource
> +	0–This device produces and consumes this resource
> +
> +[5] ACPI 6.0, sec 19.6.43:
> +    ResourceUsage specifies whether the Memory range is consumed by
> +    this device (ResourceConsumer) or passed on to child devices
> +    (ResourceProducer).  If nothing is specified, then
> +    ResourceConsumer is assumed.
> +
> +[6] PCI Firmware 3.0, sec 4.1.2:
> +    If the operating system does not natively comprehend reserving the
> +    MMCFG region, the MMCFG region must be reserved by firmware.  The
> +    address range reported in the MCFG table or by _CBA method (see
> +    Section 4.1.3) must be reserved by declaring a motherboard
> +    resource.  For most systems, the motherboard resource would appear
> +    at the root of the ACPI namespace (under \_SB) in a node with a
> +    _HID of EISAID (PNP0C02), and the resources in this case should
> +    not be claimed in the root PCI bus’s _CRS.  The resources can
> +    optionally be returned in Int15 E820 or EFIGetMemoryMap as
> +    reserved memory but must always be reported through ACPI as a
> +    motherboard resource.
> +
> +[7] PCI Express 3.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.
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: "Zheng, Lv" <lv.zheng@intel.com>
To: Bjorn Helgaas <bhelgaas@google.com>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>
Cc: "linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linaro-acpi@lists.linaro.org" <linaro-acpi@lists.linaro.org>
Subject: RE: [PATCH] PCI: Add information about describing PCI in ACPI
Date: Wed, 23 Nov 2016 03:23:35 +0000	[thread overview]
Message-ID: <1AE640813FDE7649BE1B193DEA596E886A2949AF@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <20161117175938.17465.45820.stgit@bhelgaas-glaptop.roam.corp.google.com>

SGksIEJqb3JuDQoNClRoYW5rcyBmb3IgdGhlIGRvY3VtZW50YXRpb24uDQpJdCByZWFsbHkgaGVs
cHMhDQoNCkhvd2V2ZXIgSSBoYXZlIGEgcXVlc3Rpb24gYmVsb3cuDQoNCj4gRnJvbTogbGludXgt
YWNwaS1vd25lckB2Z2VyLmtlcm5lbC5vcmcgW21haWx0bzpsaW51eC1hY3BpLW93bmVyQHZnZXIu
a2VybmVsLm9yZ10gT24gQmVoYWxmIE9mIEJqb3JuDQo+IEhlbGdhYXMNCj4gU3ViamVjdDogW1BB
VENIXSBQQ0k6IEFkZCBpbmZvcm1hdGlvbiBhYm91dCBkZXNjcmliaW5nIFBDSSBpbiBBQ1BJDQo+
IA0KPiBBZGQgYSB3cml0ZXVwIGFib3V0IGhvdyBQQ0kgaG9zdCBicmlkZ2VzIHNob3VsZCBiZSBk
ZXNjcmliZWQgaW4gQUNQSQ0KPiB1c2luZyBQTlAwQTAzL1BOUDBBMDggZGV2aWNlcywgUE5QMEMw
MiBkZXZpY2VzLCBhbmQgdGhlIE1DRkcgdGFibGUuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBCam9y
biBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPg0KPiAtLS0NCj4gIERvY3VtZW50YXRpb24v
UENJLzAwLUlOREVYICAgICAgfCAgICAyICsNCj4gIERvY3VtZW50YXRpb24vUENJL2FjcGktaW5m
by50eHQgfCAgMTM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAg
MiBmaWxlcyBjaGFuZ2VkLCAxMzggaW5zZXJ0aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0
IERvY3VtZW50YXRpb24vUENJL2FjcGktaW5mby50eHQNCj4gDQo+IGRpZmYgLS1naXQgYS9Eb2N1
bWVudGF0aW9uL1BDSS8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vUENJLzAwLUlOREVYDQo+IGlu
ZGV4IDE0NzIzMWYuLjA3ODAyODAgMTAwNjQ0DQo+IC0tLSBhL0RvY3VtZW50YXRpb24vUENJLzAw
LUlOREVYDQo+ICsrKyBiL0RvY3VtZW50YXRpb24vUENJLzAwLUlOREVYDQo+IEBAIC0xLDUgKzEs
NyBAQA0KPiAgMDAtSU5ERVgNCj4gIAktIHRoaXMgZmlsZQ0KPiArYWNwaS1pbmZvLnR4dA0KPiAr
CS0gaW5mbyBvbiBob3cgUENJIGhvc3QgYnJpZGdlcyBhcmUgcmVwcmVzZW50ZWQgaW4gQUNQSQ0K
PiAgTVNJLUhPV1RPLnR4dA0KPiAgCS0gdGhlIE1lc3NhZ2UgU2lnbmFsZWQgSW50ZXJydXB0cyAo
TVNJKSBEcml2ZXIgR3VpZGUgSE9XVE8gYW5kIEZBUS4NCj4gIFBDSUVCVVMtSE9XVE8udHh0DQo+
IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1BDSS9hY3BpLWluZm8udHh0IGIvRG9jdW1lbnRh
dGlvbi9QQ0kvYWNwaS1pbmZvLnR4dA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw
MDAwMDAwLi5jY2JjZmRhDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvRG9jdW1lbnRhdGlvbi9Q
Q0kvYWNwaS1pbmZvLnR4dA0KPiBAQCAtMCwwICsxLDEzNiBAQA0KPiArCSAgICBBQ1BJIGNvbnNp
ZGVyYXRpb25zIGZvciBQQ0kgaG9zdCBicmlkZ2VzDQo+ICsNCj4gK1RoZSBiYXNpYyByZXF1aXJl
bWVudCBpcyB0aGF0IHRoZSBBQ1BJIG5hbWVzcGFjZSBzaG91bGQgZGVzY3JpYmUNCj4gKypldmVy
eXRoaW5nKiB0aGF0IGNvbnN1bWVzIGFkZHJlc3Mgc3BhY2UgdW5sZXNzIHRoZXJlJ3MgYW5vdGhl
cg0KPiArc3RhbmRhcmQgd2F5IGZvciB0aGUgT1MgdG8gZmluZCBpdCBbMSwgMl0uIMKgRm9yIGV4
YW1wbGUsIHdpbmRvd3MgdGhhdA0KPiArYXJlIGZvcndhcmRlZCB0byBQQ0kgYnkgYSBQQ0kgaG9z
dCBicmlkZ2Ugc2hvdWxkIGJlIGRlc2NyaWJlZCB2aWEgQUNQSQ0KPiArZGV2aWNlcywgc2luY2Ug
dGhlIE9TIGNhbid0IGxvY2F0ZSB0aGUgaG9zdCBicmlkZ2UgYnkgaXRzZWxmLiDCoFBDSQ0KPiAr
ZGV2aWNlcyAqYmVsb3cqIHRoZSBob3N0IGJyaWRnZSBkbyBub3QgbmVlZCB0byBiZSBkZXNjcmli
ZWQgdmlhIEFDUEksDQo+ICtiZWNhdXNlIHRoZSByZXNvdXJjZXMgdGhleSBjb25zdW1lIGFyZSBp
bnNpZGUgdGhlIGhvc3QgYnJpZGdlIHdpbmRvd3MsDQo+ICthbmQgdGhlIE9TIGNhbiBkaXNjb3Zl
ciB0aGVtIHZpYSB0aGUgc3RhbmRhcmQgUENJIGVudW1lcmF0aW9uDQo+ICttZWNoYW5pc20gKHVz
aW5nIGNvbmZpZyBhY2Nlc3NlcyB0byByZWFkIGFuZCBzaXplIHRoZSBCQVJzKS4NCj4gKw0KPiAr
VGhpcyBBQ1BJIHJlc291cmNlIGRlc2NyaXB0aW9uIGlzIGRvbmUgdmlhIF9DUlMgbWV0aG9kcyBv
ZiBkZXZpY2VzIGluDQo+ICt0aGUgQUNQSSBuYW1lc3BhY2UgWzJdLiDCoCBfQ1JTIG1ldGhvZHMg
YXJlIGxpa2UgZ2VuZXJhbGl6ZWQgUENJIEJBUnM6DQo+ICt0aGUgT1MgY2FuIHJlYWQgX0NSUyBh
bmQgZmlndXJlIG91dCB3aGF0IHJlc291cmNlIGlzIGJlaW5nIGNvbnN1bWVkDQo+ICtldmVuIGlm
IGl0IGRvZXNuJ3QgaGF2ZSBhIGRyaXZlciBmb3IgdGhlIGRldmljZSBbM10uIMKgVGhhdCdzIGlt
cG9ydGFudA0KPiArYmVjYXVzZSBpdCBtZWFucyBhbiBvbGQgT1MgY2FuIHdvcmsgY29ycmVjdGx5
IGV2ZW4gb24gYSBzeXN0ZW0gd2l0aA0KPiArbmV3IGRldmljZXMgdW5rbm93biB0byB0aGUgT1Mu
IMKgVGhlIG5ldyBkZXZpY2VzIHdvbid0IGRvIGFueXRoaW5nLCBidXQNCj4gK3RoZSBPUyBjYW4g
YXQgbGVhc3QgbWFrZSBzdXJlIG5vIHJlc291cmNlcyBjb25mbGljdCB3aXRoIHRoZW0uDQo+ICsN
Cj4gK1N0YXRpYyB0YWJsZXMgbGlrZSBNQ0ZHLCBIUEVULCBFQ0RULCBldGMuLCBhcmUgKm5vdCog
bWVjaGFuaXNtcyBmb3INCj4gK3Jlc2VydmluZyBhZGRyZXNzIHNwYWNlISAgVGhlIHN0YXRpYyB0
YWJsZXMgYXJlIGZvciB0aGluZ3MgdGhlIE9TDQo+ICtuZWVkcyB0byBrbm93IGVhcmx5IGluIGJv
b3QsIGJlZm9yZSBpdCBjYW4gcGFyc2UgdGhlIEFDUEkgbmFtZXNwYWNlLg0KPiArSWYgYSBuZXcg
dGFibGUgaXMgZGVmaW5lZCwgYW4gb2xkIE9TIG5lZWRzIHRvIG9wZXJhdGUgY29ycmVjdGx5IGV2
ZW4NCj4gK3Rob3VnaCBpdCBpZ25vcmVzIHRoZSB0YWJsZS4gIF9DUlMgYWxsb3dzIHRoYXQgYmVj
YXVzZSBpdCBpcyBnZW5lcmljDQo+ICthbmQgdW5kZXJzdG9vZCBieSB0aGUgb2xkIE9TOyBhIHN0
YXRpYyB0YWJsZSBkb2VzIG5vdC4NCg0KVGhlIGVudGlyZSBkb2N1bWVudCBkb2Vzbid0IHRhbGsg
YWJvdXQgdGhlIGRldGFpbHMgb2YgX0NCQS4NClRoZXJlIGlzIG9ubHkgb25lIGxpbmUgYmVsb3cg
bWVudGlvbmVkIF9DQkEgYXMgYW4gZXhhbXBsZS4NCg0KPiArDQo+ICtJZiB0aGUgT1MgaXMgZXhw
ZWN0ZWQgdG8gbWFuYWdlIGFuIEFDUEkgZGV2aWNlLCB0aGF0IGRldmljZSB3aWxsIGhhdmUNCj4g
K2Egc3BlY2lmaWMgX0hJRC9fQ0lEIHRoYXQgdGVsbHMgdGhlIE9TIHdoYXQgZHJpdmVyIHRvIGJp
bmQgdG8gaXQsIGFuZA0KPiArdGhlIF9DUlMgdGVsbHMgdGhlIE9TIGFuZCB0aGUgZHJpdmVyIHdo
ZXJlIHRoZSBkZXZpY2UncyByZWdpc3RlcnMgYXJlLg0KPiArDQo+ICtQTlAwQzAyICJtb3RoZXJi
b2FyZCIgZGV2aWNlcyBhcmUgYmFzaWNhbGx5IGEgY2F0Y2gtYWxsLiDCoFRoZXJlJ3Mgbm8NCj4g
K3Byb2dyYW1taW5nIG1vZGVsIGZvciB0aGVtIG90aGVyIHRoYW4gImRvbid0IHVzZSB0aGVzZSBy
ZXNvdXJjZXMgZm9yDQo+ICthbnl0aGluZyBlbHNlLiIgwqBTbyBhbnkgYWRkcmVzcyBzcGFjZSB0
aGF0IGlzICgxKSBub3QgY2xhaW1lZCBieSBzb21lDQo+ICtvdGhlciBBQ1BJIGRldmljZSBhbmQg
KDIpIHNob3VsZCBub3QgYmUgYXNzaWduZWQgYnkgdGhlIE9TIHRvDQo+ICtzb21ldGhpbmcgZWxz
ZSwgc2hvdWxkIGJlIGNsYWltZWQgYnkgYSBQTlAwQzAyIF9DUlMgbWV0aG9kLg0KPiArDQo+ICtQ
Q0kgaG9zdCBicmlkZ2VzIGFyZSBQTlAwQTAzIG9yIFBOUDBBMDggZGV2aWNlcy4gwqBUaGVpciBf
Q1JTIHNob3VsZA0KPiArZGVzY3JpYmUgYWxsIHRoZSBhZGRyZXNzIHNwYWNlIHRoZXkgY29uc3Vt
ZS4gwqBJbiBwcmluY2lwbGUsIHRoaXMgd291bGQNCj4gK2JlIGFsbCB0aGUgd2luZG93cyB0aGV5
IGZvcndhcmQgZG93biB0byB0aGUgUENJIGJ1cywgYXMgd2VsbCBhcyB0aGUNCj4gK2JyaWRnZSBy
ZWdpc3RlcnMgdGhlbXNlbHZlcy4gwqBUaGUgYnJpZGdlIHJlZ2lzdGVycyBpbmNsdWRlIHRoaW5n
cyBsaWtlDQo+ICtzZWNvbmRhcnkvc3Vib3JkaW5hdGUgYnVzIHJlZ2lzdGVycyB0aGF0IGRldGVy
bWluZSB0aGUgYnVzIHJhbmdlIGJlbG93DQo+ICt0aGUgYnJpZGdlLCB3aW5kb3cgcmVnaXN0ZXJz
IHRoYXQgZGVzY3JpYmUgdGhlIGFwZXJ0dXJlcywgZXRjLiDCoFRoZXNlDQo+ICthcmUgYWxsIGRl
dmljZS1zcGVjaWZpYywgbm9uLWFyY2hpdGVjdGVkIHRoaW5ncywgc28gdGhlIG9ubHkgd2F5IGEN
Cj4gK1BOUDBBMDMvUE5QMEEwOCBkcml2ZXIgY2FuIG1hbmFnZSB0aGVtIGlzIHZpYSBfUFJTL19D
UlMvX1NSUywgd2hpY2gNCj4gK2NvbnRhaW4gdGhlIGRldmljZS1zcGVjaWZpYyBkZXRhaWxzLiDC
oFRoZXNlIGJyaWRnZSByZWdpc3RlcnMgYWxzbw0KPiAraW5jbHVkZSBFQ0FNIHNwYWNlLCBzaW5j
ZSBpdCBpcyBjb25zdW1lZCBieSB0aGUgYnJpZGdlLg0KPiArDQo+ICtBQ1BJIGRlZmluZWQgYSBQ
cm9kdWNlci9Db25zdW1lciBiaXQgdGhhdCB3YXMgaW50ZW5kZWQgdG8gZGlzdGluZ3Vpc2gNCj4g
K3RoZSBicmlkZ2UgYXBlcnR1cmVzIGZyb20gdGhlIGJyaWRnZSByZWdpc3RlcnMgWzQsIDVdLiDC
oEhvd2V2ZXIsDQo+ICtCSU9TZXMgZGlkbid0IHVzZSB0aGF0IGJpdCBjb3JyZWN0bHksIGFuZCB0
aGUgcmVzdWx0IGlzIHRoYXQgT1NlcyBoYXZlDQo+ICt0byBhc3N1bWUgdGhhdCBldmVyeXRoaW5n
IGluIGEgUENJIGhvc3QgYnJpZGdlIF9DUlMgaXMgYSB3aW5kb3cuIMKgVGhhdA0KPiArbGVhdmVz
IG5vIHdheSB0byBkZXNjcmliZSB0aGUgYnJpZGdlIHJlZ2lzdGVycyBpbiB0aGUgUE5QMEEwMy9Q
TlAwQTA4DQo+ICtkZXZpY2UgaXRzZWxmLg0KPiArDQo+ICtUaGUgd29ya2Fyb3VuZCBpcyB0byBk
ZXNjcmliZSB0aGUgYnJpZGdlIHJlZ2lzdGVycyAoaW5jbHVkaW5nIEVDQU0NCj4gK3NwYWNlKSBp
biBQTlAwQzAyIGNhdGNoLWFsbCBkZXZpY2VzIFs2XS4gwqBXaXRoIHRoZSBleGNlcHRpb24gb2Yg
RUNBTSwNCj4gK3RoZSBicmlkZ2UgcmVnaXN0ZXIgc3BhY2UgaXMgZGV2aWNlLXNwZWNpZmljIGFu
eXdheSwgc28gdGhlIGdlbmVyaWMNCj4gK1BOUDBBMDMvUE5QMEEwOCBkcml2ZXIgKHBjaV9yb290
LmMpIGhhcyBubyBuZWVkIHRvIGtub3cgYWJvdXQgaXQuIMKgRm9yDQo+ICtFQ0FNLCBwY2lfcm9v
dC5jIGxlYXJucyBhYm91dCB0aGUgc3BhY2UgZnJvbSBlaXRoZXIgTUNGRyBvciB0aGUgX0NCQQ0K
PiArbWV0aG9kLg0KDQpTaG91bGQgdGhlIHJlbGF0aW9uc2hpcCBvZiBNQ0ZHIGFuZCBfQ0JBIGJl
IGNvdmVyZWQgaW4gdGhpcyBkb2N1bWVudD8NCg0KVGhhbmtzIGFuZCBiZXN0IHJlZ2FyZHMNCkx2
DQoNCj4gKw0KPiArTm90ZSB0aGF0IHRoZSBQQ0llIHNwZWMgYWN0dWFsbHkgZG9lcyByZXF1aXJl
IEVDQU0gdW5sZXNzIHRoZXJlJ3MgYQ0KPiArc3RhbmRhcmQgZmlybXdhcmUgaW50ZXJmYWNlIGZv
ciBjb25maWcgYWNjZXNzLCBlLmcuLCB0aGUgaWE2NCBTQUwNCj4gK2ludGVyZmFjZSBbN10uICBP
bmUgcmVhc29uIGlzIHRoYXQgd2Ugd2FudCBhIGdlbmVyaWMgaG9zdCBicmlkZ2UNCj4gK2RyaXZl
ciAocGNpX3Jvb3QuYyksIGFuZCBhIGdlbmVyaWMgZHJpdmVyIHJlcXVpcmVzIGEgZ2VuZXJpYyB3
YXkgdG8NCj4gK2FjY2VzcyBjb25maWcgc3BhY2UuDQo+ICsNCj4gKw0KPiArWzFdIEFDUEkgNi4w
LCBzZWMgNi4xOg0KPiArICAgIEZvciBhbnkgZGV2aWNlIHRoYXQgaXMgb24gYSBub24tZW51bWVy
YWJsZSB0eXBlIG9mIGJ1cyAoZm9yDQo+ICsgICAgZXhhbXBsZSwgYW4gSVNBIGJ1cyksIE9TUE0g
ZW51bWVyYXRlcyB0aGUgZGV2aWNlcycgaWRlbnRpZmllcihzKQ0KPiArICAgIGFuZCB0aGUgQUNQ
SSBzeXN0ZW0gZmlybXdhcmUgbXVzdCBzdXBwbHkgYW4gX0hJRCBvYmplY3QgLi4uIGZvcg0KPiAr
ICAgIGVhY2ggZGV2aWNlIHRvIGVuYWJsZSBPU1BNIHRvIGRvIHRoYXQuDQo+ICsNCj4gK1syXSBB
Q1BJIDYuMCwgc2VjIDMuNzoNCj4gKyAgICBUaGUgT1MgZW51bWVyYXRlcyBtb3RoZXJib2FyZCBk
ZXZpY2VzIHNpbXBseSBieSByZWFkaW5nIHRocm91Z2gNCj4gKyAgICB0aGUgQUNQSSBOYW1lc3Bh
Y2UgbG9va2luZyBmb3IgZGV2aWNlcyB3aXRoIGhhcmR3YXJlIElEcy4NCj4gKw0KPiArICAgIEVh
Y2ggZGV2aWNlIGVudW1lcmF0ZWQgYnkgQUNQSSBpbmNsdWRlcyBBQ1BJLWRlZmluZWQgb2JqZWN0
cyBpbg0KPiArICAgIHRoZSBBQ1BJIE5hbWVzcGFjZSB0aGF0IHJlcG9ydCB0aGUgaGFyZHdhcmUg
cmVzb3VyY2VzIHRoZSBkZXZpY2UNCj4gKyAgICBjb3VsZCBvY2N1cHkgW19QUlNdLCBhbiBvYmpl
Y3QgdGhhdCByZXBvcnRzIHRoZSByZXNvdXJjZXMgdGhhdCBhcmUNCj4gKyAgICBjdXJyZW50bHkg
dXNlZCBieSB0aGUgZGV2aWNlIFtfQ1JTXSwgYW5kIG9iamVjdHMgZm9yIGNvbmZpZ3VyaW5nDQo+
ICsgICAgdGhvc2UgcmVzb3VyY2VzIFtfU1JTXS4gIFRoZSBpbmZvcm1hdGlvbiBpcyB1c2VkIGJ5
IHRoZSBQbHVnIGFuZA0KPiArICAgIFBsYXkgT1MgKE9TUE0pIHRvIGNvbmZpZ3VyZSB0aGUgZGV2
aWNlcy4NCj4gKw0KPiArWzNdIEFDUEkgNi4wLCBzZWMgNi4yOg0KPiArICAgIE9TUE0gdXNlcyBk
ZXZpY2UgY29uZmlndXJhdGlvbiBvYmplY3RzIHRvIGNvbmZpZ3VyZSBoYXJkd2FyZQ0KPiArICAg
IHJlc291cmNlcyBmb3IgZGV2aWNlcyBlbnVtZXJhdGVkIHZpYSBBQ1BJLiAgRGV2aWNlIGNvbmZp
Z3VyYXRpb24NCj4gKyAgICBvYmplY3RzIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgY3VycmVu
dCBhbmQgcG9zc2libGUgcmVzb3VyY2UNCj4gKyAgICByZXF1aXJlbWVudHMsIHRoZSByZWxhdGlv
bnNoaXAgYmV0d2VlbiBzaGFyZWQgcmVzb3VyY2VzLCBhbmQNCj4gKyAgICBtZXRob2RzIGZvciBj
b25maWd1cmluZyBoYXJkd2FyZSByZXNvdXJjZXMuDQo+ICsNCj4gKyAgICBXaGVuIE9TUE0gZW51
bWVyYXRlcyBhIGRldmljZSwgaXQgY2FsbHMgX1BSUyB0byBkZXRlcm1pbmUgdGhlDQo+ICsgICAg
cmVzb3VyY2UgcmVxdWlyZW1lbnRzIG9mIHRoZSBkZXZpY2UuICBJdCBtYXkgYWxzbyBjYWxsIF9D
UlMgdG8NCj4gKyAgICBmaW5kIHRoZSBjdXJyZW50IHJlc291cmNlIHNldHRpbmdzIGZvciB0aGUg
ZGV2aWNlLiAgVXNpbmcgdGhpcw0KPiArICAgIGluZm9ybWF0aW9uLCB0aGUgUGx1ZyBhbmQgUGxh
eSBzeXN0ZW0gZGV0ZXJtaW5lcyB3aGF0IHJlc291cmNlcw0KPiArICAgIHRoZSBkZXZpY2Ugc2hv
dWxkIGNvbnN1bWUgYW5kIHNldHMgdGhvc2UgcmVzb3VyY2VzIGJ5IGNhbGxpbmcgdGhlDQo+ICsg
ICAgZGV2aWNl4oCZcyBfU1JTIGNvbnRyb2wgbWV0aG9kLg0KPiArDQo+ICsgICAgSW4gQUNQSSwg
ZGV2aWNlcyBjYW4gY29uc3VtZSByZXNvdXJjZXMgKGZvciBleGFtcGxlLCBsZWdhY3kNCj4gKyAg
ICBrZXlib2FyZHMpLCBwcm92aWRlIHJlc291cmNlcyAoZm9yIGV4YW1wbGUsIGEgcHJvcHJpZXRh
cnkgUENJDQo+ICsgICAgYnJpZGdlKSwgb3IgZG8gYm90aC4gIFVubGVzcyBvdGhlcndpc2Ugc3Bl
Y2lmaWVkLCByZXNvdXJjZXMgZm9yIGENCj4gKyAgICBkZXZpY2UgYXJlIGFzc3VtZWQgdG8gYmUg
dGFrZW4gZnJvbSB0aGUgbmVhcmVzdCBtYXRjaGluZyByZXNvdXJjZQ0KPiArICAgIGFib3ZlIHRo
ZSBkZXZpY2UgaW4gdGhlIGRldmljZSBoaWVyYXJjaHkuDQo+ICsNCj4gK1s0XSBBQ1BJIDYuMCwg
c2VjIDYuNC4zLjUuNDoNCj4gKyAgICBFeHRlbmRlZCBBZGRyZXNzIFNwYWNlIERlc2NyaXB0b3IN
Cj4gKyAgICBHZW5lcmFsIEZsYWdzOiBCaXQgWzBdIENvbnN1bWVyL1Byb2R1Y2VyOg0KPiArCTHi
gJNUaGlzIGRldmljZSBjb25zdW1lcyB0aGlzIHJlc291cmNlDQo+ICsJMOKAk1RoaXMgZGV2aWNl
IHByb2R1Y2VzIGFuZCBjb25zdW1lcyB0aGlzIHJlc291cmNlDQo+ICsNCj4gK1s1XSBBQ1BJIDYu
MCwgc2VjIDE5LjYuNDM6DQo+ICsgICAgUmVzb3VyY2VVc2FnZSBzcGVjaWZpZXMgd2hldGhlciB0
aGUgTWVtb3J5IHJhbmdlIGlzIGNvbnN1bWVkIGJ5DQo+ICsgICAgdGhpcyBkZXZpY2UgKFJlc291
cmNlQ29uc3VtZXIpIG9yIHBhc3NlZCBvbiB0byBjaGlsZCBkZXZpY2VzDQo+ICsgICAgKFJlc291
cmNlUHJvZHVjZXIpLiAgSWYgbm90aGluZyBpcyBzcGVjaWZpZWQsIHRoZW4NCj4gKyAgICBSZXNv
dXJjZUNvbnN1bWVyIGlzIGFzc3VtZWQuDQo+ICsNCj4gK1s2XSBQQ0kgRmlybXdhcmUgMy4wLCBz
ZWMgNC4xLjI6DQo+ICsgICAgSWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gZG9lcyBub3QgbmF0aXZl
bHkgY29tcHJlaGVuZCByZXNlcnZpbmcgdGhlDQo+ICsgICAgTU1DRkcgcmVnaW9uLCB0aGUgTU1D
RkcgcmVnaW9uIG11c3QgYmUgcmVzZXJ2ZWQgYnkgZmlybXdhcmUuICBUaGUNCj4gKyAgICBhZGRy
ZXNzIHJhbmdlIHJlcG9ydGVkIGluIHRoZSBNQ0ZHIHRhYmxlIG9yIGJ5IF9DQkEgbWV0aG9kIChz
ZWUNCj4gKyAgICBTZWN0aW9uIDQuMS4zKSBtdXN0IGJlIHJlc2VydmVkIGJ5IGRlY2xhcmluZyBh
IG1vdGhlcmJvYXJkDQo+ICsgICAgcmVzb3VyY2UuICBGb3IgbW9zdCBzeXN0ZW1zLCB0aGUgbW90
aGVyYm9hcmQgcmVzb3VyY2Ugd291bGQgYXBwZWFyDQo+ICsgICAgYXQgdGhlIHJvb3Qgb2YgdGhl
IEFDUEkgbmFtZXNwYWNlICh1bmRlciBcX1NCKSBpbiBhIG5vZGUgd2l0aCBhDQo+ICsgICAgX0hJ
RCBvZiBFSVNBSUQgKFBOUDBDMDIpLCBhbmQgdGhlIHJlc291cmNlcyBpbiB0aGlzIGNhc2Ugc2hv
dWxkDQo+ICsgICAgbm90IGJlIGNsYWltZWQgaW4gdGhlIHJvb3QgUENJIGJ1c+KAmXMgX0NSUy4g
IFRoZSByZXNvdXJjZXMgY2FuDQo+ICsgICAgb3B0aW9uYWxseSBiZSByZXR1cm5lZCBpbiBJbnQx
NSBFODIwIG9yIEVGSUdldE1lbW9yeU1hcCBhcw0KPiArICAgIHJlc2VydmVkIG1lbW9yeSBidXQg
bXVzdCBhbHdheXMgYmUgcmVwb3J0ZWQgdGhyb3VnaCBBQ1BJIGFzIGENCj4gKyAgICBtb3RoZXJi
b2FyZCByZXNvdXJjZS4NCj4gKw0KPiArWzddIFBDSSBFeHByZXNzIDMuMCwgc2VjIDcuMi4yOg0K
PiArICAgIEZvciBzeXN0ZW1zIHRoYXQgYXJlIFBDLWNvbXBhdGlibGUsIG9yIHRoYXQgZG8gbm90
IGltcGxlbWVudCBhDQo+ICsgICAgcHJvY2Vzc29yLWFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmaXJt
d2FyZSBpbnRlcmZhY2Ugc3RhbmRhcmQgdGhhdA0KPiArICAgIGFsbG93cyBhY2Nlc3MgdG8gdGhl
IENvbmZpZ3VyYXRpb24gU3BhY2UsIHRoZSBFQ0FNIGlzIHJlcXVpcmVkIGFzDQo+ICsgICAgZGVm
aW5lZCBpbiB0aGlzIHNlY3Rpb24uDQo+IA0KPiAtLQ0KPiBUbyB1bnN1YnNjcmliZSBmcm9tIHRo
aXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtYWNwaSIgaW4NCj4gdGhl
IGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcNCj4gTW9yZSBt
YWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5o
dG1sDQo=

WARNING: multiple messages have this Message-ID (diff)
From: lv.zheng@intel.com (Zheng, Lv)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] PCI: Add information about describing PCI in ACPI
Date: Wed, 23 Nov 2016 03:23:35 +0000	[thread overview]
Message-ID: <1AE640813FDE7649BE1B193DEA596E886A2949AF@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <20161117175938.17465.45820.stgit@bhelgaas-glaptop.roam.corp.google.com>

Hi, Bjorn

Thanks for the documentation.
It really helps!

However I have a question below.

> From: linux-acpi-owner at vger.kernel.org [mailto:linux-acpi-owner at vger.kernel.org] On Behalf Of Bjorn
> Helgaas
> Subject: [PATCH] PCI: Add information about describing PCI in ACPI
> 
> Add a writeup about how PCI host bridges should be described in ACPI
> using PNP0A03/PNP0A08 devices, PNP0C02 devices, and the MCFG table.
> 
> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
> ---
>  Documentation/PCI/00-INDEX      |    2 +
>  Documentation/PCI/acpi-info.txt |  136 +++++++++++++++++++++++++++++++++++++++
>  2 files changed, 138 insertions(+)
>  create mode 100644 Documentation/PCI/acpi-info.txt
> 
> diff --git a/Documentation/PCI/00-INDEX b/Documentation/PCI/00-INDEX
> index 147231f..0780280 100644
> --- a/Documentation/PCI/00-INDEX
> +++ b/Documentation/PCI/00-INDEX
> @@ -1,5 +1,7 @@
>  00-INDEX
>  	- this file
> +acpi-info.txt
> +	- info on how PCI host bridges are represented in ACPI
>  MSI-HOWTO.txt
>  	- the Message Signaled Interrupts (MSI) Driver Guide HOWTO and FAQ.
>  PCIEBUS-HOWTO.txt
> diff --git a/Documentation/PCI/acpi-info.txt b/Documentation/PCI/acpi-info.txt
> new file mode 100644
> index 0000000..ccbcfda
> --- /dev/null
> +++ b/Documentation/PCI/acpi-info.txt
> @@ -0,0 +1,136 @@
> +	    ACPI considerations for PCI host bridges
> +
> +The basic requirement is that the ACPI namespace should describe
> +*everything* that consumes address space unless there's another
> +standard way for the OS to find it [1, 2]. ?For example, windows that
> +are forwarded to PCI by a PCI host bridge should be described via ACPI
> +devices, since the OS can't locate the host bridge by itself. ?PCI
> +devices *below* the host bridge do not need to be described via ACPI,
> +because the resources they consume are inside the host bridge windows,
> +and the OS can discover them via the standard PCI enumeration
> +mechanism (using config accesses to read and size the BARs).
> +
> +This ACPI resource description is done via _CRS methods of devices in
> +the ACPI namespace [2]. ? _CRS methods are like generalized PCI BARs:
> +the OS can read _CRS and figure out what resource is being consumed
> +even if it doesn't have a driver for the device [3]. ?That's important
> +because it means an old OS can work correctly even on a system with
> +new devices unknown to the OS. ?The new devices won't do anything, but
> +the OS can at least make sure no resources conflict with them.
> +
> +Static tables like MCFG, HPET, ECDT, etc., are *not* mechanisms for
> +reserving address space!  The static tables are for things the OS
> +needs to know early in boot, before it can parse the ACPI namespace.
> +If a new table is defined, an old OS needs to operate correctly even
> +though it ignores the table.  _CRS allows that because it is generic
> +and understood by the old OS; a static table does not.

The entire document doesn't talk about the details of _CBA.
There is only one line below mentioned _CBA as an example.

> +
> +If the OS is expected to manage an ACPI device, that device will have
> +a specific _HID/_CID that tells the OS what driver to bind to it, and
> +the _CRS tells the OS and the driver where the device's registers are.
> +
> +PNP0C02 "motherboard" devices are basically a catch-all. ?There's no
> +programming model for them other than "don't use these resources for
> +anything else." ?So any address space that is (1) not claimed by some
> +other ACPI device and (2) should not be assigned by the OS to
> +something else, should be claimed by a PNP0C02 _CRS method.
> +
> +PCI host bridges are PNP0A03 or PNP0A08 devices. ?Their _CRS should
> +describe all the address space they consume. ?In principle, this would
> +be all the windows they forward down to the PCI bus, as well as the
> +bridge registers themselves. ?The bridge registers include things like
> +secondary/subordinate bus registers that determine the bus range below
> +the bridge, window registers that describe the apertures, etc. ?These
> +are all device-specific, non-architected things, so the only way a
> +PNP0A03/PNP0A08 driver can manage them is via _PRS/_CRS/_SRS, which
> +contain the device-specific details. ?These bridge registers also
> +include ECAM space, since it is consumed by the bridge.
> +
> +ACPI defined a Producer/Consumer bit that was intended to distinguish
> +the bridge apertures from the bridge registers [4, 5]. ?However,
> +BIOSes didn't use that bit correctly, and the result is that OSes have
> +to assume that everything in a PCI host bridge _CRS is a window. ?That
> +leaves no way to describe the bridge registers in the PNP0A03/PNP0A08
> +device itself.
> +
> +The workaround is to describe the bridge registers (including ECAM
> +space) in PNP0C02 catch-all devices [6]. ?With the exception of ECAM,
> +the bridge register space is device-specific anyway, so the generic
> +PNP0A03/PNP0A08 driver (pci_root.c) has no need to know about it. ?For
> +ECAM, pci_root.c learns about the space from either MCFG or the _CBA
> +method.

Should the relationship of MCFG and _CBA be covered in this document?

Thanks and best regards
Lv

> +
> +Note that the PCIe spec actually does require ECAM unless there's a
> +standard firmware interface for config access, e.g., the ia64 SAL
> +interface [7].  One reason is that we want a generic host bridge
> +driver (pci_root.c), and a generic driver requires a generic way to
> +access config space.
> +
> +
> +[1] ACPI 6.0, sec 6.1:
> +    For any device that is on a non-enumerable type of bus (for
> +    example, an ISA bus), OSPM enumerates the devices' identifier(s)
> +    and the ACPI system firmware must supply an _HID object ... for
> +    each device to enable OSPM to do that.
> +
> +[2] ACPI 6.0, sec 3.7:
> +    The OS enumerates motherboard devices simply by reading through
> +    the ACPI Namespace looking for devices with hardware IDs.
> +
> +    Each device enumerated by ACPI includes ACPI-defined objects in
> +    the ACPI Namespace that report the hardware resources the device
> +    could occupy [_PRS], an object that reports the resources that are
> +    currently used by the device [_CRS], and objects for configuring
> +    those resources [_SRS].  The information is used by the Plug and
> +    Play OS (OSPM) to configure the devices.
> +
> +[3] ACPI 6.0, sec 6.2:
> +    OSPM uses device configuration objects to configure hardware
> +    resources for devices enumerated via ACPI.  Device configuration
> +    objects provide information about current and possible resource
> +    requirements, the relationship between shared resources, and
> +    methods for configuring hardware resources.
> +
> +    When OSPM enumerates a device, it calls _PRS to determine the
> +    resource requirements of the device.  It may also call _CRS to
> +    find the current resource settings for the device.  Using this
> +    information, the Plug and Play system determines what resources
> +    the device should consume and sets those resources by calling the
> +    device?s _SRS control method.
> +
> +    In ACPI, devices can consume resources (for example, legacy
> +    keyboards), provide resources (for example, a proprietary PCI
> +    bridge), or do both.  Unless otherwise specified, resources for a
> +    device are assumed to be taken from the nearest matching resource
> +    above the device in the device hierarchy.
> +
> +[4] ACPI 6.0, sec 6.4.3.5.4:
> +    Extended Address Space Descriptor
> +    General Flags: Bit [0] Consumer/Producer:
> +	1?This device consumes this resource
> +	0?This device produces and consumes this resource
> +
> +[5] ACPI 6.0, sec 19.6.43:
> +    ResourceUsage specifies whether the Memory range is consumed by
> +    this device (ResourceConsumer) or passed on to child devices
> +    (ResourceProducer).  If nothing is specified, then
> +    ResourceConsumer is assumed.
> +
> +[6] PCI Firmware 3.0, sec 4.1.2:
> +    If the operating system does not natively comprehend reserving the
> +    MMCFG region, the MMCFG region must be reserved by firmware.  The
> +    address range reported in the MCFG table or by _CBA method (see
> +    Section 4.1.3) must be reserved by declaring a motherboard
> +    resource.  For most systems, the motherboard resource would appear
> +    at the root of the ACPI namespace (under \_SB) in a node with a
> +    _HID of EISAID (PNP0C02), and the resources in this case should
> +    not be claimed in the root PCI bus?s _CRS.  The resources can
> +    optionally be returned in Int15 E820 or EFIGetMemoryMap as
> +    reserved memory but must always be reported through ACPI as a
> +    motherboard resource.
> +
> +[7] PCI Express 3.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.
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2016-11-23  3:24 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-17 17:59 [PATCH] PCI: Add information about describing PCI in ACPI Bjorn Helgaas
2016-11-17 17:59 ` Bjorn Helgaas
2016-11-18 17:17 ` Gabriele Paoloni
2016-11-18 17:17   ` Gabriele Paoloni
2016-11-18 17:17   ` Gabriele Paoloni
2016-11-18 17:17   ` Gabriele Paoloni
2016-11-18 17:54   ` Bjorn Helgaas
2016-11-18 17:54     ` Bjorn Helgaas
2016-11-18 17:54     ` Bjorn Helgaas
2016-11-21  8:52     ` Gabriele Paoloni
2016-11-21  8:52       ` Gabriele Paoloni
2016-11-21  8:52       ` Gabriele Paoloni
2016-11-21  8:52       ` Gabriele Paoloni
2016-11-21 16:47       ` Bjorn Helgaas
2016-11-21 16:47         ` Bjorn Helgaas
2016-11-21 16:47         ` Bjorn Helgaas
2016-11-21 17:23         ` Gabriele Paoloni
2016-11-21 17:23           ` Gabriele Paoloni
2016-11-21 17:23           ` Gabriele Paoloni
2016-11-21 17:23           ` Gabriele Paoloni
2016-11-21 20:10           ` Bjorn Helgaas
2016-11-21 20:10             ` Bjorn Helgaas
2016-11-21 20:10             ` Bjorn Helgaas
2016-11-22 13:13             ` Gabriele Paoloni
2016-11-22 13:13               ` Gabriele Paoloni
2016-11-22 13:13               ` Gabriele Paoloni
2016-11-22 13:13               ` Gabriele Paoloni
2016-11-18 23:02 ` Rafael J. Wysocki
2016-11-18 23:02   ` Rafael J. Wysocki
2016-11-18 23:02   ` Rafael J. Wysocki
2016-11-18 23:02   ` Rafael J. Wysocki
2016-11-21 13:58   ` Bjorn Helgaas
2016-11-21 13:58     ` Bjorn Helgaas
2016-11-21 13:58     ` Bjorn Helgaas
2016-11-22 10:09 ` Ard Biesheuvel
2016-11-22 10:09   ` Ard Biesheuvel
2016-11-22 10:09   ` Ard Biesheuvel
2016-11-22 10:09   ` Ard Biesheuvel
2016-11-23  1:06   ` Bjorn Helgaas
2016-11-23  1:06     ` Bjorn Helgaas
2016-11-23  1:06     ` Bjorn Helgaas
2016-11-23  7:28     ` Ard Biesheuvel
2016-11-23  7:28       ` Ard Biesheuvel
2016-11-23  7:28       ` Ard Biesheuvel
2016-11-23 12:30       ` Lorenzo Pieralisi
2016-11-23 12:30         ` Lorenzo Pieralisi
2016-11-23 12:30         ` Lorenzo Pieralisi
2016-11-23 20:52         ` [Linaro-acpi] " Duc Dang
2016-11-23 20:52           ` Duc Dang
2016-11-23 20:52           ` Duc Dang
2016-11-23 15:06       ` Bjorn Helgaas
2016-11-23 15:06         ` Bjorn Helgaas
2016-11-23 15:06         ` Bjorn Helgaas
2016-11-23 15:06         ` Bjorn Helgaas
2016-11-29 18:19         ` Bjorn Helgaas
2016-11-29 18:19           ` Bjorn Helgaas
2016-11-29 18:19           ` Bjorn Helgaas
2016-11-29 18:19           ` Bjorn Helgaas
2016-11-23  3:23 ` Zheng, Lv [this message]
2016-11-23  3:23   ` Zheng, Lv
2016-11-23  3:23   ` Zheng, Lv
2016-11-23  3:23   ` Zheng, Lv
2016-11-29 18:20   ` Bjorn Helgaas
2016-11-29 18:20     ` Bjorn Helgaas
2016-11-29 18:20     ` Bjorn Helgaas
2016-11-29 18:20     ` Bjorn Helgaas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1AE640813FDE7649BE1B193DEA596E886A2949AF@SHSMSX101.ccr.corp.intel.com \
    --to=lv.zheng@intel.com \
    --cc=bhelgaas@google.com \
    --cc=linaro-acpi@lists.linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.