Message ID | 20200630122710.1119158-4-ppandit@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | memory: assert and define MemoryRegionOps callbacks | expand |
On Tue, 30 Jun 2020 at 13:30, P J P <ppandit@redhat.com> wrote: > > From: Prasad J Pandit <pjp@fedoraproject.org> > > Add vfio quirk device mmio write method to avoid NULL pointer > dereference issue. > > Reported-by: Lei Sun <slei.casper@gmail.com> > Reviewed-by: Li Qiang <liq3ea@gmail.com> > Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> > --- > hw/vfio/pci-quirks.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > Update v3: Add Reviewed-by: ... > -> https://lists.gnu.org/archive/html/qemu-devel/2020-06/msg09406.html > > diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c > index d304c81148..cc6d5dbc23 100644 > --- a/hw/vfio/pci-quirks.c > +++ b/hw/vfio/pci-quirks.c > @@ -14,6 +14,7 @@ > #include "config-devices.h" > #include "exec/memop.h" > #include "qemu/units.h" > +#include "qemu/log.h" > #include "qemu/error-report.h" > #include "qemu/main-loop.h" > #include "qemu/module.h" > @@ -264,8 +265,15 @@ static uint64_t vfio_ati_3c3_quirk_read(void *opaque, > return data; > } > > +static void vfio_ati_3c3_quirk_write(void *opaque, hwaddr addr, > + uint64_t data, unsigned size) > +{ > + qemu_log_mask(LOG_GUEST_ERROR, "%s not implemented\n", __func__); > +} > + > static const MemoryRegionOps vfio_ati_3c3_quirk = { > .read = vfio_ati_3c3_quirk_read, > + .write = vfio_ati_3c3_quirk_write, > .endianness = DEVICE_LITTLE_ENDIAN, > }; Alex (Williamson) -- as the vfio maintainer, do you have a view on whether we should be logging write accesses to port 0x3c3 here as guest-errors or unimplemented-QEMU-functionality? Guest-error seems plausible to me, anyway. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> thanks -- PMM
On Thu, 16 Jul 2020 18:46:33 +0100 Peter Maydell <peter.maydell@linaro.org> wrote: > On Tue, 30 Jun 2020 at 13:30, P J P <ppandit@redhat.com> wrote: > > > > From: Prasad J Pandit <pjp@fedoraproject.org> > > > > Add vfio quirk device mmio write method to avoid NULL pointer > > dereference issue. > > > > Reported-by: Lei Sun <slei.casper@gmail.com> > > Reviewed-by: Li Qiang <liq3ea@gmail.com> > > Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> > > --- > > hw/vfio/pci-quirks.c | 8 ++++++++ > > 1 file changed, 8 insertions(+) > > > > Update v3: Add Reviewed-by: ... > > -> https://lists.gnu.org/archive/html/qemu-devel/2020-06/msg09406.html > > > > diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c > > index d304c81148..cc6d5dbc23 100644 > > --- a/hw/vfio/pci-quirks.c > > +++ b/hw/vfio/pci-quirks.c > > @@ -14,6 +14,7 @@ > > #include "config-devices.h" > > #include "exec/memop.h" > > #include "qemu/units.h" > > +#include "qemu/log.h" > > #include "qemu/error-report.h" > > #include "qemu/main-loop.h" > > #include "qemu/module.h" > > @@ -264,8 +265,15 @@ static uint64_t vfio_ati_3c3_quirk_read(void *opaque, > > return data; > > } > > > > +static void vfio_ati_3c3_quirk_write(void *opaque, hwaddr addr, > > + uint64_t data, unsigned size) > > +{ > > + qemu_log_mask(LOG_GUEST_ERROR, "%s not implemented\n", __func__); > > +} > > + > > static const MemoryRegionOps vfio_ati_3c3_quirk = { > > .read = vfio_ati_3c3_quirk_read, > > + .write = vfio_ati_3c3_quirk_write, > > .endianness = DEVICE_LITTLE_ENDIAN, > > }; > > > Alex (Williamson) -- as the vfio maintainer, do you have a view > on whether we should be logging write accesses to port 0x3c3 > here as guest-errors or unimplemented-QEMU-functionality? > > Guest-error seems plausible to me, anyway. I believe the intention was that writes would be dropped, so if this generates logging that is going to cause users to file bugs, that would be undesirable. Thanks, Alex
On Fri, 17 Jul 2020 at 16:54, Alex Williamson <alex.williamson@redhat.com> wrote: > > On Thu, 16 Jul 2020 18:46:33 +0100 > Peter Maydell <peter.maydell@linaro.org> wrote: > > > Alex (Williamson) -- as the vfio maintainer, do you have a view > > on whether we should be logging write accesses to port 0x3c3 > > here as guest-errors or unimplemented-QEMU-functionality? > > > > Guest-error seems plausible to me, anyway. > > I believe the intention was that writes would be dropped, so if this > generates logging that is going to cause users to file bugs, that would > be undesirable. Thanks, It will only log if the user explicitly turns on "log things the guest does which are bugs in it, like writing to read-only registers" (with the '-d guest_errors' option). thanks -- PMM
On Fri, 17 Jul 2020 16:57:40 +0100 Peter Maydell <peter.maydell@linaro.org> wrote: > On Fri, 17 Jul 2020 at 16:54, Alex Williamson > <alex.williamson@redhat.com> wrote: > > > > On Thu, 16 Jul 2020 18:46:33 +0100 > > Peter Maydell <peter.maydell@linaro.org> wrote: > > > > > Alex (Williamson) -- as the vfio maintainer, do you have a view > > > on whether we should be logging write accesses to port 0x3c3 > > > here as guest-errors or unimplemented-QEMU-functionality? > > > > > > Guest-error seems plausible to me, anyway. > > > > I believe the intention was that writes would be dropped, so if this > > generates logging that is going to cause users to file bugs, that would > > be undesirable. Thanks, > > It will only log if the user explicitly turns on "log things the > guest does which are bugs in it, like writing to read-only > registers" (with the '-d guest_errors' option). IIRC, this quirk is based on observation more so than an actual spec, so whether a log of such an event is interpreted as a guest error or an emulation error might be up for debate. Aside from that nit, and lack of bandwidth to research how hardware handles writes, Acked-by: Alex Williamson <alex.williamson@redhat.com> Thanks, Alex
diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c index d304c81148..cc6d5dbc23 100644 --- a/hw/vfio/pci-quirks.c +++ b/hw/vfio/pci-quirks.c @@ -14,6 +14,7 @@ #include "config-devices.h" #include "exec/memop.h" #include "qemu/units.h" +#include "qemu/log.h" #include "qemu/error-report.h" #include "qemu/main-loop.h" #include "qemu/module.h" @@ -264,8 +265,15 @@ static uint64_t vfio_ati_3c3_quirk_read(void *opaque, return data; } +static void vfio_ati_3c3_quirk_write(void *opaque, hwaddr addr, + uint64_t data, unsigned size) +{ + qemu_log_mask(LOG_GUEST_ERROR, "%s not implemented\n", __func__); +} + static const MemoryRegionOps vfio_ati_3c3_quirk = { .read = vfio_ati_3c3_quirk_read, + .write = vfio_ati_3c3_quirk_write, .endianness = DEVICE_LITTLE_ENDIAN, };