Lines Matching defs:memtier
113 static __always_inline nodemask_t get_memtier_nodemask(struct memory_tier *memtier)
118 list_for_each_entry(memtype, &memtier->memory_types, tier_sibiling)
166 struct memory_tier *memtier, *new_memtier;
178 list_for_each_entry(memtier, &memory_tiers, list) {
179 if (adistance == memtier->adistance_start)
180 return memtier;
186 list_for_each_entry(memtier, &memory_tiers, list) {
187 if (adistance == memtier->adistance_start) {
189 } else if (adistance < memtier->adistance_start) {
203 list_add_tail(&new_memtier->list, &memtier->list);
218 memtier = new_memtier;
221 list_add(&memtype->tier_sibiling, &memtier->memory_types);
222 return memtier;
237 return rcu_dereference_check(pgdat->memtier,
246 struct memory_tier *memtier;
253 memtier = rcu_dereference(pgdat->memtier);
254 if (!memtier) {
258 if (memtier->adistance_start <= top_tier_adistance)
269 struct memory_tier *memtier;
272 * pg_data_t.memtier updates includes a synchronize_rcu()
273 * which ensures that we either find NULL or a valid memtier
277 memtier = rcu_dereference(pgdat->memtier);
278 if (memtier)
279 *targets = memtier->lower_tier_mask;
332 struct memory_tier *memtier;
339 * to access pgda->memtier.
341 memtier = __node_get_memory_tier(node);
342 if (memtier)
343 memtier->lower_tier_mask = NODE_MASK_NONE;
361 struct memory_tier *memtier;
378 memtier = __node_get_memory_tier(node);
379 if (!memtier || list_is_last(&memtier->list, &memory_tiers))
382 * Get the lower memtier to find the demotion node list.
384 memtier = list_next_entry(memtier, list);
385 tier_nodes = get_memtier_nodemask(memtier);
390 * memtier nodelist.
421 list_for_each_entry_reverse(memtier, &memory_tiers, list) {
422 tier_nodes = get_memtier_nodemask(memtier);
426 * abstract distance below the max value of this memtier
429 top_tier_adistance = memtier->adistance_start +
441 list_for_each_entry(memtier, &memory_tiers, list) {
447 tier_nodes = get_memtier_nodemask(memtier);
449 memtier->lower_tier_mask = lower_tier;
477 struct memory_tier *memtier;
491 memtier = find_create_memory_tier(memtype);
492 if (!IS_ERR(memtier))
493 rcu_assign_pointer(pgdat->memtier, memtier);
494 return memtier;
497 static void destroy_memory_tier(struct memory_tier *memtier)
499 list_del(&memtier->list);
500 device_unregister(&memtier->dev);
507 struct memory_tier *memtier;
515 * a valid memtier finds memory_dev_types with nodes still
516 * linked to the memtier. We achieve this by waiting for
521 memtier = __node_get_memory_tier(node);
522 if (memtier) {
525 rcu_assign_pointer(pgdat->memtier, NULL);
531 if (list_empty(&memtier->memory_types))
532 destroy_memory_tier(memtier);
598 struct memory_tier *memtier;
617 memtier = set_node_memory_tier(arg->status_change_nid);
618 if (!IS_ERR(memtier))
630 struct memory_tier *memtier;
656 memtier = set_node_memory_tier(node);
657 if (IS_ERR(memtier))