sun4uv: fix serial initialization regression
Since commit b6607a1a20, 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>
			
			
This commit is contained in:
		
							parent
							
								
									5c936a83c3
								
							
						
					
					
						commit
						4496dc49ec
					
				| 
						 | 
				
			
			@ -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++) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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]);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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++) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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++)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue