On Sun, 30 Oct 2016 23:24:46 +0200 "Michael S. Tsirkin" <m...@redhat.com> wrote:
> From: Xiao Guangrong <guangrong.x...@linux.intel.com> > > According to ACPI 6.0 spec, "Memory Device Physical Address > Region Base" in memdev is defined as "This field provides the > Device Physical Address base of the region". This field should > be zero in our case I'm not sure that it should be a zero, care to point source which tells that it should be zero? > Signed-off-by: Xiao Guangrong <guangrong.x...@linux.intel.com> > Reviewed-by: Michael S. Tsirkin <m...@redhat.com> > Signed-off-by: Michael S. Tsirkin <m...@redhat.com> > --- > hw/acpi/nvdimm.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c > index bbb2cfd..c2f5caa 100644 > --- a/hw/acpi/nvdimm.c > +++ b/hw/acpi/nvdimm.c > @@ -289,8 +289,6 @@ static void > nvdimm_build_structure_memdev(GArray *structures, DeviceState *dev) > { > NvdimmNfitMemDev *nfit_memdev; > - uint64_t addr = object_property_get_int(OBJECT(dev), PC_DIMM_ADDR_PROP, > - NULL); > uint64_t size = object_property_get_int(OBJECT(dev), PC_DIMM_SIZE_PROP, > NULL); > int slot = object_property_get_int(OBJECT(dev), PC_DIMM_SLOT_PROP, > @@ -314,7 +312,8 @@ nvdimm_build_structure_memdev(GArray *structures, > DeviceState *dev) > > /* The memory region on the device. */ > nfit_memdev->region_len = cpu_to_le64(size); > - nfit_memdev->region_dpa = cpu_to_le64(addr); > + /* The device address starts from 0. */ > + nfit_memdev->region_dpa = cpu_to_le64(0); > > /* Only one interleave for PMEM. */ > nfit_memdev->interleave_ways = cpu_to_le16(1);