audk/MdeModulePkg/Bus
Foster Nong de103f1981 MdeModulePkg: Handle InitialVFs=0 case for SR-IOV
Per the section 3.3.5 SR-IOV spec v1.1, InitialVFs (0ch).
InitialVFs indicates to SR-PCIM the number of VFs that are initially associated with the PF.
The minimum value of InitialVFs is 0.

Below code is used to calculate SR-IOV reserved bus number,
if InitialVFs =0, it maybe calculate the wrong bus number in this case.
  LastVF = PFRid + FirstVFOffset + (PciIoDevice->InitialVFs - 1) * VFStride

we can fix it with below code:
 if (PciIoDevice->InitialVFs == 0) {
 PciIoDevice->ReservedBusNum = 0;
} else {
PFRid  = EFI_PCI_RID (Bus, Device, Func);
 LastVF = PFRid + FirstVFOffset + (PciIoDevice->InitialVFs - 1) * VFStride;
//
// Calculate ReservedBusNum for this PF
//
PciIoDevice->ReservedBusNum = (UINT16)(EFI_PCI_BUS_OF_RID (LastVF) - Bus + 1);
//
 // Calculate ReservedBusNum for this PF
//
 PciIoDevice->ReservedBusNum = (UINT16)(EFI_PCI_BUS_OF_RID (LastVF) - Bus + 1);
}

https://bugzilla.tianocore.org/show_bug.cgi?id=4069

Signed-off-by: Foster Nong <foster.nong@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
2022-10-08 08:58:05 +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 MdeModulePkg: Handle InitialVFs=0 case for SR-IOV 2022-10-08 08:58:05 +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