[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC][PATCH 12/13] hvmloader/pci: skip reserved ranges
On 2015/5/15 15:44, Jan Beulich wrote: On 15.05.15 at 09:34, <tiejun.chen@xxxxxxxxx> wrote:So I think we may need to adjust pci_mem_start like this, @@ -301,6 +301,19 @@ void pci_setup(void) pci_mem_start <<= 1; } + /* Relocate PCI memory that overlaps reserved space, like RDM. */ + for ( j = 0; j < memory_map.nr_map ; j++ ) + { + if ( memory_map.map[j].type != E820_RAM ) + { + reserved_end = memory_map.map[j].addr + memory_map.map[j].size; + if ( check_overlap(pci_mem_start, pci_mem_end, + memory_map.map[j].addr, + memory_map.map[j].size) ) + pci_mem_start -= memory_map.map[j].size >> PAGE_SHIFT; + } + } + if ( mmio_total > (pci_mem_end - pci_mem_start) ) { printf("Low MMIO hole not large enough for all devices," Right?I think that gets you in the right direction, but isn't enough, as it doesn't account for (unavoidable) gaps (BARs are always a power of 2 in size and accordingly aligned). Right.But as you see, we always take this action, >> PAGE_SHIFT, so this means its always a sort of power of 2. Additionally, lets go back here, if ( (base < resource->base) || (base > resource->max) ) { printf("pci dev %02x:%x bar %02x size "PRIllx": no space for " "resource!\n", devfn>>3, devfn&7, bar_reg, PRIllx_arg(bar_sz)); continue; }I mean even without rdm, the original codes don't consider handling this lack of space from a alignment in advance, right? Thanks Tiejun _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |