Skip to contentSkip to conversation

Reboot through the BIOS on newer HP laptops

PATCH In review Matthew Garrett 3 participants 5 messages Nov 24, 2005 – Nov 27, 2005

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Reboot through the BIOS on newer HP laptops

Newer HP laptops (nc4200, nc6xxx, nc8xxx) hang on reboot with a standard configuration. Passing reboot=b makes them work. This patch adds a DMI quirk that defaults them to this mode, and doesn't appear to have any adverse affects on older HPs.

arch/i386/kernel/reboot.c renamed from arch/i386/kernel/reboot.c.orig +8 -0
@@ -135,6 +135,14 @@
 			DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 2400"),
 		},
 	},
+	{       /* HP laptops have weird reboot issues */
+	        .callback = set_bios_reboot,
+		.ident = "HP Laptop",
+		.matches = {
+		        DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq"),
+		},
+	},
 	{ }
 };
 
Signature · 1 line
Matthew Garrett | [email protected]
#1 lore raw
Quoted 4 lines · Matthew Garrett

Newer HP laptops (nc4200, nc6xxx, nc8xxx) hang on reboot with a standard configuration. Passing reboot=b makes them work. This patch adds a DMI quirk that defaults them to this mode, and doesn't appear to have any adverse affects on older HPs.

Might be better to specify machines that actually have this issue. My NC6000 does not have any reboot issues with current or prior kernels, and such a change risks regressing that.

Signature · 6 lines
Cheers,
Alistair.

'No sense being pessimistic, it probably wouldn't work anyway.'
Third year Computer Science undergraduate.
1F2 55 South Clerk Street, Edinburgh, UK.
#2 lore raw
Quoted 9 lines · Alistair John Strachan
Quoted 4 lines · Matthew Garrett

Newer HP laptops (nc4200, nc6xxx, nc8xxx) hang on reboot with a standard configuration. Passing reboot=b makes them work. This patch adds a DMI quirk that defaults them to this mode, and doesn't appear to have any adverse affects on older HPs.

Might be better to specify machines that actually have this issue. My NC6000 does not have any reboot issues with current or prior kernels, and such a change risks regressing that.

This works fine with the NC6000, and every other HP-Compaq I've been able to test it on (which is quite a few). The alternative is really quite a long list.

Signature · 1 line
Matthew Garrett | [email protected]
#3 lore raw
In reply to Matthew Garrett
Quoted 14 lines · Matthew Garrett

Newer HP laptops (nc4200, nc6xxx, nc8xxx) hang on reboot with a standard configuration. Passing reboot=b makes them work. This patch adds a DMI quirk that defaults them to this mode, and doesn't appear to have any adverse affects on older HPs.

arch/i386/kernel/reboot.c renamed from arch/i386/kernel/reboot.c.orig +0 -0
@@ -135,6 +135,14 @@
 			DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 2400"),
 		},
 	},

arch/i386/kernel/reboot.c line 147

Quoted 10 lines
arch/i386/kernel/reboot.c renamed from arch/i386/kernel/reboot.c.orig +8 -0
+	{       /* HP laptops have weird reboot issues */
+	        .callback = set_bios_reboot,
+		.ident = "HP Laptop",
+		.matches = {
+		        DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq"),
+		},
+	},
 	{ }
 };

This seems rather generic. I recently added one entry:

	{	/* Handle problems with rebooting on HP nc6120 */
		.callback = set_bios_reboot,
		.ident = "HP Compaq nc6120",
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
			DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq nc6120"),
		},
	},

But your patch will do this for all HP laptops, will it not? Worrisome. Is it not possible to identify particular models?

#4 lore raw
Quoted 2 lines · Andrew Morton

But your patch will do this for all HP laptops, will it not? Worrisome. Is it not possible to identify particular models?

Yes, but there seems to be an awfully large number of affected models (at least the nc4200, tc4200, nx6110, nc6120, nc6220, nc6230, nc8220, nc8230 and nw8240) and HP and myself couldn't figure out /why/ they won't reboot in the normal way, so there's a fairly good chance that the next generation of them will have the same problem.

It's actually a bit odd. If I write some userspace code to prod the keyboard controller in the same way as the kernel reboot code does, the system reboots. If the kernel does it, it freezes at the point where it pokes the keyboard controller.

Signature · 1 line
Matthew Garrett | [email protected]