audk/MdeModulePkg/Bus
Foster Nong 8fc06b6e19 Fix bug on SRIOV ReservedBusNum when ARI enable.
If a device which support both features SR-IOV/ARI  has multi
functions, which maybe support 8-255. After enable ARI forwarding in
the root port and ARI Capable Hierarchy in the SR-IOV PF0.
The device will support and expose multi functions(0-255) with ARI ID routing.
In next device loop in below for() code, actually it still be in the
same SR-IOV device, and just some PF which is over 8 or higher
one(n*8), PciAllocateBusNumber() will allocate bus
number(ReservedBusNum - TempReservedBusNum)) for this PF. if reset
TempReservedBusNum as 0 in this case,it will allocate wrong bus number
for this PF because TempReservedBusNum should be total previous PF's
reserved bus numbers.

code:
  for (Device = 0; Device <= PCI_MAX_DEVICE; Device++) {
    TempReservedBusNum = 0;
    for (Func = 0; Func <= PCI_MAX_FUNC; Func++) {
    //
    // Check to see whether a pci device is present
    //
    Status = PciDevicePresent (
                 PciRootBridgeIo,
                 &Pci,
                 StartBusNumber,
                 Device,
                 Func
                 );
    ...
    Status = PciAllocateBusNumber (PciDevice, *SubBusNumber,
    (UINT8)(PciDevice->ReservedBusNum - TempReservedBusNum), SubBusNumber);

The solution is add a new flag IsAriEnabled to help handle this case.
if ARI is enabled, then TempReservedBusNum will not be reset again
during all functions(1-255) scan with checking flag IsAriEnabled.

Signed-off-by: Foster Nong <foster.nong@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
2022-10-14 07:07:01 +00:00
..
Ata MdeModulePkg/AhciPei: Fix MMIO base assignment 2022-09-15 04:17:07 +00:00
I2c/I2cDxe MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Isa MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Pci Fix bug on SRIOV ReservedBusNum when ARI enable. 2022-10-14 07:07:01 +00:00
Scsi MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Sd MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Ufs MdeModulePkg/Ufs: bRefClkFreq attribute be programmed after fDeviceInit 2022-03-29 01:42:31 +00:00
Usb MdeModulePkg: Fix imbalanced debug macros 2022-09-09 01:42:39 +00:00