Commit 70f9e820 authored by James Morse's avatar James Morse Committed by Zeng Heng
Browse files

arm_mpam: resctrl: Implement resctrl_arch_reset_resources()

maillist inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I8T2RT

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git/log/?h=mpam/snapshot/v6.7-rc2



---------------------------

We already have a helper for reseting an mpam class. Hook it up to
resctrl_arch_reset_resources().

Signed-off-by: default avatarJames Morse <james.morse@arm.com>
Signed-off-by: default avatarZeng Heng <zengheng4@huawei.com>
parent cc622cf0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2177,7 +2177,7 @@ static void mpam_enable_once(void)
		READ_ONCE(mpam_partid_max) + 1, mpam_pmg_max + 1);
}

static void mpam_reset_class(struct mpam_class *class)
void mpam_reset_class(struct mpam_class *class)
{
	int idx;
	struct mpam_msc_ris *ris;
+2 −0
Original line number Diff line number Diff line
@@ -293,6 +293,8 @@ extern u8 mpam_pmg_max;
void mpam_enable(struct work_struct *work);
void mpam_disable(struct work_struct *work);

void mpam_reset_class(struct mpam_class *class);

int mpam_apply_config(struct mpam_component *comp, u16 partid,
		      struct mpam_config *cfg);

+27 −0
Original line number Diff line number Diff line
@@ -248,6 +248,33 @@ int mpam_resctrl_setup(void)
	return err;
}

void resctrl_arch_reset_resources(void)
{
	int i, idx;
	struct mpam_class *class;
	struct mpam_resctrl_res *res;

	lockdep_assert_cpus_held();

	if (!mpam_is_enabled())
		return;

	for (i = 0; i < RDT_NUM_RESOURCES; i++) {
		res = &mpam_resctrl_exports[i];

		if (!res->class)
			continue;	// dummy resource

		if (!res->resctrl_res.alloc_capable)
			continue;

		idx = srcu_read_lock(&mpam_srcu);
		list_for_each_entry_rcu(class, &mpam_classes, classes_list)
			mpam_reset_class(class);
		srcu_read_unlock(&mpam_srcu, idx);
	}
}

static struct mpam_resctrl_dom *
mpam_resctrl_alloc_domain(unsigned int cpu, struct mpam_resctrl_res *res)
{
+3 −0
Original line number Diff line number Diff line
@@ -50,4 +50,7 @@ static inline bool resctrl_arch_is_mbm_total_enabled(void)
	return false;
}

/* reset cached configurations, then all devices */
void resctrl_arch_reset_resources(void);

#endif /* __LINUX_ARM_MPAM_H */