diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 912689b00e2e78b681708fe7d47214380d4dfa28..fbd7a1b85354894bfa1e9e7cbc238eef1cc87a9e 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -475,6 +475,12 @@ ccw_timeout_log [S390] See Documentation/s390/CommonIO for details. + cdm-nodes= [KNL] + Format: hexadecimal expression + One bit express one node, if the node is HBM, set the + bit to 1. Then transform Binary to hexadecimal. + Example: node1, node2 is HBM, cdm-nodes=0x06. + cgroup_disable= [KNL] Disable a particular controller Format: {name of the controller(s) to disable} The effects of cgroup_disable=foo are: diff --git a/arch/arm64/include/asm/numa.h b/arch/arm64/include/asm/numa.h index 626ad01e83bf01a947c2bd9e087c2501338a4bec..dd80f3b958d50d155d1e53838780f61ff44b4424 100644 --- a/arch/arm64/include/asm/numa.h +++ b/arch/arm64/include/asm/numa.h @@ -19,6 +19,9 @@ extern bool numa_off; extern cpumask_var_t node_to_cpumask_map[MAX_NUMNODES]; void numa_clear_node(unsigned int cpu); +#ifdef CONFIG_COHERENT_DEVICE +extern nodemask_t cdmmask; +#endif #ifdef CONFIG_DEBUG_PER_CPU_MAPS const struct cpumask *cpumask_of_node(int node); #else diff --git a/arch/arm64/mm/numa.c b/arch/arm64/mm/numa.c index 2156f71a4745b37bb1fb1e621b7941bd930c0e9f..ff8d0c8718271c9c559b718e481966a5ee51d1db 100644 --- a/arch/arm64/mm/numa.c +++ b/arch/arm64/mm/numa.c @@ -38,10 +38,30 @@ static u8 *numa_distance; bool numa_off; #ifdef CONFIG_COHERENT_DEVICE +nodemask_t cdmmask; + inline int arch_check_node_cdm(int nid) { + return node_isset(nid, cdmmask); +} + +static int __init cdm_nodes_setup(char *s) +{ + int nid; + unsigned long tmpmask; + int err; + + err = kstrtoul(s, 0, &tmpmask); + if (err) + return err; + + for (nid = 0; nid < MAX_NUMNODES; nid++) { + if ((tmpmask >> nid) & 1) + node_set(nid, cdmmask); + } return 0; } +early_param("cdm-nodes", cdm_nodes_setup); #endif static __init int numa_parse_early_param(char *opt)