Re: [PATCH] drivers/virt: vm_gen_counter: initial driver implementation
Hi Or, Thank you for the patch! Yet something to improve: [auto build test ERROR on char-misc/char-misc-testing] [also build test ERROR on v4.16-rc2 next-20180223] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Or-Idgar/drivers-virt-vm_gen_counter-initial-driver-implementation/20180224-112017 config: i386-allmodconfig (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 All errors (new ones prefixed by >>): >> ERROR: "hypervisor_kobj" [drivers/misc/vmgenid.ko] undefined! --- 0-DAY kernel test infrastructureOpen Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation .config.gz Description: application/gzip
Re: [PATCH] drivers/virt: vm_gen_counter: initial driver implementation
Hi Or, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on char-misc/char-misc-testing] [also build test WARNING on v4.16-rc2 next-20180223] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Or-Idgar/drivers-virt-vm_gen_counter-initial-driver-implementation/20180224-112017 reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__ sparse warnings: (new ones prefixed by >>) >> drivers/misc/vmgenid.c:35:15: sparse: incorrect type in assignment >> (different address spaces) @@ expected struct uuid_t @@ got uct uuid_t @@ drivers/misc/vmgenid.c:35:15: expected struct uuid_t drivers/misc/vmgenid.c:35:15: got void >> drivers/misc/vmgenid.c:40:29: sparse: incorrect type in argument 1 >> (different address spaces) @@ expected void @@ got strvoid @@ drivers/misc/vmgenid.c:40:29: expected void drivers/misc/vmgenid.c:40:29: got struct uuid_t drivers/misc/vmgenid.c:51:15: sparse: incorrect type in assignment (different address spaces) @@ expected struct uuid_t @@ got uct uuid_t @@ drivers/misc/vmgenid.c:51:15: expected struct uuid_t drivers/misc/vmgenid.c:51:15: got void drivers/misc/vmgenid.c:55:29: sparse: incorrect type in argument 1 (different address spaces) @@ expected void @@ got strvoid @@ drivers/misc/vmgenid.c:55:29: expected void drivers/misc/vmgenid.c:55:29: got struct uuid_t vim +35 drivers/misc/vmgenid.c 28 29 static ssize_t generation_id_show(struct device *_d, 30struct device_attribute *attr, char *buf) 31 { 32 uuid_t *uuidp; 33 ssize_t result; 34 > 35 uuidp = acpi_os_map_iomem(phy_addr, sizeof(uuid_t)); 36 if (!uuidp) 37 return -EFAULT; 38 39 result = sprintf(buf, "%pUl\n", uuidp); > 40 acpi_os_unmap_iomem(uuidp, sizeof(uuid_t)); 41 return result; 42 } 43 static DEVICE_ATTR_RO(generation_id); 44 --- 0-DAY kernel test infrastructureOpen Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Re: [PATCH] drivers/virt: vm_gen_counter: initial driver implementation
Hi Or, Thank you for the patch! Yet something to improve: [auto build test ERROR on char-misc/char-misc-testing] [also build test ERROR on v4.16-rc2 next-20180223] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Or-Idgar/drivers-virt-vm_gen_counter-initial-driver-implementation/20180224-112017 config: sh-allmodconfig (attached as .config) compiler: sh4-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=sh All error/warnings (new ones prefixed by >>): drivers/misc/vmgenid.c: In function 'generation_id_show': >> drivers/misc/vmgenid.c:35:10: error: implicit declaration of function >> 'acpi_os_map_iomem'; did you mean 'acpi_os_read_iomem'? >> [-Werror=implicit-function-declaration] uuidp = acpi_os_map_iomem(phy_addr, sizeof(uuid_t)); ^ acpi_os_read_iomem >> drivers/misc/vmgenid.c:35:8: warning: assignment makes pointer from integer >> without a cast [-Wint-conversion] uuidp = acpi_os_map_iomem(phy_addr, sizeof(uuid_t)); ^ >> drivers/misc/vmgenid.c:40:2: error: implicit declaration of function >> 'acpi_os_unmap_iomem'; did you mean 'acpi_os_read_iomem'? >> [-Werror=implicit-function-declaration] acpi_os_unmap_iomem(uuidp, sizeof(uuid_t)); ^~~ acpi_os_read_iomem drivers/misc/vmgenid.c: In function 'raw_show': drivers/misc/vmgenid.c:51:8: warning: assignment makes pointer from integer without a cast [-Wint-conversion] uuidp = acpi_os_map_iomem(phy_addr, sizeof(uuid_t)); ^ drivers/misc/vmgenid.c: In function 'acpi_vmgenid_add': >> drivers/misc/vmgenid.c:103:29: error: dereferencing pointer to incomplete >> type 'struct acpi_device' retval = get_vmgenid(device->handle); ^~ drivers/misc/vmgenid.c: At top level: >> drivers/misc/vmgenid.c:115:36: error: array type has incomplete element type >> 'struct acpi_device_id' static const struct acpi_device_id vmgenid_ids[] = { ^~~ >> drivers/misc/vmgenid.c:120:15: error: variable 'acpi_vmgenid_driver' has >> initializer but incomplete type static struct acpi_driver acpi_vmgenid_driver = { ^~~ >> drivers/misc/vmgenid.c:121:3: error: 'struct acpi_driver' has no member >> named 'name' .name = "vm_gen_counter", ^~~~ >> drivers/misc/vmgenid.c:121:10: warning: excess elements in struct initializer .name = "vm_gen_counter", ^~~~ drivers/misc/vmgenid.c:121:10: note: (near initialization for 'acpi_vmgenid_driver') >> drivers/misc/vmgenid.c:122:3: error: 'struct acpi_driver' has no member >> named 'ids' .ids = vmgenid_ids, ^~~ drivers/misc/vmgenid.c:122:9: warning: excess elements in struct initializer .ids = vmgenid_ids, ^~~ drivers/misc/vmgenid.c:122:9: note: (near initialization for 'acpi_vmgenid_driver') >> drivers/misc/vmgenid.c:123:3: error: 'struct acpi_driver' has no member >> named 'owner' .owner = THIS_MODULE, ^ In file included from include/linux/linkage.h:7:0, from include/linux/kernel.h:7, from include/linux/list.h:9, from include/linux/module.h:9, from drivers/misc/vmgenid.c:14: include/linux/export.h:35:21: warning: excess elements in struct initializer #define THIS_MODULE (&__this_module) ^ >> drivers/misc/vmgenid.c:123:11: note: in expansion of macro 'THIS_MODULE' .owner = THIS_MODULE, ^~~ include/linux/export.h:35:21: note: (near initialization for 'acpi_vmgenid_driver') #define THIS_MODULE (&__this_module) ^ >> drivers/misc/vmgenid.c:123:11: note: in expansion of macro 'THIS_MODULE' .owner = THIS_MODULE, ^~~ >> drivers/misc/vmgenid.c:124:3: error: 'struct acpi_driver' has no member >> named 'ops' .ops = { ^~~ >> drivers/misc/vmgenid.c:124:9: error: extra brace group at end of initializer .ops = { ^ drivers/misc/vmgenid.c:124:9: note: (near initialization for 'acpi_vmgenid_driver') drivers/misc/vmgenid.c:124:9: warning: excess elements in struct initializer drivers/misc/vmgenid.c:124:9: note: (near initialization for 'acpi_vmgenid_driver') drivers/misc/vmgenid.c: In function 'vmgenid_init': >> drivers/misc/vmgenid.c:132:9: error: implicit declaration of function >> 'acpi_bus_register_driver'; did you mean 'acpi_nvs_register'? >> [-Werror=implicit-function-declaration] return acpi_bus_register_driver(&acpi_vmgenid_driver); ^~
Re: [PATCH] drivers/virt: vm_gen_counter: initial driver implementation
Hi, On Thu, Feb 22, 2018 at 6:36 PM, Greg KH wrote: > On Thu, Feb 22, 2018 at 06:20:38PM +0200, Or Idgar wrote: >> From: Or Idgar >> >> This patch is a driver which expose the Virtual Machine Generation ID >> via sysfs. The ID is a UUID value used to differentiate between virtual >> machines. >> >> The VM-Generation ID is a feature defined by Microsoft (paper: >> http://go.microsoft.com/fwlink/?LinkId=260709) and supported by multiple >> hypervisor vendors. >> >> Signed-off-by: Or Idgar >> --- >> Documentation/ABI/testing/sysfs-hypervisor | 13 +++ >> drivers/misc/Kconfig | 6 ++ >> drivers/misc/Makefile | 1 + >> drivers/misc/vmgenid.c | 141 >> + >> 4 files changed, 161 insertions(+) >> create mode 100644 Documentation/ABI/testing/sysfs-hypervisor >> create mode 100644 drivers/misc/vmgenid.c >> >> diff --git a/Documentation/ABI/testing/sysfs-hypervisor >> b/Documentation/ABI/testing/sysfs-hypervisor >> new file mode 100644 >> index ..2f9a7b8eab70 >> --- /dev/null >> +++ b/Documentation/ABI/testing/sysfs-hypervisor >> @@ -0,0 +1,13 @@ >> +What:/sys/hypervisor/vm_gen_counter > > Shouldn't this go under the specific hypervisor you are running on? Why > in the "root" of /sys/hypervisor? As far as I know, most of today's hypervisors support this feature, so adding a subdirectory doesn't seem right. The guest user should be able to access the UUID without a knowledge of the running host. At the moment, the driver supports only QEMU, but we're planning to enhance it once we'll have access to other vendor hypervisors. > >> +Date:February 2018 >> +Contact: Or Idgar >> + Gal Hammer >> +Description: Expose the virtual machine generation ID. The directory >> + contains two files: "generation_id" and "raw". Both files >> + represent the same information. >> + >> + "generation_id" file is a UUID string >> + representation. >> + >> + "raw" file is a 128-bit integer >> + representation (binary). >> diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig >> index 03605f8fc0dc..5a74802bdfb4 100644 >> --- a/drivers/misc/Kconfig >> +++ b/drivers/misc/Kconfig >> @@ -500,6 +500,12 @@ config MISC_RTSX >> tristate >> default MISC_RTSX_PCI || MISC_RTSX_USB >> >> +config VMGENID >> + tristate "Virtual Machine Generation ID driver" >> + help >> + This is a Virtual Machine Generation ID driver which provides >> + a virtual machine unique identifier. >> + >> source "drivers/misc/c2port/Kconfig" >> source "drivers/misc/eeprom/Kconfig" >> source "drivers/misc/cb710/Kconfig" >> diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile >> index c3c8624f4d95..067aa666bb6a 100644 >> --- a/drivers/misc/Makefile >> +++ b/drivers/misc/Makefile >> @@ -57,6 +57,7 @@ obj-$(CONFIG_ASPEED_LPC_SNOOP) += aspeed-lpc-snoop.o >> obj-$(CONFIG_PCI_ENDPOINT_TEST) += pci_endpoint_test.o >> obj-$(CONFIG_OCXL) += ocxl/ >> obj-$(CONFIG_MISC_RTSX) += cardreader/ >> +obj-$(CONFIG_VMGENID)+= vmgenid.o >> >> lkdtm-$(CONFIG_LKDTM)+= lkdtm_core.o >> lkdtm-$(CONFIG_LKDTM)+= lkdtm_bugs.o >> diff --git a/drivers/misc/vmgenid.c b/drivers/misc/vmgenid.c >> new file mode 100644 >> index ..9d7f09f9e7bd >> --- /dev/null >> +++ b/drivers/misc/vmgenid.c >> @@ -0,0 +1,141 @@ >> +/* >> + * Virtual Machine Generation ID driver >> + * >> + * Copyright (C) 2018 Red Hat, Inc. All rights reserved. >> + * Authors: >> + * Or Idgar >> + * Gal Hammer >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License version 2 as >> + * published by the Free Software Foundation. > > No SPDX line? Please see the documentation for how to properly add this > as the first line of any new file. We'll give it another try. > I want some hypervisor people to weigh in on this before I can take > it... > > thanks, > > greg k-h Thank you. Gal.
Re: [PATCH] drivers/virt: vm_gen_counter: initial driver implementation
On Thu, Feb 22, 2018 at 06:20:38PM +0200, Or Idgar wrote: > From: Or Idgar > > This patch is a driver which expose the Virtual Machine Generation ID > via sysfs. The ID is a UUID value used to differentiate between virtual > machines. > > The VM-Generation ID is a feature defined by Microsoft (paper: > http://go.microsoft.com/fwlink/?LinkId=260709) and supported by multiple > hypervisor vendors. > > Signed-off-by: Or Idgar > --- > Documentation/ABI/testing/sysfs-hypervisor | 13 +++ > drivers/misc/Kconfig | 6 ++ > drivers/misc/Makefile | 1 + > drivers/misc/vmgenid.c | 141 > + > 4 files changed, 161 insertions(+) > create mode 100644 Documentation/ABI/testing/sysfs-hypervisor > create mode 100644 drivers/misc/vmgenid.c > > diff --git a/Documentation/ABI/testing/sysfs-hypervisor > b/Documentation/ABI/testing/sysfs-hypervisor > new file mode 100644 > index ..2f9a7b8eab70 > --- /dev/null > +++ b/Documentation/ABI/testing/sysfs-hypervisor > @@ -0,0 +1,13 @@ > +What:/sys/hypervisor/vm_gen_counter Shouldn't this go under the specific hypervisor you are running on? Why in the "root" of /sys/hypervisor? > +Date:February 2018 > +Contact: Or Idgar > + Gal Hammer > +Description: Expose the virtual machine generation ID. The directory > + contains two files: "generation_id" and "raw". Both files > + represent the same information. > + > + "generation_id" file is a UUID string > + representation. > + > + "raw" file is a 128-bit integer > + representation (binary). > diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig > index 03605f8fc0dc..5a74802bdfb4 100644 > --- a/drivers/misc/Kconfig > +++ b/drivers/misc/Kconfig > @@ -500,6 +500,12 @@ config MISC_RTSX > tristate > default MISC_RTSX_PCI || MISC_RTSX_USB > > +config VMGENID > + tristate "Virtual Machine Generation ID driver" > + help > + This is a Virtual Machine Generation ID driver which provides > + a virtual machine unique identifier. > + > source "drivers/misc/c2port/Kconfig" > source "drivers/misc/eeprom/Kconfig" > source "drivers/misc/cb710/Kconfig" > diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile > index c3c8624f4d95..067aa666bb6a 100644 > --- a/drivers/misc/Makefile > +++ b/drivers/misc/Makefile > @@ -57,6 +57,7 @@ obj-$(CONFIG_ASPEED_LPC_SNOOP) += aspeed-lpc-snoop.o > obj-$(CONFIG_PCI_ENDPOINT_TEST) += pci_endpoint_test.o > obj-$(CONFIG_OCXL) += ocxl/ > obj-$(CONFIG_MISC_RTSX) += cardreader/ > +obj-$(CONFIG_VMGENID)+= vmgenid.o > > lkdtm-$(CONFIG_LKDTM)+= lkdtm_core.o > lkdtm-$(CONFIG_LKDTM)+= lkdtm_bugs.o > diff --git a/drivers/misc/vmgenid.c b/drivers/misc/vmgenid.c > new file mode 100644 > index ..9d7f09f9e7bd > --- /dev/null > +++ b/drivers/misc/vmgenid.c > @@ -0,0 +1,141 @@ > +/* > + * Virtual Machine Generation ID driver > + * > + * Copyright (C) 2018 Red Hat, Inc. All rights reserved. > + * Authors: > + * Or Idgar > + * Gal Hammer > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. No SPDX line? Please see the documentation for how to properly add this as the first line of any new file. I want some hypervisor people to weigh in on this before I can take it... thanks, greg k-h