// SPDX-License-Identifier: GPL-2.0-only
/******************************************************************************
* features . c
*
* Xen feature flags .
*
* Copyright ( c ) 2006 , Ian Campbell , XenSource Inc .
*/
#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);
void xen_setup_features(void )
{
struct xen_feature_info fi;
int i, j;
for (i = 0 ; i < XENFEAT_NR_SUBMAPS; i++) {
fi.submap_idx = i;
if (HYPERVISOR_xen_version(XENVER_get_features, &fi) < 0 )
break ;
for (j = 0 ; j < 32 ; j++)
xen_features[i * 32 + j] = !!(fi.submap & 1 U << j);
}
if (xen_pv_domain()) {
chk_required_feature(XENFEAT_mmu_pt_update_preserve_ad);
chk_required_feature(XENFEAT_gnttab_map_avail_bits);
}
}
Messung V0.5 in Prozent C=95 H=46 G=74
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-09-29)
¤
*© Formatika GbR, Deutschland