Hi,

> I did a quick test with both ArmVirtQemu and microvm (using this
> series but omitting the MdeModulePkg), and I can confirm that not
> having a I/O resource window at all seems to work fine if none of the
> PCI devices have I/O BARs.
> 
> Gerd, do you remember why exactly this patch is needed? Is it related
> to devices that have I/O BARs but don't actually require them to
> function correctly?

Well, the difference seem to be pcie root ports.  When plugging my
virtio device into the root bus everything is fine:

  PCI Bus First Scanning
  PciBus: Discovered PCI @ [00|00|00]

  PciBus: Discovered PCI @ [00|01|00]
     BAR[1]: Type =  Mem32; Alignment = 0xFFF;  Length = 0x1000;        Offset 
= 0x14
     BAR[4]: Type = PMem64; Alignment = 0x3FFF; Length = 0x4000;        Offset 
= 0x20
  [ ... ]
  PciHostBridge: NotifyPhase (AllocateResources)
   RootBridge: PciRoot(0x0)
    Mem64: Base/Length/Alignment = 6000000000/100000/FFFFF - Success
    Mem: Base/Length/Alignment = C0000000/100000/FFFFF - Success
  PciBus: HostBridge->NotifyPhase(AllocateResources) - Success

When plugging the virtio device into a pcie root port it doesn't work
and the log looks like this:

  PCI Bus First Scanning
  PciBus: Discovered PCI @ [00|00|00]

  PciBus: Discovered PPB @ [00|08|00]
     Padding: Type =  Mem32; Alignment = 0x1FFFFF;      Length = 0x200000
     Padding: Type =     Io; Alignment = 0x1FF; Length = 0x200
     BAR[0]: Type =  Mem32; Alignment = 0xFFF;  Length = 0x1000;        Offset 
= 0x10

  PciBus: Discovered PCI @ [01|00|00]
     BAR[1]: Type =  Mem32; Alignment = 0xFFF;  Length = 0x1000;        Offset 
= 0x14
     BAR[4]: Type = PMem64; Alignment = 0x3FFF; Length = 0x4000;        Offset 
= 0x20
  [ ... ]
  PciHostBridge: NotifyPhase (AllocateResources)
   RootBridge: PciRoot(0x0)
    Mem: Base/Length/Alignment = C0000000/300000/1FFFFF - Success
    Mem64: Base/Length/Alignment = 6000000000/100000/FFFFF - Success
    I/O: Base/Length/Alignment = FFFFFFFFFFFFFFFF/1000/FFF - Out Of Resource!
  [ ... ]
  PciHostBridge: NotifyPhase (AllocateResources)
   RootBridge: PciRoot(0x0)
    Mem64: Base/Length/Alignment = 6000000000/100000/FFFFF - Success
    Mem: Base/Length/Alignment = C0000000/200000/FFFFF - Success
    I/O: Base/Length/Alignment = FFFFFFFFFFFFFFFF/0/FFF - Out Of Resource!

So, it's apparently the io window of the pcie root port which causes
edk2 try allocate io resources.

take care,
  Gerd



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#90159): https://edk2.groups.io/g/devel/message/90159
Mute This Topic: https://groups.io/mt/91495635/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to