~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to include/linux/efi.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef _LINUX_EFI_H
 
2
#define _LINUX_EFI_H
 
3
 
 
4
/*
 
5
 * Extensible Firmware Interface
 
6
 * Based on 'Extensible Firmware Interface Specification' version 0.9, April 30, 1999
 
7
 *
 
8
 * Copyright (C) 1999 VA Linux Systems
 
9
 * Copyright (C) 1999 Walt Drummond <drummond@valinux.com>
 
10
 * Copyright (C) 1999, 2002-2003 Hewlett-Packard Co.
 
11
 *      David Mosberger-Tang <davidm@hpl.hp.com>
 
12
 *      Stephane Eranian <eranian@hpl.hp.com>
 
13
 */
 
14
#include <linux/init.h>
 
15
#include <linux/string.h>
 
16
#include <linux/time.h>
 
17
#include <linux/types.h>
 
18
#include <linux/proc_fs.h>
 
19
#include <linux/rtc.h>
 
20
#include <linux/ioport.h>
 
21
#include <linux/pfn.h>
 
22
#include <linux/pstore.h>
 
23
 
 
24
#include <asm/page.h>
 
25
#include <asm/system.h>
 
26
 
 
27
#define EFI_SUCCESS             0
 
28
#define EFI_LOAD_ERROR          ( 1 | (1UL << (BITS_PER_LONG-1)))
 
29
#define EFI_INVALID_PARAMETER   ( 2 | (1UL << (BITS_PER_LONG-1)))
 
30
#define EFI_UNSUPPORTED         ( 3 | (1UL << (BITS_PER_LONG-1)))
 
31
#define EFI_BAD_BUFFER_SIZE     ( 4 | (1UL << (BITS_PER_LONG-1)))
 
32
#define EFI_BUFFER_TOO_SMALL    ( 5 | (1UL << (BITS_PER_LONG-1)))
 
33
#define EFI_NOT_FOUND           (14 | (1UL << (BITS_PER_LONG-1)))
 
34
 
 
35
typedef unsigned long efi_status_t;
 
36
typedef u8 efi_bool_t;
 
37
typedef u16 efi_char16_t;               /* UNICODE character */
 
38
 
 
39
 
 
40
typedef struct {
 
41
        u8 b[16];
 
42
} efi_guid_t;
 
43
 
 
44
#define EFI_GUID(a,b,c,d0,d1,d2,d3,d4,d5,d6,d7) \
 
