From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60201) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZUGp4-0003MW-Ep for qemu-devel@nongnu.org; Tue, 25 Aug 2015 12:11:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZUGp1-0002Gy-43 for qemu-devel@nongnu.org; Tue, 25 Aug 2015 12:11:42 -0400 Received: from mail-wi0-x22d.google.com ([2a00:1450:400c:c05::22d]:33195) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZUGp0-0002GG-Tq for qemu-devel@nongnu.org; Tue, 25 Aug 2015 12:11:39 -0400 Received: by wicne3 with SMTP id ne3so253541wic.0 for ; Tue, 25 Aug 2015 09:11:38 -0700 (PDT) Date: Tue, 25 Aug 2015 17:11:35 +0100 From: Stefan Hajnoczi Message-ID: <20150825161135.GE8344@stefanha-thinkpad.redhat.com> References: <1439563931-12352-1-git-send-email-guangrong.xiao@linux.intel.com> <1439563931-12352-11-git-send-email-guangrong.xiao@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1439563931-12352-11-git-send-email-guangrong.xiao@linux.intel.com> Subject: Re: [Qemu-devel] [PATCH v2 10/18] nvdimm: init the address region used by DSM method List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Xiao Guangrong Cc: ehabkost@redhat.com, kvm@vger.kernel.org, mst@redhat.com, gleb@kernel.org, mtosatti@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com, imammedo@redhat.com, pbonzini@redhat.com, rth@twiddle.net On Fri, Aug 14, 2015 at 10:52:03PM +0800, Xiao Guangrong wrote: > @@ -257,14 +258,91 @@ static void build_nfit_table(GSList *device_list, char *buf) > } > } > > +struct dsm_buffer { > + /* RAM page. */ > + uint32_t handle; > + uint8_t arg0[16]; > + uint32_t arg1; > + uint32_t arg2; > + union { > + char arg3[PAGE_SIZE - 3 * sizeof(uint32_t) - 16 * sizeof(uint8_t)]; > + }; > + > + /* MMIO page. */ > + union { > + uint32_t notify; > + char pedding[PAGE_SIZE]; s/pedding/padding/ > + }; > +}; > + > +static ram_addr_t dsm_addr; > +static size_t dsm_size; > + > +static uint64_t dsm_read(void *opaque, hwaddr addr, > + unsigned size) > +{ > + return 0; > +} > + > +static void dsm_write(void *opaque, hwaddr addr, > + uint64_t val, unsigned size) > +{ > +} > + > +static const MemoryRegionOps dsm_ops = { > + .read = dsm_read, > + .write = dsm_write, > + .endianness = DEVICE_LITTLE_ENDIAN, > +}; > + > +static int build_dsm_buffer(void) > +{ > + MemoryRegion *dsm_ram_mr, *dsm_mmio_mr; > + ram_addr_t addr;; s/;;/;/