Message ID | 20200630122710.1119158-9-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:31, P J P <ppandit@redhat.com> wrote: > > From: Prasad J Pandit <pjp@fedoraproject.org> > > Add digprog mmio write method to avoid assert failure during > initialisation. > > Reviewed-by: Li Qiang <liq3ea@gmail.com> > Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> > --- > hw/misc/imx7_ccm.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > Update v3: Add Reviewed-by: ... > -> https://lists.gnu.org/archive/html/qemu-devel/2020-06/msg09452.html > > diff --git a/hw/misc/imx7_ccm.c b/hw/misc/imx7_ccm.c > index 02fc1ae8d0..5ac5ecf74c 100644 > --- a/hw/misc/imx7_ccm.c > +++ b/hw/misc/imx7_ccm.c > @@ -131,8 +131,15 @@ static const struct MemoryRegionOps imx7_set_clr_tog_ops = { > }, > }; > > +static void imx7_digprog_write(void *opaque, hwaddr addr, > + uint64_t data, unsigned size) > +{ > + qemu_log_mask(LOG_UNIMP, "%s not implemented\n", __func__); > +} This covers a single register (DIGPROG) which is read-only (it returns a silicon revision number). So this is not a LOG_UNIMP, but a LOG_GUEST_ERROR: qemu_log_mask(LOG_GUEST_ERROR, "Guest write to read-only ANALOG_DIGPROG register\n"); thanks -- PMM
+-- On Thu, 16 Jul 2020, Peter Maydell wrote --+ | > +static void imx7_digprog_write(void *opaque, hwaddr addr, | > + uint64_t data, unsigned size) | > +{ | > + qemu_log_mask(LOG_UNIMP, "%s not implemented\n", __func__); | > +} | | This covers a single register (DIGPROG) which is read-only (it returns a | silicon revision number). So this is not a LOG_UNIMP, but a LOG_GUEST_ERROR: | | qemu_log_mask(LOG_GUEST_ERROR, "Guest write to read-only | ANALOG_DIGPROG register\n"); Should this be g_assert_not_reached() in that case? Thank you. -- Prasad J Pandit / Red Hat Product Security Team 8685 545E B54C 486B C6EB 271E E285 8B5A F050 DE8D
On Thu, 16 Jul 2020 at 17:55, P J P <ppandit@redhat.com> wrote: > > +-- On Thu, 16 Jul 2020, Peter Maydell wrote --+ > | > +static void imx7_digprog_write(void *opaque, hwaddr addr, > | > + uint64_t data, unsigned size) > | > +{ > | > + qemu_log_mask(LOG_UNIMP, "%s not implemented\n", __func__); > | > +} > | > | This covers a single register (DIGPROG) which is read-only (it returns a > | silicon revision number). So this is not a LOG_UNIMP, but a LOG_GUEST_ERROR: > | > | qemu_log_mask(LOG_GUEST_ERROR, "Guest write to read-only > | ANALOG_DIGPROG register\n"); > > Should this be g_assert_not_reached() in that case? No, because a malicious guest can write to the register (and cause the function to be called), it is merely that it is a bug in guest code for it to do that. -- PMM
diff --git a/hw/misc/imx7_ccm.c b/hw/misc/imx7_ccm.c index 02fc1ae8d0..5ac5ecf74c 100644 --- a/hw/misc/imx7_ccm.c +++ b/hw/misc/imx7_ccm.c @@ -131,8 +131,15 @@ static const struct MemoryRegionOps imx7_set_clr_tog_ops = { }, }; +static void imx7_digprog_write(void *opaque, hwaddr addr, + uint64_t data, unsigned size) +{ + qemu_log_mask(LOG_UNIMP, "%s not implemented\n", __func__); +} + static const struct MemoryRegionOps imx7_digprog_ops = { .read = imx7_set_clr_tog_read, + .write = imx7_digprog_write, .endianness = DEVICE_NATIVE_ENDIAN, .impl = { .min_access_size = 4,