From: Shannon Zhao <shannon.z...@linaro.org> valgrind complains about: ==17211== 784 (288 direct, 496 indirect) bytes in 4 blocks are definitely lost in loss record 3,018 of 3,201 ==17211== at 0x4C2845D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==17211== by 0x35478F: malloc_and_trace (vl.c:2556) ==17211== by 0x64C770E: g_malloc (in /usr/lib64/libglib-2.0.so.0.3600.3) ==17211== by 0x5148DD: object_new_with_type (object.c:428) ==17211== by 0x514939: object_new (object.c:439) ==17211== by 0x3EDA38: qemu_allocate_irq (irq.c:71) ==17211== by 0x3EDC2D: qemu_irq_split (irq.c:119) ==17211== by 0x23D231: exynos4210_init_board_irqs (exynos4210_gic.c:216) ==17211== by 0x293B00: exynos4210_init (exynos4210.c:250) ==17211== by 0x27915A: exynos4_boards_init_common (exynos4_boards.c:127) ==17211== by 0x2791D9: smdkc210_init (exynos4_boards.c:140) ==17211== by 0x358B5A: main (vl.c:4249)
Signed-off-by: Shannon Zhao <zhaoshengl...@huawei.com> Signed-off-by: Shannon Zhao <shannon.z...@linaro.org> --- hw/intc/exynos4210_gic.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/hw/intc/exynos4210_gic.c b/hw/intc/exynos4210_gic.c index 0590d5d..b2a4950 100644 --- a/hw/intc/exynos4210_gic.c +++ b/hw/intc/exynos4210_gic.c @@ -213,9 +213,6 @@ void exynos4210_init_board_irqs(Exynos4210Irq *s) uint32_t grp, bit, irq_id, n; for (n = 0; n < EXYNOS4210_MAX_EXT_COMBINER_IN_IRQ; n++) { - s->board_irqs[n] = qemu_irq_split(s->int_combiner_irq[n], - s->ext_combiner_irq[n]); - irq_id = 0; if (n == EXYNOS4210_COMBINER_GET_IRQ_NUM(1, 4) || n == EXYNOS4210_COMBINER_GET_IRQ_NUM(12, 4)) { @@ -230,8 +227,10 @@ void exynos4210_init_board_irqs(Exynos4210Irq *s) if (irq_id) { s->board_irqs[n] = qemu_irq_split(s->int_combiner_irq[n], s->ext_gic_irq[irq_id-32]); + } else { + s->board_irqs[n] = qemu_irq_split(s->int_combiner_irq[n], + s->ext_combiner_irq[n]); } - } for (; n < EXYNOS4210_MAX_INT_COMBINER_IN_IRQ; n++) { /* these IDs are passed to Internal Combiner and External GIC */ -- 2.0.4