From: Haozhong Zhang <haozhong.zhang@intel.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Igor Mammedov <imammedo@redhat.com>,
qemu-devel@nongnu.org, xen-devel@lists.xen.org,
Dan Williams <dan.j.williams@intel.com>,
Chao Peng <chao.p.peng@linux.intel.com>,
Eduardo Habkost <ehabkost@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Xiao Guangrong <xiaoguangrong.eric@gmail.com>,
Richard Henderson <rth@twiddle.net>,
Anthony Perard <anthony.perard@citrix.com>,
xen-devel@lists.xenproject.org, ian.jackson@eu.citrix.com,
wei.liu2@citrix.com, george.dunlap@citrix.com, JBeulich@suse.com,
andrew.cooper3@citrix.com
Subject: Re: [Qemu-devel] [RFC QEMU PATCH v3 00/10] Implement vNVDIMM for Xen HVM guest
Date: Fri, 13 Oct 2017 15:53:26 +0800 [thread overview]
Message-ID: <20171013075326.77azyi4j2wo3b2fx@hz-desktop> (raw)
In-Reply-To: <f6478644-0d4a-6531-9016-aee2a0e76417@redhat.com>
On 10/12/17 17:45 +0200, Paolo Bonzini wrote:
> On 12/10/2017 14:45, Haozhong Zhang wrote:
> > Basically, QEMU builds two ROMs for guest, /rom@etc/acpi/tables and
> > /rom@etc/table-loader. The former is unstructured to guest, and
> > contains all data of guest ACPI. The latter is a BIOSLinkerLoader
> > organized as a set of commands, which direct the guest (e.g., SeaBIOS
> > on KVM/QEMU) to relocate data in the former file, recalculate checksum
> > of specified area, and fill guest address in specified ACPI field.
> >
> > One part of my patches is to implement a mechanism to tell Xen which
> > part of ACPI data is a table (NFIT), and which part defines a
> > namespace device and what the device name is. I can add two new loader
> > commands for them respectively.
> >
> > Because they just provide information and SeaBIOS in non-xen
> > environment ignores unrecognized commands, they will not break SeaBIOS
> > in non-xen environment.
> >
> > On QEMU side, most Xen-specific hacks in ACPI builder could be
> > dropped, and replaced by adding the new loader commands (though they
> > may be used only by Xen).
> >
> > On Xen side, a fw_cfg driver and a BIOSLinkerLoader command executor
> > are needed in, perhaps, hvmloader.
>
> If Xen has to parse BIOSLinkerLoader, it can use the existing commands
> to process a reduced set of ACPI tables. In other words,
> etc/acpi/tables would only include the NFIT, the SSDT with namespace
> devices, and the XSDT. etc/acpi/rsdp would include the RSDP table as usual.
>
> hvmloader can then:
>
> 1) allocate some memory for where the XSDT will go
>
> 2) process the BIOSLinkerLoader like SeaBIOS would do
>
> 3) find the RSDP in low memory, since the loader script must have placed
> it there. If it cannot find it, allocate some low memory, fill it with
> the RSDP header and revision, and and jump to step 6
>
> 4) If it found QEMU's RSDP, use it to find QEMU's XSDT
>
> 5) Copy ACPI table pointers from QEMU to hvmloader's RSDT and/or XSDT.
>
> 6) build hvmloader tables and link them into the RSDT and/or XSDT as usual.
>
> 7) overwrite the RSDP in low memory with a pointer to hvmloader's own
> RSDT and/or XSDT, and updated the checksums
>
> QEMU's XSDT remains there somewhere in memory, unused but harmless.
>
It can work for plan tables which do not contain AML.
However, for a namespace device, Xen needs to know its name in order
to detect the potential name conflict with those used in Xen built
ACPI. Xen does not (and is not going to) introduce an AML parser, so
it cannot get those device names from QEMU built ACPI by its own.
The idea of either this patch series or the new BIOSLinkerLoader
command is to let QEMU tell Xen where the definition body of a
namespace device (i.e. that part within the outmost "Device(NAME)") is
and what the device name is. Xen, after the name conflict check, can
re-package the definition body in a namespace device (w/ minimal AML
builder code added in Xen) and then in SSDT.
Haozhong
next prev parent reply other threads:[~2017-10-13 7:53 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20170911043820.14617-1-haozhong.zhang@intel.com>
2017-09-11 4:41 ` [Qemu-devel] [RFC QEMU PATCH v3 00/10] Implement vNVDIMM for Xen HVM guest Haozhong Zhang
2017-09-11 4:41 ` [Qemu-devel] [RFC QEMU PATCH v3 01/10] nvdimm: do not intiailize nvdimm->label_data if label size is zero Haozhong Zhang
2017-09-11 4:41 ` [Qemu-devel] [RFC QEMU PATCH v3 02/10] hw/xen-hvm: create the hotplug memory region on Xen Haozhong Zhang
2017-09-11 4:41 ` [Qemu-devel] [RFC QEMU PATCH v3 03/10] hostmem-xen: add a host memory backend for Xen Haozhong Zhang
2017-09-11 4:41 ` [Qemu-devel] [RFC QEMU PATCH v3 04/10] nvdimm acpi: do not use fw_cfg on Xen Haozhong Zhang
2017-09-11 4:41 ` [Qemu-devel] [RFC QEMU PATCH v3 05/10] hw/xen-hvm: initialize DM ACPI Haozhong Zhang
2017-09-11 4:41 ` [Qemu-devel] [RFC QEMU PATCH v3 06/10] hw/xen-hvm: add function to copy ACPI into guest memory Haozhong Zhang
2017-09-11 4:41 ` [Qemu-devel] [RFC QEMU PATCH v3 07/10] nvdimm acpi: copy NFIT to Xen guest Haozhong Zhang
2017-09-11 4:41 ` [Qemu-devel] [RFC QEMU PATCH v3 08/10] nvdimm acpi: copy ACPI namespace device of vNVDIMM " Haozhong Zhang
2017-09-11 4:41 ` [Qemu-devel] [RFC QEMU PATCH v3 09/10] nvdimm acpi: do not build _FIT method on Xen Haozhong Zhang
2017-09-11 4:41 ` [Qemu-devel] [RFC QEMU PATCH v3 10/10] hw/xen-hvm: enable building DM ACPI if vNVDIMM is enabled Haozhong Zhang
2017-09-11 4:53 ` [Qemu-devel] [RFC QEMU PATCH v3 00/10] Implement vNVDIMM for Xen HVM guest no-reply
2017-09-11 14:08 ` Igor Mammedov
2017-09-11 18:52 ` Stefano Stabellini
2017-09-12 3:15 ` Haozhong Zhang
2017-10-10 16:05 ` Konrad Rzeszutek Wilk
2017-10-12 12:45 ` Haozhong Zhang
2017-10-12 15:45 ` Paolo Bonzini
2017-10-13 7:53 ` Haozhong Zhang [this message]
2017-10-13 8:44 ` Igor Mammedov
2017-10-13 11:13 ` Haozhong Zhang
2017-10-13 12:13 ` Jan Beulich
2017-10-13 22:46 ` Stefano Stabellini
2017-10-15 0:31 ` Michael S. Tsirkin
2017-10-16 14:49 ` [Qemu-devel] [Xen-devel] " Konrad Rzeszutek Wilk
2017-10-17 11:45 ` [Qemu-devel] " Paolo Bonzini
2017-10-17 12:16 ` Haozhong Zhang
2017-10-18 8:32 ` [Qemu-devel] [Xen-devel] " Roger Pau Monné
2017-10-18 8:46 ` Paolo Bonzini
2017-10-18 8:55 ` Roger Pau Monné
2017-10-15 0:35 ` [Qemu-devel] " Michael S. Tsirkin
2017-10-12 17:39 ` Konrad Rzeszutek Wilk
2017-10-13 8:00 ` Haozhong Zhang
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=20171013075326.77azyi4j2wo3b2fx@hz-desktop \
--to=haozhong.zhang@intel.com \
--cc=JBeulich@suse.com \
--cc=andrew.cooper3@citrix.com \
--cc=anthony.perard@citrix.com \
--cc=chao.p.peng@linux.intel.com \
--cc=dan.j.williams@intel.com \
--cc=ehabkost@redhat.com \
--cc=george.dunlap@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=imammedo@redhat.com \
--cc=konrad.wilk@oracle.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=sstabellini@kernel.org \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.org \
--cc=xen-devel@lists.xenproject.org \
--cc=xiaoguangrong.eric@gmail.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).