All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: "Stefan Hajnoczi" <stefanha@gmail.com>, "Marc Marí" <markmb@redhat.com>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
	Drew <drjones@redhat.com>, "Kevin O'Connor" <kevin@koconnor.net>,
	Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [PATCH] QEMU fw_cfg DMA interface documentation
Date: Thu, 6 Aug 2015 14:22:44 +0200	[thread overview]
Message-ID: <55C35194.60308@redhat.com> (raw)
In-Reply-To: <CAJSP0QULqrSNAtEDXZ5dMVvp+LqLkYdcAq9rqJqTVzedvfC5tQ@mail.gmail.com>

On 08/06/15 14:12, Stefan Hajnoczi wrote:
> On Thu, Aug 6, 2015 at 12:03 PM, Marc Marí <markmb@redhat.com> wrote:
>> Add fw_cfg DMA interface specfication in the fw_cfg documentation.
>>
>> Signed-off-by: Marc Marí <markmb@redhat.com>
>> ---
>>  Documentation/devicetree/bindings/arm/fw-cfg.txt | 36 ++++++++++++++++++++++++
>>  1 file changed, 36 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/arm/fw-cfg.txt b/Documentation/devicetree/bindings/arm/fw-cfg.txt
>> index 953fb64..c880eec 100644
>> --- a/Documentation/devicetree/bindings/arm/fw-cfg.txt
>> +++ b/Documentation/devicetree/bindings/arm/fw-cfg.txt
>> @@ -49,6 +49,41 @@ The guest kernel is not expected to use these registers (although it is
> 
> Please update the "=== Revision (Key 0x0001, FW_CFG_ID) ===" section
> to say that currently the revision is 2.

Sorry I haven't started reading the series yet, but this caught my eye
-- can we agree that this field should be a bitmap instead, and not a
counter-like value? I don't insist of course, because for the current
use case both approaches will work. But, for "future proofing", I think
it is useful to express features independently of each other. (See eg.
virtio feature flags.)

Just an idea.

Thanks
Laszlo

> 
>>  certainly allowed to); the device tree bindings are documented here because
>>  this is where device tree bindings reside in general.
>>
>> +Starting from revision 2, a DMA interface has also been added. This can be used
>> +through a write-only, 64-bit wide address register.
>> +
>> +In this register, a pointer to a FWCfgDmaAccess structure can be written, in
> 
> s/pointer/physical RAM address/ is clearer
> 
>> +big endian mode. This is the format of the FWCfgDmaAccess structure:
> 
> Please be explicit about the *order* of 32-bit writes to the 64-bit
> DMA register.
> 
> Big-endian only defines the layout of bits but it doesn't say in which
> order the two 32-bit sub-registers need to be written.
> 
>> +typedef struct FWCfgDmaAccess {
>> +    uint64_t address;
>> +    uint32_t length;
>> +    uint32_t control;
>> +} FWCfgDmaAccess;
>> +
>> +Once the address to this structure has been written, an DMA operation is
>> +started. If the "control" field has value 2, a read operation will be performed.
>> +"length" bytes for the current selector and offset will be mapped into the
>> +address specified by the "address" field.
> 
> "mapped" might be confusing.  "Copied" or "DMAed" is clearer.
> 
>> +If the field "address" has value 0, the read is considered a skip, and
>> +the data is not copied anywhere, but the offset is still incremented.
>> +
>> +To check result, read the control register:
> 
> FWCfgDmaAccess.control is not a register, it's a field.
> 
> s/register/field/
> 
>> +   error bit set     ->  something went wrong.
> 
> Which bit number is the error bit?
> 
>> +   all bits cleared  ->  transfer finished successfully.
>> +   otherwise         ->  transfer still in progress (doesn't happen
>> +                         today due to implementation not being async,
>> +                         but may in the future).
>> +
>> +Target address goes up and transfer length goes down as the transfer
>> +happens, so after a successful transfer the length register is zero
>> +and the address register points right after the memory block written.
> 
> s/register/field/
> 


  reply	other threads:[~2015-08-06 12:22 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-06 11:00 QEMU fw_cfg DMA interface Marc Marí
2015-08-06 11:00 ` [Qemu-devel] " Marc Marí
2015-08-06 11:01 ` [Qemu-devel] [PATCH 0/5] " Marc Marí
2015-08-06 11:01   ` [Qemu-devel] [PATCH 1/5] fw_cfg: document fw_cfg_modify_iXX() update functions Marc Marí
2015-08-06 11:01   ` [Qemu-devel] [PATCH 2/5] fw_cfg DMA interface documentation Marc Marí
2015-08-06 14:20     ` Kevin O'Connor
2015-08-07  8:12       ` Marc Marí
2015-08-06 11:01   ` [Qemu-devel] [PATCH 3/5] Implement fw_cfg DMA interface Marc Marí
2015-08-06 14:47     ` Kevin O'Connor
2015-08-06 14:59       ` Marc Marí
2015-08-07 20:40         ` Kevin O'Connor
2015-08-07 22:58           ` Laszlo Ersek
2015-08-06 20:49     ` Laszlo Ersek
2015-08-06 21:11       ` Marc Marí
2015-08-06 21:32         ` Laszlo Ersek
2015-08-07  7:26           ` Marc Marí
2015-08-07 12:14           ` Eric Blake
2015-08-06 11:01   ` [Qemu-devel] [PATCH 4/5] Enable fw_cfg DMA interface for ARM Marc Marí
2015-08-06 11:01   ` [Qemu-devel] [PATCH 5/5] Enable fw_cfg DMA interface for x86 Marc Marí
2015-08-06 11:03 ` [PATCH] QEMU fw_cfg DMA interface documentation Marc Marí
2015-08-06 12:12   ` Stefan Hajnoczi
2015-08-06 12:22     ` Laszlo Ersek [this message]
2015-08-06 12:29       ` Stefan Hajnoczi
2015-08-06 14:08   ` Andrew Jones
2015-08-06 14:19     ` Marc Marí
2015-08-06 14:28       ` Andrew Jones
2015-08-06 14:55         ` Laszlo Ersek
2015-08-06 15:13           ` Marc Marí
2015-08-06 21:08   ` Laszlo Ersek
2015-08-06 12:27 ` QEMU fw_cfg DMA interface Stefan Hajnoczi
2015-08-06 12:27   ` [Qemu-devel] " Stefan Hajnoczi
2015-08-06 12:37   ` Marc Marí
2015-08-06 12:37     ` [Qemu-devel] " Marc Marí
2015-08-06 12:40     ` Stefan Hajnoczi
2015-08-06 12:40       ` [Qemu-devel] " Stefan Hajnoczi
2015-08-06 15:30     ` Kevin O'Connor
2015-08-06 15:30       ` [Qemu-devel] " Kevin O'Connor
2015-08-06 15:53       ` Marc Marí
2015-08-06 15:53         ` [Qemu-devel] " Marc Marí
2015-08-07  4:30         ` Kevin O'Connor
2015-08-17 22:08           ` Gerd Hoffmann

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=55C35194.60308@redhat.com \
    --to=lersek@redhat.com \
    --cc=drjones@redhat.com \
    --cc=kevin@koconnor.net \
    --cc=kraxel@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=markmb@redhat.com \
    --cc=stefanha@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.