[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 04/38] sun4uv: fix serial initialization regression
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH 04/38] sun4uv: fix serial initialization regression |
Date: |
Sat, 22 Oct 2016 12:52:44 +0300 |
Since commit b6607a1a204d, serial_hds_isa_init() was introduced to
factor out serial_isa_init() loops. However, sun4uv shouldn't start from
0 when there is a mm serial on 0 already. Add a "from" argument to
serial_hds_isa_init().
Signed-off-by: Marc-André Lureau <address@hidden>
---
hw/alpha/dp264.c | 2 +-
hw/char/serial-isa.c | 7 ++++---
hw/i386/pc.c | 2 +-
hw/mips/mips_fulong2e.c | 2 +-
hw/mips/mips_malta.c | 2 +-
hw/mips/mips_r4k.c | 2 +-
hw/sparc64/sun4u.c | 2 +-
include/hw/char/serial.h | 2 +-
8 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c
index f1267b5..d6431fd 100644
--- a/hw/alpha/dp264.c
+++ b/hw/alpha/dp264.c
@@ -88,7 +88,7 @@ static void clipper_init(MachineState *machine)
pci_vga_init(pci_bus);
/* Serial code setup. */
- serial_hds_isa_init(isa_bus, MAX_SERIAL_PORTS);
+ serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS);
/* Network setup. e1000 is good enough, failing Tulip support. */
for (i = 0; i < nb_nics; i++) {
diff --git a/hw/char/serial-isa.c b/hw/char/serial-isa.c
index 1594ec4..54d3a12 100644
--- a/hw/char/serial-isa.c
+++ b/hw/char/serial-isa.c
@@ -133,13 +133,14 @@ static void serial_isa_init(ISABus *bus, int index,
CharDriverState *chr)
qdev_init_nofail(dev);
}
-void serial_hds_isa_init(ISABus *bus, int n)
+void serial_hds_isa_init(ISABus *bus, int from, int to)
{
int i;
- assert(n <= MAX_SERIAL_PORTS);
+ assert(from >= 0);
+ assert(to <= MAX_SERIAL_PORTS);
- for (i = 0; i < n; ++i) {
+ for (i = from; i < to; ++i) {
if (serial_hds[i]) {
serial_isa_init(bus, i, serial_hds[i]);
}
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index f4b0cda..fb8f29c 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1589,7 +1589,7 @@ void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi,
pcspk_init(isa_bus, pit);
}
- serial_hds_isa_init(isa_bus, MAX_SERIAL_PORTS);
+ serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS);
parallel_hds_isa_init(isa_bus, MAX_PARALLEL_PORTS);
a20_line = qemu_allocate_irqs(handle_a20_line_change, first_cpu, 2);
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index 889cdc7..9a4dae4 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -374,7 +374,7 @@ static void mips_fulong2e_init(MachineState *machine)
rtc_init(isa_bus, 2000, NULL);
- serial_hds_isa_init(isa_bus, MAX_SERIAL_PORTS);
+ serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS);
parallel_hds_isa_init(isa_bus, 1);
/* Sound card */
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index e90857e..bae60be 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -1215,7 +1215,7 @@ void mips_malta_init(MachineState *machine)
isa_create_simple(isa_bus, "i8042");
rtc_init(isa_bus, 2000, NULL);
- serial_hds_isa_init(isa_bus, 2);
+ serial_hds_isa_init(isa_bus, 0, 2);
parallel_hds_isa_init(isa_bus, 1);
for(i = 0; i < MAX_FD; i++) {
diff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c
index 16a59c7..27548c4 100644
--- a/hw/mips/mips_r4k.c
+++ b/hw/mips/mips_r4k.c
@@ -286,7 +286,7 @@ void mips_r4k_init(MachineState *machine)
pit = pit_init(isa_bus, 0x40, 0, NULL);
- serial_hds_isa_init(isa_bus, MAX_SERIAL_PORTS);
+ serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS);
isa_vga_init(isa_bus);
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index 3165e18..7b8134e 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -824,7 +824,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
i++;
}
- serial_hds_isa_init(isa_bus, MAX_SERIAL_PORTS);
+ serial_hds_isa_init(isa_bus, i, MAX_SERIAL_PORTS);
parallel_hds_isa_init(isa_bus, MAX_PARALLEL_PORTS);
for(i = 0; i < nb_nics; i++)
diff --git a/include/hw/char/serial.h b/include/hw/char/serial.h
index a4fd3d5..4f3b73c 100644
--- a/include/hw/char/serial.h
+++ b/include/hw/char/serial.h
@@ -94,6 +94,6 @@ SerialState *serial_mm_init(MemoryRegion *address_space,
/* serial-isa.c */
#define TYPE_ISA_SERIAL "isa-serial"
-void serial_hds_isa_init(ISABus *bus, int n);
+void serial_hds_isa_init(ISABus *bus, int from, int to);
#endif
--
2.10.0
- [Qemu-devel] [PATCH 00/38] char: fixes and improvements (was "[PATCH 0/9] Fix mux regression"), Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 01/38] rng: remove unused included header, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 02/38] char: remove use-after-free on win-stdio, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 04/38] sun4uv: fix serial initialization regression,
Marc-André Lureau <=
- [Qemu-devel] [PATCH 03/38] ringbuf: fix chr_write return value, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 05/38] malta: replace chr init by CHR_EVENT_OPENED handler, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 07/38] xilinx: fix buffer overflow on realize, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 06/38] char: remove init callback, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 08/38] mux: split mux_chr_update_read_handler(), Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 10/38] char: start converting mux driver to use CharBackend, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 09/38] char: introduce CharBackend, Marc-André Lureau, 2016/10/22