Hi Jian, Hao, and Ray;
Kindly review my patch set from 1 to 12 to enhance the PCI Bus driver to 
support the new PCI features..

Thanks
Ashraf

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Javeed,
> Ashraf
> Sent: Saturday, November 2, 2019 11:30 AM
> To: devel@edk2.groups.io
> Cc: Wang, Jian J <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>;
> Ni, Ray <ray...@intel.com>
> Subject: [edk2-devel] [edk2-staging/UEFI_PCI_ENHANCE-2 PATCH V2 00/12]
> New PCI features - MPS, MRRS, RO, NS, CTO
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2194
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2313
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1954
> 
> The EDK2 Kernel PciBusDxe driver is enhanced to enable the configuration of 
> PCI
> features like
> (1) Max_Payload_Size
> (2) Max_Read_Req_Size
> (3) Relax Ordering
> (4) No-Snoop
> (5) Completion Timeout
> 
> Max_Payload_Size:- The PCI Device Control register provides this feature
> register field which controls the maximum data packet (TLP) size that a PCI
> device should maintain as a requester. The PCI Bus driver is required to 
> maintain
> a highest common value supported by all the PCI devices in a PCIe hierarchy,
> especially in case of isochronous applications.
> 
> Max_Read_Req_Size:- The PCI Device Control register provides this feature
> register field which controls the maximum memory read request size that a PCI
> device should maintain as a requester. The PCI Bus driver is required to 
> maintain
> a common value, same as Max_Payload_Size, in case of isochronous
> applications only; or else, it should maintain the user requested value 
> uniformly
> in a PCIe hierarchy (PCI root port and its downstream devices).
> 
> Relax Ordering:- The PCI Device Control register has the enabling of Relax
> Ordering functionality register field (bit 4). If this bit is Set, the PCI 
> Function is
> permitted to set the Relaxed Ordering bit in the Attributes field of 
> transactions it
> initiates that do not require strong write ordering (see PCI Base 
> Specification 4,
> Section 2.2.6.4 and Sect- ion 2.4). Any supporting PCI function is expected 
> have
> this bit enabled as per its hardware default; the code enhancement is to 
> enable /
> disable as per the PCI device policy provided by the platform firmware. If no
> device policy override is provided than it shall be ignored by the PCI Bus 
> driver
> for that PCI function.
> 
> No-Snoop:- The PCI Device Control register has the enabling of No-Snoop
> functionality register field (bit 11). If this bit is Set, the PCI Function 
> is permitted
> to Set the No Snoop bit in the Requester Attributes of transactions it 
> initiates
> that do not require hardware enforced cache coherency (see PCI Base
> Specification 4, Section 2.2.6.5). Any supporting PCI function is expected 
> have
> this bit enabled as per its hardware default; the code enhancement is to 
> enable /
> disable as per the PCI device policy provided by the platform firmware. If no
> device policy override is provided than it shall be ignored by the PCI Bus 
> driver
> for that PCI function.
> 
> Completion Timeout:- The PCI Device Control 2 register provides two register
> fields based on its Device Capability 2 register; the CTO Ranges (bits [3:0]) 
> and
> the disabling of CTO detection mechanism (bit 4). The software is permitted to
> change the CTO ranges and enable/disable the CTO detection mechanism any
> time. The code enhancement here is to override these register fields as per 
> the
> platform device policy. If no device policy override is provided than it 
> shall be
> ignored by the PCI Bus driver for that PCI function.
> 
> The PCI Base Specification 4 Revision 1 contains detailed information about
> these features. The EDK2 PCI Bus driver needs to enable the configuration of
> these features as per the PCI Base specification.
> 
> The EDK2 PCI Bus driver also needs to take the PCI device-specific platform
> policy into the consideration while programming these features; thus the code
> changes to support these, is explicitly dependent on the new PCI Platform
> Protocol interface definition defined in the below
> record:-
> https://bugzilla.tianocore.org/show_bug.cgi?id=1954
> 
> 
> Signed-off-by: Ashraf Javeed <ashraf.jav...@intel.com>
> Cc: Jian J Wang <jian.j.w...@intel.com>
> Cc: Hao A Wu <hao.a...@intel.com>
> Cc: Ray Ni <ray...@intel.com>
> ---
> 
> V2: Fixed message format and added feature change reference links
> ---
> 
> Ashraf Javeed (12):
>   MdeModulePkg/PciBusDxe:New PCI features separation with PCD
>   PciBusDxe: Reorganize the PCI Platform Protocol usage code
>   PciBusDxe: Separation of the PCI device registration and start
>   PciBusDxe: Inclusion of new PCI Platform Protocol 2
>   PciBusDxe: Setup sub-phases for PCI feature enumeration
>   PciBusDxe: Integration of setup for PCI feature enumeration
>   PciBusDxe: Record the PCI-Express Capability Structure
>   PciBusDxe: New PCI feature Max_Payload_Size
>   PciBusDxe: New PCI feature Max_Read_Req_Size
>   PciBusDxe: New PCI feature Relax Ordering
>   PciBusDxe: New PCI feature No-Snoop
>   PciBusDxe: New PCI feature Completion Timeout
> 
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciBus.c               |   23 +----------
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciBus.h               |   20 ++++++++--
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf          |    9 ++++-
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciDeviceSupport.c     |  233
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++--------------------------------------
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c        |  139
> ++++++++++++++++-------------------------------------------------
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c |   34
> ++++++++++------
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciFeatureSupport.c    | 2030
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciFeatureSupport.h    |  223
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciPlatformSupport.c   |  749
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciPlatformSupport.h   |  191
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.c   |   15 +------
>  MdeModulePkg/MdeModulePkg.dec                         |   22 +++++++++++
>  12 files changed, 3450 insertions(+), 238 deletions(-)  create mode 100644
> MdeModulePkg/Bus/Pci/PciBusDxe/PciFeatureSupport.c
>  create mode 100644 MdeModulePkg/Bus/Pci/PciBusDxe/PciFeatureSupport.h
>  create mode 100644 MdeModulePkg/Bus/Pci/PciBusDxe/PciPlatformSupport.c
>  create mode 100644 MdeModulePkg/Bus/Pci/PciBusDxe/PciPlatformSupport.h
> 
> --
> 2.21.0.windows.1
> 
> 
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> 
> View/Reply Online (#49883): https://edk2.groups.io/g/devel/message/49883
> Mute This Topic: https://groups.io/mt/40632595/1835458
> Group Owner: devel+ow...@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub  [ashraf.jav...@intel.com]
> -=-=-=-=-=-=


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#50280): https://edk2.groups.io/g/devel/message/50280
Mute This Topic: https://groups.io/mt/40632595/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to