[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2] x86/vpci: fix handling of BAR overlaps with non-hole regions
Hi Roger, On 16/05/2025 09:31, Roger Pau Monne wrote: For once the message printed when a BAR overlaps with a non-hole regions is not accurate on x86. While the BAR won't be mapped by the vPCI logic, it is quite likely overlapping with a reserved region in the memory map, and already mapped as by default all reserved regions are identity mapped in the p2m. Fix the message so it just warns about the overlap, without mentioning that the BAR won't be mapped, as this has caused confusion in the past. Secondly, when an overlap is detected the BAR 'enabled' field is not set, hence other vPCI code that depends on it like vPCI MSI-X handling won't function properly, as it sees the BAR as disabled, even when memory decoding is enabled for the device and the BAR is likely mapped in the p2m. Change the handling of BARs that overlap non-hole regions to instead remove any overlapped regions from the rangeset, so the resulting ranges to map just contain the hole regions. This requires introducing a new pci_sanitize_bar_memory() that's implemented per-arch and sanitizes the address range to add to the p2m. For x86 pci_sanitize_bar_memory() removes any regions present in the host memory map, for ARM this is currently left as a dummy handler to not change existing behavior. Ultimately the above changes should fix the vPCI MSI-X handlers not working correctly when the BAR that contains the MSI-X table overlaps with a non-hole region, as then the 'enabled' BAR bit won't be set and the MSI-X traps won't handle accesses as expected. Reported-by: Stefano Stabellini <stefano.stabellini@xxxxxxx> Fixes: 53d9133638c3 ('pci: do not disable memory decoding for devices') Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Tested-by: Victor M Lira <victorm.lira@xxxxxxx> Acked-by: Julien Grall <jgrall@xxxxxxxxxx> Cheers, -- Julien Grall
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |