mpc880 linux-2.6.32 slow running processes
Joakim Tjernlund
joakim.tjernlund at transmode.se
Fri Jan 7 03:52:21 EST 2011
>>> + /* 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.
>>> + */
>>> + /* 8xx doesn't care about PID, size or ind args */
>>> + _tlbil_va(addr, 0, 0, 0);
>>> #endif /* CONFIG_8xx */
>>> +
>>> + if (!pg)
>>> + return pte;
>>> +
>>> + if (!PageReserved(pg)&& !test_bit(PG_arch_1,&pg->flags)) {
>>> flush_dcache_icache_page(pg);
>>> set_bit(PG_arch_1,&pg->flags);
>>> }
>> Rex, do you recall under what specific circumstances the _tlbil_va is
>> needed? Is it possible that it will be caused by a dcbst in other
>> contexts that are not dependent on the state of PG_arch_1?
The 8xx tlbil_va should not be needed in recent 2.6 after I fixed the 8xx TLB code
to workaround the dcbst bug there instead. See
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=0a2ab51ffb8dfdf51402dcfb446629648c96bc78;hp=60e071fee994ff98c37d03a4a7c5a3f8b1e3b8e5
Not sure what release it went into though.
Jocke
More information about the Linuxppc-dev
mailing list