diff options
| -rw-r--r-- | drivers/acpi/numa/hmat.c | 32 | 
1 files changed, 20 insertions, 12 deletions
| diff --git a/drivers/acpi/numa/hmat.c b/drivers/acpi/numa/hmat.c index 21722cbec324..4cae2e84251a 100644 --- a/drivers/acpi/numa/hmat.c +++ b/drivers/acpi/numa/hmat.c @@ -322,11 +322,28 @@ static __init void hmat_add_locality(struct acpi_hmat_locality *hmat_loc)  	}  } +static __init void hmat_update_target(unsigned int tgt_pxm, unsigned int init_pxm, +				      u8 mem_hier, u8 type, u32 value) +{ +	struct memory_target *target = find_mem_target(tgt_pxm); + +	if (mem_hier != ACPI_HMAT_MEMORY) +		return; + +	if (target && target->processor_pxm == init_pxm) { +		hmat_update_target_access(target, type, value, +					  NODE_ACCESS_CLASS_0); +		/* If the node has a CPU, update access 1 */ +		if (node_state(pxm_to_node(init_pxm), N_CPU)) +			hmat_update_target_access(target, type, value, +						  NODE_ACCESS_CLASS_1); +	} +} +  static __init int hmat_parse_locality(union acpi_subtable_headers *header,  				      const unsigned long end)  {  	struct acpi_hmat_locality *hmat_loc = (void *)header; -	struct memory_target *target;  	unsigned int init, targ, total_size, ipds, tpds;  	u32 *inits, *targs, value;  	u16 *entries; @@ -367,17 +384,8 @@ static __init int hmat_parse_locality(union acpi_subtable_headers *header,  				inits[init], targs[targ], value,  				hmat_data_type_suffix(type)); -			if (mem_hier == ACPI_HMAT_MEMORY) { -				target = find_mem_target(targs[targ]); -				if (target && target->processor_pxm == inits[init]) { -					hmat_update_target_access(target, type, value, -								  NODE_ACCESS_CLASS_0); -					/* If the node has a CPU, update access 1 */ -					if (node_state(pxm_to_node(inits[init]), N_CPU)) -						hmat_update_target_access(target, type, value, -									  NODE_ACCESS_CLASS_1); -				} -			} +			hmat_update_target(targs[targ], inits[init], +					   mem_hier, type, value);  		}  	} | 