45
((efi_guid_t) \
 
46
{{ (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff, \
 
47
  (b) & 0xff, ((b) >> 8) & 0xff, \
 
48
  (c) & 0xff, ((c) >> 8) & 0xff, \
 
49
  (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }})
 
50
 
 
51
/*
 
52
 * Generic EFI table header
 
53
 */
 
54
typedef struct {
 
55
        u64 signature;
 
56
        u32 revision;
 
57
        u32 headersize;
 
58
        u32 crc32;
 
59
        u32 reserved;
 
60
} efi_table_hdr_t;
 
61
 
 
62
/*
 
63
 * Memory map descriptor:
 
64
 */
 
65
 
 
66
/* Memory types: */
 
67
#define EFI_RESERVED_TYPE                0
 
68
#define EFI_LOADER_CODE                  1
 
69
#define EFI_LOADER_DATA                  2
 
70
#define EFI_BOOT_SERVICES_CODE           3
 
71
#define EFI_BOOT_SERVICES_DATA           4
 
72
#define EFI_RUNTIME_SERVICES_CODE        5
 
73
#define EFI_RUNTIME_SERVICES_DATA        6
 
74
#define EFI_CONVENTIONAL_MEMORY          7
 
75
#define EFI_UNUSABLE_MEMORY              8
 
76
#define EFI_ACPI_RECLAIM_MEMORY          9
 
77
#define EFI_ACPI_MEMORY_NVS             10
 
78
#define EFI_MEMORY_MAPPED_IO            11
 
79
#define EFI_MEMORY_MAPPED_IO_PORT_SPACE 12
 
80
#define EFI_PAL_CODE                    13
 
81
#define EFI_MAX_MEMORY_TYPE             14
 
82
 
 
83
/* Attribute values: */
 
84
#define EFI_MEMORY_UC           ((u64)0x0000000000000001ULL)    /* uncached */
 
85
#define EFI_MEMORY_WC           ((u64)0x0000000000000002ULL)    /* write-coalescing */
 
86
#define EFI_MEMORY_WT           ((u64)0x0000000000000004ULL)    /* write-through */
 
87
#define EFI_MEMORY_WB           ((u64)0x0000000000000008ULL)    /* write-back */
 
88
#define EFI_MEMORY_WP           ((u64)0x0000000000001000ULL)    /* write-protect */
 
89
#define EFI_MEMORY_RP           ((u64)0x0000000000002000ULL)    /* read-protect */
 
90
#define EFI_MEMORY_XP           ((u64)0x0000000000004000ULL)    /* execute-protect */
 
91
#define EFI_MEMORY_RUNTIME      ((u64)0x8000000000000000ULL)    /* range requires runtime mapping */
 
92
#define EFI_MEMORY_DESCRIPTOR_VERSION   1
 
93
 
 
94
#define EFI_PAGE_SHIFT          12
 
95
 
 
96
typedef struct {
 
97
        u32 type;
 
98
        u32 pad;
 
99
        u64 phys_addr;
 
100
        u64 virt_addr;
 
101
        u64 num_pages;
 
102
        u64 attribute;
 
103
} efi_memory_desc_t;
 
104
 
 
105
typedef struct {
 
106
        efi_guid_t guid;
 
107
        u32 headersize;
 
108
        u32 flags;
 
109
        u32 imagesize;
 
110
} efi_capsule_header_t;
 
111
 
 
112
typedef int (*efi_freemem_callback_t) (u64 start, u64 end, void *arg);
 
113
 
 
114
/*
 
115
 * Types and defines for Time Services
 
116
 */
 
117
#define EFI_TIME_ADJUST_DAYLIGHT 0x1
 
118
#define EFI_TIME_IN_DAYLIGHT     0x2
 
119
#define EFI_UNSPECIFIED_TIMEZONE 0x07ff
 
120
 
 
121
typedef struct {
 
122
        u16 year;
 
123
        u8 month;
 
124
        u8 day;
 
125
        u8 hour;
 
126
        u8 minute;
 
127
        u8 second;
 
128
        u8 pad1;
 
129
        u32 nanosecond;
 
130
        s16 timezone;
 
131
        u8 daylight;
 
132
        u8 pad2;
 
133
} efi_time_t;
 
134
 
 
135
typedef struct {
 
136
        u32 resolution;
 
137
        u32 accuracy;
 
138
        u8 sets_to_zero;
 
139
} efi_time_cap_t;
 
140
 
 
141
/*
 
142
 * Types and defines for EFI ResetSystem
 
143
 */
 
144
#define EFI_RESET_COLD 0
 
145
#define EFI_RESET_WARM 1
 
146
#define EFI_RESET_SHUTDOWN 2
 
147
 
 
148
/*
 
149
 * EFI Runtime Services table
 
150
 */
 
151
#define EFI_RUNTIME_SERVICES_SIGNATURE ((u64)0x5652453544e5552ULL)
 
152
#define EFI_RUNTIME_SERVICES_REVISION  0x00010000
 
153
 
 
154
typedef struct {
 
155
        efi_table_hdr_t hdr;
 
156
        unsigned long get_time;
 
157
        unsigned long set_time;
 
158
        unsigned long get_wakeup_time;
 
159
        unsigned long set_wakeup_time;
 
160
        unsigned long set_virtual_address_map;
 
161
        unsigned long convert_pointer;
 
162
        unsigned long get_variable;
 
163
        unsigned long get_next_variable;
 
164
        unsigned long set_variable;
 
165
        unsigned long get_next_high_mono_count;
 
166
        unsigned long reset_system;
 
167
        unsigned long update_capsule;
 
168
        unsigned long query_capsule_caps;
 
169
        unsigned long query_variable_info;
 
170
} efi_runtime_services_t;
 
171
 
 
172
typedef efi_status_t efi_get_time_t (efi_time_t *tm, efi_time_cap_t *tc);
 
173
typedef efi_status_t efi_set_time_t (efi_time_t *tm);
 
174
typedef efi_status_t efi_get_wakeup_time_t (efi_bool_t *enabled, efi_bool_t *pending,
 
175
                                            efi_time_t *tm);
 
176
typedef efi_status_t efi_set_wakeup_time_t (efi_bool_t enabled, efi_time_t *tm);
 
177
typedef efi_status_t efi_get_variable_t (efi_char16_t *name, efi_guid_t *vendor, u32 *attr,
 
178
                                         unsigned long *data_size, void *data);
 
179
typedef efi_status_t efi_get_next_variable_t (unsigned long *name_size, efi_char16_t *name,
 
180
                                              efi_guid_t *vendor);
 
181
typedef efi_status_t efi_set_variable_t (efi_char16_t *name, efi_guid_t *vendor, 
 
182
                                         u32 attr, unsigned long data_size,
 
183
                                         void *data);
 
184
typedef efi_status_t efi_get_next_high_mono_count_t (u32 *count);
 
185
typedef void efi_reset_system_t (int reset_type, efi_status_t status,
 
186
                                 unsigned long data_size, efi_char16_t *data);
 
187
typedef efi_status_t efi_set_virtual_address_map_t (unsigned long memory_map_size,
 
188
                                                unsigned long descriptor_size,
 
189
                                                u32 descriptor_version,
 
190
                                                efi_memory_desc_t *virtual_map);
 
191
typedef efi_status_t efi_query_variable_info_t(u32 attr,
 
192
                                               u64 *storage_space,
 
193
                                               u64 *remaining_space,
 
194
                                               u64 *max_variable_size);
 
195
typedef efi_status_t efi_update_capsule_t(efi_capsule_header_t **capsules,
 
196
                                          unsigned long count,
 
197
                                          unsigned long sg_list);
 
198
typedef efi_status_t efi_query_capsule_caps_t(efi_capsule_header_t **capsules,
 
199
                                              unsigned long count,
 
200
                                              u64 *max_size,
 
201
                                              int *reset_type);
 
202
 
 
203
/*
 
204
 *  EFI Configuration Table and GUID definitions
 
205
 */
 
206
#define NULL_GUID \
 
207
    EFI_GUID(  0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 )
 
208
 
 
209
#define MPS_TABLE_GUID    \
 
210
    EFI_GUID(  0xeb9d2d2f, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d )
 
211
 
 
212
#define ACPI_TABLE_GUID    \
 
213
    EFI_GUID(  0xeb9d2d30, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d )
 
214
 
 
215
#define ACPI_20_TABLE_GUID    \
 
216
    EFI_GUID(  0x8868e871, 0xe4f1, 0x11d3, 0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 )
 
217
 
 
218
#define SMBIOS_TABLE_GUID    \
 
219
    EFI_GUID(  0xeb9d2d31, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d )
 
220
 
 
221
#define SAL_SYSTEM_TABLE_GUID    \
 
222
    EFI_GUID(  0xeb9d2d32, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d )
 
223
 
 
224
#define HCDP_TABLE_GUID \
 
225
    EFI_GUID(  0xf951938d, 0x620b, 0x42ef, 0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98 )
 
226
 
 
227
#define UGA_IO_PROTOCOL_GUID \
 
228
    EFI_GUID(  0x61a4d49e, 0x6f68, 0x4f1b, 0xb9, 0x22, 0xa8, 0x6e, 0xed, 0xb, 0x7, 0xa2 )
 
229
 
 
230
#define EFI_GLOBAL_VARIABLE_GUID \
 
231
    EFI_GUID(  0x8be4df61, 0x93ca, 0x11d2, 0xaa, 0x0d, 0x00, 0xe0, 0x98, 0x03, 0x2b, 0x8c )
 
232
 
 
233
#define UV_SYSTEM_TABLE_GUID \
 
234
    EFI_GUID(  0x3b13a7d4, 0x633e, 0x11dd, 0x93, 0xec, 0xda, 0x25, 0x56, 0xd8, 0x95, 0x93 )
 
235
 
 
236
#define LINUX_EFI_CRASH_GUID \
 
237
    EFI_GUID(  0xcfc8fc79, 0xbe2e, 0x4ddc, 0x97, 0xf0, 0x9f, 0x98, 0xbf, 0xe2, 0x98, 0xa0 )
 
238
 
 
239
typedef struct {
 
240
        efi_guid_t guid;
 
241
        unsigned long table;
 
242
} efi_config_table_t;
 
243
 
 
244
#define EFI_SYSTEM_TABLE_SIGNATURE ((u64)0x5453595320494249ULL)
 
245
 
 
246
#define EFI_2_30_SYSTEM_TABLE_REVISION  ((2 << 16) | (30))
 
247
#define EFI_2_20_SYSTEM_TABLE_REVISION  ((2 << 16) | (20))
 
248
#define EFI_2_10_SYSTEM_TABLE_REVISION  ((2 << 16) | (10))
 
249
#define EFI_2_00_SYSTEM_TABLE_REVISION  ((2 << 16) | (00))
 
250
#define EFI_1_10_SYSTEM_TABLE_REVISION  ((1 << 16) | (10))
 
251
#define EFI_1_02_SYSTEM_TABLE_REVISION  ((1 << 16) | (02))
 
252
 
 
253
typedef struct {
 
254
        efi_table_hdr_t hdr;
 
255
        unsigned long fw_vendor;        /* physical addr of CHAR16 vendor string */
 
256
        u32 fw_revision;
 
257
        unsigned long con_in_handle;
 
258
        unsigned long con_in;
 
259
        unsigned long con_out_handle;
 
260
        unsigned long con_out;
 
261
        unsigned long stderr_handle;
 
262
        unsigned long stderr;
 
263
        efi_runtime_services_t *runtime;
 
264
        unsigned long boottime;
 
265
        unsigned long nr_tables;
 
266
        unsigned long tables;
 
267
} efi_system_table_t;
 
268
 
 
269
struct efi_memory_map {
 
270
        void *phys_map;
 
271
        void *map;
 
272
        void *map_end;
 
273
        int nr_map;
 
274
        unsigned long desc_version;
 
275
        unsigned long desc_size;
 
276
};
 
277
 
 
278
#define EFI_INVALID_TABLE_ADDR          (~0UL)
 
279
 
 
280
/*
 
281
 * All runtime access to EFI goes through this structure:
 
282
 */
 
283
extern struct efi {
 
284
        efi_system_table_t *systab;     /* EFI system table */
 
285
        unsigned int runtime_version;   /* Runtime services version */
 
286
        unsigned long mps;              /* MPS table */
 
287
        unsigned long acpi;             /* ACPI table  (IA64 ext 0.71) */
 
288
        unsigned long acpi20;           /* ACPI table  (ACPI 2.0) */
 
289
        unsigned long smbios;           /* SM BIOS table */
 
290
        unsigned long sal_systab;       /* SAL system table */
 
291
        unsigned long boot_info;        /* boot info table */
 
292
        unsigned long hcdp;             /* HCDP table */
 
293
        unsigned long uga;              /* UGA table */
 
294
        unsigned long uv_systab;        /* UV system table */
 
295
        efi_get_time_t *get_time;
 
296
        efi_set_time_t *set_time;
 
297
        efi_get_wakeup_time_t *get_wakeup_time;
 
298
        efi_set_wakeup_time_t *set_wakeup_time;
 
299
        efi_get_variable_t *get_variable;
 
300
        efi_get_next_variable_t *get_next_variable;
 
301
        efi_set_variable_t *set_variable;
 
302
        efi_query_variable_info_t *query_variable_info;
 
303
        efi_update_capsule_t *update_capsule;
 
304
        efi_query_capsule_caps_t *query_capsule_caps;
 
305
        efi_get_next_high_mono_count_t *get_next_high_mono_count;
 
306
        efi_reset_system_t *reset_system;
 
307
        efi_set_virtual_address_map_t *set_virtual_address_map;
 
308
} efi;
 
309
 
 
310
static inline int
 
311
efi_guidcmp (efi_guid_t left, efi_guid_t right)
 
312
{
 
313
        return memcmp(&left, &right, sizeof (efi_guid_t));
 
314
}
 
315
 
 
316
static inline char *
 
317
efi_guid_unparse(efi_guid_t *guid, char *out)
 
318
{
 
319
        sprintf(out, "%pUl", guid->b);
 
320
        return out;
 
321
}
 
322
 
 
323
extern void efi_init (void);
 
324
extern void *efi_get_pal_addr (void);
 
325
extern void efi_map_pal_code (void);
 
326
extern void efi_memmap_walk (efi_freemem_callback_t callback, void *arg);
 
327
extern void efi_gettimeofday (struct timespec *ts);
 
328
extern void efi_enter_virtual_mode (void);      /* switch EFI to virtual mode, if possible */
 
329
extern u64 efi_get_iobase (void);
 
330
extern u32 efi_mem_type (unsigned long phys_addr);
 
331
extern u64 efi_mem_attributes (unsigned long phys_addr);
 
332
extern u64 efi_mem_attribute (unsigned long phys_addr, unsigned long size);
 
333
extern int __init efi_uart_console_only (void);
 
334
extern void efi_initialize_iomem_resources(struct resource *code_resource,
 
335
                struct resource *data_resource, struct resource *bss_resource);
 
336
extern unsigned long efi_get_time(void);
 
337
extern int efi_set_rtc_mmss(unsigned long nowtime);
 
338
extern void efi_reserve_boot_services(void);
 
339
extern struct efi_memory_map memmap;
 
340
 
 
341
/**
 
342
 * efi_range_is_wc - check the WC bit on an address range
 
343
 * @start: starting kvirt address
 
344
 * @len: length of range
 
345
 *
 
346
 * Consult the EFI memory map and make sure it's ok to set this range WC.
 
347
 * Returns true or false.
 
348
 */
 
349
static inline int efi_range_is_wc(unsigned long start, unsigned long len)
 
350
{
 
351
        unsigned long i;
 
352
 
 
353
        for (i = 0; i < len; i += (1UL << EFI_PAGE_SHIFT)) {
 
354
                unsigned long paddr = __pa(start + i);
 
355
                if (!(efi_mem_attributes(paddr) & EFI_MEMORY_WC))
 
356
                        return 0;
 
357
        }
 
358
        /* The range checked out */
 
359
        return 1;
 
360
}
 
361
 
 
362
#ifdef CONFIG_EFI_PCDP
 
363
extern int __init efi_setup_pcdp_console(char *);
 
364
#endif
 
365
 
 
366
/*
 
367
 * We play games with efi_enabled so that the compiler will, if possible, remove
 
368
 * EFI-related code altogether.
 
369
 */
 
370
#ifdef CONFIG_EFI
 
371
# ifdef CONFIG_X86
 
372
   extern int efi_enabled;
 
373
# else
 
374
#  define efi_enabled 1
 
375
# endif
 
376
#else
 
377
# define efi_enabled 0
 
378
#endif
 
379
 
 
380
/*
 
381
 * Variable Attributes
 
382
 */
 
383
#define EFI_VARIABLE_NON_VOLATILE       0x0000000000000001
 
384
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002
 
385
#define EFI_VARIABLE_RUNTIME_ACCESS     0x0000000000000004
 
386
 
 
387
/*
 
388
 * EFI Device Path information
 
389
 */
 
390
#define EFI_DEV_HW                      0x01
 
391
#define  EFI_DEV_PCI                             1
 
392
#define  EFI_DEV_PCCARD                          2
 
393
#define  EFI_DEV_MEM_MAPPED                      3
 
394
#define  EFI_DEV_VENDOR                          4
 
395
#define  EFI_DEV_CONTROLLER                      5
 
396
#define EFI_DEV_ACPI                    0x02
 
397
#define   EFI_DEV_BASIC_ACPI                     1
 
398
#define   EFI_DEV_EXPANDED_ACPI                  2
 
399
#define EFI_DEV_MSG                     0x03
 
400
#define   EFI_DEV_MSG_ATAPI                      1
 
401
#define   EFI_DEV_MSG_SCSI                       2
 
402
#define   EFI_DEV_MSG_FC                         3
 
403
#define   EFI_DEV_MSG_1394                       4
 
404
#define   EFI_DEV_MSG_USB                        5
 
405
#define   EFI_DEV_MSG_USB_CLASS                 15
 
406
#define   EFI_DEV_MSG_I20                        6
 
407
#define   EFI_DEV_MSG_MAC                       11
 
408
#define   EFI_DEV_MSG_IPV4                      12
 
409
#define   EFI_DEV_MSG_IPV6                      13
 
410
#define   EFI_DEV_MSG_INFINIBAND                 9
 
411
#define   EFI_DEV_MSG_UART                      14
 
412
#define   EFI_DEV_MSG_VENDOR                    10
 
413
#define EFI_DEV_MEDIA                   0x04
 
414
#define   EFI_DEV_MEDIA_HARD_DRIVE               1
 
415
#define   EFI_DEV_MEDIA_CDROM                    2
 
416
#define   EFI_DEV_MEDIA_VENDOR                   3
 
417
#define   EFI_DEV_MEDIA_FILE                     4
 
418
#define   EFI_DEV_MEDIA_PROTOCOL                 5
 
419
#define EFI_DEV_BIOS_BOOT               0x05
 
420
#define EFI_DEV_END_PATH                0x7F
 
421
#define EFI_DEV_END_PATH2               0xFF
 
422
#define   EFI_DEV_END_INSTANCE                  0x01
 
423
#define   EFI_DEV_END_ENTIRE                    0xFF
 
424
 
 
425
struct efi_generic_dev_path {
 
426
        u8 type;
 
427
        u8 sub_type;
 
428
        u16 length;
 
429
} __attribute ((packed));
 
430
 
 
431
static inline void memrange_efi_to_native(u64 *addr, u64 *npages)
 
432
{
 
433
        *npages = PFN_UP(*addr + (*npages<<EFI_PAGE_SHIFT)) - PFN_DOWN(*addr);
 
434
        *addr &= PAGE_MASK;
 
435
}
 
436
 
 
437
#if defined(CONFIG_EFI_VARS) || defined(CONFIG_EFI_VARS_MODULE)
 
438
/*
 
439
 * EFI Variable support.
 
440
 *
 
441
 * Different firmware drivers can expose their EFI-like variables using
 
442
 * the following.
 
443
 */
 
444
 
 
445
struct efivar_operations {
 
446
        efi_get_variable_t *get_variable;
 
447
        efi_get_next_variable_t *get_next_variable;
 
448
        efi_set_variable_t *set_variable;
 
449
};
 
450
 
 
451
struct efivars {
 
452
        /*
 
453
         * ->lock protects two things:
 
454
         * 1) ->list - adds, removals, reads, writes
 
455
         * 2) ops.[gs]et_variable() calls.
 
456
         * It must not be held when creating sysfs entries or calling kmalloc.
 
457
         * ops.get_next_variable() is only called from register_efivars(),
 
458
         * which is protected by the BKL, so that path is safe.
 
459
         */
 
460
        spinlock_t lock;
 
461
        struct list_head list;
 
462
        struct kset *kset;
 
463
        struct bin_attribute *new_var, *del_var;
 
464
        const struct efivar_operations *ops;
 
465
        struct efivar_entry *walk_entry;
 
466
        struct pstore_info efi_pstore_info;
 
467
};
 
468
 
 
469
int register_efivars(struct efivars *efivars,
 
470
                     const struct efivar_operations *ops,
 
471
                     struct kobject *parent_kobj);
 
472
void unregister_efivars(struct efivars *efivars);
 
473
 
 
474
#endif /* CONFIG_EFI_VARS */
 
475
 
 
476
#endif /* _LINUX_EFI_H */