Since g_new is used to initialize the RISCVAPLICState->state structure,
in some case we get behavior that is not as expected. This patch
changes this to g_new0, which allows to initialize the APLIC in the correct state.
Signed-off-by: Ivan Klokov <ivan.klokov@syntacore.com>
---
hw/intc/riscv_aplic.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/intc/riscv_aplic.c b/hw/intc/riscv_aplic.c
index cfd007e629..71591d44bf 100644
--- a/hw/intc/riscv_aplic.c
+++ b/hw/intc/riscv_aplic.c
@@ -803,7 +803,7 @@ static void riscv_aplic_realize(DeviceState *dev, Error **errp)
aplic->bitfield_words = (aplic->num_irqs + 31) >> 5;
aplic->sourcecfg = g_new0(uint32_t, aplic->num_irqs);
- aplic->state = g_new(uint32_t, aplic->num_irqs);
+ aplic->state = g_new0(uint32_t, aplic->num_irqs);
aplic->target = g_new0(uint32_t, aplic->num_irqs);
if (!aplic->msimode) {
for (i = 0; i < aplic->num_irqs; i++) {
--
2.34.1
On Thu, Apr 13, 2023 at 11:35 PM Ivan Klokov <ivan.klokov@syntacore.com> wrote: > > Since g_new is used to initialize the RISCVAPLICState->state structure, > in some case we get behavior that is not as expected. This patch > changes this to g_new0, which allows to initialize the APLIC in the correct state. > > Signed-off-by: Ivan Klokov <ivan.klokov@syntacore.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > --- > hw/intc/riscv_aplic.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/intc/riscv_aplic.c b/hw/intc/riscv_aplic.c > index cfd007e629..71591d44bf 100644 > --- a/hw/intc/riscv_aplic.c > +++ b/hw/intc/riscv_aplic.c > @@ -803,7 +803,7 @@ static void riscv_aplic_realize(DeviceState *dev, Error **errp) > > aplic->bitfield_words = (aplic->num_irqs + 31) >> 5; > aplic->sourcecfg = g_new0(uint32_t, aplic->num_irqs); > - aplic->state = g_new(uint32_t, aplic->num_irqs); > + aplic->state = g_new0(uint32_t, aplic->num_irqs); > aplic->target = g_new0(uint32_t, aplic->num_irqs); > if (!aplic->msimode) { > for (i = 0; i < aplic->num_irqs; i++) { > -- > 2.34.1 > >
On Thu, Apr 13, 2023 at 11:35 PM Ivan Klokov <ivan.klokov@syntacore.com> wrote: > > Since g_new is used to initialize the RISCVAPLICState->state structure, > in some case we get behavior that is not as expected. This patch > changes this to g_new0, which allows to initialize the APLIC in the correct state. > > Signed-off-by: Ivan Klokov <ivan.klokov@syntacore.com> Thanks! Applied to riscv-to-apply.next Alistair > --- > hw/intc/riscv_aplic.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/intc/riscv_aplic.c b/hw/intc/riscv_aplic.c > index cfd007e629..71591d44bf 100644 > --- a/hw/intc/riscv_aplic.c > +++ b/hw/intc/riscv_aplic.c > @@ -803,7 +803,7 @@ static void riscv_aplic_realize(DeviceState *dev, Error **errp) > > aplic->bitfield_words = (aplic->num_irqs + 31) >> 5; > aplic->sourcecfg = g_new0(uint32_t, aplic->num_irqs); > - aplic->state = g_new(uint32_t, aplic->num_irqs); > + aplic->state = g_new0(uint32_t, aplic->num_irqs); > aplic->target = g_new0(uint32_t, aplic->num_irqs); > if (!aplic->msimode) { > for (i = 0; i < aplic->num_irqs; i++) { > -- > 2.34.1 > >
On Thu, Apr 13, 2023 at 7:04 PM Ivan Klokov <ivan.klokov@syntacore.com> wrote: > > Since g_new is used to initialize the RISCVAPLICState->state structure, > in some case we get behavior that is not as expected. This patch > changes this to g_new0, which allows to initialize the APLIC in the correct state. > > Signed-off-by: Ivan Klokov <ivan.klokov@syntacore.com> Looks good to me. Reviewed-by: Anup Patel <anup@brainfault.org> Regards, Anup > --- > hw/intc/riscv_aplic.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/intc/riscv_aplic.c b/hw/intc/riscv_aplic.c > index cfd007e629..71591d44bf 100644 > --- a/hw/intc/riscv_aplic.c > +++ b/hw/intc/riscv_aplic.c > @@ -803,7 +803,7 @@ static void riscv_aplic_realize(DeviceState *dev, Error **errp) > > aplic->bitfield_words = (aplic->num_irqs + 31) >> 5; > aplic->sourcecfg = g_new0(uint32_t, aplic->num_irqs); > - aplic->state = g_new(uint32_t, aplic->num_irqs); > + aplic->state = g_new0(uint32_t, aplic->num_irqs); > aplic->target = g_new0(uint32_t, aplic->num_irqs); > if (!aplic->msimode) { > for (i = 0; i < aplic->num_irqs; i++) { > -- > 2.34.1 >
© 2016 - 2024 Red Hat, Inc.