mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen: provide version information in hypfs
Provide version and compile information in /buildinfo/ node of the Xen hypervisor file system. As this information is accessible by dom0 only no additional security problem arises. Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
048f82ccd1
commit
b5d4711d2b
2 files changed
+92
No files matched your search
@@ -105,3 +105,48 @@ A populated Xen hypervisor file system might look like the following example:
|
||||
#### /
|
||||
|
||||
The root of the hypervisor file system.
|
||||
|
||||
#### /buildinfo/
|
||||
|
||||
A directory containing static information generated while building the
|
||||
hypervisor.
|
||||
|
||||
#### /buildinfo/changeset = STRING
|
||||
|
||||
Git commit of the hypervisor.
|
||||
|
||||
#### /buildinfo/compileinfo/
|
||||
|
||||
A directory containing information about compilation of Xen.
|
||||
|
||||
#### /buildinfo/compileinfo/compile_by = STRING
|
||||
|
||||
Information who compiled the hypervisor.
|
||||
|
||||
#### /buildinfo/compileinfo/compile_date = STRING
|
||||
|
||||
Date of the hypervisor compilation.
|
||||
|
||||
#### /buildinfo/compileinfo/compile_domain = STRING
|
||||
|
||||
Information about the compile domain.
|
||||
|
||||
#### /buildinfo/compileinfo/compiler = STRING
|
||||
|
||||
The compiler used to build Xen.
|
||||
|
||||
#### /buildinfo/version/
|
||||
|
||||
A directory containing version information of the hypervisor.
|
||||
|
||||
#### /buildinfo/version/extra = STRING
|
||||
|
||||
Extra version information.
|
||||
|
||||
#### /buildinfo/version/major = INTEGER
|
||||
|
||||
The major version of Xen.
|
||||
|
||||
#### /buildinfo/version/minor = INTEGER
|
||||
|
||||
The minor version of Xen.
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <xen/paging.h>
|
||||
#include <xen/guest_access.h>
|
||||
#include <xen/hypercall.h>
|
||||
#include <xen/hypfs.h>
|
||||
#include <xsm/xsm.h>
|
||||
#include <asm/current.h>
|
||||
#include <public/version.h>
|
||||
@@ -373,6 +374,52 @@ void __init do_initcalls(void)
|
||||
(*call)();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HYPFS
|
||||
static unsigned int __read_mostly major_version;
|
||||
static unsigned int __read_mostly minor_version;
|
||||
|
||||
static HYPFS_DIR_INIT(buildinfo, "buildinfo");
|
||||
static HYPFS_DIR_INIT(compileinfo, "compileinfo");
|
||||
static HYPFS_DIR_INIT(version, "version");
|
||||
static HYPFS_UINT_INIT(major, "major", major_version);
|
||||
static HYPFS_UINT_INIT(minor, "minor", minor_version);
|
||||
static HYPFS_STRING_INIT(changeset, "changeset");
|
||||
static HYPFS_STRING_INIT(compiler, "compiler");
|
||||
static HYPFS_STRING_INIT(compile_by, "compile_by");
|
||||
static HYPFS_STRING_INIT(compile_date, "compile_date");
|
||||
static HYPFS_STRING_INIT(compile_domain, "compile_domain");
|
||||
static HYPFS_STRING_INIT(extra, "extra");
|
||||
|
||||
static int __init buildinfo_init(void)
|
||||
{
|
||||
hypfs_add_dir(&hypfs_root, &buildinfo, true);
|
||||
|
||||
hypfs_string_set_reference(&changeset, xen_changeset());
|
||||
hypfs_add_leaf(&buildinfo, &changeset, true);
|
||||
|
||||
hypfs_add_dir(&buildinfo, &compileinfo, true);
|
||||
hypfs_string_set_reference(&compiler, xen_compiler());
|
||||
hypfs_string_set_reference(&compile_by, xen_compile_by());
|
||||
hypfs_string_set_reference(&compile_date, xen_compile_date());
|
||||
hypfs_string_set_reference(&compile_domain, xen_compile_domain());
|
||||
hypfs_add_leaf(&compileinfo, &compiler, true);
|
||||
hypfs_add_leaf(&compileinfo, &compile_by, true);
|
||||
hypfs_add_leaf(&compileinfo, &compile_date, true);
|
||||
hypfs_add_leaf(&compileinfo, &compile_domain, true);
|
||||
|
||||
major_version = xen_major_version();
|
||||
minor_version = xen_minor_version();
|
||||
hypfs_add_dir(&buildinfo, &version, true);
|
||||
hypfs_string_set_reference(&extra, xen_extra_version());
|
||||
hypfs_add_leaf(&version, &extra, true);
|
||||
hypfs_add_leaf(&version, &major, true);
|
||||
hypfs_add_leaf(&version, &minor, true);
|
||||
|
||||
return 0;
|
||||
}
|
||||
__initcall(buildinfo_init);
|
||||
#endif
|
||||
|
||||
# define DO(fn) long do_##fn
|
||||
|
||||
#endif
|
||||
|
||||