[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC v4 04/12] isa: Allow to un-assign I/O ports
From: |
Gleb Natapov |
Subject: |
Re: [Qemu-devel] [RFC v4 04/12] isa: Allow to un-assign I/O ports |
Date: |
Sun, 12 Jun 2011 16:48:24 +0300 |
On Sun, Jun 12, 2011 at 01:59:51PM +0200, Andreas Färber wrote:
> Am 09.06.2011 um 17:03 schrieb Markus Armbruster:
>
> >Andreas Färber <address@hidden> writes:
> >
> >>Signed-off-by: Andreas Färber <address@hidden>
> >>---
> >>hw/isa-bus.c | 14 ++++++++++++++
> >>hw/isa.h | 1 +
> >>2 files changed, 15 insertions(+), 0 deletions(-)
> >>
> >>diff --git a/hw/isa-bus.c b/hw/isa-bus.c
> >>index d258932..1f64673 100644
> >>--- a/hw/isa-bus.c
> >>+++ b/hw/isa-bus.c
> >>@@ -105,6 +105,20 @@ void isa_init_ioport(ISADevice *dev,
> >>uint16_t ioport)
> >> isa_init_ioport_range(dev, ioport, 1);
> >>}
> >>
> >>+void isa_discard_ioport_range(ISADevice *dev, uint16_t start,
> >>uint16_t length)
> >>+{
> >>+ int i, j;
> >>+ for (i = 0; i < dev->nioports; i++) {
> >>+ if (dev->ioports[i] == start) {
> >>+ for (j = 0; j < dev->nioports - i; j++) {
> >>+ dev->ioports[i + j] = dev->ioports[i + length + j];
> >>+ }
> >>+ dev->nioports -= length;
> >>+ break;
> >>+ }
> >>+ }
> >>+}
> >>+
> >
> >"discard"? It's the opposite of isa_init_ioport_range(), name should
> >make that obvious. "uninit"?
>
> "uninit" felt wrong.
>
> >Note: this only affects the I/O-port bookkeeping within ISADevice, not
> >the actual I/O port handler registration. Any use must be accompanied
> >by a matching handler de-registration. Just like any use of
> >isa_init_ioport_range() must be accompanied by matching
> >register_ioport_FOO()s. You can thank Gleb for this mess.
>
> Right, I didn't spot any wrong usage though.
>
> So what about cleaning up the mess and doing
> isa_[un]assign_ioport_range(), wrapping the ioport.c functions?
> The overhead of calling it up to six times for the different widths
> and read/write would seem negligible as a startup cost. And for
> pc87312 we don't seriously have to care about performance imo.
>
Ideally every ioport registration should be moved to use IORange. I
tried to move all isa devices to it, but it is complicated for two
reasons. First not every device is qdevified and second some devises
can be instantiated as isa device and non-isa device and they do ioport
registration in a common code. With your approach you will have to
duplicate ioport registration code for isa and non-isa case for such
devices and code duplication is not good.
It is always easier to call something a mess instead of actually fixing
it.
--
Gleb.
- [Qemu-devel] [RFC v4 12/12] prep: Add pc87312 Super I/O emulation, (continued)
- Re: [Qemu-devel] [RFC v4 07/12] serial: Implement ISA set_state() callback, Markus Armbruster, 2011/06/09
- Re: [Qemu-devel] [RFC v4 07/12] serial: Implement ISA set_state() callback, Andreas Färber, 2011/06/09
- Re: [Qemu-devel] [RFC v4 05/12] isa: Allow to un-associate an IRQ, Markus Armbruster, 2011/06/09
- Re: [Qemu-devel] [RFC v4 05/12] isa: Allow to un-associate an IRQ, Markus Armbruster, 2011/06/09
- Re: [Qemu-devel] [RFC v4 05/12] isa: Allow to un-associate an IRQ, Andreas Färber, 2011/06/12
- Re: [Qemu-devel] [RFC v4 04/12] isa: Allow to un-assign I/O ports, Markus Armbruster, 2011/06/09
- Re: [Qemu-devel] [RFC v4 04/12] isa: Allow to un-assign I/O ports, Andreas Färber, 2011/06/12
- Re: [Qemu-devel] [RFC v4 04/12] isa: Allow to un-assign I/O ports,
Gleb Natapov <=
- Re: [Qemu-devel] [RFC v4 04/12] isa: Allow to un-assign I/O ports, Andreas Färber, 2011/06/12
- Re: [Qemu-devel] [RFC v4 04/12] isa: Allow to un-assign I/O ports, Gleb Natapov, 2011/06/12
- Re: [Qemu-devel] [RFC v4 03/12] isa: Provide set_state callback, Gerd Hoffmann, 2011/06/09
- Re: [Qemu-devel] [RFC v4 03/12] isa: Provide set_state callback, Andreas Färber, 2011/06/09
- Re: [Qemu-devel] [RFC v4 03/12] isa: Provide set_state callback, Gerd Hoffmann, 2011/06/09
- Re: [Qemu-devel] [RFC v4 03/12] isa: Provide set_state callback, Andreas Färber, 2011/06/09
- Re: [Qemu-devel] [RFC v4 03/12] isa: Provide set_state callback, Gerd Hoffmann, 2011/06/09
- Re: [Qemu-devel] [RFC v4 03/12] isa: Provide set_state callback, Markus Armbruster, 2011/06/09
- Re: [Qemu-devel] [RFC v4 03/12] isa: Provide set_state callback, Andreas Färber, 2011/06/12
- Re: [Qemu-devel] [RFC v4 03/12] isa: Provide set_state callback, Markus Armbruster, 2011/06/09