Re: [Bugme-new] [Bug 8378] New: Averatec 3156X laptop doesn't reboot with kernels > 2.6.13.5 (responsible commit found)

From: Truxton Fulton
Date: Fri Apr 27 2007 - 23:27:15 EST


Andrew Morton wrote (at Fri, 27 Apr 2007 14:44:34 -0700) :
>
>
> On Fri, 27 Apr 2007 10:42:25 -0700
> bugme-daemon@xxxxxxxxxxxxxxxxxxx wrote:
>
>> http://bugzilla.kernel.org/show_bug.cgi?id=8378
>>
>> Summary: Averatec 3156X laptop doesn't reboot with kernels >
>> 2.6.13.5 (responsible commit found)
>> Kernel Version: 2.6.14 till 2.6.21
>> Status: NEW
>> Severity: normal
>> Owner: power-management_other@xxxxxxxxxxxxxxxxxxxx
>> Submitter: lee-in-berlin@xxxxxx
>>
>>
>> Most recent kernel where this bug did *NOT* occur: 2.6.13.5
>>
>> Distribution: Debian
>> Hardware Environment: Averatec 3156X (seemingly identical to the american model
>> 3150P)
>> Software Environment:?
>> Problem Description:
>> I noticed that with recent kernels my laptop would reboot when I do an 'init 6',
>> but hang at the end of the init run. The last working vanilla kernel is
>> 2.6.13.5. With some trying and a bit of guessing I found a change to
>> include/asm-i386/mach-default/mach_reboot.h in 2.6.14 to be the culprit. It can
>> be found at:
>> http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.14.y.git;a=commitdiff;h=59f4e7d572980a521b7bdba74ab71b21f5995538
>>
>> On a 2.6.21 source tree I can revert this patch, and then rebooting works.
>>
>> Steps to reproduce:
>> 1) On a Averatec 3156X (or 3150p?) boot to your default runlevel.
>> 2) as root, type "init 6".
>> 3) instead of rebooting, the system will hang at the end with a blank screen.
>>
>
> Oh dear. We have an ugly i386 snafu here. Thanks for doing the bisection
> - it helps enormously.
>
> Could some brave person please pick it up and see if we can get both
> Truxton and Lee's machines working?

Hi,

I verified on my IDEQ210M that performing the old reboot sequence
followed by the new reboot sequence works for me, and I suspect that
it will work for Lee also. Like this :

/* old method, works on most machines */
for (i = 0; i < 100; i++) {
kb_wait();
udelay(50);
outb(0xfe, 0x64); /* pulse reset low */
udelay(50);
}

/* new method, sets the "System flag" which when set,
indicates successful completion of the keyboard controller
self-test (Basic Assurance Test, BAT). This is needed
for some machines with no keyboard plugged in */
for (i = 0; i < 100; i++) {
kb_wait();
udelay(50);
outb(0x60, 0x64); /* write Controller Command Byte */
udelay(50);
kb_wait();
udelay(50);
outb(0x14, 0x60); /* set "System flag" */
udelay(50);
kb_wait();
udelay(50);
outb(0xfe, 0x64); /* pulse reset low */
udelay(50);
}

Thanks,

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