Incorrect ACPI blacklisting of ASUS P4B266 ?
Hi.
There are quite a lot of reports of people having problems managing poweroff of their ASUS P4B266 based systems.
It seems that providing acpi=force as a boot param is quite succesful.
Maybe that should be fixed WRT to the blacklisting... hence reporting as advised in the kernel source (arch/x86/kernel/acpi/boot.c).
I unfortunately couldn't identify the reason why such a blacklisting was setup, as it seems to come from long time ago.
Hope this helps,
Best regards.
Signature · 3 lines
Olivier BERGER (OpenPGP: 1024D/B4C5F37F) http://www.olivierberger.com/weblog/
A message that is not in the archive (sent off-list or not yet received): [email protected]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi.
Following advice from Thomas Renninger, I hereby propose a patch for the ACPI blacklisting kernel code, that I've successfully applied to kernel 2.6.26-15, that allows ACPI detection on Asus P4B266 mainboards.
Maybe there could be a smarter version that would allow blacklisting for same mainboards with older BIOS versions than the one I'm using, but I don't know if/how that'd be possible. So the patch I propose is pretty obvious.
FYI, here are some reports that mention acpi=force working succesfully for P4B266 mainboards (in english and german) :
http://forums.fedoraforum.org/showpost.php?p=669615&postcount=5 / http://fedoraforum.org/forum/showpost.php?p=669615&postcount=5
https://lists.ubuntu.com/archives/kernel-bugs/2006-November/023486.html / https://bugs.launchpad.net/linux/+bug/43961/comments/145
http://forum.ubuntuusers.de/topic/automatische-abschaltung/#post-249151
http://www.pc-forum24.de/suse-system-installieren/3031-suse-10-2-laesst-sich-nicht-ausschalten.html#post13729
I hope this won't break things for different BIOS versions than mine, and that this will on the other hand allow lots of users to benefit from working ACPI.
Best regards,
arch/x86/kernel/acpi/boot.c renamed from arch/x86/kernel/acpi/boot.c.orig +0 -8
@@ -1106,14 +1106,6 @@ }, { .callback = force_acpi_ht, - .ident = "ASUS P4B266", - .matches = { -DMI_MATCH (DMI_BOARD_VENDOR ,"ASUSTeK Computer INC." ), - DMI_MATCH(DMI_BOARD_NAME, "P4B266"), - }, - }, - { - .callback = force_acpi_ht, .ident = "ASUS P2B-DS", .matches = { DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
Quoted 16 lines · Thomas Renninger
Quoted 5 lines · On Saturday 28 March 2009 16:32:49 you wrote:
Hi.
There are quite a lot of reports of people having problems managing poweroff of their ASUS P4B266 based systems.
Quoted 7 lines
It seems that providing acpi=force as a boot param is quite succesful.
Maybe that should be fixed WRT to the blacklisting... hence reporting as advised in the kernel source (
arch/x86/kernel/acpi/boot.c).I unfortunately couldn't identify the reason why such a blacklisting was setup, as it seems to come from long time ago.
Maybe acpi was broken at that times and the bug was not in the ASUS BIOS, but in the ACPI implementation. Or the BIOS got fixed up.
Quoted 7 lines
Why don't you send a patch removing the ASUS from the dmi list and post it on [email protected]
Best also add a pointer to e.g. a discussion where people state that it works better with acpi=force.Thomas
- --
Olivier BERGER
(OpenPGP: 1024D/B4C5F37F)
http://www.olivierberger.com/weblog/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Processed by Mailcrypt 3.5.8+ <http://mailcrypt.sourceforge.net/>
iD8DBQFJ82X6LBigKrTF838RAguPAJ9sPUhnbG7V0XeXn1HLBg+8GGCfFwCgp6Hh +hRrDc8OZ/K7N6bzYwz7b+8=
=Jv7i
-----END PGP SIGNATURE-----
Quoted 8 lines · On Saturday 25 April 2009 21:35:42 Olivier Berger wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1Hi.
Following advice from Thomas Renninger, I hereby propose a patch for the ACPI blacklisting kernel code, that I've successfully applied to kernel 2.6.26-15, that allows ACPI detection on Asus P4B266 mainboards.
Hmm, there seem to be different models of this motherboard series:
P4B266
P4B266-C
P4B266-E
P4B266-M
P4B266-SE
P4B266 and P4B266-SE seem to have a similar BIOS history and the latest for both is: Beta Version 1011.003
The rest has a similar version string, but different latest BIOS versions (e.g. 1007)
The dmi blacklisting currently done in the kernel is probably matching all of above and is rather unfortunate.
We could have:
- A BIOS update which makes all of above models work with acpi(=force) well. Then your patch is perfect.
- One or more of above (latest) BIOSes does not work well with acpi=force still.
Then we'd get regressions and some people will moan about that and the patch will get reverted. In this case we should find out which kind of BIOS/mainboard it is and enhance the blacklisting to only match this(these) -> dmidecode is needed to be able to blacklist more fine grained.
Quoted 8 lines
Maybe there could be a smarter version that would allow blacklisting for same mainboards with older BIOS versions than the one I'm using, but I don't know if/how that'd be possible. So the patch I propose is pretty obvious.
FYI, here are some reports that mention acpi=force working succesfully for P4B266 mainboards (in english and german) :
Quoted 6 lines
http://forums.fedoraforum.org/showpost.php?p=669615&postcount=5 / http://fedoraforum.org/forum/showpost.php?p=669615&postcount=5
https://lists.ubuntu.com/archives/kernel-bugs/2006-November/023486.html / https://bugs.launchpad.net/linux/+bug/43961/comments/145
http://forum.ubuntuusers.de/topic/automatische-abschaltung/#post-249151
http://www.pc-forum24.de/suse-system-installieren/3031-suse-10-2-laesst-sich-nicht-ausschalten.html#post13729I hope this won't break things for different BIOS versions than mine,
That's the risk and we should try to find out more first.
I wonder whether it's worth that at all, one of the latest BIOSes is from:
2003/06/10
Quoted 2 lines
and that this will on the other hand allow lots of users to benefit from working ACPI.
It should be best if you state in above references that these guys must use acpi=force.
Others should find it then via google.
That's the easiest and safest way.
I tried to find out who and why this got added, but this exists even before git history...
Thomas
Quoted 14 lines · Thomas Renninger
Quoted 6 lines · On Saturday 25 April 2009 21:35:42 Olivier Berger wrote:
Hi.
Following advice from Thomas Renninger, I hereby propose a patch for the ACPI blacklisting kernel code, that I've successfully applied to kernel 2.6.26-15, that allows ACPI detection on Asus P4B266 mainboards.
Hmm, there seem to be different models of this motherboard series:
P4B266
P4B266-C
P4B266-E
P4B266-M
P4B266-SE
Quoted 3 lines
P4B266 and P4B266-SE seem to have a similar BIOS history and the latest for both is: Beta Version 1011.003
Where is this information available (other than on Asus support site) , btw ?
Quoted 9 lines
The rest has a similar version string, but different latest BIOS versions (e.g. 1007)
The dmi blacklisting currently done in the kernel is probably matching all of above and is rather unfortunate.
We could have:
- A BIOS update which makes all of above models work with acpi(=force) well. Then your patch is perfect.
Quoted 8 lines
- One or more of above (latest) BIOSes does not work well with acpi=force still.
Then we'd get regressions and some people will moan about that and the patch will get reverted. In this case we should find out which kind of BIOS/mainboard it is and enhance the blacklisting to only match this(these) -> dmidecode is needed to be able to blacklist more fine grained.
Isn't there any possibility to compare BIOS versions in the blacklisting code ?
Quoted 13 lines
Quoted 13 lines
Maybe there could be a smarter version that would allow blacklisting for same mainboards with older BIOS versions than the one I'm using, but I don't know if/how that'd be possible. So the patch I propose is pretty obvious.
FYI, here are some reports that mention acpi=force working succesfully for P4B266 mainboards (in english and german) :
http://forums.fedoraforum.org/showpost.php?p=669615&postcount=5 / http://fedoraforum.org/forum/showpost.php?p=669615&postcount=5
https://lists.ubuntu.com/archives/kernel-bugs/2006-November/023486.html / https://bugs.launchpad.net/linux/+bug/43961/comments/145
http://forum.ubuntuusers.de/topic/automatische-abschaltung/#post-249151
http://www.pc-forum24.de/suse-system-installieren/3031-suse-10-2-laesst-sich-nicht-ausschalten.html#post13729
Quoted 5 lines
Quoted 1 line
I hope this won't break things for different BIOS versions than mine,
That's the risk and we should try to find out more first.
I wonder whether it's worth that at all, one of the latest BIOSes is from:
2003/06/10
Of course it's an old mainboard... but I suppose there are still quite a bunch in operation.
Quoted 7 lines
Quoted 3 lines
and that this will on the other hand allow lots of users to benefit from working ACPI.
It should be best if you state in above references that these guys must use acpi=force.
Others should find it then via google.
That's the easiest and safest way.
Well... adding burden on users instead of clean patch ;)
Quoted 3 lines
I tried to find out who and why this got added, but this exists even before git history...
Same for my searches :(
So... there ain't a way to provide an improved patch that wouldn't change anything but for tested BIOS versions (btw, mine is :
BIOS Information
Vendor: Award Software, Inc.
Version: ASUS P4B266 ACPI BIOS Revision 1010 Release Date: 08/06/2002
) ?
That would be sad if the current blacklisting wasn't able to do such checks on versions :(
Anyway, I suppose I will follow your advice and try and report people of the acpi=force as I already started to do in
http://www.olivierberger.com/weblog/index.php?post/2009/03/28/Proper-power-management-on-Asus-P4B266-mainboard
Thanks for your helps.
Best regards,
Signature · 3 lines
Olivier BERGER (OpenPGP: 1024D/B4C5F37F) http://www.olivierberger.com/weblog/
Quoted 57 lines · On Tuesday 28 April 2009 08:09:16 Olivier Berger wrote:
Quoted 14 lines · Thomas Renninger
Quoted 6 lines · On Saturday 25 April 2009 21:35:42 Olivier Berger wrote:
Hi.
Following advice from Thomas Renninger, I hereby propose a patch for the ACPI blacklisting kernel code, that I've successfully applied to kernel 2.6.26-15, that allows ACPI detection on Asus P4B266 mainboards.
Hmm, there seem to be different models of this motherboard series:
P4B266
P4B266-C
P4B266-E
P4B266-M
P4B266-SEQuoted 3 lines
P4B266 and P4B266-SE seem to have a similar BIOS history and the latest for both is: Beta Version 1011.003
Where is this information available (other than on Asus support site) , btw ? From the Asus support site.
Quoted 9 lines
The rest has a similar version string, but different latest BIOS versions (e.g. 1007)
The dmi blacklisting currently done in the kernel is probably matching all of above and is rather unfortunate.
We could have:
- A BIOS update which makes all of above models work with acpi(=force) well. Then your patch is perfect.Quoted 8 lines
- One or more of above (latest) BIOSes does not work well with acpi=force still.
Then we'd get regressions and some people will moan about that and the patch will get reverted. In this case we should find out which kind of BIOS/mainboard it is and enhance the blacklisting to only match this(these) -> dmidecode is needed to be able to blacklist more fine grained.Isn't there any possibility to compare BIOS versions in the blacklisting code ?
Quoted 13 lines
Quoted 13 lines
Maybe there could be a smarter version that would allow blacklisting for same mainboards with older BIOS versions than the one I'm using, but I don't know if/how that'd be possible. So the patch I propose is pretty obvious.
FYI, here are some reports that mention acpi=force working succesfully for P4B266 mainboards (in english and german) :
http://forums.fedoraforum.org/showpost.php?p=669615&postcount=5 / http://fedoraforum.org/forum/showpost.php?p=669615&postcount=5
https://lists.ubuntu.com/archives/kernel-bugs/2006-November/023486.html / https://bugs.launchpad.net/linux/+bug/43961/comments/145
http://forum.ubuntuusers.de/topic/automatische-abschaltung/#post-249151
http://www.pc-forum24.de/suse-system-installieren/3031-suse-10-2-laesst-sich-nicht-ausschalten.html#post13729
Quoted 8 lines
Quoted 5 lines
Quoted 1 line
I hope this won't break things for different BIOS versions than mine,
That's the risk and we should try to find out more first.
I wonder whether it's worth that at all, one of the latest BIOSes is from:
2003/06/10Of course it's an old mainboard... but I suppose there are still quite a bunch in operation.
Yep and it would be worse if some are not anymore after this change, than if some (a lot probably are already using this) need acpi=force.
Quoted 24 lines
Quoted 7 lines
Quoted 3 lines
and that this will on the other hand allow lots of users to benefit from working ACPI.
It should be best if you state in above references that these guys must use acpi=force.
Others should find it then via google.
That's the easiest and safest way.Well... adding burden on users instead of clean patch ;)
Quoted 3 lines
I tried to find out who and why this got added, but this exists even before git history...
Same for my searches :(
So... there ain't a way to provide an improved patch that wouldn't change anything but for tested BIOS versions (btw, mine is :
BIOS Information
Vendor: Award Software, Inc.
Version: ASUS P4B266 ACPI BIOS Revision 1010 Release Date: 08/06/2002
) ?
Quoted 2 lines
That would be sad if the current blacklisting wasn't able to do such checks on versions :(
You could either:
1) add a whitelist into the blacklist
2) better limit the blacklist
The first won't break machines, but is ugly.
For the second you must know which BIOS(es) fix the acpi parts to not cause regressions and then list all broken BIOS revisions, e.g.:
{
.callback = force_acpi_ht,
.ident = "ASUS P4B266",
.matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
DMI_MATCH(DMI_BOARD_NAME, "P4B266"),
DMI_MATCH(DMI_BOARD_VERSION, "ASUS P4B266 ACPI BIOS Revision 1007"),
},
},
{
.callback = force_acpi_ht,
.ident = "ASUS P4B266",
.matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
DMI_MATCH(DMI_BOARD_NAME, "P4B266"),
DMI_MATCH(DMI_BOARD_VERSION, "ASUS P4B266 ACPI BIOS Revision 1008"),
},
},BTW, the same seem to have happened for the ASUS A7V:
/*
* Boxes that need ACPI PCI IRQ routing disabled
*/
{
.callback = disable_acpi_irq,
.ident = "ASUS A7V",
.matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC"),
DMI_MATCH(DMI_BOARD_NAME, "<A7V>"),
/* newer BIOS, Revision 1011, does work */
DMI_MATCH(DMI_BIOS_VERSION,
"ASUS A7V ACPI BIOS Revision 1007"),
},
},One could argue that people have to upgrade to the latest BIOS and your patch is ok. This is IMO a valid argument, but it could be that people with a P4B266-SE board cannot upgrade to version 1010. I'd say, better leave the fingers off...
Quoted 3 lines
Anyway, I suppose I will follow your advice and try and report people of the acpi=force as I already started to do in
http://www.olivierberger.com/weblog/index.php?post/2009/03/28/Proper-power-management-on-Asus-P4B266-mainboard
Everyone with such problems should easily be able to google the acpi=force param for this board then.
Thanks,
Thomas
Quoted 7 lines · Thomas Renninger
Quoted 3 lines
That would be sad if the current blacklisting wasn't able to do such checks on versions :(
You could either:
1) add a whitelist into the blacklist
2) better limit the blacklist
The first won't break machines, but is ugly.
I suppose some new algorithm would need to be written for that, and no easy "struct definition" (like what is currently there) will be enough ?
Quoted 22 lines
For the second you must know which BIOS(es) fix the acpi parts to not cause regressions and then list all broken BIOS revisions, e.g.:
{ .callback = force_acpi_ht, .ident = "ASUS P4B266", .matches = { DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), DMI_MATCH(DMI_BOARD_NAME, "P4B266"), DMI_MATCH(DMI_BOARD_VERSION, "ASUS P4B266 ACPI BIOS Revision 1007"), }, }, { .callback = force_acpi_ht, .ident = "ASUS P4B266", .matches = { DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), DMI_MATCH(DMI_BOARD_NAME, "P4B266"), DMI_MATCH(DMI_BOARD_VERSION, "ASUS P4B266 ACPI BIOS Revision 1008"), }, },BTW, the same seem to have happened for the ASUS A7V:
Quoted 15 lines
/*
* Boxes that need ACPI PCI IRQ routing disabled
*/
{
.callback = disable_acpi_irq,
.ident = "ASUS A7V",
.matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC"),
DMI_MATCH(DMI_BOARD_NAME, "<A7V>"),
/* newer BIOS, Revision 1011, does work */
DMI_MATCH(DMI_BIOS_VERSION,
"ASUS A7V ACPI BIOS Revision 1007"),
},
},Well, that lacks some version comparison operator to look clean to me... which looks far from trivial considering the version formats probably quite creative ;)
Quoted 4 lines
One could argue that people have to upgrade to the latest BIOS and your patch is ok. This is IMO a valid argument, but it could be that people with a P4B266-SE board cannot upgrade to version 1010. I'd say, better leave the fingers off...
Yup.
Quoted 7 lines
Quoted 4 lines
Anyway, I suppose I will follow your advice and try and report people of the acpi=force as I already started to do in
http://www.olivierberger.com/weblog/index.php?post/2009/03/28/Proper-power-management-on-Asus-P4B266-mainboardEveryone with such problems should easily be able to google the acpi=force param for this board then.
I'm thinking about some kind of warning message that might be provided by the kernel.
Currently, the blacklisting issues something like :
xxx detected : force use of acpi=ht
Maybe in some greylisted cases (like such ASUS P4B266), an additional message may be issued, something like :
xxx detected : may work with acpi=force (test at own risk)
or something like that ?
Btw, while we're at it, the first message is not so clear to me "force use of acpi=ht" : I think it could be interpreted as "you may force ACPI to work by passing acpi=ht" or something like that, as it tends to indicate that it refers to an 'acpi=' parameter.
Maybe something like "forced 'ht' mode for acpi" or a similar variant would be less ambiguous (pardon me, I'm not so sure what 'ht' means here, btw).
Hope this helps,
Signature · 3 lines
Olivier BERGER (OpenPGP: 1024D/B4C5F37F) http://www.olivierberger.com/weblog/
Quoted 6 lines · On Tuesday 28 April 2009 19:15:47 Olivier Berger wrote:
Thomas Renninger <[email protected]> writes:
I'm thinking about some kind of warning message that might be provided by the kernel.
Quoted 7 lines
Currently, the blacklisting issues something like :
xxx detected : force use of acpi=htMaybe in some greylisted cases (like such ASUS P4B266), an additional message may be issued, something like :
xxx detected : may work with acpi=force (test at own risk)
or something like that ?
Sounds like a good idea.
Something like that (not tested at all).
I could imagine Len adds this one if you give it a try and see the message popping up in dmesg.
ACPI: Some latest P4B266 BIOSes prefer acpi, but get blacklisted, notify user
--- arch/x86/kernel/acpi/boot.c | 3 +++ 1 file changed, 3 insertions(+)
arch/x86/kernel/acpi/boot.c +3 -0
@@ -1496,6 +1496,9 @@ static int __init force_acpi_ht(const stif (!acpi_force) {printk (KERN_NOTICE "%s detected: force use of acpi=ht\n" , d->ident); +if (!strcmp (d->ident,"ASUS P4B266" )) +printk (KERN_NOTICE "Latest BIOSes might work better" +" with acpi=force\n" );disable_acpi (); acpi_ht =1 ; }else {