[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [v10][PATCH 06/16] hvmloader/pci: Try to avoid placing BARs in RMRRs
+/* Find the lowest RMRR higher than base. */ +static int find_next_rmrr(uint32_t base) +{ + unsigned int i; + int next_rmrr = -1; + uint64_t min_base = (1ull << 32); + + for ( i = 0; i < memory_map.nr_map ; i++ ) + { + if ( memory_map.map[i].type == E820_RESERVED && + memory_map.map[i].addr > base && + memory_map.map[i].addr < min_base ) + { + next_rmrr = i; + min_base = memory_map.map[i].addr; + } + } + return next_rmrr; +}Considering _both_ callers, I think the function should actually return the lowest RMRR higher than or equal to base.You mean instead of strictly greater than the base.Or wait - we actually need to find the lowest RMRR the _end_ of which is higher than base.Yes, you're right: there's always a risk that pci_mem_start will *start* in the middle of a range. Looking for the next *end* is more robust. Sorry this is not very clear to me so are you saying something like this? for ( i = 0; i < memory_map.nr_map ; i++ ) { end = memory_map.map[i].addr + memory_map.map[i].size; if ( memory_map.map[i].type == E820_RESERVED && end > base && memory_map.map[i].addr < min_base ) { next_rmrr = i; min_base = memory_map.map[i].addr; } } Thanks Tiejun _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |