|
From: | Avi Kivity |
Subject: | Re: [Qemu-devel] [RFC] Memory API |
Date: | Thu, 19 May 2011 16:39:50 +0300 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc14 Lightning/1.0b3pre Thunderbird/3.1.10 |
On 05/19/2011 04:35 PM, Anthony Liguori wrote:
On 05/19/2011 08:26 AM, Avi Kivity wrote:On 05/19/2011 04:23 PM, Anthony Liguori wrote:Actually, things are a bit more complicated: This layer has to properlyadopt the coalescing properties of underlying regions or we causeperformance regressions to VGA emulation. That means it has to register dispatching slots of the corresponding size and set the coalescing flagaccordingly. And it likely need to adjust them as the regions below change.As I mentioned in another thread, I don't think we want to "design" coalescing into the API. Coalescing is something that breaks through abstractions layers and is really just a hack.It's impossible not to design it into the API. The layer which wants todo coalescing (the device) has no idea if and where its memory is mapped.There's two places coalescing currently matters: VGA and PCI devices. Since VGA is just a special PCI device, let's just focus on PCI devices.The PCI bus knows exactly where the memory is mapped.
The PCI bus doesn't know about coalescing. Only the device does. Look at e1000 for an example. Cirrus also enables/disables coalescing dynamically.
Yes, if you have complex IOMMU hierarchies it doesn't, but this is my point. We don't need to design coalesced IO to support these sort of complex hierarchies.
Are we aiming at our own feet again? Look at the API, it adds three functions that non-users need not care about. -- error compiling committee.c: too many arguments to function
[Prev in Thread] | Current Thread | [Next in Thread] |