rpms/kernel/devel add-appleir-usb-driver.patch, NONE, 1.1.2.2 block-fix-bugs-in-bio-integrity-mempool-usage.patch, NONE, 1.1.2.1 crystalhd-2.6.34-staging.patch, NONE, 1.2.2.2 drm-fixes.patch, NONE, 1.1.2.1 drm-intel-big-hammer.patch, 1.1.2.3, 1.1.2.4 drm-intel-no-tv-hotplug-interrupts-dammit.patch, NONE, 1.1.2.1 drm-next.patch, 1.6.6.11, 1.6.6.12 drm-nouveau-g80-ctxprog.patch, NONE, 1.1.2.1 drm-nouveau-kconfig.patch, NONE, 1.1.2.1 drm-nouveau-nvac-noaccel.patch, NONE, 1.1.2.1 drm-nouveau-safetile-getparam.patch, NONE, 1.1.2.1 drm-nouveau-shared-fb.patch, NONE, 1.1.2.1 drm-nouveau-tvout-disable.patch, NONE, 1.1.2.1 drm-nouveau-update.patch, NONE, 1.1.2.1 drm-upgrayedd.patch, NONE, 1.1.2.1 linux-2.6-autoload-wmi.patch, NONE, 1.2.2.2 linux-2.6-btrfs-fix-acl.patch, NONE, 1.1.2.1 linux-2.6-enable-btusb-autosuspend.patch, NONE, 1.1.4.2 linux-2.6-fix-usb-serial-autosuspend.diff, 1.2.6.3, 1.2.6.4 linux-2.6-intel-agp-clear-gtt.patch, NONE, 1.2.2.2 linux-2.6-mac80211-age-scan-results-on-resume.patch, 1.1.10.3, 1.1.10.4 linux-2.6-nfsd4-proots.patch, 1.1.2.5, 1.1.2.6 linux-2.6-revert-dvb-net-kabi-change.patch, 1.1.2.3, 1.1.2.4 linux-2.6-rt2x00-asus-leds.patch, 1.1.6.1, 1.1.6.2 linux-2.6-userspace_kvmclock_offset.patch, NONE, 1.2.4.2 linux-2.6-utrace-ptrace.patch, NONE, 1.2.4.2 linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch, NONE, 1.1.2.1 linux-2.6-wireless_-report-reasonable-bitrate-for-MCS-rates-through-wext.patch, NONE, 1.1.2.1 linux-2.6-x86-64-fbdev-primary.patch, NONE, 1.1.2.2 linux-2.6.31-modules-ro-nx.patch, 1.2.2.3, 1.2.2.4 linux-2.6.31-nx-data.patch, 1.1.2.3, 1.1.2.4 linux-2.6.32.tar.bz2.sign, NONE, 1.1.4.2 lirc-2.6.32.patch, NONE, 1.2.2.2 patch-2.6.32.7.bz2.sign, NONE, 1.1.2.1 wmi-check-find_guid-return-value-to-prevent-oops.patch, NONE, 1.1.2.1 wmi-check-wmi-get-event-data-return-value.patch, NONE, 1.1.2.1 wmi-free-the-allocated-acpi-objects.patch, NONE, 1.1.2.1 wmi-survive-bios-with-duplicate-guids.patch, NONE, 1.1.2.1 .cvsignore, 1.1014.2.36, 1.1014.2.37 Makefile, 1.97.6.11, 1.97.6.12 TODO, 1.54.6.9, 1.54.6.10 config-arm, 1.2.6.2, 1.2.6.3 config-debug, 1.23.6.5, 1.23.6.6 config-generic, 1.238.6.47, 1.238.6.48 config-ia64-generic, 1.21.6.4, 1.21.6.5 config-nodebug, 1.31.6.6, 1.31.6.7 config-powerpc-generic, 1.33.6.10, 1.33.6.11 config-powerpc32-generic, 1.30.6.3, 1.30.6.4 config-powerpc64, 1.27.6.5, 1.27.6.6 config-rhel-generic, 1.17, 1.17.6.1 config-s390x, 1.11.6.5, 1.11.6.6 config-sparc64-generic, 1.21.6.7, 1.21.6.8 config-x86-generic, 1.68.6.21, 1.68.6.22 config-x86_64-generic, 1.68.2.18, 1.68.2.19 gen-patches, 1.5, 1.5.16.1 hdpvr-ir-enable.patch, 1.2.2.4, 1.2.2.5 kernel.spec, 1.1294.2.82, 1.1294.2.83 linux-2.6-build-nonintconfig.patch, 1.15, 1.15.16.1 linux-2.6-crash-driver.patch, 1.12.6.3, 1.12.6.4 linux-2.6-debug-sizeof-structs.patch, 1.6.16.1, 1.6.16.2 linux-2.6-debug-taint-vm.patch, 1.23.6.1, 1.23.6.2 linux-2.6-debug-vm-would-have-oomkilled.patch, 1.2.6.2, 1.2.6.3 linux-2.6-driver-level-usb-autosuspend.diff, 1.1.6.2, 1.1.6.3 linux-2.6-execshield.patch, 1.102.6.4, 1.102.6.5 linux-2.6-firewire-git-update.patch, 1.20.6.1, 1.20.6.2 linux-2.6-ksm-kvm.patch, 1.2.6.4, 1.2.6.5 linux-2.6-makefile-after_link.patch, 1.1, 1.1.16.1 linux-2.6-serial-460800.patch, 1.2, 1.2.18.1 linux-2.6-silence-acpi-blacklist.patch, 1.1, 1.1.16.1 linux-2.6-tracehook.patch, 1.8.6.3, 1.8.6.4 linux-2.6-upstream-reverts.patch, 1.5, 1.5.6.1 linux-2.6-utrace.patch, 1.107.6.6, 1.107.6.7 linux-2.6-v4l-dvb-experimental.patch, 1.2.2.6, 1.2.2.7 linux-2.6-v4l-dvb-fixes.patch, 1.2.8.11, 1.2.8.12 linux-2.6-v4l-dvb-update.patch, 1.1.2.9, 1.1.2.10 sources, 1.976.2.37, 1.976.2.38 upstream, 1.888.2.36, 1.888.2.37 via-hwmon-temp-sensor.patch, 1.2.2.3, 1.2.2.4 xen.pvops.patch, 1.1.2.52, 1.1.2.53 xen.pvops.post.patch, 1.1.2.34, 1.1.2.35 xen.pvops.pre.patch, 1.1.2.20, 1.1.2.21 acpi-ec-merge-irq-and-poll-modes.patch, 1.1.2.1, NONE acpi-ec-restart-command-even-if-no-interrupts-from-ec.patch, 1.1.2.1, NONE acpi-ec-use-burst-mode-only-for-msi-notebooks.patch, 1.1.2.1, NONE alsa-tell-user-that-stream-to-be-rewound-is-suspended.patch, 1.1.2.2, NONE disable-stackprotector-all.patch, 1.1.2.1, NONE dlm-fix-connection-close-handling.patch, 1.1.2.1, NONE drm-edid-9340d8cf.patch, 1.1.2.1, NONE drm-i915-fix-tvmode-oops.patch, 1.1.2.1, NONE drm-intel-pm.patch, 1.4.2.3, NONE drm-next-b390f944.patch, 1.1.2.2, NONE drm-nouveau.patch, 1.8.6.26, NONE drm-radeon-kms-arbiter-return-ignore.patch, 1.1.2.1, NONE drm-radeon-misc-fixes.patch, 1.1.2.1, NONE drm-radeon-rv410-test-fix.patch, 1.1.2.1, NONE drm-vga-arb.patch, 1.5.2.6, NONE ext4-fix-insufficient-checks-in-EXT4_IOC_MOVE_EXT.patch, 1.1.2.2, NONE fbcon-lower-debug.patch, 1.1.2.1, NONE hid-ignore-all-recent-imon-devices.patch, 1.1.2.2, NONE improve-resource-counter-scalability.patch, 1.1.2.1, NONE linux-2.6-ahci-export-capabilities.patch, 1.2.2.2, NONE linux-2.6-alsa-improve-hda-powerdown.patch, 1.1.6.2, NONE linux-2.6-ath9k-fixes.patch, 1.1.2.2, NONE linux-2.6-bluetooth-autosuspend.diff, 1.1.6.4, NONE linux-2.6-btrfs-upstream.patch, 1.1.2.1, NONE linux-2.6-debug-spinlock-taint.patch, 1.10.16.1, NONE linux-2.6-die-closed-source-bios-muppets-die.patch, 1.2.2.2, NONE linux-2.6-intel-iommu-updates.patch, 1.1.2.4, NONE linux-2.6-iommu-another-hp-screwup.patch, 1.1.2.1, NONE linux-2.6-iommu-at-zero.patch, 1.1.2.2, NONE linux-2.6-iommu-dmar-all-1s.patch, 1.1.2.1, NONE linux-2.6-iommu-hp-cantiga-resume.patch, 1.1.2.1, NONE linux-2.6-iommu-sanity-checks-for-intr-remap-too.patch, 1.1.2.1, NONE linux-2.6-ksm-fix-munlock.patch, 1.1.2.2, NONE linux-2.6-ksm-updates-from-32.patch, 1.1.2.1, NONE linux-2.6-ksm-updates.patch, 1.1.2.2, NONE linux-2.6-ksm.patch, 1.2.6.3, NONE linux-2.6-nfs4-ver4opt.patch, 1.2.2.2, NONE linux-2.6-rtc-show-hctosys.patch, 1.1.2.2, NONE linux-2.6-selinux-module-load-perms.patch, 1.1.2.1, NONE linux-2.6-vga-arb.patch, 1.6.2.3, NONE linux-2.6-virtio_blk-add-support-for-cache-flush.patch, 1.1.2.1, NONE linux-2.6-virtio_blk-revert-QUEUE_FLAG_VIRT-addition.patch, 1.1.2.2, NONE linux-2.6-xen-fix-is_disconnected_device-exists_disconnected_device.patch, 1.1.2.1, NONE linux-2.6-xen-improvement-to-wait_for_devices.patch, 1.1.2.1, NONE linux-2.6-xen-increase-device-connection-timeout.patch, 1.1.2.1, NONE linux-2.6.31-copy_from_user-bounds.patch, 1.1.2.1, NONE linux-2.6.31-cpuidle-faster-io.patch, 1.1.2.1, NONE linux-2.6.31-nfsd-proot.patch, 1.1.2.1, NONE linux-2.6.31.tar.bz2.sign, 1.1.2.2, NONE lirc-2.6.31.patch, 1.2.2.5, NONE patch-2.6.31.9.bz2.sign, 1.1.2.1, NONE perf-events-dont-generate-events-for-the-idle-task.patch, 1.1.2.1, NONE perf-events-fix-swevent-hrtimer-sampling.patch, 1.1.2.1, NONE perf-make-perf-counter-h-available-to-userspace.patch, 1.1.2.1, NONE prism54-remove-pci-dev-table.patch, 1.1.2.1, NONE sched-deal-with-low-load-in-wake-affine.patch, 1.1.2.1, NONE sched-ensure-child-cant-gain-time-over-its-parent-after-fork.patch, 1.1.2.1, NONE sched-introduce-SCHED_RESET_ON_FORK-scheduling-policy-flag.patch, 1.2.2.3, NONE sched-remove-shortcut-from-select-task-rq-fair.patch, 1.1.2.1, NONE sched-retune-scheduler-latency-defaults.patch, 1.1.2.1, NONE sched-update-the-clock-of-runqueue-select-task-rq-selected.patch, 1.1.2.1, NONE tg3-01-delay-mdio-bus-init-until-fw-finishes.patch, 1.1.2.1, NONE tg3-02-fix-tso-test-against-wrong-flags-var.patch, 1.1.2.1, NONE tg3-03-fix-57780-asic-rev-pcie-link-receiver-errors.patch, 1.1.2.1, NONE tg3-04-prevent-tx-bd-corruption.patch, 1.1.2.1, NONE tg3-05-assign-flags-to-fixes-in-start_xmit_dma_bug.patch, 1.1.2.1, NONE tg3-06-fix-5906-transmit-hangs.patch, 1.1.2.1, NONE v4l-dvb-fix-cx25840-firmware-loading.patch, 1.1.2.2, NONE

myoung myoung at fedoraproject.org
Sun Jan 31 17:58:33 UTC 2010


Author: myoung

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv11713

Modified Files:
      Tag: private-myoung-dom0-branch
	.cvsignore Makefile TODO config-arm config-debug 
	config-generic config-ia64-generic config-nodebug 
	config-powerpc-generic config-powerpc32-generic 
	config-powerpc64 config-rhel-generic config-s390x 
	config-sparc64-generic config-x86-generic 
	config-x86_64-generic gen-patches hdpvr-ir-enable.patch 
	kernel.spec linux-2.6-build-nonintconfig.patch 
	linux-2.6-crash-driver.patch 
	linux-2.6-debug-sizeof-structs.patch 
	linux-2.6-debug-taint-vm.patch 
	linux-2.6-debug-vm-would-have-oomkilled.patch 
	linux-2.6-driver-level-usb-autosuspend.diff 
	linux-2.6-execshield.patch linux-2.6-firewire-git-update.patch 
	linux-2.6-ksm-kvm.patch linux-2.6-makefile-after_link.patch 
	linux-2.6-serial-460800.patch 
	linux-2.6-silence-acpi-blacklist.patch 
	linux-2.6-tracehook.patch linux-2.6-upstream-reverts.patch 
	linux-2.6-utrace.patch linux-2.6-v4l-dvb-experimental.patch 
	linux-2.6-v4l-dvb-fixes.patch linux-2.6-v4l-dvb-update.patch 
	sources upstream via-hwmon-temp-sensor.patch xen.pvops.patch 
	xen.pvops.post.patch xen.pvops.pre.patch 
Added Files:
      Tag: private-myoung-dom0-branch
	add-appleir-usb-driver.patch 
	block-fix-bugs-in-bio-integrity-mempool-usage.patch 
	crystalhd-2.6.34-staging.patch drm-fixes.patch 
	drm-intel-big-hammer.patch 
	drm-intel-no-tv-hotplug-interrupts-dammit.patch drm-next.patch 
	drm-nouveau-g80-ctxprog.patch drm-nouveau-kconfig.patch 
	drm-nouveau-nvac-noaccel.patch 
	drm-nouveau-safetile-getparam.patch 
	drm-nouveau-shared-fb.patch drm-nouveau-tvout-disable.patch 
	drm-nouveau-update.patch drm-upgrayedd.patch 
	linux-2.6-autoload-wmi.patch linux-2.6-btrfs-fix-acl.patch 
	linux-2.6-enable-btusb-autosuspend.patch 
	linux-2.6-fix-usb-serial-autosuspend.diff 
	linux-2.6-intel-agp-clear-gtt.patch 
	linux-2.6-mac80211-age-scan-results-on-resume.patch 
	linux-2.6-nfsd4-proots.patch 
	linux-2.6-revert-dvb-net-kabi-change.patch 
	linux-2.6-rt2x00-asus-leds.patch 
	linux-2.6-userspace_kvmclock_offset.patch 
	linux-2.6-utrace-ptrace.patch 
	linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch 
	linux-2.6-wireless_-report-reasonable-bitrate-for-MCS-rates-through-wext.patch 
	linux-2.6-x86-64-fbdev-primary.patch 
	linux-2.6.31-modules-ro-nx.patch linux-2.6.31-nx-data.patch 
	linux-2.6.32.tar.bz2.sign lirc-2.6.32.patch 
	patch-2.6.32.7.bz2.sign 
	wmi-check-find_guid-return-value-to-prevent-oops.patch 
	wmi-check-wmi-get-event-data-return-value.patch 
	wmi-free-the-allocated-acpi-objects.patch 
	wmi-survive-bios-with-duplicate-guids.patch 
Removed Files:
      Tag: private-myoung-dom0-branch
	acpi-ec-merge-irq-and-poll-modes.patch 
	acpi-ec-restart-command-even-if-no-interrupts-from-ec.patch 
	acpi-ec-use-burst-mode-only-for-msi-notebooks.patch 
	alsa-tell-user-that-stream-to-be-rewound-is-suspended.patch 
	disable-stackprotector-all.patch 
	dlm-fix-connection-close-handling.patch 
	drm-edid-9340d8cf.patch drm-i915-fix-tvmode-oops.patch 
	drm-intel-pm.patch drm-next-b390f944.patch drm-nouveau.patch 
	drm-radeon-kms-arbiter-return-ignore.patch 
	drm-radeon-misc-fixes.patch drm-radeon-rv410-test-fix.patch 
	drm-vga-arb.patch 
	ext4-fix-insufficient-checks-in-EXT4_IOC_MOVE_EXT.patch 
	fbcon-lower-debug.patch 
	hid-ignore-all-recent-imon-devices.patch 
	improve-resource-counter-scalability.patch 
	linux-2.6-ahci-export-capabilities.patch 
	linux-2.6-alsa-improve-hda-powerdown.patch 
	linux-2.6-ath9k-fixes.patch 
	linux-2.6-bluetooth-autosuspend.diff 
	linux-2.6-btrfs-upstream.patch 
	linux-2.6-debug-spinlock-taint.patch 
	linux-2.6-die-closed-source-bios-muppets-die.patch 
	linux-2.6-intel-iommu-updates.patch 
	linux-2.6-iommu-another-hp-screwup.patch 
	linux-2.6-iommu-at-zero.patch 
	linux-2.6-iommu-dmar-all-1s.patch 
	linux-2.6-iommu-hp-cantiga-resume.patch 
	linux-2.6-iommu-sanity-checks-for-intr-remap-too.patch 
	linux-2.6-ksm-fix-munlock.patch 
	linux-2.6-ksm-updates-from-32.patch 
	linux-2.6-ksm-updates.patch linux-2.6-ksm.patch 
	linux-2.6-nfs4-ver4opt.patch linux-2.6-rtc-show-hctosys.patch 
	linux-2.6-selinux-module-load-perms.patch 
	linux-2.6-vga-arb.patch 
	linux-2.6-virtio_blk-add-support-for-cache-flush.patch 
	linux-2.6-virtio_blk-revert-QUEUE_FLAG_VIRT-addition.patch 
	linux-2.6-xen-fix-is_disconnected_device-exists_disconnected_device.patch 
	linux-2.6-xen-improvement-to-wait_for_devices.patch 
	linux-2.6-xen-increase-device-connection-timeout.patch 
	linux-2.6.31-copy_from_user-bounds.patch 
	linux-2.6.31-cpuidle-faster-io.patch 
	linux-2.6.31-nfsd-proot.patch linux-2.6.31.tar.bz2.sign 
	lirc-2.6.31.patch patch-2.6.31.9.bz2.sign 
	perf-events-dont-generate-events-for-the-idle-task.patch 
	perf-events-fix-swevent-hrtimer-sampling.patch 
	perf-make-perf-counter-h-available-to-userspace.patch 
	prism54-remove-pci-dev-table.patch 
	sched-deal-with-low-load-in-wake-affine.patch 
	sched-ensure-child-cant-gain-time-over-its-parent-after-fork.patch 
	sched-introduce-SCHED_RESET_ON_FORK-scheduling-policy-flag.patch 
	sched-remove-shortcut-from-select-task-rq-fair.patch 
	sched-retune-scheduler-latency-defaults.patch 
	sched-update-the-clock-of-runqueue-select-task-rq-selected.patch 
	tg3-01-delay-mdio-bus-init-until-fw-finishes.patch 
	tg3-02-fix-tso-test-against-wrong-flags-var.patch 
	tg3-03-fix-57780-asic-rev-pcie-link-receiver-errors.patch 
	tg3-04-prevent-tx-bd-corruption.patch 
	tg3-05-assign-flags-to-fixes-in-start_xmit_dma_bug.patch 
	tg3-06-fix-5906-transmit-hangs.patch 
	v4l-dvb-fix-cx25840-firmware-loading.patch 
Log Message:
switch pvops to xen/next branch for the moment and update to 2.6.32


add-appleir-usb-driver.patch:
 Documentation/input/appleir.txt |   46 +++
 drivers/hid/hid-apple.c         |    4 
 drivers/hid/hid-core.c          |    5 
 drivers/hid/hid-ids.h           |    1 
 drivers/input/misc/Kconfig      |   13 +
 drivers/input/misc/Makefile     |    1 
 drivers/input/misc/appleir.c    |  478 +++++++++++++++++++++++++++++++++++++++-
 7 files changed, 541 insertions(+), 7 deletions(-)

--- NEW FILE add-appleir-usb-driver.patch ---
 Documentation/input/appleir.txt |   46 ++++
 drivers/hid/hid-apple.c         |    4 -
 drivers/hid/hid-core.c          |    5 +-
 drivers/hid/hid-ids.h           |    1 +
 drivers/input/misc/Kconfig      |   13 +
 drivers/input/misc/Makefile     |    1 +
 drivers/input/misc/appleir.c    |  477 +++++++++++++++++++++++++++++++++++++++
 7 files changed, 541 insertions(+), 6 deletions(-)
 create mode 100644 Documentation/input/appleir.txt
 create mode 100644 drivers/input/misc/appleir.c

diff --git a/Documentation/input/appleir.txt b/Documentation/input/appleir.txt
new file mode 100644
index 0000000..0aaf5fe
--- /dev/null
+++ b/Documentation/input/appleir.txt
@@ -0,0 +1,46 @@
+Apple IR receiver Driver (appleir)
+----------------------------------
+	Copyright (C) 2009 Bastien Nocera <hadess at hadess.net>
+
+The appleir driver is a kernel input driver to handle Apple's IR
+receivers (and associated remotes) in the kernel.
+
+The driver is an input driver which only handles "official" remotes
+as built and sold by Apple.
+
+Authors
+-------
+
+James McKenzie (original driver)
+Alex Karpenko (05ac:8242 support)
+Greg Kroah-Hartman (cleanups and original submission)
+Bastien Nocera (further cleanups and suspend support)
+
+Supported hardware
+------------------
+
+- All Apple laptops and desktops from 2005 onwards, except:
+  - the unibody Macbook (2009)
+  - Mac Pro (all versions)
+- Apple TV (all revisions)
+
+The remote will only support the 6 buttons of the original remotes
+as sold by Apple. See the next section if you want to use other remotes
+or want to use lirc with the device instead of the kernel driver.
+
+Using lirc (native) instead of the kernel driver
+------------------------------------------------
+
+First, you will need to disable the kernel driver for the receiver.
+
+This can be achieved by passing quirks to the usbhid driver.
+The quirk line would be:
+usbhid.quirks=0x05ac:0x8242:0x08
+
+With 0x05ac being the vendor ID (Apple, you shouldn't need to change this)
+With 0x8242 being the product ID (check the output of lsusb for your hardware)
+And 0x08 being "HID_CONNECT_HIDDEV"
+
+This should force the creation of a hiddev device for the receiver, and
+make it usable under lirc.
+
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
index 4b96e7a..d1fdcd0 100644
--- a/drivers/hid/hid-apple.c
+++ b/drivers/hid/hid-apple.c
@@ -353,10 +353,6 @@ static void apple_remove(struct hid_device *hdev)
 }
 
 static const struct hid_device_id apple_devices[] = {
-	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL),
-		.driver_data = APPLE_HIDDEV | APPLE_IGNORE_HIDINPUT },
-	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4),
-		.driver_data = APPLE_HIDDEV | APPLE_IGNORE_HIDINPUT },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE),
 		.driver_data = APPLE_MIGHTYMOUSE | APPLE_INVERT_HWHEEL },
 
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 7d05c4b..3efb0fa 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1252,8 +1252,6 @@ EXPORT_SYMBOL_GPL(hid_disconnect);
 static const struct hid_device_id hid_blacklist[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) },
-	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) },
-	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO) },
@@ -1539,6 +1537,9 @@ static const struct hid_device_id hid_ignore_list[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_24) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_AIRCABLE, USB_DEVICE_ID_AIRCABLE1) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_ALCOR, USB_DEVICE_ID_ALCOR_USBRS232) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUS_LCM)},
 	{ HID_USB_DEVICE(USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUS_LCM2)},
 	{ HID_USB_DEVICE(USB_VENDOR_ID_AVERMEDIA, USB_DEVICE_ID_AVER_FM_MR800) },
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index adbef5d..c399110 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -90,6 +90,7 @@
 #define USB_DEVICE_ID_APPLE_WELLSPRING3_JIS	0x0238
 #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY	0x030a
 #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY	0x030b
+#define USB_DEVICE_ID_APPLE_IRCONTROL	0x8240
 #define USB_DEVICE_ID_APPLE_ATV_IRCONTROL	0x8241
 #define USB_DEVICE_ID_APPLE_IRCONTROL4	0x8242
 
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index a9bb254..51b6684 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -148,6 +148,19 @@ config INPUT_KEYSPAN_REMOTE
 	  To compile this driver as a module, choose M here: the module will
 	  be called keyspan_remote.
 
+config INPUT_APPLEIR
+	tristate "Apple infrared receiver (built in)"
+	depends on USB_ARCH_HAS_HCD
+	select USB
+	help
+	  Say Y here if you want to use a Apple infrared remote control. All
+	  the Apple computers from 2005 onwards include such a port, except
+	  the unibody Macbook (2009), and Mac Pros. This receiver is also
+	  used in the Apple TV set-top box.
+
+	  To compile this driver as a module, choose M here: the module will
+	  be called appleir.
+
 config INPUT_POWERMATE
 	tristate "Griffin PowerMate and Contour Jog support"
 	depends on USB_ARCH_HAS_HCD
diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
index a8b8485..041e6f5 100644
--- a/drivers/input/misc/Makefile
+++ b/drivers/input/misc/Makefile
@@ -5,6 +5,7 @@
 # Each configuration option enables a list of files.
 
 obj-$(CONFIG_INPUT_APANEL)		+= apanel.o
+obj-$(CONFIG_INPUT_APPLEIR)		+= appleir.o
 obj-$(CONFIG_INPUT_ATI_REMOTE)		+= ati_remote.o
 obj-$(CONFIG_INPUT_ATI_REMOTE2)		+= ati_remote2.o
 obj-$(CONFIG_INPUT_ATLAS_BTNS)		+= atlas_btns.o
diff --git a/drivers/input/misc/appleir.c b/drivers/input/misc/appleir.c
new file mode 100644
index 0000000..6e332ab
--- /dev/null
+++ b/drivers/input/misc/appleir.c
@@ -0,0 +1,477 @@
+/*
+ * appleir: USB driver for the apple ir device
+ *
+ * Original driver written by James McKenzie
+ * Ported to recent 2.6 kernel versions by Greg Kroah-Hartman <gregkh at suse.de>
+ *
+ * Copyright (C) 2006 James McKenzie
+ * Copyright (C) 2008 Greg Kroah-Hartman <greg at kroah.com>
+ * Copyright (C) 2008 Novell Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, version 2.
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/slab.h>
+#include <linux/input.h>
+#include <linux/usb/input.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/usb.h>
+#include <linux/usb/input.h>
+#include <asm/unaligned.h>
+#include <asm/byteorder.h>
+
+#define DRIVER_VERSION "v1.2"
+#define DRIVER_AUTHOR "James McKenzie"
+#define DRIVER_DESC "Apple infrared receiver driver"
+#define DRIVER_LICENSE "GPL"
+
+MODULE_AUTHOR(DRIVER_AUTHOR);
+MODULE_DESCRIPTION(DRIVER_DESC);
+MODULE_LICENSE(DRIVER_LICENSE);
+
+#define USB_VENDOR_ID_APPLE			0x05ac
+#define USB_DEVICE_ID_APPLE_IRCONTROL		0x8240
+#define USB_DEVICE_ID_APPLE_ATV_IRCONTROL	0x8241
+#define USB_DEVICE_ID_APPLE_IRCONTROL4		0x8242
+
+#define URB_SIZE	32
+
+#define MAX_KEYS	8
+#define MAX_KEYS_MASK	(MAX_KEYS - 1)
+
+#define dbginfo(dev, format, arg...) do { if (debug) dev_info(dev , format , ## arg); } while (0)
+
+static int debug;
+module_param(debug, int, 0644);
+MODULE_PARM_DESC(debug, "Enable extra debug messages and information");
+
+struct appleir {
+	struct input_dev *input_dev;
+	u8 *data;
+	dma_addr_t dma_buf;
+	struct usb_device *usbdev;
+	unsigned int flags;
+	struct urb *urb;
+	int timer_initted;
+	struct timer_list key_up_timer;
+	int current_key;
+	char phys[32];
+};
+
+static DEFINE_MUTEX(appleir_mutex);
+
+enum {
+	APPLEIR_OPENED = 0x1,
+	APPLEIR_SUSPENDED = 0x2,
+};
+
+static struct usb_device_id appleir_ids[] = {
+	{ USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL) },
+	{ USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) },
+	{ USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
+	{}
+};
+MODULE_DEVICE_TABLE(usb, appleir_ids);
+
+/* I have two devices both of which report the following */
+/* 25 87 ee 83 0a  	+  */
+/* 25 87 ee 83 0c  	-  */
+/* 25 87 ee 83 09	<< */
+/* 25 87 ee 83 06	>> */
+/* 25 87 ee 83 05	>" */
+/* 25 87 ee 83 03	menu */
+/* 26 00 00 00 00	for key repeat*/
+
+/* Thomas Glanzmann reports the following responses */
+/* 25 87 ee ca 0b	+  */
+/* 25 87 ee ca 0d	-  */
+/* 25 87 ee ca 08	<< */
+/* 25 87 ee ca 07	>> */
+/* 25 87 ee ca 04	>" */
+/* 25 87 ee ca 02 	menu */
+/* 26 00 00 00 00       for key repeat*/
+/* He also observes the following event sometimes */
+/* sent after a key is release, which I interpret */
+/* as a flat battery message */
+/* 25 87 e0 ca 06	flat battery */
+
+/* Alexandre Karpenko reports the following responses for Device ID 0x8242 */
+/* 25 87 ee 47 0b	+  */
+/* 25 87 ee 47 0d	-  */
+/* 25 87 ee 47 08	<< */
+/* 25 87 ee 47 07	>> */
+/* 25 87 ee 47 04	>" */
+/* 25 87 ee 47 02 	menu */
+/* 26 87 ee 47 ** 	for key repeat (** is the code of the key being held) */
+
+static int keymap[MAX_KEYS] = {
+	KEY_RESERVED,
+	KEY_MENU,
+	KEY_PLAYPAUSE,
+	KEY_FORWARD,
+	KEY_BACK,
+	KEY_VOLUMEUP,
+	KEY_VOLUMEDOWN,
+	KEY_RESERVED,
+};
+
+static void dump_packet(struct appleir *appleir, char *msg, u8 *data, int len)
+{
+	int i;
+
+	printk(KERN_ERR "appleir: %s (%d bytes)", msg, len);
+
+	for (i = 0; i < len; ++i)
+		printk(" %02x", data[i]);
+	printk("\n");
+}
+
+static void key_up(struct appleir *appleir, int key)
+{
+	dbginfo (&appleir->input_dev->dev, "key %d up\n", key);
+	input_report_key(appleir->input_dev, key, 0);
+	input_sync(appleir->input_dev);
+}
+
+static void key_down(struct appleir *appleir, int key)
+{
+	dbginfo (&appleir->input_dev->dev, "key %d down\n", key);
+	input_report_key(appleir->input_dev, key, 1);
+	input_sync(appleir->input_dev);
+}
+
+static void battery_flat(struct appleir *appleir)
+{
+	dev_err(&appleir->input_dev->dev, "possible flat battery?\n");
+}
+
+static void key_up_tick(unsigned long data)
+{
+	struct appleir *appleir = (struct appleir *)data;
+
+	if (appleir->current_key) {
+		key_up(appleir, appleir->current_key);
+		appleir->current_key = 0;
+	}
+}
+
+static void new_data(struct appleir *appleir, u8 *data, int len)
+{
+	static const u8 keydown[] = { 0x25, 0x87, 0xee };
+	static const u8 keyrepeat[] = { 0x26, };
+	static const u8 flatbattery[] = { 0x25, 0x87, 0xe0 };
+
+	if (debug)
+		dump_packet(appleir, "received", data, len);
+
+	if (len != 5)
+		return;
+
+	if (!memcmp(data, keydown, sizeof(keydown))) {
+		/*If we already have a key down, take it up before marking */
+		/*this one down */
+		if (appleir->current_key)
+			key_up(appleir, appleir->current_key);
+		appleir->current_key = keymap[(data[4] >> 1) & MAX_KEYS_MASK];
+
+		key_down(appleir, appleir->current_key);
+		/*remote doesn't do key up, either pull them up, in the test */
+		/*above, or here set a timer which pulls them up after 1/8 s */
+		mod_timer(&appleir->key_up_timer, jiffies + HZ / 8);
+
+		return;
+	}
+
+	if (!memcmp(data, keyrepeat, sizeof(keyrepeat))) {
+		key_down(appleir, appleir->current_key);
+		/*remote doesn't do key up, either pull them up, in the test */
+		/*above, or here set a timer which pulls them up after 1/8 s */
+		mod_timer(&appleir->key_up_timer, jiffies + HZ / 8);
+		return;
+	}
+
+	if (!memcmp(data, flatbattery, sizeof(flatbattery))) {
+		battery_flat(appleir);
+		/* Fall through */
+	}
+
+	dump_packet(appleir, "unknown packet", data, len);
+}
+
+static void appleir_urb(struct urb *urb)
+{
+	struct appleir *appleir = urb->context;
+	int status = urb->status;
+	int retval;
+
+	switch (status) {
+	case 0:
+		new_data(appleir, urb->transfer_buffer, urb->actual_length);
+		break;
+	case -ECONNRESET:
+	case -ENOENT:
+	case -ESHUTDOWN:
+		/* this urb is terminated, clean up */
+		dbginfo(&appleir->input_dev->dev, "%s - urb shutting down with status: %d", __func__,
+			urb->status);
+		return;
+	default:
+		dbginfo(&appleir->input_dev->dev, "%s - nonzero urb status received: %d", __func__,
+			urb->status);
+	}
+
+	retval = usb_submit_urb(urb, GFP_ATOMIC);
+	if (retval)
+		err("%s - usb_submit_urb failed with result %d", __func__,
+		    retval);
+}
+
+static int appleir_open(struct input_dev *dev)
+{
+	struct appleir *appleir = input_get_drvdata(dev);
+	struct usb_interface *intf = usb_ifnum_to_if(appleir->usbdev, 0);
+	int r;
+
+	r = usb_autopm_get_interface(intf);
+	if (r) {
+		dev_err(&intf->dev,
+			"%s(): usb_autopm_get_interface() = %d\n", __func__, r);
+		return r;
+	}
+
+	mutex_lock(&appleir_mutex);
+
+	if (usb_submit_urb(appleir->urb, GFP_KERNEL)) {
+		r = -EIO;
+		goto fail;
+	}
+
+	appleir->flags |= APPLEIR_OPENED;
+
+	mutex_unlock(&appleir_mutex);
+
+	usb_autopm_put_interface(intf);
+
+	return 0;
+fail:
+	mutex_unlock(&appleir_mutex);
+	usb_autopm_put_interface(intf);
+	return r;
+}
+
+static void appleir_close(struct input_dev *dev)
+{
+	struct appleir *appleir = input_get_drvdata(dev);
+
+	mutex_lock(&appleir_mutex);
+
+	if (!(appleir->flags & APPLEIR_SUSPENDED)) {
+		usb_kill_urb(appleir->urb);
+		del_timer_sync(&appleir->key_up_timer);
+	}
+
+	appleir->flags &= ~APPLEIR_OPENED;
+
+	mutex_unlock(&appleir_mutex);
+}
+
+static int appleir_probe(struct usb_interface *intf,
+			 const struct usb_device_id *id)
+{
+	struct usb_device *dev = interface_to_usbdev(intf);
+	struct usb_endpoint_descriptor *endpoint;
+	struct appleir *appleir = NULL;
+	struct input_dev *input_dev;
+	int retval = -ENOMEM;
+	int i;
+
+	appleir = kzalloc(sizeof(struct appleir), GFP_KERNEL);
+	if (!appleir)
+		goto fail;
+
+	appleir->data = usb_buffer_alloc(dev, URB_SIZE, GFP_KERNEL,
+					 &appleir->dma_buf);
+	if (!appleir->data)
+		goto fail;
+
+	appleir->urb = usb_alloc_urb(0, GFP_KERNEL);
+	if (!appleir->urb)
+		goto fail;
+
+	appleir->usbdev = dev;
+
+	input_dev = input_allocate_device();
+	if (!input_dev)
+		goto fail;
+
+	appleir->input_dev = input_dev;
+
+	usb_make_path(dev, appleir->phys, sizeof(appleir->phys));
+	strlcpy(appleir->phys, "/input0", sizeof(appleir->phys));
+
+	input_dev->name = "Apple infrared remote control driver";
+	input_dev->phys = appleir->phys;
+	usb_to_input_id(dev, &input_dev->id);
+	input_dev->dev.parent = &intf->dev;
+	input_set_drvdata(input_dev, appleir);
+
+	input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
+	input_dev->ledbit[0] = 0;
+
+	for (i = 0; i < MAX_KEYS; i++)
+		set_bit(keymap[i], input_dev->keybit);
+
+	clear_bit(0, input_dev->keybit);
+
+	input_dev->open = appleir_open;
+	input_dev->close = appleir_close;
+
+	endpoint = &intf->cur_altsetting->endpoint[0].desc;
+
+	usb_fill_int_urb(appleir->urb, dev,
+			 usb_rcvintpipe(dev, endpoint->bEndpointAddress),
+			 appleir->data, 8,
+			 appleir_urb, appleir, endpoint->bInterval);
+
+	appleir->urb->transfer_dma = appleir->dma_buf;
+	appleir->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
+
+	usb_set_intfdata(intf, appleir);
+
+	init_timer(&appleir->key_up_timer);
+
+	appleir->key_up_timer.function = key_up_tick;
+	appleir->key_up_timer.data = (unsigned long)appleir;
+
+	appleir->timer_initted++;
+
+	retval = input_register_device(appleir->input_dev);
+	if (retval)
+		goto fail;
+
+	return 0;
+
+fail:
+	printk(KERN_WARNING "Failed to load appleir\n");
+	if (appleir) {
+		if (appleir->data)
+			usb_buffer_free(dev, URB_SIZE, appleir->data,
+					appleir->dma_buf);
+
+		if (appleir->timer_initted)
+			del_timer_sync(&appleir->key_up_timer);
+
+		if (appleir->input_dev)
+			input_free_device(appleir->input_dev);
+
+		kfree(appleir);
+	}
+
+	return retval;
+}
+
+static void appleir_disconnect(struct usb_interface *intf)
+{
+	struct appleir *appleir = usb_get_intfdata(intf);
+
+	usb_set_intfdata(intf, NULL);
+	if (appleir) {
+		input_unregister_device(appleir->input_dev);
+		if (appleir->timer_initted)
+			del_timer_sync(&appleir->key_up_timer);
+		usb_kill_urb(appleir->urb);
+		usb_free_urb(appleir->urb);
+		usb_buffer_free(interface_to_usbdev(intf), URB_SIZE,
+				appleir->data, appleir->dma_buf);
+		kfree(appleir);
+	}
+}
+
+static int appleir_suspend(struct usb_interface *interface,
+			   pm_message_t message)
+{
+	struct appleir *appleir;
+
+	appleir = usb_get_intfdata(interface);
+
+	mutex_lock(&appleir_mutex);
+
+	if (appleir->flags & APPLEIR_OPENED) {
+		usb_kill_urb(appleir->urb);
+		del_timer_sync(&appleir->key_up_timer);
+	}
+
+	appleir->flags |= APPLEIR_SUSPENDED;
+
+	mutex_unlock(&appleir_mutex);
+
+	return 0;
+}
+
+static int appleir_resume(struct usb_interface *interface)
+{
+	struct appleir *appleir;
+
+	appleir = usb_get_intfdata(interface);
+
+	mutex_lock(&appleir_mutex);
+
+	if (appleir->flags & APPLEIR_OPENED) {
+		struct usb_endpoint_descriptor *endpoint;
+
+		endpoint = &interface->cur_altsetting->endpoint[0].desc;
+		usb_fill_int_urb(appleir->urb, appleir->usbdev,
+				 usb_rcvintpipe(appleir->usbdev, endpoint->bEndpointAddress),
+				 appleir->data, 8,
+				 appleir_urb, appleir, endpoint->bInterval);
+		appleir->urb->transfer_dma = appleir->dma_buf;
+		appleir->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
+
+		init_timer(&appleir->key_up_timer);
+
+		appleir->key_up_timer.function = key_up_tick;
+		appleir->key_up_timer.data = (unsigned long)appleir;
+	}
+
+	appleir->flags &= ~APPLEIR_SUSPENDED;
+
+	mutex_unlock(&appleir_mutex);
+
+	return 0;
+}
+
+static struct usb_driver appleir_driver = {
+	.name                 = "appleir",
+	.probe                = appleir_probe,
+	.disconnect           = appleir_disconnect,
+	.suspend              = appleir_suspend,
+	.resume               = appleir_resume,
+	.reset_resume         = appleir_resume,
+	.id_table             = appleir_ids,
+	.supports_autosuspend = 1,
+};
+
+static int __init appleir_init(void)
+{
+	int retval;
+
+	retval = usb_register(&appleir_driver);
+	if (retval)
+		goto out;
+	printk(KERN_INFO DRIVER_VERSION ":" DRIVER_DESC);
+out:
+	return retval;
+}
+
+static void __exit appleir_exit(void)
+{
+	usb_deregister(&appleir_driver);
+}
+
+module_init(appleir_init);
+module_exit(appleir_exit);
-- 
1.6.5.2


block-fix-bugs-in-bio-integrity-mempool-usage.patch:
 bio-integrity.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- NEW FILE block-fix-bugs-in-bio-integrity-mempool-usage.patch ---
From: Chuck Ebbert <cebbert at redhat.com>
Date: Sat, 30 Jan 2010 19:28:19 +0000 (+0100)
Subject: block: fix bugs in bio-integrity mempool usage
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Faxboe%2Flinux-2.6-block.git;a=commitdiff_plain;h=9e9432c267e4047db98b9d4fba95099c6effcef9

block: fix bugs in bio-integrity mempool usage

Fix two bugs in the bio integrity code:

 use_bip_pool() always returns 0 because it checks against the wrong limit,
 causing the mempool to be used only when regular allocation fails.

 When the mempool is used as a fallback we don't free the data properly.

Signed-Off-By: Chuck Ebbert <cebbert at redhat.com>
Acked-by: Martin K. Petersen <martin.petersen at oracle.com>

Signed-off-by: Jens Axboe <jens.axboe at oracle.com>
---

diff --git a/fs/bio-integrity.c b/fs/bio-integrity.c
index 49a34e7..a16f29e 100644
--- a/fs/bio-integrity.c
+++ b/fs/bio-integrity.c
@@ -61,7 +61,7 @@ static inline unsigned int vecs_to_idx(unsigned int nr)
 
 static inline int use_bip_pool(unsigned int idx)
 {
-	if (idx == BIOVEC_NR_POOLS)
+	if (idx == BIOVEC_MAX_IDX)
 		return 1;
 
 	return 0;
@@ -95,6 +95,7 @@ struct bio_integrity_payload *bio_integrity_alloc_bioset(struct bio *bio,
 
 	/* Use mempool if lower order alloc failed or max vecs were requested */
 	if (bip == NULL) {
+		idx = BIOVEC_MAX_IDX;  /* so we free the payload properly later */
 		bip = mempool_alloc(bs->bio_integrity_pool, gfp_mask);
 
 		if (unlikely(bip == NULL)) {

crystalhd-2.6.34-staging.patch:
 Kconfig                     |    2 
 Makefile                    |    1 
 crystalhd/Kconfig           |    6 
 crystalhd/Makefile          |    6 
 crystalhd/TODO              |   16 
 crystalhd/bc_dts_defs.h     |  498 +++++++++
 crystalhd/bc_dts_glob_lnx.h |  299 +++++
 crystalhd/bc_dts_types.h    |  121 ++
 crystalhd/bcm_70012_regs.h  |  757 +++++++++++++
 crystalhd/crystalhd_cmds.c  | 1058 +++++++++++++++++++
 crystalhd/crystalhd_cmds.h  |   88 +
 crystalhd/crystalhd_fw_if.h |  369 ++++++
 crystalhd/crystalhd_hw.c    | 2395 ++++++++++++++++++++++++++++++++++++++++++++
 crystalhd/crystalhd_hw.h    |  398 +++++++
 crystalhd/crystalhd_lnx.c   |  780 ++++++++++++++
 crystalhd/crystalhd_lnx.h   |   96 +
 crystalhd/crystalhd_misc.c  | 1029 ++++++++++++++++++
 crystalhd/crystalhd_misc.h  |  229 ++++
 18 files changed, 8148 insertions(+)

--- NEW FILE crystalhd-2.6.34-staging.patch ---
Broadcom Crystal HD video decoder driver from upstream staging/linux-next.

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

---
 drivers/staging/Kconfig                     |    2 +
 drivers/staging/Makefile                    |    1 +
 drivers/staging/crystalhd/Kconfig           |    6 +
 drivers/staging/crystalhd/Makefile          |    6 +
 drivers/staging/crystalhd/TODO              |   16 +
 drivers/staging/crystalhd/bc_dts_defs.h     |  498 ++++++
 drivers/staging/crystalhd/bc_dts_glob_lnx.h |  299 ++++
 drivers/staging/crystalhd/bc_dts_types.h    |  121 ++
 drivers/staging/crystalhd/bcm_70012_regs.h  |  757 +++++++++
 drivers/staging/crystalhd/crystalhd_cmds.c  | 1058 ++++++++++++
 drivers/staging/crystalhd/crystalhd_cmds.h  |   88 +
 drivers/staging/crystalhd/crystalhd_fw_if.h |  369 ++++
 drivers/staging/crystalhd/crystalhd_hw.c    | 2395 +++++++++++++++++++++++++++
 drivers/staging/crystalhd/crystalhd_hw.h    |  398 +++++
 drivers/staging/crystalhd/crystalhd_lnx.c   |  780 +++++++++
 drivers/staging/crystalhd/crystalhd_lnx.h   |   95 ++
 drivers/staging/crystalhd/crystalhd_misc.c  | 1029 ++++++++++++
 drivers/staging/crystalhd/crystalhd_misc.h  |  229 +++
 18 files changed, 8147 insertions(+), 0 deletions(-)

diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index 94eb863..61ec152 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -145,5 +145,7 @@ source "drivers/staging/netwave/Kconfig"
 
 source "drivers/staging/iio/Kconfig"
 
+source "drivers/staging/crystalhd/Kconfig"
+
 endif # !STAGING_EXCLUDE_BUILD
 endif # STAGING
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index b5e67b8..dc40493 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -53,3 +53,4 @@ obj-$(CONFIG_WAVELAN)		+= wavelan/
 obj-$(CONFIG_RAR_REGISTER)	+= rar/
 obj-$(CONFIG_DX_SEP)		+= sep/
 obj-$(CONFIG_IIO)		+= iio/
+obj-$(CONFIG_CRYSTALHD)		+= crystalhd/
diff --git a/drivers/staging/crystalhd/Kconfig b/drivers/staging/crystalhd/Kconfig
new file mode 100644
index 0000000..56b414b
--- /dev/null
+++ b/drivers/staging/crystalhd/Kconfig
@@ -0,0 +1,6 @@
+config CRYSTALHD
+	tristate "Broadcom Crystal HD video decoder support"
+	depends on PCI
+	default n
+	help
+	  Support for the Broadcom Crystal HD video decoder chipset
diff --git a/drivers/staging/crystalhd/Makefile b/drivers/staging/crystalhd/Makefile
new file mode 100644
index 0000000..e2af0ce
--- /dev/null
+++ b/drivers/staging/crystalhd/Makefile
@@ -0,0 +1,6 @@
+obj-$(CONFIG_CRYSTALHD)	+= crystalhd.o
+
+crystalhd-objs		:= crystalhd_cmds.o	\
+			   crystalhd_hw.o	\
+			   crystalhd_lnx.o	\
+			   crystalhd_misc.o
diff --git a/drivers/staging/crystalhd/TODO b/drivers/staging/crystalhd/TODO
new file mode 100644
index 0000000..69be5d0
--- /dev/null
+++ b/drivers/staging/crystalhd/TODO
@@ -0,0 +1,16 @@
+- Testing
+- Cleanup return codes
+- Cleanup typedefs
+- Cleanup all WIN* references
+- Allocate an Accelerator device class specific Major number,
+  since we don't have any other open sourced accelerators, it is the only
+  one in that category for now.
+  A somewhat similar device is the DXR2/3
+
+Please send patches to:
+Greg Kroah-Hartman <greg at kroah.com>
+Naren Sankar <nsankar at broadcom.com>
+Jarod Wilson <jarod at wilsonet.com>
+Scott Davilla <davilla at 4pi.com>
+Manu Abraham <abraham.manu at gmail.com>
+
diff --git a/drivers/staging/crystalhd/bc_dts_defs.h b/drivers/staging/crystalhd/bc_dts_defs.h
new file mode 100644
index 0000000..c34cc07
--- /dev/null
+++ b/drivers/staging/crystalhd/bc_dts_defs.h
@@ -0,0 +1,498 @@
+/********************************************************************
+ * Copyright(c) 2006-2009 Broadcom Corporation.
+ *
+ *  Name: bc_dts_defs.h
+ *
+ *  Description: Common definitions for all components. Only types
+ *		 is allowed to be included from this file.
+ *
+ *  AU
+ *
+ *  HISTORY:
+ *
+ ********************************************************************
+ * This header is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation, either version 2.1 of the License.
+ *
+ * This header is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this header.  If not, see <http://www.gnu.org/licenses/>.
+ *******************************************************************/
+
+#ifndef _BC_DTS_DEFS_H_
+#define _BC_DTS_DEFS_H_
+
+#include "bc_dts_types.h"
+
+/* BIT Mask */
+#define BC_BIT(_x)		(1 << (_x))
+
+typedef enum _BC_STATUS {
+	BC_STS_SUCCESS		= 0,
+	BC_STS_INV_ARG		= 1,
+	BC_STS_BUSY		= 2,
+	BC_STS_NOT_IMPL		= 3,
+	BC_STS_PGM_QUIT		= 4,
+	BC_STS_NO_ACCESS	= 5,
+	BC_STS_INSUFF_RES	= 6,
+	BC_STS_IO_ERROR		= 7,
+	BC_STS_NO_DATA		= 8,
+	BC_STS_VER_MISMATCH	= 9,
+	BC_STS_TIMEOUT		= 10,
+	BC_STS_FW_CMD_ERR	= 11,
+	BC_STS_DEC_NOT_OPEN	= 12,
+	BC_STS_ERR_USAGE	= 13,
+	BC_STS_IO_USER_ABORT	= 14,
+	BC_STS_IO_XFR_ERROR	= 15,
+	BC_STS_DEC_NOT_STARTED	= 16,
+	BC_STS_FWHEX_NOT_FOUND	= 17,
+	BC_STS_FMT_CHANGE	= 18,
+	BC_STS_HIF_ACCESS	= 19,
+	BC_STS_CMD_CANCELLED	= 20,
+	BC_STS_FW_AUTH_FAILED	= 21,
+	BC_STS_BOOTLOADER_FAILED = 22,
+	BC_STS_CERT_VERIFY_ERROR = 23,
+	BC_STS_DEC_EXIST_OPEN	= 24,
+	BC_STS_PENDING		= 25,
+	BC_STS_CLK_NOCHG	= 26,
+
+	/* Must be the last one.*/
+	BC_STS_ERROR		= -1
+} BC_STATUS;
+
+/*------------------------------------------------------*
+ *    Registry Key Definitions				*
+ *------------------------------------------------------*/
+#define BC_REG_KEY_MAIN_PATH	"Software\\Broadcom\\MediaPC\\70010"
+#define BC_REG_KEY_FWPATH		"FirmwareFilePath"
+#define BC_REG_KEY_SEC_OPT		"DbgOptions"
+
+/*
+ * Options:
+ *
+ *  b[5] = Enable RSA KEY in EEPROM Support
+ *  b[6] = Enable Old PIB scheme. (0 = Use PIB with video scheme)
+ *
+ *  b[12] = Enable send message to NotifyIcon
+ *
+ */
+
+typedef enum _BC_SW_OPTIONS {
+	BC_OPT_DOSER_OUT_ENCRYPT	= BC_BIT(3),
+	BC_OPT_LINK_OUT_ENCRYPT		= BC_BIT(29),
+} BC_SW_OPTIONS;
+
+typedef struct _BC_REG_CONFIG{
+	uint32_t		DbgOptions;
+} BC_REG_CONFIG;
+
+#if defined(__KERNEL__) || defined(__LINUX_USER__)
+#else
+/* Align data structures */
+#define ALIGN(x)	__declspec(align(x))
+#endif
+
+/* mode
+ * b[0]..b[7]	= _DtsDeviceOpenMode
+ * b[8]		=  Load new FW
[...7888 lines suppressed...]
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/string.h>
+#include <linux/ioctl.h>
+#include <linux/dma-mapping.h>
+#include <linux/version.h>
+#include <linux/sched.h>
+#include <asm/system.h>
+#include "bc_dts_glob_lnx.h"
+
+/* Global log level variable defined in crystal_misc.c file */
+extern uint32_t g_linklog_level;
+
+/* Global element pool for all Queue management.
+ * TX: Active = BC_TX_LIST_CNT, Free = BC_TX_LIST_CNT.
+ * RX: Free = BC_RX_LIST_CNT, Active = 2
+ * FW-CMD: 4
+ */
+#define	BC_LINK_ELEM_POOL_SZ	((BC_TX_LIST_CNT * 2) + BC_RX_LIST_CNT + 2 + 4)
+
+/* Driver's IODATA pool count */
+#define	CHD_IODATA_POOL_SZ    (BC_IOCTL_DATA_POOL_SIZE * BC_LINK_MAX_OPENS)
+
+/* Scatter Gather memory pool size for Tx and Rx */
+#define BC_LINK_SG_POOL_SZ    (BC_TX_LIST_CNT + BC_RX_LIST_CNT)
+
+enum _crystalhd_dio_sig {
+	crystalhd_dio_inv = 0,
+	crystalhd_dio_locked,
+	crystalhd_dio_sg_mapped,
+};
+
+struct crystalhd_dio_user_info {
+	void			*xfr_buff;
+	uint32_t		xfr_len;
+	uint32_t		uv_offset;
+	bool			dir_tx;
+
+	uint32_t		uv_sg_ix;
+	uint32_t		uv_sg_off;
+	int			comp_sts;
+	int			ev_sts;
+	uint32_t		y_done_sz;
+	uint32_t		uv_done_sz;
+	uint32_t		comp_flags;
+	bool			b422mode;
+};
+
+typedef struct _crystalhd_dio_req {
+	uint32_t			sig;
+	uint32_t			max_pages;
+	struct page			**pages;
+	struct scatterlist		*sg;
+	int				sg_cnt;
+	int				page_cnt;
+	int				direction;
+	struct crystalhd_dio_user_info	uinfo;
+	void				*fb_va;
+	uint32_t			fb_size;
+	dma_addr_t			fb_pa;
+	struct _crystalhd_dio_req		*next;
+} crystalhd_dio_req;
+
+#define BC_LINK_DIOQ_SIG	(0x09223280)
+
+typedef struct _crystalhd_elem_s {
+	struct _crystalhd_elem_s	*flink;
+	struct _crystalhd_elem_s	*blink;
+	void			*data;
+	uint32_t		tag;
+} crystalhd_elem_t;
+
+typedef void (*crystalhd_data_free_cb)(void *context, void *data);
+
+typedef struct _crystalhd_dioq_s {
+	uint32_t		sig;
+	struct crystalhd_adp	*adp;
+	crystalhd_elem_t		*head;
+	crystalhd_elem_t		*tail;
+	uint32_t		count;
+	spinlock_t		lock;
+	wait_queue_head_t	event;
+	crystalhd_data_free_cb	data_rel_cb;
+	void			*cb_context;
+} crystalhd_dioq_t;
+
+typedef void (*hw_comp_callback)(crystalhd_dio_req *,
+				 wait_queue_head_t *event, BC_STATUS sts);
+
+/*========= Decoder (7412) register access routines.================= */
+uint32_t bc_dec_reg_rd(struct crystalhd_adp *, uint32_t);
+void bc_dec_reg_wr(struct crystalhd_adp *, uint32_t, uint32_t);
+
+/*========= Link (70012) register access routines.. =================*/
+uint32_t crystalhd_reg_rd(struct crystalhd_adp *, uint32_t);
+void crystalhd_reg_wr(struct crystalhd_adp *, uint32_t, uint32_t);
+
+/*========= Decoder (7412) memory access routines..=================*/
+BC_STATUS crystalhd_mem_rd(struct crystalhd_adp *, uint32_t, uint32_t, uint32_t *);
+BC_STATUS crystalhd_mem_wr(struct crystalhd_adp *, uint32_t, uint32_t, uint32_t *);
+
+/*==========Link (70012) PCIe Config access routines.================*/
+BC_STATUS crystalhd_pci_cfg_rd(struct crystalhd_adp *, uint32_t, uint32_t, uint32_t *);
+BC_STATUS crystalhd_pci_cfg_wr(struct crystalhd_adp *, uint32_t, uint32_t, uint32_t);
+
+/*========= Linux Kernel Interface routines. ======================= */
+void *bc_kern_dma_alloc(struct crystalhd_adp *, uint32_t, dma_addr_t *);
+void bc_kern_dma_free(struct crystalhd_adp *, uint32_t,
+		      void *, dma_addr_t);
+#define crystalhd_create_event(_ev)	init_waitqueue_head(_ev)
+#define crystalhd_set_event(_ev)		wake_up_interruptible(_ev)
+#define crystalhd_wait_on_event(ev, condition, timeout, ret, nosig)	\
+do {									\
+	DECLARE_WAITQUEUE(entry, current);				\
+	unsigned long end = jiffies + ((timeout * HZ) / 1000);		\
+		ret = 0;						\
+	add_wait_queue(ev, &entry);					\
+	for (;;) {							\
+		__set_current_state(TASK_INTERRUPTIBLE);		\
+		if (condition) {					\
+			break;						\
+		}							\
+		if (time_after_eq(jiffies, end)) {			\
+			ret = -EBUSY;					\
+			break;						\
+		}							\
+		schedule_timeout((HZ / 100 > 1) ? HZ / 100 : 1);	\
+		if (!nosig && signal_pending(current)) {		\
+			ret = -EINTR;					\
+			break;						\
+		}							\
+	}								\
+	__set_current_state(TASK_RUNNING);				\
+	remove_wait_queue(ev, &entry);					\
+} while (0)
+
+/*================ Direct IO mapping routines ==================*/
+extern int crystalhd_create_dio_pool(struct crystalhd_adp *, uint32_t);
+extern void crystalhd_destroy_dio_pool(struct crystalhd_adp *);
+extern BC_STATUS crystalhd_map_dio(struct crystalhd_adp *, void *, uint32_t,
+				   uint32_t, bool, bool, crystalhd_dio_req**);
+
+extern BC_STATUS crystalhd_unmap_dio(struct crystalhd_adp *, crystalhd_dio_req*);
+#define crystalhd_get_sgle_paddr(_dio, _ix) (cpu_to_le64(sg_dma_address(&_dio->sg[_ix])))
+#define crystalhd_get_sgle_len(_dio, _ix) (cpu_to_le32(sg_dma_len(&_dio->sg[_ix])))
+
+/*================ General Purpose Queues ==================*/
+extern BC_STATUS crystalhd_create_dioq(struct crystalhd_adp *, crystalhd_dioq_t **, crystalhd_data_free_cb , void *);
+extern void crystalhd_delete_dioq(struct crystalhd_adp *, crystalhd_dioq_t *);
+extern BC_STATUS crystalhd_dioq_add(crystalhd_dioq_t *ioq, void *data, bool wake, uint32_t tag);
+extern void *crystalhd_dioq_fetch(crystalhd_dioq_t *ioq);
+extern void *crystalhd_dioq_find_and_fetch(crystalhd_dioq_t *ioq, uint32_t tag);
+extern void *crystalhd_dioq_fetch_wait(crystalhd_dioq_t *ioq, uint32_t to_secs, uint32_t *sig_pend);
+
+#define crystalhd_dioq_count(_ioq)	((_ioq) ? _ioq->count : 0)
+
+extern int crystalhd_create_elem_pool(struct crystalhd_adp *, uint32_t);
+extern void crystalhd_delete_elem_pool(struct crystalhd_adp *);
+
+
+/*================ Debug routines/macros .. ================================*/
+extern void crystalhd_show_buffer(uint32_t off, uint8_t *buff, uint32_t dwcount);
+
+enum _chd_log_levels {
+	BCMLOG_ERROR		= 0x80000000,	/* Don't disable this option */
+	BCMLOG_DATA		= 0x40000000,	/* Data, enable by default */
+	BCMLOG_SPINLOCK		= 0x20000000,	/* Spcial case for Spin locks*/
+
+	/* Following are allowed only in debug mode */
+	BCMLOG_INFO		= 0x00000001,	/* Generic informational */
+	BCMLOG_DBG		= 0x00000002,	/* First level Debug info */
+	BCMLOG_SSTEP		= 0x00000004,	/* Stepping information */
+	BCMLOG_ENTER_LEAVE	= 0x00000008,	/* stack tracking */
+};
+
+#define BCMLOG_ENTER				\
+if (g_linklog_level & BCMLOG_ENTER_LEAVE) {	\
+	printk("Entered %s\n", __func__);	\
+}
+
+#define BCMLOG_LEAVE				\
+if (g_linklog_level & BCMLOG_ENTER_LEAVE) {	\
+	printk("Leaving %s\n", __func__);	\
+}
+
+#define BCMLOG(trace, fmt, args...)		\
+if (g_linklog_level & trace) {			\
+	printk(fmt, ##args);			\
+}
+
+#define BCMLOG_ERR(fmt, args...)					\
+do {									\
+	if (g_linklog_level & BCMLOG_ERROR) {				\
+		printk("*ERR*:%s:%d: "fmt, __FILE__, __LINE__, ##args);	\
+	}								\
+} while (0);
+
+#endif

drm-fixes.patch:
 drm_crtc_helper.c               |    5 +++--
 radeon/r600.c                   |    8 ++++----
 radeon/radeon_combios.c         |    3 +++
 radeon/radeon_connectors.c      |    8 ++++++++
 radeon/radeon_legacy_encoders.c |   21 ++++++++++++++++++++-
 radeon/radeon_ttm.c             |    5 ++++-
 6 files changed, 42 insertions(+), 8 deletions(-)

--- NEW FILE drm-fixes.patch ---
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
index 077313f..7d0f00a 100644
--- a/drivers/gpu/drm/drm_crtc_helper.c
+++ b/drivers/gpu/drm/drm_crtc_helper.c
@@ -702,7 +702,7 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
 		if (encoder->crtc != crtc)
 			continue;
 
-		DRM_INFO("%s: set mode %s %x\n", drm_get_encoder_name(encoder),
+		DRM_DEBUG("%s: set mode %s %x\n", drm_get_encoder_name(encoder),
 			 mode->name, mode->base.id);
 		encoder_funcs = encoder->helper_private;
 		encoder_funcs->mode_set(encoder, mode, adjusted_mode);
@@ -1032,7 +1032,8 @@ bool drm_helper_initial_config(struct drm_device *dev)
 	/*
 	 * we shouldn't end up with no modes here.
 	 */
-	printk(KERN_INFO "No connectors reported conncted with modes\n");
+	if (count == 0)
+		printk(KERN_INFO "No connectors reported connected with modes\n");
 
 	drm_setup_crtcs(dev);
 
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index 1f4f83d..9757962 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -2729,7 +2729,7 @@ restart_ih:
 				}
 				break;
 			default:
-				DRM_ERROR("Unhandled interrupt: %d %d\n", src_id, src_data);
+				DRM_DEBUG("Unhandled interrupt: %d %d\n", src_id, src_data);
 				break;
 			}
 			break;
@@ -2749,7 +2749,7 @@ restart_ih:
 				}
 				break;
 			default:
-				DRM_ERROR("Unhandled interrupt: %d %d\n", src_id, src_data);
+				DRM_DEBUG("Unhandled interrupt: %d %d\n", src_id, src_data);
 				break;
 			}
 			break;
@@ -2798,7 +2798,7 @@ restart_ih:
 				}
 				break;
 			default:
-				DRM_ERROR("Unhandled interrupt: %d %d\n", src_id, src_data);
+				DRM_DEBUG("Unhandled interrupt: %d %d\n", src_id, src_data);
 				break;
 			}
 			break;
@@ -2812,7 +2812,7 @@ restart_ih:
 			DRM_DEBUG("IH: CP EOP\n");
 			break;
 		default:
-			DRM_ERROR("Unhandled interrupt: %d %d\n", src_id, src_data);
+			DRM_DEBUG("Unhandled interrupt: %d %d\n", src_id, src_data);
 			break;
 		}
 
diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c
index 7914455..579c892 100644
--- a/drivers/gpu/drm/radeon/radeon_combios.c
+++ b/drivers/gpu/drm/radeon/radeon_combios.c
@@ -687,6 +687,9 @@ radeon_combios_get_tv_info(struct radeon_device *rdev)
 	uint16_t tv_info;
 	enum radeon_tv_std tv_std = TV_STD_NTSC;
 
+	if (rdev->bios == NULL)
+		return tv_std;
+
 	tv_info = combios_get_table_offset(dev, COMBIOS_TV_INFO_TABLE);
 	if (tv_info) {
 		if (RBIOS8(tv_info + 6) == 'T') {
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index 9da10dd..5526641 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -900,10 +900,18 @@ static void radeon_dvi_force(struct drm_connector *connector)
 static int radeon_dvi_mode_valid(struct drm_connector *connector,
 				  struct drm_display_mode *mode)
 {
+	struct drm_device *dev = connector->dev;
+	struct radeon_device *rdev = dev->dev_private;
 	struct radeon_connector *radeon_connector = to_radeon_connector(connector);
 
 	/* XXX check mode bandwidth */
 
+	/* clocks over 135 MHz have heat issues with DVI on RV100 */
+	if (radeon_connector->use_digital &&
+	    (rdev->family == CHIP_RV100) &&
+	    (mode->clock > 135000))
+		return MODE_CLOCK_HIGH;
+
 	if (radeon_connector->use_digital && (mode->clock > 165000)) {
 		if ((radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I) ||
 		    (radeon_connector->connector_object_id == CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D) ||
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
index 981508f..38e45e2 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
@@ -46,6 +46,7 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode)
 	struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
 	uint32_t lvds_gen_cntl, lvds_pll_cntl, pixclks_cntl, disp_pwr_man;
 	int panel_pwr_delay = 2000;
+	bool is_mac = false;
 	DRM_DEBUG("\n");
 
 	if (radeon_encoder->enc_priv) {
@@ -58,6 +59,15 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode)
 		}
 	}
 
+	/* macs (and possibly some x86 oem systems?) wire up LVDS strangely
+	 * Taken from radeonfb.
+	 */
+	if ((rdev->mode_info.connector_table == CT_IBOOK) ||
+	    (rdev->mode_info.connector_table == CT_POWERBOOK_EXTERNAL) ||
+	    (rdev->mode_info.connector_table == CT_POWERBOOK_INTERNAL) ||
+	    (rdev->mode_info.connector_table == CT_POWERBOOK_VGA))
+		is_mac = true;
+
 	switch (mode) {
 	case DRM_MODE_DPMS_ON:
 		disp_pwr_man = RREG32(RADEON_DISP_PWR_MAN);
@@ -74,6 +84,8 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode)
 
 		lvds_gen_cntl = RREG32(RADEON_LVDS_GEN_CNTL);
 		lvds_gen_cntl |= (RADEON_LVDS_ON | RADEON_LVDS_EN | RADEON_LVDS_DIGON | RADEON_LVDS_BLON);
+		if (is_mac)
+			lvds_gen_cntl |= RADEON_LVDS_BL_MOD_EN;
 		lvds_gen_cntl &= ~(RADEON_LVDS_DISPLAY_DIS);
 		udelay(panel_pwr_delay * 1000);
 		WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl);
@@ -85,7 +97,14 @@ static void radeon_legacy_lvds_dpms(struct drm_encoder *encoder, int mode)
 		WREG32_PLL_P(RADEON_PIXCLKS_CNTL, 0, ~RADEON_PIXCLK_LVDS_ALWAYS_ONb);
 		lvds_gen_cntl = RREG32(RADEON_LVDS_GEN_CNTL);
 		lvds_gen_cntl |= RADEON_LVDS_DISPLAY_DIS;
-		lvds_gen_cntl &= ~(RADEON_LVDS_ON | RADEON_LVDS_BLON | RADEON_LVDS_EN | RADEON_LVDS_DIGON);
+		if (is_mac) {
+			lvds_gen_cntl &= ~RADEON_LVDS_BL_MOD_EN;
+			WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl);
+			lvds_gen_cntl &= ~(RADEON_LVDS_ON | RADEON_LVDS_EN);
+		} else {
+			WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl);
+			lvds_gen_cntl &= ~(RADEON_LVDS_ON | RADEON_LVDS_BLON | RADEON_LVDS_EN | RADEON_LVDS_DIGON);
+		}
 		udelay(panel_pwr_delay * 1000);
 		WREG32(RADEON_LVDS_GEN_CNTL, lvds_gen_cntl);
 		WREG32_PLL(RADEON_PIXCLKS_CNTL, pixclks_cntl);
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index a004507..db820ae 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -215,7 +215,10 @@ static void radeon_evict_flags(struct ttm_buffer_object *bo,
 	rbo = container_of(bo, struct radeon_bo, tbo);
 	switch (bo->mem.mem_type) {
 	case TTM_PL_VRAM:
-		radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_GTT);
+		if (rbo->rdev->cp.ready == false)
+			radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_CPU);
+		else
+			radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_GTT);
 		break;
 	case TTM_PL_TT:
 	default:

drm-intel-big-hammer.patch:
 i915_gem.c |    5 +++++
 1 file changed, 5 insertions(+)

Index: drm-intel-big-hammer.patch
===================================================================
RCS file: drm-intel-big-hammer.patch
diff -N drm-intel-big-hammer.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ drm-intel-big-hammer.patch	31 Jan 2010 17:57:34 -0000	1.1.2.4
@@ -0,0 +1,16 @@
+diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
+index 37427e4..08af9db 100644
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -2553,6 +2553,11 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
+ 
+ 	mutex_lock(&dev->struct_mutex);
+ 
++	/* We don't get the flushing right for these chipsets, use the
++	 * big hamer for now to avoid random crashiness. */
++	if (IS_I855(dev) || IS_I865G(dev))
++		wbinvd();
++
+ 	i915_verify_inactive(dev, __FILE__, __LINE__);
+ 
+ 	if (dev_priv->mm.wedged) {

drm-intel-no-tv-hotplug-interrupts-dammit.patch:
 intel_tv.c |    1 -
 1 file changed, 1 deletion(-)

--- NEW FILE drm-intel-no-tv-hotplug-interrupts-dammit.patch ---
diff -up linux-2.6.32.noarch/drivers/gpu/drm/i915/intel_tv.c.jx linux-2.6.32.noarch/drivers/gpu/drm/i915/intel_tv.c
--- linux-2.6.32.noarch/drivers/gpu/drm/i915/intel_tv.c.jx	2010-01-14 16:20:20.000000000 -0500
+++ linux-2.6.32.noarch/drivers/gpu/drm/i915/intel_tv.c	2010-01-14 16:25:46.064428657 -0500
@@ -1841,7 +1841,6 @@ intel_tv_init(struct drm_device *dev)
 				   dev->mode_config.tv_bottom_margin_property,
 				   tv_priv->margin[TV_MARGIN_BOTTOM]);
 
-	dev_priv->hotplug_supported_mask |= TV_HOTPLUG_INT_STATUS;
 out:
 	drm_sysfs_connector_add(connector);
 }

drm-next.patch:
 b/drivers/gpu/drm/Kconfig                         |   18 
 b/drivers/gpu/drm/Makefile                        |    8 
 b/drivers/gpu/drm/drm_cache.c                     |   46 
 b/drivers/gpu/drm/drm_crtc.c                      |   77 
 b/drivers/gpu/drm/drm_crtc_helper.c               |  220 
 b/drivers/gpu/drm/drm_drv.c                       |    4 
 b/drivers/gpu/drm/drm_edid.c                      |  504 
 b/drivers/gpu/drm/drm_encoder_slave.c             |  116 
 b/drivers/gpu/drm/drm_fb_helper.c                 |  701 
 b/drivers/gpu/drm/drm_gem.c                       |   11 
 b/drivers/gpu/drm/drm_mm.c                        |   21 
 b/drivers/gpu/drm/drm_modes.c                     |  435 
 b/drivers/gpu/drm/drm_proc.c                      |   17 
 b/drivers/gpu/drm/drm_sysfs.c                     |   28 
 b/drivers/gpu/drm/i915/Makefile                   |    2 
 b/drivers/gpu/drm/i915/i915_debugfs.c             |  445 
 b/drivers/gpu/drm/i915/i915_dma.c                 |  100 
 b/drivers/gpu/drm/i915/i915_drv.c                 |    9 
 b/drivers/gpu/drm/i915/i915_drv.h                 |   62 
 b/drivers/gpu/drm/i915/i915_gem.c                 |   14 
 b/drivers/gpu/drm/i915/i915_gem_tiling.c          |   80 
 b/drivers/gpu/drm/i915/i915_irq.c                 |   21 
 b/drivers/gpu/drm/i915/i915_reg.h                 |  143 
 b/drivers/gpu/drm/i915/i915_suspend.c             |    4 
 b/drivers/gpu/drm/i915/intel_bios.c               |    8 
 b/drivers/gpu/drm/i915/intel_crt.c                |   28 
 b/drivers/gpu/drm/i915/intel_display.c            |  607 
 b/drivers/gpu/drm/i915/intel_drv.h                |    7 
 b/drivers/gpu/drm/i915/intel_fb.c                 |  737 
 b/drivers/gpu/drm/i915/intel_i2c.c                |    8 
 b/drivers/gpu/drm/i915/intel_lvds.c               |   22 
 b/drivers/gpu/drm/i915/intel_sdvo.c               |  331 
 b/drivers/gpu/drm/i915/intel_tv.c                 |   30 
 b/drivers/gpu/drm/mga/mga_dma.c                   |    4 
 b/drivers/gpu/drm/mga/mga_drv.h                   |    1 
 b/drivers/gpu/drm/mga/mga_warp.c                  |  180 
 b/drivers/gpu/drm/r128/r128_cce.c                 |  116 
 b/drivers/gpu/drm/r128/r128_drv.h                 |    8 
 b/drivers/gpu/drm/r128/r128_state.c               |   36 
 b/drivers/gpu/drm/radeon/Kconfig                  |    1 
 b/drivers/gpu/drm/radeon/Makefile                 |   43 
 b/drivers/gpu/drm/radeon/atombios.h               |   11 
 b/drivers/gpu/drm/radeon/atombios_crtc.c          |  100 
 b/drivers/gpu/drm/radeon/avivod.h                 |   60 
 b/drivers/gpu/drm/radeon/mkregtable.c             |  720 
 b/drivers/gpu/drm/radeon/r100.c                   | 1047 
 b/drivers/gpu/drm/radeon/r100_track.h             |  124 
 b/drivers/gpu/drm/radeon/r100d.h                  |   76 
 b/drivers/gpu/drm/radeon/r200.c                   |  456 
 b/drivers/gpu/drm/radeon/r300.c                   |  411 
 b/drivers/gpu/drm/radeon/r300d.h                  |   76 
 b/drivers/gpu/drm/radeon/r600.c                   | 1714 +
 b/drivers/gpu/drm/radeon/r600_blit.c              |  855 
 b/drivers/gpu/drm/radeon/r600_blit_kms.c          |  777 
 b/drivers/gpu/drm/radeon/r600_blit_shaders.c      | 1072 +
 b/drivers/gpu/drm/radeon/r600_blit_shaders.h      |   14 
 b/drivers/gpu/drm/radeon/r600_cp.c                |  541 
 b/drivers/gpu/drm/radeon/r600_cs.c                |  658 
 b/drivers/gpu/drm/radeon/r600d.h                  |  661 
 b/drivers/gpu/drm/radeon/radeon.h                 |  126 
 b/drivers/gpu/drm/radeon/radeon_asic.h            |  159 
 b/drivers/gpu/drm/radeon/radeon_atombios.c        |   79 
 b/drivers/gpu/drm/radeon/radeon_clocks.c          |   10 
 b/drivers/gpu/drm/radeon/radeon_connectors.c      |  215 
 b/drivers/gpu/drm/radeon/radeon_cp.c              |  128 
 b/drivers/gpu/drm/radeon/radeon_device.c          |  340 
 b/drivers/gpu/drm/radeon/radeon_display.c         |   18 
 b/drivers/gpu/drm/radeon/radeon_drv.c             |   21 
 b/drivers/gpu/drm/radeon/radeon_drv.h             |  146 
 b/drivers/gpu/drm/radeon/radeon_encoders.c        |  125 
 b/drivers/gpu/drm/radeon/radeon_fb.c              |  670 
 b/drivers/gpu/drm/radeon/radeon_fence.c           |   49 
 b/drivers/gpu/drm/radeon/radeon_irq_kms.c         |    1 
 b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c     |   44 
 b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c |  339 
 b/drivers/gpu/drm/radeon/radeon_legacy_tv.c       |  904 
 b/drivers/gpu/drm/radeon/radeon_mode.h            |   52 
 b/drivers/gpu/drm/radeon/radeon_object.h          |    1 
 b/drivers/gpu/drm/radeon/radeon_reg.h             |   79 
 b/drivers/gpu/drm/radeon/radeon_ring.c            |  119 
 b/drivers/gpu/drm/radeon/radeon_share.h           |   77 
 b/drivers/gpu/drm/radeon/radeon_state.c           |   18 
 b/drivers/gpu/drm/radeon/radeon_ttm.c             |   96 
 b/drivers/gpu/drm/radeon/reg_srcs/r100            |  105 
 b/drivers/gpu/drm/radeon/reg_srcs/r200            |  184 
 b/drivers/gpu/drm/radeon/reg_srcs/r300            |  729 
 b/drivers/gpu/drm/radeon/reg_srcs/rn50            |   30 
 b/drivers/gpu/drm/radeon/reg_srcs/rs600           |  729 
 b/drivers/gpu/drm/radeon/reg_srcs/rv515           |  486 
 b/drivers/gpu/drm/radeon/rs400.c                  |    2 
 b/drivers/gpu/drm/radeon/rs600.c                  |   60 
 b/drivers/gpu/drm/radeon/rs690.c                  |    1 
 b/drivers/gpu/drm/radeon/rv515.c                  |  518 
 b/drivers/gpu/drm/radeon/rv515d.h                 |  220 
 b/drivers/gpu/drm/radeon/rv770.c                  |  987 
 b/drivers/gpu/drm/radeon/rv770d.h                 |  341 
 b/drivers/gpu/drm/ttm/ttm_bo.c                    |  295 
 b/drivers/gpu/drm/ttm/ttm_bo_util.c               |    4 
 b/drivers/gpu/drm/ttm/ttm_global.c                |    4 
 b/drivers/gpu/drm/ttm/ttm_memory.c                |  508 
 b/drivers/gpu/drm/ttm/ttm_module.c                |   58 
 b/drivers/gpu/drm/ttm/ttm_tt.c                    |  104 
 b/firmware/Makefile                               |   16 
 b/firmware/WHENCE                                 |  121 
 b/firmware/matrox/g200_warp.H16                   |   28 
 b/firmware/matrox/g400_warp.H16                   |   44 
 b/firmware/r128/r128_cce.bin.ihex                 |  129 
 b/firmware/radeon/R100_cp.bin.ihex                |  130 
 b/firmware/radeon/R200_cp.bin.ihex                |  130 
 b/firmware/radeon/R300_cp.bin.ihex                |  130 
 b/firmware/radeon/R420_cp.bin.ihex                |  130 
 b/firmware/radeon/R520_cp.bin.ihex                |  130 
 b/firmware/radeon/R600_me.bin.ihex                | 1345 +
 b/firmware/radeon/R600_pfp.bin.ihex               |  145 
 b/firmware/radeon/RS600_cp.bin.ihex               |  130 
 b/firmware/radeon/RS690_cp.bin.ihex               |  130 
 b/firmware/radeon/RS780_me.bin.ihex               | 1345 +
 b/firmware/radeon/RS780_pfp.bin.ihex              |  145 
 b/firmware/radeon/RV610_me.bin.ihex               | 1345 +
 b/firmware/radeon/RV610_pfp.bin.ihex              |  145 
 b/firmware/radeon/RV620_me.bin.ihex               | 1345 +
 b/firmware/radeon/RV620_pfp.bin.ihex              |  145 
 b/firmware/radeon/RV630_me.bin.ihex               | 1345 +
 b/firmware/radeon/RV630_pfp.bin.ihex              |  145 
 b/firmware/radeon/RV635_me.bin.ihex               | 1345 +
 b/firmware/radeon/RV635_pfp.bin.ihex              |  145 
 b/firmware/radeon/RV670_me.bin.ihex               | 1345 +
 b/firmware/radeon/RV670_pfp.bin.ihex              |  145 
 b/firmware/radeon/RV710_me.bin.ihex               |  341 
 b/firmware/radeon/RV710_pfp.bin.ihex              |  213 
 b/firmware/radeon/RV730_me.bin.ihex               |  341 
 b/firmware/radeon/RV730_pfp.bin.ihex              |  213 
 b/firmware/radeon/RV770_me.bin.ihex               |  341 
 b/firmware/radeon/RV770_pfp.bin.ihex              |  213 
 b/include/drm/drmP.h                              |   54 
 b/include/drm/drm_cache.h                         |   38 
 b/include/drm/drm_crtc.h                          |   16 
 b/include/drm/drm_crtc_helper.h                   |    3 
 b/include/drm/drm_encoder_slave.h                 |  162 
 b/include/drm/drm_fb_helper.h                     |   82 
 b/include/drm/drm_mm.h                            |    7 
 b/include/drm/drm_mode.h                          |   11 
 b/include/drm/drm_sysfs.h                         |   12 
 b/include/drm/ttm/ttm_bo_api.h                    |   13 
 b/include/drm/ttm/ttm_bo_driver.h                 |   94 
 b/include/drm/ttm/ttm_memory.h                    |   43 
 b/include/drm/ttm/ttm_module.h                    |    2 
 drivers/gpu/drm/i915/i915_gem_debugfs.c           |  396 
 drivers/gpu/drm/mga/mga_ucode.h                   |11645 ----------
 drivers/gpu/drm/radeon/r300.h                     |   36 
 drivers/gpu/drm/radeon/r600_microcode.h           |23297 ----------------------
 drivers/gpu/drm/radeon/radeon_microcode.h         | 1844 -
 drivers/gpu/drm/radeon/rs780.c                    |  102 
 drivers/gpu/drm/radeon/rv515r.h                   |  170 
 154 files changed, 33674 insertions(+), 41500 deletions(-)

View full diff with command:
/usr/bin/cvs -n -f diff -kk -u -p -N -r 1.6.6.11 -r 1.6.6.12 drm-next.patchIndex: drm-next.patch
===================================================================
RCS file: drm-next.patch
diff -N drm-next.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ drm-next.patch	31 Jan 2010 17:57:36 -0000	1.6.6.12
@@ -0,0 +1,81284 @@
+diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
+index 39b393d..e4d971c 100644
+--- a/drivers/gpu/drm/Kconfig
++++ b/drivers/gpu/drm/Kconfig
+@@ -18,6 +18,14 @@ menuconfig DRM
+ 	  details.  You should also select and configure AGP
+ 	  (/dev/agpgart) support.
+ 
++config DRM_KMS_HELPER
++	tristate
++	depends on DRM
++	select FB
++	select FRAMEBUFFER_CONSOLE if !EMBEDDED
++	help
++	  FB and CRTC helpers for KMS drivers.
++
+ config DRM_TTM
+ 	tristate
+ 	depends on DRM
+@@ -36,6 +44,7 @@ config DRM_TDFX
+ config DRM_R128
+ 	tristate "ATI Rage 128"
+ 	depends on DRM && PCI
++	select FW_LOADER
+ 	help
+ 	  Choose this option if you have an ATI Rage 128 graphics card.  If M
+ 	  is selected, the module will be called r128.  AGP support for
+@@ -47,8 +56,9 @@ config DRM_RADEON
+ 	select FB_CFB_FILLRECT
+ 	select FB_CFB_COPYAREA
+ 	select FB_CFB_IMAGEBLIT
+-	select FB
+-	select FRAMEBUFFER_CONSOLE if !EMBEDDED
++	select FW_LOADER
++        select DRM_KMS_HELPER
++        select DRM_TTM
+ 	help
+ 	  Choose this option if you have an ATI Radeon graphics card.  There
+ 	  are both PCI and AGP versions.  You don't need to choose this to
+@@ -82,11 +92,10 @@ config DRM_I830
+ config DRM_I915
+ 	tristate "i915 driver"
+ 	depends on AGP_INTEL
++	select DRM_KMS_HELPER
+ 	select FB_CFB_FILLRECT
+ 	select FB_CFB_COPYAREA
+ 	select FB_CFB_IMAGEBLIT
+-	select FB
+-	select FRAMEBUFFER_CONSOLE if !EMBEDDED
+ 	# i915 depends on ACPI_VIDEO when ACPI is enabled
+ 	# but for select to work, need to select ACPI_VIDEO's dependencies, ick
+ 	select VIDEO_OUTPUT_CONTROL if ACPI
+@@ -116,6 +125,7 @@ endchoice
+ config DRM_MGA
+ 	tristate "Matrox g200/g400"
+ 	depends on DRM
++	select FW_LOADER
+ 	help
+ 	  Choose this option if you have a Matrox G200, G400 or G450 graphics
+ 	  card.  If M is selected, the module will be called mga.  AGP
+diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
+index fe23f29..3c8827a 100644
+--- a/drivers/gpu/drm/Makefile
++++ b/drivers/gpu/drm/Makefile
+@@ -10,11 +10,15 @@ drm-y       :=	drm_auth.o drm_bufs.o drm_cache.o \
+ 		drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \
+ 		drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \
+ 		drm_sysfs.o drm_hashtab.o drm_sman.o drm_mm.o \
+-		drm_crtc.o drm_crtc_helper.o drm_modes.o drm_edid.o \
+-		drm_info.o drm_debugfs.o
++		drm_crtc.o drm_modes.o drm_edid.o \
++		drm_info.o drm_debugfs.o drm_encoder_slave.o
+ 
+ drm-$(CONFIG_COMPAT) += drm_ioc32.o
+ 
++drm_kms_helper-y := drm_fb_helper.o drm_crtc_helper.o
++
++obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o
++
+ obj-$(CONFIG_DRM)	+= drm.o
+ obj-$(CONFIG_DRM_TTM)	+= ttm/
+ obj-$(CONFIG_DRM_TDFX)	+= tdfx/
+diff --git a/drivers/gpu/drm/drm_cache.c b/drivers/gpu/drm/drm_cache.c
+index 0e994a0..0e3bd5b 100644
+--- a/drivers/gpu/drm/drm_cache.c
++++ b/drivers/gpu/drm/drm_cache.c
+@@ -45,6 +45,23 @@ drm_clflush_page(struct page *page)
+ 		clflush(page_virtual + i);
+ 	kunmap_atomic(page_virtual, KM_USER0);
+ }
++
++static void drm_cache_flush_clflush(struct page *pages[],
++				    unsigned long num_pages)
++{
++	unsigned long i;
++
++	mb();
++	for (i = 0; i < num_pages; i++)
++		drm_clflush_page(*pages++);
++	mb();
++}
++
++static void
++drm_clflush_ipi_handler(void *null)
++{
++	wbinvd();
++}
+ #endif
+ 
+ void
+@@ -53,17 +70,30 @@ drm_clflush_pages(struct page *pages[], unsigned long num_pages)
+ 
+ #if defined(CONFIG_X86)
+ 	if (cpu_has_clflush) {
+-		unsigned long i;
+-
+-		mb();
+-		for (i = 0; i < num_pages; ++i)
+-			drm_clflush_page(*pages++);
+-		mb();
+-
++		drm_cache_flush_clflush(pages, num_pages);
+ 		return;
+ 	}
+ 
+-	wbinvd();
++	if (on_each_cpu(drm_clflush_ipi_handler, NULL, 1) != 0)
++		printk(KERN_ERR "Timed out waiting for cache flush.\n");
++
++#elif defined(__powerpc__)
++	unsigned long i;
++	for (i = 0; i < num_pages; i++) {
++		struct page *page = pages[i];
++		void *page_virtual;
++
++		if (unlikely(page == NULL))
++			continue;
++
++		page_virtual = kmap_atomic(page, KM_USER0);
++		flush_dcache_range((unsigned long)page_virtual,
++				   (unsigned long)page_virtual + PAGE_SIZE);
++		kunmap_atomic(page_virtual, KM_USER0);
++	}
++#else
++	printk(KERN_ERR "Architecture has no drm_cache.c support\n");
++	WARN_ON_ONCE(1);
+ #endif
+ }
+ EXPORT_SYMBOL(drm_clflush_pages);
+diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
+index 2f631c7..ba728ad 100644
+--- a/drivers/gpu/drm/drm_crtc.c
++++ b/drivers/gpu/drm/drm_crtc.c
+@@ -68,10 +68,10 @@ DRM_ENUM_NAME_FN(drm_get_dpms_name, drm_dpms_enum_list)
+  */
+ static struct drm_prop_enum_list drm_scaling_mode_enum_list[] =
+ {
+-	{ DRM_MODE_SCALE_NON_GPU, "Non-GPU" },
+-	{ DRM_MODE_SCALE_FULLSCREEN, "Fullscreen" },
+-	{ DRM_MODE_SCALE_NO_SCALE, "No scale" },
+-	{ DRM_MODE_SCALE_ASPECT, "Aspect" },
++	{ DRM_MODE_SCALE_NONE, "None" },
++	{ DRM_MODE_SCALE_FULLSCREEN, "Full" },
++	{ DRM_MODE_SCALE_CENTER, "Center" },
++	{ DRM_MODE_SCALE_ASPECT, "Full aspect" },
+ };
+ 
+ static struct drm_prop_enum_list drm_dithering_mode_enum_list[] =
+@@ -108,6 +108,7 @@ static struct drm_prop_enum_list drm_tv_select_enum_list[] =
+ 	{ DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */
+ 	{ DRM_MODE_SUBCONNECTOR_SVIDEO,    "SVIDEO"    }, /* TV-out */
+ 	{ DRM_MODE_SUBCONNECTOR_Component, "Component" }, /* TV-out */
++	{ DRM_MODE_SUBCONNECTOR_SCART,     "SCART"     }, /* TV-out */
+ };
+ 
+ DRM_ENUM_NAME_FN(drm_get_tv_select_name, drm_tv_select_enum_list)
+@@ -118,6 +119,7 @@ static struct drm_prop_enum_list drm_tv_subconnector_enum_list[] =
+ 	{ DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */
+ 	{ DRM_MODE_SUBCONNECTOR_SVIDEO,    "SVIDEO"    }, /* TV-out */
+ 	{ DRM_MODE_SUBCONNECTOR_Component, "Component" }, /* TV-out */
++	{ DRM_MODE_SUBCONNECTOR_SCART,     "SCART"     }, /* TV-out */
+ };
+ 
+ DRM_ENUM_NAME_FN(drm_get_tv_subconnector_name,
+@@ -146,6 +148,7 @@ static struct drm_conn_prop_enum_list drm_connector_enum_list[] =
+ 	{ DRM_MODE_CONNECTOR_DisplayPort, "DisplayPort", 0 },
+ 	{ DRM_MODE_CONNECTOR_HDMIA, "HDMI Type A", 0 },
+ 	{ DRM_MODE_CONNECTOR_HDMIB, "HDMI Type B", 0 },
++	{ DRM_MODE_CONNECTOR_TV, "TV", 0 },
+ };
+ 
+ static struct drm_prop_enum_list drm_encoder_enum_list[] =
+@@ -165,6 +168,7 @@ char *drm_get_encoder_name(struct drm_encoder *encoder)
[...80891 lines suppressed...]
++ */
++
++struct ttm_bo_global {
++
++	/**
++	 * Constant after init.
++	 */
++
++	struct kobject kobj;
++	struct ttm_mem_global *mem_glob;
++	struct page *dummy_read_page;
++	struct ttm_mem_shrink shrink;
++	size_t ttm_bo_extra_size;
++	size_t ttm_bo_size;
++	struct mutex device_list_mutex;
++	spinlock_t lru_lock;
++
++	/**
++	 * Protected by device_list_mutex.
++	 */
++	struct list_head device_list;
++
++	/**
++	 * Protected by the lru_lock.
++	 */
++	struct list_head swap_lru;
++
++	/**
++	 * Internal protection.
++	 */
++	atomic_t bo_count;
++};
++
++
++#define TTM_NUM_MEM_TYPES 8
++
++#define TTM_BO_PRIV_FLAG_MOVING  0	/* Buffer object is moving and needs
++					   idling before CPU mapping */
++#define TTM_BO_PRIV_FLAG_MAX 1
++/**
++ * struct ttm_bo_device - Buffer object driver device-specific data.
++ *
++ * @driver: Pointer to a struct ttm_bo_driver struct setup by the driver.
+  * @man: An array of mem_type_managers.
+  * @addr_space_mm: Range manager for the device address space.
+  * lru_lock: Spinlock that protects the buffer+device lru lists and
+@@ -399,32 +449,21 @@ struct ttm_bo_device {
+ 	/*
+ 	 * Constant after bo device init / atomic.
+ 	 */
+-
+-	struct ttm_mem_global *mem_glob;
++	struct list_head device_list;
++	struct ttm_bo_global *glob;
+ 	struct ttm_bo_driver *driver;
+-	struct page *dummy_read_page;
+-	struct ttm_mem_shrink shrink;
+-
+-	size_t ttm_bo_extra_size;
+-	size_t ttm_bo_size;
+-
+ 	rwlock_t vm_lock;
++	struct ttm_mem_type_manager man[TTM_NUM_MEM_TYPES];
+ 	/*
+ 	 * Protected by the vm lock.
+ 	 */
+-	struct ttm_mem_type_manager man[TTM_NUM_MEM_TYPES];
+ 	struct rb_root addr_space_rb;
+ 	struct drm_mm addr_space_mm;
+ 
+ 	/*
+-	 * Might want to change this to one lock per manager.
+-	 */
+-	spinlock_t lru_lock;
+-	/*
+-	 * Protected by the lru lock.
++	 * Protected by the global:lru lock.
+ 	 */
+ 	struct list_head ddestroy;
+-	struct list_head swap_lru;
+ 
+ 	/*
+ 	 * Protected by load / firstopen / lastclose /unload sync.
+@@ -640,6 +679,9 @@ extern int ttm_bo_pci_offset(struct ttm_bo_device *bdev,
+ 			     unsigned long *bus_offset,
+ 			     unsigned long *bus_size);
+ 
++extern void ttm_bo_global_release(struct ttm_global_reference *ref);
++extern int ttm_bo_global_init(struct ttm_global_reference *ref);
++
+ extern int ttm_bo_device_release(struct ttm_bo_device *bdev);
+ 
+ /**
+@@ -657,7 +699,7 @@ extern int ttm_bo_device_release(struct ttm_bo_device *bdev);
+  * !0: Failure.
+  */
+ extern int ttm_bo_device_init(struct ttm_bo_device *bdev,
+-			      struct ttm_mem_global *mem_glob,
++			      struct ttm_bo_global *glob,
+ 			      struct ttm_bo_driver *driver,
+ 			      uint64_t file_page_offset, bool need_dma32);
+ 
+diff --git a/include/drm/ttm/ttm_memory.h b/include/drm/ttm/ttm_memory.h
+index d8b8f04..6983a7c 100644
+--- a/include/drm/ttm/ttm_memory.h
++++ b/include/drm/ttm/ttm_memory.h
+@@ -32,6 +32,7 @@
+ #include <linux/spinlock.h>
+ #include <linux/wait.h>
+ #include <linux/errno.h>
++#include <linux/kobject.h>
+ 
+ /**
+  * struct ttm_mem_shrink - callback to shrink TTM memory usage.
+@@ -60,34 +61,33 @@ struct ttm_mem_shrink {
+  * @queue: Wait queue for processes suspended waiting for memory.
+  * @lock: Lock to protect the @shrink - and the memory accounting members,
+  * that is, essentially the whole structure with some exceptions.
+- * @emer_memory: Lowmem memory limit available for root.
+- * @max_memory: Lowmem memory limit available for non-root.
+- * @swap_limit: Lowmem memory limit where the shrink workqueue kicks in.
+- * @used_memory: Currently used lowmem memory.
+- * @used_total_memory: Currently used total (lowmem + highmem) memory.
+- * @total_memory_swap_limit: Total memory limit where the shrink workqueue
+- * kicks in.
+- * @max_total_memory: Total memory available to non-root processes.
+- * @emer_total_memory: Total memory available to root processes.
++ * @zones: Array of pointers to accounting zones.
++ * @num_zones: Number of populated entries in the @zones array.
++ * @zone_kernel: Pointer to the kernel zone.
++ * @zone_highmem: Pointer to the highmem zone if there is one.
++ * @zone_dma32: Pointer to the dma32 zone if there is one.
+  *
+  * Note that this structure is not per device. It should be global for all
+  * graphics devices.
+  */
+ 
++#define TTM_MEM_MAX_ZONES 2
++struct ttm_mem_zone;
+ struct ttm_mem_global {
++	struct kobject kobj;
+ 	struct ttm_mem_shrink *shrink;
+ 	struct workqueue_struct *swap_queue;
+ 	struct work_struct work;
+ 	wait_queue_head_t queue;
+ 	spinlock_t lock;
+-	uint64_t emer_memory;
+-	uint64_t max_memory;
+-	uint64_t swap_limit;
+-	uint64_t used_memory;
+-	uint64_t used_total_memory;
+-	uint64_t total_memory_swap_limit;
+-	uint64_t max_total_memory;
+-	uint64_t emer_total_memory;
++	struct ttm_mem_zone *zones[TTM_MEM_MAX_ZONES];
++	unsigned int num_zones;
++	struct ttm_mem_zone *zone_kernel;
++#ifdef CONFIG_HIGHMEM
++	struct ttm_mem_zone *zone_highmem;
++#else
++	struct ttm_mem_zone *zone_dma32;
++#endif
+ };
+ 
+ /**
+@@ -146,8 +146,13 @@ static inline void ttm_mem_unregister_shrink(struct ttm_mem_global *glob,
+ extern int ttm_mem_global_init(struct ttm_mem_global *glob);
+ extern void ttm_mem_global_release(struct ttm_mem_global *glob);
+ extern int ttm_mem_global_alloc(struct ttm_mem_global *glob, uint64_t memory,
+-				bool no_wait, bool interruptible, bool himem);
++				bool no_wait, bool interruptible);
+ extern void ttm_mem_global_free(struct ttm_mem_global *glob,
+-				uint64_t amount, bool himem);
++				uint64_t amount);
++extern int ttm_mem_global_alloc_page(struct ttm_mem_global *glob,
++				     struct page *page,
++				     bool no_wait, bool interruptible);
++extern void ttm_mem_global_free_page(struct ttm_mem_global *glob,
++				     struct page *page);
+ extern size_t ttm_round_pot(size_t size);
+ #endif
+diff --git a/include/drm/ttm/ttm_module.h b/include/drm/ttm/ttm_module.h
+index d1d4338..cf416ae 100644
+--- a/include/drm/ttm/ttm_module.h
++++ b/include/drm/ttm/ttm_module.h
+@@ -32,6 +32,7 @@
+ #define _TTM_MODULE_H_
+ 
+ #include <linux/kernel.h>
++struct kobject;
+ 
+ #define TTM_PFX "[TTM] "
+ 
+@@ -54,5 +55,6 @@ extern void ttm_global_init(void);
+ extern void ttm_global_release(void);
+ extern int ttm_global_item_ref(struct ttm_global_reference *ref);
+ extern void ttm_global_item_unref(struct ttm_global_reference *ref);
++extern struct kobject *ttm_get_kobj(void);
+ 
+ #endif /* _TTM_MODULE_H_ */

drm-nouveau-g80-ctxprog.patch:
 Makefile                  |   12 
 nouveau/nv50.ctxprog.ihex |  100 ++
 nouveau/nv50.ctxvals.ihex | 1335 +++++++++++++++++++++++++++++++++
 nouveau/nv84.ctxprog.ihex |   91 ++
 nouveau/nv84.ctxvals.ihex |  557 +++++++++++++
 nouveau/nv86.ctxprog.ihex |   58 +
 nouveau/nv86.ctxvals.ihex |  340 ++++++++
 nouveau/nv92.ctxprog.ihex |  103 ++
 nouveau/nv92.ctxvals.ihex | 1232 ++++++++++++++++++++++++++++++
 nouveau/nv94.ctxprog.ihex |   79 +
 nouveau/nv94.ctxvals.ihex |  761 +++++++++++++++++++
 nouveau/nv96.ctxprog.ihex |   79 +
 nouveau/nv96.ctxvals.ihex |  761 +++++++++++++++++++
 nouveau/nv98.ctxprog.ihex |   57 +
 nouveau/nv98.ctxvals.ihex |  326 ++++++++
 nouveau/nva0.ctxprog.ihex |   89 ++
 nouveau/nva0.ctxvals.ihex | 1836 ++++++++++++++++++++++++++++++++++++++++++++++
 nouveau/nva5.ctxprog.ihex |   77 +
 nouveau/nva5.ctxvals.ihex |  772 +++++++++++++++++++
 nouveau/nva8.ctxprog.ihex |   75 +
 nouveau/nva8.ctxvals.ihex |  475 +++++++++++
 nouveau/nvaa.ctxprog.ihex |   79 +
 nouveau/nvaa.ctxvals.ihex |  356 ++++++++
 nouveau/nvac.ctxprog.ihex |   79 +
 nouveau/nvac.ctxvals.ihex |  363 +++++++++
 25 files changed, 10091 insertions(+), 1 deletion(-)

--- NEW FILE drm-nouveau-g80-ctxprog.patch ---
>From c771c11d2febd217b9ee11156211296c7aad77cc Mon Sep 17 00:00:00 2001
From: Ben Skeggs <bskeggs at redhat.com>
Date: Fri, 11 Dec 2009 14:04:08 +1000
Subject: [PATCH 1/6] drm/nouveau: add ctxprog/ctxvals firmware for >=G80 chipsets

---
 firmware/Makefile                  |   12 +
 firmware/nouveau/nv50.ctxprog.ihex |  100 ++
 firmware/nouveau/nv50.ctxvals.ihex | 1335 ++++++++++++++++++++++++++
 firmware/nouveau/nv84.ctxprog.ihex |   91 ++
 firmware/nouveau/nv84.ctxvals.ihex |  557 +++++++++++
 firmware/nouveau/nv86.ctxprog.ihex |   58 ++
 firmware/nouveau/nv86.ctxvals.ihex |  340 +++++++
 firmware/nouveau/nv92.ctxprog.ihex |  103 ++
 firmware/nouveau/nv92.ctxvals.ihex | 1232 ++++++++++++++++++++++++
 firmware/nouveau/nv94.ctxprog.ihex |   79 ++
 firmware/nouveau/nv94.ctxvals.ihex |  761 +++++++++++++++
 firmware/nouveau/nv96.ctxprog.ihex |   79 ++
 firmware/nouveau/nv96.ctxvals.ihex |  761 +++++++++++++++
 firmware/nouveau/nv98.ctxprog.ihex |   57 ++
 firmware/nouveau/nv98.ctxvals.ihex |  326 +++++++
 firmware/nouveau/nva0.ctxprog.ihex |   89 ++
 firmware/nouveau/nva0.ctxvals.ihex | 1836 ++++++++++++++++++++++++++++++++++++
 firmware/nouveau/nva5.ctxprog.ihex |   77 ++
 firmware/nouveau/nva5.ctxvals.ihex |  772 +++++++++++++++
 firmware/nouveau/nva8.ctxprog.ihex |   75 ++
 firmware/nouveau/nva8.ctxvals.ihex |  475 ++++++++++
 firmware/nouveau/nvaa.ctxprog.ihex |   79 ++
 firmware/nouveau/nvaa.ctxvals.ihex |  356 +++++++
 firmware/nouveau/nvac.ctxprog.ihex |   79 ++
 firmware/nouveau/nvac.ctxvals.ihex |  362 +++++++
 25 files changed, 10091 insertions(+), 0 deletions(-)
 create mode 100644 firmware/nouveau/nv50.ctxprog.ihex
 create mode 100644 firmware/nouveau/nv50.ctxvals.ihex
 create mode 100644 firmware/nouveau/nv84.ctxprog.ihex
 create mode 100644 firmware/nouveau/nv84.ctxvals.ihex
 create mode 100644 firmware/nouveau/nv86.ctxprog.ihex
 create mode 100644 firmware/nouveau/nv86.ctxvals.ihex
 create mode 100644 firmware/nouveau/nv92.ctxprog.ihex
 create mode 100644 firmware/nouveau/nv92.ctxvals.ihex
 create mode 100644 firmware/nouveau/nv94.ctxprog.ihex
 create mode 100644 firmware/nouveau/nv94.ctxvals.ihex
 create mode 100644 firmware/nouveau/nv96.ctxprog.ihex
 create mode 100644 firmware/nouveau/nv96.ctxvals.ihex
 create mode 100644 firmware/nouveau/nv98.ctxprog.ihex
 create mode 100644 firmware/nouveau/nv98.ctxvals.ihex
 create mode 100644 firmware/nouveau/nva0.ctxprog.ihex
 create mode 100644 firmware/nouveau/nva0.ctxvals.ihex
 create mode 100644 firmware/nouveau/nva5.ctxprog.ihex
 create mode 100644 firmware/nouveau/nva5.ctxvals.ihex
 create mode 100644 firmware/nouveau/nva8.ctxprog.ihex
 create mode 100644 firmware/nouveau/nva8.ctxvals.ihex
 create mode 100644 firmware/nouveau/nvaa.ctxprog.ihex
 create mode 100644 firmware/nouveau/nvaa.ctxvals.ihex
 create mode 100644 firmware/nouveau/nvac.ctxprog.ihex
 create mode 100644 firmware/nouveau/nvac.ctxvals.ihex

diff --git a/firmware/Makefile b/firmware/Makefile
index f4ca0c7..7766c96 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -62,6 +62,18 @@ fw-shipped-$(CONFIG_DRM_RADEON) += radeon/R100_cp.bin radeon/R200_cp.bin \
 				   radeon/RV770_pfp.bin radeon/RV770_me.bin \
 				   radeon/RV730_pfp.bin radeon/RV730_me.bin \
 				   radeon/RV710_pfp.bin radeon/RV710_me.bin
+fw-shipped-$(CONFIG_DRM_NOUVEAU) += nouveau/nv50.ctxprog nouveau/nv50.ctxvals \
+				    nouveau/nv84.ctxprog nouveau/nv84.ctxvals \
+				    nouveau/nv86.ctxprog nouveau/nv86.ctxvals \
+				    nouveau/nv92.ctxprog nouveau/nv92.ctxvals \
+				    nouveau/nv94.ctxprog nouveau/nv94.ctxvals \
+				    nouveau/nv96.ctxprog nouveau/nv96.ctxvals \
+				    nouveau/nv98.ctxprog nouveau/nv98.ctxvals \
+				    nouveau/nva0.ctxprog nouveau/nva0.ctxvals \
+				    nouveau/nva5.ctxprog nouveau/nva5.ctxvals \
+				    nouveau/nva8.ctxprog nouveau/nva8.ctxvals \
+				    nouveau/nvaa.ctxprog nouveau/nvaa.ctxvals \
+				    nouveau/nvac.ctxprog nouveau/nvac.ctxvals
 fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
 fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
 fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
diff --git a/firmware/nouveau/nv50.ctxprog.ihex b/firmware/nouveau/nv50.ctxprog.ihex
new file mode 100644
index 0000000..684781a
--- /dev/null
+++ b/firmware/nouveau/nv50.ctxprog.ihex
@@ -0,0 +1,100 @@
+:100000004E564350008A018E0070009C0070002004
+:10001000002000080060004C005000890E400000E5
+:100020000020000700600000003000FF00C000005A
+:10003000002000FF008000090070004D874100444F
+:100040001E4000051E40000D1E40000663410005D5
+:10005000006000C5154000110060000B1C4000FF4F
+:10006000FF9000FFFF910020002000080060004C7E
+:1000700000500009006000456341004D7E41009D35
+:10008000007000CF2240009F0070009F005000C011
+:100090001F400080002000080060004F1F4000C08B
+:1000A0001F4000CC254000810070000000200006A9
+:1000B00000600000007000FC1B1100830070000055
+:1000C0000030000059210007006000010BC0001C37
+:1000D00000200001008000CB005000FF00C0008025
+:1000E0000070008300700047002000060060000AD6
+:1000F000021100C00520000700600000003000FF72
+:1001000000C000FF00C800076E410027262000FF46
+:100110000080008C454000CB0050003F02A0004012
+:10012000002000060060000F007000020217000AA5
+:10013000021100320020000D02100042021B0002DA
+:1001400003120002041400000518000905130050F2
+:100150000515000506110007061E00000711000026
+:1001600009110002091100000A1100020B160028F3
+:100170000B11002B0B1400010C11000014110005D1
+:1001800014110007141100091411000B141100EAD6
+:10019000002000001510000F6D40004B6D40000066
+:1001A0003721000700600040042000FF0088008F16
+:1001B0000070008C6D4000CB00500000000000F883
+:1001C0001811002B002000051A1000001C13000459
+:1001D0001C1100201C1400251C1100401C1300449D
+:1001E0001C1100601C1400651C1100801C1300848D
+:1001F0001C1100A01C1400A51C1100C01C1300C47D
+:100200001C1100E01C1400E51C1100001D1300046B
+:100210001D1100201D1400251D1100401D13004458
+:100220001D1100601D1400651D1100001F1300400A
+:100230001F1900E0A74000170220000600600044DC
+:1002400000200080201000C6201100C9201500D019
+:100250002019000021120003211200002216000FB5
+:100260009F40004B9F400000372100070060004086
+:10027000042000FF0088008F0070008C9F4000CB9E
+:100280000050000000000007221200802211000030
+:1002900023110002231100802312008B23110094EC
+:1002A000231900E1B94000850220000600600044E7
+:1002B00000200080241000C6241100C9241500D09D
+:1002C000241900002512000325120000261600073D
+:1002D000261200802611000027110002271100803D
+:1002E0002712008B27110094271900E2D54000F354
+:1002F000022000060060004400200080281000C694
+:10030000281100C92815000FC940004BC940000042
+:100310003721000700600040042000FF0088008FA4
+:100320000070008CC94000CB00500000000000D0DD
+:100330002819000029120003291200002A160007BC
+:100340002A1200802A1100002B1100022B110080BC
+:100350002B12008B2B1100942B1900E3E740006156
+:100360000320000600600044002000802C1000C61E
+:100370002C1100C92C1500D02C1900002D120003DF
+:100380002D1200002E1600072E1200802E110000E4
+:100390002F1100022F1100802F12008B2F110094BB
+:1003A0002F1900E4034100CF032000060060004441
+:1003B000002000803010000FF540004BF540000099
+:1003C0003721000700600040042000FF0088008FF4
+:1003D0000070008CF54000CB00500000000000C60B
+:1003E000301100C9301500D030190000311200035F
+:1003F0003112000032160007321200803211000064
+:1004000033110002331100803312008B331100943A
+:10041000331900E51541003D04200006006000444A
+:1004200000200080341000C6341100C9341500D0FB
+:10043000341900003512000335120000361600078B
+:10044000361200803611000037110002371100808B
+:100450003712008B37110094371900E6314100AB99
+:100460000420000600600044002000803810000FC7
+:100470002341004B2341000037210007006000406A
+:10048000042000FF0088008F0070008C234100CB07
+:1004900000500000000000C6381100C9381500D017
+:1004A0003819000039120003391200003A1600070B
+:1004B0003A1200803A1100003B1100023B1100800B
+:1004C0003B12008B3B1100943B1900E7434100199C
+:1004D0000520000600600044002000803C1000C69B
+:1004E0003C1100C93C1500D03C1900003D1200032E
+:1004F0003D1200003E1600073E1200803E11000033
+:100500003F1100023F1100803F12008B3F11009409
+:100510003F1900000000000F4A4100CB00500000CE
+:100520003721000700600040042000FF008800CB56
+:10053000005000874D41000A0060000000000000EC
+:100540005C4100A000700080007000C00520000722
+:1005500000600004002000FF00C000FF008000CB0E
+:10056000005000000070000000200006006000FE47
+:100570001B11004D7E4100000070000000200006AD
+:10058000006000FE1B1100800070001D0070004D17
+:1005900011400081007000040060004A0050008893
+:1005A0006841000B006000000020000600600000B1
+:1005B0000070000B7E4100FD1B11004D37400027ED
+:1005C000262000FD008000CB0050000200C000C0CB
+:1005D000052000070060005F01200002008000CBC2
+:1005E0000050000218C000C824200002008000CB88
+:1005F0000050004D4340000B0060004D7C41000165
+:100600000070000300700006824100058341000D68
+:10061000006000050070000D007000060070000B07
+:0F0620000070000E0070001C0070000C006000E5
+:00000001FF
diff --git a/firmware/nouveau/nv50.ctxvals.ihex b/firmware/nouveau/nv50.ctxvals.ihex
new file mode 100644
index 0000000..9c82e73
--- /dev/null
+++ b/firmware/nouveau/nv50.ctxvals.ihex
@@ -0,0 +1,1335 @@
+:100000004E56435600690A000043000000300000CD
+:100010000048000000400040FF490000008000F060
+:10002000FF4A0000009000F7FF4B000000A806E820
+:10003000FF4C0000000200000075000000030000FB
+:10004000007600000000100000850000000CFE009B
+:10005000008A000000001000009500000087FD01EC
+:10006000009A000000181000009B000000FF000034
[...9907 lines suppressed...]
+:100A500000750700003F000000960700000400003A
+:100A600000A607000001000000A7070000880000A2
+:100A700000AD07000001000000AE070000150000F7
+:100A800000AF07000088000000BD07000001000063
+:100A900000C707000004000000CD070000010000AF
+:100AA00000CE07000080444404E507000001100068
+:100AB0000045080000110000007F0800002600002B
+:100AC00000850800000F000000970800000000806B
+:100AD0003FB70800001A000000BF08000010000027
+:100AE00000C508000011000000FD08000001000022
+:100AF0000005090000010000000D090000010000D0
+:100B00000015090000020000001D0900000100009E
+:100B10000025090000020000002D0900000100006E
+:100B2000003D09000067FE1F004D0900008168AC10
+:100B30000FA609000001000000B609000001000036
+:100B400000D60900008824712AE609000000C0854B
+:100B500040EE09000040000000F60900000001001E
+:100B600000FE09000000010100060A0000000080EC
+:100B700002070A000052000000170A0000260000C9
+:100B800000270A0000040000002D0A0000010000F8
+:100B9000002F0A000004000000350A0000020000D7
+:100BA000003D0A0000010000003F0A00001A00009A
+:100BB00000450A0000010000004D0A00000200008C
+:100BC00000550A000001000000570A000000FFFF66
+:100BD000005D0A000001000000850A00001100000D
+:100BE000008D0A000001000000D60A00000F00007E
+:100BF00000360B0000040000003E0B0000FFFF0069
+:100C000000460B0000FFFF00004E0B0000FFFF003E
+:100C100000560B0000FFFF00009E0B0000010000CB
+:100C200000BE0B000001000000EE0B000001000000
+:100C300000060C0000010000005E0C000001000036
+:100C400000660C0000010000006E0C0000020000B5
+:100C500000760C0000010000007E0C000001000086
+:100C600000860C0000020000008E0C000001000055
+:100C7000009E0C000011000000DE0C00008168AC3A
+:100C80000FF60C000004000000160D00001100001B
+:100C9000001E0D0000010000002E0D0000CF00001E
+:100CA00000360D0000CF0000003E0D0000CF000018
+:100CB000008B0D00000F000000960D0000010000E9
+:100CC000009B0D0000010000009E0D0000010000CF
+:100CD00000A60D000002000000AE0D0000010000A3
+:100CE00000B60D000001000000BE0D000002000073
+:100CF00000C60D000001000000D60D00000100003C
+:100D000000DE0D000001000000E60D000001000003
+:100D100000EE0D000001000000F60D0000010000D3
+:100D200000FE0D000001000000060E0000010000A2
+:100D3000000E0E000001000000160E000011000061
+:100D400000560E00008168AC0F5E0E00000F000020
+:100D5000009E0E000067FE1F00B60E00001100008E
+:100D600000BE0E000001000000DE0E0000040000C6
+:100D7000000E0F000001000000360F0000110000FF
+:100D800000760F00008168AC0F960F000011000084
+:100D9000009E0F000001000000AE0F0000010000E7
+:100DA00000BE0F000001000000CE0F0000FF070092
+:100DB00000DE0F000001000000EE0F000001000047
+:100DC00000731000000F0000004611000008000032
+:100DD000004E11000008000000561100000800003D
+:100DE000005E11000008000000661100000800000D
+:100DF000006E1100000800000076110000080000DD
+:100E0000007E1100000800000086110000110000A3
+:100E100000C61100008168AC0FCE11000000040074
+:100E200000D611000000040000DE110000000400E4
+:100E300000E611000000040000EE110000000400B4
+:100E400000F611000000040000FE11000000040084
+:100E50000006120000000400000E12000000030053
+:100E60000016120000000300001E12000000030024
+:100E70000026120000000300002E120000000300F4
+:100E80000036120000000300003E120000000300C4
+:100E90000046120000000300004E12000001000096
+:100EA00000561200000F0000009612000020000003
+:100EB000009E12000011000000A6120000000100B8
+:100EC00000B612000001000000CE12000040000039
+:100ED00000D612000000010000E61200000300002E
+:100EE000000E13000067FE1F002E1300000200001A
+:100EF00000361300008168AC0F861300000100006B
+:100F000000AE13000004000000BE1300000100004A
+:100F100000C613000000040000CE13000000030010
+:100F200000D613000001100000F6130000110000AD
+:100F300000361400008168AC0F3E1400000F000062
+:100F400000FE1400008168AC0F0615000067FE1F4C
+:100F50000026150000110000003E150000040000EE
+:100F6000004E1500000100000056150000010000B1
+:100F70000076150000010000009E1500008168AC9D
+:100F80000FC615000004000000D615000001000087
+:100F900000DE15000001000000F615000001000051
+:100FA000004E16000001000000561600000100006F
+:100FB000005E16000001000000661600000100003F
+:100FC000006E16000001000000761600000100000F
+:100FD000007E1600000100000086160000010000DF
+:100FE000008E16000011000000CE1600008168ACD3
+:100FF0000FD61600000F00000016170000110000A9
+:10100000001E170000010000007E170000DFBFE394
+:101010000486170000DFBFE3048E17000001000004
+:10102000009E17000000FFFF00A61700000100004F
+:1010300000BE17000000FFFF0006180000010000BE
+:101040000016180000010000001E1800000010200B
+:101050003026180000405060702E1800008898A8B4
+:10106000B836180000C8D8E8F8461800001A000082
+:10107000005618000004000000FE180000040000E4
+:101080000006190000040000000E19000000010213
+:101090000336190000040000004E1900000400008F
+:1010A0000056190000040000005E190000800000D6
+:1010B0000066190000001E00006E19000004000008
+:1010C00000961A0000040000009E1A000080000034
+:1010D00000A61A000004000000AE1A000000010281
+:1010E00003B61A000003000000BE1A0000001E0034
+:1010F00000C61A000004000000EE1A000004000000
+:1011000000F61A000003000000161B000004000097
+:1011100000E81E000021000000F01E000001000099
+:1011200000F81E000002000000001F000000010087
+:1011300000081F000000010000101F000001000057
+:1011400000281F000001000000301F000002000006
+:1011500000381F000000010000401F0000000100D7
+:1011600000481F000001000000BE2B00000400002A
+:1011700000C62B000003000000D12C00000400007A
+:1011800000D92C000004000000E92C0000800000C1
+:1011900000F12C000004000000F92C000001000008
+:1011A00000092D000027000000192D000026000076
+:1011B00000135200000F00000054560000FFFF3FD4
+:1011C000006C560000FF1F0000F0690000000000E6
+:1011D00004F869000000000004006A00000000003C
+:1011E00004086A000000000004106A00000000000B
+:1011F00004186A000000000004206A0000000000DB
+:1012000004286A000000000004306A0000000000AA
+:1012100004386A000000000004406A00000000007A
+:1012200004486A000000000004506A00000000004A
+:1012300004586A000000000004606A00000000001A
+:1012400004686A000000000004906B0000DFBFE348
+:1012500004986B0000DFBFE304B06B000021FE01C7
+:1012600000B86B00008168AC0FE06B0000120C103E
+:1012700008086C000000010000206C000001000163
+:1012800000306C000001000100386C00000100001B
+:1012900000406C000001000100486C0000010000EB
+:1012A00000506C000004000000586C0000020000B8
+:1012B00000C86F00000000803F00700000040000C4
+:1012C00000087000001A00000020700000010000FB
+:1012D00000B870000000FFFF00F07000000F000079
+:1012E00000307100008168AC0F38710000110000FF
+:1012F00000B871000004000000D07100000100007F
+:1013000000E871000002000000F071000000000021
+:1013100004F87100000000000418720000050000CD
+:10132000002072000052000000487200000100001E
+:1013300000D07200000000803FD8720000000080E2
+:101340003FE07200000000803FE872000000008073
+:101350003FF07200000000803FF872000000008043
+:101360003F007300000000803F0873000000008011
+:101370003F107300000000803F18730000000080E1
+:101380003F207300000000803F28730000000080B1
+:101390003F307300000000803F3873000000008081
+:1013A0003F407300000000803F4873000000008051
+:1013B0003F507300001000000088740000120C10F1
+:1013C000089074000005000000A8740000010000EF
+:1013D00000B8740000FFFF0000C0740000FFFF00B1
+:1013E00000C8740000FFFF0000D0740000FFFF0081
+:1013F00000D874000003000000F874000000FFFF34
+:1014000000007500001A00000010750000030000C5
+:1014100000F87600000201000008770000040000D8
+:10142000001077000004000000187700000400009E
+:10143000002077000004000000687700000400002E
+:1014400000707700000400000080770000FF0700B4
+:10145000009077000002010000E077000004000027
+:1014600000E877000004000000F0770000040000AE
+:1014700000F8770000040000009AE6000004000075
+:1014800000A2E6000004000000AAE60000120C1012
+:1014900008B2E6000003000000C2E60000120C10D3
+:1014A00008D2E60000140C0800DAE6000001000093
+:1014B00000E2E6000004000000EAE600000400008C
+:1014C00000F2E60000140C08000AE70000120C10FD
+:1014D0000812E70000270000002AE70000010000D2
+:1014E000003A05010001000000F2050100120C1095
+:1014F0000800060100120C10081006010080000010
+:10150000001806010004700080200601000004009D
+:101510000428060100C00000003006010000100091
+:101520000048060100000E000050060100001E00E9
+:1015300000580601000100000070060100010000D3
+:10154000008006010004000000880601000200007F
+:1015500000F006010080000000F8060100047000A1
+:1015600080000701000004000408070100C000001B
+:1015700000100701000010000028070100000E0005
+:101580000030070100001E000038070100010000C4
+:101590000050070100010000006007010004000086
+:1015A000006807010002000000C8070100120C10CB
+:1015B00008D807010021FE010008080100FFFF0014
+:1015C0000010080100FFFF000018080100FFFF00E5
+:1015D0000020080100FFFF000028080100010000B2
+:1015E000003008010001000100380801000100017D
+:1015F0000040080100010000005008010021FE0128
+:101600000080080100120C10088808010004000086
+:10161000009808010002000000A00801001100006D
+:1016200000E80801008168AC0F1009010004000007
+:1016300000600901000200000068090100010000CB
+:10164000007009010001000000780901000200009B
+:10165000008009010001000000880901000100006C
+:10166000009009010001000000A009010004000031
+:1016700000C026010011000000D02601000100007A
+:011680000069
+:00000001FF
-- 
1.6.5.2


drm-nouveau-kconfig.patch:
 Kconfig |    2 ++
 1 file changed, 2 insertions(+)

--- NEW FILE drm-nouveau-kconfig.patch ---
--- a/drivers/staging/Kconfig	2010-01-12 13:37:11.000000000 +1000
+++ b/drivers/staging/Kconfig	2010-01-12 13:37:24.000000000 +1000
@@ -103,6 +103,8 @@
 
 source "drivers/gpu/drm/radeon/Kconfig"
 
+source "drivers/gpu/drm/nouveau/Kconfig"
+
 source "drivers/staging/octeon/Kconfig"
 
 source "drivers/staging/serqt_usb2/Kconfig"

drm-nouveau-nvac-noaccel.patch:
 b/firmware/Makefile                |    3 
 firmware/nouveau/nvac.ctxprog.ihex |   79 --------
 firmware/nouveau/nvac.ctxvals.ihex |  363 -------------------------------------
 3 files changed, 1 insertion(+), 444 deletions(-)

--- NEW FILE drm-nouveau-nvac-noaccel.patch ---
>From 64e5badc040755a5ebbc48351f9f0e50ebc6e390 Mon Sep 17 00:00:00 2001
From: Ben Skeggs <bskeggs at redhat.com>
Date: Tue, 12 Jan 2010 11:23:52 +1000
Subject: [PATCH 6/6] drm/nouveau: remove ctxprog/ctxvals for NVAC, accel is broken there

---
 firmware/Makefile                  |    3 +-
 firmware/nouveau/nvac.ctxprog.ihex |   79 --------
 firmware/nouveau/nvac.ctxvals.ihex |  362 ------------------------------------
 3 files changed, 1 insertions(+), 443 deletions(-)
 delete mode 100644 firmware/nouveau/nvac.ctxprog.ihex
 delete mode 100644 firmware/nouveau/nvac.ctxvals.ihex

diff --git a/firmware/Makefile b/firmware/Makefile
index 7766c96..26ecab2 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -72,8 +72,7 @@ fw-shipped-$(CONFIG_DRM_NOUVEAU) += nouveau/nv50.ctxprog nouveau/nv50.ctxvals \
 				    nouveau/nva0.ctxprog nouveau/nva0.ctxvals \
 				    nouveau/nva5.ctxprog nouveau/nva5.ctxvals \
 				    nouveau/nva8.ctxprog nouveau/nva8.ctxvals \
-				    nouveau/nvaa.ctxprog nouveau/nvaa.ctxvals \
-				    nouveau/nvac.ctxprog nouveau/nvac.ctxvals
+				    nouveau/nvaa.ctxprog nouveau/nvaa.ctxvals
 fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
 fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
 fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
diff --git a/firmware/nouveau/nvac.ctxprog.ihex b/firmware/nouveau/nvac.ctxprog.ihex
deleted file mode 100644
index 41b1bea..0000000
--- a/firmware/nouveau/nvac.ctxprog.ihex
+++ /dev/null
@@ -1,79 +0,0 @@
-:100000004E5643500034019C00700000003000093F
-:10001000F14400092D400051E54000440A4000052C
-:100020000A40000D0A40008E0070004D1240009DF5
-:100030000070004D0045009700700021014500A1AF
-:100040004644004D7644004D8244001D0070000679
-:1000500018400005006000454444008B30440045D2
-:100060001840004D23400081007000CF1C40009FCD
-:100070000070009F0050004DDC4400170070000B22
-:100080002340004D7D440021024500A1564400A0BC
-:10009000007000010070000300700006274000059A
-:1000A0002840000D006000050070000D0070000683
-:1000B000007000020070000B0070000E0070001C49
-:1000C0000070000C00600000000000FFFF9000FFC7
-:1000D000FF91004DD44400090060004D0048009697
-:1000E000007000CF3A40009F0070009F0050005108
-:1000F000E54000C036400080002000080060004F4E
-:10010000364000C0364000CC3E400051364000161C
-:100110000070004D004800110060004D0048004D87
-:100120003644008E007000810070004D7044004D18
-:100130007D4400830070000000300040282100074B
-:10014000006000010BC0002200200001008000CBF5
-:10015000005000FF00C0004D5E44004D0048000804
-:10016000CE44004D7344004D8B44004D5E44004D21
-:10017000E244004D7644004D8244004D0048008327
-:100180000070004D0345003F02A000400020000623
-:100190000060004DFC44004D8D4400D00120006003
-:1001A000B8440080022000FFFF38004DCC4400001E
-:1001B000003000CB0050004D1C4500CB0050000724
-:1001C000D044004D0048004D794400FC1B11004D07
-:1001D0000048004D794400FD1B11004D0048004DC2
-:1001E000794400FE1B11004D004800000020000073
-:1001F000007000060060004D00480001002000066D
-:100200000060004DFC44000A0211004D004800004F
-:10021000003000FFFFC30000002000070060000066
-:1002200000700008002000FF008000CB0050004D4F
-:10023000004800000000004D0048000000000002DF
-:10024000021700320020000D02100042021E00C002
-:100250000211000203120002041500000518000933
-:1002600005130050051500050611001300200007B6
-:100270000610000007110000091100020912000019
-:100280000A1100020B1600280B12002B0B140001A0
-:100290000C1100010D1100001411000514110007CC
-:1002A000141100091411000B141100D400200000D7
-:1002B000151000051A14000C1A1300001C1300047A
-:1002C0001C1300201C1400251C1300001F13000425
-:1002D0001F1300081F11000B1F1100150020004004
-:1002E0001F10004D004800060060004D1C45002016
-:1002F000201100222011008500200040201000C89D
-:10030000201100CA201400CF201B0000211200037E
-:10031000211200402116004721120053211200A093
-:10032000211100C0211200CB211100D4211100D8CD
-:100330002115004D004800000000004D0048000B52
-:100340000060004D0048000A0060004D0048000BAE
-:100350000060004DD2400020002000080060004CEA
-:100360000050004D004800E8032000080060004CE9
-:100370000050004D004800040060004A0050004D4D
-:10038000004800FF00C000FF00C8004D004800FF0B
-:1003900000C000FF00C8004D004800160070008E2D
-:1003A00000700082007000410050004DD84400955C
-:1003B000007000D100500016006000520050000292
-:1003C000007000150070004D2840008E0070004D38
-:1003D000D44400000020000700600000003000FF4F
-:1003E00000C00000002000FF008000090070000E27
-:1003F0000070004D004800800070001700480000A9
-:100400000070004D0048004D0048004D0048004D70
-:100410000048008E0070004DD44400830070004DF1
-:10042000DF44004D0C45000F0070008C0B4100CBE9
-:100430000050004D004800800220000700600007C7
-:10044000234500871145004D004800000000007062
-:100450002020004DFC4400FF0080004D00480000BB
-:1004600006210007006000480420004DFC4400FF06
-:100470000088004D0048000F0048004B0048004D28
-:100480001645008F0070008C004800CB0050004DD6
-:10049000004800702020004DFC4400FD008000CB8F
-:1004A0000050000200C000800220000700600061D0
-:1004B0000120004DFC440002008000CB00500002EF
-:1004C00000C0000E1F20004DFC440002008000CB45
-:0704D0000050004D00480040
-:00000001FF
diff --git a/firmware/nouveau/nvac.ctxvals.ihex b/firmware/nouveau/nvac.ctxvals.ihex
deleted file mode 100644
index fb35ebd..0000000
--- a/firmware/nouveau/nvac.ctxvals.ihex
+++ /dev/null
@@ -1,362 +0,0 @@
-:100000004E56435600CF020000430000003000006F
-:10001000004B00000002000000740000000300001C
-:10002000007500000000100000880000000CFE00B9
-:10003000008E000000001000009900000087010001
-:10004000009E000000181000009F000000FF00004C
-:1000500000B200000004000000B3000000DF002533
-:1000600004B500000000060000BB00000000000016
-:1000700001BC000000FF000000BE000000000800FE
-:1000800000C400000001000000C5000000010000E5
-:1000900000C600000080000E00C700000004000041
-:1000A00000CE00000002000000CF000000010000B0
-:1000B00000D300000001000000D400000000010097
-:1000C00000DA00000002000000DB00000001000078
-:1000D00000DC00000001000000E000000001000062
-:1000E00000E1000000FFFF3F00E2000000FF1F00F2
-:1000F00000E400000001000000E500000001000035
-:1001000000E700000001000000E80000000100001E
-:1001100000E900000001000000EA00000004000007
-:1001200000EB00000001000000EC000000010000F6
-:1001300000ED00000001000000EE000000070000DC
-:1001400000EF00000001000000F0000000070000C8
-:1001500000F100000001000000F2000000010000BA
-:1001600000F300000001000000F8000000010000A2
-:1001700000F900000000010000FB00000001000089
-:1001800000FE00000000010000FF00000001000070
-:100190000000010000000100000201000001000059
-:1001A0000005010000000100000A01000004000039
-:1001B000000B010000700000000C01000080000036
-:1001C00000110100000C00000013010000080000F5
-:1001D00000140100001400000016010000290000B6
-:1001E0000017010000270000001801000026000091
-:1001F0000019010000080000001A010000040000BE
-:10020000001B010000270000001E0100000100008B
-:10021000001F010000020000002001000003000098
-:100220000021010000040000002201000005000080
-:100230000023010000060000002401000007000068
-:1002400000250100000100000036010000CF000081
-:100250000042010000800000004301000004000093
-:1002600000440100000400000045010000030000FC
-:1002700000460100000100000049010000120000DA
-:10028000004A010000100000004B0100000C0000BB
-:10029000004C0100000100000050010000040000BB
-:1002A00000510100000200000052010000040000A3
-:1002B0000056010000FFFF3F0057010000FF1F0034
-:1002C0000061010000010000006201000001000067
-:1002D000006301000002000000650100000400004E
-:1002E000006601000014000000670100000100002A
-:1002F000006A010000020000006F01000001000020
-:1003000000710100000200000072010000001000F6
-:100310000073010000000E000074010000001000D6
-:100320000075010000001E000077010000010000C0
-:1003300000780100000100000079010000010000C8
-:10034000007A010000010000007B010000010000B4
-:10035000007F010000000200008101000001000098
-:100360000082010000F000000083010000FF000097
-:1003700000860100000100000087010000F000007D
-:100380000088010000FF0000008A01000009000051
-:10039000008D010000010000008E010000CF000070
-:1003A00000900100000100000094010000CF000057
-:1003B000009601000002000000980100000100000A
-:1003C000009A010000010000009C010000CF000025
-:1003D000009D010000CF0000009E01000001000010
-:1003E00000A0010000801F0000A601000021F87499
-:1003F0003BA701000001800589A901000000100051
-:1004000000AA010000FF000000AC010000FA107C0F
-:1004100002AD010000C0000040AE01000080208954
-:10042000B7B301000040003D00B50100002200000C
-:1004300000BD01000040003D00BE010000220000A0
-:1004400000D00100000AFF0000D20100000000807F
-:1004500001D301000000001600D40100000000805C
-:1004600001D8010000FFFF0300D901000000000CCB
-:1004700030E201000001040100E401000078000006
-:1004800000E6010000BF000000E8010000101200BB
-:1004900000E901000080000008EC0100003E0000BF
-:1004A00000F201000000008001F3010000000016CE
-:1004B00000F401000000008001F8010000FFFF03CC
-:1004C00000F901000000000C3002020000010401EC
-:1004D00000040200007800000006020000BF0000D7
-:1004E0000008020000101200000902000080000055
-:1004F000080C0200003E0000001202000000008014
-:100500000113020000000016001402000000008029
-:100510000118020000FFFF03001902000000000C98
-:1005200030220200000104010024020000780000D3
-:100530000026020000BF0000002802000010120088
-:100540000029020000800000082C0200003E00008C
-:10055000003202000000008001330200000000169B
-:1005600000340200000000800138020000FFFF0399
-:10057000003902000000000C3042020000010401BA
-:1005800000440200007800000046020000BF0000A6
-:100590000048020000101200004902000080000024
-:1005A000084C0200003E0000005302000070701270
-:1005B0000157020000FFFFFF075E02000007041260
-:1005C000005F020000071509056002000002020139
-:1005D0000561020000010203006802000040000003
-:1005E00000690200000A0B0C0D6A020000101214D0
-:1005F000006B020000F00100006C0200000100002E
-:10060000006D020000030000006E02000000800088
-:100610000070020000009E03007102000000010053
-:100620000072020000003800007302000006E03F84
-:10063000007402000000E03F0075020000404040EE
-:10064000007602000007F0FF0C77020000FF7FBF7A
-:10065000028102000004000000860200003F00004A
-:100660000089020000040000008B0200000100006D
-:10067000008D0200008168AC0F990200008000002C
-:1006800000A102000004000000A9020000140C08F0
-:1006900000AF020000140C0800B30200000F0000BD
-:1006A00000B9020000FF070000C7020000040800B4
-:1006B00000D702000004000000DB02000020000060
-:1006C00000DE02000002000000DF02000004000063
-:1006D00000E602000000000004E7020000120C1017
-:1006E00008ED020000DFBFE304EE0200000000009E
-:1006F00004F5020000DFBFE304F70200000400007D
-:1007000000FF020000040000000F030000100000C2
-:10071000001D030000DFBFE30425030000DFBFE38B
-:100720000436030000040000003703000004080042
-:10073000003F03000001000000470300001A000012
-:10074000004F0300007F000000560300000400007B
-:10075000005B0300001A0000005F030000010000BE
-:100760000067030000140C080077030000120C104F
-:10077000087F030000040000008503000002000061
-:100780000087030000040000009503000067FE1FBF
-:10079000009703000010000000B7030000010000F4
-:1007A00000BF030000120C1008CB0300000400007F
-:1007B00000D303000004000000E303000004000075
-:1007C00000E603000001000000EB03000008000049
-:1007D00000EE03000001100000F6030000FFFF0020
-:1007E00000F7030000FF070000FB030000FF070005
-:1007F00000FD03000001000000FE030000FFFF00F9
-:1008000000FF030000140C080005040000100000A5
-:100810000006040000FFFF00000E040000FFFF00C0
-:10082000001D04000001000000320400000400006C
-:10083000003A040000040000004504000004000029
-:10084000004D0400000004000055040000000300F7
-:10085000005D04000001100000630400000F0000B0
-:10086000006504000015000000950400000200006F
-:1008700000DD04000001000000E50400001000009D
-:1008800000F50400000100000016050000000080D3
-:100890003F1E0500000000803F260500000000808C
-:1008A0003F2E0500000000803F360500000000805C
-:1008B0003F3E0500000000803F460500000000802C
-:1008C0003F4E0500000000803F56050000000080FC
-:1008D0003F5E0500000000803F66050000000080CC
-:1008E0003F6E0500000000803F760500000000809C
-:1008F0003F7E0500000000803F860500000000806C
-:100900003F8E0500000000803F95050000100000AC
-:10091000009605000010000000AE05000003000076
-:1009200000C705000001000000DF05000010000006
-:10093000001D0600000000803F1E060000000000B1
-:1009400004250600000000803F260600000000008D
-:10095000042D0600000000803F35060000000080E6
-:100960003F36060000800000003D060000000080C9
-:100970003F450600000000803F4D0600000000805B
-:100980003F550600000000803F5606000080000032
-:10099000005D0600000000803F650600000000804A
-:1009A0003F6D0600000000803F75060000000080DB
-:1009B0003F7D0600000000803F85060000000080AB
-:1009C0003F8D0600000000803F8E06000001000001
-:1009D00000950600000000803F9606000000010020
-:1009E000009E06000000010000A6060000110000A5
-:1009F00000B606000008000000E606000001000046
-:100A000000F606000001000000FE060000010000E4
-:100A10000006070000010000000E070000CF0000E4
-:100A20000016070000020000004E07000001000051
-:100A3000005E0700000100000065070000100000D4
-:100A40000066070000010000006E070000010000C2
-:100A500000750700003F000000960700000400003A
-:100A600000A607000001000000A7070000880000A2
-:100A700000AD07000001000000AE070000150000F7
-:100A800000AF07000088000000BD07000001000063
-:100A900000C707000004000000CD070000010000AF
-:100AA00000CE07000080444404E507000001100068
-:100AB0000045080000110000007F0800002600002B
-:100AC00000850800000F000000970800000000806B
-:100AD0003FB70800001A000000BF08000010000027
-:100AE00000C508000011000000FD08000001000022
-:100AF0000005090000010000000D090000010000D0
-:100B00000015090000020000001D0900000100009E
-:100B10000025090000020000002D0900000100006E
-:100B2000003D09000067FE1F004D0900008168AC10
-:100B30000FA609000001000000B609000001000036
-:100B400000D60900008824712AE609000000C0854B
-:100B500040EE09000040000000F60900000001001E
-:100B600000FE09000000010100060A0000000080EC
-:100B700002070A000052000000170A0000260000C9
-:100B800000270A0000040000002D0A0000010000F8
-:100B9000002F0A000004000000350A0000020000D7
-:100BA000003D0A0000010000003F0A00001A00009A
-:100BB00000450A0000010000004D0A00000200008C
-:100BC00000550A000001000000570A000000FFFF66
-:100BD000005D0A000001000000850A00001100000D
-:100BE000008D0A000001000000D60A00000F00007E
-:100BF00000360B0000040000003E0B0000FFFF0069
-:100C000000460B0000FFFF00004E0B0000FFFF003E
-:100C100000560B0000FFFF00009E0B0000010000CB
-:100C200000BE0B000001000000EE0B000001000000
-:100C300000060C0000010000005E0C000001000036
-:100C400000660C0000010000006E0C0000020000B5
-:100C500000760C0000010000007E0C000001000086
-:100C600000860C0000020000008E0C000001000055
-:100C7000009E0C000011000000DE0C00008168AC3A
-:100C80000FF60C000004000000160D00001100001B
-:100C9000001E0D0000010000002E0D0000CF00001E
-:100CA00000360D0000CF0000003E0D0000CF000018
-:100CB000008B0D00000F000000960D0000010000E9
-:100CC000009B0D0000010000009E0D0000010000CF
-:100CD00000A60D000002000000AE0D0000010000A3
-:100CE00000B60D000001000000BE0D000002000073
-:100CF00000C60D000001000000D60D00000100003C
-:100D000000DE0D000001000000E60D000001000003
-:100D100000EE0D000001000000F60D0000010000D3
-:100D200000FE0D000001000000060E0000010000A2
-:100D3000000E0E000001000000160E000011000061
-:100D400000560E00008168AC0F5E0E00000F000020
-:100D5000009E0E000067FE1F00B60E00001100008E
-:100D600000BE0E000001000000DE0E0000040000C6
-:100D7000000E0F000001000000360F0000110000FF
-:100D800000760F00008168AC0F960F000011000084
-:100D9000009E0F000001000000AE0F0000010000E7
-:100DA00000BE0F000001000000CE0F0000FF070092
-:100DB00000DE0F000001000000EE0F000001000047
-:100DC00000731000000F0000004611000008000032
-:100DD000004E11000008000000561100000800003D
-:100DE000005E11000008000000661100000800000D
-:100DF000006E1100000800000076110000080000DD
-:100E0000007E1100000800000086110000110000A3
-:100E100000C61100008168AC0FCE11000000040074
-:100E200000D611000000040000DE110000000400E4
-:100E300000E611000000040000EE110000000400B4
-:100E400000F611000000040000FE11000000040084
-:100E50000006120000000400000E12000000030053
-:100E60000016120000000300001E12000000030024
-:100E70000026120000000300002E120000000300F4
-:100E80000036120000000300003E120000000300C4
-:100E90000046120000000300004E12000001000096
-:100EA00000561200000F0000009612000020000003
-:100EB000009E12000011000000A6120000000100B8
-:100EC00000B612000001000000CE12000040000039
-:100ED00000D612000000010000E61200000300002E
-:100EE000000E13000067FE1F002E1300000200001A
-:100EF00000361300008168AC0F861300000100006B
-:100F000000AE13000004000000BE1300000100004A
-:100F100000C613000000040000CE13000000030010
-:100F200000D613000001100000F6130000110000AD
-:100F300000361400008168AC0F3E1400000F000062
-:100F400000FE1400008168AC0F0615000067FE1F4C
-:100F50000026150000110000003E150000040000EE
-:100F6000004E1500000100000056150000010000B1
-:100F70000076150000010000009E1500008168AC9D
-:100F80000FC615000004000000D615000001000087
-:100F900000DE15000001000000F615000001000051
-:100FA000004E16000001000000561600000100006F
-:100FB000005E16000001000000661600000100003F
-:100FC000006E16000001000000761600000100000F
-:100FD000007E1600000100000086160000010000DF
-:100FE000008E16000011000000CE1600008168ACD3
-:100FF0000FD61600000F00000016170000110000A9
-:10100000001E170000010000007E170000DFBFE394
-:101010000486170000DFBFE3048E17000001000004
-:10102000009E17000000FFFF00A61700000100004F
-:1010300000BE17000000FFFF0006180000010000BE
-:101040000016180000010000001E1800000010200B
-:101050003026180000405060702E1800008898A8B4
-:10106000B836180000C8D8E8F8461800001A000082
-:10107000005618000004000000FE180000040000E4
-:101080000006190000040000000E19000000010213
-:101090000336190000040000004E1900000400008F
-:1010A0000056190000040000005E190000800000D6
-:1010B0000066190000001E00006E19000004000008
-:1010C00000961A0000040000009E1A000080000034
-:1010D00000A61A000004000000AE1A000000010281
-:1010E00003B61A000003000000BE1A0000001E0034
-:1010F00000C61A000004000000EE1A000004000000
-:1011000000F61A000003000000161B000004000097
-:1011100000E81E000021000000F01E000001000099
-:1011200000F81E000002000000001F000000010087
-:1011300000081F000000010000101F000001000057
-:1011400000281F000001000000301F000002000006
-:1011500000381F000000010000401F0000000100D7
-:1011600000481F000001000000BE2B00000400002A
-:1011700000C62B000003000000D12C00000400007A
-:1011800000D92C000004000000E92C0000800000C1
-:1011900000F12C000004000000F92C000001000008
-:1011A00000092D000027000000192D000026000076
-:1011B00000135200000F00000054560000FFFF3FD4
-:1011C000006C560000FF1F0000F0690000000000E6
-:1011D00004F869000000000004006A00000000003C
-:1011E00004086A000000000004106A00000000000B
-:1011F00004186A000000000004206A0000000000DB
-:1012000004286A000000000004306A0000000000AA
-:1012100004386A000000000004406A00000000007A
-:1012200004486A000000000004506A00000000004A
-:1012300004586A000000000004606A00000000001A
-:1012400004686A000000000004906B0000DFBFE348
-:1012500004986B0000DFBFE304B06B000021FE01C7
-:1012600000B86B00008168AC0FE06B0000120C103E
-:1012700008086C000000010000206C000001000163
-:1012800000306C000001000100386C00000100001B
-:1012900000406C000001000100486C0000010000EB
-:1012A00000506C000004000000586C0000020000B8
-:1012B00000C86F00000000803F00700000040000C4
-:1012C00000087000001A00000020700000010000FB
-:1012D00000B870000000FFFF00F07000000F000079
-:1012E00000307100008168AC0F38710000110000FF
-:1012F00000B871000004000000D07100000100007F
-:1013000000E871000002000000F071000000000021
-:1013100004F87100000000000418720000050000CD
-:10132000002072000052000000487200000100001E
-:1013300000D07200000000803FD8720000000080E2
-:101340003FE07200000000803FE872000000008073
-:101350003FF07200000000803FF872000000008043
-:101360003F007300000000803F0873000000008011
-:101370003F107300000000803F18730000000080E1
-:101380003F207300000000803F28730000000080B1
-:101390003F307300000000803F3873000000008081
-:1013A0003F407300000000803F4873000000008051
-:1013B0003F507300001000000088740000120C10F1
-:1013C000089074000005000000A8740000010000EF
-:1013D00000B8740000FFFF0000C0740000FFFF00B1
-:1013E00000C8740000FFFF0000D0740000FFFF0081
-:1013F00000D874000003000000F874000000FFFF34
-:1014000000007500001A00000010750000030000C5
-:1014100000F87600000201000008770000040000D8
-:10142000001077000004000000187700000400009E
-:10143000002077000004000000687700000400002E
-:1014400000707700000400000080770000FF0700B4
-:10145000009077000002010000E077000004000027
-:1014600000E877000004000000F0770000040000AE
-:1014700000F8770000040000009AE6000004000075
-:1014800000A2E6000004000000AAE60000120C1012
-:1014900008B2E6000003000000C2E60000120C10D3
-:1014A00008D2E60000140C0800DAE6000001000093
-:1014B00000E2E6000004000000EAE600000400008C
-:1014C00000F2E60000140C08000AE70000120C10FD
-:1014D0000812E70000270000002AE70000010000D2
-:1014E000003A05010001000000F2050100120C1095
-:1014F0000800060100120C10081006010080000010
-:10150000001806010004700080200601000004009D
-:101510000428060100C00000003006010000100091
-:101520000048060100000E000050060100001E00E9
-:1015300000580601000100000070060100010000D3
-:10154000008006010004000000880601000200007F
-:1015500000F006010080000000F8060100047000A1
-:1015600080000701000004000408070100C000001B
-:1015700000100701000010000028070100000E0005
-:101580000030070100001E000038070100010000C4
-:101590000050070100010000006007010004000086
-:1015A000006807010002000000C8070100120C10CB
-:1015B00008D807010021FE010008080100FFFF0014
-:1015C0000010080100FFFF000018080100FFFF00E5
-:1015D0000020080100FFFF000028080100010000B2
-:1015E000003008010001000100380801000100017D
-:1015F0000040080100010000005008010021FE0128
-:101600000080080100120C10088808010004000086
-:10161000009808010002000000A00801001100006D
-:1016200000E80801008168AC0F1009010004000007
-:1016300000600901000200000068090100010000CB
-:10164000007009010001000000780901000200009B
-:10165000008009010001000000880901000100006C
-:10166000009009010001000000A009010004000031
-:1016700000C026010011000000D02601000100007A
-:011680000069
-:00000001FF
-- 
1.6.5.2


drm-nouveau-safetile-getparam.patch:
 nouveau_state.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- NEW FILE drm-nouveau-safetile-getparam.patch ---
>From 2aa78d8442bd947637ed81da00fd9c22232d2ed0 Mon Sep 17 00:00:00 2001
From: Ben Skeggs <bskeggs at redhat.com>
Date: Wed, 9 Sep 2009 16:16:44 +1000
Subject: [PATCH 5/6] f12: add getparam to know scanout tile_flags is safe

---
 drivers/gpu/drm/nouveau/nouveau_state.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
index 36f8268..27c4d48 100644
--- a/drivers/gpu/drm/nouveau/nouveau_state.c
+++ b/drivers/gpu/drm/nouveau/nouveau_state.c
@@ -861,6 +861,9 @@ int nouveau_ioctl_getparam(struct drm_device *dev, void *data,
 
 		getparam->value = dev_priv->sfb_gem->size;
 		break;
+	case 0xdeadcafe00000003: /* NOUVEAU_GETPARAM_SCANOUT_TILEFLAGS */
+		getparam->value = 1;
+		break;
 	default:
 		NV_ERROR(dev, "unknown parameter %lld\n", getparam->param);
 		return -EINVAL;
-- 
1.6.5.2


drm-nouveau-shared-fb.patch:
 nouveau_drv.h   |    2 +
 nouveau_state.c |   67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 68 insertions(+), 1 deletion(-)

--- NEW FILE drm-nouveau-shared-fb.patch ---
>From 42670e54412d2b72248bca3fe8c9bd76aa98ebfa Mon Sep 17 00:00:00 2001
From: Ben Skeggs <bskeggs at redhat.com>
Date: Sun, 28 Jun 2009 20:24:26 +1000
Subject: [PATCH 2/6] drm/nouveau: support needed for multiple xservers

---
 drivers/gpu/drm/nouveau/nouveau_drv.h   |    2 +
 drivers/gpu/drm/nouveau/nouveau_state.c |   66 +++++++++++++++++++++++++++++++
 2 files changed, 68 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h
index 5f8cbb7..bf9acc6 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.h
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
@@ -593,6 +593,8 @@ struct drm_nouveau_private {
 	struct {
 		struct dentry *channel_root;
 	} debugfs;
+
+	struct drm_gem_object *sfb_gem;
 };
 
 static inline struct drm_nouveau_private *
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
index e76ec2d..36f8268 100644
--- a/drivers/gpu/drm/nouveau/nouveau_state.c
+++ b/drivers/gpu/drm/nouveau/nouveau_state.c
@@ -37,6 +37,50 @@
 static int nouveau_stub_init(struct drm_device *dev) { return 0; }
 static void nouveau_stub_takedown(struct drm_device *dev) {}
 
+static int
+sfbhack_init(struct drm_device *dev)
+{
+	struct drm_nouveau_private *dev_priv = dev->dev_private;
+	struct nouveau_bo *nvbo = NULL;
+	uint32_t tile_flags = dev_priv->card_type == NV_50 ? 0x7000 : 0x0000;
+	int ret, size;
+
+	if (dev_priv->sfb_gem)
+		return 0;
+
+	size = nouveau_mem_fb_amount(dev);
+	if (size > drm_get_resource_len(dev, 1))
+		size = drm_get_resource_len(dev, 1);
+	size >>= 1;
+
+	ret = nouveau_gem_new(dev, dev_priv->channel, size, 0, TTM_PL_FLAG_VRAM,
+			      0, tile_flags, false, true, &nvbo);
+	if (ret)
+		return ret;
+
+	ret = nouveau_bo_pin(nvbo, TTM_PL_FLAG_VRAM);
+	if (ret) {
+		nouveau_bo_ref(NULL, &nvbo);
+		return ret;
+	}
+
+	dev_priv->sfb_gem = nvbo->gem;
+	return 0;
+}
+
+static void
+sfbhack_takedown(struct drm_device *dev)
+{
+	struct drm_nouveau_private *dev_priv = dev->dev_private;
+
+	if (dev_priv->sfb_gem) {
+		mutex_lock(&dev->struct_mutex);
+		drm_gem_object_unreference(dev_priv->sfb_gem);
+		mutex_unlock(&dev->struct_mutex);
+		dev_priv->sfb_gem = NULL;
+	}
+}
+
 static int nouveau_init_engine_ptrs(struct drm_device *dev)
 {
 	struct drm_nouveau_private *dev_priv = dev->dev_private;
@@ -712,6 +756,8 @@ static void nouveau_close(struct drm_device *dev)
 /* KMS: we need mmio at load time, not when the first drm client opens. */
 void nouveau_lastclose(struct drm_device *dev)
 {
+	sfbhack_takedown(dev);
+
 	if (drm_core_check_feature(dev, DRIVER_MODESET))
 		return;
 
@@ -750,6 +796,8 @@ int nouveau_ioctl_getparam(struct drm_device *dev, void *data,
 {
 	struct drm_nouveau_private *dev_priv = dev->dev_private;
 	struct drm_nouveau_getparam *getparam = data;
+	uint32_t sfb_handle;
+	int ret;
 
 	NOUVEAU_CHECK_INITIALISED_WITH_RETURN;
 
@@ -795,6 +843,24 @@ int nouveau_ioctl_getparam(struct drm_device *dev, void *data,
 	case NOUVEAU_GETPARAM_VM_VRAM_BASE:
 		getparam->value = dev_priv->vm_vram_base;
 		break;
+	case 0xdeadcafe00000001: /* NOUVEAU_GETPARAM_SHAREDFB_HANDLE */
+		ret = sfbhack_init(dev);
+		if (ret)
+			return ret;
+
+		ret = drm_gem_handle_create(file_priv, dev_priv->sfb_gem,
+					    &sfb_handle);
+		if (ret)
+			return ret;
+		getparam->value = sfb_handle;
+		break;
+	case 0xdeadcafe00000002: /* NOUVEAU_GETPARAM_SHAREDFB_SIZE */
+		ret = sfbhack_init(dev);
+		if (ret)
+			return ret;
+
+		getparam->value = dev_priv->sfb_gem->size;
+		break;
 	default:
 		NV_ERROR(dev, "unknown parameter %lld\n", getparam->param);
 		return -EINVAL;
-- 
1.6.5.2


drm-nouveau-tvout-disable.patch:
 nouveau_drv.c  |    4 ++++
 nouveau_drv.h  |    1 +
 nv04_display.c |    6 +++++-
 3 files changed, 10 insertions(+), 1 deletion(-)

--- NEW FILE drm-nouveau-tvout-disable.patch ---
>From 1c48b3294c0efe6b28ef84139eb838725bb34ccc Mon Sep 17 00:00:00 2001
From: Ben Skeggs <bskeggs at redhat.com>
Date: Tue, 8 Sep 2009 13:57:50 +1000
Subject: [PATCH 4/6] drm/nouveau: disable tv-out by default for the moment

---
 drivers/gpu/drm/nouveau/nouveau_drv.c  |    4 ++++
 drivers/gpu/drm/nouveau/nouveau_drv.h  |    1 +
 drivers/gpu/drm/nouveau/nv04_display.c |    5 +++++
 3 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.c b/drivers/gpu/drm/nouveau/nouveau_drv.c
index 06eb993..d117ab5 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.c
@@ -71,6 +71,10 @@ MODULE_PARM_DESC(uscript_tmds, "TMDS output script table ID (>=GeForce 8)");
 int nouveau_uscript_tmds = -1;
 module_param_named(uscript_tmds, nouveau_uscript_tmds, int, 0400);
 
+MODULE_PARM_DESC(tv, "Enable TV-out support (<GeForce 8)");
+int nouveau_tv = 0;
+module_param_named(tv, nouveau_tv, int, 0400);
+
 MODULE_PARM_DESC(tv_norm, "Default TV norm.\n"
 		 "\t\tSupported: PAL, PAL-M, PAL-N, PAL-Nc, NTSC-M, NTSC-J,\n"
 		 "\t\t\thd480i, hd480p, hd576i, hd576p, hd720p, hd1080i.\n"
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h
index bf9acc6..0941725 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.h
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
@@ -648,6 +648,7 @@ extern int nouveau_uscript_tmds;
 extern int nouveau_vram_pushbuf;
 extern int nouveau_vram_notify;
 extern int nouveau_fbpercrtc;
+extern int nouveau_tv;
 extern char *nouveau_tv_norm;
 extern int nouveau_reg_debug;
 extern char *nouveau_vbios;
diff --git a/drivers/gpu/drm/nouveau/nv04_display.c b/drivers/gpu/drm/nouveau/nv04_display.c
index ef77215..dfae228 100644
--- a/drivers/gpu/drm/nouveau/nv04_display.c
+++ b/drivers/gpu/drm/nouveau/nv04_display.c
@@ -142,6 +142,11 @@ nv04_display_create(struct drm_device *dev)
 			ret = nv04_dfp_create(dev, dcbent);
 			break;
 		case OUTPUT_TV:
+			if (!nouveau_tv) {
+				NV_INFO(dev, "Enable TV-Out with tv module option\n");
+				continue;
+			}
+
 			if (dcbent->location == DCB_LOC_ON_CHIP)
 				ret = nv17_tv_create(dev, dcbent);
 			else
-- 
1.6.5.2


drm-nouveau-update.patch:
 nouveau_bios.c      |  187 ++++++++++++++++++++++------------------------------
 nouveau_bo.c        |    2 
 nouveau_connector.c |   24 +++++-
 nouveau_dma.c       |   76 +++++++++++++--------
 nouveau_drv.h       |    2 
 nouveau_gem.c       |   19 ++++-
 nouveau_irq.c       |    7 +
 nouveau_mem.c       |   15 +++-
 nouveau_state.c     |    1 
 nv04_instmem.c      |    2 
 nv50_crtc.c         |   22 +++++-
 nv50_fifo.c         |    2 
 nv50_graph.c        |    3 
 13 files changed, 211 insertions(+), 151 deletions(-)

--- NEW FILE drm-nouveau-update.patch ---
 drivers/gpu/drm/nouveau/nouveau_bios.c      |  187 ++++++++++++---------------
 drivers/gpu/drm/nouveau/nouveau_bo.c        |    2 +
 drivers/gpu/drm/nouveau/nouveau_connector.c |   24 +++-
 drivers/gpu/drm/nouveau/nouveau_dma.c       |   76 +++++++----
 drivers/gpu/drm/nouveau/nouveau_drv.h       |    2 +
 drivers/gpu/drm/nouveau/nouveau_gem.c       |   19 +++-
 drivers/gpu/drm/nouveau/nouveau_irq.c       |    7 +
 drivers/gpu/drm/nouveau/nouveau_mem.c       |   15 ++-
 drivers/gpu/drm/nouveau/nouveau_state.c     |    1 +
 drivers/gpu/drm/nouveau/nv04_instmem.c      |    2 +-
 drivers/gpu/drm/nouveau/nv50_crtc.c         |   22 +++-
 drivers/gpu/drm/nouveau/nv50_fifo.c         |    2 +-
 drivers/gpu/drm/nouveau/nv50_graph.c        |    3 +-
 13 files changed, 211 insertions(+), 151 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c
index ba14397..d7f8d8b 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bios.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bios.c
@@ -310,63 +310,22 @@ valid_reg(struct nvbios *bios, uint32_t reg)
 	struct drm_device *dev = bios->dev;
 
 	/* C51 has misaligned regs on purpose. Marvellous */
-	if (reg & 0x2 || (reg & 0x1 && dev_priv->VBIOS.pub.chip_version != 0x51)) {
-		NV_ERROR(dev, "========== misaligned reg 0x%08X ==========\n",
-			 reg);
-		return 0;
-	}
-	/*
-	 * Warn on C51 regs that have not been verified accessible in
-	 * mmiotracing
-	 */
+	if (reg & 0x2 ||
+	    (reg & 0x1 && dev_priv->VBIOS.pub.chip_version != 0x51))
+		NV_ERROR(dev, "======= misaligned reg 0x%08X =======\n", reg);
+
+	/* warn on C51 regs that haven't been verified accessible in tracing */
 	if (reg & 0x1 && dev_priv->VBIOS.pub.chip_version == 0x51 &&
 	    reg != 0x130d && reg != 0x1311 && reg != 0x60081d)
 		NV_WARN(dev, "=== C51 misaligned reg 0x%08X not verified ===\n",
 			reg);
 
-	/* Trust the init scripts on G80 */
-	if (dev_priv->card_type >= NV_50)
-		return 1;
-
-	#define WITHIN(x, y, z) ((x >= y) && (x < y + z))
-	if (WITHIN(reg, NV_PMC_OFFSET, NV_PMC_SIZE))
-		return 1;
-	if (WITHIN(reg, NV_PBUS_OFFSET, NV_PBUS_SIZE))
-		return 1;
-	if (WITHIN(reg, NV_PFIFO_OFFSET, NV_PFIFO_SIZE))
-		return 1;
-	if (dev_priv->VBIOS.pub.chip_version >= 0x30 &&
-	    (WITHIN(reg, 0x4000, 0x600) || reg == 0x00004600))
-		return 1;
-	if (dev_priv->VBIOS.pub.chip_version >= 0x40 &&
-						WITHIN(reg, 0xc000, 0x48))
-		return 1;
-	if (dev_priv->VBIOS.pub.chip_version >= 0x17 && reg == 0x0000d204)
-		return 1;
-	if (dev_priv->VBIOS.pub.chip_version >= 0x40) {
-		if (reg == 0x00011014 || reg == 0x00020328)
-			return 1;
-		if (WITHIN(reg, 0x88000, NV_PBUS_SIZE)) /* new PBUS */
-			return 1;
+	if (reg >= (8*1024*1024)) {
+		NV_ERROR(dev, "=== reg 0x%08x out of mapped bounds ===\n", reg);
+		return 0;
 	}
-	if (WITHIN(reg, NV_PFB_OFFSET, NV_PFB_SIZE))
-		return 1;
-	if (WITHIN(reg, NV_PEXTDEV_OFFSET, NV_PEXTDEV_SIZE))
-		return 1;
-	if (WITHIN(reg, NV_PCRTC0_OFFSET, NV_PCRTC0_SIZE * 2))
-		return 1;
-	if (WITHIN(reg, NV_PRAMDAC0_OFFSET, NV_PRAMDAC0_SIZE * 2))
-		return 1;
-	if (dev_priv->VBIOS.pub.chip_version >= 0x17 && reg == 0x0070fff0)
-		return 1;
-	if (dev_priv->VBIOS.pub.chip_version == 0x51 &&
-				WITHIN(reg, NV_PRAMIN_OFFSET, NV_PRAMIN_SIZE))
-		return 1;
-	#undef WITHIN
 
-	NV_ERROR(dev, "========== unknown reg 0x%08X ==========\n", reg);
-
-	return 0;
+	return 1;
 }
 
 static bool
@@ -3196,16 +3155,25 @@ static int call_lvds_manufacturer_script(struct drm_device *dev, struct dcb_entr
 	}
 #ifdef __powerpc__
 	/* Powerbook specific quirks */
-	if (script == LVDS_RESET && ((dev->pci_device & 0xffff) == 0x0179 || (dev->pci_device & 0xffff) == 0x0329))
-		nv_write_tmds(dev, dcbent->or, 0, 0x02, 0x72);
-	if ((dev->pci_device & 0xffff) == 0x0179 || (dev->pci_device & 0xffff) == 0x0189 || (dev->pci_device & 0xffff) == 0x0329) {
-		if (script == LVDS_PANEL_ON) {
-			bios_wr32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL, bios_rd32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL) | (1 << 31));
-			bios_wr32(bios, NV_PCRTC_GPIO_EXT, bios_rd32(bios, NV_PCRTC_GPIO_EXT) | 1);
-		}
-		if (script == LVDS_PANEL_OFF) {
-			bios_wr32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL, bios_rd32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL) & ~(1 << 31));
-			bios_wr32(bios, NV_PCRTC_GPIO_EXT, bios_rd32(bios, NV_PCRTC_GPIO_EXT) & ~3);
+	if ((dev->pci_device & 0xffff) == 0x0179 ||
+	    (dev->pci_device & 0xffff) == 0x0189 ||
+	    (dev->pci_device & 0xffff) == 0x0329) {
+		if (script == LVDS_RESET) {
+			nv_write_tmds(dev, dcbent->or, 0, 0x02, 0x72);
+
+		} else if (script == LVDS_PANEL_ON) {
+			bios_wr32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL,
+				  bios_rd32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL)
+				  | (1 << 31));
+			bios_wr32(bios, NV_PCRTC_GPIO_EXT,
+				  bios_rd32(bios, NV_PCRTC_GPIO_EXT) | 1);
+
+		} else if (script == LVDS_PANEL_OFF) {
+			bios_wr32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL,
+				  bios_rd32(bios, NV_PBUS_DEBUG_DUALHEAD_CTL)
+				  & ~(1 << 31));
+			bios_wr32(bios, NV_PCRTC_GPIO_EXT,
+				  bios_rd32(bios, NV_PCRTC_GPIO_EXT) & ~3);
 		}
 	}
 #endif
@@ -5434,52 +5402,49 @@ static bool
 parse_dcb15_entry(struct drm_device *dev, struct parsed_dcb *dcb,
 		  uint32_t conn, uint32_t conf, struct dcb_entry *entry)
 {
-	if (conn != 0xf0003f00 && conn != 0xf2247f10 && conn != 0xf2204001 &&
-	    conn != 0xf2204301 && conn != 0xf2204311 && conn != 0xf2208001 &&
-	    conn != 0xf2244001 && conn != 0xf2244301 && conn != 0xf2244311 &&
-	    conn != 0xf4204011 && conn != 0xf4208011 && conn != 0xf4248011 &&
-	    conn != 0xf2045ff2 && conn != 0xf2045f14 && conn != 0xf207df14 &&
-	    conn != 0xf2205004 && conn != 0xf2209004) {
-		NV_ERROR(dev, "Unknown DCB 1.5 entry, please report\n");
-
-		/* cause output setting to fail for !TV, so message is seen */
-		if ((conn & 0xf) != 0x1)
-			dcb->entries = 0;
-
-		return false;
-	}
-	/* most of the below is a "best guess" atm */
-	entry->type = conn & 0xf;
-	if (entry->type == 2)
-		/* another way of specifying straps based lvds... */
+	switch (conn & 0x0000000f) {
+	case 0:
+		entry->type = OUTPUT_ANALOG;
+		break;
+	case 1:
+		entry->type = OUTPUT_TV;
+		break;
+	case 2:
+	case 3:
 		entry->type = OUTPUT_LVDS;
-	if (entry->type == 4) { /* digital */
-		if (conn & 0x10)
-			entry->type = OUTPUT_LVDS;
-		else
+		break;
+	case 4:
+		switch ((conn & 0x000000f0) >> 4) {
+		case 0:
 			entry->type = OUTPUT_TMDS;
+			break;
+		case 1:
+			entry->type = OUTPUT_LVDS;
+			break;
+		default:
+			NV_ERROR(dev, "Unknown DCB subtype 4/%d\n",
+				 (conn & 0x000000f0) >> 4);
+			return false;
+		}
+		break;
+	default:
+		NV_ERROR(dev, "Unknown DCB type %d\n", conn & 0x0000000f);
+		return false;
 	}
-	/* what's in bits 5-13? could be some encoder maker thing, in tv case */
-	entry->i2c_index = (conn >> 14) & 0xf;
-	/* raw heads field is in range 0-1, so move to 1-2 */
-	entry->heads = ((conn >> 18) & 0x7) + 1;
-	entry->location = (conn >> 21) & 0xf;
-	/* unused: entry->bus = (conn >> 25) & 0x7; */
-	/* set or to be same as heads -- hopefully safe enough */
-	entry->or = entry->heads;
+
+	entry->i2c_index = (conn & 0x0003c000) >> 14;
+	entry->heads = ((conn & 0x001c0000) >> 18) + 1;
+	entry->or = entry->heads; /* same as heads, hopefully safe enough */
+	entry->location = (conn & 0x01e00000) >> 21;
+	entry->bus = (conn & 0x0e000000) >> 25;
 	entry->duallink_possible = false;
 
 	switch (entry->type) {
 	case OUTPUT_ANALOG:
 		entry->crtconf.maxfreq = (conf & 0xffff) * 10;
 		break;
-	case OUTPUT_LVDS:
-		/*
-		 * This is probably buried in conn's unknown bits.
-		 * This will upset EDID-ful models, if they exist
-		 */
-		entry->lvdsconf.use_straps_for_mode = true;
-		entry->lvdsconf.use_power_scripts = true;
+	case OUTPUT_TV:
+		entry->tvconf.has_component_output = false;
 		break;
 	case OUTPUT_TMDS:
 		/*
@@ -5488,8 +5453,12 @@ parse_dcb15_entry(struct drm_device *dev, struct parsed_dcb *dcb,
 		 */
 		fabricate_vga_output(dcb, entry->i2c_index, entry->heads);
 		break;
-	case OUTPUT_TV:
-		entry->tvconf.has_component_output = false;
+	case OUTPUT_LVDS:
+		if ((conn & 0x00003f00) != 0x10)
+			entry->lvdsconf.use_straps_for_mode = true;
+		entry->lvdsconf.use_power_scripts = true;
+		break;
+	default:
 		break;
 	}
 
@@ -5564,11 +5533,13 @@ void merge_like_dcb_entries(struct drm_device *dev, struct parsed_dcb *dcb)
 	dcb->entries = newentries;
 }
 
-static int parse_dcb_table(struct drm_device *dev, struct nvbios *bios, bool twoHeads)
+static int
+parse_dcb_table(struct drm_device *dev, struct nvbios *bios, bool twoHeads)
 {
+	struct drm_nouveau_private *dev_priv = dev->dev_private;
 	struct bios_parsed_dcb *bdcb = &bios->bdcb;
 	struct parsed_dcb *dcb;
-	uint16_t dcbptr, i2ctabptr = 0;
+	uint16_t dcbptr = 0, i2ctabptr = 0;
 	uint8_t *dcbtable;
 	uint8_t headerlen = 0x4, entries = DCB_MAX_NUM_ENTRIES;
 	bool configblock = true;
@@ -5579,16 +5550,18 @@ static int parse_dcb_table(struct drm_device *dev, struct nvbios *bios, bool two
 	dcb->entries = 0;
 
 	/* get the offset from 0x36 */
-	dcbptr = ROM16(bios->data[0x36]);
+	if (dev_priv->card_type > NV_04) {
+		dcbptr = ROM16(bios->data[0x36]);
+		if (dcbptr == 0x0000)
+			NV_WARN(dev, "No output data (DCB) found in BIOS\n");
+	}
 
+	/* this situation likely means a really old card, pre DCB */
 	if (dcbptr == 0x0) {
-		NV_WARN(dev, "No output data (DCB) found in BIOS, "
-			       "assuming a CRT output exists\n");
-		/* this situation likely means a really old card, pre DCB */
+		NV_INFO(dev, "Assuming a CRT output exists\n");
 		fabricate_vga_output(dcb, LEGACY_I2C_CRT, 1);
 
-		if (nv04_tv_identify(dev,
-				     bios->legacy.i2c_indices.tv) >= 0)
+		if (nv04_tv_identify(dev, bios->legacy.i2c_indices.tv) >= 0)
 			fabricate_tv_output(dcb, twoHeads);
 
 		return 0;
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
index e342a41..db0ed4c 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
@@ -469,6 +469,8 @@ nouveau_bo_move_accel_cleanup(struct nouveau_channel *chan,
 
 	ret = ttm_bo_move_accel_cleanup(&nvbo->bo, fence, NULL,
 					evict, no_wait, new_mem);
+	if (nvbo->channel && nvbo->channel != chan)
+		ret = nouveau_fence_wait(fence, NULL, false, false);
 	nouveau_fence_unref((void *)&fence);
 	return ret;
 }
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
index 5a10deb..8da3528 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -83,14 +83,16 @@ nouveau_encoder_connector_get(struct nouveau_encoder *encoder)
 static void
 nouveau_connector_destroy(struct drm_connector *drm_connector)
 {
-	struct nouveau_connector *connector = nouveau_connector(drm_connector);
-	struct drm_device *dev = connector->base.dev;
+	struct nouveau_connector *nv_connector =
+		nouveau_connector(drm_connector);
+	struct drm_device *dev = nv_connector->base.dev;
 
 	NV_DEBUG_KMS(dev, "\n");
 
-	if (!connector)
+	if (!nv_connector)
 		return;
 
+	kfree(nv_connector->edid);
 	drm_sysfs_connector_remove(drm_connector);
 	drm_connector_cleanup(drm_connector);
 	kfree(drm_connector);
@@ -237,6 +239,13 @@ nouveau_connector_detect(struct drm_connector *connector)
 		return connector_status_connected;
 	}
 
+	/* Cleanup the previous EDID block. */
+	if (nv_connector->edid) {
+		drm_mode_connector_update_edid_property(connector, NULL);
+		kfree(nv_connector->edid);
+		nv_connector->edid = NULL;
+	}
+
 	i2c = nouveau_connector_ddc_detect(connector, &nv_encoder);
 	if (i2c) {
 		nouveau_connector_ddc_prepare(connector, &flags);
@@ -247,7 +256,7 @@ nouveau_connector_detect(struct drm_connector *connector)
 		if (!nv_connector->edid) {
 			NV_ERROR(dev, "DDC responded, but no EDID for %s\n",
 				 drm_get_connector_name(connector));
-			return connector_status_disconnected;
+			goto detect_analog;
 		}
 
 		if (nv_encoder->dcb->type == OUTPUT_DP &&
@@ -281,6 +290,7 @@ nouveau_connector_detect(struct drm_connector *connector)
 		return connector_status_connected;
 	}
 
+detect_analog:
 	nv_encoder = find_encoder_by_type(connector, OUTPUT_ANALOG);
 	if (!nv_encoder)
 		nv_encoder = find_encoder_by_type(connector, OUTPUT_TV);
@@ -687,8 +697,12 @@ nouveau_connector_create_lvds(struct drm_device *dev,
 	 */
 	if (!nv_connector->edid && !nv_connector->native_mode &&
 	    !dev_priv->VBIOS.pub.fp_no_ddc) {
-		nv_connector->edid =
+		struct edid *edid =
 			(struct edid *)nouveau_bios_embedded_edid(dev);
+		if (edid) {
+			nv_connector->edid = kmalloc(EDID_LENGTH, GFP_KERNEL);
+			*(nv_connector->edid) = *edid;
+		}
 	}
 
 	if (!nv_connector->edid)
diff --git a/drivers/gpu/drm/nouveau/nouveau_dma.c b/drivers/gpu/drm/nouveau/nouveau_dma.c
index 7afbe8b..50d9e67 100644
--- a/drivers/gpu/drm/nouveau/nouveau_dma.c
+++ b/drivers/gpu/drm/nouveau/nouveau_dma.c
@@ -126,47 +126,52 @@ OUT_RINGp(struct nouveau_channel *chan, const void *data, unsigned nr_dwords)
 	chan->dma.cur += nr_dwords;
 }
 
-static inline bool
-READ_GET(struct nouveau_channel *chan, uint32_t *get)
+/* Fetch and adjust GPU GET pointer
+ *
+ * Returns:
+ *  value >= 0, the adjusted GET pointer
+ *  -EINVAL if GET pointer currently outside main push buffer
+ *  -EBUSY if timeout exceeded
+ */
+static inline int
+READ_GET(struct nouveau_channel *chan, uint32_t *prev_get, uint32_t *timeout)
 {
 	uint32_t val;
 
 	val = nvchan_rd32(chan, chan->user_get);
-	if (val < chan->pushbuf_base ||
-	    val > chan->pushbuf_base + (chan->dma.max << 2)) {
-		/* meaningless to dma_wait() except to know whether the
-		 * GPU has stalled or not
-		 */
-		*get = val;
-		return false;
+
+	/* reset counter as long as GET is still advancing, this is
+	 * to avoid misdetecting a GPU lockup if the GPU happens to
+	 * just be processing an operation that takes a long time
+	 */
+	if (val != *prev_get) {
+		*prev_get = val;
+		*timeout = 0;
+	}
+
+	if ((++*timeout & 0xff) == 0) {
+		DRM_UDELAY(1);
+		if (*timeout > 100000)
+			return -EBUSY;
 	}
 
-	*get = (val - chan->pushbuf_base) >> 2;
-	return true;
+	if (val < chan->pushbuf_base ||
+	    val > chan->pushbuf_base + (chan->dma.max << 2))
+		return -EINVAL;
+
+	return (val - chan->pushbuf_base) >> 2;
 }
 
 int
 nouveau_dma_wait(struct nouveau_channel *chan, int size)
 {
-	uint32_t get, prev_get = 0, cnt = 0;
-	bool get_valid;
+	uint32_t prev_get = 0, cnt = 0;
+	int get;
 
 	while (chan->dma.free < size) {
-		/* reset counter as long as GET is still advancing, this is
-		 * to avoid misdetecting a GPU lockup if the GPU happens to
-		 * just be processing an operation that takes a long time
-		 */
-		get_valid = READ_GET(chan, &get);
-		if (get != prev_get) {
-			prev_get = get;
-			cnt = 0;
-		}
-
-		if ((++cnt & 0xff) == 0) {
-			DRM_UDELAY(1);
-			if (cnt > 100000)
-				return -EBUSY;
-		}
+		get = READ_GET(chan, &prev_get, &cnt);
+		if (unlikely(get == -EBUSY))
+			return -EBUSY;
 
 		/* loop until we have a usable GET pointer.  the value
 		 * we read from the GPU may be outside the main ring if
@@ -177,7 +182,7 @@ nouveau_dma_wait(struct nouveau_channel *chan, int size)
 		 * from the SKIPS area, so the code below doesn't have to deal
 		 * with some fun corner cases.
 		 */
-		if (!get_valid || get < NOUVEAU_DMA_SKIPS)
+		if (unlikely(get == -EINVAL) || get < NOUVEAU_DMA_SKIPS)
 			continue;
 
 		if (get <= chan->dma.cur) {
@@ -203,6 +208,19 @@ nouveau_dma_wait(struct nouveau_channel *chan, int size)
 			 * after processing the currently pending commands.
 			 */
 			OUT_RING(chan, chan->pushbuf_base | 0x20000000);
+
+			/* wait for GET to depart from the skips area.
+			 * prevents writing GET==PUT and causing a race
+			 * condition that causes us to think the GPU is
+			 * idle when it's not.
+			 */
+			do {
+				get = READ_GET(chan, &prev_get, &cnt);
+				if (unlikely(get == -EBUSY))
+					return -EBUSY;
+				if (unlikely(get == -EINVAL))
+					continue;
+			} while (get <= NOUVEAU_DMA_SKIPS);
 			WRITE_PUT(NOUVEAU_DMA_SKIPS);
 
 			/* we're now submitting commands at the start of
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h
index 026419f..cc36866 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.h
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
@@ -509,6 +509,8 @@ struct drm_nouveau_private {
 	void __iomem *ramin;
 	uint32_t ramin_size;
 
+	struct nouveau_bo *vga_ram;
+
 	struct workqueue_struct *wq;
 	struct work_struct irq_work;
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
index 2009db2..5048330 100644
--- a/drivers/gpu/drm/nouveau/nouveau_gem.c
+++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
@@ -466,13 +466,14 @@ u_memcpya(uint64_t user, unsigned nmemb, unsigned size)
 static int
 nouveau_gem_pushbuf_reloc_apply(struct nouveau_channel *chan, int nr_bo,
 				struct drm_nouveau_gem_pushbuf_bo *bo,
-				int nr_relocs, uint64_t ptr_relocs,
-				int nr_dwords, int first_dword,
+				unsigned nr_relocs, uint64_t ptr_relocs,
+				unsigned nr_dwords, unsigned first_dword,
 				uint32_t *pushbuf, bool is_iomem)
 {
 	struct drm_nouveau_gem_pushbuf_reloc *reloc = NULL;
 	struct drm_device *dev = chan->dev;
-	int ret = 0, i;
+	int ret = 0;
+	unsigned i;
 
 	reloc = u_memcpya(ptr_relocs, nr_relocs, sizeof(*reloc));
 	if (IS_ERR(reloc))
@@ -667,6 +668,18 @@ nouveau_gem_ioctl_pushbuf_call(struct drm_device *dev, void *data,
 	}
 	pbbo = nouveau_gem_object(gem);
 
+	if ((req->offset & 3) || req->nr_dwords < 2 ||
+	    (unsigned long)req->offset > (unsigned long)pbbo->bo.mem.size ||
+	    (unsigned long)req->nr_dwords >
+	     ((unsigned long)(pbbo->bo.mem.size - req->offset ) >> 2)) {
+		NV_ERROR(dev, "pb call misaligned or out of bounds: "
+			      "%d + %d * 4 > %ld\n",
+			 req->offset, req->nr_dwords, pbbo->bo.mem.size);
+		ret = -EINVAL;
+		drm_gem_object_unreference(gem);
+		goto out;
+	}
+
 	ret = ttm_bo_reserve(&pbbo->bo, false, false, true,
 			     chan->fence.sequence);
 	if (ret) {
diff --git a/drivers/gpu/drm/nouveau/nouveau_irq.c b/drivers/gpu/drm/nouveau/nouveau_irq.c
index 919a619..3b9bad6 100644
--- a/drivers/gpu/drm/nouveau/nouveau_irq.c
+++ b/drivers/gpu/drm/nouveau/nouveau_irq.c
@@ -483,6 +483,13 @@ nouveau_pgraph_intr_error(struct drm_device *dev, uint32_t nsource)
 	if (nsource & NV03_PGRAPH_NSOURCE_ILLEGAL_MTHD) {
 		if (nouveau_pgraph_intr_swmthd(dev, &trap))
 			unhandled = 1;
+	} else if (nsource & NV03_PGRAPH_NSOURCE_DMA_VTX_PROTECTION) {
+		uint32_t v = nv_rd32(dev, 0x402000);
+		nv_wr32(dev, 0x402000, v);
+
+		/* dump the error anyway for now: it's useful for
+		   Gallium development */
+		unhandled = 1;
 	} else {
 		unhandled = 1;
 	}
diff --git a/drivers/gpu/drm/nouveau/nouveau_mem.c b/drivers/gpu/drm/nouveau/nouveau_mem.c
index fb9bdd6..8f3a12f 100644
--- a/drivers/gpu/drm/nouveau/nouveau_mem.c
+++ b/drivers/gpu/drm/nouveau/nouveau_mem.c
@@ -383,9 +383,8 @@ void nouveau_mem_close(struct drm_device *dev)
 {
 	struct drm_nouveau_private *dev_priv = dev->dev_private;
 
-	if (dev_priv->ttm.bdev.man[TTM_PL_PRIV0].has_type)
-		ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_PRIV0);
-	ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_VRAM);
+	nouveau_bo_unpin(dev_priv->vga_ram);
+	nouveau_bo_ref(NULL, &dev_priv->vga_ram);
 
 	ttm_bo_device_release(&dev_priv->ttm.bdev);
 
@@ -622,6 +621,15 @@ nouveau_mem_init(struct drm_device *dev)
 		return ret;
 	}
 
+	ret = nouveau_bo_new(dev, NULL, 256*1024, 0, TTM_PL_FLAG_VRAM,
+			     0, 0, true, true, &dev_priv->vga_ram);
+	if (ret == 0)
+		ret = nouveau_bo_pin(dev_priv->vga_ram, TTM_PL_FLAG_VRAM);
+	if (ret) {
+		NV_WARN(dev, "failed to reserve VGA memory\n");
+		nouveau_bo_ref(NULL, &dev_priv->vga_ram);
+	}
+
 	/* GART */
 #if !defined(__powerpc__) && !defined(__ia64__)
 	if (drm_device_is_agp(dev) && dev->agp) {
@@ -653,6 +661,7 @@ nouveau_mem_init(struct drm_device *dev)
 	dev_priv->fb_mtrr = drm_mtrr_add(drm_get_resource_start(dev, 1),
 					 drm_get_resource_len(dev, 1),
 					 DRM_MTRR_WC);
+
 	return 0;
 }
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
index 09b9a46..f2d0187 100644
--- a/drivers/gpu/drm/nouveau/nouveau_state.c
+++ b/drivers/gpu/drm/nouveau/nouveau_state.c
@@ -525,6 +525,7 @@ static void nouveau_card_takedown(struct drm_device *dev)
 		engine->mc.takedown(dev);
 
 		mutex_lock(&dev->struct_mutex);
+		ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_VRAM);
 		ttm_bo_clean_mm(&dev_priv->ttm.bdev, TTM_PL_TT);
 		mutex_unlock(&dev->struct_mutex);
 		nouveau_sgdma_takedown(dev);
diff --git a/drivers/gpu/drm/nouveau/nv04_instmem.c b/drivers/gpu/drm/nouveau/nv04_instmem.c
index a20c206..a3b9563 100644
--- a/drivers/gpu/drm/nouveau/nv04_instmem.c
+++ b/drivers/gpu/drm/nouveau/nv04_instmem.c
@@ -30,7 +30,7 @@ nv04_instmem_determine_amount(struct drm_device *dev)
 		 * of vram.  For now, only reserve a small piece until we know
 		 * more about what each chipset requires.
 		 */
-		switch (dev_priv->chipset & 0xf0) {
+		switch (dev_priv->chipset) {
 		case 0x40:
 		case 0x47:
 		case 0x49:
diff --git a/drivers/gpu/drm/nouveau/nv50_crtc.c b/drivers/gpu/drm/nouveau/nv50_crtc.c
index 118d328..40b7360 100644
--- a/drivers/gpu/drm/nouveau/nv50_crtc.c
+++ b/drivers/gpu/drm/nouveau/nv50_crtc.c
@@ -432,6 +432,7 @@ nv50_crtc_prepare(struct drm_crtc *crtc)
 	struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
 	struct drm_device *dev = crtc->dev;
 	struct drm_encoder *encoder;
+	uint32_t dac = 0, sor = 0;
 
 	NV_DEBUG_KMS(dev, "index %d\n", nv_crtc->index);
 
@@ -439,9 +440,28 @@ nv50_crtc_prepare(struct drm_crtc *crtc)
 	list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
 		struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
 
-		if (drm_helper_encoder_in_use(encoder))
+		if (!drm_helper_encoder_in_use(encoder))
 			continue;
 
+		if (nv_encoder->dcb->type == OUTPUT_ANALOG ||
+		    nv_encoder->dcb->type == OUTPUT_TV)
+			dac |= (1 << nv_encoder->or);
+		else
+			sor |= (1 << nv_encoder->or);
+	}
+
+	list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
+		struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
+
+		if (nv_encoder->dcb->type == OUTPUT_ANALOG ||
+		    nv_encoder->dcb->type == OUTPUT_TV) {
+			if (dac & (1 << nv_encoder->or))
+				continue;
+		} else {
+			if (sor & (1 << nv_encoder->or))
+				continue;
+		}
+
 		nv_encoder->disconnect(nv_encoder);
 	}
 
diff --git a/drivers/gpu/drm/nouveau/nv50_fifo.c b/drivers/gpu/drm/nouveau/nv50_fifo.c
index 39caf16..32b244b 100644
--- a/drivers/gpu/drm/nouveau/nv50_fifo.c
+++ b/drivers/gpu/drm/nouveau/nv50_fifo.c
@@ -272,7 +272,7 @@ nv50_fifo_create_context(struct nouveau_channel *chan)
 			return ret;
 		ramfc = chan->ramfc->gpuobj;
 
-		ret = nouveau_gpuobj_new_ref(dev, chan, NULL, 0, 4096, 256,
+		ret = nouveau_gpuobj_new_ref(dev, chan, NULL, 0, 4096, 1024,
 					     0, &chan->cache);
 		if (ret)
 			return ret;
diff --git a/drivers/gpu/drm/nouveau/nv50_graph.c b/drivers/gpu/drm/nouveau/nv50_graph.c
index ca79f32..20319e5 100644
--- a/drivers/gpu/drm/nouveau/nv50_graph.c
+++ b/drivers/gpu/drm/nouveau/nv50_graph.c
@@ -84,7 +84,7 @@ nv50_graph_init_regs__nv(struct drm_device *dev)
 	nv_wr32(dev, 0x400804, 0xc0000000);
 	nv_wr32(dev, 0x406800, 0xc0000000);
 	nv_wr32(dev, 0x400c04, 0xc0000000);
-	nv_wr32(dev, 0x401804, 0xc0000000);
+	nv_wr32(dev, 0x401800, 0xc0000000);
 	nv_wr32(dev, 0x405018, 0xc0000000);
 	nv_wr32(dev, 0x402000, 0xc0000000);
 
@@ -282,6 +282,7 @@ nv50_graph_unload_context(struct drm_device *dev)
 		return 0;
 	inst &= NV50_PGRAPH_CTXCTL_CUR_INSTANCE;
 
+	nouveau_wait_for_idle(dev);
 	nv_wr32(dev, 0x400500, fifo & ~1);
 	nv_wr32(dev, 0x400784, inst);
 	nv_wr32(dev, 0x400824, nv_rd32(dev, 0x400824) | 0x20);

drm-upgrayedd.patch:
 b/drivers/char/agp/Kconfig                        |    3 
 b/drivers/char/agp/amd64-agp.c                    |    9 
 b/drivers/char/agp/frontend.c                     |   28 
 b/drivers/char/agp/intel-agp.c                    |   96 
 b/drivers/char/agp/uninorth-agp.c                 |   77 
 b/drivers/gpu/drm/Makefile                        |    5 
 b/drivers/gpu/drm/drm_crtc.c                      |  181 
 b/drivers/gpu/drm/drm_crtc_helper.c               |   28 
 b/drivers/gpu/drm/drm_dp_i2c_helper.c             |  209 
 b/drivers/gpu/drm/drm_drv.c                       |   55 
 b/drivers/gpu/drm/drm_edid.c                      |  332 -
 b/drivers/gpu/drm/drm_fb_helper.c                 |   34 
 b/drivers/gpu/drm/drm_fops.c                      |  112 
 b/drivers/gpu/drm/drm_ioc32.c                     |   89 
 b/drivers/gpu/drm/drm_irq.c                       |  101 
 b/drivers/gpu/drm/drm_mm.c                        |  112 
 b/drivers/gpu/drm/drm_modes.c                     |   28 
 b/drivers/gpu/drm/drm_stub.c                      |   15 
 b/drivers/gpu/drm/i2c/Makefile                    |    4 
 b/drivers/gpu/drm/i2c/ch7006_drv.c                |  536 +
 b/drivers/gpu/drm/i2c/ch7006_mode.c               |  468 +
 b/drivers/gpu/drm/i2c/ch7006_priv.h               |  344 +
 b/drivers/gpu/drm/i810/i810_dma.c                 |    2 
 b/drivers/gpu/drm/i810/i810_drv.c                 |    2 
 b/drivers/gpu/drm/i830/i830_dma.c                 |    2 
 b/drivers/gpu/drm/i830/i830_drv.c                 |    2 
 b/drivers/gpu/drm/i915/Makefile                   |    2 
 b/drivers/gpu/drm/i915/dvo_ch7017.c               |    9 
 b/drivers/gpu/drm/i915/dvo_ch7xxx.c               |   16 
 b/drivers/gpu/drm/i915/dvo_ivch.c                 |   37 
 b/drivers/gpu/drm/i915/dvo_sil164.c               |   20 
 b/drivers/gpu/drm/i915/dvo_tfp410.c               |   34 
 b/drivers/gpu/drm/i915/i915_debugfs.c             |  141 
 b/drivers/gpu/drm/i915/i915_dma.c                 |   63 
 b/drivers/gpu/drm/i915/i915_drv.c                 |  177 
 b/drivers/gpu/drm/i915/i915_drv.h                 |  182 
 b/drivers/gpu/drm/i915/i915_gem.c                 |  352 +
 b/drivers/gpu/drm/i915/i915_gem_tiling.c          |   52 
 b/drivers/gpu/drm/i915/i915_ioc32.c               |   23 
 b/drivers/gpu/drm/i915/i915_irq.c                 |  195 
 b/drivers/gpu/drm/i915/i915_opregion.c            |   92 
 b/drivers/gpu/drm/i915/i915_reg.h                 |   78 
 b/drivers/gpu/drm/i915/i915_suspend.c             |   86 
 b/drivers/gpu/drm/i915/intel_bios.c               |  137 
 b/drivers/gpu/drm/i915/intel_bios.h               |   17 
 b/drivers/gpu/drm/i915/intel_crt.c                |   52 
 b/drivers/gpu/drm/i915/intel_display.c            | 1116 ++--
 b/drivers/gpu/drm/i915/intel_dp.c                 |  162 
 b/drivers/gpu/drm/i915/intel_drv.h                |   44 
 b/drivers/gpu/drm/i915/intel_fb.c                 |    9 
 b/drivers/gpu/drm/i915/intel_hdmi.c               |   60 
 b/drivers/gpu/drm/i915/intel_i2c.c                |   21 
 b/drivers/gpu/drm/i915/intel_lvds.c               |  176 
 b/drivers/gpu/drm/i915/intel_overlay.c            | 1416 +++++
 b/drivers/gpu/drm/i915/intel_sdvo.c               |   19 
 b/drivers/gpu/drm/i915/intel_tv.c                 |   49 
 b/drivers/gpu/drm/mga/mga_drv.c                   |    2 
 b/drivers/gpu/drm/mga/mga_ioc32.c                 |   13 
 b/drivers/gpu/drm/nouveau/Kconfig                 |   44 
 b/drivers/gpu/drm/nouveau/Makefile                |   32 
 b/drivers/gpu/drm/nouveau/nouveau_acpi.c          |  125 
 b/drivers/gpu/drm/nouveau/nouveau_backlight.c     |  155 
 b/drivers/gpu/drm/nouveau/nouveau_bios.c          | 6078 ++++++++++++++++++++++
 b/drivers/gpu/drm/nouveau/nouveau_bios.h          |  290 +
 b/drivers/gpu/drm/nouveau/nouveau_bo.c            |  771 ++
 b/drivers/gpu/drm/nouveau/nouveau_calc.c          |  478 +
 b/drivers/gpu/drm/nouveau/nouveau_channel.c       |  431 +
 b/drivers/gpu/drm/nouveau/nouveau_connector.c     |  824 ++
 b/drivers/gpu/drm/nouveau/nouveau_connector.h     |   54 
 b/drivers/gpu/drm/nouveau/nouveau_crtc.h          |   95 
 b/drivers/gpu/drm/nouveau/nouveau_debugfs.c       |  155 
 b/drivers/gpu/drm/nouveau/nouveau_display.c       |  115 
 b/drivers/gpu/drm/nouveau/nouveau_dma.c           |  226 
 b/drivers/gpu/drm/nouveau/nouveau_dma.h           |  159 
 b/drivers/gpu/drm/nouveau/nouveau_dp.c            |  569 ++
 b/drivers/gpu/drm/nouveau/nouveau_drv.c           |  409 +
 b/drivers/gpu/drm/nouveau/nouveau_drv.h           | 1345 ++++
 b/drivers/gpu/drm/nouveau/nouveau_encoder.h       |   91 
 b/drivers/gpu/drm/nouveau/nouveau_fb.h            |   47 
 b/drivers/gpu/drm/nouveau/nouveau_fbcon.c         |  389 +
 b/drivers/gpu/drm/nouveau/nouveau_fbcon.h         |   48 
 b/drivers/gpu/drm/nouveau/nouveau_fence.c         |  262 
 b/drivers/gpu/drm/nouveau/nouveau_gem.c           |  978 +++
 b/drivers/gpu/drm/nouveau/nouveau_grctx.c         |  161 
 b/drivers/gpu/drm/nouveau/nouveau_grctx.h         |  133 
 b/drivers/gpu/drm/nouveau/nouveau_hw.c            | 1080 +++
 b/drivers/gpu/drm/nouveau/nouveau_hw.h            |  455 +
 b/drivers/gpu/drm/nouveau/nouveau_i2c.c           |  269 
 b/drivers/gpu/drm/nouveau/nouveau_i2c.h           |   52 
 b/drivers/gpu/drm/nouveau/nouveau_ioc32.c         |   70 
 b/drivers/gpu/drm/nouveau/nouveau_irq.c           |  703 ++
 b/drivers/gpu/drm/nouveau/nouveau_mem.c           |  659 ++
 b/drivers/gpu/drm/nouveau/nouveau_notifier.c      |  196 
 b/drivers/gpu/drm/nouveau/nouveau_object.c        | 1294 ++++
 b/drivers/gpu/drm/nouveau/nouveau_reg.h           |  836 +++
 b/drivers/gpu/drm/nouveau/nouveau_sgdma.c         |  321 +
 b/drivers/gpu/drm/nouveau/nouveau_state.c         |  871 +++
 b/drivers/gpu/drm/nouveau/nouveau_ttm.c           |  103 
 b/drivers/gpu/drm/nouveau/nv04_crtc.c             | 1002 +++
 b/drivers/gpu/drm/nouveau/nv04_cursor.c           |   70 
 b/drivers/gpu/drm/nouveau/nv04_dac.c              |  527 +
 b/drivers/gpu/drm/nouveau/nv04_dfp.c              |  623 ++
 b/drivers/gpu/drm/nouveau/nv04_display.c          |  287 +
 b/drivers/gpu/drm/nouveau/nv04_fb.c               |   21 
 b/drivers/gpu/drm/nouveau/nv04_fbcon.c            |  315 +
 b/drivers/gpu/drm/nouveau/nv04_fifo.c             |  305 +
 b/drivers/gpu/drm/nouveau/nv04_graph.c            |  584 ++
 b/drivers/gpu/drm/nouveau/nv04_instmem.c          |  208 
 b/drivers/gpu/drm/nouveau/nv04_mc.c               |   20 
 b/drivers/gpu/drm/nouveau/nv04_timer.c            |   51 
 b/drivers/gpu/drm/nouveau/nv04_tv.c               |  305 +
 b/drivers/gpu/drm/nouveau/nv10_fb.c               |   44 
 b/drivers/gpu/drm/nouveau/nv10_fifo.c             |  260 
 b/drivers/gpu/drm/nouveau/nv10_graph.c            | 1009 +++
 b/drivers/gpu/drm/nouveau/nv17_gpio.c             |   92 
 b/drivers/gpu/drm/nouveau/nv17_tv.c               |  776 ++
 b/drivers/gpu/drm/nouveau/nv17_tv.h               |  156 
 b/drivers/gpu/drm/nouveau/nv17_tv_modes.c         |  583 ++
 b/drivers/gpu/drm/nouveau/nv20_graph.c            |  775 ++
 b/drivers/gpu/drm/nouveau/nv40_fb.c               |   75 
 b/drivers/gpu/drm/nouveau/nv40_fifo.c             |  314 +
 b/drivers/gpu/drm/nouveau/nv40_graph.c            |  406 +
 b/drivers/gpu/drm/nouveau/nv40_grctx.c            |  678 ++
 b/drivers/gpu/drm/nouveau/nv40_mc.c               |   38 
 b/drivers/gpu/drm/nouveau/nv50_crtc.c             |  769 ++
 b/drivers/gpu/drm/nouveau/nv50_cursor.c           |  156 
 b/drivers/gpu/drm/nouveau/nv50_dac.c              |  304 +
 b/drivers/gpu/drm/nouveau/nv50_display.c          | 1032 +++
 b/drivers/gpu/drm/nouveau/nv50_display.h          |   46 
 b/drivers/gpu/drm/nouveau/nv50_evo.h              |  113 
 b/drivers/gpu/drm/nouveau/nv50_fbcon.c            |  270 
 b/drivers/gpu/drm/nouveau/nv50_fifo.c             |  492 +
 b/drivers/gpu/drm/nouveau/nv50_graph.c            |  389 +
 b/drivers/gpu/drm/nouveau/nv50_instmem.c          |  509 +
 b/drivers/gpu/drm/nouveau/nv50_mc.c               |   40 
 b/drivers/gpu/drm/nouveau/nv50_sor.c              |  309 +
 b/drivers/gpu/drm/nouveau/nvreg.h                 |  535 +
 b/drivers/gpu/drm/r128/r128_drv.c                 |    2 
 b/drivers/gpu/drm/r128/r128_ioc32.c               |   16 
 b/drivers/gpu/drm/radeon/Makefile                 |    7 
 b/drivers/gpu/drm/radeon/ObjectID.h               |  801 +-
 b/drivers/gpu/drm/radeon/atom.c                   |   45 
 b/drivers/gpu/drm/radeon/atom.h                   |    3 
 b/drivers/gpu/drm/radeon/atombios.h               |  217 
 b/drivers/gpu/drm/radeon/atombios_crtc.c          |   57 
 b/drivers/gpu/drm/radeon/atombios_dp.c            |  792 ++
 b/drivers/gpu/drm/radeon/mkregtable.c             |    4 
 b/drivers/gpu/drm/radeon/r100.c                   |  308 -
 b/drivers/gpu/drm/radeon/r100_track.h             |   19 
 b/drivers/gpu/drm/radeon/r200.c                   |   10 
 b/drivers/gpu/drm/radeon/r300.c                   |  104 
 b/drivers/gpu/drm/radeon/r300_cmdbuf.c            |    6 
 b/drivers/gpu/drm/radeon/r300_reg.h               |    1 
 b/drivers/gpu/drm/radeon/r420.c                   |   66 
 b/drivers/gpu/drm/radeon/r500_reg.h               |    2 
 b/drivers/gpu/drm/radeon/r520.c                   |    9 
 b/drivers/gpu/drm/radeon/r600.c                   | 1177 +++-
 b/drivers/gpu/drm/radeon/r600_audio.c             |  267 
 b/drivers/gpu/drm/radeon/r600_blit_kms.c          |   34 
 b/drivers/gpu/drm/radeon/r600_cs.c                |    4 
 b/drivers/gpu/drm/radeon/r600_hdmi.c              |  506 +
 b/drivers/gpu/drm/radeon/r600_reg.h               |   74 
 b/drivers/gpu/drm/radeon/r600d.h                  |  212 
 b/drivers/gpu/drm/radeon/radeon.h                 |  197 
 b/drivers/gpu/drm/radeon/radeon_agp.c             |    6 
 b/drivers/gpu/drm/radeon/radeon_asic.h            |   65 
 b/drivers/gpu/drm/radeon/radeon_atombios.c        |  468 +
 b/drivers/gpu/drm/radeon/radeon_benchmark.c       |   36 
 b/drivers/gpu/drm/radeon/radeon_clocks.c          |   25 
 b/drivers/gpu/drm/radeon/radeon_combios.c         |  761 ++
 b/drivers/gpu/drm/radeon/radeon_connectors.c      |  221 
 b/drivers/gpu/drm/radeon/radeon_cp.c              |   46 
 b/drivers/gpu/drm/radeon/radeon_cs.c              |   13 
 b/drivers/gpu/drm/radeon/radeon_device.c          |  148 
 b/drivers/gpu/drm/radeon/radeon_display.c         |  157 
 b/drivers/gpu/drm/radeon/radeon_drv.c             |   12 
 b/drivers/gpu/drm/radeon/radeon_drv.h             |    1 
 b/drivers/gpu/drm/radeon/radeon_encoders.c        |  322 -
 b/drivers/gpu/drm/radeon/radeon_fb.c              |   74 
 b/drivers/gpu/drm/radeon/radeon_fence.c           |   65 
 b/drivers/gpu/drm/radeon/radeon_fixed.h           |   17 
 b/drivers/gpu/drm/radeon/radeon_gart.c            |   42 
 b/drivers/gpu/drm/radeon/radeon_gem.c             |  108 
 b/drivers/gpu/drm/radeon/radeon_i2c.c             |  182 
 b/drivers/gpu/drm/radeon/radeon_ioc32.c           |   38 
 b/drivers/gpu/drm/radeon/radeon_irq.c             |   10 
 b/drivers/gpu/drm/radeon/radeon_irq_kms.c         |   71 
 b/drivers/gpu/drm/radeon/radeon_kms.c             |   42 
 b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c     |  102 
 b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c |  127 
 b/drivers/gpu/drm/radeon/radeon_legacy_tv.c       |   14 
 b/drivers/gpu/drm/radeon/radeon_mode.h            |  184 
 b/drivers/gpu/drm/radeon/radeon_object.c          |  579 --
 b/drivers/gpu/drm/radeon/radeon_object.h          |  151 
 b/drivers/gpu/drm/radeon/radeon_pm.c              |    9 
 b/drivers/gpu/drm/radeon/radeon_reg.h             |   60 
 b/drivers/gpu/drm/radeon/radeon_ring.c            |   67 
 b/drivers/gpu/drm/radeon/radeon_state.c           |    2 
 b/drivers/gpu/drm/radeon/radeon_test.c            |   55 
 b/drivers/gpu/drm/radeon/radeon_ttm.c             |  110 
 b/drivers/gpu/drm/radeon/reg_srcs/r420            |  795 ++
 b/drivers/gpu/drm/radeon/reg_srcs/rs600           |   68 
 b/drivers/gpu/drm/radeon/reg_srcs/rv515           |    6 
 b/drivers/gpu/drm/radeon/rs400.c                  |   21 
 b/drivers/gpu/drm/radeon/rs600.c                  |  233 
 b/drivers/gpu/drm/radeon/rs600d.h                 |  112 
 b/drivers/gpu/drm/radeon/rs690.c                  |   40 
 b/drivers/gpu/drm/radeon/rv515.c                  |   25 
 b/drivers/gpu/drm/radeon/rv770.c                  |   94 
 b/drivers/gpu/drm/savage/savage_drv.c             |    2 
 b/drivers/gpu/drm/sis/sis_drv.c                   |    2 
 b/drivers/gpu/drm/tdfx/tdfx_drv.c                 |    2 
 b/drivers/gpu/drm/ttm/Makefile                    |    3 
 b/drivers/gpu/drm/ttm/ttm_bo.c                    |  674 +-
 b/drivers/gpu/drm/ttm/ttm_bo_util.c               |    3 
 b/drivers/gpu/drm/ttm/ttm_bo_vm.c                 |    9 
 b/drivers/gpu/drm/ttm/ttm_execbuf_util.c          |  117 
 b/drivers/gpu/drm/ttm/ttm_lock.c                  |  311 +
 b/drivers/gpu/drm/ttm/ttm_memory.c                |   16 
 b/drivers/gpu/drm/ttm/ttm_object.c                |  452 +
 b/drivers/gpu/drm/ttm/ttm_tt.c                    |    1 
 b/drivers/gpu/drm/via/via_drv.c                   |    2 
 b/drivers/gpu/drm/vmwgfx/Kconfig                  |   13 
 b/drivers/gpu/drm/vmwgfx/Makefile                 |    9 
 b/drivers/gpu/drm/vmwgfx/svga3d_reg.h             | 1793 ++++++
 b/drivers/gpu/drm/vmwgfx/svga_escape.h            |   89 
 b/drivers/gpu/drm/vmwgfx/svga_overlay.h           |  201 
 b/drivers/gpu/drm/vmwgfx/svga_reg.h               | 1346 ++++
 b/drivers/gpu/drm/vmwgfx/svga_types.h             |   45 
 b/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c          |  229 
 b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c             |  726 ++
 b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h             |  513 +
 b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c         |  621 ++
 b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c              |  742 ++
 b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c            |  519 +
 b/drivers/gpu/drm/vmwgfx/vmwgfx_gmr.c             |  213 
 b/drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c           |   81 
 b/drivers/gpu/drm/vmwgfx/vmwgfx_irq.c             |  293 +
 b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c             |  872 +++
 b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h             |  102 
 b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c             |  516 +
 b/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c         |  634 ++
 b/drivers/gpu/drm/vmwgfx/vmwgfx_reg.h             |   57 
 b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c        | 1183 ++++
 b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c        |   99 
 b/include/drm/Kbuild                              |    2 
 b/include/drm/drm.h                               |   65 
 b/include/drm/drmP.h                              |   91 
 b/include/drm/drm_crtc.h                          |   47 
 b/include/drm/drm_dp_helper.h                     |  180 
 b/include/drm/drm_edid.h                          |    8 
 b/include/drm/drm_mm.h                            |   35 
 b/include/drm/drm_mode.h                          |   81 
 b/include/drm/drm_os_linux.h                      |    2 
 b/include/drm/i2c/ch7006.h                        |   86 
 b/include/drm/i915_drm.h                          |  132 
 b/include/drm/mga_drm.h                           |    2 
 b/include/drm/nouveau_drm.h                       |  220 
 b/include/drm/radeon_drm.h                        |    2 
 b/include/drm/ttm/ttm_bo_api.h                    |  115 
 b/include/drm/ttm/ttm_bo_driver.h                 |   37 
 b/include/drm/ttm/ttm_execbuf_util.h              |  107 
 b/include/drm/ttm/ttm_lock.h                      |  247 
 b/include/drm/ttm/ttm_object.h                    |  271 
 b/include/drm/via_drm.h                           |    2 
 b/include/drm/vmwgfx_drm.h                        |  575 ++
 drivers/gpu/drm/i915/intel_dp.h                   |  144 
 drivers/gpu/drm/i915/intel_dp_i2c.c               |  273 
 268 files changed, 65111 insertions(+), 4414 deletions(-)

--- NEW FILE drm-upgrayedd.patch ---
>From 718522b6c04e3f16d61cca8d481c700758bacb33 Mon Sep 17 00:00:00 2001
From: Kyle McMartin <kyle at ihatethathostname.lab.bos.redhat.com>
Date: Mon, 18 Jan 2010 14:10:14 -0500
Subject: drm-upgrayedd

---
 drivers/char/agp/Kconfig                        |    3 +-
 drivers/char/agp/amd64-agp.c                    |    9 +-
 drivers/char/agp/frontend.c                     |   28 +-
 drivers/char/agp/intel-agp.c                    |   96 +-
 drivers/char/agp/uninorth-agp.c                 |   77 +-
 drivers/gpu/drm/Makefile                        |    5 +-
 drivers/gpu/drm/drm_crtc.c                      |  181 +-
 drivers/gpu/drm/drm_crtc_helper.c               |   28 +-
 drivers/gpu/drm/drm_dp_i2c_helper.c             |  209 +
 drivers/gpu/drm/drm_drv.c                       |   55 +-
 drivers/gpu/drm/drm_edid.c                      |  332 +-
 drivers/gpu/drm/drm_fb_helper.c                 |   34 +-
 drivers/gpu/drm/drm_fops.c                      |  112 +-
 drivers/gpu/drm/drm_ioc32.c                     |   89 +-
 drivers/gpu/drm/drm_irq.c                       |  101 +-
 drivers/gpu/drm/drm_mm.c                        |  112 +-
 drivers/gpu/drm/drm_modes.c                     |   28 +-
 drivers/gpu/drm/drm_stub.c                      |   15 +
 drivers/gpu/drm/i2c/Makefile                    |    4 +
 drivers/gpu/drm/i2c/ch7006_drv.c                |  536 ++
 drivers/gpu/drm/i2c/ch7006_mode.c               |  468 ++
 drivers/gpu/drm/i2c/ch7006_priv.h               |  344 ++
 drivers/gpu/drm/i810/i810_dma.c                 |    2 +-
 drivers/gpu/drm/i810/i810_drv.c                 |    2 +-
 drivers/gpu/drm/i830/i830_dma.c                 |    2 +-
 drivers/gpu/drm/i830/i830_drv.c                 |    2 +-
 drivers/gpu/drm/i915/Makefile                   |    2 +-
 drivers/gpu/drm/i915/dvo_ch7017.c               |    9 +-
 drivers/gpu/drm/i915/dvo_ch7xxx.c               |   16 +-
 drivers/gpu/drm/i915/dvo_ivch.c                 |   37 +-
 drivers/gpu/drm/i915/dvo_sil164.c               |   20 +-
 drivers/gpu/drm/i915/dvo_tfp410.c               |   34 +-
 drivers/gpu/drm/i915/i915_debugfs.c             |  141 +-
 drivers/gpu/drm/i915/i915_dma.c                 |   63 +-
 drivers/gpu/drm/i915/i915_drv.c                 |  177 +-
 drivers/gpu/drm/i915/i915_drv.h                 |  182 +-
 drivers/gpu/drm/i915/i915_gem.c                 |  352 +-
 drivers/gpu/drm/i915/i915_gem_tiling.c          |   52 +-
 drivers/gpu/drm/i915/i915_ioc32.c               |   23 +-
 drivers/gpu/drm/i915/i915_irq.c                 |  195 +-
 drivers/gpu/drm/i915/i915_opregion.c            |   92 +-
 drivers/gpu/drm/i915/i915_reg.h                 |   78 +-
 drivers/gpu/drm/i915/i915_suspend.c             |   86 +-
 drivers/gpu/drm/i915/intel_bios.c               |  137 +-
 drivers/gpu/drm/i915/intel_bios.h               |   17 +
 drivers/gpu/drm/i915/intel_crt.c                |   52 +-
 drivers/gpu/drm/i915/intel_display.c            | 1116 +++--
 drivers/gpu/drm/i915/intel_dp.c                 |  162 +-
 drivers/gpu/drm/i915/intel_dp.h                 |  144 -
 drivers/gpu/drm/i915/intel_dp_i2c.c             |  273 -
 drivers/gpu/drm/i915/intel_drv.h                |   44 +
 drivers/gpu/drm/i915/intel_fb.c                 |    9 +-
 drivers/gpu/drm/i915/intel_hdmi.c               |   60 +-
 drivers/gpu/drm/i915/intel_i2c.c                |   21 +-
 drivers/gpu/drm/i915/intel_lvds.c               |  176 +-
 drivers/gpu/drm/i915/intel_overlay.c            | 1416 ++++++
 drivers/gpu/drm/i915/intel_sdvo.c               |   19 +-
 drivers/gpu/drm/i915/intel_tv.c                 |   49 +-
 drivers/gpu/drm/mga/mga_drv.c                   |    2 +-
 drivers/gpu/drm/mga/mga_ioc32.c                 |   13 +-
 drivers/gpu/drm/nouveau/Kconfig                 |   44 +
 drivers/gpu/drm/nouveau/Makefile                |   32 +
 drivers/gpu/drm/nouveau/nouveau_acpi.c          |  125 +
 drivers/gpu/drm/nouveau/nouveau_backlight.c     |  155 +
 drivers/gpu/drm/nouveau/nouveau_bios.c          | 6078 +++++++++++++++++++++++
 drivers/gpu/drm/nouveau/nouveau_bios.h          |  290 ++
 drivers/gpu/drm/nouveau/nouveau_bo.c            |  771 +++
 drivers/gpu/drm/nouveau/nouveau_calc.c          |  478 ++
 drivers/gpu/drm/nouveau/nouveau_channel.c       |  431 ++
 drivers/gpu/drm/nouveau/nouveau_connector.c     |  824 +++
 drivers/gpu/drm/nouveau/nouveau_connector.h     |   54 +
 drivers/gpu/drm/nouveau/nouveau_crtc.h          |   95 +
 drivers/gpu/drm/nouveau/nouveau_debugfs.c       |  155 +
 drivers/gpu/drm/nouveau/nouveau_display.c       |  115 +
 drivers/gpu/drm/nouveau/nouveau_dma.c           |  226 +
 drivers/gpu/drm/nouveau/nouveau_dma.h           |  159 +
 drivers/gpu/drm/nouveau/nouveau_dp.c            |  569 +++
 drivers/gpu/drm/nouveau/nouveau_drv.c           |  409 ++
 drivers/gpu/drm/nouveau/nouveau_drv.h           | 1345 +++++
 drivers/gpu/drm/nouveau/nouveau_encoder.h       |   91 +
 drivers/gpu/drm/nouveau/nouveau_fb.h            |   47 +
 drivers/gpu/drm/nouveau/nouveau_fbcon.c         |  389 ++
 drivers/gpu/drm/nouveau/nouveau_fbcon.h         |   48 +
 drivers/gpu/drm/nouveau/nouveau_fence.c         |  262 +
 drivers/gpu/drm/nouveau/nouveau_gem.c           |  978 ++++
 drivers/gpu/drm/nouveau/nouveau_grctx.c         |  161 +
 drivers/gpu/drm/nouveau/nouveau_grctx.h         |  133 +
 drivers/gpu/drm/nouveau/nouveau_hw.c            | 1080 ++++
 drivers/gpu/drm/nouveau/nouveau_hw.h            |  455 ++
 drivers/gpu/drm/nouveau/nouveau_i2c.c           |  269 +
 drivers/gpu/drm/nouveau/nouveau_i2c.h           |   52 +
 drivers/gpu/drm/nouveau/nouveau_ioc32.c         |   70 +
 drivers/gpu/drm/nouveau/nouveau_irq.c           |  703 +++
 drivers/gpu/drm/nouveau/nouveau_mem.c           |  659 +++
 drivers/gpu/drm/nouveau/nouveau_notifier.c      |  196 +
 drivers/gpu/drm/nouveau/nouveau_object.c        | 1294 +++++
 drivers/gpu/drm/nouveau/nouveau_reg.h           |  836 ++++
 drivers/gpu/drm/nouveau/nouveau_sgdma.c         |  321 ++
 drivers/gpu/drm/nouveau/nouveau_state.c         |  871 ++++
 drivers/gpu/drm/nouveau/nouveau_ttm.c           |  103 +
 drivers/gpu/drm/nouveau/nv04_crtc.c             | 1002 ++++
 drivers/gpu/drm/nouveau/nv04_cursor.c           |   70 +
 drivers/gpu/drm/nouveau/nv04_dac.c              |  527 ++
 drivers/gpu/drm/nouveau/nv04_dfp.c              |  623 +++
 drivers/gpu/drm/nouveau/nv04_display.c          |  287 ++
 drivers/gpu/drm/nouveau/nv04_fb.c               |   21 +
 drivers/gpu/drm/nouveau/nv04_fbcon.c            |  315 ++
 drivers/gpu/drm/nouveau/nv04_fifo.c             |  305 ++
 drivers/gpu/drm/nouveau/nv04_graph.c            |  584 +++
 drivers/gpu/drm/nouveau/nv04_instmem.c          |  208 +
 drivers/gpu/drm/nouveau/nv04_mc.c               |   20 +
 drivers/gpu/drm/nouveau/nv04_timer.c            |   51 +
 drivers/gpu/drm/nouveau/nv04_tv.c               |  305 ++
 drivers/gpu/drm/nouveau/nv10_fb.c               |   44 +
 drivers/gpu/drm/nouveau/nv10_fifo.c             |  260 +
 drivers/gpu/drm/nouveau/nv10_graph.c            | 1009 ++++
 drivers/gpu/drm/nouveau/nv17_gpio.c             |   92 +
 drivers/gpu/drm/nouveau/nv17_tv.c               |  776 +++
 drivers/gpu/drm/nouveau/nv17_tv.h               |  156 +
 drivers/gpu/drm/nouveau/nv17_tv_modes.c         |  583 +++
 drivers/gpu/drm/nouveau/nv20_graph.c            |  775 +++
 drivers/gpu/drm/nouveau/nv40_fb.c               |   75 +
 drivers/gpu/drm/nouveau/nv40_fifo.c             |  314 ++
 drivers/gpu/drm/nouveau/nv40_graph.c            |  406 ++
 drivers/gpu/drm/nouveau/nv40_grctx.c            |  678 +++
 drivers/gpu/drm/nouveau/nv40_mc.c               |   38 +
 drivers/gpu/drm/nouveau/nv50_crtc.c             |  769 +++
 drivers/gpu/drm/nouveau/nv50_cursor.c           |  156 +
 drivers/gpu/drm/nouveau/nv50_dac.c              |  304 ++
 drivers/gpu/drm/nouveau/nv50_display.c          | 1032 ++++
 drivers/gpu/drm/nouveau/nv50_display.h          |   46 +
 drivers/gpu/drm/nouveau/nv50_evo.h              |  113 +
 drivers/gpu/drm/nouveau/nv50_fbcon.c            |  270 +
 drivers/gpu/drm/nouveau/nv50_fifo.c             |  492 ++
 drivers/gpu/drm/nouveau/nv50_graph.c            |  389 ++
 drivers/gpu/drm/nouveau/nv50_instmem.c          |  509 ++
 drivers/gpu/drm/nouveau/nv50_mc.c               |   40 +
 drivers/gpu/drm/nouveau/nv50_sor.c              |  309 ++
 drivers/gpu/drm/nouveau/nvreg.h                 |  535 ++
 drivers/gpu/drm/r128/r128_drv.c                 |    2 +-
 drivers/gpu/drm/r128/r128_ioc32.c               |   16 +-
 drivers/gpu/drm/radeon/Makefile                 |    7 +-
 drivers/gpu/drm/radeon/ObjectID.h               |  801 ++--
 drivers/gpu/drm/radeon/atom.c                   |   45 +-
 drivers/gpu/drm/radeon/atom.h                   |    3 +
 drivers/gpu/drm/radeon/atombios.h               |  217 +-
 drivers/gpu/drm/radeon/atombios_crtc.c          |   57 +-
 drivers/gpu/drm/radeon/atombios_dp.c            |  792 +++
 drivers/gpu/drm/radeon/mkregtable.c             |    4 +-
 drivers/gpu/drm/radeon/r100.c                   |  308 +-
 drivers/gpu/drm/radeon/r100_track.h             |   19 +-
 drivers/gpu/drm/radeon/r200.c                   |   10 +-
 drivers/gpu/drm/radeon/r300.c                   |  104 +-
 drivers/gpu/drm/radeon/r300_cmdbuf.c            |    6 +-
 drivers/gpu/drm/radeon/r300_reg.h               |    1 +
 drivers/gpu/drm/radeon/r420.c                   |   66 +-
 drivers/gpu/drm/radeon/r500_reg.h               |    2 +
 drivers/gpu/drm/radeon/r520.c                   |    9 +-
 drivers/gpu/drm/radeon/r600.c                   | 1177 ++++-
 drivers/gpu/drm/radeon/r600_audio.c             |  267 +
 drivers/gpu/drm/radeon/r600_blit_kms.c          |   34 +-
 drivers/gpu/drm/radeon/r600_cs.c                |    4 +-
 drivers/gpu/drm/radeon/r600_hdmi.c              |  506 ++
 drivers/gpu/drm/radeon/r600_reg.h               |   74 +
 drivers/gpu/drm/radeon/r600d.h                  |  212 +-
 drivers/gpu/drm/radeon/radeon.h                 |  197 +-
 drivers/gpu/drm/radeon/radeon_agp.c             |    6 +-
 drivers/gpu/drm/radeon/radeon_asic.h            |   65 +-
 drivers/gpu/drm/radeon/radeon_atombios.c        |  468 ++-
 drivers/gpu/drm/radeon/radeon_benchmark.c       |   36 +-
 drivers/gpu/drm/radeon/radeon_clocks.c          |   25 +-
 drivers/gpu/drm/radeon/radeon_combios.c         |  761 +++-
 drivers/gpu/drm/radeon/radeon_connectors.c      |  221 +-
 drivers/gpu/drm/radeon/radeon_cp.c              |   46 +-
 drivers/gpu/drm/radeon/radeon_cs.c              |   13 +-
 drivers/gpu/drm/radeon/radeon_device.c          |  148 +-
 drivers/gpu/drm/radeon/radeon_display.c         |  157 +-
 drivers/gpu/drm/radeon/radeon_drv.c             |   12 +-
 drivers/gpu/drm/radeon/radeon_drv.h             |    1 -
 drivers/gpu/drm/radeon/radeon_encoders.c        |  322 +-
 drivers/gpu/drm/radeon/radeon_fb.c              |   74 +-
 drivers/gpu/drm/radeon/radeon_fence.c           |   65 +-
 drivers/gpu/drm/radeon/radeon_fixed.h           |   17 +
 drivers/gpu/drm/radeon/radeon_gart.c            |   42 +-
 drivers/gpu/drm/radeon/radeon_gem.c             |  108 +-
 drivers/gpu/drm/radeon/radeon_i2c.c             |  182 +-
 drivers/gpu/drm/radeon/radeon_ioc32.c           |   38 +-
 drivers/gpu/drm/radeon/radeon_irq.c             |   10 +-
 drivers/gpu/drm/radeon/radeon_irq_kms.c         |   71 +-
 drivers/gpu/drm/radeon/radeon_kms.c             |   42 +-
 drivers/gpu/drm/radeon/radeon_legacy_crtc.c     |  102 +-
 drivers/gpu/drm/radeon/radeon_legacy_encoders.c |  127 +-
 drivers/gpu/drm/radeon/radeon_legacy_tv.c       |   14 +-
[...81568 lines suppressed...]
+	uint64_t map_handle;
+	uint32_t handle;
+	uint32_t cur_gmr_id;
+	uint32_t cur_gmr_offset;
+	uint32_t pad64;
+};
+
+/**
+ * union drm_vmw_dmabuf_arg
+ *
+ * @req: Input data as described above.
+ * @rep: Output data as described above.
+ *
+ * Argument to the DRM_VMW_ALLOC_DMABUF Ioctl.
+ */
+
+union drm_vmw_alloc_dmabuf_arg {
+	struct drm_vmw_alloc_dmabuf_req req;
+	struct drm_vmw_dmabuf_rep rep;
+};
+
+/*************************************************************************/
+/**
+ * DRM_VMW_UNREF_DMABUF - Free a DMA buffer.
+ *
+ */
+
+/**
+ * struct drm_vmw_unref_dmabuf_arg
+ *
+ * @handle: Handle indicating what buffer to free. Obtained from the
+ * DRM_VMW_ALLOC_DMABUF Ioctl.
+ *
+ * Argument to the DRM_VMW_UNREF_DMABUF Ioctl.
+ */
+
+struct drm_vmw_unref_dmabuf_arg {
+	uint32_t handle;
+	uint32_t pad64;
+};
+
+/*************************************************************************/
+/**
+ * DRM_VMW_FIFO_DEBUG - Get last FIFO submission.
+ *
+ * This IOCTL copies the last FIFO submission directly out of the FIFO buffer.
+ */
+
+/**
+ * struct drm_vmw_fifo_debug_arg
+ *
+ * @debug_buffer: User space address of a debug_buffer cast to an uint64_t //In
+ * @debug_buffer_size: Size in bytes of debug buffer //In
+ * @used_size: Number of bytes copied to the buffer // Out
+ * @did_not_fit: Boolean indicating that the fifo contents did not fit. //Out
+ *
+ * Argument to the DRM_VMW_FIFO_DEBUG Ioctl.
+ */
+
+struct drm_vmw_fifo_debug_arg {
+	uint64_t debug_buffer;
+	uint32_t debug_buffer_size;
+	uint32_t used_size;
+	int32_t did_not_fit;
+	uint32_t pad64;
+};
+
+struct drm_vmw_fence_wait_arg {
+	uint64_t sequence;
+	uint64_t kernel_cookie;
+	int32_t cookie_valid;
+	int32_t pad64;
+};
+
+/*************************************************************************/
+/**
+ * DRM_VMW_CONTROL_STREAM - Control overlays, aka streams.
+ *
+ * This IOCTL controls the overlay units of the svga device.
+ * The SVGA overlay units does not work like regular hardware units in
+ * that they do not automaticaly read back the contents of the given dma
+ * buffer. But instead only read back for each call to this ioctl, and
+ * at any point between this call being made and a following call that
+ * either changes the buffer or disables the stream.
+ */
+
+/**
+ * struct drm_vmw_rect
+ *
+ * Defines a rectangle. Used in the overlay ioctl to define
+ * source and destination rectangle.
+ */
+
+struct drm_vmw_rect {
+	int32_t x;
+	int32_t y;
+	uint32_t w;
+	uint32_t h;
+};
+
+/**
+ * struct drm_vmw_control_stream_arg
+ *
+ * @stream_id: Stearm to control
+ * @enabled: If false all following arguments are ignored.
+ * @handle: Handle to buffer for getting data from.
+ * @format: Format of the overlay as understood by the host.
+ * @width: Width of the overlay.
+ * @height: Height of the overlay.
+ * @size: Size of the overlay in bytes.
+ * @pitch: Array of pitches, the two last are only used for YUV12 formats.
+ * @offset: Offset from start of dma buffer to overlay.
+ * @src: Source rect, must be within the defined area above.
+ * @dst: Destination rect, x and y may be negative.
+ *
+ * Argument to the DRM_VMW_CONTROL_STREAM Ioctl.
+ */
+
+struct drm_vmw_control_stream_arg {
+	uint32_t stream_id;
+	uint32_t enabled;
+
+	uint32_t flags;
+	uint32_t color_key;
+
+	uint32_t handle;
+	uint32_t offset;
+	int32_t format;
+	uint32_t size;
+	uint32_t width;
+	uint32_t height;
+	uint32_t pitch[3];
+
+	uint32_t pad64;
+	struct drm_vmw_rect src;
+	struct drm_vmw_rect dst;
+};
+
+/*************************************************************************/
+/**
+ * DRM_VMW_CURSOR_BYPASS - Give extra information about cursor bypass.
+ *
+ */
+
+#define DRM_VMW_CURSOR_BYPASS_ALL    (1 << 0)
+#define DRM_VMW_CURSOR_BYPASS_FLAGS       (1)
+
+/**
+ * struct drm_vmw_cursor_bypass_arg
+ *
+ * @flags: Flags.
+ * @crtc_id: Crtc id, only used if DMR_CURSOR_BYPASS_ALL isn't passed.
+ * @xpos: X position of cursor.
+ * @ypos: Y position of cursor.
+ * @xhot: X hotspot.
+ * @yhot: Y hotspot.
+ *
+ * Argument to the DRM_VMW_CURSOR_BYPASS Ioctl.
+ */
+
+struct drm_vmw_cursor_bypass_arg {
+	uint32_t flags;
+	uint32_t crtc_id;
+	int32_t xpos;
+	int32_t ypos;
+	int32_t xhot;
+	int32_t yhot;
+};
+
+/*************************************************************************/
+/**
+ * DRM_VMW_CLAIM_STREAM - Claim a single stream.
+ */
+
+/**
+ * struct drm_vmw_context_arg
+ *
+ * @stream_id: Device unique context ID.
+ *
+ * Output argument to the DRM_VMW_CREATE_CONTEXT Ioctl.
+ * Input argument to the DRM_VMW_UNREF_CONTEXT Ioctl.
+ */
+
+struct drm_vmw_stream_arg {
+	uint32_t stream_id;
+	uint32_t pad64;
+};
+
+/*************************************************************************/
+/**
+ * DRM_VMW_UNREF_STREAM - Unclaim a stream.
+ *
+ * Return a single stream that was claimed by this process. Also makes
+ * sure that the stream has been stopped.
+ */
+
+#endif
-- 
1.6.5.2


linux-2.6-autoload-wmi.patch:
 wmi.c |  175 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 173 insertions(+), 2 deletions(-)

--- NEW FILE linux-2.6-autoload-wmi.patch ---
From: Matthew Garrett <mjg at redhat.com>
Date: Wed, 4 Nov 2009 19:17:53 +0000 (-0500)
Subject: wmi: Add support for module autoloading
X-Git-Tag: v2.6.33-rc1~47^2~5^2
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=1caab3c1a90be3aa4ec3599409d8fe044b077478

wmi: Add support for module autoloading

WMI provides interface-specific GUIDs that are exported from modules as
modalises, but the core currently generates no events to trigger module
loading. This patch adds support for registering devices for each WMI GUID
and generating the appropriate uevent.

Based heavily on a patch by Carlos Corbacho (<carlos at strangeworlds.co.uk>).

Signed-off-by: Matthew Garrett <mjg at redhat.com>
Tested-by: Carlos Corbacho <carlos at strangeworlds.co.uk>
Acked-by: Carlos Corbacho <carlos at strangeworlds.co.uk>
Signed-off-by: Len Brown <len.brown at intel.com>
---

diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
index 177f8d7..e425a86 100644
--- a/drivers/platform/x86/wmi.c
+++ b/drivers/platform/x86/wmi.c
@@ -30,6 +30,7 @@
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/types.h>
+#include <linux/device.h>
 #include <linux/list.h>
 #include <linux/acpi.h>
 #include <acpi/acpi_bus.h>
@@ -65,6 +66,7 @@ struct wmi_block {
 	acpi_handle handle;
 	wmi_notify_handler handler;
 	void *handler_data;
+	struct device *dev;
 };
 
 static struct wmi_block wmi_blocks;
@@ -195,6 +197,34 @@ static bool wmi_parse_guid(const u8 *src, u8 *dest)
 	return true;
 }
 
+/*
+ * Convert a raw GUID to the ACII string representation
+ */
+static int wmi_gtoa(const char *in, char *out)
+{
+	int i;
+
+	for (i = 3; i >= 0; i--)
+		out += sprintf(out, "%02X", in[i] & 0xFF);
+
+	out += sprintf(out, "-");
+	out += sprintf(out, "%02X", in[5] & 0xFF);
+	out += sprintf(out, "%02X", in[4] & 0xFF);
+	out += sprintf(out, "-");
+	out += sprintf(out, "%02X", in[7] & 0xFF);
+	out += sprintf(out, "%02X", in[6] & 0xFF);
+	out += sprintf(out, "-");
+	out += sprintf(out, "%02X", in[8] & 0xFF);
+	out += sprintf(out, "%02X", in[9] & 0xFF);
+	out += sprintf(out, "-");
+
+	for (i = 10; i <= 15; i++)
+		out += sprintf(out, "%02X", in[i] & 0xFF);
+
+	out = '\0';
+	return 0;
+}
+
 static bool find_guid(const char *guid_string, struct wmi_block **out)
 {
 	char tmp[16], guid_input[16];
@@ -555,6 +585,138 @@ bool wmi_has_guid(const char *guid_string)
 EXPORT_SYMBOL_GPL(wmi_has_guid);
 
 /*
+ * sysfs interface
+ */
+static ssize_t show_modalias(struct device *dev, struct device_attribute *attr,
+			     char *buf)
+{
+	char guid_string[37];
+	struct wmi_block *wblock;
+
+	wblock = dev_get_drvdata(dev);
+	if (!wblock)
+		return -ENOMEM;
+
+	wmi_gtoa(wblock->gblock.guid, guid_string);
+
+	return sprintf(buf, "wmi:%s\n", guid_string);
+}
+static DEVICE_ATTR(modalias, S_IRUGO, show_modalias, NULL);
+
+static int wmi_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
+{
+	char guid_string[37];
+
+	struct wmi_block *wblock;
+
+	if (add_uevent_var(env, "MODALIAS="))
+		return -ENOMEM;
+
+	wblock = dev_get_drvdata(dev);
+	if (!wblock)
+		return -ENOMEM;
+
+	wmi_gtoa(wblock->gblock.guid, guid_string);
+
+	strcpy(&env->buf[env->buflen - 1], "wmi:");
+	memcpy(&env->buf[env->buflen - 1 + 4], guid_string, 36);
+	env->buflen += 40;
+
+	return 0;
+}
+
+static void wmi_dev_free(struct device *dev)
+{
+	kfree(dev);
+}
+
+static struct class wmi_class = {
+	.name = "wmi",
+	.dev_release = wmi_dev_free,
+	.dev_uevent = wmi_dev_uevent,
+};
+
+static int wmi_create_devs(void)
+{
+	int result;
+	char guid_string[37];
+	struct guid_block *gblock;
+	struct wmi_block *wblock;
+	struct list_head *p;
+	struct device *guid_dev;
+
+	/* Create devices for all the GUIDs */
+	list_for_each(p, &wmi_blocks.list) {
+		wblock = list_entry(p, struct wmi_block, list);
+
+		guid_dev = kzalloc(sizeof(struct device), GFP_KERNEL);
+		if (!guid_dev)
+			return -ENOMEM;
+
+		wblock->dev = guid_dev;
+
+		guid_dev->class = &wmi_class;
+		dev_set_drvdata(guid_dev, wblock);
+
+		gblock = &wblock->gblock;
+
+		wmi_gtoa(gblock->guid, guid_string);
+		dev_set_name(guid_dev, guid_string);
+
+		result = device_register(guid_dev);
+		if (result)
+			return result;
+
+		result = device_create_file(guid_dev, &dev_attr_modalias);
+		if (result)
+			return result;
+	}
+
+	return 0;
+}
+
+static void wmi_remove_devs(void)
+{
+	struct guid_block *gblock;
+	struct wmi_block *wblock;
+	struct list_head *p;
+	struct device *guid_dev;
+
+	/* Delete devices for all the GUIDs */
+	list_for_each(p, &wmi_blocks.list) {
+		wblock = list_entry(p, struct wmi_block, list);
+
+		guid_dev = wblock->dev;
+		gblock = &wblock->gblock;
+
+		device_remove_file(guid_dev, &dev_attr_modalias);
+
+		device_unregister(guid_dev);
+	}
+}
+
+static void wmi_class_exit(void)
+{
+	wmi_remove_devs();
+	class_unregister(&wmi_class);
+}
+
+static int wmi_class_init(void)
+{
+	int ret;
+
+	ret = class_register(&wmi_class);
+	if (ret)
+		return ret;
+
+	ret = wmi_create_devs();
+	if (ret)
+		wmi_class_exit();
+
+	return ret;
+}
+
+/*
  * Parse the _WDG method for the GUID data blocks
  */
 static __init acpi_status parse_wdg(acpi_handle handle)
@@ -709,10 +871,17 @@ static int __init acpi_wmi_init(void)
 
 	if (result < 0) {
 		printk(KERN_INFO PREFIX "Error loading mapper\n");
-	} else {
-		printk(KERN_INFO PREFIX "Mapper loaded\n");
+		return -ENODEV;
+	}
+
+	result = wmi_class_init();
+	if (result) {
+		acpi_bus_unregister_driver(&acpi_wmi_driver);
+		return result;
 	}
 
+	printk(KERN_INFO PREFIX "Mapper loaded\n");
+
 	return result;
 }
 
@@ -721,6 +890,8 @@ static void __exit acpi_wmi_exit(void)
 	struct list_head *p, *tmp;
 	struct wmi_block *wblock;
 
+	wmi_class_exit();
+
 	acpi_bus_unregister_driver(&acpi_wmi_driver);
 
 	list_for_each_safe(p, tmp, &wmi_blocks.list) {

linux-2.6-btrfs-fix-acl.patch:
 acl.c |   14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

--- NEW FILE linux-2.6-btrfs-fix-acl.patch ---
diff -up linux-2.6.32.noarch/fs/btrfs/acl.c.orig linux-2.6.32.noarch/fs/btrfs/acl.c
--- linux-2.6.32.noarch/fs/btrfs/acl.c.orig	2009-12-02 22:51:21.000000000 -0500
+++ linux-2.6.32.noarch/fs/btrfs/acl.c	2010-01-14 15:36:25.926371944 -0500
@@ -110,13 +110,15 @@ static int btrfs_set_acl(struct inode *i
 
 	switch (type) {
 	case ACL_TYPE_ACCESS:
-		mode = inode->i_mode;
-		ret = posix_acl_equiv_mode(acl, &mode);
-		if (ret < 0)
-			return ret;
-		ret = 0;
-		inode->i_mode = mode;
 		name = POSIX_ACL_XATTR_ACCESS;
+		if (acl) {
+			mode = inode->i_mode;
+			ret = posix_acl_equiv_mode(acl, &mode);
+			if (ret < 0)
+				return ret;
+			ret = 0;
+			inode->i_mode = mode;
+		}
 		break;
 	case ACL_TYPE_DEFAULT:
 		if (!S_ISDIR(inode->i_mode))

linux-2.6-enable-btusb-autosuspend.patch:
 btusb.c |    1 +
 1 file changed, 1 insertion(+)

--- NEW FILE linux-2.6-enable-btusb-autosuspend.patch ---
commit 8e962bd41a2cbf7f0e55191a757b87f793a725a8
Author: Matthew Garrett <mjg at redhat.com>
Date:   Tue Jun 9 20:47:51 2009 +0100

    btusb: Enable autosuspend by default

diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 44bc8bb..4c33417 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -1020,6 +1020,7 @@ static int btusb_probe(struct usb_interface *intf,
 	}
 
 	usb_set_intfdata(intf, data);
+	usb_device_autosuspend_enable(data->udev);
 
 	return 0;
 }

linux-2.6-fix-usb-serial-autosuspend.diff:
 usb-serial.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Index: linux-2.6-fix-usb-serial-autosuspend.diff
===================================================================
RCS file: linux-2.6-fix-usb-serial-autosuspend.diff
diff -N linux-2.6-fix-usb-serial-autosuspend.diff
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ linux-2.6-fix-usb-serial-autosuspend.diff	31 Jan 2010 17:57:54 -0000	1.2.6.4
@@ -0,0 +1,49 @@
+commit 3b8e1210f0a558145ba87eddb20f7b104676d6f6
+Author: Oliber Neukum <oliver at neukum.org>
+Date:   Sat Jul 18 07:19:04 2009 +0200
+
+    usb: fix counter logic in opening serial converters
+    
+    the usage counter must be increased only after autoresumption
+
+diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
+index 99188c9..3d1a756 100644
+--- a/drivers/usb/serial/usb-serial.c
++++ b/drivers/usb/serial/usb-serial.c
+@@ -216,16 +216,15 @@ static int serial_open (struct tty_struct *tty, struct file *filp)
+ 		goto bailout_port_put;
+ 	}
+ 
+-	++port->port.count;
+-
+ 	/* set up our port structure making the tty driver
+ 	 * remember our port object, and us it */
+ 	tty->driver_data = port;
+ 	tty_port_tty_set(&port->port, tty);
+ 
+ 	/* If the console is attached, the device is already open */
+-	if (port->port.count == 1 && !port->console) {
++	if (!port->port.count && !port->console) {
+ 		first = 1;
++
+ 		/* lock this module before we call it
+ 		 * this may fail, which means we must bail out,
+ 		 * safe because we are called with BKL held */
+@@ -242,6 +241,8 @@ static int serial_open (struct tty_struct *tty, struct file *filp)
+ 		if (retval)
+ 			goto bailout_module_put;
+ 
++		++port->port.count;
++
+ 		/* only call the device specific open if this
+ 		 * is the first time the port is opened */
+ 		retval = serial->type->open(tty, port, filp);
+@@ -249,6 +250,8 @@ static int serial_open (struct tty_struct *tty, struct file *filp)
+ 			goto bailout_interface_put;
+ 		mutex_unlock(&serial->disc_mutex);
+ 		set_bit(ASYNCB_INITIALIZED, &port->port.flags);
++	} else {
++		++port->port.count;
+ 	}
+ 	mutex_unlock(&port->mutex);
+ 	/* Now do the correct tty layer semantics */

linux-2.6-intel-agp-clear-gtt.patch:
 intel-agp.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

--- NEW FILE linux-2.6-intel-agp-clear-gtt.patch ---
Some BIOSes fail to initialise the GTT, which will cause DMA faults when
the IOMMU is enabled. We need to clear the whole thing, not just the
part that Linux is going to use.

Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>

diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 10e1f03..6ab8173 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -176,6 +176,7 @@ static struct _intel_private {
 	 * popup and for the GTT.
 	 */
 	int gtt_entries;			/* i830+ */
+	int gtt_total_size;
 	union {
 		void __iomem *i9xx_flush_page;
 		void *i8xx_flush_page;
@@ -1151,7 +1152,7 @@ static int intel_i915_configure(void)
 	readl(intel_private.registers+I810_PGETBL_CTL);	/* PCI Posting. */
 
 	if (agp_bridge->driver->needs_scratch_page) {
-		for (i = intel_private.gtt_entries; i < current_size->num_entries; i++) {
+		for (i = intel_private.gtt_entries; i < intel_private.gtt_total_size; i++) {
 			writel(agp_bridge->scratch_page, intel_private.gtt+i);
 		}
 		readl(intel_private.gtt+i-1);	/* PCI Posting. */
@@ -1306,6 +1307,8 @@ static int intel_i915_create_gatt_table(struct agp_bridge_data *bridge)
 	if (!intel_private.gtt)
 		return -ENOMEM;
 
+	intel_private.gtt_total_size = gtt_map_size / 4;
+
 	temp &= 0xfff80000;
 
 	intel_private.registers = ioremap(temp, 128 * 4096);
@@ -1392,6 +1395,8 @@ static int intel_i965_create_gatt_table(struct agp_bridge_data *bridge)
 	if (!intel_private.gtt)
 		return -ENOMEM;
 
+	intel_private.gtt_total_size = gtt_size / 4;
+
 	intel_private.registers = ioremap(temp, 128 * 4096);
 	if (!intel_private.registers) {
 		iounmap(intel_private.gtt);

linux-2.6-mac80211-age-scan-results-on-resume.patch:
 include/net/cfg80211.h |    6 ++++++
 include/net/wireless.h |    3 +++
 net/mac80211/cfg.c     |   28 ++++++++++++++++++++++++++++
 net/mac80211/scan.c    |   13 +++++++++++--
 net/wireless/core.h    |    2 ++
 net/wireless/sysfs.c   |   35 +++++++++++++++++++++++++++++++++++
 6 files changed, 85 insertions(+), 2 deletions(-)

Index: linux-2.6-mac80211-age-scan-results-on-resume.patch
===================================================================
RCS file: linux-2.6-mac80211-age-scan-results-on-resume.patch
diff -N linux-2.6-mac80211-age-scan-results-on-resume.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ linux-2.6-mac80211-age-scan-results-on-resume.patch	31 Jan 2010 17:57:55 -0000	1.1.10.4
@@ -0,0 +1,181 @@
+Backport of "cfg80211: age scan results on resume" by Dan Williams.
+
+diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
+index 23c0ab7..0432eb6 100644
+--- a/include/net/cfg80211.h
++++ b/include/net/cfg80211.h
+@@ -450,6 +450,9 @@ struct ieee80211_channel;
+  * wireless extensions but this is subject to reevaluation as soon as this
+  * code is used more widely and we have a first user without wext.
+  *
++ * @suspend: wiphy device needs to be suspended
++ * @resume: wiphy device needs to be resumed
++ *
+  * @add_virtual_intf: create a new virtual interface with the given name,
+  *	must set the struct wireless_dev's iftype.
+  *
+@@ -499,6 +502,9 @@ struct ieee80211_channel;
+  * @set_channel: Set channel
+  */
+ struct cfg80211_ops {
++	int	(*suspend)(struct wiphy *wiphy);
++	int	(*resume)(struct wiphy *wiphy);
++
+ 	int	(*add_virtual_intf)(struct wiphy *wiphy, char *name,
+ 				    enum nl80211_iftype type, u32 *flags,
+ 				    struct vif_params *params);
+diff --git a/include/net/wireless.h b/include/net/wireless.h
+index 21c5d96..ae2d34d 100644
+--- a/include/net/wireless.h
++++ b/include/net/wireless.h
+@@ -220,6 +220,9 @@ struct wiphy {
+ 	/* dir in debugfs: ieee80211/<wiphyname> */
+ 	struct dentry *debugfsdir;
+ 
++	/* time spent in suspend, in seconds */
++	unsigned long suspend_duration;
++
+ 	char priv[0] __attribute__((__aligned__(NETDEV_ALIGN)));
+ };
+ 
+diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
+index 9d4e4d8..691183e 100644
+--- a/net/mac80211/cfg.c
++++ b/net/mac80211/cfg.c
+@@ -1141,6 +1141,32 @@ static int ieee80211_set_channel(struct wiphy *wiphy,
+ 	return ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL);
+ }
+ 
++#ifdef CONFIG_PM
++static int ieee80211_suspend(struct wiphy *wiphy)
++{
++	return 0;
++}
++
++static int ieee80211_resume(struct wiphy *wiphy)
++{
++	struct ieee80211_local *local = wiphy_priv(wiphy);
++	unsigned long age_jiffies;
++	struct ieee80211_bss *bss;
++
++	age_jiffies = msecs_to_jiffies(wiphy->suspend_duration * MSEC_PER_SEC);
++	spin_lock_bh(&local->bss_lock);
++	list_for_each_entry(bss, &local->bss_list, list) {
++		bss->last_update -= age_jiffies;
++	}
++	spin_unlock_bh(&local->bss_lock);
++
++	return 0;
++}
++#else
++#define ieee80211_suspend NULL
++#define ieee80211_resume NULL
++#endif
++
+ struct cfg80211_ops mac80211_config_ops = {
+ 	.add_virtual_intf = ieee80211_add_iface,
+ 	.del_virtual_intf = ieee80211_del_iface,
+@@ -1169,4 +1195,6 @@ struct cfg80211_ops mac80211_config_ops = {
+ 	.change_bss = ieee80211_change_bss,
+ 	.set_txq_params = ieee80211_set_txq_params,
+ 	.set_channel = ieee80211_set_channel,
++	.suspend = ieee80211_suspend,
++	.resume = ieee80211_resume,
+ };
+diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
+index f5c7c33..eb43ff5 100644
+--- a/net/mac80211/scan.c
++++ b/net/mac80211/scan.c
+@@ -745,6 +745,15 @@ static void ieee80211_scan_add_ies(struct iw_request_info *info,
+ 	}
+ }
+ 
++static inline unsigned int elapsed_jiffies_msecs(unsigned long start)
++{
++	unsigned long end = jiffies;
++
++	if (end >= start)
++		return jiffies_to_msecs(end - start);
++
++	return jiffies_to_msecs(end + (MAX_JIFFY_OFFSET - start) + 1);
++}
+ 
+ static char *
+ ieee80211_scan_result(struct ieee80211_local *local,
+@@ -857,8 +866,8 @@ ieee80211_scan_result(struct ieee80211_local *local,
+ 						  &iwe, buf);
+ 		memset(&iwe, 0, sizeof(iwe));
+ 		iwe.cmd = IWEVCUSTOM;
+-		sprintf(buf, " Last beacon: %dms ago",
+-			jiffies_to_msecs(jiffies - bss->last_update));
++		sprintf(buf, " Last beacon: %ums ago",
++			elapsed_jiffies_msecs(bss->last_update));
+ 		iwe.u.data.length = strlen(buf);
+ 		current_ev = iwe_stream_add_point(info, current_ev,
+ 						  end_buf, &iwe, buf);
+diff --git a/net/wireless/core.h b/net/wireless/core.h
+index f7fb9f4..a4031a9 100644
+--- a/net/wireless/core.h
++++ b/net/wireless/core.h
+@@ -41,6 +41,8 @@ struct cfg80211_registered_device {
+ 	struct mutex devlist_mtx;
+ 	struct list_head netdev_list;
+ 
++	unsigned long suspend_at;
++
+ 	/* must be last because of the way we do wiphy_priv(),
+ 	 * and it should at least be aligned to NETDEV_ALIGN */
+ 	struct wiphy wiphy __attribute__((__aligned__(NETDEV_ALIGN)));
+diff --git a/net/wireless/sysfs.c b/net/wireless/sysfs.c
+index 79a3828..dc92564 100644
+--- a/net/wireless/sysfs.c
++++ b/net/wireless/sysfs.c
+@@ -55,6 +55,39 @@ static int wiphy_uevent(struct device *dev, struct kobj_uevent_env *env)
+ }
+ #endif
+ 
++static int wiphy_suspend(struct device *dev, pm_message_t state)
++{
++	struct cfg80211_registered_device *rdev = dev_to_rdev(dev);
++	int ret = 0;
++
++	rdev->wiphy.suspend_duration = 0;
++	rdev->suspend_at = get_seconds();
++
++	if (rdev->ops->suspend) {
++		rtnl_lock();
++		ret = rdev->ops->suspend(&rdev->wiphy);
++		rtnl_unlock();
++	}
++
++	return ret;
++}
++
++static int wiphy_resume(struct device *dev)
++{
++	struct cfg80211_registered_device *rdev = dev_to_rdev(dev);
++	int ret = 0;
++
++	rdev->wiphy.suspend_duration = get_seconds() - rdev->suspend_at;
++
++	if (rdev->ops->resume) {
++		rtnl_lock();
++		ret = rdev->ops->resume(&rdev->wiphy);
++		rtnl_unlock();
++	}
++
++	return ret;
++}
++
+ struct class ieee80211_class = {
+ 	.name = "ieee80211",
+ 	.owner = THIS_MODULE,
+@@ -63,6 +96,8 @@ struct class ieee80211_class = {
+ #ifdef CONFIG_HOTPLUG
+ 	.dev_uevent = wiphy_uevent,
+ #endif
++	.suspend = wiphy_suspend,
++	.resume = wiphy_resume,
+ };
+ 
+ int wiphy_sysfs_init(void)

linux-2.6-nfsd4-proots.patch:
 fs/nfsd/export.c            |    9 ++++++---
 fs/nfsd/nfs4xdr.c           |   10 +++++++---
 fs/nfsd/nfsfh.c             |   37 +++++++++++++++++++++++++++++++++++++
 fs/nfsd/vfs.c               |   33 ++++++++++++++++++++++++---------
 include/linux/nfsd/export.h |   12 +++++++++++-
 include/linux/nfsd/nfsd.h   |    5 +++++
 6 files changed, 90 insertions(+), 16 deletions(-)

Index: linux-2.6-nfsd4-proots.patch
===================================================================
RCS file: linux-2.6-nfsd4-proots.patch
diff -N linux-2.6-nfsd4-proots.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ linux-2.6-nfsd4-proots.patch	31 Jan 2010 17:57:55 -0000	1.1.2.6
@@ -0,0 +1,226 @@
+diff -up linux-2.6.32.i686/fs/nfsd/export.c.save linux-2.6.32.i686/fs/nfsd/export.c
+--- linux-2.6.32.i686/fs/nfsd/export.c.save	2009-12-04 10:24:17.000000000 -0500
++++ linux-2.6.32.i686/fs/nfsd/export.c	2009-12-04 10:40:52.000000000 -0500
+@@ -372,10 +372,12 @@ static struct svc_export *svc_export_loo
+ static int check_export(struct inode *inode, int flags, unsigned char *uuid)
+ {
+ 
+-	/* We currently export only dirs and regular files.
+-	 * This is what umountd does.
++	/*
++	 * We currently export only dirs, regular files, and (for v4
++	 * pseudoroot) symlinks.
+ 	 */
+ 	if (!S_ISDIR(inode->i_mode) &&
++	    !S_ISLNK(inode->i_mode) &&
+ 	    !S_ISREG(inode->i_mode))
+ 		return -ENOTDIR;
+ 
+@@ -1425,6 +1427,7 @@ static struct flags {
+ 	{ NFSEXP_CROSSMOUNT, {"crossmnt", ""}},
+ 	{ NFSEXP_NOSUBTREECHECK, {"no_subtree_check", ""}},
+ 	{ NFSEXP_NOAUTHNLM, {"insecure_locks", ""}},
++	{ NFSEXP_V4ROOT, {"v4root", ""}},
+ #ifdef MSNFS
+ 	{ NFSEXP_MSNFS, {"msnfs", ""}},
+ #endif
+@@ -1505,7 +1508,7 @@ static int e_show(struct seq_file *m, vo
+ 	struct svc_export *exp = container_of(cp, struct svc_export, h);
+ 
+ 	if (p == SEQ_START_TOKEN) {
+-		seq_puts(m, "# Version 1.1\n");
++		seq_puts(m, "# Version 1.2\n");
+ 		seq_puts(m, "# Path Client(Flags) # IPs\n");
+ 		return 0;
+ 	}
+diff -up linux-2.6.32.i686/fs/nfsd/nfs4xdr.c.save linux-2.6.32.i686/fs/nfsd/nfs4xdr.c
+--- linux-2.6.32.i686/fs/nfsd/nfs4xdr.c.save	2009-12-04 10:24:17.000000000 -0500
++++ linux-2.6.32.i686/fs/nfsd/nfs4xdr.c	2009-12-04 10:26:49.000000000 -0500
+@@ -2204,11 +2204,14 @@ nfsd4_encode_dirent_fattr(struct nfsd4_r
+ 	 * we will not follow the cross mount and will fill the attribtutes
+ 	 * directly from the mountpoint dentry.
+ 	 */
+-	if (d_mountpoint(dentry) && !attributes_need_mount(cd->rd_bmval))
+-		ignore_crossmnt = 1;
+-	else if (d_mountpoint(dentry)) {
++	if (nfsd_mountpoint(dentry, exp)) {
+ 		int err;
+ 
++		if (!(exp->ex_flags & NFSEXP_V4ROOT)
++				&& !attributes_need_mount(cd->rd_bmval)) {
++			ignore_crossmnt = 1;
++			goto out_encode;
++		}
+ 		/*
+ 		 * Why the heck aren't we just using nfsd_lookup??
+ 		 * Different "."/".." handling?  Something else?
+@@ -2224,6 +2227,7 @@ nfsd4_encode_dirent_fattr(struct nfsd4_r
+ 			goto out_put;
+ 
+ 	}
++out_encode:
+ 	nfserr = nfsd4_encode_fattr(NULL, exp, dentry, p, buflen, cd->rd_bmval,
+ 					cd->rd_rqstp, ignore_crossmnt);
+ out_put:
+diff -up linux-2.6.32.i686/fs/nfsd/nfsfh.c.save linux-2.6.32.i686/fs/nfsd/nfsfh.c
+--- linux-2.6.32.i686/fs/nfsd/nfsfh.c.save	2009-12-04 10:24:17.000000000 -0500
++++ linux-2.6.32.i686/fs/nfsd/nfsfh.c	2009-12-04 10:38:26.000000000 -0500
+@@ -109,6 +109,36 @@ static __be32 nfsd_setuser_and_check_por
+ 	return nfserrno(nfsd_setuser(rqstp, exp));
+ }
+ 
++static inline __be32 check_pseudo_root(struct svc_rqst *rqstp,
++	struct dentry *dentry, struct svc_export *exp)
++{
++	if (!(exp->ex_flags & NFSEXP_V4ROOT))
++		return nfs_ok;
++	/*
++	 * v2/v3 clients have no need for the V4ROOT export--they use
++	 * the mount protocl instead; also, further V4ROOT checks may be
++	 * in v4-specific code, in which case v2/v3 clients could bypass
++	 * them.
++	 */
++	if (!nfsd_v4client(rqstp))
++		return nfserr_stale;
++	/*
++	 * We're exposing only the directories and symlinks that have to be
++	 * traversed on the way to real exports:
++	 */
++	if (unlikely(!S_ISDIR(dentry->d_inode->i_mode) &&
++		     !S_ISLNK(dentry->d_inode->i_mode)))
++		return nfserr_stale;
++	/*
++	 * A pseudoroot export gives permission to access only one
++	 * single directory; the kernel has to make another upcall
++	 * before granting access to anything else under it:
++	 */
++	if (unlikely(dentry != exp->ex_path.dentry))
++		return nfserr_stale;
++	return nfs_ok;
++}
++
+ /*
+  * Use the given filehandle to look up the corresponding export and
+  * dentry.  On success, the results are used to set fh_export and
+@@ -317,6 +347,13 @@ fh_verify(struct svc_rqst *rqstp, struct
+ 			goto out;
+ 	}
+ 
++	/*
++	 * Do some spoof checking if we are on the pseudo root
++	 */
++	error = check_pseudo_root(rqstp, dentry, exp);
++	if (error)
++		goto out;
++
+ 	error = nfsd_mode_check(rqstp, dentry->d_inode->i_mode, type);
+ 	if (error)
+ 		goto out;
+diff -up linux-2.6.32.i686/fs/nfsd/vfs.c.save linux-2.6.32.i686/fs/nfsd/vfs.c
+--- linux-2.6.32.i686/fs/nfsd/vfs.c.save	2009-12-04 10:24:18.000000000 -0500
++++ linux-2.6.32.i686/fs/nfsd/vfs.c	2009-12-04 10:35:04.000000000 -0500
+@@ -89,12 +89,6 @@ struct raparm_hbucket {
+ #define RAPARM_HASH_MASK	(RAPARM_HASH_SIZE-1)
+ static struct raparm_hbucket	raparm_hash[RAPARM_HASH_SIZE];
+ 
+-static inline int
+-nfsd_v4client(struct svc_rqst *rq)
+-{
+-    return rq->rq_prog == NFS_PROGRAM && rq->rq_vers == 4;
+-}
+-
+ /* 
+  * Called from nfsd_lookup and encode_dirent. Check if we have crossed 
+  * a mount point.
+@@ -116,8 +110,16 @@ nfsd_cross_mnt(struct svc_rqst *rqstp, s
+ 
+ 	exp2 = rqst_exp_get_by_name(rqstp, &path);
+ 	if (IS_ERR(exp2)) {
+-		if (PTR_ERR(exp2) != -ENOENT)
+-			err = PTR_ERR(exp2);
++		err = PTR_ERR(exp2);
++		/*
++		 * We normally allow NFS clients to continue
++		 * "underneath" a mountpoint that is not exported.
++		 * The exception is V4ROOT, where no traversal is ever
++		 * allowed without an explicit export of the new
++		 * directory.
++		 */
++		if (err == -ENOENT && !(exp->ex_flags & NFSEXP_V4ROOT))
++			err = 0;
+ 		path_put(&path);
+ 		goto out;
+ 	}
+@@ -141,6 +143,19 @@ out:
+ 	return err;
+ }
+ 
++/*
++ * For nfsd purposes, we treat V4ROOT exports as though there was an
++ * export at *every* directory.
++ */
++int nfsd_mountpoint(struct dentry *dentry, struct svc_export *exp)
++{
++	if (d_mountpoint(dentry))
++		return 1;
++	if (!(exp->ex_flags & NFSEXP_V4ROOT))
++		return 0;
++	return dentry->d_inode != NULL;
++}
++
+ __be32
+ nfsd_lookup_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp,
+ 		   const char *name, unsigned int len,
+@@ -208,7 +223,7 @@ nfsd_lookup_dentry(struct svc_rqst *rqst
+ 		/*
+ 		 * check if we have crossed a mount point ...
+ 		 */
+-		if (d_mountpoint(dentry)) {
++		if (nfsd_mountpoint(dentry, exp)) {
+ 			if ((host_err = nfsd_cross_mnt(rqstp, &dentry, &exp))) {
+ 				dput(dentry);
+ 				goto out_nfserr;
+diff -up linux-2.6.32.i686/include/linux/nfsd/export.h.save linux-2.6.32.i686/include/linux/nfsd/export.h
+--- linux-2.6.32.i686/include/linux/nfsd/export.h.save	2009-12-04 10:24:18.000000000 -0500
++++ linux-2.6.32.i686/include/linux/nfsd/export.h	2009-12-04 10:25:08.000000000 -0500
+@@ -39,7 +39,17 @@
+ #define NFSEXP_FSID		0x2000
+ #define	NFSEXP_CROSSMOUNT	0x4000
+ #define	NFSEXP_NOACL		0x8000	/* reserved for possible ACL related use */
+-#define NFSEXP_ALLFLAGS		0xFE3F
++/*
++ * The NFSEXP_V4ROOT flag causes the kernel to give access only to NFSv4
++ * clients, and only to the single directory that is the root of the
++ * export; further lookup and readdir operations are treated as if every
++ * subdirectory was a mountpoint, and ignored if they are not themselves
++ * exported.  This is used by nfsd and mountd to construct the NFSv4
++ * pseudofilesystem, which provides access only to paths leading to each
++ * exported filesystem.
++ */
++#define	NFSEXP_V4ROOT		0x10000
++#define NFSEXP_ALLFLAGS		0x1FE3F
+ 
+ /* The flags that may vary depending on security flavor: */
+ #define NFSEXP_SECINFO_FLAGS	(NFSEXP_READONLY | NFSEXP_ROOTSQUASH \
+diff -up linux-2.6.32.i686/include/linux/nfsd/nfsd.h.save linux-2.6.32.i686/include/linux/nfsd/nfsd.h
+--- linux-2.6.32.i686/include/linux/nfsd/nfsd.h.save	2009-12-04 10:24:18.000000000 -0500
++++ linux-2.6.32.i686/include/linux/nfsd/nfsd.h	2009-12-04 10:39:18.000000000 -0500
+@@ -86,6 +86,7 @@ __be32		 nfsd_lookup_dentry(struct svc_r
+ 				struct svc_export **, struct dentry **);
+ __be32		nfsd_setattr(struct svc_rqst *, struct svc_fh *,
+ 				struct iattr *, int, time_t);
++int nfsd_mountpoint(struct dentry *, struct svc_export *);
+ #ifdef CONFIG_NFSD_V4
+ __be32          nfsd4_set_nfs4_acl(struct svc_rqst *, struct svc_fh *,
+                     struct nfs4_acl *);
+@@ -394,6 +395,10 @@ static inline u32 nfsd_suppattrs2(u32 mi
+ 	return minorversion ? NFSD4_1_SUPPORTED_ATTRS_WORD2
+ 			    : NFSD4_SUPPORTED_ATTRS_WORD2;
+ }
++static inline int nfsd_v4client(struct svc_rqst *rq)
++{
++	return rq->rq_prog == NFS_PROGRAM && rq->rq_vers == 4;
++}
+ 
+ /* These will return ERR_INVAL if specified in GETATTR or READDIR. */
+ #define NFSD_WRITEONLY_ATTRS_WORD1							    \

linux-2.6-revert-dvb-net-kabi-change.patch:
 dvb_net.c |   57 +++++++++++++++++++++++++++++----------------------------
 1 file changed, 29 insertions(+), 28 deletions(-)

Index: linux-2.6-revert-dvb-net-kabi-change.patch
===================================================================
RCS file: linux-2.6-revert-dvb-net-kabi-change.patch
diff -N linux-2.6-revert-dvb-net-kabi-change.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ linux-2.6-revert-dvb-net-kabi-change.patch	31 Jan 2010 17:57:55 -0000	1.1.2.4
@@ -0,0 +1,149 @@
+diff --git a/drivers/media/dvb/dvb-core/dvb_net.c b/drivers/media/dvb/dvb-core/dvb_net.c
+index f6ba846..03fd9dd 100644
+--- a/drivers/media/dvb/dvb-core/dvb_net.c
++++ b/drivers/media/dvb/dvb-core/dvb_net.c
+@@ -125,6 +125,7 @@ static void hexdump( const unsigned char *buf, unsigned short len )
+ 
+ struct dvb_net_priv {
+ 	int in_use;
++	struct net_device_stats stats;
+ 	u16 pid;
+ 	struct net_device *net;
+ 	struct dvb_net *host;
+@@ -383,8 +384,8 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len )
+ 				if (priv->ule_skb) {
+ 					dev_kfree_skb( priv->ule_skb );
+ 					/* Prepare for next SNDU. */
+-					dev->stats.rx_errors++;
+-					dev->stats.rx_frame_errors++;
++					priv->stats.rx_errors++;
++					priv->stats.rx_frame_errors++;
+ 				}
+ 				reset_ule(priv);
+ 				priv->need_pusi = 1;
+@@ -437,8 +438,8 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len )
+ 					dev_kfree_skb( priv->ule_skb );
+ 					/* Prepare for next SNDU. */
+ 					// reset_ule(priv);  moved to below.
+-					dev->stats.rx_errors++;
+-					dev->stats.rx_frame_errors++;
++					priv->stats.rx_errors++;
++					priv->stats.rx_frame_errors++;
+ 				}
+ 				reset_ule(priv);
+ 				/* skip to next PUSI. */
+@@ -459,8 +460,8 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len )
+ 						/* Drop partly decoded SNDU, reset state, resync on PUSI. */
+ 						if (priv->ule_skb) {
+ 							dev_kfree_skb( priv->ule_skb );
+-							dev->stats.rx_errors++;
+-							dev->stats.rx_frame_errors++;
++							priv->stats.rx_errors++;
++							priv->stats.rx_frame_errors++;
+ 						}
+ 						reset_ule(priv);
+ 						priv->need_pusi = 1;
+@@ -476,8 +477,8 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len )
+ 				if (priv->ule_sndu_remain > 183) {
+ 					/* Current SNDU lacks more data than there could be available in the
+ 					 * current TS cell. */
+-					dev->stats.rx_errors++;
+-					dev->stats.rx_length_errors++;
++					priv->stats.rx_errors++;
++					priv->stats.rx_length_errors++;
+ 					printk(KERN_WARNING "%lu: Expected %d more SNDU bytes, but "
+ 					       "got PUSI (pf %d, ts_remain %d).  Flushing incomplete payload.\n",
+ 					       priv->ts_count, priv->ule_sndu_remain, ts[4], ts_remain);
+@@ -519,8 +520,8 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len )
+ 				if (priv->ule_sndu_len < 5) {
+ 					printk(KERN_WARNING "%lu: Invalid ULE SNDU length %u. "
+ 					       "Resyncing.\n", priv->ts_count, priv->ule_sndu_len);
+-					dev->stats.rx_errors++;
+-					dev->stats.rx_length_errors++;
++					priv->stats.rx_errors++;
++					priv->stats.rx_length_errors++;
+ 					priv->ule_sndu_len = 0;
+ 					priv->need_pusi = 1;
+ 					new_ts = 1;
+@@ -572,7 +573,7 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len )
+ 			if (priv->ule_skb == NULL) {
+ 				printk(KERN_NOTICE "%s: Memory squeeze, dropping packet.\n",
+ 				       dev->name);
+-				dev->stats.rx_dropped++;
++				priv->stats.rx_dropped++;
+ 				return;
+ 			}
+ 
+@@ -636,8 +637,8 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len )
+ 				ule_dump = 1;
+ #endif
+ 
+-				dev->stats.rx_errors++;
+-				dev->stats.rx_crc_errors++;
++				priv->stats.rx_errors++;
++				priv->stats.rx_crc_errors++;
+ 				dev_kfree_skb(priv->ule_skb);
+ 			} else {
+ 				/* CRC32 verified OK. */
+@@ -743,8 +744,8 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len )
+ 				 * receive the packet anyhow. */
+ 				/* if (priv->ule_dbit && skb->pkt_type == PACKET_OTHERHOST)
+ 					priv->ule_skb->pkt_type = PACKET_HOST; */
+-				dev->stats.rx_packets++;
+-				dev->stats.rx_bytes += priv->ule_skb->len;
++				priv->stats.rx_packets++;
++				priv->stats.rx_bytes += priv->ule_skb->len;
+ 				netif_rx(priv->ule_skb);
+ 			}
+ 			sndu_done:
+@@ -799,7 +800,8 @@ static void dvb_net_sec(struct net_device *dev,
+ {
+ 	u8 *eth;
+ 	struct sk_buff *skb;
+-	struct net_device_stats *stats = &dev->stats;
++	struct net_device_stats *stats =
++		&((struct dvb_net_priv *) netdev_priv(dev))->stats;
+ 	int snap = 0;
+ 
+ 	/* note: pkt_len includes a 32bit checksum */
+@@ -1214,29 +1216,28 @@ static int dvb_net_stop(struct net_device *dev)
+ 	return dvb_net_feed_stop(dev);
+ }
+ 
++static struct net_device_stats * dvb_net_get_stats(struct net_device *dev)
++{
++	return &((struct dvb_net_priv *) netdev_priv(dev))->stats;
++}
++
+ static const struct header_ops dvb_header_ops = {
+ 	.create		= eth_header,
+ 	.parse		= eth_header_parse,
+ 	.rebuild	= eth_rebuild_header,
+ };
+ 
+-
+-static const struct net_device_ops dvb_netdev_ops = {
+-	.ndo_open		= dvb_net_open,
+-	.ndo_stop		= dvb_net_stop,
+-	.ndo_start_xmit		= dvb_net_tx,
+-	.ndo_set_multicast_list = dvb_net_set_multicast_list,
+-	.ndo_set_mac_address    = dvb_net_set_mac,
+-	.ndo_change_mtu		= eth_change_mtu,
+-	.ndo_validate_addr	= eth_validate_addr,
+-};
+-
+ static void dvb_net_setup(struct net_device *dev)
+ {
+ 	ether_setup(dev);
+ 
+ 	dev->header_ops		= &dvb_header_ops;
+-	dev->netdev_ops		= &dvb_netdev_ops;
++	dev->open		= dvb_net_open;
++	dev->stop		= dvb_net_stop;
++	dev->hard_start_xmit	= dvb_net_tx;
++	dev->get_stats		= dvb_net_get_stats;
++	dev->set_multicast_list = dvb_net_set_multicast_list;
++	dev->set_mac_address    = dvb_net_set_mac;
+ 	dev->mtu		= 4096;
+ 	dev->mc_count           = 0;
+ 

linux-2.6-rt2x00-asus-leds.patch:
 rt2400pci.c |    4 +++-
 rt2500pci.c |    4 +++-
 rt2500usb.c |    4 +++-
 3 files changed, 9 insertions(+), 3 deletions(-)

Index: linux-2.6-rt2x00-asus-leds.patch
===================================================================
RCS file: linux-2.6-rt2x00-asus-leds.patch
diff -N linux-2.6-rt2x00-asus-leds.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ linux-2.6-rt2x00-asus-leds.patch	31 Jan 2010 17:57:56 -0000	1.1.6.2
@@ -0,0 +1,69 @@
+Back-port of the following two patches from wireless-testing...
+
+commit 5a2e156203294d61d7963877286b2763cbc02cf7
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date:   Sat Jan 17 20:44:08 2009 +0100
+
+    rt2x00: Add LED_MODE_ASUS support
+    
+    When the led mode is asus, the activity led mode must
+    be registered otherwise the second LED will not be enabled.
+    
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit a064405c724484f80eefdb6754e8f782144e1f91
+Author: Andrew Price <andy at andrewprice.me.uk>
+Date:   Sat Jan 10 19:38:05 2009 +0000
+
+    rt2400,rt2500: init led_qual for LED_MODE_DEFAULT
+    
+    Add a check for LED_MODE_DEFAULT so that we use the link LED for rt2400
+    and rt2500 devices.
+    
+    Signed-off-by: Andrew Price <andy at andrewprice.me.uk>
+    Acked-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+diff -up linux-2.6.28.noarch/drivers/net/wireless/rt2x00/rt2400pci.c.orig linux-2.6.28.noarch/drivers/net/wireless/rt2x00/rt2400pci.c
+--- linux-2.6.28.noarch/drivers/net/wireless/rt2x00/rt2400pci.c.orig	2008-12-24 18:26:37.000000000 -0500
++++ linux-2.6.28.noarch/drivers/net/wireless/rt2x00/rt2400pci.c	2009-01-21 16:06:08.000000000 -0500
+@@ -1378,7 +1378,9 @@ static int rt2400pci_init_eeprom(struct 
+ 	value = rt2x00_get_field16(eeprom, EEPROM_ANTENNA_LED_MODE);
+ 
+ 	rt2400pci_init_led(rt2x00dev, &rt2x00dev->led_radio, LED_TYPE_RADIO);
+-	if (value == LED_MODE_TXRX_ACTIVITY)
++	if (value == LED_MODE_TXRX_ACTIVITY ||
++	    value == LED_MODE_DEFAULT ||
++	    value == LED_MODE_ASUS)
+ 		rt2400pci_init_led(rt2x00dev, &rt2x00dev->led_qual,
+ 				   LED_TYPE_ACTIVITY);
+ #endif /* CONFIG_RT2X00_LIB_LEDS */
+diff -up linux-2.6.28.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig linux-2.6.28.noarch/drivers/net/wireless/rt2x00/rt2500usb.c
+--- linux-2.6.28.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig	2008-12-24 18:26:37.000000000 -0500
++++ linux-2.6.28.noarch/drivers/net/wireless/rt2x00/rt2500usb.c	2009-01-21 16:06:08.000000000 -0500
+@@ -1477,7 +1477,9 @@ static int rt2500usb_init_eeprom(struct 
+ 	value = rt2x00_get_field16(eeprom, EEPROM_ANTENNA_LED_MODE);
+ 
+ 	rt2500usb_init_led(rt2x00dev, &rt2x00dev->led_radio, LED_TYPE_RADIO);
+-	if (value == LED_MODE_TXRX_ACTIVITY)
++	if (value == LED_MODE_TXRX_ACTIVITY ||
++	    value == LED_MODE_DEFAULT ||
++	    value == LED_MODE_ASUS)
+ 		rt2500usb_init_led(rt2x00dev, &rt2x00dev->led_qual,
+ 				   LED_TYPE_ACTIVITY);
+ #endif /* CONFIG_RT2X00_LIB_LEDS */
+diff -up linux-2.6.28.noarch/drivers/net/wireless/rt2x00/rt2500pci.c.orig linux-2.6.28.noarch/drivers/net/wireless/rt2x00/rt2500pci.c
+--- linux-2.6.28.noarch/drivers/net/wireless/rt2x00/rt2500pci.c.orig	2008-12-24 18:26:37.000000000 -0500
++++ linux-2.6.28.noarch/drivers/net/wireless/rt2x00/rt2500pci.c	2009-01-21 16:06:08.000000000 -0500
+@@ -1537,7 +1537,9 @@ static int rt2500pci_init_eeprom(struct 
+ 	value = rt2x00_get_field16(eeprom, EEPROM_ANTENNA_LED_MODE);
+ 
+ 	rt2500pci_init_led(rt2x00dev, &rt2x00dev->led_radio, LED_TYPE_RADIO);
+-	if (value == LED_MODE_TXRX_ACTIVITY)
++	if (value == LED_MODE_TXRX_ACTIVITY ||
++	    value == LED_MODE_DEFAULT ||
++	    value == LED_MODE_ASUS)
+ 		rt2500pci_init_led(rt2x00dev, &rt2x00dev->led_qual,
+ 				   LED_TYPE_ACTIVITY);
+ #endif /* CONFIG_RT2X00_LIB_LEDS */

linux-2.6-userspace_kvmclock_offset.patch:
 Documentation/kvm/api.txt       |   34 ++++++++++++++++++++++++++++++++++
 arch/x86/include/asm/kvm_host.h |    1 +
 arch/x86/kvm/x86.c              |   36 +++++++++++++++++++++++++++++++++++-
 include/linux/kvm.h             |   10 +++++++++-
 4 files changed, 79 insertions(+), 2 deletions(-)

--- NEW FILE linux-2.6-userspace_kvmclock_offset.patch ---
>From a6048dd2da5be0dec49739304d310ddfc477d99c Mon Sep 17 00:00:00 2001
From: Glauber Costa <glommer at redhat.com>
Date: Fri, 16 Oct 2009 15:28:36 -0400
Subject: [PATCH] KVM: allow userspace to adjust kvmclock offset

When we migrate a kvm guest that uses pvclock between two hosts, we may
suffer a large skew. This is because there can be significant differences
between the monotonic clock of the hosts involved. When a new host with
a much larger monotonic time starts running the guest, the view of time
will be significantly impacted.

Situation is much worse when we do the opposite, and migrate to a host with
a smaller monotonic clock.

This proposed ioctl will allow userspace to inform us what is the monotonic
clock value in the source host, so we can keep the time skew short, and
more importantly, never goes backwards. Userspace may also need to trigger
the current data, since from the first migration onwards, it won't be
reflected by a simple call to clock_gettime() anymore.

Signed-off-by: Glauber Costa <glommer at redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti at redhat.com>
---
 Documentation/kvm/api.txt       |   34 ++++++++++++++++++++++++++++++++++
 arch/x86/include/asm/kvm_host.h |    1 +
 arch/x86/kvm/x86.c              |   36 +++++++++++++++++++++++++++++++++++-
 include/linux/kvm.h             |    9 +++++++++
 4 files changed, 79 insertions(+), 1 deletions(-)

diff --git a/Documentation/kvm/api.txt b/Documentation/kvm/api.txt
index 5980113..126419f 100644
--- a/Documentation/kvm/api.txt
+++ b/Documentation/kvm/api.txt
@@ -617,6 +617,40 @@ struct kvm_xen_hvm_config {
 	__u8 pad2[30];
 };
 
+4.27 KVM_GET_CLOCK
+
+Capability: KVM_CAP_ADJUST_CLOCK
+Architectures: x86
+Type: vm ioctl
+Parameters: struct kvm_clock_data (out)
+Returns: 0 on success, -1 on error
+
+Gets the current timestamp of kvmclock as seen by the current guest. In
+conjunction with KVM_SET_CLOCK, it is used to ensure monotonicity on scenarios
+such as migration.
+
+struct kvm_clock_data {
+	__u64 clock;  /* kvmclock current value */
+	__u64 pad[2];
+};
+
+4.28 KVM_SET_CLOCK
+
+Capability: KVM_CAP_ADJUST_CLOCK
+Architectures: x86
+Type: vm ioctl
+Parameters: struct kvm_clock_data (in)
+Returns: 0 on success, -1 on error
+
+Sets the current timestamp of kvmclock to the valued specific in its parameter.
+In conjunction with KVM_GET_CLOCK, it is used to ensure monotonicity on scenarios
+such as migration.
+
+struct kvm_clock_data {
+	__u64 clock;  /* kvmclock current value */
+	__u64 pad[2];
+};
+
 5. The kvm_run structure
 
 Application code obtains a pointer to the kvm_run structure by
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 4d994ad..0558ff8 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -413,6 +413,7 @@ struct kvm_arch{
 	unsigned long irq_sources_bitmap;
 	unsigned long irq_states[KVM_IOAPIC_NUM_PINS];
 	u64 vm_init_tsc;
+	s64 kvmclock_offset;
 };

 struct kvm_vm_stat {
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index e3456f8..3270b3b 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -680,7 +680,8 @@ static void kvm_write_guest_time(struct kvm_vcpu *v)
 	/* With all the info we got, fill in the values */
 
 	vcpu->hv_clock.system_time = ts.tv_nsec +
-				     (NSEC_PER_SEC * (u64)ts.tv_sec);
+				     (NSEC_PER_SEC * (u64)ts.tv_sec) + v->kvm->arch.kvmclock_offset;
+
 	/*
 	 * The interface expects us to write an even number signaling that the
 	 * update is finished. Since the guest won't see the intermediate
@@ -1261,6 +1262,7 @@ int kvm_dev_ioctl_check_extension(long ext)
 	case KVM_CAP_PIT2:
 	case KVM_CAP_PIT_STATE2:
 	case KVM_CAP_SET_IDENTITY_MAP_ADDR:
+	case KVM_CAP_ADJUST_CLOCK:
 		r = 1;
 		break;
 	case KVM_CAP_COALESCED_MMIO:
@@ -2464,6 +2466,38 @@ long kvm_arch_vm_ioctl(struct file *filp,
 		r = 0;
 		break;
 	}
+	case KVM_SET_CLOCK: {
+		struct timespec now;
+		struct kvm_clock_data user_ns;
+		u64 now_ns;
+		s64 delta;
+
+		r = -EFAULT;
+		if (copy_from_user(&user_ns, argp, sizeof(user_ns)))
+			goto out;
+
+		r = 0;
+		ktime_get_ts(&now);
+		now_ns = timespec_to_ns(&now);
+		delta = user_ns.clock - now_ns;
+		kvm->arch.kvmclock_offset = delta;
+		break;
+	}
+	case KVM_GET_CLOCK: {
+		struct timespec now;
+		struct kvm_clock_data user_ns;
+		u64 now_ns;
+
+		ktime_get_ts(&now);
+		now_ns = timespec_to_ns(&now);
+		user_ns.clock = kvm->arch.kvmclock_offset + now_ns;
+
+		if (copy_to_user(argp, &user_ns, sizeof(user_ns)))
+			r =  -EFAULT;
+
+		break;
+	}
+
 	default:
 		;
 	}
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
index e0ed46c..0e8455b 100644
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -439,6 +439,7 @@ struct kvm_ioeventfd {
 #endif
 #define KVM_CAP_IOEVENTFD 36
 #define KVM_CAP_SET_IDENTITY_MAP_ADDR 37
+#define KVM_CAP_ADJUST_CLOCK 38
 
 #ifdef KVM_CAP_IRQ_ROUTING
 
@@ -512,6 +513,11 @@ struct kvm_irqfd {
 	__u8  pad[20];
 };
 
+struct kvm_clock_data {
+	__u64 clock;
+	__u64 pad[2];
+};
+
 /*
  * ioctls for VM fds
  */
@@ -562,6 +568,9 @@ struct kvm_irqfd {
 #define KVM_CREATE_PIT2            _IOW(KVMIO, 0x77, struct kvm_pit_config)
 #define KVM_SET_BOOT_CPU_ID        _IO(KVMIO, 0x78)
 #define KVM_IOEVENTFD             _IOW(KVMIO, 0x79, struct kvm_ioeventfd)
+#define KVM_SET_CLOCK             _IOW(KVMIO, 0x7b, struct kvm_clock_data)
+#define KVM_GET_CLOCK             _IOR(KVMIO, 0x7c, struct kvm_clock_data)
+
 
 /*
  * ioctls for vcpu fds
-- 
1.6.5.1


linux-2.6-utrace-ptrace.patch:
 include/linux/ptrace.h |    2 
 kernel/Makefile        |    1 
 kernel/ptrace-utrace.c | 1080 +++++++++++++++++++++++++++++++++++++++++++++++++
 kernel/ptrace.c        |  597 +++++++++++++--------------
 kernel/utrace.c        |   16 
 5 files changed, 1391 insertions(+), 305 deletions(-)

--- NEW FILE linux-2.6-utrace-ptrace.patch ---
utrace: ptrace cooperation

This adds the CONFIG_UTRACE_PTRACE option under CONFIG_UTRACE.
When set, parts of ptrace are replaced so it uses the utrace
facilities for noticing events, stopping and resuming threads.

This makes ptrace play nicely with other utrace-based things
tracing the same threads.  It also makes all ptrace uses rely on
some of the utrace code working right, even when you are not
using any other utrace-based things.  So it's experimental and
not real well proven yet.  But it's recommended if you enable
CONFIG_UTRACE and want to try new utrace things.

Signed-off-by: Roland McGrath <roland at redhat.com>
---
 include/linux/ptrace.h |    2 +-
 kernel/Makefile        |    1 +
 kernel/ptrace-utrace.c | 1080 ++++++++++++++++++++++++++++++++++++++++++++++++
 kernel/ptrace.c        |  572 +++++++++++++-------------
 kernel/utrace.c        |   16 +
 5 files changed, 1378 insertions(+), 293 deletions(-)

diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h
index 4802e2a..03f8fc7 100644  
--- a/include/linux/ptrace.h
+++ b/include/linux/ptrace.h
@@ -79,7 +79,7 @@
 #include <linux/compiler.h>		/* For unlikely.  */
 #include <linux/sched.h>		/* For struct task_struct.  */
 
-
+extern void ptrace_notify_stop(struct task_struct *tracee);
 extern long arch_ptrace(struct task_struct *child, long request, long addr, long data);
 extern int ptrace_traceme(void);
 extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len);
diff --git a/kernel/Makefile b/kernel/Makefile
index 263bb19..42cb1ec 100644  
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -69,6 +69,7 @@ obj-$(CONFIG_RESOURCE_COUNTERS) += res_c
 obj-$(CONFIG_STOP_MACHINE) += stop_machine.o
 obj-$(CONFIG_KPROBES_SANITY_TEST) += test_kprobes.o
 obj-$(CONFIG_UTRACE) += utrace.o
+obj-$(CONFIG_UTRACE) += ptrace-utrace.o
 obj-$(CONFIG_AUDIT) += audit.o auditfilter.o audit_watch.o
 obj-$(CONFIG_AUDITSYSCALL) += auditsc.o
 obj-$(CONFIG_GCOV_KERNEL) += gcov/
diff --git a/kernel/ptrace-utrace.c b/kernel/ptrace-utrace.c
new file mode 100644
index ...ea419ee 100644  
--- /dev/null
+++ b/kernel/ptrace-utrace.c
@@ -0,0 +1,1080 @@
+/*
+ * linux/kernel/ptrace.c
+ *
+ * (C) Copyright 1999 Linus Torvalds
+ *
+ * Common interfaces for "ptrace()" which we do not want
+ * to continually duplicate across every architecture.
+ */
+
+#include <linux/capability.h>
+#include <linux/module.h>
+#include <linux/sched.h>
+#include <linux/errno.h>
+#include <linux/mm.h>
+#include <linux/highmem.h>
+#include <linux/pagemap.h>
+#include <linux/smp_lock.h>
+#include <linux/ptrace.h>
+#include <linux/utrace.h>
+#include <linux/security.h>
+#include <linux/signal.h>
+#include <linux/audit.h>
+#include <linux/pid_namespace.h>
+#include <linux/syscalls.h>
+#include <linux/uaccess.h>
+
+/*
+ * ptrace a task: make the debugger its new parent and
+ * move it to the ptrace list.
+ *
+ * Must be called with the tasklist lock write-held.
+ */
+void __ptrace_link(struct task_struct *child, struct task_struct *new_parent)
+{
+	BUG_ON(!list_empty(&child->ptrace_entry));
+	list_add(&child->ptrace_entry, &new_parent->ptraced);
+	child->parent = new_parent;
+}
+
+/*
+ * unptrace a task: move it back to its original parent and
+ * remove it from the ptrace list.
+ *
+ * Must be called with the tasklist lock write-held.
+ */
+void __ptrace_unlink(struct task_struct *child)
+{
+	BUG_ON(!child->ptrace);
+
+	child->ptrace = 0;
+	child->parent = child->real_parent;
+	list_del_init(&child->ptrace_entry);
+
+	arch_ptrace_untrace(child);
+}
+
+struct ptrace_context {
+	int				options;
+
+	int				signr;
+	siginfo_t			*siginfo;
+
+	int				stop_code;
+	unsigned long			eventmsg;
+
+	enum utrace_resume_action	resume;
+};
+
+#define PT_UTRACED			0x00001000
+
+#define PTRACE_O_SYSEMU			0x100
+
+#define PTRACE_EVENT_SYSCALL		(1 << 16)
+#define PTRACE_EVENT_SIGTRAP		(2 << 16)
+#define PTRACE_EVENT_SIGNAL		(3 << 16)
+/* events visible to user-space */
+#define PTRACE_EVENT_MASK		0xFFFF
+
+static inline bool ptrace_event_pending(struct ptrace_context *ctx)
+{
+	return ctx->stop_code != 0;
+}
+
+static inline int get_stop_event(struct ptrace_context *ctx)
+{
+	return ctx->stop_code >> 8;
+}
+
+static inline void set_stop_code(struct ptrace_context *ctx, int event)
+{
+	ctx->stop_code = (event << 8) | SIGTRAP;
+}
+
+static inline struct ptrace_context *
+ptrace_context(struct utrace_engine *engine)
+{
+	return engine->data;
+}
+
+static const struct utrace_engine_ops ptrace_utrace_ops; /* forward decl */
+
+static struct utrace_engine *ptrace_lookup_engine(struct task_struct *tracee)
+{
+	return utrace_attach_task(tracee, UTRACE_ATTACH_MATCH_OPS,
+					&ptrace_utrace_ops, NULL);
+}
+
+static struct utrace_engine *
+ptrace_reuse_engine(struct task_struct *tracee)
+{
+	struct utrace_engine *engine;
+	struct ptrace_context *ctx;
+	int err = -EPERM;
+
+	engine = ptrace_lookup_engine(tracee);
+	if (IS_ERR(engine))
+		return engine;
+
+	ctx = ptrace_context(engine);
+	if (unlikely(ctx->resume == UTRACE_DETACH)) {
+		/*
+		 * Try to reuse this self-detaching engine.
+		 * The only caller which can hit this case is ptrace_attach(),
+		 * it holds ->cred_guard_mutex.
+		 */
+		ctx->options = 0;
+		ctx->eventmsg = 0;
+
+		/* make sure we don't get unwanted reports */
+		err = utrace_set_events(tracee, engine, UTRACE_EVENT(QUIESCE));
+		if (!err || err == -EINPROGRESS) {
+			ctx->resume = UTRACE_RESUME;
+			/* synchronize with ptrace_report_signal() */
+			err = utrace_barrier(tracee, engine);
+		}
+		WARN_ON(!err != (engine->ops == &ptrace_utrace_ops));
+
+		if (!err)
+			return engine;
+	}
+
+	utrace_engine_put(engine);
+	return ERR_PTR(err);
+}
+
+static struct utrace_engine *
+ptrace_attach_engine(struct task_struct *tracee)
+{
+	struct utrace_engine *engine;
+	struct ptrace_context *ctx;
+
+	if (unlikely(task_utrace_flags(tracee))) {
+		engine = ptrace_reuse_engine(tracee);
+		if (!IS_ERR(engine) || IS_ERR(engine) == -EPERM)
+			return engine;
+	}
+
+	ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
+	if (unlikely(!ctx))
+		return ERR_PTR(-ENOMEM);
+
+	ctx->resume = UTRACE_RESUME;
+
+	engine = utrace_attach_task(tracee, UTRACE_ATTACH_CREATE |
+						UTRACE_ATTACH_EXCLUSIVE |
+						UTRACE_ATTACH_MATCH_OPS,
+						&ptrace_utrace_ops, ctx);
+	if (unlikely(IS_ERR(engine))) {
+		if (engine != ERR_PTR(-ESRCH) &&
+		    engine != ERR_PTR(-ERESTARTNOINTR))
+			engine = ERR_PTR(-EPERM);
+		kfree(ctx);
+	}
+
+	return engine;
+}
+
+static inline int ptrace_set_events(struct task_struct *target,
+					struct utrace_engine *engine,
+					unsigned long options)
+{
+	struct ptrace_context *ctx = ptrace_context(engine);
+	/*
+	 * We need QUIESCE for resume handling, CLONE to check
+	 * for CLONE_PTRACE, other events are always reported.
+	 */
+	unsigned long events = UTRACE_EVENT(QUIESCE) | UTRACE_EVENT(CLONE) |
+			       UTRACE_EVENT(EXEC) | UTRACE_EVENT_SIGNAL_ALL;
+
+	ctx->options = options;
+	if (options & PTRACE_O_TRACEEXIT)
+		events |= UTRACE_EVENT(EXIT);
+
+	return utrace_set_events(target, engine, events);
+}
+
+/*
+ * Attach a utrace engine for ptrace and set up its event mask.
+ * Returns error code or 0 on success.
+ */
+static int ptrace_attach_task(struct task_struct *tracee, int options)
+{
+	struct utrace_engine *engine;
+	int err;
+
+	engine = ptrace_attach_engine(tracee);
+	if (IS_ERR(engine))
+		return PTR_ERR(engine);
+	/*
+	 * It can fail only if the tracee is dead, the caller
+	 * must notice this before setting PT_UTRACED.
+	 */
+	err = ptrace_set_events(tracee, engine, options);
+	WARN_ON(err && !tracee->exit_state);
+	utrace_engine_put(engine);
+	return 0;
+}
+
+static int ptrace_wake_up(struct task_struct *tracee,
+				struct utrace_engine *engine,
+				enum utrace_resume_action action,
+				bool force_wakeup)
+{
+	if (force_wakeup) {
+		unsigned long flags;
+		/*
+		 * Preserve the compatibility bug. Historically ptrace
+		 * wakes up the tracee even if it should not. Clear
+		 * SIGNAL_STOP_STOPPED for utrace_wakeup().
+		 */
+		if (lock_task_sighand(tracee, &flags)) {
+			tracee->signal->flags &= ~SIGNAL_STOP_STOPPED;
+			unlock_task_sighand(tracee, &flags);
+		}
+	}
+
+	if (action != UTRACE_REPORT)
+		ptrace_context(engine)->stop_code = 0;
+
+	return utrace_control(tracee, engine, action);
+}
+
+static void ptrace_detach_task(struct task_struct *tracee, int sig)
+{
+	/*
+	 * If true, the caller is PTRACE_DETACH, otherwise
+	 * the tracer detaches implicitly during exit.
+	 */
+	bool voluntary = (sig >= 0);
+	struct utrace_engine *engine = ptrace_lookup_engine(tracee);
+	enum utrace_resume_action action = UTRACE_DETACH;
+
+	if (unlikely(IS_ERR(engine)))
+		return;
+
+	if (sig) {
+		struct ptrace_context *ctx = ptrace_context(engine);
+
+		switch (get_stop_event(ctx)) {
+		case PTRACE_EVENT_SYSCALL:
+			if (voluntary)
+				send_sig_info(sig, SEND_SIG_PRIV, tracee);
+			break;
+
+		case PTRACE_EVENT_SIGNAL:
+			if (voluntary)
+				ctx->signr = sig;
+			ctx->resume = UTRACE_DETACH;
+			action = UTRACE_RESUME;
+			break;
+		}
+	}
+
+	ptrace_wake_up(tracee, engine, action, voluntary);
+	utrace_engine_put(engine);
+}
+
+static void ptrace_abort_attach(struct task_struct *tracee)
+{
+	ptrace_detach_task(tracee, 0);
+}
+
+static u32 ptrace_report_exit(u32 action, struct utrace_engine *engine,
+			      long orig_code, long *code)
+{
+	struct ptrace_context *ctx = ptrace_context(engine);
+
+	WARN_ON(ptrace_event_pending(ctx) &&
+		!signal_group_exit(current->signal));
+
+	set_stop_code(ctx, PTRACE_EVENT_EXIT);
+	ctx->eventmsg = *code;
+
+	return UTRACE_STOP;
+}
+
+static void ptrace_clone_attach(struct task_struct *child,
+				int options)
+{
+	struct task_struct *parent = current;
+	struct task_struct *tracer;
+	bool abort = true;
+
+	if (unlikely(ptrace_attach_task(child, options))) {
+		WARN_ON(1);
+		return;
+	}
+
+	write_lock_irq(&tasklist_lock);
+	tracer = parent->parent;
+	if (!(tracer->flags & PF_EXITING) && parent->ptrace) {
+		child->ptrace = parent->ptrace;
+		__ptrace_link(child, tracer);
+		abort = false;
+	}
+	write_unlock_irq(&tasklist_lock);
+	if (unlikely(abort)) {
+		ptrace_abort_attach(child);
+		return;
+	}
+
+	sigaddset(&child->pending.signal, SIGSTOP);
+	set_tsk_thread_flag(child, TIF_SIGPENDING);
+}
+
+static u32 ptrace_report_clone(u32 action, struct utrace_engine *engine,
+			       unsigned long clone_flags,
+			       struct task_struct *child)
+{
+	struct ptrace_context *ctx = ptrace_context(engine);
+	int event = 0;
+
+	WARN_ON(ptrace_event_pending(ctx));
+
+	if (clone_flags & CLONE_UNTRACED) {
+		/* no events reported */
+	} else if (clone_flags & CLONE_VFORK) {
+		if (ctx->options & PTRACE_O_TRACEVFORK)
+			event = PTRACE_EVENT_VFORK;
+		else if (ctx->options & PTRACE_O_TRACEVFORKDONE)
+			event = PTRACE_EVENT_VFORK_DONE;
+	} else if ((clone_flags & CSIGNAL) != SIGCHLD) {
+		if (ctx->options & PTRACE_O_TRACECLONE)
+			event = PTRACE_EVENT_CLONE;
+	} else if (ctx->options & PTRACE_O_TRACEFORK) {
+		event = PTRACE_EVENT_FORK;
+	}
+	/*
+	 * Any of these reports implies auto-attaching the new child.
+	 * So does CLONE_PTRACE, even with no event to report.
+	 */
+	if ((event && event != PTRACE_EVENT_VFORK_DONE) ||
+				(clone_flags & CLONE_PTRACE))
+		ptrace_clone_attach(child, ctx->options);
+
+	if (!event)
+		return UTRACE_RESUME;
+
+	set_stop_code(ctx, event);
+	ctx->eventmsg = child->pid;
+	/*
+	 * We shouldn't stop now, inside the do_fork() path.
+	 * We will stop later, before return to user-mode.
+	 */
+	if (event == PTRACE_EVENT_VFORK_DONE)
+		return UTRACE_REPORT;
+	else
+		return UTRACE_STOP;
+}
+
+static inline void set_syscall_code(struct ptrace_context *ctx)
+{
+	set_stop_code(ctx, PTRACE_EVENT_SYSCALL);
+	if (ctx->options & PTRACE_O_TRACESYSGOOD)
+		ctx->stop_code |= 0x80;
+}
+
+static u32 ptrace_report_syscall_entry(u32 action, struct utrace_engine *engine,
+				       struct pt_regs *regs)
+{
+	struct ptrace_context *ctx = ptrace_context(engine);
+
+	if (action & UTRACE_SYSCALL_RESUMED) {
+		/*
+		 * We already reported the first time.
+		 * Nothing more to do now.
+		 */
+		if (unlikely(ctx->options & PTRACE_O_SYSEMU))
+			return UTRACE_SYSCALL_ABORT | UTRACE_REPORT;
+		return utrace_syscall_action(action) | UTRACE_RESUME;
+	}
+
+	WARN_ON(ptrace_event_pending(ctx));
+
+	set_syscall_code(ctx);
+
+	if (unlikely(ctx->options & PTRACE_O_SYSEMU))
+		return UTRACE_SYSCALL_ABORT | UTRACE_REPORT;
+	/*
+	 * Stop now to report.  We will get another callback after
+	 * we resume, with the UTRACE_SYSCALL_RESUMED flag set.
+	 */
+	return UTRACE_SYSCALL_RUN | UTRACE_STOP;
+}
+
+static u32 ptrace_report_syscall_exit(u32 action, struct utrace_engine *engine,
+				      struct pt_regs *regs)
+{
+	struct ptrace_context *ctx = ptrace_context(engine);
+
+	if (ptrace_event_pending(ctx))
+		return UTRACE_STOP;
+
+	if (ctx->resume != UTRACE_RESUME) {
+		WARN_ON(ctx->resume != UTRACE_BLOCKSTEP &&
+			ctx->resume != UTRACE_SINGLESTEP);
+		ctx->resume = UTRACE_RESUME;
+
+		ctx->signr = SIGTRAP;
+		return UTRACE_INTERRUPT;
+	}
+
+	set_syscall_code(ctx);
+	return UTRACE_STOP;
+}
+
+static u32 ptrace_report_exec(u32 action, struct utrace_engine *engine,
+			      const struct linux_binfmt *fmt,
+			      const struct linux_binprm *bprm,
+			      struct pt_regs *regs)
+{
+	struct ptrace_context *ctx = ptrace_context(engine);
+
+	WARN_ON(ptrace_event_pending(ctx));
+
+	if (!(ctx->options & PTRACE_O_TRACEEXEC)) {
+		/*
+		 * Old-fashioned ptrace'd exec just posts a plain signal.
+		 */
+		send_sig(SIGTRAP, current, 0);
+		return UTRACE_RESUME;
+	}
+
+	set_stop_code(ctx, PTRACE_EVENT_EXEC);
+	return UTRACE_STOP;
+}
+
+static enum utrace_signal_action resume_signal(struct ptrace_context *ctx,
+					       struct k_sigaction *return_ka)
+{
+	siginfo_t *info = ctx->siginfo;
+	int signr = ctx->signr;
+
+	ctx->siginfo = NULL;
+	ctx->signr = 0;
+
+	/* Did the debugger cancel the sig? */
+	if (!signr)
+		return UTRACE_SIGNAL_IGN;
+	/*
+	 * Update the siginfo structure if the signal has changed.
+	 * If the debugger wanted something specific in the siginfo
+	 * then it should have updated *info via PTRACE_SETSIGINFO.
+	 */
+	if (info->si_signo != signr) {
+		info->si_signo = signr;
+		info->si_errno = 0;
+		info->si_code = SI_USER;
+		info->si_pid = task_pid_vnr(current->parent);
+		info->si_uid = task_uid(current->parent);
+	}
+
+	/* If the (new) signal is now blocked, requeue it. */
+	if (sigismember(&current->blocked, signr)) {
+		send_sig_info(signr, info, current);
+		return UTRACE_SIGNAL_IGN;
+	}
+
+	spin_lock_irq(&current->sighand->siglock);
+	*return_ka = current->sighand->action[signr - 1];
+	spin_unlock_irq(&current->sighand->siglock);
+
+	return UTRACE_SIGNAL_DELIVER;
+}
+
+static u32 ptrace_report_signal(u32 action, struct utrace_engine *engine,
+				struct pt_regs *regs,
+				siginfo_t *info,
+				const struct k_sigaction *orig_ka,
+				struct k_sigaction *return_ka)
+{
+	struct ptrace_context *ctx = ptrace_context(engine);
+	enum utrace_resume_action resume = ctx->resume;
+
+	if (ptrace_event_pending(ctx)) {
+		action = utrace_signal_action(action);
+		WARN_ON(action != UTRACE_SIGNAL_REPORT);
+		return action | UTRACE_STOP;
+	}
+
+	switch (utrace_signal_action(action)) {
+	case UTRACE_SIGNAL_HANDLER:
+		if (WARN_ON(ctx->siginfo))
+			ctx->siginfo = NULL;
+
+		if (resume != UTRACE_RESUME) {
+			WARN_ON(resume != UTRACE_BLOCKSTEP &&
+				resume != UTRACE_SINGLESTEP);
+
+			set_stop_code(ctx, PTRACE_EVENT_SIGTRAP);
+			return UTRACE_STOP | UTRACE_SIGNAL_IGN;
+		}
+
+	case UTRACE_SIGNAL_REPORT:
+		if (!ctx->siginfo) {
+			if (ctx->signr) {
+				/* set by ptrace_resume(SYSCALL_EXIT) */
+				WARN_ON(ctx->signr != SIGTRAP);
+				user_single_step_siginfo(current, regs, info);
+				force_sig_info(SIGTRAP, info, current);
+			}
+
+			return resume | UTRACE_SIGNAL_IGN;
+		}
+
+		if (WARN_ON(ctx->siginfo != info))
+			return resume | UTRACE_SIGNAL_IGN;
+
+		return resume | resume_signal(ctx, return_ka);
+
+	default:
+		break;
+	}
+
+	WARN_ON(ctx->siginfo);
+	ctx->siginfo = info;
+	/*
+	 * ctx->siginfo points to the caller's stack.
+	 * Make sure the subsequent UTRACE_SIGNAL_REPORT clears
+	 * ->siginfo before return from get_signal_to_deliver().
+	 */
+	if (utrace_control(current, engine, UTRACE_INTERRUPT))
+		WARN_ON(1);
+
+	ctx->signr = info->si_signo;
+	ctx->stop_code = (PTRACE_EVENT_SIGNAL << 8) | ctx->signr;
+
+	return UTRACE_STOP | UTRACE_SIGNAL_IGN;
+}
+
+static u32 ptrace_report_quiesce(u32 action, struct utrace_engine *engine,
+				 unsigned long event)
+{
+	struct ptrace_context *ctx = ptrace_context(engine);
+
+	if (ptrace_event_pending(ctx))
+		return UTRACE_STOP;
+
+	return event ? UTRACE_RESUME : ctx->resume;
+}
+
+static void ptrace_release(void *data)
+{
+	kfree(data);
+}
+
+static const struct utrace_engine_ops ptrace_utrace_ops = {
+	.report_signal = ptrace_report_signal,
+	.report_quiesce = ptrace_report_quiesce,
+	.report_exec = ptrace_report_exec,
+	.report_exit = ptrace_report_exit,
+	.report_clone = ptrace_report_clone,
+	.report_syscall_entry = ptrace_report_syscall_entry,
+	.report_syscall_exit = ptrace_report_syscall_exit,
+	.release = ptrace_release,
+};
+
+int ptrace_check_attach(struct task_struct *child, int kill)
+{
+	struct utrace_engine *engine;
+	struct utrace_examiner exam;
+	int ret = -ESRCH;
+
+	engine = ptrace_lookup_engine(child);
+	if (IS_ERR(engine))
+		return ret;
+
+	if (child->parent != current)
+		goto out;
+
+	if (unlikely(kill))
+		ret = 0;
+
+	if (!task_is_stopped_or_traced(child))
+		goto out;
+	/*
+	 * Make sure our engine has already stopped the child.
+	 * Then wait for it to be off the CPU.
+	 */
+	if (!utrace_control(child, engine, UTRACE_STOP) &&
+	    !utrace_prepare_examine(child, engine, &exam))
+		ret = 0;
+out:
+	utrace_engine_put(engine);
+	return ret;
+}
+
+int ptrace_attach(struct task_struct *task)
+{
+	int retval;
+
+	audit_ptrace(task);
+
+	retval = -EPERM;
+	if (unlikely(task->flags & PF_KTHREAD))
+		goto out;
+	if (same_thread_group(task, current))
+		goto out;
+
+	/*
+	 * Protect exec's credential calculations against our interference;
+	 * interference; SUID, SGID and LSM creds get determined differently
+	 * under ptrace.
+	 */
+	retval = -ERESTARTNOINTR;
+	if (mutex_lock_interruptible(&task->cred_guard_mutex))
+		goto out;
+
+	task_lock(task);
+	retval = __ptrace_may_access(task, PTRACE_MODE_ATTACH);
+	task_unlock(task);
+	if (retval)
+		goto unlock_creds;
+
+	retval = ptrace_attach_task(task, 0);
+	if (unlikely(retval))
+		goto unlock_creds;
+
+	write_lock_irq(&tasklist_lock);
+	retval = -EPERM;
+	if (unlikely(task->exit_state))
+		goto unlock_tasklist;
+
+	BUG_ON(task->ptrace);
+	task->ptrace = PT_UTRACED;
+	if (capable(CAP_SYS_PTRACE))
+		task->ptrace |= PT_PTRACE_CAP;
+
+	__ptrace_link(task, current);
+	send_sig_info(SIGSTOP, SEND_SIG_FORCED, task);
+
+	retval = 0;
+unlock_tasklist:
+	write_unlock_irq(&tasklist_lock);
+unlock_creds:
+	mutex_unlock(&task->cred_guard_mutex);
+out:
+	return retval;
+}
+
+/*
+ * Performs checks and sets PT_UTRACED.
+ * Should be used by all ptrace implementations for PTRACE_TRACEME.
+ */
+int ptrace_traceme(void)
+{
+	bool detach = true;
+	int ret = ptrace_attach_task(current, 0);
+
+	if (unlikely(ret))
+		return ret;
+
+	ret = -EPERM;
+	write_lock_irq(&tasklist_lock);
+	BUG_ON(current->ptrace);
+	ret = security_ptrace_traceme(current->parent);
+	/*
+	 * Check PF_EXITING to ensure ->real_parent has not passed
+	 * exit_ptrace(). Otherwise we don't report the error but
+	 * pretend ->real_parent untraces us right after return.
+	 */
+	if (!ret && !(current->real_parent->flags & PF_EXITING)) {
+		current->ptrace = PT_UTRACED;
+		__ptrace_link(current, current->real_parent);
+		detach = false;
+	}
+	write_unlock_irq(&tasklist_lock);
+
+	if (detach)
+		ptrace_abort_attach(current);
+	return ret;
+}
+
+static void ptrace_do_detach(struct task_struct *tracee, unsigned int data)
+{
+	bool detach, release;
+
+	write_lock_irq(&tasklist_lock);
+	/*
+	 * This tracee can be already killed. Make sure de_thread() or
+	 * our sub-thread doing do_wait() didn't do release_task() yet.
+	 */
+	detach = tracee->ptrace != 0;
+	release = false;
+	if (likely(detach))
+		release = __ptrace_detach(current, tracee);
+	write_unlock_irq(&tasklist_lock);
+
+	if (unlikely(release))
+		release_task(tracee);
+	else if (likely(detach))
+		ptrace_detach_task(tracee, data);
+}
+
+int ptrace_detach(struct task_struct *child, unsigned int data)
+{
+	if (!valid_signal(data))
+		return -EIO;
+
+	ptrace_do_detach(child, data);
+
+	return 0;
+}
+
+/*
+ * Detach all tasks we were using ptrace on.
+ */
+void exit_ptrace(struct task_struct *tracer)
+{
+	for (;;) {
+		struct task_struct *tracee = NULL;
+
+		read_lock(&tasklist_lock);
+		if (!list_empty(&tracer->ptraced)) {
+			tracee = list_first_entry(&tracer->ptraced,
+					struct task_struct, ptrace_entry);
+			get_task_struct(tracee);
+		}
+		read_unlock(&tasklist_lock);
+		if (!tracee)
+			break;
+
+		ptrace_do_detach(tracee, -1);
+		put_task_struct(tracee);
+	}
+}
+
+static int ptrace_set_options(struct task_struct *tracee,
+				struct utrace_engine *engine, long data)
+{
+	BUILD_BUG_ON(PTRACE_O_MASK & PTRACE_O_SYSEMU);
+
+	ptrace_set_events(tracee, engine, data & PTRACE_O_MASK);
+	return (data & ~PTRACE_O_MASK) ? -EINVAL : 0;
+}
+
+static int ptrace_rw_siginfo(struct task_struct *tracee,
+				struct ptrace_context *ctx,
+				siginfo_t *info, bool write)
+{
+	unsigned long flags;
+	int err;
+
+	switch (get_stop_event(ctx)) {
+	case 0: /* jctl stop */
+		return -EINVAL;
+
+	case PTRACE_EVENT_SIGNAL:
+		err = -ESRCH;
+		if (lock_task_sighand(tracee, &flags)) {
+			if (likely(task_is_traced(tracee))) {
+				if (write)
+					*ctx->siginfo = *info;
+				else
+					*info = *ctx->siginfo;
+				err = 0;
+			}
+			unlock_task_sighand(tracee, &flags);
+		}
+
+		return err;
+
+	default:
+		if (!write) {
+			memset(info, 0, sizeof(*info));
+			info->si_signo = SIGTRAP;
+			info->si_code = ctx->stop_code & PTRACE_EVENT_MASK;
+			info->si_pid = task_pid_vnr(tracee);
+			info->si_uid = task_uid(tracee);
+		}
+
+		return 0;
+	}
+}
+
+static void do_ptrace_notify_stop(struct ptrace_context *ctx,
+					struct task_struct *tracee)
+{
+	/*
+	 * This can race with SIGKILL, but we borrow this race from
+	 * the old ptrace implementation. ->exit_code is only needed
+	 * for wait_task_stopped()->task_stopped_code(), we should
+	 * change it to use ptrace_context.
+	 */
+	tracee->exit_code = ctx->stop_code & PTRACE_EVENT_MASK;
+	WARN_ON(!tracee->exit_code);
+
+	read_lock(&tasklist_lock);
+	/*
+	 * Don't want to allow preemption here, because
+	 * sys_ptrace() needs this task to be inactive.
+	 */
+	preempt_disable();
+	/*
+	 * It can be killed and then released by our subthread,
+	 * or ptrace_attach() has not completed yet.
+	 */
+	if (task_ptrace(tracee))
+		do_notify_parent_cldstop(tracee, CLD_TRAPPED);
+	read_unlock(&tasklist_lock);
+	preempt_enable_no_resched();
+}
+
+void ptrace_notify_stop(struct task_struct *tracee)
+{
+	struct utrace_engine *engine = ptrace_lookup_engine(tracee);
+
+	if (IS_ERR(engine))
+		return;
+
+	do_ptrace_notify_stop(ptrace_context(engine), tracee);
+	utrace_engine_put(engine);
+}
+
+static int ptrace_resume_action(struct task_struct *tracee,
+				struct utrace_engine *engine, long request)
+{
+	struct ptrace_context *ctx = ptrace_context(engine);
+	unsigned long events;
+	int action;
+
+	ctx->options &= ~PTRACE_O_SYSEMU;
+	events = engine->flags & ~UTRACE_EVENT_SYSCALL;
+	action = UTRACE_RESUME;
+
+	switch (request) {
+#ifdef PTRACE_SINGLEBLOCK
+	case PTRACE_SINGLEBLOCK:
+		if (unlikely(!arch_has_block_step()))
+			return -EIO;
+		action = UTRACE_BLOCKSTEP;
+		events |= UTRACE_EVENT(SYSCALL_EXIT);
+		break;
+#endif
+
+#ifdef PTRACE_SINGLESTEP
+	case PTRACE_SINGLESTEP:
+		if (unlikely(!arch_has_single_step()))
+			return -EIO;
+		action = UTRACE_SINGLESTEP;
+		events |= UTRACE_EVENT(SYSCALL_EXIT);
+		break;
+#endif
+
+#ifdef PTRACE_SYSEMU
+	case PTRACE_SYSEMU_SINGLESTEP:
+		if (unlikely(!arch_has_single_step()))
+			return -EIO;
+		action = UTRACE_SINGLESTEP;
+	case PTRACE_SYSEMU:
+		ctx->options |= PTRACE_O_SYSEMU;
+		events |= UTRACE_EVENT(SYSCALL_ENTRY);
+		break;
+#endif
+
+	case PTRACE_SYSCALL:
+		events |= UTRACE_EVENT_SYSCALL;
+		break;
+
+	case PTRACE_CONT:
+		break;
+	default:
+		return -EIO;
+	}
+
+	if (events != engine->flags &&
+	    utrace_set_events(tracee, engine, events))
+		return -ESRCH;
+
+	return action;
+}
+
+static int ptrace_resume(struct task_struct *tracee,
+				struct utrace_engine *engine,
+				long request, long data)
+{
+	struct ptrace_context *ctx = ptrace_context(engine);
+	int action;
+
+	if (!valid_signal(data))
+		return -EIO;
+
+	action = ptrace_resume_action(tracee, engine, request);
+	if (action < 0)
+		return action;
+
+	switch (get_stop_event(ctx)) {
+	case PTRACE_EVENT_VFORK:
+		if (ctx->options & PTRACE_O_TRACEVFORKDONE) {
+			set_stop_code(ctx, PTRACE_EVENT_VFORK_DONE);
+			action = UTRACE_REPORT;
+		}
+		break;
+
+	case PTRACE_EVENT_EXEC:
+	case PTRACE_EVENT_FORK:
+	case PTRACE_EVENT_CLONE:
+	case PTRACE_EVENT_VFORK_DONE:
+		if (request == PTRACE_SYSCALL) {
+			set_syscall_code(ctx);
+			do_ptrace_notify_stop(ctx, tracee);
+			return 0;
+		}
+
+		if (action != UTRACE_RESUME) {
+			/*
+			 * single-stepping. UTRACE_SIGNAL_REPORT will
+			 * synthesize a trap to follow the syscall insn.
+			*/
+			ctx->signr = SIGTRAP;
+			action = UTRACE_INTERRUPT;
+		}
+		break;
+
+	case PTRACE_EVENT_SYSCALL:
+		if (data)
+			send_sig_info(data, SEND_SIG_PRIV, tracee);
+		break;
+
+	case PTRACE_EVENT_SIGNAL:
+		ctx->signr = data;
+		break;
+	}
+
+	ctx->resume = action;
+	ptrace_wake_up(tracee, engine, action, true);
+	return 0;
+}
+
+int ptrace_request(struct task_struct *child, long request,
+		   long addr, long data)
+{
+	struct utrace_engine *engine = ptrace_lookup_engine(child);
+	siginfo_t siginfo;
+	int ret;
+
+	if (unlikely(IS_ERR(engine)))
+		return -ESRCH;
+
+	switch (request) {
+	case PTRACE_PEEKTEXT:
+	case PTRACE_PEEKDATA:
+		ret = generic_ptrace_peekdata(child, addr, data);
+		break;
+	case PTRACE_POKETEXT:
+	case PTRACE_POKEDATA:
+		ret = generic_ptrace_pokedata(child, addr, data);
+		break;
+
+#ifdef PTRACE_OLDSETOPTIONS
+	case PTRACE_OLDSETOPTIONS:
+#endif
+	case PTRACE_SETOPTIONS:
+		ret = ptrace_set_options(child, engine, data);
+		break;
+	case PTRACE_GETEVENTMSG:
+		ret = put_user(ptrace_context(engine)->eventmsg,
+				(unsigned long __user *) data);
+		break;
+
+	case PTRACE_GETSIGINFO:
+		ret = ptrace_rw_siginfo(child, ptrace_context(engine),
+					&siginfo, false);
+		if (!ret)
+			ret = copy_siginfo_to_user((siginfo_t __user *) data,
+						   &siginfo);
+		break;
+
+	case PTRACE_SETSIGINFO:
+		if (copy_from_user(&siginfo, (siginfo_t __user *) data,
+				   sizeof siginfo))
+			ret = -EFAULT;
+		else
+			ret = ptrace_rw_siginfo(child, ptrace_context(engine),
+						&siginfo, true);
+		break;
+
+	case PTRACE_DETACH:	 /* detach a process that was attached. */
+		ret = ptrace_detach(child, data);
+		break;
+
+	case PTRACE_KILL:
+		/* Ugly historical behaviour. */
+		if (task_is_traced(child))
+			ptrace_resume(child, engine, PTRACE_CONT, SIGKILL);
+		ret = 0;
+		break;
+
+	default:
+		ret = ptrace_resume(child, engine, request, data);
+		break;
+	}
+
+	utrace_engine_put(engine);
+	return ret;
+}
+
+#if defined CONFIG_COMPAT
+#include <linux/compat.h>
+
+int compat_ptrace_request(struct task_struct *child, compat_long_t request,
+			  compat_ulong_t addr, compat_ulong_t data)
+{
+	struct utrace_engine *engine = ptrace_lookup_engine(child);
+	compat_ulong_t __user *datap = compat_ptr(data);
+	compat_ulong_t word;
+	siginfo_t siginfo;
+	int ret;
+
+	if (unlikely(IS_ERR(engine)))
+		return -ESRCH;
+
+	switch (request) {
+	case PTRACE_PEEKTEXT:
+	case PTRACE_PEEKDATA:
+		ret = access_process_vm(child, addr, &word, sizeof(word), 0);
+		if (ret != sizeof(word))
+			ret = -EIO;
+		else
+			ret = put_user(word, datap);
+		break;
+
+	case PTRACE_POKETEXT:
+	case PTRACE_POKEDATA:
+		ret = access_process_vm(child, addr, &data, sizeof(data), 1);
+		ret = (ret != sizeof(data) ? -EIO : 0);
+		break;
+
+	case PTRACE_GETEVENTMSG:
+		ret = put_user((compat_ulong_t)ptrace_context(engine)->eventmsg,
+				datap);
+		break;
+
+	case PTRACE_GETSIGINFO:
+		ret = ptrace_rw_siginfo(child, ptrace_context(engine),
+					&siginfo, false);
+		if (!ret)
+			ret = copy_siginfo_to_user32(
+				(struct compat_siginfo __user *) datap,
+				&siginfo);
+		break;
+
+	case PTRACE_SETSIGINFO:
+		memset(&siginfo, 0, sizeof siginfo);
+		if (copy_siginfo_from_user32(
+			    &siginfo, (struct compat_siginfo __user *) datap))
+			ret = -EFAULT;
+		else
+			ret = ptrace_rw_siginfo(child, ptrace_context(engine),
+						&siginfo, true);
+		break;
+
+	default:
+		ret = ptrace_request(child, request, addr, data);
+	}
+
+	utrace_engine_put(engine);
+	return ret;
+}
+#endif	/* CONFIG_COMPAT */
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index a408bf7..4e87441 100644  
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -16,7 +16,6 @@
 #include <linux/pagemap.h>
 #include <linux/smp_lock.h>
 #include <linux/ptrace.h>
-#include <linux/utrace.h>
 #include <linux/security.h>
 #include <linux/signal.h>
 #include <linux/audit.h>
@@ -24,7 +23,286 @@
 #include <linux/syscalls.h>
 #include <linux/uaccess.h>
 
+int __ptrace_may_access(struct task_struct *task, unsigned int mode)
+{
+	const struct cred *cred = current_cred(), *tcred;
+
+	/* May we inspect the given task?
+	 * This check is used both for attaching with ptrace
+	 * and for allowing access to sensitive information in /proc.
+	 *
+	 * ptrace_attach denies several cases that /proc allows
+	 * because setting up the necessary parent/child relationship
+	 * or halting the specified task is impossible.
+	 */
+	int dumpable = 0;
+	/* Don't let security modules deny introspection */
+	if (task == current)
+		return 0;
+	rcu_read_lock();
+	tcred = __task_cred(task);
+	if ((cred->uid != tcred->euid ||
+	     cred->uid != tcred->suid ||
+	     cred->uid != tcred->uid  ||
+	     cred->gid != tcred->egid ||
+	     cred->gid != tcred->sgid ||
+	     cred->gid != tcred->gid) &&
+	    !capable(CAP_SYS_PTRACE)) {
+		rcu_read_unlock();
+		return -EPERM;
+	}
+	rcu_read_unlock();
+	smp_rmb();
+	if (task->mm)
+		dumpable = get_dumpable(task->mm);
+	if (!dumpable && !capable(CAP_SYS_PTRACE))
+		return -EPERM;
+
+	return security_ptrace_access_check(task, mode);
+}
+
+bool ptrace_may_access(struct task_struct *task, unsigned int mode)
+{
+	int err;
+	task_lock(task);
+	err = __ptrace_may_access(task, mode);
+	task_unlock(task);
+	return !err;
+}
+
+/*
+ * Called with irqs disabled, returns true if childs should reap themselves.
+ */
+static int ignoring_children(struct sighand_struct *sigh)
+{
+	int ret;
+	spin_lock(&sigh->siglock);
+	ret = (sigh->action[SIGCHLD-1].sa.sa_handler == SIG_IGN) ||
+	      (sigh->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDWAIT);
+	spin_unlock(&sigh->siglock);
+	return ret;
+}
+
+/*
+ * Called with tasklist_lock held for writing.
+ * Unlink a traced task, and clean it up if it was a traced zombie.
+ * Return true if it needs to be reaped with release_task().
+ * (We can't call release_task() here because we already hold tasklist_lock.)
+ *
+ * If it's a zombie, our attachedness prevented normal parent notification
+ * or self-reaping.  Do notification now if it would have happened earlier.
+ * If it should reap itself, return true.
+ *
+ * If it's our own child, there is no notification to do. But if our normal
+ * children self-reap, then this child was prevented by ptrace and we must
+ * reap it now, in that case we must also wake up sub-threads sleeping in
+ * do_wait().
+ */
+bool __ptrace_detach(struct task_struct *tracer, struct task_struct *p)
+{
+	__ptrace_unlink(p);
+
+	if (p->exit_state == EXIT_ZOMBIE) {
+		if (!task_detached(p) && thread_group_empty(p)) {
+			if (!same_thread_group(p->real_parent, tracer))
+				do_notify_parent(p, p->exit_signal);
+			else if (ignoring_children(tracer->sighand)) {
+				__wake_up_parent(p, tracer);
+				p->exit_signal = -1;
+			}
+		}
+		if (task_detached(p)) {
+			/* Mark it as in the process of being reaped. */
+			p->exit_state = EXIT_DEAD;
+			return true;
+		}
+	}
+
+	return false;
+}
+
+int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len)
+{
+	int copied = 0;
+
+	while (len > 0) {
+		char buf[128];
+		int this_len, retval;
+
+		this_len = (len > sizeof(buf)) ? sizeof(buf) : len;
+		retval = access_process_vm(tsk, src, buf, this_len, 0);
+		if (!retval) {
+			if (copied)
+				break;
+			return -EIO;
+		}
+		if (copy_to_user(dst, buf, retval))
+			return -EFAULT;
+		copied += retval;
+		src += retval;
+		dst += retval;
+		len -= retval;
+	}
+	return copied;
+}
+
+int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len)
+{
+	int copied = 0;
+
+	while (len > 0) {
+		char buf[128];
+		int this_len, retval;
+
+		this_len = (len > sizeof(buf)) ? sizeof(buf) : len;
+		if (copy_from_user(buf, src, this_len))
+			return -EFAULT;
+		retval = access_process_vm(tsk, dst, buf, this_len, 1);
+		if (!retval) {
+			if (copied)
+				break;
+			return -EIO;
+		}
+		copied += retval;
+		src += retval;
+		dst += retval;
+		len -= retval;
+	}
+	return copied;
+}
+
+static struct task_struct *ptrace_get_task_struct(pid_t pid)
+{
+	struct task_struct *child;
+
+	rcu_read_lock();
+	child = find_task_by_vpid(pid);
+	if (child)
+		get_task_struct(child);
+	rcu_read_unlock();
+
+	if (!child)
+		return ERR_PTR(-ESRCH);
+	return child;
+}
+
+#ifndef arch_ptrace_attach
+#define arch_ptrace_attach(child)	do { } while (0)
+#endif
 
+SYSCALL_DEFINE4(ptrace, long, request, long, pid, long, addr, long, data)
+{
+	struct task_struct *child;
+	long ret;
+
+	/*
+	 * This lock_kernel fixes a subtle race with suid exec
+	 */
+	lock_kernel();
+	if (request == PTRACE_TRACEME) {
+		ret = ptrace_traceme();
+		if (!ret)
+			arch_ptrace_attach(current);
+		goto out;
+	}
+
+	child = ptrace_get_task_struct(pid);
+	if (IS_ERR(child)) {
+		ret = PTR_ERR(child);
+		goto out;
+	}
+
+	if (request == PTRACE_ATTACH) {
+		ret = ptrace_attach(child);
+		/*
+		 * Some architectures need to do book-keeping after
+		 * a ptrace attach.
+		 */
+		if (!ret)
+			arch_ptrace_attach(child);
+		goto out_put_task_struct;
+	}
+
+	ret = ptrace_check_attach(child, request == PTRACE_KILL);
+	if (ret < 0)
+		goto out_put_task_struct;
+
+	ret = arch_ptrace(child, request, addr, data);
+
+ out_put_task_struct:
+	put_task_struct(child);
+ out:
+	unlock_kernel();
+	return ret;
+}
+
+int generic_ptrace_peekdata(struct task_struct *tsk, long addr, long data)
+{
+	unsigned long tmp;
+	int copied;
+
+	copied = access_process_vm(tsk, addr, &tmp, sizeof(tmp), 0);
+	if (copied != sizeof(tmp))
+		return -EIO;
+	return put_user(tmp, (unsigned long __user *)data);
+}
+
+int generic_ptrace_pokedata(struct task_struct *tsk, long addr, long data)
+{
+	int copied;
+
+	copied = access_process_vm(tsk, addr, &data, sizeof(data), 1);
+	return (copied == sizeof(data)) ? 0 : -EIO;
+}
+
+#if defined CONFIG_COMPAT
+#include <linux/compat.h>
+
+asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid,
+				  compat_long_t addr, compat_long_t data)
+{
+	struct task_struct *child;
+	long ret;
+
+	/*
+	 * This lock_kernel fixes a subtle race with suid exec
+	 */
+	lock_kernel();
+	if (request == PTRACE_TRACEME) {
+		ret = ptrace_traceme();
+		goto out;
+	}
+
+	child = ptrace_get_task_struct(pid);
+	if (IS_ERR(child)) {
+		ret = PTR_ERR(child);
+		goto out;
+	}
+
+	if (request == PTRACE_ATTACH) {
+		ret = ptrace_attach(child);
+		/*
+		 * Some architectures need to do book-keeping after
+		 * a ptrace attach.
+		 */
+		if (!ret)
+			arch_ptrace_attach(child);
+		goto out_put_task_struct;
+	}
+
+	ret = ptrace_check_attach(child, request == PTRACE_KILL);
+	if (!ret)
+		ret = compat_arch_ptrace(child, request, addr, data);
+
+ out_put_task_struct:
+	put_task_struct(child);
+ out:
+	unlock_kernel();
+	return ret;
+}
+#endif	/* CONFIG_COMPAT */
+
+#ifndef CONFIG_UTRACE
 /*
  * ptrace a task: make the debugger its new parent and
  * move it to the ptrace list.
@@ -101,76 +379,21 @@ int ptrace_check_attach(struct task_stru
 		/*
 		 * child->sighand can't be NULL, release_task()
 		 * does ptrace_unlink() before __exit_signal().
-		 */
-		spin_lock_irq(&child->sighand->siglock);
-		if (task_is_stopped(child))
-			child->state = TASK_TRACED;
-		else if (!task_is_traced(child) && !kill)
-			ret = -ESRCH;
-		spin_unlock_irq(&child->sighand->siglock);
-	}
-	read_unlock(&tasklist_lock);
-
-	if (!ret && !kill)
-		ret = wait_task_inactive(child, TASK_TRACED) ? 0 : -ESRCH;
-
-	/* All systems go.. */
-	return ret;
-}
-
-int __ptrace_may_access(struct task_struct *task, unsigned int mode)
-{
-	const struct cred *cred = current_cred(), *tcred;
-
-	/* May we inspect the given task?
-	 * This check is used both for attaching with ptrace
-	 * and for allowing access to sensitive information in /proc.
-	 *
-	 * ptrace_attach denies several cases that /proc allows
-	 * because setting up the necessary parent/child relationship
-	 * or halting the specified task is impossible.
-	 */
-	int dumpable = 0;
-	/* Don't let security modules deny introspection */
-	if (task == current)
-		return 0;
-	rcu_read_lock();
-	tcred = __task_cred(task);
-	if ((cred->uid != tcred->euid ||
-	     cred->uid != tcred->suid ||
-	     cred->uid != tcred->uid  ||
-	     cred->gid != tcred->egid ||
-	     cred->gid != tcred->sgid ||
-	     cred->gid != tcred->gid) &&
-	    !capable(CAP_SYS_PTRACE)) {
-		rcu_read_unlock();
-		return -EPERM;
-	}
-	rcu_read_unlock();
-	smp_rmb();
-	if (task->mm)
-		dumpable = get_dumpable(task->mm);
-	if (!dumpable && !capable(CAP_SYS_PTRACE))
-		return -EPERM;
-
-	return security_ptrace_access_check(task, mode);
-}
+		 */
+		spin_lock_irq(&child->sighand->siglock);
+		if (task_is_stopped(child))
+			child->state = TASK_TRACED;
+		else if (!task_is_traced(child) && !kill)
+			ret = -ESRCH;
+		spin_unlock_irq(&child->sighand->siglock);
+	}
+	read_unlock(&tasklist_lock);
 
-bool ptrace_may_access(struct task_struct *task, unsigned int mode)
-{
-	int err;
-	task_lock(task);
-	err = __ptrace_may_access(task, mode);
-	task_unlock(task);
-	return !err;
-}
+	if (!ret && !kill)
+		ret = wait_task_inactive(child, TASK_TRACED) ? 0 : -ESRCH;
 
-/*
- * For experimental use of utrace, exclude ptrace on the same task.
- */
-static inline bool exclude_ptrace(struct task_struct *task)
-{
-	return unlikely(!!task_utrace_flags(task));
+	/* All systems go.. */
+	return ret;
 }
 
 int ptrace_attach(struct task_struct *task)
@@ -196,8 +419,6 @@ int ptrace_attach(struct task_struct *ta
 
 	task_lock(task);
 	retval = __ptrace_may_access(task, PTRACE_MODE_ATTACH);
-	if (!retval && exclude_ptrace(task))
-		retval = -EBUSY;
 	task_unlock(task);
 	if (retval)
 		goto unlock_creds;
@@ -235,9 +456,6 @@ int ptrace_traceme(void)
 {
 	int ret = -EPERM;
 
-	if (exclude_ptrace(current)) /* XXX locking */
-		return -EBUSY;
-
 	write_lock_irq(&tasklist_lock);
 	/* Are we already being traced? */
 	if (!current->ptrace) {
@@ -257,57 +475,6 @@ int ptrace_traceme(void)
 	return ret;
 }
 
-/*
- * Called with irqs disabled, returns true if childs should reap themselves.
- */
-static int ignoring_children(struct sighand_struct *sigh)
-{
-	int ret;
-	spin_lock(&sigh->siglock);
-	ret = (sigh->action[SIGCHLD-1].sa.sa_handler == SIG_IGN) ||
-	      (sigh->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDWAIT);
-	spin_unlock(&sigh->siglock);
-	return ret;
-}
-
-/*
- * Called with tasklist_lock held for writing.
- * Unlink a traced task, and clean it up if it was a traced zombie.
- * Return true if it needs to be reaped with release_task().
- * (We can't call release_task() here because we already hold tasklist_lock.)
- *
- * If it's a zombie, our attachedness prevented normal parent notification
- * or self-reaping.  Do notification now if it would have happened earlier.
- * If it should reap itself, return true.
- *
- * If it's our own child, there is no notification to do. But if our normal
- * children self-reap, then this child was prevented by ptrace and we must
- * reap it now, in that case we must also wake up sub-threads sleeping in
- * do_wait().
- */
-bool __ptrace_detach(struct task_struct *tracer, struct task_struct *p)
-{
-	__ptrace_unlink(p);
-
-	if (p->exit_state == EXIT_ZOMBIE) {
-		if (!task_detached(p) && thread_group_empty(p)) {
-			if (!same_thread_group(p->real_parent, tracer))
-				do_notify_parent(p, p->exit_signal);
-			else if (ignoring_children(tracer->sighand)) {
-				__wake_up_parent(p, tracer);
-				p->exit_signal = -1;
-			}
-		}
-		if (task_detached(p)) {
-			/* Mark it as in the process of being reaped. */
-			p->exit_state = EXIT_DEAD;
-			return true;
-		}
-	}
-
-	return false;
-}
-
 int ptrace_detach(struct task_struct *child, unsigned int data)
 {
 	bool dead = false;
@@ -361,56 +528,6 @@ void exit_ptrace(struct task_struct *tra
 	}
 }
 
-int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len)
-{
-	int copied = 0;
-
-	while (len > 0) {
-		char buf[128];
-		int this_len, retval;
-
-		this_len = (len > sizeof(buf)) ? sizeof(buf) : len;
-		retval = access_process_vm(tsk, src, buf, this_len, 0);
-		if (!retval) {
-			if (copied)
-				break;
-			return -EIO;
-		}
-		if (copy_to_user(dst, buf, retval))
-			return -EFAULT;
-		copied += retval;
-		src += retval;
-		dst += retval;
-		len -= retval;
-	}
-	return copied;
-}
-
-int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len)
-{
-	int copied = 0;
-
-	while (len > 0) {
-		char buf[128];
-		int this_len, retval;
-
-		this_len = (len > sizeof(buf)) ? sizeof(buf) : len;
-		if (copy_from_user(buf, src, this_len))
-			return -EFAULT;
-		retval = access_process_vm(tsk, dst, buf, this_len, 1);
-		if (!retval) {
-			if (copied)
-				break;
-			return -EIO;
-		}
-		copied += retval;
-		src += retval;
-		dst += retval;
-		len -= retval;
-	}
-	return copied;
-}
-
 static int ptrace_setoptions(struct task_struct *child, long data)
 {
 	child->ptrace &= ~PT_TRACE_MASK;
@@ -594,93 +710,7 @@ int ptrace_request(struct task_struct *c
 	return ret;
 }
 
-static struct task_struct *ptrace_get_task_struct(pid_t pid)
-{
-	struct task_struct *child;
-
-	rcu_read_lock();
-	child = find_task_by_vpid(pid);
-	if (child)
-		get_task_struct(child);
-	rcu_read_unlock();
-
-	if (!child)
-		return ERR_PTR(-ESRCH);
-	return child;
-}
-
-#ifndef arch_ptrace_attach
-#define arch_ptrace_attach(child)	do { } while (0)
-#endif
-
-SYSCALL_DEFINE4(ptrace, long, request, long, pid, long, addr, long, data)
-{
-	struct task_struct *child;
-	long ret;
-
-	/*
-	 * This lock_kernel fixes a subtle race with suid exec
-	 */
-	lock_kernel();
-	if (request == PTRACE_TRACEME) {
-		ret = ptrace_traceme();
-		if (!ret)
-			arch_ptrace_attach(current);
-		goto out;
-	}
-
-	child = ptrace_get_task_struct(pid);
-	if (IS_ERR(child)) {
-		ret = PTR_ERR(child);
-		goto out;
-	}
-
-	if (request == PTRACE_ATTACH) {
-		ret = ptrace_attach(child);
-		/*
-		 * Some architectures need to do book-keeping after
-		 * a ptrace attach.
-		 */
-		if (!ret)
-			arch_ptrace_attach(child);
-		goto out_put_task_struct;
-	}
-
-	ret = ptrace_check_attach(child, request == PTRACE_KILL);
-	if (ret < 0)
-		goto out_put_task_struct;
-
-	ret = arch_ptrace(child, request, addr, data);
-
- out_put_task_struct:
-	put_task_struct(child);
- out:
-	unlock_kernel();
-	return ret;
-}
-
-int generic_ptrace_peekdata(struct task_struct *tsk, long addr, long data)
-{
-	unsigned long tmp;
-	int copied;
-
-	copied = access_process_vm(tsk, addr, &tmp, sizeof(tmp), 0);
-	if (copied != sizeof(tmp))
-		return -EIO;
-	return put_user(tmp, (unsigned long __user *)data);
-}
-
-int generic_ptrace_pokedata(struct task_struct *tsk, long addr, long data)
-{
-	int copied;
-
-	copied = access_process_vm(tsk, addr, &data, sizeof(data), 1);
-	return (copied == sizeof(data)) ? 0 : -EIO;
-}
-
 #if defined CONFIG_COMPAT
-#include <linux/compat.h>
-
 int compat_ptrace_request(struct task_struct *child, compat_long_t request,
 			  compat_ulong_t addr, compat_ulong_t data)
 {
@@ -732,47 +762,5 @@ int compat_ptrace_request(struct task_st
 
 	return ret;
 }
-
-asmlinkage long compat_sys_ptrace(compat_long_t request, compat_long_t pid,
-				  compat_long_t addr, compat_long_t data)
-{
-	struct task_struct *child;
-	long ret;
-
-	/*
-	 * This lock_kernel fixes a subtle race with suid exec
-	 */
-	lock_kernel();
-	if (request == PTRACE_TRACEME) {
-		ret = ptrace_traceme();
-		goto out;
-	}
-
-	child = ptrace_get_task_struct(pid);
-	if (IS_ERR(child)) {
-		ret = PTR_ERR(child);
-		goto out;
-	}
-
-	if (request == PTRACE_ATTACH) {
-		ret = ptrace_attach(child);
-		/*
-		 * Some architectures need to do book-keeping after
-		 * a ptrace attach.
-		 */
-		if (!ret)
-			arch_ptrace_attach(child);
-		goto out_put_task_struct;
-	}
-
-	ret = ptrace_check_attach(child, request == PTRACE_KILL);
-	if (!ret)
-		ret = compat_arch_ptrace(child, request, addr, data);
-
- out_put_task_struct:
-	put_task_struct(child);
- out:
-	unlock_kernel();
-	return ret;
-}
 #endif	/* CONFIG_COMPAT */
+#endif	/* CONFIG_UTRACE */
diff --git a/kernel/utrace.c b/kernel/utrace.c
index 84d965d..ead1f13 100644  
--- a/kernel/utrace.c
+++ b/kernel/utrace.c
@@ -811,6 +811,22 @@ relock:
 	spin_unlock_irq(&task->sighand->siglock);
 	spin_unlock(&utrace->lock);
 
+	/*
+	 * If ptrace is among the reasons for this stop, do its
+	 * notification now.  This could not just be done in
+	 * ptrace's own event report callbacks because it has to
+	 * be done after we are in TASK_TRACED.  This makes the
+	 * synchronization with ptrace_do_wait() work right.
+	 *
+	 * It's only because of the bad old overloading of the do_wait()
+	 * logic for handling ptrace stops that we need this special case
+	 * here.  One day we will clean up ptrace so it does not need to
+	 * work this way.  New things that are designed sensibly don't need
+	 * a wakeup that synchronizes with tasklist_lock and ->state, so
+	 * the proper utrace API does not try to support this weirdness.
+	 */
+	ptrace_notify_stop(task);
+
 	schedule();
 
 	utrace_finish_stop();

linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch:
 Documentation/video4linux/gspca.txt                |   69 
 drivers/media/video/gspca/Kconfig                  |   69 
 drivers/media/video/gspca/Makefile                 |   12 
 drivers/media/video/gspca/benq.c                   |  322 +++
 drivers/media/video/gspca/conex.c                  |   20 
 drivers/media/video/gspca/cpia1.c                  | 2022 ++++++++++++++++++++
 drivers/media/video/gspca/etoms.c                  |   18 
 drivers/media/video/gspca/finepix.c                |   23 
 drivers/media/video/gspca/gl860/gl860-mi1320.c     |   57 
 drivers/media/video/gspca/gl860/gl860-mi2020.c     |   71 
 drivers/media/video/gspca/gl860/gl860-ov2640.c     |  140 -
 drivers/media/video/gspca/gl860/gl860-ov9655.c     |   43 
 drivers/media/video/gspca/gl860/gl860.c            |   81 
 drivers/media/video/gspca/gl860/gl860.h            |    7 
 drivers/media/video/gspca/gspca.c                  |  223 +-
 drivers/media/video/gspca/gspca.h                  |   35 
 drivers/media/video/gspca/jeilinj.c                |   34 
 drivers/media/video/gspca/m5602/m5602_core.c       |   29 
 drivers/media/video/gspca/m5602/m5602_mt9m111.c    |    4 
 drivers/media/video/gspca/m5602/m5602_ov7660.c     |    2 
 drivers/media/video/gspca/m5602/m5602_ov7660.h     |    2 
 drivers/media/video/gspca/m5602/m5602_ov9650.c     |    4 
 drivers/media/video/gspca/m5602/m5602_po1030.c     |    2 
 drivers/media/video/gspca/m5602/m5602_s5k4aa.c     |   18 
 drivers/media/video/gspca/m5602/m5602_s5k83a.c     |    2 
 drivers/media/video/gspca/mars.c                   |   13 
 drivers/media/video/gspca/mr97310a.c               |  615 +++---
 drivers/media/video/gspca/ov519.c                  | 1590 +++++++++++++--
 drivers/media/video/gspca/ov534.c                  | 1330 +++++++------
 drivers/media/video/gspca/ov534_9.c                | 1477 ++++++++++++++
 drivers/media/video/gspca/pac207.c                 |   15 
 drivers/media/video/gspca/pac7302.c                | 1237 ++++++++++++
 drivers/media/video/gspca/pac7311.c                |  623 +-----
 drivers/media/video/gspca/pac_common.h             |   91 
 drivers/media/video/gspca/sn9c2028.c               |  757 +++++++
 drivers/media/video/gspca/sn9c2028.h               |   51 
 drivers/media/video/gspca/sn9c20x.c                |   56 
 drivers/media/video/gspca/sonixb.c                 |   58 
 drivers/media/video/gspca/sonixj.c                 |  966 ++++++---
 drivers/media/video/gspca/spca500.c                |   15 
 drivers/media/video/gspca/spca501.c                |   16 
 drivers/media/video/gspca/spca505.c                |   12 
 drivers/media/video/gspca/spca506.c                |   20 
 drivers/media/video/gspca/spca508.c                |   12 
 drivers/media/video/gspca/spca561.c                |   18 
 drivers/media/video/gspca/sq905.c                  |   75 
 drivers/media/video/gspca/sq905c.c                 |   76 
 drivers/media/video/gspca/stk014.c                 |  119 -
 drivers/media/video/gspca/stv0680.c                |  394 +++
 drivers/media/video/gspca/stv06xx/stv06xx.c        |   14 
 drivers/media/video/gspca/stv06xx/stv06xx_vv6410.h |    1 
 drivers/media/video/gspca/sunplus.c                |  301 +-
 drivers/media/video/gspca/t613.c                   |    9 
 drivers/media/video/gspca/tv8532.c                 |    9 
 drivers/media/video/gspca/vc032x.c                 |  736 ++++++-
 drivers/media/video/gspca/w996Xcf.c                |  609 ++++++
 drivers/media/video/gspca/zc3xx.c                  | 2118 ++++++++-------------
 include/linux/videodev2.h                          |   15 
 58 files changed, 12848 insertions(+), 3909 deletions(-)

--- NEW FILE linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch ---
diff --git a/Documentation/video4linux/gspca.txt b/Documentation/video4linux/gspca.txt
index 90e85a8..939dda9 100644
--- a/Documentation/video4linux/gspca.txt
+++ b/Documentation/video4linux/gspca.txt
@@ -6,11 +6,13 @@ The modules are:
 
 xxxx		vend:prod
 ----
-spca501		0000:0000	MystFromOri Unknow Camera
+spca501		0000:0000	MystFromOri Unknown Camera
+spca508		0130:0130	Clone Digital Webcam 11043
 m5602		0402:5602	ALi Video Camera Controller
 spca501		040a:0002	Kodak DVC-325
 spca500		040a:0300	Kodak EZ200
 zc3xx		041e:041e	Creative WebCam Live!
+ov519		041e:4003	Video Blaster WebCam Go Plus
 spca500		041e:400a	Creative PC-CAM 300
 sunplus		041e:400b	Creative PC-CAM 600
 sunplus		041e:4012	PC-Cam350
@@ -40,6 +42,7 @@ ov519		041e:4064	Creative Live! VISTA VF0420
 ov519		041e:4067	Creative Live! Cam Video IM (VF0350)
 ov519		041e:4068	Creative Live! VISTA VF0470
 spca561		0458:7004	Genius VideoCAM Express V2
+sn9c2028	0458:7005	Genius Smart 300, version 2
 sunplus		0458:7006	Genius Dsc 1.3 Smart
 zc3xx		0458:7007	Genius VideoCam V2
 zc3xx		0458:700c	Genius VideoCam V3
@@ -69,12 +72,12 @@ zc3xx		046d:08a3	Logitech QC Chat
 zc3xx		046d:08a6	Logitech QCim
 zc3xx		046d:08a7	Logitech QuickCam Image
 zc3xx		046d:08a9	Logitech Notebook Deluxe
-zc3xx		046d:08aa	Labtec Webcam  Notebook
+zc3xx		046d:08aa	Labtec Webcam Notebook
 zc3xx		046d:08ac	Logitech QuickCam Cool
 zc3xx		046d:08ad	Logitech QCCommunicate STX
 zc3xx		046d:08ae	Logitech QuickCam for Notebooks
 zc3xx		046d:08af	Logitech QuickCam Cool
-zc3xx		046d:08b9	Logitech QC IM ???
+zc3xx		046d:08b9	Logitech QuickCam Express
 zc3xx		046d:08d7	Logitech QCam STX
 zc3xx		046d:08d9	Logitech QuickCam IM/Connect
 zc3xx		046d:08d8	Logitech Notebook Deluxe
@@ -83,7 +86,7 @@ zc3xx		046d:08dd	Logitech QuickCam for Notebooks
 spca500		046d:0900	Logitech Inc. ClickSmart 310
 spca500		046d:0901	Logitech Inc. ClickSmart 510
 sunplus		046d:0905	Logitech ClickSmart 820
-tv8532		046d:0920	QC Express
+tv8532		046d:0920	Logitech QuickCam Express
 tv8532		046d:0921	Labtec Webcam
 spca561		046d:0928	Logitech QC Express Etch2
 spca561		046d:0929	Labtec Webcam Elch2
@@ -92,7 +95,7 @@ spca561		046d:092b	Labtec Webcam Plus
 spca561		046d:092c	Logitech QC chat Elch2
 spca561		046d:092d	Logitech QC Elch2
 spca561		046d:092e	Logitech QC Elch2
-spca561		046d:092f	Logitech  QuickCam Express Plus
+spca561		046d:092f	Logitech QuickCam Express Plus
 sunplus		046d:0960	Logitech ClickSmart 420
 sunplus		0471:0322	Philips DMVC1300K
 zc3xx		0471:0325	Philips SPC 200 NC
@@ -107,6 +110,7 @@ sunplus		04a5:3003	Benq DC 1300
 sunplus		04a5:3008	Benq DC 1500
 sunplus		04a5:300a	Benq DC 3410
 spca500		04a5:300c	Benq DC 1016
+benq		04a5:3035	Benq DC E300
 finepix		04cb:0104	Fujifilm FinePix 4800
 finepix		04cb:0109	Fujifilm FinePix A202
 finepix		04cb:010b	Fujifilm FinePix A203
@@ -140,6 +144,7 @@ sunplus		04fc:5360	Sunplus Generic
 spca500		04fc:7333	PalmPixDC85
 sunplus		04fc:ffff	Pure DigitalDakota
 spca501		0506:00df	3Com HomeConnect Lite
+sunplus		052b:1507	Megapixel 5 Pretec DC-1007
 sunplus		052b:1513	Megapix V4
 sunplus		052b:1803	MegaImage VI
 tv8532		0545:808b	Veo Stingray
@@ -149,6 +154,7 @@ sunplus		0546:3191	Polaroid Ion 80
 sunplus		0546:3273	Polaroid PDC2030
 ov519		054c:0154	Sonny toy4
 ov519		054c:0155	Sonny toy5
+cpia1		0553:0002	CPIA CPiA (version1) based cameras
 zc3xx		055f:c005	Mustek Wcam300A
 spca500		055f:c200	Mustek Gsmart 300
 sunplus		055f:c211	Kowa Bs888e Microcamera
@@ -167,10 +173,14 @@ sunplus		055f:c650	Mustek MDC5500Z
 zc3xx		055f:d003	Mustek WCam300A
 zc3xx		055f:d004	Mustek WCam300 AN
 conex		0572:0041	Creative Notebook cx11646
+ov519		05a9:0511	Video Blaster WebCam 3/WebCam Plus, D-Link USB Digital Video Camera
+ov519		05a9:0518	Creative WebCam
 ov519		05a9:0519	OV519 Microphone
 ov519		05a9:0530	OmniVision
+ov519		05a9:2800	OmniVision SuperCAM
 ov519		05a9:4519	Webcam Classic
 ov519		05a9:8519	OmniVision
+ov519		05a9:a511	D-Link USB Digital Video Camera
 ov519		05a9:a518	D-Link DSB-C310 Webcam
 sunplus		05da:1018	Digital Dream Enigma 1.3
 stk014		05e1:0893	Syntek DV4000
@@ -182,13 +192,11 @@ spca500		06bd:0404	Agfa CL20
 spca500		06be:0800	Optimedia
 sunplus		06d6:0031	Trust 610 LCD PowerC at m Zoom
 spca506		06e1:a190	ADS Instant VCD
-ov534		06f8:3002	Hercules Blog Webcam
-ov534		06f8:3003	Hercules Dualpix HD Weblog
+ov534_9		06f8:3003	Hercules Dualpix HD Weblog
 sonixj		06f8:3004	Hercules Classic Silver
 sonixj		06f8:3008	Hercules Deluxe Optical Glass
-pac7311		06f8:3009	Hercules Classic Link
+pac7302		06f8:3009	Hercules Classic Link
 spca508		0733:0110	ViewQuest VQ110
-spca508		0130:0130	Clone Digital Webcam 11043
 spca501		0733:0401	Intel Create and Share
 spca501		0733:0402	ViewQuest M318B
 spca505		0733:0430	Intel PC Camera Pro
@@ -199,10 +207,13 @@ sunplus		0733:2221	Mercury Digital Pro 3.1p
 sunplus		0733:3261	Concord 3045 spca536a
 sunplus		0733:3281	Cyberpix S550V
 spca506		0734:043b	3DeMon USB Capture aka
+cpia1		0813:0001	QX3 camera
+ov519		0813:0002	Dual Mode USB Camera Plus
 spca500		084d:0003	D-Link DSC-350
 spca500		08ca:0103	Aiptek PocketDV
 sunplus		08ca:0104	Aiptek PocketDVII 1.3
 sunplus		08ca:0106	Aiptek Pocket DV3100+
+mr97310a	08ca:0110	Trust Spyc at m 100
 mr97310a	08ca:0111	Aiptek PenCam VGA+
 sunplus		08ca:2008	Aiptek Mini PenCam 2 M
 sunplus		08ca:2010	Aiptek PocketCam 3M
@@ -218,12 +229,13 @@ sunplus		08ca:2050	Medion MD 41437
 sunplus		08ca:2060	Aiptek PocketDV5300
 tv8532		0923:010f	ICM532 cams
 mars		093a:050f	Mars-Semi Pc-Camera
-mr97310a	093a:010f	Sakar Digital no. 77379
+mr97310a	093a:010e	All four known CIF cams with this ID
+mr97310a	093a:010f	All four known VGA cams with this ID
 pac207		093a:2460	Qtec Webcam 100
 pac207		093a:2461	HP Webcam
 pac207		093a:2463	Philips SPC 220 NC
 pac207		093a:2464	Labtec Webcam 1200
-pac207		093a:2468	PAC207
+pac207		093a:2468	Webcam WB-1400T
 pac207		093a:2470	Genius GF112
 pac207		093a:2471	Genius VideoCam ge111
 pac207		093a:2472	Genius VideoCam ge110
@@ -231,18 +243,19 @@ pac207		093a:2474	Genius iLook 111
 pac207		093a:2476	Genius e-Messenger 112
 pac7311		093a:2600	PAC7311 Typhoon
 pac7311		093a:2601	Philips SPC 610 NC
-pac7311		093a:2603	PAC7312
+pac7311		093a:2603	Philips SPC 500 NC
 pac7311		093a:2608	Trust WB-3300p
 pac7311		093a:260e	Gigaware VGA PC Camera, Trust WB-3350p, SIGMA cam 2350
 pac7311		093a:260f	SnakeCam
-pac7311		093a:2620	Apollo AC-905
-pac7311		093a:2621	PAC731x
-pac7311		093a:2622	Genius Eye 312
-pac7311		093a:2624	PAC7302
-pac7311		093a:2626	Labtec 2200
-pac7311		093a:2629	Genious iSlim 300
-pac7311		093a:262a	Webcam 300k
-pac7311		093a:262c	Philips SPC 230 NC
+pac7302		093a:2620	Apollo AC-905
+pac7302		093a:2621	PAC731x
+pac7302		093a:2622	Genius Eye 312
+pac7302		093a:2624	PAC7302
+pac7302		093a:2626	Labtec 2200
+pac7302		093a:2628	Genius iLook 300
+pac7302		093a:2629	Genious iSlim 300
+pac7302		093a:262a	Webcam 300k
+pac7302		093a:262c	Philips SPC 230 NC
 jeilinj		0979:0280	Sakar 57379
 zc3xx		0ac8:0302	Z-star Vimicro zc0302
 vc032x		0ac8:0321	Vimicro generic vc0321
@@ -251,12 +264,13 @@ vc032x		0ac8:0328	A4Tech PK-130MG
 zc3xx		0ac8:301b	Z-Star zc301b
 zc3xx		0ac8:303b	Vimicro 0x303b
 zc3xx		0ac8:305b	Z-star Vimicro zc0305b
-zc3xx		0ac8:307b	Ldlc VC302+Ov7620
+zc3xx		0ac8:307b	PC Camera (ZS0211)
 vc032x		0ac8:c001	Sony embedded vimicro
 vc032x		0ac8:c002	Sony embedded vimicro
 vc032x		0ac8:c301	Samsung Q1 Ultra Premium
 spca508		0af9:0010	Hama USB Sightcam 100
 spca508		0af9:0011	Hama USB Sightcam 100
+ov519		0b62:0059	iBOT2 Webcam
 sonixb		0c45:6001	Genius VideoCAM NB
 sonixb		0c45:6005	Microdia Sweex Mini Webcam
 sonixb		0c45:6007	Sonix sn9c101 + Tas5110D
@@ -293,6 +307,7 @@ sonixj		0c45:613b	Surfer SN-206
 sonixj		0c45:613c	Sonix Pccam168
 sonixj		0c45:6143	Sonix Pccam168
 sonixj		0c45:6148	Digitus DA-70811/ZSMC USB PC Camera ZS211/Microdia
+sonixj		0c45:614a	Frontech E-Ccam (JIL-2225)
 sn9c20x		0c45:6240	PC Camera (SN9C201 + MT9M001)
 sn9c20x		0c45:6242	PC Camera (SN9C201 + MT9M111)
 sn9c20x		0c45:6248	PC Camera (SN9C201 + OV9655)
@@ -315,9 +330,15 @@ sn9c20x		0c45:62b0	PC Camera (SN9C202 + MT9V011/MT9V111/MT9V112)
 sn9c20x		0c45:62b3	PC Camera (SN9C202 + OV9655)
[...23501 lines suppressed...]
 
-	mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv;
-	zc3_init = init_tb[(int) sd->sensor][mode];
+	mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv;
 	switch (sd->sensor) {
 	case SENSOR_HV7131C:
 		zcxx_probeSensor(gspca_dev);
@@ -7258,36 +6876,31 @@ static int sd_start(struct gspca_dev *gspca_dev)
 	case SENSOR_PAS106:
 		usb_exchange(gspca_dev, pas106b_Initial_com);
 		break;
-	case SENSOR_PB0330:
-		if (mode) {
-			if (sd->chip_revision == 0xc001
-			    || sd->chip_revision == 0xe001
-			    || sd->chip_revision == 0x8001)
-				zc3_init = pb03303x_Initial;
-		} else {
-			if (sd->chip_revision == 0xc001
-			    || sd->chip_revision == 0xe001
-			    || sd->chip_revision == 0x8001)
-				zc3_init = pb03303x_InitialScale;
-		}
-		break;
 	}
-	usb_exchange(gspca_dev, zc3_init);
+	usb_exchange(gspca_dev, init_tb[sd->sensor][mode]);
 
 	switch (sd->sensor) {
 	case SENSOR_ADCM2700:
 	case SENSOR_GC0305:
 	case SENSOR_OV7620:
 	case SENSOR_PO2030:
+	case SENSOR_TAS5130CXX:
 	case SENSOR_TAS5130C_VF0250:
 /*		msleep(100);			 * ?? */
 		reg_r(gspca_dev, 0x0002);	/* --> 0x40 */
 		reg_w(dev, 0x09, 0x01ad);	/* (from win traces) */
 		reg_w(dev, 0x15, 0x01ae);
+		if (sd->sensor == SENSOR_TAS5130CXX)
+			break;
 		reg_w(dev, 0x0d, 0x003a);
 		reg_w(dev, 0x02, 0x003b);
 		reg_w(dev, 0x00, 0x0038);
 		break;
+	case SENSOR_PAS202B:
+		reg_w(dev, 0x03, 0x003b);
+		reg_w(dev, 0x0c, 0x003a);
+		reg_w(dev, 0x0b, 0x0039);
+		break;
 	}
 
 	setmatrix(gspca_dev);
@@ -7300,6 +6913,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
 		break;
 	case SENSOR_PAS202B:
 	case SENSOR_GC0305:
+	case SENSOR_TAS5130CXX:
 		reg_r(gspca_dev, 0x0008);
 		/* fall thru */
 	case SENSOR_PO2030:
@@ -7310,10 +6924,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
 
 	/* set the gamma tables when not set */
 	switch (sd->sensor) {
-	case SENSOR_CS2102:		/* gamma set in xxx_Initial */
-	case SENSOR_CS2102K:
+	case SENSOR_CS2102K:		/* gamma set in xxx_Initial */
 	case SENSOR_HDCS2020b:
-	case SENSOR_PB0330:		/* pb with chip_revision - see above */
 	case SENSOR_OV7630C:
 	case SENSOR_TAS5130CK:
 		break;
@@ -7343,6 +6955,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
 		reg_w(dev, 0x40, 0x0117);
 		break;
 	case SENSOR_GC0305:
+	case SENSOR_TAS5130CXX:
 		reg_w(dev, 0x09, 0x01ad);	/* (from win traces) */
 		reg_w(dev, 0x15, 0x01ae);
 		/* fall thru */
@@ -7365,14 +6978,14 @@ static int sd_start(struct gspca_dev *gspca_dev)
 	setautogain(gspca_dev);
 	switch (sd->sensor) {
 	case SENSOR_PO2030:
-		msleep(500);
-		reg_r(gspca_dev, 0x0008);
-		reg_r(gspca_dev, 0x0007);
-		/*fall thru*/
-	case SENSOR_PAS202B:
+		msleep(50);
 		reg_w(dev, 0x00, 0x0007);	/* (from win traces) */
 		reg_w(dev, 0x02, ZC3XX_R008_CLOCKSETTING);
 		break;
+	case SENSOR_PAS202B:
+		reg_w(dev, 0x32, 0x0007);	/* (from win traces) */
+		reg_w(dev, 0x02, ZC3XX_R008_CLOCKSETTING);
+		break;
 	}
 	return 0;
 }
@@ -7389,17 +7002,16 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
 }
 
 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
-			struct gspca_frame *frame,
-			__u8 *data,
+			u8 *data,
 			int len)
 {
 	struct sd *sd = (struct sd *) gspca_dev;
 
 	if (data[0] == 0xff && data[1] == 0xd8) {	/* start of frame */
-		frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
-					data, 0);
+		gspca_frame_add(gspca_dev, LAST_PACKET,
+					NULL, 0);
 		/* put the JPEG header in the new frame */
-		gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
+		gspca_frame_add(gspca_dev, FIRST_PACKET,
 			sd->jpeg_hdr, JPEG_HDR_SZ);
 
 		/* remove the webcam's header:
@@ -7411,7 +7023,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
 		data += 18;
 		len -= 18;
 	}
-	gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
+	gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
 }
 
 static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
@@ -7636,7 +7248,7 @@ static const __devinitdata struct usb_device_id device_table[] = {
 	{USB_DEVICE(0x0ac8, 0x0302), .driver_info = SENSOR_PAS106},
 	{USB_DEVICE(0x0ac8, 0x301b)},
 	{USB_DEVICE(0x0ac8, 0x303b)},
-	{USB_DEVICE(0x0ac8, 0x305b), .driver_info = SENSOR_TAS5130C_VF0250},
+	{USB_DEVICE(0x0ac8, 0x305b)},
 	{USB_DEVICE(0x0ac8, 0x307b)},
 	{USB_DEVICE(0x10fd, 0x0128)},
 	{USB_DEVICE(0x10fd, 0x804d)},
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index b59e78c..535ea7b 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -294,6 +294,7 @@ struct v4l2_pix_format {
 
 /* Grey formats */
 #define V4L2_PIX_FMT_GREY    v4l2_fourcc('G', 'R', 'E', 'Y') /*  8  Greyscale     */
+#define V4L2_PIX_FMT_Y10     v4l2_fourcc('Y', '1', '0', ' ') /* 10  Greyscale     */
 #define V4L2_PIX_FMT_Y16     v4l2_fourcc('Y', '1', '6', ' ') /* 16  Greyscale     */
 
 /* Palette formats */
@@ -329,7 +330,11 @@ struct v4l2_pix_format {
 #define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B', 'A', '8', '1') /*  8  BGBG.. GRGR.. */
 #define V4L2_PIX_FMT_SGBRG8  v4l2_fourcc('G', 'B', 'R', 'G') /*  8  GBGB.. RGRG.. */
 #define V4L2_PIX_FMT_SGRBG8  v4l2_fourcc('G', 'R', 'B', 'G') /*  8  GRGR.. BGBG.. */
-#define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10bit raw bayer */
+#define V4L2_PIX_FMT_SRGGB8  v4l2_fourcc('R', 'G', 'G', 'B') /*  8  RGRG.. GBGB.. */
+#define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0') /* 10  BGBG.. GRGR.. */
+#define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0') /* 10  GBGB.. RGRG.. */
+#define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10  GRGR.. BGBG.. */
+#define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0') /* 10  RGRG.. GBGB.. */
 	/* 10bit raw bayer DPCM compressed to 8 bits */
 #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')
 	/*
@@ -345,6 +350,7 @@ struct v4l2_pix_format {
 #define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4    */
 
 /*  Vendor-specific formats   */
+#define V4L2_PIX_FMT_CPIA1    v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
 #define V4L2_PIX_FMT_WNVA     v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */
 #define V4L2_PIX_FMT_SN9C10X  v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */
 #define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */
@@ -357,10 +363,13 @@ struct v4l2_pix_format {
 #define V4L2_PIX_FMT_SPCA561  v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */
 #define V4L2_PIX_FMT_PAC207   v4l2_fourcc('P', '2', '0', '7') /* compressed BGGR bayer */
 #define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */
+#define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X') /* compressed GBRG bayer */
 #define V4L2_PIX_FMT_SQ905C   v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */
 #define V4L2_PIX_FMT_PJPG     v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */
 #define V4L2_PIX_FMT_OV511    v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */
 #define V4L2_PIX_FMT_OV518    v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */
+#define V4L2_PIX_FMT_STV0680  v4l2_fourcc('S', '6', '8', '0') /* stv0680 bayer */
+#define V4L2_PIX_FMT_TM6000   v4l2_fourcc('T', 'M', '6', '0') /* tm5600/tm60x0 */
 
 /*
  *	F O R M A T   E N U M E R A T I O N
@@ -912,8 +921,10 @@ enum v4l2_colorfx {
 #define V4L2_CID_AUTOBRIGHTNESS			(V4L2_CID_BASE+32)
 #define V4L2_CID_BAND_STOP_FILTER		(V4L2_CID_BASE+33)
 
+#define V4L2_CID_ROTATE				(V4L2_CID_BASE+34)
+#define V4L2_CID_BG_COLOR			(V4L2_CID_BASE+35)
 /* last CID + 1 */
-#define V4L2_CID_LASTP1                         (V4L2_CID_BASE+34)
+#define V4L2_CID_LASTP1                         (V4L2_CID_BASE+36)
 
 /*  MPEG-class control IDs defined by V4L2 */
 #define V4L2_CID_MPEG_BASE 			(V4L2_CTRL_CLASS_MPEG | 0x900)

linux-2.6-wireless_-report-reasonable-bitrate-for-MCS-rates-through-wext.patch:
 core.h        |    2 ++
 nl80211.c     |   37 ++-----------------------------------
 util.c        |   33 +++++++++++++++++++++++++++++++++
 wext-compat.c |    5 +----
 4 files changed, 38 insertions(+), 39 deletions(-)

--- NEW FILE linux-2.6-wireless_-report-reasonable-bitrate-for-MCS-rates-through-wext.patch ---
commit 254416aae70ab2e6b57fd79782c8a67196234d02
Author: John W. Linville <linville at tuxdriver.com>
Date:   Wed Dec 9 16:43:52 2009 -0500

    wireless: report reasonable bitrate for MCS rates through wext
    
    Previously, cfg80211 had reported "0" for MCS (i.e. 802.11n) bitrates
    through the wireless extensions interface.  However, nl80211 was
    converting MCS rates into a reasonable bitrate number.  This patch moves
    the nl80211 code to cfg80211 where it is now shared between both the
    nl80211 interface and the wireless extensions interface.
    
    Signed-off-by: John W. Linville <linville at tuxdriver.com>

diff --git a/net/wireless/core.h b/net/wireless/core.h
index 4ef3efc..35b7121 100644
--- a/net/wireless/core.h
+++ b/net/wireless/core.h
@@ -378,6 +378,8 @@ int rdev_set_freq(struct cfg80211_registered_device *rdev,
 		  struct wireless_dev *for_wdev,
 		  int freq, enum nl80211_channel_type channel_type);
 
+u16 cfg80211_calculate_bitrate(struct rate_info *rate);
+
 #ifdef CONFIG_CFG80211_DEVELOPER_WARNINGS
 #define CFG80211_DEV_WARN_ON(cond)	WARN_ON(cond)
 #else
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index a602843..7cb0d64 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -1637,39 +1637,6 @@ static int parse_station_flags(struct genl_info *info,
 	return 0;
 }
 
-static u16 nl80211_calculate_bitrate(struct rate_info *rate)
-{
-	int modulation, streams, bitrate;
-
-	if (!(rate->flags & RATE_INFO_FLAGS_MCS))
-		return rate->legacy;
-
-	/* the formula below does only work for MCS values smaller than 32 */
-	if (rate->mcs >= 32)
-		return 0;
-
-	modulation = rate->mcs & 7;
-	streams = (rate->mcs >> 3) + 1;
-
-	bitrate = (rate->flags & RATE_INFO_FLAGS_40_MHZ_WIDTH) ?
-			13500000 : 6500000;
-
-	if (modulation < 4)
-		bitrate *= (modulation + 1);
-	else if (modulation == 4)
-		bitrate *= (modulation + 2);
-	else
-		bitrate *= (modulation + 3);
-
-	bitrate *= streams;
-
-	if (rate->flags & RATE_INFO_FLAGS_SHORT_GI)
-		bitrate = (bitrate / 9) * 10;
-
-	/* do NOT round down here */
-	return (bitrate + 50000) / 100000;
-}
-
 static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq,
 				int flags, struct net_device *dev,
 				u8 *mac_addr, struct station_info *sinfo)
@@ -1716,8 +1683,8 @@ static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq,
 		if (!txrate)
 			goto nla_put_failure;
 
-		/* nl80211_calculate_bitrate will return 0 for mcs >= 32 */
-		bitrate = nl80211_calculate_bitrate(&sinfo->txrate);
+		/* cfg80211_calculate_bitrate will return 0 for mcs >= 32 */
+		bitrate = cfg80211_calculate_bitrate(&sinfo->txrate);
 		if (bitrate > 0)
 			NLA_PUT_U16(msg, NL80211_RATE_INFO_BITRATE, bitrate);
 
diff --git a/net/wireless/util.c b/net/wireless/util.c
index 59361fd..a3c841a 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -720,3 +720,36 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
 
 	return err;
 }
+
+u16 cfg80211_calculate_bitrate(struct rate_info *rate)
+{
+	int modulation, streams, bitrate;
+
+	if (!(rate->flags & RATE_INFO_FLAGS_MCS))
+		return rate->legacy;
+
+	/* the formula below does only work for MCS values smaller than 32 */
+	if (rate->mcs >= 32)
+		return 0;
+
+	modulation = rate->mcs & 7;
+	streams = (rate->mcs >> 3) + 1;
+
+	bitrate = (rate->flags & RATE_INFO_FLAGS_40_MHZ_WIDTH) ?
+			13500000 : 6500000;
+
+	if (modulation < 4)
+		bitrate *= (modulation + 1);
+	else if (modulation == 4)
+		bitrate *= (modulation + 2);
+	else
+		bitrate *= (modulation + 3);
+
+	bitrate *= streams;
+
+	if (rate->flags & RATE_INFO_FLAGS_SHORT_GI)
+		bitrate = (bitrate / 9) * 10;
+
+	/* do NOT round down here */
+	return (bitrate + 50000) / 100000;
+}
diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c
index 584eb48..2fa8de1 100644
--- a/net/wireless/wext-compat.c
+++ b/net/wireless/wext-compat.c
@@ -1256,10 +1256,7 @@ int cfg80211_wext_giwrate(struct net_device *dev,
 	if (!(sinfo.filled & STATION_INFO_TX_BITRATE))
 		return -EOPNOTSUPP;
 
-	rate->value = 0;
-
-	if (!(sinfo.txrate.flags & RATE_INFO_FLAGS_MCS))
-		rate->value = 100000 * sinfo.txrate.legacy;
+	rate->value = 100000 * cfg80211_calculate_bitrate(&sinfo.txrate);
 
 	return 0;
 }

linux-2.6-x86-64-fbdev-primary.patch:
 Makefile         |    2 --
 include/asm/fb.h |    5 -----
 2 files changed, 7 deletions(-)

--- NEW FILE linux-2.6-x86-64-fbdev-primary.patch ---
>From cdd54d73203838f249291988d5f79e40fee00a05 Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied at redhat.com>
Date: Thu, 7 Jan 2010 16:59:06 +1000
Subject: [PATCH] x86: allow fbdev primary video code on 64-bit.

For some reason the 64-bit tree was doing this differently and
I can't see why it would need to.

This correct behaviour when you have two GPUs plugged in and
32-bit put the console in one place and 64-bit in another.

Signed-off-by: Dave Airlie <airlied at redhat.com>
---
 arch/x86/Makefile         |    2 --
 arch/x86/include/asm/fb.h |    4 ----
 2 files changed, 0 insertions(+), 6 deletions(-)

diff --git a/arch/x86/Makefile b/arch/x86/Makefile
index 78b32be..0a43dc5 100644
--- a/arch/x86/Makefile
+++ b/arch/x86/Makefile
@@ -135,9 +135,7 @@ drivers-$(CONFIG_OPROFILE) += arch/x86/oprofile/
 # suspend and hibernation support
 drivers-$(CONFIG_PM) += arch/x86/power/
 
-ifeq ($(CONFIG_X86_32),y)
 drivers-$(CONFIG_FB) += arch/x86/video/
-endif
 
 ####
 # boot loader support. Several targets are kept for legacy purposes
diff --git a/arch/x86/include/asm/fb.h b/arch/x86/include/asm/fb.h
index 5301846..2519d06 100644
--- a/arch/x86/include/asm/fb.h
+++ b/arch/x86/include/asm/fb.h
@@ -12,10 +12,6 @@ static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma,
 		pgprot_val(vma->vm_page_prot) |= _PAGE_PCD;
 }
 
-#ifdef CONFIG_X86_32
 extern int fb_is_primary_device(struct fb_info *info);
-#else
-static inline int fb_is_primary_device(struct fb_info *info) { return 0; }
-#endif
 
 #endif /* _ASM_X86_FB_H */
-- 
1.6.5.2


linux-2.6.31-modules-ro-nx.patch:
 include/linux/module.h |    3 +
 kernel/module.c        |  126 +++++++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 126 insertions(+), 3 deletions(-)

Index: linux-2.6.31-modules-ro-nx.patch
===================================================================
RCS file: linux-2.6.31-modules-ro-nx.patch
diff -N linux-2.6.31-modules-ro-nx.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ linux-2.6.31-modules-ro-nx.patch	31 Jan 2010 17:58:05 -0000	1.2.2.4
@@ -0,0 +1,269 @@
+From davej  Fri Sep 11 11:06:50 2009
+Date: 	Thu, 10 Sep 2009 22:50:47 -0400
+Message-ID: <817ecb6f0909101950v2fc6dc6u5cbc40cd9a9dde77 at mail.gmail.com>
+Subject: [PATCH v6] RO/NX protection for loadable kernel modules
+From: Siarhei Liakh <sliakh.lkml at gmail.com>
+To: linux-kernel at vger.kernel.org, linux-security-module at vger.kernel.org,
+        linux-next at vger.kernel.org
+Cc: Arjan van de Ven <arjan at infradead.org>, James Morris <jmorris at namei.org>,
+        Andrew Morton <akpm at linux-foundation.org>, Andi Kleen <ak at muc.de>,
+        Thomas Gleixner <tglx at linutronix.de>, "H. Peter Anvin" <hpa at zytor.com>,
+        Ingo Molnar <mingo at elte.hu>, Rusty Russell <rusty at rustcorp.com.au>,
+        Stephen Rothwell <sfr at canb.auug.org.au>
+
+This patch is a logical extension of the protection provided by
+CONFIG_DEBUG_RODATA to LKMs. The protection is provided by splitting
+module_core and module_init into three logical parts each and setting
+appropriate page access permissions for each individual section:
+
+ 1. Code: RO+X
+ 2. RO data: RO+NX
+ 3. RW data: RW+NX
+
+In order to achieve proper protection, layout_sections() have been
+modified to align each of the three parts mentioned above onto page
+boundary. Next, the corresponding page access permissions are set
+right before successful exit from load_module(). Further, free_module()
+and sys_init_module have been modified to set module_core and
+module_init as RW+NX right before calling module_free().
+
+By default, the original section layout is preserved and RO/NX is
+enforced only for whole pages of same content.
+However, when compiled with CONFIG_DEBUG_RODATA=y, the patch
+will page-align each group of sections to ensure that each page contains
+only one type of content.
+RO/NX enforcement is active on x86 only.
+
+v1: Initial proof-of-concept patch.
+
+v2: The patch have been re-written to reduce the number of #ifdefs and
+to make it architecture-agnostic. Code formatting have been corrected also.
+
+v3: Opportunistic RO/NX protectiuon is now unconditional. Section
+page-alignment is enabled when CONFIG_DEBUG_RODATA=y.
+
+v4: Removed most macros and improved coding style.
+
+v5: Changed page-alignment and RO/NX section size calculation
+
+v6: Fixed comments. Restricted RO/NX enforcement to x86 only
+
+The patch have been developed for Linux 2.6.30 by Siarhei Liakh
+<sliakh.lkml at gmail.com> and Xuxian Jiang <jiang at cs.ncsu.edu>.
+
+---
+
+Signed-off-by: Siarhei Liakh <sliakh.lkml at gmail.com>
+Signed-off-by: Xuxian Jiang <jiang at cs.ncsu.edu>
+Acked-by: Arjan van de Ven <arjan at linux.intel.com>
+
+diff --git a/include/linux/module.h b/include/linux/module.h
+index 627ac08..5ba770e 100644
+--- a/include/linux/module.h
++++ b/include/linux/module.h
+@@ -293,6 +293,9 @@ struct module
+ 	/* The size of the executable code in each section.  */
+ 	unsigned int init_text_size, core_text_size;
+
++	/* Size of RO sections of the module (text+rodata) */
++	unsigned int init_ro_size, core_ro_size;
++
+ 	/* Arch-specific module values */
+ 	struct mod_arch_specific arch;
+
+diff --git a/kernel/module.c b/kernel/module.c
+index e797812..660278a 100644
+--- a/kernel/module.c
++++ b/kernel/module.c
+@@ -54,6 +54,7 @@
+ #include <linux/async.h>
+ #include <linux/percpu.h>
+ #include <linux/kmemleak.h>
++#include <linux/pfn.h>
+ 
+ #define CREATE_TRACE_POINTS
+ #include <trace/events/module.h>
+@@ -63,6 +64,26 @@
+ #define ARCH_SHF_SMALL 0
+ #endif
+
++/*
++ * Modules' sections will be aligned on page boundaries
++ * to ensure complete separation of code and data, but
++ * only when CONFIG_DEBUG_RODATA=y
++ */
++#ifdef CONFIG_DEBUG_RODATA
++#define debug_align(X) ALIGN(X, PAGE_SIZE)
++#else
++#define debug_align(X) (X)
++#endif
++
++/*
++ * Given BASE and SIZE this macro calculates the number of pages the
++ * memory regions occupies
++ */
++#define NUMBER_OF_PAGES(BASE, SIZE) ((SIZE > 0) ?		\
++		(PFN_DOWN((unsigned long)BASE + SIZE - 1) -	\
++			 PFN_DOWN((unsigned long)BASE) + 1)	\
++		: (0UL))
++
+ /* If this is set, the section belongs in the init part of the module */
+ #define INIT_OFFSET_MASK (1UL << (BITS_PER_LONG-1))
+
+@@ -1471,6 +1492,69 @@ static int __unlink_module(void *_mod)
+ 	return 0;
+ }
+
++/*
++ * LKM RO/NX protection: protect module's text/ro-data
++ * from modification and any data from execution.
++ */
++static void set_section_ro_nx(void *base,
++			unsigned long text_size,
++			unsigned long ro_size,
++			unsigned long total_size)
++{
++#ifdef CONFIG_X86
++	/* begin and end PFNs of the current subsection */
++	unsigned long begin_pfn;
++	unsigned long end_pfn;
++
++	/*
++	 * Set RO for module text and RO-data:
++	 * - Always protect first page.
++	 * - Do not protect last partial page.
++	 */
++	if (ro_size > 0) {
++		begin_pfn = PFN_DOWN((unsigned long)base);
++		end_pfn = PFN_DOWN((unsigned long)base + ro_size);
++		if (end_pfn > begin_pfn)
++			set_memory_ro(begin_pfn << PAGE_SHIFT,
++						end_pfn - begin_pfn);
++	}
++
++	/*
++	 * Set NX permissions for module data:
++	 * - Do not protect first partial page.
++	 * - Always protect last page.
++	 */
++	if (total_size > text_size) {
++		begin_pfn = PFN_UP((unsigned long)base + text_size);
++		end_pfn = PFN_UP((unsigned long)base + total_size);
++		if (end_pfn > begin_pfn)
++			set_memory_nx(begin_pfn << PAGE_SHIFT,
++						end_pfn - begin_pfn);
++	}
++#endif
++}
++
++/* Setting memory back to RW+NX before releasing it */
++void unset_section_ro_nx(struct module *mod, void *module_region)
++{
++#ifdef CONFIG_X86
++	unsigned long total_pages;
++
++	if (mod->module_core == module_region) {
++		/* Set core as NX+RW */
++		total_pages = NUMBER_OF_PAGES(mod->module_core, mod->core_size);
++		set_memory_nx((unsigned long)mod->module_core, total_pages);
++		set_memory_rw((unsigned long)mod->module_core, total_pages);
++
++	} else if (mod->module_init == module_region) {
++		/* Set init as NX+RW */
++		total_pages = NUMBER_OF_PAGES(mod->module_init, mod->init_size);
++		set_memory_nx((unsigned long)mod->module_init, total_pages);
++		set_memory_rw((unsigned long)mod->module_init, total_pages);
++	}
++#endif
++}
++
+ /* Free a module, remove from lists, etc (must hold module_mutex). */
+ static void free_module(struct module *mod)
+ {
+@@ -1493,6 +1577,7 @@ static void free_module(struct module *mod)
+ 	ftrace_release(mod->module_core, mod->core_size);
+
+ 	/* This may be NULL, but that's OK */
++	unset_section_ro_nx(mod, mod->module_init);
+ 	module_free(mod, mod->module_init);
+ 	kfree(mod->args);
+ 	if (mod->percpu)
+@@ -1505,6 +1590,7 @@ static void free_module(struct module *mod)
+ 	lockdep_free_key_range(mod->module_core, mod->core_size);
+
+ 	/* Finally, free the core (containing the module structure) */
++	unset_section_ro_nx(mod, mod->module_core);
+ 	module_free(mod, mod->module_core);
+ }
+
+@@ -1678,8 +1764,19 @@ static void layout_sections(struct module *mod,
+ 			s->sh_entsize = get_offset(mod, &mod->core_size, s, i);
+ 			DEBUGP("\t%s\n", secstrings + s->sh_name);
+ 		}
+-		if (m == 0)
++		switch (m) {
++		case 0: /* executable */
++			mod->core_size = debug_align(mod->core_size);
+ 			mod->core_text_size = mod->core_size;
++			break;
++		case 1: /* RO: text and ro-data */
++			mod->core_size = debug_align(mod->core_size);
++			mod->core_ro_size = mod->core_size;
++			break;
++		case 3: /* whole core */
++			mod->core_size = debug_align(mod->core_size);
++			break;
++		}
+ 	}
+
+ 	DEBUGP("Init section allocation order:\n");
+@@ -1696,8 +1793,19 @@ static void layout_sections(struct module *mod,
+ 					 | INIT_OFFSET_MASK);
+ 			DEBUGP("\t%s\n", secstrings + s->sh_name);
+ 		}
+-		if (m == 0)
++		switch (m) {
++		case 0: /* executable */
++			mod->init_size = debug_align(mod->init_size);
+ 			mod->init_text_size = mod->init_size;
++			break;
++		case 1: /* RO: text and ro-data */
++			mod->init_size = debug_align(mod->init_size);
++			mod->init_ro_size = mod->init_size;
++			break;
++		case 3: /* whole init */
++			mod->init_size = debug_align(mod->init_size);
++			break;
++		}
+ 	}
+ }
+
+@@ -2291,6 +2399,18 @@ static noinline struct module *load_module(void __user *umod,
+ 	/* Get rid of temporary copy */
+ 	vfree(hdr);
+
++	/* Set RO and NX regions for core */
++	set_section_ro_nx(mod->module_core,
++				mod->core_text_size,
++				mod->core_ro_size,
++				mod->core_size);
++
++	/* Set RO and NX regions for init */
++	set_section_ro_nx(mod->module_init,
++				mod->init_text_size,
++				mod->init_ro_size,
++				mod->init_size);
++
+ 	trace_module_load(mod);
+ 
+ 	/* Done! */
+@@ -2598,6 +2598,7 @@ SYSCALL_DEFINE3(init_module, void __user
+ 	mutex_lock(&module_mutex);
+ 	/* Drop initial reference. */
+ 	module_put(mod);
++	unset_section_ro_nx(mod, mod->module_init);
+ 	trim_init_extable(mod);
+ 	module_free(mod, mod->module_init);
+ 	mod->module_init = NULL;
+--
+

linux-2.6.31-nx-data.patch:
 kernel/vmlinux.lds.S |    6 +++++-
 mm/init.c            |   22 ++++++++++++++++++++--
 2 files changed, 25 insertions(+), 3 deletions(-)

Index: linux-2.6.31-nx-data.patch
===================================================================
RCS file: linux-2.6.31-nx-data.patch
diff -N linux-2.6.31-nx-data.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ linux-2.6.31-nx-data.patch	31 Jan 2010 17:58:05 -0000	1.1.2.4
@@ -0,0 +1,118 @@
+Date: 	Thu, 10 Sep 2009 21:10:51 -0400
+Message-ID: <817ecb6f0909101810u7774ca93u40a0a4b99f9fb6ba at mail.gmail.com>
+Subject: [PATCH V4] x86: NX protection for kernel data
+From: Siarhei Liakh <sliakh.lkml at gmail.com>
+To: linux-kernel at vger.kernel.org, linux-security-module at vger.kernel.org
+Cc: Arjan van de Ven <arjan at infradead.org>, James Morris <jmorris at namei.org>,
+        Andrew Morton <akpm at linux-foundation.org>, Andi Kleen <ak at muc.de>,
+        Rusty Russell <rusty at rustcorp.com.au>,
+        Thomas Gleixner <tglx at linutronix.de>, "H. Peter Anvin" <hpa at zytor.com>,
+        Ingo Molnar <mingo at elte.hu>
+
+This patch expands functionality of CONFIG_DEBUG_RODATA to set main
+(static) kernel data area as NX.
+The following steps are taken to achieve this:
+1. Linker script is adjusted so .text always starts and ends on a page boundary
+2. Linker script is adjusted so .rodata and .data always start and
+end on a page boundary
+3. void mark_nxdata_nx(void) added to arch/x86/mm/init.c with actual
+functionality: NX is set for all pages from _etext through _end.
+4. mark_nxdata_nx() called from free_initmem() (after init has been released)
+5. free_init_pages() sets released memory NX in arch/x86/mm/init.c
+
+The patch have been developed for Linux 2.6.31-rc7 x86 by Siarhei Liakh
+<sliakh.lkml at gmail.com> and Xuxian Jiang <jiang at cs.ncsu.edu>.
+
+V1:  initial patch for 2.6.30
+V2:  patch for 2.6.31-rc7
+V3:  moved all code into arch/x86, adjusted credits
+V4:  fixed ifdef, removed credits from CREDITS
+
+---
+
+Signed-off-by: Siarhei Liakh <sliakh.lkml at gmail.com>
+Signed-off-by: Xuxian Jiang <jiang at cs.ncsu.edu>
+
+diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
+index 9fc1782..b6b2bbf 100644
+--- a/arch/x86/kernel/vmlinux.lds.S
++++ b/arch/x86/kernel/vmlinux.lds.S
+@@ -43,7 +43,7 @@ jiffies_64 = jiffies;
+ 
+ PHDRS {
+ 	text PT_LOAD FLAGS(5);          /* R_E */
+-	data PT_LOAD FLAGS(7);          /* RWE */
++	data PT_LOAD FLAGS(6);          /* RW_ */
+ #ifdef CONFIG_X86_64
+ 	user PT_LOAD FLAGS(7);          /* RWE */
+ #ifdef CONFIG_SMP
+@@ -88,6 +88,8 @@ SECTIONS
+ 		IRQENTRY_TEXT
+ 		*(.fixup)
+ 		*(.gnu.warning)
++		/* .text should occupy whole number of pages */
++		. = ALIGN(PAGE_SIZE);
+ 		/* End of text section */
+ 		_etext = .;
+ 	} :text = 0x9090
+@@ -128,6 +130,8 @@ SECTIONS
+ 		/* rarely changed data like cpu maps */
+ 		READ_MOSTLY_DATA(CONFIG_X86_INTERNODE_CACHE_BYTES)
+ 
++		/* .data should occupy whole number of pages */
++		. = ALIGN(PAGE_SIZE);
+ 		/* End of data section */
+ 		_edata = .;
+ 	} :data
+diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
+index 0607119..522e81b 100644
+--- a/arch/x86/mm/init.c
++++ b/arch/x86/mm/init.c
+@@ -423,9 +423,10 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
+ 	/*
+ 	 * We just marked the kernel text read only above, now that
+ 	 * we are going to free part of that, we need to make that
+-	 * writeable first.
++	 * writeable and non-executable first.
+ 	 */
+ 	set_memory_rw(begin, (end - begin) >> PAGE_SHIFT);
++	set_memory_nx(begin, (end - begin) >> PAGE_SHIFT);
+
+ 	printk(KERN_INFO "Freeing %s: %luk freed\n", what, (end - begin) >> 10);
+
+@@ -440,11 +441,29 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
+ #endif
+ }
+
++void mark_nxdata_nx(void)
++{
++#ifdef CONFIG_DEBUG_RODATA
++	/*
++	 * When this called, init has already been executed and released,
++	 * so everything past _etext sould be NX.
++	 */
++	unsigned long start = PFN_ALIGN(_etext);
++	unsigned long size = PFN_ALIGN(_end) - start;
++
++	printk(KERN_INFO "NX-protecting the kernel data: %lx, %lu pages\n",
++		start, size >> PAGE_SHIFT);
++	set_pages_nx(virt_to_page(start), size >> PAGE_SHIFT);
++#endif
++}
++
+ void free_initmem(void)
+ {
+ 	free_init_pages("unused kernel memory",
+ 			(unsigned long)(&__init_begin),
+ 			(unsigned long)(&__init_end));
++	/* Set kernel's data as NX */
++	mark_nxdata_nx();
+ }
+
+ #ifdef CONFIG_BLK_DEV_INITRD
+--
+To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
+the body of a message to majordomo at vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+Please read the FAQ at  http://www.tux.org/lkml/
+


--- NEW FILE linux-2.6.32.tar.bz2.sign ---
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: See http://www.kernel.org/signature.html for info

iD8DBQBLF1qqyGugalF9Dw4RAiP6AJwLIwUWOmzYNgbg0idlA0462rTVSwCglKbm
u346vCa2H8XN6LA1m9D/9rQ=
=NE61
-----END PGP SIGNATURE-----

lirc-2.6.32.patch:
 drivers/input/Kconfig                 |    2 
 drivers/input/Makefile                |    2 
 drivers/input/lirc/Kconfig            |  116 +
 drivers/input/lirc/Makefile           |   21 
 drivers/input/lirc/lirc_bt829.c       |  383 ++++++
 drivers/input/lirc/lirc_dev.c         |  737 +++++++++++
 drivers/input/lirc/lirc_dev.h         |  194 +++
 drivers/input/lirc/lirc_ene0100.c     |  646 ++++++++++
 drivers/input/lirc/lirc_ene0100.h     |  169 ++
 drivers/input/lirc/lirc_i2c.c         |  538 ++++++++
 drivers/input/lirc/lirc_igorplugusb.c |  556 ++++++++
 drivers/input/lirc/lirc_imon.c        | 1054 +++++++++++++++++
 drivers/input/lirc/lirc_it87.c        |  986 +++++++++++++++
 drivers/input/lirc/lirc_it87.h        |  116 +
 drivers/input/lirc/lirc_ite8709.c     |  540 ++++++++
 drivers/input/lirc/lirc_mceusb.c      | 1216 +++++++++++++++++++
 drivers/input/lirc/lirc_parallel.c    |  709 +++++++++++
 drivers/input/lirc/lirc_parallel.h    |   26 
 drivers/input/lirc/lirc_sasem.c       |  931 +++++++++++++++
 drivers/input/lirc/lirc_serial.c      | 1317 +++++++++++++++++++++
 drivers/input/lirc/lirc_sir.c         | 1283 ++++++++++++++++++++
 drivers/input/lirc/lirc_streamzap.c   |  794 ++++++++++++
 drivers/input/lirc/lirc_ttusbir.c     |  397 ++++++
 drivers/input/lirc/lirc_zilog.c       | 1396 ++++++++++++++++++++++
 drivers/input/misc/Kconfig            |   11 
 drivers/input/misc/Makefile           |    1 
 drivers/input/misc/imon.c             | 2102 ++++++++++++++++++++++++++++++++++
 drivers/input/misc/imon.h             |  210 +++
 include/linux/lirc.h                  |  100 +
 29 files changed, 16553 insertions(+)

--- NEW FILE lirc-2.6.32.patch ---
 drivers/input/Kconfig                 |    2 +
 drivers/input/Makefile                |    2 +
 drivers/input/lirc/Kconfig            |  116 ++
 drivers/input/lirc/Makefile           |   21 +
 drivers/input/lirc/lirc_bt829.c       |  383 ++++++
 drivers/input/lirc/lirc_dev.c         |  737 ++++++++++++
 drivers/input/lirc/lirc_dev.h         |  194 +++
 drivers/input/lirc/lirc_ene0100.c     |  646 ++++++++++
 drivers/input/lirc/lirc_ene0100.h     |  169 +++
 drivers/input/lirc/lirc_i2c.c         |  538 +++++++++
 drivers/input/lirc/lirc_igorplugusb.c |  556 +++++++++
 drivers/input/lirc/lirc_imon.c        | 1054 +++++++++++++++++
 drivers/input/lirc/lirc_it87.c        |  986 ++++++++++++++++
 drivers/input/lirc/lirc_it87.h        |  116 ++
 drivers/input/lirc/lirc_ite8709.c     |  540 +++++++++
 drivers/input/lirc/lirc_mceusb.c      | 1216 +++++++++++++++++++
 drivers/input/lirc/lirc_parallel.c    |  709 +++++++++++
 drivers/input/lirc/lirc_parallel.h    |   26 +
 drivers/input/lirc/lirc_sasem.c       |  931 +++++++++++++++
 drivers/input/lirc/lirc_serial.c      | 1317 +++++++++++++++++++++
 drivers/input/lirc/lirc_sir.c         | 1283 ++++++++++++++++++++
 drivers/input/lirc/lirc_streamzap.c   |  794 +++++++++++++
 drivers/input/lirc/lirc_ttusbir.c     |  397 +++++++
 drivers/input/lirc/lirc_zilog.c       | 1396 ++++++++++++++++++++++
 drivers/input/misc/Kconfig            |   11 +
 drivers/input/misc/Makefile           |    1 +
 drivers/input/misc/imon.c             | 2102 +++++++++++++++++++++++++++++++++
 drivers/input/misc/imon.h             |  210 ++++
 include/linux/lirc.h                  |  100 ++
 29 files changed, 16553 insertions(+), 0 deletions(-)

diff --git a/drivers/input/Kconfig b/drivers/input/Kconfig
index 07c2cd4..ebc8743 100644
--- a/drivers/input/Kconfig
+++ b/drivers/input/Kconfig
@@ -183,6 +183,8 @@ source "drivers/input/tablet/Kconfig"
 
 source "drivers/input/touchscreen/Kconfig"
 
+source "drivers/input/lirc/Kconfig"
+
 source "drivers/input/misc/Kconfig"
 
 endif
diff --git a/drivers/input/Makefile b/drivers/input/Makefile
index 7ad212d..cb119e7 100644
--- a/drivers/input/Makefile
+++ b/drivers/input/Makefile
@@ -26,3 +26,5 @@ obj-$(CONFIG_INPUT_MISC)	+= misc/
 obj-$(CONFIG_INPUT_APMPOWER)	+= apm-power.o
 
 obj-$(CONFIG_XEN_KBDDEV_FRONTEND)	+= xen-kbdfront.o
+
+obj-$(CONFIG_INPUT_LIRC)       += lirc/
diff --git a/drivers/input/lirc/Kconfig b/drivers/input/lirc/Kconfig
new file mode 100644
index 0000000..86fc063
--- /dev/null
+++ b/drivers/input/lirc/Kconfig
@@ -0,0 +1,116 @@
+#
+# LIRC driver(s) configuration
+#
+menuconfig INPUT_LIRC
+	tristate "Linux Infrared Remote Control IR receiver/transmitter drivers"
+	help
+	  Say Y here, and all supported Linux Infrared Remote Control IR and
+	  RF receiver and transmitter drivers will be displayed. When paired
+	  with a remote control and the lirc daemon, the receiver drivers
+	  allow control of your Linux system via remote control.
+
+if INPUT_LIRC
+
+config LIRC_BT829
+        tristate "BT829 based hardware"
+	depends on INPUT_LIRC
+	help
+	  Driver for the IR interface on BT829-based hardware
+
+config LIRC_ENE0100
+	tristate "ENE KB3924/ENE0100 CIR Port Reciever"
+	depends on INPUT_LIRC
+	help
+	  This is a driver for CIR port handled by ENE KB3924 embedded
+	  controller found on some notebooks.
+	  It appears on PNP list as ENE0100.
+
+config LIRC_I2C
+	tristate "I2C Based IR Receivers"
+	depends on INPUT_LIRC
+	help
+	  Driver for I2C-based IR receivers, such as those commonly
+	  found onboard Hauppauge PVR-150/250/350 video capture cards
+
+config LIRC_IGORPLUGUSB
+	tristate "Igor Cesko's USB IR Receiver"
+	depends on INPUT_LIRC && USB
+	help
+	  Driver for Igor Cesko's USB IR Receiver
+
+config LIRC_IMON
+	tristate "Legacy SoundGraph iMON Receiver and Display"
+	depends on INPUT_LIRC
+	help
+	  Driver for the original SoundGraph iMON IR Receiver and Display
+
+	  Current generation iMON devices use the input layer imon driver.
+
+config LIRC_IT87
+	tristate "ITE IT87XX CIR Port Receiver"
+	depends on INPUT_LIRC
+	help
+	  Driver for the ITE IT87xx IR Receiver
+
+config LIRC_ITE8709
+	tristate "ITE8709 CIR Port Receiver"
+	depends on INPUT_LIRC && PNP
+	help
+	  Driver for the ITE8709 IR Receiver
+
+config LIRC_MCEUSB
+	tristate "Windows Media Center Ed. USB IR Transceiver"
+	depends on INPUT_LIRC && USB
+	help
+	  Driver for Windows Media Center Ed. USB IR Transceivers
+
+config LIRC_PARALLEL
+	tristate "Homebrew Parallel Port Receiver"
+	depends on INPUT_LIRC && !SMP
+	help
+	  Driver for Homebrew Parallel Port Receivers
+
+config LIRC_SASEM
+	tristate "Sasem USB IR Remote"
+	depends on INPUT_LIRC
+	help
+	  Driver for the Sasem OnAir Remocon-V or Dign HV5 HTPC IR/VFD Module
+
+config LIRC_SERIAL
+	tristate "Homebrew Serial Port Receiver"
+	depends on INPUT_LIRC
+	help
+	  Driver for Homebrew Serial Port Receivers
+
+config LIRC_SERIAL_TRANSMITTER
+	bool "Serial Port Transmitter"
+	default y
+	depends on LIRC_SERIAL
+	help
+	  Serial Port Transmitter support
+
+config LIRC_SIR
+	tristate "Built-in SIR IrDA port"
+	depends on INPUT_LIRC
+	help
+	  Driver for the SIR IrDA port
+
+config LIRC_STREAMZAP
+	tristate "Streamzap PC Receiver"
+	depends on INPUT_LIRC
+	help
+	  Driver for the Streamzap PC Receiver
+
+config LIRC_TTUSBIR
+	tristate "Technotrend USB IR Receiver"
+	depends on INPUT_LIRC && USB
+	help
+	  Driver for the Technotrend USB IR Receiver
+
+config LIRC_ZILOG
+	tristate "Zilog/Hauppauge IR Transmitter"
+	depends on INPUT_LIRC
+	help
+	  Driver for the Zilog/Hauppauge IR Transmitter, found on
+	  PVR-150/500, HVR-1200/1250/1700/1800, HD-PVR and other cards
+endif
diff --git a/drivers/input/lirc/Makefile b/drivers/input/lirc/Makefile
new file mode 100644
index 0000000..9122e87
--- /dev/null
+++ b/drivers/input/lirc/Makefile
@@ -0,0 +1,21 @@
+# Makefile for the lirc drivers.
+#
+
+# Each configuration option enables a list of files.
+
+obj-$(CONFIG_INPUT_LIRC)	+= lirc_dev.o
+obj-$(CONFIG_LIRC_BT829)	+= lirc_bt829.o
+obj-$(CONFIG_LIRC_ENE0100)	+= lirc_ene0100.o
+obj-$(CONFIG_LIRC_I2C)		+= lirc_i2c.o
+obj-$(CONFIG_LIRC_IGORPLUGUSB)	+= lirc_igorplugusb.o
+obj-$(CONFIG_LIRC_IMON)		+= lirc_imon.o
+obj-$(CONFIG_LIRC_IT87)		+= lirc_it87.o
+obj-$(CONFIG_LIRC_ITE8709)	+= lirc_ite8709.o
+obj-$(CONFIG_LIRC_MCEUSB)	+= lirc_mceusb.o
+obj-$(CONFIG_LIRC_PARALLEL)	+= lirc_parallel.o
+obj-$(CONFIG_LIRC_SASEM)	+= lirc_sasem.o
+obj-$(CONFIG_LIRC_SERIAL)	+= lirc_serial.o
[...16374 lines suppressed...]
+
+static const struct {
+	u32 hw_code;
+	u16 keycode;
+} imon_mce_key_table[] = {
+	/* keys sorted mostly by frequency of use to optimize lookups */
+	{ 0x800f8415, KEY_REWIND },
+	{ 0x800f8414, KEY_FASTFORWARD },
+	{ 0x800f841b, KEY_PREVIOUS },
+	{ 0x800f841a, KEY_NEXT },
+
+	{ 0x800f8416, KEY_PLAY },
+	{ 0x800f8418, KEY_PAUSE },
+	{ 0x800f8418, KEY_PAUSE },
+	{ 0x800f8419, KEY_STOP },
+	{ 0x800f8417, KEY_RECORD },
+
+	{ 0x02000052, KEY_UP },
+	{ 0x02000051, KEY_DOWN },
+	{ 0x02000050, KEY_LEFT },
+	{ 0x0200004f, KEY_RIGHT },
+
+	{ 0x02000028, KEY_ENTER },
+/* the OK and Enter buttons decode to the same value
+	{ 0x02000028, KEY_OK }, */
+	{ 0x0200002a, KEY_EXIT },
+	{ 0x02000029, KEY_DELETE },
+
+	{ 0x800f840e, KEY_MUTE },
+	{ 0x800f8410, KEY_VOLUMEUP },
+	{ 0x800f8411, KEY_VOLUMEDOWN },
+	{ 0x800f8412, KEY_CHANNELUP },
+	{ 0x800f8413, KEY_CHANNELDOWN },
+
+	{ 0x0200001e, KEY_NUMERIC_1 },
+	{ 0x0200001f, KEY_NUMERIC_2 },
+	{ 0x02000020, KEY_NUMERIC_3 },
+	{ 0x02000021, KEY_NUMERIC_4 },
+	{ 0x02000022, KEY_NUMERIC_5 },
+	{ 0x02000023, KEY_NUMERIC_6 },
+	{ 0x02000024, KEY_NUMERIC_7 },
+	{ 0x02000025, KEY_NUMERIC_8 },
+	{ 0x02000026, KEY_NUMERIC_9 },
+	{ 0x02000027, KEY_NUMERIC_0 },
+
+	{ 0x02200025, KEY_NUMERIC_STAR },
+	{ 0x02200020, KEY_NUMERIC_POUND },
+
+	{ 0x800f8446, KEY_TV },
+	{ 0x800f8447, KEY_AUDIO },
+	{ 0x800f8448, KEY_PVR }, /* RecordedTV */
+	{ 0x800f8449, KEY_CAMERA },
+	{ 0x800f844a, KEY_VIDEO },
+	{ 0x800f8424, KEY_DVD },
+	{ 0x800f8425, KEY_TUNER }, /* LiveTV */
+
+	{ 0x800f845b, KEY_RED },
+	{ 0x800f845c, KEY_GREEN },
+	{ 0x800f845d, KEY_YELLOW },
+	{ 0x800f845e, KEY_BLUE },
+
+	{ 0x800f840f, KEY_INFO },
+	{ 0x800f8426, KEY_EPG }, /* Guide */
+	{ 0x800f845a, KEY_SUBTITLE }, /* Caption */
+
+	{ 0x800f840c, KEY_POWER },
+	{ 0x800f840d, KEY_PROG1 }, /* Windows MCE button */
+
+};
+
+static const struct {
+	u64 hw_code;
+	u16 keycode;
+} imon_panel_key_table[] = {
+	{ 0x000000000f000fee, KEY_PROG1 }, /* Go */
+	{ 0x000000001f000fee, KEY_AUDIO },
+	{ 0x0000000020000fee, KEY_VIDEO },
+	{ 0x0000000021000fee, KEY_CAMERA },
+	{ 0x0000000027000fee, KEY_DVD },
+/* the TV key on my panel is broken, doesn't work under any OS
+	{ 0x0000000000000fee, KEY_TV }, */
+	{ 0x0000000005000fee, KEY_PREVIOUS },
+	{ 0x0000000007000fee, KEY_REWIND },
+	{ 0x0000000004000fee, KEY_STOP },
+	{ 0x000000003c000fee, KEY_PLAYPAUSE },
+	{ 0x0000000008000fee, KEY_FASTFORWARD },
+	{ 0x0000000006000fee, KEY_NEXT },
+	{ 0x0000000100000fee, KEY_RIGHT },
+	{ 0x0000010000000fee, KEY_LEFT },
+	{ 0x000000003d000fee, KEY_SELECT },
+	{ 0x0001000000000fee, KEY_VOLUMEUP },
+	{ 0x0100000000000fee, KEY_VOLUMEDOWN },
+	{ 0x0000000001000fee, KEY_MUTE },
+};
diff --git a/include/linux/lirc.h b/include/linux/lirc.h
new file mode 100644
index 0000000..c7b25a8
--- /dev/null
+++ b/include/linux/lirc.h
@@ -0,0 +1,100 @@
+/*
+ * lirc.h - linux infrared remote control header file
+ * last modified 2007/09/27
+ */
+
+#ifndef _LINUX_LIRC_H
+#define _LINUX_LIRC_H
+
+#include <linux/types.h>
+#include <linux/ioctl.h>
+
+#define PULSE_BIT  0x01000000
+#define PULSE_MASK 0x00FFFFFF
+
+/*** lirc compatible hardware features ***/
+
+#define LIRC_MODE2SEND(x) (x)
+#define LIRC_SEND2MODE(x) (x)
+#define LIRC_MODE2REC(x) ((x) << 16)
+#define LIRC_REC2MODE(x) ((x) >> 16)
+
+#define LIRC_MODE_RAW                  0x00000001
+#define LIRC_MODE_PULSE                0x00000002
+#define LIRC_MODE_MODE2                0x00000004
+#define LIRC_MODE_CODE                 0x00000008
+#define LIRC_MODE_LIRCCODE             0x00000010
+#define LIRC_MODE_STRING               0x00000020
+
+
+#define LIRC_CAN_SEND_RAW              LIRC_MODE2SEND(LIRC_MODE_RAW)
+#define LIRC_CAN_SEND_PULSE            LIRC_MODE2SEND(LIRC_MODE_PULSE)
+#define LIRC_CAN_SEND_MODE2            LIRC_MODE2SEND(LIRC_MODE_MODE2)
+#define LIRC_CAN_SEND_CODE             LIRC_MODE2SEND(LIRC_MODE_CODE)
+#define LIRC_CAN_SEND_LIRCCODE         LIRC_MODE2SEND(LIRC_MODE_LIRCCODE)
+#define LIRC_CAN_SEND_STRING           LIRC_MODE2SEND(LIRC_MODE_STRING)
+
+#define LIRC_CAN_SEND_MASK             0x0000003f
+
+#define LIRC_CAN_SET_SEND_CARRIER      0x00000100
+#define LIRC_CAN_SET_SEND_DUTY_CYCLE   0x00000200
+#define LIRC_CAN_SET_TRANSMITTER_MASK  0x00000400
+
+#define LIRC_CAN_REC_RAW               LIRC_MODE2REC(LIRC_MODE_RAW)
+#define LIRC_CAN_REC_PULSE             LIRC_MODE2REC(LIRC_MODE_PULSE)
+#define LIRC_CAN_REC_MODE2             LIRC_MODE2REC(LIRC_MODE_MODE2)
+#define LIRC_CAN_REC_CODE              LIRC_MODE2REC(LIRC_MODE_CODE)
+#define LIRC_CAN_REC_LIRCCODE          LIRC_MODE2REC(LIRC_MODE_LIRCCODE)
+#define LIRC_CAN_REC_STRING            LIRC_MODE2REC(LIRC_MODE_STRING)
+
+#define LIRC_CAN_REC_MASK              LIRC_MODE2REC(LIRC_CAN_SEND_MASK)
+
+#define LIRC_CAN_SET_REC_CARRIER       (LIRC_CAN_SET_SEND_CARRIER << 16)
+#define LIRC_CAN_SET_REC_DUTY_CYCLE    (LIRC_CAN_SET_SEND_DUTY_CYCLE << 16)
+
+#define LIRC_CAN_SET_REC_DUTY_CYCLE_RANGE 0x40000000
+#define LIRC_CAN_SET_REC_CARRIER_RANGE    0x80000000
+#define LIRC_CAN_GET_REC_RESOLUTION       0x20000000
+
+#define LIRC_CAN_SEND(x) ((x)&LIRC_CAN_SEND_MASK)
+#define LIRC_CAN_REC(x) ((x)&LIRC_CAN_REC_MASK)
+
+#define LIRC_CAN_NOTIFY_DECODE            0x01000000
+
+/*** IOCTL commands for lirc driver ***/
+
+#define LIRC_GET_FEATURES              _IOR('i', 0x00000000, uint64_t)
+
+#define LIRC_GET_SEND_MODE             _IOR('i', 0x00000001, uint64_t)
+#define LIRC_GET_REC_MODE              _IOR('i', 0x00000002, uint64_t)
+#define LIRC_GET_SEND_CARRIER          _IOR('i', 0x00000003, uint32_t)
+#define LIRC_GET_REC_CARRIER           _IOR('i', 0x00000004, uint32_t)
+#define LIRC_GET_SEND_DUTY_CYCLE       _IOR('i', 0x00000005, uint32_t)
+#define LIRC_GET_REC_DUTY_CYCLE        _IOR('i', 0x00000006, uint32_t)
+#define LIRC_GET_REC_RESOLUTION        _IOR('i', 0x00000007, uint32_t)
+
+/* code length in bits, currently only for LIRC_MODE_LIRCCODE */
+#define LIRC_GET_LENGTH                _IOR('i', 0x0000000f, uint64_t)
+
+#define LIRC_SET_SEND_MODE             _IOW('i', 0x00000011, uint64_t)
+#define LIRC_SET_REC_MODE              _IOW('i', 0x00000012, uint64_t)
+/* Note: these can reset the according pulse_width */
+#define LIRC_SET_SEND_CARRIER          _IOW('i', 0x00000013, uint32_t)
+#define LIRC_SET_REC_CARRIER           _IOW('i', 0x00000014, uint32_t)
+#define LIRC_SET_SEND_DUTY_CYCLE       _IOW('i', 0x00000015, uint32_t)
+#define LIRC_SET_REC_DUTY_CYCLE        _IOW('i', 0x00000016, uint32_t)
+#define LIRC_SET_TRANSMITTER_MASK      _IOW('i', 0x00000017, uint32_t)
+
+/*
+ * to set a range use
+ * LIRC_SET_REC_DUTY_CYCLE_RANGE/LIRC_SET_REC_CARRIER_RANGE with the
+ * lower bound first and later
+ * LIRC_SET_REC_DUTY_CYCLE/LIRC_SET_REC_CARRIER with the upper bound
+ */
+
+#define LIRC_SET_REC_DUTY_CYCLE_RANGE  _IOW('i', 0x0000001e, uint32_t)
+#define LIRC_SET_REC_CARRIER_RANGE     _IOW('i', 0x0000001f, uint32_t)
+
+#define LIRC_NOTIFY_DECODE             _IO('i', 0x00000020)
+
+#endif


--- NEW FILE patch-2.6.32.7.bz2.sign ---
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: See http://www.kernel.org/signature.html for info

iD8DBQBLYh7oyGugalF9Dw4RArHJAJ97BV3EWN9SdmGjB9C7jzm9Y5C16QCfVWTL
zOVNisB1BhGEnuDnXSRkfHw=
=KrqY
-----END PGP SIGNATURE-----

wmi-check-find_guid-return-value-to-prevent-oops.patch:
 wmi.c |    6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

--- NEW FILE wmi-check-find_guid-return-value-to-prevent-oops.patch ---
From: Paul Rolland <rol at as2917.net>
Date: Wed, 30 Dec 2009 06:19:12 +0000 (-0500)
Subject: wmi: check find_guid() return value to prevent oops
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=b58454ec25e80fdb84e294758aeb22dd6d5ee6f9

wmi: check find_guid() return value to prevent oops

Signed-off-by: rol at as2917.net <Paul Rolland>
Signed-off-by: Len Brown <len.brown at intel.com>
Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
---

diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
index 9f93d6c..cc9ad74 100644
--- a/drivers/platform/x86/wmi.c
+++ b/drivers/platform/x86/wmi.c
@@ -492,8 +492,7 @@ wmi_notify_handler handler, void *data)
 	if (!guid || !handler)
 		return AE_BAD_PARAMETER;
 
-	find_guid(guid, &block);
-	if (!block)
+	if (!find_guid(guid, &block))
 		return AE_NOT_EXIST;
 
 	if (block->handler)
@@ -521,8 +520,7 @@ acpi_status wmi_remove_notify_handler(const char *guid)
 	if (!guid)
 		return AE_BAD_PARAMETER;
 
-	find_guid(guid, &block);
-	if (!block)
+	if (!find_guid(guid, &block))
 		return AE_NOT_EXIST;
 
 	if (!block->handler)

wmi-check-wmi-get-event-data-return-value.patch:
 dell-wmi.c |    7 ++++++-
 hp-wmi.c   |    7 ++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

--- NEW FILE wmi-check-wmi-get-event-data-return-value.patch ---
From: Len Brown <len.brown at intel.com>
Date: Sun, 27 Dec 2009 04:02:24 +0000 (-0500)
Subject: dell-wmi, hp-wmi, msi-wmi: check wmi_get_event_data() return value
X-Git-Tag: v2.6.33-rc3~32^2~4^2~3
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=fda11e61ff8a4e3a8ebbd434e46560b67cc0ca9d

dell-wmi, hp-wmi, msi-wmi: check wmi_get_event_data() return value

[ backport to 2.6.32 ]

When acpi_evaluate_object() is passed ACPI_ALLOCATE_BUFFER,
the caller must kfree the returned buffer if AE_OK is returned.

The callers of wmi_get_event_data() pass ACPI_ALLOCATE_BUFFER,
and thus must check its return value before accessing
or kfree() on the buffer.

Signed-off-by: Len Brown <len.brown at intel.com>
---

diff --git a/drivers/platform/x86/dell-wmi.c b/drivers/platform/x86/dell-wmi.c
index 4c7e702..500af8c 100644
--- a/drivers/platform/x86/dell-wmi.c
+++ b/drivers/platform/x86/dell-wmi.c
@@ -202,8 +202,13 @@ static void dell_wmi_notify(u32 value, void *context)
 	struct acpi_buffer response = { ACPI_ALLOCATE_BUFFER, NULL };
 	static struct key_entry *key;
 	union acpi_object *obj;
+	acpi_status status;
 
-	wmi_get_event_data(value, &response);
+	status = wmi_get_event_data(value, &response);
+	if (status != AE_OK) {
+		printk(KERN_INFO "dell-wmi: bad event status 0x%x\n", status);
+		return;
+	}
 
 	obj = (union acpi_object *)response.pointer;
 
diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c
index 18bf741..5b648f0 100644
--- a/drivers/platform/x86/hp-wmi.c
+++ b/drivers/platform/x86/hp-wmi.c
@@ -338,8 +338,13 @@ static void hp_wmi_notify(u32 value, void *context)
 	struct acpi_buffer response = { ACPI_ALLOCATE_BUFFER, NULL };
 	static struct key_entry *key;
 	union acpi_object *obj;
+	acpi_status status;
 
-	wmi_get_event_data(value, &response);
+	status = wmi_get_event_data(value, &response);
+	if (status != AE_OK) {
+		printk(KERN_INFO "hp-wmi: bad event status 0x%x\n", status);
+		return;
+	}
 
 	obj = (union acpi_object *)response.pointer;
 

wmi-free-the-allocated-acpi-objects.patch:
 dell-wmi.c |    1 +
 hp-wmi.c   |    2 ++
 wmi.c      |    4 ++--
 3 files changed, 5 insertions(+), 2 deletions(-)

--- NEW FILE wmi-free-the-allocated-acpi-objects.patch ---
From: Anisse Astier <anisse at astier.eu>
Date: Fri, 4 Dec 2009 09:10:09 +0000 (+0100)
Subject: wmi: Free the allocated acpi objects through wmi_get_event_data
X-Git-Tag: v2.6.33-rc2~3^2^2~3
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=3e9b988e4edf065d39c1343937f717319b1c1065

wmi: Free the allocated acpi objects through wmi_get_event_data

[ backported to 2.6.32 ]

These function allocate an acpi object by calling wmi_get_event_data, which
then calls acpi_evaluate_object, and it is not freed afterwards.

And kernel doc is fixed for parameters of wmi_get_event_data.

Signed-off-by: Anisse Astier <anisse at astier.eu>
Acked-by: Randy Dunlap <randy.dunlap at oracle.com>
Acked-by: Carlos Corbacho <carlos at strangeworlds.co.uk>
Signed-off-by: Len Brown <len.brown at intel.com>
---

diff --git a/drivers/platform/x86/dell-wmi.c b/drivers/platform/x86/dell-wmi.c
index 67f3fe7..6561dfc 100644
--- a/drivers/platform/x86/dell-wmi.c
+++ b/drivers/platform/x86/dell-wmi.c
@@ -238,6 +238,7 @@ static void dell_wmi_notify(u32 value, void *context)
 			printk(KERN_INFO "dell-wmi: Unknown key %x pressed\n",
 			       buffer[1] & 0xFFFF);
 	}
+	kfree(obj);
 }
 
 
diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c
index 63c3e65..db10c5d 100644
--- a/drivers/platform/x86/hp-wmi.c
+++ b/drivers/platform/x86/hp-wmi.c
@@ -381,6 +381,8 @@ static void hp_wmi_notify(u32 value, void *context)
 			       eventcode);
 	} else
 		printk(KERN_INFO "HP WMI: Unknown response received\n");
+
+	kfree(obj);
 }
 
 static int __init hp_wmi_input_setup(void)
diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
index e425a86..9f93d6c 100644
--- a/drivers/platform/x86/wmi.c
+++ b/drivers/platform/x86/wmi.c
@@ -540,8 +540,8 @@ EXPORT_SYMBOL_GPL(wmi_remove_notify_handler);
 /**
  * wmi_get_event_data - Get WMI data associated with an event
  *
- * @event - Event to find
- * &out - Buffer to hold event data
+ * @event: Event to find
+ * @out: Buffer to hold event data. out->pointer should be freed with kfree()
  *
  * Returns extra data associated with an event in WMI.
  */

wmi-survive-bios-with-duplicate-guids.patch:
 wmi.c |   30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

--- NEW FILE wmi-survive-bios-with-duplicate-guids.patch ---
From: Carlos Corbacho <carlos at strangeworlds.co.uk>
Date: Sat, 26 Dec 2009 19:14:59 +0000 (+0000)
Subject: ACPI: WMI: Survive BIOS with duplicate GUIDs
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=d1f9e4970742bb1e22d07b01bd44f9c357d25c42

ACPI: WMI: Survive BIOS with duplicate GUIDs

It would appear that in BIOS's with nVidia hooks, the GUID
05901221-D566-11D1-B2F0-00A0C9062910 is duplicated. For now, the simplest
solution is to just ignore any duplicate GUIDs. These particular hooks are not
currently supported/ used in the kernel, so whoever does that can figure out
what the 'right' solution should be (if there's a better one).

http://bugzilla.kernel.org/show_bug.cgi?id=14846

Signed-off-by: Carlos Corbacho <carlos at strangeworlds.co.uk>
Reported-by: Larry Finger <Larry.Finger at lwfinger.net>
Reported-by: Oldřich Jedlička <oldium.pro at seznam.cz>
Signed-off-by: Len Brown <len.brown at intel.com>
---

diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
index cc9ad74..b104302 100644
--- a/drivers/platform/x86/wmi.c
+++ b/drivers/platform/x86/wmi.c
@@ -714,6 +714,22 @@ static int wmi_class_init(void)
 	return ret;
 }
 
+static bool guid_already_parsed(const char *guid_string)
+{
+	struct guid_block *gblock;
+	struct wmi_block *wblock;
+	struct list_head *p;
+
+	list_for_each(p, &wmi_blocks.list) {
+		wblock = list_entry(p, struct wmi_block, list);
+		gblock = &wblock->gblock;
+
+		if (strncmp(gblock->guid, guid_string, 16) == 0)
+			return true;
+	}
+	return false;
+}
+
 /*
  * Parse the _WDG method for the GUID data blocks
  */
@@ -723,6 +739,7 @@ static __init acpi_status parse_wdg(acpi_handle handle)
 	union acpi_object *obj;
 	struct guid_block *gblock;
 	struct wmi_block *wblock;
+	char guid_string[37];
 	acpi_status status;
 	u32 i, total;
 
@@ -745,6 +762,19 @@ static __init acpi_status parse_wdg(acpi_handle handle)
 	memcpy(gblock, obj->buffer.pointer, obj->buffer.length);
 
 	for (i = 0; i < total; i++) {
+		/*
+		  Some WMI devices, like those for nVidia hooks, have a
+		  duplicate GUID. It's not clear what we should do in this
+		  case yet, so for now, we'll just ignore the duplicate.
+		  Anyone who wants to add support for that device can come
+		  up with a better workaround for the mess then.
+		*/
+		if (guid_already_parsed(gblock[i].guid) == true) {
+			wmi_gtoa(gblock[i].guid, guid_string);
+			printk(KERN_INFO PREFIX "Skipping duplicate GUID %s\n",
+				guid_string);
+			continue;
+		}
 		wblock = kzalloc(sizeof(struct wmi_block), GFP_KERNEL);
 		if (!wblock)
 			return AE_NO_MEMORY;


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/.cvsignore,v
retrieving revision 1.1014.2.36
retrieving revision 1.1014.2.37
diff -u -p -r1.1014.2.36 -r1.1014.2.37
--- .cvsignore	23 Dec 2009 21:12:33 -0000	1.1014.2.36
+++ .cvsignore	31 Jan 2010 17:57:31 -0000	1.1014.2.37
@@ -3,6 +3,6 @@ clog
 GNUmakefile
 kernel-2.6.*.config
 temp-*
-kernel-2.6.31
-linux-2.6.31.tar.bz2
-patch-2.6.31.9.bz2
+kernel-2.6.32
+linux-2.6.32.tar.bz2
+patch-2.6.32.7.bz2


Index: Makefile
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Makefile,v
retrieving revision 1.97.6.11
retrieving revision 1.97.6.12
diff -u -p -r1.97.6.11 -r1.97.6.12
--- Makefile	9 Dec 2009 21:44:00 -0000	1.97.6.11
+++ Makefile	31 Jan 2010 17:57:31 -0000	1.97.6.12
@@ -57,6 +57,7 @@ debug:
 	@perl -pi -e 's/# CONFIG_FAULT_INJECTION is not set/CONFIG_FAULT_INJECTION=y/' config-nodebug
 	@perl -pi -e 's/# CONFIG_FAILSLAB is not set/CONFIG_FAILSLAB=y/' config-nodebug
 	@perl -pi -e 's/# CONFIG_FAIL_PAGE_ALLOC is not set/CONFIG_FAIL_PAGE_ALLOC=y/' config-nodebug
+	@perl -pi -e 's/# CONFIG_FAIL_IO_TIMEOUT is not set/CONFIG_FAIL_IO_TIMEOUT=y/' config-nodebug
 	@perl -pi -e 's/# CONFIG_FAIL_MAKE_REQUEST is not set/CONFIG_FAIL_MAKE_REQUEST=y/' config-nodebug
 	@perl -pi -e 's/# CONFIG_FAULT_INJECTION_DEBUG_FS is not set/CONFIG_FAULT_INJECTION_DEBUG_FS=y/' config-nodebug
 	@perl -pi -e 's/# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set/CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y/' config-nodebug
@@ -77,14 +78,21 @@ debug:
 	@perl -pi -e 's/# CONFIG_B43LEGACY_DEBUG is not set/CONFIG_B43LEGACY_DEBUG=y/' config-generic
 	@perl -pi -e 's/# CONFIG_MMIOTRACE is not set/CONFIG_MMIOTRACE=y/' config-nodebug
 	@perl -pi -e 's/CONFIG_STRIP_ASM_SYMS=y/# CONFIG_STRIP_ASM_SYMS is not set/' config-nodebug
-	@perl -pi -e 's/# CONFIG_JBD2_DEBUG is not set/CONFIG_JBD2=y/' config-nodebug
+	@perl -pi -e 's/# CONFIG_DEBUG_CREDENTIALS is not set/CONFIG_DEBUG_CREDENTIALS=y/' config-nodebug
+	@perl -pi -e 's/# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set/CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y/' config-nodebug
+	@perl -pi -e 's/# CONFIG_ACPI_DEBUG is not set/CONFIG_ACPI_DEBUG=y/' config-nodebug
+	@perl -pi -e 's/# CONFIG_EXT4_DEBUG is not set/CONFIG_EXT4_DEBUG=y/' config-nodebug
+	@perl -pi -e 's/# CONFIG_DEBUG_PERF_USE_VMALLOC is not set/CONFIG_DEBUG_PERF_USE_VMALLOC=y/' config-nodebug
+	@perl -pi -e 's/# CONFIG_JBD2_DEBUG is not set/CONFIG_JBD2_DEBUG=y/' config-nodebug
 
 	@# just in case we're going from extremedebug -> debug
 	@perl -pi -e 's/CONFIG_DEBUG_PAGEALLOC=y/# CONFIG_DEBUG_PAGEALLOC is not set/' config-nodebug
 
-	@perl -pi -e 's/^%define debugbuildsenabled 1/%define debugbuildsenabled 0/' kernel.spec
 	@perl -pi -e 's/CONFIG_NR_CPUS=256/CONFIG_NR_CPUS=512/' config-x86_64-generic
 
+	@perl -pi -e 's/^%define debugbuildsenabled 1/%define debugbuildsenabled 0/' kernel.spec
+	@perl -pi -e 's/^%define rawhide_skip_docs 0/%define rawhide_skip_docs 1/' kernel.spec
+
 release:
 	@perl -pi -e 's/CONFIG_SLUB_DEBUG_ON=y/# CONFIG_SLUB_DEBUG_ON is not set/' config-nodebug
 	@perl -pi -e 's/CONFIG_LOCK_STAT=y/# CONFIG_LOCK_STAT is not set/' config-nodebug
@@ -96,13 +104,12 @@ release:
 	@perl -pi -e 's/CONFIG_DEBUG_LOCK_ALLOC=y/# CONFIG_DEBUG_LOCK_ALLOC is not set/' config-nodebug
 	@perl -pi -e 's/CONFIG_PROVE_LOCKING=y/# CONFIG_PROVE_LOCKING is not set/' config-nodebug
 	@perl -pi -e 's/CONFIG_DEBUG_SPINLOCK=y/# CONFIG_DEBUG_SPINLOCK is not set/' config-nodebug
-	@perl -pi -e 's/CONFIG_DEBUG_PAGEALLOC=y/# CONFIG_DEBUG_PAGEALLOC is not set/' config-debug
-	@perl -pi -e 's/CONFIG_DEBUG_PAGEALLOC=y/# CONFIG_DEBUG_PAGEALLOC is not set/' config-nodebug
 	@perl -pi -e 's/CONFIG_DEBUG_VM=y/# CONFIG_DEBUG_VM is not set/' config-nodebug
 	@perl -pi -e 's/CONFIG_DEBUG_SLEEP_IN_IRQ=y/# CONFIG_DEBUG_SLEEP_IN_IRQ is not set/' config-nodebug
 	@perl -pi -e 's/CONFIG_FAULT_INJECTION=y/# CONFIG_FAULT_INJECTION is not set/' config-nodebug
 	@perl -pi -e 's/CONFIG_FAILSLAB=y/# CONFIG_FAILSLAB is not set/' config-nodebug
 	@perl -pi -e 's/CONFIG_FAIL_PAGE_ALLOC=y/# CONFIG_FAIL_PAGE_ALLOC is not set/' config-nodebug
+	@perl -pi -e 's/CONFIG_FAIL_IO_TIMEOUT=y/# CONFIG_FAIL_IO_TIMEOUT is not set/' config-nodebug
 	@perl -pi -e 's/CONFIG_FAIL_MAKE_REQUEST=y/# CONFIG_FAIL_MAKE_REQUEST is not set/' config-nodebug
 	@perl -pi -e 's/CONFIG_FAULT_INJECTION_DEBUG_FS=y/# CONFIG_FAULT_INJECTION_DEBUG_FS is not set/' config-nodebug
 	@perl -pi -e 's/CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y/# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set/' config-nodebug
@@ -119,12 +126,19 @@ release:
 	@perl -pi -e 's/CONFIG_DMA_API_DEBUG=y/# CONFIG_DMA_API_DEBUG is not set/' config-nodebug
 	@perl -pi -e 's/CONFIG_PM_TEST_SUSPEND=y/#\ CONFIG_PM_TEST_SUSPEND\ is\ not\ set/' config-generic
 	@perl -pi -e 's/CONFIG_BOOT_TRACER=y/#\ CONFIG_BOOT_TRACER\ is\ not\ set/' config-generic
-	@perl -pi -e 's/CONFIG_PCI_MSI_DEFAULT_ON=y/# CONFIG_PCI_MSI_DEFAULT_ON is not set/' config-generic
 	@perl -pi -e 's/CONFIG_B43_DEBUG=y/# CONFIG_B43_DEBUG is not set/' config-generic
 	@perl -pi -e 's/CONFIG_B43LEGACY_DEBUG=y/# CONFIG_B43LEGACY_DEBUG is not set/' config-generic
 	@perl -pi -e 's/CONFIG_MMIOTRACE=y/# CONFIG_MMIOTRACE is not set/' config-nodebug
 	@perl -pi -e 's/# CONFIG_STRIP_ASM_SYMS is not set/CONFIG_STRIP_ASM_SYMS=y/' config-nodebug
-	@perl -pi -e 's/# CONFIG_JBD2_DEBUG is not set/CONFIG_JBD2_DEBUG=y/' config-nodebug
+	@perl -pi -e 's/CONFIG_DEBUG_CREDENTIALS=y/# CONFIG_DEBUG_CREDENTIALS is not set/' config-nodebug
+	@perl -pi -e 's/CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y/# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set/' config-nodebug
+	@perl -pi -e 's/CONFIG_ACPI_DEBUG=y/# CONFIG_ACPI_DEBUG is not set/' config-nodebug
+	@perl -pi -e 's/CONFIG_EXT4_DEBUG=y/# CONFIG_EXT4_DEBUG is not set/' config-nodebug
+	@perl -pi -e 's/CONFIG_DEBUG_PERF_USE_VMALLOC=y/# CONFIG_DEBUG_PERF_USE_VMALLOC is not set/' config-nodebug
+	@perl -pi -e 's/CONFIG_JBD2_DEBUG=y/# CONFIG_JBD2_DEBUG is not set/' config-nodebug
+
+	@perl -pi -e 's/CONFIG_DEBUG_PAGEALLOC=y/# CONFIG_DEBUG_PAGEALLOC is not set/' config-debug
+	@perl -pi -e 's/CONFIG_DEBUG_PAGEALLOC=y/# CONFIG_DEBUG_PAGEALLOC is not set/' config-nodebug
 
 	@perl -pi -e 's/CONFIG_NR_CPUS=512/CONFIG_NR_CPUS=256/' config-x86_64-generic
 


Index: TODO
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/TODO,v
retrieving revision 1.54.6.9
retrieving revision 1.54.6.10
diff -u -p -r1.54.6.9 -r1.54.6.10
--- TODO	5 Aug 2009 23:00:08 -0000	1.54.6.9
+++ TODO	31 Jan 2010 17:57:31 -0000	1.54.6.10
@@ -83,7 +83,3 @@
 
 * linux-2.6-kmemleak-improvements.patch
 	will go upstream for .31
-
-* linux-2.6-vga-arb.patch
-* drm-vga-arb.patch
-	will go upstream for .32


Index: config-arm
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-arm,v
retrieving revision 1.2.6.2
retrieving revision 1.2.6.3
diff -u -p -r1.2.6.2 -r1.2.6.3
--- config-arm	27 Jun 2009 11:05:09 -0000	1.2.6.2
+++ config-arm	31 Jan 2010 17:57:32 -0000	1.2.6.3
@@ -9,6 +9,7 @@ CONFIG_ARCH_VERSATILE_PB=y
 CONFIG_MACH_VERSATILE_AB=y
 
 CONFIG_HIGHMEM=y
+# CONFIG_HIGHPTE is not set
 
 # CONFIG_CPU_ICACHE_DISABLE is not set
 # CONFIG_CPU_DCACHE_DISABLE is not set


Index: config-debug
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-debug,v
retrieving revision 1.23.6.5
retrieving revision 1.23.6.6
diff -u -p -r1.23.6.5 -r1.23.6.6
--- config-debug	8 Nov 2009 22:36:35 -0000	1.23.6.5
+++ config-debug	31 Jan 2010 17:57:32 -0000	1.23.6.6
@@ -51,4 +51,14 @@ CONFIG_DMA_API_DEBUG=y
 
 CONFIG_MMIOTRACE=y
 
+CONFIG_DEBUG_CREDENTIALS=y
+
+CONFIG_EXT4_DEBUG=y
+
+CONFIG_DEBUG_PERF_USE_VMALLOC=y
+
+# off in both production debug and nodebug builds,
+#  on in rawhide nodebug builds
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+
 CONFIG_JBD2_DEBUG=y


Index: config-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-generic,v
retrieving revision 1.238.6.47
retrieving revision 1.238.6.48
diff -u -p -r1.238.6.47 -r1.238.6.48
--- config-generic	9 Dec 2009 21:44:00 -0000	1.238.6.47
+++ config-generic	31 Jan 2010 17:57:32 -0000	1.238.6.48
@@ -12,6 +12,8 @@ CONFIG_LOCALVERSION=""
 CONFIG_EXPERIMENTAL=y
 CONFIG_HOTPLUG=y
 CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
 CONFIG_STANDALONE=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
 
@@ -36,7 +38,6 @@ CONFIG_LOG_BUF_SHIFT=17
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
 CONFIG_KALLSYMS_EXTRA_PASS=y
-CONFIG_KALLSYMS_STRIP_GENERATED=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
 CONFIG_IOSCHED_NOOP=y
@@ -54,7 +55,6 @@ CONFIG_POSIX_MQUEUE=y
 # CONFIG_PREEMPT_NONE is not set
 CONFIG_PREEMPT_VOLUNTARY=y
 # CONFIG_PREEMPT is not set
-CONFIG_PREEMPT_BKL=y
 
 CONFIG_SLUB=y
 # CONFIG_SLUB_STATS is not set
@@ -70,7 +70,6 @@ CONFIG_MODULE_UNLOAD=y
 # -- MODULE_FORCE_UNLOAD is controlled by config-debug/nodebug
 # CONFIG_MODVERSIONS is not set
 CONFIG_MODULE_SRCVERSION_ALL=y
-CONFIG_KMOD=y
 
 #
 # Bus options (PCI, PCMCIA, EISA, MCA, ISA)
@@ -224,7 +223,6 @@ CONFIG_MTD_ABSENT=m
 #
 CONFIG_MTD_COMPLEX_MAPPINGS=y
 # CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_PNC2000 is not set
 CONFIG_MTD_SC520CDP=m
 CONFIG_MTD_NETSC520=m
 # CONFIG_MTD_SBC_GXX is not set
@@ -236,6 +234,7 @@ CONFIG_MTD_SCB2_FLASH=m
 # CONFIG_MTD_L440GX is not set
 CONFIG_MTD_PCI=m
 CONFIG_MTD_TS5500=m
+# CONFIG_MTD_GPIO_ADDR is not set
 
 #
 # Self-contained MTD device drivers
@@ -358,12 +357,10 @@ CONFIG_BLK_DEV_OSD=m
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=16384
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=4096
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_BLK_DEV_ATIIXP=y
 CONFIG_LBD=y
 CONFIG_BLK_DEV_IO_TRACE=y
-CONFIG_LSF=y
 
 CONFIG_BLK_DEV_DELKIN=m
 # CONFIG_BLK_DEV_IT8213 is not set
@@ -383,13 +380,9 @@ CONFIG_BLK_DEV_IDE=y
 #
 # Please see Documentation/ide.txt for help/info on IDE drives
 #
-# CONFIG_BLK_DEV_HD_IDE is not set
-CONFIG_BLK_DEV_IDEDISK=y
-CONFIG_IDEDISK_MULTI_MODE=y
 CONFIG_BLK_DEV_IDECS=m
 CONFIG_BLK_DEV_IDECD=m
 # CONFIG_BLK_DEV_IDETAPE is not set
-CONFIG_BLK_DEV_IDEFLOPPY=y
 CONFIG_IDE_TASK_IOCTL=y
 # CONFIG_BLK_DEV_IDE_SATA is not set
 
@@ -400,7 +393,6 @@ CONFIG_BLK_DEV_CMD640=y
 CONFIG_BLK_DEV_CMD640_ENHANCED=y
 CONFIG_BLK_DEV_IDEPNP=y
 CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_SHARE_IRQ=y
 # CONFIG_BLK_DEV_OFFBOARD is not set
 CONFIG_BLK_DEV_GENERIC=y
 # CONFIG_BLK_DEV_OPTI621 is not set
@@ -408,7 +400,6 @@ CONFIG_BLK_DEV_RZ1000=y
 CONFIG_BLK_DEV_IDEDMA_PCI=y
 CONFIG_BLK_DEV_AEC62XX=y
 CONFIG_BLK_DEV_ALI15X3=y
-# CONFIG_WDC_ALI15X3 is not set
 # CONFIG_BLK_DEV_AMD74XX is not set
 CONFIG_BLK_DEV_CMD64X=y
 CONFIG_BLK_DEV_TRIFLEX=y
@@ -416,7 +407,6 @@ CONFIG_BLK_DEV_TRIFLEX=y
 CONFIG_BLK_DEV_CS5520=y
 CONFIG_BLK_DEV_CS5530=y
 CONFIG_BLK_DEV_CS5535=y
-CONFIG_BLK_DEV_HPT34X=y
 CONFIG_BLK_DEV_HPT366=y
 CONFIG_BLK_DEV_IT821X=y
 CONFIG_BLK_DEV_JMICRON=y
@@ -424,7 +414,6 @@ CONFIG_BLK_DEV_JMICRON=y
 CONFIG_BLK_DEV_PIIX=y
 # CONFIG_BLK_DEV_NS87415 is not set
 CONFIG_BLK_DEV_PDC202XX_OLD=y
-# CONFIG_PDC202XX_BURST is not set
 CONFIG_BLK_DEV_PDC202XX_NEW=y
 CONFIG_BLK_DEV_SVWKS=y
 CONFIG_BLK_DEV_SIIMAGE=y
@@ -441,6 +430,7 @@ CONFIG_VIRTIO_RING=m
 CONFIG_VIRTIO_PCI=m
 CONFIG_VIRTIO_BALLOON=m
 CONFIG_VIRTIO_NET=m
+CONFIG_VMXNET3=m
 CONFIG_HW_RANDOM_VIRTIO=m
 CONFIG_VIRTIO_CONSOLE=m
 
@@ -520,6 +510,7 @@ CONFIG_AIC79XX_RESET_DELAY_MS=15000
 CONFIG_AIC79XX_DEBUG_MASK=0
 # CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
 # CONFIG_SCSI_ADVANSYS is not set
+CONFIG_SCSI_BFA_FC=m
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
@@ -537,9 +528,12 @@ CONFIG_SCSI_OSD_DPRINT_SENSE=1
 # CONFIG_SCSI_OSD_DEBUG is not set
 
 CONFIG_SCSI_BNX2_ISCSI=m
+CONFIG_BE2ISCSI=m
+CONFIG_SCSI_PMCRAID=m
 
 
 CONFIG_ATA=y
+CONFIG_ATA_VERBOSE_ERROR=y
 CONFIG_ATA_SFF=y
 CONFIG_ATA_PIIX=y
 CONFIG_ATA_ACPI=y
@@ -599,6 +593,7 @@ CONFIG_PATA_PCMCIA=m
 CONFIG_PATA_PDC_OLD=m
 CONFIG_PATA_QDI=m
 # CONFIG_PATA_RADISYS is not set
+CONFIG_PATA_RDC=m
 # CONFIG_PATA_RZ1000 is not set
 # CONFIG_PATA_SC1200 is not set
 CONFIG_PATA_SERVERWORKS=m
@@ -609,6 +604,7 @@ CONFIG_PATA_SIS=m
 CONFIG_PATA_TRIFLEX=m
 CONFIG_PATA_VIA=m
 CONFIG_PATA_WINBOND=m
+CONFIG_PATA_ATP867X=m
 
 CONFIG_SCSI_BUSLOGIC=m
 CONFIG_SCSI_INITIO=m
@@ -631,8 +627,6 @@ CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MOD
 CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
 CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
 CONFIG_SCSI_SYM53C8XX_MMIO=y
-# CONFIG_SCSI_QLOGIC_FC is not set
-# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
 CONFIG_SCSI_QLOGIC_1280=m
 CONFIG_SCSI_DC395x=m
 # CONFIG_SCSI_NSP32 is not set
@@ -643,7 +637,6 @@ CONFIG_SCSI_QLA_ISCSI=m
 # CONFIG_SCSI_IPR is not set
 # CONFIG_SCSI_DPT_I2O is not set
 CONFIG_SCSI_LPFC=m
-# CONFIG_SCSI_SEAGATE is not set
 
 #
 # PCMCIA SCSI adapter support
@@ -667,18 +660,16 @@ CONFIG_MD_LINEAR=m
 CONFIG_MD_MULTIPATH=m
 CONFIG_MD_RAID0=m
 CONFIG_MD_RAID1=m
-CONFIG_MD_RAID5_RESHAPE=y
 CONFIG_MD_RAID10=m
 CONFIG_MD_RAID456=m
+CONFIG_MULTICORE_RAID456=y
+CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_BLK_DEV_DM=y
 CONFIG_DM_CRYPT=m
 CONFIG_DM_DEBUG=y
 # CONFIG_DM_DELAY is not set
 CONFIG_DM_MIRROR=y
 CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-CONFIG_DM_MULTIPATH_HP=m
-CONFIG_DM_MULTIPATH_RDAC=m
 CONFIG_DM_SNAPSHOT=y
 CONFIG_DM_UEVENT=y
 CONFIG_DM_ZERO=y
@@ -815,9 +806,10 @@ CONFIG_IPV6_PIMSM_V2=y
 
 CONFIG_RDS=m
 # CONFIG_RDS_DEBUG is not set
+CONFIG_RDS_RDMA=m
+CONFIG_RDS_TCP=m
 
 CONFIG_NET_9P=m
-CONFIG_NET_9P_FD=m
 CONFIG_NET_9P_VIRTIO=m
 # CONFIG_NET_9P_DEBUG is not set
 CONFIG_NET_9P_RDMA=m
@@ -887,7 +879,6 @@ CONFIG_BRIDGE_NETFILTER=y
 #
 # IP: Netfilter Configuration
 #
-CONFIG_NF_CONNTRACK_ENABLED=y
 
 CONFIG_NF_CT_ACCT=y
 CONFIG_NF_CONNTRACK_MARK=y
@@ -915,17 +906,11 @@ CONFIG_NF_CT_PROTO_UDPLITE=m
 CONFIG_IP_NF_MATCH_ADDRTYPE=m
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_TOS=m
 CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_TARGET_CLUSTERIP=m
 CONFIG_IP_NF_TARGET_MASQUERADE=m
 CONFIG_IP_NF_TARGET_REDIRECT=m
 CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_IP_NF_TARGET_TOS=m
 CONFIG_IP_NF_TARGET_ECN=m
 CONFIG_IP_NF_TARGET_LOG=m
 CONFIG_IP_NF_TARGET_ULOG=m
@@ -954,7 +939,6 @@ CONFIG_IP6_NF_MATCH_HL=m
 CONFIG_IP6_NF_MATCH_IPV6HEADER=m
 CONFIG_IP6_NF_MATCH_MH=m
 CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_OWNER=m
 CONFIG_IP6_NF_MATCH_RT=m
 CONFIG_IP6_NF_QUEUE=m
 CONFIG_IP6_NF_RAW=m
@@ -1058,7 +1042,6 @@ CONFIG_NET_SCH_INGRESS=m
 CONFIG_NET_SCH_NETEM=m
 CONFIG_NET_SCH_PRIO=m
 CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_RR=m
 CONFIG_NET_SCH_SFQ=m
 CONFIG_NET_SCH_TBF=m
 CONFIG_NET_SCH_TEQL=m
@@ -1069,7 +1052,6 @@ CONFIG_NET_CLS_CGROUP=y
 CONFIG_NET_CLS_FLOW=m
 CONFIG_NET_CLS_FW=m
 CONFIG_NET_CLS_IND=y
-CONFIG_NET_CLS_POLICE=y
 CONFIG_NET_CLS_ROUTE4=m
 CONFIG_NET_CLS_ROUTE=y
 CONFIG_NET_CLS_RSVP=m
@@ -1105,9 +1087,6 @@ CONFIG_NET_PKTGEN=m
 CONFIG_NET_DROP_MONITOR=y
 CONFIG_NETDEVICES=y
 
-# disable later --kyle
-CONFIG_COMPAT_NET_DEV_OPS=y
-
 #
 # ARCnet devices
 #
@@ -1143,7 +1122,7 @@ CONFIG_ATM_FIRESTREAM=m
 CONFIG_ATM_FORE200E_TX_RETRY=16
 CONFIG_ATM_FORE200E_DEBUG=0
 
-# CONFIG_ATM_HE is not set
+CONFIG_ATM_HE=m
 CONFIG_PPPOATM=m
 CONFIG_PPPOL2TP=m
 CONFIG_ATM_NICSTAR=m
@@ -1178,10 +1157,6 @@ CONFIG_BROADCOM_PHY=m
 CONFIG_CICADA_PHY=m
 CONFIG_DAVICOM_PHY=m
 CONFIG_FIXED_PHY=y
-CONFIG_FIXED_MII_10_FDX=y
-CONFIG_FIXED_MII_100_FDX=y
-CONFIG_FIXED_MII_1000_FDX=y
-CONFIG_FIXED_MII_AMNT=1
 CONFIG_MDIO_BITBANG=m
 CONFIG_NATIONAL_PHY=m
 CONFIG_ICPLUS_PHY=m
@@ -1213,7 +1188,6 @@ CONFIG_TULIP=m
 # CONFIG_TULIP_MWI is not set
 CONFIG_TULIP_MMIO=y
 # CONFIG_NI5010 is not set
-# CONFIG_PCMCIA_XIRTULIP is not set
 CONFIG_DE4X5=m
 CONFIG_WINBOND_840=m
 CONFIG_DM9102=m
@@ -1225,11 +1199,8 @@ CONFIG_NE3210=m
 CONFIG_ES3210=m
 CONFIG_NET_PCI=y
 CONFIG_PCNET32=m
-CONFIG_PCNET32_NAPI=y
 CONFIG_AMD8111_ETH=m
-CONFIG_AMD8111E_NAPI=y
 CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_ADAPTEC_STARFIRE_NAPI=y
 CONFIG_B44=m
 CONFIG_B44_PCI=y
 CONFIG_BNX2=m
@@ -1239,7 +1210,6 @@ CONFIG_ATL1=m
 CONFIG_ATL1C=m
 CONFIG_ATL2=m
 CONFIG_ATL1E=m
-# CONFIG_EEPRO100 is not set
 CONFIG_E100=m
 CONFIG_FEALNX=m
 CONFIG_FORCEDETH=m
@@ -1262,16 +1232,15 @@ CONFIG_SUNDANCE=m
 CONFIG_TLAN=m
 CONFIG_VIA_RHINE=m
 CONFIG_VIA_RHINE_MMIO=y
-CONFIG_VIA_RHINE_NAPI=y
 CONFIG_VIA_VELOCITY=m
 CONFIG_NET_POCKET=y
 CONFIG_ATP=m
 CONFIG_DE600=m
 CONFIG_DE620=m
 CONFIG_CASSINI=m
-# CONFIG_FEC_8XX is not set
 CONFIG_ETHOC=m
 # CONFIG_KS8842 is not set
+# CONFIG_KS8851_MLL is not set
 
 #
 # Ethernet (1000 Mbit)
@@ -1280,20 +1249,15 @@ CONFIG_ACENIC=m
 # CONFIG_ACENIC_OMIT_TIGON_I is not set
 CONFIG_DL2K=m
 CONFIG_E1000=m
-CONFIG_E1000_NAPI=y
-# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
 CONFIG_E1000E=m
 CONFIG_IGB=m
-# CONFIG_IGB_LRO is not set
 CONFIG_IGB_DCA=y
 CONFIG_IGBVF=m
 CONFIG_NS83820=m
 CONFIG_HAMACHI=m
 CONFIG_YELLOWFIN=m
 CONFIG_R8169=m
-CONFIG_R8169_NAPI=y
 CONFIG_R8169_VLAN=y
-# CONFIG_SK98LIN is not set
 CONFIG_SKGE=m
 # CONFIG_SKGE_DEBUG is not set
 CONFIG_TIGON3=m
@@ -1306,11 +1270,9 @@ CONFIG_JME=m
 #
 CONFIG_CHELSIO_T1=m
 CONFIG_CHELSIO_T1_1G=y
-CONFIG_CHELSIO_T1_NAPI=y
 CONFIG_CHELSIO_T3=m
 CONFIG_IP1000=m
 CONFIG_IXGB=m
-CONFIG_IXGB_NAPI=y
 CONFIG_IXGBE=m
 CONFIG_IXGBE_DCA=y
 CONFIG_IXGBE_DCB=y
@@ -1319,7 +1281,6 @@ CONFIG_MYRI10GE_DCA=y
 CONFIG_NETXEN_NIC=m
 CONFIG_NIU=m
 CONFIG_S2IO=m
-CONFIG_S2IO_NAPI=y
 CONFIG_VXGE=m
 # CONFIG_VXGE_DEBUG_TRACE_ALL is not set
 CONFIG_TEHUTI=m
@@ -1354,6 +1315,8 @@ CONFIG_SLIP_SMART=y
 #
 # Wireless LAN
 #
+#
+CONFIG_WLAN=y
 # CONFIG_WLAN_PRE80211 is not set
 # CONFIG_STRIP is not set
 # CONFIG_ARLAN is not set
@@ -1366,7 +1329,10 @@ CONFIG_WIRELESS=y
 CONFIG_CFG80211=m
 # CONFIG_CFG80211_REG_DEBUG is not set
 CONFIG_CFG80211_DEBUGFS=y
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+CONFIG_CFG80211_DEFAULT_PS=y
 CONFIG_NL80211=y
+# CONFIG_NL80211_TESTMODE is not set
 # CONFIG_WIRELESS_OLD_REGULATORY is not set
 CONFIG_WIRELESS_EXT=y
 CONFIG_WIRELESS_EXT_SYSFS=y
@@ -1377,7 +1343,6 @@ CONFIG_LIB80211_CRYPT_TKIP=m
 # CONFIG_LIB80211_DEBUG is not set
 
 CONFIG_MAC80211=m
-CONFIG_MAC80211_QOS=y
 CONFIG_MAC80211_RC_MINSTREL=y
 # CONFIG_MAC80211_RC_DEFAULT_PID is not set
 CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
@@ -1386,7 +1351,6 @@ CONFIG_MAC80211_MESH=y
 CONFIG_MAC80211_LEDS=y
 CONFIG_MAC80211_DEBUGFS=y
 # CONFIG_MAC80211_DEBUG_MENU is not set
-CONFIG_MAC80211_DEFAULT_PS=y
 
 CONFIG_WIMAX=m
 CONFIG_WIMAX_DEBUG_LEVEL=8
@@ -1395,6 +1359,7 @@ CONFIG_WIMAX_I2400M_SDIO=m
 CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
 
 CONFIG_ADM8211=m
+CONFIG_ATH_COMMON=m
 CONFIG_ATH5K=m
 CONFIG_ATH5K_DEBUG=y
 CONFIG_ATH9K=m
@@ -1403,10 +1368,11 @@ CONFIG_AT76C50X_USB=m
 CONFIG_AIRO=m
 CONFIG_AIRO_CS=m
 CONFIG_ATMEL=m
-# CONFIG_BCM43XX is not set
 CONFIG_B43=m
 CONFIG_B43_PCMCIA=y
+CONFIG_B43_SDIO=y
 # CONFIG_B43_DEBUG is not set
+CONFIG_B43_PHY_LP=y
 # CONFIG_B43_FORCE_PIO is not set
 CONFIG_B43LEGACY=m
 # CONFIG_B43LEGACY_DEBUG is not set
@@ -1437,20 +1403,14 @@ CONFIG_LIBERTAS_THINFIRM=m
 CONFIG_LIBERTAS_THINFIRM_USB=m
 CONFIG_IWLWIFI=m
 CONFIG_IWLWIFI_LEDS=y
-CONFIG_IWLWIFI_RUN_TIME_CALIB=y
 CONFIG_IWLWIFI_DEBUG=y
 CONFIG_IWLWIFI_DEBUGFS=y
-CONFIG_IWLWIFI_RFKILL=y
 CONFIG_IWLWIFI_SPECTRUM_MEASUREMENT=y
 CONFIG_IWLAGN=m
 CONFIG_IWL4965=y
 CONFIG_IWL5000=y
-CONFIG_IWL5000_RUN_TIME_CALIB=y
 CONFIG_IWL3945=m
-CONFIG_IWL3945_RFKILL=y
-CONFIG_IWL3945_DEBUG=y
 CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y
-CONFIG_IWL3945_LEDS=y
 CONFIG_IWM=m
 # CONFIG_IWM_DEBUG is not set
 CONFIG_MAC80211_HWSIM=m
@@ -1462,7 +1422,7 @@ CONFIG_PCI_HERMES=m
 CONFIG_PLX_HERMES=m
 CONFIG_PCI_ATMEL=m
 CONFIG_MWL8K=m
-CONFIG_PRISM54=m
+# CONFIG_PRISM54 is not set
 CONFIG_PCMCIA_HERMES=m
 CONFIG_PCMCIA_SPECTRUM=m
 CONFIG_PCMCIA_ATMEL=m
@@ -1471,19 +1431,11 @@ CONFIG_RT2X00=m
 CONFIG_RT2X00_LIB_DEBUGFS=y
 # CONFIG_RT2X00_DEBUG is not set
 CONFIG_RT2400PCI=m
-CONFIG_RT2400PCI_RFKILL=y
-CONFIG_RT2400PCI_LEDS=y
 CONFIG_RT2500PCI=m
-CONFIG_RT2500PCI_RFKILL=y
-CONFIG_RT2500PCI_LEDS=y
 CONFIG_RT61PCI=m
-CONFIG_RT61PCI_RFKILL=y
-CONFIG_RT61PCI_LEDS=y
 CONFIG_RT2500USB=m
-CONFIG_RT2500USB_LEDS=y
 CONFIG_RT2800USB=m
 CONFIG_RT73USB=m
-CONFIG_RT73USB_LEDS=y
 CONFIG_RTL8180=m
 CONFIG_RTL8187=m
 CONFIG_TMD_HERMES=m
@@ -1493,10 +1445,16 @@ CONFIG_ZD1211RW=m
 # CONFIG_ZD1211RW_DEBUG is not set
 CONFIG_AR9170_USB=m
 
+CONFIG_WL12XX=y
+CONFIG_WL1251=m
+CONFIG_WL1251_SPI=m
+CONFIG_WL1251_SDIO=m
+CONFIG_WL1271=m
+
 #
 # Token Ring devices
 #
-# CONFIG_TR is not setk
+# CONFIG_TR is not set
 # CONFIG_IBMOL is not set
 # CONFIG_3C359 is not set
 # Broken with gcc4.1
@@ -1508,7 +1466,6 @@ CONFIG_AR9170_USB=m
 
 
 CONFIG_NET_FC=y
-# CONFIG_SHAPER is not set
 
 #
 # Wan interfaces
@@ -1541,8 +1498,10 @@ CONFIG_CAN_VCAN=m
 CONFIG_CAN_DEV=m
 CONFIG_CAN_CALC_BITTIMING=y
 CONFIG_CAN_SJA1000=m
+CONFIG_CAN_SJA1000_ISA=m
 CONFIG_CAN_SJA1000_PLATFORM=m
 CONFIG_CAN_EMS_PCI=m
+CONFIG_CAN_EMS_USB=m
 CONFIG_CAN_KVASER_PCI=m
 CONFIG_NETROM=m
 CONFIG_ROSE=m
@@ -1576,7 +1535,6 @@ CONFIG_ACTISYS_DONGLE=m
 CONFIG_ACT200L_DONGLE=m
 CONFIG_ESI_DONGLE=m
 CONFIG_GIRBIL_DONGLE=m
-CONFIG_IRPORT_SIR=m
 CONFIG_KINGSUN_DONGLE=m
 CONFIG_KSDAZZLE_DONGLE=m
 CONFIG_KS959_DONGLE=m
@@ -1586,7 +1544,6 @@ CONFIG_MCP2120_DONGLE=m
 CONFIG_OLD_BELKIN_DONGLE=m
 CONFIG_TEKRAM_DONGLE=m
 CONFIG_TOIM3232_DONGLE=m
-# CONFIG_DONGLE_OLD is not set
 
 CONFIG_ALI_FIR=m
 CONFIG_MCS_FIR=m
@@ -1619,7 +1576,6 @@ CONFIG_BT_HIDP=m
 CONFIG_BT_HCIBTUSB=m
 # Disable the BT_HCIUSB driver.
 # It sucks more power than BT_HCIBTUSB which has the same functionality.
-# CONFIG_BT_HCIUSB is not set
 CONFIG_BT_HCIUART=m
 CONFIG_BT_HCIUART_H4=y
 CONFIG_BT_HCIUART_BCSP=y
@@ -1628,12 +1584,13 @@ CONFIG_BT_HCIBT3C=m
 CONFIG_BT_HCIBLUECARD=m
 CONFIG_BT_HCIBTUART=m
 CONFIG_BT_HCIVHCI=m
-CONFIG_BT_HCIUSB_SCO=y
 CONFIG_BT_HCIBCM203X=m
 CONFIG_BT_HCIBFUSB=m
 CONFIG_BT_HCIBPA10X=m
 CONFIG_BT_HCIBTSDIO=m
 CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_MRVL=m
+CONFIG_BT_MRVL_SDIO=m
 
 #
 # ISDN subsystem
@@ -1642,6 +1599,11 @@ CONFIG_ISDN=y
 CONFIG_MISDN=m
 CONFIG_MISDN_DSP=m
 CONFIG_MISDN_L1OIP=m
+CONFIG_MISDN_AVMFRITZ=m
+CONFIG_MISDN_SPEEDFAX=m
+CONFIG_MISDN_INFINEON=m
+CONFIG_MISDN_W6692=m
+CONFIG_MISDN_NETJET=m
 
 #
 # mISDN hardware drivers
@@ -1748,7 +1710,6 @@ CONFIG_GIGASET_BASE=m
 CONFIG_GIGASET_M101=m
 CONFIG_GIGASET_M105=m
 # CONFIG_GIGASET_DEBUG is not set
-# CONFIG_GIGASET_UNDOCREQ is not set
 
 #
 # Telephony Support
@@ -1813,10 +1774,15 @@ CONFIG_KEYBOARD_ATKBD=y
 # CONFIG_KEYBOARD_STOWAWAY is not set
 # CONFIG_KEYBOARD_LKKBD is not set
 # CONFIG_KEYBOARD_LM8323 is not set
+CONFIG_QT2160=m
+CONFIG_KEYBOARD_ADP5588=m
+CONFIG_KEYBOARD_MAX7359=m
+CONFIG_KEYBOARD_OPENCORES=m
 CONFIG_INPUT_MOUSE=y
 CONFIG_MOUSE_PS2=y
 # CONFIG_MOUSE_PS2_TOUCHKIT is not set
 CONFIG_MOUSE_PS2_ELANTECH=y
+CONFIG_MOUSE_PS2_SENTELIC=y
 CONFIG_MOUSE_SERIAL=m
 CONFIG_MOUSE_VSXXXAA=m
 CONFIG_MOUSE_APPLETOUCH=m
@@ -1868,10 +1834,12 @@ CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
 CONFIG_TOUCHSCREEN_TOUCHWIN=m
 CONFIG_TOUCHSCREEN_UCB1400=m
 CONFIG_TOUCHSCREEN_WACOM_W8001=m
+CONFIG_TOUCHSCREEN_USB_E2I=y
 CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
 # CONFIG_TOUCHSCREEN_WM97XX is not set
 CONFIG_TOUCHSCREEN_EETI=m
 CONFIG_TOUCHSCREEN_W90X900=m
+CONFIG_TOUCHSCREEN_MCS5000=m
 CONFIG_INPUT_MISC=y
 CONFIG_INPUT_PCSPKR=m
 CONFIG_INPUT_UINPUT=m
@@ -1881,9 +1849,14 @@ CONFIG_INPUT_ATLAS_BTNS=m
 CONFIG_INPUT_ATI_REMOTE=m
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
+CONFIG_INPUT_IMON=m
 
 CONFIG_MAC_EMUMOUSEBTN=y
 
+CONFIG_INPUT_WM831X_ON=m
+
+CONFIG_INPUT_APPLEIR=m
+
 #
 # Character devices
 #
@@ -1928,7 +1901,6 @@ CONFIG_CYCLADES=m
 # CONFIG_ESPSERIAL is not set
 # CONFIG_MOXA_INTELLIO is not set
 # CONFIG_MOXA_SMARTIO is not set
-# CONFIG_MOXA_SMARTIO_NEW is not set
 # CONFIG_ISI is not set
 # CONFIG_RISCOM8 is not set
 # CONFIG_SPECIALIX is not set
@@ -1954,6 +1926,7 @@ CONFIG_PPDEV=m
 # I2C support
 #
 CONFIG_I2C=m
+CONFIG_I2C_COMPAT=y
 CONFIG_I2C_CHARDEV=m
 
 #
@@ -1980,7 +1953,6 @@ CONFIG_I2C_ALGOPCA=m
 # CONFIG_I2C_DEBUG_CHIP is not set
 # CONFIG_I2C_ELEKTOR is not set
 # CONFIG_I2C_I801 is not set
-# CONFIG_I2C_I810 is not set
 # CONFIG_I2C_ISCH is not set
 # CONFIG_I2C_NFORCE2_S4985 is not set
 
@@ -1997,8 +1969,6 @@ CONFIG_I2C_PASEMI=m
 CONFIG_I2C_PCA_ISA=m
 CONFIG_I2C_PCA_PLATFORM=m
 # CONFIG_I2C_PIIX4 is not set
-CONFIG_I2C_PROSAVAGE=m
-CONFIG_I2C_SAVAGE4=m
 # CONFIG_SCx200_ACB is not set
 # CONFIG_I2C_SIS5595 is not set
 # CONFIG_I2C_SIS630 is not set
@@ -2037,11 +2007,7 @@ CONFIG_SENSORS_ATXP1=m
 CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_DME1737=m
 CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_DS1337=m
-CONFIG_SENSORS_DS1374=m
 # CONFIG_DS1682 is not set
-CONFIG_SENSORS_FSCHER=m
-CONFIG_SENSORS_FSCPOS=m
 CONFIG_SENSORS_F71805F=m
 CONFIG_SENSORS_F71882FG=m
 CONFIG_SENSORS_F75375S=m
@@ -2071,11 +2037,8 @@ CONFIG_SENSORS_LM93=m
 CONFIG_SENSORS_LTC4245=m
 CONFIG_SENSORS_MAX1619=m
 CONFIG_SENSORS_MAX6650=m
-CONFIG_SENSORS_MAX6875=m
 CONFIG_SENSORS_PC87360=m
 CONFIG_SENSORS_PC87427=m
-CONFIG_SENSORS_PCA9539=m
-CONFIG_SENSORS_PCF8574=m
 CONFIG_SENSORS_PCF8591=m
 CONFIG_SENSORS_SHT15=m
 CONFIG_SENSORS_SIS5595=m
@@ -2099,6 +2062,9 @@ CONFIG_SENSORS_W83792D=m
 CONFIG_SENSORS_W83793=m
 CONFIG_SENSORS_LTC4215=m
 CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_TMP421=m
+CONFIG_SENSORS_WM8350=m
+CONFIG_SENSORS_WM831X=m
 
 CONFIG_W1=m
 CONFIG_W1_CON=y
@@ -2135,9 +2101,7 @@ CONFIG_IPMI_POWEROFF=m
 CONFIG_WATCHDOG=y
 # CONFIG_WATCHDOG_NOWAYOUT is not set
 CONFIG_SOFT_WATCHDOG=m
-# CONFIG_WDT_501 is not set
 CONFIG_WDTPCI=m
-CONFIG_WDT_501_PCI=y
 # CONFIG_ACQUIRE_WDT is not set
 # CONFIG_ADVANTECH_WDT is not set
 # CONFIG_EUROTECH_WDT is not set
@@ -2167,6 +2131,7 @@ CONFIG_PCIPCWATCHDOG=m
 CONFIG_USBPCWATCHDOG=m
 # CONFIG_SBC_EPX_C3_WATCHDOG is not set
 CONFIG_WM8350_WATCHDOG=m
+CONFIG_WM831X_WATCHDOG=m
 
 CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_TIMERIOMEM=m
@@ -2210,6 +2175,8 @@ CONFIG_RTC_DRV_DS1286=m
 CONFIG_RTC_DRV_M48T35=m
 CONFIG_RTC_DRV_BQ4802=m
 CONFIG_RTC_DRV_WM8350=m
+CONFIG_RTC_DRV_AB3100=m
+CONFIG_RTC_DRV_WM831X=m
 
 CONFIG_DTLK=m
 CONFIG_R3964=m
@@ -2289,9 +2256,9 @@ CONFIG_VIDEO_BT848=m
 CONFIG_VIDEO_BT848_DVB=y
 CONFIG_VIDEO_BWQCAM=m
 # CONFIG_VIDEO_CAFE_CCIC is not set
-CONFIG_VIDEO_CPIA=m
-CONFIG_VIDEO_CPIA_PP=m
-CONFIG_VIDEO_CPIA_USB=m
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA_PP is not set
+# CONFIG_VIDEO_CPIA_USB is not set
 CONFIG_VIDEO_CPIA2=m
 CONFIG_VIDEO_CQCAM=m
 CONFIG_VIDEO_CX23885=m
@@ -2301,7 +2268,6 @@ CONFIG_VIDEO_CX88_DVB=m
 CONFIG_VIDEO_CX88_ALSA=m
 CONFIG_VIDEO_CX88_BLACKBIRD=m
 CONFIG_VIDEO_CX88_VP3054=m
-CONFIG_VIDEO_DPC=m
 CONFIG_VIDEO_EM28XX=m
 CONFIG_VIDEO_EM28XX_ALSA=m
 CONFIG_VIDEO_EM28XX_DVB=m
@@ -2313,7 +2279,7 @@ CONFIG_VIDEO_HEXIUM_GEMINI=m
 CONFIG_VIDEO_IVTV=m
 CONFIG_VIDEO_MEYE=m
 CONFIG_VIDEO_MXB=m
-CONFIG_VIDEO_OVCAMCHIP=m
+# CONFIG_VIDEO_OVCAMCHIP is not set
 CONFIG_VIDEO_PVRUSB2_DVB=y
 CONFIG_VIDEO_HDPVR=m
 CONFIG_VIDEO_SAA5246A=m
@@ -2334,6 +2300,7 @@ CONFIG_VIDEO_ZORAN_LML33=m
 CONFIG_VIDEO_ZORAN_LML33R10=m
 CONFIG_VIDEO_ZORAN_ZR36060=m
 CONFIG_VIDEO_FB_IVTV=m
+CONFIG_VIDEO_SAA7164=m
 
 CONFIG_USB_VIDEO_CLASS=m
 CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
@@ -2353,6 +2320,7 @@ CONFIG_MEDIA_ATTACH=y
 #
 CONFIG_DVB_CAPTURE_DRIVERS=y
 CONFIG_DVB_CORE=m
+CONFIG_DVB_MAX_ADAPTERS=8
 CONFIG_DVB_DYNAMIC_MINORS=y
 
 # CONFIG_DVB_FE_CUSTOMISE is not set
@@ -2371,6 +2339,7 @@ CONFIG_DVB_USB_DTV5100=m
 CONFIG_DVB_USB_AF9015=m
 CONFIG_DVB_USB_ANYSEE=m
 CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_FRIIO=m
 CONFIG_DVB_DM1105=m
 CONFIG_DVB_DRX397XD=m
 CONFIG_DVB_LGDT3304=m
@@ -2426,18 +2395,22 @@ CONFIG_DVB_USB_UMT_010=m
 CONFIG_DVB_USB_VP702X=m
 CONFIG_DVB_USB_VP7045=m
 
+CONFIG_DVB_PT1=m
+
 CONFIG_VIDEO_SAA7146=m
 CONFIG_VIDEO_SAA7146_VV=m
 CONFIG_VIDEO_TUNER=m
-# CONFIG_VIDEO_TUNER_CUSTOMISE is not set
 CONFIG_VIDEO_BTCX=m
 CONFIG_VIDEO_PVRUSB2=m
-CONFIG_VIDEO_PVRUSB2_24XXX=y
-CONFIG_VIDEO_PVRUSB2_29XXX=y
 CONFIG_VIDEO_PVRUSB2_SYSFS=y
 # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
 
 #
+# Broadcom Crystal HD video decoder driver
+#
+CONFIG_CRYSTALHD=m
+
+#
 # Graphics support
 #
 
@@ -2445,7 +2418,6 @@ CONFIG_DISPLAY_SUPPORT=m
 CONFIG_VIDEO_OUTPUT_CONTROL=m
 
 CONFIG_FB=y
-CONFIG_VIDEO_SELECT=y
 # CONFIG_FB_FOREIGN_ENDIAN is not set
 CONFIG_FB_3DFX=m
 CONFIG_FB_3DFX_ACCEL=y
@@ -2461,7 +2433,6 @@ CONFIG_FB_ATY_GENERIC_LCD=y
 # CONFIG_FB_CARMINE is not set
 CONFIG_FB_CIRRUS=m
 # CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_CYBLA is not set
 # CONFIG_FB_GEODE is not set
 # CONFIG_FB_HECUBA is not set
 # CONFIG_FB_HGA is not set
@@ -2469,7 +2440,6 @@ CONFIG_FB_I810=m
 CONFIG_FB_I810_GTF=y
 CONFIG_FB_I810_I2C=y
 # CONFIG_FB_IMSTT is not set
-# CONFIG_FB_IMAC is not set
 # CONFIG_FB_INTEL is not set
 # CONFIG_FB_INTEL_DEBUG is not set
 # CONFIG_FB_INTEL_I2C is not set
@@ -2481,7 +2451,6 @@ CONFIG_FB_MATROX_MYSTIQUE=y
 CONFIG_FB_MATROX_G=y
 CONFIG_FB_MATROX_I2C=m
 CONFIG_FB_MATROX_MAVEN=m
-CONFIG_FB_MATROX_MULTIHEAD=y
 CONFIG_FB_NEOMAGIC=m
 CONFIG_FB_NVIDIA=m
 # CONFIG_FB_NVIDIA_DEBUG is not set
@@ -2506,7 +2475,6 @@ CONFIG_FB_SIS_315=y
 CONFIG_FB_SM501=m
 CONFIG_FB_TILEBLITTING=y
 CONFIG_FB_TRIDENT=m
-CONFIG_FB_TRIDENT_ACCEL=y
 # CONFIG_FB_UVESA is not set
 CONFIG_FB_VESA=y
 CONFIG_FB_VGA16=m
@@ -2555,6 +2523,7 @@ CONFIG_SOUND=m
 # Advanced Linux Sound Architecture
 #
 CONFIG_SND=y
+CONFIG_SOUND_OSS_CORE_PRECLAIM=y
 # CONFIG_SND_DEBUG_VERBOSE is not set
 CONFIG_SND_VERBOSE_PROCFS=y
 CONFIG_SND_SEQUENCER=y
@@ -2631,6 +2600,7 @@ CONFIG_SND_LX6464ES=m
 CONFIG_SND_HDA_INTEL=y
 CONFIG_SND_HDA_INPUT_BEEP=y
 CONFIG_SND_HDA_INPUT_JACK=y
+CONFIG_SND_HDA_PATCH_LOADER=y
 CONFIG_SND_HDA_HWDEP=y
 CONFIG_SND_HDA_CODEC_REALTEK=y
 CONFIG_SND_HDA_CODEC_CA0110=y
@@ -2638,6 +2608,7 @@ CONFIG_SND_HDA_CODEC_ANALOG=y
 CONFIG_SND_HDA_CODEC_SIGMATEL=y
 CONFIG_SND_HDA_CODEC_VIA=y
 CONFIG_SND_HDA_CODEC_ATIHDMI=y
+CONFIG_SND_HDA_CODEC_CIRRUS=y
 CONFIG_SND_HDA_CODEC_CONEXANT=y
 CONFIG_SND_HDA_CODEC_CMEDIA=y
 CONFIG_SND_HDA_CODEC_INTELHDMI=y
@@ -2645,7 +2616,7 @@ CONFIG_SND_HDA_CODEC_SI3054=y
 CONFIG_SND_HDA_CODEC_NVHDMI=y
 CONFIG_SND_HDA_GENERIC=y
 CONFIG_SND_HDA_POWER_SAVE=y
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=5
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
 CONFIG_SND_HDA_RECONFIG=y
 CONFIG_SND_HDSPM=m
 CONFIG_SND_HIFIER=m
@@ -2654,9 +2625,7 @@ CONFIG_SND_ICE1724=m
 CONFIG_SND_INTEL8X0=y
 CONFIG_SND_INTEL8X0M=m
 CONFIG_SND_KORG1212=m
-CONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL=y
 CONFIG_SND_MAESTRO3=m
-CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL=y
 CONFIG_SND_MIRO=m
 CONFIG_SND_MIXART=m
 CONFIG_SND_NM256=m
@@ -2677,7 +2646,6 @@ CONFIG_SND_VIA82XX_MODEM=m
 CONFIG_SND_VIRTUOSO=m
 CONFIG_SND_VX222=m
 CONFIG_SND_YMFPCI=m
-CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y
 
 #
 # ALSA USB devices
@@ -2711,7 +2679,6 @@ CONFIG_USB_SUPPORT=y
 # DEPRECATED: See bug 362221. Fix udev.
 # CONFIG_USB_DEVICE_CLASS is not set
 
-CONFIG_USB_PERSIST=y
 
 #
 # Miscellaneous USB options
@@ -2724,7 +2691,6 @@ CONFIG_USB_SUSPEND=y
 # USB Host Controller Drivers
 #
 CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_SPLIT_ISO=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
 CONFIG_USB_EHCI_TT_NEWSCHED=y
 CONFIG_USB_OHCI_HCD=y
@@ -2734,6 +2700,7 @@ CONFIG_USB_UHCI_HCD=y
 # CONFIG_USB_R8A66597_HCD is not set
 CONFIG_USB_XHCI_HCD=m
 # CONFIG_USB_XHCI_HCD_DEBUGGING is not set
+CONFIG_USB_ISP1362_HCD=m
 
 #
 # USB Device Class drivers
@@ -2753,10 +2720,8 @@ CONFIG_USB_STORAGE_CYPRESS_ATACB=y
 CONFIG_USB_STORAGE_DATAFAB=y
 CONFIG_USB_STORAGE_FREECOM=y
 CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_DPCM=y
 CONFIG_USB_STORAGE_SDDR09=y
 CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_SIERRA=y
 CONFIG_USB_STORAGE_JUMPSHOT=y
 CONFIG_USB_STORAGE_USBAT=y
 CONFIG_USB_STORAGE_ONETOUCH=y
@@ -2773,11 +2738,8 @@ CONFIG_HID_SUPPORT=y
 
 CONFIG_HID=m
 # debugging default is y upstream now
-CONFIG_HID_DEBUG=y
 CONFIG_HIDRAW=y
-CONFIG_HID_FF=y
 CONFIG_HID_PID=y
-# CONFIG_HID_COMPAT is not set
 CONFIG_LOGITECH_FF=y
 CONFIG_LOGIRUMBLEPAD2_FF=y
 CONFIG_PANTHERLORD_FF=y
@@ -2804,19 +2766,24 @@ CONFIG_USB_DABUSB=m
 
 CONFIG_USB_VICAM=m
 CONFIG_USB_DSBR=m
-CONFIG_USB_ET61X251=m
+# CONFIG_USB_ET61X251 is not set
 CONFIG_USB_M5602=m
 CONFIG_USB_STV06XX=m
 CONFIG_USB_GSPCA=m
 CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_BENQ=m
 CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_CPIA1=m
 CONFIG_USB_GSPCA_ETOMS=m
 CONFIG_USB_GSPCA_FINEPIX=m
 CONFIG_USB_GSPCA_MARS=m
 CONFIG_USB_GSPCA_OV519=m
 CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_OV534_9=m
 CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
 CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SN9C2028=m
 CONFIG_USB_GSPCA_SN9C20X=m
 CONFIG_USB_GSPCA_SN9C20X_EVDEV=y
 CONFIG_USB_GSPCA_SONIXB=m
@@ -2828,6 +2795,7 @@ CONFIG_USB_GSPCA_SPCA506=m
 CONFIG_USB_GSPCA_SPCA508=m
 CONFIG_USB_GSPCA_SPCA561=m
 CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STV0680=m
 CONFIG_USB_GSPCA_SUNPLUS=m
 CONFIG_USB_GSPCA_T613=m
 CONFIG_USB_GSPCA_TV8532=m
@@ -2835,14 +2803,17 @@ CONFIG_USB_GSPCA_VC032X=m
 CONFIG_USB_GSPCA_ZC3XX=m
 CONFIG_USB_GSPCA_SQ905=m
 CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GL860=m
+CONFIG_USB_GSPCA_JEILINJ=m
+
 CONFIG_USB_IBMCAM=m
 CONFIG_USB_KONICAWC=m
 # CONFIG_USB_OV511 is not set
 CONFIG_USB_S2255=m
 CONFIG_USB_SE401=m
 # CONFIG_VIDEO_SH_MOBILE_CEU is not set
-CONFIG_USB_STV680=m
-CONFIG_USB_SN9C102=m
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_SN9C102 is not set
 CONFIG_USB_ZR364XX=m
 CONFIG_SOC_CAMERA=m
 CONFIG_SOC_CAMERA_MT9M001=m
@@ -2890,6 +2861,8 @@ CONFIG_USB_ARMLINUX=y
 CONFIG_USB_EPSON2888=y
 CONFIG_USB_KC2190=y
 
+# CONFIG_USB_MUSB_HDRC is not set
+
 #
 # USB port drivers
 #
@@ -2901,11 +2874,9 @@ CONFIG_USB_USS720=m
 CONFIG_USB_SERIAL=m
 CONFIG_USB_SERIAL_GENERIC=y
 CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_AIRPRIME=m
 CONFIG_USB_SERIAL_ARK3116=m
 CONFIG_USB_SERIAL_BELKIN=m
 CONFIG_USB_SERIAL_CH341=m
-CONFIG_USB_SERIAL_CP2101=m
 CONFIG_USB_SERIAL_CYPRESS_M8=m
 CONFIG_USB_SERIAL_CYBERJACK=m
 CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
@@ -2975,7 +2946,6 @@ CONFIG_USB_SEVSEG=m
 CONFIG_USB_ALI_M5632=y
 CONFIG_USB_APPLEDISPLAY=m
 CONFIG_USB_ATM=m
-CONFIG_USB_AUERSWALD=m
 CONFIG_USB_BERRY_CHARGE=m
 CONFIG_USB_CXACRU=m
 # CONFIG_USB_C67X00_HCD is not set
@@ -2986,10 +2956,8 @@ CONFIG_USB_FTDI_ELAN=m
 CONFIG_USB_FILE_STORAGE=m
 # CONFIG_USB_FILE_STORAGE_TEST is not set
 # CONFIG_USB_GADGET is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
 # CONFIG_USB_GADGET_GOKU is not set
 # CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
 # CONFIG_USB_ISP116X_HCD is not set
 # CONFIG_USB_ISP1760_HCD is not set
 # CONFIG_USB_OXU210HP_HCD is not set
@@ -3000,10 +2968,6 @@ CONFIG_USB_LCD=m
 CONFIG_USB_LD=m
 CONFIG_USB_LEGOTOWER=m
 CONFIG_USB_MON=y
-CONFIG_USB_PHIDGET=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETMOTORCONTROL=m
 CONFIG_USB_PWC=m
 CONFIG_USB_PWC_INPUT_EVDEV=y
 # CONFIG_USB_PWC_DEBUG is not set
@@ -3012,15 +2976,17 @@ CONFIG_USB_PWC_INPUT_EVDEV=y
 CONFIG_USB_SL811_HCD=m
 CONFIG_USB_SISUSBVGA=m
 CONFIG_USB_SISUSBVGA_CON=y
+CONFIG_RADIO_SI470X=y
 CONFIG_USB_SI470X=m
+CONFIG_I2C_SI470X=m
+CONFIG_RADIO_SI4713=m
 CONFIG_USB_MR800=m
 CONFIG_USB_STKWEBCAM=m
 # CONFIG_USB_TEST is not set
 CONFIG_USB_TRANCEVIBRATOR=m
 CONFIG_USB_U132_HCD=m
 CONFIG_USB_UEAGLEATM=m
-CONFIG_USB_UVCVIDEO=m
-CONFIG_USB_W9968CF=m
+# CONFIG_USB_W9968CF is not set
 CONFIG_USB_XUSBATM=m
 # CONFIG_USB_ZC0301 is not set
 CONFIG_USB_ZERO=m
@@ -3032,6 +2998,7 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 #
 CONFIG_SSB=m
 CONFIG_SSB_PCIHOST=y
+CONFIG_SSB_SDIOHOST=y
 CONFIG_SSB_PCMCIAHOST=y
 # CONFIG_SSB_SILENT is not set
 # CONFIG_SSB_DEBUG is not set
@@ -3054,6 +3021,8 @@ CONFIG_MFD_SM501_GPIO=y
 CONFIG_MFD_WM8400=m
 CONFIG_MFD_WM8350_I2C=m
 CONFIG_MFD_WM8350=m
+CONFIG_MFD_WM831X=m
+CONFIG_AB3100_OTP=m
 
 #
 # File systems
@@ -3076,7 +3045,6 @@ CONFIG_EXT4_FS=y
 CONFIG_EXT4_FS_XATTR=y
 CONFIG_EXT4_FS_POSIX_ACL=y
 CONFIG_EXT4_FS_SECURITY=y
-CONFIG_EXT4DEV_COMPAT=y
 CONFIG_JBD2=y
 CONFIG_FS_MBCACHE=y
 CONFIG_REISERFS_FS=m
@@ -3095,7 +3063,6 @@ CONFIG_XFS_FS=m
 # CONFIG_XFS_RT is not set
 CONFIG_XFS_QUOTA=y
 CONFIG_XFS_POSIX_ACL=y
-CONFIG_XFS_SECURITY=y
 CONFIG_MINIX_FS=m
 CONFIG_ROMFS_FS=m
 CONFIG_QUOTA=y
@@ -3116,6 +3083,7 @@ CONFIG_FSCACHE=m
 CONFIG_FSCACHE_STATS=y
 # CONFIG_FSCACHE_HISTOGRAM is not set
 # CONFIG_FSCACHE_DEBUG is not set
+CONFIG_FSCACHE_OBJECT_LIST=y
 
 CONFIG_CACHEFILES=m
 # CONFIG_CACHEFILES_DEBUG is not set
@@ -3154,7 +3122,7 @@ CONFIG_DEBUG_FS=y
 #
 # Miscellaneous filesystems
 #
-# CONFIG_ADFS_FS is not seta
+# CONFIG_ADFS_FS is not set
 CONFIG_AFFS_FS=m
 CONFIG_ECRYPT_FS=m
 CONFIG_HFS_FS=m
@@ -3178,12 +3146,12 @@ CONFIG_SQUASHFS=m
 CONFIG_VXFS_FS=m
 # CONFIG_HPFS_FS is not set
 CONFIG_QNX4FS_FS=m
-# CONFIG_QNX4FS_RW is not set
 CONFIG_SYSV_FS=m
 CONFIG_UFS_FS=m
 # CONFIG_UFS_FS_WRITE is not set
 # CONFIG_UFS_DEBUG is not set
 CONFIG_9P_FS=m
+CONFIG_9P_FSCACHE=y
 CONFIG_FUSE_FS=m
 CONFIG_OMFS_FS=m
 CONFIG_CUSE=m
@@ -3197,21 +3165,17 @@ CONFIG_NFS_V3=y
 CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=y
 # CONFIG_NFS_V4_1 is not set
-CONFIG_NFS_DIRECTIO=y
 CONFIG_NFSD=m
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
 CONFIG_NFS_FSCACHE=y
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
 CONFIG_EXPORTFS=m
 CONFIG_SUNRPC=m
-CONFIG_SUNRPC_BIND34=y
 CONFIG_SUNRPC_GSS=m
 CONFIG_SUNRPC_XPRT_RDMA=m
-# CONFIG_SUNRPC_REGISTER_V4 is not set
 CONFIG_RPCSEC_GSS_KRB5=m
 CONFIG_RPCSEC_GSS_SPKM3=m
 # CONFIG_SMB_FS is not set
@@ -3236,7 +3200,6 @@ CONFIG_NCPFS_SMALLDOS=y
 CONFIG_NCPFS_NLS=y
 CONFIG_NCPFS_EXTRAS=y
 CONFIG_CODA_FS=m
-# CONFIG_CODA_FS_OLD_API is not set
 # CONFIG_AFS_FS is not set
 # CONFIG_AF_RXRPC is not set
 
@@ -3246,7 +3209,6 @@ CONFIG_OCFS2_FS=m
 CONFIG_OCFS2_FS_O2CB=m
 CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
 # CONFIG_OCFS2_FS_STATS is not set
-# CONFIG_OCFS2_COMPAT_JBD is not set
 CONFIG_OCFS2_FS_POSIX_ACL=y
 
 CONFIG_BTRFS_FS=m
@@ -3336,6 +3298,7 @@ CONFIG_NLS_ASCII=y
 #
 CONFIG_PROFILING=y
 CONFIG_OPROFILE=m
+CONFIG_OPROFILE_EVENT_MULTIPLEX=y
 
 #
 # Kernel hacking
@@ -3368,7 +3331,6 @@ CONFIG_SECURITY=y
 CONFIG_SECURITY_NETWORK=y
 CONFIG_SECURITY_NETWORK_XFRM=y
 # CONFIG_SECURITY_PATH is not set
-CONFIG_SECURITY_CAPABILITIES=y
 CONFIG_SECURITY_FILE_CAPABILITIES=y
 # CONFIG_SECURITY_ROOTPLUG is not set
 CONFIG_SECURITY_SELINUX=y
@@ -3377,9 +3339,7 @@ CONFIG_SECURITY_SELINUX_DISABLE=y
 CONFIG_SECURITY_SELINUX_DEVELOP=y
 CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
 CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
-CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT=y
 CONFIG_SECURITY_SELINUX_AVC_STATS=y
-CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=65536
 # CONFIG_SECURITY_SMACK is not set
 # CONFIG_SECURITY_TOMOYO is not set
 CONFIG_AUDIT=y
@@ -3439,16 +3399,17 @@ CONFIG_CRYPTO_TGR192=m
 CONFIG_CRYPTO_TWOFISH=m
 CONFIG_CRYPTO_WP512=m
 CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_VMAC=m
 CONFIG_CRYPTO_XTS=m
 CONFIG_CRYPTO_TEST=m
 CONFIG_LIBCRC32C=m
 CONFIG_CRYPTO_CRC32C_INTEL=m
+CONFIG_CRYPTO_GHASH=m
 CONFIG_CRYPTO_ANSI_CPRNG=m
 CONFIG_CRYPTO_DEV_HIFN_795X=m
 CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
 
 # Random number generation
-CONFIG_CRYPTO_PRNG=m
 
 #
 # Library routines
@@ -3481,6 +3442,7 @@ CONFIG_FB_RADEON_BACKLIGHT=y
 CONFIG_FB_ATY128_BACKLIGHT=y
 CONFIG_FB_ATY_BACKLIGHT=y
 # CONFIG_BACKLIGHT_SAHARA is not set
+CONFIG_BACKLIGHT_WM831X=m
 
 CONFIG_LCD_CLASS_DEVICE=m
 CONFIG_LCD_PLATFORM=m
@@ -3525,11 +3487,11 @@ CONFIG_PROC_EVENTS=y
 
 CONFIG_IBMASR=m
 
-CONFIG_PM_LEGACY=y
 CONFIG_PM_DEBUG=y
 CONFIG_PM_TRACE=y
 # CONFIG_PM_VERBOSE is not set
 # CONFIG_PM_TEST_SUSPEND is not set
+CONFIG_PM_RUNTIME=y
 
 ## BEGIN ISA Junk.
 
@@ -3549,7 +3511,6 @@ CONFIG_SCSI_ARCMSR_AER=y
 # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
 # CONFIG_SCSI_NCR53C406A is not set
 # CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PSI240I is not set
 # CONFIG_SCSI_QLOGIC_FAS is not set
 # CONFIG_SCSI_SYM53C416 is not set
 # CONFIG_SCSI_T128 is not set
@@ -3639,17 +3600,13 @@ CONFIG_RADIO_ADAPTERS=y
 # CONFIG_RADIO_ZOLTRIX is not set
 
 # CONFIG_SND_OPL4_LIB is not set
-# CONFIG_SND_AD1848_LIB is not set
 # CONFIG_SND_AD1816A is not set
 # CONFIG_SND_AD1848 is not set
 # CONFIG_SND_CS4231 is not set
-# CONFIG_SND_CS4232 is not set
-CONFIG_SND_CS4231_LIB=m
 CONFIG_SND_CS4236=m
 # CONFIG_SND_ES968 is not set
 # CONFIG_SND_ES1688 is not set
 # CONFIG_SND_ES18XX is not set
-# CONFIG_SND_GUS_SYNTH is not set
 # CONFIG_SND_GUSCLASSIC is not set
 # CONFIG_SND_GUSEXTREME is not set
 # CONFIG_SND_GUSMAX is not set
@@ -3687,25 +3644,17 @@ CONFIG_SND_INDIGODJX=m
 
 ## END of ISA options.
 
-# CONFIG_FORCED_INLINING is not set
 
 CONFIG_MIGRATION=y
-CONFIG_RESOURCES_64BIT=y
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
 # CONFIG_LEDS_AMS_DELTA is not set
-# CONFIG_LEDS_CORGI is not set
-# CONFIG_LEDS_IXP4XX is not set
 # CONFIG_LEDS_LOCOMO is not set
 # CONFIG_LEDS_NET48XX is not set
 # CONFIG_LEDS_PCA9532 is not set
 # CONFIG_LEDS_PCA955X is not set
-# CONFIG_LEDS_LP5521 is not set
 # CONFIG_LEDS_BD2802 is not set
 # CONFIG_LEDS_S3C24XX is not set
-# CONFIG_LEDS_SPITZ is not set
-# CONFIG_LEDS_TOSA is not set
-CONFIG_LEDS_HP_DISK=m
 CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGER_TIMER=m
 CONFIG_LEDS_TRIGGER_IDE_DISK=y
@@ -3715,6 +3664,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
 CONFIG_LEDS_ALIX2=m
 CONFIG_LEDS_WM8350=m
 CONFIG_LEDS_LP3944=m
+CONFIG_LEDS_WM831X_STATUS=m
 
 CONFIG_DMADEVICES=y
 CONFIG_DMA_ENGINE=y
@@ -3729,10 +3679,8 @@ CONFIG_UTRACE=y
 CONFIG_FTRACE=y
 # CONFIG_IRQSOFF_TRACER is not set
 CONFIG_SCHED_TRACER=y
-CONFIG_PROCESS_TRACER=y
 CONFIG_CONTEXT_SWITCH_TRACER=y
 CONFIG_WORKQUEUE_TRACER=y
-CONFIG_EVENT_TRACER=y
 CONFIG_FTRACE_SYSCALLS=y
 CONFIG_KMEMTRACE=y
 CONFIG_DYNAMIC_FTRACE=y
@@ -3762,6 +3710,7 @@ CONFIG_CFAG12864B_RATE=20
 CONFIG_POWER_SUPPLY=m
 # CONFIG_POWER_SUPPLY_DEBUG is not set
 CONFIG_APM_POWER=m
+CONFIG_WM831X_POWER=m
 # CONFIG_BATTERY_DS2760 is not set
 # CONFIG_BATTERY_DS2782 is not set
 CONFIG_BATTERY_PMU=m
@@ -3778,12 +3727,10 @@ CONFIG_UIO_PDRV=m
 CONFIG_UIO_PDRV_GENIRQ=m
 CONFIG_UIO_AEC=m
 CONFIG_UIO_SERCOS3=m
+CONFIG_UIO_PCI_GENERIC=m
 
-CONFIG_INSTRUMENTATION=y
-CONFIG_MARKERS=y
 # CONFIG_CRC7 is not set
 
-CONFIG_DEFAULT_RELATIME=y
 
 # LIRC
 CONFIG_INPUT_LIRC=m
@@ -3813,7 +3760,6 @@ CONFIG_R6040=m
 
 CONFIG_BNX2X=m
 CONFIG_NOZOMI=m
-CONFIG_PCF8575=m
 # CONFIG_TPS65010 is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
 # CONFIG_KPROBES_SANITY_TEST is not set
@@ -3822,7 +3768,6 @@ CONFIG_LATENCYTOP=y
 CONFIG_RESOURCE_COUNTERS=y
 # CONFIG_COMPAT_BRK is not set
 
-CONFIG_ACPI_CUSTOM_DSDT_INITRD=y
 
 #FIXME: x86 generic?
 CONFIG_LEDS_CLEVO_MAIL=m
@@ -3836,7 +3781,6 @@ CONFIG_ENCLOSURE_SERVICES=m
 CONFIG_ISL29003=m
 CONFIG_IPWIRELESS=m
 CONFIG_RTC_DRV_DS1511=m
-CONFIG_CGROUP_MEM_CONT=y
 
 # CONFIG_BLK_DEV_XIP is not set
 CONFIG_MEMSTICK=m
@@ -3862,7 +3806,6 @@ CONFIG_OPTIMIZE_INLINING=y
 
 # CONFIG_GPIOLIB is not set
 
-CONFIG_UNEVICTABLE_LRU=y
 
 CONFIG_NETFILTER_TPROXY=m
 CONFIG_NETFILTER_XT_TARGET_TPROXY=m
@@ -3901,6 +3844,10 @@ CONFIG_REGULATOR_DA903X=m
 CONFIG_REGULATOR_USERSPACE_CONSUMER=m
 CONFIG_REGULATOR_MAX1586=m
 CONFIG_REGULATOR_LP3971=m
+CONFIG_REGULATOR_AB3100=m
+CONFIG_REGULATOR_TPS65023=m
+CONFIG_REGULATOR_TPS6507X=m
+CONFIG_REGULATOR_WM831X=m
 
 CONFIG_WM8350_POWER=m
 
@@ -3923,9 +3870,6 @@ CONFIG_STAGING=y
 # CONFIG_STAGING_EXCLUDE_BUILD is not set
 # CONFIG_ET131X is not set
 # CONFIG_SLICOSS is not set
-# CONFIG_SXG is not set
-# CONFIG_ME4000 is not set
-# CONFIG_MEILHAUS is not set
 # CONFIG_VIDEO_GO7007 is not set
 # CONFIG_USB_IP_COMMON is not set
 # CONFIG_W35UND is not set
@@ -3933,11 +3877,9 @@ CONFIG_STAGING=y
 # CONFIG_ECHO is not set
 CONFIG_USB_ATMEL=m
 # CONFIG_POCH is not set
-# CONFIG_AGNX is not set
 # CONFIG_OTUS is not set
 # CONFIG_RT2860 is not set
 # CONFIG_RT2870 is not set
-# CONFIG_BENET is not set
 # CONFIG_COMEDI is not set
 # CONFIG_ASUS_OLED is not set
 # CONFIG_PANEL is not set
@@ -3945,18 +3887,23 @@ CONFIG_USB_ATMEL=m
 # CONFIG_RTL8187SE is not set
 # CONFIG_INPUT_MIMIO is not set
 # CONFIG_TRANZPORT is not set
-# CONFIG_EPL is not set
 # CONFIG_POHMELFS is not set
-# CONFIG_USB_SERIAL_ATEN2011 is not set
 # CONFIG_B3DFG is not set
 # CONFIG_DST is not set
 # CONFIG_IDE_PHISON is not set
 # CONFIG_PLAN9AUTH is not set
-# CONFIG_HECI is not set
 # CONFIG_LINE6_USB is not set
-# CONFIG_USB_SERIAL_QUATECH_ESU100 is not set
-# CONFIG_RT3070 is not set
 # CONFIG_RTL8192SU is not set
+# CONFIG_IIO is not set
+# CONFIG_VME_BUS is not set
+# CONFIG_RAR_REGISTER is not set
+# CONFIG_VT6656 is not set
+# CONFIG_USB_SERIAL_QUATECH_USB2 is not set
+# CONFIG_RTL8192E is not set
+# CONFIG_INPUT_GPIO is not set
+# CONFIG_VIDEO_CX25821 is not set
+# CONFIG_RT3090 is not set
+# CONFIG_HYPERV is not set
 
 #
 # Android
@@ -3975,7 +3922,6 @@ CONFIG_FUNCTION_TRACER=y
 # CONFIG_FUNCTION_GRAPH_TRACER is not set
 # CONFIG_BOOT_TRACER is not set
 CONFIG_STACK_TRACER=y
-# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
 CONFIG_EARLY_PRINTK_DBGP=y
 
 CONFIG_SECURITYFS=y
@@ -3999,6 +3945,7 @@ CONFIG_LSM_MMAP_MIN_ADDR=65536
 # CONFIG_PAGE_POISONING is not set
 
 CONFIG_SLOW_WORK=y
+CONFIG_SLOW_WORK_DEBUG=y
 
 # CONFIG_CRASH_DUMP is not set
 # CONFIG_CRASH is not set
@@ -4023,8 +3970,6 @@ CONFIG_PPS=m
 
 # CONFIG_USB_SERIAL_QUATECH2 is not set
 # CONFIG_VT6655 is not set
-# CONFIG_USB_CPC is not set
-# CONFIG_RDC_17F3101X is not set
 # CONFIG_FB_UDL is not set
 
 # DEBUG options that don't get enabled/disabled with 'make debug/release'
@@ -4054,6 +3999,9 @@ CONFIG_DETECT_SOFTLOCKUP=y
 CONFIG_DETECT_HUNG_TASK=y
 # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
 
+CONFIG_MEMORY_FAILURE=y
+CONFIG_HWPOISON_INJECT=m
+
 # added for xen pvops patch
 #
 CONFIG_XEN_DOM0=y


Index: config-ia64-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-ia64-generic,v
retrieving revision 1.21.6.4
retrieving revision 1.21.6.5
diff -u -p -r1.21.6.4 -r1.21.6.5
--- config-ia64-generic	27 Jun 2009 11:05:10 -0000	1.21.6.4
+++ config-ia64-generic	31 Jan 2010 17:57:32 -0000	1.21.6.5
@@ -8,9 +8,6 @@
 CONFIG_IA64=y
 CONFIG_64BIT=y
 # CONFIG_XEN is not set
-# CONFIG_ARCH_XEN is not set
-# CONFIG_XEN_PRIVILEGED_GUEST is not set
-# CONFIG_XEN_VT is not set
 CONFIG_MMU=y
 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 CONFIG_EFI=y
@@ -56,7 +53,6 @@ CONFIG_EFI_PCDP=y
 #
 # IDE chipset support/bugfixes
 #
-CONFIG_IDE_MAX_HWIFS=4
 CONFIG_BLK_DEV_SGIIOC4=y
 
 #
@@ -104,7 +100,6 @@ CONFIG_AGP_SGI_TIOCA=y
 # SGI
 #
 CONFIG_SGI_SNSC=y
-CONFIG_IA64_SGI_SN_XP=y
 CONFIG_SGI_TIOCX=y
 CONFIG_SGI_MBCS=m
 CONFIG_SGI_IOC3=m
@@ -128,12 +123,10 @@ CONFIG_ACPI_AC=y
 # CONFIG_ACPI_ASUS is not set
 CONFIG_ACPI_PROCFS_POWER=y
 CONFIG_ACPI_SYSFS_POWER=y
-# CONFIG_ACPI_BAY is not set
 # CONFIG_ACPI_BATTERY is not set
 CONFIG_ACPI_BLACKLIST_YEAR=0
 CONFIG_ACPI_BUTTON=y
 # CONFIG_ACPI_DOCK is not set
-CONFIG_ACPI_EC=y
 CONFIG_ACPI_FAN=y
 CONFIG_ACPI_HOTPLUG_MEMORY=y
 CONFIG_ACPI_NUMA=y
@@ -141,7 +134,6 @@ CONFIG_ACPI_POWER=y
 CONFIG_ACPI_PROCESSOR=y
 CONFIG_ACPI_PROCFS=y
 CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_SYSTEM=y
 CONFIG_ACPI_THERMAL=y
 # CONFIG_ACPI_TOSHIBA is not set
 CONFIG_ACPI_VIDEO=m
@@ -177,7 +169,6 @@ CONFIG_IA64_ACPI_CPUFREQ=m
 
 CONFIG_NODES_SHIFT=10
 
-# CONFIG_BCM43XX is not set
 
 CONFIG_HW_RANDOM_INTEL=m
 
@@ -210,3 +201,6 @@ CONFIG_PARAVIRT=y
 CONFIG_DMAR_DEFAULT_ON=y
 
 CONFIG_RCU_FANOUT=64
+
+CONFIG_ACPI_POWER_METER=m
+CONFIG_I2C_SCMI=m


Index: config-nodebug
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-nodebug,v
retrieving revision 1.31.6.6
retrieving revision 1.31.6.7
diff -u -p -r1.31.6.6 -r1.31.6.7
--- config-nodebug	8 Nov 2009 22:36:35 -0000	1.31.6.6
+++ config-nodebug	31 Jan 2010 17:57:32 -0000	1.31.6.7
@@ -24,6 +24,7 @@ CONFIG_SND_PCM_XRUN_DEBUG=y
 # CONFIG_DEBUG_STACK_USAGE is not set
 
 # CONFIG_ACPI_DEBUG is not set
+# CONFIG_ACPI_DEBUG_FUNC_TRACE is not set
 
 # CONFIG_DEBUG_SG is not set
 
@@ -50,4 +51,14 @@ CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
 
 # CONFIG_MMIOTRACE is not set
 
-CONFIG_JBD2_DEBUG=y
+# CONFIG_DEBUG_CREDENTIALS is not set
+
+# off in both production debug and nodebug builds,
+#  on in rawhide nodebug builds
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+
+# CONFIG_EXT4_DEBUG is not set
+
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+
+# CONFIG_JBD2_DEBUG is not set


Index: config-powerpc-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-powerpc-generic,v
retrieving revision 1.33.6.10
retrieving revision 1.33.6.11
diff -u -p -r1.33.6.10 -r1.33.6.11
--- config-powerpc-generic	10 Oct 2009 15:04:07 -0000	1.33.6.10
+++ config-powerpc-generic	31 Jan 2010 17:57:32 -0000	1.33.6.11
@@ -35,11 +35,9 @@ CONFIG_HIBERNATION=y
 # CONFIG_RTC is not set
 # CONFIG_GEN_RTC is not set
 # CONFIG_GEN_RTC_X is not set
-CONFIG_RTC_DRV_PPC=y
 CONFIG_RTC_DRV_GENERIC=y
 CONFIG_PROC_DEVICETREE=y
 # CONFIG_CMDLINE_BOOL is not set
-CONFIG_ELECTRA_IDE=y
 
 CONFIG_ADB=y
 CONFIG_ADB_PMU=y
@@ -105,7 +103,6 @@ CONFIG_MEMORY_HOTPLUG=y
 # CONFIG_SCSI_DC390T is not set
 # CONFIG_SCSI_BUSLOGIC is not set
 
-CONFIG_USB_HIDINPUT_POWERBOOK=y
 
 # CONFIG_PPC_EARLY_DEBUG is not set
 
@@ -143,13 +140,9 @@ CONFIG_BLK_DEV_IDE=y
 # Please see Documentation/ide.txt for help/info on IDE drives
 #
 # CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-CONFIG_IDEDISK_MULTI_MODE=y
 # CONFIG_BLK_DEV_IDECS is not set
 CONFIG_BLK_DEV_IDECD=m
 # CONFIG_BLK_DEV_IDETAPE is not set
-CONFIG_BLK_DEV_IDEFLOPPY=m
-# CONFIG_BLK_DEV_IDESCSI is not set
 CONFIG_IDE_TASK_IOCTL=y
 #
 # IDE chipset support/bugfixes
@@ -157,7 +150,6 @@ CONFIG_IDE_TASK_IOCTL=y
 # CONFIG_IDE_GENERIC is not set
 # CONFIG_BLK_DEV_IDEPNP is not set
 # CONFIG_BLK_DEV_IDEPCI is not set
-CONFIG_IDEPCI_SHARE_IRQ=y
 # CONFIG_BLK_DEV_AEC62XX is not set
 # CONFIG_BLK_DEV_ALI15X3 is not set
 # CONFIG_BLK_DEV_AMD74XX is not set
@@ -166,7 +158,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y
 # CONFIG_BLK_DEV_CY82C693 is not set
 # CONFIG_BLK_DEV_CS5520 is not set
 # CONFIG_BLK_DEV_CS5530 is not set
-# CONFIG_BLK_DEV_HPT34X is not set
 # CONFIG_BLK_DEV_HPT366 is not set
 # CONFIG_BLK_DEV_JMICRON is not set
 # CONFIG_BLK_DEV_SC1200 is not set
@@ -183,8 +174,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y
 # CONFIG_BLK_DEV_VIA82CXXX is not set
 CONFIG_BLK_DEV_IDE_PMAC=y
 CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y
-CONFIG_BLK_DEV_IDEDMA_PMAC=y
-# CONFIG_IDE_ARM is not set
 CONFIG_BLK_DEV_IDEDMA=y
 # CONFIG_BLK_DEV_HD is not set
 # CONFIG_USB_STORAGE_ISD200 is not set
@@ -246,14 +235,10 @@ CONFIG_EXTRA_TARGETS=""
 # CONFIG_I2C_CPM is not set
 # CONFIG_I2C_GPIO is not set
 # CONFIG_W1_MASTER_GPIO is not set
-# CONFIG_MT9M001_PCA9536_SWITCH is not set
-# CONFIG_MT9V022_PCA9536_SWITCH is not set
 # CONFIG_LEDS_GPIO is not set
-# CONFIG_KGDB_CONSOLE is not set
 # CONFIG_GPIO_SYSFS is not set
 # CONFIG_GPIO_MAX732X is not set
 
-CONFIG_MDIO_OF_GPIO=m
 
 CONFIG_SERIO_XILINX_XPS_PS2=m
 
@@ -331,3 +316,11 @@ CONFIG_SWIOTLB=y
 # CONFIG_RDS is not set
 
 CONFIG_PPC_DISABLE_WERROR=y
+
+CONFIG_XILINX_EMACLITE=m
+
+CONFIG_GPIO_WM831X=m
+# CONFIG_GPIO_LANGWELL is not set
+# CONFIG_GPIO_UCB1400 is not set
+CONFIG_EDAC_MPC85XX=m
+


Index: config-powerpc32-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-powerpc32-generic,v
retrieving revision 1.30.6.3
retrieving revision 1.30.6.4
diff -u -p -r1.30.6.3 -r1.30.6.4
--- config-powerpc32-generic	5 Aug 2009 23:00:09 -0000	1.30.6.3
+++ config-powerpc32-generic	31 Jan 2010 17:57:32 -0000	1.30.6.4
@@ -4,9 +4,7 @@ CONFIG_PPC32=y
 # CONFIG_RTAS_PROC is not set
 # CONFIG_PCMCIA_M8XX is not set
 # CONFIG_HOTPLUG_PCI is not set
-CONFIG_CLASSIC32=y
 CONFIG_CPU_FREQ_PMAC=y
-CONFIG_PPC_MULTIPLATFORM=y
 CONFIG_PPC_CHRP=y
 CONFIG_PPC_PMAC=y
 CONFIG_PPC_MPC52xx=y
@@ -19,7 +17,6 @@ CONFIG_SATA_FSL=m
 # busted in .28git1
 # ERROR: "cacheable_memzero" [drivers/net/gianfar_driver.ko] undefined!
 # CONFIG_GIANFAR is not set
-CONFIG_GFAR_NAPI=y
 CONFIG_USB_EHCI_FSL=y
 
 CONFIG_PMAC_APM_EMU=y
@@ -54,7 +51,6 @@ CONFIG_THERM_WINDTUNNEL=m
 CONFIG_THERM_ADT746X=m
 # CONFIG_ANSLCD is not set
 
-CONFIG_SENSORS_M41T00=m
 CONFIG_FB_PLATINUM=y
 CONFIG_FB_VALKYRIE=y
 CONFIG_FB_CT65550=y
@@ -69,7 +65,6 @@ CONFIG_FB_MATROX=y
 # CONFIG_KEXEC is not set
 
 # CONFIG_HVC_RTAS is not set
-# CONFIG_MAMBO is not set
 
 # CONFIG_UDBG_RTAS_CONSOLE is not set
 CONFIG_BRIQ_PANEL=m
@@ -87,7 +82,6 @@ CONFIG_SERIAL_MPC52xx=y
 CONFIG_SERIAL_MPC52xx_CONSOLE=y
 CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
 # CONFIG_MPC5200_WDT is not set
-CONFIG_83xx_WDT=m
 CONFIG_8xxx_WDT=m
 CONFIG_GEF_WDT=m
 
@@ -121,7 +115,6 @@ CONFIG_PPC_BESTCOMM_GEN_BD=m
 
 CONFIG_FORCE_MAX_ZONEORDER=11
 # CONFIG_PAGE_OFFSET_BOOL is not set
-CONFIG_BLK_DEV_HD_ONLY=y
 # CONFIG_FB_FSL_DIU is not set
 CONFIG_IRQSTACKS=y
 CONFIG_VIRTUALIZATION=y
@@ -178,7 +171,6 @@ CONFIG_MPC8610_HPCD=y
 # drivers/mtd/maps/sbc8240.c: In function 'init_sbc8240_mtd':
 # drivers/mtd/maps/sbc8240.c:172: warning: passing argument 1 of 'simple_map_init' from incompatible pointer type
 # drivers/mtd/maps/sbc8240.c:177: error: 'struct mtd_info' has no member named 'module'
-# CONFIG_MTD_SBC8240 is not set
 
 CONFIG_MTD_NAND_FSL_UPM=m
 
@@ -187,5 +179,6 @@ CONFIG_USB_GPIO_VBUS=m
 CONFIG_RCU_FANOUT=32
 
 CONFIG_PERF_COUNTERS=y
+CONFIG_PERF_EVENTS=y
 CONFIG_EVENT_PROFILE=y
 


Index: config-powerpc64
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-powerpc64,v
retrieving revision 1.27.6.5
retrieving revision 1.27.6.6
diff -u -p -r1.27.6.5 -r1.27.6.6
--- config-powerpc64	19 Sep 2009 16:47:26 -0000	1.27.6.5
+++ config-powerpc64	31 Jan 2010 17:57:32 -0000	1.27.6.6
@@ -3,9 +3,6 @@ CONFIG_WINDFARM_PM91=y
 CONFIG_WINDFARM_PM121=y
 CONFIG_PPC_PMAC64=y
 CONFIG_PPC_MAPLE=y
-CONFIG_PPC_SYSTEMSIM=y
-CONFIG_BLK_DEV_SYSTEMSIM=m
-CONFIG_SYSTEMSIM_NET=m
 CONFIG_PPC_CELL=y
 CONFIG_PPC_IBM_CELL_BLADE=y
 CONFIG_PPC_ISERIES=y
@@ -18,16 +15,12 @@ CONFIG_PPC_CELLEB=y
 CONFIG_PPC_CELL_QPACE=y
 CONFIG_PS3_HTAB_SIZE=20
 # CONFIG_PS3_DYNAMIC_DMA is not set
-# CONFIG_PS3_USE_LPAR_ADDR is not set
 CONFIG_PS3_ADVANCED=y
 CONFIG_PS3_HTAB_SIZE=20
 # CONFIG_PS3_DYNAMIC_DMA is not set
-CONFIG_PS3_USE_LPAR_ADDR=y
 CONFIG_PS3_VUART=y
 CONFIG_PS3_PS3AV=y
 CONFIG_PS3_STORAGE=m
-CONFIG_PS3_STORAGE_EXPECTED_NUM_DRIVES=3
-CONFIG_PS3_STORAGE_MAX_SPINUP_WAIT_TIME=10
 CONFIG_PS3_DISK=m
 CONFIG_PS3_ROM=m
 CONFIG_PS3_FLASH=m
@@ -69,15 +62,11 @@ CONFIG_SCSI_IPR_DUMP=y
 CONFIG_SPIDER_NET=m
 CONFIG_HVC_RTAS=y
 CONFIG_HVC_ISERIES=y
-CONFIG_MAMBO=y
-CONFIG_MAMBO_DISK=m
-CONFIG_MAMBO_NET=m
 CONFIG_CBE_RAS=y
 
 # iSeries device drivers
 #
 CONFIG_ISERIES_VETH=m
-# CONFIG_VIOCONS is not set
 CONFIG_VIODASD=m
 CONFIG_VIOCD=m
 CONFIG_VIOTAPE=m
@@ -154,7 +143,6 @@ CONFIG_ELECTRA_CF=m
 
 CONFIG_SPARSEMEM_VMEMMAP=y
 
-CONFIG_SPU_TRACE=m
 CONFIG_MTD_NAND_PASEMI=m
 CONFIG_EDAC_CELL=m
 CONFIG_EDAC_CPC925=m
@@ -162,7 +150,6 @@ CONFIG_FRAME_WARN=2048
 
 CONFIG_PHYP_DUMP=y
 CONFIG_FORCE_MAX_ZONEORDER=13
-CONFIG_BLK_DEV_HD_ONLY=y
 CONFIG_VIRTUALIZATION=y
 
 CONFIG_VSX=y
@@ -185,6 +172,5 @@ CONFIG_RELOCATABLE=y
 CONFIG_RCU_FANOUT=64
 
 CONFIG_PERF_COUNTERS=y
+CONFIG_PERF_EVENTS=y
 CONFIG_EVENT_PROFILE=y
-
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set


Index: config-rhel-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-rhel-generic,v
retrieving revision 1.17
retrieving revision 1.17.6.1
diff -u -p -r1.17 -r1.17.6.1
--- config-rhel-generic	9 Dec 2008 22:43:52 -0000	1.17
+++ config-rhel-generic	31 Jan 2010 17:57:32 -0000	1.17.6.1
@@ -57,7 +57,6 @@
 # CONFIG_SND_AD1816A is not set
 # CONFIG_SND_AD1848 is not set
 # CONFIG_SND_CS4231 is not set
-# CONFIG_SND_CS4232 is not set
 # CONFIG_SND_CS4236 is not set
 # CONFIG_SND_ES968 is not set
 # CONFIG_SND_ES1688 is not set
@@ -103,7 +102,6 @@
 
 # CONFIG_ROCKETPORT is not set
 # CONFIG_R3964 is not set
-# CONFIG_TIPAR is not set
 
 # CONFIG_JOYSTICK_ANALOG is not set
 # CONFIG_JOYSTICK_A3D is not set
@@ -117,8 +115,6 @@
 # CONFIG_JOYSTICK_SIDEWINDER is not set
 # CONFIG_JOYSTICK_TMDC is not set
 # CONFIG_JOYSTICK_IFORCE is not set
-# CONFIG_JOYSTICK_IFORCE_USB=y
-# CONFIG_JOYSTICK_IFORCE_232=y
 # CONFIG_JOYSTICK_WARRIOR is not set
 # CONFIG_JOYSTICK_MAGELLAN is not set
 # CONFIG_JOYSTICK_SPACEORB is not set
@@ -136,8 +132,6 @@
 # CONFIG_RADIO_GEMTEK_PCI is not set
 # CONFIG_RADIO_MAXIRADIO is not set
 # CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_MIROPCM20 is not set
-# CONFIG_RADIO_MIROPCM20_RDS is not set
 # CONFIG_RADIO_SF16FMI is not set
 # CONFIG_RADIO_SF16FMR2 is not set
 # CONFIG_RADIO_TERRATEC is not set
@@ -145,7 +139,6 @@
 # CONFIG_RADIO_TYPHOON is not set
 # CONFIG_RADIO_ZOLTRIX is not set
 
-# CONFIG_TUNER_3036 is not set
 
 # CONFIG_VIDEO_PMS is not set
 # CONFIG_VIDEO_BWQCAM is not set
@@ -165,7 +158,6 @@
 # CONFIG_VIDEO_MEYE is not set
 # CONFIG_VIDEO_SAA7134 is not set
 # CONFIG_VIDEO_MXB is not set
-# CONFIG_VIDEO_DPC is not set
 # CONFIG_VIDEO_HEXIUM_ORION is not set
 # CONFIG_VIDEO_HEXIUM_GEMINI is not set
 # CONFIG_VIDEO_CX88 is not set
@@ -190,7 +182,6 @@
 # CONFIG_FB_ASILIANT is not set
 # CONFIG_FB_HGA_ACCEL is not set
 # CONFIG_FB_3DFX_ACCEL is not set
-# CONFIG_FB_TRIDENT_ACCEL is not set
 
 # CONFIG_JFS_FS is not set
 # CONFIG_NCP_FS is not set


Index: config-s390x
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-s390x,v
retrieving revision 1.11.6.5
retrieving revision 1.11.6.6
diff -u -p -r1.11.6.5 -r1.11.6.6
--- config-s390x	10 Sep 2009 14:00:23 -0000	1.11.6.5
+++ config-s390x	31 Jan 2010 17:57:32 -0000	1.11.6.6
@@ -17,16 +17,13 @@ CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 
 CONFIG_LOG_BUF_SHIFT=16
 CONFIG_NO_IDLE_HZ=y
-CONFIG_NO_IDLE_HZ_INIT=y
 
 CONFIG_SMP=y
 
 #
 # I/O subsystem configuration
 #
-CONFIG_MACHCHK_WARNING=y
 CONFIG_QDIO=m
-# CONFIG_QDIO_DEBUG is not set
 
 #
 # Misc
@@ -39,7 +36,6 @@ CONFIG_PFAULT=y
 CONFIG_SHARED_KERNEL=y
 CONFIG_CMM=m
 CONFIG_CMM_PROC=y
-CONFIG_VIRT_TIMER=y
 CONFIG_NETIUCV=m
 CONFIG_SMSGIUCV=m
 
@@ -75,6 +71,7 @@ CONFIG_SCLP_CONSOLE=y
 CONFIG_SCLP_VT220_TTY=y
 CONFIG_SCLP_VT220_CONSOLE=y
 CONFIG_SCLP_CPI=m
+CONFIG_SCLP_ASYNC=m
 CONFIG_S390_TAPE=m
 CONFIG_S390_TAPE_3590=m
 
@@ -103,7 +100,6 @@ CONFIG_S390_TAPE_34XX=m
 # Token Ring devices
 #
 CONFIG_TR=y
-# CONFIG_SHAPER is not set
 CONFIG_NETCONSOLE=m
 
 #
@@ -119,7 +115,6 @@ CONFIG_CTC=m
 CONFIG_IUCV=m
 CONFIG_QETH=m
 CONFIG_QETH_IPV6=y
-CONFIG_QETH_VLAN=y
 CONFIG_CCWGROUP=m
 
 # CONFIG_IRDA is not set
@@ -127,7 +122,6 @@ CONFIG_CCWGROUP=m
 # CONFIG_WIRELESS_EXT is not set
 # CONFIG_WLAN_80211 is not set
 # CONFIG_MAC80211 is not set
-# CONFIG_IEEE80211 is not set
 # CONFIG_B44 is not set
 
 #
@@ -178,7 +172,6 @@ CONFIG_VMCP=m
 # CONFIG_ATA_OVER_ETH is not set
 # CONFIG_MII is not set
 
-# CONFIG_BOOT_DELAY is not set
 
 CONFIG_STACK_GUARD=256
 CONFIG_CMM_IUCV=y
@@ -202,7 +195,6 @@ CONFIG_S390_VMUR=m
 
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
-CONFIG_PAGE_STATES=y
 CONFIG_CTCM=m
 CONFIG_QETH_L2=m
 CONFIG_QETH_L3=m
@@ -230,5 +222,6 @@ CONFIG_HIBERNATION=y
 CONFIG_PM_STD_PARTITION="/dev/jokes"
 
 CONFIG_PERF_COUNTERS=y
+CONFIG_PERF_EVENTS=y
 CONFIG_EVENT_PROFILE=y
 


Index: config-sparc64-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-sparc64-generic,v
retrieving revision 1.21.6.7
retrieving revision 1.21.6.8
diff -u -p -r1.21.6.7 -r1.21.6.8
--- config-sparc64-generic	18 Aug 2009 19:26:45 -0000	1.21.6.7
+++ config-sparc64-generic	31 Jan 2010 17:57:32 -0000	1.21.6.8
@@ -35,13 +35,9 @@ CONFIG_NR_CPUS=256
 CONFIG_US3_FREQ=m
 CONFIG_US2E_FREQ=m
 CONFIG_SUN_OPENPROMFS=m
-CONFIG_SPARC32_COMPAT=y
 CONFIG_COMPAT=y
 CONFIG_UID16=y
 CONFIG_BINFMT_ELF32=y
-CONFIG_BINFMT_AOUT32=y
-CONFIG_SUNOS_EMUL=y
-CONFIG_SOLARIS_EMUL=m
 CONFIG_ENVCTRL=m
 CONFIG_DISPLAY7SEG=m
 CONFIG_WATCHDOG_CP1XXX=m
@@ -50,12 +46,9 @@ CONFIG_WATCHDOG_RIO=m
 # CONFIG_PREVENT_FIRMWARE_BUILD is not set
 # CONFIG_PARPORT is not set
 # CONFIG_BLK_DEV_FD is not set
-# CONFIG_LIRC_PVR150 is not set
 # CONFIG_LIRC_PARALLEL is not set
 # CONFIG_I2C_NFORCE2 is not set
 # CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_PROSAVAGE is not set
-# CONFIG_I2C_SAVAGE4 is not set
 # CONFIG_I2C_SIMTEC is not set
 # CONFIG_I2C_VOODOO3 is not set
 CONFIG_I2C_ALI1535=m
@@ -92,7 +85,6 @@ CONFIG_FB_XVR2500=y
 # CONFIG_AGP is not set
 # CONFIG_DRM_NOUVEAU is not set
 # CONFIG_MDA_CONSOLE is not set
-# CONFIG_PROM_CONSOLE is not set
 CONFIG_FONTS=y
 # CONFIG_FONT_8x8 is not set
 # CONFIG_FONT_8x16 is not set
@@ -114,15 +106,12 @@ CONFIG_SERIAL_SUNSAB=y
 CONFIG_SERIAL_SUNSAB_CONSOLE=y
 CONFIG_SERIAL_SUNHV=y
 CONFIG_SUN_OPENPROMIO=y
-CONFIG_SUN_MOSTEK_RTC=y
 CONFIG_OBP_FLASH=m
-# CONFIG_SUN_VIDEOPIX is not set
 # CONFIG_SERIO_SERPORT is not set
 CONFIG_BLK_DEV_FD=y
 CONFIG_SUNVDC=m
 CONFIG_SUNVNET=m
 # CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_HPT34X is not set
 # CONFIG_BLK_DEV_HPT366 is not set
 # CONFIG_BLK_DEV_PDC202XX_OLD is not set
 # CONFIG_BLK_DEV_PDC202XX_NEW is not set
@@ -144,9 +133,6 @@ CONFIG_SUNQE=m
 # CONFIG_DM9102 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_R8169 is not set
-CONFIG_ATM_FORE200E_SBA=y
-CONFIG_ATM_FORE200E_SBA_DEFAULT_FW=y
-# CONFIG_ATM_FORE200E_SBA_FW is not set
 CONFIG_ATM_FORE200E_USE_TASKLET=y
 CONFIG_ATM_FORE200E_DEBUG=0
 CONFIG_ATM_FORE200E_TX_RETRY=16
@@ -161,7 +147,6 @@ CONFIG_SND_SUN_CS4231=m
 # CONFIG_SND_SUN_DBRI is not set
 CONFIG_PARPORT_SUNBPP=m
 CONFIG_LOGO_SUN_CLUT224=y
-CONFIG_SUN_BPP=m
 CONFIG_MTD_SUN_UFLASH=m
 CONFIG_MYRI_SBUS=m
 # CONFIG_SGI_IOC4 is not set
@@ -206,3 +191,6 @@ CONFIG_USB_GSPCA_SN9C20X=m
 CONFIG_USB_GSPCA_SN9C20X_EVDEV=y
 CONFIG_LSM_MMAP_MIN_ADDR=65536
 
+CONFIG_PERF_COUNTERS=y
+CONFIG_PERF_EVENTS=y
+CONFIG_EVENT_PROFILE=y


Index: config-x86-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-x86-generic,v
retrieving revision 1.68.6.21
retrieving revision 1.68.6.22
diff -u -p -r1.68.6.21 -r1.68.6.22
--- config-x86-generic	8 Nov 2009 22:36:35 -0000	1.68.6.21
+++ config-x86-generic	31 Jan 2010 17:57:33 -0000	1.68.6.22
@@ -8,13 +8,10 @@ CONFIG_UID16=y
 #
 # Enable summit and co via the generic arch
 #
-# CONFIG_X86_PC is not set
-CONFIG_X86_GENERICARCH=y
 CONFIG_X86_EXTENDED_PLATFORM=y
 CONFIG_X86_32_NON_STANDARD=y
 
 # CONFIG_X86_ELAN is not set
-# CONFIG_X86_VOYAGER is not set
 # CONFIG_X86_NUMAQ is not set
 # CONFIG_X86_SUMMIT is not set
 CONFIG_X86_BIGSMP=y
@@ -36,7 +33,6 @@ CONFIG_M686=y
 # CONFIG_MK8 is not set
 # CONFIG_MCRUSOE is not set
 # CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP2 is not set
 # CONFIG_MWINCHIP3D is not set
 # CONFIG_MCYRIXIII is not set
 # CONFIG_MVIAC3_2 is not set
@@ -51,19 +47,15 @@ CONFIG_X86_WP_WORKS_OK=y
 CONFIG_X86_INVLPG=y
 CONFIG_X86_BSWAP=y
 CONFIG_X86_POPAD_OK=y
-CONFIG_X86_GOOD_APIC=y
 CONFIG_X86_INTEL_USERCOPY=y
 CONFIG_X86_USE_PPRO_CHECKSUM=y
 CONFIG_HPET=y
 CONFIG_HPET_TIMER=y
-# CONFIG_HPET_RTC_IRQ is not set
 # CONFIG_HPET_MMAP is not set
 CONFIG_X86_LOCAL_APIC=y
 CONFIG_X86_IO_APIC=y
 CONFIG_X86_TSC=y
 CONFIG_X86_MCE=y
-# CONFIG_X86_MCE_NONFATAL is not set
-CONFIG_X86_MCE_P4THERMAL=y
 CONFIG_TOSHIBA=m
 CONFIG_I8K=m
 CONFIG_SONYPI=m
@@ -71,7 +63,7 @@ CONFIG_SONYPI_COMPAT=y
 CONFIG_MICROCODE=m
 CONFIG_X86_MSR=y
 CONFIG_X86_CPUID=y
-CONFIG_X86_CPU_DEBUG=m
+# CONFIG_X86_CPU_DEBUG is not set
 CONFIG_EDD=m
 # CONFIG_EDD_OFF is not set
 # CONFIG_NUMA is not set
@@ -80,8 +72,8 @@ CONFIG_EDD=m
 CONFIG_HIGHMEM4G=y
 # CONFIG_HIGHMEM64G is not set
 CONFIG_HIGHMEM=y
-
 CONFIG_HIGHPTE=n
+
 # CONFIG_MATH_EMULATION is not set
 CONFIG_MTRR=y
 CONFIG_X86_PAT=y
@@ -140,12 +132,10 @@ CONFIG_APM=y
 CONFIG_APM_CPU_IDLE=y
 # CONFIG_APM_DISPLAY_BLANK is not set
 # CONFIG_APM_ALLOW_INTS is not set
-# CONFIG_APM_REAL_MODE_POWER_OFF is not set
 
 #
 # Kernel debugging
 #
-CONFIG_X86_FIND_SMP_CONFIG=y
 CONFIG_X86_MPPARSE=y
 
 CONFIG_ACPI=y
@@ -154,12 +144,10 @@ CONFIG_ACPI_AC=y
 CONFIG_ACPI_PROCFS_POWER=y
 CONFIG_ACPI_SYSFS_POWER=y
 CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BAY=y
 CONFIG_ACPI_BLACKLIST_YEAR=1999
 CONFIG_ACPI_BUTTON=y
 CONFIG_ACPI_CONTAINER=m
 CONFIG_ACPI_DOCK=y
-CONFIG_ACPI_EC=y
 CONFIG_ACPI_FAN=y
 CONFIG_ACPI_NUMA=y
 CONFIG_ACPI_PROCESSOR=y
@@ -167,14 +155,15 @@ CONFIG_ACPI_POWER=y
 CONFIG_ACPI_PROCFS=y
 CONFIG_ACPI_SBS=m
 CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_SYSTEM=y
 CONFIG_ACPI_THERMAL=y
+CONFIG_TOPSTAR_LAPTOP=m
 CONFIG_ACPI_TOSHIBA=m
 CONFIG_ACPI_VIDEO=m
 # Disable in F9.
 CONFIG_ACPI_PROC_EVENT=y
 CONFIG_PNPACPI=y
-
+CONFIG_ACPI_POWER_METER=m
+CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
 
 #
 # CPUFreq processor drivers
@@ -193,11 +182,9 @@ CONFIG_CPU_FREQ_STAT=m
 CONFIG_CPU_FREQ_STAT_DETAILS=y
 
 CONFIG_X86_ACPI_CPUFREQ=m
-# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
 # CONFIG_X86_POWERNOW_K6 is not set
 CONFIG_X86_POWERNOW_K7=y
 CONFIG_X86_POWERNOW_K8=m
-CONFIG_X86_POWERNOW_K8_ACPI=y
 # CONFIG_X86_GX_SUSPMOD is not set
 # CONFIG_X86_SPEEDSTEP_CENTRINO is not set
 CONFIG_X86_SPEEDSTEP_ICH=y
@@ -211,9 +198,7 @@ CONFIG_X86_LONGRUN=y
 # e_powersaver is dangerous
 # CONFIG_X86_E_POWERSAVER is not set
 
-CONFIG_X86_SMP=y
 CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
 CONFIG_X86_TRAMPOLINE=y
 
 #
@@ -268,13 +253,10 @@ CONFIG_I2C_AMD756=m
 CONFIG_I2C_AMD756_S4882=m
 CONFIG_I2C_AMD8111=m
 CONFIG_I2C_I801=m
-CONFIG_I2C_I810=m
 CONFIG_I2C_ISCH=m
 CONFIG_I2C_NFORCE2=m
 CONFIG_I2C_NFORCE2_S4985=m
 CONFIG_I2C_PIIX4=m
-CONFIG_I2C_PROSAVAGE=m
-CONFIG_I2C_SAVAGE4=m
 CONFIG_I2C_SIS5595=m
 CONFIG_I2C_SIS630=m
 CONFIG_I2C_SIS96X=m
@@ -323,7 +305,6 @@ CONFIG_HW_RANDOM_AMD=m
 CONFIG_HW_RANDOM_GEODE=m
 CONFIG_HW_RANDOM_VIA=m
 
-CONFIG_USB_HIDINPUT_POWERBOOK=y
 
 # CONFIG_COMPAT_VDSO is not set
 
@@ -364,7 +345,6 @@ CONFIG_VIRTUALIZATION=y
 CONFIG_KVM=m
 CONFIG_KVM_INTEL=m
 CONFIG_KVM_AMD=m
-CONFIG_KVM_TRACE=y
 CONFIG_LGUEST=m
 
 CONFIG_PARAVIRT_GUEST=y
@@ -405,7 +385,6 @@ CONFIG_THINKPAD_ACPI=m
 # CONFIG_THINKPAD_ACPI_DEBUG is not set
 # CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
 CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
-CONFIG_THINKPAD_ACPI_BAY=y
 CONFIG_THINKPAD_ACPI_VIDEO=y
 # CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
 
@@ -473,12 +452,25 @@ CONFIG_RCU_FANOUT=32
 # CONFIG_IOMMU_STRESS is not set
 
 CONFIG_PERF_COUNTERS=y
+CONFIG_PERF_EVENTS=y
 CONFIG_EVENT_PROFILE=y
 
-# CONFIG_X86_OLD_MCE is not set
 CONFIG_X86_MCE_INTEL=y
 CONFIG_X86_MCE_AMD=y
 # CONFIG_X86_ANCIENT_MCE is not set
 # CONFIG_X86_MCE_INJECT is not set
 
+CONFIG_X86_MRST=y
+CONFIG_SFI=y
+
+CONFIG_INPUT_WINBOND_CIR=m
+CONFIG_I2C_SCMI=m
+CONFIG_SBC_FITPC2_WATCHDOG=m
+CONFIG_EDAC_I3200=m
+CONFIG_EDAC_DECODE_MCE=m
+
+CONFIG_GPIO_LANGWELL=y
+
+# CONFIG_INTEL_TXT is not set
+
 CONFIG_ACERHDF=m


Index: config-x86_64-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-x86_64-generic,v
retrieving revision 1.68.2.18
retrieving revision 1.68.2.19
diff -u -p -r1.68.2.18 -r1.68.2.19
--- config-x86_64-generic	8 Nov 2009 22:36:35 -0000	1.68.2.18
+++ config-x86_64-generic	31 Jan 2010 17:57:33 -0000	1.68.2.19
@@ -10,7 +10,7 @@ CONFIG_X86_EXTENDED_PLATFORM=y
 # CONFIG_X86_UV is not set
 CONFIG_X86_MSR=y
 CONFIG_X86_CPUID=y
-CONFIG_X86_CPU_DEBUG=m
+# CONFIG_X86_CPU_DEBUG is not set
 CONFIG_MTRR=y
 CONFIG_NUMA=y
 CONFIG_K8_NUMA=y
@@ -18,8 +18,7 @@ CONFIG_X86_64_ACPI_NUMA=y
 # CONFIG_NUMA_EMU is not set
 CONFIG_NR_CPUS=256
 CONFIG_X86_POWERNOW_K8=m
-CONFIG_X86_POWERNOW_K8_ACPI=y
-CONFIG_X86_P4_CLOCKMOD=m 
+CONFIG_X86_P4_CLOCKMOD=m
 CONFIG_IA32_EMULATION=y
 # CONFIG_IA32_AOUT is not set
 # CONFIG_IOMMU_DEBUG is not set
@@ -77,7 +76,6 @@ CONFIG_CPU_FREQ_TABLE=y
 CONFIG_CPU_FREQ_DEBUG=y
 # CONFIG_X86_SPEEDSTEP_CENTRINO is not set
 CONFIG_X86_ACPI_CPUFREQ=m
-# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
 CONFIG_CPU_FREQ_STAT=m
 CONFIG_CPU_FREQ_STAT_DETAILS=y
 
@@ -87,12 +85,10 @@ CONFIG_ACPI_AC=y
 CONFIG_ACPI_PROCFS_POWER=y
 CONFIG_ACPI_SYSFS_POWER=y
 CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BAY=m
 CONFIG_ACPI_BLACKLIST_YEAR=0
 CONFIG_ACPI_BUTTON=y
 CONFIG_ACPI_CONTAINER=m
 CONFIG_ACPI_DOCK=y
-CONFIG_ACPI_EC=y
 CONFIG_ACPI_FAN=y
 CONFIG_ACPI_HOTPLUG_MEMORY=m
 CONFIG_ACPI_NUMA=y
@@ -103,10 +99,11 @@ CONFIG_ACPI_SLEEP=y
 CONFIG_ACPI_THERMAL=y
 CONFIG_ACPI_TOSHIBA=m
 CONFIG_ACPI_POWER=y
-CONFIG_ACPI_SYSTEM=y
 CONFIG_ACPI_VIDEO=m
 # Disable in F9.
 CONFIG_ACPI_PROC_EVENT=y
+CONFIG_ACPI_POWER_METER=m
+CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
 
 CONFIG_X86_PLATFORM_DEVICES=y
 CONFIG_ASUS_LAPTOP=m
@@ -127,7 +124,6 @@ CONFIG_THINKPAD_ACPI=m
 # CONFIG_THINKPAD_ACPI_DEBUG is not set
 # CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
 CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
-CONFIG_THINKPAD_ACPI_BAY=y
 CONFIG_THINKPAD_ACPI_VIDEO=y
 # CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
 
@@ -141,7 +137,6 @@ CONFIG_HOTPLUG_PCI_SHPC=m
 
 CONFIG_HPET=y
 # CONFIG_HPET_MMAP is not set
-# CONFIG_HPET_RTC_IRQ is not set
 CONFIG_PM=y
 
 CONFIG_IPW2100=m
@@ -179,7 +174,6 @@ CONFIG_I2C_AMD756_S4882=m
 CONFIG_I2C_AMD8111=m
 CONFIG_I2C_I801=m
 CONFIG_I2C_ISCH=m
-# CONFIG_I2C_I810 is not set
 CONFIG_I2C_NFORCE2_S4985=m
 CONFIG_I2C_PIIX4=m
 # CONFIG_I2C_SIS5595 is not set
@@ -211,6 +205,7 @@ CONFIG_EDAC_AMD8131=m
 CONFIG_EDAC_AMD8111=m
 CONFIG_EDAC_AMD64=m
 # CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
+CONFIG_EDAC_DECODE_MCE=m
 
 CONFIG_SCHED_MC=y
 
@@ -222,7 +217,6 @@ CONFIG_HW_RANDOM_VIA=m
 
 # CONFIG_HW_RANDOM_GEODE is not set
 
-CONFIG_USB_HIDINPUT_POWERBOOK=y
 
 CONFIG_DEBUG_STACKOVERFLOW=y
 CONFIG_DEBUG_NMI_TIMEOUT=5
@@ -235,6 +229,8 @@ CONFIG_SPARSEMEM=y
 CONFIG_HAVE_MEMORY_PRESENT=y
 CONFIG_SPARSEMEM_EXTREME=y
 CONFIG_SPARSEMEM_VMEMMAP=y
+CONFIG_MEMORY_HOTPLUG=y
+CONFIG_MEMORY_HOTREMOVE=y
 
 # CONFIG_BLK_DEV_CMD640 is not set
 # CONFIG_BLK_DEV_RZ1000 is not set
@@ -244,7 +240,6 @@ CONFIG_SPARSEMEM_VMEMMAP=y
 # CONFIG_BLK_DEV_CS5535 is not set
 
 CONFIG_CC_STACKPROTECTOR=y
-# CONFIG_CC_STACKPROTECTOR_ALL is not set
 
 CONFIG_SGI_IOC4=m
 CONFIG_SGI_XP=m
@@ -282,7 +277,6 @@ CONFIG_VIRTUALIZATION=y
 CONFIG_KVM=m
 CONFIG_KVM_INTEL=m
 CONFIG_KVM_AMD=m
-CONFIG_KVM_TRACE=y
 
 CONFIG_PARAVIRT_GUEST=y
 CONFIG_PARAVIRT=y
@@ -321,8 +315,6 @@ CONFIG_HP_WATCHDOG=m
 
 CONFIG_FRAME_WARN=2048
 
-CONFIG_MEMTEST_BOOTPARAM=y
-CONFIG_MEMTEST_BOOTPARAM_VALUE=0
 CONFIG_NODES_SHIFT=9
 CONFIG_X86_PAT=y
 # FIXME: These should be 32bit only
@@ -370,17 +362,26 @@ CONFIG_HW_BRANCH_TRACER=y
 
 CONFIG_X86_X2APIC=y
 CONFIG_SPARSE_IRQ=y
-CONFIG_NUMA_MIGRATE_IRQ_DESC=y
 
 CONFIG_RCU_FANOUT=64
 
 # CONFIG_IOMMU_STRESS is not set
 
 CONFIG_PERF_COUNTERS=y
+CONFIG_PERF_EVENTS=y
 CONFIG_EVENT_PROFILE=y
 
 # CONFIG_X86_MCE_INJECT is not set
 
+CONFIG_SFI=y
+CONFIG_INPUT_WINBOND_CIR=m
+CONFIG_I2C_SCMI=m
+CONFIG_SBC_FITPC2_WATCHDOG=m
+CONFIG_EDAC_I3200=m
+CONFIG_TOPSTAR_LAPTOP=m
+# CONFIG_INTEL_TXT is not set
+CONFIG_GPIO_LANGWELL=y
+
 CONFIG_FUNCTION_GRAPH_TRACER=y
 
 CONFIG_ACERHDF=m


Index: gen-patches
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/gen-patches,v
retrieving revision 1.5
retrieving revision 1.5.16.1
diff -u -p -r1.5 -r1.5.16.1
--- gen-patches	9 Jan 2008 08:05:11 -0000	1.5
+++ gen-patches	31 Jan 2010 17:57:50 -0000	1.5.16.1
@@ -27,7 +27,7 @@ fi
 
 base=$1
 shift
-base_rev=`git-rev-parse "$base"` || exit
+base_rev=`git rev-parse "$base"` || exit
 
 patchbase=10
 nextpatch=$patchbase
@@ -45,7 +45,7 @@ log()
   local logrev=$1
   local logbranch=$3
   local ref
-  ref=`git-symbolic-ref -q $logbranch` && logbranch=$ref
+  ref=`git symbolic-ref -q $logbranch` && logbranch=$ref
   case $logbranch in
   refs/remotes/*)
     logbranch=${logbranch#refs/remotes/}
@@ -53,7 +53,7 @@ log()
     logbranch=${logbranch#*/}
     logbranch=${logbranch//\//-}
     local url
-    url=`git-config "remote.${remote}.url"` || {
+    url=`git config "remote.${remote}.url"` || {
       echo >&2 "Cannot find URL for remote $remote"
       exit 2
     }
@@ -95,8 +95,8 @@ patch_apply()
 base_rev()
 {
   local base=$1
-  tag_rev=`git-rev-parse --revs-only --verify "$base^{}" 2> /dev/null` &&
-  [ "`git-describe --tags $tag_rev`" = "$base" ] && return 0
+  tag_rev=`git rev-parse --revs-only --verify "$base^{}" 2> /dev/null` &&
+  [ "`git describe --tags $tag_rev`" = "$base" ] && return 0
   case "$1" in
   v*-git*)
     local id=patch-${1#v}.id
@@ -133,8 +133,8 @@ i=0
 last_base=$base
 last_base_rev=$base_rev
 for branch; do
-  branch_rev=`git-rev-parse "$branch^{}"` || exit 2
-  merge_base=`git-merge-base $last_base_rev $branch_rev` || {
+  branch_rev=`git rev-parse "$branch^{}"` || exit 2
+  merge_base=`git merge-base $last_base_rev $branch_rev` || {
     echo >&2 "No common ancestor for $last_base and $branch"
     exit 2
   }

hdpvr-ir-enable.patch:
 0 files changed

Index: hdpvr-ir-enable.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/hdpvr-ir-enable.patch,v
retrieving revision 1.2.2.4
retrieving revision 1.2.2.5
diff -u -p -r1.2.2.4 -r1.2.2.5
--- hdpvr-ir-enable.patch	5 Sep 2009 19:02:24 -0000	1.2.2.4
+++ hdpvr-ir-enable.patch	31 Jan 2010 17:57:50 -0000	1.2.2.5
@@ -1,227 +0,0 @@
-From http://hg.jannau.net/hdpvr/, pending v4l-dvb pull request
-
----
- drivers/media/video/hdpvr/Makefile     |    4 +-
- drivers/media/video/hdpvr/hdpvr-core.c |   12 ++---
- drivers/media/video/hdpvr/hdpvr-i2c.c  |   88 ++++++++++++++++++++++---------
- drivers/media/video/hdpvr/hdpvr.h      |    2 +-
- 4 files changed, 68 insertions(+), 38 deletions(-)
-
-diff --git a/drivers/media/video/hdpvr/Makefile b/drivers/media/video/hdpvr/Makefile
-index e0230fc..79ad2e1 100644
---- a/drivers/media/video/hdpvr/Makefile
-+++ b/drivers/media/video/hdpvr/Makefile
-@@ -1,6 +1,4 @@
--hdpvr-objs	:= hdpvr-control.o hdpvr-core.o hdpvr-video.o
--
--hdpvr-$(CONFIG_I2C) += hdpvr-i2c.o
-+hdpvr-objs	:= hdpvr-control.o hdpvr-core.o hdpvr-i2c.o hdpvr-video.o
- 
- obj-$(CONFIG_VIDEO_HDPVR) += hdpvr.o
- 
-diff --git a/drivers/media/video/hdpvr/hdpvr-core.c b/drivers/media/video/hdpvr/hdpvr-core.c
-index 188bd5a..d2bb4c2 100644
---- a/drivers/media/video/hdpvr/hdpvr-core.c
-+++ b/drivers/media/video/hdpvr/hdpvr-core.c
-@@ -362,9 +362,8 @@ static int hdpvr_probe(struct usb_interface *interface,
- 		goto error;
- 	}
- 
--#ifdef CONFIG_I2C
--	/* until i2c is working properly */
--	retval = 0; /* hdpvr_register_i2c_adapter(dev); */
-+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
-+	retval = hdpvr_register_i2c_adapter(dev);
- 	if (retval < 0) {
- 		v4l2_err(&dev->v4l2_dev, "registering i2c adapter failed\n");
- 		goto error;
-@@ -414,12 +413,9 @@ static void hdpvr_disconnect(struct usb_interface *interface)
- 	mutex_unlock(&dev->io_mutex);
- 
- 	/* deregister I2C adapter */
--#ifdef CONFIG_I2C
-+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
- 	mutex_lock(&dev->i2c_mutex);
--	if (dev->i2c_adapter)
--		i2c_del_adapter(dev->i2c_adapter);
--	kfree(dev->i2c_adapter);
--	dev->i2c_adapter = NULL;
-+	i2c_del_adapter(&dev->i2c_adapter);
- 	mutex_unlock(&dev->i2c_mutex);
- #endif /* CONFIG_I2C */
- 
-diff --git a/drivers/media/video/hdpvr/hdpvr-i2c.c b/drivers/media/video/hdpvr/hdpvr-i2c.c
-index c4b5d15..7cd977f 100644
---- a/drivers/media/video/hdpvr/hdpvr-i2c.c
-+++ b/drivers/media/video/hdpvr/hdpvr-i2c.c
-@@ -10,6 +10,7 @@
-  *
-  */
- 
-+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
- #include <linux/i2c.h>
- 
- #include "hdpvr.h"
-@@ -19,10 +20,13 @@
- 
- #define REQTYPE_I2C_READ	0xb1
- #define REQTYPE_I2C_WRITE	0xb0
--#define REQTYPE_I2C_WRITE_STATT	0xd0
-+#define REQTYPE_I2C_WRITE_STAT	0xd0
-+
-+#define HDPVR_HW_Z8F0811_IR_TX_I2C_ADDR	0x70
-+#define HDPVR_HW_Z8F0811_IR_RX_I2C_ADDR	0x71
- 
- static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr,
--			  char *data, int len)
-+			  char *data, int len, int bus)
- {
- 	int ret;
- 	char *buf = kmalloc(len, GFP_KERNEL);
-@@ -32,7 +36,7 @@ static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr,
- 	ret = usb_control_msg(dev->udev,
- 			      usb_rcvctrlpipe(dev->udev, 0),
- 			      REQTYPE_I2C_READ, CTRL_READ_REQUEST,
--			      0x100|addr, 0, buf, len, 1000);
-+			      bus<<8 | addr, 0, buf, len, 1000);
- 
- 	if (ret == len) {
- 		memcpy(data, buf, len);
-@@ -46,7 +50,7 @@ static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr,
- }
- 
- static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr,
--			   char *data, int len)
-+			   char *data, int len, int bus)
- {
- 	int ret;
- 	char *buf = kmalloc(len, GFP_KERNEL);
-@@ -57,17 +61,17 @@ static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr,
- 	ret = usb_control_msg(dev->udev,
- 			      usb_sndctrlpipe(dev->udev, 0),
- 			      REQTYPE_I2C_WRITE, CTRL_WRITE_REQUEST,
--			      0x100|addr, 0, buf, len, 1000);
-+			      bus<<8 | addr, 0, buf, len, 1000);
- 
- 	if (ret < 0)
- 		goto error;
- 
- 	ret = usb_control_msg(dev->udev,
- 			      usb_rcvctrlpipe(dev->udev, 0),
--			      REQTYPE_I2C_WRITE_STATT, CTRL_READ_REQUEST,
-+			      REQTYPE_I2C_WRITE_STAT, CTRL_READ_REQUEST,
- 			      0, 0, buf, 2, 1000);
- 
--	if (ret == 2)
-+	if ((ret == 2) && (buf[1] == (len - 1)))
- 		ret = 0;
- 	else if (ret >= 0)
- 		ret = -EIO;
-@@ -93,10 +97,10 @@ static int hdpvr_transfer(struct i2c_adapter *i2c_adapter, struct i2c_msg *msgs,
- 
- 		if (msgs[i].flags & I2C_M_RD)
- 			retval = hdpvr_i2c_read(dev, addr, msgs[i].buf,
--						msgs[i].len);
-+						msgs[i].len, 1);
- 		else
- 			retval = hdpvr_i2c_write(dev, addr, msgs[i].buf,
--						 msgs[i].len);
-+						 msgs[i].len, 1);
- 	}
- 
- 	mutex_unlock(&dev->i2c_mutex);
-@@ -114,32 +118,64 @@ static struct i2c_algorithm hdpvr_algo = {
- 	.functionality = hdpvr_functionality,
- };
- 
-+static struct i2c_adapter hdpvr_i2c_adap_template = {
-+	.name		= "Hauppauge HD PVR I2C",
-+	.owner		= THIS_MODULE,
-+	.id		= I2C_HW_B_HDPVR,
-+	.algo		= &hdpvr_algo,
-+	.class		= I2C_CLASS_TV_ANALOG,
-+};
-+
-+#if 1
-+static struct i2c_board_info hdpvr_i2c_board_info = {
-+	I2C_BOARD_INFO("ir_tx_z8f0811_haup", HDPVR_HW_Z8F0811_IR_TX_I2C_ADDR),
-+	I2C_BOARD_INFO("ir_rx_z8f0811_haup", HDPVR_HW_Z8F0811_IR_RX_I2C_ADDR),
-+};
-+#endif
-+
-+static int hdpvr_activate_ir(struct hdpvr_device *dev)
-+{
-+	char buffer[8];
-+
-+	mutex_lock(&dev->i2c_mutex);
-+
-+	hdpvr_i2c_read(dev, 0x54, buffer, 1, 0);
-+
-+	buffer[0] = 0;
-+	buffer[1] = 0x8;
-+	hdpvr_i2c_write(dev, 0x54, buffer, 2, 1);
-+
-+	buffer[1] = 0x18;
-+	hdpvr_i2c_write(dev, 0x54, buffer, 2, 1);
-+
-+	mutex_unlock(&dev->i2c_mutex);
-+	return 0;
-+}
-+
- int hdpvr_register_i2c_adapter(struct hdpvr_device *dev)
- {
--	struct i2c_adapter *i2c_adap;
- 	int retval = -ENOMEM;
- 
--	i2c_adap = kzalloc(sizeof(struct i2c_adapter), GFP_KERNEL);
--	if (i2c_adap == NULL)
--		goto error;
-+	hdpvr_activate_ir(dev);
-+
-+	memcpy(&dev->i2c_adapter, &hdpvr_i2c_adap_template,
-+	       sizeof(struct i2c_adapter));
- 
--	strlcpy(i2c_adap->name, "Hauppauge HD PVR I2C",
--		sizeof(i2c_adap->name));
--	i2c_adap->algo  = &hdpvr_algo;
--	i2c_adap->class = I2C_CLASS_TV_ANALOG;
--	i2c_adap->id    = I2C_HW_B_HDPVR;
--	i2c_adap->owner = THIS_MODULE;
--	i2c_adap->dev.parent = &dev->udev->dev;
-+	dev->i2c_adapter.dev.parent = &dev->udev->dev;
- 
--	i2c_set_adapdata(i2c_adap, dev);
-+	i2c_set_adapdata(&dev->i2c_adapter, dev);
- 
--	retval = i2c_add_adapter(i2c_adap);
-+	retval = i2c_add_adapter(&dev->i2c_adapter);
- 
--	if (!retval)
--		dev->i2c_adapter = i2c_adap;
--	else
--		kfree(i2c_adap);
-+	if (retval)
-+		goto error;
-+
-+#if 1
-+	i2c_new_device(&dev->i2c_adapter, &hdpvr_i2c_board_info);
-+#endif
- 
- error:
- 	return retval;
- }
-+
-+#endif /* CONFIG_I2C */
-diff --git a/drivers/media/video/hdpvr/hdpvr.h b/drivers/media/video/hdpvr/hdpvr.h
-index 1edd875..173aefa 100644
---- a/drivers/media/video/hdpvr/hdpvr.h
-+++ b/drivers/media/video/hdpvr/hdpvr.h
-@@ -101,7 +101,7 @@ struct hdpvr_device {
- 	struct work_struct	worker;
- 
- 	/* I2C adapter */
--	struct i2c_adapter	*i2c_adapter;
-+	struct i2c_adapter	i2c_adapter;
- 	/* I2C lock */
- 	struct mutex		i2c_mutex;
- 


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1294.2.82
retrieving revision 1.1294.2.83
diff -u -p -r1.1294.2.82 -r1.1294.2.83
--- kernel.spec	23 Dec 2009 21:12:36 -0000	1.1294.2.82
+++ kernel.spec	31 Jan 2010 17:57:51 -0000	1.1294.2.83
@@ -35,13 +35,13 @@ Summary: The Linux kernel
 # base_sublevel is the kernel version we're starting with and patching
 # on top of -- for example, 2.6.22-rc7-git1 starts with a 2.6.21 base,
 # which yields a base_sublevel of 21.
-%define base_sublevel 31
+%define base_sublevel 32
 
 ## If this is a released kernel ##
 %if 0%{?released_kernel}
 
 # Do we have a -stable update to apply?
-%define stable_update 9
+%define stable_update 7
 # Is it a -stable RC?
 %define stable_rc 0
 # Set rpm version accordingly
@@ -60,9 +60,9 @@ Summary: The Linux kernel
 # The next upstream release sublevel (base_sublevel+1)
 %define upstream_sublevel %(echo $((%{base_sublevel} + 1)))
 # The rc snapshot level
-%define rcrev 9
+%define rcrev 0
 # The git snapshot level
-%define gitrev 2
+%define gitrev 0
 # Set rpm version accordingly
 %define rpmversion 2.6.%{upstream_sublevel}
 %endif
@@ -152,12 +152,13 @@ Summary: The Linux kernel
 # non-released_kernel
 %if 0%{?rcrev}
 %define rctag .rc%rcrev
+%else
+%define rctag .rc0
 %endif
 %if 0%{?gitrev}
 %define gittag .git%gitrev
-%if !0%{?rcrev}
-%define rctag .rc0
-%endif
+%else
+%define gittag .git0
 %endif
 %define pkg_release 0.%{fedora_build}%{?rctag}%{?gittag}%{?buildid}%{?dist}
 
@@ -168,7 +169,7 @@ Summary: The Linux kernel
 
 %define make_target bzImage
 
-%define KVERREL %{PACKAGE_VERSION}-%{PACKAGE_RELEASE}.%{_target_cpu}
+%define KVERREL %{version}-%{release}.%{_target_cpu}
 %define hdrarch %_target_cpu
 %define asmarch %_target_cpu
 
@@ -449,7 +450,7 @@ Summary: The Linux kernel
 #
 %define kernel_prereq  fileutils, module-init-tools, initscripts >= 8.11.1-1, kernel-firmware >= %{rpmversion}-%{pkg_release}
 %if %{with_dracut}
-%define initrd_prereq  dracut >= 001-7
+%define initrd_prereq  dracut >= 002 xorg-x11-drv-ati-firmware
 %else
 %define initrd_prereq  mkinitrd >= 6.0.61-1
 %endif
@@ -619,19 +620,7 @@ Patch20: linux-2.6-hotfixes.patch
 
 Patch21: linux-2.6-tracehook.patch
 Patch22: linux-2.6-utrace.patch
-
-Patch30: sched-introduce-SCHED_RESET_ON_FORK-scheduling-policy-flag.patch
-
-Patch31: disable-stackprotector-all.patch
-
-# Intel IOMMU fixes/workarounds
-Patch100: linux-2.6-die-closed-source-bios-muppets-die.patch
-Patch101: linux-2.6-intel-iommu-updates.patch
-Patch102: linux-2.6-iommu-at-zero.patch
-Patch103: linux-2.6-iommu-dmar-all-1s.patch
-Patch104: linux-2.6-iommu-another-hp-screwup.patch
-Patch105: linux-2.6-iommu-sanity-checks-for-intr-remap-too.patch
-Patch106: linux-2.6-iommu-hp-cantiga-resume.patch
+Patch23: linux-2.6-utrace-ptrace.patch
 
 Patch141: linux-2.6-ps3-storage-alias.patch
 Patch143: linux-2.6-g5-therm-shutdown.patch
@@ -645,11 +634,15 @@ Patch160: linux-2.6-execshield.patch
 Patch250: linux-2.6-debug-sizeof-structs.patch
 Patch260: linux-2.6-debug-nmi-timeout.patch
 Patch270: linux-2.6-debug-taint-vm.patch
-Patch280: linux-2.6-debug-spinlock-taint.patch
 Patch300: linux-2.6-driver-level-usb-autosuspend.diff
-Patch302: linux-2.6-qcserial-autosuspend.diff
-Patch303: linux-2.6-bluetooth-autosuspend.diff
+Patch303: linux-2.6-enable-btusb-autosuspend.patch
 Patch304: linux-2.6-usb-uvc-autosuspend.diff
+
+Patch310: linux-2.6-autoload-wmi.patch
+# wmi autoload fixes
+Patch311: wmi-check-find_guid-return-value-to-prevent-oops.patch
+Patch312: wmi-survive-bios-with-duplicate-guids.patch
+
 Patch340: linux-2.6-debug-vm-would-have-oomkilled.patch
 Patch360: linux-2.6-debug-always-inline-kzalloc.patch
 Patch380: linux-2.6-defaults-pci_no_msi.patch
@@ -666,8 +659,6 @@ Patch460: linux-2.6-serial-460800.patch
 
 Patch470: die-floppy-die.patch
 
-Patch500: linux-2.6.31-copy_from_user-bounds.patch
-
 Patch510: linux-2.6-silence-noise.patch
 Patch520: linux-2.6.30-hush-rom-warning.patch
 Patch530: linux-2.6-silence-fbcon-logo.patch
@@ -675,65 +666,52 @@ Patch570: linux-2.6-selinux-mprotect-che
 Patch580: linux-2.6-sparc-selinux-mprotect-checks.patch
 
 Patch600: linux-2.6-defaults-alsa-hda-beep-off.patch
-Patch601: linux-2.6-alsa-improve-hda-powerdown.patch
 Patch610: hda_intel-prealloc-4mb-dmabuffer.patch
-Patch611: alsa-tell-user-that-stream-to-be-rewound-is-suspended.patch
 
 Patch670: linux-2.6-ata-quirk.patch
-Patch671: linux-2.6-ahci-export-capabilities.patch
 
-Patch680: prism54-remove-pci-dev-table.patch
-Patch681: linux-2.6-ath9k-fixes.patch
+Patch680: linux-2.6-wireless_-report-reasonable-bitrate-for-MCS-rates-through-wext.patch
+
+Patch700: linux-2.6.31-nx-data.patch
+Patch701: linux-2.6.31-modules-ro-nx.patch
 
 Patch800: linux-2.6-crash-driver.patch
 
 Patch900: linux-2.6-pci-cacheline-sizing.patch
 
-# ACPI
-Patch1100: linux-2.6.31-cpuidle-faster-io.patch
-# EC fixes from 2.6.32 (#492699, #525681)
-Patch1110: acpi-ec-merge-irq-and-poll-modes.patch
-Patch1120: acpi-ec-use-burst-mode-only-for-msi-notebooks.patch
-Patch1130: acpi-ec-restart-command-even-if-no-interrupts-from-ec.patch
-
-Patch1515: lirc-2.6.31.patch
+Patch1515: lirc-2.6.32.patch
 Patch1517: hdpvr-ir-enable.patch
-Patch1518: hid-ignore-all-recent-imon-devices.patch
+Patch1520: crystalhd-2.6.34-staging.patch
 
 # virt + ksm patches
-Patch1550: linux-2.6-ksm.patch
 Patch1551: linux-2.6-ksm-kvm.patch
-Patch1552: linux-2.6-ksm-updates.patch
-Patch1553: linux-2.6-ksm-fix-munlock.patch
-Patch1554: linux-2.6-ksm-updates-from-32.patch
-Patch1579: linux-2.6-virtio_blk-revert-QUEUE_FLAG_VIRT-addition.patch
-Patch1583: linux-2.6-xen-fix-is_disconnected_device-exists_disconnected_device.patch
-Patch1584: linux-2.6-xen-improvement-to-wait_for_devices.patch
-Patch1585: linux-2.6-xen-increase-device-connection-timeout.patch
-Patch1586: linux-2.6-virtio_blk-add-support-for-cache-flush.patch
+Patch1552: linux-2.6-userspace_kvmclock_offset.patch
+
+# fbdev multi-card fix
+Patch1700: linux-2.6-x86-64-fbdev-primary.patch
+Patch1701: kms-offb-handoff.patch
 
 # nouveau + drm fixes
-Patch1810: kms-offb-handoff.patch
-Patch1812: drm-next-b390f944.patch
-Patch1813: drm-edid-9340d8cf.patch
-
-Patch1820: drm-radeon-pm.patch
-Patch1821: drm-nouveau.patch
-Patch1822: drm-i915-resume-force-mode.patch
+Patch1810: drm-upgrayedd.patch
+Patch1811: drm-fixes.patch
+Patch1813: drm-radeon-pm.patch
+#Patch1814: drm-nouveau.patch
+Patch1818: drm-i915-resume-force-mode.patch
+Patch1819: drm-intel-big-hammer.patch
+Patch1820: drm-intel-no-tv-hotplug.patch
+#Patch1821: drm-page-flip.patch
 # intel drm is all merged upstream
 Patch1824: drm-intel-next.patch
-Patch1825: drm-intel-pm.patch
-Patch1826: drm-intel-no-tv-hotplug.patch
-Patch1839: drm-radeon-misc-fixes.patch
-#Patch1840: drm-radeon-rv410-test-fix.patch
-
-# vga arb
-Patch1900: linux-2.6-vga-arb.patch
-Patch1901: drm-vga-arb.patch
-Patch1902: drm-radeon-kms-arbiter-return-ignore.patch
-
-# make harmless fbcon debug less loud
-Patch1903: fbcon-lower-debug.patch
+#Patch1825: drm-intel-pm.patch
+Patch1825: drm-intel-no-tv-hotplug-interrupts-dammit.patch
+#Patch1827: linux-2.6-intel-agp-clear-gtt.patch
+Patch1828: drm-nouveau-g80-ctxprog.patch
+Patch1829: drm-nouveau-shared-fb.patch
+Patch1831: drm-nouveau-tvout-disable.patch
+Patch1832: drm-nouveau-safetile-getparam.patch
+Patch1833: drm-nouveau-nvac-noaccel.patch
+Patch1844: drm-nouveau-kconfig.patch
+Patch1845: drm-nouveau-update.patch
 
 # kludge to make ich9 e1000 work
 Patch2000: linux-2.6-e1000-ich9.patch
@@ -749,17 +727,17 @@ Patch2802: linux-2.6-silence-acpi-blackl
 Patch2899: linux-2.6-v4l-dvb-fixes.patch
 Patch2900: linux-2.6-v4l-dvb-update.patch
 Patch2901: linux-2.6-v4l-dvb-experimental.patch
-Patch2904: v4l-dvb-fix-cx25840-firmware-loading.patch
+Patch2903: linux-2.6-revert-dvb-net-kabi-change.patch
+Patch2904: linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch
 
 # fs fixes
 
-#btrfs
-Patch3000: linux-2.6-btrfs-upstream.patch
-
 # NFSv4
-Patch3050: linux-2.6.31-nfsd-proot.patch
-Patch3060: linux-2.6-nfs4-ver4opt.patch
-Patch3061: linux-2.6-nfs4-callback-hidden.patch
+Patch3050: linux-2.6-nfsd4-proots.patch
+Patch3051: linux-2.6-nfs4-callback-hidden.patch
+
+# btrfs
+Patch3100: linux-2.6-btrfs-fix-acl.patch
 
 # VIA Nano / VX8xx updates
 Patch11010: via-hwmon-temp-sensor.patch
@@ -767,40 +745,16 @@ Patch11010: via-hwmon-temp-sensor.patch
 # patches headed upstream
 Patch12010: linux-2.6-dell-laptop-rfkill-fix.patch
 Patch12011: linux-2.6-block-silently-error-unsupported-empty-barriers-too.patch
-Patch12012: linux-2.6-rtc-show-hctosys.patch
 Patch12013: linux-2.6-rfkill-all.patch
-Patch12014: linux-2.6-selinux-module-load-perms.patch
 
-# sched fixes cherry-picked from 2.6.32
-Patch13100: sched-deal-with-low-load-in-wake-affine.patch
-Patch13101: sched-ensure-child-cant-gain-time-over-its-parent-after-fork.patch
-Patch13102: sched-remove-shortcut-from-select-task-rq-fair.patch
-# latency defaults from 2.6.32
-Patch13110: sched-retune-scheduler-latency-defaults.patch
-# Fix huge wakeup latencies
-Patch13120: sched-update-the-clock-of-runqueue-select-task-rq-selected.patch
-
-# patches headed for -stable
-
-# make perf counter API available to userspace (#527264)
-Patch14010: perf-make-perf-counter-h-available-to-userspace.patch
-
-# fix resource counter issues on *big* machines
-Patch14101: improve-resource-counter-scalability.patch
-
-# fix perf for sysprof
-Patch14420: perf-events-fix-swevent-hrtimer-sampling.patch
-Patch14421: perf-events-dont-generate-events-for-the-idle-task.patch
-
-# tg3 fixes (#527209)
-Patch14451: tg3-01-delay-mdio-bus-init-until-fw-finishes.patch
-Patch14452: tg3-02-fix-tso-test-against-wrong-flags-var.patch
-Patch14453: tg3-03-fix-57780-asic-rev-pcie-link-receiver-errors.patch
-Patch14454: tg3-04-prevent-tx-bd-corruption.patch
-Patch14455: tg3-05-assign-flags-to-fixes-in-start_xmit_dma_bug.patch
-Patch14456: tg3-06-fix-5906-transmit-hangs.patch
+# Patches for -stable
+Patch12101: wmi-free-the-allocated-acpi-objects.patch
+Patch12102: wmi-check-wmi-get-event-data-return-value.patch
+
+Patch12200: add-appleir-usb-driver.patch
 
-Patch14463: dlm-fix-connection-close-handling.patch
+# fix possible oops in bio-integrity
+Patch12300: block-fix-bugs-in-bio-integrity-mempool-usage.patch
 
 Patch19997: xen.pvops.pre.patch
 Patch19998: xen.pvops.patch
@@ -1022,12 +976,14 @@ ApplyPatch()
   if [ ! -f $RPM_SOURCE_DIR/$patch ]; then
     exit 1
   fi
+%if !%{using_upstream_branch}
   if ! egrep "^Patch[0-9]+: $patch\$" %{_specdir}/${RPM_PACKAGE_NAME%%%%%{?variant}}.spec ; then
     if [ "${patch:0:10}" != "patch-2.6." ] ; then
       echo "ERROR: Patch  $patch  not listed as a source patch in specfile"
       exit 1
     fi
   fi 2>/dev/null
+%endif
   case "$patch" in
   *.bz2) bunzip2 < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;;
   *.gz) gunzip < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;;
@@ -1073,6 +1029,8 @@ ApplyOptionalPatch()
 # pre-{base_sublevel+1}-rc1 case
 %if 0%{?gitrev}
 %define vanillaversion 2.6.%{base_sublevel}-git%{gitrev}
+%else
+%define vanillaversion 2.6.%{base_sublevel}
 %endif
 %endif
 %endif
@@ -1194,7 +1152,7 @@ make -f %{SOURCE20} VERSION=%{version} c
   done
 %endif
 
-#ApplyOptionalPatch git-linus.diff
+ApplyOptionalPatch git-linus.diff
 
 # This patch adds a "make nonint_oldconfig" which is non-interactive and
 # also gives a list of missing options at the end. Useful for automated
@@ -1213,18 +1171,15 @@ ApplyOptionalPatch linux-2.6-compile-fix
 # revert patches from upstream that conflict or that we get via other means
 ApplyOptionalPatch linux-2.6-upstream-reverts.patch -R
 
-ApplyOptionalPatch git-cpufreq.patch
-#ApplyOptionalPatch git-bluetooth.patch
+#ApplyPatch git-cpufreq.patch
+#ApplyPatch git-bluetooth.patch
 
 ApplyPatch linux-2.6-hotfixes.patch
 
 # Roland's utrace ptrace replacement.
 ApplyPatch linux-2.6-tracehook.patch
 ApplyPatch linux-2.6-utrace.patch
-
-ApplyPatch sched-introduce-SCHED_RESET_ON_FORK-scheduling-policy-flag.patch
-
-ApplyPatch disable-stackprotector-all.patch
+ApplyPatch linux-2.6-utrace-ptrace.patch
 
 # Architecture patches
 # x86(-64)
@@ -1234,20 +1189,6 @@ ApplyPatch linux-2.6-dell-laptop-rfkill-
 #
 # Intel IOMMU
 #
-# Quiesce USB host controllers before setting up the IOMMU
-ApplyPatch linux-2.6-die-closed-source-bios-muppets-die.patch
-# Some performance fixes, unify hardware/software passthrough support, and
-# most importantly: notice when the BIOS points us to a region that returns
-# all 0xFF, and claims that there's an IOMMU there.
-ApplyPatch linux-2.6-intel-iommu-updates.patch
-ApplyPatch linux-2.6-iommu-at-zero.patch
-ApplyPatch linux-2.6-iommu-dmar-all-1s.patch
-# Check for RMRRs which end before they start
-ApplyPatch linux-2.6-iommu-another-hp-screwup.patch
-# Apply the 'at zero' and 'all 0xFF' sanity checks for intr_remap too
-ApplyPatch linux-2.6-iommu-sanity-checks-for-intr-remap-too.patch
-# Fix up MMIO BAR for integrated graphics on HP laptops on resume (#536675)
-ApplyPatch linux-2.6-iommu-hp-cantiga-resume.patch
 
 #
 # PowerPC
@@ -1283,36 +1224,33 @@ ApplyPatch linux-2.6-execshield.patch
 # xfs
 
 # btrfs
-ApplyPatch linux-2.6-btrfs-upstream.patch
+ApplyPatch linux-2.6-btrfs-fix-acl.patch
 
 # eCryptfs
 
 # NFSv4
-ApplyPatch linux-2.6.31-nfsd-proot.patch
-ApplyPatch linux-2.6-nfs4-ver4opt.patch
+ApplyPatch linux-2.6-nfsd4-proots.patch
 ApplyPatch linux-2.6-nfs4-callback-hidden.patch
 
 # USB
 ApplyPatch linux-2.6-driver-level-usb-autosuspend.diff
-ApplyPatch linux-2.6-qcserial-autosuspend.diff
-ApplyPatch linux-2.6-bluetooth-autosuspend.diff
+ApplyPatch linux-2.6-enable-btusb-autosuspend.patch
 ApplyPatch linux-2.6-usb-uvc-autosuspend.diff
 
+# WMI
+ApplyPatch linux-2.6-autoload-wmi.patch
+# autoload fixes
+ApplyPatch wmi-check-find_guid-return-value-to-prevent-oops.patch
+ApplyPatch wmi-survive-bios-with-duplicate-guids.patch
+
 # ACPI
 ApplyPatch linux-2.6-defaults-acpi-video.patch
 ApplyPatch linux-2.6-acpi-video-dos.patch
-# cpuidle: Fix the menu governor to boost IO performance
-ApplyPatch linux-2.6.31-cpuidle-faster-io.patch
-# EC fixes from 2.6.32 (#492699, #525681)
-ApplyPatch acpi-ec-merge-irq-and-poll-modes.patch
-ApplyPatch acpi-ec-use-burst-mode-only-for-msi-notebooks.patch
-ApplyPatch acpi-ec-restart-command-even-if-no-interrupts-from-ec.patch
 
 # Various low-impact patches to aid debugging.
 ApplyPatch linux-2.6-debug-sizeof-structs.patch
 ApplyPatch linux-2.6-debug-nmi-timeout.patch
 ApplyPatch linux-2.6-debug-taint-vm.patch
-ApplyPatch linux-2.6-debug-spinlock-taint.patch
 ApplyPatch linux-2.6-debug-vm-would-have-oomkilled.patch
 ApplyPatch linux-2.6-debug-always-inline-kzalloc.patch
 
@@ -1335,9 +1273,7 @@ ApplyPatch linux-2.6-defaults-aspm.patch
 # ALSA
 # squelch hda_beep by default
 ApplyPatch linux-2.6-defaults-alsa-hda-beep-off.patch
-ApplyPatch linux-2.6-alsa-improve-hda-powerdown.patch
 ApplyPatch hda_intel-prealloc-4mb-dmabuffer.patch
-ApplyPatch alsa-tell-user-that-stream-to-be-rewound-is-suspended.patch
 
 # Networking
 
@@ -1348,10 +1284,6 @@ ApplyPatch linux-2.6-input-kill-stupid-m
 # stop floppy.ko from autoloading during udev...
 ApplyPatch die-floppy-die.patch
 
-# make copy_from_user to a stack slot provable right
-# hosed stuff, just drop this close to beta
-#ApplyPatch linux-2.6.31-copy_from_user-bounds.patch
-
 # Get away from having to poll Toshibas
 #ApplyPatch linux-2.6-input-fix-toshiba-hotkeys.patch
 
@@ -1378,14 +1310,13 @@ ApplyPatch linux-2.6-silence-fbcon-logo.
 # ia64 ata quirk
 ApplyPatch linux-2.6-ata-quirk.patch
 
-# Make it possible to identify non-hotplug SATA ports
-ApplyPatch linux-2.6-ahci-export-capabilities.patch
-
-# prism54: remove pci modinfo device table
-ApplyPatch prism54-remove-pci-dev-table.patch
+# Report meaningful values for MCS rates through wireless extensions
+ApplyPatch linux-2.6-wireless_-report-reasonable-bitrate-for-MCS-rates-through-wext.patch
 
-# ath9k: add fixes suggested by upstream maintainer
-ApplyPatch linux-2.6-ath9k-fixes.patch
+# Mark kernel data as NX
+#ApplyPatch linux-2.6.31-nx-data.patch
+# Apply NX/RO to modules
+#ApplyPatch linux-2.6.31-modules-ro-nx.patch
 
 # /dev/crash driver.
 ApplyPatch linux-2.6-crash-driver.patch
@@ -1394,107 +1325,66 @@ ApplyPatch linux-2.6-crash-driver.patch
 ApplyPatch linux-2.6-pci-cacheline-sizing.patch
 
 # http://www.lirc.org/
-ApplyPatch lirc-2.6.31.patch
+ApplyPatch lirc-2.6.32.patch
 # enable IR receiver on Hauppauge HD PVR (v4l-dvb merge pending)
 ApplyPatch hdpvr-ir-enable.patch
-# tell usbhid to ignore all imon devices (sent upstream 2009.07.31)
-ApplyPatch hid-ignore-all-recent-imon-devices.patch
+# Broadcom Crystal HD driver from 2.6.34 staging
+ApplyPatch crystalhd-2.6.34-staging.patch
 
 # Add kernel KSM support
-ApplyPatch linux-2.6-ksm.patch
-ApplyPatch linux-2.6-ksm-updates.patch
-ApplyPatch linux-2.6-ksm-fix-munlock.patch
-ApplyPatch linux-2.6-ksm-updates-from-32.patch
 # Optimize KVM for KSM support
-ApplyPatch linux-2.6-ksm-kvm.patch
+#ApplyPatch linux-2.6-ksm-kvm.patch
 
 # Assorted Virt Fixes
-ApplyPatch linux-2.6-virtio_blk-revert-QUEUE_FLAG_VIRT-addition.patch
-#ApplyPatch linux-2.6-xen-fix-is_disconnected_device-exists_disconnected_device.patch
-#ApplyPatch linux-2.6-xen-improvement-to-wait_for_devices.patch
-#ApplyPatch linux-2.6-xen-increase-device-connection-timeout.patch
-ApplyPatch linux-2.6-virtio_blk-add-support-for-cache-flush.patch
+ApplyPatch linux-2.6-userspace_kvmclock_offset.patch
 
 # Fix block I/O errors in KVM
-ApplyPatch linux-2.6-block-silently-error-unsupported-empty-barriers-too.patch
+#ApplyPatch linux-2.6-block-silently-error-unsupported-empty-barriers-too.patch
 
 ApplyPatch linux-2.6-e1000-ich9.patch
 
-# Nouveau DRM + drm fixes
+ApplyPatch linux-2.6-x86-64-fbdev-primary.patch
 ApplyPatch kms-offb-handoff.patch
-ApplyPatch drm-next-b390f944.patch
-ApplyPatch drm-edid-9340d8cf.patch
-ApplyPatch drm-radeon-misc-fixes.patch
-#ApplyPatch drm-radeon-rv410-test-fix.patch
-
-ApplyPatch drm-nouveau.patch
-# pm broken on my thinkpad t60p - airlied
-#ApplyPatch drm-radeon-pm.patch
-ApplyPatch drm-i915-resume-force-mode.patch
+# Nouveau DRM + drm fixes
+ApplyPatch drm-upgrayedd.patch
+ApplyPatch drm-fixes.patch
+#ApplyPatch drm-intel-big-hammer.patch
+#ApplyPatch drm-intel-no-tv-hotplug.patch
 ApplyOptionalPatch drm-intel-next.patch
-#this appears to be upstream - mjg59?
-#ApplyPatch drm-intel-pm.patch
-ApplyPatch drm-intel-no-tv-hotplug.patch
-#ApplyPatch drm-disable-r600-aspm.patch
-
-# VGA arb + drm
-ApplyPatch linux-2.6-vga-arb.patch
-ApplyPatch drm-vga-arb.patch
-ApplyPatch drm-radeon-kms-arbiter-return-ignore.patch
-
-# Lower debug level of fbcon handover messages (rh#538526)
-ApplyPatch fbcon-lower-debug.patch
+ApplyPatch drm-intel-no-tv-hotplug-interrupts-dammit.patch
+ApplyPatch drm-nouveau-g80-ctxprog.patch
+ApplyPatch drm-nouveau-shared-fb.patch
+ApplyPatch drm-nouveau-tvout-disable.patch
+ApplyPatch drm-nouveau-safetile-getparam.patch
+ApplyPatch drm-nouveau-nvac-noaccel.patch
+ApplyPatch drm-nouveau-kconfig.patch
+ApplyPatch drm-nouveau-update.patch
 
 # linux1394 git patches
-# apply if non-empty
-ApplyOptionalPatch linux-2.6-firewire-git-update.patch
-ApplyOptionalPatch linux-2.6-firewire-git-pending.patch
+#ApplyPatch linux-2.6-firewire-git-update.patch
+#ApplyOptionalPatch linux-2.6-firewire-git-pending.patch
 
 # silence the ACPI blacklist code
 ApplyPatch linux-2.6-silence-acpi-blacklist.patch
 
 # V4L/DVB updates/fixes/experimental drivers
-# apply if non-empty
-ApplyOptionalPatch linux-2.6-v4l-dvb-fixes.patch
-ApplyOptionalPatch linux-2.6-v4l-dvb-update.patch
-ApplyOptionalPatch linux-2.6-v4l-dvb-experimental.patch
-
-ApplyPatch v4l-dvb-fix-cx25840-firmware-loading.patch
+#ApplyPatch linux-2.6-v4l-dvb-fixes.patch
+#ApplyPatch linux-2.6-v4l-dvb-update.patch
+#ApplyPatch linux-2.6-v4l-dvb-experimental.patch
+#ApplyPatch linux-2.6-revert-dvb-net-kabi-change.patch
+ApplyPatch linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch
 
 # Patches headed upstream
-ApplyPatch linux-2.6-rtc-show-hctosys.patch
 ApplyPatch linux-2.6-rfkill-all.patch
-ApplyPatch linux-2.6-selinux-module-load-perms.patch
-
-# patches headed for -stable
-
-# make perf counter API available to userspace (#527264)
-ApplyPatch perf-make-perf-counter-h-available-to-userspace.patch
 
-ApplyPatch improve-resource-counter-scalability.patch
+ApplyPatch add-appleir-usb-driver.patch
 
-# fix perf for sysprof
-ApplyPatch perf-events-fix-swevent-hrtimer-sampling.patch
-ApplyPatch perf-events-dont-generate-events-for-the-idle-task.patch
-
-# tg3 fixes (#527209)
-ApplyPatch tg3-01-delay-mdio-bus-init-until-fw-finishes.patch
-ApplyPatch tg3-02-fix-tso-test-against-wrong-flags-var.patch
-ApplyPatch tg3-03-fix-57780-asic-rev-pcie-link-receiver-errors.patch
-ApplyPatch tg3-04-prevent-tx-bd-corruption.patch
-ApplyPatch tg3-05-assign-flags-to-fixes-in-start_xmit_dma_bug.patch
-ApplyPatch tg3-06-fix-5906-transmit-hangs.patch
-
-# sched fixes cherry-picked from 2.6.32
-ApplyPatch sched-deal-with-low-load-in-wake-affine.patch
-ApplyPatch sched-ensure-child-cant-gain-time-over-its-parent-after-fork.patch
-ApplyPatch sched-remove-shortcut-from-select-task-rq-fair.patch
-# latency defaults from 2.6.32
-ApplyPatch sched-retune-scheduler-latency-defaults.patch
-# fix wakeup latency
-ApplyPatch sched-update-the-clock-of-runqueue-select-task-rq-selected.patch
+# Patches for -stable
+ApplyPatch wmi-free-the-allocated-acpi-objects.patch
+ApplyPatch wmi-check-wmi-get-event-data-return-value.patch
 
-ApplyPatch dlm-fix-connection-close-handling.patch
+# fix possible oops in bio-integrity
+ApplyPatch block-fix-bugs-in-bio-integrity-mempool-usage.patch
 
 ApplyPatch xen.pvops.pre.patch
 ApplyPatch xen.pvops.patch
@@ -1557,7 +1447,8 @@ cd ..
 # beforehand to get the proper final build ID bits into the embedded image.
 # This affects the vDSO images in vmlinux, and the vmlinux image in bzImage.
 export AFTER_LINK=\
-'sh -xc "/usr/lib/rpm/debugedit -b $$RPM_BUILD_DIR -d /usr/src/debug -i $@"'
+'sh -xc "/usr/lib/rpm/debugedit -b $$RPM_BUILD_DIR -d /usr/src/debug \
+    				-i $@ > $@.id"'
 %endif
 
 cp_vmlinux()
@@ -1721,6 +1612,12 @@ hwcap 0 nosegneg"
     cp $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/.config $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/config/auto.conf
     cd ..
 
+    if test -s vmlinux.id; then
+      cp vmlinux.id $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/vmlinux.id
+    else
+      echo >&2 "*** WARNING *** no vmlinux build ID! ***"
+    fi
+
     #
     # save the vmlinux file for kernel debugging into the kernel-debuginfo rpm
     #
@@ -1748,7 +1645,7 @@ hwcap 0 nosegneg"
     collect_modules_list networking \
     			 'register_netdev|ieee80211_register_hw|usbnet_probe'
     collect_modules_list block \
-    			 'ata_scsi_ioctl|scsi_add_host|blk_init_queue|register_mtd_blktrans|scsi_esp_register|scsi_register_device_handler'
+    			 'ata_scsi_ioctl|scsi_add_host|scsi_add_host_with_dma|blk_init_queue|register_mtd_blktrans|scsi_esp_register|scsi_register_device_handler'
     collect_modules_list drm \
     			 'drm_open|drm_init'
     collect_modules_list modesetting \
@@ -1816,8 +1713,7 @@ BuildKernel vmlinux vmlinux kdump vmlinu
 
 %if %{with_doc}
 # Make the HTML and man pages.
-# XXX nix %{?_smp_mflags} here, buggy Documentation/*/Makefile!
-make htmldocs mandocs || %{doc_build_fail}
+make %{?_smp_mflags} htmldocs mandocs || %{doc_build_fail}
 
 # sometimes non-world-readable files sneak into the kernel source tree
 chmod -R a=rX Documentation
@@ -2107,9 +2003,9 @@ fi
 %endif\
 /lib/modules/%{KVERREL}%{?2:.%{2}}/modules.*\
 %if %{with_dracut}\
-/boot/initramfs-%{KVERREL}%{?2:.%{2}}.img\
+%ghost /boot/initramfs-%{KVERREL}%{?2:.%{2}}.img\
 %else\
-/boot/initrd-%{KVERREL}%{?2:.%{2}}.img\
+%ghost /boot/initrd-%{KVERREL}%{?2:.%{2}}.img\
 %endif\
 %{expand:%%files %{?2:%{2}-}devel}\
 %defattr(-,root,root)\
@@ -2148,446 +2044,405 @@ fi
 # and build.
 
 %changelog
-* Wed Dec 23 2009 Michael Young <m.a.young at durham.ac.uk>
-- update to latest pvops patch
+* Sat Jan 31 2010 Michael Young <m.a.young at durham.ac.uk>
+- switch pvops to xen/next branch for the moment
+- update to 2.6.32
+- orphaned comments
+-* Wed Dec 23 2009 Michael Young <m.a.young at durham.ac.uk>
+-- update to latest pvops patch
+-* Wed Dec 09 2009 Michael Young <m.a.young at durham.ac.uk>
+-- update to latest pvops patch
+-* Fri Nov 13 2009 Michael Young <m.a.young at durham.ac.uk>
+-- fix typo in drm-edid-retry.patch
+-* Thu Nov 12 2009 Michael Young <m.a.young at durham.ac.uk>
+-- XEN_NETCHANNEL2 depends on XEN_XENBUS_FRONTEND
+-- Disable XEN_PCIDEV_FRONTEND for the moment (compile issues)
+-* Mon Nov 09 2009 Michael Young <m.a.young at durham.ac.uk>
+-- update pvops which adds XEN_NETCHANNEL2 and XEN_PCIDEV_FRONTEND
+-* Fri Oct 16 2009 Michael Young <m.a.young at durham.ac.uk>
+-- update pvops patch to 2.6.31.4
+-- add configuration options for XEN_PCIDEV_BACKEND and XEN_PCIDEV_BE_DEBUG
+-* Sat Oct 10 2009 Michael Young <m.a.young at durham.ac.uk>
+-- update pvops patch
+-- try putting DRM_RADEON and DRM_NOUVEAU back in
+-* Sat Oct  3 2009 Michael Young <m.a.young at durham.ac.uk>
+-- update pvops patch
+-* Sat Sep 26 2009 Michael Young <m.a.young at durham.ac.uk>
+-- disable DRM_RADEON  and DRM_NOUVEAU due to build problems
+-* Thu Sep 24 2009 Michael Young <m.a.young at durham.ac.uk>
+-- Try a dri fix in the latest xen/master
+-* Sat Sep 19 2009 Michael Young <m.a.young at durham.ac.uk>
+-- Switch pvops from rebase/master to xen/master branch
+-* Tue Sep 15 2009 Michael Young <m.a.young at durham.ac.uk>
+-- switch to the F-12 branch for the moment
+-- try an NX related fix
+
+* Sat Jan 30 2010 Chuck Ebbert <cebbert at redhat.com>  2.6.32.7-38
+- Fix possible oops in bio-integrity code.
+
+* Thu Jan 28 2010 Chuck Ebbert <cebbert at redhat.com>  2.6.32.7-37
+- Linux 2.6.32.7
+
+* Mon Jan 25 2010 Kyle McMartin <kyle at redhat.com> 2.6.32.6-36
+- fix gspca mismerge.
+
+* Mon Jan 25 2010 Kyle McMartin <kyle at redhat.com> 2.6.32.6-35
+- stable update 2.6.32.6
+- rebase gspca crud.
+
+* Mon Jan 25 2010 Dave Jones <davej at redhat.com> 2.6.32.5-34
+- Disable CONFIG_X86_CPU_DEBUG
+
+* Sun Jan 24 2010 Hans de Goede <hdegoede at redhat.com> 2.6.32.5-33
+- Rebase gspca usb webcam driver + sub drivers to latest upstream, this
+  adds support for the following webcam bridge chipsets:
+  benq, cpia1, ovfx2, sn9c2028, w996xCF, stv0680;
+  and also includes many many bugfixes (hopefully also fixes 531234)
+
+* Sat Jan 23 2010 Chuck Ebbert <cebbert at redhat.com> 2.6.32.5-32
+- Linux 2.6.32.5
+- Revert commit c7c85101afd0cb8ce497456d12ee1cad4aad152f from
+  upstream .32.5 because it conflicts with our DRM update.
+
+* Sat Jan 23 2010 Dave Airlie <airlied at redhat.com> 2.6.32.4-31
+- fix dracut depends
+
+* Thu Jan 21 2010 John W. Linville <linville at redhat.com> 2.6.32.4-30
+- Report meaningful values for MCS rates through wireless extensions
+
+* Wed Jan 20 2010 Kyle McMartin <kyle at redhat.com> 2.6.32.4-29
+- add appleir usb driver
+
+* Mon Jan 18 2010 Kyle McMartin <kyle at redhat.com> 2.6.32.4-28
+- Linux stable 2.6.32.4
+- drm-upgrayedd: rebase for related changes in intel_display.c, i915_drv.h
+
+* Mon Jan 18 2010 Ben Skeggs <bskeggs at redhat.com> 2.6.32.3-27
+- various nouveau fixes from upstream
+- dropped drm-nouveau-bios-paranoia.patch, it's upstream now
+
+* Thu Jan 14 2010 Adam Jackson <ajax at redhat.com> 2.6.32.3-26
+- Don't generate i915 TV hotplug interrupts ever ever ever.
+
+* Thu Jan 14 2010 Josef Bacik <josef at toxicpanda.com> 2.6.32.3-25
+- fix null pointer dereference in btrfs acl code
+
+* Wed Jan 13 2010 Dave Airlie <airlied at redhat.com> 2.6.32.3-24
+- drm fixes from upstream - mostly printk stupids + integrate radeon s/r fix
+
+* Wed Jan 13 2010 Dave Airlie <airlied at redhat.com> 2.6.32.3-23
+- crystalhd fix build on powerpc
+
+* Wed Jan 13 2010 Dave Airlie <airlied at redhat.com> 2.6.32.3-22
+- bring back offb handoff patch - fixes G5 + nouveau
+
+* Wed Jan 13 2010 Dave Airlie <airlied at redhat.com> 2.6.32.3-21
+- fix regression in radeon s/r - hangs on suspend
+
+* Wed Jan 13 2010 Dave Airlie <airlied at redhat.com> 2.6.32.3-20
+- force depend ati firmware, better safe than sorry. I don't
+  think dracut and dracut kernel are what I wanted to do.
+
+* Wed Jan 13 2010 Dave Airlie <airlied at redhat.com> 2.6.32.3-19
+- update dracut requires to make sure we get -ati firmware
+- add fbdev multi-card console fix patch
+
+* Tue Jan 12 2010 Jarod Wilson <jarod at redhat.com> 2.6.32.3-18
+- Add Broadcom Crystal HD driver from staging
+
+* Tue Jan 12 2010 Ben Skeggs <bskeggs at redhat.com> 2.6.32.3-17
+- add nouveau to staging Kconfig
+
+* Tue Jan 12 2010 Ben Skeggs <bskeggs at redhat.com> 2.6.32.3-16
+- nouveau: fix nvac noaccel patch, not sure what happened there!
+
+* Tue Jan 12 2010 Ben Skeggs <bskeggs at redhat.com> 2.6.32.3-15
+- nouveau: patches and firmware from F12 that aren't in upstream kernel
+
+* Mon Jan 11 2010 Dave Airlie <airlied at redhat.com> 2.6.32.3-14
+- drm-upgrayedd.patch: rebase to present 2.6.33 (drm-linus)
+- nouveau TODO - comment out no-tv-hp for now, leave patch
+- we can readd if all the upstream goodness didn't fix it
+
+* Mon Jan 11 2010 Kyle McMartin <kyle at redhat.com> 2.6.32.3-13
+- drm-intel-no-tv-hotplug.patch: re-add lost patch from F-12
+  2.6.31 (#522611, #544671)
+
+* Mon Jan 11 2010 Kyle McMartin <kyle at redhat.com> 2.6.32.3-12
+- Re-enable ATM_HE (#545289)
+
+* Fri Jan 08 2010 Chuck Ebbert <cebbert at redhat.com>  2.6.32.3-11
+- Add another symbol to look for when generating modules.block
+
+* Thu Jan 07 2010 Chuck Ebbert <cebbert at redhat.com>  2.6.32.3-10
+- Turn off default powersave mode for AC97 and HDA audio devices
+  due to continuing bug reports (can still be enabled in sysfs.)
+- Remove some patches that are upstream:
+  v4l-dvb-fix-cx25840-firmware-loading.patch
+  fix-9p-fscache.patch
+  ext4-fix-insufficient-checks-in-EXT4_IOC_MOVE_EXT.patch
+
+* Thu Jan 07 2010 Chuck Ebbert <cebbert at redhat.com>  2.6.32.3-9
+- Change configs to build the acerhdf driver again, requires
+  setting CONFIG_HWMON=y
+
+* Wed Jan 06 2010 Chuck Ebbert <cebbert at redhat.com>  2.6.32.3-8
+- Linux 2.6.32.3
+
+* Wed Jan 06 2010 Chuck Ebbert <cebbert at redhat.com>  2.6.32.3-7.rc2
+- Remove obsolete config options (generated .config files are
+  unchanged.)
 
-* Mon Dec 21 2009 Dave Airlie <airlied at redhat.com> 2.6.31.9-174
-- revert rv410 fix broke some things
+* Wed Jan 06 2010 Chuck Ebbert <cebbert at redhat.com>  2.6.32.3-6.rc2
+- Linux 2.6.32.3-rc2
+
+* Tue Jan 05 2010 Chuck Ebbert <cebbert at redhat.com>  2.6.32.3-5.rc1
+- Linux 2.6.32.3-rc1
+- Drop merged patches:
+  linux-2.6-fix-btusb-autosuspend.patch
+  drm-radeon-fix-crtc-vbl-update-for-r600.patch
 
-* Mon Dec 21 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31.9-173
-- nouveau: fix dim panel issues on certain laptops (rh#547554)
-- nouveau: fix some issues when running without ctxprogs
-- nouveau: fix error handling in init paths
-- nouveau: add vga arbitration hooks
-- nouveau: fix nv04 sw methods
-
-* Fri Dec 18 2009 Kyle McMartin <kyle at redhat.com> 2.6.31.9-172
-- stable update 2.6.31.9
-
-* Thu Dec 17 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31.8-171
-- drm-nouveau.patch: add support for GF7100 (NV63)
-
-* Wed Dec 16 2009 Adam Jackson <ajax at redhat.com>
-- drm-edid-9340d8cf.patch: Sync DRM EDID with Linus master.
-- drm-conservative-fallback-modes.patch, drm-edid-retry.patch,
-  drm-edid-header-fixup.patch, drm-default-mode.patch: Drop, merged into
-  the above.
-
-* Mon Dec 14 2009 Kyle McMartin <kyle at redhat.com> 2.6.31.8-169
-- 2.6.31.8
-
-* Thu Dec 10 2009 Kyle McMartin <kyle at redhat.com>
-- ipv4-fix-null-ptr-deref-in-ip_fragment.patch: upstream.
-- nuke highmem patches now in stable.
-- crypto-via-padlock-fix-nano-aes.patch: upstream.
-- fix up drm-next-$sha.patch
-
-* Wed Dec 09 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.6-167
-- Linux 2.6.31.7
-- NOTE: drm patch still needs fixing.
+* Tue Jan 05 2010 Chuck Ebbert <cebbert at redhat.com>  2.6.32.2-4
+- Fix WMI driver oopses and a memory leak.
 
-* Wed Dec 09 2009 Michael Young <m.a.young at durham.ac.uk>
-- update to latest pvops patch
+* Tue Jan 05 2010 Chuck Ebbert <cebbert at redhat.com>  2.6.32.2-3
+- Run 'make release', fix up tracing options to match what shipped
+  in F-12, fix CPU count on x86-64.
+
+* Mon Jan 04 2010 Dave Jones <davej at redhat.com>
+- Drop some of the spinlock/vm taint patches. dump_stack() already does same.
+
+* Fri Jan  1 2010 Kyle McMartin <kyle at redhat.com> 2.6.32.2-1
+- Rebased F-12 to 2.6.32, still needs forward porting of patches.
+
+* Thu Dec 24 2009 Kyle McMartin <kyle at redhat.com> 2.6.32.2-15
+- Add patch from dri-devel to fix vblanks on r600.
+  [http://marc.info/?l=dri-devel&m=126137027403059&w=2]
+
+* Fri Dec 18 2009 Kyle McMartin <kyle at redhat.com> 2.6.32.2-14
+- Linux 2.6.32.2
+- dropped upstream patches.
+
+* Fri Dec 18 2009 Roland McGrath <roland at redhat.com> - 2.6.32.1-13
+- minor utrace update
+
+* Thu Dec 17 2009 Matthew Garrett <mjg at redhat.com> 2.6.32.1-12
+- linux-2.6-driver-level-usb-autosuspend.diff: fix so it works properly...
+- linux-2.6-fix-btusb-autosuspend.patch: avoid bluetooth connection drops
+- linux-2.6-enable-btusb-autosuspend.patch: and default it to on
+- linux-2.6-autoload-wmi.patch: autoload WMI drivers
+
+* Thu Dec 17 2009 Jarod Wilson <jarod at redhat.com> 2.6.32.1-11
+- Split off onboard decode imon devices into pure input driver,
+  leaving lirc_imon for the ancient imon devices only
+- Fix NULL ptr deref in lirc_serial (#543886)
+- Assorted lirc_mceusb fixups suggested by Mauro
+- Dropped compat ioctls from lirc_dev, main ioctls should now be
+  compatible between 32-bit and 64-bit (also at Mauro's suggestion)
+
+* Wed Dec 16 2009 Roland McGrath <roland at redhat.com> 2.6.32.1-10
+- utrace update, now testing the utrace-based ptrace!
+
+* Mon Dec 14 2009 Kyle McMartin <kyle at redhat.com> 2.6.32.1-9
+- 2.6.32.1
+- ext4 patches and more...
+
+* Wed Dec 09 2009 Kyle McMartin <kyle at redhat.com> 2.6.32-8
+- Add a patch off lkml from krh to fix perf when DEBUG_PERF_USE_VMALLOC
+  (rhbz#542791)
+- Re-enable CONFIG_DEBUG_PERF_USE_VMALLOC on debug kernels.
 
-* Wed Dec 09 2009 Kyle McMartin <kyle at redhat.com> 2.6.31.6-166
+* Wed Dec 09 2009 Kyle McMartin <kyle at redhat.com> 2.6.32-7
 - ext4-fix-insufficient-checks-in-EXT4_IOC_MOVE_EXT.patch: CVE-2009-4131
   fix insufficient permission checking which could result in arbitrary
   data corruption by a local unprivileged user.
 
-* Tue Dec  8 2009 Steve Dickson <steved at redhat.com> 2.6.31.6-165
-- nfsd: Updated to latest pseudo root code fixing rhbz# 538609
+* Tue Dec 08 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.32-6
+- Copy fix for #540580 from F-12.
 
-* Mon Dec 07 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31.6-164
-- nouveau: fix NV17 breakage caused by NVA8 fixes
-- nouveau: use ratelimit for GPU error message
-
-* Fri Dec 04 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31.6-163
-- nouveau: reduce debug level of some warning messages (rh#543883)
-- nouveau: modesetting fixes on nva5/nva8
-- nouveau: suspend/resume fixes on nva5/nva8 (bios opcode 0x8d)
-- nouveau: cleanup chipset/arch handling, fail init on unknown chipsets
-- nouveau: fix failure to detect some outputs when dcb table is odd
-- nouveau: eliminate unnecessary cursor state changes on nv50
-
-* Thu Dec 03 2009 Kyle McMartin <kyle at redhat.com> 2.6.31.6-162
-- ipv4-fix-null-ptr-deref-in-ip_fragment.patch: null ptr deref
-  bug fix.
+* Tue Dec 08 2009 Kyle McMartin <kyle at redhat.com> 2.6.32-5
+- new rpm changes:
+ - %{PACKAGE_VERSION} -> %{version}
+ - %{PACKAGE_RELEASE} -> %{release}
+
+* Tue Dec 08 2009 Kyle McMartin <kyle at redhat.com> 2.6.32-4
+- Disable CONFIG_DEBUG_PERF_USE_VMALLOC for now, causes issues
+  on x86_64. (rhbz#542791)
 
-* Thu Dec 03 2009 Dave Airlie <airlied at redhat.com> 2.6.31.6-161
-- rv410 LVDS on resume test fix from AMD (#541562)
+* Mon Dec  7 2009 Justin M. Forbes <jforbes at redhat.com> 2.6.32-3
+- Allow userspace to adjust kvmclock offset (#530389)
 
-* Wed Dec 02 2009 John W. Linville <linville at redhat.com> 2.6.31.6-160
-- ath9k: add fixes suggested by upstream maintainer
+* Mon Dec  7 2009 Steve Dickson <steved at redhat.com> 2.6.32-2
+- Updated the NFS4 pseudo root code to the latest release.
 
-* Wed Dec 02 2009 Dave Airlie <airlied at redhat.com> 2.6.31.6-159
-- drm-radeon-misc-fixes.patch: r400 LVDS, r600 digital dpms, cursor fix, tv property
+* Thu Dec 03 2009 Kyle McMartin <kyle at redhat.com> 2.6.32-1
+- Linux 2.6.32
 
-* Wed Dec 02 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31.6-158
-- nouveau: more complete lvds script selection on >=G80 (rh#522690, rh#529859)
-- nouveau: more complete tmds script selection on >=G80 (rh#537853)
-- nouveau: TV detection fixes
-
-* Tue Dec 01 2009 Dave Airlie <airlied at redhat.com> 2.6.31.6-157
-- div/0 fix harder (#540593) - also ignore unposted GPUs with no BIOS
-
-* Tue Dec 01 2009 Dave Airlie <airlied at redhat.com> 2.6.31.6-156
-- drm-next: fixes LVDS resume on r4xx, div/0 on no bios (#540593)
-  lockup on tv-out only startup.
+* Wed Dec 02 2009 Kyle McMartin <kyle at redhat.com> 2.6.32-0.65.rc8.git5
+- 2.6.32-rc8-git5
+- nuke 9p cachefiles fix, upstream.
+- SLOW_WORK_PROC was renamed to SLOW_WORK_DEBUG, debugfs instead of procfs.
+
+* Wed Dec 02 2009 John W. Linville <linville at redhat.com> 2.6.32-0.64.rc8.git2
+- ath9k: add fixes suggested by upstream maintainer
+
+* Wed Dec 02 2009 David Woodhouse <David.Woodhouse at intel.com> 2.6.32-0.63.rc8.git2
+- forward port IOMMU fixes from F-12 for HP BIOS brokenness
+- Fix oops with intel_iommu=igfx_off
+- agp/intel: Clear full GTT at startup
+
+* Wed Dec 02 2009 Dave Airlie <airlied at redhat.com> 2.6.32-0.62.rc8.git2
+- forward port radeon fixes from F-12 + add radeon display port support
+
+* Mon Nov 30 2009 Kyle McMartin <kyle at redhat.com> 2.6.32-0.61.rc8.git2
+- fix-9p-fscache.patch: fix build.
+
+* Mon Nov 30 2009 Kyle McMartin <kyle at redhat.com> 2.6.32-0.60.rc8.git2
+- 2.6.32-rc8-git2 daily snapshot
+- nuke include/generated nuke-age since the patch was reverted upstream
+- config changes:
+ - generic:
+  +CONFIG_FSCACHE_OBJECT_LIST=y
+  +CONFIG_SLOW_WORK_PROC=y
 
 * Mon Nov 30 2009 Kyle McMartin <kyle at redhat.com>
-- drm-i915-fix-sync-to-vbl-when-vga-is-off.patch: add (rhbz#541670)
+- drm-i915-fix-sync-to-vbl-when-vga-is-off.patch: add, (rhbz#541670)
 
 * Sun Nov 29 2009 Kyle McMartin <kyle at redhat.com>
-- Drop linux-2.6-sysrq-c.patch, made consistent upstream.
+- linux-2.6-sysrq-c.patch: drop, was made consistent upstream.
 
-* Fri Nov 27 2009 Jarod Wilson <jarod at redhat.com> 2.6.31.6-153
+* Sat Nov 28 2009 Jarod Wilson <jarod at redhat.com> 2.6.32-0.55.rc8.git1
 - add device name to lirc_zilog, fixes issues w/multiple target devices
 - add lirc_imon pure input mode support for onboard decode devices
 
-* Wed Nov 26 2009 David Woodhouse <David.Woodhouse at intel.com> 2.6.31.6-152
-- Fix intel_tv_mode_set oops (#540218)
-
-* Wed Nov 26 2009 David Woodhouse <David.Woodhouse at intel.com> 2.6.31.6-151
-- VT-d: Work around yet more HP BIOS brokenness (#536675)
-
-* Wed Nov 25 2009 Kyle McMartin <kyle at redhat.com>
-- dlm: fix connection close handling.
-  Fix by lmb, requested by fabio.
-
-* Wed Nov 25 2009 David Woodhouse <David.Woodhouse at intel.com> 2.6.31.6-149
-- VT-d: Work around more HP BIOS brokenness.
-
-* Tue Nov 24 2009 Dave Airlie <airlied at redhat.com> 2.6.31.6-148
-- radeon: flush HDP cache on rendering wait - fixes r600 rendercheck failure
-
-* Mon Nov 23 2009 Adam Jackson <ajax at redhat.com>
-- drm-default-mode.patch: Default to 1024x768 to match UMS. (#538761)
+* Fri Nov 27 2009 Dave Airlie <airlied at redhat.com> 2.6.32-0.54.rc8.git1
+- attempt to put nouveau back - same patch as F-12 should work
 
-* Mon Nov 23 2009 Roland McGrath <roland at redhat.com> 2.6.31.6-146
-- Fix oops in x86-32 kernel's iret handling for bogus user %cs. (#540580)
+* Mon Nov 23 2009 Roland McGrath <roland at redhat.com>
+- Install vmlinux.id file in kernel-devel rpm.
 
-* Fri Nov 21 2009 Kyle McMartin <kyle at redhat.com>
-- Fix up ssp' highmem fixes with fixes for arm & ppc.
+* Fri Nov 20 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.32-0.52.rc8.git1
+- 2.6.32-rc8-git1
+- Enable CONFIG_MEMORY_HOTPLUG (and HOTREMOVE) on x86_64
 
-* Thu Nov 20 2009 Chris Wright <chrisw at redhat.com> 2.6.31.6-144
-- VT-d: another fallback for another BIOS bug (#524808)
+* Thu Nov 19 2009 Kyle McMartin <kyle at redhat.com> 2.6.32-0.51.rc7.git2
+- Oops, re-enable debug builds for rawhide... didn't mean to commit that.
 
-* Thu Nov 19 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31.6-142
-- Oops, add new patch to spec file
+* Thu Nov 19 2009 Kyle McMartin <kyle at redhat.com> 2.6.32-0.50.rc7.git2
+- Disable FUNCTION_TRACER and DYNAMIC_FTRACE in non-debug builds for
+  Fedora 13. Some pondering required to see if it's actually worth doing
+  though. Anecdotal evidence worth half as much as benchmarks.
+  STACK_TRACER selects FUNCTION_TRACER, so it has to go off too, sadly,
+  since it hooks every mcount to log the stack depth for the task.
 
-* Thu Nov 19 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31.6-141
-- Lower debug level of fbcon handover messages (rh#538526)
+* Thu Nov 19 2009 Kyle McMartin <kyle at redhat.com> 2.6.32-0.49.rc7.git2
+- 2.6.32-rc7-git2
 
-* Thu Nov 19 2009 Dave Airlie <airlied at redhat.com> 2.6.31.6-140
-- drm-next-44c83571.patch: oops pulled the wrong tree into my f12 tree
+* Mon Nov 16 2009 Dave Airlie <airlied at redhat.com> 2.6.32-0.48.rc7.git1
+- backout gpg change now that koji is fixed
 
-* Thu Nov 19 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31.6-139
-- nouveau: s/r fixes on chipsets using bios opcode 0x87
-- nouveau: fixes to bios opcode 0x8e
-- nouveau: hopefully fix nv1x context switching issues (rh#526577)
-- nouveau: support for NVA5 (GeForce G220)
-- nouveau: fixes for NVAA support
+* Sun Nov 15 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.32-0.47.rc7.git1
+- Buildrequire gpg
 
-* Thu Nov 19 2009 Dave Airlie <airlied at redhat.com> 2.6.31.6-138
-- drm-next-d56672a9.patch: fix some rn50 cloning issues
+* Sun Nov 15 2009 Chuck Ebbert <cebbert at redhat.com>
+- Fix oops in VIA Padlock driver.
 
-* Wed Nov 18 2009 David Woodhouse <David.Woodhouse at intel.com> 2.6.31.6-137
-- Actually force the IOMMU not to be used when we detect the HP/Acer bug.
+* Sun Nov 15 2009 Chuck Ebbert <cebbert at redhat.com>
+- Linux 2.6.32-rc7-git1
 
-* Tue Nov 17 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.6-136
-- ACPI embedded controller fixes from Fedora 11.
-
-* Tue Nov 17 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.6-135
-- Scheduler fixes and latency tuning patches from F-11.
-
-* Tue Nov 17 2009 Dave Airlie <airlied at redhat.com> 2.6.31.6-134
-- glad to see edid retry patch was compiled.
-
-* Tue Nov 17 2009 Dave Airlie <airlied at redhat.com> 2.6.31.6-133
-- drm-next-984d1f3c.patch: rebase with upstream fixes - drop all merged
-
-* Fri Nov 13 2009 Michael Young <m.a.young at durham.ac.uk>
-- fix typo in drm-edid-retry.patch
-
-* Thu Nov 12 2009 Michael Young <m.a.young at durham.ac.uk>
-- XEN_NETCHANNEL2 depends on XEN_XENBUS_FRONTEND
-- Disable XEN_PCIDEV_FRONTEND for the moment (compile issues)
-
-* Thu Nov 12 2009 Adam Jackson <ajax at redhat.com>
-- Actually apply the EDID retry patch
-- drm-edid-header-fixup.patch: Fix up some broken EDID headers (#534120)
-
-* Thu Nov 12 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.6-130
-- Use ApplyOptionalPatch for v4l and firewire updates.
-- Drop unused v4l ABI fix.
-
-* Thu Nov 12 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.6-129
-- Linux 2.6.31.6
-- Drop merged patches:
-  linux-2.6-iwlwifi-reduce-noise-when-skb-allocation-fails.patch
-  linux-2.6-libertas-crash.patch
-  pci-increase-alignment-to-make-more-space.patch
-  acpi-revert-attach-device-to-handle-early.patch
-  ahci-revert-restore-sb600-sata-controller-64-bit-dma.patch
-  acpi-pci-fix-null-pointer-dereference-in-acpi-get-pci-dev.patch
-  af_unix-fix-deadlock-connecting-to-shutdown-socket.patch
-  keys-get_instantiation_keyring-should-inc-the-keyring-refcount.patch
-  netlink-fix-typo-in-initialization.patch
-  fs-pipe-null-ptr-deref-fix.patch
-
-* Wed Nov 11 2009 Justin M. Forbes <jforbes at redhat.com> 2.6.31.5-128
-- Fix KSM for i686 users. (#532215)
-- Add KSM fixes from 2.6.32
-
-* Mon Nov 09 2009 Michael Young <m.a.young at durham.ac.uk>
-- update pvops which adds XEN_NETCHANNEL2 and XEN_PCIDEV_FRONTEND
-
-* Sun Nov 08 2009 David Woodhouse <David.Woodhouse at intel.com> 2.6.31.5-127
-- Apply fix for fallback when HP/Acer BIOS bug detected (#524808)
-- Re-enable DMAR.
-- Fix libertas crash due to skb pointer bug
- 
-* Sat Nov 07 2009 Kyle McMartin <kyle at redhat.com> 2.6.31.5-126
-- Re-enable linux-2.6-die-closed-source-bios-muppets-die.patch, DMAR
-  still defaulting to off.
-
-* Sat Nov 07 2009 Kyle McMartin <kyle at redhat.com> 2.6.31.5-125
-- Disable linux-2.6-die-closed-source-bios-muppets-die.patch and
-  default DMAR to off (can be re-enabled with intel_iommu=on on the
-  command line due to last minute issues and reversion upstream.)
+* Fri Nov 13 2009 Chuck Ebbert <cebbert at redhat.com>
+- Linux 2.6.32-rc7
 
 * Thu Nov 05 2009 Jarod Wilson <jarod at redhat.com>
 - Add --with dbgonly rpmbuild option to build only debug kernels
 
-* Thu Nov 05 2009 Dave Airlie <airlied at redhat.com> 2.6.31.5-122
-- comment out kmap atomic for now, it breaks ppc build
-
-* Thu Nov 05 2009 Dave Airlie <airlied at redhat.com> 2.6.31.5-121
-- drm-radeon-fix-agp-resume.patch (#531825)
-
-* Thu Nov 05 2009 Kyle McMartin <kyle at redhat.com>
-- Add two patches from Soren from mingo/linux-2.6-x86.git to fix
-  debug_kmap_atomic prints.
-
-* Thu Nov 05 2009 Ben Skeggs <bskeggs at redhat.com>
-- nouveau: fix rh#532924
-
 * Wed Nov 04 2009 Kyle McMartin <kyle at redhat.com>
-- Make JBD2_DEBUG a toggleable debug setting. Leave it the way it was.
-  (Double checked resulting configs, don't fret.)
-
-* Wed Nov 04 2009 Adam Jackson <ajax at redhat.com> 2.6.31.5-117
-- drm-edid-retry.patch: Try DDC up to four times, like X. (#532957)
-
-* Wed Nov 04 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.5-116
-- tg3 bug fixes (#527209)
-
-* Wed Nov 04 2009 Kyle McMartin <kyle at redhat.com> 2.6.31.5-115
-- fs/pipe.c: fix null pointer dereference (CVE-2009-3547)
-
-* Wed Nov 04 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31.5-114
-- nouveau: provide info userspace needs to handle low memory situations
-- nouveau: fix for rh#532711
-- nouveau: add option to provide more debug info for rh#532579
-- patch only so large because of included register rename
+- Make JBD2_DEBUG a toggleable config option.
 
-* Tue Nov 03 2009 Adam Jackson <ajax at redhat.com> 2.6.31.5-113
-- drm-conservative-fallback-modes.patch: When an output is connected but
-  fails EDID, only add modes with refresh rates <= 60 (#514600)
+* Wed Nov 04 2009 Kyle McMartin <kyle at redhat.com> 2.6.32-0.39.rc6.git0
+- 2.6.32-rc6, fix for NULL ptr deref in cfg80211.
 
-* Tue Nov 03 2009 Dave Airlie <airlied at redhat.com> 2.6.31.5-112
-- drm-r600-lenovo-w500-fix.patch: add second patch from upstream fix
+* Mon Nov 02 2009 Kyle McMartin <kyle at redhat.com> 2.6.32-0.39.rc5.git6
+- 2.6.32-rc5-git6 (with sandeen's reversion of "ext4: Remove journal_checksum
+  mount option and enable it by default")
 
-* Tue Nov 03 2009 Dave Airlie <airlied at redhat.com> 2.6.31.5-111
-- drm-r600-lenovo-w500-fix.patch: fix lenovo w500 acpi video kill laptop dead
-- drop aspm r600 patch as correct fix should be in 110
+* Mon Nov 02 2009 Chuck Ebbert <cebbert at redhat.com>
+- 2.6.32-rc5-git5
 
-* Tue Nov 03 2009 Dave Airlie <airlied at redhat.com> 2.6.31.5-110
-- r600: fix for ring setup RMW issue.
-
-* Mon Nov 02 2009 John W. Linville <linville at redhat.com> 2.6.31.5-109
-- prism54: remove pci modinfo device table (#447047)
-
-* Mon Nov 02 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.5-108
-- Enable acerhdf driver for fan speed control on Acer Aspire One notebook (#532463)
-
-* Mon Nov 02 2009 Dave Airlie <airlied at redhat.com> 2.6.31.5-107
-- r600: back that out, thanks to yaneti for testing.
-
-* Mon Nov 02 2009 Dave Airlie <airlied at redhat.com> 2.6.31.5-106
-- r600: ring size guesswork fix.
-
-* Fri Oct 30 2009 Dave Airlie <airlied at redhat.com> 2.6.31.5-105
-- drm-radeon-agp-font-fix.patch: hopefully fix AGP coherency issue
-
-* Wed Oct 28 2009 Dave Airlie <airlied at redhat.com> 2.6.31.5-104
-- drm-next-ea1495a6.patch: fix rs400 resume on my test box
-
-* Wed Oct 28 2009 Dave Airlie <airlied at redhat.com> 2.6.31.5-103
-- drm-next-fc7f7119.patch: fix oops in SS code, fix multi-card, dvo.
-- drm-radeon-kms-arbiter-return-ignore.patch: fix arbiter for non-VGA display
-
-* Tue Oct 27 2009 Chuck Ebbert <cebbert at redhat.com>
-- Fix oops in VIA padlock-aes code.
+* Tue Oct 27 2009 John W. Linville <linville at redhat.com>
+- Disable build of prism54 module
 
 * Tue Oct 27 2009 Dave Airlie <airlied at redhat.com>
-- kms: add offb handoff patch for ppc to work
-
-* Tue Oct 27 2009 Ben Skeggs <bskeggs at redhat.com>
-- drm-nouveau.patch: misc fixes, very initial NVA8 work
-
-* Tue Oct 27 2009 Dave Airlie <airlied at redhat.com>
-- fix dd command lines
+- Get dd command line args correct.
 
 * Mon Oct 26 2009 Dave Jones <davej at redhat.com>
 - Make a 20MB initramfs file so rpm gets its diskspace calculations right. (#530778)
 
-* Mon Oct 26 2009 Dave Airlie <airlied at redhat.com> 2.6.31.5-97
-- drm: rebase to drm-next, drop palette fix, merged upstream
-- drm-intel-big-hammer.patch: drop, proper fix in 2.6.31.5
-- drm-disable-r600-aspm.patch: test patch to disable aspm on r600/r700 for now
-
-* Fri Oct 23 2009 Kyle McMartin <kyle at redhat.com> 2.6.31.5-96
-- Bump NR_CPUS to 256 on x86_64.
-- Add two backports (ugh, just had to go renaming perf counters to events...)
-  for fixing sysprof with perf.
-
-* Fri Oct 23 2009 Dave Airlie <airlied at redhat.com> 2.6.31.5-95
-- re enable MSI
-
-* Fri Oct 23 2009 Dave Airlie <airlied at redhat.com> 2.6.31.5-94
-- disable debug + stackprotector
-
-* Fri Oct 23 2009 Chuck Ebbert <cebbert at redhat.com>
-- Linux 2.6.31.5
-
-* Thu Oct 22 2009 Chuck Ebbert <cebbert at redhat.com>
-- Fix exploitable OOPS in keyring code. (CVE-2009-3624)
-- Fix kernel memory leak to userspace. (CVE-2009-3612)
-
-* Thu Oct 22 2009 Dave Airlie <airlied at redhat.com>  2.6.31.5-91.rc1
-- kms: fix palette
-
-* Wed Oct 21 2009 Chuck Ebbert <cebbert at redhat.com>
-- Disable powersave by default for AC97 audio devices. (#524414)
-
-* Wed Oct 21 2009 Chuck Ebbert <cebbert at redhat.com>
-- Linux 2.6.31.5-rc1
-- Remove the merged HP DC7900 workaround from iommu-updates patch.
+* Sat Oct 23 2009 Chuck Ebbert <cebbert at redhat.com>
+- 2.6.32-rc5-git3
 - Drop merged patch:
-  linux-2.6-raidlockdep.patch
-
-* Mon Oct 19 2009 Kyle McMartin <kyle at redhat.com>
-- af_unix-fix-deadlock-connecting-to-shutdown-socket.patch: fix for
-  rhbz#529626.
-
-* Sat Oct 17 2009 Chuck Ebbert <cebbert at redhat.com>
-- Replace linux-2.6-bluetooth-autosuspend.diff with upstream version.
+  linux-2.6-virtio_blk-revert-QUEUE_FLAG_VIRT-addition.patch
 
-* Fri Oct 16 2009 Josef Bacik <josef at toxicpanda.com>
-- Update btrfs to latest upstream
+* Sat Oct 17 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.32-0.33.rc5.git1
+- 2.6.32-rc5-git1
 
-* Fri Oct 16 2009 Michael Young <m.a.young at durham.ac.uk>
-- update pvops patch to 2.6.31.4
-- add configuration options for XEN_PCIDEV_BACKEND and XEN_PCIDEV_BE_DEBUG
+* Fri Oct 16 2009 Chuck Ebbert <cebbert at redhat.com>
+- 2.6.32-rc5
+- New config option: CONFIG_VMXNET3=m
 
-* Fri Oct 16 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.4-85
-- Fix another ACPI boot hang (#513680)
+* Wed Oct 14 2009 Chuck Ebbert <cebbert at redhat.com>
+- 2.6.32-rc4-git4
 
-* Fri Oct 16 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31.4-84
-- nouveau: more vbios opcodes, minor fixes, hopeful fix for rh#529292
-
-* Wed Oct 14 2009 Roland McGrath <roland at redhat.com> 2.6.31.4-83
-- Remove work-around for gcc bug #521991, now fixed.
-- Build *docs non-parallel, working around kernel's makefile bugs.
+* Wed Oct 14 2009 Steve Dickson <steved at redhat.com>
+- Updated the NFS v4 pseudo root patch so it will apply
+- Fixed hang during NFS installs (bz 528537)
 
 * Wed Oct 14 2009 Peter Jones <pjones at redhat.com>
 - Add scsi_register_device_handler to modules.block's symbol list so
   we'll have scsi device handlers in installer images.
 
-* Tue Oct 13 2009 Steve Dickson <steved at redhat.com> 2.6.31.4-81
-- Fixed hang during NFS installs (bz 528537)
-
-* Tue Oct 13 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.4-80
-- Disable 64-bit DMA on SB600 SATA controllers.
-
 * Tue Oct 13 2009 Kyle McMartin <kyle at redhat.com>
 - Always build perf docs, regardless of whether we build kernel-doc.
   Seems rather unfair to not ship the manpages half the time.
   Also, drop BuildRequires %if when not with_doc, the rules about %if
   there are f*!&^ing complicated.
 
-* Mon Oct 12 2009 Kyle McMartin <kyle at redhat.com>
-- Build the perf manpages properly.
-
-* Mon Oct 12 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.4-77
-- Fix boot hang with ACPI on some systems.
-
-* Mon Oct 12 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.4-76
-- Linux 2.6.31.4
+* Tue Oct 13 2009 Kyle McMartin <kyle at redhat.com>
+- Build perf manpages properly.
 
-* Mon Oct 12 2009 Kyle McMartin <kyle at redhat.com> 2.6.31.4-75.rc2
-- improve-resource-counter-scalability.patch: Fix scalability issues
-  on big machines, requested by prarit.
+* Tue Oct 13 2009 Dave Airlie <airlied at redhat.com>
+- cleanup some of drm vga arb bits that are upstream
 
 * Mon Oct 12 2009 Jarod Wilson <jarod at redhat.com>
-- Fix irq status check bugs in lirc_ene0100
+- Merge lirc compile fixes into lirc patch
+- Refresh lirc patch with additional irq handling fixage
+- Fix IR transmit on port 1 of 1st-gen mceusb transceiver
+- Support another mouse button variant on imon devices
 
-* Mon Oct 12 2009 Chuck Ebbert <cebbert at redhat.com>
-- Fix 2.6.31 regression that caused device failures with ACPI enabled.
+* Mon Oct 12 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.32-0.24.rc4.git0
+- Last-minute USB fix from upstream.
 
 * Sun Oct 11 2009 Chuck Ebbert <cebbert at redhat.com>
-- Linux 2.6.31.4-rc2
-- Drop merged patch: linux-2.6-frace-fixes.patch
+- Fix lirc build after header changes.
+- Fix bug in lirc interrupt processing.
 
-* Sat Oct 10 2009 Chuck Ebbert <cebbert at redhat.com>
-- Make performance counter API available to userspace programs (#527264)
+* Sun Oct 11 2009 Chuck Ebbert <cebbert at redhat.com>
+- Fix up multiple definition of debug options
+  (EXT4_DEBUG, DEBUG_FORCE_WEAK_PER_CPU)
 
-* Sat Oct 10 2009 Dave Jones <davej at redhat.com>
-- Drop the NX kernel data patch for now. Causes no-boot on some systems.
+* Sun Oct 11 2009 Chuck Ebbert <cebbert at redhat.com>
+- 2.6.32-rc4
+- New config options:
+  CONFIG_BE2ISCSI=m
+  CONFIG_SCSI_BFA_FC=m
+  CONFIG_USB_MUSB_HDRC is not set
 
-* Sat Oct 10 2009 Michael Young <m.a.young at durham.ac.uk>
-- update pvops patch
-- try putting DRM_RADEON and DRM_NOUVEAU back in
-
-* Fri Oct 09 2009 Dave Jones <davej at redhat.com>
-- Backport two critical ftrace fixes.
-  ftrace: check for failure for all conversions
-  tracing: correct module boundaries for ftrace_release
-
-* Fri Oct 09 2009 Jarod Wilson <jarod at redhat.com>
-- Build docs sub-package again
-
-* Thu Oct 08 2009 Kyle McMartin <kyle at redhat.com> 2.6.31.3-67
-- Linux 2.6.31.3
-- rebase drm-next trivially.
-- dropped merged upstream patches,
- - linux-2.6-fix-usb-serial-autosuspend.diff
- - linux-2.6-iwlagn-modify-digital-SVR-for-1000.patch
- - linux-2.6-iwlwifi-Handle-new-firmware-file-with-ucode-build-number-in-header.patch
- - linux-2.6-iwlwifi-fix-debugfs-buffer-handling.patch
- - linux-2.6-iwlwifi-fix-unloading-driver-while-scanning.patch
- - linux-2.6-iwlwifi-remove-deprecated-6000-series-adapters.patch
- - linux-2.6-iwlwifi-traverse-linklist-to-find-the-valid-OTP-block.patch
- - linux-2.6-iwlwifi-update-1000-series-API-version-to-match-firmware.patch
- - linux-2.6-xen-check-efer-fix.patch
- - linux-2.6-xen-spinlock-enable-interrupts-only-when-blocking.patch
- - linux-2.6-xen-spinlock-stronger-barrier.patch
- - linux-2.6-xen-stack-protector-fix.patch
- - linux-2.6.31-cpufreq-powernow-k8-oops.patch
+* Sun Oct 11 2009 Kyle McMartin <kyle at redhat.com>
+- 2.6.32-rc3-git3
 
 * Thu Oct 08 2009 Ben Skeggs <bskeggs at redhat.com>
 - ppc: compile nvidiafb as a module only, nvidiafb+nouveau = bang! (rh#491308)
 
-* Thu Oct 08 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31.1-65
-- nouveau: {drm-next,context,fbcon,misc} fixes, connector forcing
-
-* Thu Oct 08 2009 Dave Airlie <airlied at redhat.com> 2.6.31.1-64
-- rebase latest drm-next, fixes many s/r and r600 problems
-
-* Wed Oct 07 2009 Dave Jones <davej at redhat.com>
-- Don't mark the initramfs file as a ghost.
-
 * Wed Oct 07 2009 Dave Jones <davej at redhat.com>
 - Enable FUNCTION_GRAPH_TRACER on x86-64.
 
@@ -2595,90 +2450,55 @@ fi
 - Disable CONFIG_IRQSOFF_TRACER on srostedt's recommendation.
   (Adds unwanted overhead when not in use).
 
-* Tue Oct  6 2009 Justin M. Forbes <jforbes at redhat.com>
-- virtio_blk: add support for cache flush (#526869)
-
-* Sat Oct  3 2009 Michael Young <m.a.young at durham.ac.uk>
-- update pvops patch
-
-* Fri Oct  2 2009 John W. Linville <linville at redhat.com>
-- Backport "iwlwifi: reduce noise when skb allocation fails"
-
-* Wed Sep 30 2009 David Woodhouse <David.Woodhouse at intel.com>
-- Update IOMMU code; mostly a bunch more workarounds for broken BIOSes.
-
-* Wed Sep 30 2009 Dave Airlie <airlied at redhat.com> 2.6.31.1-56
-- revert all the arjan patches until someone tests them.
-
-* Tue Sep 29 2009 Steve Dickson <steved at redhat.com>  2.6.31.1-55
-- Updated the NFS4 pseudo root code with a fix from upstream
-
-* Tue Sep 29 2009 Dave Airlie <airlied at redhat.com> 2.6.31.1-54
-- Fix broken capabilties that stopped dbus working due to copy from user
-  fixups.
+* Sun Oct 04 2009 Kyle McMartin <kyle at redhat.com> 2.6.32-0.17.rc3.git0
+- 2.6.32-rc3 (bah, rebase script didn't catch it.)
 
-* Tue Sep 29 2009 Dave Airlie <airlied at redhat.com> 2.6.31.1-53
-- drm-next-4c57edba4.patch: fix r600 dri1 memory leak and r600 bugs
-
-* Mon Sep 28 2009 Dave Jones <davej at redhat.com> 2.6.31.1-52
-- Use __builtin_object_size to validate the buffer size for copy_from_user
-  + associated fixes to various copy_from_user invocations.
-
-* Mon Sep 28 2009 Justin M. Forbes <jmforbes at redhat.com> 2.6.31.1-50
-- Increase timeout for xen frontend devices to connect.
-
-* Sat Sep 26 2009 Michael Young <m.a.young at durham.ac.uk>
-- disable DRM_RADEON  and DRM_NOUVEAU due to build problems
-
-* Sat Sep 26 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.1-49
-- Add Xen spinlock patches to improve scalability.
-
-* Sat Sep 26 2009 Dave Airlie <airlied at redhat.com> 2.6.31.1-48
-- drm-next-8ef8678c8.patch: fix intel/nouveau kms
-
-* Fri Sep 25 2009 Justin M. Forbes <bskeggs at redhat.com> 2.6.31.1-47
-- Fix xen guest booting when NX is disabled (#525290)
-
-* Fri Sep 25 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31.1-46
-- drm-nouveau.patch: cleanups, fixes, pre-G80 s/r fixes, init rework
-
-* Fri Sep 25 2009 Dave Airlie <airlied at redhat.com> 2.6.31.1-45
-- drm-next-adea4796c.patch: fix r600 glxgears
-
-* Fri Sep 25 2009 Dave Airlie <airlied at redhat.com> 2.6.31.1-44
-- bump a extra one because I accidentially CVS.
-
-* Thu Sep 24 2009 Dave Airlie <airlied at redhat.com> 2.6.31.1-42
-- drm-next update - fix r600 s/r, and command line mode picking and r600 tv
-
-* Thu Sep 24 2009 Michael Young <m.a.young at durham.ac.uk>
-- Try a dri fix in the latest xen/master
-
-* Thu Sep 24 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31.1-41
-- Linux 2.6.31.1
-- Drop patches merged upstream:
-    linux-2.6-kvm-vmx-check-cpl-before-emulating-debug-register-access.patch
-    linux-2.6-use-__pa_symbol-to-calculate-address-of-C-symbol.patch
-    linux-2.6-kvm-pvmmu-do-not-batch-pte-updates-from-interrupt-context.patch
-    linux-2.6-scsi-sd-fix-oops-during-scanning.patch
-    linux-2.6-scsi-sg-fix-oops-in-error-path.patch
-
-* Thu Sep 24 2009 Chuck Ebbert <cebbert at redhat.com> 2.6.31-40
-- Drop the modules-ro-nx patch: it's causing ftrace to be unable
-  to NOP out module function call tracking. (#524042)
-
-* Wed Sep 23 2009 Kyle McMartin <kyle at redhat.com> 2.6.31-39
-- touch initramfs-$foo not dracut-$foo.
-
-* Wed Sep 23 2009 Adam Jackson <ajax at redhat.com> 2.6.31-37
-- drm: Fix various buglets in EDID parsing.
-
-* Mon Sep 21 2009 Ben Skeggs <bskeggs at redhat.com>
-- nouveau: more on rh#522649, added some useful info to debugfs
-- lots of coding style cleanups, which is the reason for the huge commit
-
-* Sat Sep 19 2009 Michael Young <m.a.young at durham.ac.uk>
-- Switch pvops from rebase/master to xen/master branch
+* Sun Oct 04 2009 Kyle McMartin <kyle at redhat.com>
+- 2.6.32-rc1-git7
+- [x86,x86_64] ACPI_PROCESSOR_AGGREGATOR=m
+
+* Mon Sep 28 2009 Kyle McMartin <kyle at redhat.com>
+- 2.6.32-rc1
+- rebased crash-driver patchset, ia64_ksyms.c conflicts. move x86 crash.h
+  file to the right place.
+- full changelog forthcoming & to fedora-kernel-list.
+
+* Mon Sep 28 2009 Kyle McMartin <kyle at redhat.com>
+- sick of rejects.
+
+* Mon Sep 28 2009 Chuck Ebbert <cebbert at redhat.com>
+- Fix up some items missing in make debug vs. make release,
+  rearrange so the options are in the same order.
+- Add new debug options:
+  CONFIG_EXT4_DEBUG
+  CONFIG_DEBUG_FORCE_WEAK_PER_CPU
+
+* Sun Sep 27 2009 Kyle McMartin <kyle at redhat.com>
+- Must now make mrproper after each config pass, due to Kbuild
+  stashing away the $ARCH variable.
+
+* Sun Sep 27 2009 Kyle McMartin <kyle at redhat.com>
+- 2.6.31-git18
+- rebased:
+ - hdpvr-ir-enable.patch
+ - linux-2.6-build-nonintconfig.patch
+ - linux-2.6-debug-sizeof-structs.patch
+ - linux-2.6-debug-vm-would-have-oomkilled.patch
+ - linux-2.6-execshield.patch
+ - linux-2.6-makefile-after_link.patch
+ - linux-2.6-serial-460800.patch
+ - linux-2.6-utrace.patch
+ - via-hwmon-temp-sensor.patch
+- merged:
+ - linux-2.6-tracehook.patch
+ - linux-2.6-die-closed-source-bios-muppets-die.patch
+ - linux-2.6-intel-iommu-updates.patch
+ - linux-2.6-ksm.patch
+ - linux-2.6-ksm-updates.patch
+ - linux-2.6-ksm-fix-munlock.patch
+ - linux-2.6-vga-arb.patch
+ - v4l-dvb-fix-cx25840-firmware-loading.patch
+ - linux-2.6-rtc-show-hctosys.patch
 
 * Fri Sep 18 2009 Dave Jones <davej at redhat.com>
 - %ghost the dracut initramfs file.
@@ -2687,62 +2507,68 @@ fi
 - Now that we have %%post generation of dracut images we do not need to
   Require dracut-kernel anymore
 
-* Thu Sep 17 2009 Kyle McMartin <kyle at redhat.com> 2.6.31-33
-- Turn off CONFIG_CC_OPTIMIZE_FOR_SIZE on ppc64 until ld decides to play nice
-  and generate the save/restore stubs.
-
-* Thu Sep 17 2009 Kristian Høgsberg <krh at redhat.com>
-- Drop drm page-flip patch for F12.
-
-* Thu Sep 17 2009 Dave Jones <davej at redhat.com>
-- cpuidle: Fix the menu governor to boost IO performance.
-
-* Wed Sep 16 2009 John W. Linville <linville at redhat.com>
-- Add a few more iwl1000 support patches.
-- Remove support for deprecated iwl6000 parts.
-
-* Wed Sep 16 2009 Eric Paris <eparis at redhat.com>
-- Do not check CAP_SYS_MODULE when networking tres to autoload a module
-
-* Wed Sep 16 2009 John W. Linville <linville at redhat.com>
-- Add iwl1000 support patches.
-
-* Wed Sep 16 2009 Adam Jackson <ajax at redhat.com>
-- Disable hotplug interrupts on TV connectors on i915.
-
-* Wed Sep 16 2009 Dave Jones <davej at redhat.com>
-- Fix NULL deref in powernow-k8 driver. (korg #13780)
-
-* Wed Sep 16 2009 Hans de Goede <hdegoede at redhat.com>
-- Fix lockdep warning (and potential real deadlock) in mdraid10 code,
-  requested for -stable, rh#515471
-
-* Wed Sep 16 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31-17
-- nouveau: potential fix for rh#522649 + misc other fixes
-
-* Tue Sep 15 2009 Chuck Ebbert <cebbert at redhat.com>
-- Add unused-kernel-patches Make target, change some patches to
-  use ApplyOptionalPatch
-
-* Tue Sep 15 2009 Michael Young <m.a.young at durham.ac.uk>
-- switch to the F-12 branch for the moment
-- try an NX related fix
-
-* Tue Sep 15 2009 Ben Skeggs <bskeggs at redhat.com>
-- nouveau: misc fixes to context-related issues, fixes some severe nv4x bugs
+* Thu Sep 17 2009 Chuck Ebbert <cebbert at redhat.com>
+- Disable drm-nouveau too -- it won't build without other
+  drm updates.
+
+* Wed Sep 16 2009 Roland McGrath <roland at redhat.com>
+- Remove workaround for gcc bug #521991, now fixed.
+
+* Tue Sep 15 2009 Kyle McMartin <kyle at redhat.com>
+- 2.6.31-git4
+- rebased:
+ - linux-2.6-execshield.patch: split paravirt_types.h
+ - linux-2.6-buildnonintconfig.patch
+- disabled:
+ - ksm, drm.
+- merged:
+ - linux-2.6-kvm-pvmmu-do-not-batch-pte-updates-from-interrupt-context.patch
+ - linux-2.6-kvm-vmx-check-cpl-before-emulating-debug-register-access.patch
+ - linux-2.6-use-__pa_symbol-to-calculate-address-of-C-symbol.patch
+ - linux-2.6-xen-stack-protector-fix.patch
+ - linux-2.6-bluetooth-autosuspend.diff
+ - hid-ignore-all-recent-imon-devices.patch
+- config changes:
+ - arm:
+  - CONFIG_HIGHPTE off, seems safer this way.
+ - generic:
+  - RDS_RDMA/RDS_TCP=m
+  - SCSI_PMCRAID=m
+  - WLAN=y, CFG80211_DEFAULT_PS=y, NL80211_TESTMODE off.
+  - WL12XX=m
+  - B43_PHY_LP=y
+  - BT_MRVL=m
+  - new MISDN stuff modular.
+ - sparc:
+  - enable PERF_COUNTERS & EVENT_PROFILE
+ - ppc:
+  - XILINX_EMACSLITE=m
 
-* Tue Sep 15 2009 Ben Skeggs <bskeggs at redhat.com>
-- nouveau: temporarily disable fbcon accel, it's racing with ttm
+* Mon Sep 14 2009 Chuck Ebbert <cebbert at redhat.com>
+- 2.6.31-git2
+- Drop merged patches:
+  sched-introduce-SCHED_RESET_ON_FORK-scheduling-policy-flag.patch
+  linux-2.6-nfs4-ver4opt.patch
+  linux-2.6-alsa-improve-hda-powerdown.patch
+  alsa-tell-user-that-stream-to-be-rewound-is-suspended.patch
+  linux-2.6-ahci-export-capabilities.patch
+- New s390 config option:
+   CONFIG_SCLP_ASYNC=m
+- New generic config options:
+   CONFIG_ATA_VERBOSE_ERROR=y
+   CONFIG_PATA_RDC=m
+   CONFIG_SOUND_OSS_CORE_PRECLAIM=y
+   CONFIG_SND_HDA_PATCH_LOADER=y
+   CONFIG_SND_HDA_CODEC_CIRRUS=y
+   CONFIG_OPROFILE_EVENT_MULTIPLEX=y
+   CONFIG_CRYPTO_VMAC=m
+   CONFIG_CRYPTO_GHASH=m
+- New debug option:
+   CONFIG_DEBUG_CREDENTIALS=y in debug kernels
 
 * Mon Sep 14 2009 Steve Dickson <steved at redhat.com>
 - Added support for -o v4 mount parsing
 
-* Mon Sep 14 2009 Ben Skeggs <bskeggs at redhat.com>
-- nouveau: avoid PFIFO IRQ hardlock, misc LVDS mode fixes, nv5x RAMFC cleanup
-
-* Sun Sep 13 2009 Chuck Ebbert <cebbert at redhat.com>
-- SCSI oops fixes requested for -stable
-
 * Fri Sep 11 2009 Dave Jones <davej at redhat.com>
 - Apply NX/RO to modules
 
@@ -3180,7 +3006,7 @@ fi
 * Thu Jul 30 2009 Ben Skeggs <bskeggs at redhat.com>
 - nouveau: another DCB 1.5 entry, G80 corruption fixes, small <G80 KMS fix
 
-* Thu Jul 30 2009 Dave Airlie <airlied at redhat.com> 
+* Thu Jul 30 2009 Dave Airlie <airlied at redhat.com>
 - fix VGA ARB + kms
 
 * Wed Jul 29 2009 Dave Jones <davej at redhat.com>
@@ -3422,7 +3248,6 @@ fi
   include/linux/swiotlb.h so disable the options CONFIG_DRM_RADEON_KMS
   and CONFIG_DRM_NOUVEAU that use it.
 
-
 * Sat Jun 27 2009 Ben Skeggs <bskeggs at redhat.com> 2.6.31-0.33.rc1.git2
 - drm-nouveau.patch: fix conflicts from 2.6.31-rc1-git2
 

linux-2.6-build-nonintconfig.patch:
 Makefile |    5 +++++
 conf.c   |   36 ++++++++++++++++++++++++++++++++----
 2 files changed, 37 insertions(+), 4 deletions(-)

Index: linux-2.6-build-nonintconfig.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-build-nonintconfig.patch,v
retrieving revision 1.15
retrieving revision 1.15.16.1
diff -u -p -r1.15 -r1.15.16.1
--- linux-2.6-build-nonintconfig.patch	30 Sep 2008 03:24:30 -0000	1.15
+++ linux-2.6-build-nonintconfig.patch	31 Jan 2010 17:57:52 -0000	1.15.16.1
@@ -1,10 +1,10 @@
 diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
-index 32e8c5a..8020453 100644
+index 6d69c7c..ff84d12 100644
 --- a/scripts/kconfig/Makefile
 +++ b/scripts/kconfig/Makefile
-@@ -24,6 +24,11 @@ oldconfig: $(obj)/conf
- silentoldconfig: $(obj)/conf
- 	$< -s $(Kconfig)
+@@ -58,6 +58,11 @@ localyesconfig: $(obj)/streamline_config.pl $(obj)/conf
+ 	fi
+ 	$(Q)rm -f .tmp.config
  
 +nonint_oldconfig: $(obj)/conf
 +	$< -b $(Kconfig)
@@ -15,10 +15,10 @@ index 32e8c5a..8020453 100644
  # Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files
  # The symlink is used to repair a deficiency in arch/um
 diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
-index fda6313..ed33b66 100644
+index 9960d1c..ac8d455 100644
 --- a/scripts/kconfig/conf.c
 +++ b/scripts/kconfig/conf.c
-@@ -22,6 +22,8 @@
+@@ -23,6 +23,8 @@ enum {
  	ask_all,
  	ask_new,
  	ask_silent,
@@ -27,16 +27,7 @@ index fda6313..ed33b66 100644
  	set_default,
  	set_yes,
  	set_mod,
-@@ -39,6 +41,8 @@
- 
- static char nohelp_text[] = N_("Sorry, no help available for this option yet.\n");
- 
-+static int return_value = 0;
-+
- static const char *get_help(struct menu *menu)
- {
- 	if (menu_has_help(menu))
-@@ -359,7 +363,10 @@
+@@ -360,7 +362,10 @@ static void conf(struct menu *menu)
  
  		switch (prop->type) {
  		case P_MENU:
@@ -48,7 +39,16 @@ index fda6313..ed33b66 100644
  				check_conf(menu);
  				return;
  			}
-@@ -417,12 +424,21 @@
+@@ -406,6 +411,8 @@ conf_childs:
+ 		indent -= 2;
+ }
+ 
++static int return_value;
++
+ static void check_conf(struct menu *menu)
+ {
+ 	struct symbol *sym;
+@@ -418,12 +425,21 @@ static void check_conf(struct menu *menu)
  	if (sym && !sym_has_value(sym)) {
  		if (sym_is_changable(sym) ||
  		    (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {
@@ -70,7 +70,7 @@ index fda6313..ed33b66 100644
  
  	for (child = menu->list; child; child = child->next)
  		check_conf(child);
-@@ -438,7 +454,7 @@
+@@ -439,7 +455,7 @@ int main(int ac, char **av)
  	bindtextdomain(PACKAGE, LOCALEDIR);
  	textdomain(PACKAGE);
  
@@ -79,7 +79,7 @@ index fda6313..ed33b66 100644
  		switch (opt) {
  		case 'o':
  			input_mode = ask_silent;
-@@ -447,6 +463,12 @@
+@@ -448,6 +464,12 @@ int main(int ac, char **av)
  			input_mode = ask_silent;
  			sync_kconfig = 1;
  			break;
@@ -92,7 +92,7 @@ index fda6313..ed33b66 100644
  		case 'd':
  			input_mode = set_default;
  			break;
-@@ -510,6 +532,8 @@
+@@ -525,6 +547,8 @@ int main(int ac, char **av)
  	case ask_silent:
  	case ask_all:
  	case ask_new:
@@ -101,7 +101,7 @@ index fda6313..ed33b66 100644
  		conf_read(NULL);
  		break;
  	case set_no:
-@@ -571,12 +595,16 @@
+@@ -586,12 +610,16 @@ int main(int ac, char **av)
  		conf(&rootmenu);
  		input_mode = ask_silent;
  		/* fall through */
@@ -119,7 +119,7 @@ index fda6313..ed33b66 100644
  		break;
  	}
  
-@@ -598,5 +626,5 @@
+@@ -613,5 +641,5 @@ int main(int ac, char **av)
  			exit(1);
  		}
  	}

linux-2.6-crash-driver.patch:
 arch/ia64/include/asm/crash.h |   90 +++++++++++++++++++++++++++++
 arch/ia64/kernel/ia64_ksyms.c |    3 
 arch/x86/include/asm/crash.h  |   75 ++++++++++++++++++++++++
 arch/x86/mm/ioremap.c         |    1 
 drivers/char/Kconfig          |    2 
 drivers/char/Makefile         |    2 
 drivers/char/crash.c          |  128 ++++++++++++++++++++++++++++++++++++++++++
 7 files changed, 301 insertions(+)

Index: linux-2.6-crash-driver.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-crash-driver.patch,v
retrieving revision 1.12.6.3
retrieving revision 1.12.6.4
diff -u -p -r1.12.6.3 -r1.12.6.4
--- linux-2.6-crash-driver.patch	14 Apr 2009 22:09:15 -0000	1.12.6.3
+++ linux-2.6-crash-driver.patch	31 Jan 2010 17:57:53 -0000	1.12.6.4
@@ -95,24 +95,105 @@ index 0000000..541af84
 +
 +#endif /* _ASM_IA64_CRASH_H */
 diff --git a/arch/ia64/kernel/ia64_ksyms.c b/arch/ia64/kernel/ia64_ksyms.c
-index 6da1f20..2984fb3 100644
+index 14d39e3..cf3d040 100644
 --- a/arch/ia64/kernel/ia64_ksyms.c
 +++ b/arch/ia64/kernel/ia64_ksyms.c
-@@ -86,6 +86,9 @@ EXPORT_SYMBOL(ia64_save_scratch_fpregs);
+@@ -84,6 +84,9 @@ EXPORT_SYMBOL(ia64_save_scratch_fpregs);
  #include <asm/unwind.h>
  EXPORT_SYMBOL(unw_init_running);
  
 +#include <linux/efi.h>
 +EXPORT_SYMBOL_GPL(efi_mem_type);
 +
- #ifdef ASM_SUPPORTED
- # ifdef CONFIG_SMP
- #  if (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
+ #if defined(CONFIG_IA64_ESI) || defined(CONFIG_IA64_ESI_MODULE)
+ extern void esi_call_phys (void);
+ EXPORT_SYMBOL_GPL(esi_call_phys);
+diff --git a/arch/x86/include/asm/crash.h b/arch/x86/include/asm/crash.h
+new file mode 100644
+index 0000000..dfcc006
+--- /dev/null
++++ b/arch/x86/include/asm/crash.h
+@@ -0,0 +1,75 @@
++#ifndef _ASM_I386_CRASH_H
++#define _ASM_I386_CRASH_H
++
++/*
++ * linux/include/asm-i386/crash.h
++ *
++ * Copyright (c) 2004 Red Hat, Inc. All rights reserved.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2, or (at your option)
++ * any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ *
++ */
++
++#ifdef __KERNEL__
++
++#include <linux/mm.h>
++#include <linux/highmem.h>
++#include <asm/mmzone.h>
++
++extern int page_is_ram(unsigned long);
++
++static inline void *
++map_virtual(u64 offset, struct page **pp)
++{
++	struct page *page;
++	unsigned long pfn;
++	void *vaddr;
++
++	pfn = (unsigned long)(offset >> PAGE_SHIFT);
++
++	if (!page_is_ram(pfn)) {
++		printk(KERN_INFO
++		    "crash memory driver: !page_is_ram(pfn: %lx)\n", pfn);
++		return NULL;
++	}
++
++	if (!pfn_valid(pfn)) {
++		printk(KERN_INFO
++		    "crash memory driver: invalid pfn: %lx )\n", pfn);
++		return NULL;
++	}
++
++	page = pfn_to_page(pfn);
++
++	vaddr = kmap(page);
++	if (!vaddr) {
++		printk(KERN_INFO
++		    "crash memory driver: pfn: %lx kmap(page: %lx) failed\n", 
++			pfn, (unsigned long)page);
++		return NULL;
++	}
++
++	*pp = page;
++	return (vaddr + (offset & (PAGE_SIZE-1)));
++}
++
++static inline void unmap_virtual(struct page *page) 
++{ 
++	kunmap(page);
++}
++
++#endif /* __KERNEL__ */
++
++#endif /* _ASM_I386_CRASH_H */
 diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
-index d4c4307..d1c968f 100644
+index 334e63c..8e1ccbc 100644
 --- a/arch/x86/mm/ioremap.c
 +++ b/arch/x86/mm/ioremap.c
-@@ -133,6 +133,7 @@ int page_is_ram(unsigned long pagenr)
+@@ -60,6 +60,7 @@ int page_is_ram(unsigned long pagenr)
  	}
  	return 0;
  }
@@ -121,10 +202,10 @@ index d4c4307..d1c968f 100644
  /*
   * Fix up the linear direct mapping of the kernel to avoid cache attribute
 diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
-index 43d6ba8..0d81c9a 100644
+index 08a6f50..8bc5e9a 100644
 --- a/drivers/char/Kconfig
 +++ b/drivers/char/Kconfig
-@@ -460,6 +460,8 @@ config LEGACY_PTYS
+@@ -484,6 +484,8 @@ config LEGACY_PTYS
  	  security.  This option enables these legacy devices; on most
  	  systems, it is safe to say N.
  
@@ -134,10 +215,10 @@ index 43d6ba8..0d81c9a 100644
  config LEGACY_PTY_COUNT
  	int "Maximum number of legacy PTY in use"
 diff --git a/drivers/char/Makefile b/drivers/char/Makefile
-index 438f713..1b7767b 100644
+index 19a79dd..0bee860 100644
 --- a/drivers/char/Makefile
 +++ b/drivers/char/Makefile
-@@ -109,6 +109,8 @@ obj-$(CONFIG_PS3_FLASH)		+= ps3flash.o
+@@ -112,6 +112,8 @@ obj-$(CONFIG_PS3_FLASH)		+= ps3flash.o
  obj-$(CONFIG_JS_RTC)		+= js-rtc.o
  js-rtc-y = rtc.o
  
@@ -280,84 +361,3 @@ index 0000000..e5437de
 +module_exit(crash_cleanup_module);
 +
 +MODULE_LICENSE("GPL");
-diff --git a/include/asm-x86/crash.h b/include/asm-x86/crash.h
-new file mode 100644
-index 0000000..dfcc006
---- /dev/null
-+++ b/include/asm-x86/crash.h
-@@ -0,0 +1,75 @@
-+#ifndef _ASM_I386_CRASH_H
-+#define _ASM_I386_CRASH_H
-+
-+/*
-+ * linux/include/asm-i386/crash.h
-+ *
-+ * Copyright (c) 2004 Red Hat, Inc. All rights reserved.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifdef __KERNEL__
-+
-+#include <linux/mm.h>
-+#include <linux/highmem.h>
-+#include <asm/mmzone.h>
-+
-+extern int page_is_ram(unsigned long);
-+
-+static inline void *
-+map_virtual(u64 offset, struct page **pp)
-+{
-+	struct page *page;
-+	unsigned long pfn;
-+	void *vaddr;
-+
-+	pfn = (unsigned long)(offset >> PAGE_SHIFT);
-+
-+	if (!page_is_ram(pfn)) {
-+		printk(KERN_INFO
-+		    "crash memory driver: !page_is_ram(pfn: %lx)\n", pfn);
-+		return NULL;
-+	}
-+
-+	if (!pfn_valid(pfn)) {
-+		printk(KERN_INFO
-+		    "crash memory driver: invalid pfn: %lx )\n", pfn);
-+		return NULL;
-+	}
-+
-+	page = pfn_to_page(pfn);
-+
-+	vaddr = kmap(page);
-+	if (!vaddr) {
-+		printk(KERN_INFO
-+		    "crash memory driver: pfn: %lx kmap(page: %lx) failed\n", 
-+			pfn, (unsigned long)page);
-+		return NULL;
-+	}
-+
-+	*pp = page;
-+	return (vaddr + (offset & (PAGE_SIZE-1)));
-+}
-+
-+static inline void unmap_virtual(struct page *page) 
-+{ 
-+	kunmap(page);
-+}
-+
-+#endif /* __KERNEL__ */
-+
-+#endif /* _ASM_I386_CRASH_H */

linux-2.6-debug-sizeof-structs.patch:
 main.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

Index: linux-2.6-debug-sizeof-structs.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-debug-sizeof-structs.patch,v
retrieving revision 1.6.16.1
retrieving revision 1.6.16.2
diff -u -p -r1.6.16.1 -r1.6.16.2
--- linux-2.6-debug-sizeof-structs.patch	9 Jul 2009 22:53:01 -0000	1.6.16.1
+++ linux-2.6-debug-sizeof-structs.patch	31 Jan 2010 17:57:53 -0000	1.6.16.2
@@ -1,19 +1,10 @@
-From 3def38bec43d38391d0c9e910dee10317b2ef250 Mon Sep 17 00:00:00 2001
-From: Kyle McMartin <kyle at phobos.i.jkkm.org>
-Date: Wed, 8 Jul 2009 13:01:42 -0400
-Subject: [PATCH 1/6] fedora: linux-2.6-debug-sizeof-structs.patch
-
----
- init/main.c |   13 +++++++++++++
- 1 files changed, 13 insertions(+), 0 deletions(-)
-
 diff --git a/init/main.c b/init/main.c
-index 2c5ade7..1c25f08 100644
+index 7449819..98cfaae 100644
 --- a/init/main.c
 +++ b/init/main.c
-@@ -397,6 +397,10 @@ static void __init setup_per_cpu_areas(void)
+@@ -369,6 +369,10 @@ static void __init setup_nr_cpu_ids(void)
+ 	nr_cpu_ids = find_last_bit(cpumask_bits(cpu_possible_mask),NR_CPUS) + 1;
  }
- #endif /* CONFIG_HAVE_SETUP_PER_CPU_AREA */
  
 +#include <linux/ext3_fs_i.h>
 +#include <linux/skbuff.h>
@@ -22,7 +13,7 @@ index 2c5ade7..1c25f08 100644
  /* Called by boot processor to activate the rest. */
  static void __init smp_init(void)
  {
-@@ -419,6 +423,15 @@ static void __init smp_init(void)
+@@ -391,6 +395,15 @@ static void __init smp_init(void)
  	/* Any cleanup work */
  	printk(KERN_INFO "Brought up %ld CPUs\n", (long)num_online_cpus());
  	smp_cpus_done(setup_max_cpus);
@@ -38,6 +29,3 @@ index 2c5ade7..1c25f08 100644
  }
  
  #endif
--- 
-1.6.2.5
-

linux-2.6-debug-taint-vm.patch:
 kernel/panic.c |    1 +
 mm/slab.c      |    8 ++++----
 mm/slub.c      |    3 +--
 3 files changed, 6 insertions(+), 6 deletions(-)

Index: linux-2.6-debug-taint-vm.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-debug-taint-vm.patch,v
retrieving revision 1.23.6.1
retrieving revision 1.23.6.2
diff -u -p -r1.23.6.1 -r1.23.6.2
--- linux-2.6-debug-taint-vm.patch	9 Jul 2009 22:53:01 -0000	1.23.6.1
+++ linux-2.6-debug-taint-vm.patch	31 Jan 2010 17:57:53 -0000	1.23.6.2
@@ -5,7 +5,6 @@ Subject: [PATCH 3/6] fedora: linux-2.6-d
 
 ---
  kernel/panic.c  |    4 +++-
- mm/page_alloc.c |    5 +++--
  mm/slab.c       |    8 ++++----
  mm/slub.c       |    2 +-
  4 files changed, 11 insertions(+), 8 deletions(-)
@@ -22,33 +21,6 @@ index 984b3ec..6d1c3be 100644
  
  int test_taint(unsigned flag)
  {
-@@ -350,7 +351,8 @@ static void warn_slowpath_common(const char *file, int line, void *caller, struc
- 	const char *board;
- 
- 	printk(KERN_WARNING "------------[ cut here ]------------\n");
--	printk(KERN_WARNING "WARNING: at %s:%d %pS()\n", file, line, caller);
-+	printk(KERN_WARNING "WARNING: at %s:%d %pS() (%s)\n",
-+		file, line, caller, print_tainted());
- 	board = dmi_get_system_info(DMI_PRODUCT_NAME);
- 	if (board)
- 		printk(KERN_WARNING "Hardware name: %s\n", board);
-diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index e0f2cdf..21dcbc4 100644
---- a/mm/page_alloc.c
-+++ b/mm/page_alloc.c
-@@ -257,9 +257,10 @@ static void bad_page(struct page *page)
- 	printk(KERN_ALERT "BUG: Bad page state in process %s  pfn:%05lx\n",
- 		current->comm, page_to_pfn(page));
- 	printk(KERN_ALERT
--		"page:%p flags:%p count:%d mapcount:%d mapping:%p index:%lx\n",
-+		"page:%p flags:%p count:%d mapcount:%d mapping:%p ",
- 		page, (void *)page->flags, page_count(page),
--		page_mapcount(page), page->mapping, page->index);
-+		page_mapcount(page), page->mapping);
-+	printk(KERN_CONT "index:%lx (%s)\n", page->index, print_tainted());
- 
- 	dump_stack();
- out:
 diff --git a/mm/slab.c b/mm/slab.c
 index e74a16e..7bc287e 100644
 --- a/mm/slab.c

linux-2.6-debug-vm-would-have-oomkilled.patch:
 kernel/sysctl.c |    9 +++++++++
 mm/oom_kill.c   |    7 +++++++
 2 files changed, 16 insertions(+)

Index: linux-2.6-debug-vm-would-have-oomkilled.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-debug-vm-would-have-oomkilled.patch,v
retrieving revision 1.2.6.2
retrieving revision 1.2.6.3
diff -u -p -r1.2.6.2 -r1.2.6.3
--- linux-2.6-debug-vm-would-have-oomkilled.patch	19 Aug 2009 20:22:46 -0000	1.2.6.2
+++ linux-2.6-debug-vm-would-have-oomkilled.patch	31 Jan 2010 17:57:53 -0000	1.2.6.3
@@ -1,8 +1,8 @@
 diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index b2a2d68..3b132ee 100644
+index 0d949c5..8fb2bd9 100644
 --- a/kernel/sysctl.c
 +++ b/kernel/sysctl.c
-@@ -67,6 +67,7 @@ extern int sysctl_overcommit_ratio;
+@@ -72,6 +72,7 @@ extern int sysctl_overcommit_ratio;
  extern int sysctl_panic_on_oom;
  extern int sysctl_oom_kill_allocating_task;
  extern int sysctl_oom_dump_tasks;
@@ -10,7 +10,7 @@ index b2a2d68..3b132ee 100644
  extern int max_threads;
  extern int core_uses_pid;
  extern int suid_dumpable;
-@@ -861,6 +862,14 @@ static struct ctl_table vm_table[] = {
+@@ -1073,6 +1074,14 @@ static struct ctl_table vm_table[] = {
  		.proc_handler	= &proc_dointvec,
  	},
  	{
@@ -26,7 +26,7 @@ index b2a2d68..3b132ee 100644
  		.procname	= "overcommit_ratio",
  		.data		= &sysctl_overcommit_ratio,
 diff --git a/mm/oom_kill.c b/mm/oom_kill.c
-index f255eda..3335a94 100644
+index ea2147d..788fe84 100644
 --- a/mm/oom_kill.c
 +++ b/mm/oom_kill.c
 @@ -31,6 +31,7 @@
@@ -37,7 +37,7 @@ index f255eda..3335a94 100644
  static DEFINE_SPINLOCK(zone_scan_lock);
  /* #define DEBUG */
  
-@@ -321,6 +322,12 @@ static void __oom_kill_task(struct task_struct *p, int verbose)
+@@ -356,6 +357,12 @@ static void __oom_kill_task(struct task_struct *p, int verbose)
  		return;
  	}
  
@@ -50,16 +50,3 @@ index f255eda..3335a94 100644
  	if (verbose)
  		printk(KERN_ERR "Killed process %d (%s)\n",
  				task_pid_nr(p), p->comm);
-@@ -363,6 +370,12 @@ static int oom_kill_task(struct task_struct *p)
- 			return 1;
- 	} while_each_thread(g, q);
- 
-+	if (sysctl_would_have_oomkilled == 1) {
-+		printk(KERN_ERR "Would have killed process %d (%s). But continuing instead.\n",
-+				task_pid_nr(p), p->comm);
-+		return 1;
-+	}
-+
- 	__oom_kill_task(p, 1);
- 
- 	/*

linux-2.6-driver-level-usb-autosuspend.diff:
 drivers/usb/core/driver.c |   16 ++++++++++++++++
 include/linux/usb.h       |    4 ++++
 2 files changed, 20 insertions(+)

Index: linux-2.6-driver-level-usb-autosuspend.diff
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-driver-level-usb-autosuspend.diff,v
retrieving revision 1.1.6.2
retrieving revision 1.1.6.3
diff -u -p -r1.1.6.2 -r1.1.6.3
--- linux-2.6-driver-level-usb-autosuspend.diff	5 Aug 2009 23:00:16 -0000	1.1.6.2
+++ linux-2.6-driver-level-usb-autosuspend.diff	31 Jan 2010 17:57:53 -0000	1.1.6.3
@@ -1,6 +1,6 @@
-commit 0f592e33934bf6108e33e34f00b425f98ee833ef
+commit 7d0d20a25c6f477fb198b85510c78156d7d7c5af
 Author: Matthew Garrett <mjg at redhat.com>
-Date:   Wed Jul 8 19:04:23 2009 +0100
+Date:   Tue Jun 9 20:11:47 2009 +0100
 
     usb: Allow drivers to enable USB autosuspend on a per-device basis
     
@@ -12,10 +12,10 @@ Date:   Wed Jul 8 19:04:23 2009 +0100
     Signed-off-by: Matthew Garrett <mjg at redhat.com>
 
 diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
-index 69e5773..6e81caa 100644
+index 4f86447..f7caf00 100644
 --- a/drivers/usb/core/driver.c
 +++ b/drivers/usb/core/driver.c
-@@ -1560,6 +1560,21 @@ void usb_autopm_put_interface_async(struct usb_interface *intf)
+@@ -1575,6 +1575,22 @@ void usb_autopm_put_interface_async(struct usb_interface *intf)
  EXPORT_SYMBOL_GPL(usb_autopm_put_interface_async);
  
  /**
@@ -30,6 +30,7 @@ index 69e5773..6e81caa 100644
 +{
 +	udev->autosuspend_disabled = 0;
 +	udev->autoresume_disabled = 0;
++	usb_external_suspend_device(udev, PMSG_USER_SUSPEND);
 +}
 +EXPORT_SYMBOL_GPL(usb_device_autosuspend_enable);
 +
@@ -38,7 +39,7 @@ index 69e5773..6e81caa 100644
   * @intf: the usb_interface whose counter should be incremented
   *
 diff --git a/include/linux/usb.h b/include/linux/usb.h
-index b1e3c2f..61bddbe 100644
+index a34fa89..0c22c64 100644
 --- a/include/linux/usb.h
 +++ b/include/linux/usb.h
 @@ -543,6 +543,7 @@ extern struct usb_device *usb_find_device(u16 vendor_id, u16 product_id);

linux-2.6-execshield.patch:
 arch/x86/include/asm/desc.h           |   25 ++++++
 arch/x86/include/asm/mmu.h            |    7 +
 arch/x86/include/asm/paravirt.h       |    6 +
 arch/x86/include/asm/paravirt_types.h |    3 
 arch/x86/include/asm/processor.h      |    3 
 arch/x86/kernel/cpu/common.c          |   14 +++
 arch/x86/kernel/paravirt.c            |    3 
 arch/x86/kernel/process_32.c          |   48 ++++++++++++
 arch/x86/kernel/traps.c               |  129 +++++++++++++++++++++++++++++++---
 arch/x86/mm/init.c                    |    6 +
 arch/x86/mm/mmap.c                    |    5 +
 arch/x86/mm/setup_nx.c                |    4 +
 arch/x86/mm/tlb.c                     |    7 +
 arch/x86/vdso/vdso32-setup.c          |    2 
 arch/x86/xen/enlighten.c              |   21 +++++
 fs/binfmt_elf.c                       |   21 ++++-
 include/linux/mm.h                    |    8 +-
 include/linux/mm_types.h              |    3 
 include/linux/resource.h              |    5 +
 include/linux/sched.h                 |    7 +
 kernel/sysctl.c                       |   28 +++++++
 mm/mmap.c                             |  121 +++++++++++++++++++++++++++++--
 mm/mprotect.c                         |   10 ++
 mm/mremap.c                           |    4 -
 24 files changed, 463 insertions(+), 27 deletions(-)

Index: linux-2.6-execshield.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-execshield.patch,v
retrieving revision 1.102.6.4
retrieving revision 1.102.6.5
diff -u -p -r1.102.6.4 -r1.102.6.5
--- linux-2.6-execshield.patch	9 Dec 2009 21:44:04 -0000	1.102.6.4
+++ linux-2.6-execshield.patch	31 Jan 2010 17:57:53 -0000	1.102.6.5
@@ -1,8 +1,8 @@
 diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
-index c45f415..3a6dbad 100644
+index e8de2f6..538c2b6 100644
 --- a/arch/x86/include/asm/desc.h
 +++ b/arch/x86/include/asm/desc.h
-@@ -6,6 +6,7 @@
+@@ -5,6 +5,7 @@
  #include <asm/ldt.h>
  #include <asm/mmu.h>
  #include <linux/smp.h>
@@ -10,7 +10,7 @@ index c45f415..3a6dbad 100644
  
  static inline void fill_ldt(struct desc_struct *desc,
  			    const struct user_desc *info)
-@@ -94,6 +95,9 @@ static inline int desc_empty(const void *ptr)
+@@ -93,6 +94,9 @@ static inline int desc_empty(const void *ptr)
  
  #define load_TLS(t, cpu) native_load_tls(t, cpu)
  #define set_ldt native_set_ldt
@@ -20,7 +20,7 @@ index c45f415..3a6dbad 100644
  
  #define write_ldt_entry(dt, entry, desc)	\
  	native_write_ldt_entry(dt, entry, desc)
-@@ -380,4 +384,25 @@ static inline void set_system_intr_gate_ist(int n, void *addr, unsigned ist)
+@@ -392,4 +396,25 @@ static inline void set_system_intr_gate_ist(int n, void *addr, unsigned ist)
  	_set_gate(n, GATE_INTERRUPT, addr, 0x3, ist, __KERNEL_CS);
  }
  
@@ -71,20 +71,10 @@ index 80a1dee..8314c66 100644
  
  #ifdef CONFIG_SMP
 diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
-index 4fb37c8..d5cc31c 100644
+index 8aebcc4..cbbd2b0 100644
 --- a/arch/x86/include/asm/paravirt.h
 +++ b/arch/x86/include/asm/paravirt.h
-@@ -139,6 +139,9 @@ struct pv_cpu_ops {
- 	void (*store_gdt)(struct desc_ptr *);
- 	void (*store_idt)(struct desc_ptr *);
- 	void (*set_ldt)(const void *desc, unsigned entries);
-+#ifdef CONFIG_X86_32
-+	void (*load_user_cs_desc)(int cpu, struct mm_struct *mm);
-+#endif /*CONFIG_X86_32*/
- 	unsigned long (*store_tr)(void);
- 	void (*load_tls)(struct thread_struct *t, unsigned int cpu);
- #ifdef CONFIG_X86_64
-@@ -955,6 +958,12 @@ static inline void set_ldt(const void *addr, unsigned entries)
+@@ -289,6 +289,12 @@ static inline void set_ldt(const void *addr, unsigned entries)
  {
  	PVOP_VCALL2(pv_cpu_ops.set_ldt, addr, entries);
  }
@@ -97,11 +87,25 @@ index 4fb37c8..d5cc31c 100644
  static inline void store_gdt(struct desc_ptr *dtr)
  {
  	PVOP_VCALL1(pv_cpu_ops.store_gdt, dtr);
+diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h
+index dd0f5b3..c2727ef 100644
+--- a/arch/x86/include/asm/paravirt_types.h
++++ b/arch/x86/include/asm/paravirt_types.h
+@@ -118,6 +118,9 @@ struct pv_cpu_ops {
+ 	void (*store_gdt)(struct desc_ptr *);
+ 	void (*store_idt)(struct desc_ptr *);
+ 	void (*set_ldt)(const void *desc, unsigned entries);
++#ifdef CONFIG_X86_32
++	void (*load_user_cs_desc)(int cpu, struct mm_struct *mm);
++#endif
+ 	unsigned long (*store_tr)(void);
+ 	void (*load_tls)(struct thread_struct *t, unsigned int cpu);
+ #ifdef CONFIG_X86_64
 diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
-index c776826..fb6b579 100644
+index c3429e8..62cc460 100644
 --- a/arch/x86/include/asm/processor.h
 +++ b/arch/x86/include/asm/processor.h
-@@ -160,6 +160,9 @@ static inline int hlt_works(int cpu)
+@@ -161,6 +161,9 @@ static inline int hlt_works(int cpu)
  
  #define cache_line_size()	(boot_cpu_data.x86_cache_alignment)
  
@@ -112,10 +116,10 @@ index c776826..fb6b579 100644
  
  extern struct pt_regs *idle_regs(struct pt_regs *);
 diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
-index 3ffdcfa..62cba96 100644
+index cc25c2b..6ce4863 100644
 --- a/arch/x86/kernel/cpu/common.c
 +++ b/arch/x86/kernel/cpu/common.c
-@@ -804,6 +804,20 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
+@@ -798,6 +798,20 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
  	/* Filter out anything that depends on CPUID levels we don't have */
  	filter_cpuid_features(c, true);
  
@@ -137,10 +141,10 @@ index 3ffdcfa..62cba96 100644
  	if (!c->x86_model_id[0]) {
  		const char *p;
 diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
-index 70ec9b9..d956b8c 100644
+index 1b1739d..c2dda16 100644
 --- a/arch/x86/kernel/paravirt.c
 +++ b/arch/x86/kernel/paravirt.c
-@@ -369,6 +369,9 @@ struct pv_cpu_ops pv_cpu_ops = {
+@@ -345,6 +345,9 @@ struct pv_cpu_ops pv_cpu_ops = {
  	.read_tscp = native_read_tscp,
  	.load_tr_desc = native_load_tr_desc,
  	.set_ldt = native_set_ldt,
@@ -151,10 +155,10 @@ index 70ec9b9..d956b8c 100644
  	.load_idt = native_load_idt,
  	.store_gdt = native_store_gdt,
 diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
-index 59f4524..068e286 100644
+index 4cf7956..b2407dc 100644
 --- a/arch/x86/kernel/process_32.c
 +++ b/arch/x86/kernel/process_32.c
-@@ -299,7 +299,10 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
+@@ -296,7 +296,10 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
  void
  start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
  {
@@ -165,7 +169,7 @@ index 59f4524..068e286 100644
  	regs->fs		= 0;
  	set_fs(USER_DS);
  	regs->ds		= __USER_DS;
-@@ -308,6 +311,11 @@ start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
+@@ -305,6 +308,11 @@ start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
  	regs->cs		= __USER_CS;
  	regs->ip		= new_ip;
  	regs->sp		= new_sp;
@@ -177,17 +181,17 @@ index 59f4524..068e286 100644
  	/*
  	 * Free the old FP and other extended state
  	 */
-@@ -354,7 +362,8 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
- 	/* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
+@@ -364,6 +372,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+ 	if (preload_fpu)
+ 		prefetch(next->xstate);
  
- 	__unlazy_fpu(prev_p);
--
 +	if (next_p->mm)
 +		load_user_cs_desc(cpu, next_p->mm);
- 
- 	/* we're going to use this soon, after a few expensive things */
- 	if (next_p->fpu_counter > 5)
-@@ -495,3 +504,40 @@ unsigned long get_wchan(struct task_struct *p)
++
+ 	/*
+ 	 * Reload esp0.
+ 	 */
+@@ -497,3 +508,40 @@ unsigned long get_wchan(struct task_struct *p)
  	return 0;
  }
  
@@ -229,10 +233,10 @@ index 59f4524..068e286 100644
 +	set_user_cs(&mm->context.user_cs, 0);
 +}
 diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
-index 07d60c8..41e9129 100644
+index 7e37dce..92ae538 100644
 --- a/arch/x86/kernel/traps.c
 +++ b/arch/x86/kernel/traps.c
-@@ -118,6 +118,76 @@ die_if_kernel(const char *str, struct pt_regs *regs, long err)
+@@ -115,6 +115,76 @@ die_if_kernel(const char *str, struct pt_regs *regs, long err)
  	if (!user_mode_vm(regs))
  		die(str, regs, err);
  }
@@ -309,7 +313,7 @@ index 07d60c8..41e9129 100644
  #endif
  
  static void __kprobes
-@@ -276,6 +346,29 @@ do_general_protection(struct pt_regs *regs, long error_code)
+@@ -273,6 +343,29 @@ do_general_protection(struct pt_regs *regs, long error_code)
  	if (!user_mode(regs))
  		goto gp_in_kernel;
  
@@ -339,7 +343,7 @@ index 07d60c8..41e9129 100644
  	tsk->thread.error_code = error_code;
  	tsk->thread.trap_no = 13;
  
-@@ -885,19 +978,37 @@ do_device_not_available(struct pt_regs *regs, long error_code)
+@@ -881,19 +974,37 @@ do_device_not_available(struct pt_regs *regs, long error_code)
  }
  
  #ifdef CONFIG_X86_32
@@ -387,10 +391,10 @@ index 07d60c8..41e9129 100644
  #endif
  
 diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
-index 34c1bfb..32c3d8d 100644
+index 73ffd55..0cf2a7b 100644
 --- a/arch/x86/mm/init.c
 +++ b/arch/x86/mm/init.c
-@@ -228,6 +228,12 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
+@@ -149,6 +149,12 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
  	set_nx();
  	if (nx_enabled)
  		printk(KERN_INFO "NX (Execute Disable) protection: active\n");
@@ -403,70 +407,11 @@ index 34c1bfb..32c3d8d 100644
  
  	/* Enable PSE if available */
  	if (cpu_has_pse)
-diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
-index 949708d..c1373b6 100644
---- a/arch/x86/mm/init_32.c
-+++ b/arch/x86/mm/init_32.c
-@@ -587,6 +587,54 @@ void zap_low_mappings(void)
- pteval_t __supported_pte_mask __read_mostly = ~(_PAGE_NX | _PAGE_GLOBAL | _PAGE_IOMAP);
- EXPORT_SYMBOL_GPL(__supported_pte_mask);
- 
-+#ifdef CONFIG_X86_PAE
-+
-+static int disable_nx __initdata;
-+
-+/*
-+ * noexec = on|off
-+ *
-+ * Control non executable mappings.
-+ *
-+ * on      Enable
-+ * off     Disable (disables exec-shield too)
-+ */
-+static int __init noexec_setup(char *str)
-+{
-+	if (!str || !strcmp(str, "on")) {
-+		if (cpu_has_nx) {
-+			__supported_pte_mask |= _PAGE_NX;
-+			disable_nx = 0;
-+		}
-+	} else if (!strcmp(str, "off")) {
-+		disable_nx = 1;
-+		__supported_pte_mask &= ~_PAGE_NX;
-+		exec_shield = 0;
-+	} else
-+		return -EINVAL;
-+
-+	return 0;
-+}
-+early_param("noexec", noexec_setup);
-+
-+void __init set_nx(void)
-+{
-+	unsigned int v[4], l, h;
-+
-+	if (cpu_has_pae && (cpuid_eax(0x80000000) > 0x80000001)) {
-+		cpuid(0x80000001, &v[0], &v[1], &v[2], &v[3]);
-+
-+		if ((v[3] & (1 << 20)) && !disable_nx) {
-+			rdmsr(MSR_EFER, l, h);
-+			l |= EFER_NX;
-+			wrmsr(MSR_EFER, l, h);
-+			nx_enabled = 1;
-+			__supported_pte_mask |= _PAGE_NX;
-+		}
-+	}
-+}
-+#endif
-+
- /* user-defined highmem size */
- static unsigned int highmem_pages = -1;
- 
 diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
-index 1658296..72056cf 100644
+index c8191de..7d84d01 100644
 --- a/arch/x86/mm/mmap.c
 +++ b/arch/x86/mm/mmap.c
-@@ -111,13 +111,16 @@ static unsigned long mmap_legacy_base(void)
+@@ -124,13 +124,16 @@ static unsigned long mmap_legacy_base(void)
   */
  void arch_pick_mmap_layout(struct mm_struct *mm)
  {
@@ -484,8 +429,27 @@ index 1658296..72056cf 100644
  		mm->unmap_area = arch_unmap_area_topdown;
  	}
  }
+diff --git a/arch/x86/mm/setup_nx.c b/arch/x86/mm/setup_nx.c
+index 513d8ed..c614a90 100644
+--- a/arch/x86/mm/setup_nx.c
++++ b/arch/x86/mm/setup_nx.c
+@@ -1,3 +1,4 @@
++#include <linux/sched.h>
+ #include <linux/spinlock.h>
+ #include <linux/errno.h>
+ #include <linux/init.h>
+@@ -27,6 +28,9 @@ static int __init noexec_setup(char *str)
+ 	} else if (!strncmp(str, "off", 3)) {
+ 		disable_nx = 1;
+ 		__supported_pte_mask &= ~_PAGE_NX;
++#ifdef CONFIG_X86_32
++		exec_shield = 0;
++#endif
+ 	}
+ 	return 0;
+ }
 diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c
-index 821e970..ea5a4c3 100644
+index 36fe08e..3806a45 100644
 --- a/arch/x86/mm/tlb.c
 +++ b/arch/x86/mm/tlb.c
 @@ -6,6 +6,7 @@
@@ -496,7 +460,7 @@ index 821e970..ea5a4c3 100644
  #include <asm/tlbflush.h>
  #include <asm/mmu_context.h>
  #include <asm/apic.h>
-@@ -129,6 +130,12 @@ void smp_invalidate_interrupt(struct pt_regs *regs)
+@@ -130,6 +131,12 @@ void smp_invalidate_interrupt(struct pt_regs *regs)
  	union smp_flush_state *f;
  
  	cpu = smp_processor_id();
@@ -523,10 +487,10 @@ index 58bc00f..1fdafb5 100644
  			ret = addr;
  			goto up_fail;
 diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
-index 0a1700a..37b8744 100644
+index 3439616..31e5c6f 100644
 --- a/arch/x86/xen/enlighten.c
 +++ b/arch/x86/xen/enlighten.c
-@@ -321,6 +321,24 @@ static void xen_set_ldt(const void *addr, unsigned entries)
+@@ -323,6 +323,24 @@ static void xen_set_ldt(const void *addr, unsigned entries)
  	xen_mc_issue(PARAVIRT_LAZY_CPU);
  }
  
@@ -551,7 +515,7 @@ index 0a1700a..37b8744 100644
  static void xen_load_gdt(const struct desc_ptr *dtr)
  {
  	unsigned long va = dtr->address;
-@@ -886,6 +904,9 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
+@@ -949,6 +967,9 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
  
  	.load_tr_desc = paravirt_nop,
  	.set_ldt = xen_set_ldt,
@@ -562,7 +526,7 @@ index 0a1700a..37b8744 100644
  	.load_idt = xen_load_idt,
  	.load_tls = xen_load_tls,
 diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
-index 40381df..f856fab 100644
+index b9b3bb5..1e55926 100644
 --- a/fs/binfmt_elf.c
 +++ b/fs/binfmt_elf.c
 @@ -73,7 +73,7 @@ static struct linux_binfmt elf_format = {
@@ -622,10 +586,10 @@ index 40381df..f856fab 100644
  			 * load_elf_interp() returns relocation
  			 * adjustment
 diff --git a/include/linux/mm.h b/include/linux/mm.h
-index ad613ed..08f08d0 100644
+index 24c3956..88f944d 100644
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
-@@ -1135,7 +1135,13 @@ extern int install_special_mapping(struct mm_struct *mm,
+@@ -1129,7 +1129,13 @@ extern int install_special_mapping(struct mm_struct *mm,
  				   unsigned long addr, unsigned long len,
  				   unsigned long flags, struct page **pages);
  
@@ -641,10 +605,10 @@ index ad613ed..08f08d0 100644
  extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
  	unsigned long len, unsigned long prot,
 diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
-index 0e80e26..af904ea 100644
+index 84a524a..a81e0db 100644
 --- a/include/linux/mm_types.h
 +++ b/include/linux/mm_types.h
-@@ -198,6 +198,9 @@ struct mm_struct {
+@@ -206,6 +206,9 @@ struct mm_struct {
  	unsigned long (*get_unmapped_area) (struct file *filp,
  				unsigned long addr, unsigned long len,
  				unsigned long pgoff, unsigned long flags);
@@ -672,12 +636,12 @@ index 40fc7e6..68c2549 100644
  /*
   * GPG2 wants 64kB of mlocked memory, to make sure pass phrases
 diff --git a/include/linux/sched.h b/include/linux/sched.h
-index 4896fdf..3513e03 100644
+index 75e6e60..0bce489 100644
 --- a/include/linux/sched.h
 +++ b/include/linux/sched.h
-@@ -101,6 +101,9 @@ struct fs_struct;
+@@ -102,6 +102,9 @@ struct fs_struct;
  struct bts_context;
- struct perf_counter_context;
+ struct perf_event_context;
  
 +extern int exec_shield;
 +extern int print_fatal_signals;
@@ -685,7 +649,7 @@ index 4896fdf..3513e03 100644
  /*
   * List of flags we want to share for kernel threads,
   * if only because they are not used by them anyway.
-@@ -359,6 +362,10 @@ extern int sysctl_max_map_count;
+@@ -378,6 +381,10 @@ extern int sysctl_max_map_count;
  extern unsigned long
  arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
  		       unsigned long, unsigned long);
@@ -697,10 +661,10 @@ index 4896fdf..3513e03 100644
  arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
  			  unsigned long len, unsigned long pgoff,
 diff --git a/kernel/sysctl.c b/kernel/sysctl.c
-index ce664f9..1905e22 100644
+index 0d949c5..12ca319 100644
 --- a/kernel/sysctl.c
 +++ b/kernel/sysctl.c
-@@ -87,6 +87,26 @@ extern int sysctl_nr_open_min, sysctl_nr_open_max;
+@@ -88,6 +88,26 @@ extern int sysctl_nr_open_min, sysctl_nr_open_max;
  #ifndef CONFIG_MMU
  extern int sysctl_nr_trim_pages;
  #endif
@@ -727,7 +691,7 @@ index ce664f9..1905e22 100644
  #ifdef CONFIG_RCU_TORTURE_TEST
  extern int rcutorture_runnable;
  #endif /* #ifdef CONFIG_RCU_TORTURE_TEST */
-@@ -382,6 +402,14 @@ static struct ctl_table kern_table[] = {
+@@ -408,6 +428,14 @@ static struct ctl_table kern_table[] = {
  		.proc_handler	= &proc_dointvec,
  	},
  	{
@@ -743,13 +707,13 @@ index ce664f9..1905e22 100644
  		.procname	= "core_uses_pid",
  		.data		= &core_uses_pid,
 diff --git a/mm/mmap.c b/mm/mmap.c
-index 34579b2..260bb3c 100644
+index 73f5e4b..814b95f 100644
 --- a/mm/mmap.c
 +++ b/mm/mmap.c
 @@ -29,6 +29,7 @@
  #include <linux/rmap.h>
  #include <linux/mmu_notifier.h>
- #include <linux/perf_counter.h>
+ #include <linux/perf_event.h>
 +#include <linux/random.h>
  
  #include <asm/uaccess.h>
@@ -773,7 +737,7 @@ index 34579b2..260bb3c 100644
  static void unmap_region(struct mm_struct *mm,
  		struct vm_area_struct *vma, struct vm_area_struct *prev,
  		unsigned long start, unsigned long end);
-@@ -392,6 +405,8 @@ static inline void
+@@ -389,6 +402,8 @@ static inline void
  __vma_link_list(struct mm_struct *mm, struct vm_area_struct *vma,
  		struct vm_area_struct *prev, struct rb_node *rb_parent)
  {
@@ -782,7 +746,7 @@ index 34579b2..260bb3c 100644
  	if (prev) {
  		vma->vm_next = prev->vm_next;
  		prev->vm_next = vma;
-@@ -494,6 +509,8 @@ __vma_unlink(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -491,6 +506,8 @@ __vma_unlink(struct mm_struct *mm, struct vm_area_struct *vma,
  	rb_erase(&vma->vm_rb, &mm->mm_rb);
  	if (mm->mmap_cache == vma)
  		mm->mmap_cache = prev;
@@ -791,7 +755,7 @@ index 34579b2..260bb3c 100644
  }
  
  /*
-@@ -803,6 +820,8 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
+@@ -798,6 +815,8 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm,
  		} else					/* cases 2, 5, 7 */
  			vma_adjust(prev, prev->vm_start,
  				end, prev->vm_pgoff, NULL);
@@ -800,7 +764,7 @@ index 34579b2..260bb3c 100644
  		return prev;
  	}
  
-@@ -957,7 +976,8 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
+@@ -970,7 +989,8 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
  	/* Obtain the address to map to. we verify (or select) it and ensure
  	 * that it represents a valid section of the address space.
  	 */
@@ -810,7 +774,7 @@ index 34579b2..260bb3c 100644
  	if (addr & ~PAGE_MASK)
  		return addr;
  
-@@ -1442,13 +1462,17 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
+@@ -1453,21 +1473,25 @@ void arch_unmap_area_topdown(struct mm_struct *mm, unsigned long addr)
  }
  
  unsigned long
@@ -822,6 +786,14 @@ index 34579b2..260bb3c 100644
  	unsigned long (*get_area)(struct file *, unsigned long,
  				  unsigned long, unsigned long, unsigned long);
  
+ 	unsigned long error = arch_mmap_check(addr, len, flags);
+ 	if (error)
+ 		return error;
+ 
+ 	/* Careful about overflows.. */
+ 	if (len > TASK_SIZE)
+ 		return -ENOMEM;
+ 
 -	get_area = current->mm->get_unmapped_area;
 +	if (exec && current->mm->get_unmapped_exec_area)
 +		get_area = current->mm->get_unmapped_exec_area;
@@ -831,7 +803,7 @@ index 34579b2..260bb3c 100644
  	if (file && file->f_op && file->f_op->get_unmapped_area)
  		get_area = file->f_op->get_unmapped_area;
  	addr = get_area(file, addr, len, pgoff, flags);
-@@ -1462,8 +1486,76 @@ get_unmapped_area(struct file *file, unsigned long addr, unsigned long len,
+@@ -1473,8 +1497,76 @@ get_unmapped_area(struct file *file, unsigned long addr, unsigned long len,
  
  	return arch_rebalance_pgtables(addr, len);
  }
@@ -909,7 +881,7 @@ index 34579b2..260bb3c 100644
  
  /* Look up the first VMA which satisfies  addr < vm_end,  NULL if none. */
  struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
-@@ -1538,6 +1630,14 @@ out:
+@@ -1549,6 +1641,14 @@ out:
  	return prev ? prev->vm_next : vma;
  }
  
@@ -924,7 +896,7 @@ index 34579b2..260bb3c 100644
  /*
   * Verify that the stack growth is acceptable and
   * update accounting. This is shared with both the
-@@ -1554,7 +1654,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
+@@ -1565,7 +1665,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
  		return -ENOMEM;
  
  	/* Stack limit test */
@@ -933,7 +905,7 @@ index 34579b2..260bb3c 100644
  		return -ENOMEM;
  
  	/* mlock limit tests */
-@@ -1864,10 +1964,14 @@ int split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
+@@ -1875,10 +1975,14 @@ int split_vma(struct mm_struct * mm, struct vm_area_struct * vma,
  	if (new->vm_ops && new->vm_ops->open)
  		new->vm_ops->open(new);
  
@@ -950,8 +922,8 @@ index 34579b2..260bb3c 100644
  		vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new);
  
  	return 0;
-@@ -2116,6 +2220,7 @@ void exit_mmap(struct mm_struct *mm)
- 	vm_unacct_memory(nr_accounted);
+@@ -2128,6 +2232,7 @@ void exit_mmap(struct mm_struct *mm)
+ 
  	free_pgtables(tlb, vma, FIRST_USER_ADDRESS, 0);
  	tlb_finish_mmu(tlb, 0, end);
 +	arch_flush_exec_range(mm);
@@ -959,11 +931,11 @@ index 34579b2..260bb3c 100644
  	/*
  	 * Walk the list again, actually closing and freeing it,
 diff --git a/mm/mprotect.c b/mm/mprotect.c
-index d80311b..032423d 100644
+index 8bc969d..3c9b4fc 100644
 --- a/mm/mprotect.c
 +++ b/mm/mprotect.c
 @@ -26,9 +26,14 @@
- #include <linux/perf_counter.h>
+ #include <linux/perf_event.h>
  #include <asm/uaccess.h>
  #include <asm/pgtable.h>
 +#include <asm/pgalloc.h>
@@ -997,17 +969,19 @@ index d80311b..032423d 100644
  	if (is_vm_hugetlb_page(vma))
  		hugetlb_change_protection(vma, start, end, vma->vm_page_prot);
 diff --git a/mm/mremap.c b/mm/mremap.c
-index a39b7b9..6bebfde 100644
+index 97bff25..17a9fd7 100644
 --- a/mm/mremap.c
 +++ b/mm/mremap.c
-@@ -400,8 +400,8 @@ unsigned long do_mremap(unsigned long addr,
- 			if (vma->vm_flags & VM_MAYSHARE)
- 				map_flags |= MAP_SHARED;
- 
--			new_addr = get_unmapped_area(vma->vm_file, 0, new_len,
--						vma->vm_pgoff, map_flags);
-+			new_addr = get_unmapped_area_prot(vma->vm_file, 0, new_len,
-+				vma->vm_pgoff, map_flags, vma->vm_flags & VM_EXEC);
- 			if (new_addr & ~PAGE_MASK) {
- 				ret = new_addr;
- 				goto out;
+@@ -414,10 +414,10 @@ unsigned long do_mremap(unsigned long addr,
+		if (vma->vm_flags & VM_MAYSHARE)
+			map_flags |= MAP_SHARED;
+
+-		new_addr = get_unmapped_area(vma->vm_file, 0, new_len,
++		new_addr = get_unmapped_area_prot(vma->vm_file, 0, new_len,
+ 					vma->vm_pgoff +
+ 					((addr - vma->vm_start) >> PAGE_SHIFT),
+-					map_flags);
++					map_flags, vma->vm_flags & VM_EXEC);
+		if (new_addr & ~PAGE_MASK) {
+			ret = new_addr;
+			goto out;

linux-2.6-firewire-git-update.patch:
 firewire-git/drivers/firewire/fw-card.c        |   68 -
 firewire-git/drivers/firewire/fw-cdev.c        | 1014 +++++++++++++++++--------
 firewire-git/drivers/firewire/fw-device.c      |   43 -
 firewire-git/drivers/firewire/fw-device.h      |    7 
 firewire-git/drivers/firewire/fw-iso.c         |  225 ++++-
 firewire-git/drivers/firewire/fw-ohci.c        |  236 ++---
 firewire-git/drivers/firewire/fw-sbp2.c        |   57 -
 firewire-git/drivers/firewire/fw-topology.c    |   28 
 firewire-git/drivers/firewire/fw-topology.h    |   19 
 firewire-git/drivers/firewire/fw-transaction.c |  151 +--
 firewire-git/drivers/firewire/fw-transaction.h |  125 ---
 include/linux/firewire-cdev.h                  |  170 +++-
 12 files changed, 1359 insertions(+), 784 deletions(-)

View full diff with command:
/usr/bin/cvs -n -f diff -kk -u -p -N -r 1.20.6.1 -r 1.20.6.2 linux-2.6-firewire-git-update.patchIndex: linux-2.6-firewire-git-update.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-firewire-git-update.patch,v
retrieving revision 1.20.6.1
retrieving revision 1.20.6.2
diff -u -p -r1.20.6.1 -r1.20.6.2
--- linux-2.6-firewire-git-update.patch	12 Nov 2009 23:01:05 -0000	1.20.6.1
+++ linux-2.6-firewire-git-update.patch	31 Jan 2010 17:57:54 -0000	1.20.6.2
@@ -1 +1,3682 @@
-empty
+linux1394-2.6.git tree vs. linus v2.6.29-rc3-git1 on 20090130 by jarod
+
+---
+ firewire-git/drivers/firewire/fw-card.c        |   68 -
+ firewire-git/drivers/firewire/fw-cdev.c        | 1014 +++++++++++++++++--------
+ firewire-git/drivers/firewire/fw-device.c      |   43 -
+ firewire-git/drivers/firewire/fw-device.h      |    7 
+ firewire-git/drivers/firewire/fw-iso.c         |  225 ++++-
+ firewire-git/drivers/firewire/fw-ohci.c        |  236 ++---
+ firewire-git/drivers/firewire/fw-sbp2.c        |   57 -
+ firewire-git/drivers/firewire/fw-topology.c    |   28 
+ firewire-git/drivers/firewire/fw-topology.h    |   19 
+ firewire-git/drivers/firewire/fw-transaction.c |  151 +--
+ firewire-git/drivers/firewire/fw-transaction.h |  125 ---
+ include/linux/firewire-cdev.h                  |  170 +++-
+ 12 files changed, 1359 insertions(+), 784 deletions(-)
+
+diff -Naurp linux-2.6-git/drivers/firewire/fw-card.c firewire-git/drivers/firewire/fw-card.c
+--- linux-2.6-git/drivers/firewire/fw-card.c	2009-01-30 13:39:02.989651512 -0500
++++ firewire-git/drivers/firewire/fw-card.c	2009-01-30 13:35:51.859771884 -0500
+@@ -63,8 +63,7 @@ static int descriptor_count;
+ #define BIB_CMC			((1) << 30)
+ #define BIB_IMC			((1) << 31)
+ 
+-static u32 *
+-generate_config_rom(struct fw_card *card, size_t *config_rom_length)
++static u32 *generate_config_rom(struct fw_card *card, size_t *config_rom_length)
+ {
+ 	struct fw_descriptor *desc;
+ 	static u32 config_rom[256];
+@@ -128,8 +127,7 @@ generate_config_rom(struct fw_card *card
+ 	return config_rom;
+ }
+ 
+-static void
+-update_config_roms(void)
++static void update_config_roms(void)
+ {
+ 	struct fw_card *card;
+ 	u32 *config_rom;
+@@ -141,8 +139,7 @@ update_config_roms(void)
+ 	}
+ }
+ 
+-int
+-fw_core_add_descriptor(struct fw_descriptor *desc)
++int fw_core_add_descriptor(struct fw_descriptor *desc)
+ {
+ 	size_t i;
+ 
+@@ -171,8 +168,7 @@ fw_core_add_descriptor(struct fw_descrip
+ 	return 0;
+ }
+ 
+-void
+-fw_core_remove_descriptor(struct fw_descriptor *desc)
++void fw_core_remove_descriptor(struct fw_descriptor *desc)
+ {
+ 	mutex_lock(&card_mutex);
+ 
+@@ -189,8 +185,7 @@ static const char gap_count_table[] = {
+ 	63, 5, 7, 8, 10, 13, 16, 18, 21, 24, 26, 29, 32, 35, 37, 40
+ };
+ 
+-void
+-fw_schedule_bm_work(struct fw_card *card, unsigned long delay)
++void fw_schedule_bm_work(struct fw_card *card, unsigned long delay)
+ {
+ 	int scheduled;
+ 
+@@ -200,8 +195,7 @@ fw_schedule_bm_work(struct fw_card *card
+ 		fw_card_put(card);
+ }
+ 
+-static void
+-fw_card_bm_work(struct work_struct *work)
++static void fw_card_bm_work(struct work_struct *work)
+ {
+ 	struct fw_card *card = container_of(work, struct fw_card, work.work);
+ 	struct fw_device *root_device;
+@@ -371,17 +365,16 @@ fw_card_bm_work(struct work_struct *work
+ 	fw_card_put(card);
+ }
+ 
+-static void
+-flush_timer_callback(unsigned long data)
++static void flush_timer_callback(unsigned long data)
+ {
+ 	struct fw_card *card = (struct fw_card *)data;
+ 
+ 	fw_flush_transactions(card);
+ }
+ 
+-void
+-fw_card_initialize(struct fw_card *card, const struct fw_card_driver *driver,
+-		   struct device *device)
++void fw_card_initialize(struct fw_card *card,
++			const struct fw_card_driver *driver,
++			struct device *device)
+ {
+ 	static atomic_t index = ATOMIC_INIT(-1);
+ 
+@@ -406,9 +399,8 @@ fw_card_initialize(struct fw_card *card,
+ }
+ EXPORT_SYMBOL(fw_card_initialize);
+ 
+-int
+-fw_card_add(struct fw_card *card,
+-	    u32 max_receive, u32 link_speed, u64 guid)
++int fw_card_add(struct fw_card *card,
++		u32 max_receive, u32 link_speed, u64 guid)
+ {
+ 	u32 *config_rom;
+ 	size_t length;
+@@ -435,23 +427,20 @@ EXPORT_SYMBOL(fw_card_add);
+  * dummy driver just fails all IO.
+  */
+ 
+-static int
+-dummy_enable(struct fw_card *card, u32 *config_rom, size_t length)
++static int dummy_enable(struct fw_card *card, u32 *config_rom, size_t length)
+ {
+ 	BUG();
+ 	return -1;
+ }
+ 
+-static int
+-dummy_update_phy_reg(struct fw_card *card, int address,
+-		     int clear_bits, int set_bits)
++static int dummy_update_phy_reg(struct fw_card *card, int address,
++				int clear_bits, int set_bits)
+ {
+ 	return -ENODEV;
+ }
+ 
+-static int
+-dummy_set_config_rom(struct fw_card *card,
+-		     u32 *config_rom, size_t length)
++static int dummy_set_config_rom(struct fw_card *card,
++				u32 *config_rom, size_t length)
+ {
+ 	/*
+ 	 * We take the card out of card_list before setting the dummy
+@@ -461,27 +450,23 @@ dummy_set_config_rom(struct fw_card *car
+ 	return -1;
+ }
+ 
+-static void
+-dummy_send_request(struct fw_card *card, struct fw_packet *packet)
++static void dummy_send_request(struct fw_card *card, struct fw_packet *packet)
+ {
+ 	packet->callback(packet, card, -ENODEV);
+ }
+ 
+-static void
+-dummy_send_response(struct fw_card *card, struct fw_packet *packet)
++static void dummy_send_response(struct fw_card *card, struct fw_packet *packet)
+ {
+ 	packet->callback(packet, card, -ENODEV);
+ }
+ 
+-static int
+-dummy_cancel_packet(struct fw_card *card, struct fw_packet *packet)
++static int dummy_cancel_packet(struct fw_card *card, struct fw_packet *packet)
+ {
+ 	return -ENOENT;
+ }
+ 
+-static int
+-dummy_enable_phys_dma(struct fw_card *card,
+-		      int node_id, int generation)
++static int dummy_enable_phys_dma(struct fw_card *card,
++				 int node_id, int generation)
+ {
+ 	return -ENODEV;
+ }
+@@ -496,16 +481,14 @@ static struct fw_card_driver dummy_drive
+ 	.enable_phys_dma = dummy_enable_phys_dma,
+ };
+ 
+-void
+-fw_card_release(struct kref *kref)
++void fw_card_release(struct kref *kref)
+ {
+ 	struct fw_card *card = container_of(kref, struct fw_card, kref);
+ 
+ 	complete(&card->done);
+ }
+ 
+-void
[...3292 lines suppressed...]
++ *
++ * An %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event is sent after an isochronous
++ * resource was deallocated at the IRM.  It is also sent when automatic
++ * reallocation after a bus reset failed.
++ *
++ * @channel is <0 if no channel was (de)allocated or if reallocation failed.
++ * @bandwidth is 0 if no bandwidth was (de)allocated or if reallocation failed.
++ */
++struct fw_cdev_event_iso_resource {
++	__u64 closure;
++	__u32 type;
++	__u32 handle;
++	__s32 channel;
++	__s32 bandwidth;
++};
++
++/**
+  * union fw_cdev_event - Convenience union of fw_cdev_event_ types
+  * @common:        Valid for all types
+  * @bus_reset:     Valid if @common.type == %FW_CDEV_EVENT_BUS_RESET
+  * @response:      Valid if @common.type == %FW_CDEV_EVENT_RESPONSE
+  * @request:       Valid if @common.type == %FW_CDEV_EVENT_REQUEST
+  * @iso_interrupt: Valid if @common.type == %FW_CDEV_EVENT_ISO_INTERRUPT
++ * @iso_resource:  Valid if @common.type ==
++ *				%FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED or
++ *				%FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED
+  *
+  * Convenience union for userspace use.  Events could be read(2) into an
+  * appropriately aligned char buffer and then cast to this union for further
+@@ -163,13 +214,15 @@ struct fw_cdev_event_iso_interrupt {
+  * not fit will be discarded so that the next read(2) will return a new event.
+  */
+ union fw_cdev_event {
+-	struct fw_cdev_event_common common;
+-	struct fw_cdev_event_bus_reset bus_reset;
+-	struct fw_cdev_event_response response;
+-	struct fw_cdev_event_request request;
+-	struct fw_cdev_event_iso_interrupt iso_interrupt;
++	struct fw_cdev_event_common		common;
++	struct fw_cdev_event_bus_reset		bus_reset;
++	struct fw_cdev_event_response		response;
++	struct fw_cdev_event_request		request;
++	struct fw_cdev_event_iso_interrupt	iso_interrupt;
++	struct fw_cdev_event_iso_resource	iso_resource;
+ };
+ 
++/* available since kernel version 2.6.22 */
+ #define FW_CDEV_IOC_GET_INFO		_IOWR('#', 0x00, struct fw_cdev_get_info)
+ #define FW_CDEV_IOC_SEND_REQUEST	_IOW('#', 0x01, struct fw_cdev_send_request)
+ #define FW_CDEV_IOC_ALLOCATE		_IOWR('#', 0x02, struct fw_cdev_allocate)
+@@ -178,18 +231,29 @@ union fw_cdev_event {
+ #define FW_CDEV_IOC_INITIATE_BUS_RESET	_IOW('#', 0x05, struct fw_cdev_initiate_bus_reset)
+ #define FW_CDEV_IOC_ADD_DESCRIPTOR	_IOWR('#', 0x06, struct fw_cdev_add_descriptor)
+ #define FW_CDEV_IOC_REMOVE_DESCRIPTOR	_IOW('#', 0x07, struct fw_cdev_remove_descriptor)
+-
+ #define FW_CDEV_IOC_CREATE_ISO_CONTEXT	_IOWR('#', 0x08, struct fw_cdev_create_iso_context)
+ #define FW_CDEV_IOC_QUEUE_ISO		_IOWR('#', 0x09, struct fw_cdev_queue_iso)
+ #define FW_CDEV_IOC_START_ISO		_IOW('#', 0x0a, struct fw_cdev_start_iso)
+ #define FW_CDEV_IOC_STOP_ISO		_IOW('#', 0x0b, struct fw_cdev_stop_iso)
++
++/* available since kernel version 2.6.24 */
+ #define FW_CDEV_IOC_GET_CYCLE_TIMER	_IOR('#', 0x0c, struct fw_cdev_get_cycle_timer)
+ 
+-/* FW_CDEV_VERSION History
+- *
+- * 1	Feb 18, 2007:  Initial version.
++/* available since kernel version 2.6.30 */
++#define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE       _IOWR('#', 0x0d, struct fw_cdev_allocate_iso_resource)
++#define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE      _IOW('#', 0x0e, struct fw_cdev_deallocate)
++#define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE   _IOW('#', 0x0f, struct fw_cdev_allocate_iso_resource)
++#define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x10, struct fw_cdev_allocate_iso_resource)
++#define FW_CDEV_IOC_GET_SPEED                    _IOR('#', 0x11, struct fw_cdev_get_speed)
++#define FW_CDEV_IOC_SEND_BROADCAST_REQUEST       _IOW('#', 0x12, struct fw_cdev_send_request)
++
++/*
++ * FW_CDEV_VERSION History
++ *  1  (2.6.22)  - initial version
++ *  2  (2.6.30)  - changed &fw_cdev_event_iso_interrupt.header if
++ *                 &fw_cdev_create_iso_context.header_size is 8 or more
+  */
+-#define FW_CDEV_VERSION		1
++#define FW_CDEV_VERSION 2
+ 
+ /**
+  * struct fw_cdev_get_info - General purpose information ioctl
+@@ -201,7 +265,7 @@ union fw_cdev_event {
+  *		case, @rom_length is updated with the actual length of the
+  *		configuration ROM.
+  * @rom:	If non-zero, address of a buffer to be filled by a copy of the
+- *		local node's configuration ROM
++ *		device's configuration ROM
+  * @bus_reset:	If non-zero, address of a buffer to be filled by a
+  *		&struct fw_cdev_event_bus_reset with the current state
+  *		of the bus.  This does not cause a bus reset to happen.
+@@ -229,7 +293,7 @@ struct fw_cdev_get_info {
+  * Send a request to the device.  This ioctl implements all outgoing requests.
+  * Both quadlet and block request specify the payload as a pointer to the data
+  * in the @data field.  Once the transaction completes, the kernel writes an
+- * &fw_cdev_event_request event back.  The @closure field is passed back to
++ * &fw_cdev_event_response event back.  The @closure field is passed back to
+  * user space in the response event.
+  */
+ struct fw_cdev_send_request {
+@@ -284,9 +348,9 @@ struct fw_cdev_allocate {
+ };
+ 
+ /**
+- * struct fw_cdev_deallocate - Free an address range allocation
+- * @handle:	Handle to the address range, as returned by the kernel when the
+- *		range was allocated
++ * struct fw_cdev_deallocate - Free a CSR address range or isochronous resource
++ * @handle:	Handle to the address range or iso resource, as returned by the
++ *		kernel when the range or resource was allocated
+  */
+ struct fw_cdev_deallocate {
+ 	__u32 handle;
+@@ -370,6 +434,9 @@ struct fw_cdev_remove_descriptor {
+  *
+  * If a context was successfully created, the kernel writes back a handle to the
+  * context, which must be passed in for subsequent operations on that context.
++ *
++ * Note that the effect of a @header_size > 4 depends on
++ * &fw_cdev_get_info.version, as documented at &fw_cdev_event_iso_interrupt.
+  */
+ struct fw_cdev_create_iso_context {
+ 	__u32 type;
+@@ -473,10 +540,73 @@ struct fw_cdev_stop_iso {
+  * The %FW_CDEV_IOC_GET_CYCLE_TIMER ioctl reads the isochronous cycle timer
+  * and also the system clock.  This allows to express the receive time of an
+  * isochronous packet as a system time with microsecond accuracy.
++ *
++ * @cycle_timer consists of 7 bits cycleSeconds, 13 bits cycleCount, and
++ * 12 bits cycleOffset, in host byte order.
+  */
+ struct fw_cdev_get_cycle_timer {
+ 	__u64 local_time;
+ 	__u32 cycle_timer;
+ };
+ 
++/**
++ * struct fw_cdev_allocate_iso_resource - (De)allocate a channel or bandwidth
++ * @closure:	Passed back to userspace in correponding iso resource events
++ * @channels:	Isochronous channels of which one is to be (de)allocated
++ * @bandwidth:	Isochronous bandwidth units to be (de)allocated
++ * @handle:	Handle to the allocation, written by the kernel (only valid in
++ *		case of %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE ioctls)
++ *
++ * The %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE ioctl initiates allocation of an
++ * isochronous channel and/or of isochronous bandwidth at the isochronous
++ * resource manager (IRM).  Only one of the channels specified in @channels is
++ * allocated.  An %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED is sent after
++ * communication with the IRM, indicating success or failure in the event data.
++ * The kernel will automatically reallocate the resources after bus resets.
++ * Should a reallocation fail, an %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event
++ * will be sent.  The kernel will also automatically deallocate the resources
++ * when the file descriptor is closed.
++ *
++ * The %FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE ioctl can be used to initiate
++ * deallocation of resources which were allocated as described above.
++ * An %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event concludes this operation.
++ *
++ * The %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE ioctl is a variant of allocation
++ * without automatic re- or deallocation.
++ * An %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED event concludes this operation,
++ * indicating success or failure in its data.
++ *
++ * The %FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE ioctl works like
++ * %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE except that resources are freed
++ * instead of allocated.
++ * An %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event concludes this operation.
++ *
++ * To summarize, %FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE allocates iso resources
++ * for the lifetime of the fd or handle.
++ * In contrast, %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE allocates iso resources
++ * for the duration of a bus generation.
++ *
++ * @channels is a host-endian bitfield with the least significant bit
++ * representing channel 0 and the most significant bit representing channel 63:
++ * 1ULL << c for each channel c that is a candidate for (de)allocation.
++ *
++ * @bandwidth is expressed in bandwidth allocation units, i.e. the time to send
++ * one quadlet of data (payload or header data) at speed S1600.
++ */
++struct fw_cdev_allocate_iso_resource {
++	__u64 closure;
++	__u64 channels;
++	__u32 bandwidth;
++	__u32 handle;
++};
++
++/**
++ * struct fw_cdev_get_speed - Query maximum speed to or from this device
++ * @max_speed:	Speed code; minimum of the device's link speed, the local node's
++ *		link speed, and all PHY port speeds between the two links
++ */
++struct fw_cdev_get_speed {
++	__u32 max_speed;
++};
++
+ #endif /* _LINUX_FIREWIRE_CDEV_H */

linux-2.6-ksm-kvm.patch:
 arch/x86/include/asm/kvm_host.h |    1 
 arch/x86/kvm/mmu.c              |   91 ++++++++++++++++++++++++++++++++--------
 arch/x86/kvm/paging_tmpl.h      |   15 +++++-
 virt/kvm/kvm_main.c             |   14 ++++++
 4 files changed, 101 insertions(+), 20 deletions(-)

Index: linux-2.6-ksm-kvm.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-ksm-kvm.patch,v
retrieving revision 1.2.6.4
retrieving revision 1.2.6.5
diff -u -p -r1.2.6.4 -r1.2.6.5
--- linux-2.6-ksm-kvm.patch	12 Nov 2009 23:01:05 -0000	1.2.6.4
+++ linux-2.6-ksm-kvm.patch	31 Jan 2010 17:57:55 -0000	1.2.6.5
@@ -99,7 +99,7 @@ Signed-off-by: Justin M. Forbes <jforbes
 +			spte = rmap_next(kvm, rmapp, NULL);
 +		} else {
 +			new_spte = *spte &~ (PT64_BASE_ADDR_MASK);
-+			new_spte |= (u64)new_pfn << PAGE_SHIFT;
++			new_spte |= new_pfn << PAGE_SHIFT;
 +
 +			if (!pte_write(ptep_val(ptep))) {
 +				new_spte &= ~PT_WRITABLE_MASK;

linux-2.6-makefile-after_link.patch:
 Makefile                            |    4 ++++
 arch/powerpc/kernel/vdso32/Makefile |    3 ++-
 arch/powerpc/kernel/vdso64/Makefile |    3 ++-
 arch/x86/vdso/Makefile              |    3 ++-
 4 files changed, 10 insertions(+), 3 deletions(-)

Index: linux-2.6-makefile-after_link.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-makefile-after_link.patch,v
retrieving revision 1.1
retrieving revision 1.1.16.1
diff -u -p -r1.1 -r1.1.16.1
--- linux-2.6-makefile-after_link.patch	7 Oct 2008 21:58:20 -0000	1.1
+++ linux-2.6-makefile-after_link.patch	31 Jan 2010 17:57:55 -0000	1.1.16.1
@@ -1,24 +1,8 @@
-From f072f7db2194c8255c003d985b61ad2f97ebbee0 Mon Sep 17 00:00:00 2001
-From: Roland McGrath <roland at redhat.com>
-Date: Mon, 6 Oct 2008 23:03:03 -0700
-Subject: [PATCH] kbuild: AFTER_LINK
-
-If the make variable AFTER_LINK is set, it is a command line to run
-after each final link.  This includes vmlinux itself and vDSO images.
-
-Signed-off-by: Roland McGrath <roland at redhat.com>
----
- Makefile                            |    4 ++++
- arch/powerpc/kernel/vdso32/Makefile |    3 ++-
- arch/powerpc/kernel/vdso64/Makefile |    3 ++-
- arch/x86/vdso/Makefile              |    3 ++-
- 4 files changed, 10 insertions(+), 3 deletions(-)
-
 diff --git a/Makefile b/Makefile
-index ce9eceb..b27b1b7 100644
+index f908acc..960ff6f 100644
 --- a/Makefile
 +++ b/Makefile
-@@ -679,6 +679,10 @@ quiet_cmd_vmlinux__ ?= LD      $@
+@@ -746,6 +746,10 @@ quiet_cmd_vmlinux__ ?= LD      $@
        --start-group $(vmlinux-main) --end-group                  \
        $(filter-out $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o FORCE ,$^)
  
@@ -30,10 +14,10 @@ index ce9eceb..b27b1b7 100644
  quiet_cmd_vmlinux_version = GEN     .version
        cmd_vmlinux_version = set -e;                     \
 diff --git a/arch/powerpc/kernel/vdso32/Makefile b/arch/powerpc/kernel/vdso32/Makefile
-index c3d57bd..c9519c5 100644
+index 51ead52..ad21273 100644
 --- a/arch/powerpc/kernel/vdso32/Makefile
 +++ b/arch/powerpc/kernel/vdso32/Makefile
-@@ -40,7 +40,8 @@ $(obj-vdso32): %.o: %.S
+@@ -41,7 +41,8 @@ $(obj-vdso32): %.o: %.S
  
  # actual build commands
  quiet_cmd_vdso32ld = VDSO32L $@
@@ -44,10 +28,10 @@ index c3d57bd..c9519c5 100644
        cmd_vdso32as = $(CROSS32CC) $(a_flags) -c -o $@ $<
  
 diff --git a/arch/powerpc/kernel/vdso64/Makefile b/arch/powerpc/kernel/vdso64/Makefile
-index fa7f1b8..712fe1d 100644
+index 79da65d..f11c21b 100644
 --- a/arch/powerpc/kernel/vdso64/Makefile
 +++ b/arch/powerpc/kernel/vdso64/Makefile
-@@ -34,7 +34,8 @@ $(obj-vdso64): %.o: %.S
+@@ -36,7 +36,8 @@ $(obj-vdso64): %.o: %.S
  
  # actual build commands
  quiet_cmd_vdso64ld = VDSO64L $@
@@ -58,7 +42,7 @@ index fa7f1b8..712fe1d 100644
        cmd_vdso64as = $(CC) $(a_flags) -c -o $@ $<
  
 diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile
-index 4d6ef0a..5203ae9 100644
+index 6b4ffed..cbc3d05 100644
 --- a/arch/x86/vdso/Makefile
 +++ b/arch/x86/vdso/Makefile
 @@ -120,7 +120,8 @@ $(obj)/vdso32-syms.lds: $(vdso32.so-y:%=$(obj)/vdso32-%-syms.lds) FORCE
@@ -69,8 +53,5 @@ index 4d6ef0a..5203ae9 100644
 +		       -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) \
 +		 $(if $(AFTER_LINK),; $(AFTER_LINK))
  
- VDSO_LDFLAGS = -fPIC -shared $(call ld-option, -Wl$(comma)--hash-style=sysv)
- 
--- 
-1.5.5.1
-
+ VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv)
+ GCOV_PROFILE := n

linux-2.6-serial-460800.patch:
 8250.c |   29 +++++++++++++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)

Index: linux-2.6-serial-460800.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-serial-460800.patch,v
retrieving revision 1.2
retrieving revision 1.2.18.1
diff -u -p -r1.2 -r1.2.18.1
--- linux-2.6-serial-460800.patch	28 May 2007 01:22:43 -0000	1.2
+++ linux-2.6-serial-460800.patch	31 Jan 2010 17:57:56 -0000	1.2.18.1
@@ -1,9 +1,7 @@
-http://marc.theaimsgroup.com/?l=linux-kernel&m=112687270832687&w=2
-https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=126403
-http://lkml.org/lkml/2006/8/2/208
-
---- linux-2.6.13-org/drivers/serial/8250.c	2005-08-29 01:41:01.000000000 +0200
-+++ linux-2.6.13/drivers/serial/8250.c	2005-09-16 12:18:14.000000000 +0200
+diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
+index 2209620..659c1bb 100644
+--- a/drivers/serial/8250.c
++++ b/drivers/serial/8250.c
 @@ -7,6 +7,9 @@
   *
   *  Copyright (C) 2001 Russell King.
@@ -14,7 +12,7 @@ http://lkml.org/lkml/2006/8/2/208
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * the Free Software Foundation; either version 2 of the License, or
-@@ -1652,6 +1655,14 @@
+@@ -2227,6 +2230,14 @@ static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int
  	else if ((port->flags & UPF_MAGIC_MULTIPLIER) &&
  		 baud == (port->uartclk/8))
  		quot = 0x8002;
@@ -29,7 +27,7 @@ http://lkml.org/lkml/2006/8/2/208
  	else
  		quot = uart_get_divisor(port, baud);
  
-@@ -1665,7 +1676,7 @@
+@@ -2240,7 +2251,7 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
  	struct uart_8250_port *up = (struct uart_8250_port *)port;
  	unsigned char cval, fcr = 0;
  	unsigned long flags;
@@ -38,21 +36,22 @@ http://lkml.org/lkml/2006/8/2/208
  
  	switch (termios->c_cflag & CSIZE) {
  	case CS5:
-@@ -2034,7 +2034,8 @@ serial8250_set_termios(struct uart_port 
+@@ -2272,9 +2283,10 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
  	/*
  	 * Ask the core to calculate the divisor for us.
  	 */
--	baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
 +	max_baud = (up->port.type == PORT_16C950 ? port->uartclk/4 : port->uartclk/16);
-+	baud = uart_get_baud_rate(port, termios, old, 0, max_baud);
+ 	baud = uart_get_baud_rate(port, termios, old,
+ 				  port->uartclk / 16 / 0xffff,
+-				  port->uartclk / 16);
++				  max_baud);
  	quot = serial8250_get_divisor(port, baud);
  
  	/*
-@@ -1733,6 +1745,19 @@
- 	 */
+@@ -2311,6 +2323,19 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
  	spin_lock_irqsave(&up->port.lock, flags);
  
-+	/*
+ 	/*
 +	 * 16C950 supports additional prescaler ratios between 1:16 and 1:4
 +	 * thus increasing max baud rate to uartclk/4.
 +	 */
@@ -65,7 +64,7 @@ http://lkml.org/lkml/2006/8/2/208
 +			serial_icr_write(up, UART_TCR, 0);
 +	}
 +
- 	/*
++	/*
  	 * Update the per-port timeout.
  	 */
-
+ 	uart_update_timeout(port, termios->c_cflag, baud);

linux-2.6-silence-acpi-blacklist.patch:
 blacklist.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Index: linux-2.6-silence-acpi-blacklist.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-silence-acpi-blacklist.patch,v
retrieving revision 1.1
retrieving revision 1.1.16.1
diff -u -p -r1.1 -r1.1.16.1
--- linux-2.6-silence-acpi-blacklist.patch	12 Aug 2008 18:24:18 -0000	1.1
+++ linux-2.6-silence-acpi-blacklist.patch	31 Jan 2010 17:57:56 -0000	1.1.16.1
@@ -2,9 +2,9 @@ diff -up linux-2.6.26.noarch/drivers/acp
 --- linux-2.6.26.noarch/drivers/acpi/blacklist.c.jx	2008-07-13 17:51:29.000000000 -0400
 +++ linux-2.6.26.noarch/drivers/acpi/blacklist.c	2008-08-12 14:21:39.000000000 -0400
 @@ -81,18 +81,18 @@ static int __init blacklist_by_year(void
- 	int year = dmi_get_year(DMI_BIOS_DATE);
+ 
  	/* Doesn't exist? Likely an old system */
- 	if (year == -1) {
+ 	if (!dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL)) {
 -		printk(KERN_ERR PREFIX "no DMI BIOS year, "
 +		printk(KERN_INFO PREFIX "no DMI BIOS year, "
  			"acpi=force is required to enable ACPI\n" );

linux-2.6-tracehook.patch:
 arch/powerpc/include/asm/ptrace.h |    2 +
 arch/powerpc/kernel/traps.c       |    9 ++++++
 arch/x86/include/asm/ptrace.h     |    2 +
 arch/x86/kernel/ptrace.c          |   51 ++++++++++++++++++++------------------
 include/linux/ptrace.h            |   24 +++++++++++------
 include/linux/sched.h             |    1 
 include/linux/tracehook.h         |   15 ++++++++---
 kernel/ptrace.c                   |    2 -
 kernel/signal.c                   |   13 ++++-----
 9 files changed, 76 insertions(+), 43 deletions(-)

Index: linux-2.6-tracehook.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-tracehook.patch,v
retrieving revision 1.8.6.3
retrieving revision 1.8.6.4
diff -u -p -r1.8.6.3 -r1.8.6.4
--- linux-2.6-tracehook.patch	24 Apr 2009 22:27:12 -0000	1.8.6.3
+++ linux-2.6-tracehook.patch	31 Jan 2010 17:57:56 -0000	1.8.6.4
@@ -1,194 +1,336 @@
-signals: tracehook_notify_jctl change
+From: Oleg Nesterov <oleg at redhat.com>
 
-This changes tracehook_notify_jctl() so it's called with the siglock held,
-and changes its argument and return value definition.  These clean-ups make
-it a better fit for what new tracing hooks need to check.
+[PATCH] signals: check ->group_stop_count after tracehook_get_signal()
 
-Tracing needs the siglock here, held from the time TASK_STOPPED was set,
-to avoid potential SIGCONT races if it wants to allow any blocking in its
-tracing hooks.
+Move the call to do_signal_stop() down, after tracehook call.
+This makes ->group_stop_count condition visible to tracers before
+do_signal_stop() will participate in this group-stop.
 
-This also folds the finish_stop() function into its caller do_signal_stop().
-The function is short, called only once and only unconditionally.  It aids
-readability to fold it in.
+Currently the patch has no effect, tracehook_get_signal() always
+returns 0.
 
+Signed-off-by: Oleg Nesterov <oleg at redhat.com>
 Signed-off-by: Roland McGrath <roland at redhat.com>
 ---
- include/linux/tracehook.h |   25 ++++++++++------
- kernel/signal.c           |   69 +++++++++++++++++++++++----------------------
- 2 files changed, 51 insertions(+), 43 deletions(-)
+ arch/powerpc/include/asm/ptrace.h |    2 +
+ arch/powerpc/kernel/traps.c       |    9 ++++++
+ arch/x86/include/asm/ptrace.h     |    2 +
+ arch/x86/kernel/ptrace.c          |   51 ++++++++++++++++++++----------------
+ include/linux/ptrace.h            |   24 +++++++++++------
+ include/linux/sched.h             |    1 +
+ include/linux/tracehook.h         |   15 ++++++++---
+ kernel/ptrace.c                   |    2 +-
+ kernel/signal.c                   |   13 ++++-----
+ 9 files changed, 76 insertions(+), 43 deletions(-)
 
-diff --git a/include/linux/tracehook.h b/include/linux/tracehook.h
-index c7aa154..4ec4821 100644  
---- a/include/linux/tracehook.h
-+++ b/include/linux/tracehook.h
-@@ -1,7 +1,7 @@
- /*
-  * Tracing hooks
-  *
-- * Copyright (C) 2008 Red Hat, Inc.  All rights reserved.
-+ * Copyright (C) 2008-2009 Red Hat, Inc.  All rights reserved.
-  *
-  * This copyrighted material is made available to anyone wishing to use,
-  * modify, copy, or redistribute it subject to the terms and conditions
-@@ -464,22 +464,29 @@ static inline int tracehook_get_signal(s
+diff --git a/arch/powerpc/include/asm/ptrace.h b/arch/powerpc/include/asm/ptrace.h
+index 8c34149..cbd759e 100644  
+--- a/arch/powerpc/include/asm/ptrace.h
++++ b/arch/powerpc/include/asm/ptrace.h
+@@ -140,6 +140,8 @@ extern void user_enable_single_step(stru
+ extern void user_enable_block_step(struct task_struct *);
+ extern void user_disable_single_step(struct task_struct *);
  
- /**
-  * tracehook_notify_jctl - report about job control stop/continue
-- * @notify:		nonzero if this is the last thread in the group to stop
-+ * @notify:		zero, %CLD_STOPPED or %CLD_CONTINUED
-  * @why:		%CLD_STOPPED or %CLD_CONTINUED
-  *
-  * This is called when we might call do_notify_parent_cldstop().
-- * It's called when about to stop for job control; we are already in
-- * %TASK_STOPPED state, about to call schedule().  It's also called when
-- * a delayed %CLD_STOPPED or %CLD_CONTINUED report is ready to be made.
-  *
-- * Return nonzero to generate a %SIGCHLD with @why, which is
-- * normal if @notify is nonzero.
-+ * @notify is zero if we would not ordinarily send a %SIGCHLD,
-+ * or is the %CLD_STOPPED or %CLD_CONTINUED .si_code for %SIGCHLD.
-  *
-- * Called with no locks held.
-+ * @why is %CLD_STOPPED when about to stop for job control;
-+ * we are already in %TASK_STOPPED state, about to call schedule().
-+ * It might also be that we have just exited (check %PF_EXITING),
-+ * but need to report that a group-wide stop is complete.
-+ *
-+ * @why is %CLD_CONTINUED when waking up after job control stop and
-+ * ready to make a delayed @notify report.
-+ *
-+ * Return the %CLD_* value for %SIGCHLD, or zero to generate no signal.
-+ *
-+ * Called with the siglock held.
-  */
- static inline int tracehook_notify_jctl(int notify, int why)
++#define ARCH_HAS_USER_SINGLE_STEP_INFO
++
+ #endif /* __ASSEMBLY__ */
+ 
+ #endif /* __KERNEL__ */
+diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
+index 6f0ae1a..83b57ac 100644  
+--- a/arch/powerpc/kernel/traps.c
++++ b/arch/powerpc/kernel/traps.c
+@@ -174,6 +174,15 @@ int die(const char *str, struct pt_regs 
+ 	return 0;
+ }
+ 
++void user_single_step_siginfo(struct task_struct *tsk,
++				struct pt_regs *regs, siginfo_t *info)
++{
++	memset(info, 0, sizeof(*info));
++	info->si_signo = SIGTRAP;
++	info->si_code = TRAP_TRACE;
++	info->si_addr = (void __user *)regs->nip;
++}
++
+ void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr)
  {
--	return notify || (current->ptrace & PT_PTRACED);
-+	return notify ?: (current->ptrace & PT_PTRACED) ? why : 0;
+ 	siginfo_t info;
+diff --git a/arch/x86/include/asm/ptrace.h b/arch/x86/include/asm/ptrace.h
+index 0f0d908..7a88a82 100644  
+--- a/arch/x86/include/asm/ptrace.h
++++ b/arch/x86/include/asm/ptrace.h
+@@ -230,6 +230,8 @@ extern void user_enable_block_step(struc
+ #define arch_has_block_step()	(boot_cpu_data.x86 >= 6)
+ #endif
+ 
++#define ARCH_HAS_USER_SINGLE_STEP_INFO
++
+ struct user_desc;
+ extern int do_get_thread_area(struct task_struct *p, int idx,
+ 			      struct user_desc __user *info);
+diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
+index 7b058a2..ea35dee 100644  
+--- a/arch/x86/kernel/ptrace.c
++++ b/arch/x86/kernel/ptrace.c
+@@ -1437,21 +1437,33 @@ const struct user_regset_view *task_user
+ #endif
  }
  
- #define DEATH_REAP			-1
-diff --git a/kernel/signal.c b/kernel/signal.c
-index d803473..424eff2 100644  
---- a/kernel/signal.c
-+++ b/kernel/signal.c
-@@ -702,7 +702,7 @@ static int prepare_signal(int sig, struc
+-void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs,
+-					 int error_code, int si_code)
++static void fill_sigtrap_info(struct task_struct *tsk,
++				struct pt_regs *regs,
++				int error_code, int si_code,
++				struct siginfo *info)
+ {
+-	struct siginfo info;
+-
+ 	tsk->thread.trap_no = 1;
+ 	tsk->thread.error_code = error_code;
  
- 		if (why) {
- 			/*
--			 * The first thread which returns from finish_stop()
-+			 * The first thread which returns from do_signal_stop()
- 			 * will take ->siglock, notice SIGNAL_CLD_MASK, and
- 			 * notify its parent. See get_signal_to_deliver().
- 			 */
-@@ -1665,29 +1665,6 @@ void ptrace_notify(int exit_code)
- 	spin_unlock_irq(&current->sighand->siglock);
+-	memset(&info, 0, sizeof(info));
+-	info.si_signo = SIGTRAP;
+-	info.si_code = si_code;
++	memset(info, 0, sizeof(*info));
++	info->si_signo = SIGTRAP;
++	info->si_code = si_code;
++	info->si_addr = user_mode_vm(regs) ? (void __user *)regs->ip : NULL;
++}
+ 
+-	/* User-mode ip? */
+-	info.si_addr = user_mode_vm(regs) ? (void __user *) regs->ip : NULL;
++void user_single_step_siginfo(struct task_struct *tsk,
++				struct pt_regs *regs,
++				struct siginfo *info)
++{
++	fill_sigtrap_info(tsk, regs, 0, TRAP_BRKPT, info);
++}
++
++void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs,
++					 int error_code, int si_code)
++{
++	struct siginfo info;
+ 
++	fill_sigtrap_info(tsk, regs, error_code, si_code, &info);
+ 	/* Send us the fake SIGTRAP */
+ 	force_sig_info(SIGTRAP, &info, tsk);
  }
+@@ -1516,29 +1528,22 @@ asmregparm long syscall_trace_enter(stru
  
--static void
--finish_stop(int stop_count)
--{
--	/*
--	 * If there are no other threads in the group, or if there is
--	 * a group stop in progress and we are the last to stop,
--	 * report to the parent.  When ptraced, every thread reports itself.
+ asmregparm void syscall_trace_leave(struct pt_regs *regs)
+ {
++	bool step;
++
+ 	if (unlikely(current->audit_context))
+ 		audit_syscall_exit(AUDITSC_RESULT(regs->ax), regs->ax);
+ 
+ 	if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
+ 		trace_sys_exit(regs, regs->ax);
+ 
+-	if (test_thread_flag(TIF_SYSCALL_TRACE))
+-		tracehook_report_syscall_exit(regs, 0);
+-
+ 	/*
+ 	 * If TIF_SYSCALL_EMU is set, we only get here because of
+ 	 * TIF_SINGLESTEP (i.e. this is PTRACE_SYSEMU_SINGLESTEP).
+ 	 * We already reported this syscall instruction in
+-	 * syscall_trace_enter(), so don't do any more now.
 -	 */
--	if (tracehook_notify_jctl(stop_count == 0, CLD_STOPPED)) {
--		read_lock(&tasklist_lock);
--		do_notify_parent_cldstop(current, CLD_STOPPED);
--		read_unlock(&tasklist_lock);
--	}
+-	if (unlikely(test_thread_flag(TIF_SYSCALL_EMU)))
+-		return;
 -
--	do {
--		schedule();
--	} while (try_to_freeze());
 -	/*
--	 * Now we don't run again until continued.
--	 */
--	current->exit_code = 0;
+-	 * If we are single-stepping, synthesize a trap to follow the
+-	 * system call instruction.
++	 * syscall_trace_enter().
+ 	 */
+-	if (test_thread_flag(TIF_SINGLESTEP) &&
+-	    tracehook_consider_fatal_signal(current, SIGTRAP))
+-		send_sigtrap(current, regs, 0, TRAP_BRKPT);
++	step = unlikely(test_thread_flag(TIF_SINGLESTEP)) &&
++			!test_thread_flag(TIF_SYSCALL_EMU);
++	if (step || test_thread_flag(TIF_SYSCALL_TRACE))
++		tracehook_report_syscall_exit(regs, step);
+ }
+diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h
+index 7456d7d..4802e2a 100644  
+--- a/include/linux/ptrace.h
++++ b/include/linux/ptrace.h
+@@ -85,6 +85,7 @@ extern int ptrace_traceme(void);
+ extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len);
+ extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len);
+ extern int ptrace_attach(struct task_struct *tsk);
++extern bool __ptrace_detach(struct task_struct *tracer, struct task_struct *tracee);
+ extern int ptrace_detach(struct task_struct *, unsigned int);
+ extern void ptrace_disable(struct task_struct *);
+ extern int ptrace_check_attach(struct task_struct *task, int kill);
+@@ -105,12 +106,7 @@ static inline int ptrace_reparented(stru
+ {
+ 	return child->real_parent != child->parent;
+ }
+-static inline void ptrace_link(struct task_struct *child,
+-			       struct task_struct *new_parent)
+-{
+-	if (unlikely(child->ptrace))
+-		__ptrace_link(child, new_parent);
 -}
--
- /*
-  * This performs the stopping for SIGSTOP and other stop signals.
-  * We have to stop all threads in the thread group.
-@@ -1698,6 +1675,7 @@ static int do_signal_stop(int signr)
- {
- 	struct signal_struct *sig = current->signal;
- 	int stop_count;
-+	int notify;
++
+ static inline void ptrace_unlink(struct task_struct *child)
+ {
+ 	if (unlikely(child->ptrace))
+@@ -169,9 +165,9 @@ static inline void ptrace_init_task(stru
+ 	INIT_LIST_HEAD(&child->ptraced);
+ 	child->parent = child->real_parent;
+ 	child->ptrace = 0;
+-	if (unlikely(ptrace)) {
++	if (unlikely(ptrace) && (current->ptrace & PT_PTRACED)) {
+ 		child->ptrace = current->ptrace;
+-		ptrace_link(child, current->parent);
++		__ptrace_link(child, current->parent);
+ 	}
+ }
  
- 	if (sig->group_stop_count > 0) {
- 		/*
-@@ -1737,8 +1715,30 @@ static int do_signal_stop(int signr)
- 	current->exit_code = sig->group_exit_code;
- 	__set_current_state(TASK_STOPPED);
- 
-+	/*
-+	 * If there are no other threads in the group, or if there is
-+	 * a group stop in progress and we are the last to stop,
-+	 * report to the parent.  When ptraced, every thread reports itself.
-+	 */
-+	notify = tracehook_notify_jctl(stop_count == 0 ? CLD_STOPPED : 0,
-+				       CLD_STOPPED);
-+
- 	spin_unlock_irq(&current->sighand->siglock);
--	finish_stop(stop_count);
-+
-+	if (notify) {
-+		read_lock(&tasklist_lock);
-+		do_notify_parent_cldstop(current, notify);
-+		read_unlock(&tasklist_lock);
+@@ -278,6 +274,18 @@ static inline void user_enable_block_ste
+ }
+ #endif	/* arch_has_block_step */
+ 
++#ifdef ARCH_HAS_USER_SINGLE_STEP_INFO
++extern void user_single_step_siginfo(struct task_struct *tsk,
++				struct pt_regs *regs, siginfo_t *info);
++#else
++static inline void user_single_step_siginfo(struct task_struct *tsk,
++				struct pt_regs *regs, siginfo_t *info)
++{
++	memset(info, 0, sizeof(*info));
++	info->si_signo = SIGTRAP;
++}
++#endif
++
+ #ifndef arch_ptrace_stop_needed
+ /**
+  * arch_ptrace_stop_needed - Decide whether arch_ptrace_stop() should be called
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 75e6e60..6c8928b 100644  
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -2060,6 +2060,7 @@ extern int kill_pgrp(struct pid *pid, in
+ extern int kill_pid(struct pid *pid, int sig, int priv);
+ extern int kill_proc_info(int, struct siginfo *, pid_t);
+ extern int do_notify_parent(struct task_struct *, int);
++extern void do_notify_parent_cldstop(struct task_struct *, int);
+ extern void __wake_up_parent(struct task_struct *p, struct task_struct *parent);
+ extern void force_sig(int, struct task_struct *);
+ extern void force_sig_specific(int, struct task_struct *);
+diff --git a/include/linux/tracehook.h b/include/linux/tracehook.h
+index 1eb44a9..c78b2f4 100644  
+--- a/include/linux/tracehook.h
++++ b/include/linux/tracehook.h
+@@ -134,6 +134,13 @@ static inline __must_check int tracehook
+  */
+ static inline void tracehook_report_syscall_exit(struct pt_regs *regs, int step)
+ {
++	if (step && (task_ptrace(current) & PT_PTRACED)) {
++		siginfo_t info;
++		user_single_step_siginfo(current, regs, &info);
++		force_sig_info(SIGTRAP, &info, current);
++		return;
 +	}
 +
-+	do {
-+		schedule();
-+	} while (try_to_freeze());
-+	/*
-+	 * Now we don't run again until continued.
-+	 */
-+	current->exit_code = 0;
-+
- 	return 1;
- }
- 
-@@ -1807,14 +1807,15 @@ relock:
- 		int why = (signal->flags & SIGNAL_STOP_CONTINUED)
- 				? CLD_CONTINUED : CLD_STOPPED;
- 		signal->flags &= ~SIGNAL_CLD_MASK;
--		spin_unlock_irq(&sighand->siglock);
+ 	ptrace_report_syscall(regs);
+ }
  
--		if (unlikely(!tracehook_notify_jctl(1, why)))
--			goto relock;
-+		why = tracehook_notify_jctl(why, CLD_CONTINUED);
-+		spin_unlock_irq(&sighand->siglock);
+@@ -149,7 +156,7 @@ static inline int tracehook_unsafe_exec(
+ {
+ 	int unsafe = 0;
+ 	int ptrace = task_ptrace(task);
+-	if (ptrace & PT_PTRACED) {
++	if (ptrace) {
+ 		if (ptrace & PT_PTRACE_CAP)
+ 			unsafe |= LSM_UNSAFE_PTRACE_CAP;
+ 		else
+@@ -171,7 +178,7 @@ static inline int tracehook_unsafe_exec(
+  */
+ static inline struct task_struct *tracehook_tracer_task(struct task_struct *tsk)
+ {
+-	if (task_ptrace(tsk) & PT_PTRACED)
++	if (task_ptrace(tsk))
+ 		return rcu_dereference(tsk->parent);
+ 	return NULL;
+ }
+@@ -379,7 +386,7 @@ static inline void tracehook_signal_hand
+ 					    const struct k_sigaction *ka,
+ 					    struct pt_regs *regs, int stepping)
+ {
+-	if (stepping)
++	if (stepping && (task_ptrace(current) & PT_PTRACED))
+ 		ptrace_notify(SIGTRAP);
+ }
  
--		read_lock(&tasklist_lock);
--		do_notify_parent_cldstop(current->group_leader, why);
--		read_unlock(&tasklist_lock);
-+		if (why) {
-+			read_lock(&tasklist_lock);
-+			do_notify_parent_cldstop(current->group_leader, why);
-+			read_unlock(&tasklist_lock);
-+		}
- 		goto relock;
- 	}
+@@ -485,7 +492,7 @@ static inline int tracehook_get_signal(s
+  */
+ static inline int tracehook_notify_jctl(int notify, int why)
+ {
+-	return notify ?: (current->ptrace & PT_PTRACED) ? why : 0;
++	return notify ?: task_ptrace(current) ? why : 0;
+ }
  
-@@ -1979,14 +1980,14 @@ void exit_signals(struct task_struct *ts
- 	if (unlikely(tsk->signal->group_stop_count) &&
- 			!--tsk->signal->group_stop_count) {
- 		tsk->signal->flags = SIGNAL_STOP_STOPPED;
--		group_stop = 1;
-+		group_stop = tracehook_notify_jctl(CLD_STOPPED, CLD_STOPPED);
- 	}
- out:
- 	spin_unlock_irq(&tsk->sighand->siglock);
+ /**
+diff --git a/kernel/ptrace.c b/kernel/ptrace.c
+index 23bd09c..b7c1d32 100644  
+--- a/kernel/ptrace.c
++++ b/kernel/ptrace.c
+@@ -271,7 +271,7 @@ static int ignoring_children(struct sigh
+  * reap it now, in that case we must also wake up sub-threads sleeping in
+  * do_wait().
+  */
+-static bool __ptrace_detach(struct task_struct *tracer, struct task_struct *p)
++bool __ptrace_detach(struct task_struct *tracer, struct task_struct *p)
+ {
+ 	__ptrace_unlink(p);
  
--	if (unlikely(group_stop) && tracehook_notify_jctl(1, CLD_STOPPED)) {
-+	if (unlikely(group_stop)) {
- 		read_lock(&tasklist_lock);
--		do_notify_parent_cldstop(tsk, CLD_STOPPED);
-+		do_notify_parent_cldstop(tsk, group_stop);
- 		read_unlock(&tasklist_lock);
- 	}
+diff --git a/kernel/signal.c b/kernel/signal.c
+index 6705320..9908335 100644  
+--- a/kernel/signal.c
++++ b/kernel/signal.c
+@@ -1461,7 +1461,7 @@ int do_notify_parent(struct task_struct 
+ 	return ret;
  }
+ 
+-static void do_notify_parent_cldstop(struct task_struct *tsk, int why)
++void do_notify_parent_cldstop(struct task_struct *tsk, int why)
+ {
+ 	struct siginfo info;
+ 	unsigned long flags;
+@@ -1731,7 +1731,7 @@ static int do_signal_stop(int signr)
+ static int ptrace_signal(int signr, siginfo_t *info,
+ 			 struct pt_regs *regs, void *cookie)
+ {
+-	if (!task_ptrace(current))
++	if (!(task_ptrace(current) & PT_PTRACED))
+ 		return signr;
+ 
+ 	ptrace_signal_deliver(regs, cookie);
+@@ -1807,11 +1807,6 @@ relock:
+ 
+ 	for (;;) {
+ 		struct k_sigaction *ka;
+-
+-		if (unlikely(signal->group_stop_count > 0) &&
+-		    do_signal_stop(0))
+-			goto relock;
+-
+ 		/*
+ 		 * Tracing can induce an artifical signal and choose sigaction.
+ 		 * The return value in @signr determines the default action,
+@@ -1823,6 +1818,10 @@ relock:
+ 		if (unlikely(signr != 0))
+ 			ka = return_ka;
+ 		else {
++			if (unlikely(signal->group_stop_count > 0) &&
++			    do_signal_stop(0))
++				goto relock;
++
+ 			signr = dequeue_signal(current, &current->blocked,
+ 					       info);
+ 

linux-2.6-upstream-reverts.patch:
 i915_irq.c |   43 ++++++++++++++++++-------------------------
 1 file changed, 18 insertions(+), 25 deletions(-)

Index: linux-2.6-upstream-reverts.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-upstream-reverts.patch,v
retrieving revision 1.5
retrieving revision 1.5.6.1
diff -u -p -r1.5 -r1.5.6.1
--- linux-2.6-upstream-reverts.patch	12 Nov 2008 16:28:22 -0000	1.5
+++ linux-2.6-upstream-reverts.patch	31 Jan 2010 17:57:56 -0000	1.5.6.1
@@ -1 +1,90 @@
-nil
+From c7c85101afd0cb8ce497456d12ee1cad4aad152f Mon Sep 17 00:00:00 2001
+From: Zou Nan hai <Nanhai.zou at intel.com>
+Date: Fri, 15 Jan 2010 10:29:06 +0800
+Subject: drm/i915: remove loop in Ironlake interrupt handler
+
+From: Zou Nan hai <Nanhai.zou at intel.com>
+
+commit c7c85101afd0cb8ce497456d12ee1cad4aad152f upstream.
+
+[[ revert in fedora, conflicts with drm update ]]
+
+On Ironlake, there is an interrupt master control bit. With the bit
+disabled before clearing IIR, we do not need to handle extra interrupt
+in a loop. This patch removes the loop in Ironlake interrupt handler.
+It fixed irq lost issue on some Ironlake platforms.
+
+Signed-off-by: Zou Nan hai <Nanhai.zou at intel.com>
+Signed-off-by: Zhenyu Wang <zhenyuw at linux.intel.com>
+Signed-off-by: Eric Anholt <eric at anholt.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
+
+
+---
+ drivers/gpu/drm/i915/i915_irq.c |   43 ++++++++++++++++------------------------
+ 1 file changed, 18 insertions(+), 25 deletions(-)
+
+--- a/drivers/gpu/drm/i915/i915_irq.c
++++ b/drivers/gpu/drm/i915/i915_irq.c
+@@ -255,7 +255,6 @@ irqreturn_t igdng_irq_handler(struct drm
+ 	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
+ 	int ret = IRQ_NONE;
+ 	u32 de_iir, gt_iir, de_ier;
+-	u32 new_de_iir, new_gt_iir;
+ 	struct drm_i915_master_private *master_priv;
+ 
+ 	/* disable master interrupt before clearing iir  */
+@@ -266,35 +265,29 @@ irqreturn_t igdng_irq_handler(struct drm
+ 	de_iir = I915_READ(DEIIR);
+ 	gt_iir = I915_READ(GTIIR);
+ 
+-	for (;;) {
+-		if (de_iir == 0 && gt_iir == 0)
+-			break;
+-
+-		ret = IRQ_HANDLED;
+-
+-		I915_WRITE(DEIIR, de_iir);
+-		new_de_iir = I915_READ(DEIIR);
+-		I915_WRITE(GTIIR, gt_iir);
+-		new_gt_iir = I915_READ(GTIIR);
++	if (de_iir == 0 && gt_iir == 0)
++		goto done;
+ 
+-		if (dev->primary->master) {
+-			master_priv = dev->primary->master->driver_priv;
+-			if (master_priv->sarea_priv)
+-				master_priv->sarea_priv->last_dispatch =
+-					READ_BREADCRUMB(dev_priv);
+-		}
++	ret = IRQ_HANDLED;
+ 
+-		if (gt_iir & GT_USER_INTERRUPT) {
+-			u32 seqno = i915_get_gem_seqno(dev);
+-			dev_priv->mm.irq_gem_seqno = seqno;
+-			trace_i915_gem_request_complete(dev, seqno);
+-			DRM_WAKEUP(&dev_priv->irq_queue);
+-		}
++	if (dev->primary->master) {
++		master_priv = dev->primary->master->driver_priv;
++		if (master_priv->sarea_priv)
++			master_priv->sarea_priv->last_dispatch =
++				READ_BREADCRUMB(dev_priv);
++	}
+ 
+-		de_iir = new_de_iir;
+-		gt_iir = new_gt_iir;
++	if (gt_iir & GT_USER_INTERRUPT) {
++		u32 seqno = i915_get_gem_seqno(dev);
++		dev_priv->mm.irq_gem_seqno = seqno;
++		trace_i915_gem_request_complete(dev, seqno);
++		DRM_WAKEUP(&dev_priv->irq_queue);
+ 	}
+ 
++	I915_WRITE(GTIIR, gt_iir);
++	I915_WRITE(DEIIR, de_iir);
++
++done:
+ 	I915_WRITE(DEIER, de_ier);
+ 	(void)I915_READ(DEIER);
+ 

linux-2.6-utrace.patch:
 Documentation/DocBook/Makefile    |    2 
 Documentation/DocBook/utrace.tmpl |  590 +++++++++
 fs/proc/array.c                   |    3 
 include/linux/sched.h             |    5 
 include/linux/tracehook.h         |   87 +
 include/linux/utrace.h            |  694 ++++++++++
 init/Kconfig                      |    9 
 kernel/Makefile                   |    1 
 kernel/fork.c                     |    3 
 kernel/ptrace.c                   |   14 
 kernel/utrace.c                   | 2427 ++++++++++++++++++++++++++++++++++++++
 11 files changed, 3833 insertions(+), 2 deletions(-)

View full diff with command:
/usr/bin/cvs -n -f diff -kk -u -p -N -r 1.107.6.6 -r 1.107.6.7 linux-2.6-utrace.patchIndex: linux-2.6-utrace.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-utrace.patch,v
retrieving revision 1.107.6.6
retrieving revision 1.107.6.7
diff -u -p -r1.107.6.6 -r1.107.6.7
--- linux-2.6-utrace.patch	27 Jun 2009 11:05:15 -0000	1.107.6.6
+++ linux-2.6-utrace.patch	31 Jan 2010 17:57:57 -0000	1.107.6.7
@@ -1,5 +1,45 @@
+utrace core
+
+This adds the utrace facility, a new modular interface in the kernel for
+implementing user thread tracing and debugging.  This fits on top of the
+tracehook_* layer, so the new code is well-isolated.
+
+The new interface is in <linux/utrace.h> and the DocBook utrace book
+describes it.  It allows for multiple separate tracing engines to work in
+parallel without interfering with each other.  Higher-level tracing
+facilities can be implemented as loadable kernel modules using this layer.
+
+The new facility is made optional under CONFIG_UTRACE.
+When this is not enabled, no new code is added.
+It can only be enabled on machines that have all the
+prerequisites and select CONFIG_HAVE_ARCH_TRACEHOOK.
+
+In this initial version, utrace and ptrace do not play together at all.
+If ptrace is attached to a thread, the attach calls in the utrace kernel
+API return -EBUSY.  If utrace is attached to a thread, the PTRACE_ATTACH
+or PTRACE_TRACEME request will return EBUSY to userland.  The old ptrace
+code is otherwise unchanged and nothing using ptrace should be affected
+by this patch as long as utrace is not used at the same time.  In the
+future we can clean up the ptrace implementation and rework it to use
+the utrace API.
+
+Signed-off-by: Roland McGrath <roland at redhat.com>
+---
+ Documentation/DocBook/Makefile    |    2 +-
+ Documentation/DocBook/utrace.tmpl |  590 +++++++++
+ fs/proc/array.c                   |    3 +
+ include/linux/sched.h             |    5 +
+ include/linux/tracehook.h         |   87 ++-
+ include/linux/utrace.h            |  694 +++++++++++
+ init/Kconfig                      |    9 +
+ kernel/Makefile                   |    1 +
+ kernel/fork.c                     |    3 +
+ kernel/ptrace.c                   |   14 +
+ kernel/utrace.c                   | 2427 +++++++++++++++++++++++++++++++++++++
+ 11 files changed, 3833 insertions(+), 2 deletions(-)
+
 diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
-index 9632444..bf4b9e8 100644
+index ab8300f..95f59e4 100644  
 --- a/Documentation/DocBook/Makefile
 +++ b/Documentation/DocBook/Makefile
 @@ -9,7 +9,7 @@
@@ -13,7 +53,7 @@ index 9632444..bf4b9e8 100644
  	    mac80211.xml debugobjects.xml sh.xml regulator.xml \
 diff --git a/Documentation/DocBook/utrace.tmpl b/Documentation/DocBook/utrace.tmpl
 new file mode 100644
-index 0000000..6cc58a1
+index ...e149f49 100644  
 --- /dev/null
 +++ b/Documentation/DocBook/utrace.tmpl
 @@ -0,0 +1,590 @@
@@ -472,7 +512,7 @@ index 0000000..6cc58a1
 +  <function>utrace_finish_examine</function> surrounding the calls to
 +  <structname>struct user_regset</structname> functions or direct examination
 +  of task data structures.  <function>utrace_prepare_examine</function> returns
-+  an error if the task is not properly stopped and not dead.  After a
++  an error if the task is not properly stopped, or is dead.  After a
 +  successful examination, the paired <function>utrace_finish_examine</function>
 +  call returns an error if the task ever woke up during the examination.  If
 +  so, any data gathered may be scrambled and should be discarded.  This means
@@ -608,7 +648,7 @@ index 0000000..6cc58a1
 +
 +</book>
 diff --git a/fs/proc/array.c b/fs/proc/array.c
-index 725a650..e299a63 100644
+index 822c2d5..9069c91 100644  
 --- a/fs/proc/array.c
 +++ b/fs/proc/array.c
 @@ -82,6 +82,7 @@
@@ -616,10 +656,10 @@ index 725a650..e299a63 100644
  #include <linux/ptrace.h>
  #include <linux/tracehook.h>
 +#include <linux/utrace.h>
+ #include <linux/swapops.h>
  
  #include <asm/pgtable.h>
- #include <asm/processor.h>
-@@ -188,6 +189,8 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns,
+@@ -189,6 +190,8 @@ static inline void task_state(struct seq
  		cred->uid, cred->euid, cred->suid, cred->fsuid,
  		cred->gid, cred->egid, cred->sgid, cred->fsgid);
  
@@ -628,36 +668,16 @@ index 725a650..e299a63 100644
  	task_lock(p);
  	if (p->files)
  		fdt = files_fdtable(p->files);
-diff --git a/include/linux/init_task.h b/include/linux/init_task.h
-index 5368fbd..aecd24e 100644
---- a/include/linux/init_task.h
-+++ b/include/linux/init_task.h
-@@ -167,6 +167,7 @@ extern struct cred init_cred;
- 		[PIDTYPE_SID]  = INIT_PID_LINK(PIDTYPE_SID),		\
- 	},								\
- 	.dirties = INIT_PROP_LOCAL_SINGLE(dirties),			\
-+	INIT_UTRACE(tsk)						\
- 	INIT_IDS							\
- 	INIT_PERF_COUNTERS(tsk)						\
- 	INIT_TRACE_IRQFLAGS						\
 diff --git a/include/linux/sched.h b/include/linux/sched.h
-index 4d07542..2060aa1 100644
+index 6c8928b..139d300 100644  
 --- a/include/linux/sched.h
 +++ b/include/linux/sched.h
-@@ -59,6 +59,7 @@ struct sched_param {
- #include <linux/errno.h>
- #include <linux/nodemask.h>
- #include <linux/mm_types.h>
-+#include <linux/utrace_struct.h>
- 
- #include <asm/system.h>
- #include <asm/page.h>
-@@ -1313,6 +1314,11 @@ struct task_struct {
+@@ -1393,6 +1393,11 @@ struct task_struct {
  #endif
  	seccomp_t seccomp;
  
 +#ifdef CONFIG_UTRACE
-+	struct utrace utrace;
++	struct utrace *utrace;
 +	unsigned long utrace_flags;
 +#endif
 +
@@ -665,7 +685,7 @@ index 4d07542..2060aa1 100644
     	u32 parent_exec_id;
     	u32 self_exec_id;
 diff --git a/include/linux/tracehook.h b/include/linux/tracehook.h
-index 7c2bfd9..a91d9a4 100644
+index c78b2f4..71fa250 100644  
 --- a/include/linux/tracehook.h
 +++ b/include/linux/tracehook.h
 @@ -49,6 +49,7 @@
@@ -685,7 +705,7 @@ index 7c2bfd9..a91d9a4 100644
  	return (task_ptrace(task) & PT_PTRACED) != 0;
  }
  
-@@ -111,6 +114,9 @@ static inline void ptrace_report_syscall(struct pt_regs *regs)
+@@ -111,6 +114,9 @@ static inline void ptrace_report_syscall
  static inline __must_check int tracehook_report_syscall_entry(
  	struct pt_regs *regs)
  {
@@ -695,16 +715,17 @@ index 7c2bfd9..a91d9a4 100644
  	ptrace_report_syscall(regs);
  	return 0;
  }
-@@ -134,6 +140,8 @@ static inline __must_check int tracehook_report_syscall_entry(
+@@ -134,6 +140,9 @@ static inline __must_check int tracehook
   */
  static inline void tracehook_report_syscall_exit(struct pt_regs *regs, int step)
  {
 +	if (task_utrace_flags(current) & UTRACE_EVENT(SYSCALL_EXIT))
 +		utrace_report_syscall_exit(regs);
- 	ptrace_report_syscall(regs);
- }
- 
-@@ -194,6 +202,8 @@ static inline void tracehook_report_exec(struct linux_binfmt *fmt,
++
+ 	if (step && (task_ptrace(current) & PT_PTRACED)) {
+ 		siginfo_t info;
+ 		user_single_step_siginfo(current, regs, &info);
+@@ -201,6 +210,8 @@ static inline void tracehook_report_exec
  					 struct linux_binprm *bprm,
  					 struct pt_regs *regs)
  {
@@ -713,7 +734,7 @@ index 7c2bfd9..a91d9a4 100644
  	if (!ptrace_event(PT_TRACE_EXEC, PTRACE_EVENT_EXEC, 0) &&
  	    unlikely(task_ptrace(current) & PT_PTRACED))
  		send_sig(SIGTRAP, current, 0);
-@@ -211,6 +221,8 @@ static inline void tracehook_report_exec(struct linux_binfmt *fmt,
+@@ -218,10 +229,37 @@ static inline void tracehook_report_exec
   */
  static inline void tracehook_report_exit(long *exit_code)
  {
@@ -722,15 +743,36 @@ index 7c2bfd9..a91d9a4 100644
  	ptrace_event(PT_TRACE_EXIT, PTRACE_EVENT_EXIT, *exit_code);
  }
  
-@@ -254,6 +266,7 @@ static inline int tracehook_prepare_clone(unsigned clone_flags)
- static inline void tracehook_finish_clone(struct task_struct *child,
- 					  unsigned long clone_flags, int trace)
- {
-+	utrace_init_task(child);
- 	ptrace_init_task(child, (clone_flags & CLONE_PTRACE) || trace);
- }
- 
-@@ -278,6 +291,8 @@ static inline void tracehook_report_clone(struct pt_regs *regs,
+ /**
++ * tracehook_init_task - task_struct has just been copied
[...2817 lines suppressed...]
++	utrace = task_utrace_struct(task);
++	if (utrace->resume < UTRACE_RESUME ||
++	    utrace->pending_attach || utrace->signal_handler) {
++		enum utrace_resume_action resume;
++
 +		/*
 +		 * We've been asked for an explicit report before we
 +		 * even check for pending signals.
@@ -3659,19 +3707,14 @@ index 0000000..74b5fc5
 +
 +		splice_attaching(utrace);
 +
-+		if (unlikely(!utrace->interrupt) && unlikely(!utrace->report))
-+			report.result = UTRACE_SIGNAL_IGN;
-+		else if (utrace->signal_handler)
-+			report.result = UTRACE_SIGNAL_HANDLER;
-+		else
-+			report.result = UTRACE_SIGNAL_REPORT;
++		report.result = utrace->signal_handler ?
++			UTRACE_SIGNAL_HANDLER : UTRACE_SIGNAL_REPORT;
++		utrace->signal_handler = 0;
 +
-+		/*
-+		 * We are now making the report and it's on the
-+		 * interrupt path, so clear the flags asking for those.
-+		 */
-+		utrace->interrupt = utrace->report = utrace->signal_handler = 0;
-+		utrace->stopped = 0;
++		resume = utrace->resume;
++		utrace->resume = UTRACE_RESUME;
++
++		spin_unlock(&utrace->lock);
 +
 +		/*
 +		 * Make sure signal_pending() only returns true
@@ -3683,13 +3726,21 @@ index 0000000..74b5fc5
 +			spin_unlock_irq(&task->sighand->siglock);
 +		}
 +
-+		spin_unlock(&utrace->lock);
-+
-+		if (unlikely(report.result == UTRACE_SIGNAL_IGN))
++		if (resume > UTRACE_REPORT) {
++			/*
++			 * We only got here to process utrace->resume.
++			 * Despite no callbacks, this report is not spurious.
++			 */
++			report.action = resume;
++			report.spurious = false;
++			finish_resume_report(task, utrace, &report);
++			return -1;
++		} else if (!(task->utrace_flags & UTRACE_EVENT(QUIESCE))) {
 +			/*
 +			 * We only got here to clear utrace->signal_handler.
 +			 */
 +			return -1;
++		}
 +
 +		/*
 +		 * Do a reporting pass for no signal, just for EVENT(QUIESCE).
@@ -3700,22 +3751,15 @@ index 0000000..74b5fc5
 +		event = 0;
 +		ka = NULL;
 +		memset(return_ka, 0, sizeof *return_ka);
-+	} else if ((task->utrace_flags & UTRACE_EVENT_SIGNAL_ALL) == 0 &&
-+		   !utrace->stopped) {
++	} else if (!(task->utrace_flags & UTRACE_EVENT_SIGNAL_ALL) ||
++		   unlikely(task->signal->group_stop_count)) {
 +		/*
-+		 * If no engine is interested in intercepting signals,
-+		 * let the caller just dequeue them normally.
++		 * If no engine is interested in intercepting signals or
++		 * we must stop, let the caller just dequeue them normally
++		 * or participate in group-stop.
 +		 */
 +		return 0;
 +	} else {
-+		if (unlikely(utrace->stopped)) {
-+			spin_unlock_irq(&task->sighand->siglock);
-+			spin_lock(&utrace->lock);
-+			utrace->stopped = 0;
-+			spin_unlock(&utrace->lock);
-+			spin_lock_irq(&task->sighand->siglock);
-+		}
-+
 +		/*
 +		 * Steal the next signal so we can let tracing engines
 +		 * examine it.  From the signal number and sigaction,
@@ -3800,11 +3844,11 @@ index 0000000..74b5fc5
 +
 +		if (ops->report_signal)
 +			ret = (*ops->report_signal)(
-+				report.result | report.action, engine, task,
++				report.result | report.action, engine,
 +				regs, info, ka, return_ka);
 +		else
 +			ret = (report.result | (*ops->report_quiesce)(
-+				       report.action, engine, task, event));
++				       report.action, engine, event));
 +
 +		/*
 +		 * Avoid a tight loop reporting again and again if some
@@ -3819,7 +3863,7 @@ index 0000000..74b5fc5
 +			break;
 +		}
 +
-+		finish_callback(utrace, &report, engine, ret);
++		finish_callback(task, utrace, &report, engine, ret);
 +	}
 +
 +	/*
@@ -3866,7 +3910,7 @@ index 0000000..74b5fc5
 +			 */
 +			if (report.action != UTRACE_RESUME)
 +				report.action = UTRACE_INTERRUPT;
-+			finish_report(&report, task, utrace);
++			finish_report(task, utrace, &report, true);
 +
 +			if (unlikely(report.result & UTRACE_SIGNAL_HOLD))
 +				push_back_signal(task, info);
@@ -3899,9 +3943,9 @@ index 0000000..74b5fc5
 +		 * as in utrace_resume(), above.  After we've dealt with that,
 +		 * our caller will relock and come back through here.
 +		 */
-+		finish_resume_report(&report, task, utrace);
++		finish_resume_report(task, utrace, &report);
 +
-+		if (unlikely(report.killed)) {
++		if (unlikely(fatal_signal_pending(task))) {
 +			/*
 +			 * The only reason we woke up now was because of a
 +			 * SIGKILL.  Don't do normal dequeuing in case it
@@ -3931,12 +3975,25 @@ index 0000000..74b5fc5
 +
 +	/*
 +	 * Complete the bookkeeping after the report.
-+	 * This sets utrace->report if UTRACE_STOP was used.
++	 * This sets utrace->resume if UTRACE_STOP was used.
 +	 */
-+	finish_report(&report, task, utrace);
++	finish_report(task, utrace, &report, true);
 +
 +	return_ka->sa.sa_handler = SIG_DFL;
 +
++	/*
++	 * If this signal is fatal, si_signo gets through as exit_code.
++	 * We can't allow a completely bogus value there or else core
++	 * kernel code can freak out.  (If an engine wants to control
++	 * the exit_code value exactly, it can do so in report_exit.)
++	 * We'll produce a big complaint in dmesg, but won't crash.
++	 * That's nicer for debugging your utrace engine.
++	 */
++	if (unlikely(info->si_signo & 0x80)) {
++		WARN(1, "utrace engine left bogus si_signo value!");
++		info->si_signo = SIGTRAP;
++	}
++
 +	if (unlikely(report.result & UTRACE_SIGNAL_HOLD))
 +		push_back_signal(task, info);
 +	else
@@ -3962,11 +4019,13 @@ index 0000000..74b5fc5
 +	spin_lock(&utrace->lock);
 +
 +	utrace->signal_handler = 1;
-+	if (stepping) {
-+		utrace->interrupt = 1;
-+		set_tsk_thread_flag(task, TIF_SIGPENDING);
-+	} else {
-+		set_tsk_thread_flag(task, TIF_NOTIFY_RESUME);
++	if (utrace->resume > UTRACE_INTERRUPT) {
++		if (stepping) {
++			utrace->resume = UTRACE_INTERRUPT;
++			set_tsk_thread_flag(task, TIF_SIGPENDING);
++		} else if (utrace->resume == UTRACE_RESUME) {
++			set_tsk_thread_flag(task, TIF_NOTIFY_RESUME);
++		}
 +	}
 +
 +	spin_unlock(&utrace->lock);
@@ -3982,7 +4041,7 @@ index 0000000..74b5fc5
 + * &struct user_regset calls, or direct access to thread-synchronous fields.
 + *
 + * When @target is current, this call is superfluous.  When @target is
-+ * another thread, it must held stopped via %UTRACE_STOP by @engine.
++ * another thread, it must be held stopped via %UTRACE_STOP by @engine.
 + *
 + * This call may block the caller until @target stays stopped, so it must
 + * be called only after the caller is sure @target is about to unschedule.
@@ -4093,10 +4152,5 @@ index 0000000..74b5fc5
 + */
 +void task_utrace_proc_status(struct seq_file *m, struct task_struct *p)
 +{
-+	struct utrace *utrace = &p->utrace;
-+	seq_printf(m, "Utrace:\t%lx%s%s%s\n",
-+		   p->utrace_flags,
-+		   utrace->stopped ? " (stopped)" : "",
-+		   utrace->report ? " (report)" : "",
-+		   utrace->interrupt ? " (interrupt)" : "");
++	seq_printf(m, "Utrace:\t%lx\n", p->utrace_flags);
 +}

linux-2.6-v4l-dvb-experimental.patch:
 drivers/media/dvb/siano/smssdio.c              |  356 +++
 drivers/media/video/Kconfig                    |    2 
 drivers/media/video/Makefile                   |    1 
 drivers/media/video/cx231xx/Kconfig            |   35 
 drivers/media/video/cx231xx/Makefile           |   14 
 drivers/media/video/cx231xx/cx231xx-audio.c    |  585 +++++
 drivers/media/video/cx231xx/cx231xx-avcore.c   | 2581 +++++++++++++++++++++++++
 drivers/media/video/cx231xx/cx231xx-cards.c    |  919 ++++++++
 drivers/media/video/cx231xx/cx231xx-conf-reg.h |  494 ++++
 drivers/media/video/cx231xx/cx231xx-core.c     | 1200 +++++++++++
 drivers/media/video/cx231xx/cx231xx-dvb.c      |  559 +++++
 drivers/media/video/cx231xx/cx231xx-i2c.c      |  555 +++++
 drivers/media/video/cx231xx/cx231xx-input.c    |  246 ++
 drivers/media/video/cx231xx/cx231xx-pcb-cfg.c  |  795 +++++++
 drivers/media/video/cx231xx/cx231xx-pcb-cfg.h  |  231 ++
 drivers/media/video/cx231xx/cx231xx-reg.h      | 1564 +++++++++++++++
 drivers/media/video/cx231xx/cx231xx-vbi.c      |  701 ++++++
 drivers/media/video/cx231xx/cx231xx-vbi.h      |   65 
 drivers/media/video/cx231xx/cx231xx-video.c    | 2439 +++++++++++++++++++++++
 drivers/media/video/cx231xx/cx231xx.h          |  779 +++++++
 drivers/media/video/cx25840/cx25840-audio.c    |   66 
 drivers/media/video/cx25840/cx25840-core.c     |  165 +
 drivers/media/video/cx25840/cx25840-core.h     |    1 
 drivers/media/video/cx25840/cx25840-firmware.c |   11 
 include/linux/i2c-id.h                         |    1 
 include/linux/mmc/sdio_ids.h                   |    8 
 26 files changed, 14310 insertions(+), 63 deletions(-)

View full diff with command:
/usr/bin/cvs -n -f diff -kk -u -p -N -r 1.2.2.6 -r 1.2.2.7 linux-2.6-v4l-dvb-experimental.patchIndex: linux-2.6-v4l-dvb-experimental.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-v4l-dvb-experimental.patch,v
retrieving revision 1.2.2.6
retrieving revision 1.2.2.7
diff -u -p -r1.2.2.6 -r1.2.2.7
--- linux-2.6-v4l-dvb-experimental.patch	12 Nov 2009 23:01:06 -0000	1.2.2.6
+++ linux-2.6-v4l-dvb-experimental.patch	31 Jan 2010 17:57:57 -0000	1.2.2.7
@@ -1 +1,14750 @@
-empty
+Hans Verkuil (2):
+      V4L/DVB (10982): cx231xx: fix compile warning
+      V4L/DVB (10989): cx25840: cx23885 detection was broken
+
+Mauro Carvalho Chehab (12):
+      V4L/DVB (10953): cx25840: Fix CodingStyle errors introduced by the last patch
+      V4L/DVB (10955): cx231xx: CodingStyle automatic fixes with Lindent
+      V4L/DVB (10956): cx231xx: First series of manual CodingStyle fixes
+      V4L/DVB (10957a): cx231xx: Fix compilation breakage
+      V4L/DVB (11130): cx231xx: fix an inverted logic at vidioc_streamoff
+      V4L/DVB (11131): cx231xx: avoid trying to access unfilled dev struct
+      V4L/DVB (11132): cx231xx: usb probe cleanups
+      V4L/DVB (11133): cx231xx: don't print pcb config debug messages by default
+      V4L/DVB (11134): cx231xx: dmesg cleanup
+      V4L/DVB (11135): cx231xx: use usb_make_path() for bus_info
+      V4L/DVB (11250): cx231xx: Fix Kconfig help items
+      Merge branch 'next' of ../pending into Fedora
+
+Sri Deevi (7):
+      V4L/DVB (10952): cx25840: prepare it to be used by cx231xx module
+      V4L/DVB (10954): Add cx231xx USB driver
+      V4L/DVB (10957): cx231xx: Fix CodingStyle
+      V4L/DVB (10958): cx231xx: some additional CodingStyle and minor fixes
+      V4L/DVB (11038): Fix the issue with audio module & correction of Names
+      V4L/DVB (11128): cx231xx: convert the calls to subdev format
+      V4L/DVB (11129): cx231xx: Use generic names for each device block
+
+Uri Shkolnik (2):
+      V4L/DVB (11239): sdio: add cards ids for sms (Siano Mobile Silicon) MDTV receivers
+      V4L/DVB (11240): siano: add high level SDIO interface driver for SMS based cards
+
+diff --git a/drivers/media/dvb/siano/smssdio.c b/drivers/media/dvb/siano/smssdio.c
+new file mode 100644
+index 0000000..31ba8c5
+--- /dev/null
++++ b/drivers/media/dvb/siano/smssdio.c
+@@ -0,0 +1,356 @@
++/*
++ *  smssdio.c - Siano 1xxx SDIO interface driver
++ *
++ *  Copyright 2008 Pierre Ossman
++ *
++ * Based on code by Siano Mobile Silicon, Inc.,
++ * Copyright (C) 2006-2008, Uri Shkolnik
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or (at
++ * your option) any later version.
++ *
++ *
++ * This hardware is a bit odd in that all transfers should be done
++ * to/from the SMSSDIO_DATA register, yet the "increase address" bit
++ * always needs to be set.
++ *
++ * Also, buffers from the card are always aligned to 128 byte
++ * boundaries.
++ */
++
++/*
++ * General cleanup notes:
++ *
++ * - only typedefs should be name *_t
++ *
++ * - use ERR_PTR and friends for smscore_register_device()
++ *
++ * - smscore_getbuffer should zero fields
++ *
++ * Fix stop command
++ */
++
++#include <linux/moduleparam.h>
++#include <linux/firmware.h>
++#include <linux/delay.h>
++#include <linux/mmc/card.h>
++#include <linux/mmc/sdio_func.h>
++#include <linux/mmc/sdio_ids.h>
++
++#include "smscoreapi.h"
++#include "sms-cards.h"
++
++/* Registers */
++
++#define SMSSDIO_DATA		0x00
++#define SMSSDIO_INT		0x04
++
++static const struct sdio_device_id smssdio_ids[] = {
++	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_STELLAR),
++	 .driver_data = SMS1XXX_BOARD_SIANO_STELLAR},
++	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_NOVA_A0),
++	 .driver_data = SMS1XXX_BOARD_SIANO_NOVA_A},
++	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_NOVA_B0),
++	 .driver_data = SMS1XXX_BOARD_SIANO_NOVA_B},
++	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_VEGA_A0),
++	 .driver_data = SMS1XXX_BOARD_SIANO_VEGA},
++	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_VENICE),
++	 .driver_data = SMS1XXX_BOARD_SIANO_VEGA},
++	{ /* end: all zeroes */ },
++};
++
++MODULE_DEVICE_TABLE(sdio, smssdio_ids);
++
++struct smssdio_device {
++	struct sdio_func *func;
++
++	struct smscore_device_t *coredev;
++
++	struct smscore_buffer_t *split_cb;
++};
++
++/*******************************************************************/
++/* Siano core callbacks                                            */
++/*******************************************************************/
++
++static int smssdio_sendrequest(void *context, void *buffer, size_t size)
++{
++	int ret;
++	struct smssdio_device *smsdev;
++
++	smsdev = context;
++
++	sdio_claim_host(smsdev->func);
++
++	while (size >= smsdev->func->cur_blksize) {
++		ret = sdio_write_blocks(smsdev->func, SMSSDIO_DATA, buffer, 1);
++		if (ret)
++			goto out;
++
++		buffer += smsdev->func->cur_blksize;
++		size -= smsdev->func->cur_blksize;
++	}
++
++	if (size) {
++		ret = sdio_write_bytes(smsdev->func, SMSSDIO_DATA,
++				       buffer, size);
++		if (ret)
++			goto out;
++	}
++
++out:
++	sdio_release_host(smsdev->func);
++
++	return ret;
++}
++
++/*******************************************************************/
++/* SDIO callbacks                                                  */
++/*******************************************************************/
++
++static void smssdio_interrupt(struct sdio_func *func)
++{
++	int ret, isr;
++
++	struct smssdio_device *smsdev;
++	struct smscore_buffer_t *cb;
++	struct SmsMsgHdr_ST *hdr;
++	size_t size;
++
++	smsdev = sdio_get_drvdata(func);
++
++	/*
++	 * The interrupt register has no defined meaning. It is just
++	 * a way of turning of the level triggered interrupt.
++	 */
++	isr = sdio_readb(func, SMSSDIO_INT, &ret);
++	if (ret) {
++		dev_err(&smsdev->func->dev,
++			"Unable to read interrupt register!\n");
++		return;
++	}
++
++	if (smsdev->split_cb == NULL) {
++		cb = smscore_getbuffer(smsdev->coredev);
++		if (!cb) {
++			dev_err(&smsdev->func->dev,
++				"Unable to allocate data buffer!\n");
++			return;
++		}
++
++		ret = sdio_read_blocks(smsdev->func, cb->p, SMSSDIO_DATA, 1);
++		if (ret) {
++			dev_err(&smsdev->func->dev,
++				"Error %d reading initial block!\n", ret);
++			return;
++		}
++
++		hdr = cb->p;
++
++		if (hdr->msgFlags & MSG_HDR_FLAG_SPLIT_MSG) {
++			smsdev->split_cb = cb;
[...14360 lines suppressed...]
++
++			pll /= pll_post;
++			v4l_dbg(1, cx25840_debug, client, "PLL = %d.%06d MHz\n",
++					pll / 1000000, pll % 1000000);
++			v4l_dbg(1, cx25840_debug, client, "PLL/8 = %d.%06d MHz\n",
++					pll / 8000000, (pll / 8) % 1000000);
++
++			fin = ((u64)src_decimation * pll) >> 12;
++			v4l_dbg(1, cx25840_debug, client,
++					"ADC Sampling freq = %d.%06d MHz\n",
++					fin / 1000000, fin % 1000000);
++
++			fsc = (((u64)sc) * pll) >> 24L;
++			v4l_dbg(1, cx25840_debug, client,
++					"Chroma sub-carrier freq = %d.%06d MHz\n",
++					fsc / 1000000, fsc % 1000000);
++
++			v4l_dbg(1, cx25840_debug, client, "hblank %i, hactive %i, "
++				"vblank %i, vactive %i, vblank656 %i, src_dec %i, "
++				"burst 0x%02x, luma_lpf %i, uv_lpf %i, comb 0x%02x, "
++				"sc 0x%06x\n",
++				hblank, hactive, vblank, vactive, vblank656,
++				src_decimation, burst, luma_lpf, uv_lpf, comb, sc);
++		}
+ 	}
+ 
+ 	/* Sets horizontal blanking delay and active lines */
+@@ -596,7 +669,7 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
+ 	 * configuration in reg (for the cx23885) so we have no
+ 	 * need to attempt to flip bits for earlier av decoders.
+ 	 */
+-	if (!state->is_cx23885) {
++	if (!state->is_cx23885 && !state->is_cx231xx) {
+ 		switch (aud_input) {
+ 		case CX25840_AUDIO_SERIAL:
+ 			/* do nothing, use serial audio input */
+@@ -619,7 +692,7 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
+ 	/* Set INPUT_MODE to Composite (0) or S-Video (1) */
+ 	cx25840_and_or(client, 0x401, ~0x6, is_composite ? 0 : 0x02);
+ 
+-	if (!state->is_cx23885) {
++	if (!state->is_cx23885 && !state->is_cx231xx) {
+ 		/* Set CH_SEL_ADC2 to 1 if input comes from CH3 */
+ 		cx25840_and_or(client, 0x102, ~0x2, (reg & 0x80) == 0 ? 2 : 0);
+ 		/* Set DUAL_MODE_ADC2 to 1 if input comes from both CH2&CH3 */
+@@ -659,6 +732,19 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
+ 		 */
+ 		cx25840_write(client, 0x918, 0xa0);
+ 		cx25840_write(client, 0x919, 0x01);
++	} else if (state->is_cx231xx) {
++		/* Audio channel 1 src : Parallel 1 */
++		cx25840_write(client, 0x124, 0x03);
++
++		/* I2S_IN_CTL: I2S_IN_SONY_MODE, LEFT SAMPLE on WS=1 */
++		cx25840_write(client, 0x914, 0xa0);
++
++		/* I2S_OUT_CTL:
++		 * I2S_IN_SONY_MODE, LEFT SAMPLE on WS=1
++		 * I2S_OUT_MASTER_MODE = Master
++		 */
++		cx25840_write(client, 0x918, 0xa0);
++		cx25840_write(client, 0x919, 0x01);
+ 	}
+ 
+ 	return 0;
+@@ -1118,6 +1204,8 @@ static int cx25840_init(struct v4l2_subdev *sd, u32 val)
+ 			cx25836_initialize(client);
+ 		else if (state->is_cx23885)
+ 			cx23885_initialize(client);
++		else if (state->is_cx231xx)
++			cx231xx_initialize(client);
+ 		else
+ 			cx25840_initialize(client);
+ 	}
+@@ -1159,7 +1247,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
+ 	v4l_dbg(1, cx25840_debug, client, "%s output\n",
+ 			enable ? "enable" : "disable");
+ 	if (enable) {
+-		if (state->is_cx23885) {
++		if (state->is_cx23885 || state->is_cx231xx) {
+ 			u8 v = (cx25840_read(client, 0x421) | 0x0b);
+ 			cx25840_write(client, 0x421, v);
+ 		} else {
+@@ -1169,7 +1257,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
+ 					state->is_cx25836 ? 0x04 : 0x07);
+ 		}
+ 	} else {
+-		if (state->is_cx23885) {
++		if (state->is_cx23885 || state->is_cx231xx) {
+ 			u8 v = cx25840_read(client, 0x421) & ~(0x0b);
+ 			cx25840_write(client, 0x421, v);
+ 		} else {
+@@ -1350,6 +1438,8 @@ static int cx25840_reset(struct v4l2_subdev *sd, u32 val)
+ 		cx25836_initialize(client);
+ 	else if (state->is_cx23885)
+ 		cx23885_initialize(client);
++	else if (state->is_cx231xx)
++		cx231xx_initialize(client);
+ 	else
+ 		cx25840_initialize(client);
+ 	return 0;
+@@ -1449,6 +1539,8 @@ static int cx25840_probe(struct i2c_client *client,
+ 		id = V4L2_IDENT_CX25836 + ((device_id >> 4) & 0xf) - 6;
+ 	} else if (device_id == 0x1313) {
+ 		id = V4L2_IDENT_CX25836 + ((device_id >> 4) & 0xf) - 6;
++	} else if ((device_id & 0xfff0) == 0x5A30) {
++		id = V4L2_IDENT_CX25840 + ((device_id >> 4) & 0xf);
+ 	}
+ 	else {
+ 		v4l_dbg(1, cx25840_debug, client, "cx25840 not found\n");
+@@ -1471,6 +1563,7 @@ static int cx25840_probe(struct i2c_client *client,
+ 	state->c = client;
+ 	state->is_cx25836 = ((device_id & 0xff00) == 0x8300);
+ 	state->is_cx23885 = (device_id == 0x0000) || (device_id == 0x1313);
++	state->is_cx231xx = (device_id == 0x5a3e);
+ 	state->vid_input = CX25840_COMPOSITE7;
+ 	state->aud_input = CX25840_AUDIO8;
+ 	state->audclk_freq = 48000;
+diff --git a/drivers/media/video/cx25840/cx25840-core.h b/drivers/media/video/cx25840/cx25840-core.h
+index 9ad0eb8..814b565 100644
+--- a/drivers/media/video/cx25840/cx25840-core.h
++++ b/drivers/media/video/cx25840/cx25840-core.h
+@@ -50,6 +50,7 @@ struct cx25840_state {
+ 	u32 rev;
+ 	int is_cx25836;
+ 	int is_cx23885;
++	int is_cx231xx;
+ 	int is_initialized;
+ 	wait_queue_head_t fw_wait;    /* wake up when the fw load is finished */
+ 	struct work_struct fw_work;   /* work entry for fw load */
+diff --git a/drivers/media/video/cx25840/cx25840-firmware.c b/drivers/media/video/cx25840/cx25840-firmware.c
+index 0b2dceb..0df53b0 100644
+--- a/drivers/media/video/cx25840/cx25840-firmware.c
++++ b/drivers/media/video/cx25840/cx25840-firmware.c
+@@ -25,6 +25,7 @@
+ 
+ #define FWFILE "v4l-cx25840.fw"
+ #define FWFILE_CX23885 "v4l-cx23885-avcore-01.fw"
++#define FWFILE_CX231XX "v4l-cx231xx-avcore-01.fw"
+ 
+ /*
+  * Mike Isely <isely at pobox.com> - The FWSEND parameter controls the
+@@ -96,9 +97,17 @@ int cx25840_loadfw(struct i2c_client *client)
+ 	u8 buffer[FWSEND];
+ 	const u8 *ptr;
+ 	int size, retval;
++	int MAX_BUF_SIZE = FWSEND;
+ 
+ 	if (state->is_cx23885)
+ 		firmware = FWFILE_CX23885;
++	else if (state->is_cx231xx)
++		firmware = FWFILE_CX231XX;
++
++	if ((state->is_cx231xx) && MAX_BUF_SIZE > 16) {
++		v4l_err(client, " Firmware download size changed to 16 bytes max length\n");
++		MAX_BUF_SIZE = 16;  /* cx231xx cannot accept more than 16 bytes at a time */
++	}
+ 
+ 	if (request_firmware(&fw, firmware, FWDEV(client)) != 0) {
+ 		v4l_err(client, "unable to open firmware %s\n", firmware);
+@@ -113,7 +122,7 @@ int cx25840_loadfw(struct i2c_client *client)
+ 	size = fw->size;
+ 	ptr = fw->data;
+ 	while (size > 0) {
+-		int len = min(FWSEND - 2, size);
++		int len = min(MAX_BUF_SIZE - 2, size);
+ 
+ 		memcpy(buffer + 2, ptr, len);
+ 
+diff --git a/include/linux/i2c-id.h b/include/linux/i2c-id.h
+index f27604a..f9d48c9 100644
+--- a/include/linux/i2c-id.h
++++ b/include/linux/i2c-id.h
+@@ -88,6 +88,7 @@
+ #define I2C_HW_B_CX2341X	0x010020 /* Conexant CX2341X MPEG encoder cards */
+ #define I2C_HW_B_CX23885	0x010022 /* conexant 23885 based tv cards (bus1) */
+ #define I2C_HW_B_AU0828		0x010023 /* auvitek au0828 usb bridge */
++#define I2C_HW_B_CX231XX	0x010024 /* Conexant CX231XX USB based cards */
+ #define I2C_HW_B_HDPVR		0x010025 /* Hauppauge HD PVR */
+ 
+ /* --- SGI adapters							*/
+diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
+index ea1bf5b..3d7533d 100644
+--- a/include/linux/mmc/sdio_ids.h
++++ b/include/linux/mmc/sdio_ids.h
+@@ -24,6 +24,14 @@
+  */
+ 
+ #define SDIO_VENDOR_ID_MARVELL			0x02df
++#define SDIO_VENDOR_ID_SIANO			0x039a
++
+ #define SDIO_DEVICE_ID_MARVELL_LIBERTAS		0x9103
++#define SDIO_DEVICE_ID_SIANO_STELLAR 		0x5347
++#define SDIO_DEVICE_ID_SIANO_NOVA_A0		0x1100
++#define SDIO_DEVICE_ID_SIANO_NOVA_B0		0x0201
++#define SDIO_DEVICE_ID_SIANO_NICE		0x0202
++#define SDIO_DEVICE_ID_SIANO_VEGA_A0		0x0300
++#define SDIO_DEVICE_ID_SIANO_VENICE		0x0301
+ 
+ #endif

linux-2.6-v4l-dvb-fixes.patch:
 b/Documentation/dvb/get_dvb_firmware                      |   85 
 b/Documentation/feature-removal-schedule.txt              |    8 
 b/Documentation/ioctl/ioctl-number.txt                    |    2 
 b/Documentation/video4linux/CARDLIST.bttv                 |    6 
 b/Documentation/video4linux/CARDLIST.cx23885              |    4 
 b/Documentation/video4linux/CARDLIST.cx88                 |    1 
 b/Documentation/video4linux/CARDLIST.em28xx               |    9 
 b/Documentation/video4linux/CARDLIST.saa7134              |    2 
 b/Documentation/video4linux/Zoran                         |    3 
 b/Documentation/video4linux/bttv/Insmod-options           |   10 
 b/Documentation/video4linux/bttv/README                   |    4 
 b/Documentation/video4linux/cx2341x/README.hm12           |    4 
 b/Documentation/video4linux/gspca.txt                     |    4 
 b/Documentation/video4linux/si470x.txt                    |   11 
 b/Documentation/video4linux/v4l2-framework.txt            |  187 
 b/Documentation/video4linux/v4lgrab.c                     |    4 
 b/Documentation/video4linux/zr364xx.txt                   |    1 
 b/MAINTAINERS                                             |    2 
 b/arch/arm/mach-pxa/pcm990-baseboard.c                    |   53 
 b/arch/arm/plat-mxc/include/mach/mx3_camera.h             |   52 
 b/arch/sh/boards/board-ap325rxa.c                         |    3 
 b/arch/sh/boards/mach-migor/setup.c                       |    5 
 b/drivers/media/Kconfig                                   |    2 
 b/drivers/media/common/ir-keymaps.c                       |  146 
 b/drivers/media/common/saa7146_core.c                     |   15 
 b/drivers/media/common/saa7146_fops.c                     |   48 
 b/drivers/media/common/saa7146_i2c.c                      |   29 
 b/drivers/media/common/saa7146_video.c                    | 1268 +---
 b/drivers/media/common/tuners/Kconfig                     |   64 
 b/drivers/media/common/tuners/Makefile                    |    1 
 b/drivers/media/common/tuners/mc44s803.c                  |  371 +
 b/drivers/media/common/tuners/mc44s803.h                  |   46 
 b/drivers/media/common/tuners/mc44s803_priv.h             |  208 
 b/drivers/media/common/tuners/mt2060.c                    |    2 
 b/drivers/media/common/tuners/mt20xx.c                    |    2 
 b/drivers/media/common/tuners/mxl5005s.c                  |    7 
 b/drivers/media/common/tuners/mxl5007t.c                  |  428 -
 b/drivers/media/common/tuners/tda18271-common.c           |    6 
 b/drivers/media/common/tuners/tda18271-fe.c               |   37 
 b/drivers/media/common/tuners/tda18271-priv.h             |    6 
 b/drivers/media/common/tuners/tda18271.h                  |   10 
 b/drivers/media/common/tuners/tda827x.c                   |  237 
 b/drivers/media/common/tuners/tda8290.c                   |    9 
 b/drivers/media/common/tuners/tea5761.c                   |    2 
 b/drivers/media/common/tuners/tea5767.c                   |    2 
 b/drivers/media/common/tuners/xc5000.c                    |   14 
 b/drivers/media/dvb/b2c2/Kconfig                          |    2 
 b/drivers/media/dvb/b2c2/Makefile                         |    1 
 b/drivers/media/dvb/b2c2/flexcop-common.h                 |   64 
 b/drivers/media/dvb/b2c2/flexcop-dma.c                    |   27 
 b/drivers/media/dvb/b2c2/flexcop-eeprom.c                 |   47 
 b/drivers/media/dvb/b2c2/flexcop-fe-tuner.c               |    6 
 b/drivers/media/dvb/b2c2/flexcop-hw-filter.c              |  171 
 b/drivers/media/dvb/b2c2/flexcop-i2c.c                    |   61 
 b/drivers/media/dvb/b2c2/flexcop-misc.c                   |   68 
 b/drivers/media/dvb/b2c2/flexcop-pci.c                    |  165 
 b/drivers/media/dvb/b2c2/flexcop-reg.h                    |   21 
 b/drivers/media/dvb/b2c2/flexcop-sram.c                   |  112 
 b/drivers/media/dvb/b2c2/flexcop-usb.c                    |  368 -
 b/drivers/media/dvb/b2c2/flexcop-usb.h                    |   62 
 b/drivers/media/dvb/b2c2/flexcop.c                        |   86 
 b/drivers/media/dvb/b2c2/flexcop.h                        |   20 
 b/drivers/media/dvb/b2c2/flexcop_ibi_value_be.h           |    7 
 b/drivers/media/dvb/b2c2/flexcop_ibi_value_le.h           |    7 
 b/drivers/media/dvb/bt8xx/Kconfig                         |    2 
 b/drivers/media/dvb/bt8xx/dst_ca.c                        |   14 
 b/drivers/media/dvb/bt8xx/dvb-bt8xx.c                     |    2 
 b/drivers/media/dvb/dm1105/Kconfig                        |    1 
 b/drivers/media/dvb/dm1105/dm1105.c                       |  204 
 b/drivers/media/dvb/dvb-core/dmxdev.c                     |    2 
 b/drivers/media/dvb/dvb-core/dvb_ca_en50221.c             |    2 
 b/drivers/media/dvb/dvb-core/dvb_frontend.c               |    2 
 b/drivers/media/dvb/dvb-core/dvb_net.c                    |    2 
 b/drivers/media/dvb/dvb-core/dvbdev.c                     |    4 
 b/drivers/media/dvb/dvb-core/dvbdev.h                     |    2 
 b/drivers/media/dvb/dvb-usb/Kconfig                       |   67 
 b/drivers/media/dvb/dvb-usb/Makefile                      |    2 
 b/drivers/media/dvb/dvb-usb/af9015.c                      |   60 
 b/drivers/media/dvb/dvb-usb/af9015.h                      |   31 
 b/drivers/media/dvb/dvb-usb/ce6230.c                      |  328 +
 b/drivers/media/dvb/dvb-usb/ce6230.h                      |   69 
 b/drivers/media/dvb/dvb-usb/dib0700_core.c                |   10 
 b/drivers/media/dvb/dvb-usb/dib0700_devices.c             |  164 
 b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h                 |   11 
 b/drivers/media/dvb/dvb-usb/dvb-usb.h                     |    2 
 b/drivers/media/dvb/firewire/firedtv-avc.c                |    2 
 b/drivers/media/dvb/frontends/Kconfig                     |   69 
 b/drivers/media/dvb/frontends/Makefile                    |    6 
 b/drivers/media/dvb/frontends/au8522.h                    |   16 
 b/drivers/media/dvb/frontends/au8522_decoder.c            |  835 ++
 b/drivers/media/dvb/frontends/au8522_dig.c                |  902 ++
 b/drivers/media/dvb/frontends/au8522_priv.h               |  412 +
 b/drivers/media/dvb/frontends/cx24113.c                   |    2 
 b/drivers/media/dvb/frontends/cx24116.c                   |   63 
 b/drivers/media/dvb/frontends/cx24123.c                   |    4 
 b/drivers/media/dvb/frontends/dib0070.h                   |    2 
 b/drivers/media/dvb/frontends/dib3000mc.h                 |   36 
 b/drivers/media/dvb/frontends/dib7000m.h                  |   28 
 b/drivers/media/dvb/frontends/dib7000p.h                  |   35 
 b/drivers/media/dvb/frontends/dvb_dummy_fe.h              |   19 
 b/drivers/media/dvb/frontends/itd1000_priv.h              |    2 
 b/drivers/media/dvb/frontends/lgdt3304.c                  |    1 
 b/drivers/media/dvb/frontends/lgdt3305.c                  | 1087 +++
 b/drivers/media/dvb/frontends/lgdt3305.h                  |   85 
 b/drivers/media/dvb/frontends/lnbh24.h                    |   55 
 b/drivers/media/dvb/frontends/lnbp21.c                    |   41 
 b/drivers/media/dvb/frontends/lnbp21.h                    |   34 
 b/drivers/media/dvb/frontends/s921_module.c               |    1 
 b/drivers/media/dvb/frontends/stb6100_cfg.h               |    4 
 b/drivers/media/dvb/frontends/stv0900.h                   |   62 
 b/drivers/media/dvb/frontends/stv0900_core.c              | 1949 ++++++
 b/drivers/media/dvb/frontends/stv0900_init.h              |  441 +
 b/drivers/media/dvb/frontends/stv0900_priv.h              |  430 +
 b/drivers/media/dvb/frontends/stv0900_reg.h               | 3787 ++++++++++++
 b/drivers/media/dvb/frontends/stv0900_sw.c                | 2847 +++++++++
 b/drivers/media/dvb/frontends/stv6110.c                   |  456 +
 b/drivers/media/dvb/frontends/stv6110.h                   |   62 
 b/drivers/media/dvb/frontends/tda1004x.c                  |   30 
 b/drivers/media/dvb/frontends/zl10036.c                   |  519 +
 b/drivers/media/dvb/frontends/zl10036.h                   |   53 
 b/drivers/media/dvb/frontends/zl10353.c                   |    8 
 b/drivers/media/dvb/frontends/zl10353.h                   |    4 
 b/drivers/media/dvb/frontends/zl10353_priv.h              |    8 
 b/drivers/media/dvb/pluto2/pluto2.c                       |    7 
 b/drivers/media/dvb/siano/Makefile                        |    4 
 b/drivers/media/dvb/siano/sms-cards.c                     |   92 
 b/drivers/media/dvb/siano/sms-cards.h                     |    5 
 b/drivers/media/dvb/siano/smscoreapi.c                    |   45 
 b/drivers/media/dvb/siano/smscoreapi.h                    |   41 
 b/drivers/media/dvb/siano/smsdvb.c                        |   60 
 b/drivers/media/dvb/siano/smsusb.c                        |   73 
 b/drivers/media/dvb/ttpci/Kconfig                         |    2 
 b/drivers/media/dvb/ttpci/av7110.c                        |    2 
 b/drivers/media/dvb/ttpci/av7110_av.c                     |    4 
 b/drivers/media/dvb/ttpci/av7110_ca.c                     |    2 
 b/drivers/media/dvb/ttpci/av7110_v4l.c                    |  480 -
 b/drivers/media/dvb/ttpci/budget-av.c                     |   88 
 b/drivers/media/dvb/ttpci/budget-ci.c                     |    6 
 b/drivers/media/radio/dsbr100.c                           |   10 
 b/drivers/media/radio/radio-aimslab.c                     |  347 -
 b/drivers/media/radio/radio-aztech.c                      |  378 -
 b/drivers/media/radio/radio-cadet.c                       |  595 -
 b/drivers/media/radio/radio-gemtek-pci.c                  |  329 -
 b/drivers/media/radio/radio-gemtek.c                      |  396 -
 b/drivers/media/radio/radio-maestro.c                     |  337 -
 b/drivers/media/radio/radio-maxiradio.c                   |  374 -
 b/drivers/media/radio/radio-mr800.c                       |  221 
 b/drivers/media/radio/radio-rtrack2.c                     |  276 
 b/drivers/media/radio/radio-sf16fmi.c                     |  283 
 b/drivers/media/radio/radio-sf16fmr2.c                    |  371 -
 b/drivers/media/radio/radio-si470x.c                      |  200 
 b/drivers/media/radio/radio-tea5764.c                     |    3 
 b/drivers/media/radio/radio-terratec.c                    |  310 
 b/drivers/media/radio/radio-trust.c                       |  343 -
 b/drivers/media/radio/radio-typhoon.c                     |  349 -
 b/drivers/media/radio/radio-zoltrix.c                     |  378 -
 b/drivers/media/video/Kconfig                             |   94 
 b/drivers/media/video/Makefile                            |   10 
 b/drivers/media/video/adv7170.c                           |  354 -
 b/drivers/media/video/adv7175.c                           |  329 -
 b/drivers/media/video/au0828/Kconfig                      |   10 
 b/drivers/media/video/au0828/Makefile                     |    2 
 b/drivers/media/video/au0828/au0828-cards.c               |  127 
 b/drivers/media/video/au0828/au0828-core.c                |   34 
 b/drivers/media/video/au0828/au0828-dvb.c                 |    2 
 b/drivers/media/video/au0828/au0828-i2c.c                 |   72 
 b/drivers/media/video/au0828/au0828-reg.h                 |    6 
 b/drivers/media/video/au0828/au0828-video.c               | 1712 +++++
 b/drivers/media/video/au0828/au0828.h                     |  181 
 b/drivers/media/video/bt819.c                             |  493 -
 b/drivers/media/video/bt856.c                             |  291 
 b/drivers/media/video/bt866.c                             |  282 
 b/drivers/media/video/bt8xx/Kconfig                       |    2 
 b/drivers/media/video/bt8xx/bttv-cards.c                  | 1672 ++---
 b/drivers/media/video/bt8xx/bttv-driver.c                 |  197 
 b/drivers/media/video/bt8xx/bttv-i2c.c                    |   61 
 b/drivers/media/video/bt8xx/bttv-if.c                     |   18 
 b/drivers/media/video/bt8xx/bttv-risc.c                   |    4 
 b/drivers/media/video/bt8xx/bttv-vbi.c                    |    2 
 b/drivers/media/video/bt8xx/bttv.h                        |   96 
 b/drivers/media/video/bt8xx/bttvp.h                       |   30 
 b/drivers/media/video/cafe_ccic.c                         |  432 -
 b/drivers/media/video/cpia2/cpia2_v4l.c                   |    1 
 b/drivers/media/video/cs5345.c                            |    7 
 b/drivers/media/video/cs53l32a.c                          |   12 
 b/drivers/media/video/cx18/Kconfig                        |    2 
 b/drivers/media/video/cx18/cx18-audio.c                   |   52 
 b/drivers/media/video/cx18/cx18-audio.h                   |    2 
 b/drivers/media/video/cx18/cx18-av-audio.c                |  120 
 b/drivers/media/video/cx18/cx18-av-core.c                 |  796 +-
 b/drivers/media/video/cx18/cx18-av-core.h                 |   49 
 b/drivers/media/video/cx18/cx18-av-firmware.c             |   16 
 b/drivers/media/video/cx18/cx18-av-vbi.c                  |  367 -
 b/drivers/media/video/cx18/cx18-cards.c                   |   50 
 b/drivers/media/video/cx18/cx18-cards.h                   |   18 
 b/drivers/media/video/cx18/cx18-controls.c                |   70 
 b/drivers/media/video/cx18/cx18-driver.c                  |  416 -
 b/drivers/media/video/cx18/cx18-driver.h                  |  258 
 b/drivers/media/video/cx18/cx18-dvb.c                     |    2 
 b/drivers/media/video/cx18/cx18-fileops.c                 |  107 
 b/drivers/media/video/cx18/cx18-firmware.c                |   22 
 b/drivers/media/video/cx18/cx18-gpio.c                    |  319 -
 b/drivers/media/video/cx18/cx18-gpio.h                    |   10 
 b/drivers/media/video/cx18/cx18-i2c.c                     |  296 
 b/drivers/media/video/cx18/cx18-i2c.h                     |    5 
 b/drivers/media/video/cx18/cx18-ioctl.c                   |  273 
 b/drivers/media/video/cx18/cx18-mailbox.c                 |   44 
 b/drivers/media/video/cx18/cx18-queue.c                   |    4 
 b/drivers/media/video/cx18/cx18-queue.h                   |    4 
 b/drivers/media/video/cx18/cx18-streams.c                 |  210 
 b/drivers/media/video/cx18/cx18-vbi.c                     |  155 
 b/drivers/media/video/cx18/cx18-vbi.h                     |    2 
 b/drivers/media/video/cx18/cx18-version.h                 |    4 
 b/drivers/media/video/cx18/cx18-video.c                   |    3 
 b/drivers/media/video/cx18/cx23418.h                      |   16 
 b/drivers/media/video/cx2341x.c                           |  196 
 b/drivers/media/video/cx23885/Kconfig                     |   15 
 b/drivers/media/video/cx23885/Makefile                    |    4 
 b/drivers/media/video/cx23885/cimax2.c                    |  472 +
 b/drivers/media/video/cx23885/cimax2.h                    |   47 
 b/drivers/media/video/cx23885/cx23885-417.c               |   49 
 b/drivers/media/video/cx23885/cx23885-cards.c             |   94 
 b/drivers/media/video/cx23885/cx23885-core.c              |   43 
 b/drivers/media/video/cx23885/cx23885-dvb.c               |  166 
 b/drivers/media/video/cx23885/cx23885-i2c.c               |   68 
 b/drivers/media/video/cx23885/cx23885-reg.h               |    2 
 b/drivers/media/video/cx23885/cx23885-video.c             |   51 
 b/drivers/media/video/cx23885/cx23885.h                   |   20 
 b/drivers/media/video/cx23885/netup-eeprom.c              |  107 
 b/drivers/media/video/cx23885/netup-eeprom.h              |   42 
 b/drivers/media/video/cx23885/netup-init.c                |  125 
 b/drivers/media/video/cx23885/netup-init.h                |   25 
 b/drivers/media/video/cx25840/cx25840-audio.c             |  121 
 b/drivers/media/video/cx25840/cx25840-core.c              |   65 
 b/drivers/media/video/cx25840/cx25840-core.h              |    8 
 b/drivers/media/video/cx25840/cx25840-vbi.c               |  314 -
 b/drivers/media/video/cx88/Kconfig                        |    2 
 b/drivers/media/video/cx88/cx88-blackbird.c               |    8 
 b/drivers/media/video/cx88/cx88-cards.c                   |   99 
 b/drivers/media/video/cx88/cx88-core.c                    |   11 
 b/drivers/media/video/cx88/cx88-dvb.c                     |   18 
 b/drivers/media/video/cx88/cx88-i2c.c                     |   41 
 b/drivers/media/video/cx88/cx88-input.c                   |   29 
 b/drivers/media/video/cx88/cx88-video.c                   |   52 
 b/drivers/media/video/cx88/cx88.h                         |   24 
 b/drivers/media/video/dabusb.c                            |   83 
 b/drivers/media/video/em28xx/em28xx-audio.c               |   77 
 b/drivers/media/video/em28xx/em28xx-cards.c               |  195 
 b/drivers/media/video/em28xx/em28xx-core.c                |   41 
 b/drivers/media/video/em28xx/em28xx-dvb.c                 |    3 
 b/drivers/media/video/em28xx/em28xx-i2c.c                 |   12 
 b/drivers/media/video/em28xx/em28xx-input.c               |   22 
 b/drivers/media/video/em28xx/em28xx-video.c               |   61 
 b/drivers/media/video/em28xx/em28xx.h                     |   24 
 b/drivers/media/video/gspca/Kconfig                       |   27 
 b/drivers/media/video/gspca/Makefile                      |  102 
 b/drivers/media/video/gspca/conex.c                       |   63 
 b/drivers/media/video/gspca/etoms.c                       |   36 
 b/drivers/media/video/gspca/finepix.c                     |  433 -
 b/drivers/media/video/gspca/gspca.c                       |  166 
 b/drivers/media/video/gspca/gspca.h                       |   14 
 b/drivers/media/video/gspca/jpeg.h                        |  263 
 b/drivers/media/video/gspca/m5602/m5602_core.c            |    7 
 b/drivers/media/video/gspca/mars.c                        |  506 -
 b/drivers/media/video/gspca/mr97310a.c                    |  362 +
 b/drivers/media/video/gspca/ov519.c                       |    7 
 b/drivers/media/video/gspca/ov534.c                       |  820 +-
 b/drivers/media/video/gspca/pac207.c                      |    8 
 b/drivers/media/video/gspca/pac7311.c                     |    7 
 b/drivers/media/video/gspca/sonixb.c                      |    7 
 b/drivers/media/video/gspca/sonixj.c                      |  951 ++-
 b/drivers/media/video/gspca/spca500.c                     |   99 
 b/drivers/media/video/gspca/spca501.c                     |   22 
 b/drivers/media/video/gspca/spca505.c                     |  525 -
 b/drivers/media/video/gspca/spca506.c                     |   57 
 b/drivers/media/video/gspca/spca508.c                     |  128 
 b/drivers/media/video/gspca/spca561.c                     |  192 
 b/drivers/media/video/gspca/sq905.c                       |  456 +
 b/drivers/media/video/gspca/sq905c.c                      |  328 +
 b/drivers/media/video/gspca/stk014.c                      |   72 
 b/drivers/media/video/gspca/stv06xx/stv06xx.c             |    7 
 b/drivers/media/video/gspca/stv06xx/stv06xx_hdcs.c        |   76 
 b/drivers/media/video/gspca/stv06xx/stv06xx_hdcs.h        |   65 
 b/drivers/media/video/gspca/stv06xx/stv06xx_pb0100.c      |  147 
 b/drivers/media/video/gspca/stv06xx/stv06xx_pb0100.h      |  130 
 b/drivers/media/video/gspca/stv06xx/stv06xx_sensor.h      |    8 
 b/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.c      |  123 
 b/drivers/media/video/gspca/stv06xx/stv06xx_vv6410.h      |   58 
 b/drivers/media/video/gspca/sunplus.c                     |  124 
 b/drivers/media/video/gspca/t613.c                        |  564 -
 b/drivers/media/video/gspca/tv8532.c                      |  483 -
 b/drivers/media/video/gspca/vc032x.c                      | 1591 +++--
 b/drivers/media/video/gspca/zc3xx.c                       |  884 +-
 b/drivers/media/video/hdpvr/Kconfig                       |   10 
 b/drivers/media/video/hdpvr/Makefile                      |    9 
 b/drivers/media/video/hdpvr/hdpvr-control.c               |  201 
 b/drivers/media/video/hdpvr/hdpvr-core.c                  |  466 +
 b/drivers/media/video/hdpvr/hdpvr-i2c.c                   |  145 
 b/drivers/media/video/hdpvr/hdpvr-video.c                 | 1248 +++
 b/drivers/media/video/hdpvr/hdpvr.h                       |  303 
 b/drivers/media/video/hexium_gemini.c                     |  292 
 b/drivers/media/video/hexium_orion.c                      |  103 
 b/drivers/media/video/indycam.c                           |  314 -
 b/drivers/media/video/indycam.h                           |   19 
 b/drivers/media/video/ir-kbd-i2c.c                        |   84 
 b/drivers/media/video/ivtv/ivtv-controls.c                |    1 
 b/drivers/media/video/ivtv/ivtv-driver.c                  |   93 
 b/drivers/media/video/ivtv/ivtv-driver.h                  |   26 
 b/drivers/media/video/ivtv/ivtv-fileops.c                 |   10 
 b/drivers/media/video/ivtv/ivtv-firmware.c                |    2 
 b/drivers/media/video/ivtv/ivtv-gpio.c                    |    4 
 b/drivers/media/video/ivtv/ivtv-i2c.c                     |   14 
 b/drivers/media/video/ivtv/ivtv-ioctl.c                   |   20 
 b/drivers/media/video/ivtv/ivtv-irq.c                     |    4 
 b/drivers/media/video/ivtv/ivtv-queue.c                   |    8 
 b/drivers/media/video/ivtv/ivtv-queue.h                   |    8 
 b/drivers/media/video/ivtv/ivtv-streams.c                 |   68 
 b/drivers/media/video/ivtv/ivtv-udma.c                    |   10 
 b/drivers/media/video/ivtv/ivtv-udma.h                    |    4 
 b/drivers/media/video/ivtv/ivtv-vbi.c                     |    2 
 b/drivers/media/video/ivtv/ivtv-version.h                 |    2 
 b/drivers/media/video/ivtv/ivtv-yuv.c                     |    6 
 b/drivers/media/video/ivtv/ivtvfb.c                       |    6 
 b/drivers/media/video/ks0127.c                            |  677 --
 b/drivers/media/video/ks0127.h                            |    2 
 b/drivers/media/video/m52790.c                            |    7 
 b/drivers/media/video/meye.c                              |   45 
 b/drivers/media/video/msp3400-driver.c                    |  142 
 b/drivers/media/video/mt9m001.c                           |  164 
 b/drivers/media/video/mt9m111.c                           |   64 
 b/drivers/media/video/mt9t031.c                           |  179 
 b/drivers/media/video/mt9v022.c                           |  205 
 b/drivers/media/video/mx3_camera.c                        | 1220 +++
 b/drivers/media/video/mxb.c                               |  828 +-
 b/drivers/media/video/omap24xxcam.c                       |    7 
 b/drivers/media/video/ov7670.c                            |  552 -
 b/drivers/media/video/ov772x.c                            |  320 -
 b/drivers/media/video/ovcamchip/ovcamchip_core.c          |  197 
 b/drivers/media/video/ovcamchip/ovcamchip_priv.h          |    7 
 b/drivers/media/video/pvrusb2/Kconfig                     |    8 
 b/drivers/media/video/pvrusb2/Makefile                    |    7 
 b/drivers/media/video/pvrusb2/pvrusb2-audio.c             |  142 
 b/drivers/media/video/pvrusb2/pvrusb2-audio.h             |    6 
 b/drivers/media/video/pvrusb2/pvrusb2-cs53l32a.c          |   95 
 b/drivers/media/video/pvrusb2/pvrusb2-cs53l32a.h          |   48 
 b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c       |  245 
 b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.h       |    4 
 b/drivers/media/video/pvrusb2/pvrusb2-debugifc.c          |    5 
 b/drivers/media/video/pvrusb2/pvrusb2-debugifc.h          |   12 
 b/drivers/media/video/pvrusb2/pvrusb2-devattr.c           |  102 
 b/drivers/media/video/pvrusb2/pvrusb2-devattr.h           |   34 
 b/drivers/media/video/pvrusb2/pvrusb2-dvb.c               |    2 
 b/drivers/media/video/pvrusb2/pvrusb2-encoder.c           |    2 
 b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h      |   50 
 b/drivers/media/video/pvrusb2/pvrusb2-hdw.c               |  648 +-
 b/drivers/media/video/pvrusb2/pvrusb2-hdw.h               |    6 
 b/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c          |  417 -
 b/drivers/media/video/pvrusb2/pvrusb2-i2c-core.h          |   57 
 b/drivers/media/video/pvrusb2/pvrusb2-main.c              |    4 
 b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c             |   12 
 b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c              |   18 
 b/drivers/media/video/pvrusb2/pvrusb2-video-v4l.c         |  214 
 b/drivers/media/video/pvrusb2/pvrusb2-video-v4l.h         |    7 
 b/drivers/media/video/pvrusb2/pvrusb2-wm8775.c            |  134 
 b/drivers/media/video/pvrusb2/pvrusb2-wm8775.h            |    4 
 b/drivers/media/video/pwc/Kconfig                         |   10 
 b/drivers/media/video/pwc/pwc-if.c                        |   79 
 b/drivers/media/video/pwc/pwc.h                           |    6 
 b/drivers/media/video/pxa_camera.c                        |   68 
 b/drivers/media/video/s2255drv.c                          |   41 
 b/drivers/media/video/saa5246a.c                          |   70 
 b/drivers/media/video/saa5249.c                           |   71 
 b/drivers/media/video/saa6588.c                           |  207 
 b/drivers/media/video/saa7110.c                           |  472 -
 b/drivers/media/video/saa7115.c                           |   64 
 b/drivers/media/video/saa7127.c                           |    1 
 b/drivers/media/video/saa7134/Kconfig                     |   13 
 b/drivers/media/video/saa7134/saa6752hs.c                 |  581 +
 b/drivers/media/video/saa7134/saa7134-cards.c             |  333 -
 b/drivers/media/video/saa7134/saa7134-core.c              |  108 
 b/drivers/media/video/saa7134/saa7134-dvb.c               |   75 
 b/drivers/media/video/saa7134/saa7134-empress.c           |   27 
 b/drivers/media/video/saa7134/saa7134-i2c.c               |   23 
 b/drivers/media/video/saa7134/saa7134-ts.c                |   15 
 b/drivers/media/video/saa7134/saa7134-video.c             |   75 
 b/drivers/media/video/saa7134/saa7134.h                   |   40 
 b/drivers/media/video/saa7146.h                           |    2 
 b/drivers/media/video/saa717x.c                           |   10 
 b/drivers/media/video/saa7185.c                           |  239 
 b/drivers/media/video/saa7191.c                           |  500 -
 b/drivers/media/video/saa7191.h                           |   26 
 b/drivers/media/video/sh_mobile_ceu_camera.c              |   82 
 b/drivers/media/video/sn9c102/sn9c102_devtable.h          |    4 
 b/drivers/media/video/soc_camera.c                        |  135 
 b/drivers/media/video/soc_camera_platform.c               |    9 
 b/drivers/media/video/stk-webcam.c                        |   24 
 b/drivers/media/video/tcm825x.c                           |   22 
 b/drivers/media/video/tcm825x.h                           |    2 
 b/drivers/media/video/tda7432.c                           |   22 
 b/drivers/media/video/tda9840.c                           |   82 
 b/drivers/media/video/tda9875.c                           |   19 
 b/drivers/media/video/tea6415c.c                          |   53 
 b/drivers/media/video/tea6415c.h                          |   12 
 b/drivers/media/video/tea6420.c                           |   69 
 b/drivers/media/video/tea6420.h                           |   27 
 b/drivers/media/video/tlv320aic23b.c                      |   12 
 b/drivers/media/video/tuner-core.c                        |  152 
 b/drivers/media/video/tvaudio.c                           |  173 
 b/drivers/media/video/tveeprom.c                          |    7 
 b/drivers/media/video/tvp514x.c                           |  113 
 b/drivers/media/video/tvp5150.c                           |   10 
 b/drivers/media/video/tw9910.c                            |   36 
 b/drivers/media/video/upd64031a.c                         |    7 
 b/drivers/media/video/upd64083.c                          |    7 
 b/drivers/media/video/usbvideo/vicam.c                    |    2 
 b/drivers/media/video/usbvision/usbvision-core.c          |   49 
 b/drivers/media/video/usbvision/usbvision-i2c.c           |  153 
 b/drivers/media/video/usbvision/usbvision-video.c         |  125 
 b/drivers/media/video/usbvision/usbvision.h               |   10 
 b/drivers/media/video/uvc/uvc_ctrl.c                      |    2 
 b/drivers/media/video/uvc/uvc_driver.c                    |   45 
 b/drivers/media/video/uvc/uvc_status.c                    |   16 
 b/drivers/media/video/uvc/uvc_v4l2.c                      |   20 
 b/drivers/media/video/uvc/uvc_video.c                     |  133 
 b/drivers/media/video/uvc/uvcvideo.h                      |    8 
 b/drivers/media/video/v4l2-common.c                       |  265 
 b/drivers/media/video/v4l2-compat-ioctl32.c               |    1 
 b/drivers/media/video/v4l2-dev.c                          |   54 
 b/drivers/media/video/v4l2-device.c                       |   60 
 b/drivers/media/video/v4l2-ioctl.c                        |  192 
 b/drivers/media/video/v4l2-subdev.c                       |   18 
 b/drivers/media/video/videobuf-dma-contig.c               |    2 
 b/drivers/media/video/videobuf-vmalloc.c                  |    2 
 b/drivers/media/video/vino.c                              | 1655 ++---
 b/drivers/media/video/vivi.c                              |  495 -
 b/drivers/media/video/vp27smpx.c                          |    7 
 b/drivers/media/video/vpx3220.c                           |  491 -
 b/drivers/media/video/w9966.c                             |    2 
 b/drivers/media/video/w9968cf.c                           |  133 
 b/drivers/media/video/w9968cf.h                           |   24 
 b/drivers/media/video/wm8739.c                            |    7 
 b/drivers/media/video/wm8775.c                            |   12 
 b/drivers/media/video/zc0301/zc0301_sensor.h              |    8 
 b/drivers/media/video/zoran/Kconfig                       |    8 
 b/drivers/media/video/zoran/videocodec.h                  |    9 
 b/drivers/media/video/zoran/zoran.h                       |   97 
 b/drivers/media/video/zoran/zoran_card.c                  |  555 -
 b/drivers/media/video/zoran/zoran_card.h                  |    3 
 b/drivers/media/video/zoran/zoran_device.c                |  529 -
 b/drivers/media/video/zoran/zoran_device.h                |   14 
 b/drivers/media/video/zoran/zoran_driver.c                | 4385 +++++---------
 b/drivers/media/video/zoran/zoran_procfs.c                |    2 
 b/drivers/media/video/zoran/zr36016.c                     |    5 
 b/drivers/media/video/zoran/zr36050.c                     |    4 
 b/drivers/media/video/zoran/zr36060.c                     |    4 
 b/drivers/media/video/zr364xx.c                           |   17 
 b/include/linux/Kbuild                                    |    2 
 b/include/linux/i2c-id.h                                  |    2 
 b/include/linux/ivtv.h                                    |   10 
 b/include/linux/videodev.h                                |   18 
 b/include/linux/videodev2.h                               |   69 
 b/include/media/bt819.h                                   |   33 
 b/include/media/cx2341x.h                                 |    6 
 b/include/media/cx25840.h                                 |   12 
 b/include/media/ir-common.h                               |    3 
 b/include/media/ir-kbd-i2c.h                              |    3 
 b/include/media/ov772x.h                                  |    5 
 b/include/media/saa7146.h                                 |    8 
 b/include/media/saa7146_vv.h                              |   17 
 b/include/media/sh_mobile_ceu.h                           |    5 
 b/include/media/soc_camera.h                              |   24 
 b/include/media/v4l2-chip-ident.h                         |   94 
 b/include/media/v4l2-common.h                             |   24 
 b/include/media/v4l2-dev.h                                |    2 
 b/include/media/v4l2-device.h                             |   40 
 b/include/media/v4l2-ioctl.h                              |    2 
 b/include/media/v4l2-subdev.h                             |   22 
 b/include/media/videobuf-core.h                           |    1 
 b/include/sound/tea575x-tuner.h                           |    8 
 b/sound/i2c/other/tea575x-tuner.c                         |  302 
 b/sound/pci/Kconfig                                       |    2 
 drivers/media/dvb/frontends/au8522.c                      |  874 --
 drivers/media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c      |  113 
 drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c        |  322 -
 drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.h        |   50 
 drivers/media/video/pvrusb2/pvrusb2-tuner.c               |  120 
 drivers/media/video/pvrusb2/pvrusb2-tuner.h               |   37 
 drivers/media/video/saa7111.c                             |  492 -
 drivers/media/video/saa7114.c                             | 1068 ---
 drivers/media/video/tda9840.h                             |   14 
 include/linux/video_decoder.h                             |   48 
 include/linux/video_encoder.h                             |   23 
 linux-2.6.30.noarch/drivers/media/video/hdpvr/hdpvr-i2c.c |    2 
 493 files changed, 49378 insertions(+), 28221 deletions(-)

View full diff with command:
/usr/bin/cvs -n -f diff -kk -u -p -N -r 1.2.8.11 -r 1.2.8.12 linux-2.6-v4l-dvb-fixes.patchIndex: linux-2.6-v4l-dvb-fixes.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-v4l-dvb-fixes.patch,v
retrieving revision 1.2.8.11
retrieving revision 1.2.8.12
diff -u -p -r1.2.8.11 -r1.2.8.12
--- linux-2.6-v4l-dvb-fixes.patch	12 Nov 2009 23:01:06 -0000	1.2.8.11
+++ linux-2.6-v4l-dvb-fixes.patch	31 Jan 2010 17:57:58 -0000	1.2.8.12
@@ -1 +1,113215 @@
-empty
+Abylay Ospan (5):
+      V4L/DVB (10796): Add init code for NetUP Dual DVB-S2 CI card
+      V4L/DVB (10797): Add EEPROM code for NetUP Dual DVB-S2 CI card.
+      V4L/DVB (10798): Add CIMax(R) SP2 Common Interface code for NetUP Dual DVB-S2 CI card
+      V4L/DVB (11056): Bug fix in NetUP: restore high address lines in CI
+      V4L/DVB (11057): Fix CiMax stability in Netup Dual DVB-S2 CI
+
+Adam Baker (2):
+      V4L/DVB (10639): gspca - sq905: New subdriver.
+      V4L/DVB (10829): Support alternate resolutions for sq905
+
+Alan Cox (2):
+      V4L/DVB (11243): cx88: Missing failure checks
+      V4L/DVB (11244): pluto2: silence spew of card hung up messages
+
+Alan McIvor (1):
+      V4L/DVB (11124): Add support for ProVideo PV-183 to bttv
+
+Alexey Klimov (18):
+      V4L/DVB (10316): v4l/dvb: use usb_make_path in usb-radio drivers
+      V4L/DVB (10324): em28xx: Correct mailing list
+      V4L/DVB (10335): gspca - all subdrivers: Fix CodingStyle in sd_mod_init function.
+      V4L/DVB (10336): gspca - all subdrivers: Return ret instead of -1 in sd_mod_init.
+      V4L/DVB (10455): radio-mr800: codingstyle cleanups
+      V4L/DVB (10456): radio-mr800: place dev_err instead of dev_warn
+      V4L/DVB (10457): radio-mr800: add more dev_err messages in probe
+      V4L/DVB (10458): radio-mr800: move radio start and stop in one function
+      V4L/DVB (10459): radio-mr800: fix amradio_set_freq
+      V4L/DVB (10460): radio-mr800: add stereo support
+      V4L/DVB (10461): radio-mr800: add few lost mutex locks
+      V4L/DVB (10462): radio-mr800: increase version and add comments
+      V4L/DVB (10463): radio-mr800: fix checking of retval after usb_bulk_msg
+      V4L/DVB (10464): radio-si470x: use usb_make_path in usb-radio drivers
+      V4L/DVB (10465): dsbr100: Add few lost mutex locks.
+      V4L/DVB (10522): em28xx-audio: replace printk with em28xx_errdev
+      V4L/DVB (10946): radio-rtrack2: fix double mutex_unlock
+      V4L/DVB (10961): radio-terratec: remove linux/delay.h which hadn't been used.
+
+Andy Walls (44):
+      V4L/DVB (10274): cx18: Fix a PLL divisor update for the I2S master clock
+      V4L/DVB (10275): cx18: Additional debug to display outgoing mailbox parameters
+      V4L/DVB (10276): cx18, cx2341x, ivtv: Add AC-3 audio encoding control to cx18
+      V4L/DVB (10277): cx18, cx2341x: Fix bugs in cx18 AC3 control and comply with V4L2 spec
+      V4L/DVB (10278): cx18: Fix bad audio in first analog capture.
+      V4L/DVB (10279): cx18: Print driver version number when logging status
+      V4L/DVB (10280): cx18: Rename structure members: dev to pci_dev and v4l2dev to video_dev
+      V4L/DVB (10281): cx18: Conversion to new V4L2 framework: use v4l2_device object
+      V4L/DVB (10283): cx18: Call request_module() with proper argument types.
+      V4L/DVB (10284): cx18: Add initial entry for a Leadtek DVR3100 H hybrid card
+      V4L/DVB (10433): cx18: Defer A/V core initialization until a valid cx18_av_cmd arrives
+      V4L/DVB (10434): cx18: Smarter verification of CX18_AUDIO_ENABLE register writes
+      V4L/DVB (10435): cx18: Normalize APU after second APU firmware load
+      V4L/DVB (10436): cx18: Fix coding style of a switch statement per checkpatch.pl
+      V4L/DVB (10437): cx18: Remove an unused spinlock
+      V4L/DVB (10439): cx18: Clean-up and enable sliced VBI handling
+      V4L/DVB (10440): cx18: Fix presentation timestamp (PTS) for VBI buffers
+      V4L/DVB (10441): cx18: Fix VBI ioctl() handling and Raw/Sliced VBI state management
+      V4L/DVB (10442): cx18: Fixes for enforcing when Encoder Raw VBI params can be set
+      V4L/DVB (10443): cx18: Use correct line counts per field in firmware API call
+      V4L/DVB (10444): cx18: Fix sliced VBI PTS and fix artifacts in last raw line of field
+      V4L/DVB (10445): cx18: Process Raw VBI on a whole frame basis; fix VBI buffer size
+      V4L/DVB (10446): cx18: Finally get sliced VBI working - for 525 line 60 Hz systems at least
+      V4L/DVB (10755): cx18: Convert the integrated A/V decoder core interface to a v4l2_subdev
+      V4L/DVB (10756): cx18: Slim down instance handling, build names from v4l2_device.name
+      V4L/DVB (10757): cx18, v4l2-chip-ident: Finish conversion of AV decoder core to v4l2_subdev
+      V4L/DVB (10758): cx18: Convert I2C devices to v4l2_subdevices
+      V4L/DVB (10759): cx18: Convert GPIO connected functions to act as v4l2_subdevices
+      V4L/DVB (10760): cx18: Fix a memory leak of buffers used for sliced VBI insertion
+      V4L/DVB (10761): cx18: Change log lines for internal subdevs and fix tveeprom reads
+      V4L/DVB (10762): cx18: Get rid of unused variables related to video output
+      V4L/DVB (10763): cx18: Increment version number due to significant changes for v4l2_subdevs
+      V4L/DVB (10764): cx18: Disable AC3 controls as the firmware doesn't support AC3
+      V4L/DVB (10850): cx18: Use strlcpy() instead of strncpy() for temp eeprom i2c_client setup
+      V4L/DVB (10851): cx18: Fix a video scaling check problem introduced by sliced VBI changes
+      V4L/DVB (10852): cx18: Include cx18-audio.h in cx18-audio.c to eliminate s-parse warning
+      V4L/DVB (10853): cx18: Fix s-parse warnings and a logic error about extracting the VBI PTS
+      V4L/DVB (10854): cx18: Correct comments about vertical and horizontal blanking timings
+      V4L/DVB (10855): cx18: Fix VPS service register codes
+      V4L/DVB (10856): cx18: Add interlock so sliced VBI insertion only happens for an MPEG PS
+      V4L/DVB (11042): v4l2-api: Add definitions for V4L2_MPEG_STREAM_VBI_FMT_IVTV payloads
+      V4L/DVB (11091): cx18, ivtv: Ensure endianess for linemasks in VBI embedded in MPEG stream
+      V4L/DVB (11092): cx18: Optimize processing of VBI buffers from the capture unit
+      V4L/DVB (11233): mxl5005s: Switch in mxl5005s_set_params should operate on correct values
+
+Antoine Jacquet (1):
+      V4L/DVB (10263): zr364xx: add support for Aiptek DV T300
+
+Antonio Ospite (2):
+      V4L/DVB (10344): gspca - ov534: Disable the Hercules webcams.
+      V4L/DVB (10676): mt9m111: Call icl->reset() on mt9m111_reset().
+
+Antti Palosaari (4):
+      V4L/DVB (10286): af9015: add new USB ID for KWorld DVB-T 395U
+      V4L/DVB (10329): af9015: remove dual_mode module param
+      V4L/DVB (11215): zl10353: add support for Intel CE6230 and Intel CE6231
+      V4L/DVB (11216): Add driver for Intel CE6230 DVB-T USB2.0
+
+Arne Luehrs (1):
+      V4L/DVB (10319): dib0700: enable IR receiver in Nova TD usb stick (52009)
+
+Artem Makhutov (1):
+      V4L/DVB (11248): Remove debug output from stb6100_cfg.h
+
+Bruno Christo (1):
+      V4L/DVB (10827): Add support for GeoVision GV-800(S)
+
+Daniel Glöckner (1):
+      V4L/DVB (11242): allow v4l2 drivers to provide a get_unmapped_area handler
+
+Devin Heitmueller (36):
+      V4L/DVB (10320): dib0700: fix i2c error message to make data type clear
+      V4L/DVB (10321): dib0700: Report dib0700_i2c_enumeration failures
+      V4L/DVB (11059): xc5000: fix bug for hybrid xc5000 devices with IF other than 5380
+      V4L/DVB (11060): au8522: rename the au8522.c source file
+      V4L/DVB (11061): au8522: move shared state and common functions into a separate header files
+      V4L/DVB (11062): au8522: fix register read/write high bits
+      V4L/DVB (11063): au8522: power down the digital demod when not in use
+      V4L/DVB (11064): au8522: make use of hybrid framework so analog/digital demod can share state
+      V4L/DVB (11065): au8522: add support for analog side of demodulator
+      V4L/DVB (11066): au0828: add support for analog functionality in bridge
+      V4L/DVB (11067): au0828: workaround a bug in the au0828 i2c handling
+      V4L/DVB (11068): au0828: add analog profile for the HVR-850
+      V4L/DVB (11069): au8522: add mutex protecting use of hybrid state
+      V4L/DVB (11070): au0828: Rework the way the analog video binding occurs
+      V4L/DVB (11071): tveeprom: add the xc5000 tuner to the tveeprom definition
+      V4L/DVB (11072): au0828: advertise only NTSC-M (as opposed to all NTSC standards)
+      V4L/DVB (11073): au0828: disable VBI code since it doesn't yet work
+      V4L/DVB (11074): au0828: fix i2c enumeration bug
+      V4L/DVB (11075): au0828: make register debug lines easier to read
+      V4L/DVB (11076): au0828: make g_chip_ident call work properly
+      V4L/DVB (11077): au0828: properly handle missing analog USB endpoint
+      V4L/DVB (11078): au0828: properly handle non-existent analog inputs
+      V4L/DVB (11079): au0828: fix panic on disconnect if analog initialization failed
+      V4L/DVB (11080): au0828: Convert to use v4l2_device/subdev framework
+      V4L/DVB (11081): au0828: make sure v4l2_device name is unique
+      V4L/DVB (11082): au0828: remove memset calls in v4l2 routines.
+      V4L/DVB (11083): au0828: remove some unneeded braces
+      V4L/DVB (11084): au0828: add entry for undefined input type
+      V4L/DVB (11085): au0828/au8522: Codingstyle fixes
+      V4L/DVB (11086): au0828: rename macro for currently non-function VBI support
+      V4L/DVB (11088): au0828: finish videodev/subdev conversion
+      V4L/DVB (11089): au8522: finish conversion to v4l2_device/subdev
+      V4L/DVB (11139): em28xx: add remote control definition for HVR-900 (both versions)
+      V4L/DVB (11140): usbvision: fix oops on ARM platform when allocating transfer buffers
+      V4L/DVB (11141): em28xx: fix oops on ARM platform when allocating transfer buffers
+      V4L/DVB (11142): au0828: fix oops on ARM platform when allocating transfer buffers
+
+Douglas Kosovic (1):
+      V4L/DVB (10299): bttv: Add support for IVCE-8784 support for V4L2 bttv driver
+
+Douglas Schilling Landgraf (13):
+      V4L/DVB (10323): em28xx: Add entry for GADMEI TVR200
+      V4L/DVB (10326): em28xx: Cleanup: fix bad whitespacing
+      V4L/DVB (10327): em28xx: Add check before call em28xx_isoc_audio_deinit()
+      V4L/DVB (10517): em28xx: remove bad check (changeset a31c595188af)
+      V4L/DVB (10520): em28xx-audio: Add spinlock for trigger
+      V4L/DVB (10521): em28xx-audio: Add lock for users
+      V4L/DVB (10523): em28xx-audio: Add macros EM28XX_START_AUDIO / EM28XX_STOP_AUDIO
+      V4L/DVB (10524): em28xx: Add DVC 101 model to Pinnacle Dazzle description
+      V4L/DVB (10556): em28xx-cards: Add Pinnacle Dazzle Video Creator Plus DVC107 description
+      V4L/DVB (10739): em28xx-cards: remove incorrect entry
+      V4L/DVB (10740): em28xx-cards: Add SIIG AVTuner-PVR board
+      V4L/DVB (10741): em28xx: Add Kaiser Baas Video to DVD maker support
+      V4L/DVB (11222): gspca - zc3xx: The webcam DLink DSB - C320 has the sensor pas106.
+
+Erik Andren (3):
+      V4L/DVB (10334): gspca - stv06xx: Rework control description.
+      V4L/DVB (10341): gspca - stv06xx: Plug a memory leak in the pb0100 sensor driver.
+      V4L/DVB (10342): gspca - stv06xx: Add ctrl caching to the vv6410.
+
+Erik S. Beiser (1):
+      V4L/DVB (10826): cx88: Add IR support to pcHDTV HD3000 & HD5500
+
+Guennadi Liakhovetski (9):
+      V4L/DVB (10665): soc-camera: add data signal polarity flags to drivers
+      V4L/DVB (10672): sh_mobile_ceu_camera: include NV* formats into the format list only once.
+      V4L/DVB (10673): mt9t031: fix gain and hflip controls, register update, and scaling
+      V4L/DVB (10674): soc-camera: camera host driver for i.MX3x SoCs
+      V4L/DVB (10675): soc-camera: extend soc_camera_bus_param_compatible with more tests
+      V4L/DVB (11024): soc-camera: separate S_FMT and S_CROP operations
+      V4L/DVB (11025): soc-camera: configure drivers with a default format on open
+      V4L/DVB (11026): sh-mobile-ceu-camera: set field to the value, configured at open()
+      V4L/DVB (11027): soc-camera: configure drivers with a default format at probe time
+
+Hans Verkuil (171):
+      V4L/DVB (10231): v4l2-subdev: add v4l2_ext_controls support
+      V4L/DVB (10244): v4l2: replace a few snprintfs with strlcpy
+      V4L/DVB (10246): saa6752hs: convert to v4l2_subdev.
+      V4L/DVB (10247): saa7134: convert to the new v4l2 framework.
+      V4L/DVB (10249): v4l2-common: added v4l2_i2c_tuner_addrs()
[...112825 lines suppressed...]
+-			if(copy_to_user(arg,&v, sizeof(v)))
+-				return -EFAULT;
++	}
++	return -EINVAL;
++}
++
++static int vidioc_g_ctrl(struct file *file, void *priv,
++					struct v4l2_control *ctrl)
++{
++	struct snd_tea575x *tea = video_drvdata(file);
++
++	switch (ctrl->id) {
++	case V4L2_CID_AUDIO_MUTE:
++		if (tea->ops->mute) {
++			ctrl->value = tea->mute;
+ 			return 0;
+ 		}
+-		case VIDIOCSAUDIO:
+-		{
+-			struct video_audio v;
+-			if(copy_from_user(&v, arg, sizeof(v)))
+-				return -EFAULT;
+-			if (tea->ops->mute)
+-				tea->ops->mute(tea,
+-					       (v.flags &
+-						VIDEO_AUDIO_MUTE) ? 1 : 0);
+-			if(v.audio)
+-				return -EINVAL;
++	}
++	return -EINVAL;
++}
++
++static int vidioc_s_ctrl(struct file *file, void *priv,
++					struct v4l2_control *ctrl)
++{
++	struct snd_tea575x *tea = video_drvdata(file);
++
++	switch (ctrl->id) {
++	case V4L2_CID_AUDIO_MUTE:
++		if (tea->ops->mute) {
++			tea->ops->mute(tea, ctrl->value);
++			tea->mute = 1;
+ 			return 0;
+ 		}
+-		default:
+-			return -ENOIOCTLCMD;
+ 	}
++	return -EINVAL;
++}
++
++static int vidioc_g_input(struct file *filp, void *priv, unsigned int *i)
++{
++	*i = 0;
++	return 0;
+ }
+ 
+-static void snd_tea575x_release(struct video_device *vfd)
++static int vidioc_s_input(struct file *filp, void *priv, unsigned int i)
+ {
++	if (i != 0)
++		return -EINVAL;
++	return 0;
+ }
+ 
+ static int snd_tea575x_exclusive_open(struct file *file)
+@@ -189,50 +260,91 @@ static int snd_tea575x_exclusive_release(struct file *file)
+ 	return 0;
+ }
+ 
++static const struct v4l2_file_operations tea575x_fops = {
++	.owner		= THIS_MODULE,
++	.open           = snd_tea575x_exclusive_open,
++	.release        = snd_tea575x_exclusive_release,
++	.ioctl		= video_ioctl2,
++};
++
++static const struct v4l2_ioctl_ops tea575x_ioctl_ops = {
++	.vidioc_querycap    = vidioc_querycap,
++	.vidioc_g_tuner     = vidioc_g_tuner,
++	.vidioc_s_tuner     = vidioc_s_tuner,
++	.vidioc_g_audio     = vidioc_g_audio,
++	.vidioc_s_audio     = vidioc_s_audio,
++	.vidioc_g_input     = vidioc_g_input,
++	.vidioc_s_input     = vidioc_s_input,
++	.vidioc_g_frequency = vidioc_g_frequency,
++	.vidioc_s_frequency = vidioc_s_frequency,
++	.vidioc_queryctrl   = vidioc_queryctrl,
++	.vidioc_g_ctrl      = vidioc_g_ctrl,
++	.vidioc_s_ctrl      = vidioc_s_ctrl,
++};
++
++static struct video_device tea575x_radio = {
++	.name           = "tea575x-tuner",
++	.fops           = &tea575x_fops,
++	.ioctl_ops 	= &tea575x_ioctl_ops,
++	.release	= video_device_release,
++};
++
+ /*
+  * initialize all the tea575x chips
+  */
+ void snd_tea575x_init(struct snd_tea575x *tea)
+ {
++	int retval;
+ 	unsigned int val;
++	struct video_device *tea575x_radio_inst;
+ 
+ 	val = tea->ops->read(tea);
+ 	if (val == 0x1ffffff || val == 0) {
+-		snd_printk(KERN_ERR "Cannot find TEA575x chip\n");
++		snd_printk(KERN_ERR
++			   "tea575x-tuner: Cannot find TEA575x chip\n");
+ 		return;
+ 	}
+ 
+-	memset(&tea->vd, 0, sizeof(tea->vd));
+-	strcpy(tea->vd.name, tea->tea5759 ? "TEA5759 radio" : "TEA5757 radio");
+-	tea->vd.release = snd_tea575x_release;
+-	video_set_drvdata(&tea->vd, tea);
+-	tea->vd.fops = &tea->fops;
+ 	tea->in_use = 0;
+-	tea->fops.owner = tea->card->module;
+-	tea->fops.open = snd_tea575x_exclusive_open;
+-	tea->fops.release = snd_tea575x_exclusive_release;
+-	tea->fops.ioctl = snd_tea575x_ioctl;
+-	if (video_register_device(&tea->vd, VFL_TYPE_RADIO, tea->dev_nr - 1) < 0) {
+-		snd_printk(KERN_ERR "unable to register tea575x tuner\n");
++	tea->val = TEA575X_BIT_BAND_FM | TEA575X_BIT_SEARCH_10_40;
++	tea->freq = 90500 * 16;		/* 90.5Mhz default */
++
++	tea575x_radio_inst = video_device_alloc();
++	if (tea575x_radio_inst == NULL) {
++		printk(KERN_ERR "tea575x-tuner: not enough memory\n");
+ 		return;
+ 	}
+-	tea->vd_registered = 1;
+ 
+-	tea->val = TEA575X_BIT_BAND_FM | TEA575X_BIT_SEARCH_10_40;
+-	tea->freq = 90500 * 16;		/* 90.5Mhz default */
++	memcpy(tea575x_radio_inst, &tea575x_radio, sizeof(tea575x_radio));
++
++	strcpy(tea575x_radio.name, tea->tea5759 ?
++				   "TEA5759 radio" : "TEA5757 radio");
++
++	video_set_drvdata(tea575x_radio_inst, tea);
++
++	retval = video_register_device(tea575x_radio_inst,
++				       VFL_TYPE_RADIO, radio_nr);
++	if (retval) {
++		printk(KERN_ERR "tea575x-tuner: can't register video device!\n");
++		kfree(tea575x_radio_inst);
++		return;
++	}
+ 
+ 	snd_tea575x_set_freq(tea);
+ 
+ 	/* mute on init */
+-	if (tea->ops->mute)
++	if (tea->ops->mute) {
+ 		tea->ops->mute(tea, 1);
++		tea->mute = 1;
++	}
++	tea->vd = tea575x_radio_inst;
+ }
+ 
+ void snd_tea575x_exit(struct snd_tea575x *tea)
+ {
+-	if (tea->vd_registered) {
+-		video_unregister_device(&tea->vd);
+-		tea->vd_registered = 0;
++	if (tea->vd) {
++		video_unregister_device(tea->vd);
++		tea->vd = NULL;
+ 	}
+ }
+ 
+diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig
+index 82b9bdd..6cc18bf 100644
+--- a/sound/pci/Kconfig
++++ b/sound/pci/Kconfig
+@@ -487,7 +487,7 @@ config SND_FM801
+ config SND_FM801_TEA575X_BOOL
+ 	bool "ForteMedia FM801 + TEA5757 tuner"
+ 	depends on SND_FM801
+-	depends on VIDEO_V4L1=y || VIDEO_V4L1=SND_FM801
++	depends on VIDEO_V4L2=y || VIDEO_V4L2=SND_FM801
+ 	help
+ 	  Say Y here to include support for soundcards based on the ForteMedia
+ 	  FM801 chip with a TEA5757 tuner connected to GPIO1-3 pins (Media
+--- linux-2.6.30.noarch/drivers/media/video/hdpvr/hdpvr-i2c.c~	2009-07-09 21:56:58.000000000 -0400
++++ linux-2.6.30.noarch/drivers/media/video/hdpvr/hdpvr-i2c.c	2009-07-09 21:57:34.000000000 -0400
+@@ -64,7 +64,7 @@ static int hdpvr_i2c_write(struct hdpvr_
+ 
+ 	ret = usb_control_msg(dev->udev,
+ 			      usb_rcvctrlpipe(dev->udev, 0),
+-			      REQTYPE_I2C_WRITE_STAT, CTRL_READ_REQUEST,
++			      REQTYPE_I2C_WRITE_STATT, CTRL_READ_REQUEST,
+ 			      0, 0, buf, 2, 1000);
+ 
+ 	if (ret == 2)

linux-2.6-v4l-dvb-update.patch:
 smssdio.c |  354 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 354 insertions(+)

Index: linux-2.6-v4l-dvb-update.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-v4l-dvb-update.patch,v
retrieving revision 1.1.2.9
retrieving revision 1.1.2.10
diff -u -p -r1.1.2.9 -r1.1.2.10
--- linux-2.6-v4l-dvb-update.patch	12 Nov 2009 23:01:07 -0000	1.1.2.9
+++ linux-2.6-v4l-dvb-update.patch	31 Jan 2010 17:58:01 -0000	1.1.2.10
@@ -1 +1,366 @@
-empty
+Mauro Carvalho Chehab (1):
+      Merge branch 'next' of ../devel into Fedora
+
+Uri Shkolnik (1):
+      V4L/DVB (11241): Siano: SDIO interface driver - remove two redundant lines
+
+diff --git a/linux/drivers/media/dvb/siano/smssdio.c b/linux/drivers/media/dvb/siano/smssdio.c
+new file mode 100644
+index 0000000..4f8fa59
+--- /dev/null
++++ b/linux/drivers/media/dvb/siano/smssdio.c
+@@ -0,0 +1,354 @@
++/*
++ *  smssdio.c - Siano 1xxx SDIO interface driver
++ *
++ *  Copyright 2008 Pierre Ossman
++ *
++ * Based on code by Siano Mobile Silicon, Inc.,
++ * Copyright (C) 2006-2008, Uri Shkolnik
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or (at
++ * your option) any later version.
++ *
++ *
++ * This hardware is a bit odd in that all transfers should be done
++ * to/from the SMSSDIO_DATA register, yet the "increase address" bit
++ * always needs to be set.
++ *
++ * Also, buffers from the card are always aligned to 128 byte
++ * boundaries.
++ */
++
++/*
++ * General cleanup notes:
++ *
++ * - only typedefs should be name *_t
++ *
++ * - use ERR_PTR and friends for smscore_register_device()
++ *
++ * - smscore_getbuffer should zero fields
++ *
++ * Fix stop command
++ */
++
++#include <linux/moduleparam.h>
++#include <linux/firmware.h>
++#include <linux/delay.h>
++#include <linux/mmc/card.h>
++#include <linux/mmc/sdio_func.h>
++#include <linux/mmc/sdio_ids.h>
++
++#include "smscoreapi.h"
++#include "sms-cards.h"
++
++/* Registers */
++
++#define SMSSDIO_DATA		0x00
++#define SMSSDIO_INT		0x04
++
++static const struct sdio_device_id smssdio_ids[] = {
++	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_STELLAR),
++	 .driver_data = SMS1XXX_BOARD_SIANO_STELLAR},
++	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_NOVA_A0),
++	 .driver_data = SMS1XXX_BOARD_SIANO_NOVA_A},
++	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_NOVA_B0),
++	 .driver_data = SMS1XXX_BOARD_SIANO_NOVA_B},
++	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_VEGA_A0),
++	 .driver_data = SMS1XXX_BOARD_SIANO_VEGA},
++	{SDIO_DEVICE(SDIO_VENDOR_ID_SIANO, SDIO_DEVICE_ID_SIANO_VENICE),
++	 .driver_data = SMS1XXX_BOARD_SIANO_VEGA},
++	{ /* end: all zeroes */ },
++};
++
++MODULE_DEVICE_TABLE(sdio, smssdio_ids);
++
++struct smssdio_device {
++	struct sdio_func *func;
++
++	struct smscore_device_t *coredev;
++
++	struct smscore_buffer_t *split_cb;
++};
++
++/*******************************************************************/
++/* Siano core callbacks                                            */
++/*******************************************************************/
++
++static int smssdio_sendrequest(void *context, void *buffer, size_t size)
++{
++	int ret;
++	struct smssdio_device *smsdev;
++
++	smsdev = context;
++
++	sdio_claim_host(smsdev->func);
++
++	while (size >= smsdev->func->cur_blksize) {
++		ret = sdio_write_blocks(smsdev->func, SMSSDIO_DATA, buffer, 1);
++		if (ret)
++			goto out;
++
++		buffer += smsdev->func->cur_blksize;
++		size -= smsdev->func->cur_blksize;
++	}
++
++	if (size) {
++		ret = sdio_write_bytes(smsdev->func, SMSSDIO_DATA,
++				       buffer, size);
++	}
++
++out:
++	sdio_release_host(smsdev->func);
++
++	return ret;
++}
++
++/*******************************************************************/
++/* SDIO callbacks                                                  */
++/*******************************************************************/
++
++static void smssdio_interrupt(struct sdio_func *func)
++{
++	int ret, isr;
++
++	struct smssdio_device *smsdev;
++	struct smscore_buffer_t *cb;
++	struct SmsMsgHdr_ST *hdr;
++	size_t size;
++
++	smsdev = sdio_get_drvdata(func);
++
++	/*
++	 * The interrupt register has no defined meaning. It is just
++	 * a way of turning of the level triggered interrupt.
++	 */
++	isr = sdio_readb(func, SMSSDIO_INT, &ret);
++	if (ret) {
++		dev_err(&smsdev->func->dev,
++			"Unable to read interrupt register!\n");
++		return;
++	}
++
++	if (smsdev->split_cb == NULL) {
++		cb = smscore_getbuffer(smsdev->coredev);
++		if (!cb) {
++			dev_err(&smsdev->func->dev,
++				"Unable to allocate data buffer!\n");
++			return;
++		}
++
++		ret = sdio_read_blocks(smsdev->func, cb->p, SMSSDIO_DATA, 1);
++		if (ret) {
++			dev_err(&smsdev->func->dev,
++				"Error %d reading initial block!\n", ret);
++			return;
++		}
++
++		hdr = cb->p;
++
++		if (hdr->msgFlags & MSG_HDR_FLAG_SPLIT_MSG) {
++			smsdev->split_cb = cb;
++			return;
++		}
++
++		size = hdr->msgLength - smsdev->func->cur_blksize;
++	} else {
++		cb = smsdev->split_cb;
++		hdr = cb->p;
++
++		size = hdr->msgLength - sizeof(struct SmsMsgHdr_ST);
++
++		smsdev->split_cb = NULL;
++	}
++
++	if (hdr->msgLength > smsdev->func->cur_blksize) {
++		void *buffer;
++
++		size = ALIGN(size, 128);
++		buffer = cb->p + hdr->msgLength;
++
++		BUG_ON(smsdev->func->cur_blksize != 128);
++
++		/*
++		 * First attempt to transfer all of it in one go...
++		 */
++		ret = sdio_read_blocks(smsdev->func, buffer,
++				       SMSSDIO_DATA, size / 128);
++		if (ret && ret != -EINVAL) {
++			smscore_putbuffer(smsdev->coredev, cb);
++			dev_err(&smsdev->func->dev,
++				"Error %d reading data from card!\n", ret);
++			return;
++		}
++
++		/*
++		 * ..then fall back to one block at a time if that is
++		 * not possible...
++		 *
++		 * (we have to do this manually because of the
++		 * problem with the "increase address" bit)
++		 */
++		if (ret == -EINVAL) {
++			while (size) {
++				ret = sdio_read_blocks(smsdev->func,
++						       buffer, SMSSDIO_DATA, 1);
++				if (ret) {
++					smscore_putbuffer(smsdev->coredev, cb);
++					dev_err(&smsdev->func->dev,
++						"Error %d reading "
++						"data from card!\n", ret);
++					return;
++				}
++
++				buffer += smsdev->func->cur_blksize;
++				if (size > smsdev->func->cur_blksize)
++					size -= smsdev->func->cur_blksize;
++				else
++					size = 0;
++			}
++		}
++	}
++
++	cb->size = hdr->msgLength;
++	cb->offset = 0;
++
++	smscore_onresponse(smsdev->coredev, cb);
++}
++
++static int smssdio_probe(struct sdio_func *func,
++			 const struct sdio_device_id *id)
++{
++	int ret;
++
++	int board_id;
++	struct smssdio_device *smsdev;
++	struct smsdevice_params_t params;
++
++	board_id = id->driver_data;
++
++	smsdev = kzalloc(sizeof(struct smssdio_device), GFP_KERNEL);
++	if (!smsdev)
++		return -ENOMEM;
++
++	smsdev->func = func;
++
++	memset(&params, 0, sizeof(struct smsdevice_params_t));
++
++	params.device = &func->dev;
++	params.buffer_size = 0x5000;	/* ?? */
++	params.num_buffers = 22;	/* ?? */
++	params.context = smsdev;
++
++	snprintf(params.devpath, sizeof(params.devpath),
++		 "sdio\\%s", sdio_func_id(func));
++
++	params.sendrequest_handler = smssdio_sendrequest;
++
++	params.device_type = sms_get_board(board_id)->type;
++
++	if (params.device_type != SMS_STELLAR)
++		params.flags |= SMS_DEVICE_FAMILY2;
++	else {
++		/*
++		 * FIXME: Stellar needs special handling...
++		 */
++		ret = -ENODEV;
++		goto free;
++	}
++
++	ret = smscore_register_device(&params, &smsdev->coredev);
++	if (ret < 0)
++		goto free;
++
++	smscore_set_board_id(smsdev->coredev, board_id);
++
++	sdio_claim_host(func);
++
++	ret = sdio_enable_func(func);
++	if (ret)
++		goto release;
++
++	ret = sdio_set_block_size(func, 128);
++	if (ret)
++		goto disable;
++
++	ret = sdio_claim_irq(func, smssdio_interrupt);
++	if (ret)
++		goto disable;
++
++	sdio_set_drvdata(func, smsdev);
++
++	sdio_release_host(func);
++
++	ret = smscore_start_device(smsdev->coredev);
++	if (ret < 0)
++		goto reclaim;
++
++	return 0;
++
++reclaim:
++	sdio_claim_host(func);
++	sdio_release_irq(func);
++disable:
++	sdio_disable_func(func);
++release:
++	sdio_release_host(func);
++	smscore_unregister_device(smsdev->coredev);
++free:
++	kfree(smsdev);
++
++	return ret;
++}
++
++static void smssdio_remove(struct sdio_func *func)
++{
++	struct smssdio_device *smsdev;
++
++	smsdev = sdio_get_drvdata(func);
++
++	/* FIXME: racy! */
++	if (smsdev->split_cb)
++		smscore_putbuffer(smsdev->coredev, smsdev->split_cb);
++
++	smscore_unregister_device(smsdev->coredev);
++
++	sdio_claim_host(func);
++	sdio_release_irq(func);
++	sdio_disable_func(func);
++	sdio_release_host(func);
++
++	kfree(smsdev);
++}
++
++static struct sdio_driver smssdio_driver = {
++	.name = "smssdio",
++	.id_table = smssdio_ids,
++	.probe = smssdio_probe,
++	.remove = smssdio_remove,
++};
++
++/*******************************************************************/
++/* Module functions                                                */
++/*******************************************************************/
++
++int smssdio_register(void)
++{
++	int ret = 0;
++
++	printk(KERN_INFO "smssdio: Siano SMS1xxx SDIO driver\n");
++	printk(KERN_INFO "smssdio: Copyright Pierre Ossman\n");
++
++	ret = sdio_register_driver(&smssdio_driver);
++
++	return ret;
++}
++
++void smssdio_unregister(void)
++{
++	sdio_unregister_driver(&smssdio_driver);
++}
++
++MODULE_DESCRIPTION("Siano SMS1xxx SDIO driver");
++MODULE_AUTHOR("Pierre Ossman");
++MODULE_LICENSE("GPL");


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/sources,v
retrieving revision 1.976.2.37
retrieving revision 1.976.2.38
diff -u -p -r1.976.2.37 -r1.976.2.38
--- sources	23 Dec 2009 21:12:37 -0000	1.976.2.37
+++ sources	31 Jan 2010 17:58:07 -0000	1.976.2.38
@@ -1,2 +1,2 @@
-84c077a37684e4cbfa67b18154390d8a  linux-2.6.31.tar.bz2
-819f1552906be755b53154fd570866eb  patch-2.6.31.9.bz2
+260551284ac224c3a43c4adac7df4879  linux-2.6.32.tar.bz2
+a68305d3e77dddc9555ba58f678a1ce2  patch-2.6.32.7.bz2


Index: upstream
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/upstream,v
retrieving revision 1.888.2.36
retrieving revision 1.888.2.37
diff -u -p -r1.888.2.36 -r1.888.2.37
--- upstream	23 Dec 2009 21:12:37 -0000	1.888.2.36
+++ upstream	31 Jan 2010 17:58:08 -0000	1.888.2.37
@@ -1,2 +1,2 @@
-linux-2.6.31.tar.bz2
-patch-2.6.31.9.bz2
+linux-2.6.32.tar.bz2
+patch-2.6.32.7.bz2

via-hwmon-temp-sensor.patch:
 Kconfig       |    8 +
 Makefile      |    1 
 via-cputemp.c |  354 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 363 insertions(+)

Index: via-hwmon-temp-sensor.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Attic/via-hwmon-temp-sensor.patch,v
retrieving revision 1.2.2.3
retrieving revision 1.2.2.4
diff -u -p -r1.2.2.3 -r1.2.2.4
--- via-hwmon-temp-sensor.patch	27 Jun 2009 11:05:16 -0000	1.2.2.3
+++ via-hwmon-temp-sensor.patch	31 Jan 2010 17:58:08 -0000	1.2.2.4
@@ -1,14 +1,10 @@
-Subject: hwmon: Add driver for VIA CPU core temperature
-Now at patch ../patches/1-linux-2.6-via.git-bb3796c7c8d2209e7c3ab112f32ec4dec63e0d48.patch
-
-Subject: hwmon: Make sure via-cputemp complies with hwmon conventions
-Now at patch ../patches/2-linux-2.6-via.git-d2891d15eeef1033893dcc524543e8ad8fef019f.patch
-
---- work-2.6.29.4.orig/drivers/hwmon/Kconfig
-+++ work-2.6.29.4/drivers/hwmon/Kconfig
-@@ -720,6 +720,14 @@ config SENSORS_THMC50
+diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
+index 6857560..4414182 100644
+--- a/drivers/hwmon/Kconfig
++++ b/drivers/hwmon/Kconfig
+@@ -795,6 +795,14 @@ config SENSORS_TMP421
  	  This driver can also be built as a module.  If so, the module
- 	  will be called tmp401.
+ 	  will be called tmp421.
  
 +config SENSORS_VIA_CPUTEMP
 +	tristate "VIA CPU temperature sensor"
@@ -21,18 +17,23 @@ Now at patch ../patches/2-linux-2.6-via.
  config SENSORS_VIA686A
  	tristate "VIA686A"
  	depends on PCI
---- work-2.6.29.4.orig/drivers/hwmon/Makefile
-+++ work-2.6.29.4/drivers/hwmon/Makefile
-@@ -75,6 +75,7 @@ obj-$(CONFIG_SENSORS_SMSC47B397)+= smsc4
- obj-$(CONFIG_SENSORS_SMSC47M192)+= smsc47m192.o
+diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
+index 9f46cb0..32ed56a 100644
+--- a/drivers/hwmon/Makefile
++++ b/drivers/hwmon/Makefile
+@@ -85,6 +85,7 @@ obj-$(CONFIG_SENSORS_SMSC47M192)+= smsc47m192.o
  obj-$(CONFIG_SENSORS_THMC50)	+= thmc50.o
  obj-$(CONFIG_SENSORS_TMP401)	+= tmp401.o
+ obj-$(CONFIG_SENSORS_TMP421)	+= tmp421.o
 +obj-$(CONFIG_SENSORS_VIA_CPUTEMP)+= via-cputemp.o
  obj-$(CONFIG_SENSORS_VIA686A)	+= via686a.o
  obj-$(CONFIG_SENSORS_VT1211)	+= vt1211.o
  obj-$(CONFIG_SENSORS_VT8231)	+= vt8231.o
+diff --git a/drivers/hwmon/via-cputemp.c b/drivers/hwmon/via-cputemp.c
+new file mode 100644
+index 0000000..2abe516
 --- /dev/null
-+++ work-2.6.29.4/drivers/hwmon/via-cputemp.c
++++ b/drivers/hwmon/via-cputemp.c
 @@ -0,0 +1,354 @@
 +/*
 + * via-cputemp.c - Driver for VIA CPU core temperature monitoring

xen.pvops.patch:
 arch/x86/Kconfig                        |    4 
 arch/x86/include/asm/hpet.h             |    2 
 arch/x86/include/asm/io.h               |   15 +
 arch/x86/include/asm/paravirt.h         |    7 
 arch/x86/include/asm/paravirt_types.h   |    2 
 arch/x86/include/asm/pci.h              |    1 
 arch/x86/include/asm/pci_x86.h          |    2 
 arch/x86/include/asm/processor.h        |    4 
 arch/x86/include/asm/syscalls.h         |    8 
 arch/x86/include/asm/tlbflush.h         |    6 
 arch/x86/include/asm/xen/hypercall.h    |    8 
 arch/x86/include/asm/xen/hypervisor.h   |   27 --
 arch/x86/include/asm/xen/interface.h    |    6 
 arch/x86/include/asm/xen/interface_32.h |    5 
 arch/x86/include/asm/xen/interface_64.h |   13 -
 arch/x86/include/asm/xen/iommu.h        |   12 +
 arch/x86/include/asm/xen/page.h         |   15 -
 arch/x86/kernel/cpu/mtrr/Makefile       |    1 
 arch/x86/kernel/cpu/mtrr/amd.c          |    6 
 arch/x86/kernel/cpu/mtrr/centaur.c      |    6 
 arch/x86/kernel/cpu/mtrr/cyrix.c        |    6 
 arch/x86/kernel/cpu/mtrr/generic.c      |   13 -
 arch/x86/kernel/cpu/mtrr/main.c         |   20 -
 arch/x86/kernel/cpu/mtrr/mtrr.h         |   11 
 arch/x86/kernel/cpu/mtrr/xen.c          |  105 +++++++++
 arch/x86/kernel/hpet.c                  |    2 
 arch/x86/kernel/ioport.c                |   40 ++-
 arch/x86/kernel/paravirt.c              |    1 
 arch/x86/kernel/pci-dma.c               |    3 
 arch/x86/kernel/process.c               |   27 --
 arch/x86/kernel/setup.c                 |    4 
 arch/x86/mm/Makefile                    |    5 
 arch/x86/mm/pat.c                       |    2 
 arch/x86/mm/tlb.c                       |   35 +--
 arch/x86/pci/Makefile                   |    1 
 arch/x86/pci/common.c                   |   18 +
 arch/x86/pci/i386.c                     |    1 
 arch/x86/pci/init.c                     |    6 
 arch/x86/pci/xen.c                      |   51 ++++
 arch/x86/xen/Kconfig                    |   28 ++
 arch/x86/xen/Makefile                   |    2 
 arch/x86/xen/enlighten.c                |   80 ++++++-
 arch/x86/xen/mmu.c                      |  362 +++++++++++++++++++++++++++++++-
 arch/x86/xen/setup.c                    |   55 ++++
 arch/x86/xen/smp.c                      |    9 
 arch/x86/xen/vga.c                      |   67 +++++
 arch/x86/xen/xen-ops.h                  |   12 +
 drivers/block/xen-blkfront.c            |    1 
 drivers/char/hvc_xen.c                  |  101 ++++++--
 drivers/input/xen-kbdfront.c            |    3 
 drivers/net/xen-netfront.c              |    1 
 drivers/pci/Makefile                    |    2 
 drivers/pci/xen-iommu.c                 |  271 +++++++++++++++++++++++
 drivers/video/xen-fbfront.c             |    3 
 drivers/xen/Makefile                    |    8 
 drivers/xen/balloon.c                   |   17 -
 drivers/xen/biomerge.c                  |   14 +
 drivers/xen/cpu_hotplug.c               |    1 
 drivers/xen/events.c                    |    9 
 drivers/xen/evtchn.c                    |    2 
 drivers/xen/features.c                  |    2 
 drivers/xen/grant-table.c               |    1 
 drivers/xen/sys-hypervisor.c            |    1 
 drivers/xen/xenbus/xenbus_probe.c       |   32 ++
 drivers/xen/xenbus/xenbus_xs.c          |   57 ++++-
 drivers/xen/xenfs/super.c               |    2 
 include/asm-generic/pci.h               |    2 
 include/xen/events.h                    |    2 
 include/xen/interface/memory.h          |   92 ++++++++
 include/xen/interface/platform.h        |  222 +++++++++++++++++++
 include/xen/interface/xen.h             |   41 +++
 include/xen/xen-ops.h                   |    6 
 include/xen/xen.h                       |   32 ++
 73 files changed, 1827 insertions(+), 214 deletions(-)

View full diff with command:
/usr/bin/cvs -n -f diff -kk -u -p -N -r 1.1.2.52 -r 1.1.2.53 xen.pvops.patchIndex: xen.pvops.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Attic/xen.pvops.patch,v
retrieving revision 1.1.2.52
retrieving revision 1.1.2.53
diff -u -p -r1.1.2.52 -r1.1.2.53
--- xen.pvops.patch	23 Dec 2009 21:12:37 -0000	1.1.2.52
+++ xen.pvops.patch	31 Jan 2010 17:58:08 -0000	1.1.2.53
@@ -1,39 +1,8 @@
 diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index 13ffa5d..a0cd847 100644
+index 72ace95..c57733d 100644
 --- a/arch/x86/Kconfig
 +++ b/arch/x86/Kconfig
-@@ -136,7 +136,7 @@ config GENERIC_CALIBRATE_DELAY
- 
- config GENERIC_TIME_VSYSCALL
- 	bool
--	default X86_64
-+	default X86_VSYSCALL
- 
- config ARCH_HAS_CPU_RELAX
- 	def_bool y
-@@ -222,6 +222,10 @@ config X86_32_LAZY_GS
- 	def_bool y
- 	depends on X86_32 && !CC_STACKPROTECTOR
- 
-+config X86_VSYSCALL
-+       def_bool y
-+       depends on X86_64
-+
- config KTIME_SCALAR
- 	def_bool X86_32
- source "init/Kconfig"
-@@ -518,6 +522,10 @@ config PARAVIRT_CLOCK
- 	bool
- 	default n
- 
-+config PARAVIRT_CLOCK_VSYSCALL
-+       bool
-+       depends on PARAVIRT_CLOCK && X86_VSYSCALL
-+
- endif
- 
- config PARAVIRT_DEBUG
-@@ -1884,6 +1892,10 @@ config PCI_OLPC
+@@ -1881,6 +1881,10 @@ config PCI_OLPC
  	def_bool y
  	depends on PCI && OLPC && (PCI_GOOLPC || PCI_GOANY)
  
@@ -44,119 +13,6 @@ index 13ffa5d..a0cd847 100644
  config PCI_DOMAINS
  	def_bool y
  	depends on PCI
-diff --git a/arch/x86/Makefile b/arch/x86/Makefile
-index 1b68659..5e7db44 100644
---- a/arch/x86/Makefile
-+++ b/arch/x86/Makefile
-@@ -72,7 +72,7 @@ endif
- 
- ifdef CONFIG_CC_STACKPROTECTOR
- 	cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh
--        ifeq ($(shell $(CONFIG_SHELL) $(cc_has_sp) $(CC)),y)
-+        ifeq ($(shell $(CONFIG_SHELL) $(cc_has_sp) $(CC) $(biarch)),y)
-                 stackp-y := -fstack-protector
-                 stackp-$(CONFIG_CC_STACKPROTECTOR_ALL) += -fstack-protector-all
-                 KBUILD_CFLAGS += $(stackp-y)
-diff --git a/arch/x86/include/asm/agp.h b/arch/x86/include/asm/agp.h
-index 9825cd6..0717c5e 100644
---- a/arch/x86/include/asm/agp.h
-+++ b/arch/x86/include/asm/agp.h
-@@ -1,9 +1,14 @@
- #ifndef _ASM_X86_AGP_H
- #define _ASM_X86_AGP_H
- 
-+#include <linux/dma-mapping.h>
-+
- #include <asm/pgtable.h>
- #include <asm/cacheflush.h>
- 
-+#include <asm/xen/hypervisor.h>
-+#include <asm/xen/page.h>
-+
- /*
-  * Functions to keep the agpgart mappings coherent with the MMU. The
-  * GART gives the CPU a physical alias of pages in memory. The alias
-@@ -23,13 +28,15 @@
- #define flush_agp_cache() wbinvd()
- 
- /* Convert a physical address to an address suitable for the GART. */
--#define phys_to_gart(x) (x)
--#define gart_to_phys(x) (x)
-+#define phys_to_gart(x) (xen_pv_domain() ? phys_to_machine(XPADDR(x)).maddr : (x))
-+#define gart_to_phys(x) (xen_pv_domain() ? machine_to_phys(XMADDR(x)).paddr : (x))
- 
- /* GATT allocation. Returns/accepts GATT kernel virtual address. */
--#define alloc_gatt_pages(order)		\
--	((char *)__get_free_pages(GFP_KERNEL, (order)))
-+#define alloc_gatt_pages(order)	({                                          \
-+	char *_t; dma_addr_t _d;                                            \
-+	_t = dma_alloc_coherent(NULL, PAGE_SIZE<<(order), &_d, GFP_KERNEL); \
-+	_t; })
- #define free_gatt_pages(table, order)	\
--	free_pages((unsigned long)(table), (order))
-+	dma_free_coherent(NULL, PAGE_SIZE<<(order), (table), virt_to_bus(table))
- 
- #endif /* _ASM_X86_AGP_H */
-diff --git a/arch/x86/include/asm/e820.h b/arch/x86/include/asm/e820.h
-index 7ecba4d..df06646 100644
---- a/arch/x86/include/asm/e820.h
-+++ b/arch/x86/include/asm/e820.h
-@@ -109,6 +109,8 @@ extern void reserve_early(u64 start, u64 end, char *name);
- extern void reserve_early_overlap_ok(u64 start, u64 end, char *name);
- extern void free_early(u64 start, u64 end);
- extern void early_res_to_bootmem(u64 start, u64 end);
-+extern u64 early_res_next_free(u64 start);
-+extern u64 early_res_next_reserved(u64 addr, u64 max);
- extern u64 early_reserve_e820(u64 startt, u64 sizet, u64 align);
- 
- extern unsigned long e820_end_of_ram_pfn(void);
-diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h
-index 7b2d71d..026ee10 100644
---- a/arch/x86/include/asm/fixmap.h
-+++ b/arch/x86/include/asm/fixmap.h
-@@ -74,11 +74,16 @@ enum fixed_addresses {
- #ifdef CONFIG_X86_32
- 	FIX_HOLE,
- 	FIX_VDSO,
--#else
-+#endif
-+
-+#ifdef CONFIG_X86_VSYSCALL
- 	VSYSCALL_LAST_PAGE,
- 	VSYSCALL_FIRST_PAGE = VSYSCALL_LAST_PAGE
- 			    + ((VSYSCALL_END-VSYSCALL_START) >> PAGE_SHIFT) - 1,
- 	VSYSCALL_HPET,
-+#endif	/* CONFIG_X86_VSYSCALL */
-+#ifdef CONFIG_PARAVIRT_CLOCK_VSYSCALL
-+	FIX_PVCLOCK_TIME_INFO,
- #endif
- 	FIX_DBGP_BASE,
- 	FIX_EARLYCON_MEM_BASE,
-@@ -178,6 +183,24 @@ static inline void __set_fixmap(enum fixed_addresses idx,
- 
- extern void __this_fixmap_does_not_exist(void);
- 
-+static inline bool user_fixmap(enum fixed_addresses fixmap)
-+{
-+	switch (fixmap) {
-+#ifdef CONFIG_X86_32
-+	case FIX_HOLE ... FIX_VDSO:
-+#else
-+	case VSYSCALL_LAST_PAGE ... VSYSCALL_HPET:
-+#ifdef CONFIG_PARAVIRT_CLOCK_VSYSCALL
-+	case FIX_PVCLOCK_TIME_INFO:
-+#endif
-+#endif
-+		return true;
-+
-+	default:
-+		return false;
-+	}
-+}
-+
- /*
-  * 'index to address' translation. If anyone tries to use the idx
-  * directly without translation, we catch the bug with a NULL-deference
 diff --git a/arch/x86/include/asm/hpet.h b/arch/x86/include/asm/hpet.h
 index 1c22cb0..ed15247 100644
 --- a/arch/x86/include/asm/hpet.h
@@ -177,27 +33,15 @@ index 1c22cb0..ed15247 100644
  static inline int is_hpet_enabled(void) { return 0; }
  #define hpet_readl(a) 0
  
-diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h
-index 175adf5..2e75292 100644
---- a/arch/x86/include/asm/i387.h
-+++ b/arch/x86/include/asm/i387.h
-@@ -26,6 +26,7 @@ extern void fpu_init(void);
- extern void mxcsr_feature_mask_init(void);
- extern int init_fpu(struct task_struct *child);
- extern asmlinkage void math_state_restore(void);
-+extern void __math_state_restore(void);
- extern void init_thread_xstate(void);
- extern int dump_fpu(struct pt_regs *, struct user_i387_struct *);
- 
 diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
-index 7373932..c75e9eb 100644
+index 7373932..49ee1a9 100644
 --- a/arch/x86/include/asm/io.h
 +++ b/arch/x86/include/asm/io.h
 @@ -7,6 +7,10 @@
  #include <asm-generic/int-ll64.h>
  #include <asm/page.h>
  
-+#include <asm/xen/hypervisor.h>
++#include <xen/xen.h>
 +
 +extern int isapnp_disable;
 +
[...44283 lines suppressed...]
-+	rcu_assign_pointer(queue_imq_handler, qh);
-+	mutex_unlock(&queue_handler_mutex);
-+}
-+EXPORT_SYMBOL(nf_register_queue_imq_handler);
-+
-+void nf_unregister_queue_imq_handler(void)
-+{
-+	mutex_lock(&queue_handler_mutex);
-+	rcu_assign_pointer(queue_imq_handler, NULL);
-+	mutex_unlock(&queue_handler_mutex);
-+}
-+EXPORT_SYMBOL(nf_unregister_queue_imq_handler);
-+#endif
-+
- /* return EBUSY when somebody else is registered, return EEXIST if the
-  * same handler is registered, return 0 in case of success. */
- int nf_register_queue_handler(u_int8_t pf, const struct nf_queue_handler *qh)
-@@ -80,7 +100,7 @@ void nf_unregister_queue_handlers(const struct nf_queue_handler *qh)
- }
- EXPORT_SYMBOL_GPL(nf_unregister_queue_handlers);
- 
--static void nf_queue_entry_release_refs(struct nf_queue_entry *entry)
-+void nf_queue_entry_release_refs(struct nf_queue_entry *entry)
- {
- 	/* Release those devices we held, or Alexey will kill me. */
- 	if (entry->indev)
-@@ -100,6 +120,7 @@ static void nf_queue_entry_release_refs(struct nf_queue_entry *entry)
- 	/* Drop reference to owner of hook which queued us. */
- 	module_put(entry->elem->owner);
- }
-+EXPORT_SYMBOL_GPL(nf_queue_entry_release_refs);
- 
- /*
-  * Any packet that leaves via this function must come back
-@@ -121,12 +142,26 @@ static int __nf_queue(struct sk_buff *skb,
- #endif
- 	const struct nf_afinfo *afinfo;
- 	const struct nf_queue_handler *qh;
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+	const struct nf_queue_handler *qih = NULL;
-+#endif
- 
- 	/* QUEUE == DROP if noone is waiting, to be safe. */
- 	rcu_read_lock();
- 
- 	qh = rcu_dereference(queue_handler[pf]);
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
-+	if (pf == PF_INET || pf == PF_INET6)
-+#else
-+	if (pf == PF_INET)
-+#endif
-+		qih = rcu_dereference(queue_imq_handler);
-+
-+	if (!qh && !qih)
-+#else /* !IMQ */
- 	if (!qh)
-+#endif
- 		goto err_unlock;
- 
- 	afinfo = nf_get_afinfo(pf);
-@@ -145,6 +180,10 @@ static int __nf_queue(struct sk_buff *skb,
- 		.indev	= indev,
- 		.outdev	= outdev,
- 		.okfn	= okfn,
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+		.next_outfn = qh ? qh->outfn : NULL,
-+		.next_queuenum = queuenum,
-+#endif
- 	};
- 
- 	/* If it's going away, ignore hook. */
-@@ -170,8 +209,19 @@ static int __nf_queue(struct sk_buff *skb,
- 	}
- #endif
- 	afinfo->saveroute(skb, entry);
-+
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+	if (qih) {
-+		status = qih->outfn(entry, queuenum);
-+		goto imq_skip_queue;
-+	}
-+#endif
-+
- 	status = qh->outfn(entry, queuenum);
- 
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+imq_skip_queue:
-+#endif
- 	rcu_read_unlock();
- 
- 	if (status < 0) {
-diff --git a/net/netfilter/xt_IMQ.c b/net/netfilter/xt_IMQ.c
+diff --git a/include/xen/xen.h b/include/xen/xen.h
 new file mode 100644
-index 0000000..4d58d83
+index 0000000..a164024
 --- /dev/null
-+++ b/net/netfilter/xt_IMQ.c
-@@ -0,0 +1,73 @@
-+/*
-+ * This target marks packets to be enqueued to an imq device
-+ */
-+#include <linux/module.h>
-+#include <linux/skbuff.h>
-+#include <linux/netfilter/x_tables.h>
-+#include <linux/netfilter/xt_IMQ.h>
-+#include <linux/imq.h>
-+
-+static unsigned int imq_target(struct sk_buff *pskb,
-+				const struct xt_target_param *par)
-+{
-+	const struct xt_imq_info *mr = par->targinfo;
-+
-+	pskb->imq_flags = (mr->todev & IMQ_F_IFMASK) | IMQ_F_ENQUEUE;
-+
-+	return XT_CONTINUE;
-+}
-+
-+static bool imq_checkentry(const struct xt_tgchk_param *par)
-+{
-+	struct xt_imq_info *mr = par->targinfo;
-+
-+	if (mr->todev > IMQ_MAX_DEVS - 1) {
-+		printk(KERN_WARNING
-+		       "IMQ: invalid device specified, highest is %u\n",
-+		       IMQ_MAX_DEVS - 1);
-+		return 0;
-+	}
-+
-+	return 1;
-+}
++++ b/include/xen/xen.h
+@@ -0,0 +1,32 @@
++#ifndef _XEN_XEN_H
++#define _XEN_XEN_H
 +
-+static struct xt_target xt_imq_reg[] __read_mostly = {
-+	{
-+		.name           = "IMQ",
-+		.family		= AF_INET,
-+		.checkentry     = imq_checkentry,
-+		.target         = imq_target,
-+		.targetsize	= sizeof(struct xt_imq_info),
-+		.table		= "mangle",
-+		.me             = THIS_MODULE
-+	},
-+	{
-+		.name           = "IMQ",
-+		.family		= AF_INET6,
-+		.checkentry     = imq_checkentry,
-+		.target         = imq_target,
-+		.targetsize	= sizeof(struct xt_imq_info),
-+		.table		= "mangle",
-+		.me             = THIS_MODULE
-+	},
++enum xen_domain_type {
++	XEN_NATIVE,		/* running on bare hardware    */
++	XEN_PV_DOMAIN,		/* running in a PV domain      */
++	XEN_HVM_DOMAIN,		/* running in a Xen hvm domain */
 +};
 +
-+static int __init imq_init(void)
-+{
-+	return xt_register_targets(xt_imq_reg, ARRAY_SIZE(xt_imq_reg));
-+}
++#ifdef CONFIG_XEN
++extern enum xen_domain_type xen_domain_type;
++#else
++#define xen_domain_type		XEN_NATIVE
++#endif
 +
-+static void __exit imq_fini(void)
-+{
-+	xt_unregister_targets(xt_imq_reg, ARRAY_SIZE(xt_imq_reg));
-+}
++#define xen_domain()		(xen_domain_type != XEN_NATIVE)
++#define xen_pv_domain()		(xen_domain() &&			\
++				 xen_domain_type == XEN_PV_DOMAIN)
++#define xen_hvm_domain()	(xen_domain() &&			\
++				 xen_domain_type == XEN_HVM_DOMAIN)
 +
-+module_init(imq_init);
-+module_exit(imq_fini);
++#ifdef CONFIG_XEN_DOM0
++#include <xen/interface/xen.h>
++#include <asm/xen/hypervisor.h>
 +
-+MODULE_AUTHOR("http://www.linuximq.net");
-+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS("ipt_IMQ");
-+MODULE_ALIAS("ip6t_IMQ");
++#define xen_initial_domain()	(xen_pv_domain() && \
++				 xen_start_info->flags & SIF_INITDOMAIN)
++#else  /* !CONFIG_XEN_DOM0 */
++#define xen_initial_domain()	(0)
++#endif	/* CONFIG_XEN_DOM0 */
 +
++#endif	/* _XEN_XEN_H */

xen.pvops.post.patch:
 b/arch/x86/pci/common.c |   16 ++++++++++++++++
 drivers/pci/pci.h       |    2 ++
 2 files changed, 18 insertions(+)

Index: xen.pvops.post.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Attic/xen.pvops.post.patch,v
retrieving revision 1.1.2.34
retrieving revision 1.1.2.35
diff -u -p -r1.1.2.34 -r1.1.2.35
--- xen.pvops.post.patch	9 Dec 2009 21:44:09 -0000	1.1.2.34
+++ xen.pvops.post.patch	31 Jan 2010 17:58:12 -0000	1.1.2.35
@@ -14,33 +14,6 @@ Reapply and merge in Fedora changes
  static inline void pci_msi_init_pci_dev(struct pci_dev *dev) { }
  #endif
  
-diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h
-index 7727aa8..5d6083c 100644
---- a/arch/x86/include/asm/paravirt_types.h
-+++ b/arch/x86/include/asm/paravirt_types.h
-@@ -138,6 +138,9 @@ struct pv_cpu_ops {
- 	void (*store_gdt)(struct desc_ptr *);
- 	void (*store_idt)(struct desc_ptr *);
- 	void (*set_ldt)(const void *desc, unsigned entries);
-+#ifdef CONFIG_X86_32
-+	void (*load_user_cs_desc)(int cpu, struct mm_struct *mm);
-+#endif /*CONFIG_X86_32*/
- 	unsigned long (*store_tr)(void);
- 	void (*load_tls)(struct thread_struct *t, unsigned int cpu);
- #ifdef CONFIG_X86_64
-diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
-index 59f4524..068e286 100644
---- a/arch/x86/kernel/process_32.c
-+++ b/arch/x86/kernel/process_32.c
-@@ -354,6 +362,8 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
- 	preload_fpu = tsk_used_math(next_p) && next_p->fpu_counter > 5;
-
- 	__unlazy_fpu(prev_p);
-+	if (next_p->mm)
-+		load_user_cs_desc(cpu, next_p->mm);
-
- 	/* we're going to use this soon, after a few expensive things */
- 	if (preload_fpu)
 diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
 index 2202b62..f371fe8 100644
 --- a/arch/x86/pci/common.c
@@ -68,57 +41,3 @@ index 2202b62..f371fe8 100644
  }
  
  int __init pcibios_init(void)
-diff -up linux-2.6.31.noarch/arch/x86/Makefile.dave linux-2.6.31.noarch/arch/x86/Makefile
---- linux-2.6.31.noarch/arch/x86/Makefile.dave	2009-09-09 18:13:59.000000000 -0400
-+++ linux-2.6.31.noarch/arch/x86/Makefile	2009-10-23 17:04:30.000000000 -0400
-@@ -74,7 +74,6 @@ ifdef CONFIG_CC_STACKPROTECTOR
- 	cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh
-         ifeq ($(shell $(CONFIG_SHELL) $(cc_has_sp) $(CC) $(biarch)),y)
-                 stackp-y := -fstack-protector
--                stackp-$(CONFIG_CC_STACKPROTECTOR_ALL) += -fstack-protector-all
-                 KBUILD_CFLAGS += $(stackp-y)
-         else
-                 $(warning stack protector enabled but no compiler support)
---- linux-2.6.31.x86_64/drivers/net/Kconfig.orig	2009-11-08 22:18:22.000000000 +0000
-+++ linux-2.6.31.x86_64/drivers/net/Kconfig	2009-11-12 15:16:51.000000000 +0000
-@@ -2778,6 +2778,7 @@
- config XEN_NETCHANNEL2
- 	tristate "Net channel 2 support"
- 	depends on XEN && NET
-+	select XEN_XENBUS_FRONTEND
- 	help
- 	  Xen netchannel2 driver support.  This allows a domain to act as
- 	  either the backend or frontend part of a netchannel2 connection.
---- a/drivers/gpu/drm/drm_gem.c
-+++ b/drivers/gpu/drm/drm_gem.c
-@@ -539,7 +539,6 @@ int drm_gem_mmap(struct file *filp, struct vm_area_struct *vma)
- 	vma->vm_flags |= VM_RESERVED | VM_IO | VM_PFNMAP | VM_DONTEXPAND;
- 	vma->vm_ops = obj->dev->driver->gem_vm_ops;
- 	vma->vm_private_data = map->handle;
--	/* FIXME: use pgprot_writecombine when available */
- 	vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
- 
- 	/* Take a ref for this mapping of the object, so that the fault
---- a/arch/x86/include/asm/mmu.h
-+++ b/arch/x86/include/asm/mmu.h
-@@ -13,6 +13,10 @@
- 	int size;
- 	struct mutex lock;
- 	void *vdso;
-+#ifdef CONFIG_X86_32
-+	struct desc_struct user_cs;
-+	unsigned long exec_limit;
-+#endif
- #ifdef CONFIG_XEN
- 	int has_foreign_mappings;
- #endif
---- a/include/linux/mm.h
-+++ b/include/linux/mm.h
-@@ -105,6 +105,7 @@ extern unsigned int kobjsize(const void *objp);
- #define VM_MIXEDMAP	0x10000000	/* Can contain "struct page" and pure PFN pages */
- #define VM_SAO		0x20000000	/* Strong Access Ordering (powerpc) */
- #define VM_PFN_AT_MMAP	0x40000000	/* PFNMAP vma that is fully mapped at mmap time */
-+#define VM_MERGEABLE	0x80000000	/* KSM may merge identical pages */
- #ifdef CONFIG_XEN
- #define VM_FOREIGN	0x80000000      /* Has pages belonging to another VM */
- struct vm_foreign_map {

xen.pvops.pre.patch:
 b/arch/x86/pci/common.c |   16 ----------------
 drivers/pci/pci.h       |    2 --
 2 files changed, 18 deletions(-)

Index: xen.pvops.pre.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Attic/xen.pvops.pre.patch,v
retrieving revision 1.1.2.20
retrieving revision 1.1.2.21
diff -u -p -r1.1.2.20 -r1.1.2.21
--- xen.pvops.pre.patch	9 Dec 2009 21:44:09 -0000	1.1.2.20
+++ xen.pvops.pre.patch	31 Jan 2010 17:58:12 -0000	1.1.2.21
@@ -1,11 +1,7 @@
 temporarily revert various Fedora changes so that the pvops patch applies cleanly
 Affected patches;
 linux-2.6-defaults-pci_no_msi.patch - drivers/pci/pci.h
-linux-2.6-execshield.patch - arch/x86/include/asm/paravirt.h arch/x86/kernel/process_32.c arch/x86/include/asm/mmu.h
 linux-2.6-pci-cacheline-sizing.patch - arch/x86/pci/common.c
-disable-stackprotector-all.patch - arch/x86/Makefile
-drm-next-b390f944.patch - drivers/gpu/drm/drm_gem.c
-linux-2.6-ksm.patch - include/linux/mm.h
 
 --- a/drivers/pci/pci.h	2009-04-24 20:46:50.000000000 +0100
 +++ b/drivers/pci/pci.h	2009-04-23 20:13:43.000000000 +0100
@@ -21,34 +17,6 @@ linux-2.6-ksm.patch - include/linux/mm.h
  static inline void pci_msi_init_pci_dev(struct pci_dev *dev) { }
  #endif
 
-diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
-index 7727aa8..5d6083c 100644
---- a/arch/x86/include/asm/paravirt.h
-+++ b/arch/x86/include/asm/paravirt.h
-@@ -138,9 +138,6 @@ struct pv_cpu_ops {
- 	void (*store_gdt)(struct desc_ptr *);
- 	void (*store_idt)(struct desc_ptr *);
- 	void (*set_ldt)(const void *desc, unsigned entries);
--#ifdef CONFIG_X86_32
--	void (*load_user_cs_desc)(int cpu, struct mm_struct *mm);
--#endif /*CONFIG_X86_32*/
- 	unsigned long (*store_tr)(void);
- 	void (*load_tls)(struct thread_struct *t, unsigned int cpu);
- #ifdef CONFIG_X86_64
-diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
-index 59f4524..068e286 100644
---- a/arch/x86/kernel/process_32.c
-+++ b/arch/x86/kernel/process_32.c
-@@ -354,8 +362,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
- 	/* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
- 
- 	__unlazy_fpu(prev_p);
--	if (next_p->mm)
--		load_user_cs_desc(cpu, next_p->mm);
-+
- 
- 	/* we're going to use this soon, after a few expensive things */
- 	if (next_p->fpu_counter > 5)
 diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
 index 2202b62..f371fe8 100644
 --- a/arch/x86/pci/common.c
@@ -76,49 +44,3 @@ index 2202b62..f371fe8 100644
  	pcibios_resource_survey();
  
  	if (pci_bf_sort >= pci_force_bf)
-diff -up linux-2.6.31.noarch/arch/x86/Makefile.dave linux-2.6.31.noarch/arch/x86/Makefile
---- linux-2.6.31.noarch/arch/x86/Makefile.dave	2009-09-09 18:13:59.000000000 -0400
-+++ linux-2.6.31.noarch/arch/x86/Makefile	2009-10-23 17:04:30.000000000 -0400
-@@ -74,6 +74,7 @@ ifdef CONFIG_CC_STACKPROTECTOR
- 	cc_has_sp := $(srctree)/scripts/gcc-x86_$(BITS)-has-stack-protector.sh
-         ifeq ($(shell $(CONFIG_SHELL) $(cc_has_sp) $(CC)),y)
-                 stackp-y := -fstack-protector
-+                stackp-$(CONFIG_CC_STACKPROTECTOR_ALL) += -fstack-protector-all
-                 KBUILD_CFLAGS += $(stackp-y)
-         else
-                 $(warning stack protector enabled but no compiler support)
---- a/drivers/gpu/drm/drm_gem.c
-+++ b/drivers/gpu/drm/drm_gem.c
-@@ -539,7 +539,8 @@ int drm_gem_mmap(struct file *filp, struct vm_area_struct *vma)
- 	vma->vm_flags |= VM_RESERVED | VM_IO | VM_PFNMAP | VM_DONTEXPAND;
- 	vma->vm_ops = obj->dev->driver->gem_vm_ops;
- 	vma->vm_private_data = map->handle;
--	vma->vm_page_prot =  pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
-+	/* FIXME: use pgprot_writecombine when available */
-+	vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
- 
- 	/* Take a ref for this mapping of the object, so that the fault
- 	 * handler can dereference the mmap offset's pointer to the object.
---- a/arch/x86/include/asm/mmu.h
-+++ b/arch/x86/include/asm/mmu.h
-@@ -13,10 +13,6 @@
- 	int size;
- 	struct mutex lock;
- 	void *vdso;
--#ifdef CONFIG_X86_32
--	struct desc_struct user_cs;
--	unsigned long exec_limit;
--#endif
- } mm_context_t;
- 
- #ifdef CONFIG_SMP
---- a/include/linux/mm.h
-+++ b/include/linux/mm.h
-@@ -105,7 +105,6 @@ extern unsigned int kobjsize(const void *objp);
- #define VM_MIXEDMAP	0x10000000	/* Can contain "struct page" and pure PFN pages */
- #define VM_SAO		0x20000000	/* Strong Access Ordering (powerpc) */
- #define VM_PFN_AT_MMAP	0x40000000	/* PFNMAP vma that is fully mapped at mmap time */
--#define VM_MERGEABLE	0x80000000	/* KSM may merge identical pages */
- 
- #ifndef VM_STACK_DEFAULT_FLAGS		/* arch can override this */
- #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS


--- acpi-ec-merge-irq-and-poll-modes.patch DELETED ---


--- acpi-ec-restart-command-even-if-no-interrupts-from-ec.patch DELETED ---


--- acpi-ec-use-burst-mode-only-for-msi-notebooks.patch DELETED ---


--- alsa-tell-user-that-stream-to-be-rewound-is-suspended.patch DELETED ---


--- disable-stackprotector-all.patch DELETED ---


--- dlm-fix-connection-close-handling.patch DELETED ---


--- drm-edid-9340d8cf.patch DELETED ---


--- drm-i915-fix-tvmode-oops.patch DELETED ---


--- drm-intel-pm.patch DELETED ---


--- drm-next-b390f944.patch DELETED ---


--- drm-nouveau.patch DELETED ---


--- drm-radeon-kms-arbiter-return-ignore.patch DELETED ---


--- drm-radeon-misc-fixes.patch DELETED ---


--- drm-radeon-rv410-test-fix.patch DELETED ---


--- drm-vga-arb.patch DELETED ---


--- ext4-fix-insufficient-checks-in-EXT4_IOC_MOVE_EXT.patch DELETED ---


--- fbcon-lower-debug.patch DELETED ---


--- hid-ignore-all-recent-imon-devices.patch DELETED ---


--- improve-resource-counter-scalability.patch DELETED ---


--- linux-2.6-ahci-export-capabilities.patch DELETED ---


--- linux-2.6-alsa-improve-hda-powerdown.patch DELETED ---


--- linux-2.6-ath9k-fixes.patch DELETED ---


--- linux-2.6-bluetooth-autosuspend.diff DELETED ---


--- linux-2.6-btrfs-upstream.patch DELETED ---


--- linux-2.6-debug-spinlock-taint.patch DELETED ---


--- linux-2.6-die-closed-source-bios-muppets-die.patch DELETED ---


--- linux-2.6-intel-iommu-updates.patch DELETED ---


--- linux-2.6-iommu-another-hp-screwup.patch DELETED ---


--- linux-2.6-iommu-at-zero.patch DELETED ---


--- linux-2.6-iommu-dmar-all-1s.patch DELETED ---


--- linux-2.6-iommu-hp-cantiga-resume.patch DELETED ---


--- linux-2.6-iommu-sanity-checks-for-intr-remap-too.patch DELETED ---


--- linux-2.6-ksm-fix-munlock.patch DELETED ---


--- linux-2.6-ksm-updates-from-32.patch DELETED ---


--- linux-2.6-ksm-updates.patch DELETED ---


--- linux-2.6-ksm.patch DELETED ---


--- linux-2.6-nfs4-ver4opt.patch DELETED ---


--- linux-2.6-rtc-show-hctosys.patch DELETED ---


--- linux-2.6-selinux-module-load-perms.patch DELETED ---


--- linux-2.6-vga-arb.patch DELETED ---


--- linux-2.6-virtio_blk-add-support-for-cache-flush.patch DELETED ---


--- linux-2.6-virtio_blk-revert-QUEUE_FLAG_VIRT-addition.patch DELETED ---


--- linux-2.6-xen-fix-is_disconnected_device-exists_disconnected_device.patch DELETED ---


--- linux-2.6-xen-improvement-to-wait_for_devices.patch DELETED ---


--- linux-2.6-xen-increase-device-connection-timeout.patch DELETED ---


--- linux-2.6.31-copy_from_user-bounds.patch DELETED ---


--- linux-2.6.31-cpuidle-faster-io.patch DELETED ---


--- linux-2.6.31-nfsd-proot.patch DELETED ---


--- linux-2.6.31.tar.bz2.sign DELETED ---


--- lirc-2.6.31.patch DELETED ---


--- patch-2.6.31.9.bz2.sign DELETED ---


--- perf-events-dont-generate-events-for-the-idle-task.patch DELETED ---


--- perf-events-fix-swevent-hrtimer-sampling.patch DELETED ---


--- perf-make-perf-counter-h-available-to-userspace.patch DELETED ---


--- prism54-remove-pci-dev-table.patch DELETED ---


--- sched-deal-with-low-load-in-wake-affine.patch DELETED ---


--- sched-ensure-child-cant-gain-time-over-its-parent-after-fork.patch DELETED ---


--- sched-introduce-SCHED_RESET_ON_FORK-scheduling-policy-flag.patch DELETED ---


--- sched-remove-shortcut-from-select-task-rq-fair.patch DELETED ---


--- sched-retune-scheduler-latency-defaults.patch DELETED ---


--- sched-update-the-clock-of-runqueue-select-task-rq-selected.patch DELETED ---


--- tg3-01-delay-mdio-bus-init-until-fw-finishes.patch DELETED ---


--- tg3-02-fix-tso-test-against-wrong-flags-var.patch DELETED ---


--- tg3-03-fix-57780-asic-rev-pcie-link-receiver-errors.patch DELETED ---


--- tg3-04-prevent-tx-bd-corruption.patch DELETED ---


--- tg3-05-assign-flags-to-fixes-in-start_xmit_dma_bug.patch DELETED ---


--- tg3-06-fix-5906-transmit-hangs.patch DELETED ---


--- v4l-dvb-fix-cx25840-firmware-loading.patch DELETED ---



More information about the scm-commits mailing list