Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 603470 | Differences between
and this patch

Collapse All | Expand All

(-)a/arch/x86/platform/efi/quirks.c (-2 / +2 lines)
Lines 214-220 void __init efi_arch_mem_reserve(phys_addr_t addr, u64 size) Link Here
214
214
215
	new_size = efi.memmap.desc_size * num_entries;
215
	new_size = efi.memmap.desc_size * num_entries;
216
216
217
	new_phys = memblock_alloc(new_size, 0);
217
	new_phys = efi_memmap_alloc(num_entries);
218
	if (!new_phys) {
218
	if (!new_phys) {
219
		pr_err("Could not allocate boot services memmap\n");
219
		pr_err("Could not allocate boot services memmap\n");
220
		return;
220
		return;
Lines 355-361 void __init efi_free_boot_services(void) Link Here
355
	}
355
	}
356
356
357
	new_size = efi.memmap.desc_size * num_entries;
357
	new_size = efi.memmap.desc_size * num_entries;
358
	new_phys = memblock_alloc(new_size, 0);
358
	new_phys = efi_memmap_alloc(num_entries);
359
	if (!new_phys) {
359
	if (!new_phys) {
360
		pr_err("Failed to allocate new EFI memmap\n");
360
		pr_err("Failed to allocate new EFI memmap\n");
361
		return;
361
		return;
(-)a/drivers/firmware/efi/fake_mem.c (-2 / +1 lines)
Lines 71-78 void __init efi_fake_memmap(void) Link Here
71
	}
71
	}
72
72
73
	/* allocate memory for new EFI memmap */
73
	/* allocate memory for new EFI memmap */
74
	new_memmap_phy = memblock_alloc(efi.memmap.desc_size * new_nr_map,
74
	new_memmap_phy = efi_memmap_alloc(new_nr_map);
75
					PAGE_SIZE);
76
	if (!new_memmap_phy)
75
	if (!new_memmap_phy)
77
		return;
76
		return;
78
77
(-)a/drivers/firmware/efi/memmap.c (+38 lines)
Lines 9-14 Link Here
9
#include <linux/efi.h>
9
#include <linux/efi.h>
10
#include <linux/io.h>
10
#include <linux/io.h>
11
#include <asm/early_ioremap.h>
11
#include <asm/early_ioremap.h>
12
#include <linux/memblock.h>
13
#include <linux/slab.h>
14
15
static phys_addr_t __init __efi_memmap_alloc_early(unsigned long size)
16
{
17
	return memblock_alloc(size, 0);
18
}
19
20
static phys_addr_t __init __efi_memmap_alloc_late(unsigned long size)
21
{
22
	unsigned int order = get_order(size);
23
	struct page *p = alloc_pages(GFP_KERNEL, order);
24
25
	if (!p)
26
		return 0;
27
28
	return PFN_PHYS(page_to_pfn(p));
29
}
30
31
/**
32
 * efi_memmap_alloc - Allocate memory for the EFI memory map
33
 * @num_entries: Number of entries in the allocated map.
34
 *
35
 * Depending on whether mm_init() has already been invoked or not,
36
 * either memblock or "normal" page allocation is used.
37
 *
38
 * Returns the physical address of the allocated memory map on
39
 * success, zero on failure.
40
 */
41
phys_addr_t __init efi_memmap_alloc(unsigned int num_entries)
42
{
43
	unsigned long size = num_entries * efi.memmap.desc_size;
44
45
	if (slab_is_available())
46
		return __efi_memmap_alloc_late(size);
47
48
	return __efi_memmap_alloc_early(size);
49
}
12
50
13
/**
51
/**
14
 * __efi_memmap_init - Common code for mapping the EFI memory map
52
 * __efi_memmap_init - Common code for mapping the EFI memory map
(-)a/include/linux/efi.h (-1 / +1 lines)
Lines 950-955 static inline efi_status_t efi_query_variable_store(u32 attributes, Link Here
950
#endif
950
#endif
951
extern void __iomem *efi_lookup_mapped_addr(u64 phys_addr);
951
extern void __iomem *efi_lookup_mapped_addr(u64 phys_addr);
952
952
953
extern phys_addr_t __init efi_memmap_alloc(unsigned int num_entries);
953
extern int __init efi_memmap_init_early(struct efi_memory_map_data *data);
954
extern int __init efi_memmap_init_early(struct efi_memory_map_data *data);
954
extern int __init efi_memmap_init_late(phys_addr_t addr, unsigned long size);
955
extern int __init efi_memmap_init_late(phys_addr_t addr, unsigned long size);
955
extern void __init efi_memmap_unmap(void);
956
extern void __init efi_memmap_unmap(void);
956
- 

Return to bug 603470