⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 efi.h

📁 xen虚拟机源代码安装包
💻 H
📖 第 1 页 / 共 2 页
字号:
	unsigned long sal_systab;	/* SAL system table */	unsigned long boot_info;	/* boot info table */	unsigned long hcdp;		/* HCDP table */	unsigned long uga;		/* UGA table */	efi_get_time_t *get_time;	efi_set_time_t *set_time;	efi_get_wakeup_time_t *get_wakeup_time;	efi_set_wakeup_time_t *set_wakeup_time;	efi_get_variable_t *get_variable;	efi_get_next_variable_t *get_next_variable;	efi_set_variable_t *set_variable;	efi_get_next_high_mono_count_t *get_next_high_mono_count;	efi_reset_system_t *reset_system;	efi_set_virtual_address_map_t *set_virtual_address_map;} efi;static inline intefi_guidcmp (efi_guid_t left, efi_guid_t right){	return memcmp(&left, &right, sizeof (efi_guid_t));}static inline char *efi_guid_unparse(efi_guid_t *guid, char *out){#ifndef XEN	sprintf(out, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",#else	snprintf(out, 37, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",#endif		guid->b[3], guid->b[2], guid->b[1], guid->b[0],		guid->b[5], guid->b[4], guid->b[7], guid->b[6],		guid->b[8], guid->b[9], guid->b[10], guid->b[11],		guid->b[12], guid->b[13], guid->b[14], guid->b[15]);        return out;}extern void efi_init (void);extern void *efi_get_pal_addr (void);extern void efi_map_pal_code (void);#ifdef XENextern void efi_unmap_pal_code (void);#endifextern void efi_map_memmap(void);extern void efi_memmap_walk (efi_freemem_callback_t callback, void *arg);extern void efi_gettimeofday (struct timespec *ts);extern void efi_enter_virtual_mode (void);	/* switch EFI to virtual mode, if possible */extern u64 efi_get_iobase (void);extern u32 efi_mem_type (unsigned long phys_addr);extern u64 efi_mem_attributes (unsigned long phys_addr);extern u64 efi_mem_attribute (unsigned long phys_addr, unsigned long size);extern int efi_mem_attribute_range (unsigned long phys_addr, unsigned long size,				    u64 attr);extern int __init efi_uart_console_only (void);extern void efi_initialize_iomem_resources(struct resource *code_resource,					struct resource *data_resource);extern unsigned long efi_get_time(void);extern int efi_set_rtc_mmss(unsigned long nowtime);extern int is_available_memory(efi_memory_desc_t * md);extern struct efi_memory_map memmap;/** * efi_range_is_wc - check the WC bit on an address range * @start: starting kvirt address * @len: length of range * * Consult the EFI memory map and make sure it's ok to set this range WC. * Returns true or false. */static inline int efi_range_is_wc(unsigned long start, unsigned long len){	unsigned long i;	for (i = 0; i < len; i += (1UL << EFI_PAGE_SHIFT)) {		unsigned long paddr = __pa(start + i);		if (!(efi_mem_attributes(paddr) & EFI_MEMORY_WC))			return 0;	}	/* The range checked out */	return 1;}#ifdef CONFIG_EFI_PCDPextern int __init efi_setup_pcdp_console(char *);#endif/* * We play games with efi_enabled so that the compiler will, if possible, remove * EFI-related code altogether. */#ifdef CONFIG_EFI# ifdef CONFIG_X86   extern int efi_enabled;# else#  define efi_enabled 1# endif#else# define efi_enabled 0#endif/* * Variable Attributes */#define EFI_VARIABLE_NON_VOLATILE       0x0000000000000001#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002#define EFI_VARIABLE_RUNTIME_ACCESS     0x0000000000000004/* * EFI Device Path information */#define EFI_DEV_HW			0x01#define  EFI_DEV_PCI				 1#define  EFI_DEV_PCCARD				 2#define  EFI_DEV_MEM_MAPPED			 3#define  EFI_DEV_VENDOR				 4#define  EFI_DEV_CONTROLLER			 5#define EFI_DEV_ACPI			0x02#define   EFI_DEV_BASIC_ACPI			 1#define   EFI_DEV_EXPANDED_ACPI			 2#define EFI_DEV_MSG			0x03#define   EFI_DEV_MSG_ATAPI			 1#define   EFI_DEV_MSG_SCSI			 2#define   EFI_DEV_MSG_FC			 3#define   EFI_DEV_MSG_1394			 4#define   EFI_DEV_MSG_USB			 5#define   EFI_DEV_MSG_USB_CLASS			15#define   EFI_DEV_MSG_I20			 6#define   EFI_DEV_MSG_MAC			11#define   EFI_DEV_MSG_IPV4			12#define   EFI_DEV_MSG_IPV6			13#define   EFI_DEV_MSG_INFINIBAND		 9#define   EFI_DEV_MSG_UART			14#define   EFI_DEV_MSG_VENDOR			10#define EFI_DEV_MEDIA			0x04#define   EFI_DEV_MEDIA_HARD_DRIVE		 1#define   EFI_DEV_MEDIA_CDROM			 2#define   EFI_DEV_MEDIA_VENDOR			 3#define   EFI_DEV_MEDIA_FILE			 4#define   EFI_DEV_MEDIA_PROTOCOL		 5#define EFI_DEV_BIOS_BOOT		0x05#define EFI_DEV_END_PATH		0x7F#define EFI_DEV_END_PATH2		0xFF#define   EFI_DEV_END_INSTANCE			0x01#define   EFI_DEV_END_ENTIRE			0xFFstruct efi_generic_dev_path {	u8 type;	u8 sub_type;	u16 length;} __attribute ((packed));#ifdef XEN/* * According to xen/arch/ia64/xen/regionreg.c the RID space is broken up * into large-blocks. Each block belongs to a domain, except 0th block, * which is broken up into small-blocks. The small-blocks are used for * metaphysical mappings, again one per domain, except for the 0th * small-block which is unused other than very early on in the * hypervisor boot. * * By default each large-block is 18 bits wide, which is also the minimum * allowed width for a block. Each small-block is by default 1/64 the width * of a large-block, which is the maximum division allowed. In other words * each small-block is at least 12 bits wide. * * The portion of the 0th small-block that is used early on during * the hypervisor boot relates to IA64_REGION_ID_KERNEL, which is * used to form an RID using the following scheme which seems to be * have been inherited from Linux: * * a: bits 0-2: Region Number (0-7) * b: 3-N:      IA64_REGION_ID_KERNEL (0) * c: N-23:     reserved (0) * * N is defined by the platform. * * For EFI we use the following RID: * * a: bits 0-2:  Region Number (0-7) * e: bits 3-N:  IA64_REGION_ID_KERNEL (1) * f: bits N-53: reserved (0) * * + Only 0 is used as we only need one RID. Its not really important *   what this number is, so long as its between 0 and 7. * * The nice thing about this is that we are only using 4 bits of RID * space, so it shouldn't have any chance of running into an adjacent * small-block since small-blocks are at least 12 bits wide. * * It would actually be possible to just use a IA64_REGION_ID_KERNEL * based RID for EFI use. The important thing is that it is in the 0th * small block, and thus not available to domains. But as we have * lots of space, its seems to be nice and clean to just use a separate * RID for EFI. * * This can be trivially changed by updating the definition of XEN_EFI_RR. * * For reference, the RID is used to produce the value inserted * in to a region register in the following way: * * A: bit 0:     VHPT (0 = off, 1 = on) * B: bit 1:     reserved (0) * C: bits 2-7:  log 2 page_size * D: bits 8-N:  RID * E: bits N-53: reserved (0) *//* rr7 (and rr6) may already be set to XEN_EFI_RR, which * would indicate a nested EFI, SAL or PAL call, such * as from an MCA. This may have occured during a call * to set_one_rr_efi(). To be safe, repin everything anyway. */#define XEN_EFI_RR_ENTER(rr6, rr7) do {			\	rr6 = ia64_get_rr(6UL << 61);			\	rr7 = ia64_get_rr(7UL << 61);			\	set_one_rr_efi(6UL << 61, XEN_EFI_RR);		\	set_one_rr_efi(7UL << 61, XEN_EFI_RR);		\	efi_map_pal_code();				\} while (0)/* There is no need to do anything if the saved rr7 (and rr6) * is XEN_EFI_RR, as it would just switch them from XEN_EFI_RR to XEN_EFI_RR * Furthermore, if this is a nested call it is important not * to unpin efi_unmap_pal_code() until the outermost call is finished */#define XEN_EFI_RR_LEAVE(rr6, rr7) do {			\	if (rr7 != XEN_EFI_RR) {			\		efi_unmap_pal_code();			\		set_one_rr_efi(6UL << 61, rr6);		\		set_one_rr_efi(7UL << 61, rr7);		\	}						\} while (0)#else/* Just use rr6 and rr7 in a dummy fashion here to get * rid of compiler warnings - a better solution should * be found if this code is ever actually used */#define XEN_EFI_RR_ENTER(rr6, rr7)	do { rr6 = 0; rr7 = 0; } while (0)#define XEN_EFI_RR_LEAVE(rr6, rr7)	do {} while (0)#endif /* XEN */#define XEN_EFI_RR_DECLARE(rr6, rr7)	unsigned long rr6, rr7;#endif /* !__ASSEMBLY__ */#ifdef XEN#include <asm/mmu_context.h> /* For IA64_REGION_ID_EFI and ia64_rid() */#include <asm/pgtable.h>     /* IA64_GRANULE_SHIFT */#define XEN_EFI_REGION_NO __IA64_UL_CONST(0)#define XEN_EFI_RR ((ia64_rid(XEN_IA64_REGION_ID_EFI,			\			      XEN_EFI_REGION_NO) << 8) |		\		    (IA64_GRANULE_SHIFT << 2))#endif /* XEN */#endif /* _LINUX_EFI_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -