From: Avi Kivity <avi@redhat.com>
To: Richard Henderson <rth@twiddle.net>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 02/14] isa: Add isa_register_old_portio_list().
Date: Wed, 17 Aug 2011 06:45:30 -0700 [thread overview]
Message-ID: <4E4BC5FA.1020409@redhat.com> (raw)
In-Reply-To: <1313513145-5348-3-git-send-email-rth@twiddle.net>
On 08/16/2011 09:45 AM, Richard Henderson wrote:
>
> +void isa_register_old_portio_list(ISADevice *dev, uint16_t start,
> + const MemoryRegionPortio *pio_start,
> + void *opaque, const char *name)
_old_ implies it's deprecated, please drop. It's only old if it's in a
user specified MemoryRegionOps.
> +{
> + MemoryRegion *io_space = isabus->address_space_io;
> + const MemoryRegionPortio *pio_iter;
> +
> + /* START is how we should treat DEV, regardless of the actual
> + contents of the portio array. This is how the old code
> + actually handled e.g. the FDC device. */
> + if (dev) {
> + isa_init_ioport(dev, start);
> + }
> +
> + for (; pio_start->size != 0; pio_start = pio_iter + 1) {
> + unsigned int off_low = UINT_MAX, off_high = 0;
> + MemoryRegionOps *ops;
> + MemoryRegion *region;
> +
> + for (pio_iter = pio_start; pio_iter->size; ++pio_iter) {
> + if (pio_iter->offset< off_low) {
> + off_low = pio_iter->offset;
> + }
> + if (pio_iter->offset + pio_iter->len> off_high) {
> + off_high = pio_iter->offset + pio_iter->len;
> + }
This is supposed to pick up MRPs that are for the same port address? If
so that should be in the loop termination condition.
> + }
> +
> + ops = g_new(MemoryRegionOps, 1);
g_new0(), we rely on initialized memory here
> + ops->old_portio = pio_start;
> +
> + region = g_new(MemoryRegion, 1);
(but not here)
> + memory_region_init_io(region, ops, opaque, name, off_high - off_low);
> + memory_region_set_offset(region, start + off_low);
I think the memory core ignores set_offset() for portio.
> + memory_region_add_subregion(io_space, start + off_low, region);
> + }
> +}
> +void isa_register_ioport(ISADevice *dev, MemoryRegion *io, uint16_t start);
> +
> +/**
> + * isa_register_old_portio_list: Initialize a set of ISA io ports
> + *
> + * Several ISA devices have many dis-joint I/O ports. Worse, these I/O
> + * ports can be interleaved with I/O ports from other devices. This
> + * function makes it easy to create multiple MemoryRegions for a single
> + * device and use the legacy portio routines.
> + *
> + * @dev: the ISADevice against which these are registered; may be NULL.
> + * @start: the base I/O port against which the portio->offset is applied.
> + * @old_portio: A concatenation of several #MemoryRegionOps old_portio
> + * parameters. The entire list should be terminated by a double
> + * PORTIO_END_OF_LIST().
double seems harsh.
> + * @opaque: passed into the old_portio callbacks.
> + * @name: passed into memory_region_init_io.
> + */
> +void isa_register_old_portio_list(ISADevice *dev, uint16_t start,
> + const MemoryRegionPortio *old_portio,
> + void *opaque, const char *name);
> +
> extern target_phys_addr_t isa_mem_base;
>
> void isa_mmio_setup(MemoryRegion *mr, target_phys_addr_t size);
--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.
next prev parent reply other threads:[~2011-08-17 13:45 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-16 16:45 [Qemu-devel] [PATCH 00/14] Convert ISA I/O ports to Memory API Richard Henderson
2011-08-16 16:45 ` [Qemu-devel] [PATCH 01/14] isa: Tidy support code for isabus_get_fw_dev_path Richard Henderson
2011-08-16 16:45 ` [Qemu-devel] [PATCH 02/14] isa: Add isa_register_old_portio_list() Richard Henderson
2011-08-17 13:45 ` Avi Kivity [this message]
2011-08-17 13:50 ` Avi Kivity
2011-08-17 14:06 ` Richard Henderson
2011-08-17 14:09 ` Avi Kivity
2011-08-17 17:23 ` Blue Swirl
2011-08-17 19:07 ` Avi Kivity
2011-08-17 19:32 ` Blue Swirl
2011-08-17 19:41 ` Avi Kivity
2011-08-16 16:45 ` [Qemu-devel] [PATCH 03/14] fdc: Convert to isa_register_old_portio_list Richard Henderson
2011-08-16 16:45 ` [Qemu-devel] [PATCH 04/14] gus: " Richard Henderson
2011-08-18 17:02 ` malc
2011-08-16 16:45 ` [Qemu-devel] [PATCH 05/14] m48t59: Convert to isa_register_ioport Richard Henderson
2011-08-16 16:45 ` [Qemu-devel] [PATCH 06/14] rtc: " Richard Henderson
2011-08-16 16:45 ` [Qemu-devel] [PATCH 07/14] ne2000: " Richard Henderson
2011-08-16 16:45 ` [Qemu-devel] [PATCH 08/14] parallel: Convert to isa_register_old_portio_list Richard Henderson
2011-08-16 16:45 ` [Qemu-devel] [PATCH 09/14] sb16: " Richard Henderson
2011-08-16 16:45 ` [Qemu-devel] [PATCH 10/14] vga: " Richard Henderson
2011-08-16 16:45 ` [Qemu-devel] [PATCH 11/14] pc: Convert port92 to isa_register_ioport Richard Henderson
2011-08-17 13:54 ` Avi Kivity
2011-08-16 16:45 ` [Qemu-devel] [PATCH 12/14] vmport: Convert " Richard Henderson
2011-08-16 16:45 ` [Qemu-devel] [PATCH 13/14] ide: Convert to isa_register_old_portio_list Richard Henderson
2011-08-17 14:04 ` Avi Kivity
2011-08-17 14:11 ` Richard Henderson
2011-08-17 14:18 ` Avi Kivity
2011-08-17 14:13 ` Avi Kivity
2011-08-16 16:45 ` [Qemu-devel] [PATCH 14/14] isa: Remove isa_init_ioport_range and isa_init_ioport Richard Henderson
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=4E4BC5FA.1020409@redhat.com \
--to=avi@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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.