[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 4/5] Enable fw_cfg DMA interface for ARM
From: |
Laszlo Ersek |
Subject: |
Re: [Qemu-devel] [PATCH v3 4/5] Enable fw_cfg DMA interface for ARM |
Date: |
Mon, 26 Oct 2015 14:38:11 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 |
On 10/26/15 13:49, Gabriel L. Somlo wrote:
> On Mon, Oct 26, 2015 at 10:48:08AM +0000, Stefan Hajnoczi wrote:
>> On Thu, Oct 22, 2015 at 05:22:16PM -0400, Gabriel L. Somlo wrote:
>>> I was re-reading the documentation for fw_cfg_add_file_callback(),
>>> and noticed that non-dma read operations check for the presence
>>> of a callback (and call it if present) for *every* *single* *byte*,
>>> even on 64-bit MMIO reads. That's also what the documentation says
>>> (in docs/specs/fw_cfg.txt, being moved into fw_cfg.h as per
>>> http://lists.nongnu.org/archive/html/qemu-devel/2015-10/msg05315.html).
>>>
>>> During DMA reads, however, the callback is only checked once before
>>> each chunk, effectively once per DMA read operation.
>>>
>>> Now, typical callbacks I found throughout the qemu source tend to return
>>> immediately except for the first time they're invoked, but I wonder if
>>> skipping over all those extra "do I have a callback, if so call it,
>>> mostly so it can return without doing anything" per-byte operations
>>> account in some significant part for the dramatically faster transfers?
>>>
>>> Not sure how I'd test for that -- besides my not having anything
>>> resembling a viable ARM setup, I'm not sure if limiting the callbacks
>>> to only be invoked if (s->cur_offset == 0) would make sense, just as a
>>> test ?
>>
>> I think Marc came to the conclusion that it's safe and therefore made
>> that optimization for DMA.
>>
>> The same can be done for PIO.
>
> OK, so at the risk of over-reaching here, would it make sense to
> rewrite the fw_cfg spec to say "If present, a callback will be
> executed *once* before each time a blob is read" ?
>
> My hypothesis (which I guess I'm volunteering to verify, unless we
> end up rejecting this immediately as a bad idea, for some reason that
> I have missed), is that current functionality wouldn't change, given
> the way existing callbacks work right now, and that we could run the
> callback each time a blob is *selected*, rather than hooking into the
> (dma/mmio/pio) read methods.
Callback executed on first read only sounds okay to me, callback
executed on selection... hm... don't like it. :)
Thanks
Laszlo
>
> Thanks,
> --Gabriel
>
- Re: [Qemu-devel] [PATCH v3 4/5] Enable fw_cfg DMA interface for ARM, Gabriel L. Somlo, 2015/10/22
- Re: [Qemu-devel] [PATCH v3 4/5] Enable fw_cfg DMA interface for ARM, Stefan Hajnoczi, 2015/10/26
- Re: [Qemu-devel] [PATCH v3 4/5] Enable fw_cfg DMA interface for ARM, Gabriel L. Somlo, 2015/10/26
- Re: [Qemu-devel] [PATCH v3 4/5] Enable fw_cfg DMA interface for ARM,
Laszlo Ersek <=
- Re: [Qemu-devel] [PATCH v3 4/5] Enable fw_cfg DMA interface for ARM, Gabriel L. Somlo, 2015/10/26
- Re: [Qemu-devel] [PATCH v3 4/5] Enable fw_cfg DMA interface for ARM, Gerd Hoffmann, 2015/10/27
- Re: [Qemu-devel] [PATCH v3 4/5] Enable fw_cfg DMA interface for ARM, Laszlo Ersek, 2015/10/27
- Re: [Qemu-devel] [PATCH v3 4/5] Enable fw_cfg DMA interface for ARM, Gabriel L. Somlo, 2015/10/27
- Re: [Qemu-devel] [PATCH v3 4/5] Enable fw_cfg DMA interface for ARM, Laszlo Ersek, 2015/10/28