lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20101208213627.13026.18854.stgit@bob.kio>
Date:	Wed, 08 Dec 2010 14:36:27 -0700
From:	Bjorn Helgaas <bjorn.helgaas@...com>
To:	Jesse Barnes <jbarnes@...tuousgeek.org>,
	Len Brown <lenb@...nel.org>
Cc:	linux-pci@...r.kernel.org, linux-kernel@...r.kernel.org,
	"Rafael J. Wysocki" <rjw@...k.pl>, linux-acpi@...r.kernel.org,
	"H. Peter Anvin" <hpa@...or.com>,
	Thomas Gleixner <tglx@...utronix.de>,
	Linus Torvalds <torvalds@...ux-foundation.org>,
	Ingo Molnar <mingo@...e.hu>, Adam Belay <abelay@....edu>
Subject: [PATCH 5/5] PNP: HP nx6325 fixup: reserve unreported resources


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@...k.pl>
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@...com>
---

 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-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