From: Andi Kleen on
> x86_32 cannot use vmalloc_sync_all() to sychronize the TLBs from every
> processes because the vmalloc area is mapped in a different address space for

That doesn't make sense. vmalloc_all_sync() should work on 32bit too.
It just needs to walk all processes and fix up every page table.

-Andi
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Mathieu Desnoyers on
* Andi Kleen (andi(a)firstfloor.org) wrote:
> > x86_32 cannot use vmalloc_sync_all() to sychronize the TLBs from every
> > processes because the vmalloc area is mapped in a different address space for
>
> That doesn't make sense. vmalloc_all_sync() should work on 32bit too.
> It just needs to walk all processes and fix up every page table.

Yeah, I've been taken aback when Tejun told me that a few moments ago. I
initially thought that vmalloc_sync_all() synchronized all page mappings of all
processes on x86_32. But apparently that does not seem to be the case. I'm
adding him in CC.

Thanks,

Mathieu

--
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Andi Kleen on
On Wed, Jul 14, 2010 at 01:08:05PM -0400, Mathieu Desnoyers wrote:
> * Andi Kleen (andi(a)firstfloor.org) wrote:
> > > x86_32 cannot use vmalloc_sync_all() to sychronize the TLBs from every
> > > processes because the vmalloc area is mapped in a different address space for
> >
> > That doesn't make sense. vmalloc_all_sync() should work on 32bit too.
> > It just needs to walk all processes and fix up every page table.
>
> Yeah, I've been taken aback when Tejun told me that a few moments ago. I
> initially thought that vmalloc_sync_all() synchronized all page mappings of all
> processes on x86_32. But apparently that does not seem to be the case. I'm
> adding him in CC.

Well it worked when it was originally written. That was for the case
of a NMI handler in a module. If it doesn't work fix it. I don't
think the NMI-safe fault is really needed with it.

-Andi
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Tejun Heo on
Hello,

On 07/14/2010 08:56 PM, Andi Kleen wrote:
> On Wed, Jul 14, 2010 at 01:08:05PM -0400, Mathieu Desnoyers wrote:
>> * Andi Kleen (andi(a)firstfloor.org) wrote:
>>>> x86_32 cannot use vmalloc_sync_all() to sychronize the TLBs from
>>>> every processes because the vmalloc area is mapped in a different
>>>> address space for
>>> That doesn't make sense. vmalloc_all_sync() should work on 32bit
>>> too. It just needs to walk all processes and fix up every page
>>> table.

Yeah, vmalloc_sync_all() synchronizes everything by walking every page
table, so it should work. I was saying that just flushing TLB
wouldn't cut it because multiple top level page table entries can be
used to map vmalloc areas. It seems that both 32 and 64bit does that
tho.

Thanks.

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