From: Anthony Liguori <anthony@codemonkey.ws>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, "H. Peter Anvin" <hpa@linux.intel.com>,
Gerd Hoffmann <kraxel@redhat.com>, Alexander Graf <agraf@suse.de>,
"Richard W. M. Jones" <rjones@redhat.com>
Subject: Re: [Qemu-devel] qdev: Some ISA devices don't handle second instantiation gracefully
Date: Tue, 12 Oct 2010 08:27:21 -0500 [thread overview]
Message-ID: <4CB46239.60500@codemonkey.ws> (raw)
In-Reply-To: <m3aamjk1lu.fsf@blackfin.pond.sub.org>
On 10/12/2010 08:00 AM, Markus Armbruster wrote:
> Markus Armbruster<armbru@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.
>
It's definitely right to fail but I agree, it's better to propagate the
error.
> 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.
>
I think the proper thing to do is remove all exit(1)s and propagate
errors instead.
A simple approach would be to make register_ioport_{read,write}() return
an int, then do a query-replace on the source tree to make all
invocations of it simply check the return value and exit if it's non-zero.
Regards,
Anthony Liguori
next prev parent reply other threads:[~2010-10-12 13:27 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-12 12:50 [Qemu-devel] isa-applesmc doesn't handle second instantiation gracefully Markus Armbruster
2010-10-12 12:57 ` [Qemu-devel] " Alexander Graf
2010-10-12 13:00 ` [Qemu-devel] qdev: Some ISA devices don't handle second instantiation gracefully (was: isa-applesmc doesn't handle second instantiation gracefully) Markus Armbruster
2010-10-12 13:04 ` [Qemu-devel] " Alexander Graf
2010-10-12 14:52 ` [Qemu-devel] Re: qdev: Some ISA devices don't handle second instantiation gracefully Gerd Hoffmann
2010-10-12 13:27 ` Anthony Liguori [this message]
2010-10-12 13:54 ` [Qemu-devel] " Markus Armbruster
2010-10-12 14:24 ` Anthony Liguori
2010-10-13 12:47 ` [Qemu-devel] Re: qdev: Some ISA devices don't handle second instantiation gracefully (was: isa-applesmc doesn't handle second instantiation gracefully) Richard W.M. Jones
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4CB46239.60500@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=agraf@suse.de \
--cc=armbru@redhat.com \
--cc=hpa@linux.intel.com \
--cc=kraxel@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rjones@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.