[Voyage-linux] ALIX and linux kernel > 2.6.23
Mon Jan 14 18:09:32 HKT 2008
> Starting from 2.6.24, mfgpt feature is included and complied into
> kernel when you select GEODE_LX processor option. This month, I have
> been working on the lastest linux kernel for voyage. However, the
> kernel does not boot on ALIX and require some combinations on
> tinyBIOS. I finished the test of various tinyBIOS on alix3a with
> different kernel and here is my result:
During the past two weeks I had to spend some time with the same issue.
Although my environment differs from that of Voyage users I think the
results of my tests still apply to them, too.
We're using ALIX.2C1 and ALIX.3C1 boards with a non-Voyage distro and
Kernel 2.4.x. I have backported the watchdog driver that's also used in
Voyage. Usage of the so called workaround code, which resets the MFGPTs
via MSR 0x5140002b before initialisation, can be switched with a module
Or in other words, to the best of my knowledge: although the
implementation is slightly different, my backport is functionality-wise is
similar to the Geode watchdog-driver that is used in Voyage.
The results of my tests are:
1. Resetting the MFGPTs is not required at all, at least not for the
boards we use. The watchdog works fine even if neither the ALIX-BIOS nor
the driver uses the workaround code!
2. BIOS and driver need to use the same "MFGPT reset strategy". The
watchdog only works in case the BIOS *and* the watchdog driver *both*
either do or don't apply the workaround. If the driver uses the
workaround and the BIOS doesn't (or vice versa) the driver will hang
I'm now convinced that the MFGPT workaround in TinyBIOS (for ALIX) is not
needed. It can easily be shown that TinyBIOS does not reserve a single
MFGPT for its own purpose, hence the watchdog driver can easily allocate a
MFGPT. From what I know about the history of the feature in TinyBIOS, it
was added in order to make the watchdog driver in Voyage work. It seems
that this became necessary only because the watchdog driver uses the MFGPT
reset by default. The right way to fix that issue would have been to
disable the workaround code in the watchdog driver, rather than working
around an issue that's introduced by the driver.
To say it loud and clear: the workaround should *ONLY* be applied for
cases where the BIOS already did reserve *all* MFGPTs for its own
purposes. The workaround is ugly: it silently steals resources that the
BIOS or other components probably rely on, and it obviously has other
negative side effects as well. It should generally be disabled by default
(at least when the driver gets added to upstream kernel).
As far as Voyage Linux is concerned, a better way to address the issue
probably is to add a module option that allows the user to decide at
runtime whether the workaround should be used or not. However, even in
this case the workaround should be disabled by default.
For the sake of completeness, the following is a list of the status of the
"workaround code" of the various ALIX BIOS versions that were/are
available so far:
BIOS version workaround status
0.93 and older not available
0.94 .. 0.98b always enabled
0.98c always off
0.98d .. 0.99 selectable, default: disabled
Hope this helps.
More information about the Voyage-linux