On Tue, 2023-02-07 at 20:07 -0800, Ira Weiny wrote: > Vishal Verma wrote: > > > > diff --git a/cxl/region.c b/cxl/region.c > > index 9079b2d..1c8ccc7 100644 > > --- a/cxl/region.c > > +++ b/cxl/region.c > > @@ -448,6 +448,31 @@ static int validate_decoder(struct cxl_decoder > > *decoder, > > return 0; > > } > > > > +static void set_type_from_decoder(struct cxl_ctx *ctx, struct > > parsed_params *p) > > +{ > > + int num_cap = 0; > > + > > + /* if param.type was explicitly specified, nothing to do here */ > > + if (param.type) > > + return; > > + > > + /* > > + * if the root decoder only has one type of capability, default > > + * to that mode for the region. > > + */ > > + if (cxl_decoder_is_pmem_capable(p->root_decoder)) > > + num_cap++; > > + if (cxl_decoder_is_volatile_capable(p->root_decoder)) > > + num_cap++; > > + > > + if (num_cap == 1) { > > + if (cxl_decoder_is_volatile_capable(p->root_decoder)) > > + p->mode = CXL_DECODER_MODE_RAM; > > + else if (cxl_decoder_is_pmem_capable(p->root_decoder)) > > + p->mode = CXL_DECODER_MODE_PMEM; > > + } > > I feel like the default for p->mode should be moved here from > parse_create_options(). But I'm not sure what the flows might be like in > that case. That means p->mode would default to NONE until here. > > That would make the man page behavior and this function match up nicely > for future maintenance.
Hm, do they not match now? I can see the appeal in collecting the default mode setup in one place, but in my mind the early checks / defaults in parse_create_options() are a simple, initial pass for canned defaults, and conflicting option checks. Things like set_type_from_decoder() are more of a 'second pass' thing where we may do more involved porcelain type decision making based on the full topology. > > But I don't think this is wrong. So: > > Reviewed-by: Ira Weiny <ira.we...@intel.com>