All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xiao Guangrong <guangrong.xiao@linux.intel.com>
To: Bharata B Rao <bharata.rao@gmail.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Igor Mammedov <imammedo@redhat.com>,
	gleb@kernel.org, mtosatti@redhat.com,
	Stefan Hajnoczi <stefanha@redhat.com>,
	"mst@redhat.com" <mst@redhat.com>,
	Richard Henderson <rth@twiddle.net>,
	Eduardo Habkost <ehabkost@redhat.com>,
	dan.j.williams@intel.com, kvm@vger.kernel.org,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Subject: Re: [PATCH v3 00/32] implement vNVDIMM
Date: Mon, 12 Oct 2015 11:06:20 +0800	[thread overview]
Message-ID: <561B23AC.2010901@linux.intel.com> (raw)
In-Reply-To: <CAGZKiBr8GG_UycYP3Mvi-RH=NTQ-wzgUoJf2knkaCrk6eyuc2w@mail.gmail.com>



On 10/12/2015 10:59 AM, Bharata B Rao wrote:
> Xiao,
>
> Are these patches present in any git tree so that they can be easily tried out.
>

Sorry, currently no git tree out of my workspace is available :(

BTW, this patchset is based on top of the commit b37686f7e on qemu tree:
commit b37686f7e84b22cfaf7fd01ac5133f2617cc3027
Merge: 8be6e62 98cf48f
Author: Peter Maydell <peter.maydell@linaro.org>
Date:   Fri Oct 9 12:18:13 2015 +0100

     Merge remote-tracking branch 'remotes/stefanha/tags/tracing-pull-request' into staging

Thanks.

> Regards,
> Bharata.
>
> On Sun, Oct 11, 2015 at 9:22 AM, Xiao Guangrong
> <guangrong.xiao@linux.intel.com> wrote:
>> Changelog in v3:
>> There is huge change in this version, thank Igor, Stefan, Paolo, Eduardo,
>> Michael for their valuable comments, the patchset finally gets better shape.
>> - changes from Igor's comments:
>>    1) abstract dimm device type from pc-dimm and create nvdimm device based on
>>       dimm, then it uses memory backend device as nvdimm's memory and NUMA has
>>       easily been implemented.
>>    2) let file-backend device support any kind of filesystem not only for
>>       hugetlbfs and let it work on file not only for directory which is
>>       achieved by extending 'mem-path' - if it's a directory then it works as
>>       current behavior, otherwise if it's file then directly allocates memory
>>       from it.
>>    3) we figure out a unused memory hole below 4G that is 0xFF00000 ~
>>       0xFFF00000, this range is large enough for NVDIMM ACPI as build 64-bit
>>       ACPI SSDT/DSDT table will break windows XP.
>>       BTW, only make SSDT.rev = 2 can not work since the width is only depended
>>       on DSDT.rev based on 19.6.28 DefinitionBlock (Declare Definition Block)
>>       in ACPI spec:
>> | Note: For compatibility with ACPI versions before ACPI 2.0, the bit
>> | width of Integer objects is dependent on the ComplianceRevision of the DSDT.
>> | If the ComplianceRevision is less than 2, all integers are restricted to 32
>> | bits. Otherwise, full 64-bit integers are used. The version of the DSDT sets
>> | the global integer width for all integers, including integers in SSDTs.
>>    4) use the lowest ACPI spec version to document AML terms.
>>    5) use "nvdimm" as nvdimm device name instead of "pc-nvdimm"
>>
>> - changes from Stefan's comments:
>>    1) do not do endian adjustment in-place since _DSM memory is visible to guest
>>    2) use target platform's target page size instead of fixed PAGE_SIZE
>>       definition
>>    3) lots of code style improvement and typo fixes.
>>    4) live migration fix
>> - changes from Paolo's comments:
>>    1) improve the name of memory region
>>
>> - other changes:
>>    1) return exact buffer size for _DSM method instead of the page size.
>>    2) introduce mutex in NVDIMM ACPI as the _DSM memory is shared by all nvdimm
>>       devices.
>>    3) NUMA support
>>    4) implement _FIT method
>>    5) rename "configdata" to "reserve-label-data"
>>    6) simplify _DSM arg3 determination
>>    7) main changelog update to let it reflect v3.
>>
>> Changlog in v2:
>> - Use litten endian for DSM method, thanks for Stefan's suggestion
>>
>> - introduce a new parameter, @configdata, if it's false, Qemu will
>>    build a static and readonly namespace in memory and use it serveing
>>    for DSM GET_CONFIG_SIZE/GET_CONFIG_DATA requests. In this case, no
>>    reserved region is needed at the end of the @file, it is good for
>>    the user who want to pass whole nvdimm device and make its data
>>    completely be visible to guest
>>
>> - divide the source code into separated files and add maintain info
>>
>> BTW, PCOMMIT virtualization on KVM side is work in progress, hopefully will
>> be posted on next week
>>
>> ====== Background ======
>> NVDIMM (A Non-Volatile Dual In-line Memory Module) is going to be supported
>> on Intel's platform. They are discovered via ACPI and configured by _DSM
>> method of NVDIMM device in ACPI. There has some supporting documents which
>> can be found at:
>> ACPI 6: http://www.uefi.org/sites/default/files/resources/ACPI_6.0.pdf
>> NVDIMM Namespace: http://pmem.io/documents/NVDIMM_Namespace_Spec.pdf
>> DSM Interface Example: http://pmem.io/documents/NVDIMM_DSM_Interface_Example.pdf
>> Driver Writer's Guide: http://pmem.io/documents/NVDIMM_Driver_Writers_Guide.pdf
>>
>> Currently, the NVDIMM driver has been merged into upstream Linux Kernel and
>> this patchset tries to enable it in virtualization field
>>
>> ====== Design ======
>> NVDIMM supports two mode accesses, one is PMEM which maps NVDIMM into CPU's
>> address space then CPU can directly access it as normal memory, another is
>> BLK which is used as block device to reduce the occupying of CPU address
>> space
>>
>> BLK mode accesses NVDIMM via Command Register window and Data Register window.
>> BLK virtualization has high workload since each sector access will cause at
>> least two VM-EXIT. So we currently only imperilment vPMEM in this patchset
>>
>> --- vPMEM design ---
>> We introduce a new device named "nvdimm", it uses memory backend device as
>> NVDIMM memory. The file in file-backend device can be a regular file and block
>> device. We can use any file when we do test or emulation, however,
>> in the real word, the files passed to guest are:
>> - the regular file in the filesystem with DAX enabled created on NVDIMM device
>>    on host
>> - the raw PMEM device on host, e,g /dev/pmem0
>> Memory access on the address created by mmap on these kinds of files can
>> directly reach NVDIMM device on host.
>>
>> --- vConfigure data area design ---
>> Each NVDIMM device has a configure data area which is used to store label
>> namespace data. In order to emulating this area, we divide the file into two
>> parts:
>> - first parts is (0, size - 128K], which is used as PMEM
>> - 128K at the end of the file, which is used as Label Data Area
>> So that the label namespace data can be persistent during power lose or system
>> failure.
>>
>> We also support passing the whole file to guest without reserve any region for
>> label data area which is achieved by "reserve-label-data" parameter - if it's
>> false then QEMU will build static and readonly namespace in memory and that
>> namespace contains the whole file size. The parameter is false on default.
>>
>> --- _DSM method design ---
>> _DSM in ACPI is used to configure NVDIMM, currently we only allow access of
>> label namespace data, i.e, Get Namespace Label Size (Function Index 4),
>> Get Namespace Label Data (Function Index 5) and Set Namespace Label Data
>> (Function Index 6)
>>
>> _DSM uses two pages to transfer data between ACPI and Qemu, the first page
>> is RAM-based used to save the input info of _DSM method and Qemu reuse it
>> store output info and another page is MMIO-based, ACPI write data to this
>> page to transfer the control to Qemu
>>
>> ====== Test ======
>> In host
>> 1) create memory backed file, e.g # dd if=zero of=/tmp/nvdimm bs=1G count=10
>> 2) append "-object memory-backend-file,share,id=mem1,
>>     mem-path=/tmp/nvdimm -device nvdimm,memdev=mem1,reserve-label-data,
>>     id=nv1" in QEMU command line
>>
>> In guest, download the latest upsteam kernel (4.2 merge window) and enable
>> ACPI_NFIT, LIBNVDIMM and BLK_DEV_PMEM.
>> 1) insmod drivers/nvdimm/libnvdimm.ko
>> 2) insmod drivers/acpi/nfit.ko
>> 3) insmod drivers/nvdimm/nd_btt.ko
>> 4) insmod drivers/nvdimm/nd_pmem.ko
>> You can see the whole nvdimm device used as a single namespace and /dev/pmem0
>> appears. You can do whatever on /dev/pmem0 including DAX access.
>>
>> Currently Linux NVDIMM driver does not support namespace operation on this
>> kind of PMEM, apply below changes to support dynamical namespace:
>>
>> @@ -798,7 +823,8 @@ static int acpi_nfit_register_dimms(struct acpi_nfit_desc *a
>>                          continue;
>>                  }
>>
>> -               if (nfit_mem->bdw && nfit_mem->memdev_pmem)
>> +               //if (nfit_mem->bdw && nfit_mem->memdev_pmem)
>> +               if (nfit_mem->memdev_pmem)
>>                          flags |= NDD_ALIASING;
>>
>> You can append another NVDIMM device in guest and do:
>> # cd /sys/bus/nd/devices/
>> # cd namespace1.0/
>> # echo `uuidgen` > uuid
>> # echo `expr 1024 \* 1024 \* 128` > size
>> then reload nd.pmem.ko
>>
>> You can see /dev/pmem1 appears
>>
>> ====== TODO ======
>> NVDIMM hotplug support
>>
>> Xiao Guangrong (32):
>>    acpi: add aml_derefof
>>    acpi: add aml_sizeof
>>    acpi: add aml_create_field
>>    acpi: add aml_mutex, aml_acquire, aml_release
>>    acpi: add aml_concatenate
>>    acpi: add aml_object_type
>>    util: introduce qemu_file_get_page_size()
>>    exec: allow memory to be allocated from any kind of path
>>    exec: allow file_ram_alloc to work on file
>>    hostmem-file: clean up memory allocation
>>    hostmem-file: use whole file size if possible
>>    pc-dimm: remove DEFAULT_PC_DIMMSIZE
>>    pc-dimm: make pc_existing_dimms_capacity static and rename it
>>    pc-dimm: drop the prefix of pc-dimm
>>    stubs: rename qmp_pc_dimm_device_list.c
>>    pc-dimm: rename pc-dimm.c and pc-dimm.h
>>    dimm: abstract dimm device from pc-dimm
>>    dimm: get mapped memory region from DIMMDeviceClass->get_memory_region
>>    dimm: keep the state of the whole backend memory
>>    dimm: introduce realize callback
>>    nvdimm: implement NVDIMM device abstract
>>    nvdimm: init the address region used by NVDIMM ACPI
>>    nvdimm: build ACPI NFIT table
>>    nvdimm: init the address region used by DSM method
>>    nvdimm: build ACPI nvdimm devices
>>    nvdimm: save arg3 for NVDIMM device _DSM method
>>    nvdimm: support DSM_CMD_IMPLEMENTED function
>>    nvdimm: support DSM_CMD_NAMESPACE_LABEL_SIZE function
>>    nvdimm: support DSM_CMD_GET_NAMESPACE_LABEL_DATA
>>    nvdimm: support DSM_CMD_SET_NAMESPACE_LABEL_DATA
>>    nvdimm: allow using whole backend memory as pmem
>>    nvdimm: add maintain info
>>
>>   MAINTAINERS                                        |   6 +
>>   backends/hostmem-file.c                            |  58 +-
>>   default-configs/i386-softmmu.mak                   |   2 +
>>   default-configs/x86_64-softmmu.mak                 |   2 +
>>   exec.c                                             | 113 ++-
>>   hmp.c                                              |   2 +-
>>   hw/Makefile.objs                                   |   2 +-
>>   hw/acpi/aml-build.c                                |  83 ++
>>   hw/acpi/ich9.c                                     |   8 +-
>>   hw/acpi/memory_hotplug.c                           |  26 +-
>>   hw/acpi/piix4.c                                    |   8 +-
>>   hw/i386/acpi-build.c                               |   4 +
>>   hw/i386/pc.c                                       |  37 +-
>>   hw/mem/Makefile.objs                               |   3 +
>>   hw/mem/{pc-dimm.c => dimm.c}                       | 240 ++---
>>   hw/mem/nvdimm/acpi.c                               | 961 +++++++++++++++++++++
>>   hw/mem/nvdimm/internal.h                           |  41 +
>>   hw/mem/nvdimm/namespace.c                          | 309 +++++++
>>   hw/mem/nvdimm/nvdimm.c                             | 136 +++
>>   hw/mem/pc-dimm.c                                   | 506 +----------
>>   hw/ppc/spapr.c                                     |  20 +-
>>   include/hw/acpi/aml-build.h                        |   8 +
>>   include/hw/i386/pc.h                               |   4 +-
>>   include/hw/mem/{pc-dimm.h => dimm.h}               |  68 +-
>>   include/hw/mem/nvdimm.h                            |  58 ++
>>   include/hw/mem/pc-dimm.h                           | 105 +--
>>   include/hw/ppc/spapr.h                             |   2 +-
>>   include/qemu/osdep.h                               |   1 +
>>   numa.c                                             |   4 +-
>>   qapi-schema.json                                   |   8 +-
>>   qmp.c                                              |   4 +-
>>   stubs/Makefile.objs                                |   2 +-
>>   ...c_dimm_device_list.c => qmp_dimm_device_list.c} |   4 +-
>>   target-ppc/kvm.c                                   |  21 +-
>>   trace-events                                       |   8 +-
>>   util/oslib-posix.c                                 |  16 +
>>   util/oslib-win32.c                                 |   5 +
>>   37 files changed, 2023 insertions(+), 862 deletions(-)
>>   rename hw/mem/{pc-dimm.c => dimm.c} (65%)
>>   create mode 100644 hw/mem/nvdimm/acpi.c
>>   create mode 100644 hw/mem/nvdimm/internal.h
>>   create mode 100644 hw/mem/nvdimm/namespace.c
>>   create mode 100644 hw/mem/nvdimm/nvdimm.c
>>   rewrite hw/mem/pc-dimm.c (91%)
>>   rename include/hw/mem/{pc-dimm.h => dimm.h} (50%)
>>   create mode 100644 include/hw/mem/nvdimm.h
>>   rewrite include/hw/mem/pc-dimm.h (97%)
>>   rename stubs/{qmp_pc_dimm_device_list.c => qmp_dimm_device_list.c} (56%)
>>
>> --
>> 1.8.3.1
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe kvm" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>
>

WARNING: multiple messages have this Message-ID (diff)
From: Xiao Guangrong <guangrong.xiao@linux.intel.com>
To: Bharata B Rao <bharata.rao@gmail.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>,
	kvm@vger.kernel.org, "mst@redhat.com" <mst@redhat.com>,
	gleb@kernel.org, mtosatti@redhat.com,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Igor Mammedov <imammedo@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	dan.j.williams@intel.com, Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH v3 00/32] implement vNVDIMM
Date: Mon, 12 Oct 2015 11:06:20 +0800	[thread overview]
Message-ID: <561B23AC.2010901@linux.intel.com> (raw)
In-Reply-To: <CAGZKiBr8GG_UycYP3Mvi-RH=NTQ-wzgUoJf2knkaCrk6eyuc2w@mail.gmail.com>



On 10/12/2015 10:59 AM, Bharata B Rao wrote:
> Xiao,
>
> Are these patches present in any git tree so that they can be easily tried out.
>

Sorry, currently no git tree out of my workspace is available :(

BTW, this patchset is based on top of the commit b37686f7e on qemu tree:
commit b37686f7e84b22cfaf7fd01ac5133f2617cc3027
Merge: 8be6e62 98cf48f
Author: Peter Maydell <peter.maydell@linaro.org>
Date:   Fri Oct 9 12:18:13 2015 +0100

     Merge remote-tracking branch 'remotes/stefanha/tags/tracing-pull-request' into staging

Thanks.

> Regards,
> Bharata.
>
> On Sun, Oct 11, 2015 at 9:22 AM, Xiao Guangrong
> <guangrong.xiao@linux.intel.com> wrote:
>> Changelog in v3:
>> There is huge change in this version, thank Igor, Stefan, Paolo, Eduardo,
>> Michael for their valuable comments, the patchset finally gets better shape.
>> - changes from Igor's comments:
>>    1) abstract dimm device type from pc-dimm and create nvdimm device based on
>>       dimm, then it uses memory backend device as nvdimm's memory and NUMA has
>>       easily been implemented.
>>    2) let file-backend device support any kind of filesystem not only for
>>       hugetlbfs and let it work on file not only for directory which is
>>       achieved by extending 'mem-path' - if it's a directory then it works as
>>       current behavior, otherwise if it's file then directly allocates memory
>>       from it.
>>    3) we figure out a unused memory hole below 4G that is 0xFF00000 ~
>>       0xFFF00000, this range is large enough for NVDIMM ACPI as build 64-bit
>>       ACPI SSDT/DSDT table will break windows XP.
>>       BTW, only make SSDT.rev = 2 can not work since the width is only depended
>>       on DSDT.rev based on 19.6.28 DefinitionBlock (Declare Definition Block)
>>       in ACPI spec:
>> | Note: For compatibility with ACPI versions before ACPI 2.0, the bit
>> | width of Integer objects is dependent on the ComplianceRevision of the DSDT.
>> | If the ComplianceRevision is less than 2, all integers are restricted to 32
>> | bits. Otherwise, full 64-bit integers are used. The version of the DSDT sets
>> | the global integer width for all integers, including integers in SSDTs.
>>    4) use the lowest ACPI spec version to document AML terms.
>>    5) use "nvdimm" as nvdimm device name instead of "pc-nvdimm"
>>
>> - changes from Stefan's comments:
>>    1) do not do endian adjustment in-place since _DSM memory is visible to guest
>>    2) use target platform's target page size instead of fixed PAGE_SIZE
>>       definition
>>    3) lots of code style improvement and typo fixes.
>>    4) live migration fix
>> - changes from Paolo's comments:
>>    1) improve the name of memory region
>>
>> - other changes:
>>    1) return exact buffer size for _DSM method instead of the page size.
>>    2) introduce mutex in NVDIMM ACPI as the _DSM memory is shared by all nvdimm
>>       devices.
>>    3) NUMA support
>>    4) implement _FIT method
>>    5) rename "configdata" to "reserve-label-data"
>>    6) simplify _DSM arg3 determination
>>    7) main changelog update to let it reflect v3.
>>
>> Changlog in v2:
>> - Use litten endian for DSM method, thanks for Stefan's suggestion
>>
>> - introduce a new parameter, @configdata, if it's false, Qemu will
>>    build a static and readonly namespace in memory and use it serveing
>>    for DSM GET_CONFIG_SIZE/GET_CONFIG_DATA requests. In this case, no
>>    reserved region is needed at the end of the @file, it is good for
>>    the user who want to pass whole nvdimm device and make its data
>>    completely be visible to guest
>>
>> - divide the source code into separated files and add maintain info
>>
>> BTW, PCOMMIT virtualization on KVM side is work in progress, hopefully will
>> be posted on next week
>>
>> ====== Background ======
>> NVDIMM (A Non-Volatile Dual In-line Memory Module) is going to be supported
>> on Intel's platform. They are discovered via ACPI and configured by _DSM
>> method of NVDIMM device in ACPI. There has some supporting documents which
>> can be found at:
>> ACPI 6: http://www.uefi.org/sites/default/files/resources/ACPI_6.0.pdf
>> NVDIMM Namespace: http://pmem.io/documents/NVDIMM_Namespace_Spec.pdf
>> DSM Interface Example: http://pmem.io/documents/NVDIMM_DSM_Interface_Example.pdf
>> Driver Writer's Guide: http://pmem.io/documents/NVDIMM_Driver_Writers_Guide.pdf
>>
>> Currently, the NVDIMM driver has been merged into upstream Linux Kernel and
>> this patchset tries to enable it in virtualization field
>>
>> ====== Design ======
>> NVDIMM supports two mode accesses, one is PMEM which maps NVDIMM into CPU's
>> address space then CPU can directly access it as normal memory, another is
>> BLK which is used as block device to reduce the occupying of CPU address
>> space
>>
>> BLK mode accesses NVDIMM via Command Register window and Data Register window.
>> BLK virtualization has high workload since each sector access will cause at
>> least two VM-EXIT. So we currently only imperilment vPMEM in this patchset
>>
>> --- vPMEM design ---
>> We introduce a new device named "nvdimm", it uses memory backend device as
>> NVDIMM memory. The file in file-backend device can be a regular file and block
>> device. We can use any file when we do test or emulation, however,
>> in the real word, the files passed to guest are:
>> - the regular file in the filesystem with DAX enabled created on NVDIMM device
>>    on host
>> - the raw PMEM device on host, e,g /dev/pmem0
>> Memory access on the address created by mmap on these kinds of files can
>> directly reach NVDIMM device on host.
>>
>> --- vConfigure data area design ---
>> Each NVDIMM device has a configure data area which is used to store label
>> namespace data. In order to emulating this area, we divide the file into two
>> parts:
>> - first parts is (0, size - 128K], which is used as PMEM
>> - 128K at the end of the file, which is used as Label Data Area
>> So that the label namespace data can be persistent during power lose or system
>> failure.
>>
>> We also support passing the whole file to guest without reserve any region for
>> label data area which is achieved by "reserve-label-data" parameter - if it's
>> false then QEMU will build static and readonly namespace in memory and that
>> namespace contains the whole file size. The parameter is false on default.
>>
>> --- _DSM method design ---
>> _DSM in ACPI is used to configure NVDIMM, currently we only allow access of
>> label namespace data, i.e, Get Namespace Label Size (Function Index 4),
>> Get Namespace Label Data (Function Index 5) and Set Namespace Label Data
>> (Function Index 6)
>>
>> _DSM uses two pages to transfer data between ACPI and Qemu, the first page
>> is RAM-based used to save the input info of _DSM method and Qemu reuse it
>> store output info and another page is MMIO-based, ACPI write data to this
>> page to transfer the control to Qemu
>>
>> ====== Test ======
>> In host
>> 1) create memory backed file, e.g # dd if=zero of=/tmp/nvdimm bs=1G count=10
>> 2) append "-object memory-backend-file,share,id=mem1,
>>     mem-path=/tmp/nvdimm -device nvdimm,memdev=mem1,reserve-label-data,
>>     id=nv1" in QEMU command line
>>
>> In guest, download the latest upsteam kernel (4.2 merge window) and enable
>> ACPI_NFIT, LIBNVDIMM and BLK_DEV_PMEM.
>> 1) insmod drivers/nvdimm/libnvdimm.ko
>> 2) insmod drivers/acpi/nfit.ko
>> 3) insmod drivers/nvdimm/nd_btt.ko
>> 4) insmod drivers/nvdimm/nd_pmem.ko
>> You can see the whole nvdimm device used as a single namespace and /dev/pmem0
>> appears. You can do whatever on /dev/pmem0 including DAX access.
>>
>> Currently Linux NVDIMM driver does not support namespace operation on this
>> kind of PMEM, apply below changes to support dynamical namespace:
>>
>> @@ -798,7 +823,8 @@ static int acpi_nfit_register_dimms(struct acpi_nfit_desc *a
>>                          continue;
>>                  }
>>
>> -               if (nfit_mem->bdw && nfit_mem->memdev_pmem)
>> +               //if (nfit_mem->bdw && nfit_mem->memdev_pmem)
>> +               if (nfit_mem->memdev_pmem)
>>                          flags |= NDD_ALIASING;
>>
>> You can append another NVDIMM device in guest and do:
>> # cd /sys/bus/nd/devices/
>> # cd namespace1.0/
>> # echo `uuidgen` > uuid
>> # echo `expr 1024 \* 1024 \* 128` > size
>> then reload nd.pmem.ko
>>
>> You can see /dev/pmem1 appears
>>
>> ====== TODO ======
>> NVDIMM hotplug support
>>
>> Xiao Guangrong (32):
>>    acpi: add aml_derefof
>>    acpi: add aml_sizeof
>>    acpi: add aml_create_field
>>    acpi: add aml_mutex, aml_acquire, aml_release
>>    acpi: add aml_concatenate
>>    acpi: add aml_object_type
>>    util: introduce qemu_file_get_page_size()
>>    exec: allow memory to be allocated from any kind of path
>>    exec: allow file_ram_alloc to work on file
>>    hostmem-file: clean up memory allocation
>>    hostmem-file: use whole file size if possible
>>    pc-dimm: remove DEFAULT_PC_DIMMSIZE
>>    pc-dimm: make pc_existing_dimms_capacity static and rename it
>>    pc-dimm: drop the prefix of pc-dimm
>>    stubs: rename qmp_pc_dimm_device_list.c
>>    pc-dimm: rename pc-dimm.c and pc-dimm.h
>>    dimm: abstract dimm device from pc-dimm
>>    dimm: get mapped memory region from DIMMDeviceClass->get_memory_region
>>    dimm: keep the state of the whole backend memory
>>    dimm: introduce realize callback
>>    nvdimm: implement NVDIMM device abstract
>>    nvdimm: init the address region used by NVDIMM ACPI
>>    nvdimm: build ACPI NFIT table
>>    nvdimm: init the address region used by DSM method
>>    nvdimm: build ACPI nvdimm devices
>>    nvdimm: save arg3 for NVDIMM device _DSM method
>>    nvdimm: support DSM_CMD_IMPLEMENTED function
>>    nvdimm: support DSM_CMD_NAMESPACE_LABEL_SIZE function
>>    nvdimm: support DSM_CMD_GET_NAMESPACE_LABEL_DATA
>>    nvdimm: support DSM_CMD_SET_NAMESPACE_LABEL_DATA
>>    nvdimm: allow using whole backend memory as pmem
>>    nvdimm: add maintain info
>>
>>   MAINTAINERS                                        |   6 +
>>   backends/hostmem-file.c                            |  58 +-
>>   default-configs/i386-softmmu.mak                   |   2 +
>>   default-configs/x86_64-softmmu.mak                 |   2 +
>>   exec.c                                             | 113 ++-
>>   hmp.c                                              |   2 +-
>>   hw/Makefile.objs                                   |   2 +-
>>   hw/acpi/aml-build.c                                |  83 ++
>>   hw/acpi/ich9.c                                     |   8 +-
>>   hw/acpi/memory_hotplug.c                           |  26 +-
>>   hw/acpi/piix4.c                                    |   8 +-
>>   hw/i386/acpi-build.c                               |   4 +
>>   hw/i386/pc.c                                       |  37 +-
>>   hw/mem/Makefile.objs                               |   3 +
>>   hw/mem/{pc-dimm.c => dimm.c}                       | 240 ++---
>>   hw/mem/nvdimm/acpi.c                               | 961 +++++++++++++++++++++
>>   hw/mem/nvdimm/internal.h                           |  41 +
>>   hw/mem/nvdimm/namespace.c                          | 309 +++++++
>>   hw/mem/nvdimm/nvdimm.c                             | 136 +++
>>   hw/mem/pc-dimm.c                                   | 506 +----------
>>   hw/ppc/spapr.c                                     |  20 +-
>>   include/hw/acpi/aml-build.h                        |   8 +
>>   include/hw/i386/pc.h                               |   4 +-
>>   include/hw/mem/{pc-dimm.h => dimm.h}               |  68 +-
>>   include/hw/mem/nvdimm.h                            |  58 ++
>>   include/hw/mem/pc-dimm.h                           | 105 +--
>>   include/hw/ppc/spapr.h                             |   2 +-
>>   include/qemu/osdep.h                               |   1 +
>>   numa.c                                             |   4 +-
>>   qapi-schema.json                                   |   8 +-
>>   qmp.c                                              |   4 +-
>>   stubs/Makefile.objs                                |   2 +-
>>   ...c_dimm_device_list.c => qmp_dimm_device_list.c} |   4 +-
>>   target-ppc/kvm.c                                   |  21 +-
>>   trace-events                                       |   8 +-
>>   util/oslib-posix.c                                 |  16 +
>>   util/oslib-win32.c                                 |   5 +
>>   37 files changed, 2023 insertions(+), 862 deletions(-)
>>   rename hw/mem/{pc-dimm.c => dimm.c} (65%)
>>   create mode 100644 hw/mem/nvdimm/acpi.c
>>   create mode 100644 hw/mem/nvdimm/internal.h
>>   create mode 100644 hw/mem/nvdimm/namespace.c
>>   create mode 100644 hw/mem/nvdimm/nvdimm.c
>>   rewrite hw/mem/pc-dimm.c (91%)
>>   rename include/hw/mem/{pc-dimm.h => dimm.h} (50%)
>>   create mode 100644 include/hw/mem/nvdimm.h
>>   rewrite include/hw/mem/pc-dimm.h (97%)
>>   rename stubs/{qmp_pc_dimm_device_list.c => qmp_dimm_device_list.c} (56%)
>>
>> --
>> 1.8.3.1
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe kvm" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>
>

  reply	other threads:[~2015-10-12  3:12 UTC|newest]

