[PATCH 5/5] PNP: HP nx6325 fixup: reserve unreported resources

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

 



The HP nx6325 BIOS doesn't report any devices in the [0xf8000000-0xfbffffff]
region via ACPI devices or the E820 memory map, but when we assign it to the
00:14.4 bridge as a prefetchable memory window, the machine hangs.

I determined experimentally that there are only three 1MB regions in
that area that cause trouble, so this fixup builds a fake PNP device
that consumes those regions.

Reference: https://bugzilla.kernel.org/show_bug.cgi?id=23332
Reported-by: Rafael J. Wysocki <rjw@xxxxxxx>
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@xxxxxx>
---

 drivers/pnp/quirks.c |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)


diff --git a/drivers/pnp/quirks.c b/drivers/pnp/quirks.c
index f18bb69..e7de402 100644
--- a/drivers/pnp/quirks.c
+++ b/drivers/pnp/quirks.c
@@ -343,7 +343,37 @@ static struct pnp_protocol pnp_fixup_protocol = {
 	.name = "Plug and Play fixup",
 };
 
+static int __init hp_nx6325_fixup(const struct dmi_system_id *d)
+{
+	struct pnp_dev *dev;
+
+	/*
+	 * The BIOS apparently forgot to describe some regions in the
+	 * address map.  See https://bugzilla.kernel.org/show_bug.cgi?id=23332
+	 */
+
+	dev = pnp_alloc_dev(&pnp_fixup_protocol, 0, "LNXHAZRD");
+	if (!dev)
+		return 0;
+
+	dev->active = 1;
+	pnp_add_mem_resource(dev, 0xf8300000, 0xf83fffff, 0);
+	pnp_add_mem_resource(dev, 0xf8500000, 0xf85fffff, 0);
+	pnp_add_mem_resource(dev, 0xf9100000, 0xf91fffff, 0);
+	pnp_add_device(dev);
+	dev_info(&dev->dev, "added to work around BIOS defect\n");
+	return 0;
+}
+
 static const struct dmi_system_id pnp_fixup_table[] __initconst = {
+	{
+		.callback = hp_nx6325_fixup,
+		.ident = "HP nx6325 laptop",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq nx6325"),
+		},
+	},
 	{}
 };
 

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux