|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 3/3] Do not access /dev/mem in MSI-X PCI passthrough on Xen
On Mon, May 06, 2024 at 02:33:22AM +0200, Marek Marczykowski-Górecki wrote:
> diff --git a/hw/xen/xen_pt_msi.c b/hw/xen/xen_pt_msi.c
> index 09cca4e..836cc9c 100644
> --- a/hw/xen/xen_pt_msi.c
> +++ b/hw/xen/xen_pt_msi.c
> @@ -493,7 +501,12 @@ static uint64_t pci_msix_read(void *opaque, hwaddr addr,
> return get_entry_value(&msix->msix_entry[entry_nr], offset);
> } else {
> /* Pending Bit Array (PBA) */
> - return *(uint32_t *)(msix->phys_iomem_base + addr);
> + if (s->msix->phys_iomem_base) {
> + return *(uint32_t *)(msix->phys_iomem_base + addr);
> + }
> + XEN_PT_LOG(&s->dev, "reading PBA, addr 0x%lx, offset 0x%lx\n",
> + addr, addr - msix->total_entries * PCI_MSIX_ENTRY_SIZE);
> + return 0xFFFFFFFF;
If Xen advertise XENFEAT_dm_msix_all_writes, we are not expecting QEMU
to reach this code, right? A comment might be useful.
> }
> }
>
> @@ -576,33 +593,40 @@ int xen_pt_msix_init(XenPCIPassthroughState *s,
> uint32_t base)
> msix->table_base = s->real_device.io_regions[bar_index].base_addr;
> XEN_PT_LOG(d, "get MSI-X table BAR base 0x%"PRIx64"\n",
> msix->table_base);
>
> + /* Accessing /dev/mem is needed only on older Xen. */
> + if (!(xc_version_info.submap & (1U << XENFEAT_dm_msix_all_writes))) {
Would it be ok to use test_bit() instead?
Thanks,
--
Anthony Perard | Vates XCP-ng Developer
XCP-ng & Xen Orchestra - Vates solutions
web: https://vates.tech
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |