[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 3/3] tools: introduce parameter max_wp_ram_ranges.
>>> On 26.01.16 at 08:32, <yu.c.zhang@xxxxxxxxxxxxxxx> wrote: > On 1/22/2016 4:01 PM, Jan Beulich wrote: >>>>> On 22.01.16 at 04:20, <yu.c.zhang@xxxxxxxxxxxxxxx> wrote: >>> --- a/xen/arch/x86/hvm/hvm.c >>> +++ b/xen/arch/x86/hvm/hvm.c >>> @@ -940,6 +940,10 @@ static int hvm_ioreq_server_alloc_rangesets(struct >>> hvm_ioreq_server *s, >>> { >>> unsigned int i; >>> int rc; >>> + unsigned int max_wp_ram_ranges = >>> + ( s->domain->arch.hvm_domain.params[HVM_PARAM_MAX_WP_RAM_RANGES] > >>> 0 ) ? >>> + s->domain->arch.hvm_domain.params[HVM_PARAM_MAX_WP_RAM_RANGES] : >>> + MAX_NR_IO_RANGES; >> >> Besides this having stray blanks inside the parentheses it truncates >> the value from 64 to 32 bits and would benefit from using the gcc >> extension of omitting the middle operand of ?:. But even better >> would imo be if you avoided the local variable and ... >> > After second thought, how about we define a default value for this > parameter in libx.h, and initialize the parameter when creating the > domain with default value if it's not configured. No, I don't think the tool stack should be determining the default here (unless you want the default to be zero, and have zero indeed mean zero). > About this local variable, we keep it, and ... > >>> @@ -962,7 +966,10 @@ static int hvm_ioreq_server_alloc_rangesets(struct > hvm_ioreq_server *s, >>> if ( !s->range[i] ) >>> goto fail; >>> >>> - rangeset_limit(s->range[i], MAX_NR_IO_RANGES); >>> + if ( i == HVMOP_IO_RANGE_WP_MEM ) >>> + rangeset_limit(s->range[i], max_wp_ram_ranges); >>> + else >>> + rangeset_limit(s->range[i], MAX_NR_IO_RANGES); >> >> ... did the entire computation here, using ?: for the second argument >> of the function invocation. >> > ... replace the if/else pair with sth. like: > rangeset_limit(s->range[i], > ((i == HVMOP_IO_RANGE_WP_MEM)? > max_wp_ram_ranges: > MAX_NR_IO_RANGES)); > This 'max_wp_ram_ranges' has no particular usages, but the string > "s->domain->arch.hvm_domain.params[HVM_PARAM_MAX_WP_RAM_RANGES] " > is too lengthy, and can easily break the 80 column limitation. :) > Does this approach sounds OK? :) Seems better than the original, so okay. >>> @@ -6009,6 +6016,7 @@ static int hvm_allow_set_param(struct domain *d, >>> case HVM_PARAM_IOREQ_SERVER_PFN: >>> case HVM_PARAM_NR_IOREQ_SERVER_PAGES: >>> case HVM_PARAM_ALTP2M: >>> + case HVM_PARAM_MAX_WP_RAM_RANGES: >>> if ( value != 0 && a->value != value ) >>> rc = -EEXIST; >>> break; >> >> Is there a particular reason you want this limit to be unchangeable >> after having got set once? >> > Well, not exactly. :) > I added this limit because by now we do not have any approach to > change the max range numbers inside ioreq server during run-time. > I can add another patch to introduce an xl command, which can change > it dynamically. But I doubt the necessity of this new command and > am also wonder if this new command would cause more confusion for > the user... And I didn't say you need to expose this to the user. All I asked was whether you really mean the value to be a set-once one. If yes, the code above is fine. If no, the code above should be changed, but there's then still no need to expose a way to "manually" adjust the value until a need for such arises. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |