mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge branch 'akpm' (incoming from Andrew)
Merge first patch-bomb from Andrew Morton: - a couple of misc things - inotify/fsnotify work from Jan - ocfs2 updates (partial) - about half of MM * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (117 commits) mm/migrate: remove unused function, fail_migrate_page() mm/migrate: remove putback_lru_pages, fix comment on putback_movable_pages mm/migrate: correct failure handling if !hugepage_migration_support() mm/migrate: add comment about permanent failure path mm, page_alloc: warn for non-blockable __GFP_NOFAIL allocation failure mm: compaction: reset scanner positions immediately when they meet mm: compaction: do not mark unmovable pageblocks as skipped in async compaction mm: compaction: detect when scanners meet in isolate_freepages mm: compaction: reset cached scanner pfn's before reading them mm: compaction: encapsulate defer reset logic mm: compaction: trace compaction begin and end memcg, oom: lock mem_cgroup_print_oom_info sched: add tracepoints related to NUMA task migration mm: numa: do not automatically migrate KSM pages mm: numa: trace tasks that fail migration due to rate limiting mm: numa: limit scope of lock for NUMA migrate rate limiting mm: numa: make NUMA-migrate related functions static lib/show_mem.c: show num_poisoned_pages when oom mm/hwpoison: add '#' to hwpoison_inject mm/memblock: use WARN_ONCE when MAX_NUMNODES passed as input parameter ...
This commit is contained in:
commit
df32e43a54
139 files changed
+2913
-2523
No files matched your search
@@ -767,6 +767,7 @@ The "Locked" indicates whether the mapping is locked in memory or not.
|
||||
|
||||
MemTotal: 16344972 kB
|
||||
MemFree: 13634064 kB
|
||||
MemAvailable: 14836172 kB
|
||||
Buffers: 3656 kB
|
||||
Cached: 1195708 kB
|
||||
SwapCached: 0 kB
|
||||
@@ -799,6 +800,14 @@ AnonHugePages: 49152 kB
|
||||
MemTotal: Total usable ram (i.e. physical ram minus a few reserved
|
||||
bits and the kernel binary code)
|
||||
MemFree: The sum of LowFree+HighFree
|
||||
MemAvailable: An estimate of how much memory is available for starting new
|
||||
applications, without swapping. Calculated from MemFree,
|
||||
SReclaimable, the size of the file LRU lists, and the low
|
||||
watermarks in each zone.
|
||||
The estimate takes into account that the system needs some
|
||||
page cache to function well, and that not all reclaimable
|
||||
slab will be reclaimable, due to items being in use. The
|
||||
impact of those factors will vary from system to system.
|
||||
Buffers: Relatively temporary storage for raw disk blocks
|
||||
shouldn't get tremendously large (20MB or so)
|
||||
Cached: in-memory cache for files read from the disk (the
|
||||
|
||||
@@ -47,6 +47,7 @@ Currently, these files are in /proc/sys/vm:
|
||||
- numa_zonelist_order
|
||||
- oom_dump_tasks
|
||||
- oom_kill_allocating_task
|
||||
- overcommit_kbytes
|
||||
- overcommit_memory
|
||||
- overcommit_ratio
|
||||
- page-cluster
|
||||
@@ -574,6 +575,17 @@ The default value is 0.
|
||||
|
||||
==============================================================
|
||||
|
||||
overcommit_kbytes:
|
||||
|
||||
When overcommit_memory is set to 2, the committed address space is not
|
||||
permitted to exceed swap plus this amount of physical RAM. See below.
|
||||
|
||||
Note: overcommit_kbytes is the counterpart of overcommit_ratio. Only one
|
||||
of them may be specified at a time. Setting one disables the other (which
|
||||
then appears as 0 when read).
|
||||
|
||||
==============================================================
|
||||
|
||||
overcommit_memory:
|
||||
|
||||
This value contains a flag that enables memory overcommitment.
|
||||
|
||||
@@ -14,8 +14,8 @@ The Linux kernel supports the following overcommit handling modes
|
||||
|
||||
2 - Don't overcommit. The total address space commit
|
||||
for the system is not permitted to exceed swap + a
|
||||
configurable percentage (default is 50) of physical RAM.
|
||||
Depending on the percentage you use, in most situations
|
||||
configurable amount (default is 50%) of physical RAM.
|
||||
Depending on the amount you use, in most situations
|
||||
this means a process will not be killed while accessing
|
||||
pages but will receive errors on memory allocation as
|
||||
appropriate.
|
||||
@@ -26,7 +26,8 @@ The Linux kernel supports the following overcommit handling modes
|
||||
|
||||
The overcommit policy is set via the sysctl `vm.overcommit_memory'.
|
||||
|
||||
The overcommit percentage is set via `vm.overcommit_ratio'.
|
||||
The overcommit amount can be set via `vm.overcommit_ratio' (percentage)
|
||||
or `vm.overcommit_kbytes' (absolute value).
|
||||
|
||||
The current overcommit limit and amount committed are viewable in
|
||||
/proc/meminfo as CommitLimit and Committed_AS respectively.
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
#define MAX_DMA_ADDRESS 0xffffffffUL
|
||||
#else
|
||||
#define MAX_DMA_ADDRESS ({ \
|
||||
extern unsigned long arm_dma_zone_size; \
|
||||
arm_dma_zone_size ? \
|
||||
extern phys_addr_t arm_dma_zone_size; \
|
||||
arm_dma_zone_size && arm_dma_zone_size < (0x10000000 - PAGE_OFFSET) ? \
|
||||
(PAGE_OFFSET + arm_dma_zone_size) : 0xffffffffUL; })
|
||||
#endif
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ void __init early_init_dt_add_memory_arch(u64 base, u64 size)
|
||||
|
||||
void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
|
||||
{
|
||||
return alloc_bootmem_align(size, align);
|
||||
return memblock_virt_alloc(size, align);
|
||||
}
|
||||
|
||||
void __init arm_dt_memblock_reserve(void)
|
||||
|
||||
@@ -717,7 +717,7 @@ static void __init request_standard_resources(const struct machine_desc *mdesc)
|
||||
kernel_data.end = virt_to_phys(_end - 1);
|
||||
|
||||
for_each_memblock(memory, region) {
|
||||
res = alloc_bootmem_low(sizeof(*res));
|
||||
res = memblock_virt_alloc(sizeof(*res), 0);
|
||||
res->name = "System RAM";
|
||||
res->start = __pfn_to_phys(memblock_region_memory_base_pfn(region));
|
||||
res->end = __pfn_to_phys(memblock_region_memory_end_pfn(region)) - 1;
|
||||
|
||||
@@ -2791,9 +2791,7 @@ static int __init _alloc_links(struct omap_hwmod_link **ml,
|
||||
sz = sizeof(struct omap_hwmod_link) * LINKS_PER_OCP_IF;
|
||||
|
||||
*sl = NULL;
|
||||
*ml = alloc_bootmem(sz);
|
||||
|
||||
memset(*ml, 0, sz);
|
||||
*ml = memblock_virt_alloc(sz, 0);
|
||||
|
||||
*sl = (void *)(*ml) + sizeof(struct omap_hwmod_link);
|
||||
|
||||
@@ -2912,9 +2910,7 @@ static int __init _alloc_linkspace(struct omap_hwmod_ocp_if **ois)
|
||||
pr_debug("omap_hwmod: %s: allocating %d byte linkspace (%d links)\n",
|
||||
__func__, sz, max_ls);
|
||||
|
||||
linkspace = alloc_bootmem(sz);
|
||||
|
||||
memset(linkspace, 0, sz);
|
||||
linkspace = memblock_virt_alloc(sz, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
+1
-4
@@ -92,9 +92,6 @@ void show_mem(unsigned int filter)
|
||||
printk("Mem-info:\n");
|
||||
show_free_areas(filter);
|
||||
|
||||
if (filter & SHOW_MEM_FILTER_PAGE_COUNT)
|
||||
return;
|
||||
|
||||
for_each_bank (i, mi) {
|
||||
struct membank *bank = &mi->bank[i];
|
||||
unsigned int pfn1, pfn2;
|
||||
@@ -461,7 +458,7 @@ free_memmap(unsigned long start_pfn, unsigned long end_pfn)
|
||||
* free the section of the memmap array.
|
||||
*/
|
||||
if (pg < pgend)
|
||||
free_bootmem(pg, pgend - pg);
|
||||
memblock_free_early(pg, pgend - pg);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -31,74 +31,6 @@
|
||||
static unsigned long max_gap;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* show_mem - give short summary of memory stats
|
||||
*
|
||||
* Shows a simple page count of reserved and used pages in the system.
|
||||
* For discontig machines, it does this on a per-pgdat basis.
|
||||
*/
|
||||
void show_mem(unsigned int filter)
|
||||
{
|
||||
int i, total_reserved = 0;
|
||||
int total_shared = 0, total_cached = 0;
|
||||
unsigned long total_present = 0;
|
||||
pg_data_t *pgdat;
|
||||
|
||||
printk(KERN_INFO "Mem-info:\n");
|
||||
show_free_areas(filter);
|
||||
printk(KERN_INFO "Node memory in pages:\n");
|
||||
if (filter & SHOW_MEM_FILTER_PAGE_COUNT)
|
||||
return;
|
||||
for_each_online_pgdat(pgdat) {
|
||||
unsigned long present;
|
||||
unsigned long flags;
|
||||
int shared = 0, cached = 0, reserved = 0;
|
||||
int nid = pgdat->node_id;
|
||||
|
||||
if (skip_free_areas_node(filter, nid))
|
||||
continue;
|
||||
pgdat_resize_lock(pgdat, &flags);
|
||||
present = pgdat->node_present_pages;
|
||||
for(i = 0; i < pgdat->node_spanned_pages; i++) {
|
||||
struct page *page;
|
||||
if (unlikely(i % MAX_ORDER_NR_PAGES == 0))
|
||||
touch_nmi_watchdog();
|
||||
if (pfn_valid(pgdat->node_start_pfn + i))
|
||||
page = pfn_to_page(pgdat->node_start_pfn + i);
|
||||
else {
|
||||
#ifdef CONFIG_VIRTUAL_MEM_MAP
|
||||
if (max_gap < LARGE_GAP)
|
||||
continue;
|
||||
#endif
|
||||
i = vmemmap_find_next_valid_pfn(nid, i) - 1;
|
||||
continue;
|
||||
}
|
||||
if (PageReserved(page))
|
||||
reserved++;
|
||||
else if (PageSwapCache(page))
|
||||
cached++;
|
||||
else if (page_count(page))
|
||||
shared += page_count(page)-1;
|
||||
}
|
||||
pgdat_resize_unlock(pgdat, &flags);
|
||||
total_present += present;
|
||||
total_reserved += reserved;
|
||||
total_cached += cached;
|
||||
total_shared += shared;
|
||||
printk(KERN_INFO "Node %4d: RAM: %11ld, rsvd: %8d, "
|
||||
"shrd: %10d, swpd: %10d\n", nid,
|
||||
present, reserved, shared, cached);
|
||||
}
|
||||
printk(KERN_INFO "%ld pages of RAM\n", total_present);
|
||||
printk(KERN_INFO "%d reserved pages\n", total_reserved);
|
||||
printk(KERN_INFO "%d pages shared\n", total_shared);
|
||||
printk(KERN_INFO "%d pages swap cached\n", total_cached);
|
||||
printk(KERN_INFO "Total of %ld pages in page table cache\n",
|
||||
quicklist_total_size());
|
||||
printk(KERN_INFO "%ld free buffer pages\n", nr_free_buffer_pages());
|
||||
}
|
||||
|
||||
|
||||
/* physical address where the bootmem map is located */
|
||||
unsigned long bootmap_start;
|
||||
|
||||
|
||||
@@ -607,69 +607,6 @@ void *per_cpu_init(void)
|
||||
}
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
/**
|
||||
* show_mem - give short summary of memory stats
|
||||
*
|
||||
* Shows a simple page count of reserved and used pages in the system.
|
||||
* For discontig machines, it does this on a per-pgdat basis.
|
||||
*/
|
||||
void show_mem(unsigned int filter)
|
||||
{
|
||||
int i, total_reserved = 0;
|
||||
int total_shared = 0, total_cached = 0;
|
||||
unsigned long total_present = 0;
|
||||
pg_data_t *pgdat;
|
||||
|
||||
printk(KERN_INFO "Mem-info:\n");
|
||||
show_free_areas(filter);
|
||||
if (filter & SHOW_MEM_FILTER_PAGE_COUNT)
|
||||
return;
|
||||
printk(KERN_INFO "Node memory in pages:\n");
|
||||
for_each_online_pgdat(pgdat) {
|
||||
unsigned long present;
|
||||
unsigned long flags;
|
||||
int shared = 0, cached = 0, reserved = 0;
|
||||
int nid = pgdat->node_id;
|
||||
|
||||
if (skip_free_areas_node(filter, nid))
|
||||
continue;
|
||||
pgdat_resize_lock(pgdat, &flags);
|
||||
present = pgdat->node_present_pages;
|
||||
for(i = 0; i < pgdat->node_spanned_pages; i++) {
|
||||
struct page *page;
|
||||
if (unlikely(i % MAX_ORDER_NR_PAGES == 0))
|
||||
touch_nmi_watchdog();
|
||||
if (pfn_valid(pgdat->node_start_pfn + i))
|
||||
page = pfn_to_page(pgdat->node_start_pfn + i);
|
||||
else {
|
||||
i = vmemmap_find_next_valid_pfn(nid, i) - 1;
|
||||
continue;
|
||||
}
|
||||
if (PageReserved(page))
|
||||
reserved++;
|
||||
else if (PageSwapCache(page))
|
||||
cached++;
|
||||
else if (page_count(page))
|
||||
shared += page_count(page)-1;
|
||||
}
|
||||
pgdat_resize_unlock(pgdat, &flags);
|
||||
total_present += present;
|
||||
total_reserved += reserved;
|
||||
total_cached += cached;
|
||||
total_shared += shared;
|
||||
printk(KERN_INFO "Node %4d: RAM: %11ld, rsvd: %8d, "
|
||||
"shrd: %10d, swpd: %10d\n", nid,
|
||||
present, reserved, shared, cached);
|
||||
}
|
||||
printk(KERN_INFO "%ld pages of RAM\n", total_present);
|
||||
printk(KERN_INFO "%d reserved pages\n", total_reserved);
|
||||
printk(KERN_INFO "%d pages shared\n", total_shared);
|
||||
printk(KERN_INFO "%d pages swap cached\n", total_cached);
|
||||
printk(KERN_INFO "Total of %ld pages in page table cache\n",
|
||||
quicklist_total_size());
|
||||
printk(KERN_INFO "%ld free buffer pages\n", nr_free_buffer_pages());
|
||||
}
|
||||
|
||||
/**
|
||||
* call_pernode_memory - use SRAT to call callback functions with node info
|
||||
* @start: physical start of range
|
||||
|
||||
@@ -684,3 +684,51 @@ per_linux32_init(void)
|
||||
}
|
||||
|
||||
__initcall(per_linux32_init);
|
||||
|
||||
/**
|
||||
* show_mem - give short summary of memory stats
|
||||
*
|
||||
* Shows a simple page count of reserved and used pages in the system.
|
||||
* For discontig machines, it does this on a per-pgdat basis.
|
||||
*/
|
||||
void show_mem(unsigned int filter)
|
||||
{
|
||||
int total_reserved = 0;
|
||||
unsigned long total_present = 0;
|
||||
pg_data_t *pgdat;
|
||||
|
||||
printk(KERN_INFO "Mem-info:\n");
|
||||
show_free_areas(filter);
|
||||
printk(KERN_INFO "Node memory in pages:\n");
|
||||
for_each_online_pgdat(pgdat) {
|
||||
unsigned long present;
|
||||
unsigned long flags;
|
||||
int reserved = 0;
|
||||
int nid = pgdat->node_id;
|
||||
int zoneid;
|
||||
|
||||
if (skip_free_areas_node(filter, nid))
|
||||
continue;
|
||||
pgdat_resize_lock(pgdat, &flags);
|
||||
|
||||
for (zoneid = 0; zoneid < MAX_NR_ZONES; zoneid++) {
|
||||
struct zone *zone = &pgdat->node_zones[zoneid];
|
||||
if (!populated_zone(zone))
|
||||
continue;
|
||||
|
||||
reserved += zone->present_pages - zone->managed_pages;
|
||||
}
|
||||
present = pgdat->node_present_pages;
|
||||
|
||||
pgdat_resize_unlock(pgdat, &flags);
|
||||
total_present += present;
|
||||
total_reserved += reserved;
|
||||
printk(KERN_INFO "Node %4d: RAM: %11ld, rsvd: %8d, ",
|
||||
nid, present, reserved);
|
||||
}
|
||||
printk(KERN_INFO "%ld pages of RAM\n", total_present);
|
||||
printk(KERN_INFO "%d reserved pages\n", total_reserved);
|
||||
printk(KERN_INFO "Total of %ld pages in page table cache\n",
|
||||
quicklist_total_size());
|
||||
printk(KERN_INFO "%ld free buffer pages\n", nr_free_buffer_pages());
|
||||
}
|
||||
@@ -204,7 +204,8 @@ static void __init do_init_bootmem(void)
|
||||
start_pfn = memblock_region_memory_base_pfn(reg);
|
||||
end_pfn = memblock_region_memory_end_pfn(reg);
|
||||
memblock_set_node(PFN_PHYS(start_pfn),
|
||||
PFN_PHYS(end_pfn - start_pfn), 0);
|
||||
PFN_PHYS(end_pfn - start_pfn),
|
||||
&memblock.memory, 0);
|
||||
}
|
||||
|
||||
/* All of system RAM sits in node 0 for the non-NUMA case */
|
||||
|
||||
@@ -42,7 +42,8 @@ void __init setup_bootmem_node(int nid, unsigned long start, unsigned long end)
|
||||
memblock_add(start, end - start);
|
||||
|
||||
memblock_set_node(PFN_PHYS(start_pfn),
|
||||
PFN_PHYS(end_pfn - start_pfn), nid);
|
||||
PFN_PHYS(end_pfn - start_pfn),
|
||||
&memblock.memory, nid);
|
||||
|
||||
/* Node-local pgdat */
|
||||
pgdat_paddr = memblock_alloc_base(sizeof(struct pglist_data),
|
||||
|
||||
@@ -192,7 +192,8 @@ void __init setup_memory(void)
|
||||
start_pfn = memblock_region_memory_base_pfn(reg);
|
||||
end_pfn = memblock_region_memory_end_pfn(reg);
|
||||
memblock_set_node(start_pfn << PAGE_SHIFT,
|
||||
(end_pfn - start_pfn) << PAGE_SHIFT, 0);
|
||||
(end_pfn - start_pfn) << PAGE_SHIFT,
|
||||
&memblock.memory, 0);
|
||||
}
|
||||
|
||||
/* free bootmem is whole main memory */
|
||||
|
||||
+17
-42
@@ -645,55 +645,30 @@ EXPORT_SYMBOL(empty_zero_page);
|
||||
|
||||
void show_mem(unsigned int filter)
|
||||
{
|
||||
int i,free = 0,total = 0,reserved = 0;
|
||||
int shared = 0, cached = 0;
|
||||
int total = 0,reserved = 0;
|
||||
pg_data_t *pgdat;
|
||||
|
||||
printk(KERN_INFO "Mem-info:\n");
|
||||
show_free_areas(filter);
|
||||
if (filter & SHOW_MEM_FILTER_PAGE_COUNT)
|
||||
return;
|
||||
#ifndef CONFIG_DISCONTIGMEM
|
||||
i = max_mapnr;
|
||||
while (i-- > 0) {
|
||||
total++;
|
||||
if (PageReserved(mem_map+i))
|
||||
reserved++;
|
||||
else if (PageSwapCache(mem_map+i))
|
||||
cached++;
|
||||
else if (!page_count(&mem_map[i]))
|
||||
free++;
|
||||
else
|
||||
shared += page_count(&mem_map[i]) - 1;
|
||||
|
||||
for_each_online_pgdat(pgdat) {
|
||||
unsigned long flags;
|
||||
int zoneid;
|
||||
|
||||
pgdat_resize_lock(pgdat, &flags);
|
||||
for (zoneid = 0; zoneid < MAX_NR_ZONES; zoneid++) {
|
||||
struct zone *zone = &pgdat->node_zones[zoneid];
|
||||
if (!populated_zone(zone))
|
||||
continue;
|
||||
|
||||
total += zone->present_pages;
|
||||
reserved = zone->present_pages - zone->managed_pages;
|
||||
}
|
||||
pgdat_resize_unlock(pgdat, &flags);
|
||||
}
|
||||
#else
|
||||
for (i = 0; i < npmem_ranges; i++) {
|
||||
int j;
|
||||
|
||||
for (j = node_start_pfn(i); j < node_end_pfn(i); j++) {
|
||||
struct page *p;
|
||||
unsigned long flags;
|
||||
|
||||
pgdat_resize_lock(NODE_DATA(i), &flags);
|
||||
p = nid_page_nr(i, j) - node_start_pfn(i);
|
||||
|
||||
total++;
|
||||
if (PageReserved(p))
|
||||
reserved++;
|
||||
else if (PageSwapCache(p))
|
||||
cached++;
|
||||
else if (!page_count(p))
|
||||
free++;
|
||||
else
|
||||
shared += page_count(p) - 1;
|
||||
pgdat_resize_unlock(NODE_DATA(i), &flags);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
printk(KERN_INFO "%d pages of RAM\n", total);
|
||||
printk(KERN_INFO "%d reserved pages\n", reserved);
|
||||
printk(KERN_INFO "%d pages shared\n", shared);
|
||||
printk(KERN_INFO "%d pages swap cached\n", cached);
|
||||
|
||||
|
||||
#ifdef CONFIG_DISCONTIGMEM
|
||||
{
|
||||
|
||||
@@ -209,7 +209,7 @@ void __init do_init_bootmem(void)
|
||||
/* Place all memblock_regions in the same node and merge contiguous
|
||||
* memblock_regions
|
||||
*/
|
||||
memblock_set_node(0, (phys_addr_t)ULLONG_MAX, 0);
|
||||
memblock_set_node(0, (phys_addr_t)ULLONG_MAX, &memblock.memory, 0);
|
||||
|
||||
/* Add all physical memory to the bootmem map, mark each area
|
||||
* present.
|
||||
|
||||
@@ -670,7 +670,8 @@ static void __init parse_drconf_memory(struct device_node *memory)
|
||||
node_set_online(nid);
|
||||
sz = numa_enforce_memory_limit(base, size);
|
||||
if (sz)
|
||||
memblock_set_node(base, sz, nid);
|
||||
memblock_set_node(base, sz,
|
||||
&memblock.memory, nid);
|
||||
} while (--ranges);
|
||||
}
|
||||
}
|
||||
@@ -760,7 +761,7 @@ new_range:
|
||||
continue;
|
||||
}
|
||||
|
||||
memblock_set_node(start, size, nid);
|
||||
memblock_set_node(start, size, &memblock.memory, nid);
|
||||
|
||||
if (--ranges)
|
||||
goto new_range;
|
||||
@@ -797,7 +798,8 @@ static void __init setup_nonnuma(void)
|
||||
|
||||
fake_numa_create_new_node(end_pfn, &nid);
|
||||
memblock_set_node(PFN_PHYS(start_pfn),
|
||||
PFN_PHYS(end_pfn - start_pfn), nid);
|
||||
PFN_PHYS(end_pfn - start_pfn),
|
||||
&memblock.memory, nid);
|
||||
node_set_online(nid);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ menu "Machine selection"
|
||||
|
||||
config SCORE
|
||||
def_bool y
|
||||
select HAVE_GENERIC_HARDIRQS
|
||||
select GENERIC_IRQ_SHOW
|
||||
select GENERIC_IOMAP
|
||||
select GENERIC_ATOMIC64
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <linux/kdebug.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/sched.h>
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/traps.h>
|
||||
|
||||
|
||||
@@ -230,8 +230,8 @@ void __init __add_active_range(unsigned int nid, unsigned long start_pfn,
|
||||
pmb_bolt_mapping((unsigned long)__va(start), start, end - start,
|
||||
PAGE_KERNEL);
|
||||
|
||||
memblock_set_node(PFN_PHYS(start_pfn),
|
||||
PFN_PHYS(end_pfn - start_pfn), nid);
|
||||
memblock_set_node(PFN_PHYS(start_pfn), PFN_PHYS(end_pfn - start_pfn),
|
||||
&memblock.memory, nid);
|
||||
}
|
||||
|
||||
void __init __weak plat_early_device_setup(void)
|
||||
|
||||
Loaded 20 of 139 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user