提交 9bbbf649 编写于 作者: X xiaoqiang zhao 提交者: Peter Maydell

hw/arm: virt uart fix

commit f0d1d2c1
("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: Nxiaoqiang zhao <zxq_yx_007@163.com>
Tested-by: NJerome Forissier <jerome.forissier@linaro.org>
Message-id: 1465353045-26323-1-git-send-email-zxq_yx_007@163.com
Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
上级 b66e10e4
...@@ -525,7 +525,7 @@ static void create_gic(VirtBoardInfo *vbi, qemu_irq *pic, int type, bool secure) ...@@ -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, static void create_uart(const VirtBoardInfo *vbi, qemu_irq *pic, int uart,
MemoryRegion *mem) MemoryRegion *mem, CharDriverState *chr)
{ {
char *nodename; char *nodename;
hwaddr base = vbi->memmap[uart].base; hwaddr base = vbi->memmap[uart].base;
...@@ -536,7 +536,7 @@ static void create_uart(const VirtBoardInfo *vbi, qemu_irq *pic, int uart, ...@@ -536,7 +536,7 @@ static void create_uart(const VirtBoardInfo *vbi, qemu_irq *pic, int uart,
DeviceState *dev = qdev_create(NULL, "pl011"); DeviceState *dev = qdev_create(NULL, "pl011");
SysBusDevice *s = SYS_BUS_DEVICE(dev); 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); qdev_init_nofail(dev);
memory_region_add_subregion(mem, base, memory_region_add_subregion(mem, base,
sysbus_mmio_get_region(s, 0)); sysbus_mmio_get_region(s, 0));
...@@ -1259,11 +1259,11 @@ static void machvirt_init(MachineState *machine) ...@@ -1259,11 +1259,11 @@ static void machvirt_init(MachineState *machine)
create_gic(vbi, pic, gic_version, vms->secure); 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) { if (vms->secure) {
create_secure_ram(vbi, secure_sysmem); 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); create_rtc(vbi, pic);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册