From: Laszlo Ersek <lersek@redhat.com>
To: "Gabriel L. Somlo" <somlo@cmu.edu>, qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, matt.fleming@intel.com,
ehabkost@redhat.com, mst@redhat.com, ard.biesheuvel@linaro.org,
leif.lindholm@linaro.org, kraxel@redhat.com, pbonzini@redhat.com,
imammedo@redhat.com, markmb@redhat.com, rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH v5 0/5] add ACPI node for fw_cfg on pc and arm
Date: Mon, 23 Nov 2015 20:46:33 +0100 [thread overview]
Message-ID: <56536D19.302@redhat.com> (raw)
In-Reply-To: <20151123193107.GG1980@HEDWIG.INI.CMU.EDU>
On 11/23/15 20:31, Gabriel L. Somlo wrote:
> Couple of items:
>
> 1. Ping ? :)
>
> 2. Thank you markmb for your R-b !
>
> 3. If anyone's had a chance to look over the corresponding guest-side
> kernel sysfs driver which utilizes this, you will have noticed I'm
> automatically initializing the driver based on DeviceTree or ACPI
> on ARM and x86, and that there's also the option of passing in
> command line parameters for the other architectures on which fw_cfg
> is available (sun4* and ppc/mac).
>
> The issue I'm wondering about is that, while architectures where
> fw_cfg registers show up as IO ports (x86 and sun4u) have the same
> register_offset:size values (0:2 for control, 1:1 for data), MMIO
> on everything *other* than ARM is different:
>
> - ARM has 8:2 for control, and 0:8 for data
>
> - sun4m and ppc/mac both have 0:2 for control, and 2:1 for data
>
> Right now, neither DeviceTree nor ACPI specify register offsets
> within the MMIO or PortIO area they associate with fw_cfg:
>
> - ACPI has (in _CRS) either:
>
> IO (Decode16,
> 0x0510, // Range Minimum
> 0x0510, // Range Maximum
> 0x01, // Alignment
> 0x02, // Length
> )
>
> or:
>
> Memory32Fixed (ReadWrite,
> 0x09020000, // Address Base
> 0x0000000a, // Address Length
> )
>
> - DT does something along this lines:
>
> {
> #size-cells = <0x2>;
> #address-cells = <0x2>;
>
> fw-cfg@9020000 {
> compatible = "qemu,fw-cfg-mmio";
> reg = <0x0 0x9020000 0x0 0xa>;
> };
> };
>
> So in the guest-side kernel sysfs driver initialization routine,
> I need to assume x86 (and, respectively, ARM) register offset:size
> values unless explicitly provided on the command line.
>
> Are we likely to EVER try to supply defaults via DT (or ACPI) for
> any other architectures besides ARM and x86 ? If so, is there a way
> to additionally provide offsets (and sizes), besides just the
> overall range ?
I guess this is where the bindings docs would provide the specification...
Laszlo
>
> If we are NOT planning to ever do DT or ACPI outside x86 and ARM,
> then nevermind I said anything :)
>
> Thanks much,
> --Gabriel
>
> On Fri, Nov 13, 2015 at 09:57:13PM -0500, Gabriel L. Somlo wrote:
>> New since v4:
>>
>> - rebased on top of Marc's DMA series
>> - drop machine compat dependency for insertion into x86/ssdt
>> (patch 3/5), following agreement between Igor and Eduardo
>> - [mm]io register range now covers DMA register as well, if
>> available.
>> - s/bios/firmware in doc file updates
>>
>> Thanks,
>> --Gabriel
>>
>>> New since v3:
>>>
>>> - rebased to work on top of 87e896ab (introducing pc-*-25 classes),
>>> inserting fw_cfg acpi node only for machines >= 2.5.
>>>
>>> - reintroduce _STA with value 0x0B (bit 2 for u/i visibility turned
>>> off to avoid Windows complaining -- thanks Igor for catching that!)
>>>
>>> If there's any other feedback besides questions regarding the
>>> appropriateness of "QEMU0002" as the value of _HID, please don't hesitate!
>>>
>>>> New since v2:
>>>>
>>>> - pc/i386 node in ssdt only on machine types *newer* than 2.4
>>>> (as suggested by Eduardo)
>>>>
>>>> I appreciate any further comments and reviews. Hopefully we can make
>>>> this palatable for upstream, modulo the lingering concerns about whether
>>>> "QEMU0002" is ok to use as the value of _HID, which I'll hopefully get
>>>> sorted out with the kernel crew...
>>>>
>>>>> New since v1:
>>>>>
>>>>> - expose control register size (suggested by Marc Marí)
>>>>>
>>>>> - leaving out _UID and _STA fields (thanks Shannon & Igor)
>>>>>
>>>>> - using "QEMU0002" as the value of _HID (thanks Michael)
>>>>>
>>>>> - added documentation blurb to docs/specs/fw_cfg.txt
>>>>> (mainly to record usage of the "QEMU0002" string with fw_cfg).
>>>>>
>>>>>> This series adds a fw_cfg device node to the SSDT (on pc), or to the
>>>>>> DSDT (on arm).
>>>>>>
>>>>>> - Patch 1/3 moves (and renames) the BIOS_CFG_IOPORT (0x510)
>>>>>> define from pc.c to pc.h, so that it could be used from
>>>>>> acpi-build.c in patch 2/3.
>>>>>>
>>>>>> - Patch 2/3 adds a fw_cfg node to the pc SSDT.
>>>>>>
>>>>>> - Patch 3/3 adds a fw_cfg node to the arm DSDT.
>>>>>>
>>>>>> I made up some names - "FWCF" for the node name, and "FWCF0001"
>>>>>> for _HID; no idea whether that's appropriate, or how else I should
>>>>>> figure out what to use instead...
>>>>>>
>>>>>> Also, using scope "\\_SB", based on where fw_cfg shows up in the
>>>>>> output of "info qtree". Again, if that's wrong, please point me in
>>>>>> the right direction.
>>>>>>
>>>>>> Re. 3/3 (also mentioned after the commit blurb in the patch itself),
>>>>>> I noticed none of the other DSDT entries contain a _STA field, wondering
>>>>>> why it would (not) make sense to include that, same as on the PC.
>> Gabriel L. Somlo (5):
>> fw_cfg: expose control register size in fw_cfg.h
>> pc: fw_cfg: move ioport base constant to pc.h
>> acpi: pc: add fw_cfg device node to ssdt
>> acpi: arm: add fw_cfg device node to dsdt
>> fw_cfg: document ACPI device node information
>>
>> docs/specs/fw_cfg.txt | 9 +++++++++
>> hw/arm/virt-acpi-build.c | 15 +++++++++++++++
>> hw/i386/acpi-build.c | 29 +++++++++++++++++++++++++++++
>> hw/i386/pc.c | 5 ++---
>> hw/nvram/fw_cfg.c | 4 +++-
>> include/hw/i386/pc.h | 2 ++
>> include/hw/nvram/fw_cfg.h | 3 +++
>> 7 files changed, 63 insertions(+), 4 deletions(-)
>>
>> --
>> 2.4.3
>>
next prev parent reply other threads:[~2015-11-23 19:46 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-14 2:57 [Qemu-devel] [PATCH v5 0/5] add ACPI node for fw_cfg on pc and arm Gabriel L. Somlo
2015-11-14 2:57 ` [Qemu-devel] [PATCH v5 1/5] fw_cfg: expose control register size in fw_cfg.h Gabriel L. Somlo
2015-11-14 2:57 ` [Qemu-devel] [PATCH v5 2/5] pc: fw_cfg: move ioport base constant to pc.h Gabriel L. Somlo
2015-11-14 2:57 ` [Qemu-devel] [PATCH v5 3/5] acpi: pc: add fw_cfg device node to ssdt Gabriel L. Somlo
2015-11-14 2:57 ` [Qemu-devel] [PATCH v5 4/5] acpi: arm: add fw_cfg device node to dsdt Gabriel L. Somlo
2015-11-14 2:57 ` [Qemu-devel] [PATCH v5 5/5] fw_cfg: document ACPI device node information Gabriel L. Somlo
2015-11-14 12:49 ` [Qemu-devel] [PATCH v5 0/5] add ACPI node for fw_cfg on pc and arm Marc Marí
2015-11-23 19:31 ` Gabriel L. Somlo
2015-11-23 19:46 ` Laszlo Ersek [this message]
2015-11-23 20:28 ` Gabriel L. Somlo
2015-11-23 20:45 ` 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=56536D19.302@redhat.com \
--to=lersek@redhat.com \
--cc=ard.biesheuvel@linaro.org \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=kraxel@redhat.com \
--cc=leif.lindholm@linaro.org \
--cc=markmb@redhat.com \
--cc=matt.fleming@intel.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=somlo@cmu.edu \
/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).