From: Anthony Liguori <anthony@codemonkey.ws>
To: Avi Kivity <avi@redhat.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 2/3] Add PCI memory region registration
Date: Sun, 31 May 2009 08:52:14 -0500 [thread overview]
Message-ID: <4A228B8E.4090304@codemonkey.ws> (raw)
In-Reply-To: <4A226E48.1050006@redhat.com>
Avi Kivity wrote:
>
> I wanted to make it an io_region as well, but pci_register_io_region()
> is taken. We could rename it to pci_register_bar(), but that will
> cause too much churn IMO.
bar is okay by me.
>> It overloads the term physical memory and still requires separate
>> APIs for IO regions and MEM regions. I know you mentioned that
>> ram_addr_t could be overloaded to also support IO regions but IMHO
>> that's rather confusing. If the new code looked like:
>>
>> s->rtl8139_mmio_io_addr =
>> cpu_register_io_memory(0, rtl8139_mmio_read, rtl8139_mmio_write, s);
>>
>> s->rtl8139_io_io_addr =
>> cpu_register_io_memory(0, rtl8139_ioport_read,
>> rtl8139_ioport_write, s);
>>
>> pci_register_io_region(&d->dev, 0, 0x100,
>> PCI_ADDRESS_SPACE_IO, s->rtl8139_io_io_addr);
>>
>> pci_register_io_region(&d->dev, 1, 0x100,
>> PCI_ADDRESS_SPACE_MEM, s->rtl8139_mmio_addr);
>>
>> I think it would be more understandable. However, I think that the
>> normal case is exactly this work flow so I think it makes sense to
>> collapse it into two function calls. So it could look like:
>>
>> pci_register_io_region(&d->dev, 0, 0x100,
>> PCI_ADDRESS_SPACE_IO, rtl8139_ioport_read,
>> rtl8139_ioport_write, s);
>>
>> pci_register_io_region(&d->dev, 1, 0x100,
>> PCI_ADDRESS_SPACE_MEM, rtl8139_mmio_read,
>> rtl8139_mmio_write, s);
>
> That neglects the case of direct mapping. We could add it as a helper
> though (which would also need to unregister the ram_addr when the
> io_region is unregistered).
I was thinking that the first API (which is very similar to your
original API) would be the implementation with the second API being
helpers that everyone actually used.
>> You could still have a two step process for where it's absolutely
>> required (like VGA optimization).
>>
>> I think it's worth looking at changing the signatures of the mem
>> read/write functions. Introducing a size parameter would greatly
>> simplify adding 64-bit IO support, for instance.
>
> Well, let's separate those unrelated changes, otherwise nothing will
> get done.
As long as we agree on the final API, we can take incremental steps there.
>> I would argue that ram_addr_t is the wrong thing to overload for PIO
>> but as long as it's not exposed in the common API, it doesn't matter
>> that much to me.
>
> Currently ram_addr_t is really a 64-bit encoding for a QEMUIORegion
> object, plus support for address arithmetic. IMO we should drop it
> and move towards explicit object representation, and drop the page
> descriptor array.
>
> One of the things that prevents this is that the page descriptor array
> is the only place holding the physical -> ioregion mapping. Once we
> move this information to other objects, we can start on that. Hence
> this patchset.
So let's pick a better name then physical_memory and I think we've got a
good starting point.
Regards,
Anthony Liguori
next prev parent reply other threads:[~2009-05-31 13:52 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-24 9:29 [Qemu-devel] [PATCH 0/3] Object-based physical memory management Avi Kivity
2009-05-24 9:29 ` [Qemu-devel] [PATCH 1/3] Add PhysicalMemoryRegion type Avi Kivity
2009-05-27 14:16 ` Christoph Hellwig
2009-05-27 15:07 ` Avi Kivity
2009-05-24 9:29 ` [Qemu-devel] [PATCH 2/3] Add PCI memory region registration Avi Kivity
2009-05-27 14:08 ` Anthony Liguori
2009-05-27 15:02 ` Avi Kivity
2009-05-27 15:11 ` Anthony Liguori
2009-05-27 15:24 ` Avi Kivity
2009-05-27 22:33 ` Anthony Liguori
2009-05-31 11:02 ` Christoph Hellwig
2009-05-31 11:50 ` Avi Kivity
2009-05-31 11:47 ` Avi Kivity
2009-05-31 13:52 ` Anthony Liguori [this message]
2009-05-31 13:03 ` Avi Kivity
2009-05-24 9:29 ` [Qemu-devel] [PATCH 3/3] Convert RTL8139 to use PCI memory regitration facility Avi Kivity
2009-05-27 14:08 ` [Qemu-devel] [PATCH 0/3] Object-based physical memory management Anthony Liguori
2009-05-27 14:54 ` Avi Kivity
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=4A228B8E.4090304@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=aliguori@us.ibm.com \
--cc=avi@redhat.com \
--cc=qemu-devel@nongnu.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).