patch-2.3.45 linux/arch/ia64/kernel/irq.c

Next file: linux/arch/ia64/kernel/irq_lock.c
Previous file: linux/arch/ia64/kernel/head.S
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.44/linux/arch/ia64/kernel/irq.c linux/arch/ia64/kernel/irq.c
@@ -128,6 +128,18 @@
 	return p - buf;
 }
 
+int usbfix;
+
+static int __init
+usbfix_option (char *str)
+{
+	printk("irq: enabling USB workaround\n");
+	usbfix = 1;
+	return 1;
+}
+
+__setup("usbfix", usbfix_option);
+
 /*
  * That's where the IVT branches when we get an external
  * interrupt. This branches to the correct hardware IRQ handler via
@@ -146,7 +158,8 @@
 	unsigned long eoi_ptr;
  
 # ifdef CONFIG_USB
-	disable_usb();
+	if (usbfix)
+		disable_usb();
 # endif
 	/*
 	 * Stop IPIs by getting the ivr_read_lock
@@ -170,7 +183,8 @@
 	spin_unlock(&ivr_read_lock);
 
 # ifdef CONFIG_USB
-	reenable_usb();
+	if (usbfix)
+		reenable_usb();
 # endif
 
 # ifndef CONFIG_SMP

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)