On Wed, Mar 26, 2025 at 11:10:06AM -0700, Farhan Ali wrote: > Starting with z15 (or newer) we can execute mmio > instructions from userspace. On older platforms > where we don't have these instructions available > we can fallback to using system calls to access > the PCI mapped resources. > > This patch adds helper functions for mmio reads > and writes for s390x. > > Signed-off-by: Farhan Ali <al...@linux.ibm.com> > --- > include/qemu/s390x_pci_mmio.h | 17 ++++++ > util/meson.build | 2 + > util/s390x_pci_mmio.c | 105 ++++++++++++++++++++++++++++++++++ > 3 files changed, 124 insertions(+) > create mode 100644 include/qemu/s390x_pci_mmio.h > create mode 100644 util/s390x_pci_mmio.c > > diff --git a/include/qemu/s390x_pci_mmio.h b/include/qemu/s390x_pci_mmio.h > new file mode 100644 > index 0000000000..be61b5ae29 > --- /dev/null > +++ b/include/qemu/s390x_pci_mmio.h > @@ -0,0 +1,17 @@ > +/* > + * s390x PCI MMIO definitions > + * > + * Copyright 2025 IBM Corp. > + * Author(s): Farhan Ali <al...@linux.ibm.com> > + * > + * SPDX-License-Identifier: GPL-2.0-or-later > + */ > +#ifndef S390X_PCI_MMIO_H > +#define S390X_PCI_MMIO_H > + > +uint64_t s390x_pci_mmio_read_64(const void *ioaddr); > +uint32_t s390x_pci_mmio_read_32(const void *ioaddr); > +void s390x_pci_mmio_write_64(void *ioaddr, uint64_t val); > +void s390x_pci_mmio_write_32(void *ioaddr, uint32_t val); > + > +#endif > diff --git a/util/meson.build b/util/meson.build > index 780b5977a8..acb21592f9 100644 > --- a/util/meson.build > +++ b/util/meson.build > @@ -131,4 +131,6 @@ elif cpu in ['ppc', 'ppc64'] > util_ss.add(files('cpuinfo-ppc.c')) > elif cpu in ['riscv32', 'riscv64'] > util_ss.add(files('cpuinfo-riscv.c')) > +elif cpu == 's390x' > + util_ss.add(files('s390x_pci_mmio.c')) > endif > diff --git a/util/s390x_pci_mmio.c b/util/s390x_pci_mmio.c > new file mode 100644 > index 0000000000..2e0825d617 > --- /dev/null > +++ b/util/s390x_pci_mmio.c > @@ -0,0 +1,105 @@ > +/* > + * s390x PCI MMIO definitions > + * > + * Copyright 2025 IBM Corp. > + * Author(s): Farhan Ali <al...@linux.ibm.com> > + * > + * SPDX-License-Identifier: GPL-2.0-or-later > + */ > + > +#include <unistd.h> > +#include <sys/syscall.h> > +#include "qemu/osdep.h"
This should be the first #include in the file. From docs/devel/style.rst: Include directives ------------------ Order include directives as follows: .. code-block:: c #include "qemu/osdep.h" /* Always first... */ #include <...> /* then system headers... */ #include "..." /* and finally QEMU headers. */ Otherwise: Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
signature.asc
Description: PGP signature