Re: [PATCH v6 1/3] x86/resctrl: Add mount option "mba_MBps_event"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Dec 12, 2023 at 09:54:38AM -0800, Reinette Chatre wrote:
> 
> On 12/8/2023 2:09 PM, Peter Newman wrote:
> > On Fri, Dec 8, 2023 at 1:57 PM Tony Luck <tony.luck@xxxxxxxxx> wrote:
> >>
> >> On Fri, Dec 08, 2023 at 10:17:08AM -0800, Peter Newman wrote:
> >>> Hi Tony,
> >>>
> >>> On Thu, Dec 7, 2023 at 11:56 AM Tony Luck <tony.luck@xxxxxxxxx> wrote:
> >>>> @@ -2715,7 +2723,25 @@ static int rdt_parse_param(struct fs_context *fc, struct fs_parameter *param)
> >>>>         case Opt_mba_mbps:
> >>>>                 if (!supports_mba_mbps())
> >>>>                         return -EINVAL;
> >>>> -               ctx->enable_mba_mbps = true;
> >>>> +               if (is_mbm_local_enabled())
> >>>> +                       ctx->enable_mba_mbps_local = true;
> >>>> +               else
> >>>> +                       return -EINVAL;
> >>>> +               return 0;
> >>>> +       case Opt_mba_mbps_event:
> >>>> +               if (!supports_mba_mbps())
> >>>> +                       return -EINVAL;
> >>>> +               if (!strcmp("mbm_local_bytes", param->string)) {
> >>>> +                       if (!is_mbm_local_enabled())
> >>>> +                               return -EINVAL;
> >>>> +                       ctx->enable_mba_mbps_local = true;
> >>>> +               } else if (!strcmp("mbm_total_bytes", param->string)) {
> >>>> +                       if (!is_mbm_total_enabled())
> >>>> +                               return -EINVAL;
> >>>> +                       ctx->enable_mba_mbps_total = true;
> >>>> +               } else {
> >>>> +                       return -EINVAL;
> >>>
> >>> It looks like if I pass
> >>> "mba_MBps_event=mbm_total_bytes,mba_MBps_event=mbm_local_bytes" I can
> >>> set both flags true.
> >>
> >> That's going to be confusing. I'll add code to stop the user from
> >> passing both options.
> > 
> > Also kind of confusing, after reading the second patch, I realized
> > "mba_MBps_event=mbm_total_bytes,mba_MBps" also results in both being
> > set. If you're able to fail the mount operation if both flags somehow
> > get set, that would address this one too.
> 
> Are two separate flags required? All existing options within struct rdt_fs_context
> are of type bool but that does not imply that it is the required type for
> all. 

Reinette,

Maybe a flag and a value?  The structure becomes:

struct rdt_fs_context {
	struct kernfs_fs_context	kfc;
	bool				enable_cdpl2;
	bool				enable_cdpl3;
	bool				enable_mba_mbps;
	enum resctrl_event_id		mba_mbps_event;
	bool				enable_debug;
};

Mount option parsing (including blocking user from setting the options
multiple times):

	case Opt_mba_mbps:
		if (!supports_mba_mbps() || ctx->enable_mba_mbps)
			return -EINVAL;
		if (is_mbm_local_enabled())
			ctx->mba_mbps_event = QOS_L3_MBM_LOCAL_EVENT_ID;
		else if (is_mbm_total_enabled())
			ctx->mba_mbps_event = QOS_L3_MBM_TOTAL_EVENT_ID;
		else
			return -EINVAL;
		ctx->enable_mba_mbps = true;
		return 0;
	case Opt_mba_mbps_event:
		if (!supports_mba_mbps() || ctx->enable_mba_mbps)
			return -EINVAL;
		if (!strcmp("mbm_local_bytes", param->string))
			ctx->mba_mbps_event = QOS_L3_MBM_LOCAL_EVENT_ID;
		else if (!strcmp("mbm_total_bytes", param->string))
			ctx->mba_mbps_event = QOS_L3_MBM_TOTAL_EVENT_ID;
		else
			return -EINVAL;
		ctx->enable_mba_mbps = true;
		return 0;


and use of the options to enable the feature:

	if (ctx->enable_mba_mbps) {
		r->membw.mba_mbps_event = ctx->mba_mbps_event;
		ret = set_mba_sc(true);
		if (ret)
			goto out_cdpl3;
	}

-Tony




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux