Messages in this thread | | | Date | Fri, 07 Sep 2012 08:10:26 +0100 | From | "Jan Beulich" <> | Subject | Re: [PATCH] UV: fix incorrect tlb flush all issue |
| |
>>> On 07.09.12 at 07:37, Alex Shi <alex.shi@intel.com> wrote: > @@ -1113,7 +1114,10 @@ const struct cpumask *uv_flush_tlb_others(const struct > cpumask *cpumask, > > record_send_statistics(stat, locals, hubs, remotes, bau_desc); > > - bau_desc->payload.address = start; > + if (!end)
So despite having made a very similar mistake on the Xen side, you're again not following your own code adjustments here: The indicator for a multi-page flush is not 'end' being zero, nor would it be okay to use the proper indicator (TLB_FLUSH_ALL) here. Instead, to yield correct code, you need to check for the range covering more than one page. Improvements to do finer grained flushing (if worthwhile on UV) could then be done on top of this.
Jan
> + bau_desc->payload.address = TLB_FLUSH_ALL; > + else > + bau_desc->payload.address = start; > bau_desc->payload.sending_cpu = cpu; > /* > * uv_flush_send_and_wait returns 0 if all cpu's were messaged,
| |