aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxiaoqiang zhao <zxq_yx_007@163.com>2016-06-08 10:30:45 +0800
committerPeter Maydell <peter.maydell@linaro.org>2016-06-08 19:41:44 +0100
commit9bbbf6497a10c5066af415d2d187a18679ffb18c (patch)
tree41340043357055142667389746f7e37f915dfc68
parentb66e10e4c9ae738412b9742db49457f6b703e349 (diff)
hw/arm: virt uart fix
commit f0d1d2c115dffc1fbaf954d0b449db05c5eb79b1 ("hw/char: QOM'ify pl011 model") break qemu-system-arm virt machine if option '-machine secure=on' is provided. The function create_uart is called twice. So make CharDriverState pointer a parameter to create_uart instead of hardcoded. Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com> Tested-by: Jerome Forissier <jerome.forissier@linaro.org> Message-id: 1465353045-26323-1-git-send-email-zxq_yx_007@163.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--hw/arm/virt.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 8e46137e9b..73113cfc4d 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -525,7 +525,7 @@ static void create_gic(VirtBoardInfo *vbi, qemu_irq *pic, int type, bool secure)
}
static void create_uart(const VirtBoardInfo *vbi, qemu_irq *pic, int uart,
- MemoryRegion *mem)
+ MemoryRegion *mem, CharDriverState *chr)
{
char *nodename;
hwaddr base = vbi->memmap[uart].base;
@@ -536,7 +536,7 @@ static void create_uart(const VirtBoardInfo *vbi, qemu_irq *pic, int uart,
DeviceState *dev = qdev_create(NULL, "pl011");
SysBusDevice *s = SYS_BUS_DEVICE(dev);
- qdev_prop_set_chr(dev, "chardev", serial_hds[0]);
+ qdev_prop_set_chr(dev, "chardev", chr);
qdev_init_nofail(dev);
memory_region_add_subregion(mem, base,
sysbus_mmio_get_region(s, 0));
@@ -1259,11 +1259,11 @@ static void machvirt_init(MachineState *machine)
create_gic(vbi, pic, gic_version, vms->secure);
- create_uart(vbi, pic, VIRT_UART, sysmem);
+ create_uart(vbi, pic, VIRT_UART, sysmem, serial_hds[0]);
if (vms->secure) {
create_secure_ram(vbi, secure_sysmem);
- create_uart(vbi, pic, VIRT_SECURE_UART, secure_sysmem);
+ create_uart(vbi, pic, VIRT_SECURE_UART, secure_sysmem, serial_hds[1]);
}
create_rtc(vbi, pic);