diff -urN oldtree/arch/i386/defconfig newtree/arch/i386/defconfig
--- oldtree/arch/i386/defconfig	2006-10-06 17:51:48.000000000 -0400
+++ newtree/arch/i386/defconfig	2006-10-06 19:12:41.000000000 -0400
@@ -165,6 +165,7 @@
 # CONFIG_NOHIGHMEM is not set
 CONFIG_HIGHMEM4G=y
 # CONFIG_HIGHMEM64G is not set
+CONFIG_BADRAM=y
 CONFIG_PAGE_OFFSET=0xC0000000
 CONFIG_HIGHMEM=y
 CONFIG_ARCH_POPULATES_NODE_MAP=y
diff -urN oldtree/drivers/usb/input/Kconfig newtree/drivers/usb/input/Kconfig
--- oldtree/drivers/usb/input/Kconfig	2006-10-05 15:26:55.000000000 -0400
+++ newtree/drivers/usb/input/Kconfig	2006-10-06 19:12:46.000000000 -0400
@@ -24,6 +24,49 @@
 	  To compile this driver as a module, choose M here: the
 	  module will be called usbhid.
 
+config USB_HID_MOUSE_POLLING
+	bool "USB HID Mouse Interrupt Polling"
+	default n
+	depends on USB_HID
+	help
+	 This option enables USB HID mouse polling instead of an event
+	 based system.  This option is only recommended for badly designed
+	 USB chipsets.
+
+	 If unsure, say N.
+
+config USB_HID_MOUSE_POLLING_INTERVAL
+	int "USB HID Mouse Interrupt Polling Interval"
+	default 10
+	depends on USB_HID_MOUSE_POLLING
+	help
+	  The "USB HID Mouse Interrupt Polling Interval" is the interval, at
+	  which your USB HID mouse is to be polled at. The interval is
+	  specified in milliseconds.
+
+	  Decreasing the interval will, of course, give you a much more
+	  precise mouse.
+
+	  Generally speaking, a polling interval of 2 ms should be more than
+	  enough for most people, and is great for gaming and other things
+	  that require high precision.
+
+	  An interval lower than 10ms is not guaranteed work on your
+	  specific piece of hardware. If you want to play it safe, don't
+	  change this value.
+
+	  Now, if you indeed want to feel the joy of a precise mouse, the
+	  following mice are known to work without problems, when the interval
+	  is set to at least 2 ms:
+
+	    * Logitech's MX-family
+	    * Logitech Mouse Man Dual Optical
+	    * Logitech iFeel
+	    * Microsoft Intellimouse Explorer
+	    * Microsoft Intellimouse Optical 1.1
+
+	  If unsure, keep it at 10 ms.
+
 comment "Input core support is needed for USB HID input layer or HIDBP support"
 	depends on USB_HID && INPUT=n
 
diff -urN oldtree/drivers/usb/input/hid-core.c newtree/drivers/usb/input/hid-core.c
--- oldtree/drivers/usb/input/hid-core.c	2006-10-05 15:26:55.000000000 -0400
+++ newtree/drivers/usb/input/hid-core.c	2006-10-06 19:12:46.000000000 -0400
@@ -50,7 +50,12 @@
  * Module parameters.
  */
 
-static unsigned int hid_mousepoll_interval;
+#if defined(CONFIG_USB_HID_MOUSE_POLLING)
+int hid_mousepoll_interval __read_mostly = CONFIG_USB_HID_MOUSE_POLLING_INTERVAL;
+#else
+int hid_mousepoll_interval __read_mostly = 0;
+#endif
+
 module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644);
 MODULE_PARM_DESC(mousepoll, "Polling interval of mice");
 
diff -urN oldtree/include/linux/sysctl.h newtree/include/linux/sysctl.h
--- oldtree/include/linux/sysctl.h	2006-10-06 16:52:04.000000000 -0400
+++ newtree/include/linux/sysctl.h	2006-10-06 19:13:07.000000000 -0400
@@ -160,6 +160,7 @@
         KERN_FBSPLASH=81,       /* string: path to fbsplash helper */
         KERN_STRCS_RR_SLICE=82, /* alter value of min RR slice */
         KERN_STRCS_RR_FACTOR=83, /* factor for default RR slice */
+        KERN_USB_POLLING=84,    /* USB polling rate */
 };
 
 
diff -urN oldtree/kernel/sysctl.c newtree/kernel/sysctl.c
--- oldtree/kernel/sysctl.c	2006-10-06 16:52:04.000000000 -0400
+++ newtree/kernel/sysctl.c	2006-10-06 19:12:46.000000000 -0400
@@ -1158,6 +1158,17 @@
 		.extra1		= &one,
 	},
 #endif
+#ifdef CONFIG_USB_HID
+	{
+		.ctl_name	= KERN_USB_POLLING,
+		.procname	= "hid_mousepoll_interval",
+		.data		= &hid_mousepoll_interval,
+		.maxlen		= sizeof (hid_mousepoll_interval),
+		.mode		= 0644,
+		.proc_handler	= &proc_dointvec_minmax,
+		.strategy       = &sysctl_intvec,
+	},
+#endif
 	{ .ctl_name = 0 }
 };
 
