xen: check required Xen features
Linux kernel is not supported to run on Xen versions older than 4.0. Add tests for required Xen features always being present in Xen 4.0 and newer. Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Link: https://lore.kernel.org/r/20210730071804.4302-2-jgross@suse.com Signed-off-by: Juergen Gross <jgross@suse.com>
This commit is contained in:
Родитель
4b511d5bfa
Коммит
ac4c403c90
|
@ -9,13 +9,26 @@
|
|||
#include <linux/types.h>
|
||||
#include <linux/cache.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/printk.h>
|
||||
|
||||
#include <asm/xen/hypercall.h>
|
||||
|
||||
#include <xen/xen.h>
|
||||
#include <xen/interface/xen.h>
|
||||
#include <xen/interface/version.h>
|
||||
#include <xen/features.h>
|
||||
|
||||
/*
|
||||
* Linux kernel expects at least Xen 4.0.
|
||||
*
|
||||
* Assume some features to be available for that reason (depending on guest
|
||||
* mode, of course).
|
||||
*/
|
||||
#define chk_required_feature(f) { \
|
||||
if (!xen_feature(f)) \
|
||||
panic("Xen: feature %s not available!\n", #f); \
|
||||
}
|
||||
|
||||
u8 xen_features[XENFEAT_NR_SUBMAPS * 32] __read_mostly;
|
||||
EXPORT_SYMBOL_GPL(xen_features);
|
||||
|
||||
|
@ -31,4 +44,9 @@ void xen_setup_features(void)
|
|||
for (j = 0; j < 32; j++)
|
||||
xen_features[i * 32 + j] = !!(fi.submap & 1<<j);
|
||||
}
|
||||
|
||||
if (xen_pv_domain()) {
|
||||
chk_required_feature(XENFEAT_mmu_pt_update_preserve_ad);
|
||||
chk_required_feature(XENFEAT_gnttab_map_avail_bits);
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче