rpms/kernel/F-11 drm-intel-lying-systems-without-lvds.patch, NONE, 1.1 linux-2.6-acer-wmi-bail-on-aao.patch, NONE, 1.1 kernel.spec, 1.1510, 1.1511

Jarod Wilson jwilson at fedoraproject.org
Fri Apr 3 19:34:35 UTC 2009


Author: jwilson

Update of /cvs/pkgs/rpms/kernel/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv3356

Modified Files:
	kernel.spec 
Added Files:
	drm-intel-lying-systems-without-lvds.patch 
	linux-2.6-acer-wmi-bail-on-aao.patch 
Log Message:
* Fri Apr 03 2009 Jarod Wilson <jarod at redhat.com>
- Don't set up non-existent LVDS on systems with mobile Intel graphics chips
  that lie about having LVDS (like my Dell Studio Hybrid). Makes plymouth
  graphical boot function properly.
- Don't let acer-wmi do stupid things on unsupported systems (like, create
  a bogus rfkill entry in sysfs that effectively neuters wireless in
  NetworkManager on the Aspire One)


drm-intel-lying-systems-without-lvds.patch:

--- NEW FILE drm-intel-lying-systems-without-lvds.patch ---
 drivers/gpu/drm/i915/intel_lvds.c |   50 ++++++++++++++++++++++++++++++------
 1 files changed, 41 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 6619f26..4607662 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -384,7 +384,44 @@ static const struct drm_encoder_funcs intel_lvds_enc_funcs = {
 	.destroy = intel_lvds_enc_destroy,
 };
 
+static int __init intel_no_lvds_dmi_callback(const struct dmi_system_id *id)
+{
+	//DRM_DEBUG("Skipping LVDS initialization for %s\n", id->ident);
+	printk("Skipping LVDS initialization for %s\n", id->ident);
+	return 1;
+}
+
+/* These systems claim to have LVDS, but really don't */
+static const struct dmi_system_id __initdata intel_no_lvds[] = {
+	{
+		.callback = intel_no_lvds_dmi_callback,
+		.ident = "Apple Mac Mini (Core series)",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Macmini1,1"),
+		},
+	},
+	{
+		.callback = intel_no_lvds_dmi_callback,
+		.ident = "Apple Mac Mini (Core 2 series)",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Macmini2,1"),
+		},
+	},
+	{
+		.callback = intel_no_lvds_dmi_callback,
+		.ident = "Dell Studio Hybrid",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Studio Hybrid 140g"),
+		},
+	},
+
+	/* FIXME: add a check for the Aopen Mini PC */
 