Thread overview: 200+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-11  3:52 [PATCH v3 00/32] implement vNVDIMM Xiao Guangrong
2015-10-11  3:52 ` [Qemu-devel] " Xiao Guangrong
2015-10-10 21:17 ` Dan Williams
2015-10-10 21:17   ` [Qemu-devel] " Dan Williams
2015-10-12  4:33   ` Xiao Guangrong
2015-10-12  4:33     ` [Qemu-devel] " Xiao Guangrong
2015-10-12 16:36     ` Dan Williams
2015-10-12 16:36       ` [Qemu-devel] " Dan Williams
2015-10-13  3:14       ` Xiao Guangrong
2015-10-13  3:14         ` Xiao Guangrong
2015-10-13  3:38         ` Dan Williams
2015-10-13  3:38           ` Dan Williams
2015-10-13  5:49           ` Xiao Guangrong
2015-10-13  5:49             ` Xiao Guangrong
2015-10-13  6:36             ` Dan Williams
2015-10-13  6:36               ` Dan Williams
2015-10-14  4:03               ` Xiao Guangrong
2015-10-14  4:03                 ` Xiao Guangrong
2015-10-14 19:20                 ` Dan Williams
2015-10-14 19:20                   ` Dan Williams
2015-10-11  3:52 ` [PATCH v3 01/32] acpi: add aml_derefof Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-13 12:30   ` Igor Mammedov
2015-10-13 12:30     ` [Qemu-devel] " Igor Mammedov
2015-10-11  3:52 ` [PATCH v3 02/32] acpi: add aml_sizeof Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-13 12:33   ` Igor Mammedov
2015-10-13 12:33     ` [Qemu-devel] " Igor Mammedov
2015-10-11  3:52 ` [PATCH v3 03/32] acpi: add aml_create_field Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-13 12:38   ` Igor Mammedov
2015-10-13 12:38     ` [Qemu-devel] " Igor Mammedov
2015-10-13 16:36     ` Xiao Guangrong
2015-10-13 16:36       ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 04/32] acpi: add aml_mutex, aml_acquire, aml_release Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-13 13:34   ` Igor Mammedov
2015-10-13 13:34     ` [Qemu-devel] " Igor Mammedov
2015-10-13 16:44     ` Xiao Guangrong
2015-10-13 16:44       ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 05/32] acpi: add aml_concatenate Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 06/32] acpi: add aml_object_type Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 07/32] util: introduce qemu_file_get_page_size() Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 08/32] exec: allow memory to be allocated from any kind of path Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-12 10:08   ` Michael S. Tsirkin
2015-10-12 10:08     ` [Qemu-devel] " Michael S. Tsirkin
2015-10-13  3:31     ` Xiao Guangrong
2015-10-13  3:31       ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 09/32] exec: allow file_ram_alloc to work on file Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 10/32] hostmem-file: clean up memory allocation Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 11/32] hostmem-file: use whole file size if possible Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-13 11:50   ` Vladimir Sementsov-Ogievskiy
2015-10-13 11:50     ` Vladimir Sementsov-Ogievskiy
2015-10-13 16:53     ` Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 12/32] pc-dimm: remove DEFAULT_PC_DIMMSIZE Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 13/32] pc-dimm: make pc_existing_dimms_capacity static and rename it Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 14/32] pc-dimm: drop the prefix of pc-dimm Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-12 16:43   ` Eric Blake
2015-10-13  3:32     ` Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 15/32] stubs: rename qmp_pc_dimm_device_list.c Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 16/32] pc-dimm: rename pc-dimm.c and pc-dimm.h Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 17/32] dimm: abstract dimm device from pc-dimm Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 18/32] dimm: get mapped memory region from DIMMDeviceClass->get_memory_region Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 19/32] dimm: keep the state of the whole backend memory Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 20/32] dimm: introduce realize callback Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 21/32] nvdimm: implement NVDIMM device abstract Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 22/32] nvdimm: init the address region used by NVDIMM ACPI Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-19  6:56   ` Michael S. Tsirkin
2015-10-19  6:56     ` [Qemu-devel] " Michael S. Tsirkin
2015-10-19  7:27     ` Xiao Guangrong
2015-10-19  7:27       ` [Qemu-devel] " Xiao Guangrong
2015-10-19  7:39       ` Michael S. Tsirkin
2015-10-19  7:39         ` [Qemu-devel] " Michael S. Tsirkin
2015-10-19  7:44         ` Xiao Guangrong
2015-10-19  7:44           ` [Qemu-devel] " Xiao Guangrong
2015-10-19  9:17           ` Michael S. Tsirkin
2015-10-19  9:17             ` [Qemu-devel] " Michael S. Tsirkin
2015-10-19  9:46             ` Igor Mammedov
2015-10-19  9:46               ` [Qemu-devel] " Igor Mammedov
2015-10-19 10:01               ` Xiao Guangrong
2015-10-19 10:34                 ` Michael S. Tsirkin
2015-10-19 10:34                   ` Michael S. Tsirkin
2015-10-19 10:42                 ` Igor Mammedov
2015-10-19 10:42                   ` Igor Mammedov
2015-10-19 17:56                   ` Xiao Guangrong
2015-10-19 17:56                     ` Xiao Guangrong
2015-10-20  2:27                   ` Xiao Guangrong
2015-10-20  2:27                     ` Xiao Guangrong
2015-10-19  9:18     ` Igor Mammedov
2015-10-19  9:18       ` [Qemu-devel] " Igor Mammedov
2015-10-19 10:25       ` Michael S. Tsirkin
2015-10-19 10:25         ` [Qemu-devel] " Michael S. Tsirkin
2015-10-19 17:54         ` Xiao Guangrong
2015-10-19 17:54           ` [Qemu-devel] " Xiao Guangrong
2015-10-19 21:20           ` Michael S. Tsirkin
2015-10-19 21:20             ` [Qemu-devel] " Michael S. Tsirkin
2015-10-11  3:52 ` [PATCH v3 23/32] nvdimm: build ACPI NFIT table Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-12 11:27   ` Michael S. Tsirkin
2015-10-12 11:27     ` [Qemu-devel] " Michael S. Tsirkin
2015-10-13  5:13     ` Xiao Guangrong
2015-10-13  5:13       ` [Qemu-devel] " Xiao Guangrong
2015-10-13  5:42       ` Michael S. Tsirkin
2015-10-13  5:42         ` [Qemu-devel] " Michael S. Tsirkin
2015-10-13  6:06         ` Xiao Guangrong
2015-10-13  6:06           ` [Qemu-devel] " Xiao Guangrong
2015-10-12 16:40   ` Dan Williams
2015-10-12 16:40     ` [Qemu-devel] " Dan Williams
2015-10-13  5:17     ` Xiao Guangrong
2015-10-13  5:17       ` [Qemu-devel] " Xiao Guangrong
2015-10-13  6:07       ` Michael S. Tsirkin
2015-10-13  6:07         ` [Qemu-devel] " Michael S. Tsirkin
2015-10-11  3:52 ` [PATCH v3 24/32] nvdimm: init the address region used by DSM method Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 25/32] nvdimm: build ACPI nvdimm devices Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-13 14:39   ` Igor Mammedov
2015-10-13 14:39     ` Igor Mammedov
2015-10-13 17:24     ` Xiao Guangrong
2015-10-13 17:24       ` Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 26/32] nvdimm: save arg3 for NVDIMM device _DSM method Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-19  6:50   ` Michael S. Tsirkin
2015-10-19  6:50     ` [Qemu-devel] " Michael S. Tsirkin
2015-10-19  7:14     ` Xiao Guangrong
2015-10-19  7:14       ` [Qemu-devel] " Xiao Guangrong
2015-10-19  7:47       ` Michael S. Tsirkin
2015-10-19  7:47         ` [Qemu-devel] " Michael S. Tsirkin
2015-10-19  7:51         ` Xiao Guangrong
2015-10-19  7:51           ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:52 ` [PATCH v3 27/32] nvdimm: support DSM_CMD_IMPLEMENTED function Xiao Guangrong
2015-10-11  3:52   ` [Qemu-devel] " Xiao Guangrong
2015-10-14  9:40   ` Stefan Hajnoczi
2015-10-14  9:40     ` [Qemu-devel] " Stefan Hajnoczi
2015-10-14 14:50     ` Xiao Guangrong
2015-10-14 14:50       ` [Qemu-devel] " Xiao Guangrong
2015-10-14 17:06       ` Eduardo Habkost
2015-10-14 17:06         ` [Qemu-devel] " Eduardo Habkost
2015-10-15  1:43         ` Xiao Guangrong
2015-10-15  1:43           ` [Qemu-devel] " Xiao Guangrong
2015-10-15 15:07       ` Stefan Hajnoczi
2015-10-15 15:07         ` [Qemu-devel] " Stefan Hajnoczi
2015-10-16  2:30         ` Xiao Guangrong
2015-10-16  2:30           ` [Qemu-devel] " Xiao Guangrong
2015-10-14  9:41   ` Stefan Hajnoczi
2015-10-14  9:41     ` [Qemu-devel] " Stefan Hajnoczi
2015-10-14 14:52     ` Xiao Guangrong
2015-10-14 14:52       ` [Qemu-devel] " Xiao Guangrong
2015-10-15 15:01       ` Stefan Hajnoczi
2015-10-15 15:01         ` [Qemu-devel] " Stefan Hajnoczi
2015-10-16  2:32         ` Xiao Guangrong
2015-10-16  2:32           ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:53 ` [PATCH v3 28/32] nvdimm: support DSM_CMD_NAMESPACE_LABEL_SIZE function Xiao Guangrong
2015-10-11  3:53   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:53 ` [PATCH v3 29/32] nvdimm: support DSM_CMD_GET_NAMESPACE_LABEL_DATA Xiao Guangrong
2015-10-11  3:53   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:53 ` [PATCH v3 30/32] nvdimm: support DSM_CMD_SET_NAMESPACE_LABEL_DATA Xiao Guangrong
2015-10-11  3:53   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:53 ` [PATCH v3 31/32] nvdimm: allow using whole backend memory as pmem Xiao Guangrong
2015-10-11  3:53   ` [Qemu-devel] " Xiao Guangrong
2015-10-11  3:53 ` [PATCH v3 32/32] nvdimm: add maintain info Xiao Guangrong
2015-10-11  3:53   ` [Qemu-devel] " Xiao Guangrong
2015-10-12  2:59 ` [PATCH v3 00/32] implement vNVDIMM Bharata B Rao
2015-10-12  2:59   ` [Qemu-devel] " Bharata B Rao
2015-10-12  3:06   ` Xiao Guangrong [this message]
2015-10-12  3:06     ` Xiao Guangrong
2015-10-12  8:20     ` Igor Mammedov
2015-10-12  8:20       ` [Qemu-devel] " Igor Mammedov
2015-10-12  8:21       ` Xiao Guangrong
2015-10-12  8:21         ` [Qemu-devel] " Xiao Guangrong
2015-10-12 11:55 ` Michael S. Tsirkin
2015-10-12 11:55   ` [Qemu-devel] " Michael S. Tsirkin
2015-10-13  5:29   ` Xiao Guangrong
2015-10-13  5:29     ` [Qemu-devel] " Xiao Guangrong
2015-10-13  5:57     ` Michael S. Tsirkin
2015-10-13  5:57       ` [Qemu-devel] " Michael S. Tsirkin
2015-10-13  5:52       ` Xiao Guangrong
2015-10-13  5:52         ` [Qemu-devel] " Xiao Guangrong
2015-10-19  6:57     ` Michael S. Tsirkin
2015-10-19  6:57       ` [Qemu-devel] " Michael S. Tsirkin
2015-10-19  6:56 ` Michael S. Tsirkin
2015-10-19  6:56   ` [Qemu-devel] " Michael S. Tsirkin

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=561B23AC.2010901@linux.intel.com \
    --to=guangrong.xiao@linux.intel.com \
    --cc=bharata.rao@gmail.com \
    --cc=dan.j.williams@intel.com \
    --cc=ehabkost@redhat.com \
    --cc=gleb@kernel.org \
    --cc=imammedo@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=stefanha@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.