From: Andrew Jones <drjones@redhat.com>
To: Laszlo Ersek <lersek@redhat.com>
Cc: peter.maydell@linaro.org, qemu-devel@nongnu.org, rjones@redhat.com
Subject: Re: [Qemu-devel] [PATCH v4 1/8] fw_cfg: max access size and region size are the same for MMIO data reg
Date: Tue, 16 Dec 2014 14:48:59 +0100 [thread overview]
Message-ID: <20141216134858.GD3283@hawk.usersys.redhat.com> (raw)
In-Reply-To: <1418399932-7658-2-git-send-email-lersek@redhat.com>
On Fri, Dec 12, 2014 at 04:58:45PM +0100, Laszlo Ersek wrote:
> Make it clear that the maximum access size to the MMIO data register
> determines the full size of the memory region.
>
> Currently the max access size is 1. Ensure that if a larger size were used
> in "fw_cfg_data_mem_ops.valid.max_access_size", the memory subsystem would
> split the access to byte-sized accesses internally, in increasing address
> order.
>
> fw_cfg_data_mem_read() and fw_cfg_data_mem_write() don't care about
> "address" or "size"; they just call the sequential fw_cfg_read() and
> fw_cfg_write() functions, correspondingly. Therefore the automatic
> splitting is just right. (The endianness of "fw_cfg_data_mem_ops" is
> native.)
This 'is native' caught my eye. Laszlo's
Documentation/devicetree/bindings/arm/fw-cfg.txt patch states that the
selector register is LE and
"
The data register allows accesses with 8, 16, 32 and 64-bit width. Accesses
larger than a byte are interpreted as arrays, bundled together only for better
performance. The bytes constituting such a word, in increasing address order,
correspond to the bytes that would have been transferred by byte-wide accesses
in chronological order.
"
I chatted with Laszlo to make sure the host-is-BE case was considered.
It looks like there may be an issue there that Laszlo promised to look
into. Laszlo had already noticed that the selector was defined as native
in qemu as well, but should be LE. Now that we support > 1 byte reads
and writes from the data port, then maybe we should look into changing
that as well.
drew
>
> This patch doesn't change behavior.
>
> Signed-off-by: Laszlo Ersek <lersek@redhat.com>
> ---
>
> Notes:
> v4:
> - unchanged
>
> v3:
> - new in v3 [Drew Jones]
>
> hw/nvram/fw_cfg.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
> index c4b78ed..7f6031c 100644
> --- a/hw/nvram/fw_cfg.c
> +++ b/hw/nvram/fw_cfg.c
> @@ -30,9 +30,8 @@
> #include "qemu/error-report.h"
> #include "qemu/config-file.h"
>
> #define FW_CFG_SIZE 2
> -#define FW_CFG_DATA_SIZE 1
> #define TYPE_FW_CFG "fw_cfg"
> #define FW_CFG_NAME "fw_cfg"
> #define FW_CFG_PATH "/machine/" FW_CFG_NAME
> #define FW_CFG(obj) OBJECT_CHECK(FWCfgState, (obj), TYPE_FW_CFG)
> @@ -323,8 +322,9 @@ static const MemoryRegionOps fw_cfg_data_mem_ops = {
> .valid = {
> .min_access_size = 1,
> .max_access_size = 1,
> },
> + .impl.max_access_size = 1,
> };
>
> static const MemoryRegionOps fw_cfg_comb_mem_ops = {
> .read = fw_cfg_comb_read,
> @@ -608,9 +608,10 @@ static void fw_cfg_initfn(Object *obj)
> memory_region_init_io(&s->ctl_iomem, OBJECT(s), &fw_cfg_ctl_mem_ops, s,
> "fwcfg.ctl", FW_CFG_SIZE);
> sysbus_init_mmio(sbd, &s->ctl_iomem);
> memory_region_init_io(&s->data_iomem, OBJECT(s), &fw_cfg_data_mem_ops, s,
> - "fwcfg.data", FW_CFG_DATA_SIZE);
> + "fwcfg.data",
> + fw_cfg_data_mem_ops.valid.max_access_size);
> sysbus_init_mmio(sbd, &s->data_iomem);
> /* In case ctl and data overlap: */
> memory_region_init_io(&s->comb_iomem, OBJECT(s), &fw_cfg_comb_mem_ops, s,
> "fwcfg", FW_CFG_SIZE);
> --
> 1.8.3.1
>
>
next prev parent reply other threads:[~2014-12-16 13:49 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-12 15:58 [Qemu-devel] [PATCH v4 0/8] fw_cfg, bootorder, and UEFI+'-kernel' on arm/virt Laszlo Ersek
2014-12-12 15:58 ` [Qemu-devel] [PATCH v4 1/8] fw_cfg: max access size and region size are the same for MMIO data reg Laszlo Ersek
2014-12-16 13:48 ` Andrew Jones [this message]
2014-12-16 19:00 ` Laszlo Ersek
2014-12-16 19:49 ` Paolo Bonzini
2014-12-16 20:06 ` Laszlo Ersek
2014-12-16 20:17 ` Laszlo Ersek
2014-12-16 21:47 ` Paolo Bonzini
2014-12-17 4:52 ` Laszlo Ersek
2014-12-16 20:40 ` Paolo Bonzini
2014-12-16 21:47 ` Peter Maydell
2014-12-17 5:06 ` Laszlo Ersek
2014-12-17 9:23 ` Paolo Bonzini
2014-12-17 9:31 ` Alexander Graf
2014-12-16 20:41 ` Peter Maydell
2014-12-17 7:13 ` Laszlo Ersek
2014-12-17 8:28 ` Alexander Graf
2014-12-17 8:40 ` Laszlo Ersek
2014-12-12 15:58 ` [Qemu-devel] [PATCH v4 2/8] fw_cfg: generalize overlap check for combining control and data I/O ports Laszlo Ersek
2014-12-12 15:58 ` [Qemu-devel] [PATCH v4 3/8] fw_cfg: introduce the "data_memwidth" property Laszlo Ersek
2014-12-16 12:06 ` Alexander Graf
2014-12-16 12:42 ` Laszlo Ersek
2014-12-16 16:59 ` Laszlo Ersek
2014-12-16 17:10 ` Peter Maydell
2014-12-16 17:20 ` Alexander Graf
2014-12-16 18:52 ` Laszlo Ersek
2014-12-12 15:58 ` [Qemu-devel] [PATCH v4 4/8] fw_cfg: expose the "data_memwidth" prop with fw_cfg_init_data_memwidth() Laszlo Ersek
2014-12-12 15:58 ` [Qemu-devel] [PATCH v4 5/8] arm: add fw_cfg to "virt" board Laszlo Ersek
2014-12-12 15:58 ` [Qemu-devel] [PATCH v4 6/8] hw/loader: split out load_image_gzipped_buffer() Laszlo Ersek
2014-12-12 15:58 ` [Qemu-devel] [PATCH v4 7/8] hw/arm: pass pristine kernel image to guest firmware over fw_cfg Laszlo Ersek
2014-12-16 12:15 ` Alexander Graf
2014-12-16 12:18 ` Peter Maydell
2014-12-16 12:20 ` Alexander Graf
2014-12-16 12:25 ` Peter Maydell
2014-12-16 12:42 ` Richard W.M. Jones
2014-12-16 12:44 ` Laszlo Ersek
2014-12-12 15:58 ` [Qemu-devel] [PATCH v4 8/8] hw/arm/virt: enable passing of EFI-stubbed kernel to guest UEFI firmware Laszlo Ersek
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=20141216134858.GD3283@hawk.usersys.redhat.com \
--to=drjones@redhat.com \
--cc=lersek@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=rjones@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).