qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] Re: [PATCH 4/8] ahci: use qiov instead of dma helpers


From: Alexander Graf
Subject: [Qemu-devel] Re: [PATCH 4/8] ahci: use qiov instead of dma helpers
Date: Tue, 18 Jan 2011 13:45:40 +0100

On 18.01.2011, at 13:35, Kevin Wolf wrote:

> Am 20.12.2010 22:13, schrieb Alexander Graf:
>> The DMA helpers incur additional overhead on data transfers. I'm not
>> sure we need the additional complexity provided by them. So let's just
>> use qiovs directly when running in the fast path (ncq).
>> 
>> Signed-off-by: Alexander Graf <address@hidden>
>> ---
>> hw/ide/ahci.c |  100 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
>> hw/ide/ahci.h |    3 ++
>> 2 files changed, 95 insertions(+), 8 deletions(-)
> 
> I don't feel comfortable with this one, and I think a while ago we
> discussed on IRC why the DMA helpers even exist. If AHCI doesn't need
> them, probably nobody needed them.
> 
> However, I'm inclined to think that AHCI actually _does_ need them in
> corner cases, even though it might not break in all the common cases
> that you have tested. Can you explain why only AHCI doesn't need it or
> is it just "didn't break for me in practice"?
> 

It's the latter.

> Where does the overhead in the DMA helpers come from? Can we optimize
> this code instead of making the device emulation less correct?

Well, dma helpers involve another malloc which is probably the biggest hog. I 
frankly don't see the point in making it correct for the fast path though. I'd 
rather like to have a fast block emulation that works with all OSs than an 
accurate one that emulates something nobody cares about.

Virtio for example doesn't use dma helpers either - they just claim it's not 
defined in the spec. So if virtio-blk gets away with it, it means that all OSs 
should never make use of the additional complexity.


Alex




reply via email to

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