[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC PATCH v2 03/25] x86: NUMA: Rename and sanitize some common functions
Hi Jan, Sorry for late reply. On Fri, Jun 30, 2017 at 7:35 PM, Jan Beulich <jbeulich@xxxxxxxx> wrote: >>>> <vijay.kilari@xxxxxxxxx> 03/28/17 5:54 PM >>> >> --- a/xen/arch/x86/numa.c >> +++ b/xen/arch/x86/numa.c >> @@ -53,15 +53,15 @@ int srat_disabled(void) >> /* >> * Given a shift value, try to populate memnodemap[] >> * Returns : >> - * 1 if OK >> - * 0 if memnodmap[] too small (of shift too small) >> - * -1 if node overlap or lost ram (shift too big) >> + * 0 if OK >> + * -EINVAL if memnodmap[] too small (of shift too small) >> + * OR if node overlap or lost ram (shift too big) > > It may not matter too much, but you're making things actually worse to > the caller, as it now can't distinguish the two failure modes anymore. > Also, if you already touch it, please also correct the apparent typo > ("of" quite likely meant to be "or"). But what I consider most problematic > is that you convert ... OK. I propose to return different error values for two failure modes. -ENOMEM for "if memnodmap[] too small" and -EINVAL for if node overlap or lost ram But In any case it does not matter much and can drop this change. > ... what is an error case so far to a success one. > >> @@ -116,10 +116,10 @@ static int __init >> allocate_cachealigned_memnodemap(void) >> * The LSB of all start and end addresses in the node map is the value of >> the >> * maximum possible shift. >> */ >> -static int __init extract_lsb_from_nodes(const struct node *nodes, >> - int numnodes) >> +static unsigned int __init extract_lsb_from_nodes(const struct node *nodes, >> + int numnodes) > > Why would you convert the return type to unsigned, but not also that of the > bogusly signed parameter? Because memnode_shift type is changed from int to unsigned int. The return type is changed. I will change int parameter to unsigned int. Apart from that I see that variable 'i' in extract_lsb_from_nodes() is int. This needs to changed to unsigned int. > >> @@ -143,27 +143,27 @@ static int __init extract_lsb_from_nodes(const struct >> node *nodes, >> return i; >> } >> >> -int __init compute_hash_shift(struct node *nodes, int numnodes, >> - nodeid_t *nodeids) >> +int __init compute_memnode_shift(struct node *nodes, int numnodes, >> + nodeid_t *nodeids, unsigned int *shift) > > I'm not in favor of returning the shift count via pointer when it can easily > be returned by value. OK. > >> { >> - int shift; >> + *shift = extract_lsb_from_nodes(nodes, numnodes); >> >> - shift = extract_lsb_from_nodes(nodes, numnodes); >> if ( memnodemapsize <= ARRAY_SIZE(_memnodemap) ) >> memnodemap = _memnodemap; >> else if ( allocate_cachealigned_memnodemap() ) >> - return -1; >> - printk(KERN_DEBUG "NUMA: Using %d for the hash shift.\n", shift); >> + return -ENOMEM; >> + >> + printk(KERN_DEBUG "NUMA: Using %u for the hash shift.\n", *shift); >> >> - if ( populate_memnodemap(nodes, numnodes, shift, nodeids) != 1 ) >> + if ( populate_memnodemap(nodes, numnodes, *shift, nodeids) ) >> { >> printk(KERN_INFO "Your memory is not aligned you need to " >> "rebuild your hypervisor with a bigger NODEMAPSIZE " >> - "shift=%d\n", shift); >> - return -1; >> + "shift=%u\n", *shift); >> + return -EINVAL; > > So you make populate_memnodemap() return proper error values, but then discard > it and uniformly use -EINVAL here. If you mean the function to simply return a > success/failure indicator, make it return bool. Otherwise use the error value > it return (even if right now it can only ever be -EINVAL). OK. I will drop this change and keep compute_hash_shift() return -1 or shift value. Regards Vijay _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |