On 7/29/2019 3:54 PM, Nuno Das Neves wrote: > *From:*Stephen Hemminger <sthem...@microsoft.com> > *Sent:* Friday, 26 July 2019 5:43 PM > *To:* Nuno Das Neves <nuno....@microsoft.com>; Nuno Das Neves > <nuno....@microsoft.com>; gre...@linuxfoundation.org > <gre...@linuxfoundation.org>; Sasha Levin <alexander.le...@microsoft.com>; > Haiyang Zhang <haiya...@microsoft.com>; KY Srinivasan <k...@microsoft.com>; > Michael Kelley <mikel...@microsoft.com> > *Cc:* linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org> > *Subject:* Re: [RFC PATCH 1/2] sys-hypervisor: /sys/hypervisor/type for > Hyper-V > > I am not sure about this. > The existing tools like lscpu just use CPUID. What is does this addition add? > The main motivation is to replicate functionality available on Xen.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ > *From:* Nuno Das Neves <nudas...@microsoft.com> > *Sent:* Friday, July 26, 2019 4:17 PM > *To:* Nuno Das Neves <nuno....@microsoft.com>; gre...@linuxfoundation.org > <gre...@linuxfoundation.org>; Stephen Hemminger <sthem...@microsoft.com>; > Sasha Levin <alexander.le...@microsoft.com>; Haiyang Zhang > <haiya...@microsoft.com>; KY Srinivasan <k...@microsoft.com>; Michael Kelley > <mikel...@microsoft.com> > *Cc:* linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org> > *Subject:* [RFC PATCH 1/2] sys-hypervisor: /sys/hypervisor/type for Hyper-V > > Populate /sys/hypervisor with entries for Hyper-V. > This patch adds /sys/hypervisor/type which contains "Hyper-V". > > Signed-off-by: Nuno Das Neves <nudas...@microsoft.com> > --- > .../ABI/stable/sysfs-hypervisor-hyperv | 7 ++++ > drivers/hv/Kconfig | 10 +++++ > drivers/hv/Makefile | 7 ++-- > drivers/hv/sys-hypervisor.c | 41 +++++++++++++++++++ > 4 files changed, 62 insertions(+), 3 deletions(-) > create mode 100644 Documentation/ABI/stable/sysfs-hypervisor-hyperv > create mode 100644 drivers/hv/sys-hypervisor.c > > diff --git a/Documentation/ABI/stable/sysfs-hypervisor-hyperv > b/Documentation/ABI/stable/sysfs-hypervisor-hyperv > new file mode 100644 > index 000000000000..58380ea81315 > --- /dev/null > +++ b/Documentation/ABI/stable/sysfs-hypervisor-hyperv > @@ -0,0 +1,7 @@ > +What: /sys/hypervisor/type > +Date: July 2019 > +KernelVersion: 5.2.1 > +Contact: linux-hyp...@vger.kernel.org > +Description: If running under Hyper-V: > + Type of hypervisor: > + "Hyper-V": Hyper-V hypervisor > diff --git a/drivers/hv/Kconfig b/drivers/hv/Kconfig > index 1c1a2514d6f3..e693adf0b77f 100644 > --- a/drivers/hv/Kconfig > +++ b/drivers/hv/Kconfig > @@ -25,4 +25,14 @@ config HYPERV_BALLOON > help > Select this option to enable Hyper-V Balloon driver. > > +config HYPERV_SYS_HYPERVISOR > + bool "Create Hyper-V entries under /sys/hypervisor" > + depends on HYPERV && SYSFS > + select SYS_HYPERVISOR > + default y > + help > + Create Hyper-V entries under /sys/hypervisor (e.g., type). When > running > + native or on another hypervisor, /sys/hypervisor may still be > + present, but it will have no Hyper-V entries. > + > endmenu > diff --git a/drivers/hv/Makefile b/drivers/hv/Makefile > index a1eec7177c2d..87f569659555 100644 > --- a/drivers/hv/Makefile > +++ b/drivers/hv/Makefile > @@ -1,7 +1,8 @@ > # SPDX-License-Identifier: GPL-2.0 > -obj-$(CONFIG_HYPERV) += hv_vmbus.o > -obj-$(CONFIG_HYPERV_UTILS) += hv_utils.o > -obj-$(CONFIG_HYPERV_BALLOON) += hv_balloon.o > +obj-$(CONFIG_HYPERV) += hv_vmbus.o > +obj-$(CONFIG_HYPERV_UTILS) += hv_utils.o > +obj-$(CONFIG_HYPERV_BALLOON) += hv_balloon.o > +obj-$(CONFIG_HYPERV_SYS_HYPERVISOR) += sys-hypervisor.o > > CFLAGS_hv_trace.o = -I$(src) > CFLAGS_hv_balloon.o = -I$(src) > diff --git a/drivers/hv/sys-hypervisor.c b/drivers/hv/sys-hypervisor.c > new file mode 100644 > index 000000000000..eb3d2a6502c4 > --- /dev/null > +++ b/drivers/hv/sys-hypervisor.c > @@ -0,0 +1,41 @@ > +// SPDX-License-Identifier: GPL-2.0 > + > +/* > + * Copyright (C) 2019, Microsoft, Inc. > + * > + * Authored by: Nuno Das Neves <nudas...@microsoft.com> > + */ > + > +#include <linux/kernel.h> > +#include <linux/init.h> > +#include <linux/kobject.h> > +#include <linux/err.h> > + > +#include <asm/hypervisor.h> > + > +static ssize_t type_show(struct kobject *obj, > + struct kobj_attribute *attr, > + char *buf) > +{ > + return sprintf(buf, "Hyper-V\n"); > +} > + > +static struct kobj_attribute type_attr = __ATTR_RO(type); > + > +static int __init hyperv_sysfs_type_init(void) > +{ > + return sysfs_create_file(hypervisor_kobj, &type_attr.attr); > +} > + > +static int __init hyper_sysfs_init(void) > +{ > + int ret; > + > + if (!hypervisor_is_type(X86_HYPER_MS_HYPERV)) > + return -ENODEV; > + > + ret = hyperv_sysfs_type_init(); > + > + return ret; > +} > +device_initcall(hyper_sysfs_init); > -- > 2.17.1 >