On Thu, Dec 29, 2011 at 06:32:37PM +1300, Alexey Korolev wrote: > > >>@@ -69,6 +72,8 @@ static enum pci_region_type pci_addr_to_type(u32 addr) > >> { > >> if (addr& PCI_BASE_ADDRESS_SPACE_IO) > >> return PCI_REGION_TYPE_IO; > >>+ if (addr& PCI_BASE_ADDRESS_MEM_TYPE_64) > >>+ return PCI_REGION_TYPE_PREFMEM_64; > >This seems dangerous - a 64bit bar can be non-prefetchable - getting > >this wrong could cause random (hard to debug) crashes. > > > Just out of curiosity - how this could happen? Having 64bit > non-prefetchable BAR implies that the device is not behind > any bridge (as bridges describe 64bit ranges for prefetchable > memory only). Is it possible on nowadays systems?
Yes. qemu puts all devices directly on the root bus. system devices are also commonly located on the root bus.