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

Bug#537502: D-I incorrectly expects firmware requests on module load



Asbjørn Sloth Tønnesen wrote:
> I have logged interesting events to tty3, so I know it gets there, and I
> have looked at e100.c, so I know it has to have been up'ed first.
> 
> Ok, just found the source for the first up:
> 
> bottom of packages/hw-detect/ethdetect.sh:
> > # Some modules only try to load firmware once brought up. So bring up and
> > # then down all interfaces.

Ah right. It's been a while since I wrote that code and I never
got a chance to test it since the system where I'd seen the problem
was already in production.

This patch will probably do it. Can you test it?

-- 
see shy jo
Index: ethdetect.sh
===================================================================
--- ethdetect.sh	(revision 65557)
+++ ethdetect.sh	(working copy)
@@ -254,17 +254,11 @@
 	fi
 done
 
-# Some modules only try to load firmware once brought up. So bring up and
-# then down all interfaces.
-for iface in $(lsifaces); do
-	ip link set "$iface" up || true
-	ip link set "$iface" down || true
-done
 db_get ethdetect/prompt_missing_firmware
 if [ "$RET" = true ]; then
-	check-missing-firmware
+	check-missing-firmware $(lsifaces)
 else
-	check-missing-firmware -n
+	check-missing-firmware -n $(lsifaces)
 fi
 
 sysfs-update-devnames || true
Index: debian/changelog
===================================================================
--- debian/changelog	(revision 65557)
+++ debian/changelog	(working copy)
@@ -1,3 +1,14 @@
+hw-detect (1.82) UNRELEASED; urgency=low
+
+  * check-missing-firmware: When called from ethdetect, take interfaces
+    up and down each time through the loop. Previously this was only done
+    once, which caused a bug, as the first pass through does not prompt
+    for missing firmware, and on subsequent passes, the firmware was not
+    requested. Closes: #537502
+    (Thanks, Asbjørn Sloth Tønnesen)
+
+ -- Joey Hess <joeyh@debian.org>  Tue, 23 Nov 2010 12:42:30 -0400
+
 hw-detect (1.81) unstable; urgency=low
 
   [ Thibaut Girka ]
Index: check-missing-firmware.sh
===================================================================
--- check-missing-firmware.sh	(revision 65557)
+++ check-missing-firmware.sh	(working copy)
@@ -11,6 +11,8 @@
 	NONINTERACTIVE=""
 fi
 
+IFACES="$@"
+
 log () {
 	logger -t check-missing-firmware "$@"
 }
@@ -32,7 +34,18 @@
 	fi
 }
 
+# Some modules only try to load firmware once brought up. So bring up and
+# then down any interfaces specified by ethdetect.
+upnics() {
+	for iface in $IFACES; do
+		ip link set "$iface" up || true
+		ip link set "$iface" down || true
+	done
+}
+
 check_missing () {
+	upnics
+
 	# Give modules some time to request firmware.
 	sleep 1
 	
@@ -221,7 +234,7 @@
 	fi
 
 	# remove and reload modules so they see the new firmware
-	# Sort to only reload a given module once if it ask for more
+	# Sort to only reload a given module once if it asks for more
 	# than one firmware file (example iwlagn)
 	for module in $(echo $modules | tr " " "\n" | sort -u); do
 		modprobe -r $module || true

Attachment: signature.asc
Description: Digital signature


Reply to: