[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v1] hvmloader, pci: Don't try to relocate memory if 64-bit BAR is bigger than 4GB
>>> On 06.07.16 at 20:16, <konrad.wilk@xxxxxxxxxx> wrote: > @@ -269,8 +269,19 @@ void pci_setup(void) > if ( ((bar_data & PCI_BASE_ADDRESS_SPACE) == > PCI_BASE_ADDRESS_SPACE_MEMORY) || > (bar_reg == PCI_ROM_ADDRESS) ) > - mmio_total += bar_sz; > - Please retain this blank line (below your addition). > + { > + /* If bigger than 4GB, don't try to put under 4GB. */ > + if ( is_64bar && bar_sz > (1ull<<32) ) Clearly at the very least this should be >=. However, even when it's a 2Gb BAR, we won't be able to fit it (as it can't go at address zero, nor at address 0x80000000, both for different reasons). > + { > + mmio_64bit_total += bar_sz; > + /* > + * As this may not trigger now that mmio_total could be > + * less than 2GB, so force it. > + */ > + bar64_relocate = 1; > + } else Coding style. > @@ -431,7 +442,7 @@ void pci_setup(void) > * Should either of those two conditions change, this code will > break. > */ > using_64bar = bars[i].is_64bar && bar64_relocate > - && (mmio_total > (mem_resource.max - mem_resource.base)); > + && (mmio_total + mmio_64bit_total > (mem_resource.max - > mem_resource.base)); Please retain consistent parenthesization: Either drop the ones around the operands of - or add a pair around the operands of +. > @@ -451,7 +462,10 @@ void pci_setup(void) > resource = &mem_resource; > bar_data &= ~PCI_BASE_ADDRESS_MEM_MASK; > } > - mmio_total -= bar_sz; > + if ( bars[i].is_64bar && bar_sz > (1ull<<32) ) Now that you use this constant a second time, it clearly needs to become a #define. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |