Skip to content

Commit

Permalink
sun4uv: fix serial initialization regression
Browse files Browse the repository at this point in the history
Since commit b6607a1, 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 <marcandre.lureau@redhat.com>
Message-Id: <20161022095318.17775-5-marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
  • Loading branch information
elmarco authored and bonzini committed Oct 24, 2016
1 parent 5c936a8 commit 4496dc4
Show file tree
Hide file tree
Showing 8 changed files with 11 additions and 10 deletions.
2 changes: 1 addition & 1 deletion hw/alpha/dp264.c
Expand Up @@ -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++) {
Expand Down
7 changes: 4 additions & 3 deletions hw/char/serial-isa.c
Expand Up @@ -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]);
}
Expand Down
2 changes: 1 addition & 1 deletion hw/i386/pc.c
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion hw/mips/mips_fulong2e.c
Expand Up @@ -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 */
Expand Down
2 changes: 1 addition & 1 deletion hw/mips/mips_malta.c
Expand Up @@ -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++) {
Expand Down
2 changes: 1 addition & 1 deletion hw/mips/mips_r4k.c
Expand Up @@ -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);

Expand Down
2 changes: 1 addition & 1 deletion hw/sparc64/sun4u.c
Expand Up @@ -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++)
Expand Down
2 changes: 1 addition & 1 deletion include/hw/char/serial.h
Expand Up @@ -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

0 comments on commit 4496dc4

Please sign in to comment.