diff -urN oldtree/arch/i386/defconfig newtree/arch/i386/defconfig
--- oldtree/arch/i386/defconfig	2006-09-24 17:03:56.000000000 -0400
+++ newtree/arch/i386/defconfig	2006-09-26 18:45:12.000000000 -0400
@@ -175,6 +175,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_SELECT_MEMORY_MODEL=y
diff -urN oldtree/arch/i386/defconfig.rej newtree/arch/i386/defconfig.rej
--- oldtree/arch/i386/defconfig.rej	2006-09-26 18:39:54.000000000 -0400
+++ newtree/arch/i386/defconfig.rej	1969-12-31 19:00:00.000000000 -0500
@@ -1,16 +0,0 @@
-***************
-*** 161,166 ****
-  CONFIG_NOHIGHMEM=y
-  # CONFIG_HIGHMEM4G is not set
-  # CONFIG_HIGHMEM64G is not set
-  CONFIG_VMSPLIT_3G=y
-  # CONFIG_VMSPLIT_3G_OPT is not set
-  # CONFIG_VMSPLIT_2G is not set
---- 161,167 ----
-  CONFIG_NOHIGHMEM=y
-  # CONFIG_HIGHMEM4G is not set
-  # CONFIG_HIGHMEM64G is not set
-+ CONFIG_BADRAM=y
-  CONFIG_VMSPLIT_3G=y
-  # CONFIG_VMSPLIT_3G_OPT is not set
-  # CONFIG_VMSPLIT_2G is not set
diff -urN oldtree/drivers/usb/input/Kconfig newtree/drivers/usb/input/Kconfig
--- oldtree/drivers/usb/input/Kconfig	2006-09-24 17:03:56.000000000 -0400
+++ newtree/drivers/usb/input/Kconfig	2006-09-26 18:43:20.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-09-24 17:03:56.000000000 -0400
+++ newtree/drivers/usb/input/hid-core.c	2006-09-26 18:43:20.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-09-26 18:38:21.000000000 -0400
+++ newtree/include/linux/sysctl.h	2006-09-26 18:44:31.000000000 -0400
@@ -159,6 +159,7 @@
         KERN_STRCS_RR_SLICE=80, /* alter value of min RR slice */
         KERN_STRCS_RR_FACTOR=81, /* factor for default RR slice */
         KERN_FBSPLASH=82,       /* string: path to fbsplash helper */
+	KERN_USB_POLLING=83,	/* USB polling rate */
 };
 
 
diff -urN oldtree/kernel/sysctl.c newtree/kernel/sysctl.c
--- oldtree/kernel/sysctl.c	2006-09-26 18:38:21.000000000 -0400
+++ newtree/kernel/sysctl.c	2006-09-26 18:43:20.000000000 -0400
@@ -91,6 +91,11 @@
 static int one = 1;
 #endif
 
+/* USB Mouse Polling */
+#if defined(CONFIG_USB_HID)
+extern int hid_mousepoll_interval;
+#endif
+
 #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86)
 int unknown_nmi_panic;
 int nmi_watchdog_enabled;
@@ -1173,6 +1178,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 }
 };
 
