Re: [PATCH] UV: fix incorrect tlb flush all issue

From: Jan Beulich
Date: Fri Sep 07 2012 - 03:09:26 EST


>>> On 07.09.12 at 07:37, Alex Shi <alex.shi@xxxxxxxxx> 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,


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/