Disable highmem with SMP if no h/w TLB broadcasting
Russell King - ARM Linux
linux at arm.linux.org.uk
Mon Sep 28 06:11:15 EDT 2009
On Sun, Sep 27, 2009 at 09:37:22PM -0400, Nicolas Pitre wrote:
> On Sun, 27 Sep 2009, Russell King - ARM Linux wrote:
>
> > We suffer an unfortunate combination of "features" which makes highmem
> > support on platforms without hardware TLB maintainence broadcast difficult:
> >
> > - we need kmap_high_get() support for DMA cache coherence
> > - this requires kmap_high() to take a spinlock with IRQs disabled
> > - kmap_high() occasionally calls flush_all_zero_pkmaps() to clear
> > out old mappings
>
> Hmmm... I guess there could be a way to work around this limitation by
> replacing flush_tlb_kernel_range() with something that would set a per
> CPU flag on all CPUs to schedule TLB flushing the next time they call
> kmap_high().
Until we have a solution that's acceptable to everyone, I suggest that
the patch I attached is merged.
More information about the linux-arm-kernel
mailing list