From: Xiao Guangrong <guangrong.xiao@gmail.com>
To: Haozhong Zhang <haozhong.zhang@intel.com>, qemu-devel@nongnu.org
Cc: dan.j.williams@intel.com, "Michael S. Tsirkin" <mst@redhat.com>,
Igor Mammedov <imammedo@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <rth@twiddle.net>,
Eduardo Habkost <ehabkost@redhat.com>
Subject: Re: [Qemu-devel] [RFC PATCH 0/4] nvdimm: enable flush hint address structure
Date: Thu, 6 Apr 2017 17:39:37 +0800 [thread overview]
Message-ID: <2f298f0a-cf07-d131-90c2-bef89537d981@gmail.com> (raw)
In-Reply-To: <20170331084147.32716-1-haozhong.zhang@intel.com>
On 31/03/2017 4:41 PM, Haozhong Zhang wrote:
> This patch series constructs the flush hint address structures for
> nvdimm devices in QEMU.
>
> It's of course not for 2.9. I send it out early in order to get
> comments on one point I'm uncertain (see the detailed explanation
> below). Thanks for any comments in advance!
>
>
> Background
> ---------------
> Flush hint address structure is a substructure of NFIT and specifies
> one or more addresses, namely Flush Hint Addresses. Software can write
> to any one of these flush hint addresses to cause any preceding writes
> to the NVDIMM region to be flushed out of the intervening platform
> buffers to the targeted NVDIMM. More details can be found in ACPI Spec
> 6.1, Section 5.2.25.8 "Flush Hint Address Structure".
>
>
> Why is it RFC?
> ---------------
> RFC is added because I'm not sure whether the way in this patch series
> that allocates the guest flush hint addresses is right.
>
> QEMU needs to trap guest accesses (at least for writes) to the flush
> hint addresses in order to perform the necessary flush on the host
> back store. Therefore, QEMU needs to create IO memory regions that
> cover those flush hint addresses. In order to create those IO memory
> regions, QEMU needs to know the flush hint addresses or their offsets
> to other known memory regions in advance. So far looks good.
>
> Flush hint addresses are in the guest address space. Looking at how
> the current NVDIMM ACPI in QEMU allocates the DSM buffer, it's natural
> to take the same way for flush hint addresses, i.e. let the guest
> firmware allocate from free addresses and patch them in the flush hint
> address structure. (*Please correct me If my following understand is wrong*)
> However, the current allocation and pointer patching are transparent
> to QEMU, so QEMU will be unaware of the flush hint addresses, and
> consequently have no way to create corresponding IO memory regions in
> order to trap guest accesses.
Er, it is awkward and flush-hint-table is static which may not be
easily patched.
>
> Alternatively, this patch series moves the allocation of flush hint
> addresses to QEMU:
>
> 1. (Patch 1) We reserve an address range after the end address of each
> nvdimm device. Its size is specified by the user via a new pc-dimm
> option 'reserved-size'.
>
We should make it only work for nvdimm?
> For the following example,
> -object memory-backend-file,id=mem0,size=4G,...
> -device nvdimm,id=dimm0,memdev=mem0,reserved-size=4K,...
> -device pc-dimm,id=dimm1,...
> if dimm0 is allocated to address N ~ N+4G, the address of dimm1
> will start from N+4G+4K or higher. N+4G ~ N+4G+4K is reserved for
> dimm0.
>
> 2. (Patch 4) When NVDIMM ACPI code builds the flush hint address
> structure for each nvdimm device, it will allocate them from the
> above reserved area, e.g. the flush hint addresses of above dimm0
> are allocated in N+4G ~ N+4G+4K. The addresses are known to QEMU in
> this way, so QEMU can easily create IO memory regions for them.
>
> If the reserved area is not present or too small, QEMU will report
> errors.
>
We should make 'reserved-size' always be page-aligned and should be
transparent to the user, i.e, automatically reserve 4k if 'flush-hint'
is specified?
next prev parent reply other threads:[~2017-04-06 9:39 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-31 8:41 [Qemu-devel] [RFC PATCH 0/4] nvdimm: enable flush hint address structure Haozhong Zhang
2017-03-31 8:41 ` [Qemu-devel] [RFC PATCH 1/4] pc-dimm: add 'reserved-size' to reserve address range after the ending address Haozhong Zhang
2017-04-06 10:24 ` Stefan Hajnoczi
2017-04-06 10:46 ` Haozhong Zhang
2017-04-07 13:46 ` Stefan Hajnoczi
2017-04-11 8:57 ` Haozhong Zhang
2017-04-20 10:54 ` Igor Mammedov
2017-04-06 11:50 ` Xiao Guangrong
2017-03-31 8:41 ` [Qemu-devel] [RFC PATCH 2/4] nvdimm: add functions to initialize and perform flush on back store Haozhong Zhang
2017-04-06 11:52 ` Xiao Guangrong
2017-04-11 8:22 ` Haozhong Zhang
2017-04-11 8:29 ` Haozhong Zhang
2017-04-11 11:55 ` Xiao Guangrong
2017-04-20 13:12 ` Igor Mammedov
2017-03-31 8:41 ` [Qemu-devel] [RFC PATCH 3/4] nvdimm acpi: record the cache line size in AcpiNVDIMMState Haozhong Zhang
2017-03-31 8:41 ` [Qemu-devel] [RFC PATCH 4/4] nvdimm acpi: build flush hint address structure if required Haozhong Zhang
2017-04-06 10:13 ` Stefan Hajnoczi
2017-04-06 10:53 ` Haozhong Zhang
2017-04-07 14:41 ` Stefan Hajnoczi
2017-04-07 15:51 ` Dan Williams
2017-04-06 10:25 ` Stefan Hajnoczi
2017-04-20 11:22 ` Igor Mammedov
2017-04-06 9:39 ` Xiao Guangrong [this message]
2017-04-06 9:58 ` [Qemu-devel] [RFC PATCH 0/4] nvdimm: enable flush hint address structure Haozhong Zhang
2017-04-06 11:46 ` Xiao Guangrong
2017-04-06 9:43 ` Stefan Hajnoczi
2017-04-06 10:31 ` Haozhong Zhang
2017-04-07 14:38 ` Stefan Hajnoczi
2017-04-06 12:02 ` Xiao Guangrong
2017-04-11 8:41 ` Haozhong Zhang
2017-04-11 14:56 ` Dan Williams
2017-04-20 19:49 ` Dan Williams
2017-04-21 13:56 ` Stefan Hajnoczi
2017-04-21 19:14 ` Dan Williams
2017-04-06 14:32 ` Dan Williams
2017-04-07 14:31 ` Stefan Hajnoczi
2017-04-11 6:34 ` Haozhong Zhang
2017-04-18 10:15 ` Stefan Hajnoczi
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=2f298f0a-cf07-d131-90c2-bef89537d981@gmail.com \
--to=guangrong.xiao@gmail.com \
--cc=dan.j.williams@intel.com \
--cc=ehabkost@redhat.com \
--cc=haozhong.zhang@intel.com \
--cc=imammedo@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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).