• M
    isa: Clean up error handling around isa_bus_new() · d10e5432
    Markus Armbruster 提交于
    We can have at most one ISA bus.  If you try to create another one,
    isa_bus_new() complains to stderr and returns null.
    
    isa_bus_new() is called in two contexts, machine's init() and device's
    realize() methods.  Since complaining to stderr is not proper in the
    latter context, convert isa_bus_new() to Error.
    
    Machine's init():
    
    * mips_jazz_init(), called from the init() methods of machines
      "magnum" and "pica"
    
    * mips_r4k_init(), the init() method of machine "mips"
    
    * pc_init1() called from the init() methods of non-q35 PC machines
    
    * typhoon_init(), called from clipper_init(), the init() method of
      machine "clipper"
    
    These callers always create the first ISA bus, hence isa_bus_new()
    can't fail.  Simply pass &error_abort.
    
    Device's realize():
    
    * i82378_realize(), of PCI device "i82378"
    
    * ich9_lpc_realize(), of PCI device "ICH9-LPC"
    
    * pci_ebus_realize(), of PCI device "ebus"
    
    * piix3_realize(), of PCI device "pci-piix3", abstract parent of
      "PIIX3" and "PIIX3-xen"
    
    * piix4_realize(), of PCI device "PIIX4"
    
    * vt82c686b_realize(), of PCI device "VT82C686B"
    
    Propagate the error.  Note that these devices are typically created
    only by machine init() methods with qdev_init_nofail() or similar.  If
    we screwed up and created an ISA bus before that call, we now give up
    right away.  Before, we'd hobble on, and typically die in
    isa_bus_irqs().  Similar if someone finds a way to hot-plug one of
    these critters.
    
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Cc: "Hervé Poussineau" <hpoussin@reactos.org>
    Cc: Aurelien Jarno <aurelien@aurel32.net>
    Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
    Signed-off-by: NMarkus Armbruster <armbru@pond.sub.org>
    Reviewed-by: NMarcel Apfelbaum <marcel@redhat.com>
    Reviewed-by: NHervé Poussineau <hpoussin@reactos.org>
    Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
    Message-Id: <1450370121-5768-11-git-send-email-armbru@redhat.com>
    d10e5432
isa-bus.c 7.9 KB