qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC] Memory API


From: Anthony Liguori
Subject: Re: [Qemu-devel] [RFC] Memory API
Date: Thu, 19 May 2011 13:33:39 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110424 Lightning/1.0b2 Thunderbird/3.1.10

On 05/19/2011 01:28 PM, Gleb Natapov wrote:
On Thu, May 19, 2011 at 01:03:01PM -0500, Anthony Liguori wrote:
On 05/19/2011 12:39 PM, Gleb Natapov wrote:
With the exception of the few regions that the chipset treats
specially, RAM accesses don't get a chance to be intercepted by the
PCI bus.

More
interesting is what happens when guest reprogram PCI BAR to other address
- the RAM that was at the previous address just disappears. Obviously
   this is crazy behaviour, but the question is how do we want to handle

The CPU should continue to access RAM at this address.
I think it should continue using it even when PCI BAR is still mapped to the
RAM address.

Agreed. Minus PAM and SMM, RAM is always RAM. When a CPU accesses it, it's always the same.

This is not the case for device accesses to RAM but this is probably a separate topic.

                                                         It's unclear
to me what the right behavior is for device-to-device I/O but I'm
pretty certain it doesn't matter.

For PC may be. But IIRC this thread already had request to support
different memory view from different devices.

All platforms have in common the fact that I/O is dispatched in a hierarchical fashion. The reason is quite simple--physics only allow so many point-to-point connections between components. So I/O access is always going to fan out. The components closer to the source of the I/O access are always able to overrule the lower components.

Regards,

Anthony Liguori

it? One option is to disallow such overlapping registration, another is
to restore RAM mapping after PCI BAR is reprogrammed. If we chose second
one the PCI will not know that _overlap() should be called.

Another example may be APIC region and PCI. They overlap, but neither
CPU nor PCI knows about it.

And APIC always wins when accesses are coming from the CPU.

Of course, my question is how proposed API handles this.




--
                        Gleb.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]