From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:32943) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a0x4V-0002qH-3k for qemu-devel@nongnu.org; Mon, 23 Nov 2015 14:46:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a0x4Q-0007L3-02 for qemu-devel@nongnu.org; Mon, 23 Nov 2015 14:46:42 -0500 Received: from mx1.redhat.com ([209.132.183.28]:57274) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a0x4P-0007Kv-No for qemu-devel@nongnu.org; Mon, 23 Nov 2015 14:46:37 -0500 References: <1447469838-13533-1-git-send-email-somlo@cmu.edu> <20151123193107.GG1980@HEDWIG.INI.CMU.EDU> From: Laszlo Ersek Message-ID: <56536D19.302@redhat.com> Date: Mon, 23 Nov 2015 20:46:33 +0100 MIME-Version: 1.0 In-Reply-To: <20151123193107.GG1980@HEDWIG.INI.CMU.EDU> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v5 0/5] add ACPI node for fw_cfg on pc and arm List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Gabriel L. Somlo" , 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 On 11/23/15 20:31, Gabriel L. Somlo wrote: > Couple of items: >=20 > 1. Ping ? :) >=20 > 2. Thank you markmb for your R-b ! >=20 > 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). >=20 > 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: >=20 > - ARM has 8:2 for control, and 0:8 for data >=20 > - sun4m and ppc/mac both have 0:2 for control, and 2:1 for data >=20 > Right now, neither DeviceTree nor ACPI specify register offsets > within the MMIO or PortIO area they associate with fw_cfg: >=20 > - ACPI has (in _CRS) either: >=20 > IO (Decode16, > 0x0510, // Range Minimum > 0x0510, // Range Maximum > 0x01, // Alignment > 0x02, // Length > ) >=20 > or: >=20 > Memory32Fixed (ReadWrite, > 0x09020000, // Address Base > 0x0000000a, // Address Length > ) >=20 > - DT does something along this lines: >=20 > { > #size-cells =3D <0x2>; > #address-cells =3D <0x2>; >=20 > fw-cfg@9020000 { > compatible =3D "qemu,fw-cfg-mmio"; > reg =3D <0x0 0x9020000 0x0 0xa>; > }; > }; >=20 > 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. >=20 > 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 >=20 > If we are NOT planning to ever do DT or ACPI outside x86 and ARM, > then nevermind I said anything :) >=20 > Thanks much, > --Gabriel=20 >=20 > 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 >=3D 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 hesi= tate! >>> >>>> 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 whe= ther >>>> "QEMU0002" is ok to use as the value of _HID, which I'll hopefully g= et >>>> sorted out with the kernel crew... >>>> >>>>> New since v1: >>>>> >>>>> - expose control register size (suggested by Marc Mar=ED) >>>>> >>>>> - 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 t= he >>>>>> 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, won= dering >>>>>> 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(-) >> >> --=20 >> 2.4.3 >>