Message ID | 1444445616-3537-1-git-send-email-crosthwaite.peter@gmail.com |
---|---|
State | New |
Headers | show |
On Fri, Oct 9, 2015 at 7:53 PM, Peter Crosthwaite <crosthwaitepeter@gmail.com> wrote: > The /4 for offset calculation in MMIO writes was happening twice giving > wrong write offsets. Fix. > > While touching the code, change the if-else to be a short returning if > and convert the debug message to a GUEST_ERROR, which is more accurate > for this condition. > > Cc: qemu-stable@nongnu.org > Cc: Guenter Roeck <linux@roeck-us.net> > Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com> We actually already had the divide by four fix internally. Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> Thanks, Alistair > --- > hw/misc/zynq_slcr.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/hw/misc/zynq_slcr.c b/hw/misc/zynq_slcr.c > index 964f253..3d78708 100644 > --- a/hw/misc/zynq_slcr.c > +++ b/hw/misc/zynq_slcr.c > @@ -393,12 +393,12 @@ static void zynq_slcr_write(void *opaque, hwaddr offset, > return; > } > > - if (!s->regs[LOCKSTA]) { > - s->regs[offset / 4] = val; > - } else { > - DB_PRINT("SCLR registers are locked. Unlock them first\n"); > + if (s->regs[LOCKSTA]) { > + qemu_log_mask(LOG_GUEST_ERROR, > + "SCLR registers are locked. Unlock them first\n"); > return; > } > + s->regs[offset] = val; > > switch (offset) { > case PSS_RST_CTRL: > -- > 1.9.1 > >
On 10 October 2015 at 03:53, Peter Crosthwaite <crosthwaitepeter@gmail.com> wrote: > The /4 for offset calculation in MMIO writes was happening twice giving > wrong write offsets. Fix. > > While touching the code, change the if-else to be a short returning if > and convert the debug message to a GUEST_ERROR, which is more accurate > for this condition. > > Cc: qemu-stable@nongnu.org > Cc: Guenter Roeck <linux@roeck-us.net> > Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com> > --- > hw/misc/zynq_slcr.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) Applied to target-arm.next, thanks. -- PMM
diff --git a/hw/misc/zynq_slcr.c b/hw/misc/zynq_slcr.c index 964f253..3d78708 100644 --- a/hw/misc/zynq_slcr.c +++ b/hw/misc/zynq_slcr.c @@ -393,12 +393,12 @@ static void zynq_slcr_write(void *opaque, hwaddr offset, return; } - if (!s->regs[LOCKSTA]) { - s->regs[offset / 4] = val; - } else { - DB_PRINT("SCLR registers are locked. Unlock them first\n"); + if (s->regs[LOCKSTA]) { + qemu_log_mask(LOG_GUEST_ERROR, + "SCLR registers are locked. Unlock them first\n"); return; } + s->regs[offset] = val; switch (offset) { case PSS_RST_CTRL:
The /4 for offset calculation in MMIO writes was happening twice giving wrong write offsets. Fix. While touching the code, change the if-else to be a short returning if and convert the debug message to a GUEST_ERROR, which is more accurate for this condition. Cc: qemu-stable@nongnu.org Cc: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com> --- hw/misc/zynq_slcr.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)