Re: [Qemu-devel] [PATCH v8 0/5] implement vNVDIMM
On 16.11.2015 13:50, Xiao Guangrong wrote: NVDIMM (A Non-Volatile Dual In-line Memory Module) is going to be supported on Intel's platform. Hi. One question: do this mean, that your qemu emulated nvidimm - pmem solution will work only on Intel host? -- Best regards, Vladimir * now, @virtuozzo.com instead of @parallels.com. Sorry for this inconvenience. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [Qemu-devel] [PATCH v8 0/5] implement vNVDIMM
On 12/05/2015 12:38 AM, Vladimir Sementsov-Ogievskiy wrote: On 16.11.2015 13:50, Xiao Guangrong wrote: NVDIMM (A Non-Volatile Dual In-line Memory Module) is going to be supported on Intel's platform. Hi. One question: do this mean, that your qemu emulated nvidimm - pmem solution will work only on Intel host? Currently, it is only enabled in x86 emulator, however, it can be easily enabled on other platform which supports acpi. BTW, you also need to check the linux kernel driver, nfit.ko, which is currently only working on x86 IIUC: config ACPI_NFIT tristate "ACPI NVDIMM Firmware Interface Table (NFIT)" depends on PHYS_ADDR_T_64BIT depends on BLK_DEV depends on ARCH_HAS_MMIO_FLUSH select LIBNVDIMM help Infrastructure to probe ACPI 6 compliant platforms for NVDIMMs (NFIT) and register a libnvdimm device tree. In addition to storage devices this also enables libnvdimm to pass ACPI._DSM messages for platform/dimm configuration. To compile this driver as a module, choose M here: the module will be called nfit. $ git grep ARCH_HAS_MMIO_FLUSH arch/x86/Kconfig: select ARCH_HAS_MMIO_FLUSH drivers/acpi/Kconfig: depends on ARCH_HAS_MMIO_FLUSH lib/Kconfig:config ARCH_HAS_MMIO_FLUSH You should check ARCH_HAS_MMIO_FLUSH on your platform. Thanks! -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v8 0/5] implement vNVDIMM
On Mon, Nov 16, 2015 at 06:50:58PM +0800, Xiao Guangrong wrote: > This patchset can be found at: > https://github.com/xiaogr/qemu.git nvdimm-v8 > > It is based on pci branch on Michael's tree and the top commit is: > commit e3a4e177d9 (migration/ram: fix build on 32 bit hosts). > > Changelog in v8: > We split the long patch series into the small parts, as you see now, this > is the first part which enables NVDIMM without label data support. Finally found some time to review this. Very nice, this is making good progress, and I think to split it like this is a great idea. I sent some comments, most of them minor. Thanks! > The command line has been changed because some patches simplifying the > things have not been included into this series, you should specify the > file size exactly using the parameters as follows: >memory-backend-file,id=mem1,share,mem-path=/tmp/nvdimm1,size=10G \ >-device nvdimm,memdev=mem1,id=nv1 > > Changelog in v7: > - changes from Vladimir Sementsov-Ogievskiy's comments: > 1) let gethugepagesize() realize if fstat is failed instead of get > normal page size > 2) rename open_file_path to open_ram_file_path > 3) better log the error message by using error_setg_errno > 4) update commit in the commit log to explain hugepage detection on > Windows > > - changes from Eduardo Habkost's comments: > 1) use 'Error**' to collect error message for qemu_file_get_page_size() > 2) move gethugepagesize() replacement to the same patch to make it > better for review > 3) introduce qemu_get_file_size to unity the code with raw_getlength() > > - changes from Stefan's comments: > 1) check the memory region is large enough to contain DSM output > buffer > > - changes from Eric Blake's comments: > 1) update the shell command in the commit log to generate the patch > which drops 'pc-dimm' prefix > > - others: > pick up Reviewed-by from Stefan, Vladimir Sementsov-Ogievskiy, and > Eric Blake. > > Changelog in v6: > - changes from Stefan's comments: > 1) fix code style of struct naming by CamelCase way > 2) fix offset + length overflow when read/write label data > 3) compile hw/acpi/nvdimm.c for per target so that TARGET_PAGE_SIZE can > be used to replace getpagesize() > > Changelog in v5: > - changes from Michael's comments: > 1) prefix nvdimm_ to everything in NVDIMM source files > 2) make parsing _DSM Arg3 more clear > 3) comment style fix > 5) drop single used definition > 6) fix dirty dsm buffer lost due to memory write happened on host > 7) check dsm buffer if it is big enough to contain input data > 8) use build_append_int_noprefix to store single value to GArray > > - changes from Michael's and Igor's comments: > 1) introduce 'nvdimm-support' parameter to control nvdimm > enablement and it is disabled for 2.4 and its earlier versions > to make live migration compatible > 2) only reserve 1 RAM page and 4 bytes IO Port for NVDIMM ACPI > virtualization > > - changes from Stefan's comments: > 1) do endian adjustment for the buffer length > > - changes from Bharata B Rao's comments: > 1) fix compile on ppc > > - others: > 1) the buffer length is directly got from IO read rather than got > from dsm memory > 2) fix dirty label data lost due to memory write happened on host > > Changelog in v4: > - changes from Michael's comments: > 1) show the message, "Memory is not allocated from HugeTlbfs", if file > based memory is not allocated from hugetlbfs. > 2) introduce function, acpi_get_nvdimm_state(), to get NVDIMMState > from Machine. > 3) statically define UUID and make its operation more clear > 4) use GArray to build device structures to avoid potential buffer > overflow > 4) improve comments in the code > 5) improve code style > > - changes from Igor's comments: > 1) add NVDIMM ACPI spec document > 2) use serialized method to avoid Mutex > 3) move NVDIMM ACPI's code to hw/acpi/nvdimm.c > 4) introduce a common ASL method used by _DSM for all devices to reduce > ACPI size > 5) handle UUID in ACPI AML code. BTW, i'd keep handling revision in QEMU > it's better to upgrade QEMU to support Rev2 in the future > > - changes from Stefan's comments: > 1) copy input data from DSM memory to local buffer to avoid potential > issues as DSM memory is visible to guest. Output data is handled > in a similar way > > - changes from Dan's comments: > 1) drop static namespace as Linux has already supported label-less > nvdimm devices > > - changes from Vladimir's comments: > 1) print better message, "failed to get file size for %s, can't create > backend on it", if any file operation filed to obtain file size > > - others: > create a git repo on github.com for better review/test > > Also, thanks for Eric Blake's review on QAPI's side. > > Thank all of you to review this patchset. > > Changelog in v3: > There
Re: [PATCH v8 0/5] implement vNVDIMM
On Mon, Nov 16, 2015 at 06:50:58PM +0800, Xiao Guangrong wrote: > This patchset can be found at: > https://github.com/xiaogr/qemu.git nvdimm-v8 > > It is based on pci branch on Michael's tree and the top commit is: > commit e3a4e177d9 (migration/ram: fix build on 32 bit hosts). > > Changelog in v8: > We split the long patch series into the small parts, as you see now, this > is the first part which enables NVDIMM without label data support. > > The command line has been changed because some patches simplifying the > things have not been included into this series, you should specify the > file size exactly using the parameters as follows: >memory-backend-file,id=mem1,share,mem-path=/tmp/nvdimm1,size=10G \ >-device nvdimm,memdev=mem1,id=nv1 > > Changelog in v7: > - changes from Vladimir Sementsov-Ogievskiy's comments: > 1) let gethugepagesize() realize if fstat is failed instead of get > normal page size > 2) rename open_file_path to open_ram_file_path > 3) better log the error message by using error_setg_errno > 4) update commit in the commit log to explain hugepage detection on > Windows > > - changes from Eduardo Habkost's comments: > 1) use 'Error**' to collect error message for qemu_file_get_page_size() > 2) move gethugepagesize() replacement to the same patch to make it > better for review > 3) introduce qemu_get_file_size to unity the code with raw_getlength() > > - changes from Stefan's comments: > 1) check the memory region is large enough to contain DSM output > buffer > > - changes from Eric Blake's comments: > 1) update the shell command in the commit log to generate the patch > which drops 'pc-dimm' prefix > > - others: > pick up Reviewed-by from Stefan, Vladimir Sementsov-Ogievskiy, and > Eric Blake. > > Changelog in v6: > - changes from Stefan's comments: > 1) fix code style of struct naming by CamelCase way > 2) fix offset + length overflow when read/write label data > 3) compile hw/acpi/nvdimm.c for per target so that TARGET_PAGE_SIZE can > be used to replace getpagesize() > > Changelog in v5: > - changes from Michael's comments: > 1) prefix nvdimm_ to everything in NVDIMM source files > 2) make parsing _DSM Arg3 more clear > 3) comment style fix > 5) drop single used definition > 6) fix dirty dsm buffer lost due to memory write happened on host > 7) check dsm buffer if it is big enough to contain input data > 8) use build_append_int_noprefix to store single value to GArray > > - changes from Michael's and Igor's comments: > 1) introduce 'nvdimm-support' parameter to control nvdimm > enablement and it is disabled for 2.4 and its earlier versions > to make live migration compatible > 2) only reserve 1 RAM page and 4 bytes IO Port for NVDIMM ACPI > virtualization > > - changes from Stefan's comments: > 1) do endian adjustment for the buffer length > > - changes from Bharata B Rao's comments: > 1) fix compile on ppc > > - others: > 1) the buffer length is directly got from IO read rather than got > from dsm memory > 2) fix dirty label data lost due to memory write happened on host > > Changelog in v4: > - changes from Michael's comments: > 1) show the message, "Memory is not allocated from HugeTlbfs", if file > based memory is not allocated from hugetlbfs. > 2) introduce function, acpi_get_nvdimm_state(), to get NVDIMMState > from Machine. > 3) statically define UUID and make its operation more clear > 4) use GArray to build device structures to avoid potential buffer > overflow > 4) improve comments in the code > 5) improve code style > > - changes from Igor's comments: > 1) add NVDIMM ACPI spec document > 2) use serialized method to avoid Mutex > 3) move NVDIMM ACPI's code to hw/acpi/nvdimm.c > 4) introduce a common ASL method used by _DSM for all devices to reduce > ACPI size > 5) handle UUID in ACPI AML code. BTW, i'd keep handling revision in QEMU > it's better to upgrade QEMU to support Rev2 in the future > > - changes from Stefan's comments: > 1) copy input data from DSM memory to local buffer to avoid potential > issues as DSM memory is visible to guest. Output data is handled > in a similar way > > - changes from Dan's comments: > 1) drop static namespace as Linux has already supported label-less > nvdimm devices > > - changes from Vladimir's comments: > 1) print better message, "failed to get file size for %s, can't create > backend on it", if any file operation filed to obtain file size > > - others: > create a git repo on github.com for better review/test > > Also, thanks for Eric Blake's review on QAPI's side. > > Thank all of you to review this patchset. > > 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: >
Re: [PATCH v8 0/5] implement vNVDIMM
On 11/30/2015 06:38 PM, Michael S. Tsirkin wrote: On Mon, Nov 16, 2015 at 06:50:58PM +0800, Xiao Guangrong wrote: This patchset can be found at: https://github.com/xiaogr/qemu.git nvdimm-v8 It is based on pci branch on Michael's tree and the top commit is: commit e3a4e177d9 (migration/ram: fix build on 32 bit hosts). Changelog in v8: We split the long patch series into the small parts, as you see now, this is the first part which enables NVDIMM without label data support. Finally found some time to review this. Very nice, this is making good progress, and I think to split it like this is a great idea. I sent some comments, most of them minor. Thanks for your time and really happy to see you like it. :) -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v8 0/5] implement vNVDIMM
On 11/30/2015 04:51 PM, Stefan Hajnoczi wrote: Reviewed-by: Stefan HajnocziThanks for your review Stefan. Will pick up your Reviewed-by in the next version. :) -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [Qemu-devel] [PATCH v8 0/5] implement vNVDIMM
On Thu, Nov 19, 2015 at 10:39:05AM +0800, Xiao Guangrong wrote: > On 11/19/2015 04:44 AM, Michael S. Tsirkin wrote: > >On Wed, Nov 18, 2015 at 05:18:17PM -0200, Eduardo Habkost wrote: > >>On Wed, Nov 18, 2015 at 09:59:34AM +0800, Xiao Guangrong wrote: > >sorry, I'm busy with 2.5 now, and this is clearly not 2.5 material. > > I still see some pull requests were send our for 2.5 merge window today and > yesterday ... > > This patchset is the simplest version we can figure out to implement basic > functionality for vNVDIMM and only minor change is needed for other code. > It would be nice and really appreciate if it can go to 2.5. Here is the release schedule: http://qemu-project.org/Planning/2.5 QEMU is in hard freeze right now. That means only critical bug fixes are being merged. No new features will be merged until the QEMU 2.6 development cycle begins. Stefan signature.asc Description: PGP signature
Re: [PATCH v8 0/5] implement vNVDIMM
On Thu, Nov 19, 2015 at 10:39:05AM +0800, Xiao Guangrong wrote: > > > On 11/19/2015 04:44 AM, Michael S. Tsirkin wrote: > >On Wed, Nov 18, 2015 at 05:18:17PM -0200, Eduardo Habkost wrote: > >>On Wed, Nov 18, 2015 at 09:59:34AM +0800, Xiao Guangrong wrote: > >>> > >>>Ping... > >>> > >>>Do you have any comment on this patchset? Could it be applied to somewhere > >>>if it is okay for you? > >> > >>I have no additional comments, as the memory-backend patches I > >>was reviewing are not included in this version. I didn't take the > >>time to review the TYPE_NVDIMM and ACPI changes. > > > >No, I don't think the way guest memory is allocated here is ok. I'm > > Since the DSM memory/ACPI memory was not included in this patchset, i really > do not understand what is "guest memory is allocated" exactly stands for... I might even be confusing this with another patchset. Let's have this discussion when I have the time to review and respond properly. > >sorry, I'm busy with 2.5 now, and this is clearly not 2.5 material. > > I still see some pull requests were send our for 2.5 merge window today and > yesterday ... > > This patchset is the simplest version we can figure out to implement basic > functionality for vNVDIMM and only minor change is needed for other code. > It would be nice and really appreciate if it can go to 2.5. Sorry, no way, we are in a bugfix only mode for 2.5. > >Once that's out, I'll post some suggestions. > > Look forward to you suggestions. > > Thanks for your time, Michael and Eduardo! -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v8 0/5] implement vNVDIMM
On Wed, Nov 18, 2015 at 09:59:34AM +0800, Xiao Guangrong wrote: > > Ping... > > Do you have any comment on this patchset? Could it be applied to somewhere > if it is okay for you? I have no additional comments, as the memory-backend patches I was reviewing are not included in this version. I didn't take the time to review the TYPE_NVDIMM and ACPI changes. -- Eduardo -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v8 0/5] implement vNVDIMM
On Wed, Nov 18, 2015 at 05:18:17PM -0200, Eduardo Habkost wrote: > On Wed, Nov 18, 2015 at 09:59:34AM +0800, Xiao Guangrong wrote: > > > > Ping... > > > > Do you have any comment on this patchset? Could it be applied to somewhere > > if it is okay for you? > > I have no additional comments, as the memory-backend patches I > was reviewing are not included in this version. I didn't take the > time to review the TYPE_NVDIMM and ACPI changes. No, I don't think the way guest memory is allocated here is ok. I'm sorry, I'm busy with 2.5 now, and this is clearly not 2.5 material. Once that's out, I'll post some suggestions. Thanks! > -- > Eduardo -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v8 0/5] implement vNVDIMM
On 11/19/2015 04:44 AM, Michael S. Tsirkin wrote: On Wed, Nov 18, 2015 at 05:18:17PM -0200, Eduardo Habkost wrote: On Wed, Nov 18, 2015 at 09:59:34AM +0800, Xiao Guangrong wrote: Ping... Do you have any comment on this patchset? Could it be applied to somewhere if it is okay for you? I have no additional comments, as the memory-backend patches I was reviewing are not included in this version. I didn't take the time to review the TYPE_NVDIMM and ACPI changes. No, I don't think the way guest memory is allocated here is ok. I'm Since the DSM memory/ACPI memory was not included in this patchset, i really do not understand what is "guest memory is allocated" exactly stands for... sorry, I'm busy with 2.5 now, and this is clearly not 2.5 material. I still see some pull requests were send our for 2.5 merge window today and yesterday ... This patchset is the simplest version we can figure out to implement basic functionality for vNVDIMM and only minor change is needed for other code. It would be nice and really appreciate if it can go to 2.5. Once that's out, I'll post some suggestions. Look forward to you suggestions. Thanks for your time, Michael and Eduardo! -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v8 0/5] implement vNVDIMM
Ping... Do you have any comment on this patchset? Could it be applied to somewhere if it is okay for you? Thanks! On 11/16/2015 06:50 PM, Xiao Guangrong wrote: This patchset can be found at: https://github.com/xiaogr/qemu.git nvdimm-v8 It is based on pci branch on Michael's tree and the top commit is: commit e3a4e177d9 (migration/ram: fix build on 32 bit hosts). Changelog in v8: We split the long patch series into the small parts, as you see now, this is the first part which enables NVDIMM without label data support. The command line has been changed because some patches simplifying the things have not been included into this series, you should specify the file size exactly using the parameters as follows: memory-backend-file,id=mem1,share,mem-path=/tmp/nvdimm1,size=10G \ -device nvdimm,memdev=mem1,id=nv1 Changelog in v7: - changes from Vladimir Sementsov-Ogievskiy's comments: 1) let gethugepagesize() realize if fstat is failed instead of get normal page size 2) rename open_file_path to open_ram_file_path 3) better log the error message by using error_setg_errno 4) update commit in the commit log to explain hugepage detection on Windows - changes from Eduardo Habkost's comments: 1) use 'Error**' to collect error message for qemu_file_get_page_size() 2) move gethugepagesize() replacement to the same patch to make it better for review 3) introduce qemu_get_file_size to unity the code with raw_getlength() - changes from Stefan's comments: 1) check the memory region is large enough to contain DSM output buffer - changes from Eric Blake's comments: 1) update the shell command in the commit log to generate the patch which drops 'pc-dimm' prefix - others: pick up Reviewed-by from Stefan, Vladimir Sementsov-Ogievskiy, and Eric Blake. Changelog in v6: - changes from Stefan's comments: 1) fix code style of struct naming by CamelCase way 2) fix offset + length overflow when read/write label data 3) compile hw/acpi/nvdimm.c for per target so that TARGET_PAGE_SIZE can be used to replace getpagesize() Changelog in v5: - changes from Michael's comments: 1) prefix nvdimm_ to everything in NVDIMM source files 2) make parsing _DSM Arg3 more clear 3) comment style fix 5) drop single used definition 6) fix dirty dsm buffer lost due to memory write happened on host 7) check dsm buffer if it is big enough to contain input data 8) use build_append_int_noprefix to store single value to GArray - changes from Michael's and Igor's comments: 1) introduce 'nvdimm-support' parameter to control nvdimm enablement and it is disabled for 2.4 and its earlier versions to make live migration compatible 2) only reserve 1 RAM page and 4 bytes IO Port for NVDIMM ACPI virtualization - changes from Stefan's comments: 1) do endian adjustment for the buffer length - changes from Bharata B Rao's comments: 1) fix compile on ppc - others: 1) the buffer length is directly got from IO read rather than got from dsm memory 2) fix dirty label data lost due to memory write happened on host Changelog in v4: - changes from Michael's comments: 1) show the message, "Memory is not allocated from HugeTlbfs", if file based memory is not allocated from hugetlbfs. 2) introduce function, acpi_get_nvdimm_state(), to get NVDIMMState from Machine. 3) statically define UUID and make its operation more clear 4) use GArray to build device structures to avoid potential buffer overflow 4) improve comments in the code 5) improve code style - changes from Igor's comments: 1) add NVDIMM ACPI spec document 2) use serialized method to avoid Mutex 3) move NVDIMM ACPI's code to hw/acpi/nvdimm.c 4) introduce a common ASL method used by _DSM for all devices to reduce ACPI size 5) handle UUID in ACPI AML code. BTW, i'd keep handling revision in QEMU it's better to upgrade QEMU to support Rev2 in the future - changes from Stefan's comments: 1) copy input data from DSM memory to local buffer to avoid potential issues as DSM memory is visible to guest. Output data is handled in a similar way - changes from Dan's comments: 1) drop static namespace as Linux has already supported label-less nvdimm devices - changes from Vladimir's comments: 1) print better message, "failed to get file size for %s, can't create backend on it", if any file operation filed to obtain file size - others: create a git repo on github.com for better review/test Also, thanks for Eric Blake's review on QAPI's side. Thank all of you to review this patchset. 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
[PATCH v8 0/5] implement vNVDIMM
This patchset can be found at: https://github.com/xiaogr/qemu.git nvdimm-v8 It is based on pci branch on Michael's tree and the top commit is: commit e3a4e177d9 (migration/ram: fix build on 32 bit hosts). Changelog in v8: We split the long patch series into the small parts, as you see now, this is the first part which enables NVDIMM without label data support. The command line has been changed because some patches simplifying the things have not been included into this series, you should specify the file size exactly using the parameters as follows: memory-backend-file,id=mem1,share,mem-path=/tmp/nvdimm1,size=10G \ -device nvdimm,memdev=mem1,id=nv1 Changelog in v7: - changes from Vladimir Sementsov-Ogievskiy's comments: 1) let gethugepagesize() realize if fstat is failed instead of get normal page size 2) rename open_file_path to open_ram_file_path 3) better log the error message by using error_setg_errno 4) update commit in the commit log to explain hugepage detection on Windows - changes from Eduardo Habkost's comments: 1) use 'Error**' to collect error message for qemu_file_get_page_size() 2) move gethugepagesize() replacement to the same patch to make it better for review 3) introduce qemu_get_file_size to unity the code with raw_getlength() - changes from Stefan's comments: 1) check the memory region is large enough to contain DSM output buffer - changes from Eric Blake's comments: 1) update the shell command in the commit log to generate the patch which drops 'pc-dimm' prefix - others: pick up Reviewed-by from Stefan, Vladimir Sementsov-Ogievskiy, and Eric Blake. Changelog in v6: - changes from Stefan's comments: 1) fix code style of struct naming by CamelCase way 2) fix offset + length overflow when read/write label data 3) compile hw/acpi/nvdimm.c for per target so that TARGET_PAGE_SIZE can be used to replace getpagesize() Changelog in v5: - changes from Michael's comments: 1) prefix nvdimm_ to everything in NVDIMM source files 2) make parsing _DSM Arg3 more clear 3) comment style fix 5) drop single used definition 6) fix dirty dsm buffer lost due to memory write happened on host 7) check dsm buffer if it is big enough to contain input data 8) use build_append_int_noprefix to store single value to GArray - changes from Michael's and Igor's comments: 1) introduce 'nvdimm-support' parameter to control nvdimm enablement and it is disabled for 2.4 and its earlier versions to make live migration compatible 2) only reserve 1 RAM page and 4 bytes IO Port for NVDIMM ACPI virtualization - changes from Stefan's comments: 1) do endian adjustment for the buffer length - changes from Bharata B Rao's comments: 1) fix compile on ppc - others: 1) the buffer length is directly got from IO read rather than got from dsm memory 2) fix dirty label data lost due to memory write happened on host Changelog in v4: - changes from Michael's comments: 1) show the message, "Memory is not allocated from HugeTlbfs", if file based memory is not allocated from hugetlbfs. 2) introduce function, acpi_get_nvdimm_state(), to get NVDIMMState from Machine. 3) statically define UUID and make its operation more clear 4) use GArray to build device structures to avoid potential buffer overflow 4) improve comments in the code 5) improve code style - changes from Igor's comments: 1) add NVDIMM ACPI spec document 2) use serialized method to avoid Mutex 3) move NVDIMM ACPI's code to hw/acpi/nvdimm.c 4) introduce a common ASL method used by _DSM for all devices to reduce ACPI size 5) handle UUID in ACPI AML code. BTW, i'd keep handling revision in QEMU it's better to upgrade QEMU to support Rev2 in the future - changes from Stefan's comments: 1) copy input data from DSM memory to local buffer to avoid potential issues as DSM memory is visible to guest. Output data is handled in a similar way - changes from Dan's comments: 1) drop static namespace as Linux has already supported label-less nvdimm devices - changes from Vladimir's comments: 1) print better message, "failed to get file size for %s, can't create backend on it", if any file operation filed to obtain file size - others: create a git repo on github.com for better review/test Also, thanks for Eric Blake's review on QAPI's side. Thank all of you to review this patchset. 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