Re: BUG? i386 TLB Flushing of Global Pages

From: Manfred Spraul (manfreds@colorfullife.com)
Date: Mon Jan 17 2000 - 05:03:05 EST


[I cc'ed Ingo, because he wrote the kmap code]

giampapa@us.ibm.com wrote:
>
> In include/asm-i386/pgtable.h, __flush_tlb() does not flush TLB entries for
> Global Pages.
>
> This may be intentional for some uses of __flush_tlb(), but there are
> several places where
> Linux attempts to flush TLB entries for global pages, such as in the smp
> boot code.

Yes, I agree this is a bug. Which functions use the global bit and
assume that flush_tlb_all() flushes them?

* zap_low_mappings()
* kmap: kmap_prot contains _PAGE_GLOBAL, ie all kmap flushes are wrong !
Ingo, could you check that?

I think we have 2 options:

1) flush_tlb_all() clears all page table entries, including _PAGE_GLOBAL
pages. As an additional advantage, this would allow us to mark module
memory as _PAGE_GLOBAL.

2) we remove _PAGE_GLOBAL from all page tables entries that could
change. We could add a special really_flush_tlb_all() macro that is
called in zap_low_mappings(), but that would be i386 specific.

I'd prefer the first option,

--
	Manfred

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



This archive was generated by hypermail 2b29 : Sun Jan 23 2000 - 21:00:15 EST