Re: CONFIG_VGACON_SOFT_SCROLLBACK crashes 2.6.17

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Antonio Vargas wrote:
> On 6/22/06, Antonino A. Daplas <[email protected]> wrote:
>> Al Boldi wrote:
>> > Antonino A. Daplas wrote:
>> >> Al Boldi wrote:
>> >>> Enabling CONFIG_VGACON_SOFT_SCROLLBACK causes random fatal system
>> >>> freezes.
>> >>>
>> >>> Especially, ping 10.1 -A easily causes a complete system hang during
>> >>> scroll.
>> >>>
>> >>> Is there an easy way to fix this, other than disabling the option?
>> >> I can't duplicate your problem. Did it ever work before?
>> >
>> > This option did not exist before 2.6.17.
>>
>> I meant if you tried any of the -rc kernels.
>>
>> Anyway, can you try the patch below.  It's a debugging patch and
>> it will slow down the console.
>>
>> If the system hang disappears, remove the line
>>
>>     while (i--);
>>
>> in include/linux/vt_buffer.h.  This line is introduced by
>> the patch below.
>>
>> Let me know at what point it worked, or whether it worked at all.
>>
>> >
>> >> Can you send me you kernel config?
>> >
>> > Attached below.
>> >
>> > BTW, is there any chance to patch your savagefb to support VIA/S3
>> UniChrome?
>> >
>>
>> If someone posts a patch to lkml or fbdev-devel, why not?  But a separate
>> driver is probably better as the 2 are very different.
>>
>> Tony
>>
>> diff --git a/include/linux/vt_buffer.h b/include/linux/vt_buffer.h
>> index 057db7d..e9b6064 100644
>> --- a/include/linux/vt_buffer.h
>> +++ b/include/linux/vt_buffer.h
>> @@ -20,11 +20,21 @@ #endif
>>
>>  #ifndef VT_BUF_HAVE_RW
>>  #define scr_writew(val, addr) (*(addr) = (val))
>> -#define scr_readw(addr) (*(addr))
>> -#define scr_memcpyw(d, s, c) memcpy(d, s, c)
>> -#define scr_memmovew(d, s, c) memmove(d, s, c)
>> -#define VT_BUF_HAVE_MEMCPYW
>> -#define VT_BUF_HAVE_MEMMOVEW
>> +//#define scr_readw(addr) (*(addr))
>> +
>> +static inline u16 scr_readw(volatile const u16 *addr)
>> +{
>> +    int i = 10000;
>> +    u16 val = *addr;
>> +
>> +    while (i--);
>> +    return val;
>> +}
>> +
>> +//#define scr_memcpyw(d, s, c) memcpy(d, s, c)
>> +//#define scr_memmovew(d, s, c) memmove(d, s, c)
>> +#undef VT_BUF_HAVE_MEMCPYW
>> +#undef VT_BUF_HAVE_MEMMOVEW
>>  #endif
>>
>>  #ifndef VT_BUF_HAVE_MEMSETW
> 
> Antonino, is this while(i--) a cpu busy-wait loop???

Yes.

> This would have
> different timings on different cpu kinds...

Yes. This is just a debugging patch to help me pinpoint where
the problem is.

> maybe a short usleep()?

It can be called in any context, so sleep() will be illegal
in certain circumstances.

Tony
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux