mirror of https://gitee.com/openkylin/linux.git
[POWERPC] 8xx: platform specific mmu updates
This is just a straight port of the same done in arch/ppc
by Marcelo Tosatti. One used to be
[PATCH] ppc32 8xx: update_mmu_cache() needs unconditional tlbie,
commit eb07d964b4
In a nutshell, the board is nearly stuck without this, yet without any
visible failure - being just very slow.
Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
f25222b995
commit
dbbb06b7f6
|
@ -490,19 +490,19 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address,
|
||||||
!cpu_has_feature(CPU_FTR_NOEXECUTE) &&
|
!cpu_has_feature(CPU_FTR_NOEXECUTE) &&
|
||||||
pfn_valid(pfn)) {
|
pfn_valid(pfn)) {
|
||||||
struct page *page = pfn_to_page(pfn);
|
struct page *page = pfn_to_page(pfn);
|
||||||
|
#ifdef CONFIG_8xx
|
||||||
|
/* On 8xx, cache control instructions (particularly
|
||||||
|
* "dcbst" from flush_dcache_icache) fault as write
|
||||||
|
* operation if there is an unpopulated TLB entry
|
||||||
|
* for the address in question. To workaround that,
|
||||||
|
* we invalidate the TLB here, thus avoiding dcbst
|
||||||
|
* misbehaviour.
|
||||||
|
*/
|
||||||
|
_tlbie(address);
|
||||||
|
#endif
|
||||||
if (!PageReserved(page)
|
if (!PageReserved(page)
|
||||||
&& !test_bit(PG_arch_1, &page->flags)) {
|
&& !test_bit(PG_arch_1, &page->flags)) {
|
||||||
if (vma->vm_mm == current->active_mm) {
|
if (vma->vm_mm == current->active_mm) {
|
||||||
#ifdef CONFIG_8xx
|
|
||||||
/* On 8xx, cache control instructions (particularly
|
|
||||||
* "dcbst" from flush_dcache_icache) fault as write
|
|
||||||
* operation if there is an unpopulated TLB entry
|
|
||||||
* for the address in question. To workaround that,
|
|
||||||
* we invalidate the TLB here, thus avoiding dcbst
|
|
||||||
* misbehaviour.
|
|
||||||
*/
|
|
||||||
_tlbie(address);
|
|
||||||
#endif
|
|
||||||
__flush_dcache_icache((void *) address);
|
__flush_dcache_icache((void *) address);
|
||||||
} else
|
} else
|
||||||
flush_dcache_icache_page(page);
|
flush_dcache_icache_page(page);
|
||||||
|
|
Loading…
Reference in New Issue