@@ -56,14 +56,9 @@ int max_name_width, max_data_width;
5656 */
5757bool rdt_alloc_capable ;
5858
59- static void
60- mba_wrmsr_intel (struct rdt_domain * d , struct msr_param * m ,
61- struct rdt_resource * r );
62- static void
63- cat_wrmsr (struct rdt_domain * d , struct msr_param * m , struct rdt_resource * r );
64- static void
65- mba_wrmsr_amd (struct rdt_domain * d , struct msr_param * m ,
66- struct rdt_resource * r );
59+ static void mba_wrmsr_intel (struct msr_param * m );
60+ static void cat_wrmsr (struct msr_param * m );
61+ static void mba_wrmsr_amd (struct msr_param * m );
6762
6863#define domain_init (id ) LIST_HEAD_INIT(rdt_resources_all[id].r_resctrl.domains)
6964
@@ -309,12 +304,11 @@ static void rdt_get_cdp_l2_config(void)
309304 rdt_get_cdp_config (RDT_RESOURCE_L2 );
310305}
311306
312- static void
313- mba_wrmsr_amd (struct rdt_domain * d , struct msr_param * m , struct rdt_resource * r )
307+ static void mba_wrmsr_amd (struct msr_param * m )
314308{
309+ struct rdt_hw_resource * hw_res = resctrl_to_arch_res (m -> res );
310+ struct rdt_hw_domain * hw_dom = resctrl_to_arch_dom (m -> dom );
315311 unsigned int i ;
316- struct rdt_hw_domain * hw_dom = resctrl_to_arch_dom (d );
317- struct rdt_hw_resource * hw_res = resctrl_to_arch_res (r );
318312
319313 for (i = m -> low ; i < m -> high ; i ++ )
320314 wrmsrl (hw_res -> msr_base + i , hw_dom -> ctrl_val [i ]);
@@ -334,25 +328,22 @@ static u32 delay_bw_map(unsigned long bw, struct rdt_resource *r)
334328 return r -> default_ctrl ;
335329}
336330
337- static void
338- mba_wrmsr_intel (struct rdt_domain * d , struct msr_param * m ,
339- struct rdt_resource * r )
331+ static void mba_wrmsr_intel (struct msr_param * m )
340332{
333+ struct rdt_hw_resource * hw_res = resctrl_to_arch_res (m -> res );
334+ struct rdt_hw_domain * hw_dom = resctrl_to_arch_dom (m -> dom );
341335 unsigned int i ;
342- struct rdt_hw_domain * hw_dom = resctrl_to_arch_dom (d );
343- struct rdt_hw_resource * hw_res = resctrl_to_arch_res (r );
344336
345337 /* Write the delay values for mba. */
346338 for (i = m -> low ; i < m -> high ; i ++ )
347- wrmsrl (hw_res -> msr_base + i , delay_bw_map (hw_dom -> ctrl_val [i ], r ));
339+ wrmsrl (hw_res -> msr_base + i , delay_bw_map (hw_dom -> ctrl_val [i ], m -> res ));
348340}
349341
350- static void
351- cat_wrmsr (struct rdt_domain * d , struct msr_param * m , struct rdt_resource * r )
342+ static void cat_wrmsr (struct msr_param * m )
352343{
344+ struct rdt_hw_resource * hw_res = resctrl_to_arch_res (m -> res );
345+ struct rdt_hw_domain * hw_dom = resctrl_to_arch_dom (m -> dom );
353346 unsigned int i ;
354- struct rdt_hw_domain * hw_dom = resctrl_to_arch_dom (d );
355- struct rdt_hw_resource * hw_res = resctrl_to_arch_res (r );
356347
357348 for (i = m -> low ; i < m -> high ; i ++ )
358349 wrmsrl (hw_res -> msr_base + i , hw_dom -> ctrl_val [i ]);
@@ -362,6 +353,8 @@ struct rdt_domain *get_domain_from_cpu(int cpu, struct rdt_resource *r)
362353{
363354 struct rdt_domain * d ;
364355
356+ lockdep_assert_cpus_held ();
357+
365358 list_for_each_entry (d , & r -> domains , list ) {
366359 /* Find the domain that contains this CPU */
367360 if (cpumask_test_cpu (cpu , & d -> cpu_mask ))
@@ -378,19 +371,11 @@ u32 resctrl_arch_get_num_closid(struct rdt_resource *r)
378371
379372void rdt_ctrl_update (void * arg )
380373{
374+ struct rdt_hw_resource * hw_res ;
381375 struct msr_param * m = arg ;
382- struct rdt_hw_resource * hw_res = resctrl_to_arch_res (m -> res );
383- struct rdt_resource * r = m -> res ;
384- int cpu = smp_processor_id ();
385- struct rdt_domain * d ;
386376
387- d = get_domain_from_cpu (cpu , r );
388- if (d ) {
389- hw_res -> msr_update (d , m , r );
390- return ;
391- }
392- pr_warn_once ("cpu %d not found in any domain for resource %s\n" ,
393- cpu , r -> name );
377+ hw_res = resctrl_to_arch_res (m -> res );
378+ hw_res -> msr_update (m );
394379}
395380
396381/*
@@ -463,9 +448,11 @@ static int domain_setup_ctrlval(struct rdt_resource *r, struct rdt_domain *d)
463448 hw_dom -> ctrl_val = dc ;
464449 setup_default_ctrlval (r , dc );
465450
451+ m .res = r ;
452+ m .dom = d ;
466453 m .low = 0 ;
467454 m .high = hw_res -> num_closid ;
468- hw_res -> msr_update (d , & m , r );
455+ hw_res -> msr_update (& m );
469456 return 0 ;
470457}
471458
0 commit comments