On Wed, 2024-05-22 at 17:06 +0200, Gerd Bayer wrote: > diff --git a/drivers/vfio/pci/vfio_pci_rdwr.c > b/drivers/vfio/pci/vfio_pci_rdwr.c > index d07bfb0ab892..07351ea76604 100644 > --- a/drivers/vfio/pci/vfio_pci_rdwr.c > +++ b/drivers/vfio/pci/vfio_pci_rdwr.c > @@ -124,6 +127,10 @@ static int vfio_pci_iordwr##size(struct > vfio_pci_core_device *vdev,\ > VFIO_IORDWR(8) > VFIO_IORDWR(16) > VFIO_IORDWR(32) > +#if CONFIG_64BIT During my experimenations to reproduce Ramesh's complaint about unresolved symbols, I found that this should have been #ifdef > +VFIO_IORDWR(64) > +#endif > + > /* > * Read or write from an __iomem region (MMIO or I/O port) with an > excluded > * range which is inaccessible. The excluded range drops writes and > fills > @@ -148,6 +155,15 @@ ssize_t vfio_pci_core_do_io_rw(struct > vfio_pci_core_device *vdev, bool test_mem, > else > fillable = 0; > > +#if CONFIG_64BIT ... as should this have been. > + if (fillable >= 8 && !(off % 8)) { > + ret = vfio_pci_iordwr64(vdev, iswrite, > test_mem, > + io, buf, off, > &filled); > + if (ret) > + return ret; > + > + } else > +#endif > if (fillable >= 4 && !(off % 4)) { > ret = vfio_pci_iordwr32(vdev, iswrite, > test_mem, > io, buf, off, > &filled); > diff --git a/include/linux/vfio_pci_core.h > b/include/linux/vfio_pci_core.h > index a2c8b8bba711..5f9b02d4a3e9 100644 > --- a/include/linux/vfio_pci_core.h > +++ b/include/linux/vfio_pci_core.h > @@ -146,7 +146,7 @@ int vfio_pci_core_iowrite##size(struct > vfio_pci_core_device *vdev, \ > VFIO_IOWRITE_DECLATION(8) > VFIO_IOWRITE_DECLATION(16) > VFIO_IOWRITE_DECLATION(32) > -#ifdef iowrite64 > +#ifdef CONFIG_64BIT > VFIO_IOWRITE_DECLATION(64) > #endif > > @@ -157,5 +157,8 @@ int vfio_pci_core_ioread##size(struct > vfio_pci_core_device *vdev, \ > VFIO_IOREAD_DECLATION(8) > VFIO_IOREAD_DECLATION(16) > VFIO_IOREAD_DECLATION(32) > +#ifdef CONFIG_64BIT > +VFIO_IOREAD_DECLATION(64) > +#endif > > #endif /* VFIO_PCI_CORE_H */ So there will be a v5. Thanks, Gerd