On Thu, 9 Apr 2015 14:27:58 +0100 Peter Maydell <peter.mayd...@linaro.org> wrote:
> On 9 April 2015 at 14:17, Igor Mammedov <imamm...@redhat.com> wrote: > > On Thu, 09 Apr 2015 13:50:52 +0100 > > Alex Bennée <alex.ben...@linaro.org> wrote: > > > >> > >> Shannon Zhao <zhaoshengl...@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? > > In the general case you can't guarantee that there will > be any RAM at all below the 4G point. (The virt board > isn't like that, obviously, but I believe there's real > hardware out there that's designed that way.) I don't > think we should have any 32 bit assumptions in the > code at all -- pointer values should always be 64 bits > everywhere. then that forces us to use xsdt instead of 32-bit rsdt > -- PMM >