1178c2c79SKip Macy #include <sys/cdefs.h> 212678024SDoug Rabson #include <sys/param.h> 312678024SDoug Rabson #include <sys/systm.h> 412678024SDoug Rabson 5*76acc41fSJustin T. Gibbs #include <xen/xen-os.h> 63a6d1fcfSKip Macy #include <xen/hypervisor.h> 712678024SDoug Rabson #include <xen/features.h> 8178c2c79SKip Macy 9178c2c79SKip Macy uint8_t xen_features[XENFEAT_NR_SUBMAPS * 32] /* __read_mostly */; 10178c2c79SKip Macy 11178c2c79SKip Macy void setup_xen_features(void)12178c2c79SKip Macysetup_xen_features(void) 13178c2c79SKip Macy { 14178c2c79SKip Macy xen_feature_info_t fi; 15178c2c79SKip Macy int i, j; 16178c2c79SKip Macy 17178c2c79SKip Macy for (i = 0; i < XENFEAT_NR_SUBMAPS; i++) { 18178c2c79SKip Macy fi.submap_idx = i; 19178c2c79SKip Macy if (HYPERVISOR_xen_version(XENVER_get_features, &fi) < 0) 20178c2c79SKip Macy break; 21178c2c79SKip Macy for (j = 0; j < 32; j++) 22178c2c79SKip Macy xen_features[i*32 + j] = !!(fi.submap & 1<<j); 23178c2c79SKip Macy } 24178c2c79SKip Macy } 25