Merge branch 'master' into x86/memblock
Conflicts & resolutions: * arch/x86/xen/setup.cdc91c728fd
"xen: allow extra memory to be in multiple regions"24aa07882b
"memblock, x86: Replace memblock_x86_reserve/free..." conflicted on xen_add_extra_mem() updates. The resolution is trivial as the latter just want to replace memblock_x86_reserve_range() with memblock_reserve(). * drivers/pci/intel-iommu.c166e9278a3
"x86/ia64: intel-iommu: move to drivers/iommu/"5dfe8660a3
"bootmem: Replace work_with_active_regions() with..." conflicted as the former moved the file under drivers/iommu/. Resolved by applying the chnages from the latter on the moved file. * mm/Kconfig6661672053
"memblock: add NO_BOOTMEM config symbol"c378ddd53f
"memblock, x86: Make ARCH_DISCARD_MEMBLOCK a config option" conflicted trivially. Both added config options. Just letting both add their own options resolves the conflict. * mm/memblock.cd1f0ece6cd
"mm/memblock.c: small function definition fixes"ed7b56a799
"memblock: Remove memblock_memory_can_coalesce()" confliected. The former updates function removed by the latter. Resolution is trivial. Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/mmzone.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/nodemask.h>
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/notifier.h>
|
||||
@@ -295,7 +295,10 @@ static int __init find_min_common_depth(void)
|
||||
struct device_node *root;
|
||||
const char *vec5;
|
||||
|
||||
root = of_find_node_by_path("/rtas");
|
||||
if (firmware_has_feature(FW_FEATURE_OPAL))
|
||||
root = of_find_node_by_path("/ibm,opal");
|
||||
else
|
||||
root = of_find_node_by_path("/rtas");
|
||||
if (!root)
|
||||
root = of_find_node_by_path("/");
|
||||
|
||||
@@ -324,12 +327,19 @@ static int __init find_min_common_depth(void)
|
||||
|
||||
#define VEC5_AFFINITY_BYTE 5
|
||||
#define VEC5_AFFINITY 0x80
|
||||
chosen = of_find_node_by_path("/chosen");
|
||||
if (chosen) {
|
||||
vec5 = of_get_property(chosen, "ibm,architecture-vec-5", NULL);
|
||||
if (vec5 && (vec5[VEC5_AFFINITY_BYTE] & VEC5_AFFINITY)) {
|
||||
dbg("Using form 1 affinity\n");
|
||||
form1_affinity = 1;
|
||||
|
||||
if (firmware_has_feature(FW_FEATURE_OPAL))
|
||||
form1_affinity = 1;
|
||||
else {
|
||||
chosen = of_find_node_by_path("/chosen");
|
||||
if (chosen) {
|
||||
vec5 = of_get_property(chosen,
|
||||
"ibm,architecture-vec-5", NULL);
|
||||
if (vec5 && (vec5[VEC5_AFFINITY_BYTE] &
|
||||
VEC5_AFFINITY)) {
|
||||
dbg("Using form 1 affinity\n");
|
||||
form1_affinity = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -689,8 +699,7 @@ static void __init parse_drconf_memory(struct device_node *memory)
|
||||
|
||||
static int __init parse_numa_properties(void)
|
||||
{
|
||||
struct device_node *cpu = NULL;
|
||||
struct device_node *memory = NULL;
|
||||
struct device_node *memory;
|
||||
int default_nid = 0;
|
||||
unsigned long i;
|
||||
|
||||
@@ -712,6 +721,7 @@ static int __init parse_numa_properties(void)
|
||||
* each node to be onlined must have NODE_DATA etc backing it.
|
||||
*/
|
||||
for_each_present_cpu(i) {
|
||||
struct device_node *cpu;
|
||||
int nid;
|
||||
|
||||
cpu = of_get_cpu_node(i, NULL);
|
||||
@@ -730,8 +740,8 @@ static int __init parse_numa_properties(void)
|
||||
}
|
||||
|
||||
get_n_mem_cells(&n_mem_addr_cells, &n_mem_size_cells);
|
||||
memory = NULL;
|
||||
while ((memory = of_find_node_by_type(memory, "memory")) != NULL) {
|
||||
|
||||
for_each_node_by_type(memory, "memory") {
|
||||
unsigned long start;
|
||||
unsigned long size;
|
||||
int nid;
|
||||
@@ -780,8 +790,9 @@ new_range:
|
||||
}
|
||||
|
||||
/*
|
||||
* Now do the same thing for each MEMBLOCK listed in the ibm,dynamic-memory
|
||||
* property in the ibm,dynamic-reconfiguration-memory node.
|
||||
* Now do the same thing for each MEMBLOCK listed in the
|
||||
* ibm,dynamic-memory property in the
|
||||
* ibm,dynamic-reconfiguration-memory node.
|
||||
*/
|
||||
memory = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory");
|
||||
if (memory)
|
||||
@@ -1167,10 +1178,10 @@ static int hot_add_drconf_scn_to_nid(struct device_node *memory,
|
||||
*/
|
||||
int hot_add_node_scn_to_nid(unsigned long scn_addr)
|
||||
{
|
||||
struct device_node *memory = NULL;
|
||||
struct device_node *memory;
|
||||
int nid = -1;
|
||||
|
||||
while ((memory = of_find_node_by_type(memory, "memory")) != NULL) {
|
||||
for_each_node_by_type(memory, "memory") {
|
||||
unsigned long start, size;
|
||||
int ranges;
|
||||
const unsigned int *memcell_buf;
|
||||
@@ -1194,11 +1205,12 @@ int hot_add_node_scn_to_nid(unsigned long scn_addr)
|
||||
break;
|
||||
}
|
||||
|
||||
of_node_put(memory);
|
||||
if (nid >= 0)
|
||||
break;
|
||||
}
|
||||
|
||||
of_node_put(memory);
|
||||
|
||||
return nid;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user