qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: "Gabriel L. Somlo" <somlo@cmu.edu>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Andrew Jones <drjones@redhat.com>,
	Matt Fleming <matt.fleming@intel.com>,
	Eduardo Habkost <ehabkost@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	QEMU Developers <qemu-devel@nongnu.org>,
	Leif Lindholm <leif.lindholm@linaro.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Shannon Zhao <zhaoshenglong@huawei.com>,
	Igor Mammedov <imammedo@redhat.com>,
	markmb@redhat.com, kevin@koconnor.net,
	Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH v4 4/5] acpi: arm: add fw_cfg device node to dsdt
Date: Thu, 1 Oct 2015 14:35:45 +0200	[thread overview]
Message-ID: <560D28A1.4040706@redhat.com> (raw)
In-Reply-To: <20151001122242.GJ23832@HEDWIG.INI.CMU.EDU>

On 10/01/15 14:22, Gabriel L. Somlo wrote:
> On Wed, Sep 30, 2015 at 12:21:08PM +0200, Laszlo Ersek wrote:
>> On 09/30/15 11:59, Ard Biesheuvel wrote:
>>> On 29 September 2015 at 20:26, Gabriel L. Somlo <somlo@cmu.edu> wrote:
>>>> On Tue, Sep 29, 2015 at 12:40:16PM +0200, Laszlo Ersek wrote:
>>>>> On 09/27/15 23:29, Gabriel L. Somlo wrote:
>>>>>> Add a fw_cfg device node to the ACPI DSDT. This is mostly
>>>>>> informational, as the authoritative fw_cfg MMIO region(s)
>>>>>> are listed in the Device Tree. However, since we are building
>>>>>> ACPI tables, we might as well be thorough while at it...
>>>>>>
>>>>>> Signed-off-by: Gabriel Somlo <somlo@cmu.edu>
>>>>>> ---
>>>>>>  hw/arm/virt-acpi-build.c | 15 +++++++++++++++
>>>>>>  1 file changed, 15 insertions(+)
>>>>>>
>>>>>> diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
>>>>>> index 1aaff1f..f314132 100644
>>>>>> --- a/hw/arm/virt-acpi-build.c
>>>>>> +++ b/hw/arm/virt-acpi-build.c
>>>>>> @@ -110,6 +110,20 @@ static void acpi_dsdt_add_rtc(Aml *scope, const MemMapEntry *rtc_memmap,
>>>>>>      aml_append(scope, dev);
>>>>>>  }
>>>>>>
>>>>>> +static void acpi_dsdt_add_fw_cfg(Aml *scope, const MemMapEntry *fw_cfg_memmap)
>>>>>> +{
>>>>>> +    Aml *dev = aml_device("FWCF");
>>>>>> +    aml_append(dev, aml_name_decl("_HID", aml_string("QEMU0002")));
>>>>>> +    /* device present, functioning, decoding, not shown in UI */
>>>>>> +    aml_append(dev, aml_name_decl("_STA", aml_int(0xB)));
>>>>>> +
>>>>>> +    Aml *crs = aml_resource_template();
>>>>>> +    aml_append(crs, aml_memory32_fixed(fw_cfg_memmap->base,
>>>>>> +                                       fw_cfg_memmap->size, AML_READ_WRITE));
>>>>>> +    aml_append(dev, aml_name_decl("_CRS", crs));
>>>>>> +    aml_append(scope, dev);
>>>>>> +}
>>>>>> +
>>>>>>  static void acpi_dsdt_add_flash(Aml *scope, const MemMapEntry *flash_memmap)
>>>>>>  {
>>>>>>      Aml *dev, *crs;
>>>>>> @@ -529,6 +543,7 @@ build_dsdt(GArray *table_data, GArray *linker, VirtGuestInfo *guest_info)
>>>>>>                         (irqmap[VIRT_UART] + ARM_SPI_BASE));
>>>>>>      acpi_dsdt_add_rtc(scope, &memmap[VIRT_RTC],
>>>>>>                        (irqmap[VIRT_RTC] + ARM_SPI_BASE));
>>>>>> +    acpi_dsdt_add_fw_cfg(scope, &memmap[VIRT_FW_CFG]);
>>>>>>      acpi_dsdt_add_flash(scope, &memmap[VIRT_FLASH]);
>>>>>>      acpi_dsdt_add_virtio(scope, &memmap[VIRT_MMIO],
>>>>>>                      (irqmap[VIRT_MMIO] + ARM_SPI_BASE), NUM_VIRTIO_TRANSPORTS);
>>>>>>
>>>>>
>>>>> Looks sane to me.
>>>>>
>>>>> Did you test this with an aarch64 Linux guest (acpidump -b; iasl -d; cat
>>>>> /proc/iomem?) I can help with that, if you'd like.
>>>>
>>>> I have a F22 arm setup generated by virt-builder, which I start using:
>>>>
>>>> bin/qemu-system-arm -M virt,accel=tcg -cpu cortex-a15 \
>>>>   -kernel ./ArmVirtBuilder/vmlinuz-4.0.4-301.fc22.armv7hl+lpae \
>>>>   -initrd ./ArmVirtBuilder/initramfs-4.0.4-301.fc22.armv7hl+lpae.img \
>>>>   -append "console=ttyAMA0 root=/dev/vda3 ro" \
>>>>   -device virtio-blk-device,drive=hd0 \
>>>>   -drive id=hd0,if=none,snapshot=on,file=./ArmVirtBuilder/fedora-22.img \
>>>>   -device virtio-net-device,netdev=usernet \
>>>>   -netdev user,id=usernet \
>>>>   -monitor stdio
>>>>
>>>
>>> Note that you are booting 32-bit ARM here, which does not support ACPI nor UEFI.
>>> (UEFI is work in progress, so you can try my ARM 32-bit UEFI tree if
>>> you need to: https://git.linaro.org/people/ard.biesheuvel/linux-arm.git/shortlog/refs/heads/arm-efi-combined-v2)
> 
> I'm noticing that even on 32-bit arm there are ACPI tables generated and
> inserted into fw_cfg, so is there any reason OTHER than lack of firmware
> support for ACPI not being supported on 32-bit arm ?

I think Ard was speaking about the guest kernel (his pointer certainly
looks like a kernel repo). With regard to firmware, edk2's
ArmVirtPkg/ArmVirtQemu.dsc builds just fine for 32-bit ARM guests.

So, it's not a QEMU or guest firmware problem; I think it's a guest
kernel problem.

Your question could be reformulated as "why has ACPI adoption been slow
in the ARM kernel", and my answer is "let's not go there". :)

> 
>>> You will need to create an arm64 / AArch64 setup and boot the virt
>>> model using 'qemu-system-aarch64 -M virt -cpu cortex-a57 ...' instead.
>>> In either case, as Laszlo pointed out, you need UEFI firmware in QEMU
>>> as well.
>>
>> I'm about to follow up with my test results, and I considered writing up
>> a more or less complete guide for Gabriel to test this with an aarch64
>> guest.
>>
>> However: if Gabriel has no access to actual aarch64 hardware (ie. cannot
>> run KVM guests), then I don't think he should bother. Booting just the
>> UEFI firmware on qemu-system-aarch64 with TCG acceleration is fine, but
>> for checking "/proc/iomem", he'd really need to boot into guest Linux,
>> and *that* takes absolutely forever with TCG.
>>
>> (Dependent on your guest distro, of course; I have tested Fedora 21+ and
>> RHELSA / RHEL-7 candidates thus far. I wouldn't recommend TCG for those.)
>>
>> So, I'll just leave these links here for posterity (they could be
>> somewhat outdated), and I offer to help with aarch64 guest testing in
>> the future as well, if the patch series overlaps with my interests.
>>
>> https://wiki.linaro.org/LEG/UEFIforQEMU
>> https://fedoraproject.org/wiki/Architectures/AArch64/Install_with_QEMU
> 
> Thanks to both of you for the pointers, I will probably invest some
> time in getting set up with UEFI firmware for my arm guests at some
> point, when the dust settles on all the other fun :)

Re your other email... If you can convince people in your organization
that hold the strings of purses to buy aarch64 hardware on the org
level, you can buy it right now. It's pricier than the 96Boards EE stuff
is supposed to be, but it's available. Should you feel a burning desire
to test ACPI (or other) work in aarch64 KVM guests. :)

Thanks
Laszlo

> 
> Thanks,
> --Gabriel
> 

  parent reply	other threads:[~2015-10-01 12:41 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-27 21:28 [Qemu-devel] [PATCH v4 0/5] add ACPI node for fw_cfg on pc and arm Gabriel L. Somlo
2015-09-27 21:28 ` [Qemu-devel] [PATCH v4 1/5] fw_cfg: expose control register size in fw_cfg.h Gabriel L. Somlo
2015-09-29 10:10   ` Laszlo Ersek
2015-09-27 21:28 ` [Qemu-devel] [PATCH v4 2/5] pc: fw_cfg: move ioport base constant to pc.h Gabriel L. Somlo
2015-09-29 10:20   ` Laszlo Ersek
2015-09-27 21:29 ` [Qemu-devel] [PATCH v4 3/5] acpi: pc: add fw_cfg device node to ssdt Gabriel L. Somlo
2015-09-29 10:33   ` Laszlo Ersek
2015-09-29 16:46     ` Gabriel L. Somlo
2015-09-29 16:55       ` Laszlo Ersek
2015-09-29 17:19         ` Gabriel L. Somlo
2015-09-29 17:28           ` Laszlo Ersek
2015-09-30  0:18             ` Gabriel L. Somlo
2015-09-30 13:01               ` Paolo Bonzini
2015-09-30 14:16                 ` Gabriel L. Somlo
2015-09-30 14:27                   ` Paolo Bonzini
2015-10-01  7:02   ` Igor Mammedov
2015-10-01  8:27     ` Laszlo Ersek
2015-10-01 11:33       ` Igor Mammedov
2015-10-01 11:52         ` Laszlo Ersek
2015-10-01 13:00           ` Gabriel L. Somlo
2015-10-01 15:59           ` Eric Blake
2015-10-10  4:00         ` Gabriel L. Somlo
2015-10-13 19:10           ` Eduardo Habkost
2015-10-13 21:18             ` Michael S. Tsirkin
2015-10-13 22:43               ` Eduardo Habkost
2015-10-14  5:06                 ` Michael S. Tsirkin
2015-10-14 16:32                   ` Eduardo Habkost
2015-10-14  8:45             ` Igor Mammedov
2015-10-14 16:47               ` Eduardo Habkost
2015-10-15 13:44                 ` Igor Mammedov
2015-09-27 21:29 ` [Qemu-devel] [PATCH v4 4/5] acpi: arm: add fw_cfg device node to dsdt Gabriel L. Somlo
2015-09-29 10:40   ` Laszlo Ersek
2015-09-29 18:26     ` Gabriel L. Somlo
2015-09-29 18:54       ` Laszlo Ersek
2015-09-30  9:59       ` Ard Biesheuvel
2015-09-30 10:21         ` Laszlo Ersek
2015-09-30 11:13           ` Peter Maydell
2015-09-30 12:22             ` Laszlo Ersek
2015-09-30 15:16               ` Gerd Hoffmann
2015-09-30 15:19               ` Peter Maydell
2015-09-30 19:07               ` Gabriel L. Somlo
2015-10-01 12:22           ` Gabriel L. Somlo
2015-10-01 12:25             ` Ard Biesheuvel
2015-10-01 12:35             ` Laszlo Ersek [this message]
2015-10-01 12:39               ` Peter Maydell
2015-10-01 12:50                 ` Laszlo Ersek
2015-09-30 10:28     ` Laszlo Ersek
2015-09-27 21:29 ` [Qemu-devel] [PATCH v4 5/5] fw_cfg: document ACPI device node information Gabriel L. Somlo
2015-09-29 10:43   ` Laszlo Ersek
2015-09-29 10:27 ` [Qemu-devel] [PATCH v4 0/5] add ACPI node for fw_cfg on pc and arm Michael S. Tsirkin
2015-09-29 10:45   ` Laszlo Ersek
2015-09-29 13:59   ` Laszlo Ersek
2015-09-29 14:15     ` Michael S. Tsirkin
2015-09-29 19:04       ` Gabriel L. Somlo
2015-09-29 19:21         ` Laszlo Ersek
2015-09-29 18:40     ` Gabriel L. Somlo
2015-09-29 17:30   ` Gabriel L. Somlo

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=560D28A1.4040706@redhat.com \
    --to=lersek@redhat.com \
    --cc=ard.biesheuvel@linaro.org \
    --cc=drjones@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=kevin@koconnor.net \
    --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 \
    --cc=zhaoshenglong@huawei.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).