On Tue, Sep 29, 2015 at 03:59:28PM +0200, Laszlo Ersek wrote: > On 09/29/15 12:27, Michael S. Tsirkin wrote: > > On Sun, Sep 27, 2015 at 05:28:57PM -0400, Gabriel L. Somlo wrote: > >> 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! > >> > >> Thanks much, > >> --Gabriel > > > > How does /proc/ioports look before and after this patch? > > ... I vaguely remember that /proc/ioports and /proc/iomem tracks only > actual allocations by drivers. So the driver is supposed to get the > resources from ACPI, but until a driver actually allocates the ports (I > fail to recall the exact Linux APIs ATM -- apologies), the registers > might not show up in these pseudo-files.
At least on the i386 side of things, /proc/ioport gets a new line entry for 0510-0511 : QEMU0002:00 simply due to the presence of the ACPI node, and without having loaded any driver. > > OTOH Gabriel is working on a guest kernel driver that would look at ACPI > I think... As I mentioned elsewhere, I'm hoping to be able to use the presence of the fw_cfg node in ACPI (and the base + width data contained in its _CRS) to avoid probing IO ports. I'm not really clear on how that's done, and so far haven't found a similar example in the Linux kernel to use for inspiration, but I'm working on that... BTW, after I load my (rude, ioport probing, non-acpi-using) sysfs fw_cfg driver, I get an additional entry on i386: cat /proc/ioports ... 0510-0511 : QEMU0002:00 0510-0511 : fw_cfg IOport on i386, sun4u <<< after modprobe qemu_fw_cfg ... Thanks, --Gabriel > >>> 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 | 23 +++++++++++++++++++++++ > >> hw/i386/pc.c | 5 ++--- > >> hw/i386/pc_piix.c | 1 + > >> hw/i386/pc_q35.c | 1 + > >> hw/nvram/fw_cfg.c | 8 +++++--- > >> include/hw/i386/pc.h | 3 +++ > >> include/hw/nvram/fw_cfg.h | 3 +++ > >> 9 files changed, 62 insertions(+), 6 deletions(-) > >> > >> -- > >> 2.4.3 >