qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v4 0/5] add ACPI node for fw_cfg on pc and arm


From: Gabriel L. Somlo
Subject: Re: [Qemu-devel] [PATCH v4 0/5] add ACPI node for fw_cfg on pc and arm
Date: Tue, 29 Sep 2015 14:40:32 -0400
User-agent: Mutt/1.5.23 (2014-03-12)

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
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]