Markus Armbruster <arm...@redhat.com> writes: > When I try -device isa-applesmc -device isa-applesmc, I get > > WARNING: Using AppleSMC with invalid key > qemu: hardware error: register_ioport_read: invalid opaque > [...] > > and a core dump. > > I know nothing about this device. Instantiating twice may well make no > sense. But hw_error() is not a nice way to reject a command line > option.
Actually, ib700 and isa-debugcon fail the same way. They call register_ioport_write(), which aborts via hw_error() when the port is already in use. This is okay for non-configurable parts of a board emulation, but not okay for a qdev device, unless it has no_user set. Related: when isa_init_irq() finds the requested IRQ already in use, it fails with exit(1). Maybe register_ioport_write() & friends should do that as well. Or maybe qdev device models should have an "at most one" flag.