Commit 0eacd06b authored by Aneesh Kumar K.V's avatar Aneesh Kumar K.V Committed by Michael Ellerman

powerpc/pseries: Rename TYPE1_AFFINITY to FORM1_AFFINITY

Also make related code cleanup that will allow adding FORM2_AFFINITY in
later patches. No functional change in this patch.
Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Reviewed-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210812132223.225214-3-aneesh.kumar@linux.ibm.com
parent 7e35ef66
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
#define FW_FEATURE_OPAL ASM_CONST(0x0000000010000000) #define FW_FEATURE_OPAL ASM_CONST(0x0000000010000000)
#define FW_FEATURE_SET_MODE ASM_CONST(0x0000000040000000) #define FW_FEATURE_SET_MODE ASM_CONST(0x0000000040000000)
#define FW_FEATURE_BEST_ENERGY ASM_CONST(0x0000000080000000) #define FW_FEATURE_BEST_ENERGY ASM_CONST(0x0000000080000000)
#define FW_FEATURE_TYPE1_AFFINITY ASM_CONST(0x0000000100000000) #define FW_FEATURE_FORM1_AFFINITY ASM_CONST(0x0000000100000000)
#define FW_FEATURE_PRRN ASM_CONST(0x0000000200000000) #define FW_FEATURE_PRRN ASM_CONST(0x0000000200000000)
#define FW_FEATURE_DRMEM_V2 ASM_CONST(0x0000000400000000) #define FW_FEATURE_DRMEM_V2 ASM_CONST(0x0000000400000000)
#define FW_FEATURE_DRC_INFO ASM_CONST(0x0000000800000000) #define FW_FEATURE_DRC_INFO ASM_CONST(0x0000000800000000)
...@@ -69,7 +69,7 @@ enum { ...@@ -69,7 +69,7 @@ enum {
FW_FEATURE_SPLPAR | FW_FEATURE_LPAR | FW_FEATURE_SPLPAR | FW_FEATURE_LPAR |
FW_FEATURE_CMO | FW_FEATURE_VPHN | FW_FEATURE_XCMO | FW_FEATURE_CMO | FW_FEATURE_VPHN | FW_FEATURE_XCMO |
FW_FEATURE_SET_MODE | FW_FEATURE_BEST_ENERGY | FW_FEATURE_SET_MODE | FW_FEATURE_BEST_ENERGY |
FW_FEATURE_TYPE1_AFFINITY | FW_FEATURE_PRRN | FW_FEATURE_FORM1_AFFINITY | FW_FEATURE_PRRN |
FW_FEATURE_HPT_RESIZE | FW_FEATURE_DRMEM_V2 | FW_FEATURE_HPT_RESIZE | FW_FEATURE_DRMEM_V2 |
FW_FEATURE_DRC_INFO | FW_FEATURE_BLOCK_REMOVE | FW_FEATURE_DRC_INFO | FW_FEATURE_BLOCK_REMOVE |
FW_FEATURE_PAPR_SCM | FW_FEATURE_ULTRAVISOR | FW_FEATURE_PAPR_SCM | FW_FEATURE_ULTRAVISOR |
......
...@@ -147,7 +147,7 @@ extern int of_read_drc_info_cell(struct property **prop, ...@@ -147,7 +147,7 @@ extern int of_read_drc_info_cell(struct property **prop,
#define OV5_MSI 0x0201 /* PCIe/MSI support */ #define OV5_MSI 0x0201 /* PCIe/MSI support */
#define OV5_CMO 0x0480 /* Cooperative Memory Overcommitment */ #define OV5_CMO 0x0480 /* Cooperative Memory Overcommitment */
#define OV5_XCMO 0x0440 /* Page Coalescing */ #define OV5_XCMO 0x0440 /* Page Coalescing */
#define OV5_TYPE1_AFFINITY 0x0580 /* Type 1 NUMA affinity */ #define OV5_FORM1_AFFINITY 0x0580 /* FORM1 NUMA affinity */
#define OV5_PRRN 0x0540 /* Platform Resource Reassignment */ #define OV5_PRRN 0x0540 /* Platform Resource Reassignment */
#define OV5_HP_EVT 0x0604 /* Hot Plug Event support */ #define OV5_HP_EVT 0x0604 /* Hot Plug Event support */
#define OV5_RESIZE_HPT 0x0601 /* Hash Page Table resizing */ #define OV5_RESIZE_HPT 0x0601 /* Hash Page Table resizing */
......
...@@ -1096,7 +1096,7 @@ static const struct ibm_arch_vec ibm_architecture_vec_template __initconst = { ...@@ -1096,7 +1096,7 @@ static const struct ibm_arch_vec ibm_architecture_vec_template __initconst = {
#else #else
0, 0,
#endif #endif
.associativity = OV5_FEAT(OV5_TYPE1_AFFINITY) | OV5_FEAT(OV5_PRRN), .associativity = OV5_FEAT(OV5_FORM1_AFFINITY) | OV5_FEAT(OV5_PRRN),
.bin_opts = OV5_FEAT(OV5_RESIZE_HPT) | OV5_FEAT(OV5_HP_EVT), .bin_opts = OV5_FEAT(OV5_RESIZE_HPT) | OV5_FEAT(OV5_HP_EVT),
.micro_checkpoint = 0, .micro_checkpoint = 0,
.reserved0 = 0, .reserved0 = 0,
......
...@@ -53,7 +53,10 @@ EXPORT_SYMBOL(node_data); ...@@ -53,7 +53,10 @@ EXPORT_SYMBOL(node_data);
static int primary_domain_index; static int primary_domain_index;
static int n_mem_addr_cells, n_mem_size_cells; static int n_mem_addr_cells, n_mem_size_cells;
static int form1_affinity;
#define FORM0_AFFINITY 0
#define FORM1_AFFINITY 1
static int affinity_form;
#define MAX_DISTANCE_REF_POINTS 4 #define MAX_DISTANCE_REF_POINTS 4
static int distance_ref_points_depth; static int distance_ref_points_depth;
...@@ -190,7 +193,7 @@ int __node_distance(int a, int b) ...@@ -190,7 +193,7 @@ int __node_distance(int a, int b)
int i; int i;
int distance = LOCAL_DISTANCE; int distance = LOCAL_DISTANCE;
if (!form1_affinity) if (affinity_form == FORM0_AFFINITY)
return ((a == b) ? LOCAL_DISTANCE : REMOTE_DISTANCE); return ((a == b) ? LOCAL_DISTANCE : REMOTE_DISTANCE);
for (i = 0; i < distance_ref_points_depth; i++) { for (i = 0; i < distance_ref_points_depth; i++) {
...@@ -210,7 +213,7 @@ static void initialize_distance_lookup_table(int nid, ...@@ -210,7 +213,7 @@ static void initialize_distance_lookup_table(int nid,
{ {
int i; int i;
if (!form1_affinity) if (affinity_form != FORM1_AFFINITY)
return; return;
for (i = 0; i < distance_ref_points_depth; i++) { for (i = 0; i < distance_ref_points_depth; i++) {
...@@ -289,6 +292,17 @@ static int __init find_primary_domain_index(void) ...@@ -289,6 +292,17 @@ static int __init find_primary_domain_index(void)
int index; int index;
struct device_node *root; struct device_node *root;
/*
* Check for which form of affinity.
*/
if (firmware_has_feature(FW_FEATURE_OPAL)) {
affinity_form = FORM1_AFFINITY;
} else if (firmware_has_feature(FW_FEATURE_FORM1_AFFINITY)) {
dbg("Using form 1 affinity\n");
affinity_form = FORM1_AFFINITY;
} else
affinity_form = FORM0_AFFINITY;
if (firmware_has_feature(FW_FEATURE_OPAL)) if (firmware_has_feature(FW_FEATURE_OPAL))
root = of_find_node_by_path("/ibm,opal"); root = of_find_node_by_path("/ibm,opal");
else else
...@@ -318,23 +332,16 @@ static int __init find_primary_domain_index(void) ...@@ -318,23 +332,16 @@ static int __init find_primary_domain_index(void)
} }
distance_ref_points_depth /= sizeof(int); distance_ref_points_depth /= sizeof(int);
if (affinity_form == FORM0_AFFINITY) {
if (firmware_has_feature(FW_FEATURE_OPAL) ||
firmware_has_feature(FW_FEATURE_TYPE1_AFFINITY)) {
dbg("Using form 1 affinity\n");
form1_affinity = 1;
}
if (form1_affinity) {
index = of_read_number(distance_ref_points, 1);
} else {
if (distance_ref_points_depth < 2) { if (distance_ref_points_depth < 2) {
printk(KERN_WARNING "NUMA: " printk(KERN_WARNING "NUMA: "
"short ibm,associativity-reference-points\n"); "short ibm,associativity-reference-points\n");
goto err; goto err;
} }
index = of_read_number(&distance_ref_points[1], 1); index = of_read_number(&distance_ref_points[1], 1);
} else {
index = of_read_number(distance_ref_points, 1);
} }
/* /*
......
...@@ -119,7 +119,7 @@ struct vec5_fw_feature { ...@@ -119,7 +119,7 @@ struct vec5_fw_feature {
static __initdata struct vec5_fw_feature static __initdata struct vec5_fw_feature
vec5_fw_features_table[] = { vec5_fw_features_table[] = {
{FW_FEATURE_TYPE1_AFFINITY, OV5_TYPE1_AFFINITY}, {FW_FEATURE_FORM1_AFFINITY, OV5_FORM1_AFFINITY},
{FW_FEATURE_PRRN, OV5_PRRN}, {FW_FEATURE_PRRN, OV5_PRRN},
{FW_FEATURE_DRMEM_V2, OV5_DRMEM_V2}, {FW_FEATURE_DRMEM_V2, OV5_DRMEM_V2},
{FW_FEATURE_DRC_INFO, OV5_DRC_INFO}, {FW_FEATURE_DRC_INFO, OV5_DRC_INFO},
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment