1178c2c79SKip Macy #include <sys/cdefs.h> 2178c2c79SKip Macy __FBSDID("$FreeBSD$"); 3178c2c79SKip Macy 4178c2c79SKip Macy #include <sys/types.h> 5178c2c79SKip Macy #include <machine/xen/xen-os.h> 63a6d1fcfSKip Macy #include <xen/hypervisor.h> 7178c2c79SKip Macy #include <machine/xen/features.h> 8178c2c79SKip Macy 9178c2c79SKip Macy uint8_t xen_features[XENFEAT_NR_SUBMAPS * 32] /* __read_mostly */; 10178c2c79SKip Macy 11178c2c79SKip Macy void 12178c2c79SKip Macy setup_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