From: Laszlo Ersek <lersek@redhat.com>
To: "Kevin O'Connor" <kevin@koconnor.net>, "Marc Marí" <markmb@redhat.com>
Cc: Stefan Hajnoczi <stefanha@gmail.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCHv2] fw_cfg: Define a static signature to be returned on DMA port reads
Date: Tue, 6 Oct 2015 17:04:01 +0200 [thread overview]
Message-ID: <5613E2E1.70002@redhat.com> (raw)
In-Reply-To: <20151006142925.GB6361@morn.lan>
On 10/06/15 16:29, Kevin O'Connor wrote:
> On Tue, Oct 06, 2015 at 09:30:18AM +0200, Laszlo Ersek wrote:
>> On 10/06/15 01:51, Kevin O'Connor wrote:
>>> Return a static signature ("QEMU CFG") if the guest does a read to the
>>> DMA address io register.
>>>
>>> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
>>> ---
>>>
>>> Marc, if you decide to respin your fw_cfg series, I've updated the dma
>>> signature patch. This addresses the comments from Stefan, and I hope
>>> it addresses the comments from Laszlo.
>>
>> Thank you -- I didn't know about extract64().
>>
>> The patch looks good to me, but I think the QEMU coding style requries
>> /* ... */ comments, and forbids //.
>
> I always forget about that one. Marc, if you do respin the series I
> updated the patch below.
>
> -Kevin
>
>
> commit 02a449ece95da00fa64a9c704555c6afa8e03579
> Author: Kevin O'Connor <kevin@koconnor.net>
> Date: Thu Oct 1 14:16:59 2015 +0200
>
> fw_cfg: Define a static signature to be returned on DMA port reads
>
> Return a static signature ("QEMU CFG") if the guest does a read to the
> DMA address io register.
>
> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
>
> diff --git a/docs/specs/fw_cfg.txt b/docs/specs/fw_cfg.txt
> index 2d6b2da..cbdce7d 100644
> --- a/docs/specs/fw_cfg.txt
> +++ b/docs/specs/fw_cfg.txt
> @@ -93,6 +93,9 @@ by selecting the "signature" item using key 0x0000 (FW_CFG_SIGNATURE),
> and reading four bytes from the data register. If the fw_cfg device is
> present, the four bytes read will contain the characters "QEMU".
>
> +If the DMA interface is available, then reading the DMA Address
> +Register returns 0x51454d5520434647 ("QEMU CFG" in big-endian format).
> +
> === Revision / feature bitmap (Key 0x0001, FW_CFG_ID) ===
>
> A 32-bit little-endian unsigned int, this item is used to check for enabled
> diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
> index 59933b3..5098bfc 100644
> --- a/hw/nvram/fw_cfg.c
> +++ b/hw/nvram/fw_cfg.c
> @@ -53,6 +53,8 @@
> #define FW_CFG_DMA_CTL_SKIP 0x04
> #define FW_CFG_DMA_CTL_SELECT 0x08
>
> +#define FW_CFG_DMA_SIGNATURE 0x51454d5520434647 /* "QEMU CFG" */
> +
> typedef struct FWCfgEntry {
> uint32_t len;
> uint8_t *data;
> @@ -393,6 +395,13 @@ static void fw_cfg_dma_transfer(FWCfgState *s)
> trace_fw_cfg_read(s, 0);
> }
>
> +static uint64_t fw_cfg_dma_mem_read(void *opaque, hwaddr addr,
> + unsigned size)
> +{
> + /* Return a signature value (and handle various read sizes) */
> + return extract64(FW_CFG_DMA_SIGNATURE, (8 - addr - size) * 8, size * 8);
> +}
> +
> static void fw_cfg_dma_mem_write(void *opaque, hwaddr addr,
> uint64_t value, unsigned size)
> {
> @@ -416,8 +425,8 @@ static void fw_cfg_dma_mem_write(void *opaque, hwaddr addr,
> static bool fw_cfg_dma_mem_valid(void *opaque, hwaddr addr,
> unsigned size, bool is_write)
> {
> - return is_write && ((size == 4 && (addr == 0 || addr == 4)) ||
> - (size == 8 && addr == 0));
> + return !is_write || ((size == 4 && (addr == 0 || addr == 4)) ||
> + (size == 8 && addr == 0));
> }
>
> static bool fw_cfg_data_mem_valid(void *opaque, hwaddr addr,
> @@ -488,6 +497,7 @@ static const MemoryRegionOps fw_cfg_comb_mem_ops = {
> };
>
> static const MemoryRegionOps fw_cfg_dma_mem_ops = {
> + .read = fw_cfg_dma_mem_read,
> .write = fw_cfg_dma_mem_write,
> .endianness = DEVICE_BIG_ENDIAN,
> .valid.accepts = fw_cfg_dma_mem_valid,
>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Thanks!
Laszlo
next prev parent reply other threads:[~2015-10-06 15:04 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-05 23:51 [Qemu-devel] [PATCHv2] fw_cfg: Define a static signature to be returned on DMA port reads Kevin O'Connor
2015-10-06 7:30 ` Laszlo Ersek
2015-10-06 14:29 ` Kevin O'Connor
2015-10-06 15:04 ` Laszlo Ersek [this message]
2015-10-08 9:55 ` Marc Marí
2015-10-06 8:04 ` Stefan Hajnoczi
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=5613E2E1.70002@redhat.com \
--to=lersek@redhat.com \
--cc=kevin@koconnor.net \
--cc=markmb@redhat.com \
--cc=qemu-devel@nongnu.org \
--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.