X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Fefi.h;h=0f461df7686c25c2a9fd227fe5916c03df4038e9;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=0c5c94ab111269d9a0d7db0d608c42f9aaced8e5;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/include/linux/efi.h b/include/linux/efi.h index 0c5c94ab1..0f461df76 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -289,6 +289,7 @@ efi_guid_unparse(efi_guid_t *guid, char *out) } extern void efi_init (void); +extern void *efi_get_pal_addr (void); extern void efi_map_pal_code (void); extern void efi_map_memmap(void); extern void efi_memmap_walk (efi_freemem_callback_t callback, void *arg); @@ -305,8 +306,29 @@ extern unsigned long __init efi_get_time(void); extern int __init efi_set_rtc_mmss(unsigned long nowtime); 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) +{ + int 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_PCDP -extern void __init efi_setup_pcdp_console(char *); +extern int __init efi_setup_pcdp_console(char *); #endif /*