Hi all, On Mon, 26 Nov 2018 15:39:25 +1100 Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote: > > Today's linux-next merge of the tip tree got a conflict in: > > arch/x86/kernel/cpu/resctrl/rdtgroup.c > > between commit: > > 16ec1a5d58ea ("kernfs, sysfs, cgroup, intel_rdt: Support fs_context") > (where the file is arch/x86/kernel/cpu/intel_rdt_rdtgroup.c) > > from the vfs tree and commit: > > 580ebb66cbb3 ("x86/resctrl: Add vendor check for the MBA software controller") > > from the tip tree. > > I fixed it up (see below) and can carry the fix as necessary. This > is now fixed as far as linux-next is concerned, but any non trivial > conflicts should be mentioned to your upstream maintainer when your tree > is submitted for merging. You may also want to consider cooperating > with the maintainer of the conflicting tree to minimise any particularly > complex conflicts. > > -- > Cheers, > Stephen Rothwell > > diff --cc arch/x86/kernel/cpu/resctrl/rdtgroup.c > index 37c0ccb50823,61b102dd51a5..000000000000 > --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c > +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c > @@@ -2032,88 -2065,8 +2032,91 @@@ out > rdt_last_cmd_clear(); > mutex_unlock(&rdtgroup_mutex); > cpus_read_unlock(); > + return ret; > +} > + > +enum rdt_param { > + Opt_cdp, > + Opt_cdpl2, > + Opt_mba_mpbs, > + nr__rdt_params > +}; > > - return dentry; > +static const struct fs_parameter_spec rdt_param_specs[nr__rdt_params] = { > + [Opt_cdp] = { fs_param_is_flag }, > + [Opt_cdpl2] = { fs_param_is_flag }, > + [Opt_mba_mpbs] = { fs_param_is_flag }, > +}; > + > +static const char *const rdt_param_keys[nr__rdt_params] = { > + [Opt_cdp] = "cdp", > + [Opt_cdpl2] = "cdpl2", > + [Opt_mba_mpbs] = "mba_mbps", > +}; > + > +static const struct fs_parameter_description rdt_fs_parameters = { > + .name = "rdt", > + .nr_params = nr__rdt_params, > + .keys = rdt_param_keys, > + .specs = rdt_param_specs, > + .no_source = true, > +}; > + > +static int rdt_parse_param(struct fs_context *fc, struct fs_parameter *param) > +{ > + struct rdt_fs_context *ctx = rdt_fc2context(fc); > + struct fs_parse_result result; > + int opt; > + > + opt = fs_parse(fc, &rdt_fs_parameters, param, &result); > + if (opt < 0) > + return opt; > + > + switch (opt) { > + case Opt_cdp: > + ctx->enable_cdpl3 = true; > + return 0; > + case Opt_cdpl2: > + ctx->enable_cdpl2 = true; > + return 0; > + case Opt_mba_mpbs: > - ctx->enable_mba_mbps = true; > - return 0; > ++ if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) { > ++ ctx->enable_mba_mbps = true; > ++ return 0; > ++ } > ++ break; > + } > + > + return -EINVAL; > +} > + > +static void rdt_fs_context_free(struct fs_context *fc) > +{ > + struct rdt_fs_context *ctx = rdt_fc2context(fc); > + > + kernfs_free_fs_context(fc); > + kfree(ctx); > +} > + > +static const struct fs_context_operations rdt_fs_context_ops = { > + .free = rdt_fs_context_free, > + .parse_param = rdt_parse_param, > + .get_tree = rdt_get_tree, > +}; > + > +static int rdt_init_fs_context(struct fs_context *fc, struct dentry *reference) > +{ > + struct rdt_fs_context *ctx; > + > + ctx = kzalloc(sizeof(struct rdt_fs_context), GFP_KERNEL); > + if (!ctx) > + return -ENOMEM; > + > + ctx->kfc.root = rdt_root; > + ctx->kfc.magic = RDTGROUP_SUPER_MAGIC; > + fc->fs_private = &ctx->kfc; > + fc->ops = &rdt_fs_context_ops; > + return 0; > } > > static int reset_all_ctrls(struct rdt_resource *r) This is now a conflict between Linus' tree and the vfs tree. -- Cheers, Stephen Rothwell
Attachment:
pgpeAbW2XQvyT.pgp
Description: OpenPGP digital signature