All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: hangaohuai@huawei.com, "Michael S. Tsirkin" <mst@redhat.com>,
	"Alexander Spyridakis" <a.spyridakis@virtualopensystems.com>,
	"Shannon Zhao" <zhaoshenglong@huawei.com>,
	"Claudio Fontana" <claudio.fontana@huawei.com>,
	"QEMU Developers" <qemu-devel@nongnu.org>,
	"Huangpeng (Peter)" <peter.huangpeng@huawei.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Hanjun Guo" <hanjun.guo@linaro.org>,
	"Mark Salter" <msalter@redhat.com>,
	"Igor Mammedov" <imammedo@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Christoffer Dall" <christoffer.dall@linaro.org>,
	"Shannon Zhao" <shannon.zhao@linaro.org>
Subject: Re: [Qemu-devel] [PATCH v4 10/20] hw/arm/virt-acpi-build: Generate RSDT table
Date: Thu, 09 Apr 2015 18:21:55 +0200	[thread overview]
Message-ID: <5526A723.9030207@redhat.com> (raw)
In-Reply-To: <CAFEAcA8wRAf+G__UsoG8nf_pa3g8GeRMORJCwccBSyvbpXjbmQ@mail.gmail.com>

On 04/09/15 18:03, Peter Maydell wrote:
> On 9 April 2015 at 17:00, Laszlo Ersek <lersek@redhat.com> wrote:
>> On 04/09/15 15:59, Peter Maydell wrote:
>>> On 9 April 2015 at 14:51, Igor Mammedov <imammedo@redhat.com> wrote:
>>>> On Thu, 9 Apr 2015 14:27:58 +0100
>>>> Peter Maydell <peter.maydell@linaro.org> wrote:
>>>>
>>>>> On 9 April 2015 at 14:17, Igor Mammedov <imammedo@redhat.com> wrote:
>>>>>> On Thu, 09 Apr 2015 13:50:52 +0100
>>>>>> Alex Bennée <alex.bennee@linaro.org> wrote:
>>>>>>
>>>>>>>
>>>>>>> Shannon Zhao <zhaoshenglong@huawei.com> writes:
>>>>>>>> +    for (i = 0; i < table_offsets->len; ++i) {
>>>>>>>> +        /* rsdt->table_offset_entry to be filled by Guest linker */
>>>>>>>> +        bios_linker_loader_add_pointer(linker,
>>>>>>>> +                                       ACPI_BUILD_TABLE_FILE,
>>>>>>>> +                                       ACPI_BUILD_TABLE_FILE,
>>>>>>>> +                                       table_data, &rsdt->table_offset_entry[i],
>>>>>>>> +                                       sizeof(uint32_t));
>>>>>>>
>>>>>>> Why are these pointers always 32 bit? Can they ever be 64 bit?
>>>>>> Laszlo, can you confirm that UEFI puts APCI tables below 4G address
>>>>>> space?
>>
>> I confirmed that before, in the v2 discussion:
>>
>> http://thread.gmane.org/gmane.comp.emulators.qemu/316670/focus=317560
>>
>> But in fact the RSDT / XSDT that QEMU exports for UEFI doesn't matter.
> 
> If this table is never used, presumably we should just
> not generate it at all, then?

Unfortunately, this is not the case. In order to identify ACPI tables *at all* in UEFI, I need "relocate pointer" commands for pointers that point to those tables. And those pointers must *reside* somewhere, in some blob.

Here's how the "relocate pointer" command is defined in edk2 (OvmfPkg/AcpiPlatformDxe/QemuLoader.h):

//
// QemuLoaderCmdAddPointer: the bytes at
// [PointerOffset..PointerOffset+PointerSize) in the file PointerFile contain a
// relative pointer (an offset) into PointeeFile. Increment the relative
// pointer's value by the base address of where PointeeFile's contents have
// been placed (when QemuLoaderCmdAllocate has been executed for PointeeFile).
//
typedef struct {
  UINT8  PointerFile[QEMU_LOADER_FNAME_SIZE]; // NUL-terminated
  UINT8  PointeeFile[QEMU_LOADER_FNAME_SIZE]; // NUL-terminated
  UINT32 PointerOffset;
  UINT8  PointerSize;                         // one of 1, 2, 4, 8
} QEMU_LOADER_ADD_POINTER;

In the qemu tree, see COMMAND_ADD_POINTER in "hw/acpi/bios-linker-loader.c", for the same. (I rewrote the types and the comments in edk2 from scratch, both for coding style reasons and for clearer documentation.)

... To be clear: the top-level pointers must exist somewhere (in some blob), because that helps edk2 find the tables (in some other blobs). However, the top-level pointers themselves don't need to reside in any ACPI table (RSDT, XSDT); they can just live in an otherwise unreferenced portion of one of the blobs.

But, IMO, implementing that wouldn't be much easier (and it would certainly be uglier) than composing a correct RSDT or XSDT. The latter would also keep the similarity with the x86 SeaBIOS case (where the RSDT is a hard requirement).

Thanks
Laszlo

  reply	other threads:[~2015-04-09 16:22 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-03 10:03 [Qemu-devel] [PATCH v4 00/20] Generate ACPI v5.1 tables and expose it to guest over fw_cfg on ARM Shannon Zhao
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 01/20] hw/i386: Move ACPI header definitions in an arch-independent location Shannon Zhao
2015-04-15  2:26   ` Shannon Zhao
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 02/20] hw/i386/acpi-build: move generic acpi building helpers into dedictated file Shannon Zhao
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 03/20] hw/arm/virt-acpi-build: Basic framework for building ACPI tables on ARM Shannon Zhao
2015-04-08 14:37   ` Alex Bennée
2015-04-09  5:43     ` Shannon Zhao
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 04/20] hw/acpi/aml-build: Add aml_memory32_fixed() term Shannon Zhao
2015-04-08 14:54   ` Alex Bennée
2015-04-08 18:42     ` Michael S. Tsirkin
2015-04-09  9:27       ` Alex Bennée
2015-04-09  5:46     ` Shannon Zhao
2015-04-09 12:42   ` Igor Mammedov
2015-04-10  5:49     ` Shannon Zhao
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 05/20] hw/acpi/aml-build: Add aml_interrupt() term Shannon Zhao
2015-04-08 14:57   ` Alex Bennée
2015-04-09  6:09     ` Shannon Zhao
2015-04-09  9:54       ` Igor Mammedov
2015-04-10  5:50         ` Shannon Zhao
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 06/20] hw/arm/virt-acpi-build: Generation of DSDT table for virt devices Shannon Zhao
2015-04-09  9:51   ` Alex Bennée
2015-04-09 13:03     ` Igor Mammedov
2015-04-10  5:59       ` Shannon Zhao
2015-04-10  7:35         ` Igor Mammedov
2015-04-10  5:57     ` Shannon Zhao
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 07/20] hw/arm/virt-acpi-build: Generate FADT table and update ACPI headers Shannon Zhao
2015-04-08 18:53   ` Michael S. Tsirkin
2015-04-09  2:55     ` Shannon Zhao
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 08/20] hw/arm/virt-acpi-build: Generate MADT table Shannon Zhao
2015-04-09 12:33   ` Alex Bennée
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 09/20] hw/arm/virt-acpi-build: Generate GTDT table Shannon Zhao
2015-04-09 12:42   ` Alex Bennée
2015-04-10  6:01     ` Shannon Zhao
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 10/20] hw/arm/virt-acpi-build: Generate RSDT table Shannon Zhao
2015-04-09 12:50   ` Alex Bennée
2015-04-09 13:17     ` Igor Mammedov
2015-04-09 13:27       ` Peter Maydell
2015-04-09 13:51         ` Igor Mammedov
2015-04-09 13:59           ` Peter Maydell
2015-04-09 14:43             ` Igor Mammedov
2015-04-09 16:00             ` Laszlo Ersek
2015-04-09 16:03               ` Peter Maydell
2015-04-09 16:21                 ` Laszlo Ersek [this message]
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 11/20] hw/arm/virt-acpi-build: Generate RSDP table Shannon Zhao
2015-04-09 14:45   ` Alex Bennée
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 12/20] hw/arm/virt-acpi-build: Add PCIe info and generate MCFG table Shannon Zhao
2015-04-09 15:54   ` Alex Bennée
2015-04-09 16:00     ` Peter Maydell
2015-04-10  6:04       ` Shannon Zhao
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 13/20] hw/acpi/aml-build: Add ToUUID macro Shannon Zhao
2015-04-09 13:22   ` Igor Mammedov
2015-04-10  6:10     ` Shannon Zhao
2015-04-10  7:40       ` Igor Mammedov
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 14/20] hw/acpi/aml-build: Add aml_or() term Shannon Zhao
2015-04-09 13:35   ` Igor Mammedov
2015-04-10  6:15     ` Shannon Zhao
2015-04-10  7:46       ` Igor Mammedov
2015-04-10  8:04         ` Shannon Zhao
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 15/20] hw/acpi/aml-build: Add aml_not() term Shannon Zhao
2015-04-13 15:56   ` Alex Bennée
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 16/20] hw/acpi/aml-build: Add aml_else() term Shannon Zhao
2015-04-13 15:55   ` Alex Bennée
2015-04-14  2:25     ` Shannon Zhao
2015-04-14  5:56     ` Michael S. Tsirkin
2015-04-14  6:38       ` Shannon Zhao
2015-04-14 10:15         ` Igor Mammedov
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 17/20] hw/acpi/aml-build: Add aml_create_dword_field() term Shannon Zhao
2015-04-13 15:55   ` Alex Bennée
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 18/20] hw/acpi/aml-build: Add aml_dword_io() term Shannon Zhao
2015-04-13 15:56   ` Alex Bennée
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 19/20] hw/arm/virt-acpi-build: Add PCIe controller in ACPI DSDT table Shannon Zhao
2015-04-13 15:58   ` Alex Bennée
2015-04-14  1:10     ` Shannon Zhao
2015-04-14  9:30       ` Peter Maydell
2015-04-14  9:55         ` Shannon Zhao
2015-04-14  9:59           ` Michael S. Tsirkin
2015-04-14 10:13             ` Shannon Zhao
2015-04-03 10:03 ` [Qemu-devel] [PATCH v4 20/20] hw/arm/virt: Enable dynamic generation of ACPI v5.1 tables Shannon Zhao
2015-04-06 18:47 ` [Qemu-devel] [PATCH v4 00/20] Generate ACPI v5.1 tables and expose it to guest over fw_cfg on ARM Mark Salter
2015-04-07  2:43   ` Shannon Zhao
2015-04-07  9:19     ` Peter Maydell
2015-04-07  9:32       ` Michael S. Tsirkin
2015-04-07  9:43         ` Peter Maydell
2015-04-07 11:50       ` Shannon Zhao
2015-04-07 12:07     ` Peter Maydell
2015-04-07 12:18       ` Shannon Zhao
2015-04-07 13:35       ` Igor Mammedov
2015-04-08 18:50         ` Michael S. Tsirkin
2015-04-15 10:10 ` Michael S. Tsirkin
2015-04-15 10:51   ` Shannon Zhao

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=5526A723.9030207@redhat.com \
    --to=lersek@redhat.com \
    --cc=a.spyridakis@virtualopensystems.com \
    --cc=alex.bennee@linaro.org \
    --cc=christoffer.dall@linaro.org \
    --cc=claudio.fontana@huawei.com \
    --cc=hangaohuai@huawei.com \
    --cc=hanjun.guo@linaro.org \
    --cc=imammedo@redhat.com \
    --cc=msalter@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.huangpeng@huawei.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=shannon.zhao@linaro.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.