Message ID | 20170612142150.15283-3-jgross@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
> diff --git a/drivers/xen/sys-hypervisor.c b/drivers/xen/sys-hypervisor.c > index 84106f9c456c..d641e9970d5d 100644 > --- a/drivers/xen/sys-hypervisor.c > +++ b/drivers/xen/sys-hypervisor.c > @@ -50,6 +50,18 @@ static int __init xen_sysfs_type_init(void) > return sysfs_create_file(hypervisor_kobj, &type_attr.attr); > } > > +static ssize_t guest_type_show(struct hyp_sysfs_attr *attr, char *buffer) > +{ > + return sprintf(buffer, "%s\n", xen_guest_type); > +} So I know I gave my R-b for this patch but can't we just key off xen_domain_type and not have xen_guest_type at all? -boris
On 14/06/17 16:48, Boris Ostrovsky wrote: > >> diff --git a/drivers/xen/sys-hypervisor.c b/drivers/xen/sys-hypervisor.c >> index 84106f9c456c..d641e9970d5d 100644 >> --- a/drivers/xen/sys-hypervisor.c >> +++ b/drivers/xen/sys-hypervisor.c >> @@ -50,6 +50,18 @@ static int __init xen_sysfs_type_init(void) >> return sysfs_create_file(hypervisor_kobj, &type_attr.attr); >> } >> >> +static ssize_t guest_type_show(struct hyp_sysfs_attr *attr, char *buffer) >> +{ >> + return sprintf(buffer, "%s\n", xen_guest_type); >> +} > > > So I know I gave my R-b for this patch but can't we just key off > xen_domain_type and not have xen_guest_type at all? So we'd need to introduce XEN_PVH_DOMAIN and adjust xen_hvm_domain(). Juergen
On 06/14/2017 11:00 AM, Juergen Gross wrote: > On 14/06/17 16:48, Boris Ostrovsky wrote: >>> diff --git a/drivers/xen/sys-hypervisor.c b/drivers/xen/sys-hypervisor.c >>> index 84106f9c456c..d641e9970d5d 100644 >>> --- a/drivers/xen/sys-hypervisor.c >>> +++ b/drivers/xen/sys-hypervisor.c >>> @@ -50,6 +50,18 @@ static int __init xen_sysfs_type_init(void) >>> return sysfs_create_file(hypervisor_kobj, &type_attr.attr); >>> } >>> >>> +static ssize_t guest_type_show(struct hyp_sysfs_attr *attr, char *buffer) >>> +{ >>> + return sprintf(buffer, "%s\n", xen_guest_type); >>> +} >> >> So I know I gave my R-b for this patch but can't we just key off >> xen_domain_type and not have xen_guest_type at all? > So we'd need to introduce XEN_PVH_DOMAIN and adjust xen_hvm_domain(). Can't we use xen_pvh_domain()? -boris
On 14/06/17 17:01, Boris Ostrovsky wrote: > On 06/14/2017 11:00 AM, Juergen Gross wrote: >> On 14/06/17 16:48, Boris Ostrovsky wrote: >>>> diff --git a/drivers/xen/sys-hypervisor.c b/drivers/xen/sys-hypervisor.c >>>> index 84106f9c456c..d641e9970d5d 100644 >>>> --- a/drivers/xen/sys-hypervisor.c >>>> +++ b/drivers/xen/sys-hypervisor.c >>>> @@ -50,6 +50,18 @@ static int __init xen_sysfs_type_init(void) >>>> return sysfs_create_file(hypervisor_kobj, &type_attr.attr); >>>> } >>>> >>>> +static ssize_t guest_type_show(struct hyp_sysfs_attr *attr, char *buffer) >>>> +{ >>>> + return sprintf(buffer, "%s\n", xen_guest_type); >>>> +} >>> >>> So I know I gave my R-b for this patch but can't we just key off >>> xen_domain_type and not have xen_guest_type at all? >> So we'd need to introduce XEN_PVH_DOMAIN and adjust xen_hvm_domain(). > > Can't we use xen_pvh_domain()? Sure. I thought you meant to have the needed information all in xen_domain_type. I'll adjust the patch. Juergen
diff --git a/Documentation/ABI/testing/sysfs-hypervisor-pmu b/Documentation/ABI/testing/sysfs-hypervisor-xen similarity index 67% rename from Documentation/ABI/testing/sysfs-hypervisor-pmu rename to Documentation/ABI/testing/sysfs-hypervisor-xen index 224faa105e18..c0edb3fdd6eb 100644 --- a/Documentation/ABI/testing/sysfs-hypervisor-pmu +++ b/Documentation/ABI/testing/sysfs-hypervisor-xen @@ -1,8 +1,19 @@ +What: /sys/hypervisor/guest_type +Date: May 2017 +KernelVersion: 4.13 +Contact: xen-devel@lists.xenproject.org +Description: If running under Xen: + Type of guest: + "Xen": standard guest type on arm + "HVM": fully virtualized guest (x86) + "PV": paravirtualized guest (x86) + "PVH": fully virtualized guest without legacy emulation (x86) + What: /sys/hypervisor/pmu/pmu_mode Date: August 2015 KernelVersion: 4.3 Contact: Boris Ostrovsky <boris.ostrovsky@oracle.com> -Description: +Description: If running under Xen: Describes mode that Xen's performance-monitoring unit (PMU) uses. Accepted values are "off" -- PMU is disabled @@ -17,7 +28,7 @@ What: /sys/hypervisor/pmu/pmu_features Date: August 2015 KernelVersion: 4.3 Contact: Boris Ostrovsky <boris.ostrovsky@oracle.com> -Description: +Description: If running under Xen: Describes Xen PMU features (as an integer). A set bit indicates that the corresponding feature is enabled. See include/xen/interface/xenpmu.h for available features diff --git a/MAINTAINERS b/MAINTAINERS index 68c31aebb79c..5630439429e6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -13983,7 +13983,7 @@ F: arch/x86/include/asm/xen/ F: include/xen/ F: include/uapi/xen/ F: Documentation/ABI/stable/sysfs-hypervisor-xen -F: Documentation/ABI/testing/sysfs-hypervisor-pmu +F: Documentation/ABI/testing/sysfs-hypervisor-xen XEN HYPERVISOR ARM M: Stefano Stabellini <sstabellini@kernel.org> diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c index ba7f4c8f5c3e..7429af623379 100644 --- a/arch/arm/xen/enlighten.c +++ b/arch/arm/xen/enlighten.c @@ -43,6 +43,9 @@ EXPORT_SYMBOL(xen_start_info); enum xen_domain_type xen_domain_type = XEN_NATIVE; EXPORT_SYMBOL(xen_domain_type); +const char *xen_guest_type = "Xen"; +EXPORT_SYMBOL_GPL(xen_guest_type); + struct shared_info xen_dummy_shared_info; struct shared_info *HYPERVISOR_shared_info = (void *)&xen_dummy_shared_info; diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index a5ffcbb20cc0..17b6503df291 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c @@ -47,6 +47,9 @@ EXPORT_PER_CPU_SYMBOL(xen_vcpu_id); enum xen_domain_type xen_domain_type = XEN_NATIVE; EXPORT_SYMBOL_GPL(xen_domain_type); +const char *xen_guest_type = "HVM"; +EXPORT_SYMBOL_GPL(xen_guest_type); + unsigned long *machine_to_phys_mapping = (void *)MACH2PHYS_VIRT_START; EXPORT_SYMBOL(machine_to_phys_mapping); unsigned long machine_to_phys_nr; diff --git a/arch/x86/xen/enlighten_hvm.c b/arch/x86/xen/enlighten_hvm.c index a6d014f47e52..bda98726d139 100644 --- a/arch/x86/xen/enlighten_hvm.c +++ b/arch/x86/xen/enlighten_hvm.c @@ -68,9 +68,10 @@ static void __init init_hvm_pv_info(void) xen_domain_type = XEN_HVM_DOMAIN; /* PVH set up hypercall page in xen_prepare_pvh(). */ - if (xen_pvh_domain()) + if (xen_pvh_domain()) { pv_info.name = "Xen PVH"; - else { + xen_guest_type = "PVH"; + } else { u64 pfn; uint32_t msr; diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c index f33eef4ebd12..7ac5e93d96f3 100644 --- a/arch/x86/xen/enlighten_pv.c +++ b/arch/x86/xen/enlighten_pv.c @@ -1255,6 +1255,7 @@ asmlinkage __visible void __init xen_start_kernel(void) return; xen_domain_type = XEN_PV_DOMAIN; + xen_guest_type = "PV"; xen_setup_features(); diff --git a/drivers/xen/sys-hypervisor.c b/drivers/xen/sys-hypervisor.c index 84106f9c456c..d641e9970d5d 100644 --- a/drivers/xen/sys-hypervisor.c +++ b/drivers/xen/sys-hypervisor.c @@ -50,6 +50,18 @@ static int __init xen_sysfs_type_init(void) return sysfs_create_file(hypervisor_kobj, &type_attr.attr); } +static ssize_t guest_type_show(struct hyp_sysfs_attr *attr, char *buffer) +{ + return sprintf(buffer, "%s\n", xen_guest_type); +} + +HYPERVISOR_ATTR_RO(guest_type); + +static int __init xen_sysfs_guest_type_init(void) +{ + return sysfs_create_file(hypervisor_kobj, &guest_type_attr.attr); +} + /* xen version attributes */ static ssize_t major_show(struct hyp_sysfs_attr *attr, char *buffer) { @@ -471,6 +483,9 @@ static int __init hyper_sysfs_init(void) ret = xen_sysfs_type_init(); if (ret) goto out; + ret = xen_sysfs_guest_type_init(); + if (ret) + goto guest_type_out; ret = xen_sysfs_version_init(); if (ret) goto version_out; @@ -502,6 +517,8 @@ static int __init hyper_sysfs_init(void) comp_out: sysfs_remove_group(hypervisor_kobj, &version_group); version_out: + sysfs_remove_file(hypervisor_kobj, &guest_type_attr.attr); +guest_type_out: sysfs_remove_file(hypervisor_kobj, &type_attr.attr); out: return ret; diff --git a/include/xen/xen.h b/include/xen/xen.h index 6e8b7fc79801..f02d1732d7a6 100644 --- a/include/xen/xen.h +++ b/include/xen/xen.h @@ -9,8 +9,10 @@ enum xen_domain_type { #ifdef CONFIG_XEN extern enum xen_domain_type xen_domain_type; +extern const char *xen_guest_type; #else #define xen_domain_type XEN_NATIVE +#define xen_guest_type "native" #endif #define xen_domain() (xen_domain_type != XEN_NATIVE)