[RFC 07/18] arm: mm: retry on QSD icache parity errors
Ashwin Chaugule
ashbertslists at gmail.com
Tue Jan 19 11:16:36 EST 2010
On Mon, Jan 18, 2010 at 1:42 PM, Ashwin Chaugule
<ashbertslists at gmail.com> wrote:
>> +static int
>> +do_imprecise_ext(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
>> +{
>> +#ifdef CONFIG_ARCH_MSM_SCORPION
>> + unsigned int regval;
>> + static unsigned char flush_toggle;
>> +
>> + asm("mrc p15, 0, %0, c5, c1, 0\n" /* read adfsr for fault status */
>> + : "=r" (regval));
>> + if (regval == 0x2) {
>> + /* Fault was caused by icache parity error. Alternate
>> + * simply retrying the access and flushing the icache. */
>> + flush_toggle ^= 1;
>> + if (flush_toggle)
>> + asm("mcr p15, 0, %0, c7, c5, 0\n"
>> + :
>> + : "r" (regval)); /* input value is ignored */
>
> Wouldn't you need regval = 0 here, to clear the EFSR ?
>
>
Gah. Nevermind. Need to write 1 to clear this reg. Alternating methods
to clear regs, is just .. confusing. ;)
More information about the linux-arm-kernel
mailing list