+	{ }	/* terminating entry */
+};
 
 /**
  * intel_lvds_init - setup LVDS connectors on this device
@@ -404,15 +441,10 @@ void intel_lvds_init(struct drm_device *dev)
 	u32 lvds;
 	int pipe;
 
-	/* Blacklist machines that we know falsely report LVDS. */
-	/* FIXME: add a check for the Aopen Mini PC */
-
-	/* Apple Mac Mini Core Duo and Mac Mini Core 2 Duo */
-	if(dmi_match(DMI_PRODUCT_NAME, "Macmini1,1") ||
-	   dmi_match(DMI_PRODUCT_NAME, "Macmini2,1")) {
-		DRM_DEBUG("Skipping LVDS initialization for Apple Mac Mini\n");
-		return;
-	}
+	/* Skip init on machines we know falsely report LVDS */
+	if (dmi_check_system(intel_no_lvds))
+		printk("woulda disabled bogus lvds, but it fucks up Xv...\n");
+		//return;
 
 	intel_output = kzalloc(sizeof(struct intel_output), GFP_KERNEL);
 	if (!intel_output) {

linux-2.6-acer-wmi-bail-on-aao.patch:

--- NEW FILE linux-2.6-acer-wmi-bail-on-aao.patch ---
[PATCH] acer-wmi: don't bother loading on unsupported systems

Its both a waste of system resources to load this driver on unsupported
systems (which happens often, due to the *Acer* dmi modalias wildcard),
and actually causes problems -- we wind up with a sysfs rfkill entry
that is always disabled, which throws things like NetworkManager for a
loop, causing it to think your wireless card isn't available, even
though the *real* rfkill entry for the card says it is. This is
triggering on multiple Acer Aspire One's here in the office, like so:

NetworkManager: <info> starting...
NetworkManager: <WARN> nm_generic_enable_loopback(): error -17 returned from rtnl_addr_add():#012Sucess#012
NetworkManager: <info> Found radio killswitch /org/freedesktop/Hal/devices/platform_acer_wmi_rfkill_acer_wireless_wlan
NetworkManager: <info> Found radio killswitch /org/freedesktop/Hal/devices/pci_8086_423a_rfkill_5350AGN_wlan
NetworkManager: <info> (eth0): new Ethernet device (driver: 'r8169')
NetworkManager: <info> (eth0): exported as /org/freedesktop/Hal/devices/net_00_1e_68_8a_a1_f8
NetworkManager: <info> (wlan0): driver supports SSID scans (scan_capa 0x01).
NetworkManager: <info> (wlan0): new 802.11 WiFi device (driver: 'iwlagn')
NetworkManager: <info> (wlan0): exported as /org/freedesktop/Hal/devices/net_00_16_eb_04_31_ea
NetworkManager: <info> Trying to start the supplicant...
NetworkManager: <info> Trying to start the system settings daemon...
NetworkManager: <info> Wireless now disabled by radio killswitch
NetworkManager: <info> (wlan0): supplicant manager state: down -> idle

So have acer-wmi just bail on unsupported systems -- includes only my
particular model of the Aspire One atm, but a larger list of unsupported
systems can be found here:

http://code.google.com/p/aceracpi/wiki/SupportedHardware

This might well become unnecessary once the WMI sysfs interface mentioned in
acer-wmi.c exists and the wild-card dmi modalias is gone, but for now... I
prefer to have working wireless, and this isn't exactly an obvious root
cause.

Signed-off-by: Jarod Wilson <jarod at redhat.com>

---
 drivers/platform/x86/acer-wmi.c |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
index a6a42e8..eda7eea 100644
--- a/drivers/platform/x86/acer-wmi.c
+++ b/drivers/platform/x86/acer-wmi.c
@@ -355,6 +355,25 @@ static struct dmi_system_id acer_quirks[] = {
 	{}
 };
 
+static int __init acer_wmi_unsupported_callback(const struct dmi_system_id *id)
+{
+	printk(ACER_INFO "%s not supported by Acer Laptop ACPI-WMI Extras\n",
+	       id->ident);
+	return 1;
+}
+
+static const struct dmi_system_id __initdata acer_wmi_unsupported[] = {
+	{
+		.callback = acer_wmi_unsupported_callback,
+		.ident = "Acer Aspire One",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "AOA110"),
+		},
+	},
+	{}
+};
+
 /* Find which quirks are needed for a particular vendor/ model pair */
 static void find_quirks(void)
 {
@@ -1252,6 +1271,10 @@ static int __init acer_wmi_init(void)
 {
 	int err;
 
+	/* Check for unsupported systems and bail */
+	if (dmi_check_system(acer_wmi_unsupported))
+		return -ENODEV;
+
 	printk(ACER_INFO "Acer Laptop ACPI-WMI Extras\n");
 
 	find_quirks();


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/kernel.spec,v
retrieving revision 1.1510
retrieving revision 1.1511
diff -u -r1.1510 -r1.1511
--- kernel.spec	3 Apr 2009 18:47:30 -0000	1.1510
+++ kernel.spec	3 Apr 2009 19:34:04 -0000	1.1511
@@ -625,6 +625,7 @@
 Patch393: linux-2.6-hwmon-atk0110.patch
 Patch394: linux-2.6-acpi-video-didl-intel-outputs.patch
 Patch395: linux-2.6-sony-laptop-rfkill.patch
+Patch396: linux-2.6-acer-wmi-bail-on-aao.patch
 Patch400: linux-2.6-scsi-cpqarray-set-master.patch
 Patch450: linux-2.6-input-kill-stupid-messages.patch
 Patch451: linux-2.6-input-fix-toshiba-hotkeys.patch
@@ -677,6 +678,7 @@
 Patch1818: drm-i915-resume-force-mode.patch
 Patch1819: drm-intel-big-hammer.patch
 Patch1820: drm-radeon-reorder-bm.patch
+Patch1821: drm-intel-lying-systems-without-lvds.patch
 
 # kludge to make ich9 e1000 work
 Patch2000: linux-2.6-e1000-ich9.patch
@@ -1168,6 +1170,7 @@
 ApplyPatch linux-2.6-hwmon-atk0110.patch
 ApplyPatch linux-2.6-acpi-video-didl-intel-outputs.patch
 ApplyPatch linux-2.6-sony-laptop-rfkill.patch
+ApplyPatch linux-2.6-acer-wmi-bail-on-aao.patch
 
 # Various low-impact patches to aid debugging.
 ApplyPatch linux-2.6-debug-sizeof-structs.patch
@@ -1285,6 +1288,7 @@
 ApplyPatch drm-i915-resume-force-mode.patch
 ApplyPatch drm-intel-big-hammer.patch
 ApplyPatch drm-radeon-reorder-bm.patch
+ApplyPatch drm-intel-lying-systems-without-lvds.patch
 
 # linux1394 git patches
 ApplyPatch linux-2.6-firewire-git-update.patch
@@ -1898,6 +1902,14 @@
 # and build.
 
 %changelog
+* Fri Apr 03 2009 Jarod Wilson <jarod at redhat.com>
+- Don't set up non-existent LVDS on systems with mobile Intel graphics chips
+  that lie about having LVDS (like my Dell Studio Hybrid). Makes plymouth
+  graphical boot function properly.
+- Don't let acer-wmi do stupid things on unsupported systems (like, create
+  a bogus rfkill entry in sysfs that effectively neuters wireless in
+  NetworkManager on the Aspire One)
+
 * Fri Apr 03 2009 Chuck Ebbert <cebbert at redhat.com>
 - x86 E820 fixes from 2.6.30
 




More information about the scm-commits mailing list