--- linux-2.6-2.6.30.orig/debian/compat
+++ linux-2.6-2.6.30/debian/compat
@@ -0,0 +1 @@
+7
--- linux-2.6-2.6.30.orig/debian/changelog
+++ linux-2.6-2.6.30/debian/changelog
@@ -0,0 +1,6628 @@
+linux-2.6 (2.6.30-5~bpo50+1) lenny-backports; urgency=low
+
+  * Rebuild for lenny.
+  * Reenable CONFIG_ACPI_PROCFS_POWER.
+
+ -- Norbert Tretkowski <nobse@debian.org>  Wed, 05 Aug 2009 12:15:52 +0200
+
+linux-2.6 (2.6.30-5) unstable; urgency=high
+
+  [ maximilian attems ]
+  * Add stable release 2.6.30.4.
+    - cifs: fix regression with O_EXCL creates and optimize away lookup
+      (closes: #536426)
+    - ecryptfs: check tag 11 literal data buffer size (CVE-2009-2406)
+    - ecryptfs: check tag 3 package encrypted size (CVE-2009-2407)
+  * Ignore nf_conntrack ABI change.
+  * Revert to keep ABI:
+    - block: fix sg SG_DXFER_TO_FROM_DEV regression.
+    - sched_rt: Fix overload bug on rt group scheduling.
+  * [hppa]: Ignore any ABI (broke on 2.6.30.2).
+
+ -- maximilian attems <maks@debian.org>  Mon, 03 Aug 2009 12:08:56 +0200
+
+linux-2.6 (2.6.30-4) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.30.2.
+  * Fix pci access in x86 startup code. (closes: #537783)
+  * Ignore ABI changes.
+  * Include all plattform and mach specific headers on arm.
+
+  [ maximilian attems ]
+  * Add stable release 2.6.30.3.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 30 Jul 2009 11:55:11 +0200
+
+linux-2.6 (2.6.30-3) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Build-Depend against cpio. (closes: #536196)
+
+  [ Martin Michlmayr ]
+  * [arm] Export __cpu_flush_dcache_page.
+
+  [ Aurelien Jarno ]
+  * [ia64] Fix asm/fpu.h includes.
+
+  [ dann frazier ]
+  * Fix NULL pointer dereference in tun_chr_pool() (CVE-2009-1897)
+  * personality: fix PER_CLEAR_ON_SETID (CVE-2009-1895)
+  * Add -fno-delete-null-pointer-checks to CFLAGS
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 18 Jul 2009 10:00:01 +0200
+
+linux-2.6 (2.6.30-2) unstable; urgency=low
+
+  [ dann frazier ]
+  * [powerpc] Use generic rtc (closes: #535354)
+  * [parisc]
+    - ensure broadcast tlb purge runs single threaded
+    - fix ldcw inline assembler
+    (closes: #535844)
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.30.1:
+    - KVM: x86: check for cr3 validity in ioctl_set_sregs (CVE-2009-2287)
+    - ALSA: intel8x0 - Fix PCM position craziness (closes: #533780)
+    - ide-cd: prevent null pointer deref via cdrom_newpc_intr (closes: #535342)
+  * Ignore ABI changes.
+
+  [ maximilian attems ]
+  * [alpha] Add upstream smp buildfix.
+  * [parisc] Disable vxge and niu.
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 07 Jul 2009 14:45:43 +0200
+
+linux-2.6 (2.6.30-1) unstable; urgency=low
+
+  * New upstream release.
+    - radeonfb: suspend/resume for ATI Mobility Radeon RV350.
+      (closes: #506964)
+    - tcp: fix MSG_PEEK race check (closes: #513695)
+    - e100 fixes (closes: #527056)
+    - mos7840: fix miscalculation of minor numbers (closes: #498293)
+    - reiserfs update (closes: #531804)
+    - bluetooth stack suspend/resume (closes: #508426, #529785)
+    - e1000e: Remove mutex_trylock and associated WARN on failure
+      (closes: #524699)
+
+  [ maximilian attems ]
+  * [sparc] Enable BLK_DEV_CRYPTOLOOP. (closes: #521829)
+  * Enable PATA_JMICRON instead of legacy BLK_DEV_JMICRON.
+    (closes: #431500, #458493)
+  * Set new NILFS2, AT76C50X_USB, MWL8K, P54_SPI, AR9170_USB,
+    NETFILTER_XT_MATCH_CLUSTER, RDS, SCSI_MPT2SAS, SCSI_OSD_INITIATOR,
+    ETHOC, IGBVF, VXGE, TOUCHSCREEN_AD7877, SENSORS_ATK0110,
+    NETFILTER_XT_TARGET_LED, 3C359, HW_RANDOM_TIMERIOMEM, SENSORS_G760A,
+    SENSORS_LTC4215, SENSORS_LM95241, USB_GSPCA_MR97310A, USB_GSPCA_SQ905,
+    USB_GSPCA_SQ905C, USB_PWC_INPUT_EVDEV, DVB_USB_CE6230, SND_INDIGOIOX,
+    SND_INDIGODJX, USB_SERIAL_CP210X, USB_SERIAL_QUALCOMM,
+    USB_SERIAL_SYMBOL, ISL29003, SERIAL_MAX3100, VIDEO_HDPVR, VIDEO_CX231XX,
+    DRAGONRISE_FF, LEDS_LP5521, LEDS_DAC124S085, LEDS_BD2802,
+    UIO_AEC, CRYPTO_ZLIB, REGULATOR_FIXED_VOLTAGE, NOP_USB_XCEIV,
+    POHMELFS, FSCACHE, CACHEFILES, EXOFS, NFS_FSCACHE, AFS_FSCACHE,
+    MTD_NAND_NANDSIM, STRIP_ASM_SYMS, FCOE_FNIC, USB_NET_CDC_EEM,
+    PCI_IOV, ASYNC_TX_DMA, ROMFS_BACKED_BY_BOTH, DETECT_HUNG_TASK.
+  * [amd64, i386] Set new DELL_WMI, EDAC_AMD8131, EDAC_AMD8111, X86_PAT, DMAR,
+    X86_CPU_DEBUG, CRYPTO_AES_NI_INTEL, X86_X2APIC.
+  * Newer Standards-Version 3.8.1 without changes.
+  * xfs: fix freeing memory in xfs_getbmap().
+
+  [ Ben Hutchings ]
+  * Remove firmware from drivers/staging (closes: #521553)
+    - make rt2860sta and rt2870sta use request_firmware(),
+      thanks to Darren Salt
+  * Remove some sourceless firmware not included in Debian kernel images
+
+  [ Martin Michlmayr ]
+  * [mipsel/r5k-cobalt] Enable SCSI_SYM53C8XX_2 (closes: #526836).
+  * [arm/iop32x, arm/ixp4xx, arm/orion5x] Turn off BOOT_TRACER,
+    BLK_DEV_IO_TRACE, CONTEXT_SWITCH_TRACER, ARM_UNWIND and
+    SECURITY_SELINUX because of size constraints.
+  * [mips/sb1-bcm91250a] There is a platform PATA driver for SWARM IDE
+    these days, so disable IDE and build in ATA, SCSI and BLK_DEV_SD.
+  * [mips/sb1-bcm91250a, mips/sb1a-bcm91480b] Compile in SB1250_MAC and
+    BROADCOM_PHY.
+  * [mips/r4k-ip22] Enable NET_ISA and various ISA network modules on
+    the request of Damian Dimmich since they might be useful on the
+    SGI Indigo2.
+  * Add patches from git.marvell.com:
+    - alternative copy_to_user: more precise fallback threshold
+    - lower overhead with alternative copy_to_user for small copies
+    - Kirkwood: Add CPU idle driver
+    - Kirkwood: clock gating for unused peripherals
+
+  [ Aurelien Jarno ]
+  * [mips(el)/sb1-bcm91250a] Set CONFIG_SCSI_AIC7XXX=y, it is needed
+    on the build daemons.
+
+  [ Bastian Blank ]
+  * [i386] Disable PentiumPro errata workaround.
+  * [i386] Enable support for big SMP systems.
+  * Disable OSS.
+  * [s390] Use Sparse Memory layout.
+  * [amd64, i386, powerpc, sparc] Make IPv6 support built-in.
+  * Centralize Sound core options.
+  * Centralize Power Management options.
+  * Centralize CPU Frequency scaling options.
+  * [sparc] Enable CPU Frequency scaling.
+  * Enable Network console logging support.
+  * [s390/s390x-tape] Add image.
+  * [s390/s390, s390/s390-tape] Remove images.
+  * [i386/486] Enable High Memory Support.
+  * [i386] Allocate pagetables from High Memory.
+  * [amd64, i386] Write protect kernel read-only data structures.
+  * [amd64, i386] Make kernel relocatable.
+  * Move images and headers into kernel section.
+
+  [ dann frazier ]
+  * Enable bnx2x, using firmware-split patches from net-next and mirroring
+    the per-subarch config settings used for bnx2
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 14 Jun 2009 11:45:08 +0200
+
+linux-2.6 (2.6.29-5) unstable; urgency=low
+
+  [ dann frazier ]
+  * [ia64] Backport rtc-efi driver from mainline
+
+  [ maximilian attems ]
+  * qla1280: Fix off-by-some error in firmware loading. (closes: #527265)
+
+  [ Martin Michlmayr ]
+  * Broadcom SB: fix locking in set_irq_affinity.
+  * mmc: load mvsdio automatically when it's a platform device.
+  * mmc: mvsdio: ignore high speed timing requests from the core
+  * USB: ftdi_sio: add vendor/product id for the Marvell SheevaPlug.
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.29.3:
+    - ath9k: Fix FIF_BCN_PRBRESP_PROMISC handling
+    - tracing: x86, mmiotrace: fix range test
+    - sched: account system time properly
+    - rndis_wlan: fix initialization order for workqueue&workers
+    - mm: fix Committed_AS underflow on large NR_CPUS environment
+    - Ignore madvise(MADV_WILLNEED) for hugetlbfs-backed regions
+    - clockevents: prevent endless loop in tick_handle_periodic()
+    - intel-iommu: Avoid panic() for DRHD at address zero.
+    - intel-iommu: Fix oops in device_to_iommu() when devices not found.
+    - intel-iommu: Fix device-to-iommu mapping for PCI-PCI bridges.
+    - cs5536: define dma_sff_read_status() method
+    - proc: avoid information leaks to non-privileged processes
+    - ath5k: fix buffer overrun in rate debug code
+    - mv643xx_eth: OOM handling fixes
+    - mv643xx_eth: 64bit mib counter read fix
+    - check_unsafe_exec: s/lock_task_sighand/rcu_read_lock/
+    - do_execve() must not clear fs->in_exec if it was set by another thread
+    - check_unsafe_exec() doesn't care about signal handlers sharing
+    - New locking/refcounting for fs_struct
+    - Take fs_struct handling to new file (fs/fs_struct.c)
+    - Get rid of bumping fs_struct refcount in pivot_root(2)
+    - Kill unsharing fs_struct in __set_personality()
+    - Annotate struct fs_struct's usage count restriction
+    - fix setuid sometimes wouldn't
+    - fix setuid sometimes doesn't
+    - compat_do_execve should unshare_files
+    - powerpc: Sanitize stack pointer in signal handling code
+    - ACPI: Revert conflicting workaround for BIOS w/ mangled PRT entries
+    - USB: serial: fix lifetime and locking problems
+    - ptrace: ptrace_attach: fix the usage of ->cred_exec_mutex
+    - kbuild: fix Module.markers permission error under cygwin
+    - pagemap: require aligned-length, non-null reads of /proc/pid/pagemap
+    - drm/i915: allow tiled front buffers on 965+
+    - bio: fix memcpy corruption in bio_copy_user_iov()
+    - PCI quirk: disable MSI on VIA VT3364 chipsets
+    - ASoC: Fix offset of freqmode in WM8580 PLL configuration
+    - x86/PCI: don't call e820_all_mapped with -1 in the mmconfig case
+    - x86-64: fix FPU corruption with signals and preemption
+    - drm/i915: add support for G41 chipset
+    - unreached code in selinux_ip_postroute_iptables_compat() (CVE-2009-1184)
+    - PCI: fix incorrect mask of PM No_Soft_Reset bit
+    - exit_notify: kill the wrong capable(CAP_KILL) check (CVE-2009-1337)
+    - crypto: ixp4xx - Fix handling of chained sg buffers
+    - block: include empty disks in /proc/diskstats
+    - b44: Use kernel DMA addresses for the kernel DMA API
+    - virtio-rng: Remove false BUG for spurious callbacks
+    - USB: Unusual Device support for Gold MP3 Player Energy
+    - KVM: x86: release time_page on vcpu destruction
+    - KVM: Fix overlapping check for memory slots
+    - KVM: MMU: disable global page optimization
+    - KVM: MMU: Fix off-by-one calculating large page count
+    - mac80211: fix basic rate bitmap calculation
+    - ALSA: us122l: add snd_us122l_free()
+    - thinkpad-acpi: fix LED blinking through timer trigger
+    - b43: Refresh RX poison on buffer recycling
+    - b43: Poison RX buffers
+    - mac80211: Fix bug in getting rx status for frames pending in reorder
+      buffer
+    - forcedeth: Fix resume from hibernation regression.
+  * Ignore ABI change.
+
+  [ Jurij Smakov ]
+  * [sparc] Fix build
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 17 May 2009 12:45:13 +0200
+
+linux-2.6 (2.6.29-4) unstable; urgency=low
+
+  [ maximilian attems ]
+  * drm/i915: allow tiled front buffers on 965+.
+
+  [ Martin Michlmayr ]
+  * Extend erase timeout in M25P80 SPI Flash driver (Peter Horton).
+  * Add driver for GMT G760A fan speed PWM controller chip.
+  * [arm/orion5x] Enable SENSORS_G760A.
+  * Add patches from git.marvell.com:
+    - allow for alternative __copy_to_user/__clear_user implementations
+    - alternative copy_to_user/clear_user implementation copy_user
+  * [arm/orion5x, armel/kirkwood] Enable UACCESS_WITH_MEMCPY.
+  * [MMC] give Sandisk/Kingston SDHC cards some slack before the SWITCH
+    command.
+
+  [ dann frazier ]
+  * [parisc] Fix macro expansion in atomic.h fixing PHONET compilation issue
+  * [parisc] reenable PHONET
+  * Btrfs: fix __ucmpdi2 compile bug on 32 bit builds
+
+  [ Stephen R. Marenka ]
+  * [m68k] Add 2.6.29 patches.
+  * [m68k] Enable RTC for aranym (2.6.29 solution).
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.29.2:
+    - Bonding: fix zero address hole bug in arp_ip_target list
+    - skge: fix occasional BUG during MTU change
+    - scsi: mpt: suppress debugobjects warning
+    - hugetlbfs: return negative error code for bad mount option
+    - NFS: Fix the XDR iovec calculation in nfs3_xdr_setaclargs
+    - gso: Fix support for linear packets
+    - agp: zero pages before sending to userspace
+    - virtio: fix suspend when using virtio_balloon
+    - Revert "console ASCII glyph 1:1 mapping"
+    - Input: gameport - fix attach driver code
+    - x86, PAT: Remove page granularity tracking for vm_insert_pfn maps
+    - KVM: is_long_mode() should check for EFER.LMA
+    - KVM: VMX: Update necessary state when guest enters long mode
+    - KVM: fix kvm_vm_ioctl_deassign_device
+    - KVM: MMU: handle compound pages in kvm_is_mmio_pfn
+    - KVM: Reset PIT irq injection logic when the PIT IRQ is unmasked
+    - KVM: Interrupt mask notifiers for ioapic
+    - KVM: Add CONFIG_HAVE_KVM_IRQCHIP
+    - KVM: Fix missing smp tlb flush in invlpg
+    - USB: usb-storage: augment unusual_devs entry for Simple Tech/Datafab
+    - USB: fix oops in cdc-wdm in case of malformed descriptors
+    - USB: ftdi_sio: add vendor/project id for JETI specbos 1201 spectrometer
+    - usb gadget: fix ethernet link reports to ethtool
+    - x86: disable X86_PTRACE_BTS for now
+    - SCSI: sg: fix q->queue_lock on scsi_error_handler path
+    - SCSI: sg: avoid blk_put_request/blk_rq_unmap_user in interrupt
+    - SCSI: sg: fix races with ioctl(SG_IO)
+    - SCSI: sg: fix races during device removal
+    - mm: pass correct mm when growing stack
+    - pata_hpt37x: fix HPT370 DMA timeouts
+    - hpt366: fix HPT370 DMA timeouts
+    - powerpc: Fix data-corrupting bug in __futex_atomic_op
+    - ALSA: hda - Fix the cmd cache keys for amp verbs
+    - sfc: Match calls to netif_napi_add() and netif_napi_del()
+    - tty: Fix leak in ti-usb
+    - spi: spi_write_then_read() bugfixes
+    - add some long-missing capabilities to fs_mask
+    - hrtimer: fix rq->lock inversion (again)
+    - x86: fix broken irq migration logic while cleaning up multiple vectors
+    - sched: do not count frozen tasks toward load
+    - dm kcopyd: fix callback race
+    - dm kcopyd: prepare for callback race fix
+    - posix-timers: fix RLIMIT_CPU && setitimer(CPUCLOCK_PROF)
+    - posix-timers: fix RLIMIT_CPU && fork()
+    - posixtimers, sched: Fix posix clock monotonicity
+    - cap_prctl: don't set error to 0 at 'no_change'
+    - SCSI: libiscsi: fix iscsi pool error path
+    - SCSI: libiscsi: fix iscsi pool error path
+    - sparc64: Fix bug in ("sparc64: Flush TLB before releasing pages.")
+    - ALSA: hda - add missing comma in ad1884_slave_vols
+    - splice: fix deadlock in splicing to file
+    - netfilter: {ip, ip6, arp}_tables: fix incorrect loop detection
+    - kprobes: Fix locking imbalance in kretprobes
+    - acer-wmi: Blacklist Acer Aspire One
+    - crypto: shash - Fix unaligned calculation with short length
+    - net/netrom: Fix socket locking
+    - af_rose/x25: Sanity check the maximum user frame size
+    - dm table: fix upgrade mode race
+    - dm: path selector use module refcount directly
+    - dm target: use module refcount directly
+    - dm snapshot: avoid having two exceptions for the same chunk
+    - dm snapshot: avoid dropping lock in __find_pending_exception
+    - dm snapshot: refactor __find_pending_exception
+    - dm io: make sync_io uninterruptible
+    - dm raid1: switch read_record from kmalloc to slab to save memory
+    - vfs: skip I_CLEAR state inodes
+    - dm: preserve bi_io_vec when resubmitting bios
+    - ixgbe: Fix potential memory leak/driver panic issue while setting up Tx &
+      Rx ring parameters
+    - mm: do_xip_mapping_read: fix length calculation
+    - mm: define a UNIQUE value for AS_UNEVICTABLE flag
+    - sysctl: fix suid_dumpable and lease-break-time sysctls
+    - cpumask: fix slab corruption caused by alloc_cpumask_var_node()
+    - ide-atapi: start DMA after issuing a packet command
+    - ide: drivers/ide/ide-atapi.c needs <linux/scatterlist.h>
+    - V4L/DVB (10943): cx88: Prevent general protection fault on rmmod
+    - r8169: Reset IntrStatus after chip reset
+    - md/raid1 - don't assume newly allocated bvecs are initialised.
+    - SCSI: sg: fix iovec bugs introduced by the block layer conversion
+    - drm/i915: fix TV mode setting in property change
+    - drm/i915: only set TV mode when any property changed
+    - drm: Use pgprot_writecombine in GEM GTT mapping to get the right bits for
+      !PAT.
+    - drm/i915: check for -EINVAL from vm_insert_pfn
+    - drm/i915: Check for dev->primary->master before dereference.
+    - drm/i915: Sync crt hotplug detection with intel video driver
+    - drm/i915: Read the right SDVO register when detecting SVDO/HDMI.
+    - drm/i915: Change DCC tiling detection case to cover only mobile parts.
+    - dock: fix dereference after kfree()
+    - ACPI: cap off P-state transition latency from buggy BIOSes
+    - x86, setup: mark %esi as clobbered in E820 BIOS call
+    - tracing/core: fix early free of cpumasks
+    - rt2x00: Fix SLAB corruption during rmmod
+    - ext4: fix locking typo in mballoc which could cause soft lockup hangs
+    - ext4: fix typo which causes a memory leak on error path
+    - MIPS: Compat: Zero upper 32-bit of offset_high and offset_low.
+    - PCI/x86: detect host bridge config space size w/o using quirks
+    - ide: Fix code dealing with sleeping devices in do_ide_request()
+    - fbdev: fix info->lock deadlock in fbcon_event_notify()
+    - fbmem: fix fb_info->lock and mm->mmap_sem circular locking dependency
+    - security/smack: fix oops when setting a size 0 SMACK64 xattr
+  * Bump ABI to 2.
+  * [sparc] Make the kernels again 64bit. (closes: #525926)
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 03 May 2009 09:38:42 +0200
+
+linux-2.6 (2.6.29-3) unstable; urgency=low
+
+  [ maximilian attems ]
+  * [powerpc] Pipe mkimage postinst call to stderr for debconf.
+    Thanks Jordi Mallach <jordi@debian.org> for the patch. (closes: #518231)
+  * [parisc] Disable PHONET.
+  * [sparc] Disable BTRFS.
+
+  [ Bastian Blank ]
+  * [alpha] Fix location of kernel image.
+  * Add source link to headers packages. (closes: #523726)
+
+  [ Martin Michlmayr ]
+  * Add some sata_mv fixes for Kirkwood from Marvell:
+    - use new sata phy register settings for new devices
+    - increate the IORDY timeout for the soc controllers
+
+ -- maximilian attems <maks@debian.org>  Fri, 17 Apr 2009 10:36:03 +0200
+
+linux-2.6 (2.6.29-2) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * [arm/ixp4xx] Build in LEDS_TRIGGER_TIMER (closes: #521141).
+  * [mips*/4kc-malta, mips*/5kc-malta] Build in RTC_DRV_CMOS.
+
+  [ maximilian attems ]
+  * linux-libc-dev: Bump versioned replaces libdrm-dev.
+  * parisc: hardcode gcc-4.3 usage.
+  * Postrm cleanup new module-init-tools 3.7 files.
+
+  [ Bastian Blank ]
+  * Install all needed Makefiles into common headers package.
+    (closes: #521472)
+  * Add stable release 2.6.29.1:
+    - V4L: v4l2-common: remove incorrect MODULE test
+    - sparc64: Fix reset hangs on Niagara systems.
+    - sparc64: Flush TLB before releasing pages.
+    - sparc64: Fix MM refcount check in smp_flush_tlb_pending().
+    - KVM: MMU: Fix another largepage memory leak
+    - cfg80211: fix incorrect assumption on last_request for 11d
+    - lguest: fix spurious BUG_ON() on invalid guest stack.
+    - lguest: wire up pte_update/pte_update_defer
+    - VM, x86, PAT: Change is_linear_pfn_mapping to not use vm_pgoff
+    - x86: mtrr: don't modify RdDram/WrDram bits of fixed MTRRs
+    - x86: ptrace, bts: fix an unreachable statement
+    - x86: fix 64k corruption-check
+    - x86, uv: fix cpumask iterator in uv_bau_init()
+    - x86, PAT, PCI: Change vma prot in pci_mmap to reflect inherited prot
+    - Add a missing unlock_kernel() in raw_open()
+    - fuse: fix fuse_file_lseek returning with lock held
+    - ARM: 5435/1: fix compile warning in sanity_check_meminfo()
+    - ARM: twl4030 - leak fix
+    - ARM: fix leak in iop13xx/pci
+    - ARM: cumana: Fix a long standing bogon
+    - ARM: 5428/1: Module relocation update for R_ARM_V4BX
+    - ARM: pxa: fix overlay being un-necessarily initialized on pxa25x
+    - DVB: firedtv: FireDTV S2 problems with tuning solved
+    - cfg80211: force last_request to be set for OLD_REG if regdom is EU
+    - CIFS: Fix memory overwrite when saving nativeFileSystem field during mount
+    - ath5k: warn and correct rate for unknown hw rate indexes
+    - ath5k: disable MIB interrupts
+    - b43: fix b43_plcp_get_bitrate_idx_ofdm return type
+    - ath9k: fix dma mapping leak of rx buffer upon rmmod
+    - ath5k: use spin_lock_irqsave for beacon lock
+    - cifs: fix buffer format byte on NT Rename/hardlink
+    - ath9k: downgrade xmit queue full message to xmit debug
+    - KVM: SVM: set accessed bit for VMCB segment selectors
+    - KVM: VMX: Don't allow uninhibited access to EFER on i386
+    - USB: add quirk to avoid config and interface strings
+    - USB: gadget: fix rndis regression
+    - USB: usb-storage: increase max_sectors for tape drives
+    - USB: fix USB_STORAGE_CYPRESS_ATACB
+    - USB: EHCI: add software retry for transaction errors
+    - xfrm: spin_lock() should be spin_unlock() in xfrm_state.c
+    - ipv6: Plug sk_buff leak in ipv6_rcv (net/ipv6/ip6_input.c)
+    - GRO: Disable GRO on legacy netif_rx path (closes: #521691)
+    - bridge: bad error handling when adding invalid ether address
+    - dnet: drivers/net/dnet.c needs <linux/io.h>
+    - udp: Wrong locking code in udp seq_file infrastructure
+    - netfilter: nf_conntrack_tcp: fix unaligned memory access in tcp_sack
+
+  [ dann frazier ]
+  * bnx2: correct firmware revisions (closes: #522049)
+  * [mips] Zero upper 32-bits of compat llseek (closes: #521016)
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 04 Apr 2009 15:13:33 +0200
+
+linux-2.6 (2.6.29-1) unstable; urgency=low
+
+  * New upstream release
+    - tg3 use request_firmware and firmware nuked.
+    - acenic use request_firmware and firmware nuked.
+    - e100 use request_firmware and firmware nuked. (closes: #494308)
+    - cassini use request_firmware and firmware nuked.
+    - starfire use request_firmware and firmware nuked. (closes: #501152)
+    - cxgb3 use request_firmware and firmware nuked.
+    - NR_CPUS setting no longer affects size of modules. (closes: #516709)
+    - orinoco: use KERN_DEBUG for link status messages. (closes: #447549)
+    - [CIFS] Fix oops in cifs_strfromUCS_le mounting to servers which do
+      not specify their OS. (closes: #463402)
+    - fixes conflict between <asm/byteorder.h> and <endian.h> on mips
+      (closes: #519761)
+
+  [ maximilian attems ]
+  * topconfig set new NET_NS, NET_SCH_DRR, NET_CLS_CGROUP, LIB80211,
+    SCSI_CXGB3_ISCSI, NATIONAL_PHY, STE10XP, LSI_ET1011C_PHY, BTRFS_FS,
+    SQUASHFS, PCI_STUB, WIMAX, MTD_LPDDR, EEPROM_AT24, EEPROM_AT25,
+    EEPROM_LEGACY, BLK_DEV_IT8172, SMSC9420, WIMAX_I2400M_USB,
+    WIMAX_I2400M_SDIO, MISDN_HFCUSB, SENSORS_ADT7475, SENSORS_LTC4245,
+    RADIO_TEA5764, SND_HDA_CODEC_INTELHDMI, RT2860, RT2870, RTL8187SE,
+    LIBFC, FCOE, ATL1C, JOYSTICK_WALKERA0701, TOUCHSCREEN_WACOM_W8001,
+    TOUCHSCREEN_TSC2007, W1_SLAVE_DS2431, WM8350_POWER, SOC_CAMERA_MT9T031,
+    SOC_CAMERA_TW9910, SOC_CAMERA_OV772X, USB_STV06XX, USB_GSPCA_OV534,
+    DVB_LGDT3304, WM8350_WATCHDOG, SMSC_SCH311X_WDT, SND_HRTIMER,
+    SND_HDA_RECONFIG, GREENASIA_FF, USB_SERIAL_SIEMENS_MPI,
+    USB_SERIAL_OPTICON, LEDS_ALIX2, LEDS_WM8350, OCFS2_FS_POSIX_ACL,
+    BTRFS_FS_POSIX_ACL, ATM_SOLOS, MFD_PCF50633, PCF50633_ADC, PCF50633_GPIO,
+    REGULATOR_PCF50633, DVB_S921, EDAC_I5400, RTC_DRV_PCF50633,
+    INPUT_PCF50633_PMU, CHARGER_PCF50633, DEVPTS_MULTIPLE_INSTANCES,
+    SCHED_OMIT_FRAME_POINTER, DCB, IXGBE_DCB, SFC_MTD, BE2NET, DNET.
+  * topconfig enable SND_HDA_HWDEP for sound debugging purpose.
+  * topconfig enable USB_HIDDEV (closes: #517771)
+  * [x86] set DELL_LAPTOP, COMEDI, X86_PTRACE_BTS, XENFS, XEN_COMPAT_XENFS,
+    X86_REROUTE_FOR_BROKEN_BOOT_IRQS, OPTIMIZE_INLINING.
+  * [x86] unset DRM_I915_KMS due to upgrade path from Lenny override with
+    modeset module param.
+  * temp.image.plain/preinst: Consistent output.
+  * [x86_64] set SPARSE_IRQ, NUMA_MIGRATE_IRQ_DESC, TREE_RCU.
+  * [x86_32] set BLK_DEV_CS5536.
+  * [powerpc] set PHANTOM, HP_ILO, MV643XX_ETH, MOUSE_BCM5974, VIRTUALIZATION.
+  * topconfig unset legacy SCSI_PROC_FS, PCMCIA_IOCTL, ACPI_PROCFS_POWER,
+    ACPI_PROC_EVENT.
+
+  [ Bastian Blank ]
+  * Use external source directory for all builds.
+  * Use external source directory for all header packages.
+  * Use dh_prep.
+  * Update copyright file.
+  * [s390/s390] Disable BTRFS.
+  * [sparc] Use sparc as kernel architecture.
+  * Update kconfig report changes patch.
+  * [s390] Enable KVM.
+  * Use debhelper compat level 7.
+
+  [ Martin Michlmayr ]
+  * [mips/r4k-ip22] Build in RTC_DRV_DS1286.
+  * [mips/r5k-ip32] Build in RTC_DRV_CMOS (Closes: #516775).
+  * [arm/versatile, arm/iop32x, arm/ixp4xx] Make LLC2 modular.
+  * [arm, mips, mipsel] Make MII modular.
+  * [arm/ixp4xx] Make IXP4XX_WATCHDOG modular.
+  * topconfig: Disable NET_DSA since this hardware is special purpose and
+    the option cannot be made modular at the moment and bloats the kernel
+    image too much.
+  * [arm, armel] Enable various V4L USB devices. (Closes: #518582)
+  * [arm/orion5x] Build the SENSORS_LM75 module since it's needed on the
+    D-Link DNS-323.
+  * [arm/iop32x, arm/ixp4xx, arm/orion5x] Enable INPUT_TOUCHSCREEN.
+  * [arm/iop32x, arm/ixp4xx, arm/orion5x] Enable INPUT_JOYDEV, GAMEPORT
+    and INPUT_JOYSTICK (Closes: #520433).
+  * [arm/iop32x, arm/ixp4xx, arm/orion5x] Add a size check to ensure that
+    the kernel will fit in flash.
+  * Add patches from git.marvell.com to improve Kirkwood support:
+    - make gpio /input/output validation separate
+    - MPP initialization code
+    - SDIO driver for Marvell SoCs
+    - SDIO driver registration for DB6281 and RD6281
+    - register internal devices in a common place
+    - Marvell SheevaPlug support
+    - SheevaPlug USB Power Enable setup
+    - SheevaPlug LED support
+    - Hook up I2C on Kirkwood
+    - Add support for QNAP TS-119/TS-219 Turbo NAS
+  * [armel/kirkwood] Add an image for Marvell's Kirkwood platform.
+
+  [ Ben Hutchings ]
+  * Remove firmware from drivers and make them use request_firmware():
+    - mga (closes: #502666)
+    - qla1280 (closes: #502667)
+    - r128 (closes: #494007)
+    - radeon (closes: #494009)
+    - tehuti (closes: #501153)
+    - typhoon (closes: #502669)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 24 Mar 2009 14:32:11 +0100
+
+linux-2.6 (2.6.28-1) unstable; urgency=low
+
+  * New upstream release
+    - new btusb. (closes: #505184)
+    - iwlagn driver for Intel Wifi Link 5100 and 5300. (closes: #501157)
+    - drm git branch vblank-rework merged. (closes: #456219)
+    - netfilter.h got in.h include. (closes: #487103)
+    - netlink errno propageted. (closes: #489340)
+    - agp g41 support (closes: #513228)
+    - Includes atl2 driver (Closes: #500065)
+    - Fixes loading of video module on Samsung systems
+      (Closes: #475319, #495697)
+    - Fix rf_kill handling of iwl3945 driver (Closes: #503688)
+    - Fix adjtimex frequency offset (Closes: #432877)
+    - Fix oopses with Canon PIXMA MP150 (Closes: #487725)
+    - Fix excessive interrrupts with compiz (Closes: #456219)
+    - dsp56k: use request_firmware and firmware nuked (closes: #494010)
+    - dabusb: use request_firmware and firmware nuked (closes: #502663)
+    - kaweth: use request_firmware and firmware nuked (closes: #502665)
+
+  [ maximilian attems ]
+  * Reenable new Juju firewire stack.
+  * topconfig set ATH9K, IWL5000, IP_NF_SECURITY, IP6_NF_SECURITY,
+    BRIDGE_EBT_IP6, BT_HCIBTUSB, TOUCHSCREEN_INEXIO, TOUCHSCREEN_TOUCHIT213,
+    VIRTIO_CONSOLE, VIDEO_ZORAN_ZR36060, USB_VIDEO_CLASS_INPUT_EVDEV,
+    USB_GSPCA, USB_S2255, OCFS2_FS_STATS, OMFS_FS, CRYPTO_RMD128,
+    CRYPTO_RMD160, CRYPTO_RMD256, CRYPTO_RMD320, VLAN_8021Q_GVRP, HP_WMI,
+    COMPAL_LAPTOP, SCSI_DH, SCSI_DH_RDAC, SCSI_DH_HP_SW, SCSI_DH_EMC,
+    SCSI_DH_ALUA, MAC80211_HWSIM, USB_HSO, BLK_DEV_INTEGRITY, SGI_XP, SGI_GRU,
+    TLAN, ATM_IA, ATM_FORE200E, MISDN, I2C_HELPER_AUTO, I2C_ISCH,
+    I2C_NFORCE2_S4985, AT24, SENSORS_AD7414, SENSORS_ADCXX,
+    SOC_CAMERA_PLATFORM, VIDEO_SH_MOBILE_CEU, DVB_USB_DW2102, DVB_USB_ANYSEE,
+    DVB_SIANO_SMS1XXX, DVB_DRX397XD, MMC_SDHCI_PCI (closes: #507150),
+    MMC_SDRICOH_CS (closes: #509979), EDAC_I5100, RTC_DRV_M41T94,
+    RTC_DRV_DS1305, UBIFS, EXT4 (closes: #512266), CGROUP_FREEZER,
+    NETFILTER_TPROXY, NETFILTER_XT_TARGET_TPROXY, NETFILTER_XT_MATCH_RECENT,
+    NETFILTER_XT_MATCH_SOCKET, NET_ACT_SKBEDIT, PHONET, NET_9P_RDMA, ATL2, JME,
+    ENIC, MLX4_EN, USB_NET_SMSC95XX, I7300_IDLE, NET_SCH_MULTIQ, ICS932S401,
+    PANASONIC_LAPTOP, QLGE, LIBERTAS_THINFIRM, LIBERTAS_THINFIRM_USB,
+    INPUT_CM109, W1_SLAVE_BQ27000, SENSORS_ADT7462, SENSORS_MAX1111,
+    SENSORS_LIS3LV02D, MFD_WM8400, MFD_WM8350_I2C, SOC_CAMERA_MT9M111,
+    USB_M5602, USB_GSPCA_CONEX, USB_GSPCA_ETOMS, USB_GSPCA_FINEPIX,
+    USB_GSPCA_MARS, USB_GSPCA_OV519, USB_GSPCA_PAC207, USB_GSPCA_PAC7311,
+    USB_GSPCA_SONIXB, USB_GSPCA_SONIXJ, USB_GSPCA_SPCA500, USB_GSPCA_SPCA501,
+    USB_GSPCA_SPCA505, USB_GSPCA_SPCA506, USB_GSPCA_SPCA508, USB_GSPCA_SPCA561,
+    USB_GSPCA_STK014, USB_GSPCA_SUNPLUS, USB_GSPCA_T613, USB_GSPCA_TV8532,
+    USB_GSPCA_VC032X, USB_GSPCA_ZC3XX, C2PORT, C2PORT_DURAMAR_2150,
+    W83697UG_WDT, USB_MR800, DVB_USB_CINERGY_T2, DVB_USB_DTV5100,
+    DVB_USB_AF9015, DVB_DM1105, DVB_LGS8GL5, DVB_DUMMY_FE,
+    SND_HDA_CODEC_NVHDMI, SND_USB_US122L, USB_VST, LEDS_PCA9532, LEDS_HP_DISK,
+    LEDS_PCA955X, LEDS_TRIGGER_BACKLIGHT, EDAC_X38, RTC_DRV_RX8581,
+    RTC_DRV_DS1390, RTC_DRV_DS3234, RTC_DRV_DS1286, RTC_DRV_M48T35,
+    RTC_DRV_BQ4802, RTC_DRV_WM8350, UNEVICTABLE_LRU, MAC80211_RC_MINSTREL,
+    BATTERY_BQ27x00, REGULATOR, REGULATOR_BQ24022, REGULATOR_WM8350,
+    REGULATOR_WM8400, FB_VIA, FB_METRONOME, FB_MB862XX, UIO_SERCOS3,
+    CORE_DUMP_DEFAULT_ELF_HEADERS, NET_DSA, NET_DSA_MV88E6060,
+    NET_DSA_MV88E6131, NET_DSA_MV88E6123_61_65, IT87_WDT,
+    BACKLIGHT_MBP_NVIDIA, SND_HDA_INPUT_BEEP, USB_WUSB, USB_TMC, IDE_GD,
+    IDE_GD_ATA, IDE_GD_ATAPI, PCMCIA_IBMTR, USB_EMI62, USB_EMI26, USB_SEVSEG,
+    UWB, UWB_WLP, UWB_I1480U, UWB_I1480U_WLP, CRYPTO_FIPS, ANSI_CPRNG,
+    CRC_T10DIF, STAGING, ET131X, CRYPTO_ANSI_CPRNG, PRISM2_USB, HID_COMPAT,
+    SYSCTL_SYSCALL_CHECK, BOOT_TRACER.
+  * [x86] set MOUSE_BCM5974, X86_RESERVE_LOW_64K, OPROFILE_IBS,
+    MICROCODE_INTEL, MICROCODE_AMD, X86_VERBOSE_BOOTUP, MTRR_SANITIZER,
+    CRYPTO_CRC32C_INTEL, STRICT_DEVMEM.
+  * [x86_64] set AMD_IOMMU, INTR_REMAP.
+  * [x86_32] set TOUCHSCREEN_HTCPEN, MOUSE_PS2_OLPC.
+  * Add stable releases 2.6.28.1-6.
+  * Turn off SYSFS_DEPRECATED* for newer udev and proper /sys/.
+  * linux-libc-dev: Add versioned replaces libdrm-dev. (closes: #513604)
+  * topconfig: Enable MACVLAN. (closes: #504611)
+  * [ppc] BAYCOM_PAR, BAYCOM_EPP.
+  * [x86_64] set NR_CPUS to 512. (closes: #491309)
+  * [686-bigmem] set modular XEN_FBDEV_FRONTEND.
+  * Newer Standards-Version 3.8.0 without changes.
+  * Use update-initramfs for initramfs-tools.
+  * Fix preinst and postinst call to not use deprecated mkinitramfs-kpkg
+    interfaces.
+
+  [ Martin Michlmayr ]
+  * [mips/r4k-ip22, mips/sb1-bcm91250a] Don't build in ISO9660.
+  * [mipsel/r5k-cobalt] Enable INPUT_COBALT_BTNS.
+  * [mipsel/r5k-cobalt] Enable the new Cobalt LCD driver (FB_COBALT).
+  * [mips/r4k-ip22] Enable the new ALSA sound driver (SND_SGI_HAL2).
+  * [arm/iop32x, arm/ixp4xx] Don't build in KEYBOARD_ATKBD, MOUSE_PS2,
+    SERIO, JFFS2_FS, and CRAMFS.
+  * [arm/iop32x, arm/ixp4xx] Unset DEBUG_KERNEL so the kernel will
+    fit in flash.
+  * [arm/orion5x] Unset FIXED_PHY to work around a clash with fixed
+    mdio bus and mv643xx_eth.
+  * Migrate arm, armel, mips and mipsel away from kernel-package.
+
+  [ Ian Campbell ]
+  * [x86]: Enable Xen guest support in amd64 flavour. (closes: #495590)
+
+  [ dann frazier ]
+  * [x86, ia64] Enable ACPI_PCI_SLOT
+
+  [ Bastian Blank ]
+  * Make gcc-4.3 the default compiler. (closes: #463295)
+  * Add optional image size check.
+  * debian/rules.real: Setup image installation rules for alpha, hppa,
+    ia64 and sparc.
+  * Remove support to build images using kernel-package.
+
+ -- maximilian attems <maks@debian.org>  Wed, 18 Feb 2009 16:36:04 +0100
+
+linux-2.6 (2.6.26-12) unstable; urgency=high
+
+  [ Ian Campbell ]
+  * xen: fix ACPI processor throttling for when processor id is -1. (closes: #502849)
+
+  [ dann frazier ]
+  * Make sendmsg() block during UNIX garbage collection (CVE-2008-5300)
+  * Fix race conditions between inotify removal and umount (CVE-2008-5182)
+  * Fix DoS when calling svc_listen twice on the same socket while reading
+    /proc/net/atm/*vc (CVE-2008-5079)
+
+  [ Bastian Blank ]
+  * [openvz, vserver] Fix descriptions.
+  * [sparc] Enable Sun Logical Domains support. (closes: #501684)
+  * Fix coexistence of pata_marvell and ahci. (closes: #507432)
+  * [sparc] Support Intergraph graphics chips. (closes: #508108)
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 15 Dec 2008 12:57:18 +0100
+
+linux-2.6 (2.6.26-11) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * [sparc] Reintroduce dummy PCI host controller to workaround broken X.org.
+  * [sparc] Fix size checks in PCI maps.
+  * Add stable release 2.6.26.8:
+    - netfilter: restore lost ifdef guarding defrag exception
+    - netfilter: snmp nat leaks memory in case of failure
+    - netfilter: xt_iprange: fix range inversion match
+    - ACPI: dock: avoid check _STA method
+    - ACPI: video: fix brightness allocation
+    - sparc64: Fix race in arch/sparc64/kernel/trampoline.S
+    - math-emu: Fix signalling of underflow and inexact while packing result.
+    - tcpv6: fix option space offsets with md5
+    - net: Fix netdev_run_todo dead-lock
+    - scx200_i2c: Add missing class parameter
+    - DVB: s5h1411: Power down s5h1411 when not in use
+    - DVB: s5h1411: Perform s5h1411 soft reset after tuning
+    - DVB: s5h1411: bugfix: Setting serial or parallel mode could destroy bits
+    - V4L: pvrusb2: Keep MPEG PTSs from drifting away
+    - ACPI: Always report a sync event after a lid state change
+    - ALSA: use correct lock in snd_ctl_dev_disconnect()
+    - file caps: always start with clear bprm->caps_*
+    - libertas: fix buffer overrun
+    - net: Fix recursive descent in __scm_destroy().
+    - SCSI: qla2xxx: Skip FDMI registration on ISP21xx/22xx parts.
+      (Closes: #502552)
+    - edac cell: fix incorrect edac_mode
+    - ext[234]: Avoid printk floods in the face of directory corruption
+      (CVE-2008-3528)
+    - gpiolib: fix oops in gpio_get_value_cansleep()
+  * Override ABI changes.
+  * [xen] Update description. (closes: #505961)
+  * Revert parts of 2.6.26.6 to fix resume breakage. (closes: #504167)
+    - clockevents: prevent multiple init/shutdown
+    - clockevents: broadcast fixup possible waiters
+
+  [ dann frazier ]
+  * Fix buffer overflow in hfsplus (CVE-2008-4933)
+  * Fix BUG() in hfsplus (CVE-2008-4934)
+  * Fix stack corruption in hfs (CVE-2008-5025)
+  * Fix oops in tvaudio when controlling bass/treble (CVE-2008-5033)
+
+  [ Martin Michlmayr ]
+  * [arm/iop32x, arm/ixp4xx, arm/orion5x] Enable support for more partition
+    tables, including MAC_PARTITION (requested by Benoît Knecht).
+  * leds-pca9532: Fix memory leak and properly handle errors (Sven Wegener)
+  * leds-pca9532: Move i2c work to a workqueque (Riku Voipio). (closes:
+    #506116)
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 26 Nov 2008 11:43:48 +0100
+
+linux-2.6 (2.6.26-10) unstable; urgency=low
+
+  [ dann frazier ]
+  * sctp: Fix possible kernel panic in sctp_sf_abort_violation (CVE-2008-4618)
+
+  [ Martin Michlmayr ]
+  * DNS-323: add support for revision B1 machines (Matthew Palmer).
+  * ext3/ext4: Add support for non-native signed/unsigned htree hash
+    algorithms (Theodore Ts'o). (closes: #493957)
+  * [arm/ixp4xx] Enable USB_ACM (closes: #504723).
+
+  [ Bastian Blank ]
+  * agp: Fix stolen memory counting on Intel G4X. (closes: #502606)
+  * Add stable release 2.6.26.7:
+    - security: avoid calling a NULL function pointer in drivers/video/tvaudio.c
+    - DVB: au0828: add support for another USB id for Hauppauge HVR950Q
+    - drm/i915: fix ioremap of a user address for non-root (CVE-2008-3831)
+    - ACPI: Ignore _BQC object when registering backlight device
+    - hwmon: (it87) Prevent power-off on Shuttle SN68PT
+    - Check mapped ranges on sysfs resource files
+    - x86: avoid dereferencing beyond stack + THREAD_SIZE
+    - PCI: disable ASPM on pre-1.1 PCIe devices
+    - PCI: disable ASPM per ACPI FADT setting
+    - V4L/DVB (9053): fix buffer overflow in uvc-video
+    - V4L/DVB (8617): uvcvideo: don't use stack-based buffers for USB transfers.
+    - V4L/DVB (8498): uvcvideo: Return sensible min and max values when querying
+      a boolean control.
+    - V4L: zr36067: Fix RGBR pixel format
+    - V4L: bttv: Prevent NULL pointer dereference in radio_open
+    - libata: fix EH action overwriting in ata_eh_reset()
+    - libata: always do follow-up SRST if hardreset returned -EAGAIN
+    - fbcon_set_all_vcs: fix kernel crash when switching the rotated consoles
+    - modules: fix module "notes" kobject leak
+    - b43legacy: Fix failure in rate-adjustment mechanism
+    - CIFS: make sure we have the right resume info before calling CIFSFindNext
+    - sched_rt.c: resch needed in rt_rq_enqueue() for the root rt_rq
+    - tty: Termios locking - sort out real_tty confusions and lock reads
+    - x86, early_ioremap: fix fencepost error
+    - x86: improve UP kernel when CPU-hotplug and SMP is enabled
+    - x86: Reserve FIRST_DEVICE_VECTOR in used_vectors bitmap.
+  * [xen] Remove pte file workaround.
+
+  [ Ian Campbell ]
+  * [xen] Disable usage of PAT. (closes: #503821)
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 08 Nov 2008 10:50:58 +0100
+
+linux-2.6 (2.6.26-9) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.26.6:
+    - mm owner: fix race between swapoff and exit
+    - rtc: fix kernel panic on second use of SIGIO nofitication
+    - fbcon: fix monochrome color value calculation
+    - ALSA: snd-powermac: HP detection for 1st iMac G3 SL
+    - ALSA: snd-powermac: mixers for PowerMac G4 AGP
+    - sparc64: Fix missing devices due to PCI bridge test in
+      of_create_pci_dev().
+    - sparc64: Fix disappearing PCI devices on e3500.
+    - sparc64: Fix OOPS in psycho_pcierr_intr_other().
+    - sparc64: Fix interrupt register calculations on Psycho and Sabre.
+    - sparc64: Fix PCI error interrupt registry on PSYCHO.
+    - udp: Fix rcv socket locking
+    - sctp: Fix oops when INIT-ACK indicates that peer doesn't support AUTH
+      (CVE-2008-4576)
+    - sctp: do not enable peer features if we can't do them.
+    - ipsec: Fix pskb_expand_head corruption in xfrm_state_check_space
+    - netlink: fix overrun in attribute iteration
+    - niu: panic on reset
+    - ipv6: Fix OOPS in ip6_dst_lookup_tail().
+    - XFRM,IPv6: initialize ip6_dst_blackhole_ops.kmem_cachep
+    - af_key: Free dumping state on socket close
+    - pcmcia: Fix broken abuse of dev->driver_data
+    - clockevents: remove WARN_ON which was used to gather information
+    - ntp: fix calculation of the next jiffie to trigger RTC sync
+    - x86: HPET: read back compare register before reading counter
+    - x86: HPET fix moronic 32/64bit thinko
+    - clockevents: broadcast fixup possible waiters
+    - HPET: make minimum reprogramming delta useful
+    - clockevents: prevent endless loop lockup
+    - clockevents: prevent multiple init/shutdown
+    - clockevents: enforce reprogram in oneshot setup
+    - clockevents: prevent endless loop in periodic broadcast handler
+    - clockevents: prevent clockevent event_handler ending up handler_noop
+    - x86: fix memmap=exactmap boot argument
+    - x86: add io delay quirk for Presario F700
+    - ACPI: Avoid bogus EC timeout when EC is in Polling mode
+    - x86: fix SMP alternatives: use mutex instead of spinlock, text_poke is
+      sleepable
+    - rtc: fix deadlock
+    - mm: dirty page tracking race fix
+    - x86-64: fix overlap of modules and fixmap areas
+    - x86: PAT proper tracking of set_memory_uc and friends
+    - x86: fix oprofile + hibernation badness
+    - x86: fdiv bug detection fix
+    - rt2x00: Use ieee80211_hw->workqueue again
+    - x86: Fix 27-rc crash on vsmp due to paravirt during module load
+    - sg: disable interrupts inside sg_copy_buffer
+    - ocfs2: Increment the reference count of an already-active stack.
+    - APIC routing fix
+    - sched: fix process time monotonicity
+    - block: submit_bh() inadvertently discards barrier flag on a sync write
+    - x64, fpu: fix possible FPU leakage in error conditions
+    - x86-64: Clean up save/restore_i387() usage
+    - KVM: SVM: fix guest global tlb flushes with NPT
+    - KVM: SVM: fix random segfaults with NPT enabled
+    - ALSA: remove unneeded power_mutex lock in snd_pcm_drop
+    - ALSA: fix locking in snd_pcm_open*() and snd_rawmidi_open*()
+    - ALSA: oxygen: fix distorted output on AK4396-based cards
+    - ALSA: hda - Fix model for Dell Inspiron 1525
+    - SCSI: qla2xxx: Defer enablement of RISC interrupts until ISP
+      initialization completes.
+    - USB: fix hcd interrupt disabling
+    - smb.h: do not include linux/time.h in userspace
+    - pxa2xx_spi: fix build breakage
+    - pxa2xx_spi: chipselect bugfixes
+    - pxa2xx_spi: dma bugfixes
+    - mm: mark the correct zone as full when scanning zonelists
+    - async_tx: fix the bug in async_tx_run_dependencies
+    - drivers/mmc/card/block.c: fix refcount leak in mmc_block_open()
+    - ixgbe: initialize interrupt throttle rate
+    - i2c-dev: Return correct error code on class_create() failure
+    - x86-32: AMD c1e force timer broadcast late
+  * [x86] Update patch to detect not properly announced cmos RTC devices.
+  * [xen] Overtake hvc console by default.
+
+  [ maximilian attems ]
+  * [openvz] ip: NULL pointer dereferrence in tcp_v(4|6)_send_ack
+    (closes: #500472)
+  * [openvz] unset NF_CONNTRACK_IPV6 for now until abi bump.
+
+  [ Stephen R. Marenka ]
+  * [m68k] add patches to fix atari ethernec per Michael Schmitz:
+    atari-ethernec-IRQF_SHARED.diff and atari-ethernec-fixes.diff.
+  * [m68k] add mac-esp-fix-for-quadras-with-two-esp-chips.diff to fix macs 
+    with dual scsi busses and a problem with xorg, per Finn Thain.
+  * [m68k] add atari-atari_keyb_init-operator-precedence.diff per
+    Michael Schmitz.
+  * [m68k] more mac patches, per Finn Thain.
+
+  [ Martin Michlmayr ]
+  * [arm/ixp4xx] Enable USB_ATM and USB_SPEEDTOUCH (closes: #502182).
+  * [arm/iop32x, arm/orion5x] Likewise.
+  * DNS-323: read MAC address from flash (Matthew Palmer).
+
+  [ dann frazier ]
+  * Restrict access to the DRM_I915_HWS_ADDR ioctl (CVE-2008-3831)
+  * Don't allow splicing to files opened with O_APPEND (CVE-2008-4554)
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 18 Oct 2008 12:14:22 +0200
+
+linux-2.6 (2.6.26-8) unstable; urgency=medium
+
+  [ dann frazier ]
+  * [x86] Fix broken LDT access in VMI (CVE-2008-4410)
+  * ata: Fix off-by-one-error that causes errors when reading a
+    block on the LBA28-LBA48 boundary
+  * [s390] prevent ptrace padding area read/write in 31-bit mode
+    (CVE-2008-1514)
+
+  [ Bastian Blank ]
+  * Fix generation of i386 Xen image information.
+  * [i386] Restrict the usage of long NOPs. (closes: #464962)
+  * Fix access to uninitialized user keyring. (closes: #500279)
+  * [x86] Fix detection of non-PNP RTC devices. (closes: #499230)
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 09 Oct 2008 12:07:21 +0200
+
+linux-2.6 (2.6.26-7) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * [xen] Add SuSE Xen patch. (closes: #495895)
+  * Only register notifiers in braille console if used, fixes Insert key.
+    (closes: #494374)
+  * Fix ACPI EC GPE storm detection. (closes: #494546)
+  * Disable useless support for ISP1760 USB host controller.
+    (closes: #498304)
+  * rt61pci: Add a sleep after firmware upload. (closes: #498828)
+
+  [ Stephen R. Marenka ]
+  * [m68k] Set CONFIG_ATARI_ETHERNEC=m for atari, since it only works
+    in modular form.
+  * [m68k] Enable CONFIG_ADB_PMU68K=y for mac.
+  * [m68k] Add atari-aranym-nf-wrappers.diff patch to fix atari LBD
+    problems, set CONFIG_LBD=y for atari.
+
+  [ Martin Michlmayr ]
+  * [arm/orion5x] Enable CONFIG_ATALK (requested by Ben Schwarz).
+  * [arm/versatile] Enable CONFIG_VFP. (closes: #499463)
+  * ath5k: Fix bad udelay calls on AR5210 code (Nick Kossifidis).
+  * [arm] No longer disable ATH5K.
+
+  [ dann frazier ]
+  * Add missing capability checks in sbni_ioctl (CVE-2008-3525)
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 01 Oct 2008 09:02:30 +0200
+
+linux-2.6 (2.6.26-6) unstable; urgency=low
+
+  [ maximilian attems ]
+  * [openvz] Enable checkpointing. (closes: #497292)
+
+  [ Bastian Blank ]
+  * Allow forced module loading again. (closes: #494144)
+  * Set IEEE 802.11 (wireless) regulatory domain default to EU.
+    (closes: #497971)
+  * [i386] Enable IDE ACPI support. Override ABI changes. (closes: #470528)
+  * [i386/686-bigmem] Promote to generic subarch. (closes: #476120)
+
+  [ Martin Michlmayr ]
+  * Fix dead 21041 ethernet after ifconfig down (Thomas Bogendoerfer).
+
+  [ dann frazier ]
+  * [hppa] Enable the FPU before using it, fixes booting on A500s
+    with our CONFIG_PRINTK_TIME=y setting. (closes: #499458)
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 24 Sep 2008 12:06:47 +0200
+
+linux-2.6 (2.6.26-5) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * Backport power-off method for Kurobox Pro.
+  * [arm/versatile] Really enable CONFIG_RTC_DRV_PL031 (closes: #484432).
+
+  [ Stephen R. Marenka ]
+  * [m68k] Set CONFIG_LBD=n for atari, since it conflicts with nfblock.
+
+  [ Bastian Blank ]
+  * Reenable SiS SATA support. (closes: #496603)
+  * [amd64,i386] Disable new-style SiS PATA support.
+  * Add stable release 2.6.26.4:
+    - sata_mv: don't issue two DMA commands concurrently
+    - KVM: MMU: Fix torn shadow pte
+    - x86: work around MTRR mask setting, v2
+    - nfsd: fix buffer overrun decoding NFSv4 acl (CVE-2008-3915)
+    - sunrpc: fix possible overrun on read of /proc/sys/sunrpc/transports
+      (CVE-2008-3911)
+    - r8169: balance pci_map / pci_unmap pair
+    - tg3: Fix firmware event timeouts
+    - crypto: authenc - Avoid using clobbered request pointer
+    - sparc64: Fix cmdline_memory_size handling bugs.
+    - sparc64: Fix overshoot in nid_range().
+    - ipsec: Fix deadlock in xfrm_state management. (closes: #497796)
+    - sctp: fix random memory dereference with SCTP_HMAC_IDENT option.
+    - sctp: correct bounds check in sctp_setsockopt_auth_key
+    - sch_prio: Fix nla_parse_nested_compat() regression
+    - sctp: add verification checks to SCTP_AUTH_KEY option
+    - sctp: fix potential panics in the SCTP-AUTH API.
+    - udp: Drop socket lock for encapsulated packets
+    - pkt_sched: Fix actions referencing
+    - pkt_sched: Fix return value corruption in HTB and TBF.
+    - netns: Add network namespace argument to rt6_fill_node() and
+      ipv6_dev_get_saddr()
+    - ipv6: Fix OOPS, ip -f inet6 route get fec0::1, linux-2.6.26,
+      ip6_route_output, rt6_fill_node+0x175 (CVE-2008-3686)
+    - AX.25: Fix sysctl registration if !CONFIG_AX25_DAMA_SLAVE
+    - mm: make setup_zone_migrate_reserve() aware of overlapping nodes
+    - 8250: improve workaround for UARTs that don't re-assert THRE correctly
+    - rtc_time_to_tm: fix signed/unsigned arithmetic
+    - drivers/char/random.c: fix a race which can lead to a bogus BUG()
+    - cifs: fix O_APPEND on directio mounts
+    - atl1: disable TSO by default
+    - forcedeth: fix checksum flag
+    - bio: fix bio_copy_kern() handling of bio->bv_len
+    - bio: fix __bio_copy_iov() handling of bio->bv_len
+    - ALSA: oxygen: prevent muting of nonexistent AC97 controls
+    - S390 dasd: fix data size for PSF/PRSSD command
+    - x86: fix "kernel won't boot on a Cyrix MediaGXm (Geode)"
+    - x86: work around MTRR mask setting
+    - USB: cdc-acm: don't unlock acm->mutex on error path
+    - binfmt_misc: fix false -ENOEXEC when coupled with other binary handlers
+    - fbdefio: add set_page_dirty handler to deferred IO FB
+    - eeepc-laptop: fix use after free
+    - PCI: fix reference leak in pci_get_dev_by_id()
+    - cramfs: fix named-pipe handling
+  * Override ABI changes.
+  * [hppa] Disable new-style RTC support. Override ABI changes.
+
+  [ maximilian attems ]
+  * openvz: Add upstream fixes up to 24cebf40278cb071ff8b. (closes: #497528)
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 10 Sep 2008 12:55:16 +0200
+
+linux-2.6 (2.6.26-4) unstable; urgency=low
+
+  [ maximilian attems ]
+  * x86: Reset ACPI_PROCFS_POWER for Lenny as buggy apps depend on it.
+    (closes: #495541)
+  * x86: ACPI: Fix thermal shutdowns
+  * openvz: Add upstream fixes up to 0f14912e3d2251aff. (closes: #494384)
+  * Add stable release 2.6.26.3:
+    - USB: fix interface unregistration logic
+    - usb-storage: unusual_devs entries for iRiver T10 and Datafab CF+SM reader
+    - usb-serial: don't release unregistered minors
+    - usb-storage: revert DMA-alignment change for Wireless USB
+    - usb-storage: automatically recognize bad residues
+    - USB: ftdi_sio: Add USB Product Id for ELV HS485
+    - qla2xxx: Set an rport's dev_loss_tmo value in a consistent manner.
+    - dccp: change L/R must have at least one byte in the dccpsf_val field
+      (CVE-2008-3276)
+    - KVM: Avoid instruction emulation when event delivery is pending
+    - cs5520: add enablebits checking
+    - acer-wmi: Fix wireless and bluetooth on early AMW0 v2 laptops
+    - USB: usb-storage: quirk around v1.11 firmware on Nikon D4
+    - radeonfb: fix accel engine hangs
+    - radeon: misc corrections
+    - sparc64: Fix global reg snapshotting on self-cpu.
+    - sparc64: Do not clobber %g7 in setcontext() trap.
+    - sparc64: Fix end-of-stack checking in save_stack_trace().
+    - sparc64: Fix recursion in stack overflow detection handling.
+    - sparc64: Make global reg dumping even more useful.
+    - sparc64: Implement IRQ stacks.
+    - sparc64: Handle stack trace attempts before irqstacks are setup.
+    - PCI: Limit VPD length for Broadcom 5708S
+    - ide: it821x in pass-through mode segfaults in 2.6.26-stable
+    - syncookies: Make sure ECN is disabled
+    - USB: ftdi_sio: add support for Luminance Stellaris Evaluation/Development
+      Kits
+    - i2c: Fix NULL pointer dereference in i2c_new_probed_device
+    - SCSI: hptiop: add more PCI device IDs
+    - SCSI: ses: fix VPD inquiry overrun
+    - SCSI: scsi_transport_spi: fix oops in revalidate
+    - CIFS: Fix compiler warning on 64-bit
+    - x86: fix spin_is_contended()
+    - matrox maven: fix a broken error path
+    - i2c: Let users select algorithm drivers manually again
+    - CIFS: properly account for new user= field in SPNEGO upcall string
+      allocation
+    - x86: fix setup code crashes on my old 486 box
+    - KVM: ia64: Fix irq disabling leak in error handling code
+    - mlock() fix return values
+    - rtl8187: Fix lockups due to concurrent access to config routine
+    - KVM: task switch: segment base is linear address
+    - KVM: task switch: use seg regs provided by subarch instead of reading
+      from GDT
+    - KVM: task switch: translate guest segment limit to virt-extension byte
+      granular field
+    - r8169: avoid thrashing PCI conf space above RTL_GIGA_MAC_VER_06
+    - sparc64: FUTEX_OP_ANDN fix
+    - posix-timers: do_schedule_next_timer: fix the setting of ->si_overrun
+    - posix-timers: fix posix_timer_event() vs dequeue_signal() race
+    - vt8623fb: fix kernel oops
+    - ide-cd: fix endianity for the error message in cdrom_read_capacity
+    - qla2xxx: Add dev_loss_tmo_callbk/terminate_rport_io callback support.
+    - random32: seeding improvement
+    - CIFS: mount of IPC$ breaks with iget patch
+    - CIFS: if get root inode fails during mount, cleanup tree connection
+    - crypto: padlock - fix VIA PadLock instruction usage with
+      irq_ts_save/restore()
+    - ipvs: Fix possible deadlock in estimator code
+    - SCSI: block: Fix miscalculation of sg_io timeout in CDROM_SEND_PACKET
+      handler.
+    - ALSA: asoc: restrict sample rate and size in Freescale MPC8610 sound
+      drivers
+    - ALSA: ASoC: fix SNDCTL_DSP_SYNC support in Freescale 8610 sound drivers
+    - USB: pl2023: Remove USB id (4348:5523) handled by ch341
+    - relay: fix "full buffer with exactly full last subbuffer" accounting
+      problem
+    - ipv6: Fix ip6_xmit to send fragments if ipfragok is true
+    - x86: amd opteron TOM2 mask val fix
+
+  [ dann frazier ]
+  * [ia64] Fix boot-time hang w/ PRINTK_TIME by ensuring that cpu0 can access
+    per-cpu vars in early boot
+  * delay calls to sched_clock() until after sched_clock_init() to prevent
+    inaccurate printk timings on ia64 and presumably other architectures
+
+  [ Ian Campbell ]
+  * [xen] import upstream fix to fb-defio driver used by Xen framebuffer.
+
+  [ Bastian Blank ]
+  * [powerpc] Enable proper RTC support. (closes: #484693)
+
+  [ Martin Michlmayr ]
+  * Add Marvell Orion fixes:
+    - sata_mv: add the Gen IIE flag to the SoC devices.
+    - sata_mv: don't avoid clearing interrupt status on SoC host adapters
+
+  [ dann frazier ]
+  * Fix overflow condition in sctp_setsockopt_auth_key (CVE-2008-3526)
+  * Fix panics that may occur if SCTP AUTH is disabled (CVE-2008-3792)
+  * [x86] Fix memory leak in the copy_user routine
+    (CVE-2008-0598, closes: #490910)
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 28 Aug 2008 08:46:42 +0200
+
+linux-2.6 (2.6.26-3) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Disable Emagic Audiowerk 2 soundcard support. The PCI IDs clashes with
+    many DVB cards.
+  * Update VServer patch to 2.3.0.35.
+  * [armel/versatile] Override ABI changes.
+  * [i386/686-bigmem] Add VServer image.
+
+  [ Aurelien Jarno ]
+  * [armel/versatile] Disable CONFIG_NO_HZ, CONFIG_HIGH_RES_TIMERS for
+    dynticks. (closes: #494842)
+
+  [ Martin Michlmayr ]
+  * Fix PCIe on the Kurobox Pro (Lennert Buytenhek).
+  * Fix regressions caused by the "use software GSO for SG+CSUM capable
+    netdevices" patch:
+    - loopback: Enable TSO (Herbert Xu)
+    - net: Preserve netfilter attributes in skb_gso_segment using
+      __copy_skb_header (Herbert Xu)
+
+  [ dann frazier ]
+  * [amd64] Fix typo in TOM2 mask value, preventing a hang on some opteron
+    systems. (closes: #494365)
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 18 Aug 2008 15:34:38 +0200
+
+linux-2.6 (2.6.26-2) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * [powerpc] Install arch/powerpc/lib/crtsavres.o into the headers, it is
+    used during module linking.
+  * Add stable release 2.6.26.1:
+    - Fix off-by-one error in iov_iter_advance()
+    - ath5k: don't enable MSI, we cannot handle it yet
+    - b43legacy: Release mutex in error handling code
+    - cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called already
+    - VFS: increase pseudo-filesystem block size to PAGE_SIZE
+    - markers: fix markers read barrier for multiple probes
+    - tmpfs: fix kernel BUG in shmem_delete_inode
+    - mpc52xx_psc_spi: fix block transfer
+    - ixgbe: remove device ID for unsupported device
+    - UML - Fix boot crash
+    - eCryptfs: use page_alloc not kmalloc to get a page of memory
+    - x86: fix kernel_physical_mapping_init() for large x86 systems
+    - DVB: cx23885: SRAM changes for the 885 and 887 silicon parts
+    - DVB: cx23885: Reallocated the sram to avoid concurrent VIDB/C issues
+    - DVB: cx23885: DVB Transport cards using DVB port VIDB/TS1 did not stream
+    - DVB: cx23885: Ensure PAD_CTRL is always reset to a sensible default
+    - V4L: cx23885: Bugfix for concurrent use of /dev/video0 and /dev/video1
+    - V4L: saa7134: Copy tuner data earlier to avoid overwriting manual tuner type
+    - V4L: uvcvideo: Add support for Medion Akoya Mini E1210 integrated webcam
+    - V4L: uvcvideo: Make input device support optional
+    - V4L: uvcvideo: Don't free URB buffers on suspend
+    - V4L: uvcvideo: Use GFP_NOIO when allocating memory during resume
+    - V4L: uvcvideo: Fix a buffer overflow in format descriptor parsing
+    - DVB: dib0700: add support for Hauppauge Nova-TD Stick 52009
+    - V4L: cx18: Upgrade to newer firmware & update documentation
+    - ALSA: trident - pause s/pdif output
+    - myri10ge: do not use mgp->max_intr_slots before loading the firmware
+    - myri10ge: do not forget to setup the single slice pointers
+    - iop-adma: fix platform driver hotplug/coldplug
+    - sparc64: Do not define BIO_VMERGE_BOUNDARY.
+    - sparc64: Fix cpufreq notifier registry.
+    - sparc64: Fix lockdep issues in LDC protocol layer.
+    - tcp: Clear probes_out more aggressively in tcp_ack().
+    - ARM: fix fls() for 64-bit arguments
+    - vmlinux.lds: move __attribute__((__cold__)) functions back into final .text section
+    - rtc-at91rm9200: avoid spurious irqs
+    - ide-cd: fix oops when using growisofs
+    - x86: fix crash due to missing debugctlmsr on AMD K6-3
+    - cpusets: fix wrong domain attr updates
+    - proc: fix /proc/*/pagemap some more
+    - Fix build on COMPAT platforms when CONFIG_EPOLL is disabled
+    - markers: fix duplicate modpost entry
+    - x86, suspend, acpi: enter Big Real Mode
+    - USB: fix usb serial pm counter decrement for disconnected interfaces
+    - x86 reboot quirks: add Dell Precision WorkStation T5400
+    - Fix typos from signal_32/64.h merge
+    - rcu: fix rcu_try_flip_waitack_needed() to prevent grace-period stall
+    - Patch Upstream: x86 ptrace: fix PTRACE_GETFPXREGS error
+    - KVM: MMU: Fix potential race setting upper shadow ptes on nonpae hosts
+    - KVM: MMU: nuke shadowed pgtable pages and ptes on memslot destruction
+    - KVM: x86 emulator: Fix HLT instruction
+    - KVM: VMX: Add ept_sync_context in flush_tlb
+    - KVM: mmu_shrink: kvm_mmu_zap_page requires slots_lock to be held
+    - KVM: SVM: fix suspend/resume support
+    - KVM: VMX: Fix a wrong usage of vmcs_config
+    - isofs: fix minor filesystem corruption
+    - quota: fix possible infinite loop in quota code
+    - hdlcdrv: Fix CRC calculation.
+    - ipv6: __KERNEL__ ifdef struct ipv6_devconf
+    - ipv6: use timer pending
+    - udplite: Protection against coverage value wrap-around
+    - pxamci: trivial fix of DMA alignment register bit clearing
+  * [sparc] Install asm-sparc headers again.
+  * Force RTC on by default and set clock on startup. Override ABI changes.
+  * [i386, amd64] Make the CMOS RTC support builtin. (closes: #493567)
+  * Add stable release 2.6.26.2:
+    - sound: ensure device number is valid in snd_seq_oss_synth_make_info
+    - Ath5k: kill tasklets on shutdown
+    - Ath5k: fix memory corruption
+    - vfs: fix lookup on deleted directory
+    - ALSA: emu10k1 - Fix inverted Analog/Digital mixer switch on Audigy2
+    - ALSA: hda - Add missing Thinkpad Z60m support
+    - ALSA: hda - Fix DMA position inaccuracy
+    - ALSA: hda - Fix wrong volumes in AD1988 auto-probe mode
+    - Add compat handler for PTRACE_GETSIGINFO
+    - Bluetooth: Signal user-space for HIDP and BNEP socket errors
+    - Input: i8042 - add Acer Aspire 1360 to nomux blacklist
+    - Input: i8042 - add Gericom Bellagio to nomux blacklist
+    - Input: i8042 - add Intel D845PESV to nopnp list
+    - jbd: fix race between free buffer and commit transaction
+    - NFS: Ensure we zap only the access and acl caches when setting new acls
+    - SCSI: ch: fix ch_remove oops
+    - linear: correct disk numbering error check
+    - netfilter: xt_time: fix time's time_mt()'s use of do_div()
+    - Kprobe smoke test lockdep warning
+    - Close race in md_probe
+    - x86: io delay - add checking for NULL early param
+    - x86: idle process - add checking for NULL early param
+    - SCSI: bsg: fix bsg_mutex hang with device removal
+    - netfilter: nf_nat_sip: c= is optional for session
+    - romfs_readpage: don't report errors for pages beyond i_size
+    - ftrace: remove unneeded documentation
+
+  [ Martin Michlmayr ]
+  * METH: fix MAC address setup (Thomas Bogendoerfer)
+  * Export the reset button of the QNAP TS-409.
+  * net: use software GSO for SG+CSUM capable netdevices (Lennert Buytenhek)
+
+  [ dann frazier ]
+  * device_create interface changed between 2.6.26 and 2.6.27; adjust hpilo
+    backport appropriately. Fixes a NULL pointer dereference in ilo_probe().
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 08 Aug 2008 08:09:00 +0200
+
+linux-2.6 (2.6.26-1) unstable; urgency=low
+
+  * New upstream release see http://kernelnewbies.org/Linux_2_6_26
+    - UDF 2.50 support. (closes: #480910)
+    - mmc: increase power up delay (closes: #481190)
+    - snd-hda-intel suspend troubles fixed. (closes: #469727, #481613, #480034)
+    - cifs QueryUnixPathInfo fix (closes: #480995)
+    - r8169 oops in r8169_get_mac_version (closes: #471892)
+    - netfilter headers cleanup (closes: #482331)
+    - iwlwifi led support (closes: #469095)
+    - ath5k associates on AR5213A (closes: #463785)
+    - T42 suspend fix (closes: #485873)
+    - cpuidle acpi driver: fix oops on AC<->DC (closes: #477201)
+    - opti621 ide fixes (closes: #475561)
+    - ssh connection hangs with mac80211 (closes: #486089)
+    - ocfs2: Allow uid/gid/perm changes of symlinks (closes: #479475)
+    - xircom_tulip_cb: oboslete driver removed (closes: #416900)
+    - r8169 properly detect link status (closes: #487586)
+    - iwl3945 connection + support fixes (closes: #481436, #482196)
+    - longrun cpufreq min freq fix (closes: #468149)
+    - emux midi synthesizer SOFT_PEDAL-release event (closes: #474312)
+    - vmemmap fixes to use smaller pages (closes: #483489)
+    - x86 freeze fixes (closes: #482100, #482074)
+    - xen boot failure fix (closes: #488284)
+    - gdb read floating-point and SSE registers (closes: #485375)
+    - USB_PERSIST is default on (closes: #489963)
+    - alsa snd-hda Dell Inspiron fix (closes: #490649)
+    - ipw2200: queue direct scans (closes: #487721)
+    - better gcc-4.3 support (closes: #492301)
+    - iwl3945 monitor mode. (closes: #482387)
+
+  [ maximilian attems ]
+  * topconfig set CRYPTO_CTS, SND_PCSP, SND_AW2, IWL4965_LEDS, IWL3945_LEDS,
+    RT2400PCI_LEDS, RT2500PCI_LEDS, RT61PCI_LEDS, RT2500USB_LEDS,
+    RT73USB_LEDS, NF_CT_PROTO_DCCP, BRIDGE_EBT_NFLOG, IWLWIFI_RFKILL,
+    USB_SERIAL_SPCP8X5, USB_STORAGE_CYPRESS_ATACB, DVB_ISL6405, DVB_AU8522,
+    VIDEO_EM28XX_DVB, VIDEO_CX18, VIDEO_AU0828, SOC_CAMERA_MT9M001,
+    SOC_CAMERA_MT9V022, DVB_TUNER_ITD1000, VIDEO_PVRUSB2_DVB, USB_C67X00_HCD,
+    USB_ISP1760_HCD, HTC_PASIC3, I2C_PCA_PLATFORM, TOUCHSCREEN_WM97XX,
+    JOYSTICK_ZHENHUA, SFC, ACCESSIBILITY, UIO_SMX, LOGIRUMBLEPAD2_FF,
+    A11Y_BRAILLE_CONSOLE, EDS_TRIGGER_DEFAULT_ON, VIDEO_ALLOW_V4L1, ATA_ACPI,
+    SATA_PMP, ATA_SFF, USB_SERIAL_MOTOROLA, USB_WDM, MAC80211_MESH,
+    IPV6_MROUTE, IPV6_PIMSM_V2, MTD_AR7_PARTS, SENSORS_IBMAEM, PATA_SCH,
+    CGROUP_DEVICE, USB_ISIGHTFW, HW_RANDOM_VIRTIO, RTC_DRV_FM3130,
+    USB_VIDEO_CLASS, CIFS_DFS_UPCALL.
+  * [amd64, i386]: KVM_CLOCK, KVM_GUEST, ISCSI_IBFT_FIND, ISCSI_IBFT, THERMAL,
+    EEEPC_LAPTOP, FB_N411, THERMAL_HWMON.
+  * [amd64]: Enable SCSI_DPT_I2O as 64 bit now.
+  * Reenable USB_SERIAL_EDGEPORT, USB_SERIAL_EDGEPORT_TI. (closes: #480195)
+  * Enable TCP_MD5SIG for BGP sessions. (closes: #443742)
+  * Add recognised alsa cards to bug report.
+  * topconfig: Enable HYSDN, no longer broken on smp.
+  * Add request_firmware patch for keyspan. (closes: #448900)
+  * [x86]: Enable dma engine. (closes: #473331)
+  * [ppc64]: Enable IBMEBUS and EHEA. (closes: #484888)
+  * topconfig: Enable PROFILING across all flavours. (closes: #484885)
+  * 486: enable OLPC support thanks Andres Salomon for merge. 
+    Kconfig variable patch by Robert Millan (closes: #485063).
+  * Add request_firmware patch for ip2.
+  * Add request_firmware patch for acenic. (closes: #284221)
+  * [x86, ia64]: Set HPET_RTC_IRQ. (closes: #479709, #476970)
+  * [ppc]: Set SND_VIRMIDI. (closes: #290090)
+  * Fallback for userspace compatibility to old IEEE 1394 FireWire stack.
+    (closes: #451367, #475295, #478419)
+  * [x86]: Enable modular FB_UVESA. (closes: #473180)
+  * JFFS2 enable summary and compressor support. (closes: #488242)
+  * Add OLPC sdhci quirks. Thanks Andres Salomon <dilinger@debian.org>
+    (closes: #485192)
+  * [ppc]: Enable RTC_DRV_PPC. (closes: #484693) Thanks for the patch to
+    Geoff Levand <geoffrey.levand@am.sony.com>.
+  * Enable BLK_DEV_BSG for SG v4 support.
+  * [amd64] Enable default disabled memtest boot param.
+  * topconfig: Enable PATA_SIS instead of SATA_SIS. (closes: #485609)
+  * Add OpenVZ countainer flavour for amd64, i386. (closes: #392015)
+  * atl1e driver for Atheros(R) L1e Fast Ethernet. (closes: #492029)
+  * [ALSA] hda - Add ICH9 controller support (8086:2911)
+  * [ALSA] hda - support intel DG33 motherboards
+  * HP iLO driver
+  * Input: i8042 - add Arima-Rioworks HDAMB board to noloop list
+    (closes: #489190) thanks Guillaume Morin <guillaume@morinfr.org>
+
+  [ Martin Michlmayr ]
+  * [arm/orion5x] Update the config to reflect upstream renaming this
+    subarch.
+  * [arm/orion5x] Add some patches from Marvell's Orion tree:
+    - Feroceon: speed up flushing of the entire cache
+    - support for 5281 D0 stepping
+    - cache align destination pointer when copying memory for some processors
+    - cache align memset and memzero
+    - DMA engine driver for Marvell XOR engine
+    - Orion hardware watchdog support
+  * [arm/orion5x] Enable NETCONSOLE.
+  * [arm/orion5x] Disable more SCSI drivers.
+  * [arm/ixp4xx] Disable most ATA and more SCSI and network drivers.
+  * [arm/versatile] Enable CONFIG_RTC_DRV_PL031 (closes: #484432).
+  * [arm/iop32x, arm/ixp4xx, arm/versatile] Enable ARM_THUMB (closes: #484524).
+  * [arm/iop32x] Add LED driver for Thecus N2100 (Riku Voipio).
+  * [mips/r5k-ip32] Enable USB.
+  * [arm/orion5x, arm/iop32x, arm/ixp4xx, mipsel/r5k-cobalt] Enable HAMRADIO
+    on the request of Heinz Janssen.
+  * [arm/orion5x] Add support for QNAP TS-409 and HP mv2120; thanks
+    Sylver Bruneau.
+  * [mips] Add patches from Thomas Bogendoerfer:
+    - gbefb: fix cmap FIFO timeout (closes: #487257)
+    - IP32: Enable FAST-20 for onboard scsi
+    - IP32: SGI O2 sound driver
+  * [arm/ixp4xx] Add support for Freecom FSG-3 (Rod Whitby).
+  * [arm/ixp4xx] Enable CONFIG_MACH_DSMG600.
+  * [arm/iop32x] Unset NET_DMA since it actually leads to worse network
+    performance.
+  * [arm/orion5x] Fix a boot crash on the Kurobox Pro.
+  * [arm/orion5x] use better key codes for the TS-209/TS-409 buttons
+  * [arm/orion5x] export red SATA lights on TS-409, fix SATA presence/activity
+  * [arm] Enable KEXEC (closes: #492268).
+  * [arm/orion5x] Enable USB_PRINTER, requested by Mike Arthur.
+  * [arm/orion5x] Enable binfmt aout, x25, wireless and ATM.
+  * [arm/iop32x, arm/orion5x] Enable USB_SISUSBVGA.
+  * [arm] xfs: pack some shortform dir2 structures for the ARM old ABI
+    architecture (closes: #414932).
+
+  [ Ian Campbell ]
+  * Readme.build updated on how to generate orig tarballs.
+  * Forward port vmlinuz-target.patch.
+  * Enable Xen save/restore and memory ballooning for Xen enabled kernels.
+
+  [ Bastian Blank ]
+  * [powerpc/powerpc-miboot] Disable. (closes: #481358)
+  * [powerpc/powerpc64] Support IBM Cell based plattforms and PS3.
+    (closes: #462529)
+  * [s390] Synchronize block device, network bridge, network scheduler and CRC
+    support.
+  * [s390] Enable support for PCI-attached cryptographic adapters.
+  * Use control group as base for group CPU scheduler. This reenabled
+    traditional nice behaviour. (closes: #489223)
+  * Bump yaird dependencies to at least 0.0.13.
+  * Reenable SECCOMP. There is no longer additional overhead.
+    (closes: #474648)
+  * Export symbol required for MOL again. (closes: #460667)
+  * [powerpc/powerpc64] Fix console selection in LPAR environment.
+    (closes: #492703)
+  * Fix several userspace compatibility problems.
+
+  [ Christian T. Steigies ]
+  * [m68k] enable SERIAL_CONSOLE for amiga and atari
+
+  [ Thiemo Seufer ]
+  * [mips] Fix logic bug in atomic_sub_if_positive.
+
+  [ Stephen R. Marenka ]
+  * [m68k] Update pending m68k patches.
+  * [m68k] Enable nfcon and nfblock for atari.
+  * [m68k] Change compiler to default.
+
+  [ Aurelien Jarno ]
+  * [arm/versatile] Switch scsi/ext3/smc91x to modules now that we have proper
+    d-i support. Remove options defined in toplevel config file.
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 30 Jul 2008 10:17:29 +0200
+
+linux-2.6 (2.6.25-7) unstable; urgency=high
+
+  * Add stable release 2.6.25.10:
+    - TTY: fix for tty operations bugs (CVE-2008-2812)
+    - sched: fix cpu hotplug
+    - IB/mthca: Clear ICM pages before handing to FW
+    - DRM: enable bus mastering on i915 at resume time
+    - x86: shift bits the right way in native_read_tscp
+    - x86_64 ptrace: fix sys32_ptrace task_struct leak (CVE-2008-3077)
+    - ptrace GET/SET FPXREGS broken
+    - futexes: fix fault handling in futex_lock_pi
+    - x86: fix cpu hotplug crash
+  * Add stable release 2.6.25.11:
+    - x86: fix ldt limit for 64 bit
+
+ -- maximilian attems <maks@debian.org>  Mon, 14 Jul 2008 10:58:14 +0200
+
+linux-2.6 (2.6.25-6) unstable; urgency=high
+
+  [ maximilian attems ]
+  * Add stable release 2.6.25.7:
+    - double-free of inode on alloc_file() failure exit in create_write_pipe()
+    - m68k: Add ext2_find_{first,next}_bit() for ext4
+    - bluetooth: fix locking bug in the rfcomm socket cleanup handling
+    - serial: fix enable_irq_wake/disable_irq_wake imbalance in serial_core.c
+    - bttv: Fix a deadlock in the bttv driver (closes: #487594)
+    - forcedeth: msi interrupts
+    - CPUFREQ: Fix format string bug.
+    - mmc: wbsd: initialize tasklets before requesting interrupt
+    - ecryptfs: fix missed mutex_unlock
+    - mac80211: send association event on IBSS create
+    - bluetooth: rfcomm_dev_state_change deadlock fix
+    - sunhv: Fix locking in non-paged I/O case.
+    - cassini: Only use chip checksum for ipv4 packets.
+    - ipwireless: Fix blocked sending
+    - net: Fix call to ->change_rx_flags(dev, IFF_MULTICAST) in
+      dev_change_flags()
+    - fbdev: export symbol fb_mode_option
+    - ipsec: Use the correct ip_local_out function
+    - tcp: fix skb vs fack_count out-of-sync condition
+    - tcp FRTO: Fix fallback to conventional recovery
+    - tcp FRTO: SACK variant is errorneously used with NewReno
+    - tcp FRTO: work-around inorder receivers
+    - tcp: Fix inconsistency source (CA_Open only when !tcp_left_out(tp))
+    - l2tp: avoid skb truesize bug if headroom is increased
+    - l2tp: Fix possible WARN_ON from socket code when UDP socket is closed
+    - l2tp: Fix possible oops if transmitting or receiving when tunnel goes down
+    - ax25: Fix NULL pointer dereference and lockup.
+    - sound: emu10k1 - fix system hang with Audigy2 ZS Notebook PCMCIA card
+    - tcp: Allow send-limited cwnd to grow up to max_burst when gso disabled
+    - tcp: Limit cwnd growth when deferring for GSO
+    - af_key: Fix selector family initialization.
+    - hgafb: resource management fix
+    - cifs: fix oops on mount when CONFIG_CIFS_DFS_UPCALL is enabled
+    - b43: Fix controller restart crash
+    - ssb: Fix context assertion in ssb_pcicore_dev_irqvecs_enable
+    - eCryptfs: protect crypt_stat->flags in ecryptfs_open()
+    - cciss: add new hardware support
+    - ecryptfs: add missing lock around notify_change
+    - ecryptfs: clean up (un)lock_parent
+    - Add 'rd' alias to new brd ramdisk driver
+    - net_sched: cls_api: fix return value for non-existant classifiers
+    - vlan: Correctly handle device notifications for layered VLAN devices
+    - IB/umem: Avoid sign problems when demoting npages to integer
+    - x86: fix recursive dependencies
+    - can: Fix copy_from_user() results interpretation
+    - Kconfig: introduce ARCH_DEFCONFIG to DEFCONFIG_LIST
+    - tcp: TCP connection times out if ICMP frag needed is delayed
+    - ALSA: hda - Fix resume of auto-config mode with Realtek codecs
+    - netlink: Fix nla_parse_nested_compat() to call nla_parse() directly
+  * Add stable release 2.6.25.9:
+    - Add return value to reserve_bootmem_node()
+    - x86: use BOOTMEM_EXCLUSIVE on 32-bit
+    - sctp: Make sure N * sizeof(union sctp_addr) does not overflow.
+    - hwmon: (lm85) Fix function RANGE_TO_REG()
+    - hwmon: (adt7473) Initialize max_duty_at_overheat before use
+    - x86: set PAE PHYSICAL_MASK_SHIFT to 44 bits.
+    - Reinstate ZERO_PAGE optimization in 'get_user_pages()' and fix XIP
+    - watchdog: hpwdt: fix use of inline assembly
+    - Fix ZERO_PAGE breakage with vmware
+    - atl1: relax eeprom mac address error check
+
+  [ Martin Michlmayr]
+  * [arm/orion5x] Enable INPUT_EVDEV and KEYBOARD_GPIO.
+
+  [ Steve Langasek ]
+  * Enable CONFIG_CIFS_EXPERIMENTAL and CONFIG_CIFS_UPCALL, required for
+    CIFS mounts to be able to use Kerberos authentication.  Closes: #480663.
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.25.8:
+    - x86: disable mwait for AMD family 10H/11H CPUs
+    - x86: remove mwait capability C-state check
+    - nf_conntrack_h323: fix memory leak in module initialization error path
+    - nf_conntrack_h323: fix module unload crash
+    - nf_conntrack: fix ctnetlink related crash in nf_nat_setup_info()
+    - SCSI: sr: fix corrupt CD data after media change and delay
+    - ACPICA: Ignore ACPI table signature for Load() operator
+    - scsi_host regression: fix scsi host leak
+    - b43: Fix possible NULL pointer dereference in DMA code
+    - b43: Fix noise calculation WARN_ON
+    - virtio_net: Fix skb->csum_start computation
+    - opti621: remove DMA support
+    - opti621: disable read prefetch
+    - Fix tty speed handling on 8250
+    - x86-64: Fix "bytes left to copy" return value for copy_from_user()
+   * Fix alpha build due too inconsistent kallsyms data.
+
+ -- maximilian attems <maks@debian.org>  Fri, 27 Jun 2008 00:33:53 +0200
+
+linux-2.6 (2.6.25-5) unstable; urgency=low
+
+  [ maximilian attems ]
+  [ Bastian Blank ]
+  * Reenable VServer images.
+
+  [ maximilian attems ]
+  * Add stable release 2.6.25.5:
+    - asn1: additional sanity checking during BER decoding (CVE-2008-1673)
+  * Add stable release 2.6.25.6:
+    - atl1: fix 4G memory corruption bug
+    - capabilities: remain source compatible with 32-bit raw legacy capability
+      support.
+    - usb-serial: Use ftdi_sio driver for RATOC REX-USB60F
+    - cpufreq: fix null object access on Transmeta CPU
+    - Smack: fuse mount hang fix
+    - cgroups: remove node_ prefix_from ns subsystem
+    - XFS: Fix memory corruption with small buffer reads
+    - x86: don't read maxlvt before checking if APIC is mapped
+    - USB: option: add new Dell 5520 HSDPA variant
+    - md: do not compute parity unless it is on a failed drive
+    - md: fix uninitialized use of mddev->recovery_wait
+    - md: fix prexor vs sync_request race
+    - HID: split Numlock emulation quirk from HID_QUIRK_APPLE_HAS_FN.
+    - USB: do not handle device 1410:5010 in 'option' driver
+    - USB: unusual_devs: Add support for GI 0401 SD-Card interface
+    - USB: add Telstra NextG CDMA id to option driver
+    - USB: fix build errors in ohci-omap.c and ohci-sm501.c
+    - USB: add TELIT HDSPA UC864-E modem to option driver
+    - memory_hotplug: always initialize pageblock bitmap
+    - x86: fix bad pmd ffff810000207xxx(9090909090909090)
+    - USB: add Zoom Telephonics Model 3095F V.92 USB Mini External modem to
+      cdc-acm
+    - x86: prevent PGE flush from interruption/preemption
+    - IPoIB: Test for NULL broadcast object in ipiob_mcast_join_finish()
+    - i386: fix asm constraint in do_IRQ()
+    - i2c-nforce2: Disable the second SMBus channel on the DFI Lanparty NF4
+      Expert
+    - i2c/max6875: Really prevent 24RF08 corruption
+    - brk: make sys_brk() honor COMPAT_BRK when computing lower bound
+    - Revert "PCI: remove default PCI expansion ROM memory allocation"
+    - PS3: gelic: fix memory leak
+    - eCryptfs: remove unnecessary page decrypt call
+    - netfilter: nf_conntrack_expect: fix error path unwind in
+      nf_conntrack_expect_init()
+    - netfilter: xt_connlimit: fix accouning when receive RST packet in
+      ESTABLISHED state
+    - netfilter: nf_conntrack_ipv6: fix inconsistent lock state in
+      nf_ct_frag6_gather()
+    - POWERPC Bolt in SLB entry for kernel stack on secondary cpus
+    - netfilter: xt_iprange: module aliases for xt_iprange
+    - x86: user_regset_view table fix for ia32 on 64-bit
+    - x86: if we cannot calibrate the TSC, we panic.
+    - CIFS: Fix UNC path prefix on QueryUnixPathInfo to have correct slash
+    - x86, fpu: fix CONFIG_PREEMPT=y corruption of application's FPU stack
+    - libata: force hardreset if link is in powersave mode
+    - x86: fix setup of cyc2ns in tsc_64.c
+    - x86: distangle user disabled TSC from unstable
+    - x86: disable TSC for sched_clock() when calibration failed
+    - pagemap: fix bug in add_to_pagemap, require aligned-length reads of
+      /proc/pid/pagemap
+    - ext3/4: fix uninitialized bs in ext3/4_xattr_set_handle()
+    - proc: calculate the correct /proc/<pid> link count
+    - CPUFREQ: Make acpi-cpufreq more robust against BIOS freq changes behind
+      our back.
+    - USB: remove PICDEM FS USB demo (04d8:000c) device from ldusb
+    - types.h: don't expose struct ustat to userspace
+
+  [ Bastian Blank ]
+  * Ignore ABI change in internal XFS symbol.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 12 Jun 2008 08:47:11 +0200
+
+linux-2.6 (2.6.25-4) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Fix arm Kconfig logic disabling random drivers. (closes: #481410)
+  * Add stable release 2.6.25.4:
+    - OHCI: fix regression upon awakening from hibernation
+    - V4L/DVB (7473): PATCH for various Dibcom based devices
+    - {nfnetlink, ip, ip6}_queue: fix skb_over_panic when enlarging packets
+    - dccp: return -EINVAL on invalid feature length
+    - md: fix raid5 'repair' operations
+    - sparc: Fix SA_ONSTACK signal handling.
+    - sparc: Fix fork/clone/vfork system call restart.
+    - sparc64: Stop creating dummy root PCI host controller devices.
+    - sparc64: Fix wedged irq regression.
+    - SPARC64: Fix args to 64-bit sys_semctl() via sys_ipc().
+    - serial: Fix sparc driver name strings.
+    - sparc: Fix ptrace() detach.
+    - sparc: Fix mremap address range validation.
+    - sparc: Fix debugger syscall restart interactions.
+    - sparc32: Don't twiddle PT_DTRACE in exec.
+    - r8169: fix oops in r8169_get_mac_version
+    - SCSI: aha152x: Fix oops on module removal
+    - SCSI: aha152x: fix init suspiciously returned 1, it should follow
+      0/-E convention
+    - sch_htb: remove from event queue in htb_parent_to_leaf()
+    - i2c-piix4: Blacklist two mainboards
+    - SCSI: qla1280: Fix queue depth problem
+    - ipvs: fix oops in backup for fwmark conn templates
+    - USB: airprime: unlock mutex instead of trying to lock it again
+    - rtc: rtc_time_to_tm: use unsigned arithmetic
+    - SCSI: libiscsi regression in 2.6.25: fix nop timer handling
+    - SCSI: libiscsi regression in 2.6.25: fix setting of recv timer
+    - can: Fix can_send() handling on dev_queue_xmit() failures
+    - macvlan: Fix memleak on device removal/crash on module removal
+    - nf_conntrack: padding breaks conntrack hash on ARM
+    - sparc: sunzilog uart order
+    - r8169: fix past rtl_chip_info array size for unknown chipsets
+    - x86: use defconfigs from x86/configs/*
+    - vt: fix canonical input in UTF-8 mode
+    - ata_piix: verify SIDPR access before enabling it
+    - serial: access after NULL check in uart_flush_buffer()
+    - x86: sysfs cpu?/topology is empty in 2.6.25 (32-bit Intel system)
+    - XFRM: AUDIT: Fix flowlabel text format ambibuity.
+  * Update userspace merged HZ alpha fixed version.
+  * Backport netfilter: Move linux/types.h inclusions outside of #ifdef
+    __KERNEL__. (closes: #479899)
+  * types.h: don't expose struct ustat to userspace. (closes: #429064)
+ 
+  [ Bastian Blank ]
+  * Fix ABI changes from: ipvs: fix oops in backup for fwmark conn templates
+
+ -- maximilian attems <maks@debian.org>  Tue, 27 May 2008 11:46:11 +0200
+
+linux-2.6 (2.6.25-3) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.25.3:
+    - sit: Add missing kfree_skb() on pskb_may_pull() failure.
+    - sparc: Fix mmap VA span checking.
+    - CRYPTO: eseqiv: Fix off-by-one encryption
+    - CRYPTO: authenc: Fix async crypto crash in crypto_authenc_genicv()
+    - CRYPTO: cryptd: Correct kzalloc error test
+    - CRYPTO: api: Fix scatterwalk_sg_chain
+    - x86 PCI: call dmi_check_pciprobe()
+    - b43: Fix some TX/RX locking issues
+    - kprobes/arm: fix decoding of arithmetic immediate instructions
+    - kprobes/arm: fix cache flush address for instruction stub
+    - b43: Fix dual-PHY devices
+    - POWERPC: mpc5200: Fix unterminated of_device_id table
+    - reiserfs: Unpack tails on quota files
+    - sched: fix hrtick_start_fair and CPU-Hotplug
+    - vfs: fix permission checking in sys_utimensat
+    - md: fix use after free when removing rdev via sysfs
+    - mm: fix usemap initialization
+    - 2.6.25 regression: powertop says 120K wakeups/sec
+
+  [ maximilian attems ]
+  * Redisable old dup prism54 driver.
+  * Reenable accidentaly disabled SIS190. (closes: #478773)
+  * Add lmkl patch to unbreak HZ userspace aka perl5.10 build fix.
+    (closes: #480130)
+
+  [ Martin Michlmayr ]
+  * [armel] Disable some SCSI drives (that are disabled on arm) so the
+    ramdisk will fit in flash on NSLU2 (closes: #480310).
+
+ -- maximilian attems <maks@debian.org>  Wed, 14 May 2008 11:16:56 +0200
+
+linux-2.6 (2.6.25-2) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Add stable release 2.6.25.1:
+    - Fix dnotify/close race (CVE-2008-1375)
+    - V4L: Fix VIDIOCGAP corruption in ivtv
+    - USB: log an error message when USB enumeration fails
+    - USB: OHCI: fix bug in controller resume
+    - SCSI: qla2xxx: Correct regression in relogin code.
+    - rose: Socket lock was not released before returning to user space
+    - x86, pci: fix off-by-one errors in some pirq warnings
+    - hrtimer: timeout too long when using HRTIMER_CB_SOFTIRQ
+    - RDMA/nes: Fix adapter reset after PXE boot
+    - rtc-pcf8583 build fix
+    - JFFS2: Fix free space leak with in-band cleanmarkers
+    - SELinux: no BUG_ON(!ss_initialized) in selinux_clone_mnt_opts
+    - tehuti: check register size (CVE-2008-1675)
+    - IPSEC: Fix catch-22 with algorithm IDs above 31
+    - alpha: unbreak OSF/1 (a.out) binaries
+    - tehuti: move ioctl perm check closer to function start (CVE-2008-1675)
+    - aio: io_getevents() should return if io_destroy() is invoked
+    - mm: fix possible off-by-one in walk_pte_range()
+    - TCP: Increase the max_burst threshold from 3 to tp->reordering.
+    - ssb: Fix all-ones boardflags
+    - cgroup: fix a race condition in manipulating tsk->cg_list
+    - drivers/net/tehuti: use proper capability check for raw IO access
+    - tg3: 5701 DMA corruption fix
+    - V4L: tea5761: bugzilla #10462: tea5761 autodetection code were broken
+    - b43: Workaround invalid bluetooth settings
+    - b43: Add more btcoexist workarounds
+    - b43: Workaround DMA quirks
+    - dm snapshot: fix chunksize sector conversion
+    - x86: Fix 32-bit x86 MSI-X allocation leakage
+    - RTNETLINK: Fix bogus ASSERT_RTNL warning
+    - net: Fix wrong interpretation of some copy_to_user() results.
+    - dz: test after postfix decrement fails in dz_console_putchar()
+    - RDMA/nes: Free IRQ before killing tasklet
+    - S2io: Fix memory leak during free_tx_buffers
+    - S2io: Version update for memory leak fix during free_tx_buffers
+    - USB: Add HP hs2300 Broadband Wireless Module to sierra.c
+    - V4L: cx88: enable radio GPIO correctly
+    - hrtimer: raise softirq unlocked to avoid circular lock dependency
+    - tcp: tcp_probe buffer overflow and incorrect return value
+  * [ide] Add upstream piix patch for asus eee pc. (closes: #479217)
+
+  [ Christian T. Steigies ]
+  * [m68k] Add patches for 2.6.25.
+  * [m68k] Disable EXT4DEV_FS for now.
+  * [m68k] Enable SCSI_MAC_ESP for mac.
+ 
+  [ Ian Campbell ]
+  * [x86]: Enable Xen guest support in all i386 flavours.
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.25.2:
+    - fix SMP ordering hole in fcntl_setlk() (CVE-2008-1669)
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 08 May 2008 14:46:48 +0200
+
+linux-2.6 (2.6.25-1) unstable; urgency=low
+
+  * New upstream release (closes: #456799, #468440, #475161, #475134, #475441)
+    - Add oabi shim for fstatat64 (closes: #462677)
+
+  [ maximilian attems ]
+  * topconfig set NOZOMI, CRYPTO_SEQIV, CRYPTO_CTR, CRYPTO_GCM, CRYPTO_CCM,
+    CRYPTO_SALSA20, CRYPTO_LZO, CRYPTO_DEV_HIFN_795X, USB_SI470X,
+    USB_STKWEBCAM, VIDEO_PVRUSB2_ONAIR_USB2, VIDEO_PVRUSB2_ONAIR_CREATOR,
+    VIDEO_EM28XX_ALSA, CRYPTO_DEV_HIFN_795X_RNG, PCF8575, TPS65010, RTL8180,
+    ENC28J60, R6040, CAN, NETFILTER_XT_MATCH_OWNER, MAC80211_RC_DEFAULT_PI,
+    NETFILTER_XT_TARGET_RATEEST, NETFILTER_XT_TARGET_TCPOPTSTRIP,
+    NETFILTER_XT_MATCH_IPRANGE, NETFILTER_XT_MATCH_RATEEST, SND_OXYGEN,
+    SND_HIFIER, SND_VIRTUOSO, USB_NET_RNDIS_WLAN, USB_ANNOUNCE_NEW_DEVICES,
+    USB_SERIAL_IUU, NET_CLS_FLOW, INFINIBAND_NES, RTC_DRV_R9701,
+    RTC_DRV_DS1511, MEMSTICK, SENSORS_W83L786NG, SENSORS_ADS7828, IPWIRELESS,
+    RISCOM8, IGB, UTS_NS, IPC_NS, IPV6_ROUTE_INFO, ENCLOSURE_SERVICES,
+    SCSI_ENCLOSURE, SENSORS_ADT7473, SCSI_MVSAS, REALTEK_PHY, RTC_DRV_S35390A,
+    MEMSTICK_JMICRON_38X, IWL4965_HT.
+  * [amd64] Enable CRYPTO_SALSA20_X86_64, EDAC_I3000, EFI, EFI_VARS, I8K,
+    PARAVIRT_GUEST, PARAVIRT, VIRTIO_PCI, VIRTIO_BALLOON, SPARSEMEM_VMEMMAP.
+  * [amd64, i386]: Enable LEDS_CLEVO_MAIL, INPUT_APANEL, ACER_WMI,
+    THINKPAD_ACPI_HOTKEY_POLL, HP_WATCHDOG, THINKPAD_ACPI_VIDEO,
+    VIRTION_CONSOLE, ACPI_WMI, IO_DELAY_0X80.
+  * topconfig disable PARPORT_PC_FIFO due to instabilities.
+    (closes: #366165, #388309, #406056, #407816, #453911)
+  * [amd64, i386]: Enable SONYPI_COMPAT for better sony laptop support.
+  * topconfig: Enable HID_FF for some HID devices. (closes: #441348)
+  * topconfig: Enable IPV6_ROUTER_PREF for multi-homed net. (closes: #449247)
+  * topconfig: Set UTF8 as default encoding. (closes: #417324)
+  * Tighten yaird dependency. (closes: #403171)
+  * Configs general cleanup, centralize USB_NET, disable IRDA_DEBUG.
+  * postinst: Nuke confusing postinst message. (closes: #465512)
+  * [sparc]: Enable SCSI_SCAN_ASYNC.
+  * [i386]: Enable TC1100_WMI, SND_SIS7019, CRYPTO_SALSA20_586.
+  * topconfig: Centralize old IEEE80211 stack options. (closes: #470558)
+  * control.source.in: Newer standard version without changes.
+  * copyright: adapt to latest lintian recommendation.
+  * input: Add 4 additional exports for modular speakup and braille support.
+  * firewire: Add firewire-git.patch for latest firewire tree features.
+  * 686: Set USB_PERSIST for eee pc suspend support. (closes: #468213)
+  * topconfig disable PATA_SIS as sis5513 enabled. (closes: #475525)
+  * [xen]: Support direct load of bzImage under Xen. (closes: #474509)
+    Thanks Ian Campbell <ijc@hellion.org.uk> for patches.
+  * [xen]: Module autoprobing support for frontend drivers.
+  * [arm]: Don't ovverride topconfig SENSORS_W83792D setting.
+    (closes: #477745)
+
+  [ Martin Michlmayr ]
+  * [arm/armel] Add a kernel for Orion based devices, such as the QNAP
+    TS-109/TS-209.
+  * [mips(el)/sb1*] Enable SB1250_MAC (thanks Thomas Bogendoerfer).
+  * [mipsel/r5k-cobalt] Enable DUMMY_CONSOLE since this might
+    fix the debian-installer startup hang on Qube 2700.
+  * [arm/footbridge] Disable KEYS and SECURITY for smaller d-i image.
+  * [arm/footbridge] Build NFS as a module to make the image smaller.
+  * [mips/r5k-ip32] Don't build in NFS.
+  * [mips/r5k-ip32] Use the generic config options for NFS, which will
+    enable NFSv4. (closes: #471007)
+  * [mips/r5k-ip32] Enable R8169, requested by Giuseppe Sacco.
+  * [arm/iop32x] Enable MACH_EM7210. (closes: #473136)
+  * [arm/orion] Add patch to set the MAC address on QNAP TS-109/TS-209
+    (Lennert Buytenhek).
+  * [arm/orion] Add support for Buffalo Linkstation Pro/Live (Byron Bradley).
+  * [arm/orion] Fix hang when Write Allocate is enabled (Lennert Buytenhek).
+  * [arm/orion] Add support for QNAP TS-409 (Sylver Bruneau).
+  * [arm/orion] Add preliminary support for HP mv2120.
+
+  [ Daniel Baumann ]
+  * Added patch from unionfs upstream to export release_open_intent symbol.
+
+  [ Gordon Farquharson ]
+  * [arm/ixp4xx] Use GPIO LED driver as opposed to ixp4xx LED driver.
+  * [arm/ixp4xx] Fix ixp4xx-beeper module so that udev loads it
+    automatically.
+  * [arm/iop32x] Enable support for the GLAN Tank flash chip (M29W400DB).
+  * [arm/iop32x] Do not build the ARTOP PATA driver (PATA_ARTOP).
+  * [arm/iop32x] Register the F75375 device in the GLAN Tank platform code.
+  * Prevent physmap from calling request_module() too early.
+  * [arm/ixp4xx] Fix used_sram_bitmap corruption in qmgr_release_queue().
+
+  [ Aurelien Jarno ]
+  * [mips/mipsel] Enable CONFIG_NO_HZ, CONFIG_HIGH_RES_TIMERS for dynticks
+    and true high-resolution timers on 4kc-malta and 5kc-malta flavours.
+  * [i386, amd64] Set modular VIRTIO, VIRTIO_RING, VIRTIO_BLK, VIRTIO_NET.
+
+  [ Bastian Blank ]
+  * Remove binary only firmwares for:
+    - Broadcom NetXtremeII 10Gb support
+  * Disable now broken drivers:
+    - Broadcom NetXtremeII 10Gb support
+  * Fix broken drivers:
+    - Broadcom NetXtremeII support
+  * [powerpc] Use new wrapper install support.
+  * [s390] Enable DM_MULTIPATH_EMC.
+  * Enable AF_RXRPC, RXKAD, PRINTK_TIME, DEBUG_KERNEL, SCHED_DEBUG,
+    TIMER_STATS, DEBUG_FS.
+  * Disable R3964, USB_GADGET.
+  * [hppa] Enable several filesystems.
+  * Make NLS modular.
+  * [i386/486] Make ext2 modular.
+  * [alpha,amd64,i386] Make ATM modular.
+  * [powerpc/powerpc64] Support PA Semi based plattforms. (closes: #463200)
+  * Follow upstream change for default TCP congestion control.
+    (closes: #477589)
+
+  [ Steve Langasek ]
+  * topconfig: Enable CONFIG_CIFS_WEAK_PW_HASH, required for compatibility
+    with legacy (pre-NTLM) fileservers.
+
+  [ Christian Perrier ]
+  * Debconf template rewrite + mark them as translatable.
+    Thanks to Justin B Rye <jbr@edlug.org.uk> for review.
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 25 Apr 2008 16:27:23 +0200
+
+linux-2.6 (2.6.24-6) unstable; urgency=high
+
+  [ Martin Michlmayr ]
+  * [armel] Fix FTBFS on armel by enabling CONFIG_USB_USBNET=m in
+    armel/config, as it was done for arm/config already.
+  * [armel] Add oabi shim for fstatat64 (Riku Voipio)
+
+  [ Gordon Farquharson ]
+  * [arm/iop32x] Do not build the ARTOP PATA driver (PATA_ARTOP).
+  * [arm/iop32x] Enable MTD_CMDLINE_PARTS.
+
+  [ Kyle McMartin ]
+  * [hppa] fix pdc_console panic at boot (closes: #476292).
+  * [hppa] properly flush user signal tramps
+  * [hppa] special case futex cmpxchg on kernel space NULL (closes: 476285).
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 18 Apr 2008 19:41:30 +0200
+
+linux-2.6 (2.6.24-5) unstable; urgency=low
+
+  [ Gordon Farquharson ]
+  * [arm] Enable asix driver (USB_NET_AX8817X).
+  * [arm] Enable CONFIG_USB_CATC, CONFIG_USB_KAWETH, CONFIG_USB_PEGASUS,
+          and CONFIG_USB_RTL8150.
+  * [arm/ixp4xx] Update Ethernet driver (closes: #471062).
+  * [arm/ixp4xx] Add HSS driver.
+
+  [ Bastian Blank ]
+  * [s390/s390-tape]: Override localversion correctly.
+  * Add stable release 2.6.24.3:
+    - x86_64: CPA, fix cache attribute inconsistency bug
+    - bonding: fix NULL pointer deref in startup processing
+    - POWERPC: Revert chrp_pci_fixup_vt8231_ata devinit to fix libata on pegasos
+    - PCMCIA: Fix station address detection in smc
+    - SCSI: gdth: scan for scsi devices
+    - USB: fix pm counter leak in usblp
+    - S390: Fix futex_atomic_cmpxchg_std inline assembly.
+    - genirq: do not leave interupts enabled on free_irq
+    - hrtimer: catch expired CLOCK_REALTIME timers early
+    - hrtimer: check relative timeouts for overflow
+    - SLUB: Deal with annoying gcc warning on kfree()
+    - hrtimer: fix *rmtp/restarts handling in compat_sys_nanosleep()
+    - hrtimer: fix *rmtp handling in hrtimer_nanosleep()
+    - Disable G5 NAP mode during SMU commands on U3
+    - Be more robust about bad arguments in get_user_pages()
+    - AUDIT: Increase skb->truesize in audit_expand
+    - BLUETOOTH: Add conn add/del workqueues to avoid connection fail.
+    - INET: Prevent out-of-sync truesize on ip_fragment slow path
+    - INET_DIAG: Fix inet_diag_lock_handler error path.
+    - IPCOMP: Fetch nexthdr before ipch is destroyed
+    - IPCOMP: Fix reception of incompressible packets
+    - IPV4: fib: fix route replacement, fib_info is shared
+    - IPV4: fib_trie: apply fixes from fib_hash
+    - PKT_SCHED: ematch: oops from uninitialized variable (resend)
+    - SELinux: Fix double free in selinux_netlbl_sock_setsid()
+    - TC: oops in em_meta
+    - TCP: Fix a bug in strategy_allowed_congestion_control
+    - SCSI: sd: handle bad lba in sense information
+    - Fix dl2k constants
+    - XFS: Fix oops in xfs_file_readdir()
+    - hugetlb: add locking for overcommit sysctl
+    - inotify: fix check for one-shot watches before destroying them
+    - NFS: Fix a potential file corruption issue when writing
+    - NETFILTER: nf_conntrack_tcp: conntrack reopening fix
+    - SPARC/SPARC64: Fix usage of .section .sched.text in assembler code.
+  * Add stable release 2.6.24.4:
+    - S390 futex: let futex_atomic_cmpxchg_pt survive early functional tests.
+    - slab: NUMA slab allocator migration bugfix
+    - relay: fix subbuf_splice_actor() adding too many pages
+    - BLUETOOTH: Fix bugs in previous conn add/del workqueue changes.
+    - SCSI advansys: Fix bug in AdvLoadMicrocode
+    - async_tx: avoid the async xor_zero_sum path when src_cnt > device->max_xor
+    - aio: bad AIO race in aio_complete() leads to process hang
+    - jbd: correctly unescape journal data blocks
+    - jbd2: correctly unescape journal data blocks
+    - zisofs: fix readpage() outside i_size
+    - NETFILTER: nfnetlink_log: fix computation of netlink skb size
+    - NETFILTER: nfnetlink_queue: fix computation of allocated size for netlink skb
+    - NETFILTER: xt_time: fix failure to match on Sundays
+    - sched_nr_migrate wrong mode bits
+    - nfsd: fix oops on access from high-numbered ports
+    - sched: fix race in schedule()
+    - SCSI: mpt fusion: don't oops if NumPhys==0
+    - SCSI: gdth: fix to internal commands execution
+    - SCSI: gdth: bugfix for the at-exit problems
+    - Fix default compose table initialization
+    - x86: don't use P6_NOPs if compiling with CONFIG_X86_GENERIC
+    - SCSI: fix BUG when sum(scatterlist) > bufflen
+    - USB: ehci: handle large bulk URBs correctly (again)
+    - USB: ftdi_sio - really enable EM1010PC
+    - USB: ftdi_sio: Workaround for broken Matrix Orbital serial port
+    - VT notifier fix for VT switch
+    - eCryptfs: make ecryptfs_prepare_write decrypt the page
+    - ioat: fix 'ack' handling, driver must ensure that 'ack' is zero
+    - macb: Fix speed setting
+    - x86: move out tick_nohz_stop_sched_tick() call from the loop
+    - atmel_spi: fix clock polarity
+    - b43: Backport bcm4311 fix
+    - arcmsr: fix IRQs disabled warning spew
+    - e1000e: Fix CRC stripping in hardware context bug
+    - PCI x86: always use conf1 to access config space below 256 bytes
+    - moduleparam: fix alpha, ia64 and ppc64 compile failures
+    - pata_hpt*, pata_serverworks: fix UDMA masking
+    - SCSI advansys: fix overrun_buf aligned bug
+    - NETFILTER: fix ebtable targets return
+    - NETFILTER: Fix incorrect use of skb_make_writable
+    - NETFILTER: nfnetlink_queue: fix SKB_LINEAR_ASSERT when mangling packet data
+    - spi: pxa2xx_spi clock polarity fix
+    - ufs: fix parenthesisation in ufs_set_fs_state()
+    - hugetlb: ensure we do not reference a surplus page after handing it to buddy
+    - file capabilities: simplify signal check
+    - futex: runtime enable pi and robust functionality
+    - futex: fix init order
+    - ARM pxa: fix clock lookup to find specific device clocks
+    - x86: replace LOCK_PREFIX in futex.h
+    - SCSI aic94xx: fix REQ_TASK_ABORT and REQ_DEVICE_RESET
+    - SCSI gdth: don't call pci_free_consistent under spinlock
+    - SCSI ips: fix data buffer accessors conversion bug
+    - usb-storage: don't access beyond the end of the sg buffer
+    - fuse: fix permission checking
+    - CRYPTO xts: Use proper alignment
+    - CRYPTO xcbc: Fix crash with IPsec
+    - SCSI ips: handle scsi_add_host() failure, and other err cleanups
+    - x86: adjust enable_NMI_through_LVT0()
+    - drivers: fix dma_get_required_mask
+    - iov_iter_advance() fix
+    - x86: Clear DF before calling signal handler (closes: #469058)
+    - ub: fix up the conversion to sg_init_table()
+    - MIPS: Mark all but i8259 interrupts as no-probe.
+    - IRQ_NOPROBE helper functions
+    - IPCOMP: Disable BH on output when using shared tfm
+    - IPCONFIG: The kernel gets no IP from some DHCP servers
+    - IPV4: Remove IP_TOS setting privilege checks.
+    - IPV6: dst_entry leak in ip4ip6_err.
+    - IPV6: Fix IPsec datagram fragmentation
+    - NET: Fix race in dev_close(). (Bug 9750)
+    - NET: Messed multicast lists after dev_mc_sync/unsync (closes: #466719)
+    - NIU: Bump driver version and release date.
+    - NIU: Fix BMAC alternate MAC address indexing.
+    - NIU: More BMAC alt MAC address fixes.
+    - TCP: Improve ipv4 established hash function.
+    - SPARC: Fix link errors with gcc-4.3
+    - SPARC64: Loosen checks in exception table handling.
+
+  [ Martin Michlmayr ]
+  * [mips/r4k-ip22] Enable BLK_DEV_LOOP and BLK_DEV_CRYPTOLOOP.
+  * [mips/r5k-ip32] Enable BLK_DEV_LOOP and BLK_DEV_CRYPTOLOOP.
+  * [mips/r4k-ip22] Enable PPP, PPPOE and SLIP.
+  * [mips/r5k-ip32] Enable PPP, PPPOE and SLIP.
+  * Don't check the section size when we're cross compiling.
+
+  [ dann frazier ]
+  * Remove cap_task_kill (closes: #463669)
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 27 Mar 2008 12:40:16 +0100
+
+linux-2.6 (2.6.24-4) unstable; urgency=low
+
+  * Add stable release 2.6.24.1:
+    - splice: missing user pointer access verification (CVE-2008-0009/10)
+    - drm: the drm really should call pci_set_master..
+    - Driver core: Revert "Fix Firmware class name collision"
+    - fix writev regression: pan hanging unkillable and un-straceable
+    - sched: fix high wake up latencies with FAIR_USER_SCHED
+    - sched: let +nice tasks have smaller impact
+    - b43: Reject new firmware early
+    - selinux: fix labeling of /proc/net inodes
+    - b43legacy: fix DMA slot resource leakage
+    - b43legacy: drop packets we are not able to encrypt
+    - b43legacy: fix suspend/resume
+    - b43legacy: fix PIO crash
+    - b43: Fix dma-slot resource leakage
+    - b43: Drop packets we are not able to encrypt
+    - b43: Fix suspend/resume
+    - sky2: fix for WOL on some devices
+    - sky2: restore multicast addresses after recovery
+    - x86: restore correct module name for apm
+    - ACPI: update ACPI blacklist
+    - PCI: Fix fakephp deadlock
+    - sys_remap_file_pages: fix ->vm_file accounting
+    - lockdep: annotate epoll
+    - forcedeth: mac address mcp77/79
+    - USB: Fix usb_serial_driver structure for Kobil cardreader driver.
+    - USB: handle idVendor of 0x0000
+    - USB: fix usbtest halt check on big endian systems
+    - USB: storage: Add unusual_dev for HP r707
+    - USB: Variant of the Dell Wireless 5520 driver
+    - USB: use GFP_NOIO in reset path
+    - USB: ftdi driver - add support for optical probe device
+    - USB: pl2303: add support for RATOC REX-USB60F
+    - USB: remove duplicate entry in Option driver and Pl2303 driver for Huawei modem
+    - USB: sierra: add support for Onda H600/Zte MF330 datacard to USB Driver for Sierra Wireless
+    - USB: ftdi-sio: Patch to add vendor/device id for ATK_16IC CCD
+    - USB: ftdi_sio - enabling multiple ELV devices, adding EM1010PC
+    - USB: sierra driver - add devices
+    - USB: Adding YC Cable USB Serial device to pl2303
+    - USB: Sierra - Add support for Aircard 881U
+    - USB: add support for 4348:5523 WinChipHead USB->RS 232 adapter
+    - USB: CP2101 New Device IDs
+    - usb gadget: fix fsl_usb2_udc potential OOPS
+    - USB: keyspan: Fix oops
+    - vm audit: add VM_DONTEXPAND to mmap for drivers that need it (CVE-2008-0007)
+    - slab: fix bootstrap on memoryless node
+    - DVB: cx23885: add missing subsystem ID for Hauppauge HVR1800 Retail
+
+  [ Martin Michlmayr ]
+  * [arm/ixp4xx] Enble ATA_OVER_ETH, requested by Nicola Fankhauser.
+  * [arm/iop32x] Enble ATA_OVER_ETH.
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.24.2:
+    - splice: fix user pointer access in get_iovec_page_array()
+    (CVE-2008-0600, closes: #464945)
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 11 Feb 2008 12:29:23 +0100
+
+linux-2.6 (2.6.24-3) unstable; urgency=low
+
+  [ maximilian attems ]
+  * [scsi]: hptiop: add more adapter models and fixes.
+  * [amd64, i386]: Reenable ACPI_PROCFS_POWER. (closes: #463253)
+
+  [ Gordon Farquharson ]
+  * [arm/ixp4xx] Update Ethernet driver so that it can be loaded by udev
+    automatically.
+
+  [ Martin Michlmayr ]
+  * [mips/r5k-ip32] Enable R8169, requested by Giuseppe Sacco. (Closes:
+    #463705)
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 06 Feb 2008 13:05:18 +0100
+
+linux-2.6 (2.6.24-2) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Fix broken merge of flavour specific settings.
+    - [i386]: Recommends are fixed.
+    - [s390/s390-tape]: Built as small image again.
+
+  [ maximilian attems ]
+  * Disable old dup prism54 driver.
+  * Stable queue: slab: fix bootstrap on memoryless node.
+
+  [ Aurelien Jarno ]
+  * [arm]: Remove options that are present in topconfig from config.versatile.
+  * [arm]: Turn off B44 since it fails to compile on armel.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 31 Jan 2008 17:37:00 +0100
+
+linux-2.6 (2.6.24-1) unstable; urgency=low
+
+  * New upstream release
+    (closes: #461639)
+
+  [ Martin Michlmayr ]
+  * Don't build the AdvanSys driver on ARM since it fails to compile.
+  * Disable ATH5K on ARM since it fails to compile.
+  * [arm/iop32x] Activate DMADEVICES.
+  * [mips/mipsel] Turn off CONFIG_NIU since it fails to compile.
+
+  [ maximilian attems ]
+  * [amd64, i386]: Enable ACPI_SYSFS_POWER and disable ACPI_PROCFS_POWER.
+  * [fw] Sync with latest git-ieee1394 for sbp2 fixes.
+
+  [ Bastian Blank ]
+  * Kill reboot warning from old templates.
+  * Fix strange default value for link_in_boot. (closes: #425056)
+  * [powerpc/powerpc]: Enable Efika support.
+  * [powerpc]: Lower mkvmlinuz to the state of a bootloader.
+  * [powerpc]: Remove ppc and m68k include dirs from headers.
+  * Remove versions from relations fullfilled in stable.
+
+  [ Aurelien Jarno ]
+  * [arm]: Update versatile config.
+
+  [ Gordon Farquharson ]
+  * [arm/ixp4xx] Change the ixp4xx network driver from the driver
+    written by Christian Hohnstaedt to the driver written by Krzysztof
+    Hasala which has partially been accepted upstream.
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 26 Jan 2008 11:35:11 +0100
+
+linux-2.6 (2.6.24~rc8-1~experimental.1) experimental; urgency=low
+
+  * New upstream release
+    (closes: #454776, #458142, #457992, #458899, #426124, #459732, #455566).
+
+  [ maximilian attems ]
+  * New upstream release, rebase dfsg stuff plus drivers-atm.patch,
+    scripts-kconfig-reportoldconfig.patch.
+  * [amd64, powerpc] Set HIGH_RES_TIMERS and NO_HZ (closes: #458312).
+  * topconfig set NETFILTER_XT_MATCH_TIME, NET_ACT_NAT, KSDAZZLE_DONGLE,
+    KS959_DONGLE, NET_9P_FD, IP1000, VETH, IXGBE, NIU, TEHUTI, LIBERTAS_CS,
+    LIBERTAS_SDIO, RT2X00, SENSORS_ADT7470, SENSORS_I5K_AMB, SENSORS_F71882FG,
+    SENSORS_FSCHMD, SENSORS_IBMPEX, CRYPTO_XTS, CRYPTO_SEED, CRYPTO_AUTHENC,
+    DVB_S5H1409, DVB_TUNER_MT2131, INET_LRO, MMC_RICOH_MMC, MMC_SPI,
+    RTC_DRV_DS1374, VIDEO_CX23885, VIDEO_FB_IVTV, USB_SERIAL_CH341,
+    SCSI_SRP_TGT_ATTRS, ADM8211, MTD_INTEL_VR_NOR, MTD_ALAUDA,
+    MTD_ONENAND_2X_PROGRAM, MTD_ONENAND_SIM, DM_MULTIPATH_HP, FUJITSU_LAPTOP,
+    QUOTA_NETLINK_INTERFACE, DM_UEVENT, SCSI_FC_TGT_ATTRS, SSB, BT_HCIUART_LL,
+    BT_HCIBTSDIO, MTD_OOPS, CGROUPS, MDIO_BITBANG, HIDRAW, P54, SDIO_UART,
+    NETCONSOLE_DYNAMIC, SECURITY_FILE_CAPABILITIES.
+  * Disable smbfs in topconfig, not supported upstream, use cifs.
+  * Disable bcm43xx, deprecated by upstream. Enable B43 (needs v4 firmware)
+    and B43LEGACY (needs v3 firmware).
+  * [i386]: Set SND_SC6000, EDAC_I3000, EDAC_I5000, SBC7240_WDT,
+    NET_9P_VIRTIO, FB_GEODE_LX, VIRTIO_NET, VIRTIO_BLK.
+  * Set USB_EHCI_TT_NEWSCHED fills USB 2.0 bandwith better. (closes: #454797)
+  * postrm: Nuke initramfs sha1sum on linux-image removal. (closes: #420245)
+  * Unifiy BSD_PROCESS_ACCT settings across configs. (closes: #455892)
+  * Reenable DABUSB as firmware is BSD licensed.
+  * [hppa]: Disable OCFS2, due build trouble.
+  * topconfig: Enable delay accounting TASKSTATS. (closes: #433204)
+  * Add git-ieee1394.patch for latest firewire fixes.
+  * [i386] Enable PARAVIRT_GUEST. (closes: #457562)
+  * [amd64, i386] Enable CPU_IDLE for software-controlled idle pm.
+  * [amd64, i386] Enable IT8712F_WDT, FB_EFI.
+  * Add and enable at76.patch wireless driver for Atmel USB cards.
+  * Add and enable ath5k.patch wireless driver for Atheros 5xxx cards.
+  * Unify VLAN_8021Q setting, needed also on r5k-cobalt.
+  * Double max SERIAL_8250_NR_UARTS to 32. (closes: #440807)
+  * topconfig: Enable AUDITSYSCALL for better SELinux support.
+
+  [ Bastian Blank ]
+  * [amd64, i386]: Set kernel architecture to x86.
+  * [i386]: Remove linux-libc-dev arch override.
+
+  [ Martin Michlmayr ]
+  * [mipsel/r5k-cobalt] Enable the new LEDs driver for Cobalt RaQ.
+  * [arm/iop32x] Re-enable USB_NET and PPP, thanks Daniel Hess (closes:
+    #456416).
+  * [arm/iop32x] Enable BSD_PROCESS_ACCT and POSIX_MQUEUE (closes: #455892).
+  * [mips] Disable AdvanSys SCSI since it doesn't compile.
+  * [arm/ixp4xx] Enable IP_ADVANCED_ROUTER, requested by Oliver Urbann.
+  * [arm/iop32x] Enable IP_ADVANCED_ROUTER.
+
+  [ dann frazier ]
+  * [ia64]: Enable BLK_CPQ_DA
+
+  [ Frederik Schüler ]
+  * Add GFS2 locking symbols export patch.
+
+  [ Aurelien Jarno ]
+  * [mips/mipsel] Remove QEMU flavour, as the Malta platform is now correctly
+    emulated in QEMU.
+
+  [ Christian T. Steigies ]
+  * [m68k]: Update patches from linux-m68k CVS
+  * [m68k]: Enable building for bvme6000, mvme147, and mvme16x again
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 18 Jan 2008 12:23:26 +0100
+
+linux-2.6 (2.6.23-2) unstable; urgency=low
+
+  [ dann frazier ]
+  * [ia64]: Enable BLK_CPQ_DA
+
+  [ Gordon Farquharson ]
+  * [arm/iop32x] Use the new i2c framework to load rtc-rs5c372 for the
+    GLAN Tank.
+
+  [ Frederik Schüler ]
+  * Export gfs2 locking symbols required to build gfs1 module.
+
+  [ maximilian attems ]
+  * [ppc] Reenable PMAC_BACKLIGHT.
+  * [sparc] Add davem get_cpu() SunFire boot patch. (closes: #440720)
+  * Add stable release 2.6.23.10:
+    - IPV4: Remove bogus ifdef mess in arp_process
+    - KVM: x86 emulator: Use emulator_write_emulated and not emulator_write_std
+    - KVM: SVM: Fix FPU leak while emulating clts
+    - revert "dpt_i2o: convert to SCSI hotplug model"
+    - KVM: x86 emulator: fix access registers for instructions with ModR/M
+      byte and Mod = 3
+    - KVM: x86 emulator: invd instruction
+    - KVM: SVM: Intercept the 'invd' and 'wbinvd' instructions
+    - KVM: Skip pio instruction when it is emulated, not executed
+    - KVM: VMX: Force vm86 mode if setting flags during real mode
+    - forcedeth: new mcp79 pci ids
+    - forcedeth boot delay fix
+    - PFKEY: Sending an SADB_GET responds with an SADB_GET
+    - rd: fix data corruption on memory pressure.
+    - create /sys/.../power when CONFIG_PM is set
+    - USB: fix up EHCI startup synchronization
+    - RXRPC: Add missing select on CRYPTO
+    - KVM: VMX: Reset mmu context when entering real mode
+    - NET: random : secure_tcp_sequence_number should not assume
+      CONFIG_KTIME_SCALAR
+    - NET: Corrects a bug in ip_rt_acct_read()
+    - NETFILTER: Fix NULL pointer dereference in nf_nat_move_storage()
+    - netfilter: Fix kernel panic with REDIRECT target.
+    - IPV6: Restore IPv6 when MTU is big enough
+    - UNIX: EOF on non-blocking SOCK_SEQPACKET
+    - x86 setup: add a near jump to serialize %cr0 on 386/486
+    - Fix synchronize_irq races with IRQ handler
+    - CRYPTO api: Fix potential race in crypto_remove_spawn
+    - TCP: Fix TCP header misalignment
+    - tmpfs: restore missing clear_highpage (CVE-2007-6417)
+    - TCP: MTUprobe: fix potential sk_send_head corruption
+    - NETFILTER: fix forgotten module release in xt_CONNMARK and xt_CONNSECMARK
+    - fb_ddc: fix DDC lines quirk
+    - VLAN: Fix nested VLAN transmit bug
+    - I4L: fix isdn_ioctl memory overrun vulnerability (CVE-2007-6151)
+    - isdn: avoid copying overly-long strings
+    - nf_nat: fix memset error
+    - esp_scsi: fix reset cleanup spinlock recursion
+    - libertas: properly account for queue commands
+    - KVM: Fix hang on uniprocessor
+    - USB: make the microtek driver and HAL cooperate
+    - TEXTSEARCH: Do not allow zero length patterns in the textsearch
+      infrastructure
+    - XFRM: Fix leak of expired xfrm_states
+    - NETFILTER: xt_TCPMSS: remove network triggerable WARN_ON
+    - BRIDGE: Lost call to br_fdb_fini() in br_init() error path
+    - DECNET: dn_nl_deladdr() almost always returns no error
+    - BRIDGE: Properly dereference the br_should_route_hook
+    - PKT_SCHED: Check subqueue status before calling hard_start_xmit
+    - Freezer: Fix APM emulation breakage
+    - XFS: Make xfsbufd threads freezable
+    - TCP: Problem bug with sysctl_tcp_congestion_control function
+    - wait_task_stopped(): pass correct exit_code to wait_noreap_copyout()
+    - KVM: x86 emulator: implement 'movnti mem, reg'
+    - TCP: illinois: Incorrect beta usage
+    - futex: fix for futex_wait signal stack corruption
+    - libata: kill spurious NCQ completion detection
+    - hrtimers: avoid overflow for large relative timeouts (CVE-2007-5966)
+    - Input: ALPS - add support for model found in Dell Vostro 1400
+      (closes: #448818)
+    - PNP: increase the maximum number of resources
+    - sched: some proc entries are missed in sched_domain sys_ctl debug code
+    - ATM: [he] initialize lock and tasklet earlier
+  * Add stable release 2.6.23.11:
+    - BRIDGE: Section fix.
+    - Revert "Freezer: Fix APM emulation breakage"
+  * Backport fix for CVE-2007-5938
+    - iwlwifi: fix possible NULL dereference in iwl_set_rate()
+  * Add stable release 2.6.23.12:
+    - Revert "PNP: increase the maximum number of resources"
+  * VM/Security: add security hook to do_brk (CVE-2007-6434)
+  * security: protect from stack expantion into low vm addresses
+  * [hppa]: Disable OCFS2, due build trouble.
+
+  [ Aurelien Jarno ]
+  * [arm/versatile] Disable ACENIC and MYRI10GE as they are useless on this
+    platform.
+  * Add em28xx-dv100.patch to add support for Pinnacle Dazzle DVC 100.
+
+  [ Bastian Blank ]
+  * Fix abi change in 2.6.23.10.
+
+ -- maximilian attems <maks@debian.org>  Fri, 21 Dec 2007 11:47:55 +0100
+
+linux-2.6 (2.6.23-1) unstable; urgency=low
+
+  * New upstream release (closes: #447682).
+    - r8169: fix confusion between hardware and IP header alignment
+      (closes: #452069).
+
+  [ maximilian attems ]
+  * [ppc] Enable for powerpc config the ams (Apple Motion Sensor).
+    (closes: #426210)
+  * Add to linux-doc the missing toplevel text files.
+    (closes: #360876, #438697)
+  * Set CONFIG_BLK_DEV_IO_TRACE for blktrace(8) support. (closes: #418442)
+  * ipw2200: Enable IPW2200_RADIOTAP and IPW2200_PROMISCUOUS for optional
+    rtap interface. (closes: #432555)
+  * Enable in topconfig NF_CT_PROTO_UDPLITE, NETFILTER_XT_TARGET_TRACE,
+    NETFILTER_XT_MATCH_CONNLIMIT, NETFILTER_XT_MATCH_U32, SENSORS_ABITUGURU3,
+    SENSORS_LM93, SENSORS_DME1737, SENSORS_THMC50, DVB_USB_AF9005,
+    DVB_USB_AF9005_REMOTE, CRC7, I2C_TAOS_EVM, DS1682, SENSORS_TSL2550,
+    SPI_LM70_LLP, SPI_TLE62X0, W1_SLAVE_DS2760, TUNER_TEA5761, NET_9P,
+    DM_MULTIPATH_RDAC, NET_SCH_RR, EEPROM_93CX6, PPPOL2TP, CRYPTO_HW, UIO,
+    UIO_CIF, SND_CS5530, RTL8187, PC300TOO, TCG_TIS, SCSI_SAS_ATA,
+    PATA_MARVELL.
+  * [i386] Enable lguest.
+  * [amd64, i386] Enable VIDEO_OUTPUT_CONTROL, NETDEVICES_MULTIQUEUE.
+  * linux-image bugscript add cmdline.
+  * [amd64, i386, ia64]: Enable DMIID, ACPI_PROC_EVENT.
+  * Enable TCG_TPM various userspace accesses it. (closes: #439020)
+  * Add and enable IWLWIFI.
+  * Add git-ieee1394.patch for latest firewire fixes.
+  * [ipv6] Enable IPV6_MULTIPLE_TABLES, IPV6_SUBTREES. (closes: #441226)
+  * Add and enable E1000E.
+  * Add stable release 2.6.23.1:
+    - libata: sata_mv: more S/G fixes
+
+  [ Martin Michlmayr ]
+  * [mips] Add a bcm1480 PCI build fix.
+  * Update Riku Voipio's Fintek F75375/SP driver to the latest version.
+  * [arm/iop32x] Set the fan on Thecus N2100 to full speed (Riku Voipio).
+  * [arm/iop32x] Remove the IPv6 and filesystem info from the config file
+    so we will get the values from the main config file.  This should
+    enable NFSv4 and ip6tables support requested by Wouter Verhelst.
+  * [arm/iop32x] Remove even more options to receive the default options.
+  * [arm/ixp4xx] Remove a lot of options to receive the default options.
+  * [mips/r4k-ip22] Remove a lot of options to receive the default options.
+    This will enable ISCSI requested by Martin Zobel-Helas.
+  * [mips/r5k-ip32] Remove a lot of options to receive the default options.
+    This will enable PCI Ethernet devices requested by Giuseppe Sacco.
+  * [mipsel/r5k-cobalt] Remove a lot of options to receive the default
+    options.
+  * [mipsel/r5k-cobalt] Enable the modern Cobalt LEDs driver.
+  * [arm/iop32x] Enable Intel IOP ADMA support.
+  * [arm] Mark BCM43XX as broken on ARM.
+  * [mips/r4k-ip22] Disable EARLY PRINTK because it breaks serial console.
+  * [mips] Add some IP22 fixes from Thomas Bogendoerfer:
+    - Fix broken EISA interrupt setup by switching to generic i8259
+    - Fix broken eeprom access by using __raw_readl/__raw_writel
+
+  [ Bastian Blank ]
+  * Add unpriviledged only Xen support.
+  * [i386] Drop k7 images.
+  * Drop maybe IETF document. (closes: #423040)
+  * Drop drivers because of binary only firmwares:
+    - DABUSB driver
+    - COPS LocalTalk PC support
+    - Digi Intl. RightSwitch SE-X support
+    - 3Com 3C359 Token Link Velocity XL adapter support
+    - SMC ISA/MCA adapter support
+    - EMI 6|2m USB Audio interface support
+    - EMI 2|6 USB Audio interface support
+    - Computone IntelliPort Plus serial support
+  * Remove binary only firmwares for:
+    - Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support
+    - Broadcom Tigon3 support
+    - USB Keyspan USA-xxx Serial Driver
+    - Korg 1212 IO
+    - ESS Allegro/Maestro3
+    - Yamaha YMF724/740/744/754
+    - Technotrend/Hauppauge Nova-USB devices
+    - YAM driver for AX.25
+    - MyriCOM Gigabit Ethernet support
+    - PTI Qlogic, ISP Driver
+    - Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x
+    - Madge Ambassador (Collage PCI 155 Server)
+    - PCA-200E support
+    - SBA-200E support
+    - Broadcom NetXtremeII support
+  * Disable now broken drivers:
+    - Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support
+    - USB Keyspan USA-xxx Serial Driver
+    - Technotrend/Hauppauge Nova-USB devices
+    - YAM driver for AX.25
+    - MyriCOM Gigabit Ethernet support
+    - PTI Qlogic, ISP Driver
+    - Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x
+    - Madge Ambassador (Collage PCI 155 Server)
+    - PCA-200E support
+    - SBA-200E support
+    - Broadcom NetXtremeII support
+  * Add -common to common header package names.
+  * Drop provides from common header packages.
+  * Update plain image type.
+  * Put only a config dump into linux-support.
+
+  [ Aurelien Jarno ]
+  * [mips, mipsel] Add a 64-bit image (5kc-malta) for the MIPS Malta board.
+    (closes: #435677)
+    [sparc] Enable r8169 module on sparc64 and sparc64-smp flavours (closes:
+    #431977)
+
+  [ Frederik Schüler ]
+  * Move all PATA options into the global config file, exept PATA_ARTOP
+    (arm/ixp4xx) and PATA_MPC52xx (powerpc).
+  * Move new global options into the global config file
+  * Clean up new amd64 options
+
+  [ dann frazier ]
+  * [ia64] Re-enable various unintentionally disabled config options
+  * Enable hugetlbfs on i386, amd64, sparc64 and powerpc64. Closes: #450939
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.23.2:
+    - BLOCK: Fix bad sharing of tag busy list on queues with shared tag maps
+    - fix tmpfs BUG and AOP_WRITEPAGE_ACTIVATE
+    - Fix compat futex hangs. (closes: #433187)
+    - sched: keep utime/stime monotonic
+    - fix the softlockup watchdog to actually work
+    - splice: fix double kunmap() in vmsplice copy path
+    - writeback: don't propagate AOP_WRITEPAGE_ACTIVATE
+    - SLUB: Fix memory leak by not reusing cpu_slab
+    - HOWTO: update ja_JP/HOWTO with latest changes
+    - fix param_sysfs_builtin name length check
+    - param_sysfs_builtin memchr argument fix
+    - Remove broken ptrace() special-case code from file mapping
+    - locks: fix possible infinite loop in posix deadlock detection
+    - lockdep: fix mismatched lockdep_depth/curr_chain_hash
+  * Add stable release 2.6.23.3:
+    - revert "x86_64: allocate sparsemem memmap above 4G"
+    - x86: fix TSC clock source calibration error
+    - x86 setup: sizeof() is unsigned, unbreak comparisons
+    - x86 setup: handle boot loaders which set up the stack incorrectly
+    - x86: fix global_flush_tlb() bug
+    - xfs: eagerly remove vmap mappings to avoid upsetting Xen
+    - xen: fix incorrect vcpu_register_vcpu_info hypercall argument
+    - xen: deal with stale cr3 values when unpinning pagetables
+    - xen: add batch completion callbacks
+    - UML - kill subprocesses on exit
+    - UML - stop using libc asm/user.h
+    - UML - Fix kernel vs libc symbols clash
+    - UML - Stop using libc asm/page.h
+    - POWERPC: Make sure to of_node_get() the result of pci_device_to_OF_node()
+    - POWERPC: Fix handling of stfiwx math emulation
+    - MIPS: R1: Fix hazard barriers to make kernels work on R2 also.
+    - MIPS: MT: Fix bug in multithreaded kernels.
+    - Fix sparc64 MAP_FIXED handling of framebuffer mmaps
+    - Fix sparc64 niagara optimized RAID xor asm
+  * Add stable release 2.6.23.4:
+    - mac80211: make ieee802_11_parse_elems return void
+    - mac80211: only honor IW_SCAN_THIS_ESSID in STA, IBSS, and AP modes
+    - mac80211: honor IW_SCAN_THIS_ESSID in siwscan ioctl
+    - mac80211: store SSID in sta_bss_list
+    - mac80211: store channel info in sta_bss_list
+    - mac80211: reorder association debug output
+    - ieee80211: fix TKIP QoS bug
+    - NETFILTER: nf_conntrack_tcp: fix connection reopening
+    - Fix netlink timeouts.
+    - Fix crypto_alloc_comp() error checking.
+    - Fix SET_VLAN_INGRESS_PRIORITY_CMD error return.
+    - Fix VLAN address syncing.
+    - Fix endianness bug in U32 classifier.
+    - Fix TEQL oops.
+    - Fix error returns in sys_socketpair()
+    - softmac: fix wext MLME request reason code endianness
+    - Fix kernel_accept() return handling.
+    - TCP: Fix size calculation in sk_stream_alloc_pskb
+    - Fix SKB_WITH_OVERHEAD calculations.
+    - Fix 9P protocol build
+    - Fix advertised packet scheduler timer resolution
+    - Add get_unaligned to ieee80211_get_radiotap_len
+    - mac80211: Improve sanity checks on injected packets
+    - mac80211: filter locally-originated multicast frames
+  * Add stable release 2.6.23.5:
+    - zd1211rw, fix oops when ejecting install media
+    - rtl8187: Fix more frag bit checking, rts duration calc
+    - ipw2100: send WEXT scan events
+    - zd1201: avoid null ptr access of skb->dev
+    - sky2: fix power settings on Yukon XL
+    - sky2: ethtool register reserved area blackout
+    - sky2: status ring race fix
+    - skge: XM PHY handling fixes
+    - Fix L2TP oopses.
+    - TG3: Fix performance regression on 5705.
+    - forcedeth: add MCP77 device IDs
+    - forcedeth msi bugfix
+    - ehea: 64K page kernel support fix
+    - libertas: fix endianness breakage
+    - libertas: more endianness breakage
+  * Add stable release 2.6.23.6:
+    - ACPI: suspend: Wrong order of GPE restore.
+    - ACPI: sleep: Fix GPE suspend cleanup
+    - libata: backport ATA_FLAG_NO_SRST and ATA_FLAG_ASSUME_ATA, part 2
+    - libata: backport ATA_FLAG_NO_SRST and ATA_FLAG_ASSUME_ATA
+    - libata: add HTS542525K9SA00 to NCQ blacklist
+    - radeon: set the address to access the GART table on the CPU side correctly
+    - Char: moxa, fix and optimise empty timer
+    - Char: rocket, fix dynamic_dev tty
+    - hptiop: avoid buffer overflow when returning sense data
+    - ide: Fix cs5535 driver accessing beyond array boundary
+    - ide: Fix siimage driver accessing beyond array boundary
+    - ide: Add ide_get_paired_drive() helper
+    - ide: fix serverworks.c UDMA regression
+    - i4l: fix random freezes with AVM B1 drivers
+    - i4l: Fix random hard freeze with AVM c4 card
+    - ALSA: hda-codec - Add array terminator for dmic in STAC codec
+    - USB: usbserial - fix potential deadlock between write() and IRQ
+    - USB: add URB_FREE_BUFFER to permissible flags
+    - USB: mutual exclusion for EHCI init and port resets
+    - usb-gadget-ether: prevent oops caused by error interrupt race
+    - USB: remove USB_QUIRK_NO_AUTOSUSPEND
+    - MSI: Use correct data offset for 32-bit MSI in read_msi_msg()
+    - md: raid5: fix clearing of biofill operations
+    - md: fix an unsigned compare to allow creation of bitmaps with v1.0 metadata
+    - dm: fix thaw_bdev
+    - dm delay: fix status
+    - libata: sync NCQ blacklist with upstream
+    - ALSA: hdsp - Fix zero division
+    - ALSA: emu10k1 - Fix memory corruption
+    - ALSA: Fix build error without CONFIG_HAS_DMA
+    - ALSA: fix selector unit bug affecting some USB speakerphones
+    - ALSA: hda-codec - Avoid zero NID in line_out_pins[] of STAC codecs
+    - IB/mthca: Use mmiowb() to avoid firmware commands getting jumbled up
+    - IB/uverbs: Fix checking of userspace object ownership
+    - hwmon/lm87: Disable VID when it should be
+    - hwmon/lm87: Fix a division by zero
+    - hwmon/w83627hf: Don't assume bank 0
+    - hwmon/w83627hf: Fix setting fan min right after driver load
+    - i915: fix vbl swap allocation size.
+    - POWERPC: Fix platinumfb framebuffer
+  * Add stable release 2.6.23.7:
+    - NFS: Fix a writeback race...
+    - ocfs2: fix write() performance regression
+    - minixfs: limit minixfs printks on corrupted dir i_size (CVE-2006-6058)
+  * Add stable release 2.6.23.8:
+    - wait_task_stopped: Check p->exit_state instead of TASK_TRACED (CVE-2007-5500)
+    - TCP: Make sure write_queue_from does not begin with NULL ptr (CVE-2007-5501)
+  * Add stable release 2.6.23.9:
+    - ipw2200: batch non-user-requested scan result notifications
+    - USB: Nikon D40X unusual_devs entry
+    - USB: unusual_devs modification for Nikon D200
+    - softlockup: use cpu_clock() instead of sched_clock()
+    - softlockup watchdog fixes and cleanups
+    - x86: fix freeze in x86_64 RTC update code in time_64.c
+    - ntp: fix typo that makes sync_cmos_clock erratic
+    - x86: return correct error code from child_rip in x86_64 entry.S
+    - x86: NX bit handling in change_page_attr()
+    - x86: mark read_crX() asm code as volatile
+    - x86: fix off-by-one in find_next_zero_string
+    - i386: avoid temporarily inconsistent pte-s
+    - libcrc32c: keep intermediate crc state in cpu order
+    - geode: Fix not inplace encryption
+    - Fix divide-by-zero in the 2.6.23 scheduler code
+    - ACPI: VIDEO: Adjust current level to closest available one.
+    - libata: sata_sis: use correct S/G table size
+    - sata_sis: fix SCR read breakage
+    - reiserfs: don't drop PG_dirty when releasing sub-page-sized dirty file
+    - x86: disable preemption in delay_tsc()
+    - dmaengine: fix broken device refcounting
+    - nfsd4: recheck for secure ports in fh_verify
+    - knfsd: fix spurious EINVAL errors on first access of new filesystem
+    - raid5: fix unending write sequence
+    - oProfile: oops when profile_pc() returns ~0LU
+    - drivers/video/ps3fb: fix memset size error
+    - i2c/eeprom: Hide Sony Vaio serial numbers
+    - i2c/eeprom: Recognize VGN as a valid Sony Vaio name prefix
+    - i2c-pasemi: Fix NACK detection
+
+ -- maximilian attems <maks@debian.org>  Fri, 30 Nov 2007 11:40:09 +0100
+
+linux-2.6 (2.6.22-6) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * [mips] Add IP22 (SGI Indy) patches from Thomas Bogendoerfer:
+    - Disable EARLY PRINTK because it breaks serial.
+    - fix wrong argument order.
+    - wrong check for second HPC.  Closes: #448488
+
+  [ maximilian attems ]
+  * Add stable release 2.6.22.11 - minus ipv6 abi breaker:
+    - libertas: fix endianness breakage
+    - libertas: more endianness breakage
+    - Fix ROSE module unload oops.
+    - Add get_unaligned to ieee80211_get_radiotap_len
+    - Fix ipv6 redirect processing, leads to TAHI failures.
+    - i915: fix vbl swap allocation size.
+    - Fix ESP host instance numbering.
+    - Fix TCP MD5 on big-endian.
+    - Fix zero length socket write() semantics.
+    - Fix sys_ipc() SEMCTL on sparc64.
+    - Fix TCP initial sequence number selection.
+    - lockdep: fix mismatched lockdep_depth/curr_chain_hash
+    - V4L: ivtv: fix udma yuv bug
+    - Fix TCP's ->fastpath_cnt_hit handling.
+    - hwmon/lm87: Fix a division by zero
+    - hwmon/lm87: Disable VID when it should be
+    - hwmon/w83627hf: Fix setting fan min right after driver load
+    - hwmon/w83627hf: Don't assume bank 0
+    - netdrvr: natsemi: Fix device removal bug
+    - Fix ieee80211 handling of bogus hdrlength field
+    - mac80211: filter locally-originated multicast frames
+    - POWERPC: Fix handling of stfiwx math emulation
+    - dm9601: Fix receive MTU
+    - firewire: fix unloading of fw-ohci while devices are attached
+    - Fix cls_u32 error return handling.
+    - ACPI: disable lower idle C-states across suspend/resume
+  * Add stable release 2.6.22.12-rc1:
+    - genirq: cleanup mismerge artifact
+    - genirq: suppress resend of level interrupts
+    - genirq: mark io_apic level interrupts to avoid resend
+    - IB/uverbs: Fix checking of userspace object ownership
+    - minixfs: limit minixfs printks on corrupted dir i_size (CVE-2006-6058)
+    - param_sysfs_builtin memchr argument fix
+    - x86: fix global_flush_tlb() bug
+    - dm snapshot: fix invalidation deadlock
+    - Revert "x86_64: allocate sparsemem memmap above 4G"
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.2.0.5.
+    - Ignore symbols from never to be merged patch.
+
+ -- maximilian attems <maks@debian.org>  Sun,  4 Nov 2007 17:35:51 +0100
+
+linux-2.6 (2.6.22-5) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Add stable release 2.6.22.6:
+    - USB: allow retry on descriptor fetch errors
+    - PCI: lets kill the 'PCI hidden behind bridge' message
+    - Netfilter: Missing Kbuild entry for netfilter
+    - Fix soft-fp underflow handling.
+    - SPARC64: Fix sparc64 task stack traces.
+    - TCP: Do not autobind ports for TCP sockets
+    - DCCP: Fix DCCP GFP_KERNEL allocation in atomic context
+    - NET: Share correct feature code between bridging and bonding
+    - SNAP: Fix SNAP protocol header accesses.
+    - NET: Fix missing rcu unlock in __sock_create()
+    - IPv6: Invalid semicolon after if statement
+    - TCP: Fix TCP rate-halving on bidirectional flows.
+    - TCP: Fix TCP handling of SACK in bidirectional flows.
+    - uml: fix previous request size limit fix
+    - usb: add PRODUCT, TYPE to usb-interface events
+    - PPP: Fix PPP buffer sizing.
+    - ocfs2: Fix bad source start calculation during kernel writes
+    - signalfd: fix interaction with posix-timers
+    - signalfd: make it group-wide, fix posix-timers scheduling
+    - USB: fix DoS in pwc USB video driver
+    - sky2: don't clear phy power bits
+    - PCI: disable MSI on RS690
+    - PCI: disable MSI on RD580
+    - PCI: disable MSI on RX790
+    - IPV6: Fix kernel panic while send SCTP data with IP fragments
+    - i386: fix lazy mode vmalloc synchronization for paravirt
+  * Set abi to 3.
+  * Add stable release 2.6.22.7: (CVE-2007-4573)
+    - x86_64: Zero extend all registers after ptrace in 32bit entry path.
+  * Add stable release 2.6.22.8: (CVE-2007-4571)
+    - Convert snd-page-alloc proc file to use seq_file
+  * Add stable release 2.6.22.9:
+    - 3w-9xxx: Fix dma mask setting
+    - Fix pktgen src_mac handling.
+    - nfs: fix oops re sysctls and V4 support
+    - DVB: get_dvb_firmware: update script for new location of tda10046 firmware
+    - afs: mntput called before dput
+    - disable sys_timerfd()
+    - Fix "Fix DAC960 driver on machines which don't support 64-bit DMA"
+    - futex_compat: fix list traversal bugs
+    - MTD: Initialise s_flags in get_sb_mtd_aux()
+    - Fix sparc64 v100 platform booting.
+    - Fix IPV6 DAD handling
+    - ext34: ensure do_split leaves enough free space in both blocks
+    - dir_index: error out instead of BUG on corrupt dx dirs
+    - Fix oops in vlan and bridging code
+    - V4L: ivtv: fix VIDIOC_S_FBUF: new OSD values were never set
+    - crypto: blkcipher_get_spot() handling of buffer at end of page
+    - Fix datagram recvmsg NULL iov handling regression.
+    - Handle snd_una in tcp_cwnd_down()
+    - Fix TCP DSACK cwnd handling
+    - JFFS2: fix write deadlock regression
+    - hwmon: End of I/O region off-by-one
+    - Fix debug regression in video/pwc
+    - splice: fix direct splice error handling
+    - Fix race with shared tag queue maps
+    - Fix ipv6 source address handling.
+    - POWERPC: Flush registers to proper task context
+    - bcm43xx: Fix cancellation of work queue crashes
+    - Fix DAC960 driver on machines which don't support 64-bit DMA
+    - DVB: get_dvb_firmware: update script for new location of sp8870 firmware
+    - USB: fix linked list insertion bugfix for usb core
+    - Correctly close old nfsd/lockd sockets.
+    - Fix IPSEC AH4 options handling
+    - setpgid(child) fails if the child was forked by sub-thread
+    - sigqueue_free: fix the race with collect_signal()
+    - Fix decnet device address listing.
+    - Fix inet_diag OOPS.
+    - Leases can be hidden by flocks
+    - kconfig: oldconfig shall not set symbols if it does not need to
+    - MTD: Makefile fix for mtdsuper
+    - firewire: fw-ohci: ignore failure of pci_set_power_state
+      (fix suspend regression)
+    - ieee1394: ohci1394: fix initialization if built non-modular
+    - Fix device address listing for ipv4.
+    - Fix tc_ematch kbuild
+    - V4L: cx88: Avoid a NULL pointer dereference during mpeg_open()
+    - DVB: b2c2-flexcop: fix Airstar HD5000 tuning regression
+    - fix realtek phy id in forcedeth
+    - rpc: fix garbage in printk in svc_tcp_accept()
+    - Fix IPV6 append OOPS.
+    - Fix ipv6 double-sock-release with MSG_CONFIRM
+    - ACPI: Validate XSDT, use RSDT if XSDT fails
+  * Update vserver patch to 2.2.0.4.
+  * Add stable release 2.6.22.10:
+    - i386: Use global flag to disable broken local apic timer on AMD CPUs.
+    - Fix timer_stats printout of events/sec
+    - libata: update drive blacklists
+    - i2c-algo-bit: Read block data bugfix
+    - scsi_transport_spi: fix domain validation failure from incorrect width
+      setting
+    - Fix SMP poweroff hangs
+    - Fix ppp_mppe kernel stack usage.
+    - sky2: reduce impact of watchdog timer
+    - sky2: fix VLAN receive processing
+    - sky2: fix transmit state on resume
+    - SELinux: clear parent death signal on SID transitions
+    - NLM: Fix a circular lock dependency in lockd
+    - NLM: Fix a memory leak in nlmsvc_testlock
+
+  [ Martin Michlmayr ]
+  * [mips] Add a fix so qemu NE2000 will work again.
+  * [mipsel/r5k-cobalt] Enable MTD.
+  * [mips] Backport "Fix CONFIG_BUILD_ELF64 kernels with symbols in
+    CKSEG0" to fix crash on boot on IP32 (SGI O2).  Closes: #444104.
+
+  [ Steve Langasek ]
+  * Set CONFIG_MATHEMU=y on alpha, which is required for proper fp math on
+    at least ev4-ev56 systems.  Closes: #411813.
+  * linux-image packages need to depend on a newer version of coreutils,
+    because of the use of readlink -q -m inherited from kernel-package.
+    Closes: #413311.
+
+  [ Bastian Blank ]
+  * Fix tainted check in bug scripts.
+
+  [ dann frazier ]
+  * [ia64] Re-enable various unintentionally disabled config options
+
+ -- Maximilian Attems <maks@debian.org>  Thu, 11 Oct 2007 13:31:38 +0000
+
+linux-2.6 (2.6.22-4) unstable; urgency=low
+
+  [ dann frazier ]
+  * [hppa] Use generic compat_sys_getdents (closes: #431773)
+
+  [ Martin Michlmayr ]
+  * [powerpc] Fix PS/2 keyboard detection on Pegasos (closes: #435378).
+
+  [ Emanuele Rocca ]
+  * [sparc] Add patch to fix PCI config space accesses on sun4u.
+  * [sparc] Disable CONFIG_SCSI_SCAN_ASYNC.
+
+  [ maximilian attems ]
+  * Add stable release 2.6.22.2:
+    - usb-serial: Fix edgeport regression on non-EPiC devices
+    - Missing header include in ipt_iprange.h
+    - drivers/video/macmodes.c:mac_find_mode() mustn't be __devinit
+    - Fix ipv6 tunnel endianness bug.
+    - aacraid: fix security hole
+    - USB: cdc-acm: fix sysfs attribute registration bug
+    - USB: fix warning caused by autosuspend counter going negative
+    - Fix sparc32 memset()
+    - Fix leak on /proc/lockdep_stats
+    - Fix leaks on /proc/{*/sched, sched_debug, timer_list, timer_stats}
+    - futex: pass nr_wake2 to futex_wake_op
+    - md: handle writes to broken raid10 arrays gracefully
+    - forcedeth bug fix: cicada phy
+    - forcedeth bug fix: vitesse phy
+    - forcedeth bug fix: realtek phy
+    - ACPI: dock: fix opps after dock driver fails to initialize
+    - pcmcia: give socket time to power down
+    - drm/i915: Fix i965 secured batchbuffer usage (CVE-2007-3851)
+    - Fix console write locking in sparc drivers.
+    - Sparc64 bootup assembler bug
+    - IPV6: /proc/net/anycast6 unbalanced inet6_dev refcnt
+    - make timerfd return a u64 and fix the __put_user
+    - Fix error queue socket lookup in ipv6
+    - Input: lifebook - fix an oops on Panasonic CF-18
+    - readahead: MIN_RA_PAGES/MAX_RA_PAGES macros
+    - V4L: Add check for valid control ID to v4l2_ctrl_next
+    - V4L: ivtv: fix broken VBI output support
+    - V4L: ivtv: fix DMA timeout when capturing VBI + another stream
+    - V4L: ivtv: Add locking to ensure stream setup is atomic
+    - V4L: wm8775/wm8739: Fix memory leak when unloading module
+    - do not limit locked memory when RLIMIT_MEMLOCK is RLIM_INFINITY
+    - Include serial_reg.h with userspace headers (closes: #433755)
+    - TCP FRTO retransmit bug fix
+    - Fix rfkill IRQ flags.
+    - nfsd: fix possible read-ahead cache and export table corruption
+    - nfsd: fix possible oops on re-insertion of rpcsec_gss modules
+    - jbd commit: fix transaction dropping
+    - jbd2 commit: fix transaction dropping
+    - softmac: Fix ESSID problem
+    - uml: limit request size on COWed devices
+    - UML: exports for hostfs
+    - splice: fix double page unlock
+    - cfq-iosched: fix async queue behaviour
+    - cr_backlight_probe() allocates too little storage for struct cr_panel
+    - sx: switch subven and subid values
+    - hugetlb: fix race in alloc_fresh_huge_page()
+    - KVM: SVM: Reliably detect if SVM was disabled by BIOS
+    - dm io: fix another panic on large request
+    - md: raid10: fix use-after-free of bio
+    - fs: 9p/conv.c error path fix
+    - Fix sparc32 udelay() rounding errors.
+    - sony-laptop: fix bug in event handling
+    - eCryptfs: ecryptfs_setattr() bugfix
+    - Hangup TTY before releasing rfcomm_dev
+    - dm io: fix panic on large request
+    - dm raid1: fix status
+    - dm snapshot: permit invalid activation
+    - "ext4_ext_put_in_cache" uses __u32 to receive physical block number
+    - destroy_workqueue() can livelock
+    - USB: fix for ftdi_sio quirk handling
+    - Fix TC deadlock.
+    - Fix IPCOMP crashes.
+    - gen estimator timer unload race
+    - Netfilter: Fix logging regression
+    - Fix user struct leakage with locked IPC shem segment
+    - Fix reported task file values in sense data
+    - gen estimator deadlock fix
+    - Netpoll leak
+    - dm: disable barriers
+    - firewire: fw-sbp2: set correct maximum payload (fixes CardBus adapters)
+    - fw-ohci: fix "scheduling while atomic"
+    - firewire: fix memory leak of fw_request instances
+    - ieee1394: revert "sbp2: enforce 32bit DMA mapping"
+    - libata: add FUJITSU MHV2080BH to NCQ blacklist
+    - i386: HPET, check if the counter works
+    - CPU online file permission
+    - acpi-cpufreq: Proper ReadModifyWrite of PERF_CTL MSR
+    - Keep rfcomm_dev on the list until it is freed
+    - SCTP scope_id handling fix
+    - Fix ipv6 link down handling.
+    - Fix TCP IPV6 MD5 bug.
+    - sysfs: release mutex when kmalloc() failed in sysfs_open_file().
+    - nf_conntrack: don't track locally generated special ICMP error
+  * Bump abi due to firewire, ivtv and xrfm changes.
+  * Add stable release 2.6.22.3:
+    - fix oops in __audit_signal_info()
+    - direct-io: fix error-path crashes
+    - powerpc: Fix size check for hugetlbfs
+    - stifb: detect cards in double buffer mode more reliably
+    - pata_atiixp: add SB700 PCI ID
+    - PPC: Revert "[POWERPC] Add 'mdio' to bus scan id list for platforms
+      with QE UEC"
+    - random: fix bound check ordering (CVE-2007-3105)
+    - softmac: Fix deadlock of wx_set_essid with assoc work
+    - PPC: Revert "[POWERPC] Don't complain if size-cells == 0 in prom_parse()"
+    - ata_piix: update map 10b for ich8m
+    - CPUFREQ: ondemand: fix tickless accounting and software coordination bug
+    - CPUFREQ: ondemand: add a check to avoid negative load calculation
+  * Add stable release 2.6.22.4:
+    - Reset current->pdeath_signal on SUID binary execution (CVE-2007-3848)
+  * Add stable release 2.6.22.5:
+    - x86_64: Check for .cfi_rel_offset in CFI probe
+    - x86_64: Change PMDS invocation to single macro
+    - i386: Handle P6s without performance counters in nmi watchdog
+    - revert "x86, serial: convert legacy COM ports to platform devices"
+    - ACPICA: Fixed possible corruption of global GPE list
+    - ACPICA: Clear reserved fields for incoming ACPI 1.0 FADTs
+    - i386: Fix double fault handler
+    - JFFS2 locking regression fix.
+    - r8169: avoid needless NAPI poll scheduling
+    - Linux 2.6.22.5
+    - AVR32: Fix atomic_add_unless() and atomic_sub_unless()
+    - i386: allow debuggers to access the vsyscall page with compat vDSO
+    - hwmon: (smsc47m1) restore missing name attribute
+    - hwmon: fix w83781d temp sensor type setting
+    - Hibernation: do not try to mark invalid PFNs as nosave
+    - sky2: restore workarounds for lost interrupts
+    - sky2: carrier management
+    - sky2: check for more work before leaving NAPI
+    - sky2: check drop truncated packets
+    - forcedeth: fix random hang in forcedeth driver when using netconsole
+    - libata: add ATI SB700 device IDs to AHCI driver
+
+  [ dann frazier ]
+  * [ia64] Restore config cleanup now that its safe to break the ABI
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.2.0.3.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 30 Aug 2007 20:19:44 +0200
+
+linux-2.6 (2.6.22-3) unstable; urgency=low
+
+  [ dann frazier ]
+  * [ia64] Config cleanup in 2.6.22-2 broke the ABI; revert most of it
+    for now (everything but the efivars and sym53c8xx modules)
+
+  [ Martin Michlmayr ]
+  * [mipsel/r5k-cobalt] Fix a typo in the config file.
+  * [mipsel/4kc-malta] Update the config file, thanks Aurelien Jarno.
+  * [mipsel] Add patch from Yoichi Yuasa to fix IDE on Cobalt.
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 29 Jul 2007 13:47:38 +0200
+
+linux-2.6 (2.6.22-2) unstable; urgency=low
+
+  [ Steve Langasek ]
+  * [alpha] request_irq-retval.patch: capture the return value of all
+    request_irq() calls in sys_titan.c to suppress the warning (and
+    build failure with -Werror); failures still aren't being handled, but
+    there's nothing that needs to be done -- or nothing that can be done
+    -- if these requests fail anyway.
+
+  [ Christian T. Steigies ]
+  * Add module.lds to kernel headers (closes: #396220)
+  * Enable INPUT_UINPUT on mac
+  * Add 2.6.22 patches from linux-m68k CVS
+
+  [ maximilian attems ]
+  * Add stable release 2.6.22.1:
+    - nf_conntrack_h323: add checking of out-of-range on choices' index values
+      (CVE-2007-3642)
+
+  [ dann frazier ]
+  * [ia64] Re-enable various config options which were unintentionally
+    disabled somewhere between 2.6.21 and 2.6.22
+  * [ia64] Re-enable vserver flavour - this was somehow lost when 2.6.22
+    was merged from trunk to the sid branch
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.2.0.3-rc1.
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 23 Jul 2007 09:38:01 +0200
+
+linux-2.6 (2.6.22-1) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Drop asfs options.
+  * Drop linux-libc-headers references.
+  * Update vserver patch to 2.2.0-rc5.
+
+  [ maximilian attems ]
+  * Fullfils policy 3.7.2.2.
+  * Add Sempron to the k7 image description (closes: #384737)
+    Thanks Robert Millan <rmh@aybabtu.com>.
+  * [powerpc] Enable CONFIG_ADB_PMU_LED.
+  * [hppa] Disable a bunch of topconfig enabled fb devices. Thanks Frank
+    Lichtenheld <djpig@debian.org> for build fix.
+
+  [ Christian T. Steigies ]
+  * Add module.lds to kernel headers
+  * Enable INPUT_UINPUT on mac
+  * Add 2.6.22 patches from linux-m68k CVS
+
+  [ dann frazier ]
+  * Enable vserver flavour for ia64 (closes: #423232)
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 15 Jul 2007 15:03:40 +0200
+
+linux-2.6 (2.6.22~rc5-1~experimental.1) experimental; urgency=low
+
+  [ Bastian Blank ]
+  * [powerpc]: Disable prep.
+  * [powerpc]: Disable apm emulation.
+  * Drop inactive members from Uploaders.
+
+  [ maximilian attems ]
+  * Cleanup configs of old unused variables.
+  * Enable TCP_CONG_YEAH, TCP_CONG_ILLINOIS, NF_CONNTRACK_SANE, DM_DELAY,
+    GIGASET_M101, SATA_INIC162X, VIDEO_IVTV, USB_ZR364XX, INFINIBAND_CXGB3,
+    MLX4_INFINIBAND, SPI_AT25, MFD_SM501, DVB_USB_M920X, DVB_USB_GL861,
+    DVB_USB_AU6610, DVB_USB_OPERA1, SENSORS_AD7418, SENSORS_ADM1029,
+    SENSORS_F75375S, SENSORS_CORETEMP, SENSORS_MAX6650, SENSORS_APPLESMC,
+    I2C_SIMTEC, I2C_TINY_USB, SC92031, LIBERTAS_USB, RFKILL, RFKILL_INPUT,
+    MTD_UBI, SND_USB_CAIAQ, SND_USB_CAIAQ_INPUT, USB_BERRY_CHARGE,
+    RTC_DRV_MAX6900, SUNRPC_BIND34, SND_PORTMAN2X4, FB_VT8623, FUSION_LAN,
+    DISPLAY_SUPPORT, FB_ARK, FB_SM501
+    and disable SCSI_ESP_CORE, SPI_SPIDEV, CRYPT_CRYPTD, SYSV68_PARTITION,
+    MOUSE_PS2_TOUCHKIT, INPUT_POLLDEV in topconfig.
+  * [amd64, i386]: Take care of the renaming acpi-ibm to thinkpad-acpi.
+    Enable KINGSUN_DONGLE, AF_RXRPC, RXKAD, MTD_NAND_PLATFORM, BLINK, PHANTOM,
+    BACKLIGHT_PROGEAR, FB_HECUBA, FB_LE80578, FB_CARILLO_RANCH.
+    Disable OSS_OBSOLETE.
+  * Enable WLAN_PRE80211 and WLAN_80211 on all archs with NET_RADIO enabled.
+  * Fix RTC_INTF_{DEV,SYSFS,PROC}=y where enabled modular.
+  * Enable new wirless stack mac80211 and improved wireless conf api.
+  * Enable new USB Touchscreen Driver on all configs with touchscreens.
+  * Enable the newly added crypto algorythm: fcrypt, pcbc and camellia.
+  * Unify CONFIG_TR to toplevel config, also enable new drivers 3C359
+    and SMCTR.
+  * Enable the moved USB tablets config options where wacom is enabled.
+  * [i386] Enable driver for Crystalfontz 128x64 2-color LCD.
+  * [amd64] Enable KS0108 LCD controller.
+  * Enable the new firewire stack labeled to be more simple and robust.
+  * [i386] Enable VMI paravirtualized interface.
+  * [powerpc] Enable fb for IBM GXT4500P adaptor.
+  * [amd64] Enable timerstats too.
+
+  [ Martin Michlmayr ]
+  * mipsel/r5k-cobalt: Use the new RTC system.
+
+  [ dann frazier ]
+  * Add Xen licensing info to the copyright file. (closes: #368912)
+
+  [ Gordon Farquharson ]
+  * arm: Mark CHELSIO_T3, NETXEN_NIC, BCM43XX, VIDEO_BT848,
+    DVB_B2C2_FLEXCOP, and DVB_BUDGET as broken on ARM.
+  * arm/ixp4xx: Add support for the new generic I2C GPIO driver on the
+    NSLU2 and the NAS100D. Thanks to Michael-Luke Jones and Rod Whitby.
+  * arm/ixp4xx: Update Artop PATA support patch for the NAS 100d.
+
+  [ Christian T. Steigies ]
+  * m68k: Disable already included patches (611, 618, 630)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 19 Jun 2007 17:49:52 +0200
+
+linux-2.6 (2.6.21-6) unstable; urgency=low
+
+  * Add stable release 2.6.21.6:
+    - nf_conntrack_h323: add checking of out-of-range on choices' index values
+      (CVE-2007-3642)
+  * Update vserver patch to 2.2.0.
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 10 Jul 2007 18:36:17 +0200
+
+linux-2.6 (2.6.21-5) unstable; urgency=low
+
+  [ Christian T. Steigies ]
+  * [m68k] Add atari isa and scsi fixes
+
+  [ maximilian attems ]
+  * Add stable release 2.6.21.4:
+    - cpuset: prevent information leak in cpuset_tasks_read (CVE-2007-2875)
+    - random: fix error in entropy extraction (CVE-2007-2453 1 of 2)
+    - random: fix seeding with zero entropy (CVE-2007-2453 2 of 2)
+    - NETFILTER: {ip, nf}_conntrack_sctp: fix remotely triggerable NULL ptr
+      dereference (CVE-2007-2876)
+  * Add stable release 2.6.21.5:
+    - acpi: fix potential call to a freed memory section.
+    - USB: set the correct Interrupt interval in usb_bulk_msg
+    - i386: Fix K8/core2 oprofile on multiple CPUs
+    - ntfs_init_locked_inode(): fix array indexing
+    - ALSA: wm8750 typo fix
+    - neofb: Fix pseudo_palette array overrun in neofb_setcolreg
+    - e1000: disable polling before registering netdevice
+    - timer statistics: fix race
+    - x86: fix oprofile double free
+    - ALSA: usb-audio: explicitly match Logitech QuickCam
+    - zd1211rw: Add AL2230S RF support
+    - IPV4: Correct rp_filter help text.
+    - Fix AF_UNIX OOPS
+    - ICMP: Fix icmp_errors_use_inbound_ifaddr sysctl
+    - NET: Fix BMSR_100{HALF,FULL}2 defines in linux/mii.h
+    - SPARC64: Fix _PAGE_EXEC_4U check in sun4u I-TLB miss handler.
+    - SPARC64: Don't be picky about virtual-dma values on sun4v.
+    - SPARC64: Fix two bugs wrt. kernel 4MB TSB.
+    - cciss: fix pci_driver.shutdown while device is still active
+    - fix compat console unimap regression
+    - timer stats: speedups
+    - SPARC: Linux always started with 9600 8N1
+    - pci_ids: update patch for Intel ICH9M
+    - PCI: quirk disable MSI on via vt3351
+    - UML - Improve host PTRACE_SYSEMU check
+    - NET: parse ip:port strings correctly in in4_pton
+    - Char: cyclades, fix deadlock
+    - IPSEC: Fix panic when using inter address familiy IPsec on loopback.
+    - TCP: Use default 32768-61000 outgoing port range in all cases.
+    - TG3: Fix link problem on Dell's onboard 5906.
+    - fuse: fix mknod of regular file
+    - md: Avoid overflow in raid0 calculation with large components.
+    - md: Don't write more than is required of the last page of a bitmap
+    - make freezeable workqueues singlethread
+    - tty: fix leakage of -ERESTARTSYS to userland
+    - V4L/DVB (5593): Budget-ci: Fix tuning for TDM 1316 (160..200 MHz)
+    - Input: i8042 - fix AUX port detection with some chips
+    - SCSI: aacraid: Correct sa platform support.
+      (Was: [Bug 8469] Bad EIP value on pentium3 SMP kernel-2.6.21.1)
+    - BLUETOOTH: Fix locking in hci_sock_dev_event().
+    - hpt366: don't check enablebits for HPT36x
+    - ieee1394: eth1394: bring back a parent device
+    - NET: Fix race condition about network device name allocation.
+    - ALSA: hda-intel - Probe additional slots only if necessary
+    - ALSA: hda-intel - Fix detection of audio codec on Toshiba A100
+    - ahci: disable 64bit dma on sb600
+    - i386: HPET, check if the counter works
+    - Ignore bogus ACPI info for offline CPUs
+    - NOHZ: Rate limit the local softirq pending warning output
+    - Prevent going idle with softirq pending
+    - Work around Dell E520 BIOS reboot bug
+    - NET: "wrong timeout value" in sk_wait_data() v2
+    - IPV6 ROUTE: No longer handle ::/0 specially.
+    - x86_64: allocate sparsemem memmap above 4G
+  * Bump ABI to 2.
+
+  [ Bastian Blank ]
+  * Back out ABI fixing changes.
+  * Update vserver patch to 2.2.0-rc3.
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 22 Jun 2007 12:39:47 +0200
+
+linux-2.6 (2.6.21-4) unstable; urgency=low
+
+  * [powerpc] Fix mkvmlinuz support.
+  * [s390] Add exception handler for diagnose 224.
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 26 May 2007 14:08:44 +0200
+
+linux-2.6 (2.6.21-3) unstable; urgency=low
+
+  [ Gordon Farquharson ]
+  * arm/ixp4xx: Add patch to set NSLU2 timer frequency.
+
+  [ maximilian attems ]
+  * sparc64: enable USB_SERIAL. (closes: #412740)
+  * Apply stable 2.6.21.1.
+  * Add stable release 2.6.21.2:
+    - slob: fix page order calculation on not 4KB page
+    - libata-sff: Undo bug introduced with pci_iomap changes
+    - kbuild: fixdep segfault on pathological string-o-death
+    - IPMI: fix SI address space settings
+    - IPV6: Reverse sense of promisc tests in ip6_mc_input
+    - iop: fix iop_getttimeoffset
+    - iop13xx: fix i/o address translation
+    - arm: fix handling of svc mode undefined instructions
+    - CPUFREQ: powernow-k7: fix MHz rounding issue with perflib
+    - CPUFREQ: Support rev H AMD64s in powernow-k8
+    - CPUFREQ: Correct revision mask for powernow-k8
+    - JFS: Fix race waking up jfsIO kernel thread
+    - IPV6: Send ICMPv6 error on scope violations.
+    - SPARC64: Add missing cpus_empty() check in hypervisor xcall handling.
+    - SPARC64: Fix recursion in PROM tree building.
+    - SERIAL SUNHV: Add an ID string.
+    - SPARC64: Bump PROMINTR_MAX to 32.
+    - SPARC64: Be more resiliant with PCI I/O space regs.
+    - oom: fix constraint deadlock
+    - fix for bugzilla 8426: massive slowdown on SCSI CD/DVD drive connected to
+      mptspi driver
+    - x86_64 : Fix vgettimeofday()
+    - IPV6: Fix slab corruption running ip6sic
+    - IPSEC: Check validity of direction in xfrm_policy_byid
+    - CRYPTO: api: Read module pointer before freeing algorithm
+    - NET_SCHED: prio qdisc boundary condition
+    - reiserfs: suppress lockdep warning
+    - USB HID: hiddev - fix race between hiddev_send_event() and
+      hiddev_release()
+    - NETFILTER: {ip,nf}_nat_proto_gre: do not modify/corrupt GREv0 packets
+      through NAT
+    - fix leaky resv_huge_pages when cpuset is in use
+    - ACPI: Fix 2.6.21 boot regression on P4/HT
+    - TG3: Fix TSO bugs.
+    - TG3: Remove reset during MAC address changes.
+    - TG3: Update version and reldate.
+    - BNX2: Fix TSO problem with small MSS.
+    - BNX2: Block MII access when ifdown.
+    - BNX2: Save PCI state during suspend.
+    - BNX2: Update version and reldate.
+    - sis900: Allocate rx replacement buffer before rx operation
+    - knfsd: Avoid use of unitialised variables on error path when nfs exports.
+    - knfsd: rpc: fix server-side wrapping of krb5i replies
+    - md: Avoid a possibility that a read error can wrongly propagate through
+    - md/raid1 to a filesystem.
+    - fat: fix VFAT compat ioctls on 64-bit systems
+    - NETFILTER: {ip,nf}_conntrack: fix use-after-free in helper destroy
+      callback invocation
+    - ppp: Fix ppp_deflate issues with recent zlib_inflate changes
+    - NETPOLL: Fix TX queue overflow in trapped mode.
+    - NETPOLL: Remove CONFIG_NETPOLL_RX
+    - cxacru: Fix infinite loop when trying to cancel polling task
+    - TCP: zero out rx_opt in tcp_disconnect()
+    - ipv6: track device renames in snmp6
+    - skge: default WOL should be magic only (rev2)
+    - skge: allow WOL except for known broken chips
+    - sky2: allow 88E8056
+    - sky2: 88e8071 support not ready
+    - skge: crash on shutdown/suspend
+    - sky2: fix oops on shutdown
+    - udf: decrement correct link count in udf_rmdir
+    - ALSA: hda-codec - Fix resume of STAC92xx codecs
+    - sata_via: add missing PM hooks
+    - driver-core: don't free devt_attr till the device is released
+    - pci-quirks: disable MSI on RS400-200 and RS480
+    - highres/dyntick: prevent xtime lock contention
+    - clocksource: fix resume logic
+    - smc911x: fix compilation breakage wjen debug is on
+    - SCTP: Fix sctp_getsockopt_local_addrs_old() to use local storage.
+    - SCTP: Correctly copy addresses in sctp_copy_laddrs
+    - SCTP: Prevent OOPS if hmac modules didn't load
+    - IPV6: Do no rely on skb->dst before it is assigned.
+    - IPV6 ROUTE: Assign rt6i_idev for ip6_{prohibit,blk_hole}_entry.
+
+  [ Christian T. Steigies ]
+  * m68k: enable ATARI_SCSI and ATARI_ROM_ISA
+
+  [ Bastian Blank ]
+  * Fix linux/version.h in linux-libc-dev.
+  * Make it possible to specifiy special CFLAGS.
+  * [hppa] Reenable.
+  * [hppa] Workaround hppa64 failure.
+  * [hppa] Fix debugging in lws syscalls.
+  * Fix abi change.
+  * Add stable release 2.6.21.3:
+    - [PATCH] GEODE-AES: Allow in-place operations [CVE-2007-2451]
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 25 May 2007 10:57:48 +0200
+
+linux-2.6 (2.6.21-2) unstable; urgency=low
+
+  [ Christian T. Steigies ]
+  * m68k: fix atari scc patch
+  * m68k: install compressed vmlinuz images so the post-inst script can find it
+
+  [ Steve Langasek ]
+  * [alpha] isa-mapping-support.patch: add isa_page_to_bus and
+    isa_bus_to_virt defines to complement the existing isa_virt_to_bus
+    define; untested, but these should all be straightforward on alpha and
+    defining them is certainly a better option for getting user feedback
+    than disabling the affected drivers.
+
+  [ Bastian Blank ]
+  * [powerpc] Readd mkvmlinuz support. (closes: #419033)
+  * [sparc]: Disable sparc32 image.
+  * [hppa]: Temporary disable all images.
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 18 May 2007 19:52:36 +0200
+
+linux-2.6 (2.6.21-1) unstable; urgency=low
+
+  [ maximilian attems ]
+  * New upstream release see http://kernelnewbies.org/Linux_2_6_21
+    (closes: #423874)
+  * Disable CONFIG_IP_ROUTE_MULTIPATH_CACHED in topconfig.
+  * Enable CONFIG_IP6_NF_MATCH_MH, CONFIG_CHELSIO_T3, CONFIG_USB_NET_DM9601,
+    CONFIG_NETFILTER_XT_TARGET_TCPMSS, CONFIG_RTC_DRV_CMOS,
+    CONFIG_ASUS_LAPTOP, CONFIG_SONY_LAPTOP, CONFIG_DVB_TUNER_QT1010,
+    CONFIG_USB_IOWARRIOR, CONFIG_ATL1 in topconfig.
+  * [i386] Enable CONFIG_ACPI_BAY, CONFIG_X86_LONGHAUL, CONFIG_BLK_DEV_DELKIN,
+    CONFIG_BLK_DEV_IT8213, CONFIG_BLK_DEV_TC86C001, CONFIG_INPUT_ATLAS_BTNS,
+    CONFIG_SENSORS_ADM1029, CONFIG_FB_SVGALIB, CONFIG_FB_S3,
+    CONFIG_USB_KC2190, CONFIG_KS0108.
+  * Add stable release 2.6.21.1:
+    - IPV4: Fix OOPS'er added to netlink fib.
+    - IPV6: Fix for RT0 header ipv6 change.
+  * [i386] Enable CONFIG_NO_HZ, CONFIG_HIGH_RES_TIMERS for dynticks and true
+    high-resolution timers.
+  * [i386] Enable CONFIG_TIMER_STATS to collect stats about kernel/userspace
+    timer aka power usage (see powertop). (closes: #423694)
+  * [i386] Disable obsolete CONFIG_IRQBALANCE due to bad timer behaviour.
+
+  [ Martin Michlmayr ]
+  * Add armel (arm with EABI) support.  Thanks, Lennert Buytenhek and
+    Joey Hess.  (closes: #410853)
+  * Mark CHELSIO_T3 as broken on ARM.
+  * Take arch/arm/tools/mach-types from current git to fix build failure
+    because MACH_TYPE_EP80219 is not defined.
+  * mips/sb1: Don't build CONFIG_ATA into the kernel.
+  * mips/sb1: Unset CONFIG_USB_{KBD,MOUSE} since the generic HID is used.
+  * arm/iop32x: Don't build CONFIG_ATA into the kernel.
+  * arm/ixp4xx: Enable more SATA drivers.
+  * arm/ixp4xx: Enable PATA_ARTOP which is needed by the nas100d.
+  * arm/ixp4xx: Set CONFIG_USB_EHCI_TT_NEWSCHED.
+  * mips/4kc-malta: Add an image for the MIPS Malta board.  Thanks,
+    Aurelien Jarno. (closes: #421377)
+
+  [ Emanuele Rocca ]
+  * sparc: Enable CONFIG_SCSI_QLOGIC_1280. (closes: #423177)
+
+  [ Christian T. Steigies ]
+  * Add m68k patches for 2.6.21
+  * Add type: plain to [image] in arch/m68k/defines to fix missing
+    Modules.symvers problem
+
+  [ Steve Langasek ]
+  * Revert change to disable image building on alpha.
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.2.0-rc1.
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 16 May 2007 13:46:38 +0200
+
+linux-2.6 (2.6.20-3) unstable; urgency=low
+
+  [ Gordon Farquharson ]
+  * arm: Mark CONFIG_MTD_NAND_CAFE and CONFIG_NETXEN_NIC as broken to
+    fix FTBFS.
+
+  [ Bastian Blank ]
+  * Disable new pata drivers. (closes: #419458)
+  * Disable pata in ata_piix.
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 24 Apr 2007 09:54:44 +0200
+
+linux-2.6 (2.6.20-2) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Rename linux-libc-headers into linux-libc-dev.
+  * [mips] Drop sb1250 uart support.
+  * [alpha] Temporary disable alpha images.
+  * Add stable release 2.6.20.7:
+    - Linux 2.6.20.7
+    - Update libata drive blacklist to the latest from 2.6.21
+    - fix page leak during core dump
+    - revert "retries in ext4_prepare_write() violate ordering requirements"
+    - revert "retries in ext3_prepare_write() violate ordering requirements"
+    - libata: Clear tf before doing request sense (take 3)
+    - fix lba48 bug in libata fill_result_tf()
+    - ahci.c: walkaround for SB600 SATA internal error issue
+    - libata bugfix: preserve LBA bit for HDIO_DRIVE_TASK
+    - softmac: avoid assert in ieee80211softmac_wx_get_rate
+    - knfsd: allow nfsd READDIR to return 64bit cookies
+    - Fix TCP slow_start_after_idle sysctl
+    - Fix tcindex classifier ABI borkage...
+    - Fix IPSEC replay window handling
+    - Fix TCP receiver side SWS handling.
+    - Fix scsi sense handling
+    - Fix length validation in rawv6_sendmsg()
+    - NETFILTER: ipt_CLUSTERIP: fix oops in checkentry function
+    - 8139too: RTNL and flush_scheduled_work deadlock
+    - Fix calculation for size of filemap_attr array in md/bitmap.
+    - HID: Do not discard truncated input reports
+    - DVB: pluto2: fix incorrect TSCR register setting
+    - DVB: tda10086: fix DiSEqC message length
+    - sky2: phy workarounds for Yukon EC-U A1
+    - sky2: turn on clocks when doing resume
+    - sky2: turn carrier off when down
+    - skge: turn carrier off when down
+    - sky2: reliable recovery
+    - i386: fix file_read_actor() and pipe_read() for original i386 systems
+    - kbuild: fix dependency generation
+
+  [ dann frazier ]
+  * [hppa] Add parisc arch patch from Kyle McMartin
+  * [hppa] Enable CONFIG_TULIP_MMIO (closes: #332962)
+  * [hppa] Disable ni52 driver, it doesn't build (and wouldn't work if it did)
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 15 Apr 2007 16:04:16 +0200
+
+linux-2.6 (2.6.20-1) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * mipsel: Drop DECstation support (both r3k-kn02 and r4k-kn04).
+  * arm: Drop RiscPC (rpc) support.
+  * arm: Update configs for 2.6.19-rc6.
+  * arm: source drivers/ata/Kconfig so SATA can be enabled on ARM.
+  * arm/footbridge: Unset SATA.
+  * arm/s3c2410: Drop this flavour since no such device is supported
+    in debian-installer and the ARM build resources are limited.
+
+  [ Sven Luther ]
+  * [powerpc] Added Genesi Efika support patch
+
+  [ Bastian Blank ]
+  * Remove legacy pty support. (closes: #338404)
+  * Enable new scsi parts.
+  * powerpc: Enable ibmvscsis.
+  * Add stable release 2.6.20.1:
+    - Linux 2.6.20.1
+    - [PATCH] Fix a free-wrong-pointer bug in nfs/acl server (CVE-2007-0772)
+  * Add stable release 2.6.20.2:
+    - Linux 2.6.20.2
+    - IPV6: Handle np->opt being NULL in ipv6_getsockopt_sticky() [CVE-2007-1000]
+    - x86-64: survive having no irq mapping for a vector
+    - Fix buffer overflow in Omnikey CardMan 4040 driver (CVE-2007-0005)
+    - TCP: Fix minisock tcp_create_openreq_child() typo.
+    - gfs2: fix locking mistake
+    - ATA: convert GSI to irq on ia64
+    - pktcdvd: Correctly set cmd_len field in pkt_generic_packet
+    - video/aty/mach64_ct.c: fix bogus delay loop
+    - revert "drivers/net/tulip/dmfe: support basic carrier detection"
+    - throttle_vm_writeout(): don't loop on GFP_NOFS and GFP_NOIO allocations
+    - fix section mismatch warning in lockdep
+    - ueagle-atm.c needs sched.h
+    - kvm: Fix asm constraint for lldt instruction
+    - lockdep: forward declare struct task_struct
+    - Char: specialix, isr have 2 params
+    - buffer: memorder fix
+    - kernel/time/clocksource.c needs struct task_struct on m68k
+    - m32r: build fix for processors without ISA_DSP_LEVEL2
+    - hugetlb: preserve hugetlb pte dirty state
+    - enable mouse button 2+3 emulation for x86 macs
+    - v9fs_vfs_mkdir(): fix a double free
+    - ufs: restore back support of openstep
+    - Fix MTRR compat ioctl
+    - kexec: Fix CONFIG_SMP=n compilation V2 (ia64)
+    - NLM: Fix double free in __nlm_async_call
+    - RPM: fix double free in portmapper code
+    - Revert "[PATCH] LOG2: Alter get_order() so that it can make use of ilog2() on a constant"
+    - Backport of psmouse suspend/shutdown cleanups
+    - USB: usbnet driver bugfix
+    - sched: fix SMT scheduler bug
+    - tty_io: fix race in master pty close/slave pty close path
+    - forcedeth: disable msix
+    - export blk_recount_segments
+    - Fix reference counting (memory leak) problem in __nfulnl_send() and callers related to packet queueing.
+    - Fix anycast procfs device leak
+    - Don't add anycast reference to device multiple times
+    - Fix TCP MD5 locking.
+    - Fix %100 cpu spinning on sparc64
+    - Fix skb data reallocation handling in IPSEC
+    - Fix xfrm_add_sa_expire() return value
+    - Fix interrupt probing on E450 sparc64 systems
+    - HID: fix possible double-free on error path in hid parser
+    - POWERPC: Fix performance monitor exception
+    - libata: add missing CONFIG_PM in LLDs
+    - libata: add missing PM callbacks
+    - bcm43xx: Fix assertion failures in interrupt handler
+    - mmc: Power quirk for ENE controllers
+    - UML - Fix 2.6.20 hang
+    - fix umask when noACL kernel meets extN tuned for ACLs
+    - sata_sil: ignore and clear spurious IRQs while executing commands by polling
+    - swsusp: Fix possible oops in userland interface
+    - Fix posix-cpu-timer breakage caused by stale p->last_ran value
+    - V4L: cx88-blackbird: allow usage of 376836 and 262144 sized firmware images
+    - V4L: fix cx25840 firmware loading
+    - DVB: digitv: open nxt6000 i2c_gate for TDED4 tuner handling
+    - DVB: cxusb: fix firmware patch for big endian systems
+    - V4L: pvrusb2: Handle larger cx2341x firmware images
+    - V4L: pvrusb2: Fix video corruption on stream start
+    - dvbdev: fix illegal re-usage of fileoperations struct
+    - md: Fix raid10 recovery problem.
+    - bcm43xx: fix for 4309
+    - i386: Fix broken CONFIG_COMPAT_VDSO on i386
+    - x86: Don't require the vDSO for handling a.out signals
+    - x86_64: Fix wrong gcc check in bitops.h
+    - sky2: transmit timeout deadlock
+    - sky2: dont flush good pause frames
+    - Fix oops in xfrm_audit_log()
+    - Prevent pseudo garbage in SYN's advertized window
+    - Fix IPX module unload
+    - Clear TCP segmentation offload state in ipt_REJECT
+    - Fix atmarp.h for userspace
+    - UHCI: fix port resume problem
+    - Fix recently introduced problem with shutting down a busy NFS server.
+    - Avoid using nfsd process pools on SMP machines.
+    - EHCI: turn off remote wakeup during shutdown
+    - IPV6: HASHTABLES: Use appropriate seed for caluculating ehash index.
+    - MTD: Fatal regression in drivers/mtd/redboot.c in 2.6.20
+    - Kconfig: FAULT_INJECTION can be selected only if LOCKDEP is enabled.
+    - USB HID: Fix USB vendor and product IDs endianness for USB HID devices
+    - Fix null pointer dereference in appledisplay driver
+    - ieee1394: fix host device registering when nodemgr disabled
+    - ieee1394: video1394: DMA fix
+    - Fix compile error for e500 core based processors
+    - md: Avoid possible BUG_ON in md bitmap handling.
+    - Fix allocation failure handling in multicast
+    - Fix TCP FIN handling
+    - Fix ATM initcall ordering.
+    - Fix various bugs with aligned reads in RAID5.
+    - hda-intel - Don't try to probe invalid codecs
+    - usbaudio - Fix Oops with unconventional sample rates
+    - usbaudio - Fix Oops with broken usb descriptors
+    - USB: fix concurrent buffer access in the hub driver
+    - Missing critical phys_to_virt in lib/swiotlb.c
+    - AGP: intel-agp bugfix
+    - bcm43xx: Fix for oops on ampdu status
+    - bcm43xx: Fix for oops on resume
+    - ide: fix drive side 80c cable check
+    - Keys: Fix key serial number collision handling
+    - knfsd: Fix a race in closing NFSd connections.
+    - pata_amd: fix an obvious bug in cable detection
+    - prism54: correct assignment of DOT1XENABLE in WE-19 codepaths
+    - rtc-pcf8563: detect polarity of century bit automatically
+    - x86_64: fix 2.6.18 regression - PTRACE_OLDSETOPTIONS should be accepted
+    - ocfs2: ocfs2_link() journal credits update
+  * Update xen patch to changeset 48670 from fedora 2.6.20 branch.
+  * Support xen versions 3.0.4-1 and 3.0.3-1.
+
+  [ Rod Whitby ]
+  * arm/ixp4xx: Enable PATA_ARTOP for the nas100d and dsmg600.
+  * arm/ixp4xx: Enable RTC for the nas100d
+  * Add nas100d Ethernet MAC setup support.
+  * Add temporary hack to get Artop PATA support going on the nas100d.
+
+  [ maximilian attems ]
+  * i386: Enable kvm.
+  * Add stable release 2.6.20.3:
+    - Fix sparc64 device register probing
+    - Fix bug 7994 sleeping function called from invalid context
+    - Fix timewait jiffies
+    - Fix UDP header pointer after pskb_trim_rcsum()
+    - Fix compat_getsockopt
+    - bcm43xx: Fix problem with >1 GB RAM
+    - nfnetlink_log: fix NULL pointer dereference
+    - nfnetlink_log: fix possible NULL pointer dereference
+    - conntrack: fix {nf, ip}_ct_iterate_cleanup endless loops
+    - nf_conntrack/nf_nat: fix incorrect config ifdefs
+    - tcp conntrack: accept SYN|URG as valid
+    - nfnetlink_log: fix reference leak
+    - nfnetlink_log: fix use after free
+    - nf_conntrack: fix incorrect classification of IPv6 fragments as
+      ESTABLISHED
+    - nfnetlink_log: zero-terminate prefix
+    - nfnetlink_log: fix crash on bridged packet
+    - Fix callback bug in connector
+    - fix for bugzilla #7544 (keyspan USB-to-serial converter)
+    - ip6_route_me_harder should take into account mark
+  * Add myself to uploaders field, entry got lost after 2.6.16-2
+  * Add stable release 2.6.20.4:
+    - fix deadlock in audit_log_task_context()
+    - EHCI: add delay to bus_resume before accessing ports
+    - Copy over mac_len when cloning an skb
+    - fix read past end of array in md/linear.c
+    - oom fix: prevent oom from killing a process with children/sibling unkillable
+    - Fix sparc64 hugepage bugs
+    - Fix page allocation debugging on sparc64
+    - Fix niagara memory corruption
+    - Input: i8042 - really suppress ACK/NAK during panic blink
+    - Input: i8042 - fix AUX IRQ delivery check
+    - Input: i8042 - another attempt to fix AUX delivery checks
+    - Fix rtm_to_ifaddr() error return.
+    - r8169: fix a race between PCI probe and dev_open
+    - futex: PI state locking fix
+    - adjust legacy IDE resource setting (v2)
+    - UML - arch_prctl should set thread fs
+    - gdth: fix oops in gdth_copy_cmd()
+    - Fix extraneous IPSEC larval SA creation
+    - IA64: fix NULL pointer in ia64/irq_chip-mask/unmask function
+    - st: fix Tape dies if wrong block size used, bug 7919
+    - Fix ipv6 flow label inheritance
+    - NETFILTER: nfnetlink_log: fix reference counting
+    - mm: fix madvise infinine loop
+    - Fix another NULL pointer deref in ipv6_sockglue.c
+    - NetLabel: Verify sensitivity level has a valid CIPSO mapping
+    - Fix GFP_KERNEL with preemption disabled in fib_trie
+    - IrDA: irttp_dup spin_lock initialisation
+    - hda-intel - Fix codec probe with ATI controllers
+    - hrtimer: prevent overrun DoS in hrtimer_forward()
+    - fix MTIME_SEC_MAX on 32-bit
+    - nfs: nfs_getattr() can't call nfs_sync_mapping_range() for non-regular files
+    - dio: invalidate clean pages before dio write
+    - initialise pi_lock if CONFIG_RT_MUTEXES=N
+  * Add stable release 2.6.20.5:
+    - FRA_{DST,SRC} are le16 for decnet
+    - CIFS: reset mode when client notices that ATTR_READONLY is no longer set
+    - ide: clear bmdma status in ide_intr() for ICHx controllers (revised #4)
+    - ide: remove clearing bmdma status from cdrom_decode_status() (rev #4)
+    - NET: Fix sock_attach_fd() failure in sys_accept()
+    - DCCP: Fix exploitable hole in DCCP socket options
+    - ide: revert "ide: fix drive side 80c cable check, take 2" for now
+    - generic_serial: fix decoding of baud rate
+    - IPV6: Fix ipv6 round-robin locking.
+    - VIDEO: Fix FFB DAC revision probing
+    - PPP: Fix PPP skb leak
+    - V4L: msp_attach must return 0 if no msp3400 was found.
+    - CRYPTO: api: scatterwalk_copychunks() fails to advance through scatterlist
+    - APPLETALK: Fix a remotely triggerable crash (CVE-2007-1357)
+    - UML - fix epoll
+    - UML - host VDSO fix
+    - UML - Fix static linking
+    - UML - use correct register file size everywhere
+    - libata: sata_mv: don't touch reserved bits in EDMA config register
+    - libata: sata_mv: Fix 50xx irq mask
+    - libata bugfix: HDIO_DRIVE_TASK
+    - V4L: Fix SECAM handling on saa7115
+    - DVB: fix nxt200x rf input switching
+    - SPARC: Fix sparc builds with gcc-4.2.x
+    - V4L: saa7146: Fix allocation of clipping memory
+    - uml: fix unreasonably long udelay
+    - NET: Fix packet classidier NULL pointer OOPS
+    - NET_SCHED: Fix ingress qdisc locking.
+    - sata_nv: delay on switching between NCQ and non-NCQ commands
+    - dvb-core: fix several locking related problems
+    - ieee1394: dv1394: fix CardBus card ejection
+    - CIFS: Allow reset of file to ATTR_NORMAL when archive bit not set
+    - jmicron: make ide jmicron driver play nice with libata ones
+    - libata: clear TF before IDENTIFYing
+    - NET: Fix FIB rules compatability
+    - DVB: isl6421: don't reference freed memory
+    - V4L: radio: Fix error in Kbuild file
+    - i2o: block IO errors on i2o disk
+  * Add stable release 2.6.20.6:
+    - CRYPTO api: Use the right value when advancing scatterwalk_copychunks
+    - uml: fix static linking for real
+
+  [ Gordon Farquharson ]
+  * Disable broken config options on ARM.
+
+  [ Frederik Schüler ]
+  * Disable NAPI on forcedeth, it is broken.
+
+  [ dann frazier ]
+  * Hardcode the output of the scripts under arch/ia64/scripts as executed
+    in an etch environment so that we can build out of tree modules correctly
+    (re-add; patch seems to have been dropped during a merge.)
+    See: #392592
+  * Allow '.' and '+' in the target dist field of the changelog. dpkg has
+    supported this since 1.13.20, see #361171.
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 09 Apr 2007 19:21:52 +0200
+
+linux-2.6 (2.6.18.dfsg.1-10) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Add patches out of stable queue 2.6.18
+    - [amd64] Don't leak NT bit into next task (CVE-2006-5755)
+    - IB/srp: Fix FMR mapping for 32-bit kernels and addresses above 4G
+    - SCSI: add missing cdb clearing in scsi_execute()
+  * Xen postinst: Use takeover for update-initramfs. Makes postinst idempotent.
+    On creation it should always overwrite. (closes: #401183)
+  * Hand-picked from stable release 2.6.16.38:
+    - i2c-viapro: Add support for the VT8237A and VT8251
+    - PCI: irq: irq and pci_ids patch for Intel ICH9
+    - i2c-i801: SMBus patch for Intel ICH9
+    - fix the UML compilation
+    - drm: allow detection of new VIA chipsets
+    - drm: Add the P4VM800PRO PCI ID.
+    - rio: typo in bitwise AND expression.
+    - i2c-mv64xxx: Fix random oops at boot
+    - i2c: fix broken ds1337 initialization
+    - [SUNKBD]: Fix sunkbd_enable(sunkbd, 0); obvious.
+    - Call init_timer() for ISDN PPP CCP reset state timer (CVE-2006-5749)
+    - V4L: cx88: Fix leadtek_eeprom tagging
+    - SPI/MTD: mtd_dataflash oops prevention
+    - grow_buffers() infinite loop fix (CVE-2006-5757/CVE-2006-6060)
+    - corrupted cramfs filesystems cause kernel oops (CVE-2006-5823)
+    - ext2: skip pages past number of blocks in ext2_find_entry
+      (CVE-2006-6054)
+    - handle ext3 directory corruption better (CVE-2006-6053)
+    - hfs_fill_super returns success even if no root inode (CVE-2006-6056)
+      backout previous fix, was not complete.
+    - Fix for shmem_truncate_range() BUG_ON()
+    - ebtables: check struct type before computing gap
+    - [IPV4/IPV6]: Fix inet{,6} device initialization order.
+    - [IPV6] Fix joining all-node multicast group.
+    - [SOUND] Sparc CS4231: Use 64 for period_bytes_min
+  * [PKTGEN]: Convert to kthread API. Thanks David Miller for patch.
+  * [IDE] Add driver for Jmicron  JMB36x devices by Alan Cox.
+    Enable jmicron on i386 and amd64 archs.
+  * Hand-picked from stable release 2.6.16.39:
+    - atiixp: hang fix
+    - V4L/DVB: Flexcop-usb: fix debug printk
+    - V4L/DVB: Fix uninitialised variable in dvb_frontend_swzigzag
+    - read_zero_pagealigned() locking fix
+    - adfs: fix filename handling
+    - sparc32: add offset in pci_map_sg()
+    - cdrom: set default timeout to 7 seconds
+    - [SCSI] qla1280 command timeout
+    - [SCSI] qla1280 bus reset typo
+    - [Bluetooth] Check if DLC is still attached to the TTY
+    - [Bluetooth] Fix uninitialized return value for RFCOMM sendmsg()
+    - [Bluetooth] Return EINPROGRESS for non-blocking socket calls
+    - [Bluetooth] Handle command complete event for exit periodic inquiry
+    - [Bluetooth] Fix compat ioctl for BNEP, CMTP and HIDP
+    - [Bluetooth] Add locking for bt_proto array manipulation
+    - i386: fix CPU hotplug with 2GB VMSPLIT
+
+  [ dann frazier ]
+  * Fix raid1 recovery (closes: #406181)
+
+  [ Jurij Smakov ]
+  * Add dtlb-prot-bug-niagara.patch by David Miller, fixing the bug in the
+    Niagara's DTLB-PROT trap.
+
+  [ Bastian Blank ]
+  * i386: Add amd64 image. (closes: #379090)
+
+ -- Bastian Blank <waldi@debian.org>  Fri,  2 Feb 2007 12:50:35 +0100
+
+linux-2.6 (2.6.18.dfsg.1-9) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * arm/iop32x: Enable CONFIG_IP_NF_CONNTRACK_EVENTS and _NETLINK.
+  * arm/ixp4xx: Enable some more I2C sensor modules.
+  * arm/ixp4xx: Enable CONFIG_USB_NET_RNDIS_HOST.
+  * arm/footbridge: Enable CONFIG_NATSEMI.
+  * Revert mm/msync patches because they cause filesystem corruption
+    (closes: #401006, #401980, #402707) ...
+  * ... and add an alternative msync patch from Hugh Dickins that
+    doesn't depend on the mm changes (closes: #394392).
+  * mips: provide pci_get_legacy_ide_irq needed by some IDE drivers
+    (see #404950).
+  * arm: Implement flush_anon_page(), which is needed for FUSE
+    (closes: #402876) and possibly dm-crypt/LUKS (see #403426).
+  * arm: Turn off PCI burst on the Cyber2010, otherwise X11 on
+    Netwinder will crash.
+  * arm/iop32x: Enable CONFIG_IEEE80211_SOFTMAC and drivers based
+    on it.
+  * arm/ixp4xx: Upgrade to version 0.3.1 of the IXP4xx NPE Ethernet
+    driver.  This version fixes stuck connections, e.g. with scp and
+    NFS (closes: #404447).
+  * arm/ixp4xx: Enable CONFIG_VIDEO_CPIA_USB.
+  * arm/ixp4xx: Enable CONFIG_ISCSI_TCP.
+  * arm/iop32x: Likewise.
+
+  [ Bastian Blank ]
+  * Bump ABI to 4.
+  * Update vserver patch to 2.0.2.2-rc9. (closes: #402743, #403790)
+  * Update xen patch to changeset 36186 from Fedora 2.6.18 branch.
+  * i386/xen: Build only the pae version. (closes: #390862)
+  * hppa: Override host type when necessary.
+  * Fix tg3 reset. (closes: #405085)
+
+  [ dann frazier ]
+  * Fix potential fragmentation attacks in ip6_tables (CVE-2006-4572)
+  * Backport a number of fixes for the cciss driver
+    - Fix a bug with 1TB disks caused by converting total_size to an int
+    - Claim devices that are of the HP RAID class and have a valid cciss sig
+    - Make NR_CMDS a per-controller define - most can do 1024 commands, but
+      the E200 family can only support 128
+    - Change the SSID on the E500 as a workaround for a firmware bug
+    - Disable prefetch on the P600 controller. An ASIC bug may result in
+      prefetching beyond the end of physical memory
+    - Increase blk_queue_max_sectors from 512 to 2048 to increase performance
+    - Map out more memor for the PCI config table, required to reach offset
+      0x214 to disable DMA on the P600
+    - Set a default raid level on a volume that either does not support
+      reading the geometry or reports an invalid geometry for whatever reason
+      to avoid problems with buggy firmware
+    - Revert change that replaed XFER_READ/XFER_WRITE macros with
+      h->cciss_read/h->cciss_write that caused command timeouts on older
+      controllers on ia32 (closes: #402787)
+  * Fix mincore hang (CVE-2006-4814)
+  * ia64: turn on IOC4 modules for SGI Altix systems. Thanks to Stephane Larose
+    for suggesting this.
+  * Add versioned build dep on findutils to make sure the system find command
+    supports the -execdir action (closes: #405150)
+  * Hardcode the output of the scripts under arch/ia64/scripts as executed
+    in an etch environment so that we can build out of tree modules correctly
+    (closes: #392592)
+  * Update unusual_devs entry for ipod to fix an eject issue (closes: #406124)
+  * Re-add verify_pmtmr_rate, resolving problems seen on older K6 ASUS
+    boards where the ACPI PM timer runs too fast (closes: #394753)
+  * Avoid condition where /proc/swaps header may not be printed
+    (closes: #292318)
+  * [hppa] disable XFS until it works (closes: #350482)
+
+  [ Norbert Tretkowski ]
+  * libata: handle 0xff status properly. (closes: #391867)
+  * alpha: enabled CONFIG_SCSI_ARCMSR. (closes: #401187)
+  * removed BROKEN_ON_SMP dependency from I2C_ELEKTOR. (closes: #402253)
+
+  [ Christian T. Steigies ]
+  * m68k/atari: enable keyboard, mouse and fb drivers
+  * m68k/atari: fixes for ethernec and video driver by Michael Schmitz
+  * m68k/atari: fixes for scsi driver by Michael Schmitz
+  * m68k/mac: fixes for mace and cuda driver by Finn Thain
+  * m68k/atari: fixes for ide driver by Michael Schmitz
+  * m68k/atari: fixes for ide driver by Michael Schmitz
+  * m68k/atari: fixes for ethernec and atakeyb driver by Michael Schmitz, build ethernec as module
+  * m68k/mac: fixes for mace and adb driver by Finn Thain
+
+  [ maximilian attems ]
+  * Add stable release 2.6.18.6:
+    - EBTABLES: Fix wraparounds in ebt_entries verification.
+    - EBTABLES: Verify that ebt_entries have zero ->distinguisher.
+    - EBTABLES: Deal with the worst-case behaviour in loop checks.
+    - EBTABLES: Prevent wraparounds in checks for entry components' sizes.
+    - skip data conversion in compat_sys_mount when data_page is NULL
+    - bonding: incorrect bonding state reported via ioctl
+    - x86-64: Mark rdtsc as sync only for netburst, not for core2
+      (closes: #406767)
+    - dm crypt: Fix data corruption with dm-crypt over RAID5 (closes: #402812)
+    - forcedeth: Disable INTx when enabling MSI in forcedeth
+    - PKT_SCHED act_gact: division by zero
+    - XFRM: Use output device disable_xfrm for forwarded packets
+    - IPSEC: Fix inetpeer leak in ipv4 xfrm dst entries.
+    - V4L: Fix broken TUNER_LG_NTSC_TAPE radio support
+    - m32r: make userspace headers platform-independent
+    - IrDA: Incorrect TTP header reservation
+    - SUNHME: Fix for sunhme failures on x86
+    - Bluetooth: Add packet size checks for CAPI messages (CVE-2006-6106)
+    - softmac: remove netif_tx_disable when scanning
+    - DVB: lgdt330x: fix signal / lock status detection bug
+    - dm snapshot: fix freeing pending exception
+    - NET_SCHED: policer: restore compatibility with old iproute binaries
+    - NETFILTER: ip_tables: revision support for compat code
+    - ARM: Add sys_*at syscalls
+    - ieee1394: ohci1394: add PPC_PMAC platform code to driver probe
+    - softirq: remove BUG_ONs which can incorrectly trigger
+  * Hand-picked from stable release 2.6.16.30:
+    - [PPPOE]: Advertise PPPoE MTU
+  * Hand-picked from stable release 2.6.16.31:
+    - [NETFILTER]: Fix ip6_tables extension header bypass bug (CVE-2006-4572)
+    - fix RARP ic_servaddr breakage
+  * Hand-picked from stable release 2.6.16.32:
+    - drivers/telephony/ixj: fix an array overrun
+    - flush D-cache in failure path
+  * Hand-picked from stable release 2.6.16.33:
+    - Add new PHY to sis900 supported list
+    - ipmi_si_intf.c: fix "&& 0xff" typos
+    - drivers/scsi/psi240i.c: fix an array overrun
+  * Hand-picked from stable release 2.6.16.34:
+    - [IPX]: Annotate and fix IPX checksum
+    - [IGMP]: Fix IGMPV3_EXP() normalization bit shift value.
+  * Hand-picked from stable release 2.6.16.35:
+    - sgiioc4: Disable module unload
+    - Fix a masking bug in the 6pack driver.
+    - drivers/usb/input/ati_remote.c: fix cut'n'paste error
+    - proper flags type of spin_lock_irqsave()
+  * Hand-picked from stable release 2.6.16.37:
+    - [CRYPTO] sha512: Fix sha384 block size
+    - [SCSI] gdth: Fix && typos
+    - Fix SUNRPC wakeup/execute race condition
+  * Enable DEBUG_FS for usbmon in generic config. Don't disable it on alpha,
+    amd64, hppa and ia64. (closes: 378542)
+  * Backport a number of upstream fixes for the r8169 driver, needed for
+    network performance (closes: 388870, 400524)
+    - r8169: more alignment for the 0x8168
+    - r8169: phy program update
+    - r8169: more magic during initialization of the hardware
+    - r8169: perform a PHY reset before any other operation at boot time
+    - r8169: Fix iteration variable sign
+    - r8169: remove extraneous Cmd{Tx/Rx}Enb write
+  * sound: hda: detect ALC883 on MSI K9A Platinum motherboards (MS-7280)
+    patch from Leonard Norrgard <leonard.norrgard@refactor.fi>
+  * tulip: Add i386 specific patch to remove duplicate pci ids.
+    Thanks Jurij Smakov <jurij@wooyd.org> (closes: #334104, #405203)
+  * amd64, i386: Disable SK98LIN as SKGE is the modern capable driver.
+    (closes: 405196)
+  * Backout net-bcm43xx_netdev_watchdog.patch and push 2.6.18.2 fix.
+    (closes: 402475)
+
+  [ Jurij Smakov ]
+  * Add bugfix/sparc/isa-dev-no-reg.patch to make sure that
+    isa_dev_get_resource() can deal with devices which do not have a 'reg'
+    PROM property. Failure to handle such devices properly resulted in an
+    oops during boot on Netra X1. Thanks to Richard Mortimer for debugging
+    and patch. (closes: #404216)
+  * Add bugfix/sparc/ehci-hub-contol-alignment.patch to prevent unaligned
+    memory accesses in ehci-hub-control() by adding an alignment attribute
+    to the tbuf array declaration. Thanks to David Miller for the patch.
+
+  [ Sven Luther ]
+  * [powerpc] Enable CONFIG_PMAC_BACKLIGHT_LEGACY (Closes: #407671).
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 24 Jan 2007 13:21:51 +0100
+
+linux-2.6 (2.6.18-8) unstable; urgency=low
+
+  * Fix relations in the generated control file. (closes: #400544)
+  * Add stable release 2.6.18.4:
+    - bridge: fix possible overflow in get_fdb_entries (CVE-2006-5751)
+  * Add stable release 2.6.18.5:
+    - pcmcia: fix 'rmmod pcmcia' with unbound devices
+    - BLUETOOTH: Fix unaligned access in hci_send_to_sock.
+    - alpha: Fix ALPHA_EV56 dependencies typo
+    - TG3: Add missing unlock in tg3_open() error path.
+    - softmac: fix a slab corruption in WEP restricted key association
+    - AGP: Allocate AGP pages with GFP_DMA32 by default
+    - V4L: Do not enable VIDEO_V4L2 unconditionally
+    - bcm43xx: Drain TX status before starting IRQs
+    - fuse: fix Oops in lookup
+    - UDP: Make udp_encap_rcv use pskb_may_pull
+    - NETFILTER: Missing check for CAP_NET_ADMIN in iptables compat layer
+    - NETFILTER: ip_tables: compat error way cleanup
+    - NETFILTER: ip_tables: fix module refcount leaks in compat error paths
+    - NETFILTER: Missed and reordered checks in {arp,ip,ip6}_tables
+    - NETFILTER: arp_tables: missing unregistration on module unload
+    - NETFILTER: Kconfig: fix xt_physdev dependencies
+    - NETFILTER: xt_CONNSECMARK: fix Kconfig dependencies
+    - NETFILTER: H.323 conntrack: fix crash with CONFIG_IP_NF_CT_ACCT
+    - IA64: bte_unaligned_copy() transfers one extra cache line.
+    - x86 microcode: don't check the size
+    - scsi: clear garbage after CDBs on SG_IO
+    - IPV6: Fix address/interface handling in UDP and DCCP, according to the scoping architecture.
+  * Revert abi changing patch from 2.6.18.5.
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 10 Dec 2006 17:51:53 +0100
+
+linux-2.6 (2.6.18-7) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Emit conflict lines for initramfs generators. (closes: #400305)
+  * Update vserver patch to 2.0.2.2-rc8.
+  * s390: Add patch to fix posix types.
+
+  [ Martin Michlmayr ]
+  * r8169: Add an option to ignore parity errors.
+  * r8169: Ignore parity errors on the Thecus N2100.
+  * rtc: Add patch from Riku Voipio to get RS5C372 going on the N2100.
+  * arm/iop32x: Build RS5C372 support into the kernel.
+
+  [ maximilian attems ]
+  * hfs: Fix up error handling in HFS. (MOKB-14-11-2006)
+  * sata: Avoid null pointer dereference in SATA Promise.
+  * cifs: Set CIFS preferred IO size.
+
+  [ Jurij Smakov ]
+  * Add bugfix/sunhme-pci-enable.patch, fixing the failure of sunhme
+    driver on x86/PCI hosts due to missing pci_enable_device() and
+    pci_set_master() calls, lost during code refactoring upstream.
+    (closes: #397460)
+
+ -- Bastian Blank <waldi@debian.org>  Mon,  4 Dec 2006 15:20:30 +0100
+
+linux-2.6 (2.6.18-6) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Enable the new ACT modules globally. They were already set for amd64, hppa
+    and mips/mipsel - needed by newer iproute2. (closes: #395882, #398172)
+  * Fix msync() for LSB 3.1 compliance, backport fedora patches from 2.6.19
+   - mm: tracking shared dirty pages
+   - mm: balance dirty pages
+   - mm: optimize the new mprotect() code a bit
+   - mm: small cleanup of install_page()
+   - mm: fixup do_wp_page()
+   - mm: msync() cleanup (closes: #394392)
+  * [amd64,i386] Enable CONFIG_USB_APPLETOUCH=m (closes: #382298)
+  * Add stable release 2.6.18.3:
+    - x86_64: Fix FPU corruption
+    - e1000: Fix regression: garbled stats and irq allocation during swsusp
+    - POWERPC: Make alignment exception always check exception table
+    - usbtouchscreen: use endpoint address from endpoint descriptor
+    - fix via586 irq routing for pirq 5
+    - init_reap_node() initialization fix
+    - CPUFREQ: Make acpi-cpufreq unsticky again.
+    - SPARC64: Fix futex_atomic_cmpxchg_inatomic implementation.
+    - SPARC: Fix missed bump of NR_SYSCALLS.
+    - NET: __alloc_pages() failures reported due to fragmentation
+    - pci: don't try to remove sysfs files before they are setup.
+    - fix UFS superblock alignment issues
+    - NET: Set truesize in pskb_copy
+    - block: Fix bad data direction in SG_IO (closes: #394690)
+    - cpqarray: fix iostat
+    - cciss: fix iostat
+    - Char: isicom, fix close bug
+    - TCP: Don't use highmem in tcp hash size calculation.
+    - S390: user readable uninitialised kernel memory, take 2.
+    - correct keymapping on Powerbook built-in USB ISO keyboards
+    - USB: failure in usblp's error path
+    - Input: psmouse - fix attribute access on 64-bit systems
+    - Fix sys_move_pages when a NULL node list is passed.
+    - CIFS: report rename failure when target file is locked by Windows
+    - CIFS: New POSIX locking code not setting rc properly to zero on successful
+    - Patch for nvidia divide by zero error for 7600 pci-express card
+      (maybe fixes 398258)
+    - ipmi_si_intf.c sets bad class_mask with PCI_DEVICE_CLASS
+
+  [ Steve Langasek ]
+  * [alpha] new titan-video patch, for compatibility with TITAN and similar
+    systems with non-standard VGA hose configs
+  * [alpha] bugfix for srm_env module from upstream (Jan-Benedict Glaw),
+    makes the module compatible with the current /proc interface so that
+    reads no longer return EFAULT.  (closes: #353079)
+  * Bump ABI to 3 for the msync fixes above.
+
+  [ Martin Michlmayr ]
+  * arm: Set CONFIG_BINFMT_MISC=m
+  * arm/ixp4xx: Set CONFIG_ATM=m (and related modules) so CONFIG_USB_ATM has
+    an effect.
+  * arm/iop32x: Likewise.
+  * arm/s3c2410: Unset CONFIG_PM_LEGACY.
+  * arm/versatile: Fix Versatile PCI config byte accesses
+  * arm/ixp4xx: Swap the disk 1 and disk 2 LED definitions so they're right.
+  * mipsel/r5k-cobalt: Unset CONFIG_SCSI_SYM53C8XX_2 because the timeout is
+    just too long.
+  * arm/ixp4xx: Enable more V4L USB devices.
+
+  [ dann frazier ]
+  * Backport various SCTP changesets from 2.6.19, recommended by Vlad Yasevich
+    (closes: #397946)
+  * Add a "Scope of security support" section to README.Debian, recommended
+    by Moritz Muehlenhoff
+
+  [ Thiemo Seufer ]
+  * Enable raid456 for mips/mipsel qemu kernel.
+
+  [ dann frazier ]
+  * The scope of the USR-61S2B unusual_dev entry was tightened, but too
+    strictly. Loosen it to apply to additional devices with a smaller bcd.
+    (closes: #396375)
+
+  [ Sven Luther ]
+  * Added support for TI ez430 development tool ID in ti_usb.
+    Thanks to Oleg Verych for providing the patch.
+
+  [ Christian T. Steigies ]
+  * Added support for Atari EtherNEC, Aranym, video, keyboard, mouse, and serial
+    by Michael Schmitz
+
+  [ Bastian Blank ]
+  * [i386] Reenable AVM isdn card modules. (closes: #386872)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 21 Nov 2006 11:28:09 +0100
+
+linux-2.6 (2.6.18-5) unstable; urgency=low
+
+  [ maximilian attems ]
+  * [s390] readd the fix for "S390: user readable uninitialised kernel memory
+    (CVE-2006-5174)"
+  * [s390] temporarily add patch queued for 2.6.18.3 fixing 32 bit opcodes and
+    instructions.
+
+  [ Thiemo Seufer ]
+  * Fix build failure of hugetlbfs (closes: #397139).
+  * Add kernel configuration for qemu's mips/mipsel emulation, thanks to
+    Aurelien Jarno.
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.0.2.2-rc6.
+  * Update xen parts for vserver. (closes: #397281)
+
+  [ dann frazier ]
+  * [ia64] Move to upstream version of sal-flush-fix patch, which is slightly
+    different than the early version added in 2.6.18-3.
+
+  [ Frederik Schüler ]
+  * [i386] Acticate CONFIG_SX for all flavours. (closes: #391275)
+
+  [ Steve Langasek ]
+  * [alpha] new asm-subarchs patch: tell the compiler that we're
+    deliberately emitting ev56 or ev6 instructions, so that this code
+    will still compile without having to cripple gcc-4.1's checking of
+    whether the correct instruction set is used.  Closes: #397139.
+
+  [ Martin Michlmayr ]
+  * arm/ixp4xx: Enable CONFIG_USB_ATM.
+  * arm/iop32x: Enable CONFIG_PPPOE.
+  * arm/iop32x: Enable CONFIG_USB_ATM.
+
+ -- Bastian Blank <waldi@debian.org>  Wed,  8 Nov 2006 17:15:55 +0100
+
+linux-2.6 (2.6.18-4) unstable; urgency=low
+
+  [ Norbert Tretkowski ]
+  * [alpha] Switched to gcc-4.1.
+
+  [ Jurij Smakov ]
+  * [sparc] Remove sparc64-atyfb-xl-gr.patch, it does more harm than
+    good in 2.6.18.
+  * [sparc] Add bugfix/sparc/compat-alloc-user-space-alignment.patch
+    (thanks to David Miller) to make sure that compat_alloc_user_space()
+    always returns memory aligned on a 8-byte boundary on sparc. This
+    prevents a number of unaligned memory accesses, like the ones in
+    sys_msgrcv() and compat_sys_msgrcv(), triggered every 5 seconds whenever
+    fakeroot is running.
+  * [sparc] Add bugfix/sparc/bus-id-size.patch (thanks to David Miller)
+    to ensure that the size of the strings stored in the bus_id field of
+    struct device never exceeds the amount of memory allocated for them
+    (20 bytes). It fixes the situations in which storing longer device
+    names in this field would cause corruption of adjacent memory regions.
+    (closes: #394697).
+  * [sparc] Add bugfix/sparc/sunblade1k-boot-fix.patch (thanks to David
+    Miller) to fix a boottime crash on SunBlade1000.
+  * [sparc] Add bugfix/sparc/t1k-cpu-lockup.patch (thanks to David Miller)
+    to prevent soft CPU lockup on T1000 servers, which can be triggered from
+    userspace, resulting in denial of service.
+
+  [ Martin Michlmayr ]
+  * arm/iop32x: Fix the interrupt of the 2nd Ethernet slot on N2100.
+  * arm/iop32x: Allow USB and serial to co-exist on N2100.
+  * arm/ixp4xx: Add clocksource for Intel IXP4xx platforms.
+  * arm: Enable CONFIG_AUDIT=y again.
+  * arm/ixp4xx: Add the IXP4xx Ethernet driver.
+  * arm/ixp4xx: Build LED support into the kernel.
+  * Add a driver for Fintek F75375S/SP and F75373.
+  * arm/iop32x: Build F75375S/SP support in.
+  * arm/iop32x: Fix the size of the RedBoot config partition.
+
+  [ maximilian attems ]
+  * Add netpoll leak fix.
+  * Add upstream forcedeth swsusp support.
+  * r8169: PCI ID for Corega Gigabit network card.
+  * r8169: the MMIO region of the 8167 stands behin BAR#1.
+  * r8169: Add upstream fix for infinite loop during hotplug.
+  * Bump build-dependency on kernel-package to 10.063.
+  * r8169: pull revert mac address change support.
+  * bcm43xx: Add full netdev watchout timeout patch. (closes: 392065)
+    Thanks Sjoerd Simons <sjoerd@spring.luon.net> for the testing.
+  * Add stable release 2.6.18.2:
+    - Remove not yet released, revert the included patches.
+    - Keep aboves bcm43xx fix, it's more complete.
+    - Watchdog: sc1200wdt - fix missing pnp_unregister_driver()
+    - fix missing ifdefs in syscall classes hookup for generic targets
+    - JMB 368 PATA detection
+    - usbfs: private mutex for open, release, and remove
+    - sound/pci/au88x0/au88x0.c: ioremap balanced with iounmap
+    - x86-64: Fix C3 timer test
+    - Reintroduce NODES_SPAN_OTHER_NODES for powerpc
+    - ALSA: emu10k1: Fix outl() in snd_emu10k1_resume_regs()
+    - IB/mthca: Use mmiowb after doorbell ring
+    - SCSI: DAC960: PCI id table fixup
+    - ALSA: snd_rtctimer: handle RTC interrupts with a tasklet
+    - JFS: pageno needs to be long
+    - SPARC64: Fix central/FHC bus handling on Ex000 systems.
+    - SPARC64: Fix memory corruption in pci_4u_free_consistent().
+    - SPARC64: Fix PCI memory space root resource on Hummingbird.
+      (closes: #392078)
+    - Fix uninitialised spinlock in via-pmu-backlight code.
+    - SCSI: aic7xxx: pause sequencer before touching SBLKCTL
+    - IPoIB: Rejoin all multicast groups after a port event
+    - ALSA: Dereference after free in snd_hwdep_release()
+    - rtc-max6902: month conversion fix
+    - NET: Fix skb_segment() handling of fully linear SKBs
+    - SCTP: Always linearise packet on input
+    - SCSI: aic7xxx: avoid checking SBLKCTL register for certain cards
+    - IPV6: fix lockup via /proc/net/ip6_flowlabel [CVE-2006-5619]
+    - fix Intel RNG detection
+    - ISDN: check for userspace copy faults
+    - ISDN: fix drivers, by handling errors thrown by ->readstat()
+    - splice: fix pipe_to_file() ->prepare_write() error path
+    - ALSA: Fix bug in snd-usb-usx2y's usX2Y_pcms_lock_check()
+    - ALSA: Repair snd-usb-usx2y for usb 2.6.18
+    - PCI: Remove quirk_via_abnormal_poweroff
+    - Bluetooth: Check if DLC is still attached to the TTY
+    - vmscan: Fix temp_priority race
+    - Use min of two prio settings in calculating distress for reclaim
+    - __div64_32 for 31 bit. Fixes funny clock speed on hercules emulator.
+      (closes: 395247)
+    - DVB: fix dvb_pll_attach for mt352/zl10353 in cx88-dvb, and nxt200x
+    - fuse: fix hang on SMP
+    - md: Fix bug where spares don't always get rebuilt properly when they become live.
+    - md: Fix calculation of ->degraded for multipath and raid10
+    - knfsd: Fix race that can disable NFS server.
+    - md: check bio address after mapping through partitions.
+    - fill_tgid: fix task_struct leak and possible oops
+    - uml: fix processor selection to exclude unsupported processors and features
+    - uml: remove warnings added by previous -stable patch
+    - Fix sfuzz hanging on 2.6.18
+    - SERIAL: Fix resume handling bug
+    - SERIAL: Fix oops when removing suspended serial port
+    - sky2: MSI test race and message
+    - sky2: pause parameter adjustment
+    - sky2: turn off PHY IRQ on shutdown
+    - sky2: accept multicast pause frames
+    - sky2: GMAC pause frame
+    - sky2: 88E803X transmit lockup (2.6.18)
+    - tcp: cubic scaling error
+    - mm: fix a race condition under SMC + COW
+    - ALSA: powermac - Fix Oops when conflicting with aoa driver
+    - ALSA: Fix re-use of va_list
+    - posix-cpu-timers: prevent signal delivery starvation
+    - NFS: nfs_lookup - don't hash dentry when optimising away the lookup
+    - uml: make Uml compile on FC6 kernel headers
+    - Fix potential interrupts during alternative patching
+  * Backport atkbd - supress "too many keys" error message.
+  * [s390] Revert temporarly 2.6.18.1 "S390: user readable uninitialised
+    kernel memory (CVE-2006-5174)" fix as it causes ftfbs
+
+  [ Sven Luther ]
+  * [powerpc] Added exception alignement patch from Benjamin Herrenschmidt.
+
+  [ Frederik Schüler ]
+  * Bump ABI to 2.
+  * Update vserver patch to 2.0.2.2-rc4.
+
+  [ Thiemo Seufer ]
+  * Add patches from linux-mips.org's 2.6.18-stable branch:
+    - bugfix/copy-user-highpage.patch, needed for cache alias handling
+      on mips/mipsel/hppa.
+    - bugfix/mips/syscall-wiring.patch, fixes TLS register access, and
+      n32 rt_sigqueueinfo.
+    - bugfix/mips/sb1-flush-cache-data-page.patch, missing cache flush
+      on SB-1.
+    - bugfix/mips/trylock.patch, fix trylock implementation for R1x000
+      and R3xxx.
+    - bugfix/mips/smp-cpu-bringup.patch, correct initialization of
+      non-contiguous CPU topology.
+    - bugfix/mips/header-exports.patch, clean up userland exports of
+      kernel headers.
+    - bugfix/mips/sb1-interrupt-handler.patch, fix broken interrupt
+      routing on SB-1.
+    - bugfix/mips/cache-alias.patch, fixes #387498 for mips/mipsel.
+    - bugfix/mips/ip22-zilog-console.patch, fix long delays seen with
+      SGI ip22 serial console.
+    - bugfix/mips/signal-handling.patch, fixes a signal handling race
+      condition shown with gdb.
+    - bugfix/mips/sb1-duart-tts.patch, replaces mips-sb1-duart-tts.patch,
+      use standard Linux names for SB-1 consoles.
+    - bugfix/mips/wait-race.patch, correct behaviour of the idle loop.
+    - bugfix/mips/sgi-ioc3.patch, checksumming fix for IOC3 network
+      driver.
+    - features/mips/qemu-kernel.patch, support for the mips/mipsel
+      machine emulated by Qemu.
+    - features/mips/backtrace.patch, reimplementation of stack analysis
+      and backtrace printing, useful for in-kernel debugging.
+    - bugfix/mips/dec-scsi.patch, replaces mips-dec-scsi.patch, fixes DSP
+      SCSI driver for DECstations.
+    - bugfix/mips/dec-serial.patch, replaces mips-dec-serial.patch, fix
+      serial console handling on DECstations.
+
+ -- Frederik Schüler <fs@debian.org>  Sat,  4 Nov 2006 18:45:02 +0100
+
+linux-2.6 (2.6.18-3) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Fix home of patch apply script.
+  * Unify CPUSET option. (closes: #391931)
+  * Support xen version 3.0.3-1.
+  * Add AHCI suspend support.
+  * Add patch to support bindmount without nodev on vserver.
+  * Update fedora xen patch to changeset 36252.
+
+  [ Steve Langasek ]
+  * [alpha] restore alpha-prctl.patch, which keeps disappearing every time
+    there's a kernel upgrade :/
+
+  [ Frederik Schüler ]
+  * Activate CONFIG_NET_CLS_* globaly. (Closes: #389918)
+  * Make CONFIG_EFI_VARS modular on i386. (Closes: #381951)
+  * Activate CONFIG_SCSI_ARCMSR on amd64, powerpc, sparc too.
+  * [vserver] Activate HARDCPU and HARDCPU_IDLE.
+  * [vserver] Upgrade to vs2.0.2.2-rc2.
+
+  [ maximilian attems ]
+  * [mipsel] Disable CONFIG_SECURITY_SECLVL on DECstations too.
+  * Add stable release 2.6.18.1:
+   - add utsrelease.h to the dontdiff file
+   - V4L: copy-paste bug in videodev.c
+   - block layer: elv_iosched_show should get elv_list_lock
+   - NETFILTER: NAT: fix NOTRACK checksum handling
+   - bcm43xx: fix regressions in 2.6.18 (Closes: #392065)
+   - x86-64: Calgary IOMMU: Fix off by one when calculating register space
+     location
+   - ide-generic: jmicron fix
+   - scx200_hrt: fix precedence bug manifesting as 27x clock in 1 MHz mode
+   - invalidate_inode_pages2(): ignore page refcounts
+   - rtc driver rtc-pcf8563 century bit inversed
+   - fbdev: correct buffer size limit in fbmem_read_proc()
+   - mm: bug in set_page_dirty_buffers
+   - TCP: Fix and simplify microsecond rtt sampling
+   - MD: Fix problem where hot-added drives are not resynced.
+   - IPV6: Disable SG for GSO unless we have checksum
+   - PKT_SCHED: cls_basic: Use unsigned int when generating handle
+   - sata_mv: fix oops
+   - [SPARC64]: Kill bogus check from bootmem_init().
+   - IPV6: bh_lock_sock_nested on tcp_v6_rcv
+   - [CPUFREQ] Fix some more CPU hotplug locking.
+   - SPARC64: Fix serious bug in sched_clock() on sparc64
+   - Fix VIDIOC_ENUMSTD bug
+   - load_module: no BUG if module_subsys uninitialized
+   - i386: fix flat mode numa on a real numa system
+   - cpu to node relationship fixup: map cpu to node
+   - cpu to node relationship fixup: acpi_map_cpu2node
+   - backlight: fix oops in __mutex_lock_slowpath during head
+     /sys/class/graphics/fb0/*
+   - do not free non slab allocated per_cpu_pageset
+   - rtc: lockdep fix/workaround
+   - powerpc: Fix ohare IDE irq workaround on old powermacs
+   - sysfs: remove duplicated dput in sysfs_update_file
+   - powerpc: fix building gdb against asm/ptrace.h
+   - Remove offsetof() from user-visible <linux/stddef.h>
+   - Clean up exported headers on CRIS
+   - Fix v850 exported headers
+   - Don't advertise (or allow) headers_{install,check} where inappropriate.
+   - Remove UML header export
+   - Remove ARM26 header export.
+   - Fix H8300 exported headers.
+   - Fix m68knommu exported headers
+   - Fix exported headers for SPARC, SPARC64
+   - Fix 'make headers_check' on m32r
+   - Fix 'make headers_check' on sh64
+   - Fix 'make headers_check' on sh
+   - Fix ARM 'make headers_check'
+   - One line per header in Kbuild files to reduce conflicts
+   - sky2 network driver device ids
+   - sky2: tx pause bug fix
+   - netdrvr: lp486e: fix typo
+   - mv643xx_eth: fix obvious typo, which caused build breakage
+   - zone_reclaim: dynamic slab reclaim
+   - Fix longstanding load balancing bug in the scheduler
+   - jbd: fix commit of ordered data buffers
+   - ALSA: Fix initiailization of user-space controls
+   - USB: Allow compile in g_ether, fix typo
+   - IB/mthca: Fix lid used for sending traps
+   - S390: user readable uninitialised kernel memory (CVE-2006-5174)
+   - zd1211rw: ZD1211B ASIC/FWT, not jointly decoder
+   - V4L: pvrusb2: Limit hor res for 24xxx devices
+   - V4L: pvrusb2: Suppress compiler warning
+   - V4L: pvrusb2: improve 24XXX config option description
+   - V4L: pvrusb2: Solve mutex deadlock
+   - DVB: cx24123: fix PLL divisor setup
+   - V4L: Fix msp343xG handling regression
+   - UML: Fix UML build failure
+   - uml: use DEFCONFIG_LIST to avoid reading host's config
+   - uml: allow using again x86/x86_64 crypto code
+   - NET_SCHED: Fix fallout from dev->qdisc RCU change
+  * Add backported git patch remving BSD secure level - request by the
+    Debian Security Team. (closes: 389282)
+  * [powerpc] Add DAC960-ipr PCI id table fixup.
+  * [powerpc] Fix uninitialised spinlock in via-pmu-backlight code.
+  * Fix serial_cs resume handling.
+  * Fix oops when removing suspended serial port.
+  * Check if DLC is still attached to the TTY.
+  * Add fedora backport of i965 DRM support.
+
+  [ Martin Michlmayr ]
+  * [mips] Apply some patches from linux-mips' linux-2.6.18-stable GIT tree:
+    - The o32 fstatat syscall behaves differently on 32 and 64 bit kernels
+    - fstatat syscall names
+    - BCM1480: Mask pending interrupts against c0_status.im.
+    - Cobalt: Time runs too quickly
+    - Show actual CPU information in /proc/cpuinfo
+    - Workaround for bug in gcc -EB / -EL options
+    - Do not use -msym32 option for modules
+    - Fix O32 personality(2) call with 0xffffffff argument
+    - Use compat_sys_mount
+
+  [ dann frazier ]
+  * [ia64]: Fix booting on HP cell systems, thanks to Troy Heber
+    - Enable CONFIG_HUGETLBFS
+    - bugfix/ia64/sal-flush-fix.patch: delay sal cache flush
+  * bugfix/sky2-receive-FIFO-fix.patch: fix sky2 hangs on some chips
+    Thanks to Stephen Hemminger for the patch. (Closes: #391382)
+  * features/all/drivers/cciss-support-for-gt-2TB-volumes.patch:
+    Add support for > 2TB volumes
+  * bugfix/sym2-dont-claim-raid-devs.patch: Prevent cpqarray/sym2 conflict
+    by telling sym2 not to claim raid devices. (Closes: #391384)
+
+  [ Sven Luther ]
+  * [powerpc] Added AMD74xx driver module to the powerpc64 flavour
+    (Closes: #391861).
+
+  [ Kyle McMartin ]
+  * [hppa] Force CROSS_COMPILE=hppa64-linux-gnu- (closes: #389296)
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 21 Oct 2006 15:59:43 +0200
+
+linux-2.6 (2.6.18-2) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * hppa: Fix compiler dependencies. (closes: #389296)
+  * Make cfq the default io scheduler.
+  * Add arcmsr (Areca) driver.
+  * powerpc/prep: Fix compatibility asm symlink.
+  * m68k: Disable initramfs support.
+
+  [ Kyle McMartin ]
+  * hppa: Add parisc patchset.
+
+  [ Norbert Tretkowski ]
+  * [alpha] Workaround undefined symbols by setting CONFIG_SCSI=y for smp flavour.
+    (closes: #369517)
+
+  [ Christian T. Steiges ]
+  * m68k: Update patches for 2.6.18.
+  * m68k: Re-Add m68k-as and m68k-macro patch which allow building with current binutils.
+  * m68k: disable CONFIG_AUDIT for m68k.
+  * m68k/mac: add m68k-no-backlight and m68k-fbcon patch.
+  * m68k/mac: enable SONIC, disable all ADB but CUDA.
+
+  [ Jurij Smakov ]
+  * Add bugfix/proc-fb-reading.patch to fix the inconsistent behaviour
+    of /proc/fb. (Closes: #388815)
+  * sparc: Enable vserver flavour for sparc64. (Closes: #386656)
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 29 Sep 2006 14:12:19 +0200
+
+linux-2.6 (2.6.18-1) unstable; urgency=low
+
+  The unpruned release
+
+  [ Martin Michlmayr ]
+  * Bump build-dependency on kernel-package to 10.054.
+  * arm/iop32x: Build ext2/3 as modules.
+  * arm/iop32x: Disable CONFIG_EMBEDDED.
+  * mipsel/r5k-cobalt: Enable ISDN.
+  * arm/footbridge: Enable the CIFS module (closes: #274808).
+  * arm/nslu2: Drop flavour since this machine is supported by arm/ixp4xx.
+  * arm: Make get_unaligned() work with const pointers and GCC 4.1.
+  * mipsel/r5k-cobalt: Enable CONFIG_BONDING as a module.
+  * arm/iop32x: Likewise.
+  * arm/ixp4xx: Likewise.
+  * arm: Disable CONFIG_AUDIT for now since it's broken.
+
+  [ Sven Luther ]
+  * [powerpc] Enabled the -prep flavour. (Closes: #359025)
+  * [powerpc] The sisfb framebuffer device is now builtin.
+  * [powerpc] Updated the powerpc serial patch. This fixes the XServe serial
+    port, but at the cost powermac pcmcia serial cards support.
+    Thanks go to Mark Hymers for providing the patch.
+    (Closes: #364637, #375194)
+  * [powerpc] Added patch to fix oldworld/quik booting.
+    Thanks fo to Christian Aichinger for investigating to Benjamin
+    Herrenschmidt for providing the patch. (Closes: #366620, #375035).
+  * [powerpc] Fixes hvc_console caused suspsend-to-disk breakage. Thanks to
+    Andrew Morton for providing the patch. (Closes: #387178)
+  * [powerpc] Disabled mv643xx_eth on powerpc64 flavours, as there never was a
+    Marvell Discovery northbrige for 64bit powerpc cpus.
+
+  [ Frederik Schüler ]
+  * Remove obsolete options from amd64 and i386 configs.
+  * Deactivate EVBUG.
+  * Make PARPORT options global.
+  * [i386] Add class definition for 486 flavour.
+
+  [ maximilian attems ]
+  * Enable CONFIG_PRINTER=m for all powerpc flavours.
+  * Enable the new alsa CONFIG_SND_AOA framework for powerpc.
+  * Add the merged advansys pci table patch.
+
+  [ Bastian Blank ]
+  * hppa: Use gcc-4.1.
+  * Only provide 16 legacy ptys.
+
+  [ Norbert Tretkowski ]
+  * [alpha] Updated configs.
+  * [alpha] Disabled CONFIG_AUDIT, broken.
+  * [alpha] Added vserver flavour.
+
+ -- Bastian Blank <waldi@debian.org>  Sun, 24 Sep 2006 15:55:37 +0200
+
+linux-2.6 (2.6.17-9) unstable; urgency=medium
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.0.2.
+    - Fix possible priviledge escalation in remount code. (CVE-2006-4243)
+
+  [ Frederik Schüler ]
+  * Add stable release 2.5.17.12:
+    - sky2: version 1.6.1
+    - sky2: fix fiber support
+    - sky2: MSI test timing
+    - sky2: use dev_alloc_skb for receive buffers
+    - sky2: clear status IRQ after empty
+    - sky2: accept flow control
+    - dm: Fix deadlock under high i/o load in raid1 setup.
+    - Remove redundant up() in stop_machine()
+    - Missing PCI id update for VIA IDE
+    - PKTGEN: Fix oops when used with balance-tlb bonding
+    - PKTGEN: Make sure skb->{nh,h} are initialized in fill_packet_ipv6() too.
+    - Silent data corruption caused by XPC
+    - uhci-hcd: fix list access bug
+    - binfmt_elf: fix checks for bad address
+    - [s390] bug in futex unqueue_me
+    - fcntl(F_SETSIG) fix
+    - IPV6 OOPS'er triggerable by any user
+    - SCTP: Fix sctp_primitive_ABORT() call in sctp_close().
+    - SPARC64: Fix X server crashes on sparc64
+    - TG3: Disable TSO by default
+    - dm: mirror sector offset fix
+    - dm: fix block device initialisation
+    - dm: add module ref counting
+    - dm: fix mapped device ref counting
+    - dm: add DMF_FREEING
+    - dm: change minor_lock to spinlock
+    - dm: move idr_pre_get
+    - dm: fix idr minor allocation
+    - dm snapshot: unify chunk_size
+    - Have ext2 reject file handles with bad inode numbers early.
+    - Allow per-route window scale limiting
+    - bridge-netfilter: don't overwrite memory outside of skb
+    - fix compilation error on IA64
+    - Fix output framentation of paged-skbs
+    - spectrum_cs: Fix firmware uploading errors
+    - TEXTSEARCH: Fix Boyer Moore initialization bug
+  * Add stable release 2.6.17.13:
+    - lib: add idr_replace
+    - pci_ids.h: add some VIA IDE identifiers
+  * Remove patches merged upstream:
+    - s390-kernel-futex-barrier.patch
+  * Unpatch ia64-mman.h-fix.patch
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 13 Sep 2006 14:54:14 +0200
+
+linux-2.6 (2.6.17-8) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * arm/ixp4xx: Enable CONFIG_W1.
+
+  [ dann frazier ]
+  * sound-pci-hda-mac-mini-quirks.diff, sound-pci-hda-intel-d965.diff
+    sound-pci-hda-mac-mini-intel945.diff:
+    Updates to patch_sigmatel.c to add x86 mac-mini sound support
+    Thanks to Matt Kraai. (closes: #384972)
+
+  [ Kyle McMartin ]
+  * hppa: Re-enable pa8800 fixing patches from James Bottomley.
+    Pulled fresh from parisc-linux git tree.
+  * ia64: Pull in compile-failure fix from Christian Cotte-Barrot.
+    Pulled from linux-ia64 mailing list. Fix is correct.
+  * hppa/alpha/mips: Fix compile-failure due to missing arch_mmap_check. Patch sent
+    upstream to stable@kernel.org.
+
+  [ dann frazier ]
+  * sym2: only claim "Storage" class devices - the cpqarray driver should be
+    used for 5c1510 devices in RAID mode. (closes: #380272)
+
+  [ Bastian Blank ]
+  * Backport change to allow all hypercalls for xen.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 31 Aug 2006 12:12:51 +0200
+
+linux-2.6 (2.6.17-7) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * arm/iop32x: Enable CONFIG_BLK_DEV_OFFBOARD.
+  * arm/iop32x: Unset CONFIG_BLK_DEV_AMD74XX since it fails on ARM
+    with "Unknown symbol pci_get_legacy_ide_irq".
+  * arm/iop32x: Enable a number of MD and DM modules.
+  * arm/iop32x: Enable some more USB network modules.
+  * mipsel/r5k-cobalt: Increase 8250 NR_UARTS and RUNTIME_UARTS to 4.
+  * mipsel/r5k-cobalt: Fix MAC detection problem on Qube 2700.
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.0.2-rc29.
+  * Add stable release 2.6.17.10:
+    - Fix possible UDF deadlock and memory corruption (CVE-2006-4145)
+    - elv_unregister: fix possible crash on module unload
+    - Fix sctp privilege elevation (CVE-2006-3745)
+
+  [ maximilian attems ]
+  * Add RAM range to longclass for -bigmem. (closes: 382799)
+  * Add stable release 2.6.17.9:
+    - powerpc: Clear HID0 attention enable on PPC970 at boot time
+    (CVE-2006-4093)
+  * Add stable release 2.6.17.11:
+    - Fix ipv4 routing locking bug
+    - disable debugging version of write_lock()
+    - PCI: fix ICH6 quirks
+    - 1394: fix for recently added firewire patch that breaks things on ppc
+    - Fix IFLA_ADDRESS handling
+    - Fix BeFS slab corruption
+    - Fix timer race in dst GC code
+    - Have ext3 reject file handles with bad inode numbers early
+    - Kill HASH_HIGHMEM from route cache hash sizing
+    - sys_getppid oopses on debug kernel
+    - IA64: local DoS with corrupted ELFs
+    - tpm: interrupt clear fix
+    - ulog: fix panic on SMP kernels
+    - dm: BUG/OOPS fix
+    - MD: Fix a potential NULL dereference in md/raid1
+    - ip_tables: fix table locking in ipt_do_table
+    - swsusp: Fix swap_type_of
+    - sky2: phy power problem on 88e805x
+    - ipx: header length validation needed
+
+  [ Frederik Schüler ]
+  * Activate CONFIG_R8169_VLAN on amd64. (closes: #383707)
+  * Activate EFI boot support on i386. (closes: #381951)
+
+  [ dann frazier ]
+  * Include module.lds in headers package if it exists. (closes: #342246)
+  * Add Apple MacBook product IDs to usbhid and set
+    CONFIG_USB_HIDINPUT_POWERBOOK=y on i386 and amd64. (closes: #383620)
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 24 Aug 2006 15:54:51 +0000
+
+linux-2.6 (2.6.17-6) unstable; urgency=low
+
+  [ maximilian attems ]
+  * debian/arch/i386/defines: Activate 686-bigmem flavour for enterprise
+  usage.
+  * Add ubuntu pci table patch for scsi drivers advansys and fdomain.
+
+  [ Martin Michlmayr ]
+  * arm/armeb: Use gcc-4.1.
+  * mips/mipsel: Use gcc-4.1.
+  * arm/ixp4xx: Update config based on the NSLU2 config.
+  * arm/s3c2410: Unset CONFIG_DEBUG_INFO.
+  * arm/iop32x: xscale: don't mis-report 80219 as an iop32x
+  * arm/iop32x: Add an MTD map for IOP3xx boards
+  * arm/iop32x: Add support for the Thecus N2100.
+  * arm/iop32x: Add support for the GLAN Tank.
+  * arm/iop32x: Add a flavour for IOP32x based machines.
+
+  [ Bastian Blank ]
+  * Shrink short descriptions.
+  * Make gcc-4.1 the default compiler.
+  * [powerpc]: Use gcc-4.1.
+  * Move latest and transitional packages to linux-latest-2.6.
+
+  [ Frederik Schüler ]
+  * [amd64] Add smp-alternatives backport.
+  * [amd64] Drop smp flavours.
+  * [amd64] Merge k8 and p4 flavours into a generic one, following upstreams
+    advice.
+  * Activate BSD_PROCESS_ACCT_V3.
+  * Add stable release 2.6.17.8:
+    - ALSA: Don't reject O_RDWR at opening PCM OSS
+    - Add stable branch to maintainers file
+    - tty serialize flush_to_ldisc
+    - S390: fix futex_atomic_cmpxchg_inatomic
+    - Fix budget-av compile failure
+    - cond_resched() fix
+    - e1000: add forgotten PCI ID for supported device
+    - ext3: avoid triggering ext3_error on bad NFS file handle
+    - ext3 -nobh option causes oops
+    - Fix race related problem when adding items to and svcrpc auth cache.
+    - ieee1394: sbp2: enable auto spin-up for Maxtor disks
+    - invalidate_bdev() speedup
+    - Sparc64 quad-float emulation fix
+    - VLAN state handling fix
+    - Update frag_list in pskb_trim
+    - UHCI: Fix handling of short last packet
+    - sky2: NAPI bug
+    - i2c: Fix 'ignore' module parameter handling in i2c-core
+    - scx200_acb: Fix the block transactions
+    - scx200_acb: Fix the state machine
+    - H.323 helper: fix possible NULL-ptr dereference
+    - Don't allow chmod() on the /proc/<pid>/ files
+    - PCI: fix issues with extended conf space when MMCONFIG disabled because of e820
+
+  [ Sven Luther ]
+  * [powerpc] Added console=hvsi0 too to CMDLINE to the powerpc64 flavour, for
+    non-virtualized IBM power machines serial console.
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 11 Aug 2006 19:58:06 +0200
+
+linux-2.6 (2.6.17-5) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * [arm/nslu2] Enable CONFIG_USB_EHCI_SPLIT_ISO.  Closes: #378554
+
+  [ maximilian attems ]
+  * Add stable release 2.6.17.7:
+    - BLOCK: Fix bounce limit address check
+    - v4l/dvb: Fix budget-av frontend detection
+    - v4l/dvb: Fix CI on old KNC1 DVBC cards
+    - v4l/dvb: Fix CI interface on PRO KNC1 cards
+    - v4l/dvb: Backport fix to artec USB DVB devices
+    - v4l/dvb: Backport the DISEQC regression fix to 2.6.17.x
+    - v4l/dvb: stradis: dont export MODULE_DEVICE_TABLE
+    - pnp: suppress request_irq() warning
+    - generic_file_buffered_write(): handle zero-length iovec segments
+    - serial 8250: sysrq deadlock fix
+    - Reduce ACPI verbosity on null handle condition
+    - ieee80211: TKIP requires CRC32
+    - Make powernow-k7 work on SMP kernels.
+    - via-velocity: the link is not correctly detected when the device starts
+    - Add missing UFO initialisations
+    - USB serial ftdi_sio: Prevent userspace DoS (CVE-2006-2936)
+    - cdrom: fix bad cgc.buflen assignment
+    - splice: fix problems with sys_tee()
+    - fix fdset leakage
+    - struct file leakage
+    - XFS: corruption fix
+    - v4l/dvb: Kconfig: fix description and dependencies for saa7115 module
+    - dvb-bt8xx: fix frontend detection for DViCO FusionHDTV DVB-T Lite rev 1.2
+    - IB/mthca: restore missing PCI registers after reset
+    - v4l/dvb: Backport the budget driver DISEQC instability fix
+    - Fix IPv4/DECnet routing rule dumping
+    - pdflush: handle resume wakeups
+    - x86_64: Fix modular pc speaker
+    - Fix powernow-k8 SMP kernel on UP hardware bug.
+    - ALSA: RME HDSP - fixed proc interface (missing {})
+    - ALSA: au88x0 - Fix 64bit address of MPU401 MMIO port
+    - ALSA: Fix a deadlock in snd-rtctimer
+    - ALSA: Fix missing array terminators in AD1988 codec support
+    - ALSA: Fix model for HP dc7600
+    - ALSA: Fix mute switch on VAIO laptops with STAC7661
+    - ALSA: fix the SND_FM801_TEA575X dependencies
+    - ALSA: Fix undefined (missing) references in ISA MIRO sound driver
+    - ALSA: Fix workaround for AD1988A rev2 codec
+    - ALSA: hda-intel - Fix race in remove
+    - Suppress irq handler mismatch messages in ALSA ISA drivers
+    - PKT_SCHED: Fix illegal memory dereferences when dumping actions
+    - PKT_SCHED: Return ENOENT if action module is unavailable
+    - PKT_SCHED: Fix error handling while dumping actions
+    - generic_file_buffered_write(): deadlock on vectored write
+    - ethtool: oops in ethtool_set_pauseparam()
+    - memory hotplug: solve config broken: undefined reference to `online_page'
+  * Add budget-av-compile-fix.patch stable compile fix.
+  * Enable in all configs setting SND_FM801_TEA575X SND_FM801_TEA575X_BOOL=y.
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 29 Jul 2006 13:30:06 +0200
+
+linux-2.6 (2.6.17-4) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.17.5:
+    - Fix nasty /proc vulnerability (CVE-2006-3626)
+  * Add stable release 2.6.17.6:
+    - Relax /proc fix a bit
+  * Set section of images to admin.
+
+  [ dann frazier ]
+  * [ia64] Drop the non-SMP flavours; they are not well maintained upstream.
+    Note that the non-SMP flavours have been identical to the SMP builds
+    since 2.6.13-1; this was to avoid having to drop then re-add these
+    flavours if upstream resolved the issue - but that never happened.
+    Note that this is a measurable performance penalty on non-SMP systems.
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 17 Jul 2006 11:08:41 +0200
+
+linux-2.6 (2.6.17-3) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Add stable release 2.6.17.2:
+    - ide-io: increase timeout value to allow for slave wakeup
+    - NTFS: Critical bug fix (affects MIPS and possibly others)
+    - Link error when futexes are disabled on 64bit architectures
+    - SCTP: Reset rtt_in_progress for the chunk when processing its sack.
+    - SPARC32: Fix iommu_flush_iotlb end address
+    - ETHTOOL: Fix UFO typo
+    - UML: fix uptime
+    - x86: compile fix for asm-i386/alternatives.h
+    - bcm43xx: init fix for possible Machine Check
+    - SCTP: Fix persistent slowdown in sctp when a gap ack consumes rx buffer.
+    - kbuild: bugfix with initramfs
+    - Input: return correct size when reading modalias attribute
+    - ohci1394: Fix broken suspend/resume in ohci1394
+    - idr: fix race in idr code
+    - USB: Whiteheat: fix firmware spurious errors
+    - libata: minor patch for ATA_DFLAG_PIO
+    - SCTP: Send only 1 window update SACK per message.
+    - PFKEYV2: Fix inconsistent typing in struct sadb_x_kmprivate.
+    - SCTP: Limit association max_retrans setting in setsockopt.
+    - SCTP: Reject sctp packets with broadcast addresses.
+    - IPV6: Sum real space for RTAs.
+    - IPV6 ADDRCONF: Fix default source address selection without
+      CONFIG_IPV6_PRIVACY
+    - IPV6: Fix source address selection.
+  * Add stable release 2.6.17.3:
+    - NETFILTER: SCTP conntrack: fix crash triggered by packet without chunks
+    [CVE-2006-2934]
+  * Deapply merged sparc32-iotlb.patch.
+  * Fix README.Debian: Correct svn location, remove old boot param bswap
+    reference, the asfs patch is in the Debian kernel. Remove reference to
+    AMD 768 erratum 10, it was solved in 2.6.12. Add wording corrections.
+  * Set CONFIG_SERIAL_8250_RN_UARTS=16 for all archs beside mips/m68k unless
+    explicitly set on a specific value. (closes: 377151)
+  * Add stable release 2.6.17.4:
+    - fix prctl privilege escalation and suid_dumpable (CVE-2006-2451)
+
+  [ Sven Luther ]
+  * Re-enabled fs-asfs patch.
+
+  [ Thiemo Seufer ]
+  * [mips,mipsel] Fix sb1 interrupt handlers.
+  * [mips,mipsel] Fix devfs-induced build failure in sb1250 serial driver.
+  * [mips] SGI ip22 RTC was broken, fixed thanks to Julien Blache.
+  * [mips] Fix SGI ip22 serial console, thanks to Julien Blache.
+
+  [ Martin Michlmayr ]
+  * [arm/nslu2] Enable HFS and some other filesystems.
+  * [arm/nslu2] Unset CONFIG_USB_STORAGE_DEBUG.  Closes: #377853.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 13 Jul 2006 13:14:53 +0200
+
+linux-2.6 (2.6.17-2) unstable; urgency=low
+
+  [ Jurij Smakov ]
+  * [sparc] Switch to gcc-4.1 as it produces a working kernel,
+    while gcc-4.0 does not. No ABI bump neccessary, because
+    2.6.17-1 sparc binaries never made it to the archive.
+  * [sparc32] Add sparc32-iotlb.patch to fix DMA errors on sparc32.
+
+  [ Sven Luther ]
+  * [powerpc] Added console=hvc0 default commandline option to powerpc64 flavour.
+  * [powerpc] Fixed mkvmlinuz support, which was missing from -1. (Closes: #375645)
+  * [powerpc] Added PowerBook HID support for last-gen PowerBook keyboards.
+    (Closes: #307327)
+
+  [ Martin Michlmayr ]
+  * [mipsel] Fix compilation error in dz serial driver.
+  * [mipsel] Update configs.
+  * [mipsel] Add a build fix for the Cobalt early console support.
+  * [arm/nslu2] Disable SE Linux support for now so the kernel fits into flash.
+
+  [ Christian T. Steigies ]
+  * [m68k] Update patches for 2.6.17.
+  * [m68k] Add m68k-as and m68k-macro patch which allow building with current binutils.
+  * [m68k] Disable all subarches but amiga and mac for official linux-images.
+
+  [ Kyle McMartin ]
+  * [hppa] Update patchset (2.6.17-pa6) from parisc-linux.org.
+    Which fixes relocation errors in modules with 64-bit kernels, and
+    a softlockup on non-SMP flavours with gettimeofday.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 29 Jun 2006 18:49:35 +0200
+
+linux-2.6 (2.6.17-1) unstable; urgency=low
+
+  [ Frederik Schüler ]
+  * New upstream release.
+  * [amd64] Use gcc 4.1.
+  * [amd64] Drop amd64-generic flavor. We will use amd64-k8 for the
+    installer.
+
+  [ Martin Michlmayr ]
+  * [mips] Update patches for 2.6.17.
+  * [arm] Update configs.
+  * [armeb] Update configs.
+
+  [ Thiemo Seufer ]
+  * [mips] Fix SWARM FPU detection.
+  * [mips] Update configurations.
+
+  [ Kyle McMartin ]
+  * [hppa] Set PDC_CHASSIS_WARN to y.
+  * [hppa] Update patchset (2.6.17-pa2) from parisc-linux.org.
+  * [hppa] Change NR_CPUS to 8 from 32 on both SMP flavours.
+  * [hppa] Set PARISC_PAGE_SIZE to 4K on all platforms.
+
+  [ Bastian Blank ]
+  * [s390] Use gcc 4.1.
+  * [i386] Enable REGPARM.
+  * [i386] Use gcc 4.1.
+  * [powerpc] Disable prep.
+
+  [ dann frazier ]
+  * [ia64] Update configs
+  * [ia64] Use gcc 4.1.
+
+  [ maximilian attems ]
+  * Add stable release 2.6.17.1:
+    - xt_sctp: fix endless loop caused by 0 chunk length (CVE-2006-3085)
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 22 Jun 2006 12:13:15 +0200
+
+linux-2.6 (2.6.16+2.6.17-rc3-0experimental.1) experimental; urgency=low
+
+  [ Frederik Schüler ]
+  * New upstream release candidate.
+  * Switch HZ from 1000 to 250, following upstreams default.
+  * Activate CONFIG_BCM43XX_DEBUG.
+
+  [ maximilian attems ]
+  * Disable broken and known unsecure LSM modules: CONFIG_SECURITY_SECLVL,
+    CONFIG_SECURITY_ROOTPLUG. Upstream plans to remove them for 2.6.18
+
+ -- Frederik Schüler <fs@debian.org>  Sun,  7 May 2006 17:06:29 +0200
+
+linux-2.6.16 (2.6.16-18) unstable; urgency=high
+
+  [ Sven Luther ]
+  * [powerpc] Added console=hvsi0 too to CMDLINE to the powerpc64 flavour,
+    for non-virtualized IBM power machines serial console.
+
+  [ dann frazier ]
+  * fs-ext3-bad-nfs-handle.patch: avoid triggering ext3_error on bad NFS
+    file handle (CVE-2006-3468)
+  * cdrom-bad-cgc.buflen-assign.patch: fix buffer overflow in dvd_read_bca
+  * usb-serial-ftdi_sio-dos.patch: fix userspace DoS in ftdi_sio driver
+
+  [ Bastian Blank ]
+  * Update xen patch to changeset 9762.
+
+ -- Frederik Schüler <fs@debian.org>  Fri, 18 Aug 2006 20:29:17 +0200
+
+linux-2.6.16 (2.6.16-17) unstable; urgency=high
+
+  [ Martin Michlmayr ]
+  * Add stable release 2.6.16.22:
+    - powernow-k8 crash workaround
+    - NTFS: Critical bug fix (affects MIPS and possibly others)
+    - JFS: Fix multiple errors in metapage_releasepage
+    - SPARC64: Fix D-cache corruption in mremap
+    - SPARC64: Respect gfp_t argument to dma_alloc_coherent().
+    - SPARC64: Fix missing fold at end of checksums.
+    - scsi_lib.c: properly count the number of pages in scsi_req_map_sg()
+    - I2O: Bugfixes to get I2O working again
+    - Missed error checking for intent's filp in open_namei().
+    - tmpfs: time granularity fix for [acm]time going backwards
+    - USB: Whiteheat: fix firmware spurious errors
+    - fs/namei.c: Call to file_permission() under a spinlock in do_lookup_path()
+  * Add stable release 2.6.16.23:
+    - revert PARPORT_SERIAL should depend on SERIAL_8250_PCI patch
+    - NETFILTER: SCTP conntrack: fix crash triggered by packet without
+      chunks (CVE-2006-2934)
+  * Add stable release 2.6.16.24:
+    - fix prctl privilege escalation and suid_dumpable (CVE-2006-2451)
+  * Add stable release 2.6.16.25:
+    - Fix nasty /proc vulnerability (CVE-2006-3626)
+  * Relax /proc fix a bit (Linus Torvalds)
+
+  * [arm/nslu2] Unset CONFIG_USB_STORAGE_DEBUG.  Closes: #377853.
+  * [mips] SGI ip22 RTC was broken, fixed thanks to Julien Blache.
+  * [mips] Fix SGI ip22 serial console, thanks to Julien Blache.
+
+  [ Bastian Blank ]
+  * Fix vserver patch.
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 15 Jul 2006 17:18:49 +0200
+
+linux-2.6.16 (2.6.16-16) unstable; urgency=low
+
+  [ Sven Luther ]
+  * [powerpc] Added console=hvc0 default commandline option to powerpc64 flavour.
+  * [powerpc] Now THERM_PM72 and all WINDFARMs are builtin, for better fan control.
+
+  [ Martin Michlmayr ]
+  * [arm/nslu2] Disable SE Linux support for now so the kernel fits into
+    flash.  Closes: #376926.
+
+  [ Bastian Blank ]
+  * [powerpc,powerpc-miboot] Enable OpenFirmware device tree support.
+    (closes: #376012)
+
+ -- Bastian Blank <waldi@debian.org>  Sat,  8 Jul 2006 17:57:57 +0200
+
+linux-2.6.16 (2.6.16-15) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Add stable release 2.6.16.18:
+    - NETFILTER: SNMP NAT: fix memory corruption (CVE-2006-2444)
+  * Add stable release 2.6.16.19:
+    - NETFILTER: Fix small information leak in SO_ORIGINAL_DST (CVE-2006-1343)
+  * Add stable release 2.6.16.20:
+    - x86_64: Don't do syscall exit tracing twice
+    - Altix: correct ioc4 port order
+    - Input: psmouse - fix new device detection logic
+    - PowerMac: force only suspend-to-disk to be valid
+    - the latest consensus libata resume fix
+    - Altix: correct ioc3 port order
+    - Cpuset: might sleep checking zones allowed fix
+    - ohci1394, sbp2: fix "scsi_add_device failed" with PL-3507 based devices
+    - sbp2: backport read_capacity workaround for iPod
+    - sbp2: fix check of return value of hpsb_allocate_and_register_addrspace
+    - x86_64: x86_64 add crashdump trigger points
+    - ipw2200: Filter unsupported channels out in ad-hoc mode
+  * Add stable release 2.6.16.21:
+    - check_process_timers: fix possible lockup
+    - run_posix_cpu_timers: remove a bogus BUG_ON() (CVE-2006-2445)
+    - xt_sctp: fix endless loop caused by 0 chunk length (CVE-2006-3085)
+    - powerpc: Fix machine check problem on 32-bit kernels (CVE-2006-2448)
+
+  [ Christian T. Steigies ]
+  * [m68k] Add mac via patch from Finn Thain.
+  * [m68k] Enable INPUT_EVDEV.
+
+  [ Martin Michlmayr ]
+  * [mips/b1-bcm91250a] Enable SMP.
+  * [mips] Add a compile fix for the Maxine fb.
+  * [mipsel] Add a patch that let's you enable serial console on DECstation.
+  * [mipsel] Add a patch to get SCSI working on DECstation.
+  * [mipsel] Handle memory-mapped RTC chips properly.
+  * [mipsel] Add configs for r3k-kn02 and r4k-kn04 DECstation.
+  * [arm] Allow RiscPC machines to boot an initrd (tagged list fix).
+  * [arm/nslu2] Enable many modules.
+  * [arm] Build loop support as a module.
+  * [arm] Use the generic netfilter configuration.
+  * [arm/footbridge] Enable sound.
+
+  [ Kyle McMartin ]
+  * [hppa] Pulled patch from cvs to fix build of kernel/ptrace.c which needs
+    {read,write}_can_lock.
+  * [hppa] Disable CONFIG_DETECT_SOFTLOCKUP to fix boot on pa8800 machines.
+
+  [ Sven Luther ]
+  * [powerpc,prep] Added a new ARCH=ppc PReP flavour, currently mostly a copy
+    of the -powerpc one.
+  * Upgraded mkvmlinuz dependency to mkvmlinuz 21.
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.0.2-rc21.
+  * Bump build-dependency on kernel-package to 10.049.
+
+  [ Jurij Smakov ]
+  * Add dcache-memory-corruption.patch to fix the mremap(), occasionally
+    triggered on sparc in the form of dpkg database corruption. Affects
+    sparc64, mips and generic includes. Thanks to David Miller, original
+    patch is included in 2.6.17.
+    Ref: http://marc.theaimsgroup.com/?l=linux-sparc&m=114920963824047&w=2
+  * Add sparc32-iotlb.patch to fix the DMA errors encountered with latest
+    kernels on sparc32, in particularly HyperSparcs. Thanks to Bob Breuer.
+    Ref: http://marc.theaimsgroup.com/?l=linux-sparc&m=115077649707675&w=2
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 21 Jun 2006 14:09:11 +0200
+
+linux-2.6 (2.6.16-14) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.16.16:
+    - fs/locks.c: Fix lease_init (CVE-2006-1860)
+  * Make i386 xen images recommend libc6-xen.
+  * Update vserver patch to 2.0.2-rc20.
+  * Update xen patch to changeset 9687.
+
+  [ Christian T. Steigies ]
+  * [m68k] Add generic m68k ide fix.
+  * [m68k] Add cross-compile instructions.
+  * [m68k] Enable INPUT_EVDEV for yaird.
+  * [m68k] sun3 general compile and scsi fixes, enable sun3 SCSI again.
+
+  [ dann frazier ]
+  * cs4281 - Fix the check of timeout in probe to deal with variable HZ.
+    (closes: #361197)
+
+  [ Norbert Tretkowski ]
+  * [alpha] Readded patch to support prctl syscall, got lost when upgrading
+    to 2.6.16.
+
+  [ Frederik Schüler ]
+  * Add stable release 2.6.16.17:
+    - SCTP: Validate the parameter length in HB-ACK chunk (CVE-2006-1857)
+    - SCTP: Respect the real chunk length when walking parameters
+      (CVE-2006-1858)
+    - ptrace_attach: fix possible deadlock schenario with irqs
+    - Fix ptrace_attach()/ptrace_traceme()/de_thread() race
+    - page migration: Fix fallback behavior for dirty pages
+    - add migratepage address space op to shmem
+    - Remove cond_resched in gather_stats()
+    - VIA quirk fixup, additional PCI IDs
+    - PCI quirk: VIA IRQ fixup should only run for VIA southbridges
+    - Fix udev device creation
+    - limit request_fn recursion
+    - PCI: correctly allocate return buffers for osc calls
+    - selinux: check for failed kmalloc in security_sid_to_context()
+    - TG3: ethtool always report port is TP.
+    - Netfilter: do_add_counters race, possible oops or info leak
+      (CVE-2006-0039)
+    - scx200_acb: Fix resource name use after free
+    - smbus unhiding kills thermal management
+    - fs/compat.c: fix 'if (a |= b )' typo
+    - smbfs: Fix slab corruption in samba error path
+    - fs/locks.c: Fix sys_flock() race
+    - USB: ub oops in block_uevent
+    - via-rhine: zero pad short packets on Rhine I ethernet cards
+    - md: Avoid oops when attempting to fix read errors on raid10
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 22 May 2006 14:56:11 +0200
+
+linux-2.6 (2.6.16-13) unstable; urgency=low
+
+  [ Frederik Schüler ]
+  * Add stable release 2.6.16.14:
+    - smbfs chroot issue (CVE-2006-1864)
+
+  [ Bastian Blank ]
+  * Don't make headers packages depend on images.
+  * Bump abiname to 2. (closes: #366291)
+  * Update vserver patch to 2.0.2-rc19.
+  * Update xen patch to changeset 9668.
+  * Remove abi fixes.
+  * Add stable release 2.6.16.15:
+    - SCTP: Allow spillover of receive buffer to avoid deadlock. (CVE-2006-2275)
+    - SCTP: Fix panic's when receiving fragmented SCTP control chunks. (CVE-2006-2272)
+    - SCTP: Fix state table entries for chunks received in CLOSED state. (CVE-2006-2271)
+    - SCTP: Prevent possible infinite recursion with multiple bundled DATA. (CVE-2006-2274)
+  * Switch HZ from 1000 to 250.
+
+  [ Christian T. Steigies ]
+  * [m68k] Add patches that allow building images for atari
+  * [m68k] Enable atyfb driver for atari
+
+ -- Bastian Blank <waldi@debian.org>  Wed, 10 May 2006 18:58:44 +0200
+
+linux-2.6 (2.6.16-12) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.16.12:
+    - dm snapshot: fix kcopyd destructor
+    - x86_64: Pass -32 to the assembler when compiling the 32bit vsyscall pages
+    - for_each_possible_cpu
+    - Simplify proc/devices and fix early termination regression
+    - sonypi: correct detection of new ICH7-based laptops
+    - MIPS: Fix tx49_blast_icache32_page_indexed.
+    - NET: e1000: Update truesize with the length of the packet for packet split
+    - i386: fix broken FP exception handling
+    - tipar oops fix
+    - USB: fix array overrun in drivers/usb/serial/option.c
+    - Altix snsc: duplicate kobject fix
+    - Alpha: strncpy() fix
+    - LSM: add missing hook to do_compat_readv_writev()
+    - Fix reiserfs deadlock
+    - make vm86 call audit_syscall_exit
+    - fix saa7129 support in saa7127 module for pvr350 tv out
+    - dm flush queue EINTR
+    - get_dvb_firmware: download nxt2002 firmware from new driver location
+    - cxusb-bluebird: bug-fix: power down corrupts frontend
+    - x86_64: Fix a race in the free_iommu path.
+    - MIPS: Use "R" constraint for cache_op.
+    - MIPS: R2 build fixes for gcc < 3.4.
+    - cs5535_gpio.c: call cdev_del() during module_exit to unmap kobject references and other cleanups
+    - MIPS: Fix branch emulation for floating-point exceptions.
+    - x86/PAE: Fix pte_clear for the >4GB RAM case
+  * Add stable release 2.6.16.13:
+    - NETFILTER: SCTP conntrack: fix infinite loop (CVE-2006-1527)
+  * Remove merged patches.
+  * Rediff xen patch.
+  * Bump build-dependency on kernel-package to 10.047.
+
+  [ Martin Michlmayr ]
+  * [arm] Enable cramfs for ixp4xx and rpc.
+
+ -- Bastian Blank <waldi@debian.org>  Thu,  4 May 2006 11:37:26 +0200
+
+linux-2.6 (2.6.16-11) unstable; urgency=low
+
+  * Update vserver patch to 2.0.2-rc18.
+    - Limit ccaps to root inside a guest (CVE-2006-2110)
+  * Conflict with known broken grub versions. (closes: #361308)
+  * Enable s390 vserver image.
+  * Enable xen and xen-vserver images.
+  * Use localversion for kernel-package images. (closes: #365505)
+
+ -- Bastian Blank <waldi@debian.org>  Mon,  1 May 2006 16:38:45 +0200
+
+linux-2.6 (2.6.16-10) unstable; urgency=low
+
+  [ Norbert Tretkowski ]
+  * [alpha] Added backport of for_each_possible_cpu() to fix alpha build.
+    (closes: #364206)
+  * Add stable release 2.6.16.10:
+    - IPC: access to unmapped vmalloc area in grow_ary()
+    - Add more prevent_tail_call()
+    - alim15x3: ULI M-1573 south Bridge support
+    - apm: fix Armada laptops again
+    - fbdev: Fix return error of fb_write
+    - Fix file lookup without ref
+    - m41t00: fix bitmasks when writing to chip
+    - Open IPMI BT overflow
+    - x86: be careful about tailcall breakage for sys_open[at] too
+    - x86: don't allow tail-calls in sys_ftruncate[64]()
+    - IPV6: XFRM: Fix decoding session with preceding extension header(s).
+    - IPV6: XFRM: Don't use old copy of pointer after pskb_may_pull().
+    - IPV6: Ensure to have hop-by-hop options in our header of &sk_buff.
+    - selinux: Fix MLS compatibility off-by-one bug
+    - PPC: fix oops in alsa powermac driver
+    - MTD_NAND_SHARPSL and MTD_NAND_NANDSIM should be tristate's
+    - i2c-i801: Fix resume when PEC is used
+    - Fix hotplug race during device registration
+    - Fix truesize underflow
+    - efficeon-agp: Add missing memory mask
+    - 3ware 9000 disable local irqs during kmap_atomic
+    - 3ware: kmap_atomic() fix
+
+  [ maximilian attems ]
+  * Add stable release 2.6.16.11:
+    -  Don't allow a backslash in a path component (CVE-2006-1863)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 25 Apr 2006 13:56:19 +0200
+
+linux-2.6 (2.6.16-9) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Add stable release 2.6.16.8:
+    - ip_route_input panic fix (CVE-2006-1525)
+  * Add stable release 2.6.16.9:
+    - i386/x86-64: Fix x87 information leak between processes (CVE-2006-1056)
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.0.2-rc17.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 20 Apr 2006 15:37:28 +0200
+
+linux-2.6 (2.6.16-8) unstable; urgency=low
+
+  * Fix ABI-breakage introduced in -7. (closes: #363032)
+  * Add stable release 2.6.16.6:
+    - ext3: Fix missed mutex unlock
+    - RLIMIT_CPU: fix handling of a zero limit
+    - alpha: SMP boot fixes
+    - m32r: security fix of {get, put}_user macros
+    - m32r: Fix cpu_possible_map and cpu_present_map initialization for SMP kernel
+    - shmat: stop mprotect from giving write permission to a readonly attachment (CVE-2006-1524)
+    - powerpc: fix incorrect SA_ONSTACK behaviour for 64-bit processes
+    - MPBL0010 driver sysfs permissions wide open
+    - cciss: bug fix for crash when running hpacucli
+    - fuse: fix oops in fuse_send_readpages()
+    - Fix utime(2) in the case that no times parameter was passed in.
+    - Fix buddy list race that could lead to page lru list corruptions
+    - NETFILTER: Fix fragmentation issues with bridge netfilter
+    - USB: remove __init from usb_console_setup
+    - Fix suspend with traced tasks
+    - isd200: limit to BLK_DEV_IDE
+    - edac_752x needs CONFIG_HOTPLUG
+    - fix non-leader exec under ptrace
+    - sky2: bad memory reference on dual port cards
+    - atm: clip causes unregister hang
+    - powerpc: iSeries needs slb_initialize to be called
+    - Fix block device symlink name
+    - Incorrect signature sent on SMB Read
+  * Add stable release 2.6.16.7:
+    - fix MADV_REMOVE vulnerability (CVE-2006-1524 for real this time)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 18 Apr 2006 16:22:31 +0200
+
+linux-2.6 (2.6.16-7) unstable; urgency=low
+
+  [ Frederik Schüler ]
+  * Add stable release 2.6.16.3:
+    - Keys: Fix oops when adding key to non-keyring (CVE-2006-1522)
+
+  [ Bastian Blank ]
+  * Add stable release 2.6.16.4:
+    - RCU signal handling (CVE-2006-1523)
+
+  [ Sven Luther ]
+  * [powerpc] Transitioned mkvmlinuz support patch to the 2.6.16 ARCH=powerpc
+    tree. PReP is broken in 2.6.16 though.
+
+  [ maximilian attems ]
+  * Add stable release 2.6.16.5:
+   - x86_64: Clean up execve
+   - x86_64: When user could have changed RIP always force IRET (CVE-2006-0744)
+  * Disable CONFIG_SECCOMP (adds useless overhead on context-switch) -
+    thanks to fs for checking abi.
+
+  [ Christian T. Steigies ]
+  * [m68k] update m68k patch and config to 2.6.16, temporarily disable atari
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 15 Apr 2006 13:56:05 +0200
+
+linux-2.6 (2.6.16-6) unstable; urgency=medium
+
+  [ Bastian Blank ]
+  * Provide version infos in support package and don't longer rely on the
+    changelog.
+  * [amd64/i386] Enable cpu hotplug support.
+
+  [ maximilian attems ]
+  * Add stable release 2.6.16.2:
+    - PCMCIA_SPECTRUM must select FW_LOADER
+    - drivers/net/wireless/ipw2200.c: fix an array overun
+    - AIRO{,_CS} <-> CRYPTO fixes
+    - tlclk: fix handling of device major
+    - fbcon: Fix big-endian bogosity in slow_imageblit()
+    - Fix NULL pointer dereference in node_read_numastat()
+    - USB: EHCI full speed ISO bugfixes
+    - Mark longhaul driver as broken.
+    - fib_trie.c node freeing fix
+    - USB: Fix irda-usb use after use
+    - sysfs: zero terminate sysfs write buffers (CVE-2006-1055)
+    - USB: usbcore: usb_set_configuration oops (NULL ptr dereference)
+    - pcmcia: permit single-character-identifiers
+    - hostap: Fix EAPOL frame encryption
+    - wrong error path in dup_fd() leading to oopses in RCU
+    - {ip, nf}_conntrack_netlink: fix expectation notifier unregistration
+    - isicom must select FW_LOADER
+    - knfsd: Correct reserved reply space for read requests.
+    - Fix module refcount leak in __set_personality()
+    - sbp2: fix spinlock recursion
+    - powerpc: make ISA floppies work again
+    - opti9x - Fix compile without CONFIG_PNP
+    - Add default entry for CTL Travel Master U553W
+    - Fix the p4-clockmod N60 errata workaround.
+    - kdump proc vmcore size oveflow fix
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 10 Apr 2006 16:09:51 +0200
+
+linux-2.6 (2.6.16-5) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Provide real dependency packages for module building.
+    - Add linux-headers-$version-$abiname-all and
+      linux-headers-$version-$abiname-all-$arch.
+  * Rename support package to linux-support-$version-$abiname.
+  * Fix module package output.
+  * Include .kernelrelease in headers packages. (closes: #359813)
+  * Disable Cumana partition support completely. (closes: #359207)
+  * Update vserver patch to 2.0.2-rc15.
+
+  [ dann frazier ]
+  * [ia64] initramfs-tools works now, no longer restrict initramfs-generators
+
+ -- Bastian Blank <waldi@debian.org>  Mon,  3 Apr 2006 14:00:08 +0200
+
+linux-2.6 (2.6.16-4) unstable; urgency=medium
+
+  [ Martin Michlmayr ]
+  * [arm/armeb] Update nslu2 config.
+  * Add stable release 2.6.16.1:
+    - Fix speedstep-smi assembly bug in speedstep_smi_ownership
+    - DMI: fix DMI onboard device discovery
+    - cciss: fix use-after-free in cciss_init_one
+    - DM: Fix bug: BIO_RW_BARRIER requests to md/raid1 hang.
+    - fix scheduler deadlock
+    - proc: fix duplicate line in /proc/devices
+    - rtc.h broke strace(1) builds
+    - dm: bio split bvec fix
+    - v9fs: assign dentry ops to negative dentries
+    - i810fb_cursor(): use GFP_ATOMIC
+    - NET: Ensure device name passed to SO_BINDTODEVICE is NULL terminated.
+    - XFS writeout fix
+    - sysfs: fix a kobject leak in sysfs_add_link on the error path
+    - get_cpu_sysdev() signedness fix
+    - firmware: fix BUG: in fw_realloc_buffer
+    - sysfs: sysfs_remove_dir() needs to invalidate the dentry
+    - TCP: Do not use inet->id of global tcp_socket when sending RST (CVE-2006-1242)
+    - 2.6.xx: sata_mv: another critical fix
+    - Kconfig: VIDEO_DECODER must select FW_LOADER
+    - V4L/DVB (3324): Fix Samsung tuner frequency ranges
+    - sata_mv: fix irq port status usage
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 28 Mar 2006 17:19:10 +0200
+
+linux-2.6 (2.6.16-3) unstable; urgency=low
+
+  [ Frederik Schüler ]
+  * [amd64] Add asm-i386 to the linux-headers packages.
+
+  [ Jonas Smedegaard ]
+  * Tighten yaird dependency to at least 0.0.12-8 (supporting Linux
+    2.6.16 uppercase hex in Kconfig and new IDE sysfs naming, and VIA
+    IDE on powerpc).
+
+  [ Martin Michlmayr ]
+  * [arm/armeb] Enable CONFIG_NFSD on NSLU2 again.  Closes: #358709.
+  * [arm/footbridge] CONFIG_NE2K_PCI should be a module, not built-in.
+  * [arm/footbridge] Enable CONFIG_BLK_DEV_IDECD=m since the CATS can
+    have a CD-ROM drive.
+  * [mips/sb1*] Use ttyS rather than duart as the name for the serial
+    console since the latter causes problems with debian-installer.
+
+  [ Bastian Blank ]
+  * Update vserver patch to 2.0.2-rc14.
+    - Fix sendfile. (closes: #358391, #358752)
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 27 Mar 2006 16:08:20 +0200
+
+linux-2.6 (2.6.16-2) unstable; urgency=low
+
+  [ dann frazier ]
+  * [ia64] Set unconfigured options:
+      CONFIG_PNP_DEBUG=n and CONFIG_NET_SB1000=m
+  * [hppa] Update config for 2.6.16
+
+  [ Martin Michlmayr ]
+  * [mips/mipsel] Put something in the generic config file because diff
+    will otherwise remove the empty file, causing the build to fail.
+  * [mipsel/r5k-cobalt] Set CONFIG_PACKET=y.
+  * [arm] Set CONFIG_MACLIST=y for ixp4xx because nas100d needs it.
+
+  [ Frederik Schüler ]
+  * Add Maximilian Attems to uploaders list.
+
+ -- Martin Michlmayr <tbm@cyrius.com>  Wed, 22 Mar 2006 15:15:14 +0000
+
+linux-2.6 (2.6.16-1) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * New upstream release.
+  * Default to initramfs-tools 0.55 or higher on s390.
+
+  [ maximilian attems ]
+  * Default to initramfs-tools on arm and armeb.
+
+  [ Martin Michlmayr ]
+  * [mips/mipsel] Add an image for the Broadcom BCM91480B evaluation board
+    (aka "BigSur").
+  * [arm, armeb] Enable the netconsole module.
+  * [mipsel/cobalt] Enable the netconsole module.
+  * [mips] SB1: Fix interrupt disable hazard (Ralf Baechle).
+  * [mips] SB1: Support for 1480 ethernet (Broadcom).
+  * [mips] SB1: Support for NAPI (Tom Rix).
+  * [mips] SB1: DUART support (Broadcom).
+  * [mips] Work around bad code generation for <asm/io.h> (Ralf Baechle).
+  * [mips] Fix VINO drivers when using a 64-bit kernel (Mikael Nousiainen).
+  * [arm/armeb] Update configs for 2.6.16.
+  * [mips/mipsel] Update configs for 2.6.16.
+  * [arm/armeb] Enable the SMB module on NSLU2.
+  * [mipsel] Enable parallel port modules for Cobalt since there are PCI
+    cards that can be used in a Qube.
+  * [mipsel] Enable the JFS module on Cobalt.
+
+  [ dann frazier ]
+  * [ia64] use yaird on ia64 until #357414 is fixed
+  * [ia64] Update configs for 2.6.16
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 21 Mar 2006 16:12:16 +0100
+
+linux-2.6 (2.6.15+2.6.16-rc5-0experimental.1) experimental; urgency=low
+
+  [ Frederik Schüler ]
+  * New upstream release candidate.
+
+  [ Martin Michlmayr ]
+  * Add initial mips/mipsel 2.6 kernels.
+  * Important changes compared to the 2.4 kernels:
+    - Drop the XXS1500 flavour since there's little interest in it.
+    - Drop the LASAT flavour since these machines never went into
+      production.
+    - Drop the IP22 R5K (Indy, Indigo2) flavour since the IP22 R4K
+      image now also works on machines with a R5K CPU.
+    - Add an image for SGI IP32 (O2).
+    - Rename the sb1-swarm-bn flavour to sb1-bcm91250a.
+    - Enable PCI network (and other) modules on Cobalt.  Closes: #315895.
+  * Add various MIPS related patches:
+    - Fix iomap compilation on machines without COW.
+    - Improve gettimeofday on MIPS.
+    - Fix an oops on IP22 zerilog (serial console).
+    - Improve IDE probing so it won't take so long on Cobalt.
+    - Probe for IDE disks on SWARM.
+    - Test whether there's a scache (fixes Cobalt crash).
+    - Add Tulip fixes for Cobalt.
+  * Fix a typo in the description of the linux-doc-* package,
+    thanks Justin Pryzby.  Closes: #343424.
+  * [arm] Enable nfs and nfsd modules.
+  * [arm/footbride] Suggest nwutil (Netwinder utilities).
+
+ -- Frederik Schüler <fs@debian.org>  Thu,  9 Mar 2006 14:13:17 +0000
+
+linux-2.6 (2.6.15+2.6.16-rc4-0experimental.1) experimental; urgency=low
+
+  [ Frederik Schüler ]
+  * New upstream release.
+  * Activate CONFIG_DVB_AV7110_OSD on alpha amd64 and ia64.
+    Closes: #353292
+  * Globally enable NAPI on all network card drivers which support it.
+
+  [ maximilian attems ]
+  * Drop fdutils from i386 and amd64 Suggests.
+  * Swap lilo and grub Suggests for i386 and amd64.
+
+  [ Jurij Smakov ]
+  * Make sure that LOCALVERSION environment variable is not
+    passed to a shell while invoking make-kpkg, since it
+    appends it to the version string, breaking the build.
+    Closes: #349472
+  * [sparc32] Re-enable the building of sparc32 images.
+  * [sparc64] Re-add (partial) sparc64-atyf-xl-gr.patch, since it
+    was only partially applied upstream, so the problem (garbled
+    screen output on SunBlade 100) is still present. Thanks to
+    Luis Ortiz for pointing it out.
+  * Bump the build-dep on kernel-package to 10.035, which fixes
+    the problem with building documentation packages.
+
+  [ Martin Michlmayr ]
+  * [sparc] Add sys_newfstatat -> sys_fstatat64 fix from git.
+  * [arm] Update configs for 2.6.16-rc3.
+  * [armeb] Update configs for 2.6.16-rc3.
+  * [arm/armeb] Fix compilation error on NSLU2 due to recent flash
+    changes.
+  * [arm/armeb] Fix a compilation error in the IXP4xx beeper support
+    (Alessandro Zummo).
+
+  [ Norbert Tretkowski ]
+  * [alpha] Update arch/alpha/config* for 2.6.16-rc3.
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 24 Feb 2006 16:02:11 +0000
+
+linux-2.6 (2.6.15-8) unstable; urgency=high
+
+  [ maximilian attems ]
+  * Add stable Release 2.6.15.5:
+    - Fix deadlock in br_stp_disable_bridge
+    - Fix a severe bug
+    - i386: Move phys_proc_id/early intel workaround to correct function
+    - ramfs: update dir mtime and ctime
+    - sys_mbind sanity checking
+    - Fix s390 build failure.
+    - Revert skb_copy_datagram_iovec() recursion elimination.
+    - s390: add #ifdef __KERNEL__ to asm-s390/setup.h
+    - netfilter missing symbol has_bridge_parent
+    - hugetlbfs mmap ENOMEM failure
+    - IB/mthca: max_inline_data handling tweaks
+    - it87: Fix oops on removal
+    - hwmon it87: Probe i2c 0x2d only
+    - reiserfs: disable automatic enabling of reiserfs inode attributes
+    - Fix snd-usb-audio in 32-bit compat environment
+    - dm: missing bdput/thaw_bdev at removal
+    - dm: free minor after unlink gendisk
+    - gbefb: IP32 gbefb depth change fix
+    - shmdt cannot detach not-alined shm segment cleanly.
+    - Address autoconfiguration does not work after device down/up cycle
+    - gbefb: Set default of FB_GBE_MEM to 4 MB
+    - XFS ftruncate() bug could expose stale data (CVE-2006-0554)
+    - sys_signal: initialize ->sa_mask
+    - do_sigaction: cleanup ->sa_mask manipulation
+    - fix zap_thread's ptrace related problems
+    - fix deadlock in ext2
+    - cfi: init wait queue in chip struct
+    - sd: fix memory corruption with broken mode page headers
+    - sbp2: fix another deadlock after disconnection
+    - skge: speed setting
+    - skge: fix NAPI/irq race
+    - skge: genesis phy initialization fix
+    - skge: fix SMP race
+    - x86_64: Check for bad elf entry address (CVE-2006-0741)
+    - alsa: fix bogus snd_device_free() in opl3-oss.c
+    - ppc32: Put cache flush routines back into .relocate_code section
+    - sys32_signal() forgets to initialize ->sa_mask
+    - Normal user can panic NFS client with direct I/O (CVE-2006-0555)
+  * Deactivate merged duplicates: s390-klibc-buildfix.patch,
+    powerpc-relocate_code.patch.
+  * Add stable Release 2.6.15.6:
+    - Don't reset rskq_defer_accept in reqsk_queue_alloc
+    - fs/nfs/direct.c compile fix
+    - mempolicy.c compile fix, make sure BITS_PER_BYTE is defined
+    - [IA64] die_if_kernel() can return (CVE-2006-0742)
+
+  [ Sven Luther ]
+  * [powerpc] Disabled CONFIG_IEEE1394_SBP2_PHYS_DMA, which was broken on
+    powerpc64, as it used the long deprecated bus_to_virt symbol.
+    (Closes: #330225)
+  * [powerpc] Fixed gettimeofday breakage causing clock drift.
+
+ -- Bastian Blank <waldi@debian.org>  Mon,  6 Mar 2006 11:06:28 +0100
+
+linux-2.6 (2.6.15-7) unstable; urgency=low
+
+  [ Norbert Tretkowski ]
+  * [alpha] Disabled CONFIG_ALPHA_LEGACY_START_ADDRESS for -alpha-generic and
+    -alpha-smp flavours, and introduced a new -alpha-legacy flavour for MILO
+    based machines, which has CONFIG_ALPHA_LEGACY_START_ADDRESS enabled.
+    (closes: #352186)
+  * [alpha] Added new patch to support prctl syscall. (closes: #349765)
+  * [i386] Renamed kernel-image-2.6-486 to kernel-image-2.6-386, it's meant for
+    transition only, and kernel-image-2.6-386 is the package name in sarge.
+
+  [ Jurij Smakov ]
+  * Bump build-dependency on kernel-package to 10.035, which is fixed
+    to build the documentation packages again.
+    Closes: #352000, #348332
+
+  [ Frederik Schüler ]
+  * Activate CONFIG_DVB_AV7110_OSD on alpha amd64 and ia64.
+    Closes: #353292
+  * Deactivate CONFIG_FB_ATY_XL_INIT on all architectures: it is broken and
+    already removed in 2.6.16-rc.
+    Closes: #353310
+
+  [ Christian T. Steigies ]
+  * [m68k] build in cirrusfb driver
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 21 Feb 2006 17:35:21 +0000
+
+linux-2.6 (2.6.15-6) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * Moved the mkvmlinuz support patch modification to a -1 version of the
+    patch.
+
+  [ maximilian attems ]
+  * Add stable treee 2.6.15.4
+    - PCMCIA=m, HOSTAP_CS=y is not a legal configuration
+    - Input: iforce - do not return ENOMEM upon successful allocation
+    - x86_64: Let impossible CPUs point to reference per cpu data
+    - x86_64: Clear more state when ignoring empty node in SRAT parsing
+    - x86_64: Dont record local apic ids when they are disabled in MADT
+    - Fix keyctl usage of strnlen_user()
+    - Kill compat_sys_clock_settime sign extension stub.
+    - Input: grip - fix crash when accessing device
+    - Input: db9 - fix possible crash with Saturn gamepads
+    - Input: iforce - fix detection of USB devices
+    - Fixed hardware RX checksum handling
+    - SCSI: turn off ordered flush barriers
+    - Input: mousedev - fix memory leak
+    - seclvl settime fix
+    - fix regression in xfs_buf_rele
+    - md: remove slashes from disk names when creation dev names in sysfs
+    - d_instantiate_unique / NFS inode leakage
+    - dm-crypt: zero key before freeing it
+    - bridge: netfilter races on device removal
+    - bridge: fix RCU race on device removal
+    - SELinux: fix size-128 slab leak
+    - __cmpxchg() must really always be inlined
+    - emu10k1 - Fix the confliction of 'Front' control
+    - Input: sidewinder - fix an oops
+  * Deactivate merged alpha-cmpxchg-inline.patch, sparc64-clock-settime.patch.
+
+  [ Christian T. Steigies ]
+  * [m68k] Add fix for m68k/buddha IDE and m68k/mac SCSI driver
+  * [m68k] Patch by Peter Krummrich to stop flickering pixels with PicassoII
+  * [m68k] make Amiga keyboard usable again, patch by Roman Zippel
+  * [m68k] prevent wd33c93 SCSI driver from crashing the kernel, patch by Roman Zippel
+  * [m68k] remove SBCs from VME descriptions (closes: #351924)
+
+ -- Frederik Schüler <fs@debian.org>  Fri, 10 Feb 2006 15:33:21 +0000
+
+linux-2.6 (2.6.15-5) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * Add a fix for the input support for the ixp4xx beeper driver from
+    2.6.16-rc2.
+  * Add stable tree 2.6.15.3:
+    - Fix extra dst release when ip_options_echo fails (CVE-2006-0454)
+
+  [ Sven Luther ]
+  * [powerpc] Removed -o root -g root option to mkvmlinuz support patch.
+    (Closes: #351412)
+
+ -- Sven Luther <luther@debian.org>  Tue,  7 Feb 2006 19:23:14 +0000
+
+linux-2.6 (2.6.15-4) unstable; urgency=low
+
+  [ Jurij Smakov ]
+  * [sparc64] Add sparc64-clock-settime.patch to fix the incorrect
+    handling of the clock_settime syscall arguments, which resulted
+    in a hang when trying to set the date using 'date -s'. Patch
+    by David Miller is applied upstream. Thanks to Ludovic Courtes
+    and Frans Pop for reporting and testing.
+    Ref: http://marc.theaimsgroup.com/?t=113861017400002&r=1&w=2
+
+  [ Christian T. Steigies ]
+  * [m68k] update m68k patch and config to 2.6.15
+  * [m68k] SCSI drivers need to be built in until ramdisk generator tools
+    supports loading scsi modules
+  * [m68k] ISCSI and IDE-TAPE don't compile, disabled
+  * [m68k] set CC_OPTIMIZE_FOR_SIZE=n
+  * [m68k] added vmeints patch which fixes building for vme
+
+  [ maximilian attems ]
+  * Use initramfs-tools for ia64 - fixed klibc.
+  * Add stable tree 2.6.15.2:
+    - Fix double decrement of mqueue_mnt->mnt_count in sys_mq_open
+    - (CVE-2005-3356)
+    - Mask off GFP flags before swiotlb_alloc_coherent
+    - usb-audio: don't use empty packets at start of playback
+    - Make second arg to skb_reserved() signed.
+    - Input: HID - fix an oops in PID initialization code
+    - Fix oops in ufs_fill_super at mount time
+    - Kill blk_attempt_remerge()
+    - Fix i2o_scsi oops on abort
+    - Fix mkiss locking bug
+    - Fix timekeeping on sparc64 ultra-IIe machines
+    - Someone broke reiserfs v3 mount options and this fixes it
+  * Deactivate sparc64-jumping-time.patch, amd64-pppd-fix.patch incl in aboves.
+  * Add s390-klibc-buildfix.patch, regression due to header file changes.
+
+  [ Steve Langasek ]
+  * [alpha] set __attribute__((always_inline)) on __cmpxchg(), to avoid
+    wrong optimizations with -Os (Closes: #347556).
+
+  [ Martin Michlmayr ]
+  * Add input support for the ixp4xx beeper driver (Alessandro Zummo).
+  * [arm] Add NSLU2 specific portion of ixp4xx beeper driver (Alessandro Zummo).
+  * [arm/nslu2] Build PPP as a module.
+  * [arm/nslu2] Enable wireless.
+  * [arm/nslu2] Enable most USB modules.
+  * [arm/nslu2] Enable ALSA and USB sound modules.
+  * [arm/nslu2] Set 4 MB as the size of the initrd in the kernel cmd line.
+  * [arm/footbridge] Set CONFIG_BLK_DEV_RAM_SIZE to 8192.
+  * [armeb] Add support for big-endian ARM.
+  * [armeb/nslu2] Use the nslu2 config from arm.
+
+  [ Frederik Schüler ]
+  * [amd64] Add amd64-pppd-fix.patch to fix kernel panic when using pppd.
+    (Closes: #347711)
+  * Add 64bit-vidiocswin-ioctl-fix.patch to fix VIDIOCSWIN ioctl on 64bit
+    kernel 32bit userland setups. (Closes: #349338)
+
+  [ Sven Luther ]
+  * [powerpc] Adapted apus config file to be more modular and in sync with the
+    other powerpc configs. Scsi drivers are disabled as they don't build
+    cleanly though (need some esp stuff).
+  * [powerpc] Default to initramfs-tools as initramfs generator, as klibc
+    build is fixed now.
+
+  [ Bastian Blank ]
+  * [powerpc] Fix dependencies of image packages.
+
+ -- maximilian attems <maks@sternwelten.at>  Wed,  1 Feb 2006 11:34:20 +0100
+
+linux-2.6 (2.6.15-3) unstable; urgency=low
+
+  [ Martin Michlmayr ]
+  * [arm] Update configs for 2.6.15; closes: #347998.
+  * [arm] Activate tmpfs.
+  * [arm] Allow modules to be unloaded.
+  * [arm] Enable CONFIG_INPUT_EVDEV since yaird needs this module in
+    order to generate initrds.
+  * [arm/footbridge] Activate IDEPCI so SL82C105 will really be
+    compiled in.
+  * [arm/footbridge] Activate the right network drivers (Tulip and
+    NE2K).
+  * [arm/footbridge] Enable more framebuffer drivers.
+  * debian/patches/arm-fix-dc21285.patch: Fix compilation of DC21285
+    flash driver.
+  * [arm/footbridge] Enable MTD and the DC21285 flash driver.
+  * [arm/footbridge] Enable RAID and LVM modules.
+  * [arm/footbridge] Enable USB modules.
+  * [arm/nslu2] Add an image for Network Storage Link for USB 2.0 Disk
+    Drives.
+  * debian/patches/arm-memory-h-page-shift.patch: Fix error "PAGE_SHIFT
+    undeclared" (Rod Whitby).
+  * debian/patches/mtdpart-redboot-fis-byteswap.patch: recognise a foreign
+    endian RedBoot partition table (John Bowler).
+  * debian/patches/maclist.patch: Add support for the maclist interface
+    (John Bowler).
+  * debian/patches/arm-nslu2-maclist.patch: Add NSLU2 maclist support
+    (John Bowler).
+  * [arm/nslu2] Activate maclist.
+
+  [ maximilian attems ]
+  * Add stable tree 2.6.15.1:
+    - arch/sparc64/Kconfig: fix HUGETLB_PAGE_SIZE_64K dependencies
+    - moxa serial: add proper capability check
+    - fix /sys/class/net/<if>/wireless without dev->get_wireless_stats
+    - Don't match tcp/udp source/destination port for IP fragments
+    - Fix sys_fstat64() entry in 64-bit syscall table.
+    - UFS: inode->i_sem is not released in error path
+    - netlink oops fix due to incorrect error code
+    - Fix onboard video on SPARC Blade 100 for 2.6.{13,14,15}
+    - Fix DoS in netlink_rcv_skb() (CVE-2006-0035)
+    - fix workqueue oops during cpu offline
+    - Fix crash in ip_nat_pptp (CVE-2006-0036)
+    - Fix another crash in ip_nat_pptp (CVE-2006-0037)
+    - ppc32: Re-add embed_config.c to ml300/ep405
+    - Fix ptrace/strace
+    - vgacon: fix doublescan mode
+    - BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id()
+    - skge: handle out of memory on ring changes
+  * Drop merged patch:
+    - sparc64-atyfb-xl-gr-final.patch
+
+  [ Simon Horman ]
+  * Fix booting on PReP machines
+    (Closes: #348040)
+    powerpc-relocate_code.patch
+
+ -- Simon Horman <horms@verge.net.au>  Tue, 17 Jan 2006 18:01:17 +0900
+
+linux-2.6 (2.6.15-2) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Default to initramfs-tools as initramfs generator for amd64, hppa, i386,
+    alpha and sparc. More archs will be added once klibc matures.
+    (Closes: #346141, #343147, #341524, #346305)
+  * Backport alsa patch for opl3 - Fix the unreleased resources.
+    (Closes: #346273)
+  * Readd buslogic-pci-id-table.patch.
+
+  [ dann frazier ]
+  * [ia64] Update config for 2.6.15.
+
+  [ Frederik Schüler ]
+  * Make CONFIG_IPW2100 a per-architecture option and deactivate it on all
+    architectures but i386. (Closes: #344515)
+
+  [ Sven Luther ]
+  * Removed spurious file from powerpc-apus patch. (Closes: #346159)
+
+  [ Norbert Tretkowski ]
+  * Backport the generic irq framework for alpha. (closes: #339080)
+
+  [ Bastian Blank ]
+  * Remove pre-sarge conflict with hotplug.
+  * Fix hppa diff to apply.
+  * Make the latest packages depend on the corect version of the real images.
+    (closes: #346366)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 10 Jan 2006 16:54:21 +0100
+
+linux-2.6 (2.6.15-1) unstable; urgency=low
+
+  [ Sven Luther ]
+  * New upstream release.
+  * [powerpc] Now use ARCH=powerpc for 64bit powerpc flavours, 32bit still
+    stays with ARCH=ppc for now.
+  * [powerpc] Readded PReP Motorola PowerStack II Utah IDE interrupt
+    (Closes: #345424)
+  * [powerpc] Fixed apus patch.
+  * Added make-kpkg --arch option support to gencontrol.py.
+  * Added debian/bin/kconfig.ml to process config file snipplet, so we can
+    preserve the pre 2.6.15 ordering of config file snipplets. Upto 2.6.15
+    the kernel Kconfig magic apparently kept the later occuring config options,
+    but it seems that this is no more the case. Instead of catting the config
+    files together, not use the kconfig.ml script to read in the files from
+    more generic to more specific, and keep only the more specific.
+
+  [ Bastian Blank ]
+  * [s390] Update configs.
+
+  [ Kyle McMartin ]
+  * [hppa] Snag latest hppa.diff from cvs.parisc-linux.org.
+  * [hppa] Update configs for 2.6.15.
+  * [hppa] Change parisc kernel names to something less ambiguous.
+
+  [ dann frazier ]
+  * [ia64] Update ia64 configs
+
+  [ maximilian attems ]
+  * Drop modular-ide.patch, nacked by ide upstream.  Prevents udev to load
+    ide-generic and those successfull boots with initramfs-tools.
+  * Disable CONFIG_USB_BANDWIDTH, causes major trouble for alsa usb cards.
+
+  [ Norbert Tretkowski ]
+  * [alpha] Removed conflict with initramfs-tools, thanks vorlon for finding
+    the klibc bug!
+
+  [ Jonas Smedegaard ]
+  * Adjust short description of transitional package kernel-image-2.6-
+    486 to mention 2.6 (not 2.6.12).
+  * Clean duplicate Kconfig options.
+
+  [ Frederik Schüler ]
+  * Add updated version of drivers-scsi-megaraid_splitup.patch.
+  * Deactivate CONFIG_IDE_TASK_IOCTL on alpha and ia64 and make it a global
+    option.
+  * Make CONFIG_VIDEO_SAA7134 a global option.
+  * New option CONFIG_CC_OPTIMIZE_FOR_SIZE set per-arch.
+  * Rename i386 368 flavour to 486.
+  * Add myself to uploaders.
+  * Readdition of qla2xxx drivers, as firmware license has been fixed.
+  * Make CONFIG_PACKET, PACKET_MM and UNIX builtin on all architectures:
+    statically linked has better performance then modules due to TLB issue.
+  * clean up debian-patches dir: remove all obsolete patches:
+    - alpha-compile-fix.patch: obsolete
+    - amd64-int3-fix.patch: fixed since 2.6.12
+    - net-ipconntrack-nat-fix.patch: merged upstream after 2.6.14 release
+    - net-nf_queue-oops.patch: merged upstream after 2.6.14 release
+    - qla2xxx-removed.patch: obsolete
+  * Drop M386 support remains from the i386 386 flavour: built with M486 
+    from now on.
+
+  [ Martin Michlmayr ]
+  * [arm] Don't define "compiler" since GCC 4.x is the default now anyway.
+  * [arm] Add descriptions for "class" and "longclass".
+  * [arm] Compile CONFIG_BLK_DEV_SL82C105 support into the kernel on
+    Footbridge.
+  * [arm] Compile ext3 support into the kernel on Footbridge.
+  * [arm] Turn on CONFIG_SERIAL_8250 support on Footbridge.
+
+  [ Jurij Smakov ]
+  * [sparc] Correct the patch for the atyfb framebuffer driver
+    (sparc64-atyfb-xl-gr.patch) to finally fix the console and X
+    image defects on Blade 100/150. The new patch is named
+    sparc64-atyfb-xl-gr-final.patch to avoid the confusion.
+    Thanks to Luis F. Ortiz for fixing the patch and Luigi Gangitano
+    for testing it out.
+  * Drop tty-locking-fixes9.patch, which was preventing the oops during
+    shutdown on some sparc machines with serial console. Proper fix has
+    been incorporated upstream.
+  
+  [ Simon Horman ]
+  * Enable MKISS globally (closes: #340215)
+  * Add recommends libc6-i686 to 686 and k7 image packages
+    (closes: #278729)
+  * Enable OBSOLETE_OSS_USB_DRIVER and USB_AUDIO
+    as alsa snd-usb-audio still isn't quite there.
+    I expect this to be re-disabled at some stage,
+    possibly soon if it proves to be a source of bugs.
+    (closes: #340388)
+
+ -- Sven Luther <luther@debian.org>  Tue,  3 Jan 2006 06:48:07 +0000
+
+linux-2.6 (2.6.14-7) unstable; urgency=low
+
+  [ maximilian attems ]
+  * Add stable tree 2.6.14.5 fixes:
+    - setting ACLs on readonly mounted NFS filesystems (CVE-2005-3623)
+    - Fix bridge-nf ipv6 length check
+    - Perform SA switchover immediately.
+    - Input: fix an OOPS in HID driver
+    - Fix hardware checksum modification
+    - kernel/params.c: fix sysfs access with CONFIG_MODULES=n
+    - Fix RTNLGRP definitions in rtnetlink.h
+    - Fix CTA_PROTO_NUM attribute size in ctnetlink
+    - Fix unbalanced read_unlock_bh in ctnetlink
+    - Fix NAT init order
+    - Fix incorrect dependency for IP6_NF_TARGET_NFQUEUE
+    - dpt_i2o fix for deadlock condition
+    - SCSI: fix transfer direction in sd (kernel panic when ejecting iPod)
+    - SCSI: fix transfer direction in scsi_lib and st
+    - Fix hardware rx csum errors
+    - Fix route lifetime.
+    - apci: fix NULL deref in video/lcd/brightness
+  * Disable CONFIG_USB_BANDWIDTH, causes major trouble on alsa usb cards.
+    (Closes: #344939)
+
+ -- maximilian attems <maks@sternwelten.at>  Tue, 27 Dec 2005 20:50:28 +0100
+
+linux-2.6 (2.6.14-6) unstable; urgency=low
+
+  [ Kyle McMartin ]
+  * Change parisc kernel names to something less ambiguous.
+
+  [ maximilian attems ]
+  * Drop modular-ide.patch, nacked by ide upstream.  Prevents udev to load
+    ide-generic and those successfull boots with initramfs-tools.
+  * Add stable tree 2.6.14.4 with the following fixes:
+    - drivers/scsi/dpt_i2o.c: fix a user-after-free
+    - drivers/message/i2o/pci.c: fix a use-after-free
+    - drivers/infiniband/core/mad.c: fix a use-after-free
+    - DVB: BUDGET CI card depends on STV0297 demodulator
+    - setkeys needs root
+    - Fix listxattr() for generic security attributes
+    - AGPGART: Fix serverworks TLB flush.
+    - Fix crash when ptrace poking hugepage areas
+    - I8K: fix /proc reporting of blank service tags
+    - i82365: release all resources if no devices are found
+    - bonding: fix feature consolidation
+    - libata: locking rewrite (== fix)
+    - cciss: bug fix for BIG_PASS_THRU
+    - ALSA: nm256: reset workaround for Latitude CSx
+    - cciss: bug fix for hpacucli
+    - V4L/DVB: Fix analog NTSC for Thomson DTT 761X hybrid tuner
+    - BRIDGE: recompute features when adding a new device
+    - 32bit integer overflow in invalidate_inode_pages2()
+    - USB: Adapt microtek driver to new scsi features
+    - ide-floppy: software eject not working with LS-120 drive
+    - Add try_to_freeze to kauditd
+    - V4L/DVB (3135) Fix tuner init for Pinnacle PCTV Stereo
+    - NETLINK: Fix processing of fib_lookup netlink messages
+    - ACPI: fix HP nx8220 boot hang regression
+
+  [ Norbert Tretkowski ]
+  * [alpha] Removed conflict with initramfs-tools, thanks vorlon for finding
+    the klibc bug!
+
+  [ Frederik Schüler ]
+  * Add updated drivers-scsi-megaraid_splitup.patch. (Closes: #317258)
+  * Add ppc64-thermal-overtemp.patch to fix a thermal control bug in G5
+    machines. (Closes: #343980)
+  * Unpatch the following patches which are included in 2.6.14.4:
+    - setkeys-needs-root-1.patch
+    - setkeys-needs-root-2.patch
+    - mm-invalidate_inode_pages2-overflow.patch
+    - net-bonding-consolidation-fix.patch
+
+ -- Frederik Schüler <fs@debian.org>  Tue, 20 Dec 2005 18:50:41 +0000
+
+linux-2.6 (2.6.14-5) unstable; urgency=low
+
+  [ dann frazier ]
+  * ia64-new-assembler-fix.patch
+    Fix ia64 builds with newer assembler (Closes: #341257)
+
+  [ Sven Luther ]
+  * [powerpc] incremented ramdisk size to 24576 from 8192, needed by the
+    graphical installer, maybe we can bring this to 16384 later.
+
+  [ Simon Horman ]
+  * Add recommends libc6-i686 to 686 and k7 image packages
+    (closes: #278729)
+  * Enable OBSOLETE_OSS_USB_DRIVER and USB_AUDIO
+    as alsa snd-usb-audio still isn't quite there.
+    I expect this to be re-disabled at some stage,
+    possibly soon if it proves to be a source of bugs.
+    (closes: #340388)
+
+  [ dann frazier ]
+  * buslogic-pci-id-table.patch
+    add a pci device id table to fix initramfs-tools discovery.
+    (closes #342057)
+  * fix feature consolidation in bonding driver.  (closes #340068)
+
+ -- dann frazier <dannf@debian.org>  Thu,  8 Dec 2005 10:59:31 -0700
+
+linux-2.6 (2.6.14-4) unstable; urgency=low
+
+  [ dann frazier ]
+  * setkeys-needs-root-1.patch, setkeys-needs-root-2.patch:
+    [SECURITY] Require root privilege to write the current
+    function key string entry of other user's terminals.
+    See CVE-2005-3257 (Closes: #334113)
+
+  [ Simon Horman ]
+  * Enable MKISS globally (closes: #340215)
+  * mm-invalidate_inode_pages2-overflow.patch
+    [SECURITY] 32bit integer overflow in invalidate_inode_pages2() (local DoS)
+  * ctnetlink-check-if-protoinfo-is-present.patch
+    [SECURITY] ctnetlink: check if protoinfo is present (local DoS)
+  * ctnetlink-fix-oops-when-no-icmp-id-info-in-message.patch
+    [SECURITY] ctnetlink: Fix oops when no ICMP ID info in message (local DoS)
+
+  [ Sven Luther ]
+  * Re-added powerpc/apus patch, now that Roman Zippel merged it in.
+  * Let's create asm-(ppc|ppc64) -> asm-powerpc symlink farm.  (Closes: #340571)
+
+  [ maximilian attems ]
+  * Add 2.6.14.3 patch - features changelog:
+    - isdn/hardware/eicon/os_4bri.c: correct the xdiLoadFile() signature
+    - x86_64/i386: Compute correct MTRR mask on early Noconas
+    - PPTP helper: Fix endianness bug in GRE key / CallID NAT
+    - nf_queue: Fix Ooops when no queue handler registered
+    - ctnetlink: check if protoinfo is present
+    - ip_conntrack: fix ftp/irc/tftp helpers on ports >= 32768
+    - VFS: Fix memory leak with file leases
+    - hwmon: Fix lm78 VID conversion
+    - hwmon: Fix missing it87 fan div init
+    - ppc64 memory model depends on NUMA
+    - Generic HDLC WAN drivers - disable netif_carrier_off()
+    - ctnetlink: Fix oops when no ICMP ID info in message
+    - Don't auto-reap traced children
+    - packet writing oops fix
+    - PPTP helper: fix PNS-PAC expectation call id
+    - NAT: Fix module refcount dropping too far
+    - Fix soft lockup with ALSA rtc-timer
+    - Fix calculation of AH length during filling ancillary data.
+    - ip_conntrack TCP: Accept SYN+PUSH like SYN
+    - refcount leak of proto when ctnetlink dumping tuple
+    - Fix memory management error during setting up new advapi sockopts.
+    - Fix sending extension headers before and including routing header.
+    - hwmon: Fix missing boundary check when setting W83627THF in0 limits
+  * Remove ctnetlink-check-if-protoinfo-is-present.patch,
+    net-nf_queue-oops.patch - already included in 2.6.14.3.
+
+  [ Frederik Schüler ]
+  * Make CONFIG_PACKET, PACKET_MM and UNIX builtin on all architectures:
+    statically linked has better performance then modules due to TLB issue.
+  * Add myself to uploaders.
+
+ -- Frederik Schüler <fs@debian.org>  Sat, 26 Nov 2005 13:18:41 +0100
+
+linux-2.6 (2.6.14-3) unstable; urgency=low
+
+  [ Norbert Tretkowski ]
+  * [alpha] Switch to gcc 4.0.
+  * [alpha] Conflict with initramfs-tools, klibc is broken on alpha.
+  * [alpha] Enabled CONFIG_KOBJECT_UEVENT in arch/alphaconfig to fix trouble
+    with latest udev, thanks to Uwe Schindler for reporting. (closes: #338911)
+  * Bumped ABI revision:
+    + ABI changes on sparc and alpha because of compiler switch.
+    + 2.6.14.1 changes ABI of procfs.
+
+  [ Sven Luther ]
+  * Set default TCP congestion algorithm to NewReno + BIC (Closes: #337089)
+
+  [ maximilian attems ]
+  * Reenable CONFIG_SOFTWARE_SUSPEND on i386 and ppc, resume=/dev/<other device>
+    must be set by boot loader. (Closes: #267600)
+  * Set CONFIG_USB_SUSPEND on i386. Usefull for suspend to ram and apm suspend.
+  * Add 2.6.14.1 patch:
+    - Al Viro: CVE-2005-2709 sysctl unregistration oops
+  * Add 2.6.14.2 patch:
+    - airo.c/airo_cs.c: correct prototypes
+    - fix XFS_QUOTA for modular XFS (closes: #337072)
+    - USB: always export interface information for modalias
+    - NET: Fix zero-size datagram reception
+    - fix alpha breakage
+    - Oops on suspend after on-the-fly switch to anticipatory i/o scheduler
+    - ipvs: fix connection leak if expire_nodest_conn=1
+    - Fix ptrace self-attach rule
+    - fix signal->live leak in copy_process()
+    - fix de_thread() vs send_group_sigqueue() race
+    - prism54 : Fix frame length
+    - tcp: BIC max increment too large
+  * Remove alpha compile fix as contained in 2.6.14.2
+  * Readd CONFIG_XFS_QUOTA=y.
+  * Disable ACPI cutoff year on i386, was set to 2001.
+    No need for acpi=force on boot.
+
+  [ Jurij Smakov ]
+  * Fix the install-image script to correctly include all the necessary
+    stuff in scripts. (Closes: #336424)
+  * Enable CONFIG_SND_ALI5451 on sparc.
+  * Switch sparc to gcc-4.0. Thanks to Norbert for making sure it successfully
+    builds a working kernel now.
+  * Apply patch to fix ATI framebuffer output corruption on SunBlade 100
+    (sparc64-atyfb-xl-gr.patch). Thanks to Luigi Gangitano. (Closes: #321200)
+  * Disable CONFIG_PARPORT_PC_FIFO on sparc, since it causes a hang whenever
+    something is sent to the parallel port device. Thanks to Attilla
+    (boera at rdslink.ro) for pointing that out.
+
+  [ Simon Horman ]
+  * [386, AMD64] Set CONFIG_FRAMEBUFFER_CONSOLE=y instead of m.
+    As vesadb now built into the kernel, after finally dropping the
+    debian-specific patch to make it modular, make fbcons builtin too, else
+    all sorts of weird stuff happens which is hard for the inird builders to
+    automatically compenste for. (Closes: #336450)
+  * Redisable CONFIG_SOFTWARE_SUSPEND on ppc/miboot as it required
+    CONFIG_PM to compile.
+  * [NETFILTER] nf_queue: Fix Ooops when no queue handler registered
+    This is a regression introduced in 2.6.14.
+    net-nf_queue-oops.patch. (Closes: #337713)
+  * Make manuals with defconfig, as is required for kernel-package 10.008
+
+  [ dann frazier ]
+  * net-ipconntrack-nat-fix.patch - fix compilation of
+    ip_conntrack_helper_pptp.c when NAT is disabled. (Closes: #336431)
+
+  [ Christian T. Steigies ]
+  * update m68k.diff to 2.6.14
+  * add m68k-*vme* patches
+  * disable macsonic driver until the dma patch is fixed
+  * disable IEEE80211 drivers for all of m68k
+
+  [ Frederik Schüler ]
+  * activate CONFIG_SECURITY_NETWORK to fix SElinux operation.
+    (Closes: #338543)
+
+ -- Norbert Tretkowski <nobse@debian.org>  Mon, 14 Nov 2005 10:23:05 +0100
+
+linux-2.6 (2.6.14-2) unstable; urgency=low
+
+  [ Simon Horman ]
+  * [SECURITY] Avoid 'names_cache' memory leak with CONFIG_AUDITSYSCALL
+    This fix, included as part of the 2.6.13.4 patch in
+    2.6.13+2.6.14-rc4-0experimental.1 is CVE-2005-3181
+  * Fix genearation of .extraversion, again (closes: #333842)
+  * Add missing kernel-arch and kernel-header-dirs to defines
+    so headers get included. (closes: #336521)
+    N.B: I only filled in arches where other's hadn't done so alread.
+         Please fix if its wrong.
+  * Allow powerpc64 to compile with AUDIT enabled but
+    AUDITSYSCALL disabled. powerpc64-audit_sysctl-build.patch
+
+  [ dann frazier ]
+  * Update hppa.diff to 2.6.14-pa0
+
+  [ Norbert Tretkowski ]
+  * [alpha] New patch to include compiler.h in barrier.h, barrier() is used in
+    non-SMP case.
+  * [alpha] Added kernel-header-dirs and kernel-arch to debian/arch/alpha/defines
+    to include asm-alpha in linux-headers package.
+  * Added myself to Uploaders.
+
+  [ Frederik Schüler ]
+  * [amd64] use DISCONTIGMEM instead of SPARSEMEM on amd64-k8-smp flavour to
+    fix bootup kernel panic.
+  * [amd64] include asm-x86_64 in linux-headers package.
+  * Deactivate AUDITSYSCALL globally, it slows down the kernel and is not
+    needed for selinux at all.
+
+ -- Simon Horman <horms@debian.org>  Tue,  1 Nov 2005 15:27:40 +0900
+
+linux-2.6 (2.6.14-1) unstable; urgency=low
+
+  [ Sven Luther ]
+  * New upstream release.
+
+  [ Norbert Tretkowski ]
+  * [alpha] Update arch/alpha/config* for 2.6.14.
+
+  [ Simon Horman ]
+  * Fix misformatting of long description of
+    linux-patch-debian-linux-patch-debian-X.Y.Z.
+    templates/control.main.in
+    (closes: #335088)
+  * Make sure version is seeded in apply and unapply scripts.
+    Actually changed in some earlier, post 2.6.12, release,
+    but the changelog seems to be missing.
+    (closes: #324583)
+
+  [ dann frazier ]
+  * [ia64] Disable the CONFIG_IA64_SGI_SN_XP module.  This forces
+    CONFIG_GENERIC_ALLOCATOR and CONFIG_IA64_UNCACHED_ALLOCATOR to y, which
+    appears to break on zx1 systems.
+
+ -- Simon Horman <horms@debian.org>  Fri, 28 Oct 2005 16:26:03 +0900
+
+linux-2.6 (2.6.13+2.6.14-rc5-0experimental.1) experimental; urgency=low
+
+  [ Sven Luther ]
+  * Upgraded to 2.6.14-rc5.
+
+  [ Jonas Smedegaard ]
+  * Quote variables in debian/rules.real and postinstall (making it
+    safer to run with weird characters in path of build environment).
+
+  [ Bastian Blank ]
+  * Add some missing files from scripts to headers packages.
+  * Add new patch powerpc-build-links.patch: Emit relative symlinks in
+    arch/ppc{,64}/include.
+  * Include arch/*/include into headers package.
+
+ -- Sven Luther <luther@debian.org>  Tue, 25 Oct 2005 03:56:11 +0000
+
+linux-2.6 (2.6.13+2.6.14-rc4-0experimental.1) experimental; urgency=low
+
+  [ Sven Luther ]
+  * Upgraded to 2.6.14-rc4.
+
+  [ Simon Horman ]
+  * Fix genearation of .extraversion (closes: #333842)
+
+  [ dann frazier ]
+  * Enhance the linux-source description to explain the types of patches
+    Debian adds to it.  (closes: #258043)
+  * Correct linux-patch-debian description.  It replaces the
+    kernel-patch-debian packages, not the kernel-source packages.
+
+  [ Jonas Smedegaard ]
+  * Fix building from within a very long dir (all patches was applied at
+    once - exhausting shell commandline, now applied one by one).
+  * Add Simon Horman, Sven Luther and myself as Uploaders.
+
+  [ Bastian Blank ]
+  * Use list of revisions in patch scripts.
+  * Use correct names for tarball and scripts.
+
+  [ Jurij Smakov ]
+  * [i386] Set the CONFIG_HPET_EMULATE_RTC option to make the clock
+    work properly on certain Dell machines. This required setting the
+    CONFIG_RTC option to 'y' instead of 'm'. (closes: #309909)
+    [i386] Enable VIDEO_CX88 and VIDEO_CX88_DVB (both set to 'm') by
+    popular demand. (closes: #330916)
+
+  [ Norbert Tretkowski ]
+  * [alpha] Update arch/alpha/config for 2.6.13.
+
+  [ Kyle McMartin ]
+  * [hppa] Oops. Fix linux-headers not including asm-parisc by adding
+    headers_dirs = parisc to Makefile.inc.
+
+  [ maximilian attems ]
+  * Set CONFIG_FB_VESA=y for i386 and amd64 configs. (closes: #333003)
+
+  [ Sven Luther ]
+  * [powerpc] Fixed apus build, now use mkvmlinuz too to generate the vmlinuz
+    kernel.
+  * Fixed control.image.in to depend on :
+      initramfs-tools | yaird | linux-ramdisk-tool
+    where linux-ramdisk-tools is the virtual package provided by all
+    initrd/initramfs generating tools.
+
+  [ Frederik Schüler ]
+  * deactivate FB_RIVA on all architectures.
+  * deactivate BLK_DEV_IDESCSI on all architectures.
+  * Added patch-2.6.13.4:
+    - [SECURITY] key: plug request_key_auth memleak 
+      See CAN-2005-3119
+    - [SECURITY] Fix drm 'debug' sysfs permissions
+      See CAN-2005-3179
+    - [SECURITY] Avoid 'names_cache' memory leak with CONFIG_AUDITSYSCALL
+    - [SPARC64] Fix userland FPU state corruption.
+    - BIC coding bug in Linux 2.6.13
+    - [SECURITY] orinoco: Information leakage due to incorrect padding 
+      See CAN-2005-3180
+    - ieee1394/sbp2: fixes for hot-unplug and module unloading
+
+  [ Christian T. Steigies ]
+  * disable CONFIG_EXT2_FS_XIP for m68k like on all(?) other arches
+  * deactivate OKTAGON_SCSI for amiga/m68k until it can be compiled again
+  * deactivate CONFIG_KEYBOARD_HIL_OLD, CONFIG_KEYBOARD_HIL, CONFIG_MOUSE_HIL,
+    CONFIG_HIL_MLC, and CONFIG_HP_SDC for hp/m68k
+  * update m68k.diff for 2.6.13
+  * split out patches that do not intefere with other arches to
+    patches-debian/m68k-*
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 21 Oct 2005 12:17:47 +0000
+
+linux-2.6 (2.6.13-1) experimental; urgency=low
+
+  * New upstream release "git booost":
+    - new arch xtensa
+    - kexec/kdump
+    - execute-in-place
+    - inotify (closes: #304387)
+    - time-sharing cfq I/O scheduler
+    - manual driver binding
+    - voluntary preemption
+    - user-space I/O initiation for InfiniBand
+    - new speedy DES (crypto) implementation
+    - uml "almost-skas" mode support
+    - 250 HZ default (closes: #320366)
+    - fixes all over (alsa, archs, ide, input, ntfs, scsi, swsusp, usb, ..)
+    - orinoco driver updates (closes: #291684)
+    - md, dm updates (closes: #317787)
+
+  [ Frederik Schüler ]
+  * [amd64] Added class and longclass descriptions for amd64 flavours.
+  * [amd64] add amd64-tlb-flush-sigsegv-fix.patch: disable tlb flush
+    filtering on smp systems to workaround processor errata.
+  * backport kernel-api-documentation-generation-fix.diff from git to fix
+    documentation build.
+  * Added patch-2.6.13.1:
+    - raw_sendmsg DoS (CAN-2005-2492)
+    - 32bit sendmsg() flaw (CAN-2005-2490)
+    - Reassembly trim not clearing CHECKSUM_HW
+    - Use SA_SHIRQ in sparc specific code.
+    - Fix boundary check in standard multi-block cipher processors
+    - 2.6.13 breaks libpcap (and tcpdump)
+    - x86: pci_assign_unassigned_resources() update
+    - Fix PCI ROM mapping
+    - aacraid: 2.6.13 aacraid bad BUG_ON fix
+    - Kconfig: saa7134-dvb must select tda1004x
+
+  [ Simon Horman ]
+  * Disable BSDv3 accounting on hppa and alpha, it was already
+    disabled on all other architectures. Also unify BSD accounting
+    config into top level config, rather than per flavour configs.
+  * [SECURITY] The seq_file memory leak fix included in 2.6.12-6
+    as part of upstream's 2.6.12.6 patchset is now CAN-2005-2800.
+
+  [ Jurij Smakov, Simon Horman ]
+  * Ensure that only one kernel-manual/linux-manual package can
+    be installed at a time to avoid file conflicts. (closes: #320042)
+
+  [ Bastian Blank ]
+  * Move audit, preempt and security settings to core config file.
+  * Fix powerpc configuration.
+  * Add debian version information to kernel version string.
+  * Drop coreutils | fileutils dependencies.
+  * Drop modular-vesafb patch. (closes: #222374, #289810)
+
+  [ Christian T. Steigies ]
+  * update m68k.diff for linux-2.6.13
+  * add m68k-42_dma.patch and m68k-sonic.patch that will be in upstream 2.6.14
+    (which makes sun3 build fail, needs fixing)
+
+  [ maximilian attems ]
+  * Drop drivers-add-scsi_changer.patch (merged)
+  * Drop drivers-ide-dma-blacklist-toshiba.patch (merged)
+  * Drop drivers-ide-__devinit.patch (merged)
+  * Added patch-2.6.13.2:
+    - USB: ftdi_sio: custom baud rate fix
+    - Fix up more strange byte writes to the PCI_ROM_ADDRESS config word
+    - Fix MPOL_F_VERIFY
+    - jfs: jfs_delete_inode must call clear_inode
+    - Fix DHCP + MASQUERADE problem
+    - Sun HME: enable and map PCI ROM properly
+    - Sun GEM ethernet: enable and map PCI ROM properly
+    - hpt366: write the full 4 bytes of ROM address, not just low 1 byte
+    - forcedeth: Initialize link settings in every nv_open()
+    - Lost sockfd_put() in routing_ioctl()
+    - lost fput in 32bit ioctl on x86-64
+  * Added patch-2.6.13.3:
+    - Fix fs/exec.c:788 (de_thread()) BUG_ON
+    - Don't over-clamp window in tcp_clamp_window()
+    - fix IPv6 per-socket multicast filtering in exact-match case
+    - yenta oops fix
+    - ipvs: ip_vs_ftp breaks connections using persistence
+    - uml - Fix x86_64 page leak
+    - skge: set mac address oops with bonding
+    - tcp: set default congestion control correctly for incoming connections
+
+  [ Sven Luther ]
+  * [powerpc] Added hotplug support to the mv643xx_eth driver :
+      powerpc-mv643xx-hotplug-support.patch
+    thanks go to Nicolas Det for providing the patch.
+  * [powerpc] Modified a couple of configuration options for the powerpc64
+    flavour, fixes and enhances Apple G5 support (Closes: #323724, #328324)
+  * [powerpc] Added powerpc-miboot flavour to use exclusively with oldworld
+    powermac miboot floppies for debian-installer.
+  * [powerpc] Checked upgraded version of the apus patches, separated them in
+    a part which is safe to apply, and one which needs checking, and is thus
+    not applied yet.
+
+  [ Kyle McMartin ]
+  * [hppa] Update hppa.diff to 2.6.13-pa4.
+  * [hppa] Add space register fix to pacache.S to hppa.diff.
+
+  [ dann frazier ]
+  * Add a note to README.Debian that explains where users can find the .config
+    files used to generate the linux-image packages.  Closes: #316809
+  * [ia64] Workaround #325070 until upstream works out an acceptable solution.
+    This bug breaks module loading on non-SMP ia64 kernels.  The workaround
+    is to temporarily use an SMP config for the non-SMP kernels.  (Note that
+    John Wright is running benchmarks to determine the overhead of running
+    an SMP kernel on UP systems to help decide if this should be a
+    permanent change).
+  * [ia64] Update arch/ia64/config for 2.6.13
+
+ -- Simon Horman <horms@debian.org>  Thu,  6 Oct 2005 15:45:21 +0900
+
+linux-2.6 (2.6.12-6) unstable; urgency=high
+
+  [ Andres Salomon, Bastian Blank ]
+  * Change ATM and Classical-IP-over-ATM to be modular, instead of being
+    statically included. (closes: #323143)
+
+  [ Sven Luther ]
+  * [powerpc] powerpc-pmac-sound-check.patch: Added pmac-sound sanity check.
+  * [powerpc] powerpc-apus.patch:
+    Added preliminary apus patch to package, not applied to kernel tree yet.
+
+  [ Simon Horman ]
+  * Unset CC_OPTIMIZE_FOR_SIZE in i386 config,
+    it breaks iproute's (and other netlink users) ability
+    to set routes. (closes: #322723)
+  * Added 2.6.12.6
+    - [SECURITY: CAN-2005-2555] Restrict socket policy loading to
+      CAP_NET_ADMIN.
+    - [SECURITY] Fix DST leak in icmp_push_reply().  Possible remote
+      DoS?
+    - [SECURITY] NPTL signal delivery deadlock fix; possible local
+      DoS.
+    - fix gl_skb/skb type error in genelink driver in usbnet
+    - [SECURITY] fix a memory leak in devices seq_file implementation;
+      local DoS.
+    - [SECURITY] Fix SKB leak in ip6_input_finish(); local DoS.
+
+  [ Andres Salomon ]
+  * [hppa] enable discontiguous memory support for 32bit hppa images, so
+    they build.
+
+ -- Andres Salomon <dilinger@debian.org>  Tue, 06 Sep 2005 10:14:35 -0400
+
+linux-2.6 (2.6.12-5) unstable; urgency=low
+
+  * Change ARM to use GCC 3.3 to avoid FTBFS errors with GCC 4
+   (dann frazier)
+
+  * Remove spurious double quote character from ia64 package descriptions.
+    (dann frazier)
+
+  * Add transitional meta packages (kernel-image-2.6-*) for ia64.
+    (dann frazier)
+
+  * Change fuzz factor to 1, stricter patch appliance. (Maximilian Attems)
+
+  * Enabled CONFIG_THERM_PM72 on powerpc64 flavour. (Sven Luther)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 16 Aug 2005 21:43:31 +0200
+
+linux-2.6 (2.6.12-4) unstable; urgency=low
+
+  * Supply correct subarch values for the powerpc images.
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 15 Aug 2005 21:06:18 +0200
+
+linux-2.6 (2.6.12-3) unstable; urgency=low
+
+  * Added reference to old kernel-* package names to make
+    transition a little more obvious to end users.
+    A Dan Jacobson special. (Simon Horman) Closes: #321167
+
+  * By the time this makes it into the archive, it will
+    be handling kernel-image-2.6-* packages. (Simon Horman)
+    Closes: #321867
+
+  * Link palinfo statically on ia64. (dann frazier) (Closes: #321885)
+
+  * [hppa] :
+    - Add hppa arch specific patch.
+    - Build-Depend on binutils-hppa64 and gcc-4.0-hppa64.
+    (Kyle McMartin)
+
+  * Fix permissions in source tarball. (Bastian Blank) (Closes: #322409)
+
+  * Enable the CONFIG_IP_ADVANCED_ROUTER and related options on
+    sparc64 to sync with other architectures. (Jurij Smakov)
+    Closes: #321236
+
+  * Include all executables as well as *.sh and *.pl files found in
+    scripts directory in the headers package. (Bastian Blank)
+    Closes: #322612, #322680, #322765
+
+  * Include m68k headers into the arch-common headers package on
+    powerpc and make sure that all the directories are linked to
+    properly from the flavour-specific headers packages. (Jurij Smakov)
+    Closes: #322610
+
+  * [powerpc] Enabled the powerpc64 flavour, now that we have a real biarch
+    toolchain in sid. Many thanks go to GOTO Masanori and Matthias Klose as
+    well as any other who worked on the biarch toolchain to make this happen.
+
+  * Added 2.6.12.5 (Simon Horman)
+    - Fix BUG() is triggered by a call to set_mempolicy() with a negativ
+      first argument.
+    - [amd64] Fix a SRAT handling on systems with dual cores.
+    - [amd64] SMP timing problem
+    - [security] Zlib fixes See CAN-2005-2458, CAN-2005-2459
+      http://sources.redhat.com/ml/bug-gnu-utils/1999-06/msg00183.html
+      http://bugs.gentoo.org/show_bug.cgi
+    - Add zlib deflateBound()
+    - [security] Fix error during session join. See CAN-2005-2098
+    - [security] Fix keyring destructor. See CAN-2005-2099
+    - Module per-cpu alignment cannot always be met
+      http://www.ussg.iu.edu/hypermail/linux/kernel/0409.0/0768.html
+    Closes: #323039
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 15 Aug 2005 16:42:05 +0200
+
+linux-2.6 (2.6.12-2) unstable; urgency=low
+
+  * The Kernel Team offers its condolences to the family of Jens Schmalzing
+    (jensen@debian), who died Saturday, July 30, 2005 in a tragic accident in
+    Munich.  Jens was a member of the Kernel Team, and was instrumental in
+    taking the powerpc kernel package to 2.6, as well as maintaining MOL
+    and its kernel modules.
+
+  * Add @longclass@ variable to control file autogeneration. (Andres Salomon)
+
+  * Bump build-depends on kernel-package to a fixed version (>= 9.005).
+    (Jurij Smakov, Sven Luther) (closes: #319657, #320422, #321625)
+
+  * Change default ramdisk size for sparc to 16,384K to accomodate a fatter
+    d-i initrd for netboot installs.
+    (Joshua Kwan)
+
+  * Don't build-depend on console-tools on s390. (Bastian Blank)
+
+  * Add ARM support. (Vincent Sanders)
+
+  * Add ia64 descriptions. (dann frazier)
+
+  * Strip down the scripts dir in the headers packages. (Bastian Blank)
+
+  * Add m68k support. (Christian T. Steigies)
+
+  * Added 2.6.12.4 (Frederik Schüler)
+    - Fix powernow oops on dual-core athlon
+    - Fix early vlan adding leads to not functional device
+    - sys_get_thread_area does not clear the returned argument
+    - bio_clone fix
+    - Fix possible overflow of sock->sk_policy (CAN-2005-2456)
+      (closes: #321401)
+    - Wait until all references to ip_conntrack_untracked are dropped on
+      unload
+    - Fix potential memory corruption in NAT code (aka memory NAT)
+    - Fix deadlock in ip6_queue
+    - Fix signedness issues in net/core/filter.c
+    - x86_64 memleak from malicious 32bit elf program
+    - rocket.c: Fix ldisc ref count handling
+    - kbuild: build TAGS problem with O=
+
+  * Enable CONFIG_6PACK=m for all archs (Andres Salomon)
+    (closes: #319646)
+
+  * Overhaul the generation of the control file. Now it is handled
+    by debian/bin/gencontrol.py. The debian/control target in rules
+    also fails now, since we don't want the control file generated
+    during build. Arch-specific Depends and suggests are now generated
+    correctly. (Bastian Blank) (Closes: #319896)
+
+  * [powerpc] Fixed typo which made asm-ppc and asm-ppc64 not being included
+    in the header package. (Sven Luther) (Closes: #320817)
+
+  * Added list of flavours built to common header package. (Sven Luther)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 09 Aug 2005 11:12:40 +0200
+ 
+linux-2.6 (2.6.12-1) unstable; urgency=low
+
+  * New upstream release:
+    - "git rocks"
+    - address space randomization
+    - conversion of ide driver code to the device model
+    - restored Philips webcam driver
+    - new Broadcom bcm5706 gigabit driver
+    - new resource limits for the audio community
+    - Multipath device mapper
+    - Intel HD Audio alsa driver
+    - fixes + arch updates..
+    - readdition of tg3 driver, as firmware license has been fixed
+
+  * Dropped the following patches:
+    - patch-2.6.11.*.patch (merged)
+    - powerpc-ppc64-ibmvscsi.patch (Christoph didn't like it, and it failed
+      to build anyways) (Sven Luther)
+    - doc-post_halloween.patch (unless someone can come up w/ a valid
+      reason for carrying around rapidly bitrotting documentation...)
+      (Andres Salomon)
+    - sparc32-hypersparc-srmmu.patch (dropped until sparc32 is working
+      again, and we can figure out whether it's necessary)
+    - fix-alpha-ext3-oops.patch (no longer needed, fixed by compiler)
+    - x86-i486_emu.patch (buggy and insecure 80486 instruction emulation
+      for 80386; we're no longer supporting this) (closes: #250468)
+    - amd64-outs.patch (according to
+      http://www.ussg.iu.edu/hypermail/linux/kernel/0502.3/1095.html, this
+      is unnecessary for us) (Andres Salomon)
+    - sparc64-rtc-mostek.patch (merged)
+    - sparc64-compat-nanoseconds.patch (merged) 
+    - sparc64-sunsu-init-2.6.11.patch (merged)
+    - sunsab-uart-update-timeout.patch (merged)
+    - alpha-read-trylock.patch (different version got merged)
+    - powerpc-prep-motorola-irq-fix.patch (merged)
+    - drivers-media-video-saa7134-update.patch (merged)
+    - drivers-media-video-saa7134-update-2.patch (merged)
+    - drivers-media-video-pll-lib.patch (merged)
+    - drivers-media-video-pll-lib-2.patch (merged)
+    - drivers-media-video-tuner-update-1.patch (merged)
+    - drivers-media-video-tuner-update-2.patch (merged)
+    - drivers-media-video-v4l-mpeg-support.patch (merged)
+    - drivers-media-video-mt352-update.patch (merged)
+    - arch-ppc64-hugepage-aio-panic.patch (merged)
+    - drivers-input-serio-nmouse.patch (merged)
+    - sparc64-sb1500-clock-2.6.patch (merged)
+    - docbook-allow-preprocessor-directives-... (merged)
+    - docbook-fix-function-parameter-descriptin-in-fbmem.patch (merged)
+    - docbook-move-kernel-doc-comment-next-to-function.patch (merged)
+    - powerpc-therm-adt746x-new-i2c-fix.patch (merged)
+    - powerpc-mv643xx-enet.patch (merged)
+    - powerpc-mv643xx-eth-pegasos.patch (merged)
+    - powerpc-pmac-agp-sleep.patch (merged)
+    - drivers-input-serio-8042-resume.patch (merged)
+  
+  * Premiere of the common-source kernel package
+    (Jurij Smakov, Andres Salomon)
+    - build all architectures out of kernel source package
+    - rename source and binary packages
+    - create a common config for different architectures, and management
+      tools to allow for easier modification of config options
+    - drop default configs, autogenerate them instead; requires
+      kernel-package >= 9.002.
+
+  * Add 2.6.12.1 (Maximilian Attems)
+    - Clean up subthread exec (CAN-2005-1913)
+    - ia64 ptrace + sigrestore_context (CAN-2005-1761)
+
+  * Add 2.6.12.2 (Frederik Schüler)
+    - Fix two socket hashing bugs.
+    -  ACPI: Make sure we call acpi_register_gsi() even for default PCI
+       interrupt assignment
+    - Add "memory" clobbers to the x86 inline asm of strncmp and friends
+    - e1000: fix spinlock bug
+    - fix remap_pte_range BUG
+    - Fix typo in drivers/pci/pci-driver.c
+
+  * Add 2.6.12.3 (Joshua Kwan)
+    - Fix semaphore handling in __unregister_chrdev
+    - Fix TT mode in UML.
+    - Check for a null return in tty_ldisc_ref.
+    - v4l: cx88 hue offset fix
+    - Fix 8139cp breakage that occurs with tpm driver.
+    - Fix the 6pack driver in SMP environments.
+    - Switch to spinlocks in the shaper driver.
+    - ppc32: stop misusing NTP's time_offset value
+    - netfilter: go back to dropping conntrack references manually
+    - ACPI: don't accept 0 as a PCI IRQ.
+
+  * Enable CONFIG_SCSI_INITIO. (Maximilian Attems) (closes: #318121)
+
+  * [powerpc] :
+    - Added powerpc-mkvmlinuz-support patch which allows, together with
+      kernel-package 9.0002 to add mkvmlinuz support to hand built packages.
+    - Removed powerpc-ppc64-ibmvscsi.patch, FTBFS, and Christoph doesn't like
+      it and thinks it is not needed.
+    - Disabled swim3 on powerpc-smp, FTBFS.
+    - Disabled software-suspend on powerpc-smp, FTBFS, amd64/i386 only smp code.
+    - Rediffed and readded the G4 L2 hardware flush assist patch from Jacob Pan.
+    (Sven Luther)
+    
+  * [sparc]
+    - Drop sparc32 flavour for now. sparc32 kernel is currently in the
+      category "too buggy for us to support". In spite of numerous efforts
+      I still see occasional random filesystem corruptions in my tests.
+      That does NOT mean that we are dropping sparc32 support, we will
+      work with upstream trying to solve these problems for the next
+      kernel release. Those interested in helping/testing are encouraged
+      to subscribe to debian-sparc mailing list.
+      (Jurij Smakov)
+
+  * [alpha]
+    - Renamed resulting binary packages for alpha, kernel-image-x.y.z-generic
+      wasn't a generic kernel, it was a generic kernel for alpha machines, so
+      we're now using linux-image-x.y.z-alpha-generic (and of course, the same
+      change for the smp kernel-image). This change was postponed after the
+      sarge release. (closes: #260003)
+    (Norbert Tretkowski)
+
+  * [amd64]
+    - Now using the default compiler (gcc-4.0), thus we get rid of the 
+      annoying MAKEFLAGS="CC=gcc-3.4" make-kpkg... invocation for third-party 
+      modules.
+      This release lacks 64bit kernels for i386 userland; support will be
+      added in a later release as soon as the toolchain has stabilized again.
+      (Frederik Schüler)
+
+ -- Andres Salomon <dilinger@debian.org>  Wed, 20 Jul 2005 17:16:04 -0400
+
--- linux-2.6-2.6.30.orig/debian/rules.real
+++ linux-2.6-2.6.30/debian/rules.real
@@ -0,0 +1,455 @@
+#
+# This Makefile executes the unpack/build/binary targets for a single
+# subarch, which is passed in the subarch variable. Empty subarch
+# variable means that we are building for an arch without the subarch.
+# Additionally, variables version, abiname and ltver are
+# expected to be available (need to be exported from the parent process).
+#
+SHELL  := bash -e
+DEB_HOST_ARCH     := $(shell dpkg-architecture -a'$(ARCH)' -qDEB_HOST_ARCH)
+DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -a'$(ARCH)' -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_ARCH    := $(shell dpkg-architecture -a'$(ARCH)' -qDEB_BUILD_ARCH)
+UPLOADER  := $(shell dpkg-parsechangelog | sed -ne 's,^Maintainer: .[^<]*<\([^>]*\)>,\1,p')
+
+export PYTHONPATH = $(CURDIR)/debian/lib/python
+export DH_OPTIONS
+export DEB_HOST_ARCH DEB_HOST_GNU_TYPE DEB_BUILD_ARCH
+
+include debian/rules.defs
+
+ifdef DEBIAN_KERNEL_JOBS
+  JOBS_ARG = -j$(DEBIAN_KERNEL_JOBS)
+endif
+
+setup_env := env -u ABINAME -u ARCH -u FEATURESET -u FLAVOUR -u VERSION -u LOCALVERSION
+setup_env += DISTRIBUTION_OFFICIAL_BUILD=1 DISTRIBUTION_UPLOADER=$(UPLOADER) DISTRIBUTION_VERSION="$(SOURCEVERSION)"
+
+MAKE_CLEAN = $(setup_env) $(MAKE)
+MAKE_SELF := $(MAKE) -f debian/rules.real $(MAKEOVERRIDES)
+MAKEOVERRIDES =
+
+#
+# Targets
+#
+binary-arch-arch: install-headers_$(ARCH)
+binary-arch-arch: install-libc-dev_$(ARCH)
+binary-arch-featureset: install-headers_$(ARCH)_$(FEATURESET)
+binary-arch-flavour: install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
+ifeq ($(MODULES),True)
+  binary-arch-flavour: install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+endif
+
+binary-indep: install-doc
+binary-indep: install-manual
+binary-indep: install-patch
+binary-indep: install-source
+binary-indep: install-support
+binary-indep: install-tree
+
+build: $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
+
+setup-flavour: $(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+
+source-arch: $(STAMPS_DIR)/source
+source-featureset: $(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET)
+
+$(BUILD_DIR)/config.$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(KCONFIG)
+	python debian/bin/kconfig.py '$@' $(KCONFIG)
+
+$(BUILD_DIR)/linux-source-$(UPSTREAMVERSION).tar.bz2: SOURCE_DIR=$(BUILD_DIR)/source
+$(BUILD_DIR)/linux-source-$(UPSTREAMVERSION).tar.bz2: DIR = $(BUILD_DIR)/linux-source-$(UPSTREAMVERSION)
+$(BUILD_DIR)/linux-source-$(UPSTREAMVERSION).tar.bz2: $(STAMPS_DIR)/source
+	rm -rf '$@' '$(DIR)'
+	cp -al '$(SOURCE_DIR)' '$(DIR)'
+	chmod -R u+rw,go=rX '$(DIR)'
+	cd '$(BUILD_DIR)'; tar -cjf 'linux-source-$(UPSTREAMVERSION).tar.bz2' 'linux-source-$(UPSTREAMVERSION)'
+	rm -rf '$(DIR)'
+
+define patch_cmd
+cd '$(DIR)'; python '$(CURDIR)/debian/bin/patch.apply' --overwrite-home='$(CURDIR)/debian/patches'
+endef
+
+$(STAMPS_DIR)/source: SOURCE_FILES = $(filter-out debian, $(wildcard * .[^.]*))
+$(STAMPS_DIR)/source: DIR = $(BUILD_DIR)/source
+$(STAMPS_DIR)/source:
+	rm -rf '$(DIR)'
+	mkdir -p '$(DIR)' $(STAMPS_DIR)
+	cp -al $(SOURCE_FILES) '$(DIR)'
+	$(patch_cmd)
+	touch '$@'
+
+$(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET): SOURCE_DIR=$(BUILD_DIR)/source
+$(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET): DIR=$(BUILD_DIR)/source_$(ARCH)_$(FEATURESET)
+$(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET): $(STAMPS_DIR)/source
+	rm -rf '$(DIR)'
+	cp -al '$(SOURCE_DIR)' '$(DIR)'
+	$(patch_cmd) -a $(ARCH) -f $(FEATURESET)
+	touch '$@'
+
+$(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): CONFIG=$(BUILD_DIR)/config.$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+$(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): SOURCE_DIR=$(BUILD_DIR)/source_$(ARCH)_$(FEATURESET)
+$(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DIR=$(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+$(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(BUILD_DIR)/config.$(ARCH)_$(FEATURESET)_$(FLAVOUR) $(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET)
+	rm -rf '$(DIR)'
+	mkdir '$(DIR)'
+	cp '$(CONFIG)' '$(DIR)/.config'
+	echo '$(ABINAME)$(LOCALVERSION_IMAGE)' > '$(DIR)/localversion'
+	echo 'override ARCH = $(KERNEL_ARCH)' >> '$(DIR)/.kernelvariables'
+	echo 'CCACHE = ccache' >> '$(DIR)/.kernelvariables'
+	echo 'CC = $$(if $$(DEBIAN_KERNEL_USE_CCACHE),$$(CCACHE)) $$(CROSS_COMPILE)$(COMPILER)' >> '$(DIR)/.kernelvariables'
+# TODO: Should we set CROSS_COMPILE always?
+ifdef OVERRIDE_HOST_TYPE
+	echo 'override CROSS_COMPILE = $(OVERRIDE_HOST_TYPE)-' >> '$(DIR)/.kernelvariables'
+else
+	echo 'ifneq ($$(DEB_BUILD_ARCH),$$(DEB_HOST_ARCH))' >> '$(DIR)/.kernelvariables'
+	echo 'override CROSS_COMPILE = $$(DEB_HOST_GNU_TYPE)-' >> '$(DIR)/.kernelvariables'
+	echo 'endif' >> '$(DIR)/.kernelvariables'
+endif
+ifdef CFLAGS
+	echo 'CFLAGS += $(CFLAGS)'  >> '$(DIR)/.kernelvariables'
+endif
+	+$(MAKE_CLEAN) -C '$(SOURCE_DIR)' O='$(CURDIR)/$(DIR)' reportoldconfig
+	+$(MAKE_CLEAN) -C '$(SOURCE_DIR)' O='$(CURDIR)/$(DIR)' $(JOBS_ARG) prepare
+	touch '$@'
+
+$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): DIR=$(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): $(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+
+$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-s390-tape: BUILD_TARGET = image
+
+$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain \
+$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-s390-tape \
+$(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-xen:
+	+$(MAKE_CLEAN) -C '$(DIR)' $(JOBS_ARG) $(BUILD_TARGET)
+	python debian/bin/buildcheck.py $(DIR) $(ARCH) $(FEATURESET) $(FLAVOUR)
+	touch '$@'
+
+$(STAMPS_DIR)/build-doc: SOURCE_DIR=$(BUILD_DIR)/source
+$(STAMPS_DIR)/build-doc: DIR=$(BUILD_DIR)/build-doc
+$(STAMPS_DIR)/build-doc: $(STAMPS_DIR)/source
+	rm -rf $(DIR)
+	mkdir $(DIR)
+	+$(MAKE_CLEAN) -C $(SOURCE_DIR) O='$(CURDIR)/$(DIR)' $(JOBS_ARG) xmldocs
+	+$(MAKE_CLEAN) -C $(SOURCE_DIR) O='$(CURDIR)/$(DIR)' $(JOBS_ARG) htmldocs mandocs
+	touch '$@'
+
+install-base:
+	dh_installchangelogs
+	dh_installdocs
+	dh_strip
+	dh_compress
+	dh_fixperms
+	dh_installdeb
+	dh_shlibdeps
+	dh_gencontrol -- $(GENCONTROL_ARGS)
+	dh_md5sums
+	dh_builddeb
+
+install-doc: PACKAGE_NAME = linux-doc-$(VERSION)
+install-doc: DIR = $(BUILD_DIR)/build-doc
+install-doc: SOURCE_DIR = $(BUILD_DIR)/source
+install-doc: PACKAGE_DIR = debian/$(PACKAGE_NAME)
+install-doc: OUT_DIR = $(PACKAGE_DIR)/usr/share/doc/$(PACKAGE_NAME)
+install-doc: DH_OPTIONS = -p$(PACKAGE_NAME)
+install-doc: $(STAMPS_DIR)/build-doc
+	dh_prep
+	mkdir -p $(OUT_DIR)
+	cp -a $(addprefix $(SOURCE_DIR)/, CREDITS MAINTAINERS README REPORTING-BUGS Documentation) $(OUT_DIR)
+	rm -rf $(OUT_DIR)/Documentation/DocBook
+	cd $(DIR)/Documentation/DocBook; \
+	find * -name '*.html' -print \
+	| \
+	cpio -pd --preserve-modification-time '$(CURDIR)/$(OUT_DIR)/html'
+	gzip -9qfr $(OUT_DIR)/Documentation
+	+$(MAKE_SELF) install-base
+
+install-manual: PACKAGE_NAME = linux-manual-$(VERSION)
+install-manual: DIR=$(BUILD_DIR)/build-doc
+install-manual: DH_OPTIONS = -p$(PACKAGE_NAME)
+install-manual: $(STAMPS_DIR)/build-doc
+	dh_prep
+	find $(DIR)/Documentation/DocBook/man/ -name '*.9' | xargs dh_installman
+	+$(MAKE_SELF) install-base
+
+install-dummy:
+	dh_testdir
+	dh_testroot
+	dh_prep
+	+$(MAKE_SELF) install-base
+
+install-headers_$(ARCH): PACKAGE_NAMES = linux-headers-$(UPSTREAMVERSION)$(ABINAME)-all linux-headers-$(UPSTREAMVERSION)$(ABINAME)-all-$(ARCH)
+install-headers_$(ARCH): DH_OPTIONS = $(foreach p, $(PACKAGE_NAMES), -p$(p))
+install-headers_$(ARCH):
+	dh_testdir
+	dh_testroot
+	+$(MAKE_SELF) install-base GENCONTROL_ARGS='-Vkernel:Arch=$(ARCH)'
+
+install-headers_$(ARCH)_$(FEATURESET): PACKAGE_NAME = linux-headers-$(UPSTREAMVERSION)$(ABINAME)-common$(LOCALVERSION_HEADERS)
+install-headers_$(ARCH)_$(FEATURESET): PACKAGE_NAME_KBUILD = linux-kbuild-$(VERSION)
+install-headers_$(ARCH)_$(FEATURESET): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-headers_$(ARCH)_$(FEATURESET): BASE_DIR = /usr/src/$(PACKAGE_NAME)
+install-headers_$(ARCH)_$(FEATURESET): SOURCE_DIR = $(BUILD_DIR)/source_$(ARCH)_$(FEATURESET)
+install-headers_$(ARCH)_$(FEATURESET): DIR = debian/$(PACKAGE_NAME)/$(BASE_DIR)
+install-headers_$(ARCH)_$(FEATURESET): $(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET)
+	dh_testdir
+	dh_testroot
+	dh_prep
+
+	cd $(SOURCE_DIR); \
+	( \
+	  echo Makefile; \
+	  find arch/$(KERNEL_ARCH) -maxdepth 1 -name 'Makefile*' -print; \
+	  find arch/$(KERNEL_ARCH) -name 'module.lds' -print; \
+	  find $$(find arch/$(KERNEL_ARCH) -name include -type d -print) -print; \
+	  find include -name 'asm*' -prune -o -print; \
+	  find include/asm-generic -print; \
+	) \
+	| \
+	cpio -pd --preserve-modification-time '$(CURDIR)/$(DIR)'
+
+	ln -s ../$(PACKAGE_NAME_KBUILD)/{Kbuild,scripts} $(DIR)
+
+	+$(MAKE_SELF) install-base
+
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): REAL_VERSION = $(UPSTREAMVERSION)$(ABINAME)$(LOCALVERSION)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME = linux-headers-$(REAL_VERSION)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME_COMMON = linux-headers-$(UPSTREAMVERSION)$(ABINAME)-common$(LOCALVERSION_HEADERS)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_NAME_KBUILD = linux-kbuild-$(VERSION)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): BASE_DIR = /usr/src/$(PACKAGE_NAME)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): BASE_DIR_COMMON = /usr/src/$(PACKAGE_NAME_COMMON)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): SOURCE_DIR = $(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): REF_DIR = $(BUILD_DIR)/source_$(ARCH)_$(FEATURESET)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): PACKAGE_DIR = debian/$(PACKAGE_NAME)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DIR = $(PACKAGE_DIR)/$(BASE_DIR)
+install-headers_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
+	dh_testdir
+	dh_testroot
+	dh_prep
+
+	mkdir -p $(DIR)/arch/$(KERNEL_ARCH)/kernel
+	cp -a $(SOURCE_DIR)/{.config,.kernel*,Module.symvers,include} $(DIR)
+	cp -a $(SOURCE_DIR)/arch/$(KERNEL_ARCH)/kernel/asm-offsets.s $(DIR)/arch/$(KERNEL_ARCH)/kernel
+
+ifeq ($(ARCH),powerpc)
+	if [ -f $(SOURCE_DIR)/arch/$(KERNEL_ARCH)/lib/crtsavres.o ]; then \
+		mkdir $(DIR)/arch/$(KERNEL_ARCH)/lib; \
+		cp -a $(SOURCE_DIR)/arch/$(KERNEL_ARCH)/lib/crtsavres.o $(DIR)/arch/$(KERNEL_ARCH)/lib; \
+	fi
+endif
+
+	@echo 'VERSION = 2' > $(DIR)/Makefile
+	@echo 'PATCHLEVEL = 6' >> $(DIR)/Makefile
+
+	@echo 'MAKEARGS := -C $(BASE_DIR_COMMON) O=$(BASE_DIR)' >> $(DIR)/Makefile
+	@echo 'MAKEFLAGS += --no-print-directory' >> $(DIR)/Makefile
+
+	@echo '.PHONY: all $$(MAKECMDGOALS)' >> $(DIR)/Makefile
+	@echo 'cmd := $$(filter-out all Makefile,$$(MAKECMDGOALS))' >> $(DIR)/Makefile
+	@echo 'all:' >> $(DIR)/Makefile
+	@echo '	@$$(MAKE) $$(MAKEARGS) $$(cmd)' >> $(DIR)/Makefile
+	@echo 'Makefile:;' >> $(DIR)/Makefile
+	@echo '$$(cmd) %/: all' >> $(DIR)/Makefile
+	@echo '	@:' >> $(DIR)/Makefile
+
+	ln -s ../$(PACKAGE_NAME_KBUILD)/scripts $(DIR)
+
+	mkdir -p $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)
+	ln -s /usr/src/$(PACKAGE_NAME) $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/build
+	ln -s /usr/src/$(PACKAGE_NAME_COMMON) $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/source
+
+	+$(MAKE_SELF) install-base
+
+install-libc-dev_$(ARCH): PACKAGE_NAME = linux-libc-dev
+install-libc-dev_$(ARCH): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-libc-dev_$(ARCH): SOURCE_DIR = $(BUILD_DIR)/source
+install-libc-dev_$(ARCH): DIR = $(BUILD_DIR)/build-libc-dev
+install-libc-dev_$(ARCH): OUT_DIR = debian/$(PACKAGE_NAME)/usr
+install-libc-dev_$(ARCH):
+	dh_testdir
+	dh_testroot
+	dh_prep
+	rm -rf '$(DIR)'
+	mkdir $(DIR)
+	+$(MAKE_CLEAN) -C $(SOURCE_DIR) O='$(CURDIR)/$(DIR)' headers_check ARCH=$(LIBC_DEV_ARCH)
+	+$(MAKE_CLEAN) -C $(SOURCE_DIR) O='$(CURDIR)/$(DIR)' headers_install ARCH=$(LIBC_DEV_ARCH) INSTALL_HDR_PATH='$(CURDIR)'/$(OUT_DIR)
+	+$(MAKE_SELF) install-base
+
+install-support: PACKAGE_NAME = linux-support-$(UPSTREAMVERSION)$(ABINAME)
+install-support: DH_OPTIONS = -p$(PACKAGE_NAME)
+install-support: PACKAGE_DIR = debian/$(PACKAGE_NAME)
+install-support: PACKAGE_ROOT = /usr/src/$(PACKAGE_NAME)
+install-support:
+	dh_testdir
+	dh_testroot
+	dh_prep
+	dh_installdirs $(PACKAGE_ROOT)/lib/python/debian_linux $(PACKAGE_ROOT)/modules
+	cp debian/config.defines.dump $(PACKAGE_DIR)$(PACKAGE_ROOT)
+	cp debian/lib/python/debian_linux/*.py $(PACKAGE_DIR)$(PACKAGE_ROOT)/lib/python/debian_linux
+	cp debian/modules/* $(PACKAGE_DIR)$(PACKAGE_ROOT)/modules
+	chmod a+x $(PACKAGE_DIR)$(PACKAGE_ROOT)/modules/gencontrol.py
+	dh_pycentral /usr/src/$(PACKAGE_NAME)/lib/python
+	+$(MAKE_SELF) install-base
+
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): REAL_VERSION = $(UPSTREAMVERSION)$(ABINAME)$(LOCALVERSION)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): PACKAGE_NAME = linux-image-$(REAL_VERSION)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): PACKAGE_DIR = debian/$(PACKAGE_NAME)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): INSTALL_DIR = $(PACKAGE_DIR)/boot
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): DIR = $(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE): $(STAMPS_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_$(TYPE)
+
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain:
+	dh_testdir
+	dh_testroot
+	dh_prep
+	dh_installdirs 'boot'
+	+$(MAKE_SELF) \
+	  install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_image \
+	  DIR='$(DIR)' PACKAGE_DIR='$(PACKAGE_DIR)' INSTALL_DIR='$(INSTALL_DIR)' REAL_VERSION='$(REAL_VERSION)'
+ifeq ($(MODULES),True)
+	+$(MAKE_CLEAN) -C $(DIR) modules_install INSTALL_MOD_PATH='$(CURDIR)'/$(PACKAGE_DIR)
+	cp $(DIR)/.config $(PACKAGE_DIR)/boot/config-$(REAL_VERSION)
+	cp $(DIR)/System.map $(PACKAGE_DIR)/boot/System.map-$(REAL_VERSION)
+	rm $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/{build,source,modules.*}
+	# TODO: Move somewhere else
+	rm $(PACKAGE_DIR)/lib/firmware -rf
+endif
+	+$(MAKE_SELF) \
+	  install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_templates \
+	  PACKAGE_DIR='$(PACKAGE_DIR)' REAL_VERSION='$(REAL_VERSION)'
+	+$(MAKE_SELF) \
+	  install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_bug \
+	  PACKAGE_DIR='$(PACKAGE_DIR)' PACKAGE_NAME='$(PACKAGE_NAME)' REAL_VERSION='$(REAL_VERSION)'
+	+$(MAKE_SELF) install-base
+
+install-image_arm_$(FEATURESET)_$(FLAVOUR)_plain_image \
+install-image_armel_$(FEATURESET)_$(FLAVOUR)_plain_image \
+install-image_sparc_$(FEATURESET)_$(FLAVOUR)_plain_image:
+	install -m644 '$(DIR)/arch/$(KERNEL_ARCH)/boot/zImage' $(INSTALL_DIR)/vmlinuz-$(REAL_VERSION)
+
+install-image_amd64_$(FEATURESET)_$(FLAVOUR)_plain_image \
+install-image_i386_$(FEATURESET)_$(FLAVOUR)_plain_image:
+	install -m644 '$(DIR)/arch/$(KERNEL_ARCH)/boot/bzImage' $(INSTALL_DIR)/vmlinuz-$(REAL_VERSION)
+
+install-image_alpha_$(FEATURESET)_$(FLAVOUR)_plain_image:
+	install -m644 '$(DIR)/arch/$(KERNEL_ARCH)/boot/vmlinux.gz' $(INSTALL_DIR)/vmlinuz-$(REAL_VERSION)
+
+install-image_ia64_$(FEATURESET)_$(FLAVOUR)_plain_image \
+install-image_m68k_$(FEATURESET)_$(FLAVOUR)_plain_image:
+	install -m644 '$(DIR)/vmlinux.gz' $(INSTALL_DIR)/vmlinuz-$(REAL_VERSION)
+
+install-image_hppa_$(FEATURESET)_$(FLAVOUR)_plain_image \
+install-image_mips_$(FEATURESET)_$(FLAVOUR)_plain_image \
+install-image_mipsel_$(FEATURESET)_$(FLAVOUR)_plain_image:
+	install -m644 '$(DIR)/vmlinux' $(INSTALL_DIR)/vmlinux-$(REAL_VERSION)
+
+install-image_powerpc_$(FEATURESET)_$(FLAVOUR)_plain_image: WRAPPER_INSTALL_DIR = '$(CURDIR)'/$(PACKAGE_DIR)/usr/lib/linux-image-$(REAL_VERSION)
+install-image_powerpc_$(FEATURESET)_$(FLAVOUR)_plain_image:
+	install -m644 '$(DIR)/vmlinux' $(INSTALL_DIR)/vmlinux-$(REAL_VERSION)
+	+$(MAKE_CLEAN) -C '$(DIR)' bootwrapper_install \
+	  WRAPPER_OBJDIR='$(WRAPPER_INSTALL_DIR)' \
+	  WRAPPER_DTSDIR='$(WRAPPER_INSTALL_DIR)'/dts \
+	  WRAPPER_BINDIR='$(WRAPPER_INSTALL_DIR)'
+
+install-image_s390_$(FEATURESET)_$(FLAVOUR)_plain_image:
+	install -m644 '$(DIR)/arch/s390/boot/image' $(INSTALL_DIR)/vmlinuz-$(REAL_VERSION)
+
+ifneq ($(INITRAMFS),False)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_templates: ARG_INITRD = YES
+endif
+
+install-image_hppa_$(FEATURESET)_$(FLAVOUR)_plain_templates \
+install-image_mips_$(FEATURESET)_$(FLAVOUR)_plain_templates \
+install-image_mipsel_$(FEATURESET)_$(FLAVOUR)_plain_templates \
+install-image_powerpc_$(FEATURESET)_$(FLAVOUR)_plain_templates: ARG_KIMAGE = vmlinux
+
+install-image_mips_$(FEATURESET)_r4k-ip22_plain_templates: ARG_BOOTLOADER = arcboot
+install-image_mips_$(FEATURESET)_r5k-ip32_plain_templates: ARG_BOOTLOADER = arcboot
+install-image_s390_$(FEATURESET)_$(FLAVOUR)_plain_templates: ARG_BOOTLOADER = zipl
+
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_templates:
+	install -d $(PACKAGE_DIR)/DEBIAN
+	for i in $(wildcard debian/templates/temp.image.plain/*); do \
+	  sed \
+	    -e 's,=D,/boot,g' \
+	    -e 's/=OF/YES/g' \
+	    -e 's/=ST/linux/g' \
+	    -e 's@=A@$(DEB_HOST_ARCH)@g' \
+	    -e 's@=B@$(KERNEL_ARCH)@g' \
+	    -e 's/=IB//g' \
+	    -e 's/=I/$(ARG_INITRD)/g' \
+	    -e 's/=K/$(ARG_KIMAGE)/g' \
+	    -e 's/=L/$(ARG_BOOTLOADER)/g' \
+	    -e 's@=MK@$(INITRD_CMD)@g' \
+	    -e 's/=V/$(REAL_VERSION)/g' \
+	    -e 's/=M//g' \
+	    -e 's/=MD//g' \
+	    -e 's/=R//g' \
+	    -e 's/=S//g' \
+	    $$i > $(PACKAGE_DIR)/DEBIAN/$$(basename $$i); \
+	done
+	chmod 755 $(PACKAGE_DIR)/DEBIAN/{config,{pre,post}*}
+	chmod 644 $(PACKAGE_DIR)/DEBIAN/templates
+
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain_bug:
+	dh_installdirs usr/share/bug/$(PACKAGE_NAME)
+	dh_install debian/templates/image.plain.bug/* usr/share/bug/$(PACKAGE_NAME)
+	chmod 755 $(PACKAGE_DIR)/usr/share/bug/$(PACKAGE_NAME)/script
+	echo "RELEASE='$(REAL_VERSION)'" > $(PACKAGE_DIR)/usr/share/bug/$(PACKAGE_NAME)/info
+
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-s390-tape:
+	dh_testdir
+	dh_testroot
+	dh_prep
+	dh_installdirs 'boot'
+	install -m644 '$(DIR)/arch/s390/boot/image' $(PACKAGE_DIR)/boot/vmlinuz-$(REAL_VERSION)
+	+$(MAKE_SELF) install-base
+
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-xen: MODULES_PACKAGE_NAME = linux-modules-$(REAL_VERSION)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-xen: MODULES_PACKAGE_DIR = debian/$(MODULES_PACKAGE_NAME)
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-xen: DH_OPTIONS =
+install-image_$(ARCH)_$(FEATURESET)_$(FLAVOUR)_plain-xen:
+	dh_testdir
+	dh_testroot
+	dh_prep
+	dh_installdirs -p$(PACKAGE_NAME) boot 'var/lib/$(PACKAGE_NAME)'
+	dh_installdirs -p$(MODULES_PACKAGE_NAME) boot
+	cp '$(DIR)'/arch/$(KERNEL_ARCH)/boot/vmlinuz $(INSTALL_DIR)/vmlinuz-$(REAL_VERSION)
+	+$(MAKE_CLEAN) -C $(DIR) modules_install INSTALL_MOD_PATH='$(CURDIR)'/$(MODULES_PACKAGE_DIR)
+	cp $(DIR)/.config $(MODULES_PACKAGE_DIR)/boot/config-$(REAL_VERSION)
+	cp $(DIR)/System.map $(MODULES_PACKAGE_DIR)/boot/System.map-$(REAL_VERSION)
+	rm $(MODULES_PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/{build,source}
+	dh_installmodules -p$(MODULES_PACKAGE_NAME)
+	for i in $(XEN_VERSIONS); do echo $$i; done > $(PACKAGE_DIR)/var/lib/$(PACKAGE_NAME)/xen-versions
+	install -d $(PACKAGE_DIR)/DEBIAN
+	echo /var/lib/$(PACKAGE_NAME)/xen-versions >> $(PACKAGE_DIR)/DEBIAN/conffiles
+	+$(MAKE_SELF) install-base DH_OPTIONS='-p$(PACKAGE_NAME) -p$(MODULES_PACKAGE_NAME)'
+
+install-patch: PACKAGE = linux-patch-debian-$(VERSION)
+install-patch: pbase := /usr/src/kernel-patches/all/$(UPSTREAMVERSION)
+install-patch: pfull := debian/$(PACKAGE)$(pbase)
+install-patch: DH_OPTIONS = -p$(PACKAGE)
+install-patch:
+	dh_testdir
+	dh_testroot
+	dh_prep
+	dh_installdirs $(DH_OPTIONS) '$(pbase)/apply' '$(pbase)/debian' '$(pbase)/unpatch'
+	dh_install $(DH_OPTIONS) debian/patches/* '$(pbase)/debian'
+	install debian/bin/patch.apply '$(pfull)/apply/debian'
+	install debian/templates/patch.unpatch '$(pfull)/unpatch/debian'
+	find '$(pfull)/debian' ! -path '*/series/*' -type f -execdir bzip2 '{}' ';' -execdir chmod 644 '{}.bz2' ';'
+	+$(MAKE_SELF) install-base DH_OPTIONS='$(DH_OPTIONS)'
+
+install-source: DH_OPTIONS = -plinux-source-$(VERSION)
+install-source: $(BUILD_DIR)/linux-source-$(UPSTREAMVERSION).tar.bz2
+	dh_testdir
+	dh_testroot
+	dh_install $(DH_OPTIONS) '$<' /usr/src
+	+$(MAKE_SELF) install-base DH_OPTIONS='$(DH_OPTIONS)'
+
+install-tree: DH_OPTIONS = -plinux-tree-$(VERSION)
+install-tree:
+	+$(MAKE_SELF) install-dummy DH_OPTIONS='$(DH_OPTIONS)'
+
+# vim: filetype=make
--- linux-2.6-2.6.30.orig/debian/config.defines.dump
+++ linux-2.6-2.6.30/debian/config.defines.dump
@@ -0,0 +1,579 @@
+[('abi',)]
+abiname: 'bpo.1'
+ignore-changes: ['nf_conntrack_tcp_update']
+
+[('abi', 'hppa')]
+ignore-changes: ['*']
+
+[('base',)]
+arches: ['alpha', 'amd64', 'arm', 'armel', 'hppa', 'i386', 'ia64', 'm68k', 'mips', 'mipsel', 'powerpc', 's390', 'sparc']
+featuresets: ['none', 'openvz', 'vserver', 'xen']
+compiler: 'gcc-4.3'
+
+[('base', None, 'openvz')]
+enabled: False
+
+[('base', None, 'vserver')]
+enabled: False
+
+[('base', None, 'xen')]
+enabled: False
+
+[('base', 'alpha')]
+kernel-arch: 'alpha'
+featuresets: ['none']
+
+[('base', 'alpha', None, 'alpha-generic')]
+class: 'Alpha'
+
+[('base', 'alpha', None, 'alpha-legacy')]
+class: 'Alpha Legacy'
+
+[('base', 'alpha', None, 'alpha-smp')]
+class: 'Alpha SMP'
+
+[('base', 'alpha', 'none')]
+implicit-flavour: True
+flavours: ['alpha-generic', 'alpha-smp', 'alpha-legacy']
+
+[('base', 'amd64')]
+kernel-arch: 'x86'
+featuresets: ['none', 'openvz', 'vserver', 'xen']
+
+[('base', 'amd64', None, 'amd64')]
+longclass: 'all 64bit single- and multiprocessor AMD and Intel'
+class: 'AMD64'
+
+[('base', 'amd64', 'none')]
+implicit-flavour: True
+flavours: ['amd64']
+
+[('base', 'amd64', 'openvz')]
+flavours: ['amd64']
+
+[('base', 'amd64', 'vserver')]
+flavours: ['amd64']
+
+[('base', 'amd64', 'xen')]
+flavours: ['amd64']
+
+[('base', 'arm')]
+kernel-arch: 'arm'
+featuresets: ['none']
+
+[('base', 'arm', None, 'footbridge')]
+longclass: 'Footbridge based (CATS, Netwinder)'
+class: 'Footbridge'
+
+[('base', 'arm', None, 'iop32x')]
+longclass: 'IOP32x based (Thecus N2100, etc)'
+class: 'IOP32x'
+
+[('base', 'arm', None, 'ixp4xx')]
+longclass: 'IXP4xx based (Linksys NSLU2, etc)'
+class: 'IXP4xx'
+
+[('base', 'arm', None, 'orion5x')]
+longclass: 'Orion 5181, 5182 and 5281 based (QNAP TS-109/TS-209, etc)'
+class: 'Orion'
+
+[('base', 'arm', None, 'versatile')]
+longclass: 'Versatile (PB, AB, Qemu)'
+class: 'Versatile'
+
+[('base', 'arm', 'none')]
+implicit-flavour: True
+flavours: ['footbridge', 'iop32x', 'ixp4xx', 'orion5x']
+
+[('base', 'armel')]
+kernel-arch: 'arm'
+featuresets: ['none']
+
+[('base', 'armel', None, 'iop32x')]
+longclass: 'IOP32x based (Thecus N2100, etc)'
+class: 'IOP32x'
+
+[('base', 'armel', None, 'ixp4xx')]
+longclass: 'IXP4xx based (Linksys NSLU2, etc)'
+class: 'IXP4xx'
+
+[('base', 'armel', None, 'kirkwood')]
+longclass: 'Marvell Kirkwood based (SheevaPlug, QNAP TS-119/TS-219, etc)'
+class: 'Marvell Kirkwood'
+
+[('base', 'armel', None, 'orion5x')]
+longclass: 'Orion 5181, 5182 and 5281 based (QNAP TS-109/TS-209, etc)'
+class: 'Orion'
+
+[('base', 'armel', None, 'versatile')]
+longclass: 'Versatile (PB, AB, Qemu)'
+class: 'Versatile'
+
+[('base', 'armel', 'none')]
+implicit-flavour: True
+flavours: ['iop32x', 'ixp4xx', 'kirkwood', 'orion5x', 'versatile']
+
+[('base', 'hppa')]
+kernel-arch: 'parisc'
+featuresets: ['none']
+
+[('base', 'hppa', None, 'parisc')]
+class: '32-bit PA-RISC'
+
+[('base', 'hppa', None, 'parisc-smp')]
+class: 'multiprocessor 32-bit PA-RISC'
+
+[('base', 'hppa', None, 'parisc64')]
+class: '64-bit PA-RISC'
+cflags: '-fno-cse-follow-jumps'
+override-host-type: 'hppa64-linux-gnu'
+
+[('base', 'hppa', None, 'parisc64-smp')]
+class: 'multiprocessor 64-bit PA-RISC'
+cflags: '-fno-cse-follow-jumps'
+override-host-type: 'hppa64-linux-gnu'
+
+[('base', 'hppa', 'none')]
+implicit-flavour: True
+flavours: ['parisc', 'parisc-smp', 'parisc64', 'parisc64-smp']
+
+[('base', 'i386')]
+kernel-arch: 'x86'
+featuresets: ['none', 'openvz', 'vserver', 'xen']
+
+[('base', 'i386', None, '486')]
+longclass: 'x86 and compatible'
+class: 'x86'
+
+[('base', 'i386', None, '686')]
+longclass: 'Pentium Pro/Celeron/Pentium II/Pentium III/Pentium 4'
+class: 'PPro/Celeron/PII/PIII/P4'
+
+[('base', 'i386', None, '686-bigmem')]
+longclass: 'Pentium Pro/Celeron/Pentium II/Pentium III/Pentium 4 with 4-64G RAM'
+class: 'PPro/Celeron/PII/PIII/P4'
+
+[('base', 'i386', None, 'amd64')]
+longclass: 'all 64bit single- and multiprocessor AMD and Intel'
+class: 'AMD64'
+
+[('base', 'i386', 'none')]
+implicit-flavour: True
+flavours: ['486', '686', '686-bigmem', 'amd64']
+
+[('base', 'i386', 'openvz')]
+flavours: ['686']
+
+[('base', 'i386', 'vserver')]
+flavours: ['686', '686-bigmem']
+
+[('base', 'i386', 'xen')]
+flavours: ['686']
+
+[('base', 'i386', 'xen', '686')]
+longclass: 'i686 and compatible'
+class: 'i686'
+
+[('base', 'ia64')]
+kernel-arch: 'ia64'
+featuresets: ['none', 'vserver']
+
+[('base', 'ia64', None, 'itanium')]
+class: 'Itanium'
+
+[('base', 'ia64', None, 'mckinley')]
+class: 'Itanium II'
+
+[('base', 'ia64', 'none')]
+implicit-flavour: True
+flavours: ['itanium', 'mckinley']
+
+[('base', 'ia64', 'vserver')]
+flavours: ['itanium', 'mckinley']
+
+[('base', 'm68k')]
+kernel-arch: 'm68k'
+featuresets: ['none']
+
+[('base', 'm68k', None, 'amiga')]
+class: 'Amiga'
+
+[('base', 'm68k', None, 'atari')]
+class: 'Atari'
+
+[('base', 'm68k', None, 'bvme6000')]
+class: 'BVM BVME4000 and BVME6000'
+
+[('base', 'm68k', None, 'hp')]
+class: 'HP'
+
+[('base', 'm68k', None, 'mac')]
+class: 'Macintosh'
+
+[('base', 'm68k', None, 'mvme147')]
+class: 'Motorola MVME147'
+
+[('base', 'm68k', None, 'mvme16x')]
+class: 'Motorola MVME162/6/7, MVME172/7'
+
+[('base', 'm68k', None, 'q40')]
+class: 'Q40 and Q60'
+
+[('base', 'm68k', None, 'sun3')]
+class: 'sun3'
+
+[('base', 'm68k', 'none')]
+implicit-flavour: True
+flavours: ['amiga', 'atari', 'bvme6000', 'mac', 'mvme147', 'mvme16x']
+
+[('base', 'mips')]
+kernel-arch: 'mips'
+featuresets: ['none']
+
+[('base', 'mips', None, '4kc-malta')]
+longclass: 'MIPS Malta board'
+class: 'MIPS Malta'
+
+[('base', 'mips', None, '5kc-malta')]
+longclass: 'MIPS Malta board (64-bit)'
+class: 'MIPS Malta (64-bit)'
+
+[('base', 'mips', None, 'r4k-ip22')]
+longclass: 'SGI IP22 (Indy, Indigo2)'
+class: 'SGI IP22'
+
+[('base', 'mips', None, 'r5k-ip32')]
+longclass: 'SGI IP32 (O2)'
+class: 'SGI IP32'
+
+[('base', 'mips', None, 'sb1-bcm91250a')]
+longclass: 'Broadcom BCM91250A (aka SWARM)'
+class: 'BCM91250A'
+
+[('base', 'mips', None, 'sb1a-bcm91480b')]
+longclass: 'Broadcom BCM91480B (aka BigSur)'
+class: 'BCM91480B'
+
+[('base', 'mips', 'none')]
+implicit-flavour: True
+flavours: ['r4k-ip22', 'r5k-ip32', 'sb1-bcm91250a', 'sb1a-bcm91480b', '4kc-malta', '5kc-malta']
+
+[('base', 'mipsel')]
+kernel-arch: 'mips'
+featuresets: ['none']
+
+[('base', 'mipsel', None, '4kc-malta')]
+longclass: 'MIPS Malta board'
+class: 'MIPS Malta'
+
+[('base', 'mipsel', None, '5kc-malta')]
+longclass: 'MIPS Malta board (64-bit)'
+class: 'MIPS Malta (64-bit)'
+
+[('base', 'mipsel', None, 'r5k-cobalt')]
+longclass: 'Cobalt (Qube, RaQ, Qube2, RaQ2)'
+class: 'Cobalt'
+
+[('base', 'mipsel', None, 'sb1-bcm91250a')]
+longclass: 'Broadcom BCM91250A (aka SWARM)'
+class: 'BCM91250A'
+
+[('base', 'mipsel', None, 'sb1a-bcm91480b')]
+longclass: 'Broadcom BCM91480B (aka BigSur)'
+class: 'BCM91480B'
+
+[('base', 'mipsel', 'none')]
+implicit-flavour: True
+flavours: ['r5k-cobalt', 'sb1-bcm91250a', 'sb1a-bcm91480b', '4kc-malta', '5kc-malta']
+
+[('base', 'powerpc')]
+kernel-arch: 'powerpc'
+featuresets: ['none', 'vserver']
+
+[('base', 'powerpc', None, 'powerpc')]
+class: 'uniprocessor 32-bit PowerPC'
+
+[('base', 'powerpc', None, 'powerpc-smp')]
+class: 'multiprocessor 32-bit PowerPC'
+
+[('base', 'powerpc', None, 'powerpc64')]
+class: '64-bit PowerPC'
+
+[('base', 'powerpc', 'none')]
+implicit-flavour: True
+flavours: ['powerpc', 'powerpc-smp', 'powerpc64']
+
+[('base', 'powerpc', 'vserver')]
+flavours: ['powerpc', 'powerpc64']
+
+[('base', 's390')]
+kernel-arch: 's390'
+featuresets: ['none', 'vserver']
+
+[('base', 's390', None, 's390')]
+class: 'IBM S/390'
+
+[('base', 's390', None, 's390-tape')]
+modules: False
+class: 'IBM S/390'
+
+[('base', 's390', None, 's390x')]
+class: 'IBM zSeries'
+
+[('base', 's390', None, 's390x-tape')]
+modules: False
+class: 'IBM zSeries'
+
+[('base', 's390', 'none')]
+implicit-flavour: True
+flavours: ['s390x', 's390x-tape']
+
+[('base', 's390', 'vserver')]
+flavours: ['s390x']
+
+[('base', 'sparc')]
+kernel-arch: 'sparc'
+featuresets: ['none', 'vserver']
+
+[('base', 'sparc', None, 'sparc32')]
+class: 'uniprocessor sparc32 (sun4m)'
+
+[('base', 'sparc', None, 'sparc64')]
+class: 'uniprocessor 64-bit UltraSPARC'
+
+[('base', 'sparc', None, 'sparc64-smp')]
+class: 'multiprocessor 64-bit UltraSPARC'
+
+[('base', 'sparc', 'none')]
+implicit-flavour: True
+flavours: ['sparc64', 'sparc64-smp']
+
+[('base', 'sparc', 'vserver')]
+flavours: ['sparc64']
+
+[('build', 'arm', None, 'iop32x')]
+image-file: 'arch/arm/boot/zImage'
+
+[('build', 'arm', None, 'ixp4xx')]
+image-file: 'arch/arm/boot/zImage'
+
+[('build', 'arm', None, 'orion5x')]
+image-file: 'arch/arm/boot/zImage'
+
+[('build', 'armel', None, 'iop32x')]
+image-file: 'arch/arm/boot/zImage'
+
+[('build', 'armel', None, 'ixp4xx')]
+image-file: 'arch/arm/boot/zImage'
+
+[('build', 'armel', None, 'kirkwood')]
+image-file: 'arch/arm/boot/zImage'
+
+[('build', 'armel', None, 'orion5x')]
+image-file: 'arch/arm/boot/zImage'
+
+[('commands-image-initramfs-generators',)]
+yaird: 'mkinitrd.yaird'
+initramfs-tools: 'update-initramfs'
+
+[('image',)]
+desc-long-part-xen: 'This kernel also runs on a Xen hypervisor.\nIt supports only unpriviledged (domU) operation.'
+initramfs-generators: ['initramfs-tools', 'yaird', 'initramfs-fallback']
+type: 'plain'
+
+[('image', None, 'openvz')]
+desc-parts: ['openvz']
+depends: 'vzctl'
+desc-short-part-openvz: 'OpenVZ support'
+desc-long-part-openvz: 'This kernel includes support for OpenVZ container-based virtualization.'
+
+[('image', None, 'vserver')]
+desc-parts: ['vserver']
+desc-long-part-vserver: 'This kernel includes support for Linux-VServer virtualization.'
+recommends: 'util-vserver'
+desc-short-part-vserver: 'Linux-VServer support'
+
+[('image', None, 'xen')]
+desc-parts: ['xenold']
+desc-short-part-xenold: 'oldstyle Xen support'
+desc-long-part-xenold: 'This kernel only runs on a Xen hypervisor.\nIt supports both priviledged (dom0) and unpriviledged (domU) operation.'
+
+[('image', 'alpha')]
+suggests: 'aboot, fdutils'
+
+[('image', 'amd64')]
+suggests: 'grub | lilo'
+configs: ['kernelarch-x86/config', 'amd64/config']
+
+[('image', 'amd64', None, 'amd64')]
+desc-parts: ['xen']
+configs: ['kernelarch-x86/config-arch-64', 'amd64/config.amd64']
+
+[('image', 'amd64', 'xen')]
+suggests: 'grub'
+initramfs-generators: ['initramfs-tools']
+type: 'plain-xen'
+
+[('image', 'arm')]
+suggests: 'fdutils'
+
+[('image', 'arm', None, 'footbridge')]
+suggests: 'nwutil'
+
+[('image', 'arm', None, 'iop32x')]
+check-size: '1441784'
+
+[('image', 'arm', None, 'ixp4xx')]
+check-size: '1441760'
+
+[('image', 'arm', None, 'orion5x')]
+check-size: '1572792'
+recommends: 'uboot-mkimage'
+
+[('image', 'armel')]
+suggests: 'fdutils'
+
+[('image', 'armel', None, 'iop32x')]
+check-size: '1441784'
+configs: ['arm/config.iop32x']
+
+[('image', 'armel', None, 'ixp4xx')]
+check-size: '1441760'
+configs: ['arm/config.ixp4xx']
+
+[('image', 'armel', None, 'kirkwood')]
+check-size: '2097080'
+recommends: 'uboot-mkimage'
+
+[('image', 'armel', None, 'orion5x')]
+check-size: '1572792'
+configs: ['arm/config.orion5x']
+recommends: 'uboot-mkimage'
+
+[('image', 'armel', None, 'versatile')]
+configs: ['arm/config.versatile']
+
+[('image', 'hppa')]
+suggests: 'palo'
+
+[('image', 'i386')]
+suggests: 'grub | lilo'
+configs: ['kernelarch-x86/config', 'i386/config']
+
+[('image', 'i386', None, '486')]
+configs: ['kernelarch-x86/config-arch-32']
+
+[('image', 'i386', None, '686')]
+configs: ['kernelarch-x86/config-arch-32']
+recommends: 'libc6-i686'
+
+[('image', 'i386', None, '686-bigmem')]
+desc-parts: ['xen']
+configs: ['kernelarch-x86/config-arch-32']
+recommends: 'libc6-i686'
+
+[('image', 'i386', None, 'amd64')]
+desc-parts: ['xen']
+configs: ['kernelarch-x86/config-arch-64', 'amd64/config', 'amd64/config.amd64']
+recommends: 'libc6-i686'
+
+[('image', 'i386', 'openvz', '686')]
+desc-parts: ['xen']
+configs: ['i386/config.686-bigmem']
+
+[('image', 'i386', 'vserver')]
+recommends: 'util-vserver, libc6-i686'
+
+[('image', 'i386', 'xen')]
+suggests: 'grub'
+initramfs-generators: ['initramfs-tools']
+type: 'plain-xen'
+
+[('image', 'i386', 'xen', '686')]
+configs: ['i386/config.686-bigmem', 'i386/xen/config']
+recommends: 'libc6-xen'
+
+[('image', 'ia64')]
+suggests: 'elilo, fdutils'
+
+[('image', 'm68k')]
+suggests: 'vmelilo, fdutils'
+initramfs: False
+
+[('image', 'mips')]
+initramfs: False
+
+[('image', 'mipsel')]
+initramfs: False
+
+[('image', 'powerpc')]
+suggests: 'mkvmlinuz'
+
+[('image', 'powerpc', None, 'powerpc-smp')]
+configs: ['powerpc/config.powerpc', 'powerpc/config.powerpc-smp']
+
+[('image', 'powerpc', 'vserver', 'powerpc')]
+configs: ['powerpc/config.powerpc-smp']
+
+[('image', 'powerpc', 'vserver', 'powerpc64')]
+configs: ['powerpc/config.powerpc64']
+
+[('image', 's390')]
+desc-short-part-tape: 'IPL from tape'
+desc-long-part-tape: 'This kernel has support to IPL (boot) from a tape.'
+desc-long-part-reader: 'This kernel has support to IPL (boot) from a VM reader or DASD device.'
+suggests: 's390-tools'
+
+[('image', 's390', None, 's390')]
+desc-parts: ['reader']
+
+[('image', 's390', None, 's390-tape')]
+desc-parts: ['tape']
+override-localversion: 's390'
+type: 'plain-s390-tape'
+initramfs: False
+
+[('image', 's390', None, 's390x')]
+desc-parts: ['reader']
+
+[('image', 's390', None, 's390x-tape')]
+desc-parts: ['tape']
+override-localversion: 's390x'
+type: 'plain-s390-tape'
+initramfs: False
+
+[('image', 'sparc')]
+suggests: 'silo, fdutils'
+
+[('image', 'sparc', None, 'sparc32')]
+image-postproc: 'sparc32-image-postproc'
+
+[('image', 'sparc', 'vserver')]
+recommends: 'util-vserver, libc6-sparc64'
+
+[('image', 'sparc', 'vserver', 'sparc64')]
+configs: ['sparc/config.sparc64-smp']
+
+[('relations',)]
+util-vserver: 'util-vserver (>= 0.30.215)'
+initramfs-fallback: 'linux-initramfs-tool'
+yaird: 'yaird (>= 0.0.13)'
+gcc-4.3: 'gcc-4.3'
+initramfs-tools: 'initramfs-tools (>= 0.55)'
+
+[('relations', 'hppa')]
+gcc-4.3: 'gcc-4.3, binutils-hppa64, gcc-4.3-hppa64'
+
+[('version',)]
+abiname: '-bpo.1'
+source: '2.6.30-5~bpo50+1'
+
+[('xen',)]
+versions: ['3.2-1']
+
+[('xen', 'amd64', 'xen')]
+flavours: ['amd64']
+
+[('xen', 'i386', 'xen')]
+flavours: ['i386', 'amd64']
+
--- linux-2.6-2.6.30.orig/debian/control.md5sum
+++ linux-2.6-2.6.30/debian/control.md5sum
@@ -0,0 +1,48 @@
+f2fa5341cb2e385d57218910c9b0ce6b  debian/bin/gencontrol.py
+45ce79458e395f48e21df49ae8bc2601  debian/changelog
+a7fce16056bed535af9419ca4ff700f8  debian/templates/control.headers.arch.in
+4360172797de60fea4681d641a46e139  debian/templates/control.headers.featureset.in
+05f7ae2c60c6c50068834f68f13cdd0f  debian/templates/control.headers.in
+572906e923931f527d10b1ecfbf3838a  debian/templates/control.image.type-kernel-package.in
+93c09af20b70d8cf678b8601fb6a1ac5  debian/templates/control.image.type-modulesextra.in
+d075b0117c76a9de00dc052cb36601bb  debian/templates/control.image.type-modulesinline.in
+e8830773f0867cfc02b682b2ca6dfd4e  debian/templates/control.image.type-plain.in
+231980b29e6728acc6935a587d88e499  debian/templates/control.image.type-standalone.in
+c68b53c933e7e2e21b1afd04f021b80a  debian/templates/control.libc-dev.in
+82c1ffacac5e1554c454704f2fd96f89  debian/templates/control.main.in
+28b0448d88a5c3c4bea186e4379dbf21  debian/templates/control.source.in
+72fb03e6b8fafe549e81566a32a6bab3  debian/templates/control.support.in
+69f468874158eb86df66d4d7ae9136ef  debian/templates/control.tree.in
+5082a9458b2b6830085ddf5a0e271613  debian/templates/control.xen-linux-system.in
+e78ef4f93e1efb9c4d89b6367d9c3a30  debian/templates/image.xen.postinst.in
+1cb81b60bfe6b79fd6613ae102fe7217  debian/templates/image.xen.postrm.in
+3ad85bca8ade992de90953d5c846c9e9  debian/templates/image.xen.prerm.in
+24489dcda33a5a959cf8c6c43815aac1  debian/templates/patch.apply.in
+7c715fa76972f1336fa34634173c2be8  debian/config/defines
+cd26f6e430e31fce8183894c9d673958  debian/config/alpha/defines
+05bf39e2727268351c809949086a9752  debian/config/amd64/defines
+0e4a6d51d8a847fb2b8682916477f1e1  debian/config/arm/defines
+04e92b1e30614ca9a1d0b8fd52aa7436  debian/config/armel/defines
+b3dfb56c9c8544283d8fcecab0f053f3  debian/config/featureset-openvz/defines
+e2d04fbf4973469d23610c1b6d0f67c1  debian/config/featureset-vserver/defines
+b4af04ce6a5ad1b7dfb3698e0a31d82f  debian/config/featureset-xen/defines
+0cdd6868a8e2b551a364b31505f25ebd  debian/config/hppa/defines
+6ce2cb210ae8fa10aa9d638bf4cb459c  debian/config/i386/defines
+bf71896bbbb9171286dba77c3c90be3f  debian/config/ia64/defines
+87dfb28524776eccd4ff996c0525c24a  debian/config/m68k/defines
+1eed1d85f14a62f2a19fca5252cc4499  debian/config/mips/defines
+cd8f707f723b3867373717102bbbd1c3  debian/config/mipsel/defines
+f1cbac7a7516b392bb700adb56fd34fe  debian/config/powerpc/defines
+8e5342ce2cf935c00d0063a523fbbe8c  debian/config/s390/defines
+2ac7b5be2e4c8669a8cc219f45af5297  debian/config/sparc/defines
+610d1efc57fd488bf79930a8eb2e4b47  debian/config/alpha/vserver/defines
+46721fa264c40a0daa399e47fa9d30e5  debian/config/amd64/openvz/defines
+46721fa264c40a0daa399e47fa9d30e5  debian/config/amd64/vserver/defines
+626d9265630dc8a696dff917d24528bf  debian/config/amd64/xen/defines
+9ce63dd692a451939f7c3dedb0da6ad3  debian/config/i386/openvz/defines
+016170a8674efb47a71f8a4e539affc2  debian/config/i386/vserver/defines
+ec5ad864eb6219807aed5892fccb1e04  debian/config/i386/xen/defines
+ce862f2fd6224847ead1860fe13c0034  debian/config/ia64/vserver/defines
+b101542c5fee8434db513161755e1baf  debian/config/powerpc/vserver/defines
+209b62be5394ff27d63a9fbc6fd90f76  debian/config/s390/vserver/defines
+2a3c4734b82c742bf215d809d8cbc0fe  debian/config/sparc/vserver/defines
--- linux-2.6-2.6.30.orig/debian/copyright
+++ linux-2.6-2.6.30/debian/copyright
@@ -0,0 +1,48 @@
+This is the Debian GNU/Linux prepackaged version of the Linux kernel.
+
+It was downloaded from http://ftp.kernel.org/pub/linux/kernel/.
+
+Copyright:
+
+   Copyright (C) 1991-2009 Linus Torwalds
+   and many others
+
+License:
+
+   This package is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
+
+   This package 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 package; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+
+On Debian systems, the complete text of the GNU General Public License version
+2 can be found in `/usr/share/common-licenses/GPL-2'.
+
+License for the Xen interface headers:
+
+   Permission is hereby granted, free of charge, to any person obtaining a copy
+   of this software and associated documentation files (the "Software"), to
+   deal in the Software without restriction, including without limitation the
+   rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+   sell copies of the Software, and to permit persons to whom the Software is
+   furnished to do so, subject to the following conditions:
+
+   The above copyright notice and this permission notice shall be included in
+   all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+   DEALINGS IN THE SOFTWARE.
+
+The Debian packaging is licensed under the GPL, see above.
--- linux-2.6-2.6.30.orig/debian/README
+++ linux-2.6-2.6.30/debian/README
@@ -0,0 +1,73 @@
+Migrating to the common kernel-image package
+-------------------------------------------- 
+Files for architecture <arch> should be placed into arch/<arch>. This
+directory normally contains a common config file for this architecture
+('config'), flavour-specific config files, Makefile.inc file,
+controlling the build for this arch, and the defines file, containing
+the machine descriptions for various flavours.  For arches with
+subarches the subdirectory arch/<arch>/<subarch> with the same file
+structure must be created for each subarch.
+
+Kernel config files
+-------------------
+Configuration files are constructed dynamically by concatenating a number
+of config files as described below. 
+
+For architecture without subarches:
+
+  arch/config
+  arch/<arch>/config 
+  arch/<arch>/config.<flavour>
+  
+For architecture with subarches:
+
+  arch/config
+  arch/<arch>/config
+  arch/<arch>/<subarch>/config
+  arch/<arch>/<subarch>/config.<flavour>
+
+Control file
+------------
+The master control file debian/control must be generated before
+the package is uploaded. debian/rules contains the debian/control 
+target, which generates the control file by invoking the 
+debian/bin/gencontrol.py script, which combines the templates from
+the templates directory and arch/subarch specific defines file to
+produce the debian/control file. Note that this target is intentionally
+made to fail with a non-zero exit code to make sure that it is never
+run during an automatic build. The following variables are substituted
+into the templates:
+
+@version@      Upstream kernel version, for example 2.6.11.
+@major@        The major version, for example 2.6
+@arch@         The Debian arch name, such as powerpc or i386.
+@subarch@      The subarch - only used by powerpc right now.
+@flavour@      The build flavour, such as 686 or k7-smp.
+@class@        The CPU/architecture class; displayed in synopsis.  It should
+               be fairly short, as the synopsis is supposed to be <80 chars.
+               It should be in the form "foo class", and will show up in the
+	       description as "foo class machines".
+@longclass@    The CPU/architecture class; displayed in the extended
+               description.  The same rules apply as in @class@.  If
+	       this is unset, it will default to @class@.
+@desc@         (Potentially) multi-line verbiage that's appended to
+               -image descriptions.
+@abiname@      Current abiname, a single digit.
+
+Normally, the arch-specific contents should be controlled by
+adjusting the corresponding defines file.
+
+Makefile.inc
+------------
+Each architecture subdirectory in arch may contain a Makefile.inc
+file, which is included by debian/rules after definining all the
+variables. It may be used to override the standard variables on
+per-architecture basis and other evil things. So far the valid uses of
+this file include the setting of the following variables:
+
+image_postproc
+
+  A command to be run after the kernel image is built. As far as I know,
+  it only required on sparc for stripping of the kernel which is too big
+  to be booted otherwise. Typical use is too ugly to be presented here.
+
--- linux-2.6-2.6.30.orig/debian/rules.gen
+++ linux-2.6-2.6.30/debian/rules.gen
@@ -0,0 +1,784 @@
+.NOTPARALLEL:
+binary-arch: binary-arch_alpha binary-arch_amd64 binary-arch_arm binary-arch_armel binary-arch_hppa binary-arch_i386 binary-arch_ia64 binary-arch_m68k binary-arch_mips binary-arch_mipsel binary-arch_powerpc binary-arch_s390 binary-arch_sparc
+binary-arch_alpha: binary-arch_alpha_none binary-arch_alpha_real
+binary-arch_alpha_none: binary-arch_alpha_none_alpha-generic binary-arch_alpha_none_alpha-legacy binary-arch_alpha_none_alpha-smp binary-arch_alpha_none_real
+binary-arch_alpha_none_alpha-generic: binary-arch_alpha_none_alpha-generic_real
+binary-arch_alpha_none_alpha-generic_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-generic' FLAVOUR='alpha-generic' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-generic' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-alpha-generic' ARCH='alpha' COMPILER='gcc-4.3'
+binary-arch_alpha_none_alpha-legacy: binary-arch_alpha_none_alpha-legacy_real
+binary-arch_alpha_none_alpha-legacy_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-legacy' FLAVOUR='alpha-legacy' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-legacy' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-alpha-legacy' ARCH='alpha' COMPILER='gcc-4.3'
+binary-arch_alpha_none_alpha-smp: binary-arch_alpha_none_alpha-smp_real
+binary-arch_alpha_none_alpha-smp_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-smp' FLAVOUR='alpha-smp' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-alpha-smp' ARCH='alpha' COMPILER='gcc-4.3'
+binary-arch_alpha_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' ABINAME='-bpo.1' ARCH='alpha'
+binary-arch_alpha_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='alpha'
+binary-arch_amd64: binary-arch_amd64_none binary-arch_amd64_real
+binary-arch_amd64_none: binary-arch_amd64_none_amd64 binary-arch_amd64_none_real
+binary-arch_amd64_none_amd64: binary-arch_amd64_none_amd64_real
+binary-arch_amd64_none_amd64_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-amd64' FLAVOUR='amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/amd64/config debian/config/kernelarch-x86/config-arch-64 debian/config/amd64/config.amd64' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-amd64' ARCH='amd64' COMPILER='gcc-4.3'
+binary-arch_amd64_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' ABINAME='-bpo.1' ARCH='amd64'
+binary-arch_amd64_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='amd64'
+binary-arch_arm: binary-arch_arm_none binary-arch_arm_real
+binary-arch_arm_none: binary-arch_arm_none_footbridge binary-arch_arm_none_iop32x binary-arch_arm_none_ixp4xx binary-arch_arm_none_orion5x binary-arch_arm_none_real
+binary-arch_arm_none_footbridge: binary-arch_arm_none_footbridge_real
+binary-arch_arm_none_footbridge_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-footbridge' FLAVOUR='footbridge' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.footbridge' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-footbridge' ARCH='arm' COMPILER='gcc-4.3'
+binary-arch_arm_none_iop32x: binary-arch_arm_none_iop32x_real
+binary-arch_arm_none_iop32x_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-iop32x' FLAVOUR='iop32x' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.iop32x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-iop32x' ARCH='arm' COMPILER='gcc-4.3'
+binary-arch_arm_none_ixp4xx: binary-arch_arm_none_ixp4xx_real
+binary-arch_arm_none_ixp4xx_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-ixp4xx' FLAVOUR='ixp4xx' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.ixp4xx' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-ixp4xx' ARCH='arm' COMPILER='gcc-4.3'
+binary-arch_arm_none_orion5x: binary-arch_arm_none_orion5x_real
+binary-arch_arm_none_orion5x_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-orion5x' FLAVOUR='orion5x' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.orion5x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-orion5x' ARCH='arm' COMPILER='gcc-4.3'
+binary-arch_arm_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' ABINAME='-bpo.1' ARCH='arm'
+binary-arch_arm_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='arm'
+binary-arch_armel: binary-arch_armel_none binary-arch_armel_real
+binary-arch_armel_none: binary-arch_armel_none_iop32x binary-arch_armel_none_ixp4xx binary-arch_armel_none_kirkwood binary-arch_armel_none_orion5x binary-arch_armel_none_real binary-arch_armel_none_versatile
+binary-arch_armel_none_iop32x: binary-arch_armel_none_iop32x_real
+binary-arch_armel_none_iop32x_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-iop32x' FLAVOUR='iop32x' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.iop32x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-iop32x' ARCH='armel' COMPILER='gcc-4.3'
+binary-arch_armel_none_ixp4xx: binary-arch_armel_none_ixp4xx_real
+binary-arch_armel_none_ixp4xx_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-ixp4xx' FLAVOUR='ixp4xx' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.ixp4xx' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-ixp4xx' ARCH='armel' COMPILER='gcc-4.3'
+binary-arch_armel_none_kirkwood: binary-arch_armel_none_kirkwood_real
+binary-arch_armel_none_kirkwood_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-kirkwood' FLAVOUR='kirkwood' KCONFIG='debian/config/config debian/config/armel/config debian/config/armel/config.kirkwood' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-kirkwood' ARCH='armel' COMPILER='gcc-4.3'
+binary-arch_armel_none_orion5x: binary-arch_armel_none_orion5x_real
+binary-arch_armel_none_orion5x_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-orion5x' FLAVOUR='orion5x' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.orion5x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-orion5x' ARCH='armel' COMPILER='gcc-4.3'
+binary-arch_armel_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' ABINAME='-bpo.1' ARCH='armel'
+binary-arch_armel_none_versatile: binary-arch_armel_none_versatile_real
+binary-arch_armel_none_versatile_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-versatile' FLAVOUR='versatile' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.versatile' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-versatile' ARCH='armel' COMPILER='gcc-4.3'
+binary-arch_armel_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='armel'
+binary-arch_hppa: binary-arch_hppa_none binary-arch_hppa_real
+binary-arch_hppa_none: binary-arch_hppa_none_parisc binary-arch_hppa_none_parisc-smp binary-arch_hppa_none_parisc64 binary-arch_hppa_none_parisc64-smp binary-arch_hppa_none_real
+binary-arch_hppa_none_parisc: binary-arch_hppa_none_parisc_real
+binary-arch_hppa_none_parisc-smp: binary-arch_hppa_none_parisc-smp_real
+binary-arch_hppa_none_parisc-smp_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc-smp' FLAVOUR='parisc-smp' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-parisc-smp' ARCH='hppa' COMPILER='gcc-4.3'
+binary-arch_hppa_none_parisc64: binary-arch_hppa_none_parisc64_real
+binary-arch_hppa_none_parisc64-smp: binary-arch_hppa_none_parisc64-smp_real
+binary-arch_hppa_none_parisc64-smp_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc64-smp' FLAVOUR='parisc64-smp' CFLAGS='-fno-cse-follow-jumps' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-parisc64-smp' ARCH='hppa' COMPILER='gcc-4.3'
+binary-arch_hppa_none_parisc64_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc64' FLAVOUR='parisc64' CFLAGS='-fno-cse-follow-jumps' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-parisc64' ARCH='hppa' COMPILER='gcc-4.3'
+binary-arch_hppa_none_parisc_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc' FLAVOUR='parisc' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-parisc' ARCH='hppa' COMPILER='gcc-4.3'
+binary-arch_hppa_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' ABINAME='-bpo.1' ARCH='hppa'
+binary-arch_hppa_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='hppa'
+binary-arch_i386: binary-arch_i386_none binary-arch_i386_real
+binary-arch_i386_none: binary-arch_i386_none_486 binary-arch_i386_none_686 binary-arch_i386_none_686-bigmem binary-arch_i386_none_amd64 binary-arch_i386_none_real
+binary-arch_i386_none_486: binary-arch_i386_none_486_real
+binary-arch_i386_none_486_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-486' FLAVOUR='486' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.486' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-486' ARCH='i386' COMPILER='gcc-4.3'
+binary-arch_i386_none_686: binary-arch_i386_none_686_real
+binary-arch_i386_none_686-bigmem: binary-arch_i386_none_686-bigmem_real
+binary-arch_i386_none_686-bigmem_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-686-bigmem' FLAVOUR='686-bigmem' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.686-bigmem' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-686-bigmem' ARCH='i386' COMPILER='gcc-4.3'
+binary-arch_i386_none_686_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-686' FLAVOUR='686' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.686' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-686' ARCH='i386' COMPILER='gcc-4.3'
+binary-arch_i386_none_amd64: binary-arch_i386_none_amd64_real
+binary-arch_i386_none_amd64_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-amd64' FLAVOUR='amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-64 debian/config/amd64/config debian/config/amd64/config.amd64' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-amd64' ARCH='i386' COMPILER='gcc-4.3'
+binary-arch_i386_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' ABINAME='-bpo.1' ARCH='i386'
+binary-arch_i386_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='i386'
+binary-arch_ia64: binary-arch_ia64_none binary-arch_ia64_real
+binary-arch_ia64_none: binary-arch_ia64_none_itanium binary-arch_ia64_none_mckinley binary-arch_ia64_none_real
+binary-arch_ia64_none_itanium: binary-arch_ia64_none_itanium_real
+binary-arch_ia64_none_itanium_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-itanium' FLAVOUR='itanium' KCONFIG='debian/config/config debian/config/ia64/config debian/config/ia64/config.itanium' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-itanium' ARCH='ia64' COMPILER='gcc-4.3'
+binary-arch_ia64_none_mckinley: binary-arch_ia64_none_mckinley_real
+binary-arch_ia64_none_mckinley_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mckinley' FLAVOUR='mckinley' KCONFIG='debian/config/config debian/config/ia64/config debian/config/ia64/config.mckinley' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-mckinley' ARCH='ia64' COMPILER='gcc-4.3'
+binary-arch_ia64_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' ABINAME='-bpo.1' ARCH='ia64'
+binary-arch_ia64_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='ia64'
+binary-arch_m68k: binary-arch_m68k_none binary-arch_m68k_real
+binary-arch_m68k_none: binary-arch_m68k_none_amiga binary-arch_m68k_none_atari binary-arch_m68k_none_bvme6000 binary-arch_m68k_none_mac binary-arch_m68k_none_mvme147 binary-arch_m68k_none_mvme16x binary-arch_m68k_none_real
+binary-arch_m68k_none_amiga: binary-arch_m68k_none_amiga_real
+binary-arch_m68k_none_amiga_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-amiga' FLAVOUR='amiga' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.amiga' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-amiga' ARCH='m68k' COMPILER='gcc-4.3'
+binary-arch_m68k_none_atari: binary-arch_m68k_none_atari_real
+binary-arch_m68k_none_atari_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-atari' FLAVOUR='atari' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.atari' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-atari' ARCH='m68k' COMPILER='gcc-4.3'
+binary-arch_m68k_none_bvme6000: binary-arch_m68k_none_bvme6000_real
+binary-arch_m68k_none_bvme6000_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-bvme6000' FLAVOUR='bvme6000' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.bvme6000' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-bvme6000' ARCH='m68k' COMPILER='gcc-4.3'
+binary-arch_m68k_none_mac: binary-arch_m68k_none_mac_real
+binary-arch_m68k_none_mac_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mac' FLAVOUR='mac' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mac' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-mac' ARCH='m68k' COMPILER='gcc-4.3'
+binary-arch_m68k_none_mvme147: binary-arch_m68k_none_mvme147_real
+binary-arch_m68k_none_mvme147_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mvme147' FLAVOUR='mvme147' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mvme147' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-mvme147' ARCH='m68k' COMPILER='gcc-4.3'
+binary-arch_m68k_none_mvme16x: binary-arch_m68k_none_mvme16x_real
+binary-arch_m68k_none_mvme16x_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mvme16x' FLAVOUR='mvme16x' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mvme16x' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-mvme16x' ARCH='m68k' COMPILER='gcc-4.3'
+binary-arch_m68k_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' ARCH='m68k'
+binary-arch_m68k_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='m68k'
+binary-arch_mips: binary-arch_mips_none binary-arch_mips_real
+binary-arch_mips_none: binary-arch_mips_none_4kc-malta binary-arch_mips_none_5kc-malta binary-arch_mips_none_r4k-ip22 binary-arch_mips_none_r5k-ip32 binary-arch_mips_none_real binary-arch_mips_none_sb1-bcm91250a binary-arch_mips_none_sb1a-bcm91480b
+binary-arch_mips_none_4kc-malta: binary-arch_mips_none_4kc-malta_real
+binary-arch_mips_none_4kc-malta_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-4kc-malta' FLAVOUR='4kc-malta' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.4kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-4kc-malta' ARCH='mips' COMPILER='gcc-4.3'
+binary-arch_mips_none_5kc-malta: binary-arch_mips_none_5kc-malta_real
+binary-arch_mips_none_5kc-malta_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-5kc-malta' FLAVOUR='5kc-malta' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.5kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-5kc-malta' ARCH='mips' COMPILER='gcc-4.3'
+binary-arch_mips_none_r4k-ip22: binary-arch_mips_none_r4k-ip22_real
+binary-arch_mips_none_r4k-ip22_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-r4k-ip22' FLAVOUR='r4k-ip22' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.r4k-ip22' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-r4k-ip22' ARCH='mips' COMPILER='gcc-4.3'
+binary-arch_mips_none_r5k-ip32: binary-arch_mips_none_r5k-ip32_real
+binary-arch_mips_none_r5k-ip32_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-r5k-ip32' FLAVOUR='r5k-ip32' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.r5k-ip32' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-r5k-ip32' ARCH='mips' COMPILER='gcc-4.3'
+binary-arch_mips_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' ARCH='mips'
+binary-arch_mips_none_sb1-bcm91250a: binary-arch_mips_none_sb1-bcm91250a_real
+binary-arch_mips_none_sb1-bcm91250a_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1-bcm91250a' FLAVOUR='sb1-bcm91250a' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.sb1-bcm91250a' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sb1-bcm91250a' ARCH='mips' COMPILER='gcc-4.3'
+binary-arch_mips_none_sb1a-bcm91480b: binary-arch_mips_none_sb1a-bcm91480b_real
+binary-arch_mips_none_sb1a-bcm91480b_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1a-bcm91480b' FLAVOUR='sb1a-bcm91480b' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.sb1a-bcm91480b' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sb1a-bcm91480b' ARCH='mips' COMPILER='gcc-4.3'
+binary-arch_mips_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='mips'
+binary-arch_mipsel: binary-arch_mipsel_none binary-arch_mipsel_real
+binary-arch_mipsel_none: binary-arch_mipsel_none_4kc-malta binary-arch_mipsel_none_5kc-malta binary-arch_mipsel_none_r5k-cobalt binary-arch_mipsel_none_real binary-arch_mipsel_none_sb1-bcm91250a binary-arch_mipsel_none_sb1a-bcm91480b
+binary-arch_mipsel_none_4kc-malta: binary-arch_mipsel_none_4kc-malta_real
+binary-arch_mipsel_none_4kc-malta_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-4kc-malta' FLAVOUR='4kc-malta' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.4kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-4kc-malta' ARCH='mipsel' COMPILER='gcc-4.3'
+binary-arch_mipsel_none_5kc-malta: binary-arch_mipsel_none_5kc-malta_real
+binary-arch_mipsel_none_5kc-malta_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-5kc-malta' FLAVOUR='5kc-malta' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.5kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-5kc-malta' ARCH='mipsel' COMPILER='gcc-4.3'
+binary-arch_mipsel_none_r5k-cobalt: binary-arch_mipsel_none_r5k-cobalt_real
+binary-arch_mipsel_none_r5k-cobalt_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-r5k-cobalt' FLAVOUR='r5k-cobalt' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.r5k-cobalt' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-r5k-cobalt' ARCH='mipsel' COMPILER='gcc-4.3'
+binary-arch_mipsel_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' ARCH='mipsel'
+binary-arch_mipsel_none_sb1-bcm91250a: binary-arch_mipsel_none_sb1-bcm91250a_real
+binary-arch_mipsel_none_sb1-bcm91250a_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1-bcm91250a' FLAVOUR='sb1-bcm91250a' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.sb1-bcm91250a' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sb1-bcm91250a' ARCH='mipsel' COMPILER='gcc-4.3'
+binary-arch_mipsel_none_sb1a-bcm91480b: binary-arch_mipsel_none_sb1a-bcm91480b_real
+binary-arch_mipsel_none_sb1a-bcm91480b_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1a-bcm91480b' FLAVOUR='sb1a-bcm91480b' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.sb1a-bcm91480b' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sb1a-bcm91480b' ARCH='mipsel' COMPILER='gcc-4.3'
+binary-arch_mipsel_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='mipsel'
+binary-arch_powerpc: binary-arch_powerpc_none binary-arch_powerpc_real
+binary-arch_powerpc_none: binary-arch_powerpc_none_powerpc binary-arch_powerpc_none_powerpc-smp binary-arch_powerpc_none_powerpc64 binary-arch_powerpc_none_real
+binary-arch_powerpc_none_powerpc: binary-arch_powerpc_none_powerpc_real
+binary-arch_powerpc_none_powerpc-smp: binary-arch_powerpc_none_powerpc-smp_real
+binary-arch_powerpc_none_powerpc-smp_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc-smp' FLAVOUR='powerpc-smp' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc debian/config/powerpc/config.powerpc-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-powerpc-smp' ARCH='powerpc' COMPILER='gcc-4.3'
+binary-arch_powerpc_none_powerpc64: binary-arch_powerpc_none_powerpc64_real
+binary-arch_powerpc_none_powerpc64_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc64' FLAVOUR='powerpc64' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-powerpc64' ARCH='powerpc' COMPILER='gcc-4.3'
+binary-arch_powerpc_none_powerpc_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc' FLAVOUR='powerpc' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-powerpc' ARCH='powerpc' COMPILER='gcc-4.3'
+binary-arch_powerpc_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' ABINAME='-bpo.1' ARCH='powerpc'
+binary-arch_powerpc_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='powerpc'
+binary-arch_s390: binary-arch_s390_none binary-arch_s390_real
+binary-arch_s390_none: binary-arch_s390_none_real binary-arch_s390_none_s390x binary-arch_s390_none_s390x-tape
+binary-arch_s390_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='s390' ABINAME='-bpo.1' ARCH='s390'
+binary-arch_s390_none_s390x: binary-arch_s390_none_s390x_real
+binary-arch_s390_none_s390x-tape: binary-arch_s390_none_s390x-tape_real
+binary-arch_s390_none_s390x-tape_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-s390x' FLAVOUR='s390x-tape' KCONFIG='debian/config/config debian/config/s390/config debian/config/s390/config.s390x-tape' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='s390' ABINAME='-bpo.1' TYPE='plain-s390-tape' LOCALVERSION='-s390x-tape' ARCH='s390' COMPILER='gcc-4.3'
+binary-arch_s390_none_s390x_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-s390x' FLAVOUR='s390x' KCONFIG='debian/config/config debian/config/s390/config debian/config/s390/config.s390x' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='s390' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-s390x' ARCH='s390' COMPILER='gcc-4.3'
+binary-arch_s390_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='s390'
+binary-arch_sparc: binary-arch_sparc_none binary-arch_sparc_real
+binary-arch_sparc_none: binary-arch_sparc_none_real binary-arch_sparc_none_sparc64 binary-arch_sparc_none_sparc64-smp
+binary-arch_sparc_none_real::
+	$(MAKE) -f debian/rules.real binary-arch-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' ABINAME='-bpo.1' ARCH='sparc'
+binary-arch_sparc_none_sparc64: binary-arch_sparc_none_sparc64_real
+binary-arch_sparc_none_sparc64-smp: binary-arch_sparc_none_sparc64-smp_real
+binary-arch_sparc_none_sparc64-smp_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sparc64-smp' FLAVOUR='sparc64-smp' KCONFIG='debian/config/config debian/config/sparc/config debian/config/sparc/config.sparc64-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sparc64-smp' ARCH='sparc' COMPILER='gcc-4.3'
+binary-arch_sparc_none_sparc64_real::
+	$(MAKE) -f debian/rules.real binary-arch-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sparc64' FLAVOUR='sparc64' KCONFIG='debian/config/config debian/config/sparc/config debian/config/sparc/config.sparc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sparc64' ARCH='sparc' COMPILER='gcc-4.3'
+binary-arch_sparc_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch MAJOR='2.6' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='sparc'
+binary-indep::
+	$(MAKE) -f debian/rules.real binary-indep ABINAME='-bpo.1' SOURCEVERSION='2.6.30-5~bpo50+1' MAJOR='2.6' VERSION='2.6.30' UPSTREAMVERSION='2.6.30'
+build: build_alpha build_amd64 build_arm build_armel build_hppa build_i386 build_ia64 build_m68k build_mips build_mipsel build_powerpc build_s390 build_sparc
+build_alpha: build_alpha_none build_alpha_real
+build_alpha_none: build_alpha_none_alpha-generic build_alpha_none_alpha-legacy build_alpha_none_alpha-smp build_alpha_none_real
+build_alpha_none_alpha-generic: build_alpha_none_alpha-generic_real
+build_alpha_none_alpha-generic_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-generic' FLAVOUR='alpha-generic' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-generic' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-alpha-generic' ARCH='alpha' COMPILER='gcc-4.3'
+build_alpha_none_alpha-legacy: build_alpha_none_alpha-legacy_real
+build_alpha_none_alpha-legacy_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-legacy' FLAVOUR='alpha-legacy' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-legacy' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-alpha-legacy' ARCH='alpha' COMPILER='gcc-4.3'
+build_alpha_none_alpha-smp: build_alpha_none_alpha-smp_real
+build_alpha_none_alpha-smp_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-smp' FLAVOUR='alpha-smp' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-alpha-smp' ARCH='alpha' COMPILER='gcc-4.3'
+build_alpha_none_real:
+build_alpha_real:
+build_amd64: build_amd64_none build_amd64_real
+build_amd64_none: build_amd64_none_amd64 build_amd64_none_real
+build_amd64_none_amd64: build_amd64_none_amd64_real
+build_amd64_none_amd64_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-amd64' FLAVOUR='amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/amd64/config debian/config/kernelarch-x86/config-arch-64 debian/config/amd64/config.amd64' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-amd64' ARCH='amd64' COMPILER='gcc-4.3'
+build_amd64_none_real:
+build_amd64_real:
+build_arm: build_arm_none build_arm_real
+build_arm_none: build_arm_none_footbridge build_arm_none_iop32x build_arm_none_ixp4xx build_arm_none_orion5x build_arm_none_real
+build_arm_none_footbridge: build_arm_none_footbridge_real
+build_arm_none_footbridge_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-footbridge' FLAVOUR='footbridge' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.footbridge' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-footbridge' ARCH='arm' COMPILER='gcc-4.3'
+build_arm_none_iop32x: build_arm_none_iop32x_real
+build_arm_none_iop32x_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-iop32x' FLAVOUR='iop32x' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.iop32x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-iop32x' ARCH='arm' COMPILER='gcc-4.3'
+build_arm_none_ixp4xx: build_arm_none_ixp4xx_real
+build_arm_none_ixp4xx_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-ixp4xx' FLAVOUR='ixp4xx' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.ixp4xx' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-ixp4xx' ARCH='arm' COMPILER='gcc-4.3'
+build_arm_none_orion5x: build_arm_none_orion5x_real
+build_arm_none_orion5x_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-orion5x' FLAVOUR='orion5x' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.orion5x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-orion5x' ARCH='arm' COMPILER='gcc-4.3'
+build_arm_none_real:
+build_arm_real:
+build_armel: build_armel_none build_armel_real
+build_armel_none: build_armel_none_iop32x build_armel_none_ixp4xx build_armel_none_kirkwood build_armel_none_orion5x build_armel_none_real build_armel_none_versatile
+build_armel_none_iop32x: build_armel_none_iop32x_real
+build_armel_none_iop32x_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-iop32x' FLAVOUR='iop32x' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.iop32x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-iop32x' ARCH='armel' COMPILER='gcc-4.3'
+build_armel_none_ixp4xx: build_armel_none_ixp4xx_real
+build_armel_none_ixp4xx_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-ixp4xx' FLAVOUR='ixp4xx' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.ixp4xx' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-ixp4xx' ARCH='armel' COMPILER='gcc-4.3'
+build_armel_none_kirkwood: build_armel_none_kirkwood_real
+build_armel_none_kirkwood_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-kirkwood' FLAVOUR='kirkwood' KCONFIG='debian/config/config debian/config/armel/config debian/config/armel/config.kirkwood' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-kirkwood' ARCH='armel' COMPILER='gcc-4.3'
+build_armel_none_orion5x: build_armel_none_orion5x_real
+build_armel_none_orion5x_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-orion5x' FLAVOUR='orion5x' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.orion5x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-orion5x' ARCH='armel' COMPILER='gcc-4.3'
+build_armel_none_real:
+build_armel_none_versatile: build_armel_none_versatile_real
+build_armel_none_versatile_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-versatile' FLAVOUR='versatile' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.versatile' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-versatile' ARCH='armel' COMPILER='gcc-4.3'
+build_armel_real:
+build_hppa: build_hppa_none build_hppa_real
+build_hppa_none: build_hppa_none_parisc build_hppa_none_parisc-smp build_hppa_none_parisc64 build_hppa_none_parisc64-smp build_hppa_none_real
+build_hppa_none_parisc: build_hppa_none_parisc_real
+build_hppa_none_parisc-smp: build_hppa_none_parisc-smp_real
+build_hppa_none_parisc-smp_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-parisc-smp' FLAVOUR='parisc-smp' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-parisc-smp' ARCH='hppa' COMPILER='gcc-4.3'
+build_hppa_none_parisc64: build_hppa_none_parisc64_real
+build_hppa_none_parisc64-smp: build_hppa_none_parisc64-smp_real
+build_hppa_none_parisc64-smp_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-parisc64-smp' FLAVOUR='parisc64-smp' CFLAGS='-fno-cse-follow-jumps' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-parisc64-smp' ARCH='hppa' COMPILER='gcc-4.3'
+build_hppa_none_parisc64_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-parisc64' FLAVOUR='parisc64' CFLAGS='-fno-cse-follow-jumps' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-parisc64' ARCH='hppa' COMPILER='gcc-4.3'
+build_hppa_none_parisc_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-parisc' FLAVOUR='parisc' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-parisc' ARCH='hppa' COMPILER='gcc-4.3'
+build_hppa_none_real:
+build_hppa_real:
+build_i386: build_i386_none build_i386_real
+build_i386_none: build_i386_none_486 build_i386_none_686 build_i386_none_686-bigmem build_i386_none_amd64 build_i386_none_real
+build_i386_none_486: build_i386_none_486_real
+build_i386_none_486_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-486' FLAVOUR='486' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.486' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-486' ARCH='i386' COMPILER='gcc-4.3'
+build_i386_none_686: build_i386_none_686_real
+build_i386_none_686-bigmem: build_i386_none_686-bigmem_real
+build_i386_none_686-bigmem_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-686-bigmem' FLAVOUR='686-bigmem' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.686-bigmem' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-686-bigmem' ARCH='i386' COMPILER='gcc-4.3'
+build_i386_none_686_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-686' FLAVOUR='686' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.686' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-686' ARCH='i386' COMPILER='gcc-4.3'
+build_i386_none_amd64: build_i386_none_amd64_real
+build_i386_none_amd64_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-amd64' FLAVOUR='amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-64 debian/config/amd64/config debian/config/amd64/config.amd64' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-amd64' ARCH='i386' COMPILER='gcc-4.3'
+build_i386_none_real:
+build_i386_real:
+build_ia64: build_ia64_none build_ia64_real
+build_ia64_none: build_ia64_none_itanium build_ia64_none_mckinley build_ia64_none_real
+build_ia64_none_itanium: build_ia64_none_itanium_real
+build_ia64_none_itanium_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-itanium' FLAVOUR='itanium' KCONFIG='debian/config/config debian/config/ia64/config debian/config/ia64/config.itanium' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-itanium' ARCH='ia64' COMPILER='gcc-4.3'
+build_ia64_none_mckinley: build_ia64_none_mckinley_real
+build_ia64_none_mckinley_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-mckinley' FLAVOUR='mckinley' KCONFIG='debian/config/config debian/config/ia64/config debian/config/ia64/config.mckinley' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-mckinley' ARCH='ia64' COMPILER='gcc-4.3'
+build_ia64_none_real:
+build_ia64_real:
+build_m68k: build_m68k_none build_m68k_real
+build_m68k_none: build_m68k_none_amiga build_m68k_none_atari build_m68k_none_bvme6000 build_m68k_none_mac build_m68k_none_mvme147 build_m68k_none_mvme16x build_m68k_none_real
+build_m68k_none_amiga: build_m68k_none_amiga_real
+build_m68k_none_amiga_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-amiga' FLAVOUR='amiga' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.amiga' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-amiga' ARCH='m68k' COMPILER='gcc-4.3'
+build_m68k_none_atari: build_m68k_none_atari_real
+build_m68k_none_atari_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-atari' FLAVOUR='atari' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.atari' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-atari' ARCH='m68k' COMPILER='gcc-4.3'
+build_m68k_none_bvme6000: build_m68k_none_bvme6000_real
+build_m68k_none_bvme6000_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-bvme6000' FLAVOUR='bvme6000' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.bvme6000' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-bvme6000' ARCH='m68k' COMPILER='gcc-4.3'
+build_m68k_none_mac: build_m68k_none_mac_real
+build_m68k_none_mac_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-mac' FLAVOUR='mac' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mac' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-mac' ARCH='m68k' COMPILER='gcc-4.3'
+build_m68k_none_mvme147: build_m68k_none_mvme147_real
+build_m68k_none_mvme147_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-mvme147' FLAVOUR='mvme147' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mvme147' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-mvme147' ARCH='m68k' COMPILER='gcc-4.3'
+build_m68k_none_mvme16x: build_m68k_none_mvme16x_real
+build_m68k_none_mvme16x_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-mvme16x' FLAVOUR='mvme16x' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mvme16x' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-mvme16x' ARCH='m68k' COMPILER='gcc-4.3'
+build_m68k_none_real:
+build_m68k_real:
+build_mips: build_mips_none build_mips_real
+build_mips_none: build_mips_none_4kc-malta build_mips_none_5kc-malta build_mips_none_r4k-ip22 build_mips_none_r5k-ip32 build_mips_none_real build_mips_none_sb1-bcm91250a build_mips_none_sb1a-bcm91480b
+build_mips_none_4kc-malta: build_mips_none_4kc-malta_real
+build_mips_none_4kc-malta_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-4kc-malta' FLAVOUR='4kc-malta' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.4kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-4kc-malta' ARCH='mips' COMPILER='gcc-4.3'
+build_mips_none_5kc-malta: build_mips_none_5kc-malta_real
+build_mips_none_5kc-malta_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-5kc-malta' FLAVOUR='5kc-malta' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.5kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-5kc-malta' ARCH='mips' COMPILER='gcc-4.3'
+build_mips_none_r4k-ip22: build_mips_none_r4k-ip22_real
+build_mips_none_r4k-ip22_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-r4k-ip22' FLAVOUR='r4k-ip22' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.r4k-ip22' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-r4k-ip22' ARCH='mips' COMPILER='gcc-4.3'
+build_mips_none_r5k-ip32: build_mips_none_r5k-ip32_real
+build_mips_none_r5k-ip32_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-r5k-ip32' FLAVOUR='r5k-ip32' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.r5k-ip32' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-r5k-ip32' ARCH='mips' COMPILER='gcc-4.3'
+build_mips_none_real:
+build_mips_none_sb1-bcm91250a: build_mips_none_sb1-bcm91250a_real
+build_mips_none_sb1-bcm91250a_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-sb1-bcm91250a' FLAVOUR='sb1-bcm91250a' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.sb1-bcm91250a' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sb1-bcm91250a' ARCH='mips' COMPILER='gcc-4.3'
+build_mips_none_sb1a-bcm91480b: build_mips_none_sb1a-bcm91480b_real
+build_mips_none_sb1a-bcm91480b_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-sb1a-bcm91480b' FLAVOUR='sb1a-bcm91480b' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.sb1a-bcm91480b' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sb1a-bcm91480b' ARCH='mips' COMPILER='gcc-4.3'
+build_mips_real:
+build_mipsel: build_mipsel_none build_mipsel_real
+build_mipsel_none: build_mipsel_none_4kc-malta build_mipsel_none_5kc-malta build_mipsel_none_r5k-cobalt build_mipsel_none_real build_mipsel_none_sb1-bcm91250a build_mipsel_none_sb1a-bcm91480b
+build_mipsel_none_4kc-malta: build_mipsel_none_4kc-malta_real
+build_mipsel_none_4kc-malta_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-4kc-malta' FLAVOUR='4kc-malta' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.4kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-4kc-malta' ARCH='mipsel' COMPILER='gcc-4.3'
+build_mipsel_none_5kc-malta: build_mipsel_none_5kc-malta_real
+build_mipsel_none_5kc-malta_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-5kc-malta' FLAVOUR='5kc-malta' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.5kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-5kc-malta' ARCH='mipsel' COMPILER='gcc-4.3'
+build_mipsel_none_r5k-cobalt: build_mipsel_none_r5k-cobalt_real
+build_mipsel_none_r5k-cobalt_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-r5k-cobalt' FLAVOUR='r5k-cobalt' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.r5k-cobalt' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-r5k-cobalt' ARCH='mipsel' COMPILER='gcc-4.3'
+build_mipsel_none_real:
+build_mipsel_none_sb1-bcm91250a: build_mipsel_none_sb1-bcm91250a_real
+build_mipsel_none_sb1-bcm91250a_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-sb1-bcm91250a' FLAVOUR='sb1-bcm91250a' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.sb1-bcm91250a' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sb1-bcm91250a' ARCH='mipsel' COMPILER='gcc-4.3'
+build_mipsel_none_sb1a-bcm91480b: build_mipsel_none_sb1a-bcm91480b_real
+build_mipsel_none_sb1a-bcm91480b_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-sb1a-bcm91480b' FLAVOUR='sb1a-bcm91480b' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.sb1a-bcm91480b' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sb1a-bcm91480b' ARCH='mipsel' COMPILER='gcc-4.3'
+build_mipsel_real:
+build_powerpc: build_powerpc_none build_powerpc_real
+build_powerpc_none: build_powerpc_none_powerpc build_powerpc_none_powerpc-smp build_powerpc_none_powerpc64 build_powerpc_none_real
+build_powerpc_none_powerpc: build_powerpc_none_powerpc_real
+build_powerpc_none_powerpc-smp: build_powerpc_none_powerpc-smp_real
+build_powerpc_none_powerpc-smp_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc-smp' FLAVOUR='powerpc-smp' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc debian/config/powerpc/config.powerpc-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-powerpc-smp' ARCH='powerpc' COMPILER='gcc-4.3'
+build_powerpc_none_powerpc64: build_powerpc_none_powerpc64_real
+build_powerpc_none_powerpc64_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc64' FLAVOUR='powerpc64' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-powerpc64' ARCH='powerpc' COMPILER='gcc-4.3'
+build_powerpc_none_powerpc_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc' FLAVOUR='powerpc' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-powerpc' ARCH='powerpc' COMPILER='gcc-4.3'
+build_powerpc_none_real:
+build_powerpc_real:
+build_s390: build_s390_none build_s390_real
+build_s390_none: build_s390_none_real build_s390_none_s390x build_s390_none_s390x-tape
+build_s390_none_real:
+build_s390_none_s390x: build_s390_none_s390x_real
+build_s390_none_s390x-tape: build_s390_none_s390x-tape_real
+build_s390_none_s390x-tape_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-s390x' FLAVOUR='s390x-tape' KCONFIG='debian/config/config debian/config/s390/config debian/config/s390/config.s390x-tape' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='s390' ABINAME='-bpo.1' TYPE='plain-s390-tape' LOCALVERSION='-s390x-tape' ARCH='s390' COMPILER='gcc-4.3'
+build_s390_none_s390x_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-s390x' FLAVOUR='s390x' KCONFIG='debian/config/config debian/config/s390/config debian/config/s390/config.s390x' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='s390' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-s390x' ARCH='s390' COMPILER='gcc-4.3'
+build_s390_real:
+build_sparc: build_sparc_none build_sparc_real
+build_sparc_none: build_sparc_none_real build_sparc_none_sparc64 build_sparc_none_sparc64-smp
+build_sparc_none_real:
+build_sparc_none_sparc64: build_sparc_none_sparc64_real
+build_sparc_none_sparc64-smp: build_sparc_none_sparc64-smp_real
+build_sparc_none_sparc64-smp_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-sparc64-smp' FLAVOUR='sparc64-smp' KCONFIG='debian/config/config debian/config/sparc/config debian/config/sparc/config.sparc64-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sparc64-smp' ARCH='sparc' COMPILER='gcc-4.3'
+build_sparc_none_sparc64_real::
+	$(MAKE) -f debian/rules.real build MAJOR='2.6' LOCALVERSION_IMAGE='-sparc64' FLAVOUR='sparc64' KCONFIG='debian/config/config debian/config/sparc/config debian/config/sparc/config.sparc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sparc64' ARCH='sparc' COMPILER='gcc-4.3'
+build_sparc_real:
+setup: setup_alpha setup_amd64 setup_arm setup_armel setup_hppa setup_i386 setup_ia64 setup_m68k setup_mips setup_mipsel setup_powerpc setup_s390 setup_sparc
+setup_alpha: setup_alpha_none setup_alpha_real
+setup_alpha_none: setup_alpha_none_alpha-generic setup_alpha_none_alpha-legacy setup_alpha_none_alpha-smp setup_alpha_none_real
+setup_alpha_none_alpha-generic: setup_alpha_none_alpha-generic_real
+setup_alpha_none_alpha-generic_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-generic' FLAVOUR='alpha-generic' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-generic' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-alpha-generic' ARCH='alpha' COMPILER='gcc-4.3'
+setup_alpha_none_alpha-legacy: setup_alpha_none_alpha-legacy_real
+setup_alpha_none_alpha-legacy_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-legacy' FLAVOUR='alpha-legacy' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-legacy' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-alpha-legacy' ARCH='alpha' COMPILER='gcc-4.3'
+setup_alpha_none_alpha-smp: setup_alpha_none_alpha-smp_real
+setup_alpha_none_alpha-smp_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-alpha-smp' FLAVOUR='alpha-smp' KCONFIG='debian/config/config debian/config/alpha/config debian/config/alpha/config.alpha-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-alpha-smp' ARCH='alpha' COMPILER='gcc-4.3'
+setup_alpha_none_real:
+setup_alpha_real:
+setup_amd64: setup_amd64_none setup_amd64_real
+setup_amd64_none: setup_amd64_none_amd64 setup_amd64_none_real
+setup_amd64_none_amd64: setup_amd64_none_amd64_real
+setup_amd64_none_amd64_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-amd64' FLAVOUR='amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/amd64/config debian/config/kernelarch-x86/config-arch-64 debian/config/amd64/config.amd64' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-amd64' ARCH='amd64' COMPILER='gcc-4.3'
+setup_amd64_none_real:
+setup_amd64_real:
+setup_arm: setup_arm_none setup_arm_real
+setup_arm_none: setup_arm_none_footbridge setup_arm_none_iop32x setup_arm_none_ixp4xx setup_arm_none_orion5x setup_arm_none_real
+setup_arm_none_footbridge: setup_arm_none_footbridge_real
+setup_arm_none_footbridge_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-footbridge' FLAVOUR='footbridge' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.footbridge' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-footbridge' ARCH='arm' COMPILER='gcc-4.3'
+setup_arm_none_iop32x: setup_arm_none_iop32x_real
+setup_arm_none_iop32x_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-iop32x' FLAVOUR='iop32x' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.iop32x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-iop32x' ARCH='arm' COMPILER='gcc-4.3'
+setup_arm_none_ixp4xx: setup_arm_none_ixp4xx_real
+setup_arm_none_ixp4xx_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-ixp4xx' FLAVOUR='ixp4xx' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.ixp4xx' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-ixp4xx' ARCH='arm' COMPILER='gcc-4.3'
+setup_arm_none_orion5x: setup_arm_none_orion5x_real
+setup_arm_none_orion5x_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-orion5x' FLAVOUR='orion5x' KCONFIG='debian/config/config debian/config/arm/config debian/config/arm/config.orion5x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-orion5x' ARCH='arm' COMPILER='gcc-4.3'
+setup_arm_none_real:
+setup_arm_real:
+setup_armel: setup_armel_none setup_armel_real
+setup_armel_none: setup_armel_none_iop32x setup_armel_none_ixp4xx setup_armel_none_kirkwood setup_armel_none_orion5x setup_armel_none_real setup_armel_none_versatile
+setup_armel_none_iop32x: setup_armel_none_iop32x_real
+setup_armel_none_iop32x_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-iop32x' FLAVOUR='iop32x' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.iop32x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-iop32x' ARCH='armel' COMPILER='gcc-4.3'
+setup_armel_none_ixp4xx: setup_armel_none_ixp4xx_real
+setup_armel_none_ixp4xx_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-ixp4xx' FLAVOUR='ixp4xx' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.ixp4xx' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-ixp4xx' ARCH='armel' COMPILER='gcc-4.3'
+setup_armel_none_kirkwood: setup_armel_none_kirkwood_real
+setup_armel_none_kirkwood_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-kirkwood' FLAVOUR='kirkwood' KCONFIG='debian/config/config debian/config/armel/config debian/config/armel/config.kirkwood' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-kirkwood' ARCH='armel' COMPILER='gcc-4.3'
+setup_armel_none_orion5x: setup_armel_none_orion5x_real
+setup_armel_none_orion5x_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-orion5x' FLAVOUR='orion5x' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.orion5x' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-orion5x' ARCH='armel' COMPILER='gcc-4.3'
+setup_armel_none_real:
+setup_armel_none_versatile: setup_armel_none_versatile_real
+setup_armel_none_versatile_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-versatile' FLAVOUR='versatile' KCONFIG='debian/config/config debian/config/armel/config debian/config/arm/config.versatile' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-versatile' ARCH='armel' COMPILER='gcc-4.3'
+setup_armel_real:
+setup_hppa: setup_hppa_none setup_hppa_real
+setup_hppa_none: setup_hppa_none_parisc setup_hppa_none_parisc-smp setup_hppa_none_parisc64 setup_hppa_none_parisc64-smp setup_hppa_none_real
+setup_hppa_none_parisc: setup_hppa_none_parisc_real
+setup_hppa_none_parisc-smp: setup_hppa_none_parisc-smp_real
+setup_hppa_none_parisc-smp_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc-smp' FLAVOUR='parisc-smp' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-parisc-smp' ARCH='hppa' COMPILER='gcc-4.3'
+setup_hppa_none_parisc64: setup_hppa_none_parisc64_real
+setup_hppa_none_parisc64-smp: setup_hppa_none_parisc64-smp_real
+setup_hppa_none_parisc64-smp_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc64-smp' FLAVOUR='parisc64-smp' CFLAGS='-fno-cse-follow-jumps' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-parisc64-smp' ARCH='hppa' COMPILER='gcc-4.3'
+setup_hppa_none_parisc64_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc64' FLAVOUR='parisc64' CFLAGS='-fno-cse-follow-jumps' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' OVERRIDE_HOST_TYPE='hppa64-linux-gnu' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-parisc64' ARCH='hppa' COMPILER='gcc-4.3'
+setup_hppa_none_parisc_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-parisc' FLAVOUR='parisc' KCONFIG='debian/config/config debian/config/hppa/config debian/config/hppa/config.parisc' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-parisc' ARCH='hppa' COMPILER='gcc-4.3'
+setup_hppa_none_real:
+setup_hppa_real:
+setup_i386: setup_i386_none setup_i386_real
+setup_i386_none: setup_i386_none_486 setup_i386_none_686 setup_i386_none_686-bigmem setup_i386_none_amd64 setup_i386_none_real
+setup_i386_none_486: setup_i386_none_486_real
+setup_i386_none_486_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-486' FLAVOUR='486' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.486' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-486' ARCH='i386' COMPILER='gcc-4.3'
+setup_i386_none_686: setup_i386_none_686_real
+setup_i386_none_686-bigmem: setup_i386_none_686-bigmem_real
+setup_i386_none_686-bigmem_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-686-bigmem' FLAVOUR='686-bigmem' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.686-bigmem' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-686-bigmem' ARCH='i386' COMPILER='gcc-4.3'
+setup_i386_none_686_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-686' FLAVOUR='686' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-32 debian/config/i386/none/config.686' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-686' ARCH='i386' COMPILER='gcc-4.3'
+setup_i386_none_amd64: setup_i386_none_amd64_real
+setup_i386_none_amd64_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-amd64' FLAVOUR='amd64' KCONFIG='debian/config/config debian/config/kernelarch-x86/config debian/config/i386/config debian/config/kernelarch-x86/config-arch-64 debian/config/amd64/config debian/config/amd64/config.amd64' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-amd64' ARCH='i386' COMPILER='gcc-4.3'
+setup_i386_none_real:
+setup_i386_real:
+setup_ia64: setup_ia64_none setup_ia64_real
+setup_ia64_none: setup_ia64_none_itanium setup_ia64_none_mckinley setup_ia64_none_real
+setup_ia64_none_itanium: setup_ia64_none_itanium_real
+setup_ia64_none_itanium_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-itanium' FLAVOUR='itanium' KCONFIG='debian/config/config debian/config/ia64/config debian/config/ia64/config.itanium' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-itanium' ARCH='ia64' COMPILER='gcc-4.3'
+setup_ia64_none_mckinley: setup_ia64_none_mckinley_real
+setup_ia64_none_mckinley_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mckinley' FLAVOUR='mckinley' KCONFIG='debian/config/config debian/config/ia64/config debian/config/ia64/config.mckinley' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-mckinley' ARCH='ia64' COMPILER='gcc-4.3'
+setup_ia64_none_real:
+setup_ia64_real:
+setup_m68k: setup_m68k_none setup_m68k_real
+setup_m68k_none: setup_m68k_none_amiga setup_m68k_none_atari setup_m68k_none_bvme6000 setup_m68k_none_mac setup_m68k_none_mvme147 setup_m68k_none_mvme16x setup_m68k_none_real
+setup_m68k_none_amiga: setup_m68k_none_amiga_real
+setup_m68k_none_amiga_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-amiga' FLAVOUR='amiga' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.amiga' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-amiga' ARCH='m68k' COMPILER='gcc-4.3'
+setup_m68k_none_atari: setup_m68k_none_atari_real
+setup_m68k_none_atari_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-atari' FLAVOUR='atari' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.atari' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-atari' ARCH='m68k' COMPILER='gcc-4.3'
+setup_m68k_none_bvme6000: setup_m68k_none_bvme6000_real
+setup_m68k_none_bvme6000_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-bvme6000' FLAVOUR='bvme6000' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.bvme6000' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-bvme6000' ARCH='m68k' COMPILER='gcc-4.3'
+setup_m68k_none_mac: setup_m68k_none_mac_real
+setup_m68k_none_mac_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mac' FLAVOUR='mac' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mac' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-mac' ARCH='m68k' COMPILER='gcc-4.3'
+setup_m68k_none_mvme147: setup_m68k_none_mvme147_real
+setup_m68k_none_mvme147_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mvme147' FLAVOUR='mvme147' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mvme147' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-mvme147' ARCH='m68k' COMPILER='gcc-4.3'
+setup_m68k_none_mvme16x: setup_m68k_none_mvme16x_real
+setup_m68k_none_mvme16x_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-mvme16x' FLAVOUR='mvme16x' KCONFIG='debian/config/config debian/config/m68k/config debian/config/m68k/config.mvme16x' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-mvme16x' ARCH='m68k' COMPILER='gcc-4.3'
+setup_m68k_none_real:
+setup_m68k_real:
+setup_mips: setup_mips_none setup_mips_real
+setup_mips_none: setup_mips_none_4kc-malta setup_mips_none_5kc-malta setup_mips_none_r4k-ip22 setup_mips_none_r5k-ip32 setup_mips_none_real setup_mips_none_sb1-bcm91250a setup_mips_none_sb1a-bcm91480b
+setup_mips_none_4kc-malta: setup_mips_none_4kc-malta_real
+setup_mips_none_4kc-malta_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-4kc-malta' FLAVOUR='4kc-malta' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.4kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-4kc-malta' ARCH='mips' COMPILER='gcc-4.3'
+setup_mips_none_5kc-malta: setup_mips_none_5kc-malta_real
+setup_mips_none_5kc-malta_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-5kc-malta' FLAVOUR='5kc-malta' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.5kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-5kc-malta' ARCH='mips' COMPILER='gcc-4.3'
+setup_mips_none_r4k-ip22: setup_mips_none_r4k-ip22_real
+setup_mips_none_r4k-ip22_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-r4k-ip22' FLAVOUR='r4k-ip22' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.r4k-ip22' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-r4k-ip22' ARCH='mips' COMPILER='gcc-4.3'
+setup_mips_none_r5k-ip32: setup_mips_none_r5k-ip32_real
+setup_mips_none_r5k-ip32_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-r5k-ip32' FLAVOUR='r5k-ip32' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.r5k-ip32' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-r5k-ip32' ARCH='mips' COMPILER='gcc-4.3'
+setup_mips_none_real:
+setup_mips_none_sb1-bcm91250a: setup_mips_none_sb1-bcm91250a_real
+setup_mips_none_sb1-bcm91250a_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1-bcm91250a' FLAVOUR='sb1-bcm91250a' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.sb1-bcm91250a' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sb1-bcm91250a' ARCH='mips' COMPILER='gcc-4.3'
+setup_mips_none_sb1a-bcm91480b: setup_mips_none_sb1a-bcm91480b_real
+setup_mips_none_sb1a-bcm91480b_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1a-bcm91480b' FLAVOUR='sb1a-bcm91480b' KCONFIG='debian/config/config debian/config/mips/config debian/config/mips/config.sb1a-bcm91480b' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sb1a-bcm91480b' ARCH='mips' COMPILER='gcc-4.3'
+setup_mips_real:
+setup_mipsel: setup_mipsel_none setup_mipsel_real
+setup_mipsel_none: setup_mipsel_none_4kc-malta setup_mipsel_none_5kc-malta setup_mipsel_none_r5k-cobalt setup_mipsel_none_real setup_mipsel_none_sb1-bcm91250a setup_mipsel_none_sb1a-bcm91480b
+setup_mipsel_none_4kc-malta: setup_mipsel_none_4kc-malta_real
+setup_mipsel_none_4kc-malta_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-4kc-malta' FLAVOUR='4kc-malta' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.4kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-4kc-malta' ARCH='mipsel' COMPILER='gcc-4.3'
+setup_mipsel_none_5kc-malta: setup_mipsel_none_5kc-malta_real
+setup_mipsel_none_5kc-malta_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-5kc-malta' FLAVOUR='5kc-malta' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.5kc-malta' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-5kc-malta' ARCH='mipsel' COMPILER='gcc-4.3'
+setup_mipsel_none_r5k-cobalt: setup_mipsel_none_r5k-cobalt_real
+setup_mipsel_none_r5k-cobalt_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-r5k-cobalt' FLAVOUR='r5k-cobalt' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.r5k-cobalt' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-r5k-cobalt' ARCH='mipsel' COMPILER='gcc-4.3'
+setup_mipsel_none_real:
+setup_mipsel_none_sb1-bcm91250a: setup_mipsel_none_sb1-bcm91250a_real
+setup_mipsel_none_sb1-bcm91250a_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1-bcm91250a' FLAVOUR='sb1-bcm91250a' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.sb1-bcm91250a' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sb1-bcm91250a' ARCH='mipsel' COMPILER='gcc-4.3'
+setup_mipsel_none_sb1a-bcm91480b: setup_mipsel_none_sb1a-bcm91480b_real
+setup_mipsel_none_sb1a-bcm91480b_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sb1a-bcm91480b' FLAVOUR='sb1a-bcm91480b' KCONFIG='debian/config/config debian/config/mipsel/config debian/config/mipsel/config.sb1a-bcm91480b' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sb1a-bcm91480b' ARCH='mipsel' COMPILER='gcc-4.3'
+setup_mipsel_real:
+setup_powerpc: setup_powerpc_none setup_powerpc_real
+setup_powerpc_none: setup_powerpc_none_powerpc setup_powerpc_none_powerpc-smp setup_powerpc_none_powerpc64 setup_powerpc_none_real
+setup_powerpc_none_powerpc: setup_powerpc_none_powerpc_real
+setup_powerpc_none_powerpc-smp: setup_powerpc_none_powerpc-smp_real
+setup_powerpc_none_powerpc-smp_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc-smp' FLAVOUR='powerpc-smp' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc debian/config/powerpc/config.powerpc-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-powerpc-smp' ARCH='powerpc' COMPILER='gcc-4.3'
+setup_powerpc_none_powerpc64: setup_powerpc_none_powerpc64_real
+setup_powerpc_none_powerpc64_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc64' FLAVOUR='powerpc64' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-powerpc64' ARCH='powerpc' COMPILER='gcc-4.3'
+setup_powerpc_none_powerpc_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-powerpc' FLAVOUR='powerpc' KCONFIG='debian/config/config debian/config/powerpc/config debian/config/powerpc/config.powerpc' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-powerpc' ARCH='powerpc' COMPILER='gcc-4.3'
+setup_powerpc_none_real:
+setup_powerpc_real:
+setup_s390: setup_s390_none setup_s390_real
+setup_s390_none: setup_s390_none_real setup_s390_none_s390x setup_s390_none_s390x-tape
+setup_s390_none_real:
+setup_s390_none_s390x: setup_s390_none_s390x_real
+setup_s390_none_s390x-tape: setup_s390_none_s390x-tape_real
+setup_s390_none_s390x-tape_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-s390x' FLAVOUR='s390x-tape' KCONFIG='debian/config/config debian/config/s390/config debian/config/s390/config.s390x-tape' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' INITRAMFS='False' KERNEL_HEADER_DIRS='s390' ABINAME='-bpo.1' TYPE='plain-s390-tape' LOCALVERSION='-s390x-tape' ARCH='s390' COMPILER='gcc-4.3'
+setup_s390_none_s390x_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-s390x' FLAVOUR='s390x' KCONFIG='debian/config/config debian/config/s390/config debian/config/s390/config.s390x' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='s390' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-s390x' ARCH='s390' COMPILER='gcc-4.3'
+setup_s390_real:
+setup_sparc: setup_sparc_none setup_sparc_real
+setup_sparc_none: setup_sparc_none_real setup_sparc_none_sparc64 setup_sparc_none_sparc64-smp
+setup_sparc_none_real:
+setup_sparc_none_sparc64: setup_sparc_none_sparc64_real
+setup_sparc_none_sparc64-smp: setup_sparc_none_sparc64-smp_real
+setup_sparc_none_sparc64-smp_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sparc64-smp' FLAVOUR='sparc64-smp' KCONFIG='debian/config/config debian/config/sparc/config debian/config/sparc/config.sparc64-smp' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sparc64-smp' ARCH='sparc' COMPILER='gcc-4.3'
+setup_sparc_none_sparc64_real::
+	$(MAKE) -f debian/rules.real setup-flavour MAJOR='2.6' LOCALVERSION_IMAGE='-sparc64' FLAVOUR='sparc64' KCONFIG='debian/config/config debian/config/sparc/config debian/config/sparc/config.sparc64' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' MODULES='True' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' INITRD_CMD='update-initramfs mkinitrd.yaird' ABINAME='-bpo.1' TYPE='plain' LOCALVERSION='-sparc64' ARCH='sparc' COMPILER='gcc-4.3'
+setup_sparc_real:
+source: source_alpha source_amd64 source_arm source_armel source_hppa source_i386 source_ia64 source_m68k source_mips source_mipsel source_powerpc source_s390 source_sparc
+source_alpha: source_alpha_none source_alpha_real
+source_alpha_none: source_alpha_none_alpha-generic source_alpha_none_alpha-legacy source_alpha_none_alpha-smp source_alpha_none_real
+source_alpha_none_alpha-generic: source_alpha_none_alpha-generic_real
+source_alpha_none_alpha-generic_real:
+source_alpha_none_alpha-legacy: source_alpha_none_alpha-legacy_real
+source_alpha_none_alpha-legacy_real:
+source_alpha_none_alpha-smp: source_alpha_none_alpha-smp_real
+source_alpha_none_alpha-smp_real:
+source_alpha_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='alpha' ABINAME='-bpo.1' ARCH='alpha'
+source_alpha_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='alpha' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='alpha' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='alpha'
+source_amd64: source_amd64_none source_amd64_real
+source_amd64_none: source_amd64_none_amd64 source_amd64_none_real
+source_amd64_none_amd64: source_amd64_none_amd64_real
+source_amd64_none_amd64_real:
+source_amd64_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' ABINAME='-bpo.1' ARCH='amd64'
+source_amd64_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='amd64'
+source_arm: source_arm_none source_arm_real
+source_arm_none: source_arm_none_footbridge source_arm_none_iop32x source_arm_none_ixp4xx source_arm_none_orion5x source_arm_none_real
+source_arm_none_footbridge: source_arm_none_footbridge_real
+source_arm_none_footbridge_real:
+source_arm_none_iop32x: source_arm_none_iop32x_real
+source_arm_none_iop32x_real:
+source_arm_none_ixp4xx: source_arm_none_ixp4xx_real
+source_arm_none_ixp4xx_real:
+source_arm_none_orion5x: source_arm_none_orion5x_real
+source_arm_none_orion5x_real:
+source_arm_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' ABINAME='-bpo.1' ARCH='arm'
+source_arm_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='arm'
+source_armel: source_armel_none source_armel_real
+source_armel_none: source_armel_none_iop32x source_armel_none_ixp4xx source_armel_none_kirkwood source_armel_none_orion5x source_armel_none_real source_armel_none_versatile
+source_armel_none_iop32x: source_armel_none_iop32x_real
+source_armel_none_iop32x_real:
+source_armel_none_ixp4xx: source_armel_none_ixp4xx_real
+source_armel_none_ixp4xx_real:
+source_armel_none_kirkwood: source_armel_none_kirkwood_real
+source_armel_none_kirkwood_real:
+source_armel_none_orion5x: source_armel_none_orion5x_real
+source_armel_none_orion5x_real:
+source_armel_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='arm' ABINAME='-bpo.1' ARCH='armel'
+source_armel_none_versatile: source_armel_none_versatile_real
+source_armel_none_versatile_real:
+source_armel_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='arm' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='arm' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='armel'
+source_hppa: source_hppa_none source_hppa_real
+source_hppa_none: source_hppa_none_parisc source_hppa_none_parisc-smp source_hppa_none_parisc64 source_hppa_none_parisc64-smp source_hppa_none_real
+source_hppa_none_parisc: source_hppa_none_parisc_real
+source_hppa_none_parisc-smp: source_hppa_none_parisc-smp_real
+source_hppa_none_parisc-smp_real:
+source_hppa_none_parisc64: source_hppa_none_parisc64_real
+source_hppa_none_parisc64-smp: source_hppa_none_parisc64-smp_real
+source_hppa_none_parisc64-smp_real:
+source_hppa_none_parisc64_real:
+source_hppa_none_parisc_real:
+source_hppa_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='parisc' ABINAME='-bpo.1' ARCH='hppa'
+source_hppa_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='parisc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='parisc' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='hppa'
+source_i386: source_i386_none source_i386_real
+source_i386_none: source_i386_none_486 source_i386_none_686 source_i386_none_686-bigmem source_i386_none_amd64 source_i386_none_real
+source_i386_none_486: source_i386_none_486_real
+source_i386_none_486_real:
+source_i386_none_686: source_i386_none_686_real
+source_i386_none_686-bigmem: source_i386_none_686-bigmem_real
+source_i386_none_686-bigmem_real:
+source_i386_none_686_real:
+source_i386_none_amd64: source_i386_none_amd64_real
+source_i386_none_amd64_real:
+source_i386_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='x86' ABINAME='-bpo.1' ARCH='i386'
+source_i386_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='x86' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='x86' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='i386'
+source_ia64: source_ia64_none source_ia64_real
+source_ia64_none: source_ia64_none_itanium source_ia64_none_mckinley source_ia64_none_real
+source_ia64_none_itanium: source_ia64_none_itanium_real
+source_ia64_none_itanium_real:
+source_ia64_none_mckinley: source_ia64_none_mckinley_real
+source_ia64_none_mckinley_real:
+source_ia64_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='ia64' ABINAME='-bpo.1' ARCH='ia64'
+source_ia64_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='ia64' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='ia64' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='ia64'
+source_m68k: source_m68k_none source_m68k_real
+source_m68k_none: source_m68k_none_amiga source_m68k_none_atari source_m68k_none_bvme6000 source_m68k_none_mac source_m68k_none_mvme147 source_m68k_none_mvme16x source_m68k_none_real
+source_m68k_none_amiga: source_m68k_none_amiga_real
+source_m68k_none_amiga_real:
+source_m68k_none_atari: source_m68k_none_atari_real
+source_m68k_none_atari_real:
+source_m68k_none_bvme6000: source_m68k_none_bvme6000_real
+source_m68k_none_bvme6000_real:
+source_m68k_none_mac: source_m68k_none_mac_real
+source_m68k_none_mac_real:
+source_m68k_none_mvme147: source_m68k_none_mvme147_real
+source_m68k_none_mvme147_real:
+source_m68k_none_mvme16x: source_m68k_none_mvme16x_real
+source_m68k_none_mvme16x_real:
+source_m68k_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='m68k' ABINAME='-bpo.1' ARCH='m68k'
+source_m68k_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='m68k' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='m68k' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='m68k'
+source_mips: source_mips_none source_mips_real
+source_mips_none: source_mips_none_4kc-malta source_mips_none_5kc-malta source_mips_none_r4k-ip22 source_mips_none_r5k-ip32 source_mips_none_real source_mips_none_sb1-bcm91250a source_mips_none_sb1a-bcm91480b
+source_mips_none_4kc-malta: source_mips_none_4kc-malta_real
+source_mips_none_4kc-malta_real:
+source_mips_none_5kc-malta: source_mips_none_5kc-malta_real
+source_mips_none_5kc-malta_real:
+source_mips_none_r4k-ip22: source_mips_none_r4k-ip22_real
+source_mips_none_r4k-ip22_real:
+source_mips_none_r5k-ip32: source_mips_none_r5k-ip32_real
+source_mips_none_r5k-ip32_real:
+source_mips_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' ARCH='mips'
+source_mips_none_sb1-bcm91250a: source_mips_none_sb1-bcm91250a_real
+source_mips_none_sb1-bcm91250a_real:
+source_mips_none_sb1a-bcm91480b: source_mips_none_sb1a-bcm91480b_real
+source_mips_none_sb1a-bcm91480b_real:
+source_mips_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='mips'
+source_mipsel: source_mipsel_none source_mipsel_real
+source_mipsel_none: source_mipsel_none_4kc-malta source_mipsel_none_5kc-malta source_mipsel_none_r5k-cobalt source_mipsel_none_real source_mipsel_none_sb1-bcm91250a source_mipsel_none_sb1a-bcm91480b
+source_mipsel_none_4kc-malta: source_mipsel_none_4kc-malta_real
+source_mipsel_none_4kc-malta_real:
+source_mipsel_none_5kc-malta: source_mipsel_none_5kc-malta_real
+source_mipsel_none_5kc-malta_real:
+source_mipsel_none_r5k-cobalt: source_mipsel_none_r5k-cobalt_real
+source_mipsel_none_r5k-cobalt_real:
+source_mipsel_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='mips' ABINAME='-bpo.1' ARCH='mipsel'
+source_mipsel_none_sb1-bcm91250a: source_mipsel_none_sb1-bcm91250a_real
+source_mipsel_none_sb1-bcm91250a_real:
+source_mipsel_none_sb1a-bcm91480b: source_mipsel_none_sb1a-bcm91480b_real
+source_mipsel_none_sb1a-bcm91480b_real:
+source_mipsel_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='mips' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='mips' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='mipsel'
+source_powerpc: source_powerpc_none source_powerpc_real
+source_powerpc_none: source_powerpc_none_powerpc source_powerpc_none_powerpc-smp source_powerpc_none_powerpc64 source_powerpc_none_real
+source_powerpc_none_powerpc: source_powerpc_none_powerpc_real
+source_powerpc_none_powerpc-smp: source_powerpc_none_powerpc-smp_real
+source_powerpc_none_powerpc-smp_real:
+source_powerpc_none_powerpc64: source_powerpc_none_powerpc64_real
+source_powerpc_none_powerpc64_real:
+source_powerpc_none_powerpc_real:
+source_powerpc_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='powerpc' ABINAME='-bpo.1' ARCH='powerpc'
+source_powerpc_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='powerpc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='powerpc' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='powerpc'
+source_s390: source_s390_none source_s390_real
+source_s390_none: source_s390_none_real source_s390_none_s390x source_s390_none_s390x-tape
+source_s390_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='s390' ABINAME='-bpo.1' ARCH='s390'
+source_s390_none_s390x: source_s390_none_s390x_real
+source_s390_none_s390x-tape: source_s390_none_s390x-tape_real
+source_s390_none_s390x-tape_real:
+source_s390_none_s390x_real:
+source_s390_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='s390' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='s390' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='s390'
+source_sparc: source_sparc_none source_sparc_real
+source_sparc_none: source_sparc_none_real source_sparc_none_sparc64 source_sparc_none_sparc64-smp
+source_sparc_none_real::
+	$(MAKE) -f debian/rules.real source-featureset MAJOR='2.6' LOCALVERSION_HEADERS='' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-5~bpo50+1' FEATURESET='none' VERSION='2.6.30' KERNEL_HEADER_DIRS='sparc' ABINAME='-bpo.1' ARCH='sparc'
+source_sparc_none_sparc64: source_sparc_none_sparc64_real
+source_sparc_none_sparc64-smp: source_sparc_none_sparc64-smp_real
+source_sparc_none_sparc64-smp_real:
+source_sparc_none_sparc64_real:
+source_sparc_real::
+	$(MAKE) -f debian/rules.real source-arch MAJOR='2.6' KERNEL_ARCH='sparc' UPSTREAMVERSION='2.6.30' LIBC_DEV_ARCH='sparc' SOURCEVERSION='2.6.30-5~bpo50+1' VERSION='2.6.30' ABINAME='-bpo.1' ARCH='sparc'
--- linux-2.6-2.6.30.orig/debian/README.build
+++ linux-2.6-2.6.30/debian/README.build
@@ -0,0 +1,17 @@
+Building kernels from SVN (for official images):
+
+1) Start by downloading a kernel tarball from kernel.org
+   (ie, linux-2.6.25.tar.bz2) and, optionally, a patch
+   (i.e. patch-2.6.26-rc3.bz2).
+
+2) Run ./debian/bin/genorig.py <tarball> [patch]. This will produce
+   ../orig/linux-2.6_<version>.orig.tar.gz
+   (i.e. linux-2.6_2.6.26~rc3.orig.tar.gz).
+
+3) Unpack linux-2.6-<version>.orig.tar.gz, cd into the new directory,
+   and do a 'svn export' to get the debian/ subdirectory.
+   Alternatively unpack using "make -f debian/rules orig".
+
+4) Build debian/control by running 'make -f debian/rules debian/control-real'.
+
+5) .configs will be generated during build.
--- linux-2.6-2.6.30.orig/debian/control
+++ linux-2.6-2.6.30/debian/control
@@ -0,0 +1,1121 @@
+Source: linux-2.6
+Section: kernel
+Priority: optional
+Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org>
+Uploaders: Bastian Blank <waldi@debian.org>, Frederik Schüler <fs@debian.org>, maximilian attems <maks@debian.org>
+Standards-Version: 3.8.1
+Build-Depends: debhelper (>> 7), cpio, module-init-tools, python, gcc-4.3 [alpha amd64 arm armel hppa i386 ia64 m68k mips mipsel powerpc s390 sparc], binutils-hppa64 [hppa], gcc-4.3-hppa64 [hppa]
+Build-Depends-Indep: bzip2, python-central, xmlto
+XS-Python-Version: current
+
+Package: linux-source-2.6.30
+Architecture: all
+Section: kernel
+Provides: linux-source, linux-source-2.6
+Depends: binutils, bzip2
+Recommends: libc6-dev | libc-dev, gcc, make
+Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-mt-dev
+Description: Linux kernel source for version 2.6.30 with Debian patches
+ This package provides source code for the Linux kernel version 2.6.30.
+ This source closely tracks official Linux kernel releases.  Debian's
+ modifications to that source consist of security fixes, bug fixes, and
+ features that have already been (or we believe will be) accepted by the
+ upstream maintainers.
+ .
+ If you wish to use this package to create a custom Linux kernel, then it
+ is suggested that you investigate the package kernel-package, which has
+ been designed to ease the task of creating kernel image packages.
+
+Package: linux-doc-2.6.30
+Architecture: all
+Section: doc
+Provides: linux-doc-2.6
+Description: Linux kernel specific documentation for version 2.6.30
+ This package provides the various README files and HTML documentation for
+ the Linux kernel version 2.6.30.  Plenty of information, including the
+ descriptions of various kernel subsystems, filesystems, driver-specific
+ notes and the like.  Consult the file
+ /usr/share/doc/linux-doc-2.6.30/Documentation/00-INDEX for the detailed
+ description of the contents.
+
+Package: linux-manual-2.6.30
+Architecture: all
+Section: doc
+Provides: linux-manual, kernel-manual-2.6
+Replaces: linux-manual, kernel-manual-2.6
+Conflicts: linux-manual, kernel-manual-2.6
+Description: Linux kernel API manual pages for version 2.6.30
+ This package provides the Kernel Hacker's Guide in the form of manual
+ pages, describing the kernel API functions.  They are installed into
+ section 9 of the manual.
+ .
+ As the files containing manual pages for different kernel versions are
+ installed in the same location, only one linux-manual package may be
+ installed at a time.  The linux-doc package containing the documentation
+ in other formats is free from such restriction.
+
+Package: linux-patch-debian-2.6.30
+Architecture: all
+Depends: bzip2, linux-support-2.6.30-bpo.1
+Suggests: linux-source-2.6.30
+Description: Debian patches to version 2.6.30 of the Linux kernel
+ This package includes the patches used to produce the prepackaged
+ linux-source-2.6.30 package, as well as architecture-specific patches.
+ .
+ Note that these patches do NOT apply against a pristine Linux 2.6.30
+ kernel but only against the kernel tarball linux-2.6_2.6.30.orig.tar.gz
+ from the Debian archive.
+
+Package: linux-tree-2.6.30
+Architecture: all
+Section: devel
+Provides: linux-tree-2.6.30-5-bpo50+1, linux-tree-2.6.30-5, linux-tree-2.6.30-4, linux-tree-2.6.30-3, linux-tree-2.6.30-2, linux-tree-2.6.30-1
+Depends: linux-patch-debian-2.6.30 (= 2.6.30-5~bpo50+1), linux-source-2.6.30 (= 2.6.30-5~bpo50+1) | linux-source-2.6.30 (= 2.6.30-5) | linux-source-2.6.30 (= 2.6.30-4) | linux-source-2.6.30 (= 2.6.30-3) | linux-source-2.6.30 (= 2.6.30-2) | linux-source-2.6.30 (= 2.6.30-1)
+Description: Linux kernel source tree for building Debian kernel images
+ This metapackage is used as a build dependency of Debian linux-image
+ packages to prevent a version discrepancy between the linux-image and
+ corresponding linux-sources packages in the fast-moving unstable archive.
+ The package's dependency relations are structured so that a linux-image
+ package's build dependencies can always be satisfied, even if the
+ linux-source package that had been used to compile the image has been
+ superseeded by a newer Debian revision since the last build.
+ .
+ The package provides a list of virtual packages, corresponding to Debian
+ revisions of a linux-source package.  The Debian linux-patch contains the
+ information needed to roll back the current linux-source to any of the
+ revisions identified by the provided virtual packages.  Therefore, the
+ linux-tree package ensures the availability of the Linux kernel source
+ tree corresponding to each of the virtual packages listed.
+ .
+ The package serves no purpose outside of the Debian build and archive
+ infrastructure.
+
+Package: linux-support-2.6.30-bpo.1
+Architecture: all
+Section: devel
+Depends: ${python:Depends}
+Description: Support files for Linux 2.6.30
+ This package provides support files for the Linux kernel build.
+XB-Python-Version: ${python:Versions}
+
+Package: linux-libc-dev
+Architecture: alpha amd64 arm armel hppa i386 ia64 m68k mips mipsel powerpc s390 sparc
+Section: devel
+Provides: linux-kernel-headers
+Replaces: linux-kernel-headers, libdrm-dev (<= 2.4.5-1)
+Conflicts: linux-kernel-headers
+Description: Linux support headers for userspace development
+ This package provides userspaces headers from the Linux kernel.  These
+ headers are used by the installed headers for GNU glibc and other system
+ libraries.
+
+Package: linux-headers-2.6.30-bpo.1-all
+Architecture: alpha amd64 arm armel hppa i386 ia64 m68k mips mipsel powerpc s390 sparc
+Depends: linux-headers-2.6.30-bpo.1-all-${kernel:Arch} (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-headers-2.6.30-bpo.1-all-alpha
+Architecture: alpha
+Depends: linux-headers-2.6.30-bpo.1-alpha-generic (= ${binary:Version}), linux-headers-2.6.30-bpo.1-alpha-smp (= ${binary:Version}), linux-headers-2.6.30-bpo.1-alpha-legacy (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-headers-2.6.30-bpo.1-common
+Architecture: alpha amd64 arm armel hppa i386 ia64 m68k mips mipsel powerpc s390 sparc
+Description: Common header files for Linux 2.6.30-bpo.1
+ This package provides the architecture-specific common kernel header files
+ for Linux kernel version 2.6.30-bpo.1,  generally used for building
+ out-of-tree kernel modules.  To obtain a complete set of headers you also
+ need to install the linux-headers-2.6.30-bpo.1-(flavour)  package,
+ matching the flavour of the kernel you intend the build for.
+
+Package: linux-image-2.6.30-bpo.1-alpha-generic
+Architecture: alpha
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-alpha-generic
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, aboot, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Alpha
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Alpha machines.
+
+Package: linux-headers-2.6.30-bpo.1-alpha-generic
+Architecture: alpha
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-alpha-generic
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-alpha-generic,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-alpha-generic,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-alpha-generic  package.
+
+Package: linux-image-2.6.30-bpo.1-alpha-smp
+Architecture: alpha
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-alpha-smp
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, aboot, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Alpha SMP
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Alpha SMP machines.
+
+Package: linux-headers-2.6.30-bpo.1-alpha-smp
+Architecture: alpha
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-alpha-smp
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-alpha-smp,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-alpha-smp,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-alpha-smp  package.
+
+Package: linux-image-2.6.30-bpo.1-alpha-legacy
+Architecture: alpha
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-alpha-legacy
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, aboot, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Alpha Legacy
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Alpha Legacy machines.
+
+Package: linux-headers-2.6.30-bpo.1-alpha-legacy
+Architecture: alpha
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-alpha-legacy
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-alpha-legacy,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-alpha-legacy,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-alpha-legacy  package.
+
+Package: linux-headers-2.6.30-bpo.1-all-amd64
+Architecture: amd64
+Depends: linux-headers-2.6.30-bpo.1-amd64 (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.1-amd64
+Architecture: amd64 i386
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-amd64
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, grub | lilo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on AMD64
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on all 64bit single- and multiprocessor AMD and Intel
+ machines.
+ .
+ This kernel also runs on a Xen hypervisor.  It supports only unpriviledged
+ (domU) operation.
+
+Package: linux-headers-2.6.30-bpo.1-amd64
+Architecture: amd64 i386
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-amd64
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-amd64,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-amd64,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-amd64  package.
+
+Package: linux-headers-2.6.30-bpo.1-all-arm
+Architecture: arm
+Depends: linux-headers-2.6.30-bpo.1-footbridge (= ${binary:Version}), linux-headers-2.6.30-bpo.1-iop32x (= ${binary:Version}), linux-headers-2.6.30-bpo.1-ixp4xx (= ${binary:Version}), linux-headers-2.6.30-bpo.1-orion5x (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.1-footbridge
+Architecture: arm
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-footbridge
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, nwutil
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Footbridge
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Footbridge based (CATS, Netwinder) machines.
+
+Package: linux-headers-2.6.30-bpo.1-footbridge
+Architecture: arm
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-footbridge
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-footbridge,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-footbridge,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-footbridge  package.
+
+Package: linux-image-2.6.30-bpo.1-iop32x
+Architecture: arm armel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-iop32x
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on IOP32x
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on IOP32x based (Thecus N2100, etc) machines.
+
+Package: linux-headers-2.6.30-bpo.1-iop32x
+Architecture: arm armel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-iop32x
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-iop32x,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-iop32x,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-iop32x  package.
+
+Package: linux-image-2.6.30-bpo.1-ixp4xx
+Architecture: arm armel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-ixp4xx
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on IXP4xx
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on IXP4xx based (Linksys NSLU2, etc) machines.
+
+Package: linux-headers-2.6.30-bpo.1-ixp4xx
+Architecture: arm armel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-ixp4xx
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-ixp4xx,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-ixp4xx,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-ixp4xx  package.
+
+Package: linux-image-2.6.30-bpo.1-orion5x
+Architecture: arm armel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-orion5x
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Recommends: uboot-mkimage
+Suggests: linux-doc-2.6.30, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Orion
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Orion 5181, 5182 and 5281 based (QNAP
+ TS-109/TS-209, etc) machines.
+
+Package: linux-headers-2.6.30-bpo.1-orion5x
+Architecture: arm armel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-orion5x
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-orion5x,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-orion5x,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-orion5x  package.
+
+Package: linux-headers-2.6.30-bpo.1-all-armel
+Architecture: armel
+Depends: linux-headers-2.6.30-bpo.1-iop32x (= ${binary:Version}), linux-headers-2.6.30-bpo.1-ixp4xx (= ${binary:Version}), linux-headers-2.6.30-bpo.1-kirkwood (= ${binary:Version}), linux-headers-2.6.30-bpo.1-orion5x (= ${binary:Version}), linux-headers-2.6.30-bpo.1-versatile (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.1-kirkwood
+Architecture: armel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-kirkwood
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Recommends: uboot-mkimage
+Suggests: linux-doc-2.6.30, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Marvell Kirkwood
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Marvell Kirkwood based (SheevaPlug, QNAP
+ TS-119/TS-219, etc) machines.
+
+Package: linux-headers-2.6.30-bpo.1-kirkwood
+Architecture: armel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-kirkwood
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-kirkwood,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-kirkwood,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-kirkwood  package.
+
+Package: linux-image-2.6.30-bpo.1-versatile
+Architecture: armel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-versatile
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Versatile
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Versatile (PB, AB, Qemu) machines.
+
+Package: linux-headers-2.6.30-bpo.1-versatile
+Architecture: armel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-versatile
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-versatile,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-versatile,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-versatile  package.
+
+Package: linux-headers-2.6.30-bpo.1-all-hppa
+Architecture: hppa
+Depends: linux-headers-2.6.30-bpo.1-parisc (= ${binary:Version}), linux-headers-2.6.30-bpo.1-parisc-smp (= ${binary:Version}), linux-headers-2.6.30-bpo.1-parisc64 (= ${binary:Version}), linux-headers-2.6.30-bpo.1-parisc64-smp (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.1-parisc
+Architecture: hppa
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-parisc
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, palo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on 32-bit PA-RISC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on 32-bit PA-RISC machines.
+
+Package: linux-headers-2.6.30-bpo.1-parisc
+Architecture: hppa
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3, binutils-hppa64, gcc-4.3-hppa64
+Description: Header files for Linux 2.6.30-bpo.1-parisc
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-parisc,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-parisc,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-parisc  package.
+
+Package: linux-image-2.6.30-bpo.1-parisc-smp
+Architecture: hppa
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-parisc-smp
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, palo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on multiprocessor 32-bit PA-RISC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on multiprocessor 32-bit PA-RISC machines.
+
+Package: linux-headers-2.6.30-bpo.1-parisc-smp
+Architecture: hppa
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3, binutils-hppa64, gcc-4.3-hppa64
+Description: Header files for Linux 2.6.30-bpo.1-parisc-smp
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-parisc-smp,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-parisc-smp,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-parisc-smp  package.
+
+Package: linux-image-2.6.30-bpo.1-parisc64
+Architecture: hppa
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-parisc64
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, palo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on 64-bit PA-RISC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on 64-bit PA-RISC machines.
+
+Package: linux-headers-2.6.30-bpo.1-parisc64
+Architecture: hppa
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3, binutils-hppa64, gcc-4.3-hppa64
+Description: Header files for Linux 2.6.30-bpo.1-parisc64
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-parisc64,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-parisc64,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-parisc64  package.
+
+Package: linux-image-2.6.30-bpo.1-parisc64-smp
+Architecture: hppa
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-parisc64-smp
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, palo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on multiprocessor 64-bit PA-RISC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on multiprocessor 64-bit PA-RISC machines.
+
+Package: linux-headers-2.6.30-bpo.1-parisc64-smp
+Architecture: hppa
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3, binutils-hppa64, gcc-4.3-hppa64
+Description: Header files for Linux 2.6.30-bpo.1-parisc64-smp
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-parisc64-smp,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-parisc64-smp,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-parisc64-smp  package.
+
+Package: linux-headers-2.6.30-bpo.1-all-i386
+Architecture: i386
+Depends: linux-headers-2.6.30-bpo.1-486 (= ${binary:Version}), linux-headers-2.6.30-bpo.1-686 (= ${binary:Version}), linux-headers-2.6.30-bpo.1-686-bigmem (= ${binary:Version}), linux-headers-2.6.30-bpo.1-amd64 (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.1-486
+Architecture: i386
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-486
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, grub | lilo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on x86
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on x86 and compatible machines.
+
+Package: linux-headers-2.6.30-bpo.1-486
+Architecture: i386
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-486
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-486,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-486,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-486  package.
+
+Package: linux-image-2.6.30-bpo.1-686
+Architecture: i386
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-686
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Recommends: libc6-i686
+Suggests: linux-doc-2.6.30, grub | lilo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on PPro/Celeron/PII/PIII/P4
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Pentium Pro/Celeron/Pentium II/Pentium III/Pentium
+ 4 machines.
+
+Package: linux-headers-2.6.30-bpo.1-686
+Architecture: i386
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-686
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-686,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-686,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-686  package.
+
+Package: linux-image-2.6.30-bpo.1-686-bigmem
+Architecture: i386
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-686-bigmem
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Recommends: libc6-i686
+Suggests: linux-doc-2.6.30, grub | lilo
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on PPro/Celeron/PII/PIII/P4
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Pentium Pro/Celeron/Pentium II/Pentium III/Pentium
+ 4 with 4-64G RAM machines.
+ .
+ This kernel also runs on a Xen hypervisor.  It supports only unpriviledged
+ (domU) operation.
+
+Package: linux-headers-2.6.30-bpo.1-686-bigmem
+Architecture: i386
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-686-bigmem
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-686-bigmem,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-686-bigmem,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-686-bigmem  package.
+
+Package: linux-headers-2.6.30-bpo.1-all-ia64
+Architecture: ia64
+Depends: linux-headers-2.6.30-bpo.1-itanium (= ${binary:Version}), linux-headers-2.6.30-bpo.1-mckinley (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.1-itanium
+Architecture: ia64
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-itanium
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, elilo, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Itanium
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Itanium machines.
+
+Package: linux-headers-2.6.30-bpo.1-itanium
+Architecture: ia64
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-itanium
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-itanium,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-itanium,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-itanium  package.
+
+Package: linux-image-2.6.30-bpo.1-mckinley
+Architecture: ia64
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-mckinley
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, elilo, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on Itanium II
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Itanium II machines.
+
+Package: linux-headers-2.6.30-bpo.1-mckinley
+Architecture: ia64
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-mckinley
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-mckinley,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-mckinley,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-mckinley  package.
+
+Package: linux-headers-2.6.30-bpo.1-all-m68k
+Architecture: m68k
+Depends: linux-headers-2.6.30-bpo.1-amiga (= ${binary:Version}), linux-headers-2.6.30-bpo.1-atari (= ${binary:Version}), linux-headers-2.6.30-bpo.1-bvme6000 (= ${binary:Version}), linux-headers-2.6.30-bpo.1-mac (= ${binary:Version}), linux-headers-2.6.30-bpo.1-mvme147 (= ${binary:Version}), linux-headers-2.6.30-bpo.1-mvme16x (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.1-amiga
+Architecture: m68k
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-amiga
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30, vmelilo, fdutils
+Description: Linux 2.6.30 image on Amiga
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Amiga machines.
+
+Package: linux-headers-2.6.30-bpo.1-amiga
+Architecture: m68k
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-amiga
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-amiga,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-amiga,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-amiga  package.
+
+Package: linux-image-2.6.30-bpo.1-atari
+Architecture: m68k
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-atari
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30, vmelilo, fdutils
+Description: Linux 2.6.30 image on Atari
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Atari machines.
+
+Package: linux-headers-2.6.30-bpo.1-atari
+Architecture: m68k
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-atari
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-atari,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-atari,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-atari  package.
+
+Package: linux-image-2.6.30-bpo.1-bvme6000
+Architecture: m68k
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-bvme6000
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30, vmelilo, fdutils
+Description: Linux 2.6.30 image on BVM BVME4000 and BVME6000
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on BVM BVME4000 and BVME6000 machines.
+
+Package: linux-headers-2.6.30-bpo.1-bvme6000
+Architecture: m68k
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-bvme6000
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-bvme6000,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-bvme6000,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-bvme6000  package.
+
+Package: linux-image-2.6.30-bpo.1-mac
+Architecture: m68k
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-mac
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30, vmelilo, fdutils
+Description: Linux 2.6.30 image on Macintosh
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Macintosh machines.
+
+Package: linux-headers-2.6.30-bpo.1-mac
+Architecture: m68k
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-mac
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-mac,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-mac,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-mac  package.
+
+Package: linux-image-2.6.30-bpo.1-mvme147
+Architecture: m68k
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-mvme147
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30, vmelilo, fdutils
+Description: Linux 2.6.30 image on Motorola MVME147
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Motorola MVME147 machines.
+
+Package: linux-headers-2.6.30-bpo.1-mvme147
+Architecture: m68k
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-mvme147
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-mvme147,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-mvme147,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-mvme147  package.
+
+Package: linux-image-2.6.30-bpo.1-mvme16x
+Architecture: m68k
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-mvme16x
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30, vmelilo, fdutils
+Description: Linux 2.6.30 image on Motorola MVME162/6/7, MVME172/7
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Motorola MVME162/6/7, MVME172/7 machines.
+
+Package: linux-headers-2.6.30-bpo.1-mvme16x
+Architecture: m68k
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-mvme16x
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-mvme16x,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-mvme16x,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-mvme16x  package.
+
+Package: linux-headers-2.6.30-bpo.1-all-mips
+Architecture: mips
+Depends: linux-headers-2.6.30-bpo.1-r4k-ip22 (= ${binary:Version}), linux-headers-2.6.30-bpo.1-r5k-ip32 (= ${binary:Version}), linux-headers-2.6.30-bpo.1-sb1-bcm91250a (= ${binary:Version}), linux-headers-2.6.30-bpo.1-sb1a-bcm91480b (= ${binary:Version}), linux-headers-2.6.30-bpo.1-4kc-malta (= ${binary:Version}), linux-headers-2.6.30-bpo.1-5kc-malta (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.1-r4k-ip22
+Architecture: mips
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-r4k-ip22
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30
+Description: Linux 2.6.30 image on SGI IP22
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on SGI IP22 (Indy, Indigo2) machines.
+
+Package: linux-headers-2.6.30-bpo.1-r4k-ip22
+Architecture: mips
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-r4k-ip22
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-r4k-ip22,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-r4k-ip22,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-r4k-ip22  package.
+
+Package: linux-image-2.6.30-bpo.1-r5k-ip32
+Architecture: mips
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-r5k-ip32
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30
+Description: Linux 2.6.30 image on SGI IP32
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on SGI IP32 (O2) machines.
+
+Package: linux-headers-2.6.30-bpo.1-r5k-ip32
+Architecture: mips
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-r5k-ip32
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-r5k-ip32,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-r5k-ip32,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-r5k-ip32  package.
+
+Package: linux-image-2.6.30-bpo.1-sb1-bcm91250a
+Architecture: mips mipsel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-sb1-bcm91250a
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30
+Description: Linux 2.6.30 image on BCM91250A
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Broadcom BCM91250A (aka SWARM) machines.
+
+Package: linux-headers-2.6.30-bpo.1-sb1-bcm91250a
+Architecture: mips mipsel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-sb1-bcm91250a
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-sb1-bcm91250a,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-sb1-bcm91250a,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-sb1-bcm91250a  package.
+
+Package: linux-image-2.6.30-bpo.1-sb1a-bcm91480b
+Architecture: mips mipsel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-sb1a-bcm91480b
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30
+Description: Linux 2.6.30 image on BCM91480B
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Broadcom BCM91480B (aka BigSur) machines.
+
+Package: linux-headers-2.6.30-bpo.1-sb1a-bcm91480b
+Architecture: mips mipsel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-sb1a-bcm91480b
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-sb1a-bcm91480b,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-sb1a-bcm91480b,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-sb1a-bcm91480b  package.
+
+Package: linux-image-2.6.30-bpo.1-4kc-malta
+Architecture: mips mipsel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-4kc-malta
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30
+Description: Linux 2.6.30 image on MIPS Malta
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on MIPS Malta board machines.
+
+Package: linux-headers-2.6.30-bpo.1-4kc-malta
+Architecture: mips mipsel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-4kc-malta
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-4kc-malta,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-4kc-malta,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-4kc-malta  package.
+
+Package: linux-image-2.6.30-bpo.1-5kc-malta
+Architecture: mips mipsel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-5kc-malta
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30
+Description: Linux 2.6.30 image on MIPS Malta (64-bit)
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on MIPS Malta board (64-bit) machines.
+
+Package: linux-headers-2.6.30-bpo.1-5kc-malta
+Architecture: mips mipsel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-5kc-malta
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-5kc-malta,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-5kc-malta,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-5kc-malta  package.
+
+Package: linux-headers-2.6.30-bpo.1-all-mipsel
+Architecture: mipsel
+Depends: linux-headers-2.6.30-bpo.1-r5k-cobalt (= ${binary:Version}), linux-headers-2.6.30-bpo.1-sb1-bcm91250a (= ${binary:Version}), linux-headers-2.6.30-bpo.1-sb1a-bcm91480b (= ${binary:Version}), linux-headers-2.6.30-bpo.1-4kc-malta (= ${binary:Version}), linux-headers-2.6.30-bpo.1-5kc-malta (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.1-r5k-cobalt
+Architecture: mipsel
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-r5k-cobalt
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}
+Suggests: linux-doc-2.6.30
+Description: Linux 2.6.30 image on Cobalt
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on Cobalt (Qube, RaQ, Qube2, RaQ2) machines.
+
+Package: linux-headers-2.6.30-bpo.1-r5k-cobalt
+Architecture: mipsel
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-r5k-cobalt
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-r5k-cobalt,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-r5k-cobalt,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-r5k-cobalt  package.
+
+Package: linux-headers-2.6.30-bpo.1-all-powerpc
+Architecture: powerpc
+Depends: linux-headers-2.6.30-bpo.1-powerpc (= ${binary:Version}), linux-headers-2.6.30-bpo.1-powerpc-smp (= ${binary:Version}), linux-headers-2.6.30-bpo.1-powerpc64 (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.1-powerpc
+Architecture: powerpc
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-powerpc
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, mkvmlinuz
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on uniprocessor 32-bit PowerPC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on uniprocessor 32-bit PowerPC machines.
+
+Package: linux-headers-2.6.30-bpo.1-powerpc
+Architecture: powerpc
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-powerpc
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-powerpc,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-powerpc,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-powerpc  package.
+
+Package: linux-image-2.6.30-bpo.1-powerpc-smp
+Architecture: powerpc
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-powerpc-smp
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, mkvmlinuz
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on multiprocessor 32-bit PowerPC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on multiprocessor 32-bit PowerPC machines.
+
+Package: linux-headers-2.6.30-bpo.1-powerpc-smp
+Architecture: powerpc
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-powerpc-smp
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-powerpc-smp,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-powerpc-smp,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-powerpc-smp  package.
+
+Package: linux-image-2.6.30-bpo.1-powerpc64
+Architecture: powerpc
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-powerpc64
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, mkvmlinuz
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on 64-bit PowerPC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on 64-bit PowerPC machines.
+
+Package: linux-headers-2.6.30-bpo.1-powerpc64
+Architecture: powerpc
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-powerpc64
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-powerpc64,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-powerpc64,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-powerpc64  package.
+
+Package: linux-headers-2.6.30-bpo.1-all-s390
+Architecture: s390
+Depends: linux-headers-2.6.30-bpo.1-s390x (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.1-s390x
+Architecture: s390
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-s390x
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, s390-tools
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on IBM zSeries
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on IBM zSeries machines.
+ .
+ This kernel has support to IPL (boot) from a VM reader or DASD device.
+
+Package: linux-headers-2.6.30-bpo.1-s390x
+Architecture: s390
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-s390x
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-s390x,  generally used for building out-of-tree
+ kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-s390x,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-s390x  package.
+
+Package: linux-image-2.6.30-bpo.1-s390x-tape
+Architecture: s390
+Provides: linux-image, linux-image-2.6
+Depends: ${shlibs:Depends}
+Suggests: linux-doc-2.6.30, s390-tools
+Description: Linux 2.6.30 image on IBM zSeries, IPL from tape
+ This package provides the binary image for Linux kernel 2.6.30 on IBM
+ zSeries machines.
+ .
+ This kernel has support to IPL (boot) from a tape.
+
+Package: linux-headers-2.6.30-bpo.1-all-sparc
+Architecture: sparc
+Depends: linux-headers-2.6.30-bpo.1-sparc64 (= ${binary:Version}), linux-headers-2.6.30-bpo.1-sparc64-smp (= ${binary:Version})
+Description: All header files for Linux 2.6.30
+ This package depends against all architecture-specific kernel header files
+ for Linux kernel version 2.6.30, generally used for building out-of-tree
+ kernel modules.
+
+Package: linux-image-2.6.30-bpo.1-sparc64
+Architecture: sparc
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-sparc64
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, silo, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on uniprocessor 64-bit UltraSPARC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on uniprocessor 64-bit UltraSPARC machines.
+
+Package: linux-headers-2.6.30-bpo.1-sparc64
+Architecture: sparc
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-sparc64
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-sparc64,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-sparc64,  and can be used for building
+ modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-sparc64  package.
+
+Package: linux-image-2.6.30-bpo.1-sparc64-smp
+Architecture: sparc
+Provides: linux-image, linux-image-2.6, linux-modules-2.6.30-bpo.1-sparc64-smp
+Pre-Depends: debconf | debconf-2.0
+Depends: module-init-tools, ${shlibs:Depends}, initramfs-tools (>= 0.55) | yaird (>= 0.0.13) | linux-initramfs-tool
+Suggests: linux-doc-2.6.30, silo, fdutils
+Conflicts: initramfs-tools (<< 0.55), yaird (<< 0.0.13)
+Description: Linux 2.6.30 image on multiprocessor 64-bit UltraSPARC
+ This package provides the binary image and pre-built loadable modules for
+ Linux kernel 2.6.30 on multiprocessor 64-bit UltraSPARC machines.
+
+Package: linux-headers-2.6.30-bpo.1-sparc64-smp
+Architecture: sparc
+Provides: linux-headers, linux-headers-2.6
+Depends: linux-headers-2.6.30-bpo.1-common (= ${binary:Version}), linux-kbuild-2.6.30, gcc-4.3
+Description: Header files for Linux 2.6.30-bpo.1-sparc64-smp
+ This package provides the architecture-specific kernel header files for
+ Linux kernel 2.6.30-bpo.1-sparc64-smp,  generally used for building
+ out-of-tree kernel modules.  These files are going to be installed into
+ /usr/src/linux-headers-2.6.30-bpo.1-sparc64-smp,  and can be used for
+ building modules that load into the kernel provided by the
+ linux-image-2.6.30-bpo.1-sparc64-smp  package.
+
--- linux-2.6-2.6.30.orig/debian/rules.defs
+++ linux-2.6-2.6.30/debian/rules.defs
@@ -0,0 +1,4 @@
+BUILD_DIR = debian/build
+STAMPS_DIR = debian/stamps
+TEMPLATES_DIR = debian/templates
+
--- linux-2.6-2.6.30.orig/debian/README.Debian
+++ linux-2.6-2.6.30/debian/README.Debian
@@ -0,0 +1,55 @@
+linux-2.6 for DEBIAN
+------------------------
+
+Patches
+-------
+Debian applies small changes to the kernel source. These are split up into
+separated patches addressing individual problems. Each of the patch files
+contains a description and mentions the author. The patches can be found
+at http://svn.debian.org/wsvn/kernel/dists/trunk/linux-2.6/debian/patches/.
+
+Config Files
+------------
+The .config files used to build the various linux-image files are dynamically
+generated during the linux-2.6 package build.  See the source package for
+details.  Each linux-image-* package provides the complete .config file that
+was used to generate it.  This file is installed in /boot.
+
+Scope of security support
+-------------------------
+Security support is provided not only for the binary builds, but also
+for the full source package, allowing for locally customized kernels.
+However, kernel options that are not enabled in official Debian builds are
+given a lower priority for security support. Options marked as BROKEN
+or EXPERIMENTAL are of very low priority, and should not be enabled in
+customized builds for a security-sensitive environment.
+
+Rebuilding Adaptec AIC7xxx/79xx firmware
+----------------------------------------
+You can rebuild the firmware for the Adaptec AIC7xxx/79xx SCSI Adapters. To
+do so you need to set AIC7XXX_BUILD_FIRMWARE/AIC79XX_BUILD_FIRMWARE config
+options.  Note that this requires to have the development packages for
+berkelydb (libdb4.2-dev) installed.
+
+PS/2 Mice
+---------
+If your PS/2 mouse does not work, make sure that the modules psmouse and
+mousedev are loaded.
+
+Non-free bits removed
+---------------------
+* Keyspan firmware, driver disabled
+  . drivers/usb/serial/ksyspan_{mpr,usa*}_fw.h
+* Emagic EMI 2|6 usb audio interface firmware loader
+  . drivers/usb/misc/emi62_fw_*.h
+
+Firmware removed
+----------------
+* SMC Token Ring firmware, driver disabled:
+  . drivers/net/tokenring/smctr_firmware.h
+* ACENIC firwmare, driver disabled:
+  . drivers/net/acenic_firmware.h
+* DGRS firmware, driver disabled:
+  . drivers/net/dgrs_firmware.c
+* DAB firmware, driver disabled:
+  . drivers/usb/media/dabfirmware.h
--- linux-2.6-2.6.30.orig/debian/rules
+++ linux-2.6-2.6.30/debian/rules
@@ -0,0 +1,99 @@
+#!/usr/bin/make -f
+#
+# Generally nothing needs to be modified below this line
+#
+SHELL    := sh -e
+DEB_HOST_ARCH  := $(shell dpkg-architecture -qDEB_HOST_ARCH)
+DEB_BUILD_ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH)
+SOURCE   := $(shell dpkg-parsechangelog | sed -ne 's,^Source: *\(.*\)$$,\1,p')
+VERSION_DEBIAN := $(shell dpkg-parsechangelog | sed -ne 's,^Version: *\(.*\)$$,\1,p')
+VERSION  := $(shell echo "$(VERSION_DEBIAN)" | sed -e 's,-[^-]*$$,,')
+VERSION_DEBIAN_BINNMU := $(shell echo "$(VERSION_DEBIAN)" | sed -ne 's,.*\+b\(.*\)$$,\1,p')
+
+include debian/rules.defs
+
+source: debian/control $(STAMPS_DIR)/source-base
+$(STAMPS_DIR)/source-base: $(BUILD_DIR) $(STAMPS_DIR)
+	dh_testdir
+	$(MAKE) -f debian/rules.gen source_$(DEB_HOST_ARCH)
+	touch $@
+
+source-all: debian/control $(BUILD_DIR) $(STAMPS_DIR)
+	dh_testdir
+	$(MAKE) -f debian/rules.gen source
+
+setup: debian/control $(STAMPS_DIR)/setup-base
+$(STAMPS_DIR)/setup-base: $(STAMPS_DIR)/source-base
+	dh_testdir
+	$(MAKE) -f debian/rules.gen setup_$(DEB_HOST_ARCH)
+	touch $@
+
+build: debian/control $(STAMPS_DIR)/build-base
+$(STAMPS_DIR)/build-base: $(STAMPS_DIR)/setup-base
+	dh_testdir
+	$(MAKE) -f debian/rules.gen build_$(DEB_HOST_ARCH)
+	touch $@
+
+$(BUILD_DIR) $(STAMPS_DIR):
+	@[ -d $@ ] || mkdir $@
+
+DIR_ORIG = ../orig/$(SOURCE)-$(VERSION)
+TAR_ORIG_NAME = $(SOURCE)_$(VERSION).orig.tar.gz
+TAR_ORIG = $(firstword $(wildcard ../$(TAR_ORIG_NAME)) $(wildcard ../orig/$(TAR_ORIG_NAME)))
+
+orig: $(DIR_ORIG)
+	rsync --delete --exclude debian --exclude .svk --exclude .svn --link-dest=$(DIR_ORIG)/ -a $(DIR_ORIG)/ .
+
+$(DIR_ORIG):
+ifeq ($(TAR_ORIG),)
+	$(error Cannot find orig tarball $(TAR_ORIG_NAME))
+else
+	mkdir -p ../orig
+	tar -C ../orig -xzf $(TAR_ORIG)
+endif
+
+maintainerclean:
+	rm -f debian/config.defines.dump debian/control debian/control.md5sum debian/rules.gen debian/bin/patch.* debian/linux-*
+	rm -rf $(filter-out debian .svk .svn, $(wildcard * .[^.]*))
+
+clean: debian/control
+	dh_testdir
+	rm -rf $(BUILD_DIR) $(STAMPS_DIR) debian/lib/python/debian_linux/*.pyc
+	dh_clean
+
+binary-indep: $(STAMPS_DIR)/source-base
+	dh_testdir
+	$(MAKE) -f debian/rules.gen binary-indep
+
+binary-arch: $(STAMPS_DIR)/build-base
+	dh_testdir
+	$(MAKE) -f debian/rules.gen binary-arch_$(DEB_HOST_ARCH)
+
+binary:	binary-indep binary-arch
+
+CONTROL_FILES = debian/changelog $(wildcard debian/templates/*.in)
+CONTROL_FILES += debian/config/defines $(wildcard debian/config/*/defines) $(wildcard debian/config/*/*/defines)
+debian/control debian/rules.gen: debian/bin/gencontrol.py $(CONTROL_FILES)
+ifeq ($(wildcard debian/control.md5sum),)
+	$(MAKE) -f debian/rules debian/control-real
+else ifeq ($(VERSION_DEBIAN_BINNMU),)
+	md5sum --check debian/control.md5sum --status || \
+		$(MAKE) -f debian/rules debian/control-real
+else
+	grep -v debian/changelog debian/control.md5sum | md5sum --check - --status || \
+		$(MAKE) -f debian/rules debian/control-real
+endif
+
+debian/control-real: debian/bin/gencontrol.py $(CONTROL_FILES)
+	chmod +x $<
+	$<
+	md5sum $^ > debian/control.md5sum
+	@echo
+	@echo This target is made to fail intentionally, to make sure
+	@echo that it is NEVER run during the automated build. Please
+	@echo ignore the following error, the debian/control file has
+	@echo been generated SUCCESSFULLY.
+	@echo
+	exit 1
+
+.PHONY: clean build setup binary-indep binary-arch binary
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/fix-hifn_795X-divdi3.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/fix-hifn_795X-divdi3.patch
@@ -0,0 +1,54 @@
+On Tue, Feb 26, 2008 at 01:21:00PM +0100, Martin Michlmayr wrote:
+> With 2.6.25-rc3 and a config file with
+> 
+> CONFIG_CRYPTO_DEV_HIFN_795X=m
+> CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+> 
+> I get the following build error on at least ARM and MIPS:
+> 
+>   Building modules, stage 2.
+>   MODPOST 759 modules
+> ERROR: "__divdi3" [drivers/crypto/hifn_795x.ko] undefined!
+
+Fix below.
+
+> Martin Michlmayr
+
+cu
+Adrian
+
+
+<--  snip  -->
+
+
+Using ndelay() with a 64bit variable as parameter can result in build 
+errors like the following on some 32bit systems when it results in a 
+64bit division:
+
+<--  snip  -->
+
+ ...
+  MODPOST 759 modules
+ERROR: "__divdi3" [drivers/crypto/hifn_795x.ko] undefined!
+
+<--  snip  -->
+
+Reported by Martin Michlmayr.
+
+Signed-off-by: Adrian Bunk <bunk@kernel.org>
+
+---
+
+40b45041ddc587c20b872a86a6a36952c28b02c7 diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c
+index 3110bf7..b1541c6 100644
+--- a/drivers/crypto/hifn_795x.c
++++ b/drivers/crypto/hifn_795x.c
+@@ -807,7 +807,7 @@ static int hifn_rng_data_present(struct hwrng *rng, int wait)
+ 		return 1;
+ 	if (!wait)
+ 		return 0;
+-	ndelay(nsec);
++	ndelay((u32)nsec);
+ 	return 1;
+ }
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/parisc/fix-ldcw-inline-assembler.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/parisc/fix-ldcw-inline-assembler.patch
@@ -0,0 +1,38 @@
+commit 7d17e2763129ea307702fcdc91f6e9d114b65c2d
+Author: Helge Deller <deller@gmx.de>
+Date:   Thu Apr 30 21:39:45 2009 +0000
+
+    parisc: fix ldcw inline assembler
+    
+    There are two reasons to expose the memory *a in the asm:
+    
+    1) To prevent the compiler from discarding a preceeding write to *a, and
+    2) to prevent it from caching *a in a register over the asm.
+    
+    The change has had a few days testing with a SMP build of 2.6.22.19
+    running on a rp3440.
+    
+    This patch is about the correctness of the __ldcw() macro itself.
+    The use of the macro should be confined to small inline functions
+    to try to limit the effect of clobbering memory on GCC's optimization
+    of loads and stores.
+    
+    Signed-off-by: Dave Anglin <dave.anglin@nrc-cnrc.gc.ca>
+    Signed-off-by: Helge Deller <deller@gmx.de>
+    Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
+
+diff --git a/arch/parisc/include/asm/system.h b/arch/parisc/include/asm/system.h
+index ee80c92..d91357b 100644
+--- a/arch/parisc/include/asm/system.h
++++ b/arch/parisc/include/asm/system.h
+@@ -168,8 +168,8 @@ static inline void set_eiem(unsigned long val)
+ /* LDCW, the only atomic read-write operation PA-RISC has. *sigh*.  */
+ #define __ldcw(a) ({						\
+ 	unsigned __ret;						\
+-	__asm__ __volatile__(__LDCW " 0(%1),%0"			\
+-		: "=r" (__ret) : "r" (a));			\
++	__asm__ __volatile__(__LDCW " 0(%2),%0"			\
++		: "=r" (__ret), "+m" (*(a)) : "r" (a));		\
+ 	__ret;							\
+ })
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/parisc/ensure-broadcast-tlb-purge-runs-single-threaded.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/parisc/ensure-broadcast-tlb-purge-runs-single-threaded.patch
@@ -0,0 +1,164 @@
+commit e82a3b75127188f20c7780bec580e148beb29da7
+Author: Helge Deller <deller@gmx.de>
+Date:   Tue Jun 16 20:51:48 2009 +0000
+
+    parisc: ensure broadcast tlb purge runs single threaded
+    
+    The TLB flushing functions on hppa, which causes PxTLB broadcasts on the system
+    bus, needs to be protected by irq-safe spinlocks to avoid irq handlers to deadlock
+    the kernel. The deadlocks only happened during I/O intensive loads and triggered
+    pretty seldom, which is why this bug went so long unnoticed.
+    
+    Signed-off-by: Helge Deller <deller@gmx.de>
+    [edited to use spin_lock_irqsave on UP as well since we'd been locking there
+     all this time anyway, --kyle]
+    Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
+
+diff --git a/arch/parisc/include/asm/tlbflush.h b/arch/parisc/include/asm/tlbflush.h
+index 1f6fd4f..8f1a810 100644
+--- a/arch/parisc/include/asm/tlbflush.h
++++ b/arch/parisc/include/asm/tlbflush.h
+@@ -12,14 +12,12 @@
+  * N class systems, only one PxTLB inter processor broadcast can be
+  * active at any one time on the Merced bus.  This tlb purge
+  * synchronisation is fairly lightweight and harmless so we activate
+- * it on all SMP systems not just the N class.  We also need to have
+- * preemption disabled on uniprocessor machines, and spin_lock does that
+- * nicely.
++ * it on all systems not just the N class.
+  */
+ extern spinlock_t pa_tlb_lock;
+ 
+-#define purge_tlb_start(x) spin_lock(&pa_tlb_lock)
+-#define purge_tlb_end(x) spin_unlock(&pa_tlb_lock)
++#define purge_tlb_start(flags)	spin_lock_irqsave(&pa_tlb_lock, flags)
++#define purge_tlb_end(flags)	spin_unlock_irqrestore(&pa_tlb_lock, flags)
+ 
+ extern void flush_tlb_all(void);
+ extern void flush_tlb_all_local(void *);
+@@ -63,14 +61,16 @@ static inline void flush_tlb_mm(struct mm_struct *mm)
+ static inline void flush_tlb_page(struct vm_area_struct *vma,
+ 	unsigned long addr)
+ {
++	unsigned long flags;
++
+ 	/* For one page, it's not worth testing the split_tlb variable */
+ 
+ 	mb();
+ 	mtsp(vma->vm_mm->context,1);
+-	purge_tlb_start();
++	purge_tlb_start(flags);
+ 	pdtlb(addr);
+ 	pitlb(addr);
+-	purge_tlb_end();
++	purge_tlb_end(flags);
+ }
+ 
+ void __flush_tlb_range(unsigned long sid,
+diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
+index f34082d..b6ed34d 100644
+--- a/arch/parisc/kernel/cache.c
++++ b/arch/parisc/kernel/cache.c
+@@ -397,12 +397,13 @@ EXPORT_SYMBOL(flush_kernel_icache_range_asm);
+ 
+ void clear_user_page_asm(void *page, unsigned long vaddr)
+ {
++	unsigned long flags;
+ 	/* This function is implemented in assembly in pacache.S */
+ 	extern void __clear_user_page_asm(void *page, unsigned long vaddr);
+ 
+-	purge_tlb_start();
++	purge_tlb_start(flags);
+ 	__clear_user_page_asm(page, vaddr);
+-	purge_tlb_end();
++	purge_tlb_end(flags);
+ }
+ 
+ #define FLUSH_THRESHOLD 0x80000 /* 0.5MB */
+@@ -443,20 +444,24 @@ extern void clear_user_page_asm(void *page, unsigned long vaddr);
+ 
+ void clear_user_page(void *page, unsigned long vaddr, struct page *pg)
+ {
++	unsigned long flags;
++
+ 	purge_kernel_dcache_page((unsigned long)page);
+-	purge_tlb_start();
++	purge_tlb_start(flags);
+ 	pdtlb_kernel(page);
+-	purge_tlb_end();
++	purge_tlb_end(flags);
+ 	clear_user_page_asm(page, vaddr);
+ }
+ EXPORT_SYMBOL(clear_user_page);
+ 
+ void flush_kernel_dcache_page_addr(void *addr)
+ {
++	unsigned long flags;
++
+ 	flush_kernel_dcache_page_asm(addr);
+-	purge_tlb_start();
++	purge_tlb_start(flags);
+ 	pdtlb_kernel(addr);
+-	purge_tlb_end();
++	purge_tlb_end(flags);
+ }
+ EXPORT_SYMBOL(flush_kernel_dcache_page_addr);
+ 
+@@ -489,8 +494,10 @@ void __flush_tlb_range(unsigned long sid, unsigned long start,
+ 	if (npages >= 512)  /* 2MB of space: arbitrary, should be tuned */
+ 		flush_tlb_all();
+ 	else {
++		unsigned long flags;
++
+ 		mtsp(sid, 1);
+-		purge_tlb_start();
++		purge_tlb_start(flags);
+ 		if (split_tlb) {
+ 			while (npages--) {
+ 				pdtlb(start);
+@@ -503,7 +510,7 @@ void __flush_tlb_range(unsigned long sid, unsigned long start,
+ 				start += PAGE_SIZE;
+ 			}
+ 		}
+-		purge_tlb_end();
++		purge_tlb_end(flags);
+ 	}
+ }
+ 
+diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c
+index 7d927ea..c07f618 100644
+--- a/arch/parisc/kernel/pci-dma.c
++++ b/arch/parisc/kernel/pci-dma.c
+@@ -90,12 +90,14 @@ static inline int map_pte_uncached(pte_t * pte,
+ 	if (end > PMD_SIZE)
+ 		end = PMD_SIZE;
+ 	do {
++		unsigned long flags;
++
+ 		if (!pte_none(*pte))
+ 			printk(KERN_ERR "map_pte_uncached: page already exists\n");
+ 		set_pte(pte, __mk_pte(*paddr_ptr, PAGE_KERNEL_UNC));
+-		purge_tlb_start();
++		purge_tlb_start(flags);
+ 		pdtlb_kernel(orig_vaddr);
+-		purge_tlb_end();
++		purge_tlb_end(flags);
+ 		vaddr += PAGE_SIZE;
+ 		orig_vaddr += PAGE_SIZE;
+ 		(*paddr_ptr) += PAGE_SIZE;
+@@ -168,11 +170,13 @@ static inline void unmap_uncached_pte(pmd_t * pmd, unsigned long vaddr,
+ 	if (end > PMD_SIZE)
+ 		end = PMD_SIZE;
+ 	do {
++		unsigned long flags;
+ 		pte_t page = *pte;
++
+ 		pte_clear(&init_mm, vaddr, pte);
+-		purge_tlb_start();
++		purge_tlb_start(flags);
+ 		pdtlb_kernel(orig_vaddr);
+-		purge_tlb_end();
++		purge_tlb_end(flags);
+ 		vaddr += PAGE_SIZE;
+ 		orig_vaddr += PAGE_SIZE;
+ 		pte++;
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/mips/disable-werror.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/mips/disable-werror.patch
@@ -0,0 +1,15 @@
+
+workaround this bug:
+
+cc1: warnings being treated as errors
+arch/mips/kernel/../../../fs/binfmt_elf.c: In function ‘vma_dump_size’:
+arch/mips/kernel/../../../fs/binfmt_elf.c:1202: warning: ‘word’ may be used uninitialized in this function
+
+
+--- a/arch/mips/kernel/Makefile	2009-02-16 11:25:13.000000000 +0000
++++ b/arch/mips/kernel/Makefile	2009-02-16 11:25:23.000000000 +0000
+@@ -89,4 +89,3 @@
+ 
+ obj-$(CONFIG_HAVE_STD_PC_SERIAL_PORT)	+= 8250-platform.o
+ 
+-EXTRA_CFLAGS += -Werror
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/mips/disable-advansys.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/mips/disable-advansys.patch
@@ -0,0 +1,19 @@
+Florian Lohoff <flo@rfc822.org> reports the following build failure on IP32:
+
+  MODPOST 552 modules
+ERROR: "free_dma" [drivers/scsi/advansys.ko] undefined!
+make[5]: *** [__modpost] Error 1
+
+But report:
+http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg12773.html
+
+--- a/drivers/scsi/Kconfig	2007-12-27 19:16:18.000000000 +0000
++++ b/drivers/scsi/Kconfig	2007-12-27 19:16:58.000000000 +0000
+@@ -523,6 +523,7 @@
+ 	tristate "AdvanSys SCSI support"
+ 	depends on SCSI && VIRT_TO_BUS
+ 	depends on ISA || EISA || PCI
++	depends on (!MIPS && !ARM) || BROKEN
+ 	help
+ 	  This is a driver for all SCSI host adapters manufactured by
+ 	  AdvanSys. It is documented in the kernel source in
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/mips/fix-ndelay-build-error.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/mips/fix-ndelay-build-error.patch
@@ -0,0 +1,33 @@
+From: Atsushi Nemoto <nemoto@toshiba-tops.co.jp>
+Date: Tue, 9 Jun 2009 02:12:48 +0000 (+0900)
+Subject: MIPS: Fix __ndelay build error and add 'ull' suffix for 32-bit kernel
+X-Git-Tag: linux-2.6.30~2
+X-Git-Url: http://www.linux-mips.org/git?p=linux.git;a=commitdiff_plain;h=60bd2aaf47ba20fd99901b8bcd2bebffe37b166d
+
+MIPS: Fix __ndelay build error and add 'ull' suffix for 32-bit kernel
+
+Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
+Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
+---
+
+diff --git a/arch/mips/lib/delay.c b/arch/mips/lib/delay.c
+index f69c6b5..6b3b1de 100644
+--- a/arch/mips/lib/delay.c
++++ b/arch/mips/lib/delay.c
+@@ -43,7 +43,7 @@ void __udelay(unsigned long us)
+ {
+ 	unsigned int lpj = current_cpu_data.udelay_val;
+ 
+-	__delay((us * 0x000010c7 * HZ * lpj) >> 32);
++	__delay((us * 0x000010c7ull * HZ * lpj) >> 32);
+ }
+ EXPORT_SYMBOL(__udelay);
+ 
+@@ -51,6 +51,6 @@ void __ndelay(unsigned long ns)
+ {
+ 	unsigned int lpj = current_cpu_data.udelay_val;
+ 
+-	__delay((us * 0x00000005 * HZ * lpj) >> 32);
++	__delay((ns * 0x00000005ull * HZ * lpj) >> 32);
+ }
+ EXPORT_SYMBOL(__ndelay);
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/x86/arch-kernel-cpu-amd-pci-access.diff
+++ linux-2.6-2.6.30/debian/patches/bugfix/x86/arch-kernel-cpu-amd-pci-access.diff
@@ -0,0 +1,13 @@
+diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
+index d869b3b..61a592e 100644
+--- a/arch/x86/kernel/cpu/amd.c
++++ b/arch/x86/kernel/cpu/amd.c
+@@ -356,7 +356,7 @@ static void __cpuinit early_init_amd(struct cpuinfo_x86 *c)
+ #endif
+ #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_PCI)
+ 	/* check CPU config space for extended APIC ID */
+-	if (c->x86 >= 0xf) {
++	if (cpu_has_apic && c->x86 >= 0xf) {
+ 		unsigned int val;
+ 		val = read_pci_config(0, 24, 0, 0x68);
+ 		if ((val & ((1 << 17) | (1 << 18))) == ((1 << 17) | (1 << 18)))
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/powerpc/mm-mol.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/powerpc/mm-mol.patch
@@ -0,0 +1,12 @@
+diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c
+index c6b1aa3..455fb38 100644
+--- a/arch/powerpc/kernel/ppc_ksyms.c
++++ b/arch/powerpc/kernel/ppc_ksyms.c
+@@ -189,6 +189,7 @@ EXPORT_SYMBOL(set_context);
+ extern long mol_trampoline;
+ EXPORT_SYMBOL(mol_trampoline); /* For MOL */
+ EXPORT_SYMBOL(flush_hash_pages); /* For MOL */
++EXPORT_SYMBOL(handle_mm_fault); /* For MOL */
+ #ifdef CONFIG_SMP
+ extern int mmu_hash_lock;
+ EXPORT_SYMBOL(mmu_hash_lock); /* For MOL */
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/powerpc/lpar-console.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/powerpc/lpar-console.patch
@@ -0,0 +1,39 @@
+diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c
+index 9235c46..8a20452 100644
+--- a/arch/powerpc/platforms/pseries/lpar.c
++++ b/arch/powerpc/platforms/pseries/lpar.c
+@@ -204,6 +204,7 @@ void __init find_udbg_vterm(void)
+ 	struct device_node *stdout_node;
+ 	const u32 *termno;
+ 	const char *name;
++	int add_console;
+ 
+ 	/* find the boot console from /chosen/stdout */
+ 	if (!of_chosen)
+@@ -219,6 +220,8 @@ void __init find_udbg_vterm(void)
+ 		printk(KERN_WARNING "stdout node missing 'name' property!\n");
+ 		goto out;
+ 	}
++	/* The user has requested a console so this is already set up. */
++	add_console = !strstr(cmd_line, "console=");
+ 
+ 	/* Check if it's a virtual terminal */
+ 	if (strncmp(name, "vty", 3) != 0)
+@@ -232,13 +235,15 @@ void __init find_udbg_vterm(void)
+ 		udbg_putc = udbg_putcLP;
+ 		udbg_getc = udbg_getcLP;
+ 		udbg_getc_poll = udbg_getc_pollLP;
+-		add_preferred_console("hvc", termno[0] & 0xff, NULL);
++		if (add_console)
++			add_preferred_console("hvc", termno[0] & 0xff, NULL);
+ 	} else if (of_device_is_compatible(stdout_node, "hvterm-protocol")) {
+ 		vtermno = termno[0];
+ 		udbg_putc = udbg_hvsi_putc;
+ 		udbg_getc = udbg_hvsi_getc;
+ 		udbg_getc_poll = udbg_hvsi_getc_poll;
+-		add_preferred_console("hvsi", termno[0] & 0xff, NULL);
++		if (add_console)
++			add_preferred_console("hvsi", termno[0] & 0xff, NULL);
+ 	}
+ out:
+ 	of_node_put(stdout_node);
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/sparc/drivers_net-broken.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/sparc/drivers_net-broken.patch
@@ -0,0 +1,13 @@
+diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
+index 8aa8dd0..f3b61ce 100644
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
+@@ -2484,7 +2484,7 @@ config MYRI10GE
+ 
+ config NETXEN_NIC
+ 	tristate "NetXen Multi port (1/10) Gigabit Ethernet NIC"
+-	depends on PCI
++	depends on PCI && (!SPARC32 || BROKEN)
+ 	help
+ 	  This enables the support for NetXen's Gigabit Ethernet card.
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/sparc/arch-zimage-target.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/sparc/arch-zimage-target.patch
@@ -0,0 +1,25 @@
+diff -urpN linux-source-2.6.29.orig/arch/sparc/boot/Makefile linux-source-2.6.29/arch/sparc/boot/Makefile
+--- linux-source-2.6.29.orig/arch/sparc/boot/Makefile	2009-03-23 17:12:14.000000000 -0600
++++ linux-source-2.6.29/arch/sparc/boot/Makefile	2009-05-15 16:14:09.000000000 -0600
+@@ -79,6 +79,9 @@ $(obj)/image: vmlinux FORCE
+ 	$(call if_changed,strip)
+ 	@echo '  kernel: $@ is ready'
+ 
++$(obj)/zImage: $(obj)/image
++	$(call if_changed,gzip)
++
+ $(obj)/tftpboot.img: vmlinux $(obj)/piggyback_64 System.map $(ROOT_IMG) FORCE
+ 	$(call if_changed,elftoaout)
+ 	$(call if_changed,piggy)
+diff -urpN linux-source-2.6.29.orig/arch/sparc/Makefile linux-source-2.6.29/arch/sparc/Makefile
+--- linux-source-2.6.29.orig/arch/sparc/Makefile	2009-03-23 17:12:14.000000000 -0600
++++ linux-source-2.6.29/arch/sparc/Makefile	2009-05-15 16:14:44.000000000 -0600
+@@ -91,6 +91,8 @@ endif
+ 
+ boot := arch/sparc/boot
+ 
++all: zImage
++
+ image zImage tftpboot.img vmlinux.aout: vmlinux
+ 	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/alpha-fix-percpu-build-breakage.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/alpha-fix-percpu-build-breakage.patch
@@ -0,0 +1,95 @@
+Message-Id: <200906280107.n5S17MVD011837@imap1.linux-foundation.org>
+To: mm-commits@vger.kernel.org
+Cc: tj@kernel.org, ink@jurassic.park.msu.ru, max@stro.at,
+	rth@twiddle.net
+From: akpm@linux-foundation.org
+Date: Sat, 27 Jun 2009 18:07:22 -0700
+Subject: alpha: fix percpu build breakage
+
+
+
+alpha percpu access requires custom SHIFT_PERCPU_PTR() definition for
+modules to work around addressing range limitation.  This is done via
+generating inline assembly using C preprocessing which forces the
+assembler to generate external reference.  This happens behind the
+compiler's back and makes the compiler think that static percpu variables
+in modules are unused.
+
+This used to be worked around by using __unused attribute for percpu
+variables which prevent the compiler from omitting the variable; however,
+recent declare/definition attribute unification change broke this as
+__used can't be used for declaration.  Also, in the process,
+PER_CPU_ATTRIBUTES definition in alpha percpu.h got broken.
+
+This patch adds PER_CPU_DEF_ATTRIBUTES which is only used for definitions
+and make alpha use it to add __used for percpu variables in modules.  This
+also fixes the PER_CPU_ATTRIBUTES double definition bug.
+
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Cc: maximilian attems <max@stro.at>
+Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
+Cc: Richard Henderson <rth@twiddle.net>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+---
+
+ arch/alpha/include/asm/percpu.h |    6 +++---
+ include/asm-generic/percpu.h    |    4 ++++
+ include/linux/percpu-defs.h     |    3 ++-
+ 3 files changed, 9 insertions(+), 4 deletions(-)
+
+diff -puN arch/alpha/include/asm/percpu.h~alpha-fix-percpu-build-breakage arch/alpha/include/asm/percpu.h
+--- a/arch/alpha/include/asm/percpu.h~alpha-fix-percpu-build-breakage
++++ a/arch/alpha/include/asm/percpu.h
+@@ -30,7 +30,7 @@ extern unsigned long __per_cpu_offset[NR
+ 
+ #ifndef MODULE
+ #define SHIFT_PERCPU_PTR(var, offset) RELOC_HIDE(&per_cpu_var(var), (offset))
+-#define PER_CPU_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
+ #else
+ /*
+  * To calculate addresses of locally defined variables, GCC uses 32-bit
+@@ -49,7 +49,7 @@ extern unsigned long __per_cpu_offset[NR
+ 		: "=&r"(__ptr), "=&r"(tmp_gp));		\
+ 	(typeof(&per_cpu_var(var)))(__ptr + (offset)); })
+ 
+-#define PER_CPU_ATTRIBUTES	__used
++#define PER_CPU_DEF_ATTRIBUTES	__used
+ 
+ #endif /* MODULE */
+ 
+@@ -71,7 +71,7 @@ extern unsigned long __per_cpu_offset[NR
+ #define __get_cpu_var(var)		per_cpu_var(var)
+ #define __raw_get_cpu_var(var)		per_cpu_var(var)
+ 
+-#define PER_CPU_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
+ 
+ #endif /* SMP */
+ 
+diff -puN include/asm-generic/percpu.h~alpha-fix-percpu-build-breakage include/asm-generic/percpu.h
+--- a/include/asm-generic/percpu.h~alpha-fix-percpu-build-breakage
++++ a/include/asm-generic/percpu.h
+@@ -97,4 +97,8 @@ extern void setup_per_cpu_areas(void);
+ #define PER_CPU_ATTRIBUTES
+ #endif
+ 
++#ifndef PER_CPU_DEF_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
++#endif
++
+ #endif /* _ASM_GENERIC_PERCPU_H_ */
+diff -puN include/linux/percpu-defs.h~alpha-fix-percpu-build-breakage include/linux/percpu-defs.h
+--- a/include/linux/percpu-defs.h~alpha-fix-percpu-build-breakage
++++ a/include/linux/percpu-defs.h
+@@ -24,7 +24,8 @@
+ 
+ #define DEFINE_PER_CPU_SECTION(type, name, section)			\
+ 	__attribute__((__section__(PER_CPU_BASE_SECTION section)))	\
+-	PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
++	PER_CPU_ATTRIBUTES PER_CPU_DEF_ATTRIBUTES			\
++	__typeof__(type) per_cpu__##name
+ 
+ /*
+  * Variant on the per-CPU variable declaration/definition theme used for
+_
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/block-fix-sg-sg_dxfer_to_from_dev-regression.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/block-fix-sg-sg_dxfer_to_from_dev-regression.patch
@@ -0,0 +1,143 @@
+From ecb554a846f8e9d2a58f6d6c118168a63ac065aa Mon Sep 17 00:00:00 2001
+From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
+Date: Thu, 9 Jul 2009 14:46:53 +0200
+Subject: block: fix sg SG_DXFER_TO_FROM_DEV regression
+
+From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
+
+commit ecb554a846f8e9d2a58f6d6c118168a63ac065aa upstream.
+
+I overlooked SG_DXFER_TO_FROM_DEV support when I converted sg to use
+the block layer mapping API (2.6.28).
+
+Douglas Gilbert explained SG_DXFER_TO_FROM_DEV:
+
+http://www.spinics.net/lists/linux-scsi/msg37135.html
+
+=
+The semantics of SG_DXFER_TO_FROM_DEV were:
+   - copy user space buffer to kernel (LLD) buffer
+   - do SCSI command which is assumed to be of the DATA_IN
+     (data from device) variety. This would overwrite
+     some or all of the kernel buffer
+   - copy kernel (LLD) buffer back to the user space.
+
+The idea was to detect short reads by filling the original
+user space buffer with some marker bytes ("0xec" it would
+seem in this report). The "resid" value is a better way
+of detecting short reads but that was only added this century
+and requires co-operation from the LLD.
+=
+
+This patch changes the block layer mapping API to support this
+semantics. This simply adds another field to struct rq_map_data and
+enables __bio_copy_iov() to copy data from user space even with READ
+requests.
+
+It's better to add the flags field and kills null_mapped and the new
+from_user fields in struct rq_map_data but that approach makes it
+difficult to send this patch to stable trees because st and osst
+drivers use struct rq_map_data (they were converted to use the block
+layer in 2.6.29 and 2.6.30). Well, I should clean up the block layer
+mapping API.
+
+zhou sf reported this regiression and tested this patch:
+
+http://www.spinics.net/lists/linux-scsi/msg37128.html
+http://www.spinics.net/lists/linux-scsi/msg37168.html
+
+Reported-by: zhou sf <sxzzsf@gmail.com>
+Tested-by: zhou sf <sxzzsf@gmail.com>
+Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
+Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/scsi/sg.c      |    4 ++++
+ fs/bio.c               |   22 ++++++++++++----------
+ include/linux/blkdev.h |    1 +
+ 3 files changed, 17 insertions(+), 10 deletions(-)
+
+--- a/drivers/scsi/sg.c
++++ b/drivers/scsi/sg.c
+@@ -1656,6 +1656,10 @@ static int sg_start_req(Sg_request *srp,
+ 		md->nr_entries = req_schp->k_use_sg;
+ 		md->offset = 0;
+ 		md->null_mapped = hp->dxferp ? 0 : 1;
++		if (dxfer_dir == SG_DXFER_TO_FROM_DEV)
++			md->from_user = 1;
++		else
++			md->from_user = 0;
+ 	}
+ 
+ 	if (iov_count) {
+--- a/fs/bio.c
++++ b/fs/bio.c
+@@ -706,14 +706,13 @@ static struct bio_map_data *bio_alloc_ma
+ }
+ 
+ static int __bio_copy_iov(struct bio *bio, struct bio_vec *iovecs,
+-			  struct sg_iovec *iov, int iov_count, int uncopy,
+-			  int do_free_page)
++			  struct sg_iovec *iov, int iov_count,
++			  int to_user, int from_user, int do_free_page)
+ {
+ 	int ret = 0, i;
+ 	struct bio_vec *bvec;
+ 	int iov_idx = 0;
+ 	unsigned int iov_off = 0;
+-	int read = bio_data_dir(bio) == READ;
+ 
+ 	__bio_for_each_segment(bvec, bio, i, 0) {
+ 		char *bv_addr = page_address(bvec->bv_page);
+@@ -728,13 +727,14 @@ static int __bio_copy_iov(struct bio *bi
+ 			iov_addr = iov[iov_idx].iov_base + iov_off;
+ 
+ 			if (!ret) {
+-				if (!read && !uncopy)
+-					ret = copy_from_user(bv_addr, iov_addr,
+-							     bytes);
+-				if (read && uncopy)
++				if (to_user)
+ 					ret = copy_to_user(iov_addr, bv_addr,
+ 							   bytes);
+ 
++				if (from_user)
++					ret = copy_from_user(bv_addr, iov_addr,
++							     bytes);
++
+ 				if (ret)
+ 					ret = -EFAULT;
+ 			}
+@@ -771,7 +771,8 @@ int bio_uncopy_user(struct bio *bio)
+ 
+ 	if (!bio_flagged(bio, BIO_NULL_MAPPED))
+ 		ret = __bio_copy_iov(bio, bmd->iovecs, bmd->sgvecs,
+-				     bmd->nr_sgvecs, 1, bmd->is_our_pages);
++				     bmd->nr_sgvecs, bio_data_dir(bio) == READ,
++				     0, bmd->is_our_pages);
+ 	bio_free_map_data(bmd);
+ 	bio_put(bio);
+ 	return ret;
+@@ -876,8 +877,9 @@ struct bio *bio_copy_user_iov(struct req
+ 	/*
+ 	 * success
+ 	 */
+-	if (!write_to_vm && (!map_data || !map_data->null_mapped)) {
+-		ret = __bio_copy_iov(bio, bio->bi_io_vec, iov, iov_count, 0, 0);
++	if ((!write_to_vm && (!map_data || !map_data->null_mapped)) ||
++	    (map_data && map_data->from_user)) {
++		ret = __bio_copy_iov(bio, bio->bi_io_vec, iov, iov_count, 0, 1, 0);
+ 		if (ret)
+ 			goto cleanup;
+ 	}
+--- a/include/linux/blkdev.h
++++ b/include/linux/blkdev.h
+@@ -723,6 +723,7 @@ struct rq_map_data {
+ 	int nr_entries;
+ 	unsigned long offset;
+ 	int null_mapped;
++	int from_user;
+ };
+ 
+ struct req_iterator {
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/personality-fix-PER_CLEAR_ON_SETID.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/personality-fix-PER_CLEAR_ON_SETID.patch
@@ -0,0 +1,52 @@
+commit f9fabcb58a6d26d6efde842d1703ac7cfa9427b6
+Author: Julien Tinnes <jt@cr0.org>
+Date:   Fri Jun 26 20:27:40 2009 +0200
+
+    personality: fix PER_CLEAR_ON_SETID
+    
+    We have found that the current PER_CLEAR_ON_SETID mask on Linux doesn't
+    include neither ADDR_COMPAT_LAYOUT, nor MMAP_PAGE_ZERO.
+    
+    The current mask is READ_IMPLIES_EXEC|ADDR_NO_RANDOMIZE.
+    
+    We believe it is important to add MMAP_PAGE_ZERO, because by using this
+    personality it is possible to have the first page mapped inside a
+    process running as setuid root.  This could be used in those scenarios:
+    
+     - Exploiting a NULL pointer dereference issue in a setuid root binary
+     - Bypassing the mmap_min_addr restrictions of the Linux kernel: by
+       running a setuid binary that would drop privileges before giving us
+       control back (for instance by loading a user-supplied library), we
+       could get the first page mapped in a process we control.  By further
+       using mremap and mprotect on this mapping, we can then completely
+       bypass the mmap_min_addr restrictions.
+    
+    Less importantly, we believe ADDR_COMPAT_LAYOUT should also be added
+    since on x86 32bits it will in practice disable most of the address
+    space layout randomization (only the stack will remain randomized).
+    
+    Signed-off-by: Julien Tinnes <jt@cr0.org>
+    Signed-off-by: Tavis Ormandy <taviso@sdf.lonestar.org>
+    Cc: stable@kernel.org
+    Acked-by: Christoph Hellwig <hch@infradead.org>
+    Acked-by: Kees Cook <kees@ubuntu.com>
+    Acked-by: Eugene Teo <eugene@redhat.com>
+    [ Shortened lines and fixed whitespace as per Christophs' suggestion ]
+    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+
+diff --git a/include/linux/personality.h b/include/linux/personality.h
+index a84e9ff..1261208 100644
+--- a/include/linux/personality.h
++++ b/include/linux/personality.h
+@@ -40,7 +40,10 @@ enum {
+  * Security-relevant compatibility flags that must be
+  * cleared upon setuid or setgid exec:
+  */
+-#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC|ADDR_NO_RANDOMIZE)
++#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC  | \
++			    ADDR_NO_RANDOMIZE  | \
++			    ADDR_COMPAT_LAYOUT | \
++			    MMAP_PAGE_ZERO)
+ 
+ /*
+  * Personality types.
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/wireless-regulatory-default-EU.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/wireless-regulatory-default-EU.patch
@@ -0,0 +1,13 @@
+diff --git a/net/wireless/reg.c b/net/wireless/reg.c
+index 855bff4..5969480 100644
+--- a/net/wireless/reg.c
++++ b/net/wireless/reg.c
+@@ -29,7 +29,7 @@
+ #include <net/wireless.h>
+ #include "core.h"
+ 
+-static char *ieee80211_regdom = "US";
++static char *ieee80211_regdom = "EU";
+ module_param(ieee80211_regdom, charp, 0444);
+ MODULE_PARM_DESC(ieee80211_regdom, "IEEE 802.11 regulatory domain code");
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/0001-xfs-fix-freeing-memory-in-xfs_getbmap.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/0001-xfs-fix-freeing-memory-in-xfs_getbmap.patch
@@ -0,0 +1,32 @@
+From 7747a0b0af5976ba3828796b4f7a7adc3bb76dbd Mon Sep 17 00:00:00 2001
+From: Felix Blyakher <felixb@sgi.com>
+Date: Thu, 11 Jun 2009 17:07:28 -0500
+Subject: [PATCH] xfs: fix freeing memory in xfs_getbmap()
+
+Regression from commit 28e211700a81b0a934b6c7a4b8e7dda843634d2f.
+Need to free temporary buffer allocated in xfs_getbmap().
+
+Signed-off-by: Felix Blyakher <felixb@sgi.com>
+Signed-off-by: Hedi Berriche <hedi@sgi.com>
+Reported-by: Justin Piszcz <jpiszcz@lucidpixels.com>
+Reviewed-by: Eric Sandeen <sandeen@sandeen.net>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+---
+ fs/xfs/xfs_bmap.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
+index 4b0f6ef..7928b99 100644
+--- a/fs/xfs/xfs_bmap.c
++++ b/fs/xfs/xfs_bmap.c
+@@ -6086,6 +6086,7 @@ xfs_getbmap(
+ 			break;
+ 	}
+ 
++	kmem_free(out);
+ 	return error;
+ }
+ 
+-- 
+1.6.3.1
+
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/tun-tap-fix-crash-on-open-and-poll.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/tun-tap-fix-crash-on-open-and-poll.patch
@@ -0,0 +1,41 @@
+commit 3c8a9c63d5fd738c261bd0ceece04d9c8357ca13
+Author: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
+Date:   Sun Jul 5 19:48:35 2009 +0000
+
+    tun/tap: Fix crashes if open() /dev/net/tun and then poll() it.
+    
+    Fix NULL pointer dereference in tun_chr_pool() introduced by commit
+    33dccbb050bbe35b88ca8cf1228dcf3e4d4b3554 ("tun: Limit amount of queued
+    packets per device") and triggered by this code:
+    
+    	int fd;
+    	struct pollfd pfd;
+    	fd = open("/dev/net/tun", O_RDWR);
+    	pfd.fd = fd;
+    	pfd.events = POLLIN | POLLOUT;
+    	poll(&pfd, 1, 0);
+    
+    Reported-by: Eugene Kapun <abacabadabacaba@gmail.com>
+    Signed-off-by: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
+    Signed-off-by: David S. Miller <davem@davemloft.net>
+
+diff --git a/drivers/net/tun.c b/drivers/net/tun.c
+index b393536..027f7ab 100644
+--- a/drivers/net/tun.c
++++ b/drivers/net/tun.c
+@@ -486,12 +486,14 @@ static unsigned int tun_chr_poll(struct file *file, poll_table * wait)
+ {
+ 	struct tun_file *tfile = file->private_data;
+ 	struct tun_struct *tun = __tun_get(tfile);
+-	struct sock *sk = tun->sk;
++	struct sock *sk;
+ 	unsigned int mask = 0;
+ 
+ 	if (!tun)
+ 		return POLLERR;
+ 
++	sk = tun->sk;
++
+ 	DBG(KERN_INFO "%s: tun_chr_poll\n", tun->dev->name);
+ 
+ 	poll_wait(file, &tun->socket.wait, wait);
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/add-fno-delete-null-pointer-checks-to-cflags.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/add-fno-delete-null-pointer-checks-to-cflags.patch
@@ -0,0 +1,57 @@
+commit a3ca86aea507904148870946d599e07a340b39bf
+Author: Eugene Teo <eteo@redhat.com>
+Date:   Wed Jul 15 14:59:10 2009 +0800
+
+    Add '-fno-delete-null-pointer-checks' to gcc CFLAGS
+    
+    Turning on this flag could prevent the compiler from optimising away
+    some "useless" checks for null pointers.  Such bugs can sometimes become
+    exploitable at compile time because of the -O2 optimisation.
+    
+    See http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Optimize-Options.html
+    
+    An example that clearly shows this 'problem' is commit 6bf67672.
+    
+     static void __devexit agnx_pci_remove(struct pci_dev *pdev)
+     {
+         struct ieee80211_hw *dev = pci_get_drvdata(pdev);
+    -    struct agnx_priv *priv = dev->priv;
+    +    struct agnx_priv *priv;
+         AGNX_TRACE;
+    
+         if (!dev)
+             return;
+    +    priv = dev->priv;
+    
+    By reverting this patch, and compile it with and without
+    -fno-delete-null-pointer-checks flag, we can see that the check for dev
+    is compiled away.
+    
+        call    printk  #
+    -   testq   %r12, %r12  # dev
+    -   je  .L94    #,
+        movq    %r12, %rdi  # dev,
+    
+    Clearly the 'fix' is to stop using dev before it is tested, but building
+    with -fno-delete-null-pointer-checks flag at least makes it harder to
+    abuse.
+    
+    Signed-off-by: Eugene Teo <eugeneteo@kernel.sg>
+    Acked-by: Eric Paris <eparis@redhat.com>
+    Acked-by: Wang Cong <amwang@redhat.com>
+    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+
+Backported to Debian's 2.6.30 by dann frazier <dannf@debian.org>
+
+--- linux-source-2.6.30.orig/Makefile	2009-07-07 09:13:25.000000000 -0600
++++ linux-source-2.6.30/Makefile	2009-07-16 23:57:06.000000000 -0600
+@@ -352,7 +352,8 @@
+ 
+ KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
+ 		   -fno-strict-aliasing -fno-common \
+-		   -Werror-implicit-function-declaration
++		   -Werror-implicit-function-declaration \
++		   -fno-delete-null-pointer-checks
+ KBUILD_AFLAGS   := -D__ASSEMBLY__
+ 
+ # Read KERNELRELEASE from include/config/kernel.release (if it exists)
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/sched_rt-fix-overload-bug-on-rt-group-scheduling.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/sched_rt-fix-overload-bug-on-rt-group-scheduling.patch
@@ -0,0 +1,96 @@
+From a1ba4d8ba9f06a397e97cbd67a93ee306860b40a Mon Sep 17 00:00:00 2001
+From: Peter Zijlstra <peterz@infradead.org>
+Date: Wed, 1 Apr 2009 18:40:15 +0200
+Subject: sched_rt: Fix overload bug on rt group scheduling
+
+From: Peter Zijlstra <peterz@infradead.org>
+
+commit a1ba4d8ba9f06a397e97cbd67a93ee306860b40a upstream.
+
+Fixes an easily triggerable BUG() when setting process affinities.
+
+Make sure to count the number of migratable tasks in the same place:
+the root rt_rq. Otherwise the number doesn't make sense and we'll hit
+the BUG in set_cpus_allowed_rt().
+
+Also, make sure we only count tasks, not groups (this is probably
+already taken care of by the fact that rt_se->nr_cpus_allowed will be 0
+for groups, but be more explicit)
+
+Tested-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
+Acked-by: Gregory Haskins <ghaskins@novell.com>
+LKML-Reference: <1247067476.9777.57.camel@twins>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/sched.c    |    1 +
+ kernel/sched_rt.c |   18 +++++++++++++++++-
+ 2 files changed, 18 insertions(+), 1 deletion(-)
+
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -497,6 +497,7 @@ struct rt_rq {
+ #endif
+ #ifdef CONFIG_SMP
+ 	unsigned long rt_nr_migratory;
++	unsigned long rt_nr_total;
+ 	int overloaded;
+ 	struct plist_head pushable_tasks;
+ #endif
+--- a/kernel/sched_rt.c
++++ b/kernel/sched_rt.c
+@@ -10,6 +10,8 @@ static inline struct task_struct *rt_tas
+ 
+ #ifdef CONFIG_RT_GROUP_SCHED
+ 
++#define rt_entity_is_task(rt_se) (!(rt_se)->my_q)
++
+ static inline struct rq *rq_of_rt_rq(struct rt_rq *rt_rq)
+ {
+ 	return rt_rq->rq;
+@@ -22,6 +24,8 @@ static inline struct rt_rq *rt_rq_of_se(
+ 
+ #else /* CONFIG_RT_GROUP_SCHED */
+ 
++#define rt_entity_is_task(rt_se) (1)
++
+ static inline struct rq *rq_of_rt_rq(struct rt_rq *rt_rq)
+ {
+ 	return container_of(rt_rq, struct rq, rt);
+@@ -73,7 +77,7 @@ static inline void rt_clear_overload(str
+ 
+ static void update_rt_migration(struct rt_rq *rt_rq)
+ {
+-	if (rt_rq->rt_nr_migratory && (rt_rq->rt_nr_running > 1)) {
++	if (rt_rq->rt_nr_migratory && rt_rq->rt_nr_total > 1) {
+ 		if (!rt_rq->overloaded) {
+ 			rt_set_overload(rq_of_rt_rq(rt_rq));
+ 			rt_rq->overloaded = 1;
+@@ -86,6 +90,12 @@ static void update_rt_migration(struct r
+ 
+ static void inc_rt_migration(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq)
+ {
++	if (!rt_entity_is_task(rt_se))
++		return;
++
++	rt_rq = &rq_of_rt_rq(rt_rq)->rt;
++
++	rt_rq->rt_nr_total++;
+ 	if (rt_se->nr_cpus_allowed > 1)
+ 		rt_rq->rt_nr_migratory++;
+ 
+@@ -94,6 +104,12 @@ static void inc_rt_migration(struct sche
+ 
+ static void dec_rt_migration(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq)
+ {
++	if (!rt_entity_is_task(rt_se))
++		return;
++
++	rt_rq = &rq_of_rt_rq(rt_rq)->rt;
++
++	rt_rq->rt_nr_total--;
+ 	if (rt_se->nr_cpus_allowed > 1)
+ 		rt_rq->rt_nr_migratory--;
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/stable/2.6.30.1.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/stable/2.6.30.1.patch
@@ -0,0 +1,5247 @@
+diff --git a/Documentation/sysctl/vm.txt b/Documentation/sysctl/vm.txt
+index c302ddf..5236573 100644
+--- a/Documentation/sysctl/vm.txt
++++ b/Documentation/sysctl/vm.txt
+@@ -314,10 +314,14 @@ min_unmapped_ratio:
+ 
+ This is available only on NUMA kernels.
+ 
+-A percentage of the total pages in each zone.  Zone reclaim will only
+-occur if more than this percentage of pages are file backed and unmapped.
+-This is to insure that a minimal amount of local pages is still available for
+-file I/O even if the node is overallocated.
++This is a percentage of the total pages in each zone. Zone reclaim will
++only occur if more than this percentage of pages are in a state that
++zone_reclaim_mode allows to be reclaimed.
++
++If zone_reclaim_mode has the value 4 OR'd, then the percentage is compared
++against all file-backed unmapped pages including swapcache pages and tmpfs
++files. Otherwise, only unmapped pages backed by normal files but not tmpfs
++files and similar are considered.
+ 
+ The default is 1 percent.
+ 
+diff --git a/Makefile b/Makefile
+index 03373bb..f8a0893 100644
+diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
+index bb7d695..1a711ea 100644
+--- a/arch/arm/include/asm/cacheflush.h
++++ b/arch/arm/include/asm/cacheflush.h
+@@ -429,6 +429,14 @@ static inline void flush_anon_page(struct vm_area_struct *vma,
+ 		__flush_anon_page(vma, page, vmaddr);
+ }
+ 
++#define ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE
++static inline void flush_kernel_dcache_page(struct page *page)
++{
++	/* highmem pages are always flushed upon kunmap already */
++	if ((cache_is_vivt() || cache_is_vipt_aliasing()) && !PageHighMem(page))
++		__cpuc_flush_dcache_page(page_address(page));
++}
++
+ #define flush_dcache_mmap_lock(mapping) \
+ 	spin_lock_irq(&(mapping)->tree_lock)
+ #define flush_dcache_mmap_unlock(mapping) \
+diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S
+index caba996..eb0566e 100644
+--- a/arch/x86/crypto/aesni-intel_asm.S
++++ b/arch/x86/crypto/aesni-intel_asm.S
+@@ -845,7 +845,7 @@ ENTRY(aesni_cbc_enc)
+  */
+ ENTRY(aesni_cbc_dec)
+ 	cmp $16, LEN
+-	jb .Lcbc_dec_ret
++	jb .Lcbc_dec_just_ret
+ 	mov 480(KEYP), KLEN
+ 	add $240, KEYP
+ 	movups (IVP), IV
+@@ -891,6 +891,7 @@ ENTRY(aesni_cbc_dec)
+ 	add $16, OUTP
+ 	cmp $16, LEN
+ 	jge .Lcbc_dec_loop1
+-	movups IV, (IVP)
+ .Lcbc_dec_ret:
++	movups IV, (IVP)
++.Lcbc_dec_just_ret:
+ 	ret
+diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
+index 42f2f83..9b2c049 100644
+--- a/arch/x86/include/asm/apic.h
++++ b/arch/x86/include/asm/apic.h
+@@ -410,7 +410,7 @@ static inline unsigned default_get_apic_id(unsigned long x)
+ {
+ 	unsigned int ver = GET_APIC_VERSION(apic_read(APIC_LVR));
+ 
+-	if (APIC_XAPIC(ver))
++	if (APIC_XAPIC(ver) || boot_cpu_has(X86_FEATURE_EXTD_APICID))
+ 		return (x >> 24) & 0xFF;
+ 	else
+ 		return (x >> 24) & 0x0F;
+diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
+index bb83b1c..78dee4f 100644
+--- a/arch/x86/include/asm/cpufeature.h
++++ b/arch/x86/include/asm/cpufeature.h
+@@ -94,6 +94,7 @@
+ #define X86_FEATURE_TSC_RELIABLE (3*32+23) /* TSC is known to be reliable */
+ #define X86_FEATURE_NONSTOP_TSC	(3*32+24) /* TSC does not stop in C states */
+ #define X86_FEATURE_CLFLUSH_MONITOR (3*32+25) /* "" clflush reqd with monitor */
++#define X86_FEATURE_EXTD_APICID	(3*32+26) /* has extended APICID (8 bits) */
+ 
+ /* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
+ #define X86_FEATURE_XMM3	(4*32+ 0) /* "pni" SSE-3 */
+diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
+index f0faf58..a93d1cc 100644
+--- a/arch/x86/include/asm/kvm_host.h
++++ b/arch/x86/include/asm/kvm_host.h
+@@ -371,6 +371,8 @@ struct kvm_vcpu_arch {
+ 	unsigned long dr6;
+ 	unsigned long dr7;
+ 	unsigned long eff_db[KVM_NR_DB_REGS];
++
++	u32 exit_reason;
+ };
+ 
+ struct kvm_mem_alias {
+diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h
+index 4f8c199..5c70378 100644
+--- a/arch/x86/include/asm/mce.h
++++ b/arch/x86/include/asm/mce.h
+@@ -153,5 +153,7 @@ extern void mcheck_init(struct cpuinfo_x86 *c);
+ 
+ extern void (*mce_threshold_vector)(void);
+ 
++extern void (*machine_check_vector)(struct pt_regs *, long error_code);
++
+ #endif /* __KERNEL__ */
+ #endif /* _ASM_X86_MCE_H */
+diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h
+index 9b0e61b..bddd44f 100644
+--- a/arch/x86/include/asm/uv/uv_bau.h
++++ b/arch/x86/include/asm/uv/uv_bau.h
+@@ -37,7 +37,7 @@
+ #define UV_CPUS_PER_ACT_STATUS		32
+ #define UV_ACT_STATUS_MASK		0x3
+ #define UV_ACT_STATUS_SIZE		2
+-#define UV_ACTIVATION_DESCRIPTOR_SIZE	32
++#define UV_ADP_SIZE			32
+ #define UV_DISTRIBUTION_SIZE		256
+ #define UV_SW_ACK_NPENDING		8
+ #define UV_NET_ENDPOINT_INTD		0x38
+diff --git a/arch/x86/include/asm/uv/uv_hub.h b/arch/x86/include/asm/uv/uv_hub.h
+index d3a98ea..341070f 100644
+--- a/arch/x86/include/asm/uv/uv_hub.h
++++ b/arch/x86/include/asm/uv/uv_hub.h
+@@ -133,6 +133,7 @@ struct uv_scir_s {
+ struct uv_hub_info_s {
+ 	unsigned long		global_mmr_base;
+ 	unsigned long		gpa_mask;
++	unsigned int		gnode_extra;
+ 	unsigned long		gnode_upper;
+ 	unsigned long		lowmem_remap_top;
+ 	unsigned long		lowmem_remap_base;
+@@ -159,7 +160,8 @@ DECLARE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
+  * 		p -  PNODE (local part of nsids, right shifted 1)
+  */
+ #define UV_NASID_TO_PNODE(n)		(((n) >> 1) & uv_hub_info->pnode_mask)
+-#define UV_PNODE_TO_NASID(p)		(((p) << 1) | uv_hub_info->gnode_upper)
++#define UV_PNODE_TO_GNODE(p)		((p) |uv_hub_info->gnode_extra)
++#define UV_PNODE_TO_NASID(p)		(UV_PNODE_TO_GNODE(p) << 1)
+ 
+ #define UV_LOCAL_MMR_BASE		0xf4000000UL
+ #define UV_GLOBAL_MMR32_BASE		0xf8000000UL
+@@ -173,7 +175,7 @@ DECLARE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
+ #define UV_GLOBAL_MMR32_PNODE_BITS(p)	((p) << (UV_GLOBAL_MMR32_PNODE_SHIFT))
+ 
+ #define UV_GLOBAL_MMR64_PNODE_BITS(p)					\
+-	((unsigned long)(p) << UV_GLOBAL_MMR64_PNODE_SHIFT)
++	((unsigned long)(UV_PNODE_TO_GNODE(p)) << UV_GLOBAL_MMR64_PNODE_SHIFT)
+ 
+ #define UV_APIC_PNODE_SHIFT	6
+ 
+diff --git a/arch/x86/include/asm/vmx.h b/arch/x86/include/asm/vmx.h
+index 498f944..11be5ad 100644
+--- a/arch/x86/include/asm/vmx.h
++++ b/arch/x86/include/asm/vmx.h
+@@ -247,6 +247,7 @@ enum vmcs_field {
+ #define EXIT_REASON_MSR_READ            31
+ #define EXIT_REASON_MSR_WRITE           32
+ #define EXIT_REASON_MWAIT_INSTRUCTION   36
++#define EXIT_REASON_MCE_DURING_VMENTRY	 41
+ #define EXIT_REASON_TPR_BELOW_THRESHOLD 43
+ #define EXIT_REASON_APIC_ACCESS         44
+ #define EXIT_REASON_EPT_VIOLATION       48
+diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
+index 2bda693..39f2af4 100644
+--- a/arch/x86/kernel/apic/x2apic_uv_x.c
++++ b/arch/x86/kernel/apic/x2apic_uv_x.c
+@@ -562,7 +562,7 @@ void __init uv_system_init(void)
+ 	union uvh_node_id_u node_id;
+ 	unsigned long gnode_upper, lowmem_redir_base, lowmem_redir_size;
+ 	int bytes, nid, cpu, lcpu, pnode, blade, i, j, m_val, n_val;
+-	int max_pnode = 0;
++	int gnode_extra, max_pnode = 0;
+ 	unsigned long mmr_base, present, paddr;
+ 	unsigned short pnode_mask;
+ 
+@@ -574,6 +574,13 @@ void __init uv_system_init(void)
+ 	mmr_base =
+ 	    uv_read_local_mmr(UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR) &
+ 	    ~UV_MMR_ENABLE;
++	pnode_mask = (1 << n_val) - 1;
++	node_id.v = uv_read_local_mmr(UVH_NODE_ID);
++	gnode_extra = (node_id.s.node_id & ~((1 << n_val) - 1)) >> 1;
++	gnode_upper = ((unsigned long)gnode_extra  << m_val);
++	printk(KERN_DEBUG "UV: N %d, M %d, gnode_upper 0x%lx, gnode_extra 0x%x\n",
++			n_val, m_val, gnode_upper, gnode_extra);
++
+ 	printk(KERN_DEBUG "UV: global MMR base 0x%lx\n", mmr_base);
+ 
+ 	for(i = 0; i < UVH_NODE_PRESENT_TABLE_DEPTH; i++)
+@@ -607,11 +614,6 @@ void __init uv_system_init(void)
+ 		}
+ 	}
+ 
+-	pnode_mask = (1 << n_val) - 1;
+-	node_id.v = uv_read_local_mmr(UVH_NODE_ID);
+-	gnode_upper = (((unsigned long)node_id.s.node_id) &
+-		       ~((1 << n_val) - 1)) << m_val;
+-
+ 	uv_bios_init();
+ 	uv_bios_get_sn_info(0, &uv_type, &sn_partition_id,
+ 			    &sn_coherency_id, &sn_region_size);
+@@ -634,6 +636,7 @@ void __init uv_system_init(void)
+ 		uv_cpu_hub_info(cpu)->pnode_mask = pnode_mask;
+ 		uv_cpu_hub_info(cpu)->gpa_mask = (1 << (m_val + n_val)) - 1;
+ 		uv_cpu_hub_info(cpu)->gnode_upper = gnode_upper;
++		uv_cpu_hub_info(cpu)->gnode_extra = gnode_extra;
+ 		uv_cpu_hub_info(cpu)->global_mmr_base = mmr_base;
+ 		uv_cpu_hub_info(cpu)->coherency_domain_number = sn_coherency_id;
+ 		uv_cpu_hub_info(cpu)->scir.offset = SCIR_LOCAL_MMR_BASE + lcpu;
+diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
+index 7e4a459..d869b3b 100644
+--- a/arch/x86/kernel/cpu/amd.c
++++ b/arch/x86/kernel/cpu/amd.c
+@@ -6,6 +6,7 @@
+ #include <asm/processor.h>
+ #include <asm/apic.h>
+ #include <asm/cpu.h>
++#include <asm/pci-direct.h>
+ 
+ #ifdef CONFIG_X86_64
+ # include <asm/numa_64.h>
+@@ -257,13 +258,15 @@ static void __cpuinit amd_detect_cmp(struct cpuinfo_x86 *c)
+ {
+ #ifdef CONFIG_X86_HT
+ 	unsigned bits;
++	int cpu = smp_processor_id();
+ 
+ 	bits = c->x86_coreid_bits;
+-
+ 	/* Low order bits define the core id (index of core in socket) */
+ 	c->cpu_core_id = c->initial_apicid & ((1 << bits)-1);
+ 	/* Convert the initial APIC ID into the socket ID */
+ 	c->phys_proc_id = c->initial_apicid >> bits;
++	/* use socket ID also for last level cache */
++	per_cpu(cpu_llc_id, cpu) = c->phys_proc_id;
+ #endif
+ }
+ 
+@@ -351,6 +354,15 @@ static void __cpuinit early_init_amd(struct cpuinfo_x86 *c)
+ 		    (c->x86_model == 8 && c->x86_mask >= 8))
+ 			set_cpu_cap(c, X86_FEATURE_K6_MTRR);
+ #endif
++#if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_PCI)
++	/* check CPU config space for extended APIC ID */
++	if (c->x86 >= 0xf) {
++		unsigned int val;
++		val = read_pci_config(0, 24, 0, 0x68);
++		if ((val & ((1 << 17) | (1 << 18))) == ((1 << 17) | (1 << 18)))
++			set_cpu_cap(c, X86_FEATURE_EXTD_APICID);
++	}
++#endif
+ }
+ 
+ static void __cpuinit init_amd(struct cpuinfo_x86 *c)
+diff --git a/arch/x86/kernel/cpu/mcheck/mce_32.c b/arch/x86/kernel/cpu/mcheck/mce_32.c
+index 3552119..07b523c 100644
+--- a/arch/x86/kernel/cpu/mcheck/mce_32.c
++++ b/arch/x86/kernel/cpu/mcheck/mce_32.c
+@@ -29,6 +29,7 @@ static void unexpected_machine_check(struct pt_regs *regs, long error_code)
+ 
+ /* Call the installed machine check handler for this CPU setup. */
+ void (*machine_check_vector)(struct pt_regs *, long error_code) = unexpected_machine_check;
++EXPORT_SYMBOL_GPL(machine_check_vector);
+ 
+ /* This has to be run for each processor */
+ void mcheck_init(struct cpuinfo_x86 *c)
+diff --git a/arch/x86/kernel/cpu/mcheck/mce_64.c b/arch/x86/kernel/cpu/mcheck/mce_64.c
+index 09dd1d4..289cc48 100644
+--- a/arch/x86/kernel/cpu/mcheck/mce_64.c
++++ b/arch/x86/kernel/cpu/mcheck/mce_64.c
+@@ -420,6 +420,7 @@ void do_machine_check(struct pt_regs * regs, long error_code)
+  out2:
+ 	atomic_dec(&mce_entry);
+ }
++EXPORT_SYMBOL_GPL(do_machine_check);
+ 
+ #ifdef CONFIG_X86_MCE_INTEL
+ /***
+diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
+index 81408b9..dedc2bd 100644
+--- a/arch/x86/kernel/hpet.c
++++ b/arch/x86/kernel/hpet.c
+@@ -510,7 +510,8 @@ static int hpet_setup_irq(struct hpet_dev *dev)
+ {
+ 
+ 	if (request_irq(dev->irq, hpet_interrupt_handler,
+-			IRQF_DISABLED|IRQF_NOBALANCING, dev->name, dev))
++			IRQF_TIMER | IRQF_DISABLED | IRQF_NOBALANCING,
++			dev->name, dev))
+ 		return -1;
+ 
+ 	disable_irq(dev->irq);
+diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c
+index b284b58..3065b40 100644
+--- a/arch/x86/kernel/pci-gart_64.c
++++ b/arch/x86/kernel/pci-gart_64.c
+@@ -688,8 +688,6 @@ static __init int init_k8_gatt(struct agp_kern_info *info)
+ 
+ 	agp_gatt_table = gatt;
+ 
+-	enable_gart_translations();
+-
+ 	error = sysdev_class_register(&gart_sysdev_class);
+ 	if (!error)
+ 		error = sysdev_register(&device_gart);
+@@ -847,6 +845,14 @@ void __init gart_iommu_init(void)
+ 	wbinvd();
+ 
+ 	/*
++	 * Now all caches are flushed and we can safely enable
++	 * GART hardware.  Doing it early leaves the possibility
++	 * of stale cache entries that can lead to GART PTE
++	 * errors.
++	 */
++	enable_gart_translations();
++
++	/*
+ 	 * Try to workaround a bug (thanks to BenH):
+ 	 * Set unmapped entries to a scratch page instead of 0.
+ 	 * Any prefetches that hit unmapped entries won't get an bus abort
+diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
+index 667188e..d2d1ce8 100644
+--- a/arch/x86/kernel/reboot.c
++++ b/arch/x86/kernel/reboot.c
+@@ -192,6 +192,15 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {
+ 			DMI_MATCH(DMI_BOARD_NAME, "0KP561"),
+ 		},
+ 	},
++	{   /* Handle problems with rebooting on Dell Optiplex 360 with 0T656F */
++		.callback = set_bios_reboot,
++		.ident = "Dell OptiPlex 360",
++		.matches = {
++			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
++			DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 360"),
++			DMI_MATCH(DMI_BOARD_NAME, "0T656F"),
++		},
++	},
+ 	{	/* Handle problems with rebooting on Dell 2400's */
+ 		.callback = set_bios_reboot,
+ 		.ident = "Dell PowerEdge 2400",
+diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
+index b415843..0acc6a7 100644
+--- a/arch/x86/kernel/setup.c
++++ b/arch/x86/kernel/setup.c
+@@ -293,15 +293,13 @@ static void __init reserve_brk(void)
+ 
+ #ifdef CONFIG_BLK_DEV_INITRD
+ 
+-#ifdef CONFIG_X86_32
+-
+ #define MAX_MAP_CHUNK	(NR_FIX_BTMAPS << PAGE_SHIFT)
+ static void __init relocate_initrd(void)
+ {
+ 
+ 	u64 ramdisk_image = boot_params.hdr.ramdisk_image;
+ 	u64 ramdisk_size  = boot_params.hdr.ramdisk_size;
+-	u64 end_of_lowmem = max_low_pfn << PAGE_SHIFT;
++	u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;
+ 	u64 ramdisk_here;
+ 	unsigned long slop, clen, mapaddr;
+ 	char *p, *q;
+@@ -357,14 +355,13 @@ static void __init relocate_initrd(void)
+ 		ramdisk_image, ramdisk_image + ramdisk_size - 1,
+ 		ramdisk_here, ramdisk_here + ramdisk_size - 1);
+ }
+-#endif
+ 
+ static void __init reserve_initrd(void)
+ {
+ 	u64 ramdisk_image = boot_params.hdr.ramdisk_image;
+ 	u64 ramdisk_size  = boot_params.hdr.ramdisk_size;
+ 	u64 ramdisk_end   = ramdisk_image + ramdisk_size;
+-	u64 end_of_lowmem = max_low_pfn << PAGE_SHIFT;
++	u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;
+ 
+ 	if (!boot_params.hdr.type_of_loader ||
+ 	    !ramdisk_image || !ramdisk_size)
+@@ -394,14 +391,8 @@ static void __init reserve_initrd(void)
+ 		return;
+ 	}
+ 
+-#ifdef CONFIG_X86_32
+ 	relocate_initrd();
+-#else
+-	printk(KERN_ERR "initrd extends beyond end of memory "
+-	       "(0x%08llx > 0x%08llx)\ndisabling initrd\n",
+-	       ramdisk_end, end_of_lowmem);
+-	initrd_start = 0;
+-#endif
++
+ 	free_early(ramdisk_image, ramdisk_end);
+ }
+ #else
+diff --git a/arch/x86/kernel/tlb_uv.c b/arch/x86/kernel/tlb_uv.c
+index 8c7b03b..8ccabb8 100644
+--- a/arch/x86/kernel/tlb_uv.c
++++ b/arch/x86/kernel/tlb_uv.c
+@@ -711,25 +711,31 @@ uv_activation_descriptor_init(int node, int pnode)
+ 	unsigned long pa;
+ 	unsigned long m;
+ 	unsigned long n;
+-	unsigned long mmr_image;
+ 	struct bau_desc *adp;
+ 	struct bau_desc *ad2;
+ 
+-	adp = (struct bau_desc *)kmalloc_node(16384, GFP_KERNEL, node);
++	/*
++	 * each bau_desc is 64 bytes; there are 8 (UV_ITEMS_PER_DESCRIPTOR)
++	 * per cpu; and up to 32 (UV_ADP_SIZE) cpu's per blade
++	 */
++	adp = (struct bau_desc *)kmalloc_node(sizeof(struct bau_desc)*
++		UV_ADP_SIZE*UV_ITEMS_PER_DESCRIPTOR, GFP_KERNEL, node);
+ 	BUG_ON(!adp);
+ 
+ 	pa = uv_gpa(adp); /* need the real nasid*/
+ 	n = pa >> uv_nshift;
+ 	m = pa & uv_mmask;
+ 
+-	mmr_image = uv_read_global_mmr64(pnode, UVH_LB_BAU_SB_DESCRIPTOR_BASE);
+-	if (mmr_image) {
+-		uv_write_global_mmr64(pnode, (unsigned long)
+-				      UVH_LB_BAU_SB_DESCRIPTOR_BASE,
+-				      (n << UV_DESC_BASE_PNODE_SHIFT | m));
+-	}
++	uv_write_global_mmr64(pnode, UVH_LB_BAU_SB_DESCRIPTOR_BASE,
++			      (n << UV_DESC_BASE_PNODE_SHIFT | m));
+ 
+-	for (i = 0, ad2 = adp; i < UV_ACTIVATION_DESCRIPTOR_SIZE; i++, ad2++) {
++	/*
++	 * initializing all 8 (UV_ITEMS_PER_DESCRIPTOR) descriptors for each
++	 * cpu even though we only use the first one; one descriptor can
++	 * describe a broadcast to 256 nodes.
++	 */
++	for (i = 0, ad2 = adp; i < (UV_ADP_SIZE*UV_ITEMS_PER_DESCRIPTOR);
++		i++, ad2++) {
+ 		memset(ad2, 0, sizeof(struct bau_desc));
+ 		ad2->header.sw_ack_flag = 1;
+ 		/*
+diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
+index d57de05..cf8611d 100644
+--- a/arch/x86/kernel/tsc.c
++++ b/arch/x86/kernel/tsc.c
+@@ -710,7 +710,16 @@ static cycle_t read_tsc(struct clocksource *cs)
+ #ifdef CONFIG_X86_64
+ static cycle_t __vsyscall_fn vread_tsc(void)
+ {
+-	cycle_t ret = (cycle_t)vget_cycles();
++	cycle_t ret;
++
++	/*
++	 * Surround the RDTSC by barriers, to make sure it's not
++	 * speculated to outside the seqlock critical section and
++	 * does not cause time warps:
++	 */
++	rdtsc_barrier();
++	ret = (cycle_t)vget_cycles();
++	rdtsc_barrier();
+ 
+ 	return ret >= __vsyscall_gtod_data.clock.cycle_last ?
+ 		ret : __vsyscall_gtod_data.clock.cycle_last;
+diff --git a/arch/x86/kernel/vm86_32.c b/arch/x86/kernel/vm86_32.c
+index d7ac84e..6a17769 100644
+--- a/arch/x86/kernel/vm86_32.c
++++ b/arch/x86/kernel/vm86_32.c
+@@ -287,10 +287,9 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk
+ 	info->regs.pt.ds = 0;
+ 	info->regs.pt.es = 0;
+ 	info->regs.pt.fs = 0;
+-
+-/* we are clearing gs later just before "jmp resume_userspace",
+- * because it is not saved/restored.
+- */
++#ifndef CONFIG_X86_32_LAZY_GS
++	info->regs.pt.gs = 0;
++#endif
+ 
+ /*
+  * The flags register is also special: we cannot trust that the user
+@@ -343,7 +342,9 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk
+ 	__asm__ __volatile__(
+ 		"movl %0,%%esp\n\t"
+ 		"movl %1,%%ebp\n\t"
++#ifdef CONFIG_X86_32_LAZY_GS
+ 		"mov  %2, %%gs\n\t"
++#endif
+ 		"jmp resume_userspace"
+ 		: /* no outputs */
+ 		:"r" (&info->regs), "r" (task_thread_info(tsk)), "r" (0));
+diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c
+index 44153af..25ee06a 100644
+--- a/arch/x86/kernel/vsyscall_64.c
++++ b/arch/x86/kernel/vsyscall_64.c
+@@ -132,15 +132,7 @@ static __always_inline void do_vgettimeofday(struct timeval * tv)
+ 			return;
+ 		}
+ 
+-		/*
+-		 * Surround the RDTSC by barriers, to make sure it's not
+-		 * speculated to outside the seqlock critical section and
+-		 * does not cause time warps:
+-		 */
+-		rdtsc_barrier();
+ 		now = vread();
+-		rdtsc_barrier();
+-
+ 		base = __vsyscall_gtod_data.clock.cycle_last;
+ 		mask = __vsyscall_gtod_data.clock.mask;
+ 		mult = __vsyscall_gtod_data.clock.mult;
+diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
+index bb48133..fa0adcd 100644
+--- a/arch/x86/kvm/vmx.c
++++ b/arch/x86/kvm/vmx.c
+@@ -32,6 +32,7 @@
+ #include <asm/desc.h>
+ #include <asm/vmx.h>
+ #include <asm/virtext.h>
++#include <asm/mce.h>
+ 
+ #define __ex(x) __kvm_handle_fault_on_reboot(x)
+ 
+@@ -97,6 +98,8 @@ struct vcpu_vmx {
+ 	int soft_vnmi_blocked;
+ 	ktime_t entry_time;
+ 	s64 vnmi_blocked_time;
++
++	u32 exit_reason;
+ };
+ 
+ static inline struct vcpu_vmx *to_vmx(struct kvm_vcpu *vcpu)
+@@ -478,7 +481,7 @@ static void update_exception_bitmap(struct kvm_vcpu *vcpu)
+ {
+ 	u32 eb;
+ 
+-	eb = (1u << PF_VECTOR) | (1u << UD_VECTOR);
++	eb = (1u << PF_VECTOR) | (1u << UD_VECTOR) | (1u << MC_VECTOR);
+ 	if (!vcpu->fpu_active)
+ 		eb |= 1u << NM_VECTOR;
+ 	if (vcpu->guest_debug & KVM_GUESTDBG_ENABLE) {
+@@ -2585,6 +2588,35 @@ static int handle_rmode_exception(struct kvm_vcpu *vcpu,
+ 	return 0;
+ }
+ 
++/*
++ * Trigger machine check on the host. We assume all the MSRs are already set up
++ * by the CPU and that we still run on the same CPU as the MCE occurred on.
++ * We pass a fake environment to the machine check handler because we want
++ * the guest to be always treated like user space, no matter what context
++ * it used internally.
++ */
++static void kvm_machine_check(void)
++{
++#ifdef CONFIG_X86_MCE
++	struct pt_regs regs = {
++		.cs = 3, /* Fake ring 3 no matter what the guest ran on */
++		.flags = X86_EFLAGS_IF,
++	};
++
++#ifdef CONFIG_X86_64
++	do_machine_check(&regs, 0);
++#else
++	machine_check_vector(&regs, 0);
++#endif
++#endif
++}
++
++static int handle_machine_check(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
++{
++	/* already handled by vcpu_run */
++	return 1;
++}
++
+ static int handle_exception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
+ {
+ 	struct vcpu_vmx *vmx = to_vmx(vcpu);
+@@ -2596,6 +2628,10 @@ static int handle_exception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
+ 	vect_info = vmx->idt_vectoring_info;
+ 	intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
+ 
++	ex_no = intr_info & INTR_INFO_VECTOR_MASK;
++	if (ex_no == MC_VECTOR)
++		return handle_machine_check(vcpu, kvm_run);
++
+ 	if ((vect_info & VECTORING_INFO_VALID_MASK) &&
+ 						!is_page_fault(intr_info))
+ 		printk(KERN_ERR "%s: unexpected, vectoring info 0x%x "
+@@ -2648,7 +2684,6 @@ static int handle_exception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
+ 		return 1;
+ 	}
+ 
+-	ex_no = intr_info & INTR_INFO_VECTOR_MASK;
+ 	switch (ex_no) {
+ 	case DB_VECTOR:
+ 		dr6 = vmcs_readl(EXIT_QUALIFICATION);
+@@ -2978,6 +3013,12 @@ static int handle_vmcall(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
+ 	return 1;
+ }
+ 
++static int handle_vmx_insn(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
++{
++	kvm_queue_exception(vcpu, UD_VECTOR);
++	return 1;
++}
++
+ static int handle_invlpg(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
+ {
+ 	u64 exit_qualification = vmcs_read64(EXIT_QUALIFICATION);
+@@ -3145,11 +3186,21 @@ static int (*kvm_vmx_exit_handlers[])(struct kvm_vcpu *vcpu,
+ 	[EXIT_REASON_HLT]                     = handle_halt,
+ 	[EXIT_REASON_INVLPG]		      = handle_invlpg,
+ 	[EXIT_REASON_VMCALL]                  = handle_vmcall,
++	[EXIT_REASON_VMCLEAR]	              = handle_vmx_insn,
++	[EXIT_REASON_VMLAUNCH]                = handle_vmx_insn,
++	[EXIT_REASON_VMPTRLD]                 = handle_vmx_insn,
++	[EXIT_REASON_VMPTRST]                 = handle_vmx_insn,
++	[EXIT_REASON_VMREAD]                  = handle_vmx_insn,
++	[EXIT_REASON_VMRESUME]                = handle_vmx_insn,
++	[EXIT_REASON_VMWRITE]                 = handle_vmx_insn,
++	[EXIT_REASON_VMOFF]                   = handle_vmx_insn,
++	[EXIT_REASON_VMON]                    = handle_vmx_insn,
+ 	[EXIT_REASON_TPR_BELOW_THRESHOLD]     = handle_tpr_below_threshold,
+ 	[EXIT_REASON_APIC_ACCESS]             = handle_apic_access,
+ 	[EXIT_REASON_WBINVD]                  = handle_wbinvd,
+ 	[EXIT_REASON_TASK_SWITCH]             = handle_task_switch,
+ 	[EXIT_REASON_EPT_VIOLATION]	      = handle_ept_violation,
++	[EXIT_REASON_MCE_DURING_VMENTRY]      = handle_machine_check,
+ };
+ 
+ static const int kvm_vmx_max_exit_handlers =
+@@ -3161,8 +3212,8 @@ static const int kvm_vmx_max_exit_handlers =
+  */
+ static int kvm_handle_exit(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
+ {
+-	u32 exit_reason = vmcs_read32(VM_EXIT_REASON);
+ 	struct vcpu_vmx *vmx = to_vmx(vcpu);
++	u32 exit_reason = vmx->exit_reason;
+ 	u32 vectoring_info = vmx->idt_vectoring_info;
+ 
+ 	KVMTRACE_3D(VMEXIT, vcpu, exit_reason, (u32)kvm_rip_read(vcpu),
+@@ -3512,6 +3563,13 @@ static void vmx_vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
+ 
+ 	intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
+ 
++	vmx->exit_reason = vmcs_read32(VM_EXIT_REASON);
++
++	/* Handle machine checks before interrupts are enabled */
++	if ((vmx->exit_reason == EXIT_REASON_MCE_DURING_VMENTRY) ||
++		(intr_info & INTR_INFO_VECTOR_MASK) == MC_VECTOR)
++		kvm_machine_check();
++
+ 	/* We need to handle NMIs before interrupts are enabled */
+ 	if ((intr_info & INTR_INFO_INTR_TYPE_MASK) == INTR_TYPE_NMI_INTR &&
+ 	    (intr_info & INTR_INFO_VALID_MASK)) {
+diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
+index 3944e91..ee4714b 100644
+--- a/arch/x86/kvm/x86.c
++++ b/arch/x86/kvm/x86.c
+@@ -634,10 +634,12 @@ static void kvm_write_guest_time(struct kvm_vcpu *v)
+ 	if ((!vcpu->time_page))
+ 		return;
+ 
++	preempt_disable();
+ 	if (unlikely(vcpu->hv_clock_tsc_khz != __get_cpu_var(cpu_tsc_khz))) {
+ 		kvm_set_time_scale(__get_cpu_var(cpu_tsc_khz), &vcpu->hv_clock);
+ 		vcpu->hv_clock_tsc_khz = __get_cpu_var(cpu_tsc_khz);
+ 	}
++	preempt_enable();
+ 
+ 	/* Keep irq disabled to prevent changes to the clock */
+ 	local_irq_save(flags);
+@@ -3934,7 +3936,13 @@ int kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu,
+ 
+ 	vcpu->arch.cr2 = sregs->cr2;
+ 	mmu_reset_needed |= vcpu->arch.cr3 != sregs->cr3;
+-	vcpu->arch.cr3 = sregs->cr3;
++
++	down_read(&vcpu->kvm->slots_lock);
++	if (gfn_to_memslot(vcpu->kvm, sregs->cr3 >> PAGE_SHIFT))
++		vcpu->arch.cr3 = sregs->cr3;
++	else
++		set_bit(KVM_REQ_TRIPLE_FAULT, &vcpu->requests);
++	up_read(&vcpu->kvm->slots_lock);
+ 
+ 	kvm_set_cr8(vcpu, sregs->cr8);
+ 
+diff --git a/arch/x86/mm/memtest.c b/arch/x86/mm/memtest.c
+index 605c8be..c0bedcd 100644
+--- a/arch/x86/mm/memtest.c
++++ b/arch/x86/mm/memtest.c
+@@ -40,23 +40,23 @@ static void __init reserve_bad_mem(u64 pattern, u64 start_bad, u64 end_bad)
+ 
+ static void __init memtest(u64 pattern, u64 start_phys, u64 size)
+ {
+-	u64 i, count;
+-	u64 *start;
++	u64 *p;
++	void *start, *end;
+ 	u64 start_bad, last_bad;
+ 	u64 start_phys_aligned;
+ 	size_t incr;
+ 
+ 	incr = sizeof(pattern);
+ 	start_phys_aligned = ALIGN(start_phys, incr);
+-	count = (size - (start_phys_aligned - start_phys))/incr;
+ 	start = __va(start_phys_aligned);
++	end = start + size - (start_phys_aligned - start_phys);
+ 	start_bad = 0;
+ 	last_bad = 0;
+ 
+-	for (i = 0; i < count; i++)
+-		start[i] = pattern;
+-	for (i = 0; i < count; i++, start++, start_phys_aligned += incr) {
+-		if (*start == pattern)
++	for (p = start; p < end; p++)
++		*p = pattern;
++	for (p = start; p < end; p++, start_phys_aligned += incr) {
++		if (*p == pattern)
+ 			continue;
+ 		if (start_phys_aligned == last_bad + incr) {
+ 			last_bad += incr;
+diff --git a/drivers/char/epca.c b/drivers/char/epca.c
+index af7c13c..bcd07cb 100644
+--- a/drivers/char/epca.c
++++ b/drivers/char/epca.c
+@@ -1518,7 +1518,7 @@ static void doevent(int crd)
+ 		if (event & MODEMCHG_IND) {
+ 			/* A modem signal change has been indicated */
+ 			ch->imodem = mstat;
+-			if (test_bit(ASYNC_CHECK_CD, &ch->port.flags)) {
++			if (test_bit(ASYNCB_CHECK_CD, &ch->port.flags)) {
+ 				/* We are now receiving dcd */
+ 				if (mstat & ch->dcd)
+ 					wake_up_interruptible(&ch->port.open_wait);
+@@ -1765,9 +1765,9 @@ static void epcaparam(struct tty_struct *tty, struct channel *ch)
+ 		 * that the driver will wait on carrier detect.
+ 		 */
+ 		if (ts->c_cflag & CLOCAL)
+-			clear_bit(ASYNC_CHECK_CD, &ch->port.flags);
++			clear_bit(ASYNCB_CHECK_CD, &ch->port.flags);
+ 		else
+-			set_bit(ASYNC_CHECK_CD, &ch->port.flags);
++			set_bit(ASYNCB_CHECK_CD, &ch->port.flags);
+ 		mval = ch->m_dtr | ch->m_rts;
+ 	} /* End CBAUD not detected */
+ 	iflag = termios2digi_i(ch, ts->c_iflag);
+@@ -2244,7 +2244,8 @@ static void do_softint(struct work_struct *work)
+ 			if (test_and_clear_bit(EPCA_EVENT_HANGUP, &ch->event)) {
+ 				tty_hangup(tty);
+ 				wake_up_interruptible(&ch->port.open_wait);
+-				clear_bit(ASYNC_NORMAL_ACTIVE, &ch->port.flags);
++				clear_bit(ASYNCB_NORMAL_ACTIVE,
++						&ch->port.flags);
+ 			}
+ 		}
+ 		tty_kref_put(tty);
+diff --git a/drivers/char/moxa.c b/drivers/char/moxa.c
+index 4a4cab7..a57ab11 100644
+--- a/drivers/char/moxa.c
++++ b/drivers/char/moxa.c
+@@ -1184,6 +1184,11 @@ static int moxa_open(struct tty_struct *tty, struct file *filp)
+ 		return -ENODEV;
+ 	}
+ 
++	if (port % MAX_PORTS_PER_BOARD >= brd->numPorts) {
++		retval = -ENODEV;
++		goto out_unlock;
++	}
++
+ 	ch = &brd->ports[port % MAX_PORTS_PER_BOARD];
+ 	ch->port.count++;
+ 	tty->driver_data = ch;
+@@ -1208,8 +1213,8 @@ static int moxa_open(struct tty_struct *tty, struct file *filp)
+ 				moxa_close_port(tty);
+ 	} else
+ 		ch->port.flags |= ASYNC_NORMAL_ACTIVE;
++out_unlock:
+ 	mutex_unlock(&moxa_openlock);
+-
+ 	return retval;
+ }
+ 
+diff --git a/drivers/char/n_r3964.c b/drivers/char/n_r3964.c
+index d2e93e3..2e99158 100644
+--- a/drivers/char/n_r3964.c
++++ b/drivers/char/n_r3964.c
+@@ -1062,7 +1062,7 @@ static ssize_t r3964_read(struct tty_struct *tty, struct file *file,
+ 	struct r3964_client_info *pClient;
+ 	struct r3964_message *pMsg;
+ 	struct r3964_client_message theMsg;
+-	int count;
++	int ret;
+ 
+ 	TRACE_L("read()");
+ 
+@@ -1074,8 +1074,8 @@ static ssize_t r3964_read(struct tty_struct *tty, struct file *file,
+ 		if (pMsg == NULL) {
+ 			/* no messages available. */
+ 			if (file->f_flags & O_NONBLOCK) {
+-				unlock_kernel();
+-				return -EAGAIN;
++				ret = -EAGAIN;
++				goto unlock;
+ 			}
+ 			/* block until there is a message: */
+ 			wait_event_interruptible(pInfo->read_wait,
+@@ -1085,29 +1085,31 @@ static ssize_t r3964_read(struct tty_struct *tty, struct file *file,
+ 		/* If we still haven't got a message, we must have been signalled */
+ 
+ 		if (!pMsg) {
+-			unlock_kernel();
+-			return -EINTR;
++			ret = -EINTR;
++			goto unlock;
+ 		}
+ 
+ 		/* deliver msg to client process: */
+ 		theMsg.msg_id = pMsg->msg_id;
+ 		theMsg.arg = pMsg->arg;
+ 		theMsg.error_code = pMsg->error_code;
+-		count = sizeof(struct r3964_client_message);
++		ret = sizeof(struct r3964_client_message);
+ 
+ 		kfree(pMsg);
+ 		TRACE_M("r3964_read - msg kfree %p", pMsg);
+ 
+-		if (copy_to_user(buf, &theMsg, count)) {
+-			unlock_kernel();
+-			return -EFAULT;
++		if (copy_to_user(buf, &theMsg, ret)) {
++			ret = -EFAULT;
++			goto unlock;
+ 		}
+ 
+-		TRACE_PS("read - return %d", count);
+-		return count;
++		TRACE_PS("read - return %d", ret);
++		goto unlock;
+ 	}
++	ret = -EPERM;
++unlock:
+ 	unlock_kernel();
+-	return -EPERM;
++	return ret;
+ }
+ 
+ static ssize_t r3964_write(struct tty_struct *tty, struct file *file,
+diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c
+index dbb9125..881934c 100644
+--- a/drivers/char/pcmcia/cm4000_cs.c
++++ b/drivers/char/pcmcia/cm4000_cs.c
+@@ -1575,7 +1575,8 @@ static long cmm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+ 		clear_bit(LOCK_IO, &dev->flags);
+ 		wake_up_interruptible(&dev->ioq);
+ 
+-		return 0;
++		rc = 0;
++		break;
+ 	case CM_IOCSPTS:
+ 		{
+ 			struct ptsreq krnptsreq;
+diff --git a/drivers/char/rocket.c b/drivers/char/rocket.c
+index f59fc5c..3fa7234 100644
+--- a/drivers/char/rocket.c
++++ b/drivers/char/rocket.c
+@@ -934,7 +934,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp)
+ 	/*
+ 	 * Info->count is now 1; so it's safe to sleep now.
+ 	 */
+-	if (!test_bit(ASYNC_INITIALIZED, &port->flags)) {
++	if (!test_bit(ASYNCB_INITIALIZED, &port->flags)) {
+ 		cp = &info->channel;
+ 		sSetRxTrigger(cp, TRIG_1);
+ 		if (sGetChanStatus(cp) & CD_ACT)
+@@ -958,7 +958,7 @@ static int rp_open(struct tty_struct *tty, struct file *filp)
+ 		sEnRxFIFO(cp);
+ 		sEnTransmit(cp);
+ 
+-		set_bit(ASYNC_INITIALIZED, &info->port.flags);
++		set_bit(ASYNCB_INITIALIZED, &info->port.flags);
+ 
+ 		/*
+ 		 * Set up the tty->alt_speed kludge
+@@ -1641,7 +1641,7 @@ static int rp_write(struct tty_struct *tty,
+ 	/*  Write remaining data into the port's xmit_buf */
+ 	while (1) {
+ 		/* Hung up ? */
+-		if (!test_bit(ASYNC_NORMAL_ACTIVE, &info->port.flags))
++		if (!test_bit(ASYNCB_NORMAL_ACTIVE, &info->port.flags))
+ 			goto end;
+ 		c = min(count, XMIT_BUF_SIZE - info->xmit_cnt - 1);
+ 		c = min(c, XMIT_BUF_SIZE - info->xmit_head);
+diff --git a/drivers/char/vt_ioctl.c b/drivers/char/vt_ioctl.c
+index e6ce632..7539bed 100644
+--- a/drivers/char/vt_ioctl.c
++++ b/drivers/char/vt_ioctl.c
+@@ -396,7 +396,8 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
+ 	kbd = kbd_table + console;
+ 	switch (cmd) {
+ 	case TIOCLINUX:
+-		return tioclinux(tty, arg);
++		ret = tioclinux(tty, arg);
++		break;
+ 	case KIOCSOUND:
+ 		if (!perm)
+ 			goto eperm;
+diff --git a/drivers/firmware/memmap.c b/drivers/firmware/memmap.c
+index 05aa2d4..d5ea8a6 100644
+--- a/drivers/firmware/memmap.c
++++ b/drivers/firmware/memmap.c
+@@ -31,8 +31,12 @@
+  * information is necessary as for the resource tree.
+  */
+ struct firmware_map_entry {
+-	resource_size_t		start;	/* start of the memory range */
+-	resource_size_t		end;	/* end of the memory range (incl.) */
++	/*
++	 * start and end must be u64 rather than resource_size_t, because e820
++	 * resources can lie at addresses above 4G.
++	 */
++	u64			start;	/* start of the memory range */
++	u64			end;	/* end of the memory range (incl.) */
+ 	const char		*type;	/* type of the memory range */
+ 	struct list_head	list;	/* entry for the linked list */
+ 	struct kobject		kobj;   /* kobject for each entry */
+@@ -101,7 +105,7 @@ static LIST_HEAD(map_entries);
+  * Common implementation of firmware_map_add() and firmware_map_add_early()
+  * which expects a pre-allocated struct firmware_map_entry.
+  **/
+-static int firmware_map_add_entry(resource_size_t start, resource_size_t end,
++static int firmware_map_add_entry(u64 start, u64 end,
+ 				  const char *type,
+ 				  struct firmware_map_entry *entry)
+ {
+@@ -132,8 +136,7 @@ static int firmware_map_add_entry(resource_size_t start, resource_size_t end,
+  *
+  * Returns 0 on success, or -ENOMEM if no memory could be allocated.
+  **/
+-int firmware_map_add(resource_size_t start, resource_size_t end,
+-		     const char *type)
++int firmware_map_add(u64 start, u64 end, const char *type)
+ {
+ 	struct firmware_map_entry *entry;
+ 
+@@ -157,8 +160,7 @@ int firmware_map_add(resource_size_t start, resource_size_t end,
+  *
+  * Returns 0 on success, or -ENOMEM if no memory could be allocated.
+  **/
+-int __init firmware_map_add_early(resource_size_t start, resource_size_t end,
+-				  const char *type)
++int __init firmware_map_add_early(u64 start, u64 end, const char *type)
+ {
+ 	struct firmware_map_entry *entry;
+ 
+diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
+index 98560e1..e3cb402 100644
+--- a/drivers/gpu/drm/i915/i915_drv.c
++++ b/drivers/gpu/drm/i915/i915_drv.c
+@@ -67,8 +67,6 @@ static int i915_suspend(struct drm_device *dev, pm_message_t state)
+ 
+ 	pci_save_state(dev->pdev);
+ 
+-	i915_save_state(dev);
+-
+ 	/* If KMS is active, we do the leavevt stuff here */
+ 	if (drm_core_check_feature(dev, DRIVER_MODESET)) {
+ 		if (i915_gem_idle(dev))
+@@ -77,6 +75,8 @@ static int i915_suspend(struct drm_device *dev, pm_message_t state)
+ 		drm_irq_uninstall(dev);
+ 	}
+ 
++	i915_save_state(dev);
++
+ 	intel_opregion_free(dev, 1);
+ 
+ 	if (state.event == PM_EVENT_SUSPEND) {
+diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
+index 925eb9e..6368f57 100644
+--- a/drivers/ide/ide-cd.c
++++ b/drivers/ide/ide-cd.c
+@@ -758,7 +758,7 @@ out_end:
+ 				rq->errors = -EIO;
+ 		}
+ 
+-		if (uptodate == 0)
++		if (uptodate == 0 && rq->bio)
+ 			ide_cd_error_cmd(drive, cmd);
+ 
+ 		/* make sure it's fully ended */
+diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
+index 20724ae..c4a0264 100644
+--- a/drivers/infiniband/hw/mlx4/qp.c
++++ b/drivers/infiniband/hw/mlx4/qp.c
+@@ -1585,12 +1585,16 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
+ 				break;
+ 
+ 			case IB_WR_LOCAL_INV:
++				ctrl->srcrb_flags |=
++					cpu_to_be32(MLX4_WQE_CTRL_STRONG_ORDER);
+ 				set_local_inv_seg(wqe, wr->ex.invalidate_rkey);
+ 				wqe  += sizeof (struct mlx4_wqe_local_inval_seg);
+ 				size += sizeof (struct mlx4_wqe_local_inval_seg) / 16;
+ 				break;
+ 
+ 			case IB_WR_FAST_REG_MR:
++				ctrl->srcrb_flags |=
++					cpu_to_be32(MLX4_WQE_CTRL_STRONG_ORDER);
+ 				set_fmr_seg(wqe, wr);
+ 				wqe  += sizeof (struct mlx4_wqe_fmr_seg);
+ 				size += sizeof (struct mlx4_wqe_fmr_seg) / 16;
+diff --git a/drivers/isdn/hisax/hfc_pci.c b/drivers/isdn/hisax/hfc_pci.c
+index f126566..3d337d9 100644
+--- a/drivers/isdn/hisax/hfc_pci.c
++++ b/drivers/isdn/hisax/hfc_pci.c
+@@ -82,8 +82,9 @@ release_io_hfcpci(struct IsdnCardState *cs)
+ 	Write_hfc(cs, HFCPCI_INT_M2, cs->hw.hfcpci.int_m2);
+ 	pci_write_config_word(cs->hw.hfcpci.dev, PCI_COMMAND, 0);	/* disable memory mapped ports + busmaster */
+ 	del_timer(&cs->hw.hfcpci.timer);
+-	kfree(cs->hw.hfcpci.share_start);
+-	cs->hw.hfcpci.share_start = NULL;
++	pci_free_consistent(cs->hw.hfcpci.dev, 0x8000,
++		cs->hw.hfcpci.fifos, cs->hw.hfcpci.dma);
++	cs->hw.hfcpci.fifos = NULL;
+ 	iounmap((void *)cs->hw.hfcpci.pci_io);
+ }
+ 
+@@ -1663,8 +1664,19 @@ setup_hfcpci(struct IsdnCard *card)
+ 					     dev_hfcpci);
+ 		i++;
+ 		if (tmp_hfcpci) {
++			dma_addr_t	dma_mask = DMA_BIT_MASK(32) & ~0x7fffUL;
+ 			if (pci_enable_device(tmp_hfcpci))
+ 				continue;
++			if (pci_set_dma_mask(tmp_hfcpci, dma_mask)) {
++				printk(KERN_WARNING
++					"HiSax hfc_pci: No suitable DMA available.\n");
++				continue;
++			}
++			if (pci_set_consistent_dma_mask(tmp_hfcpci, dma_mask)) {
++				printk(KERN_WARNING
++					"HiSax hfc_pci: No suitable consistent DMA available.\n");
++				continue;
++			}
+ 			pci_set_master(tmp_hfcpci);
+ 			if ((card->para[0]) && (card->para[0] != (tmp_hfcpci->resource[ 0].start & PCI_BASE_ADDRESS_IO_MASK)))
+ 				continue;
+@@ -1693,22 +1705,29 @@ setup_hfcpci(struct IsdnCard *card)
+ 		printk(KERN_WARNING "HFC-PCI: No IO-Mem for PCI card found\n");
+ 		return (0);
+ 	}
++
+ 	/* Allocate memory for FIFOS */
+-	/* Because the HFC-PCI needs a 32K physical alignment, we */
+-	/* need to allocate the double mem and align the address */
+-	if (!(cs->hw.hfcpci.share_start = kmalloc(65536, GFP_KERNEL))) {
+-		printk(KERN_WARNING "HFC-PCI: Error allocating memory for FIFO!\n");
++	cs->hw.hfcpci.fifos = pci_alloc_consistent(cs->hw.hfcpci.dev,
++					0x8000, &cs->hw.hfcpci.dma);
++	if (!cs->hw.hfcpci.fifos) {
++		printk(KERN_WARNING "HFC-PCI: Error allocating FIFO memory!\n");
++		return 0;
++	}
++	if (cs->hw.hfcpci.dma & 0x7fff) {
++		printk(KERN_WARNING
++		    "HFC-PCI: Error DMA memory not on 32K boundary (%lx)\n",
++		    (u_long)cs->hw.hfcpci.dma);
++		pci_free_consistent(cs->hw.hfcpci.dev, 0x8000,
++			cs->hw.hfcpci.fifos, cs->hw.hfcpci.dma);
+ 		return 0;
+ 	}
+-	cs->hw.hfcpci.fifos = (void *)
+-	    (((ulong) cs->hw.hfcpci.share_start) & ~0x7FFF) + 0x8000;
+-	pci_write_config_dword(cs->hw.hfcpci.dev, 0x80, (u_int) virt_to_bus(cs->hw.hfcpci.fifos));
++	pci_write_config_dword(cs->hw.hfcpci.dev, 0x80, (u32)cs->hw.hfcpci.dma);
+ 	cs->hw.hfcpci.pci_io = ioremap((ulong) cs->hw.hfcpci.pci_io, 256);
+ 	printk(KERN_INFO
+-	       "HFC-PCI: defined at mem %p fifo %p(%#x) IRQ %d HZ %d\n",
++	       "HFC-PCI: defined at mem %p fifo %p(%lx) IRQ %d HZ %d\n",
+ 	       cs->hw.hfcpci.pci_io,
+ 	       cs->hw.hfcpci.fifos,
+-	       (u_int) virt_to_bus(cs->hw.hfcpci.fifos),
++	       (u_long)cs->hw.hfcpci.dma,
+ 	       cs->irq, HZ);
+ 
+ 	spin_lock_irqsave(&cs->lock, flags);
+diff --git a/drivers/isdn/hisax/hisax.h b/drivers/isdn/hisax/hisax.h
+index f852704..0685c19 100644
+--- a/drivers/isdn/hisax/hisax.h
++++ b/drivers/isdn/hisax/hisax.h
+@@ -703,7 +703,7 @@ struct hfcPCI_hw {
+         int nt_timer;
+         struct pci_dev *dev;
+         unsigned char *pci_io; /* start of PCI IO memory */
+-        void *share_start; /* shared memory for Fifos start */
++	dma_addr_t dma; /* dma handle for Fifos */
+         void *fifos; /* FIFO memory */ 
+         int last_bfifo_cnt[2]; /* marker saving last b-fifo frame count */
+ 	struct timer_list timer;
+diff --git a/drivers/md/dm-exception-store.c b/drivers/md/dm-exception-store.c
+index a2e26c2..14ce11e 100644
+--- a/drivers/md/dm-exception-store.c
++++ b/drivers/md/dm-exception-store.c
+@@ -195,7 +195,7 @@ int dm_exception_store_create(struct dm_target *ti, int argc, char **argv,
+ 			      struct dm_exception_store **store)
+ {
+ 	int r = 0;
+-	struct dm_exception_store_type *type;
++	struct dm_exception_store_type *type = NULL;
+ 	struct dm_exception_store *tmp_store;
+ 	char persistent;
+ 
+@@ -211,12 +211,15 @@ int dm_exception_store_create(struct dm_target *ti, int argc, char **argv,
+ 	}
+ 
+ 	persistent = toupper(*argv[1]);
+-	if (persistent != 'P' && persistent != 'N') {
++	if (persistent == 'P')
++		type = get_type("P");
++	else if (persistent == 'N')
++		type = get_type("N");
++	else {
+ 		ti->error = "Persistent flag is not P or N";
+ 		return -EINVAL;
+ 	}
+ 
+-	type = get_type(argv[1]);
+ 	if (!type) {
+ 		ti->error = "Exception store type not recognised";
+ 		r = -EINVAL;
+diff --git a/drivers/md/dm-exception-store.h b/drivers/md/dm-exception-store.h
+index 0a2e6e7..96a796b 100644
+--- a/drivers/md/dm-exception-store.h
++++ b/drivers/md/dm-exception-store.h
+@@ -156,7 +156,7 @@ static inline void dm_consecutive_chunk_count_inc(struct dm_snap_exception *e)
+  */
+ static inline sector_t get_dev_size(struct block_device *bdev)
+ {
+-	return bdev->bd_inode->i_size >> SECTOR_SHIFT;
++	return i_size_read(bdev->bd_inode) >> SECTOR_SHIFT;
+ }
+ 
+ static inline chunk_t sector_to_chunk(struct dm_exception_store *store,
+diff --git a/drivers/md/dm-log.c b/drivers/md/dm-log.c
+index be233bc..5eaa954 100644
+--- a/drivers/md/dm-log.c
++++ b/drivers/md/dm-log.c
+@@ -415,7 +415,7 @@ static int create_log_context(struct dm_dirty_log *log, struct dm_target *ti,
+ 		buf_size = dm_round_up((LOG_OFFSET << SECTOR_SHIFT) +
+ 				       bitset_size, ti->limits.hardsect_size);
+ 
+-		if (buf_size > dev->bdev->bd_inode->i_size) {
++		if (buf_size > i_size_read(dev->bdev->bd_inode)) {
+ 			DMWARN("log device %s too small: need %llu bytes",
+ 				dev->name, (unsigned long long)buf_size);
+ 			kfree(lc);
+diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
+index 6a386ab..3a8f827 100644
+--- a/drivers/md/dm-mpath.c
++++ b/drivers/md/dm-mpath.c
+@@ -553,6 +553,12 @@ static int parse_path_selector(struct arg_set *as, struct priority_group *pg,
+ 		return -EINVAL;
+ 	}
+ 
++	if (ps_argc > as->argc) {
++		dm_put_path_selector(pst);
++		ti->error = "not enough arguments for path selector";
++		return -EINVAL;
++	}
++
+ 	r = pst->create(&pg->ps, ps_argc, as->argv);
+ 	if (r) {
+ 		dm_put_path_selector(pst);
+@@ -699,6 +705,11 @@ static int parse_hw_handler(struct arg_set *as, struct multipath *m)
+ 	if (!hw_argc)
+ 		return 0;
+ 
++	if (hw_argc > as->argc) {
++		ti->error = "not enough arguments for hardware handler";
++		return -EINVAL;
++	}
++
+ 	m->hw_handler_name = kstrdup(shift(as), GFP_KERNEL);
+ 	request_module("scsi_dh_%s", m->hw_handler_name);
+ 	if (scsi_dh_handler_exist(m->hw_handler_name) == 0) {
+@@ -836,6 +847,7 @@ static void multipath_dtr(struct dm_target *ti)
+ 
+ 	flush_workqueue(kmpath_handlerd);
+ 	flush_workqueue(kmultipathd);
++	flush_scheduled_work();
+ 	free_multipath(m);
+ }
+ 
+diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
+index 429b50b..c5c4a0d 100644
+--- a/drivers/md/dm-table.c
++++ b/drivers/md/dm-table.c
+@@ -387,7 +387,8 @@ static void close_dev(struct dm_dev_internal *d, struct mapped_device *md)
+ static int check_device_area(struct dm_dev_internal *dd, sector_t start,
+ 			     sector_t len)
+ {
+-	sector_t dev_size = dd->dm_dev.bdev->bd_inode->i_size >> SECTOR_SHIFT;
++	sector_t dev_size = i_size_read(dd->dm_dev.bdev->bd_inode) >>
++			    SECTOR_SHIFT;
+ 
+ 	if (!dev_size)
+ 		return 1;
+diff --git a/drivers/md/dm.c b/drivers/md/dm.c
+index 424f7b0..add49c1 100644
+--- a/drivers/md/dm.c
++++ b/drivers/md/dm.c
+@@ -1780,6 +1780,10 @@ struct mapped_device *dm_get_from_kobject(struct kobject *kobj)
+ 	if (&md->kobj != kobj)
+ 		return NULL;
+ 
++	if (test_bit(DMF_FREEING, &md->flags) ||
++	    test_bit(DMF_DELETING, &md->flags))
++		return NULL;
++
+ 	dm_get(md);
+ 	return md;
+ }
+diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
+index bb37fb1..c0434e0 100644
+--- a/drivers/md/raid5.c
++++ b/drivers/md/raid5.c
+@@ -3696,6 +3696,7 @@ static int make_request(struct request_queue *q, struct bio * bi)
+ 				spin_unlock_irq(&conf->device_lock);
+ 				if (must_retry) {
+ 					release_stripe(sh);
++					schedule();
+ 					goto retry;
+ 				}
+ 			}
+diff --git a/drivers/media/dvb/frontends/lgdt3305.c b/drivers/media/dvb/frontends/lgdt3305.c
+index d92d055..fde8c59 100644
+--- a/drivers/media/dvb/frontends/lgdt3305.c
++++ b/drivers/media/dvb/frontends/lgdt3305.c
+@@ -19,6 +19,7 @@
+  *
+  */
+ 
++#include <asm/div64.h>
+ #include <linux/dvb/frontend.h>
+ #include "dvb_math.h"
+ #include "lgdt3305.h"
+@@ -496,27 +497,15 @@ static int lgdt3305_set_if(struct lgdt3305_state *state,
+ 
+ 	nco = if_freq_khz / 10;
+ 
+-#define LGDT3305_64BIT_DIVISION_ENABLED 0
+-	/* FIXME: 64bit division disabled to avoid linking error:
+-	 * WARNING: "__udivdi3" [lgdt3305.ko] undefined!
+-	 */
+ 	switch (param->u.vsb.modulation) {
+ 	case VSB_8:
+-#if LGDT3305_64BIT_DIVISION_ENABLED
+ 		nco <<= 24;
+-		nco /= 625;
+-#else
+-		nco *= ((1 << 24) / 625);
+-#endif
++		do_div(nco, 625);
+ 		break;
+ 	case QAM_64:
+ 	case QAM_256:
+-#if LGDT3305_64BIT_DIVISION_ENABLED
+ 		nco <<= 28;
+-		nco /= 625;
+-#else
+-		nco *= ((1 << 28) / 625);
+-#endif
++		do_div(nco, 625);
+ 		break;
+ 	default:
+ 		return -EINVAL;
+diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
+index 3f1a035..448c306 100644
+--- a/drivers/media/video/Makefile
++++ b/drivers/media/video/Makefile
+@@ -12,6 +12,8 @@ omap2cam-objs	:=	omap24xxcam.o omap24xxcam-dma.o
+ 
+ videodev-objs	:=	v4l2-dev.o v4l2-ioctl.o v4l2-device.o
+ 
++# V4L2 core modules
++
+ obj-$(CONFIG_VIDEO_DEV) += videodev.o v4l2-int-device.o
+ ifeq ($(CONFIG_COMPAT),y)
+   obj-$(CONFIG_VIDEO_DEV) += v4l2-compat-ioctl32.o
+@@ -23,21 +25,15 @@ ifeq ($(CONFIG_VIDEO_V4L1_COMPAT),y)
+   obj-$(CONFIG_VIDEO_DEV) += v4l1-compat.o
+ endif
+ 
+-obj-$(CONFIG_VIDEO_TUNER) += tuner.o
++# All i2c modules must come first:
+ 
+-obj-$(CONFIG_VIDEO_BT848) += bt8xx/
+-obj-$(CONFIG_VIDEO_IR_I2C)  += ir-kbd-i2c.o
++obj-$(CONFIG_VIDEO_TUNER) += tuner.o
+ obj-$(CONFIG_VIDEO_TVAUDIO) += tvaudio.o
+ obj-$(CONFIG_VIDEO_TDA7432) += tda7432.o
+ obj-$(CONFIG_VIDEO_TDA9875) += tda9875.o
+-
+ obj-$(CONFIG_VIDEO_SAA6588) += saa6588.o
+ obj-$(CONFIG_VIDEO_SAA5246A) += saa5246a.o
+ obj-$(CONFIG_VIDEO_SAA5249) += saa5249.o
+-obj-$(CONFIG_VIDEO_CQCAM) += c-qcam.o
+-obj-$(CONFIG_VIDEO_BWQCAM) += bw-qcam.o
+-obj-$(CONFIG_VIDEO_W9966) += w9966.o
+-
+ obj-$(CONFIG_VIDEO_TDA9840) += tda9840.o
+ obj-$(CONFIG_VIDEO_TEA6415C) += tea6415c.o
+ obj-$(CONFIG_VIDEO_TEA6420) += tea6420.o
+@@ -54,11 +50,40 @@ obj-$(CONFIG_VIDEO_BT819) += bt819.o
+ obj-$(CONFIG_VIDEO_BT856) += bt856.o
+ obj-$(CONFIG_VIDEO_BT866) += bt866.o
+ obj-$(CONFIG_VIDEO_KS0127) += ks0127.o
++obj-$(CONFIG_VIDEO_VINO) += indycam.o
++obj-$(CONFIG_VIDEO_TVP5150) += tvp5150.o
++obj-$(CONFIG_VIDEO_TVP514X) += tvp514x.o
++obj-$(CONFIG_VIDEO_MSP3400) += msp3400.o
++obj-$(CONFIG_VIDEO_CS5345) += cs5345.o
++obj-$(CONFIG_VIDEO_CS53L32A) += cs53l32a.o
++obj-$(CONFIG_VIDEO_M52790) += m52790.o
++obj-$(CONFIG_VIDEO_TLV320AIC23B) += tlv320aic23b.o
++obj-$(CONFIG_VIDEO_WM8775) += wm8775.o
++obj-$(CONFIG_VIDEO_WM8739) += wm8739.o
++obj-$(CONFIG_VIDEO_VP27SMPX) += vp27smpx.o
++obj-$(CONFIG_VIDEO_CX25840) += cx25840/
++obj-$(CONFIG_VIDEO_UPD64031A) += upd64031a.o
++obj-$(CONFIG_VIDEO_UPD64083) += upd64083.o
++obj-$(CONFIG_VIDEO_OV7670) 	+= ov7670.o
++obj-$(CONFIG_VIDEO_TCM825X) += tcm825x.o
++obj-$(CONFIG_VIDEO_TVEEPROM) += tveeprom.o
+ 
+-obj-$(CONFIG_VIDEO_ZORAN) += zoran/
++obj-$(CONFIG_SOC_CAMERA_MT9M001)	+= mt9m001.o
++obj-$(CONFIG_SOC_CAMERA_MT9M111)	+= mt9m111.o
++obj-$(CONFIG_SOC_CAMERA_MT9T031)	+= mt9t031.o
++obj-$(CONFIG_SOC_CAMERA_MT9V022)	+= mt9v022.o
++obj-$(CONFIG_SOC_CAMERA_OV772X)		+= ov772x.o
++obj-$(CONFIG_SOC_CAMERA_TW9910)		+= tw9910.o
+ 
++# And now the v4l2 drivers:
++
++obj-$(CONFIG_VIDEO_BT848) += bt8xx/
++obj-$(CONFIG_VIDEO_ZORAN) += zoran/
++obj-$(CONFIG_VIDEO_CQCAM) += c-qcam.o
++obj-$(CONFIG_VIDEO_BWQCAM) += bw-qcam.o
++obj-$(CONFIG_VIDEO_W9966) += w9966.o
+ obj-$(CONFIG_VIDEO_PMS) += pms.o
+-obj-$(CONFIG_VIDEO_VINO) += vino.o indycam.o
++obj-$(CONFIG_VIDEO_VINO) += vino.o
+ obj-$(CONFIG_VIDEO_STRADIS) += stradis.o
+ obj-$(CONFIG_VIDEO_CPIA) += cpia.o
+ obj-$(CONFIG_VIDEO_CPIA_PP) += cpia_pp.o
+@@ -69,17 +94,7 @@ obj-$(CONFIG_VIDEO_CX88) += cx88/
+ obj-$(CONFIG_VIDEO_EM28XX) += em28xx/
+ obj-$(CONFIG_VIDEO_CX231XX) += cx231xx/
+ obj-$(CONFIG_VIDEO_USBVISION) += usbvision/
+-obj-$(CONFIG_VIDEO_TVP5150) += tvp5150.o
+-obj-$(CONFIG_VIDEO_TVP514X) += tvp514x.o
+ obj-$(CONFIG_VIDEO_PVRUSB2) += pvrusb2/
+-obj-$(CONFIG_VIDEO_MSP3400) += msp3400.o
+-obj-$(CONFIG_VIDEO_CS5345) += cs5345.o
+-obj-$(CONFIG_VIDEO_CS53L32A) += cs53l32a.o
+-obj-$(CONFIG_VIDEO_M52790) += m52790.o
+-obj-$(CONFIG_VIDEO_TLV320AIC23B) += tlv320aic23b.o
+-obj-$(CONFIG_VIDEO_WM8775) += wm8775.o
+-obj-$(CONFIG_VIDEO_WM8739) += wm8739.o
+-obj-$(CONFIG_VIDEO_VP27SMPX) += vp27smpx.o
+ obj-$(CONFIG_VIDEO_OVCAMCHIP) += ovcamchip/
+ obj-$(CONFIG_VIDEO_CPIA2) += cpia2/
+ obj-$(CONFIG_VIDEO_MXB) += mxb.o
+@@ -92,19 +107,12 @@ obj-$(CONFIG_VIDEOBUF_DMA_CONTIG) += videobuf-dma-contig.o
+ obj-$(CONFIG_VIDEOBUF_VMALLOC) += videobuf-vmalloc.o
+ obj-$(CONFIG_VIDEOBUF_DVB) += videobuf-dvb.o
+ obj-$(CONFIG_VIDEO_BTCX)  += btcx-risc.o
+-obj-$(CONFIG_VIDEO_TVEEPROM) += tveeprom.o
+ 
+ obj-$(CONFIG_VIDEO_M32R_AR_M64278) += arv.o
+ 
+-obj-$(CONFIG_VIDEO_CX25840) += cx25840/
+-obj-$(CONFIG_VIDEO_UPD64031A) += upd64031a.o
+-obj-$(CONFIG_VIDEO_UPD64083) += upd64083.o
+ obj-$(CONFIG_VIDEO_CX2341X) += cx2341x.o
+ 
+ obj-$(CONFIG_VIDEO_CAFE_CCIC) += cafe_ccic.o
+-obj-$(CONFIG_VIDEO_OV7670) 	+= ov7670.o
+-
+-obj-$(CONFIG_VIDEO_TCM825X) += tcm825x.o
+ 
+ obj-$(CONFIG_USB_DABUSB)        += dabusb.o
+ obj-$(CONFIG_USB_OV511)         += ov511.o
+@@ -134,24 +142,21 @@ obj-$(CONFIG_VIDEO_CX18) += cx18/
+ obj-$(CONFIG_VIDEO_VIVI) += vivi.o
+ obj-$(CONFIG_VIDEO_CX23885) += cx23885/
+ 
++obj-$(CONFIG_VIDEO_OMAP2)		+= omap2cam.o
++obj-$(CONFIG_SOC_CAMERA)		+= soc_camera.o
++obj-$(CONFIG_SOC_CAMERA_PLATFORM)	+= soc_camera_platform.o
++# soc-camera host drivers have to be linked after camera drivers
+ obj-$(CONFIG_VIDEO_MX1)			+= mx1_camera.o
+ obj-$(CONFIG_VIDEO_MX3)			+= mx3_camera.o
+ obj-$(CONFIG_VIDEO_PXA27x)		+= pxa_camera.o
+ obj-$(CONFIG_VIDEO_SH_MOBILE_CEU)	+= sh_mobile_ceu_camera.o
+-obj-$(CONFIG_VIDEO_OMAP2)		+= omap2cam.o
+-obj-$(CONFIG_SOC_CAMERA)		+= soc_camera.o
+-obj-$(CONFIG_SOC_CAMERA_MT9M001)	+= mt9m001.o
+-obj-$(CONFIG_SOC_CAMERA_MT9M111)	+= mt9m111.o
+-obj-$(CONFIG_SOC_CAMERA_MT9T031)	+= mt9t031.o
+-obj-$(CONFIG_SOC_CAMERA_MT9V022)	+= mt9v022.o
+-obj-$(CONFIG_SOC_CAMERA_OV772X)		+= ov772x.o
+-obj-$(CONFIG_SOC_CAMERA_PLATFORM)	+= soc_camera_platform.o
+-obj-$(CONFIG_SOC_CAMERA_TW9910)		+= tw9910.o
+ 
+ obj-$(CONFIG_VIDEO_AU0828) += au0828/
+ 
+ obj-$(CONFIG_USB_VIDEO_CLASS)	+= uvc/
+ 
++obj-$(CONFIG_VIDEO_IR_I2C)  += ir-kbd-i2c.o
++
+ EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
+ EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
+ EXTRA_CFLAGS += -Idrivers/media/common/tuners
+diff --git a/drivers/media/video/cx18/cx18-controls.c b/drivers/media/video/cx18/cx18-controls.c
+index 82fc2f9..3783b49 100644
+--- a/drivers/media/video/cx18/cx18-controls.c
++++ b/drivers/media/video/cx18/cx18-controls.c
+@@ -61,6 +61,8 @@ int cx18_queryctrl(struct file *file, void *fh, struct v4l2_queryctrl *qctrl)
+ 
+ 	switch (qctrl->id) {
+ 	/* Standard V4L2 controls */
++	case V4L2_CID_USER_CLASS:
++		return v4l2_ctrl_query_fill(qctrl, 0, 0, 0, 0);
+ 	case V4L2_CID_BRIGHTNESS:
+ 	case V4L2_CID_HUE:
+ 	case V4L2_CID_SATURATION:
+diff --git a/drivers/media/video/cx2341x.c b/drivers/media/video/cx2341x.c
+index 8ded529..4c8e958 100644
+--- a/drivers/media/video/cx2341x.c
++++ b/drivers/media/video/cx2341x.c
+@@ -500,6 +500,8 @@ int cx2341x_ctrl_query(const struct cx2341x_mpeg_params *params,
+ 	int err;
+ 
+ 	switch (qctrl->id) {
++	case V4L2_CID_MPEG_CLASS:
++		return v4l2_ctrl_query_fill(qctrl, 0, 0, 0, 0);
+ 	case V4L2_CID_MPEG_STREAM_TYPE:
+ 		return v4l2_ctrl_query_fill(qctrl,
+ 				V4L2_MPEG_STREAM_TYPE_MPEG2_PS,
+diff --git a/drivers/media/video/ivtv/ivtv-controls.c b/drivers/media/video/ivtv/ivtv-controls.c
+index 84995bc..a3b77ed 100644
+--- a/drivers/media/video/ivtv/ivtv-controls.c
++++ b/drivers/media/video/ivtv/ivtv-controls.c
+@@ -60,6 +60,8 @@ int ivtv_queryctrl(struct file *file, void *fh, struct v4l2_queryctrl *qctrl)
+ 
+ 	switch (qctrl->id) {
+ 	/* Standard V4L2 controls */
++	case V4L2_CID_USER_CLASS:
++		return v4l2_ctrl_query_fill(qctrl, 0, 0, 0, 0);
+ 	case V4L2_CID_BRIGHTNESS:
+ 	case V4L2_CID_HUE:
+ 	case V4L2_CID_SATURATION:
+diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+index add3395..c5563cf 100644
+--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
++++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+@@ -1978,6 +1978,34 @@ static unsigned int pvr2_copy_i2c_addr_list(
+ }
+ 
+ 
++static void pvr2_hdw_cx25840_vbi_hack(struct pvr2_hdw *hdw)
++{
++	/*
++	  Mike Isely <isely@pobox.com> 19-Nov-2006 - This bit of nuttiness
++	  for cx25840 causes that module to correctly set up its video
++	  scaling.  This is really a problem in the cx25840 module itself,
++	  but we work around it here.  The problem has not been seen in
++	  ivtv because there VBI is supported and set up.  We don't do VBI
++	  here (at least not yet) and thus we never attempted to even set
++	  it up.
++	*/
++	struct v4l2_format fmt;
++	if (hdw->decoder_client_id != PVR2_CLIENT_ID_CX25840) {
++		/* We're not using a cx25840 so don't enable the hack */
++		return;
++	}
++
++	pvr2_trace(PVR2_TRACE_INIT,
++		   "Module ID %u:"
++		   " Executing cx25840 VBI hack",
++		   hdw->decoder_client_id);
++	memset(&fmt, 0, sizeof(fmt));
++	fmt.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
++	v4l2_device_call_all(&hdw->v4l2_dev, hdw->decoder_client_id,
++			     video, s_fmt, &fmt);
++}
++
++
+ static int pvr2_hdw_load_subdev(struct pvr2_hdw *hdw,
+ 				const struct pvr2_device_client_desc *cd)
+ {
+@@ -2069,30 +2097,6 @@ static int pvr2_hdw_load_subdev(struct pvr2_hdw *hdw,
+ 	/* client-specific setup... */
+ 	switch (mid) {
+ 	case PVR2_CLIENT_ID_CX25840:
+-		hdw->decoder_client_id = mid;
+-		{
+-			/*
+-			  Mike Isely <isely@pobox.com> 19-Nov-2006 - This
+-			  bit of nuttiness for cx25840 causes that module
+-			  to correctly set up its video scaling.  This is
+-			  really a problem in the cx25840 module itself,
+-			  but we work around it here.  The problem has not
+-			  been seen in ivtv because there VBI is supported
+-			  and set up.  We don't do VBI here (at least not
+-			  yet) and thus we never attempted to even set it
+-			  up.
+-			*/
+-			struct v4l2_format fmt;
+-			pvr2_trace(PVR2_TRACE_INIT,
+-				   "Module ID %u:"
+-				   " Executing cx25840 VBI hack",
+-				   mid);
+-			memset(&fmt, 0, sizeof(fmt));
+-			fmt.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
+-			v4l2_device_call_all(&hdw->v4l2_dev, mid,
+-					     video, s_fmt, &fmt);
+-		}
+-		break;
+ 	case PVR2_CLIENT_ID_SAA7115:
+ 		hdw->decoder_client_id = mid;
+ 		break;
+@@ -2193,6 +2197,8 @@ static void pvr2_hdw_setup_low(struct pvr2_hdw *hdw)
+ 		cptr->info->set_value(cptr,~0,cptr->info->default_value);
+ 	}
+ 
++	pvr2_hdw_cx25840_vbi_hack(hdw);
++
+ 	/* Set up special default values for the television and radio
+ 	   frequencies here.  It's not really important what these defaults
+ 	   are, but I set them to something usable in the Chicago area just
+@@ -2944,6 +2950,7 @@ static void pvr2_subdev_update(struct pvr2_hdw *hdw)
+ 			vs = hdw->std_mask_cur;
+ 			v4l2_device_call_all(&hdw->v4l2_dev, 0,
+ 					     core, s_std, vs);
++			pvr2_hdw_cx25840_vbi_hack(hdw);
+ 		}
+ 		hdw->tuner_signal_stale = !0;
+ 		hdw->cropcap_stale = !0;
+@@ -4066,6 +4073,7 @@ int pvr2_hdw_cmd_decoder_reset(struct pvr2_hdw *hdw)
+ 	if (hdw->decoder_client_id) {
+ 		v4l2_device_call_all(&hdw->v4l2_dev, hdw->decoder_client_id,
+ 				     core, reset, 0);
++		pvr2_hdw_cx25840_vbi_hack(hdw);
+ 		return 0;
+ 	}
+ 	pvr2_trace(PVR2_TRACE_INIT,
+diff --git a/drivers/media/video/saa7134/Makefile b/drivers/media/video/saa7134/Makefile
+index 3dbaa19..604158a 100644
+--- a/drivers/media/video/saa7134/Makefile
++++ b/drivers/media/video/saa7134/Makefile
+@@ -3,8 +3,7 @@ saa7134-objs :=	saa7134-cards.o saa7134-core.o saa7134-i2c.o	\
+ 		saa7134-ts.o saa7134-tvaudio.o saa7134-vbi.o    \
+ 		saa7134-video.o saa7134-input.o
+ 
+-obj-$(CONFIG_VIDEO_SAA7134) +=  saa7134.o saa7134-empress.o \
+-				saa6752hs.o
++obj-$(CONFIG_VIDEO_SAA7134) +=  saa6752hs.o saa7134.o saa7134-empress.o
+ 
+ obj-$(CONFIG_VIDEO_SAA7134_ALSA) += saa7134-alsa.o
+ 
+diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c
+index d287315..cd95093 100644
+--- a/drivers/net/bonding/bond_sysfs.c
++++ b/drivers/net/bonding/bond_sysfs.c
+@@ -1538,6 +1538,7 @@ int bond_create_sysfs(void)
+ 			printk(KERN_ERR
+ 			       "network device named %s already exists in sysfs",
+ 			       class_attr_bonding_masters.attr.name);
++		ret = 0;
+ 	}
+ 
+ 	return ret;
+diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
+index ca82f19..42055a5 100644
+--- a/drivers/net/e1000e/netdev.c
++++ b/drivers/net/e1000e/netdev.c
+@@ -1996,7 +1996,7 @@ static int e1000_clean(struct napi_struct *napi, int budget)
+ 	struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, napi);
+ 	struct e1000_hw *hw = &adapter->hw;
+ 	struct net_device *poll_dev = adapter->netdev;
+-	int tx_cleaned = 0, work_done = 0;
++	int tx_cleaned = 1, work_done = 0;
+ 
+ 	adapter = netdev_priv(poll_dev);
+ 
+diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
+index 6bb5af3..305e0d1 100644
+--- a/drivers/net/mv643xx_eth.c
++++ b/drivers/net/mv643xx_eth.c
+@@ -1751,12 +1751,12 @@ static void mv643xx_eth_program_unicast_filter(struct net_device *dev)
+ 
+ 	uc_addr_set(mp, dev->dev_addr);
+ 
+-	port_config = rdlp(mp, PORT_CONFIG);
++	port_config = rdlp(mp, PORT_CONFIG) & ~UNICAST_PROMISCUOUS_MODE;
++
+ 	nibbles = uc_addr_filter_mask(dev);
+ 	if (!nibbles) {
+ 		port_config |= UNICAST_PROMISCUOUS_MODE;
+-		wrlp(mp, PORT_CONFIG, port_config);
+-		return;
++		nibbles = 0xffff;
+ 	}
+ 
+ 	for (i = 0; i < 16; i += 4) {
+@@ -1777,7 +1777,6 @@ static void mv643xx_eth_program_unicast_filter(struct net_device *dev)
+ 		wrl(mp, off, v);
+ 	}
+ 
+-	port_config &= ~UNICAST_PROMISCUOUS_MODE;
+ 	wrlp(mp, PORT_CONFIG, port_config);
+ }
+ 
+diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
+index a2ff9cb..6714a9d 100644
+--- a/drivers/net/sky2.c
++++ b/drivers/net/sky2.c
+@@ -4365,6 +4365,22 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
+ 		goto err_out;
+ 	}
+ 
++	/* Get configuration information
++	 * Note: only regular PCI config access once to test for HW issues
++	 *       other PCI access through shared memory for speed and to
++	 *	 avoid MMCONFIG problems.
++	 */
++	err = pci_read_config_dword(pdev, PCI_DEV_REG2, &reg);
++	if (err) {
++		dev_err(&pdev->dev, "PCI read config failed\n");
++		goto err_out;
++	}
++
++	if (~reg == 0) {
++		dev_err(&pdev->dev, "PCI configuration read error\n");
++		goto err_out;
++	}
++
+ 	err = pci_request_regions(pdev, DRV_NAME);
+ 	if (err) {
+ 		dev_err(&pdev->dev, "cannot obtain PCI resources\n");
+@@ -4390,21 +4406,6 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
+ 		}
+ 	}
+ 
+-	/* Get configuration information
+-	 * Note: only regular PCI config access once to test for HW issues
+-	 *       other PCI access through shared memory for speed and to
+-	 *	 avoid MMCONFIG problems.
+-	 */
+-	err = pci_read_config_dword(pdev, PCI_DEV_REG2, &reg);
+-	if (err) {
+-		dev_err(&pdev->dev, "PCI read config failed\n");
+-		goto err_out_free_regions;
+-	}
+-
+-	/* size of available VPD, only impact sysfs */
+-	err = pci_vpd_truncate(pdev, 1ul << (((reg & PCI_VPD_ROM_SZ) >> 14) + 8));
+-	if (err)
+-		dev_warn(&pdev->dev, "Can't set VPD size\n");
+ 
+ #ifdef __BIG_ENDIAN
+ 	/* The sk98lin vendor driver uses hardware byte swapping but
+diff --git a/drivers/net/tun.c b/drivers/net/tun.c
+index 735bf41..1be6a6b 100644
+--- a/drivers/net/tun.c
++++ b/drivers/net/tun.c
+@@ -1275,21 +1275,22 @@ static int tun_chr_open(struct inode *inode, struct file * file)
+ static int tun_chr_close(struct inode *inode, struct file *file)
+ {
+ 	struct tun_file *tfile = file->private_data;
+-	struct tun_struct *tun = __tun_get(tfile);
++	struct tun_struct *tun;
+ 
+ 
++	rtnl_lock();
++	tun = __tun_get(tfile);
+ 	if (tun) {
+ 		DBG(KERN_INFO "%s: tun_chr_close\n", tun->dev->name);
+ 
+-		rtnl_lock();
+ 		__tun_detach(tun);
+ 
+ 		/* If desireable, unregister the netdevice. */
+ 		if (!(tun->flags & TUN_PERSIST))
+ 			unregister_netdevice(tun->dev);
+ 
+-		rtnl_unlock();
+ 	}
++	rtnl_unlock();
+ 
+ 	tun = tfile->tun;
+ 	if (tun)
+diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c
+index 2138535..73acbd2 100644
+--- a/drivers/net/usb/pegasus.c
++++ b/drivers/net/usb/pegasus.c
+@@ -297,7 +297,7 @@ static int update_eth_regs_async(pegasus_t * pegasus)
+ 
+ 	pegasus->dr.bRequestType = PEGASUS_REQT_WRITE;
+ 	pegasus->dr.bRequest = PEGASUS_REQ_SET_REGS;
+-	pegasus->dr.wValue = 0;
++	pegasus->dr.wValue = cpu_to_le16(0);
+ 	pegasus->dr.wIndex = cpu_to_le16(EthCtrl0);
+ 	pegasus->dr.wLength = cpu_to_le16(3);
+ 	pegasus->ctrl_urb->transfer_buffer_length = 3;
+@@ -446,11 +446,12 @@ static int write_eprom_word(pegasus_t * pegasus, __u8 index, __u16 data)
+ 	int i;
+ 	__u8 tmp, d[4] = { 0x3f, 0, 0, EPROM_WRITE };
+ 	int ret;
++	__le16 le_data = cpu_to_le16(data);
+ 
+ 	set_registers(pegasus, EpromOffset, 4, d);
+ 	enable_eprom_write(pegasus);
+ 	set_register(pegasus, EpromOffset, index);
+-	set_registers(pegasus, EpromData, 2, &data);
++	set_registers(pegasus, EpromData, 2, &le_data);
+ 	set_register(pegasus, EpromCtrl, EPROM_WRITE);
+ 
+ 	for (i = 0; i < REG_TIMEOUT; i++) {
+@@ -923,29 +924,32 @@ static struct net_device_stats *pegasus_netdev_stats(struct net_device *dev)
+ 
+ static inline void disable_net_traffic(pegasus_t * pegasus)
+ {
+-	int tmp = 0;
++	__le16 tmp = cpu_to_le16(0);
+ 
+-	set_registers(pegasus, EthCtrl0, 2, &tmp);
++	set_registers(pegasus, EthCtrl0, sizeof(tmp), &tmp);
+ }
+ 
+ static inline void get_interrupt_interval(pegasus_t * pegasus)
+ {
+-	__u8 data[2];
++	u16 data;
++	u8 interval;
+ 
+-	read_eprom_word(pegasus, 4, (__u16 *) data);
++	read_eprom_word(pegasus, 4, &data);
++	interval = data >> 8;
+ 	if (pegasus->usb->speed != USB_SPEED_HIGH) {
+-		if (data[1] < 0x80) {
++		if (interval < 0x80) {
+ 			if (netif_msg_timer(pegasus))
+ 				dev_info(&pegasus->intf->dev, "intr interval "
+ 					"changed from %ums to %ums\n",
+-					data[1], 0x80);
+-			data[1] = 0x80;
++					interval, 0x80);
++			interval = 0x80;
++			data = (data & 0x00FF) | ((u16)interval << 8);
+ #ifdef PEGASUS_WRITE_EEPROM
+-			write_eprom_word(pegasus, 4, *(__u16 *) data);
++			write_eprom_word(pegasus, 4, data);
+ #endif
+ 		}
+ 	}
+-	pegasus->intr_interval = data[1];
++	pegasus->intr_interval = interval;
+ }
+ 
+ static void set_carrier(struct net_device *net)
+@@ -1299,7 +1303,8 @@ static int pegasus_blacklisted(struct usb_device *udev)
+ 	/* Special quirk to keep the driver from handling the Belkin Bluetooth
+ 	 * dongle which happens to have the same ID.
+ 	 */
+-	if ((udd->idVendor == VENDOR_BELKIN && udd->idProduct == 0x0121) &&
++	if ((udd->idVendor == cpu_to_le16(VENDOR_BELKIN)) &&
++	    (udd->idProduct == cpu_to_le16(0x0121)) &&
+ 	    (udd->bDeviceClass == USB_CLASS_WIRELESS_CONTROLLER) &&
+ 	    (udd->bDeviceProtocol == 1))
+ 		return 1;
+diff --git a/drivers/net/via-velocity.c b/drivers/net/via-velocity.c
+index 754a4b1..b2816ad 100644
+--- a/drivers/net/via-velocity.c
++++ b/drivers/net/via-velocity.c
+@@ -1845,7 +1845,7 @@ static void velocity_free_tx_buf(struct velocity_info *vptr, struct velocity_td_
+ 	 */
+ 	if (tdinfo->skb_dma) {
+ 
+-		pktlen = (skb->len > ETH_ZLEN ? : ETH_ZLEN);
++		pktlen = max_t(unsigned int, skb->len, ETH_ZLEN);
+ 		for (i = 0; i < tdinfo->nskb_dma; i++) {
+ #ifdef VELOCITY_ZERO_COPY_SUPPORT
+ 			pci_unmap_single(vptr->pdev, tdinfo->skb_dma[i], le16_to_cpu(td->tdesc1.len), PCI_DMA_TODEVICE);
+diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
+index 32df27a..409f022 100644
+--- a/drivers/net/wireless/ath5k/base.c
++++ b/drivers/net/wireless/ath5k/base.c
+@@ -685,6 +685,13 @@ ath5k_pci_resume(struct pci_dev *pdev)
+ 	if (err)
+ 		return err;
+ 
++	/*
++	 * Suspend/Resume resets the PCI configuration space, so we have to
++	 * re-disable the RETRY_TIMEOUT register (0x41) to keep
++	 * PCI Tx retries from interfering with C3 CPU state
++	 */
++	pci_write_config_byte(pdev, 0x41, 0);
++
+ 	err = request_irq(pdev->irq, ath5k_intr, IRQF_SHARED, "ath", sc);
+ 	if (err) {
+ 		ATH5K_ERR(sc, "request_irq failed\n");
+diff --git a/drivers/net/wireless/ath9k/calib.c b/drivers/net/wireless/ath9k/calib.c
+index e2d62e9..2117074 100644
+--- a/drivers/net/wireless/ath9k/calib.c
++++ b/drivers/net/wireless/ath9k/calib.c
+@@ -284,8 +284,8 @@ static bool ath9k_hw_iscal_supported(struct ath_hw *ah,
+ 		return true;
+ 	case ADC_GAIN_CAL:
+ 	case ADC_DC_CAL:
+-		if (conf->channel->band == IEEE80211_BAND_5GHZ &&
+-		  conf_is_ht20(conf))
++		if (!(conf->channel->band == IEEE80211_BAND_2GHZ &&
++		      conf_is_ht20(conf)))
+ 			return true;
+ 		break;
+ 	}
+@@ -883,7 +883,7 @@ bool ath9k_hw_calibrate(struct ath_hw *ah, struct ath9k_channel *chan,
+ static bool ar9285_clc(struct ath_hw *ah, struct ath9k_channel *chan)
+ {
+ 	REG_SET_BIT(ah, AR_PHY_CL_CAL_CTL, AR_PHY_CL_CAL_ENABLE);
+-	if (chan->channelFlags & CHANNEL_HT20) {
++	if (IS_CHAN_HT20(chan)) {
+ 		REG_SET_BIT(ah, AR_PHY_CL_CAL_CTL, AR_PHY_PARALLEL_CAL_ENABLE);
+ 		REG_SET_BIT(ah, AR_PHY_TURBO, AR_PHY_FC_DYN2040_EN);
+ 		REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL,
+@@ -919,83 +919,66 @@ static bool ar9285_clc(struct ath_hw *ah, struct ath9k_channel *chan)
+ 	return true;
+ }
+ 
+-bool ath9k_hw_init_cal(struct ath_hw *ah,
+-		       struct ath9k_channel *chan)
++bool ath9k_hw_init_cal(struct ath_hw *ah, struct ath9k_channel *chan)
+ {
+ 	if (AR_SREV_9285(ah) && AR_SREV_9285_12_OR_LATER(ah)) {
+ 		if (!ar9285_clc(ah, chan))
+ 			return false;
+-	} else if (AR_SREV_9280_10_OR_LATER(ah)) {
+-		REG_CLR_BIT(ah, AR_PHY_ADC_CTL, AR_PHY_ADC_CTL_OFF_PWDADC);
+-		REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_FLTR_CAL);
+-		REG_CLR_BIT(ah, AR_PHY_CL_CAL_CTL, AR_PHY_CL_CAL_ENABLE);
++	} else {
++		if (AR_SREV_9280_10_OR_LATER(ah)) {
++			REG_CLR_BIT(ah, AR_PHY_ADC_CTL, AR_PHY_ADC_CTL_OFF_PWDADC);
++			REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_FLTR_CAL);
++		}
+ 
+-		/* Kick off the cal */
++		/* Calibrate the AGC */
+ 		REG_WRITE(ah, AR_PHY_AGC_CONTROL,
+-				REG_READ(ah, AR_PHY_AGC_CONTROL) |
+-				AR_PHY_AGC_CONTROL_CAL);
++			  REG_READ(ah, AR_PHY_AGC_CONTROL) |
++			  AR_PHY_AGC_CONTROL_CAL);
+ 
+-		if (!ath9k_hw_wait(ah, AR_PHY_AGC_CONTROL,
+-					AR_PHY_AGC_CONTROL_CAL, 0,
+-					AH_WAIT_TIMEOUT)) {
++		/* Poll for offset calibration complete */
++		if (!ath9k_hw_wait(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_CAL,
++				   0, AH_WAIT_TIMEOUT)) {
+ 			DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
+ 				"offset calibration failed to complete in 1ms; "
+ 				"noisy environment?\n");
+ 			return false;
+ 		}
+ 
+-		REG_CLR_BIT(ah, AR_PHY_ADC_CTL, AR_PHY_ADC_CTL_OFF_PWDADC);
+-		REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_FLTR_CAL);
+-		REG_SET_BIT(ah, AR_PHY_CL_CAL_CTL, AR_PHY_CL_CAL_ENABLE);
+-	}
+-
+-	/* Calibrate the AGC */
+-	REG_WRITE(ah, AR_PHY_AGC_CONTROL,
+-			REG_READ(ah, AR_PHY_AGC_CONTROL) |
+-			AR_PHY_AGC_CONTROL_CAL);
+-
+-	if (!ath9k_hw_wait(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_CAL,
+-				0, AH_WAIT_TIMEOUT)) {
+-		DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
+-			"offset calibration failed to complete in 1ms; "
+-			"noisy environment?\n");
+-		return false;
+-	}
+-
+-	if (AR_SREV_9280_10_OR_LATER(ah)) {
+-		REG_SET_BIT(ah, AR_PHY_ADC_CTL, AR_PHY_ADC_CTL_OFF_PWDADC);
+-		REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_FLTR_CAL);
++		if (AR_SREV_9280_10_OR_LATER(ah)) {
++			REG_SET_BIT(ah, AR_PHY_ADC_CTL, AR_PHY_ADC_CTL_OFF_PWDADC);
++			REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_FLTR_CAL);
++		}
+ 	}
+ 
+ 	/* Do PA Calibration */
+ 	if (AR_SREV_9285(ah) && AR_SREV_9285_11_OR_LATER(ah))
+ 		ath9k_hw_9285_pa_cal(ah);
+ 
+-	/* Do NF Calibration */
++	/* Do NF Calibration after DC offset and other calibrations */
+ 	REG_WRITE(ah, AR_PHY_AGC_CONTROL,
+-			REG_READ(ah, AR_PHY_AGC_CONTROL) |
+-			AR_PHY_AGC_CONTROL_NF);
++		  REG_READ(ah, AR_PHY_AGC_CONTROL) | AR_PHY_AGC_CONTROL_NF);
+ 
+ 	ah->cal_list = ah->cal_list_last = ah->cal_list_curr = NULL;
+ 
++	/* Enable IQ, ADC Gain and ADC DC offset CALs */
+ 	if (AR_SREV_9100(ah) || AR_SREV_9160_10_OR_LATER(ah)) {
+ 		if (ath9k_hw_iscal_supported(ah, ADC_GAIN_CAL)) {
+ 			INIT_CAL(&ah->adcgain_caldata);
+ 			INSERT_CAL(ah, &ah->adcgain_caldata);
+ 			DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
+-					"enabling ADC Gain Calibration.\n");
++				"enabling ADC Gain Calibration.\n");
+ 		}
+ 		if (ath9k_hw_iscal_supported(ah, ADC_DC_CAL)) {
+ 			INIT_CAL(&ah->adcdc_caldata);
+ 			INSERT_CAL(ah, &ah->adcdc_caldata);
+ 			DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
+-					"enabling ADC DC Calibration.\n");
++				"enabling ADC DC Calibration.\n");
+ 		}
+ 		if (ath9k_hw_iscal_supported(ah, IQ_MISMATCH_CAL)) {
+ 			INIT_CAL(&ah->iq_caldata);
+ 			INSERT_CAL(ah, &ah->iq_caldata);
+ 			DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE,
+-					"enabling IQ Calibration.\n");
++				"enabling IQ Calibration.\n");
+ 		}
+ 
+ 		ah->cal_list_curr = ah->cal_list;
+diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c
+index 13d4e67..bb5312f 100644
+--- a/drivers/net/wireless/ath9k/main.c
++++ b/drivers/net/wireless/ath9k/main.c
+@@ -408,6 +408,18 @@ set_timer:
+ 	mod_timer(&sc->ani.timer, jiffies + msecs_to_jiffies(cal_interval));
+ }
+ 
++static void ath_start_ani(struct ath_softc *sc)
++{
++	unsigned long timestamp = jiffies_to_msecs(jiffies);
++
++	sc->ani.longcal_timer = timestamp;
++	sc->ani.shortcal_timer = timestamp;
++	sc->ani.checkani_timer = timestamp;
++
++	mod_timer(&sc->ani.timer,
++		  jiffies + msecs_to_jiffies(ATH_ANI_POLLINTERVAL));
++}
++
+ /*
+  * Update tx/rx chainmask. For legacy association,
+  * hard code chainmask to 1x1, for 11n association, use
+@@ -920,9 +932,7 @@ static void ath9k_bss_assoc_info(struct ath_softc *sc,
+ 		sc->nodestats.ns_avgtxrssi = ATH_RSSI_DUMMY_MARKER;
+ 		sc->nodestats.ns_avgtxrate = ATH_RATE_DUMMY_MARKER;
+ 
+-		/* Start ANI */
+-		mod_timer(&sc->ani.timer,
+-			  jiffies + msecs_to_jiffies(ATH_ANI_POLLINTERVAL));
++		ath_start_ani(sc);
+ 	} else {
+ 		DPRINTF(sc, ATH_DBG_CONFIG, "Bss Info DISSOC\n");
+ 		sc->curaid = 0;
+@@ -1416,7 +1426,8 @@ static int ath_init(u16 devid, struct ath_softc *sc)
+ 	for (i = 0; i < sc->keymax; i++)
+ 		ath9k_hw_keyreset(ah, (u16) i);
+ 
+-	if (ath9k_regd_init(sc->sc_ah))
++	error = ath9k_regd_init(sc->sc_ah);
++	if (error)
+ 		goto bad;
+ 
+ 	/* default to MONITOR mode */
+@@ -2270,12 +2281,8 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
+ 
+ 	ath9k_hw_set_interrupts(sc->sc_ah, sc->imask);
+ 
+-	if (conf->type == NL80211_IFTYPE_AP) {
+-		/* TODO: is this a suitable place to start ANI for AP mode? */
+-		/* Start ANI */
+-		mod_timer(&sc->ani.timer,
+-			  jiffies + msecs_to_jiffies(ATH_ANI_POLLINTERVAL));
+-	}
++	if (conf->type == NL80211_IFTYPE_AP)
++		ath_start_ani(sc);
+ 
+ out:
+ 	mutex_unlock(&sc->mutex);
+@@ -2771,6 +2778,7 @@ static void ath9k_sw_scan_complete(struct ieee80211_hw *hw)
+ 	mutex_lock(&sc->mutex);
+ 	aphy->state = ATH_WIPHY_ACTIVE;
+ 	sc->sc_flags &= ~SC_OP_SCANNING;
++	sc->sc_flags |= SC_OP_FULL_RESET;
+ 	mutex_unlock(&sc->mutex);
+ }
+ 
+diff --git a/drivers/net/wireless/ath9k/pci.c b/drivers/net/wireless/ath9k/pci.c
+index 168411d..4affb49 100644
+--- a/drivers/net/wireless/ath9k/pci.c
++++ b/drivers/net/wireless/ath9k/pci.c
+@@ -87,6 +87,7 @@ static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+ 	struct ath_softc *sc;
+ 	struct ieee80211_hw *hw;
+ 	u8 csz;
++	u32 val;
+ 	int ret = 0;
+ 	struct ath_hw *ah;
+ 
+@@ -133,6 +134,14 @@ static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+ 
+ 	pci_set_master(pdev);
+ 
++	/*
++	 * Disable the RETRY_TIMEOUT register (0x41) to keep
++	 * PCI Tx retries from interfering with C3 CPU state.
++	 */
++	pci_read_config_dword(pdev, 0x40, &val);
++	if ((val & 0x0000ff00) != 0)
++		pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
++
+ 	ret = pci_request_region(pdev, 0, "ath9k");
+ 	if (ret) {
+ 		dev_err(&pdev->dev, "PCI memory region reserve error\n");
+@@ -244,12 +253,21 @@ static int ath_pci_resume(struct pci_dev *pdev)
+ 	struct ieee80211_hw *hw = pci_get_drvdata(pdev);
+ 	struct ath_wiphy *aphy = hw->priv;
+ 	struct ath_softc *sc = aphy->sc;
++	u32 val;
+ 	int err;
+ 
+ 	err = pci_enable_device(pdev);
+ 	if (err)
+ 		return err;
+ 	pci_restore_state(pdev);
++	/*
++	 * Suspend/Resume resets the PCI configuration space, so we have to
++	 * re-disable the RETRY_TIMEOUT register (0x41) to keep
++	 * PCI Tx retries from interfering with C3 CPU state
++	 */
++	pci_read_config_dword(pdev, 0x40, &val);
++	if ((val & 0x0000ff00) != 0)
++		pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
+ 
+ 	/* Enable LED */
+ 	ath9k_hw_cfg_output(sc->sc_ah, ATH_LED_PIN,
+diff --git a/drivers/net/wireless/ath9k/regd.c b/drivers/net/wireless/ath9k/regd.c
+index 4ca6251..5256d24 100644
+--- a/drivers/net/wireless/ath9k/regd.c
++++ b/drivers/net/wireless/ath9k/regd.c
+@@ -439,7 +439,7 @@ int ath9k_regd_init(struct ath_hw *ah)
+ 	u16 regdmn;
+ 
+ 	if (!ath9k_regd_is_eeprom_valid(ah)) {
+-		DPRINTF(ah->ah_sc, ATH_DBG_REGULATORY,
++		DPRINTF(ah->ah_sc, ATH_DBG_FATAL,
+ 			"Invalid EEPROM contents\n");
+ 		return -EINVAL;
+ 	}
+diff --git a/drivers/net/wireless/ath9k/xmit.c b/drivers/net/wireless/ath9k/xmit.c
+index 689bdbf..c92f442 100644
+--- a/drivers/net/wireless/ath9k/xmit.c
++++ b/drivers/net/wireless/ath9k/xmit.c
+@@ -1573,8 +1573,9 @@ static int ath_tx_setup_buffer(struct ieee80211_hw *hw, struct ath_buf *bf,
+ 					   skb->len, DMA_TO_DEVICE);
+ 	if (unlikely(dma_mapping_error(sc->dev, bf->bf_dmacontext))) {
+ 		bf->bf_mpdu = NULL;
+-		DPRINTF(sc, ATH_DBG_CONFIG,
+-			"dma_mapping_error() on TX\n");
++		kfree(tx_info_priv);
++		tx_info->rate_driver_data[0] = NULL;
++		DPRINTF(sc, ATH_DBG_FATAL, "dma_mapping_error() on TX\n");
+ 		return -ENOMEM;
+ 	}
+ 
+diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
+index 4e63cc9..3d3c9c0 100644
+--- a/drivers/parport/parport_pc.c
++++ b/drivers/parport/parport_pc.c
+@@ -1413,11 +1413,13 @@ static void __devinit decode_smsc(int efer, int key, int devid, int devrev)
+ 
+ static void __devinit winbond_check(int io, int key)
+ {
+-	int devid,devrev,oldid,x_devid,x_devrev,x_oldid;
++	int origval, devid, devrev, oldid, x_devid, x_devrev, x_oldid;
+ 
+ 	if (!request_region(io, 3, __func__))
+ 		return;
+ 
++	origval = inb(io); /* Save original value */
++
+ 	/* First probe without key */
+ 	outb(0x20,io);
+ 	x_devid=inb(io+1);
+@@ -1437,6 +1439,8 @@ static void __devinit winbond_check(int io, int key)
+ 	oldid=inb(io+1);
+ 	outb(0xaa,io);    /* Magic Seal */
+ 
++	outb(origval, io); /* in case we poked some entirely different hardware */
++
+ 	if ((x_devid == devid) && (x_devrev == devrev) && (x_oldid == oldid))
+ 		goto out; /* protection against false positives */
+ 
+@@ -1447,11 +1451,15 @@ out:
+ 
+ static void __devinit winbond_check2(int io,int key)
+ {
+-        int devid,devrev,oldid,x_devid,x_devrev,x_oldid;
++	int origval[3], devid, devrev, oldid, x_devid, x_devrev, x_oldid;
+ 
+ 	if (!request_region(io, 3, __func__))
+ 		return;
+ 
++	origval[0] = inb(io); /* Save original values */
++	origval[1] = inb(io + 1);
++	origval[2] = inb(io + 2);
++
+ 	/* First probe without the key */
+ 	outb(0x20,io+2);
+ 	x_devid=inb(io+2);
+@@ -1470,6 +1478,10 @@ static void __devinit winbond_check2(int io,int key)
+         oldid=inb(io+2);
+         outb(0xaa,io);    /* Magic Seal */
+ 
++	outb(origval[0], io); /* in case we poked some entirely different hardware */
++	outb(origval[1], io + 1);
++	outb(origval[2], io + 2);
++
+ 	if ((x_devid == devid) && (x_devrev == devrev) && (x_oldid == oldid))
+ 		goto out; /* protection against false positives */
+ 
+@@ -1480,11 +1492,13 @@ out:
+ 
+ static void __devinit smsc_check(int io, int key)
+ {
+-        int id,rev,oldid,oldrev,x_id,x_rev,x_oldid,x_oldrev;
++	int origval, id, rev, oldid, oldrev, x_id, x_rev, x_oldid, x_oldrev;
+ 
+ 	if (!request_region(io, 3, __func__))
+ 		return;
+ 
++	origval = inb(io); /* Save original value */
++
+ 	/* First probe without the key */
+ 	outb(0x0d,io);
+ 	x_oldid=inb(io+1);
+@@ -1508,6 +1522,8 @@ static void __devinit smsc_check(int io, int key)
+ 	rev=inb(io+1);
+         outb(0xaa,io);    /* Magic Seal */
+ 
++	outb(origval, io); /* in case we poked some entirely different hardware */
++
+ 	if ((x_id == id) && (x_oldrev == oldrev) &&
+ 	    (x_oldid == oldid) && (x_rev == rev))
+ 		goto out; /* protection against false positives */
+@@ -1544,11 +1560,12 @@ static void __devinit detect_and_report_smsc (void)
+ static void __devinit detect_and_report_it87(void)
+ {
+ 	u16 dev;
+-	u8 r;
++	u8 origval, r;
+ 	if (verbose_probing)
+ 		printk(KERN_DEBUG "IT8705 Super-IO detection, now testing port 2E ...\n");
+-	if (!request_region(0x2e, 1, __func__))
++	if (!request_region(0x2e, 2, __func__))
+ 		return;
++	origval = inb(0x2e);		/* Save original value */
+ 	outb(0x87, 0x2e);
+ 	outb(0x01, 0x2e);
+ 	outb(0x55, 0x2e);
+@@ -1568,8 +1585,10 @@ static void __devinit detect_and_report_it87(void)
+ 		outb(r | 8, 0x2F);
+ 		outb(0x02, 0x2E);	/* Lock */
+ 		outb(0x02, 0x2F);
++	} else {
++		outb(origval, 0x2e);	/* Oops, sorry to disturb */
+ 	}
+-	release_region(0x2e, 1);
++	release_region(0x2e, 2);
+ }
+ #endif /* CONFIG_PARPORT_PC_SUPERIO */
+ 
+@@ -2193,6 +2212,9 @@ struct parport *parport_pc_probe_port(unsigned long int base,
+ 		if (IS_ERR(pdev))
+ 			return NULL;
+ 		dev = &pdev->dev;
++
++		dev->coherent_dma_mask = DMA_BIT_MASK(24);
++		dev->dma_mask = &dev->coherent_dma_mask;
+ 	}
+ 
+ 	ops = kmalloc(sizeof(struct parport_operations), GFP_KERNEL);
+diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
+index 1a91bf9..440f4fb 100644
+--- a/drivers/pci/pci.c
++++ b/drivers/pci/pci.c
+@@ -480,6 +480,8 @@ static int pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state)
+ 		pmcsr &= ~PCI_PM_CTRL_STATE_MASK;
+ 		pmcsr |= state;
+ 		break;
++	case PCI_D3hot:
++	case PCI_D3cold:
+ 	case PCI_UNKNOWN: /* Boot-up */
+ 		if ((pmcsr & PCI_PM_CTRL_STATE_MASK) == PCI_D3hot
+ 		 && !(pmcsr & PCI_PM_CTRL_NO_SOFT_RESET))
+@@ -1282,15 +1284,14 @@ pci_power_t pci_target_state(struct pci_dev *dev)
+ 		default:
+ 			target_state = state;
+ 		}
++	} else if (!dev->pm_cap) {
++		target_state = PCI_D0;
+ 	} else if (device_may_wakeup(&dev->dev)) {
+ 		/*
+ 		 * Find the deepest state from which the device can generate
+ 		 * wake-up events, make it the target state and enable device
+ 		 * to generate PME#.
+ 		 */
+-		if (!dev->pm_cap)
+-			return PCI_POWER_ERROR;
+-
+ 		if (dev->pme_support) {
+ 			while (target_state
+ 			      && !(dev->pme_support & (1 << target_state)))
+diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
+index b0367f1..777b2c7 100644
+--- a/drivers/pci/pcie/aspm.c
++++ b/drivers/pci/pcie/aspm.c
+@@ -638,6 +638,10 @@ void pcie_aspm_init_link_state(struct pci_dev *pdev)
+ 	if (pdev->pcie_type != PCI_EXP_TYPE_ROOT_PORT &&
+ 		pdev->pcie_type != PCI_EXP_TYPE_DOWNSTREAM)
+ 		return;
++	/* VIA has a strange chipset, root port is under a bridge */
++	if (pdev->pcie_type == PCI_EXP_TYPE_ROOT_PORT &&
++		pdev->bus->self)
++		return;
+ 	down_read(&pci_bus_sem);
+ 	if (list_empty(&pdev->subordinate->devices))
+ 		goto out;
+diff --git a/drivers/scsi/qla2xxx/qla_dbg.c b/drivers/scsi/qla2xxx/qla_dbg.c
+index 34760f8..00856ba 100644
+--- a/drivers/scsi/qla2xxx/qla_dbg.c
++++ b/drivers/scsi/qla2xxx/qla_dbg.c
+@@ -218,7 +218,7 @@ qla24xx_soft_reset(struct qla_hw_data *ha)
+ 
+ static int
+ qla2xxx_dump_ram(struct qla_hw_data *ha, uint32_t addr, uint16_t *ram,
+-    uint16_t ram_words, void **nxt)
++    uint32_t ram_words, void **nxt)
+ {
+ 	int rval;
+ 	uint32_t cnt, stat, timer, words, idx;
+diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.c b/drivers/scsi/sym53c8xx_2/sym_hipd.c
+index ffa70d1..e9e1865 100644
+--- a/drivers/scsi/sym53c8xx_2/sym_hipd.c
++++ b/drivers/scsi/sym53c8xx_2/sym_hipd.c
+@@ -2312,8 +2312,9 @@ static void sym_int_par (struct sym_hcb *np, u_short sist)
+ 	int phase	= cmd & 7;
+ 	struct sym_ccb *cp	= sym_ccb_from_dsa(np, dsa);
+ 
+-	printf("%s: SCSI parity error detected: SCR1=%d DBC=%x SBCL=%x\n",
+-		sym_name(np), hsts, dbc, sbcl);
++	if (printk_ratelimit())
++		printf("%s: SCSI parity error detected: SCR1=%d DBC=%x SBCL=%x\n",
++			sym_name(np), hsts, dbc, sbcl);
+ 
+ 	/*
+ 	 *  Check that the chip is connected to the SCSI BUS.
+diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c
+index d86123e..a543acf 100644
+--- a/drivers/serial/bfin_5xx.c
++++ b/drivers/serial/bfin_5xx.c
+@@ -38,6 +38,10 @@
+ #include <asm/cacheflush.h>
+ #endif
+ 
++#ifdef CONFIG_SERIAL_BFIN_MODULE
++# undef CONFIG_EARLY_PRINTK
++#endif
++
+ /* UART name and device definitions */
+ #define BFIN_SERIAL_NAME	"ttyBF"
+ #define BFIN_SERIAL_MAJOR	204
+@@ -1058,6 +1062,7 @@ static void __init bfin_serial_init_ports(void)
+ 	bfin_serial_hw_init();
+ 
+ 	for (i = 0; i < nr_active_ports; i++) {
++		spin_lock_init(&bfin_serial_ports[i].port.lock);
+ 		bfin_serial_ports[i].port.uartclk   = get_sclk();
+ 		bfin_serial_ports[i].port.fifosize  = BFIN_UART_TX_FIFO_SIZE;
+ 		bfin_serial_ports[i].port.ops       = &bfin_serial_pops;
+diff --git a/drivers/spi/spi_mpc83xx.c b/drivers/spi/spi_mpc83xx.c
+index f4573a9..a32ccb4 100644
+--- a/drivers/spi/spi_mpc83xx.c
++++ b/drivers/spi/spi_mpc83xx.c
+@@ -711,12 +711,12 @@ static int of_mpc83xx_spi_get_chipselects(struct device *dev)
+ 		return 0;
+ 	}
+ 
+-	pinfo->gpios = kmalloc(ngpios * sizeof(pinfo->gpios), GFP_KERNEL);
++	pinfo->gpios = kmalloc(ngpios * sizeof(*pinfo->gpios), GFP_KERNEL);
+ 	if (!pinfo->gpios)
+ 		return -ENOMEM;
+-	memset(pinfo->gpios, -1, ngpios * sizeof(pinfo->gpios));
++	memset(pinfo->gpios, -1, ngpios * sizeof(*pinfo->gpios));
+ 
+-	pinfo->alow_flags = kzalloc(ngpios * sizeof(pinfo->alow_flags),
++	pinfo->alow_flags = kzalloc(ngpios * sizeof(*pinfo->alow_flags),
+ 				    GFP_KERNEL);
+ 	if (!pinfo->alow_flags) {
+ 		ret = -ENOMEM;
+diff --git a/drivers/staging/uc2322/aten2011.c b/drivers/staging/uc2322/aten2011.c
+index 9c62f78..39d0926 100644
+--- a/drivers/staging/uc2322/aten2011.c
++++ b/drivers/staging/uc2322/aten2011.c
+@@ -2336,7 +2336,7 @@ static int ATEN2011_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void ATEN2011_shutdown(struct usb_serial *serial)
++static void ATEN2011_release(struct usb_serial *serial)
+ {
+ 	int i;
+ 	struct ATENINTL_port *ATEN2011_port;
+@@ -2382,7 +2382,7 @@ static struct usb_serial_driver aten_serial_driver = {
+ 	.tiocmget =		ATEN2011_tiocmget,
+ 	.tiocmset =		ATEN2011_tiocmset,
+ 	.attach =		ATEN2011_startup,
+-	.shutdown =		ATEN2011_shutdown,
++	.release =		ATEN2011_release,
+ 	.read_bulk_callback =	ATEN2011_bulk_in_callback,
+ 	.read_int_callback =	ATEN2011_interrupt_callback,
+ };
+diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c
+index c40a9b2..3703789 100644
+--- a/drivers/usb/class/usbtmc.c
++++ b/drivers/usb/class/usbtmc.c
+@@ -927,21 +927,27 @@ static long usbtmc_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+ 	switch (cmd) {
+ 	case USBTMC_IOCTL_CLEAR_OUT_HALT:
+ 		retval = usbtmc_ioctl_clear_out_halt(data);
++		break;
+ 
+ 	case USBTMC_IOCTL_CLEAR_IN_HALT:
+ 		retval = usbtmc_ioctl_clear_in_halt(data);
++		break;
+ 
+ 	case USBTMC_IOCTL_INDICATOR_PULSE:
+ 		retval = usbtmc_ioctl_indicator_pulse(data);
++		break;
+ 
+ 	case USBTMC_IOCTL_CLEAR:
+ 		retval = usbtmc_ioctl_clear(data);
++		break;
+ 
+ 	case USBTMC_IOCTL_ABORT_BULK_OUT:
+ 		retval = usbtmc_ioctl_abort_bulk_out(data);
++		break;
+ 
+ 	case USBTMC_IOCTL_ABORT_BULK_IN:
+ 		retval = usbtmc_ioctl_abort_bulk_in(data);
++		break;
+ 	}
+ 
+ 	mutex_unlock(&data->io_mutex);
+diff --git a/drivers/usb/serial/aircable.c b/drivers/usb/serial/aircable.c
+index 6d106e7..2cbfab3 100644
+--- a/drivers/usb/serial/aircable.c
++++ b/drivers/usb/serial/aircable.c
+@@ -364,7 +364,7 @@ static int aircable_attach(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void aircable_shutdown(struct usb_serial *serial)
++static void aircable_release(struct usb_serial *serial)
+ {
+ 
+ 	struct usb_serial_port *port = serial->port[0];
+@@ -375,7 +375,6 @@ static void aircable_shutdown(struct usb_serial *serial)
+ 	if (priv) {
+ 		serial_buf_free(priv->tx_buf);
+ 		serial_buf_free(priv->rx_buf);
+-		usb_set_serial_port_data(port, NULL);
+ 		kfree(priv);
+ 	}
+ }
+@@ -601,7 +600,7 @@ static struct usb_serial_driver aircable_device = {
+ 	.num_ports =		1,
+ 	.attach =		aircable_attach,
+ 	.probe =		aircable_probe,
+-	.shutdown =		aircable_shutdown,
++	.release =		aircable_release,
+ 	.write =		aircable_write,
+ 	.write_room =		aircable_write_room,
+ 	.write_bulk_callback =	aircable_write_bulk_callback,
+diff --git a/drivers/usb/serial/belkin_sa.c b/drivers/usb/serial/belkin_sa.c
+index b7eacad..9637228 100644
+--- a/drivers/usb/serial/belkin_sa.c
++++ b/drivers/usb/serial/belkin_sa.c
+@@ -90,7 +90,7 @@ static int debug;
+ 
+ /* function prototypes for a Belkin USB Serial Adapter F5U103 */
+ static int  belkin_sa_startup(struct usb_serial *serial);
+-static void belkin_sa_shutdown(struct usb_serial *serial);
++static void belkin_sa_release(struct usb_serial *serial);
+ static int  belkin_sa_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static void belkin_sa_close(struct tty_struct *tty,
+@@ -143,7 +143,7 @@ static struct usb_serial_driver belkin_device = {
+ 	.tiocmget =		belkin_sa_tiocmget,
+ 	.tiocmset =		belkin_sa_tiocmset,
+ 	.attach =		belkin_sa_startup,
+-	.shutdown =		belkin_sa_shutdown,
++	.release =		belkin_sa_release,
+ };
+ 
+ 
+@@ -198,14 +198,13 @@ static int belkin_sa_startup(struct usb_serial *serial)
+ }
+ 
+ 
+-static void belkin_sa_shutdown(struct usb_serial *serial)
++static void belkin_sa_release(struct usb_serial *serial)
+ {
+ 	struct belkin_sa_private *priv;
+ 	int i;
+ 
+ 	dbg("%s", __func__);
+ 
+-	/* stop reads and writes on all ports */
+ 	for (i = 0; i < serial->num_ports; ++i) {
+ 		/* My special items, the standard routines free my urbs */
+ 		priv = usb_get_serial_port_data(serial->port[i]);
+diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
+index e8d5133..cf5093f 100644
+--- a/drivers/usb/serial/cp210x.c
++++ b/drivers/usb/serial/cp210x.c
+@@ -51,7 +51,7 @@ static int cp2101_tiocmset_port(struct usb_serial_port *port, struct file *,
+ 		unsigned int, unsigned int);
+ static void cp2101_break_ctl(struct tty_struct *, int);
+ static int cp2101_startup(struct usb_serial *);
+-static void cp2101_shutdown(struct usb_serial *);
++static void cp2101_disconnect(struct usb_serial *);
+ 
+ static int debug;
+ 
+@@ -131,7 +131,7 @@ static struct usb_serial_driver cp2101_device = {
+ 	.tiocmget 		= cp2101_tiocmget,
+ 	.tiocmset		= cp2101_tiocmset,
+ 	.attach			= cp2101_startup,
+-	.shutdown		= cp2101_shutdown,
++	.disconnect		= cp2101_disconnect,
+ };
+ 
+ /* Config request types */
+@@ -773,7 +773,7 @@ static int cp2101_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void cp2101_shutdown(struct usb_serial *serial)
++static void cp2101_disconnect(struct usb_serial *serial)
+ {
+ 	int i;
+ 
+diff --git a/drivers/usb/serial/cyberjack.c b/drivers/usb/serial/cyberjack.c
+index dd501bb..49cf9ee 100644
+--- a/drivers/usb/serial/cyberjack.c
++++ b/drivers/usb/serial/cyberjack.c
+@@ -58,7 +58,8 @@ static int debug;
+ 
+ /* Function prototypes */
+ static int cyberjack_startup(struct usb_serial *serial);
+-static void cyberjack_shutdown(struct usb_serial *serial);
++static void cyberjack_disconnect(struct usb_serial *serial);
++static void cyberjack_release(struct usb_serial *serial);
+ static int  cyberjack_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static void cyberjack_close(struct tty_struct *tty,
+@@ -95,7 +96,8 @@ static struct usb_serial_driver cyberjack_device = {
+ 	.id_table =		id_table,
+ 	.num_ports =		1,
+ 	.attach =		cyberjack_startup,
+-	.shutdown =		cyberjack_shutdown,
++	.disconnect =		cyberjack_disconnect,
++	.release =		cyberjack_release,
+ 	.open =			cyberjack_open,
+ 	.close =		cyberjack_close,
+ 	.write =		cyberjack_write,
+@@ -149,17 +151,25 @@ static int cyberjack_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void cyberjack_shutdown(struct usb_serial *serial)
++static void cyberjack_disconnect(struct usb_serial *serial)
+ {
+ 	int i;
+ 
+ 	dbg("%s", __func__);
+ 
+-	for (i = 0; i < serial->num_ports; ++i) {
++	for (i = 0; i < serial->num_ports; ++i)
+ 		usb_kill_urb(serial->port[i]->interrupt_in_urb);
++}
++
++static void cyberjack_release(struct usb_serial *serial)
++{
++	int i;
++
++	dbg("%s", __func__);
++
++	for (i = 0; i < serial->num_ports; ++i) {
+ 		/* My special items, the standard routines free my urbs */
+ 		kfree(usb_get_serial_port_data(serial->port[i]));
+-		usb_set_serial_port_data(serial->port[i], NULL);
+ 	}
+ }
+ 
+diff --git a/drivers/usb/serial/cypress_m8.c b/drivers/usb/serial/cypress_m8.c
+index e568710..b8e6e4d 100644
+--- a/drivers/usb/serial/cypress_m8.c
++++ b/drivers/usb/serial/cypress_m8.c
+@@ -171,7 +171,7 @@ struct cypress_buf {
+ static int  cypress_earthmate_startup(struct usb_serial *serial);
+ static int  cypress_hidcom_startup(struct usb_serial *serial);
+ static int  cypress_ca42v2_startup(struct usb_serial *serial);
+-static void cypress_shutdown(struct usb_serial *serial);
++static void cypress_release(struct usb_serial *serial);
+ static int  cypress_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static void cypress_close(struct tty_struct *tty,
+@@ -215,7 +215,7 @@ static struct usb_serial_driver cypress_earthmate_device = {
+ 	.id_table =			id_table_earthmate,
+ 	.num_ports =			1,
+ 	.attach =			cypress_earthmate_startup,
+-	.shutdown =			cypress_shutdown,
++	.release =			cypress_release,
+ 	.open =				cypress_open,
+ 	.close =			cypress_close,
+ 	.write =			cypress_write,
+@@ -241,7 +241,7 @@ static struct usb_serial_driver cypress_hidcom_device = {
+ 	.id_table =			id_table_cyphidcomrs232,
+ 	.num_ports =			1,
+ 	.attach =			cypress_hidcom_startup,
+-	.shutdown =			cypress_shutdown,
++	.release =			cypress_release,
+ 	.open =				cypress_open,
+ 	.close =			cypress_close,
+ 	.write =			cypress_write,
+@@ -267,7 +267,7 @@ static struct usb_serial_driver cypress_ca42v2_device = {
+ 	.id_table =			id_table_nokiaca42v2,
+ 	.num_ports =			1,
+ 	.attach =			cypress_ca42v2_startup,
+-	.shutdown =			cypress_shutdown,
++	.release =			cypress_release,
+ 	.open =				cypress_open,
+ 	.close =			cypress_close,
+ 	.write =			cypress_write,
+@@ -613,7 +613,7 @@ static int cypress_ca42v2_startup(struct usb_serial *serial)
+ } /* cypress_ca42v2_startup */
+ 
+ 
+-static void cypress_shutdown(struct usb_serial *serial)
++static void cypress_release(struct usb_serial *serial)
+ {
+ 	struct cypress_private *priv;
+ 
+@@ -626,7 +626,6 @@ static void cypress_shutdown(struct usb_serial *serial)
+ 	if (priv) {
+ 		cypress_buf_free(priv->buf);
+ 		kfree(priv);
+-		usb_set_serial_port_data(serial->port[0], NULL);
+ 	}
+ }
+ 
+diff --git a/drivers/usb/serial/digi_acceleport.c b/drivers/usb/serial/digi_acceleport.c
+index 38ba4ea..e9373db 100644
+--- a/drivers/usb/serial/digi_acceleport.c
++++ b/drivers/usb/serial/digi_acceleport.c
+@@ -460,7 +460,8 @@ static void digi_close(struct tty_struct *tty, struct usb_serial_port *port,
+ 	struct file *filp);
+ static int digi_startup_device(struct usb_serial *serial);
+ static int digi_startup(struct usb_serial *serial);
+-static void digi_shutdown(struct usb_serial *serial);
++static void digi_disconnect(struct usb_serial *serial);
++static void digi_release(struct usb_serial *serial);
+ static void digi_read_bulk_callback(struct urb *urb);
+ static int digi_read_inb_callback(struct urb *urb);
+ static int digi_read_oob_callback(struct urb *urb);
+@@ -522,7 +523,8 @@ static struct usb_serial_driver digi_acceleport_2_device = {
+ 	.tiocmget =			digi_tiocmget,
+ 	.tiocmset =			digi_tiocmset,
+ 	.attach =			digi_startup,
+-	.shutdown =			digi_shutdown,
++	.disconnect =			digi_disconnect,
++	.release =			digi_release,
+ };
+ 
+ static struct usb_serial_driver digi_acceleport_4_device = {
+@@ -548,7 +550,8 @@ static struct usb_serial_driver digi_acceleport_4_device = {
+ 	.tiocmget =			digi_tiocmget,
+ 	.tiocmset =			digi_tiocmset,
+ 	.attach =			digi_startup,
+-	.shutdown =			digi_shutdown,
++	.disconnect =			digi_disconnect,
++	.release =			digi_release,
+ };
+ 
+ 
+@@ -1589,16 +1592,23 @@ static int digi_startup(struct usb_serial *serial)
+ }
+ 
+ 
+-static void digi_shutdown(struct usb_serial *serial)
++static void digi_disconnect(struct usb_serial *serial)
+ {
+ 	int i;
+-	dbg("digi_shutdown: TOP, in_interrupt()=%ld", in_interrupt());
++	dbg("digi_disconnect: TOP, in_interrupt()=%ld", in_interrupt());
+ 
+ 	/* stop reads and writes on all ports */
+ 	for (i = 0; i < serial->type->num_ports + 1; i++) {
+ 		usb_kill_urb(serial->port[i]->read_urb);
+ 		usb_kill_urb(serial->port[i]->write_urb);
+ 	}
++}
++
++
++static void digi_release(struct usb_serial *serial)
++{
++	int i;
++	dbg("digi_release: TOP, in_interrupt()=%ld", in_interrupt());
+ 
+ 	/* free the private data structures for all ports */
+ 	/* number of regular ports + 1 for the out-of-band port */
+diff --git a/drivers/usb/serial/empeg.c b/drivers/usb/serial/empeg.c
+index c709ec4..b0d678c 100644
+--- a/drivers/usb/serial/empeg.c
++++ b/drivers/usb/serial/empeg.c
+@@ -91,7 +91,6 @@ static int  empeg_chars_in_buffer(struct tty_struct *tty);
+ static void empeg_throttle(struct tty_struct *tty);
+ static void empeg_unthrottle(struct tty_struct *tty);
+ static int  empeg_startup(struct usb_serial *serial);
+-static void empeg_shutdown(struct usb_serial *serial);
+ static void empeg_set_termios(struct tty_struct *tty,
+ 		struct usb_serial_port *port, struct ktermios *old_termios);
+ static void empeg_write_bulk_callback(struct urb *urb);
+@@ -125,7 +124,6 @@ static struct usb_serial_driver empeg_device = {
+ 	.throttle =		empeg_throttle,
+ 	.unthrottle =		empeg_unthrottle,
+ 	.attach =		empeg_startup,
+-	.shutdown =		empeg_shutdown,
+ 	.set_termios =		empeg_set_termios,
+ 	.write =		empeg_write,
+ 	.write_room =		empeg_write_room,
+@@ -429,12 +427,6 @@ static int  empeg_startup(struct usb_serial *serial)
+ }
+ 
+ 
+-static void empeg_shutdown(struct usb_serial *serial)
+-{
+-	dbg("%s", __func__);
+-}
+-
+-
+ static void empeg_set_termios(struct tty_struct *tty,
+ 		struct usb_serial_port *port, struct ktermios *old_termios)
+ {
+diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
+index d9fcdae..9722512 100644
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -714,7 +714,6 @@ static const char *ftdi_chip_name[] = {
+ /* function prototypes for a FTDI serial converter */
+ static int  ftdi_sio_probe(struct usb_serial *serial,
+ 					const struct usb_device_id *id);
+-static void ftdi_shutdown(struct usb_serial *serial);
+ static int  ftdi_sio_port_probe(struct usb_serial_port *port);
+ static int  ftdi_sio_port_remove(struct usb_serial_port *port);
+ static int  ftdi_open(struct tty_struct *tty,
+@@ -770,7 +769,6 @@ static struct usb_serial_driver ftdi_sio_device = {
+ 	.ioctl =		ftdi_ioctl,
+ 	.set_termios =		ftdi_set_termios,
+ 	.break_ctl =		ftdi_break_ctl,
+-	.shutdown =		ftdi_shutdown,
+ };
+ 
+ 
+@@ -1460,18 +1458,6 @@ static int ftdi_mtxorb_hack_setup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-/* ftdi_shutdown is called from usbserial:usb_serial_disconnect
+- *   it is called when the usb device is disconnected
+- *
+- *   usbserial:usb_serial_disconnect
+- *      calls __serial_close for each open of the port
+- *      shutdown is called then (ie ftdi_shutdown)
+- */
+-static void ftdi_shutdown(struct usb_serial *serial)
+-{
+-	dbg("%s", __func__);
+-}
+-
+ static void ftdi_sio_priv_release(struct kref *k)
+ {
+ 	struct ftdi_private *priv = container_of(k, struct ftdi_private, kref);
+diff --git a/drivers/usb/serial/garmin_gps.c b/drivers/usb/serial/garmin_gps.c
+index 586d30f..ed8bd90 100644
+--- a/drivers/usb/serial/garmin_gps.c
++++ b/drivers/usb/serial/garmin_gps.c
+@@ -1528,7 +1528,7 @@ static int garmin_attach(struct usb_serial *serial)
+ }
+ 
+ 
+-static void garmin_shutdown(struct usb_serial *serial)
++static void garmin_disconnect(struct usb_serial *serial)
+ {
+ 	struct usb_serial_port *port = serial->port[0];
+ 	struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
+@@ -1537,8 +1537,17 @@ static void garmin_shutdown(struct usb_serial *serial)
+ 
+ 	usb_kill_urb(port->interrupt_in_urb);
+ 	del_timer_sync(&garmin_data_p->timer);
++}
++
++
++static void garmin_release(struct usb_serial *serial)
++{
++	struct usb_serial_port *port = serial->port[0];
++	struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
++
++	dbg("%s", __func__);
++
+ 	kfree(garmin_data_p);
+-	usb_set_serial_port_data(port, NULL);
+ }
+ 
+ 
+@@ -1557,7 +1566,8 @@ static struct usb_serial_driver garmin_device = {
+ 	.throttle            = garmin_throttle,
+ 	.unthrottle          = garmin_unthrottle,
+ 	.attach              = garmin_attach,
+-	.shutdown            = garmin_shutdown,
++	.disconnect          = garmin_disconnect,
++	.release             = garmin_release,
+ 	.write               = garmin_write,
+ 	.write_room          = garmin_write_room,
+ 	.write_bulk_callback = garmin_write_bulk_callback,
+diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c
+index 4cec990..ef29788 100644
+--- a/drivers/usb/serial/generic.c
++++ b/drivers/usb/serial/generic.c
+@@ -63,7 +63,8 @@ struct usb_serial_driver usb_serial_generic_device = {
+ 	.id_table =		generic_device_ids,
+ 	.usb_driver = 		&generic_driver,
+ 	.num_ports =		1,
+-	.shutdown =		usb_serial_generic_shutdown,
++	.disconnect =		usb_serial_generic_disconnect,
++	.release =		usb_serial_generic_release,
+ 	.throttle =		usb_serial_generic_throttle,
+ 	.unthrottle =		usb_serial_generic_unthrottle,
+ 	.resume =		usb_serial_generic_resume,
+@@ -413,7 +414,7 @@ void usb_serial_generic_unthrottle(struct tty_struct *tty)
+ 	}
+ }
+ 
+-void usb_serial_generic_shutdown(struct usb_serial *serial)
++void usb_serial_generic_disconnect(struct usb_serial *serial)
+ {
+ 	int i;
+ 
+@@ -424,3 +425,7 @@ void usb_serial_generic_shutdown(struct usb_serial *serial)
+ 		generic_cleanup(serial->port[i]);
+ }
+ 
++void usb_serial_generic_release(struct usb_serial *serial)
++{
++	dbg("%s", __func__);
++}
+diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c
+index fb4a73d..fc509bb 100644
+--- a/drivers/usb/serial/io_edgeport.c
++++ b/drivers/usb/serial/io_edgeport.c
+@@ -225,7 +225,8 @@ static int  edge_tiocmget(struct tty_struct *tty, struct file *file);
+ static int  edge_tiocmset(struct tty_struct *tty, struct file *file,
+ 					unsigned int set, unsigned int clear);
+ static int  edge_startup(struct usb_serial *serial);
+-static void edge_shutdown(struct usb_serial *serial);
++static void edge_disconnect(struct usb_serial *serial);
++static void edge_release(struct usb_serial *serial);
+ 
+ #include "io_tables.h"	/* all of the devices that this driver supports */
+ 
+@@ -3195,21 +3196,16 @@ static int edge_startup(struct usb_serial *serial)
+ 
+ 
+ /****************************************************************************
+- * edge_shutdown
++ * edge_disconnect
+  *	This function is called whenever the device is removed from the usb bus.
+  ****************************************************************************/
+-static void edge_shutdown(struct usb_serial *serial)
++static void edge_disconnect(struct usb_serial *serial)
+ {
+ 	struct edgeport_serial *edge_serial = usb_get_serial_data(serial);
+-	int i;
+ 
+ 	dbg("%s", __func__);
+ 
+ 	/* stop reads and writes on all ports */
+-	for (i = 0; i < serial->num_ports; ++i) {
+-		kfree(usb_get_serial_port_data(serial->port[i]));
+-		usb_set_serial_port_data(serial->port[i],  NULL);
+-	}
+ 	/* free up our endpoint stuff */
+ 	if (edge_serial->is_epic) {
+ 		usb_kill_urb(edge_serial->interrupt_read_urb);
+@@ -3220,9 +3216,24 @@ static void edge_shutdown(struct usb_serial *serial)
+ 		usb_free_urb(edge_serial->read_urb);
+ 		kfree(edge_serial->bulk_in_buffer);
+ 	}
++}
++
++
++/****************************************************************************
++ * edge_release
++ *	This function is called when the device structure is deallocated.
++ ****************************************************************************/
++static void edge_release(struct usb_serial *serial)
++{
++	struct edgeport_serial *edge_serial = usb_get_serial_data(serial);
++	int i;
++
++	dbg("%s", __func__);
++
++	for (i = 0; i < serial->num_ports; ++i)
++		kfree(usb_get_serial_port_data(serial->port[i]));
+ 
+ 	kfree(edge_serial);
+-	usb_set_serial_data(serial, NULL);
+ }
+ 
+ 
+diff --git a/drivers/usb/serial/io_tables.h b/drivers/usb/serial/io_tables.h
+index 7eb9d67..9241d31 100644
+--- a/drivers/usb/serial/io_tables.h
++++ b/drivers/usb/serial/io_tables.h
+@@ -117,7 +117,8 @@ static struct usb_serial_driver edgeport_2port_device = {
+ 	.throttle		= edge_throttle,
+ 	.unthrottle		= edge_unthrottle,
+ 	.attach			= edge_startup,
+-	.shutdown		= edge_shutdown,
++	.disconnect		= edge_disconnect,
++	.release		= edge_release,
+ 	.ioctl			= edge_ioctl,
+ 	.set_termios		= edge_set_termios,
+ 	.tiocmget		= edge_tiocmget,
+@@ -145,7 +146,8 @@ static struct usb_serial_driver edgeport_4port_device = {
+ 	.throttle		= edge_throttle,
+ 	.unthrottle		= edge_unthrottle,
+ 	.attach			= edge_startup,
+-	.shutdown		= edge_shutdown,
++	.disconnect		= edge_disconnect,
++	.release		= edge_release,
+ 	.ioctl			= edge_ioctl,
+ 	.set_termios		= edge_set_termios,
+ 	.tiocmget		= edge_tiocmget,
+@@ -173,7 +175,8 @@ static struct usb_serial_driver edgeport_8port_device = {
+ 	.throttle		= edge_throttle,
+ 	.unthrottle		= edge_unthrottle,
+ 	.attach			= edge_startup,
+-	.shutdown		= edge_shutdown,
++	.disconnect		= edge_disconnect,
++	.release		= edge_release,
+ 	.ioctl			= edge_ioctl,
+ 	.set_termios		= edge_set_termios,
+ 	.tiocmget		= edge_tiocmget,
+@@ -200,7 +203,8 @@ static struct usb_serial_driver epic_device = {
+ 	.throttle		= edge_throttle,
+ 	.unthrottle		= edge_unthrottle,
+ 	.attach			= edge_startup,
+-	.shutdown		= edge_shutdown,
++	.disconnect		= edge_disconnect,
++	.release		= edge_release,
+ 	.ioctl			= edge_ioctl,
+ 	.set_termios		= edge_set_termios,
+ 	.tiocmget		= edge_tiocmget,
+diff --git a/drivers/usb/serial/io_ti.c b/drivers/usb/serial/io_ti.c
+index 513b25e..3139246 100644
+--- a/drivers/usb/serial/io_ti.c
++++ b/drivers/usb/serial/io_ti.c
+@@ -2664,7 +2664,7 @@ cleanup:
+ 	return -ENOMEM;
+ }
+ 
+-static void edge_shutdown(struct usb_serial *serial)
++static void edge_disconnect(struct usb_serial *serial)
+ {
+ 	int i;
+ 	struct edgeport_port *edge_port;
+@@ -2674,12 +2674,22 @@ static void edge_shutdown(struct usb_serial *serial)
+ 	for (i = 0; i < serial->num_ports; ++i) {
+ 		edge_port = usb_get_serial_port_data(serial->port[i]);
+ 		edge_remove_sysfs_attrs(edge_port->port);
++	}
++}
++
++static void edge_release(struct usb_serial *serial)
++{
++	int i;
++	struct edgeport_port *edge_port;
++
++	dbg("%s", __func__);
++
++	for (i = 0; i < serial->num_ports; ++i) {
++		edge_port = usb_get_serial_port_data(serial->port[i]);
+ 		edge_buf_free(edge_port->ep_out_buf);
+ 		kfree(edge_port);
+-		usb_set_serial_port_data(serial->port[i], NULL);
+ 	}
+ 	kfree(usb_get_serial_data(serial));
+-	usb_set_serial_data(serial, NULL);
+ }
+ 
+ 
+@@ -2916,7 +2926,8 @@ static struct usb_serial_driver edgeport_1port_device = {
+ 	.throttle		= edge_throttle,
+ 	.unthrottle		= edge_unthrottle,
+ 	.attach			= edge_startup,
+-	.shutdown		= edge_shutdown,
++	.disconnect		= edge_disconnect,
++	.release		= edge_release,
+ 	.port_probe		= edge_create_sysfs_attrs,
+ 	.ioctl			= edge_ioctl,
+ 	.set_termios		= edge_set_termios,
+@@ -2945,7 +2956,8 @@ static struct usb_serial_driver edgeport_2port_device = {
+ 	.throttle		= edge_throttle,
+ 	.unthrottle		= edge_unthrottle,
+ 	.attach			= edge_startup,
+-	.shutdown		= edge_shutdown,
++	.disconnect		= edge_disconnect,
++	.release		= edge_release,
+ 	.port_probe		= edge_create_sysfs_attrs,
+ 	.ioctl			= edge_ioctl,
+ 	.set_termios		= edge_set_termios,
+diff --git a/drivers/usb/serial/ipaq.c b/drivers/usb/serial/ipaq.c
+index cd62825..b70b0a0 100644
+--- a/drivers/usb/serial/ipaq.c
++++ b/drivers/usb/serial/ipaq.c
+@@ -80,7 +80,6 @@ static void ipaq_close(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static int  ipaq_calc_num_ports(struct usb_serial *serial);
+ static int  ipaq_startup(struct usb_serial *serial);
+-static void ipaq_shutdown(struct usb_serial *serial);
+ static int ipaq_write(struct tty_struct *tty, struct usb_serial_port *port,
+ 			const unsigned char *buf, int count);
+ static int ipaq_write_bulk(struct usb_serial_port *port,
+@@ -577,7 +576,6 @@ static struct usb_serial_driver ipaq_device = {
+ 	.close =		ipaq_close,
+ 	.attach =		ipaq_startup,
+ 	.calc_num_ports =	ipaq_calc_num_ports,
+-	.shutdown =		ipaq_shutdown,
+ 	.write =		ipaq_write,
+ 	.write_room =		ipaq_write_room,
+ 	.chars_in_buffer =	ipaq_chars_in_buffer,
+@@ -992,11 +990,6 @@ static int ipaq_startup(struct usb_serial *serial)
+ 	return usb_reset_configuration(serial->dev);
+ }
+ 
+-static void ipaq_shutdown(struct usb_serial *serial)
+-{
+-	dbg("%s", __func__);
+-}
+-
+ static int __init ipaq_init(void)
+ {
+ 	int retval;
+diff --git a/drivers/usb/serial/iuu_phoenix.c b/drivers/usb/serial/iuu_phoenix.c
+index 4473d44..c03015b 100644
+--- a/drivers/usb/serial/iuu_phoenix.c
++++ b/drivers/usb/serial/iuu_phoenix.c
+@@ -122,8 +122,8 @@ static int iuu_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-/* Shutdown function */
+-static void iuu_shutdown(struct usb_serial *serial)
++/* Release function */
++static void iuu_release(struct usb_serial *serial)
+ {
+ 	struct usb_serial_port *port = serial->port[0];
+ 	struct iuu_private *priv = usb_get_serial_port_data(port);
+@@ -1176,7 +1176,7 @@ static struct usb_serial_driver iuu_device = {
+ 	.tiocmget = iuu_tiocmget,
+ 	.tiocmset = iuu_tiocmset,
+ 	.attach = iuu_startup,
+-	.shutdown = iuu_shutdown,
++	.release = iuu_release,
+ };
+ 
+ static int __init iuu_init(void)
+diff --git a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c
+index 00daa8f..8c69c3c 100644
+--- a/drivers/usb/serial/keyspan.c
++++ b/drivers/usb/serial/keyspan.c
+@@ -2682,7 +2682,7 @@ static int keyspan_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void keyspan_shutdown(struct usb_serial *serial)
++static void keyspan_disconnect(struct usb_serial *serial)
+ {
+ 	int				i, j;
+ 	struct usb_serial_port		*port;
+@@ -2722,6 +2722,17 @@ static void keyspan_shutdown(struct usb_serial *serial)
+ 			usb_free_urb(p_priv->out_urbs[j]);
+ 		}
+ 	}
++}
++
++static void keyspan_release(struct usb_serial *serial)
++{
++	int				i;
++	struct usb_serial_port		*port;
++	struct keyspan_serial_private 	*s_priv;
++
++	dbg("%s", __func__);
++
++	s_priv = usb_get_serial_data(serial);
+ 
+ 	/*  dbg("Freeing serial->private."); */
+ 	kfree(s_priv);
+diff --git a/drivers/usb/serial/keyspan.h b/drivers/usb/serial/keyspan.h
+index 38b4582..4961c26 100644
+--- a/drivers/usb/serial/keyspan.h
++++ b/drivers/usb/serial/keyspan.h
+@@ -42,7 +42,8 @@ static void keyspan_close		(struct tty_struct *tty,
+ 					 struct usb_serial_port *port,
+ 					 struct file *filp);
+ static int  keyspan_startup		(struct usb_serial *serial);
+-static void keyspan_shutdown		(struct usb_serial *serial);
++static void keyspan_disconnect		(struct usb_serial *serial);
++static void keyspan_release		(struct usb_serial *serial);
+ static int  keyspan_write_room		(struct tty_struct *tty);
+ 
+ static int  keyspan_write		(struct tty_struct *tty,
+@@ -569,7 +570,8 @@ static struct usb_serial_driver keyspan_1port_device = {
+ 	.tiocmget		= keyspan_tiocmget,
+ 	.tiocmset		= keyspan_tiocmset,
+ 	.attach			= keyspan_startup,
+-	.shutdown		= keyspan_shutdown,
++	.disconnect		= keyspan_disconnect,
++	.release		= keyspan_release,
+ };
+ 
+ static struct usb_serial_driver keyspan_2port_device = {
+@@ -589,7 +591,8 @@ static struct usb_serial_driver keyspan_2port_device = {
+ 	.tiocmget		= keyspan_tiocmget,
+ 	.tiocmset		= keyspan_tiocmset,
+ 	.attach			= keyspan_startup,
+-	.shutdown		= keyspan_shutdown,
++	.disconnect		= keyspan_disconnect,
++	.release		= keyspan_release,
+ };
+ 
+ static struct usb_serial_driver keyspan_4port_device = {
+@@ -609,7 +612,8 @@ static struct usb_serial_driver keyspan_4port_device = {
+ 	.tiocmget		= keyspan_tiocmget,
+ 	.tiocmset		= keyspan_tiocmset,
+ 	.attach			= keyspan_startup,
+-	.shutdown		= keyspan_shutdown,
++	.disconnect		= keyspan_disconnect,
++	.release		= keyspan_release,
+ };
+ 
+ #endif
+diff --git a/drivers/usb/serial/keyspan_pda.c b/drivers/usb/serial/keyspan_pda.c
+index bf1ae24..d2e2b91 100644
+--- a/drivers/usb/serial/keyspan_pda.c
++++ b/drivers/usb/serial/keyspan_pda.c
+@@ -795,7 +795,7 @@ static int keyspan_pda_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void keyspan_pda_shutdown(struct usb_serial *serial)
++static void keyspan_pda_release(struct usb_serial *serial)
+ {
+ 	dbg("%s", __func__);
+ 
+@@ -853,7 +853,7 @@ static struct usb_serial_driver keyspan_pda_device = {
+ 	.tiocmget =		keyspan_pda_tiocmget,
+ 	.tiocmset =		keyspan_pda_tiocmset,
+ 	.attach =		keyspan_pda_startup,
+-	.shutdown =		keyspan_pda_shutdown,
++	.release =		keyspan_pda_release,
+ };
+ 
+ 
+diff --git a/drivers/usb/serial/kl5kusb105.c b/drivers/usb/serial/kl5kusb105.c
+index fcd9082..272a94f 100644
+--- a/drivers/usb/serial/kl5kusb105.c
++++ b/drivers/usb/serial/kl5kusb105.c
+@@ -73,7 +73,8 @@ static int debug;
+  * Function prototypes
+  */
+ static int  klsi_105_startup(struct usb_serial *serial);
+-static void klsi_105_shutdown(struct usb_serial *serial);
++static void klsi_105_disconnect(struct usb_serial *serial);
++static void klsi_105_release(struct usb_serial *serial);
+ static int  klsi_105_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static void klsi_105_close(struct tty_struct *tty,
+@@ -132,7 +133,8 @@ static struct usb_serial_driver kl5kusb105d_device = {
+ 	.tiocmget =          klsi_105_tiocmget,
+ 	.tiocmset =          klsi_105_tiocmset,
+ 	.attach =	     klsi_105_startup,
+-	.shutdown =	     klsi_105_shutdown,
++	.disconnect =	     klsi_105_disconnect,
++	.release =	     klsi_105_release,
+ 	.throttle =	     klsi_105_throttle,
+ 	.unthrottle =	     klsi_105_unthrottle,
+ };
+@@ -316,7 +318,7 @@ err_cleanup:
+ } /* klsi_105_startup */
+ 
+ 
+-static void klsi_105_shutdown(struct usb_serial *serial)
++static void klsi_105_disconnect(struct usb_serial *serial)
+ {
+ 	int i;
+ 
+@@ -326,33 +328,36 @@ static void klsi_105_shutdown(struct usb_serial *serial)
+ 	for (i = 0; i < serial->num_ports; ++i) {
+ 		struct klsi_105_private *priv =
+ 				usb_get_serial_port_data(serial->port[i]);
+-		unsigned long flags;
+ 
+ 		if (priv) {
+ 			/* kill our write urb pool */
+ 			int j;
+ 			struct urb **write_urbs = priv->write_urb_pool;
+-			spin_lock_irqsave(&priv->lock, flags);
+ 
+ 			for (j = 0; j < NUM_URBS; j++) {
+ 				if (write_urbs[j]) {
+-					/* FIXME - uncomment the following
+-					 * usb_kill_urb call when the host
+-					 * controllers get fixed to set
+-					 * urb->dev = NULL after the urb is
+-					 * finished.  Otherwise this call
+-					 * oopses. */
+-					/* usb_kill_urb(write_urbs[j]); */
+-					kfree(write_urbs[j]->transfer_buffer);
++					usb_kill_urb(write_urbs[j]);
+ 					usb_free_urb(write_urbs[j]);
+ 				}
+ 			}
+-			spin_unlock_irqrestore(&priv->lock, flags);
+-			kfree(priv);
+-			usb_set_serial_port_data(serial->port[i], NULL);
+ 		}
+ 	}
+-} /* klsi_105_shutdown */
++} /* klsi_105_disconnect */
++
++
++static void klsi_105_release(struct usb_serial *serial)
++{
++	int i;
++
++	dbg("%s", __func__);
++
++	for (i = 0; i < serial->num_ports; ++i) {
++		struct klsi_105_private *priv =
++				usb_get_serial_port_data(serial->port[i]);
++
++		kfree(priv);
++	}
++} /* klsi_105_release */
+ 
+ static int  klsi_105_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp)
+diff --git a/drivers/usb/serial/kobil_sct.c b/drivers/usb/serial/kobil_sct.c
+index c148544..d88368c 100644
+--- a/drivers/usb/serial/kobil_sct.c
++++ b/drivers/usb/serial/kobil_sct.c
+@@ -69,7 +69,7 @@ static int debug;
+ 
+ /* Function prototypes */
+ static int  kobil_startup(struct usb_serial *serial);
+-static void kobil_shutdown(struct usb_serial *serial);
++static void kobil_release(struct usb_serial *serial);
+ static int  kobil_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static void kobil_close(struct tty_struct *tty, struct usb_serial_port *port,
+@@ -118,7 +118,7 @@ static struct usb_serial_driver kobil_device = {
+ 	.id_table =		id_table,
+ 	.num_ports =		1,
+ 	.attach =		kobil_startup,
+-	.shutdown =		kobil_shutdown,
++	.release =		kobil_release,
+ 	.ioctl =		kobil_ioctl,
+ 	.set_termios =		kobil_set_termios,
+ 	.tiocmget =		kobil_tiocmget,
+@@ -202,17 +202,13 @@ static int kobil_startup(struct usb_serial *serial)
+ }
+ 
+ 
+-static void kobil_shutdown(struct usb_serial *serial)
++static void kobil_release(struct usb_serial *serial)
+ {
+ 	int i;
+ 	dbg("%s - port %d", __func__, serial->port[0]->number);
+ 
+-	for (i = 0; i < serial->num_ports; ++i) {
+-		while (serial->port[i]->port.count > 0)
+-			kobil_close(NULL, serial->port[i], NULL);
++	for (i = 0; i < serial->num_ports; ++i)
+ 		kfree(usb_get_serial_port_data(serial->port[i]));
+-		usb_set_serial_port_data(serial->port[i], NULL);
+-	}
+ }
+ 
+ 
+diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c
+index 82930a7..08ba8e6 100644
+--- a/drivers/usb/serial/mct_u232.c
++++ b/drivers/usb/serial/mct_u232.c
+@@ -92,7 +92,7 @@ static int debug;
+  * Function prototypes
+  */
+ static int  mct_u232_startup(struct usb_serial *serial);
+-static void mct_u232_shutdown(struct usb_serial *serial);
++static void mct_u232_release(struct usb_serial *serial);
+ static int  mct_u232_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static void mct_u232_close(struct tty_struct *tty,
+@@ -148,7 +148,7 @@ static struct usb_serial_driver mct_u232_device = {
+ 	.tiocmget =	     mct_u232_tiocmget,
+ 	.tiocmset =	     mct_u232_tiocmset,
+ 	.attach =	     mct_u232_startup,
+-	.shutdown =	     mct_u232_shutdown,
++	.release =	     mct_u232_release,
+ };
+ 
+ 
+@@ -406,7 +406,7 @@ static int mct_u232_startup(struct usb_serial *serial)
+ } /* mct_u232_startup */
+ 
+ 
+-static void mct_u232_shutdown(struct usb_serial *serial)
++static void mct_u232_release(struct usb_serial *serial)
+ {
+ 	struct mct_u232_private *priv;
+ 	int i;
+@@ -416,12 +416,9 @@ static void mct_u232_shutdown(struct usb_serial *serial)
+ 	for (i = 0; i < serial->num_ports; ++i) {
+ 		/* My special items, the standard routines free my urbs */
+ 		priv = usb_get_serial_port_data(serial->port[i]);
+-		if (priv) {
+-			usb_set_serial_port_data(serial->port[i], NULL);
+-			kfree(priv);
+-		}
++		kfree(priv);
+ 	}
+-} /* mct_u232_shutdown */
++} /* mct_u232_release */
+ 
+ static int  mct_u232_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp)
+diff --git a/drivers/usb/serial/mos7720.c b/drivers/usb/serial/mos7720.c
+index 24e3b5d..e0137ec 100644
+--- a/drivers/usb/serial/mos7720.c
++++ b/drivers/usb/serial/mos7720.c
+@@ -1522,19 +1522,16 @@ static int mos7720_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void mos7720_shutdown(struct usb_serial *serial)
++static void mos7720_release(struct usb_serial *serial)
+ {
+ 	int i;
+ 
+ 	/* free private structure allocated for serial port */
+-	for (i = 0; i < serial->num_ports; ++i) {
++	for (i = 0; i < serial->num_ports; ++i)
+ 		kfree(usb_get_serial_port_data(serial->port[i]));
+-		usb_set_serial_port_data(serial->port[i], NULL);
+-	}
+ 
+ 	/* free private structure allocated for serial device */
+ 	kfree(usb_get_serial_data(serial));
+-	usb_set_serial_data(serial, NULL);
+ }
+ 
+ static struct usb_driver usb_driver = {
+@@ -1559,7 +1556,7 @@ static struct usb_serial_driver moschip7720_2port_driver = {
+ 	.throttle		= mos7720_throttle,
+ 	.unthrottle		= mos7720_unthrottle,
+ 	.attach			= mos7720_startup,
+-	.shutdown		= mos7720_shutdown,
++	.release		= mos7720_release,
+ 	.ioctl			= mos7720_ioctl,
+ 	.set_termios		= mos7720_set_termios,
+ 	.write			= mos7720_write,
+diff --git a/drivers/usb/serial/mos7840.c b/drivers/usb/serial/mos7840.c
+index 84fb1dc..3d30268 100644
+--- a/drivers/usb/serial/mos7840.c
++++ b/drivers/usb/serial/mos7840.c
+@@ -2673,16 +2673,16 @@ error:
+ }
+ 
+ /****************************************************************************
+- * mos7840_shutdown
++ * mos7840_disconnect
+  *	This function is called whenever the device is removed from the usb bus.
+  ****************************************************************************/
+ 
+-static void mos7840_shutdown(struct usb_serial *serial)
++static void mos7840_disconnect(struct usb_serial *serial)
+ {
+ 	int i;
+ 	unsigned long flags;
+ 	struct moschip_port *mos7840_port;
+-	dbg("%s \n", " shutdown :entering..........");
++	dbg("%s \n", " disconnect :entering..........");
+ 
+ 	if (!serial) {
+ 		dbg("%s", "Invalid Handler \n");
+@@ -2702,11 +2702,42 @@ static void mos7840_shutdown(struct usb_serial *serial)
+ 			mos7840_port->zombie = 1;
+ 			spin_unlock_irqrestore(&mos7840_port->pool_lock, flags);
+ 			usb_kill_urb(mos7840_port->control_urb);
++		}
++	}
++
++	dbg("%s", "Thank u :: ");
++
++}
++
++/****************************************************************************
++ * mos7840_release
++ *	This function is called when the usb_serial structure is freed.
++ ****************************************************************************/
++
++static void mos7840_release(struct usb_serial *serial)
++{
++	int i;
++	struct moschip_port *mos7840_port;
++	dbg("%s", " release :entering..........");
++
++	if (!serial) {
++		dbg("%s", "Invalid Handler");
++		return;
++	}
++
++	/* check for the ports to be closed,close the ports and disconnect */
++
++	/* free private structure allocated for serial port  *
++	 * stop reads and writes on all ports                */
++
++	for (i = 0; i < serial->num_ports; ++i) {
++		mos7840_port = mos7840_get_port_private(serial->port[i]);
++		dbg("mos7840_port %d = %p", i, mos7840_port);
++		if (mos7840_port) {
+ 			kfree(mos7840_port->ctrl_buf);
+ 			kfree(mos7840_port->dr);
+ 			kfree(mos7840_port);
+ 		}
+-		mos7840_set_port_private(serial->port[i], NULL);
+ 	}
+ 
+ 	dbg("%s\n", "Thank u :: ");
+@@ -2747,7 +2778,8 @@ static struct usb_serial_driver moschip7840_4port_device = {
+ 	.tiocmget = mos7840_tiocmget,
+ 	.tiocmset = mos7840_tiocmset,
+ 	.attach = mos7840_startup,
+-	.shutdown = mos7840_shutdown,
++	.disconnect = mos7840_disconnect,
++	.release = mos7840_release,
+ 	.read_bulk_callback = mos7840_bulk_in_callback,
+ 	.read_int_callback = mos7840_interrupt_callback,
+ };
+diff --git a/drivers/usb/serial/omninet.c b/drivers/usb/serial/omninet.c
+index df65397..65fb5c6 100644
+--- a/drivers/usb/serial/omninet.c
++++ b/drivers/usb/serial/omninet.c
+@@ -73,7 +73,8 @@ static void omninet_write_bulk_callback(struct urb *urb);
+ static int  omninet_write(struct tty_struct *tty, struct usb_serial_port *port,
+ 				const unsigned char *buf, int count);
+ static int  omninet_write_room(struct tty_struct *tty);
+-static void omninet_shutdown(struct usb_serial *serial);
++static void omninet_disconnect(struct usb_serial *serial);
++static void omninet_release(struct usb_serial *serial);
+ static int omninet_attach(struct usb_serial *serial);
+ 
+ static struct usb_device_id id_table[] = {
+@@ -109,7 +110,8 @@ static struct usb_serial_driver zyxel_omninet_device = {
+ 	.write_room =		omninet_write_room,
+ 	.read_bulk_callback =	omninet_read_bulk_callback,
+ 	.write_bulk_callback =	omninet_write_bulk_callback,
+-	.shutdown =		omninet_shutdown,
++	.disconnect =		omninet_disconnect,
++	.release =		omninet_release,
+ };
+ 
+ 
+@@ -347,13 +349,22 @@ static void omninet_write_bulk_callback(struct urb *urb)
+ }
+ 
+ 
+-static void omninet_shutdown(struct usb_serial *serial)
++static void omninet_disconnect(struct usb_serial *serial)
+ {
+ 	struct usb_serial_port *wport = serial->port[1];
+-	struct usb_serial_port *port = serial->port[0];
++
+ 	dbg("%s", __func__);
+ 
+ 	usb_kill_urb(wport->write_urb);
++}
++
++
++static void omninet_release(struct usb_serial *serial)
++{
++	struct usb_serial_port *port = serial->port[0];
++
++	dbg("%s", __func__);
++
+ 	kfree(usb_get_serial_port_data(port));
+ }
+ 
+diff --git a/drivers/usb/serial/opticon.c b/drivers/usb/serial/opticon.c
+index b500ad1..1e99ae0 100644
+--- a/drivers/usb/serial/opticon.c
++++ b/drivers/usb/serial/opticon.c
+@@ -464,7 +464,7 @@ error:
+ 	return retval;
+ }
+ 
+-static void opticon_shutdown(struct usb_serial *serial)
++static void opticon_disconnect(struct usb_serial *serial)
+ {
+ 	struct opticon_private *priv = usb_get_serial_data(serial);
+ 
+@@ -472,9 +472,16 @@ static void opticon_shutdown(struct usb_serial *serial)
+ 
+ 	usb_kill_urb(priv->bulk_read_urb);
+ 	usb_free_urb(priv->bulk_read_urb);
++}
++
++static void opticon_release(struct usb_serial *serial)
++{
++	struct opticon_private *priv = usb_get_serial_data(serial);
++
++	dbg("%s", __func__);
++
+ 	kfree(priv->bulk_in_buffer);
+ 	kfree(priv);
+-	usb_set_serial_data(serial, NULL);
+ }
+ 
+ static int opticon_suspend(struct usb_interface *intf, pm_message_t message)
+@@ -525,7 +532,8 @@ static struct usb_serial_driver opticon_device = {
+ 	.close =		opticon_close,
+ 	.write =		opticon_write,
+ 	.write_room = 		opticon_write_room,
+-	.shutdown =		opticon_shutdown,
++	.disconnect =		opticon_disconnect,
++	.release =		opticon_release,
+ 	.throttle = 		opticon_throttle,
+ 	.unthrottle =		opticon_unthrottle,
+ 	.ioctl =		opticon_ioctl,
+diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
+index 7817b82..ab3d883 100644
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -48,7 +48,8 @@ static int  option_open(struct tty_struct *tty, struct usb_serial_port *port,
+ static void option_close(struct tty_struct *tty, struct usb_serial_port *port,
+ 							struct file *filp);
+ static int  option_startup(struct usb_serial *serial);
+-static void option_shutdown(struct usb_serial *serial);
++static void option_disconnect(struct usb_serial *serial);
++static void option_release(struct usb_serial *serial);
+ static int  option_write_room(struct tty_struct *tty);
+ 
+ static void option_instat_callback(struct urb *urb);
+@@ -558,7 +559,8 @@ static struct usb_serial_driver option_1port_device = {
+ 	.tiocmget          = option_tiocmget,
+ 	.tiocmset          = option_tiocmset,
+ 	.attach            = option_startup,
+-	.shutdown          = option_shutdown,
++	.disconnect        = option_disconnect,
++	.release           = option_release,
+ 	.read_int_callback = option_instat_callback,
+ 	.suspend           = option_suspend,
+ 	.resume            = option_resume,
+@@ -1129,7 +1131,14 @@ static void stop_read_write_urbs(struct usb_serial *serial)
+ 	}
+ }
+ 
+-static void option_shutdown(struct usb_serial *serial)
++static void option_disconnect(struct usb_serial *serial)
++{
++	dbg("%s", __func__);
++
++	stop_read_write_urbs(serial);
++}
++
++static void option_release(struct usb_serial *serial)
+ {
+ 	int i, j;
+ 	struct usb_serial_port *port;
+@@ -1137,8 +1146,6 @@ static void option_shutdown(struct usb_serial *serial)
+ 
+ 	dbg("%s", __func__);
+ 
+-	stop_read_write_urbs(serial);
+-
+ 	/* Now free them */
+ 	for (i = 0; i < serial->num_ports; ++i) {
+ 		port = serial->port[i];
+diff --git a/drivers/usb/serial/oti6858.c b/drivers/usb/serial/oti6858.c
+index ba551f0..f7388ef 100644
+--- a/drivers/usb/serial/oti6858.c
++++ b/drivers/usb/serial/oti6858.c
+@@ -160,7 +160,7 @@ static int oti6858_tiocmget(struct tty_struct *tty, struct file *file);
+ static int oti6858_tiocmset(struct tty_struct *tty, struct file *file,
+ 				unsigned int set, unsigned int clear);
+ static int oti6858_startup(struct usb_serial *serial);
+-static void oti6858_shutdown(struct usb_serial *serial);
++static void oti6858_release(struct usb_serial *serial);
+ 
+ /* functions operating on buffers */
+ static struct oti6858_buf *oti6858_buf_alloc(unsigned int size);
+@@ -195,7 +195,7 @@ static struct usb_serial_driver oti6858_device = {
+ 	.write_room =		oti6858_write_room,
+ 	.chars_in_buffer =	oti6858_chars_in_buffer,
+ 	.attach =		oti6858_startup,
+-	.shutdown =		oti6858_shutdown,
++	.release =		oti6858_release,
+ };
+ 
+ struct oti6858_private {
+@@ -829,7 +829,7 @@ static int oti6858_ioctl(struct tty_struct *tty, struct file *file,
+ }
+ 
+ 
+-static void oti6858_shutdown(struct usb_serial *serial)
++static void oti6858_release(struct usb_serial *serial)
+ {
+ 	struct oti6858_private *priv;
+ 	int i;
+@@ -841,7 +841,6 @@ static void oti6858_shutdown(struct usb_serial *serial)
+ 		if (priv) {
+ 			oti6858_buf_free(priv->buf);
+ 			kfree(priv);
+-			usb_set_serial_port_data(serial->port[i], NULL);
+ 		}
+ 	}
+ }
+diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
+index 751a533..4cf1ed1 100644
+--- a/drivers/usb/serial/pl2303.c
++++ b/drivers/usb/serial/pl2303.c
+@@ -897,7 +897,7 @@ static void pl2303_break_ctl(struct tty_struct *tty, int break_state)
+ 		dbg("%s - error sending break = %d", __func__, result);
+ }
+ 
+-static void pl2303_shutdown(struct usb_serial *serial)
++static void pl2303_release(struct usb_serial *serial)
+ {
+ 	int i;
+ 	struct pl2303_private *priv;
+@@ -909,7 +909,6 @@ static void pl2303_shutdown(struct usb_serial *serial)
+ 		if (priv) {
+ 			pl2303_buf_free(priv->buf);
+ 			kfree(priv);
+-			usb_set_serial_port_data(serial->port[i], NULL);
+ 		}
+ 	}
+ }
+@@ -1137,7 +1136,7 @@ static struct usb_serial_driver pl2303_device = {
+ 	.write_room =		pl2303_write_room,
+ 	.chars_in_buffer =	pl2303_chars_in_buffer,
+ 	.attach =		pl2303_startup,
+-	.shutdown =		pl2303_shutdown,
++	.release =		pl2303_release,
+ };
+ 
+ static int __init pl2303_init(void)
+diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c
+index 913225c..5a26ed8 100644
+--- a/drivers/usb/serial/sierra.c
++++ b/drivers/usb/serial/sierra.c
+@@ -699,7 +699,7 @@ static int sierra_startup(struct usb_serial *serial)
+ 	return 0;
+ }
+ 
+-static void sierra_shutdown(struct usb_serial *serial)
++static void sierra_disconnect(struct usb_serial *serial)
+ {
+ 	int i, j;
+ 	struct usb_serial_port *port;
+@@ -718,10 +718,29 @@ static void sierra_shutdown(struct usb_serial *serial)
+ 		for (j = 0; j < N_IN_URB; j++) {
+ 			usb_kill_urb(portdata->in_urbs[j]);
+ 			usb_free_urb(portdata->in_urbs[j]);
+-			kfree(portdata->in_buffer[j]);
+ 		}
++	}
++}
++
++static void sierra_release(struct usb_serial *serial)
++{
++	int i, j;
++	struct usb_serial_port *port;
++	struct sierra_port_private *portdata;
++
++	dev_dbg(&serial->dev->dev, "%s\n", __func__);
++
++	for (i = 0; i < serial->num_ports; ++i) {
++		port = serial->port[i];
++		if (!port)
++			continue;
++		portdata = usb_get_serial_port_data(port);
++		if (!portdata)
++			continue;
++
++		for (j = 0; j < N_IN_URB; j++)
++			kfree(portdata->in_buffer[j]);
+ 		kfree(portdata);
+-		usb_set_serial_port_data(port, NULL);
+ 	}
+ }
+ 
+@@ -743,7 +762,8 @@ static struct usb_serial_driver sierra_device = {
+ 	.tiocmget          = sierra_tiocmget,
+ 	.tiocmset          = sierra_tiocmset,
+ 	.attach            = sierra_startup,
+-	.shutdown          = sierra_shutdown,
++	.disconnect        = sierra_disconnect,
++	.release           = sierra_release,
+ 	.read_int_callback = sierra_instat_callback,
+ };
+ 
+diff --git a/drivers/usb/serial/spcp8x5.c b/drivers/usb/serial/spcp8x5.c
+index 5e7528c..f5403b0 100644
+--- a/drivers/usb/serial/spcp8x5.c
++++ b/drivers/usb/serial/spcp8x5.c
+@@ -356,7 +356,7 @@ cleanup:
+ }
+ 
+ /* call when the device plug out. free all the memory alloced by probe */
+-static void spcp8x5_shutdown(struct usb_serial *serial)
++static void spcp8x5_release(struct usb_serial *serial)
+ {
+ 	int i;
+ 	struct spcp8x5_private *priv;
+@@ -366,7 +366,6 @@ static void spcp8x5_shutdown(struct usb_serial *serial)
+ 		if (priv) {
+ 			free_ringbuf(priv->buf);
+ 			kfree(priv);
+-			usb_set_serial_port_data(serial->port[i] , NULL);
+ 		}
+ 	}
+ }
+@@ -1043,7 +1042,7 @@ static struct usb_serial_driver spcp8x5_device = {
+ 	.write_bulk_callback	= spcp8x5_write_bulk_callback,
+ 	.chars_in_buffer 	= spcp8x5_chars_in_buffer,
+ 	.attach 		= spcp8x5_startup,
+-	.shutdown 		= spcp8x5_shutdown,
++	.release 		= spcp8x5_release,
+ };
+ 
+ static int __init spcp8x5_init(void)
+diff --git a/drivers/usb/serial/symbolserial.c b/drivers/usb/serial/symbolserial.c
+index 69879e4..b7a6bc8 100644
+--- a/drivers/usb/serial/symbolserial.c
++++ b/drivers/usb/serial/symbolserial.c
+@@ -268,7 +268,7 @@ error:
+ 	return retval;
+ }
+ 
+-static void symbol_shutdown(struct usb_serial *serial)
++static void symbol_disconnect(struct usb_serial *serial)
+ {
+ 	struct symbol_private *priv = usb_get_serial_data(serial);
+ 
+@@ -276,9 +276,16 @@ static void symbol_shutdown(struct usb_serial *serial)
+ 
+ 	usb_kill_urb(priv->int_urb);
+ 	usb_free_urb(priv->int_urb);
++}
++
++static void symbol_release(struct usb_serial *serial)
++{
++	struct symbol_private *priv = usb_get_serial_data(serial);
++
++	dbg("%s", __func__);
++
+ 	kfree(priv->int_buffer);
+ 	kfree(priv);
+-	usb_set_serial_data(serial, NULL);
+ }
+ 
+ static struct usb_driver symbol_driver = {
+@@ -300,7 +307,8 @@ static struct usb_serial_driver symbol_device = {
+ 	.attach =		symbol_startup,
+ 	.open =			symbol_open,
+ 	.close =		symbol_close,
+-	.shutdown =		symbol_shutdown,
++	.disconnect =		symbol_disconnect,
++	.release =		symbol_release,
+ 	.throttle = 		symbol_throttle,
+ 	.unthrottle =		symbol_unthrottle,
+ };
+diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
+index 0a64bac..ef5f756 100644
+--- a/drivers/usb/serial/ti_usb_3410_5052.c
++++ b/drivers/usb/serial/ti_usb_3410_5052.c
+@@ -97,7 +97,7 @@ struct ti_device {
+ /* Function Declarations */
+ 
+ static int ti_startup(struct usb_serial *serial);
+-static void ti_shutdown(struct usb_serial *serial);
++static void ti_release(struct usb_serial *serial);
+ static int ti_open(struct tty_struct *tty, struct usb_serial_port *port,
+ 		struct file *file);
+ static void ti_close(struct tty_struct *tty, struct usb_serial_port *port,
+@@ -231,7 +231,7 @@ static struct usb_serial_driver ti_1port_device = {
+ 	.id_table		= ti_id_table_3410,
+ 	.num_ports		= 1,
+ 	.attach			= ti_startup,
+-	.shutdown		= ti_shutdown,
++	.release		= ti_release,
+ 	.open			= ti_open,
+ 	.close			= ti_close,
+ 	.write			= ti_write,
+@@ -259,7 +259,7 @@ static struct usb_serial_driver ti_2port_device = {
+ 	.id_table		= ti_id_table_5052,
+ 	.num_ports		= 2,
+ 	.attach			= ti_startup,
+-	.shutdown		= ti_shutdown,
++	.release		= ti_release,
+ 	.open			= ti_open,
+ 	.close			= ti_close,
+ 	.write			= ti_write,
+@@ -474,7 +474,7 @@ free_tdev:
+ }
+ 
+ 
+-static void ti_shutdown(struct usb_serial *serial)
++static void ti_release(struct usb_serial *serial)
+ {
+ 	int i;
+ 	struct ti_device *tdev = usb_get_serial_data(serial);
+@@ -487,12 +487,10 @@ static void ti_shutdown(struct usb_serial *serial)
+ 		if (tport) {
+ 			ti_buf_free(tport->tp_write_buf);
+ 			kfree(tport);
+-			usb_set_serial_port_data(serial->port[i], NULL);
+ 		}
+ 	}
+ 
+ 	kfree(tdev);
+-	usb_set_serial_data(serial, NULL);
+ }
+ 
+ 
+diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
+index f331e2b..131fc74 100644
+--- a/drivers/usb/serial/usb-serial.c
++++ b/drivers/usb/serial/usb-serial.c
+@@ -141,6 +141,14 @@ static void destroy_serial(struct kref *kref)
+ 	if (serial->minor != SERIAL_TTY_NO_MINOR)
+ 		return_serial(serial);
+ 
++	serial->type->release(serial);
++
++	for (i = 0; i < serial->num_ports; ++i) {
++		port = serial->port[i];
++		if (port)
++			put_device(&port->dev);
++	}
++
+ 	/* If this is a "fake" port, we have to clean it up here, as it will
+ 	 * not get cleaned up in port_release() as it was never registered with
+ 	 * the driver core */
+@@ -148,9 +156,8 @@ static void destroy_serial(struct kref *kref)
+ 		for (i = serial->num_ports;
+ 					i < serial->num_port_pointers; ++i) {
+ 			port = serial->port[i];
+-			if (!port)
+-				continue;
+-			port_free(port);
++			if (port)
++				port_free(port);
+ 		}
+ 	}
+ 
+@@ -1062,10 +1069,6 @@ void usb_serial_disconnect(struct usb_interface *interface)
+ 	serial->disconnected = 1;
+ 	mutex_unlock(&serial->disc_mutex);
+ 
+-	/* Unfortunately, many of the sub-drivers expect the port structures
+-	 * to exist when their shutdown method is called, so we have to go
+-	 * through this awkward two-step unregistration procedure.
+-	 */
+ 	for (i = 0; i < serial->num_ports; ++i) {
+ 		port = serial->port[i];
+ 		if (port) {
+@@ -1079,14 +1082,7 @@ void usb_serial_disconnect(struct usb_interface *interface)
+ 			device_del(&port->dev);
+ 		}
+ 	}
+-	serial->type->shutdown(serial);
+-	for (i = 0; i < serial->num_ports; ++i) {
+-		port = serial->port[i];
+-		if (port) {
+-			put_device(&port->dev);
+-			serial->port[i] = NULL;
+-		}
+-	}
++	serial->type->disconnect(serial);
+ 
+ 	/* let the last holder of this object
+ 	 * cause it to be cleaned up */
+@@ -1262,7 +1258,8 @@ static void fixup_generic(struct usb_serial_driver *device)
+ 	set_to_generic_if_null(device, chars_in_buffer);
+ 	set_to_generic_if_null(device, read_bulk_callback);
+ 	set_to_generic_if_null(device, write_bulk_callback);
+-	set_to_generic_if_null(device, shutdown);
++	set_to_generic_if_null(device, disconnect);
++	set_to_generic_if_null(device, release);
+ }
+ 
+ int usb_serial_register(struct usb_serial_driver *driver)
+diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c
+index 5ac414b..e50f397 100644
+--- a/drivers/usb/serial/visor.c
++++ b/drivers/usb/serial/visor.c
+@@ -48,7 +48,7 @@ static void visor_unthrottle(struct tty_struct *tty);
+ static int  visor_probe(struct usb_serial *serial,
+ 					const struct usb_device_id *id);
+ static int  visor_calc_num_ports(struct usb_serial *serial);
+-static void visor_shutdown(struct usb_serial *serial);
++static void visor_release(struct usb_serial *serial);
+ static void visor_write_bulk_callback(struct urb *urb);
+ static void visor_read_bulk_callback(struct urb *urb);
+ static void visor_read_int_callback(struct urb *urb);
+@@ -203,7 +203,7 @@ static struct usb_serial_driver handspring_device = {
+ 	.attach =		treo_attach,
+ 	.probe =		visor_probe,
+ 	.calc_num_ports =	visor_calc_num_ports,
+-	.shutdown =		visor_shutdown,
++	.release =		visor_release,
+ 	.write =		visor_write,
+ 	.write_room =		visor_write_room,
+ 	.write_bulk_callback =	visor_write_bulk_callback,
+@@ -228,7 +228,7 @@ static struct usb_serial_driver clie_5_device = {
+ 	.attach =		clie_5_attach,
+ 	.probe =		visor_probe,
+ 	.calc_num_ports =	visor_calc_num_ports,
+-	.shutdown =		visor_shutdown,
++	.release =		visor_release,
+ 	.write =		visor_write,
+ 	.write_room =		visor_write_room,
+ 	.write_bulk_callback =	visor_write_bulk_callback,
+@@ -920,7 +920,7 @@ static int clie_5_attach(struct usb_serial *serial)
+ 	return generic_startup(serial);
+ }
+ 
+-static void visor_shutdown(struct usb_serial *serial)
++static void visor_release(struct usb_serial *serial)
+ {
+ 	struct visor_private *priv;
+ 	int i;
+@@ -929,10 +929,7 @@ static void visor_shutdown(struct usb_serial *serial)
+ 
+ 	for (i = 0; i < serial->num_ports; i++) {
+ 		priv = usb_get_serial_port_data(serial->port[i]);
+-		if (priv) {
+-			usb_set_serial_port_data(serial->port[i], NULL);
+-			kfree(priv);
+-		}
++		kfree(priv);
+ 	}
+ }
+ 
+diff --git a/drivers/usb/serial/whiteheat.c b/drivers/usb/serial/whiteheat.c
+index 5335d32..319ec07 100644
+--- a/drivers/usb/serial/whiteheat.c
++++ b/drivers/usb/serial/whiteheat.c
+@@ -144,7 +144,7 @@ static int  whiteheat_firmware_attach(struct usb_serial *serial);
+ 
+ /* function prototypes for the Connect Tech WhiteHEAT serial converter */
+ static int  whiteheat_attach(struct usb_serial *serial);
+-static void whiteheat_shutdown(struct usb_serial *serial);
++static void whiteheat_release(struct usb_serial *serial);
+ static int  whiteheat_open(struct tty_struct *tty,
+ 			struct usb_serial_port *port, struct file *filp);
+ static void whiteheat_close(struct tty_struct *tty,
+@@ -190,7 +190,7 @@ static struct usb_serial_driver whiteheat_device = {
+ 	.id_table =		id_table_std,
+ 	.num_ports =		4,
+ 	.attach =		whiteheat_attach,
+-	.shutdown =		whiteheat_shutdown,
++	.release =		whiteheat_release,
+ 	.open =			whiteheat_open,
+ 	.close =		whiteheat_close,
+ 	.write =		whiteheat_write,
+@@ -618,7 +618,7 @@ no_command_buffer:
+ }
+ 
+ 
+-static void whiteheat_shutdown(struct usb_serial *serial)
++static void whiteheat_release(struct usb_serial *serial)
+ {
+ 	struct usb_serial_port *command_port;
+ 	struct usb_serial_port *port;
+diff --git a/fs/Kconfig b/fs/Kconfig
+index 9f7270f..ab3ccc1 100644
+--- a/fs/Kconfig
++++ b/fs/Kconfig
+@@ -39,6 +39,13 @@ config FS_POSIX_ACL
+ 	bool
+ 	default n
+ 
++source "fs/xfs/Kconfig"
++source "fs/gfs2/Kconfig"
++source "fs/ocfs2/Kconfig"
++source "fs/btrfs/Kconfig"
++
++endif # BLOCK
++
+ config FILE_LOCKING
+ 	bool "Enable POSIX file locking API" if EMBEDDED
+ 	default y
+@@ -47,13 +54,6 @@ config FILE_LOCKING
+           for filesystems like NFS and for the flock() system
+           call. Disabling this option saves about 11k.
+ 
+-source "fs/xfs/Kconfig"
+-source "fs/gfs2/Kconfig"
+-source "fs/ocfs2/Kconfig"
+-source "fs/btrfs/Kconfig"
+-
+-endif # BLOCK
+-
+ source "fs/notify/Kconfig"
+ 
+ source "fs/quota/Kconfig"
+diff --git a/fs/cifs/file.c b/fs/cifs/file.c
+index 302ea15..bd44591 100644
+--- a/fs/cifs/file.c
++++ b/fs/cifs/file.c
+@@ -491,9 +491,9 @@ static int cifs_reopen_file(struct file *file, bool can_flush)
+ 		return -EBADF;
+ 
+ 	xid = GetXid();
+-	mutex_unlock(&pCifsFile->fh_mutex);
++	mutex_lock(&pCifsFile->fh_mutex);
+ 	if (!pCifsFile->invalidHandle) {
+-		mutex_lock(&pCifsFile->fh_mutex);
++		mutex_unlock(&pCifsFile->fh_mutex);
+ 		FreeXid(xid);
+ 		return 0;
+ 	}
+@@ -524,7 +524,7 @@ static int cifs_reopen_file(struct file *file, bool can_flush)
+ 	if (full_path == NULL) {
+ 		rc = -ENOMEM;
+ reopen_error_exit:
+-		mutex_lock(&pCifsFile->fh_mutex);
++		mutex_unlock(&pCifsFile->fh_mutex);
+ 		FreeXid(xid);
+ 		return rc;
+ 	}
+@@ -566,14 +566,14 @@ reopen_error_exit:
+ 			 cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
+ 				CIFS_MOUNT_MAP_SPECIAL_CHR);
+ 	if (rc) {
+-		mutex_lock(&pCifsFile->fh_mutex);
++		mutex_unlock(&pCifsFile->fh_mutex);
+ 		cFYI(1, ("cifs_open returned 0x%x", rc));
+ 		cFYI(1, ("oplock: %d", oplock));
+ 	} else {
+ reopen_success:
+ 		pCifsFile->netfid = netfid;
+ 		pCifsFile->invalidHandle = false;
+-		mutex_lock(&pCifsFile->fh_mutex);
++		mutex_unlock(&pCifsFile->fh_mutex);
+ 		pCifsInode = CIFS_I(inode);
+ 		if (pCifsInode) {
+ 			if (can_flush) {
+diff --git a/fs/eventpoll.c b/fs/eventpoll.c
+index 5458e80..085c5c0 100644
+--- a/fs/eventpoll.c
++++ b/fs/eventpoll.c
+@@ -98,7 +98,7 @@ struct epoll_filefd {
+ struct nested_call_node {
+ 	struct list_head llink;
+ 	void *cookie;
+-	int cpu;
++	void *ctx;
+ };
+ 
+ /*
+@@ -317,17 +317,17 @@ static void ep_nested_calls_init(struct nested_calls *ncalls)
+  * @nproc: Nested call core function pointer.
+  * @priv: Opaque data to be passed to the @nproc callback.
+  * @cookie: Cookie to be used to identify this nested call.
++ * @ctx: This instance context.
+  *
+  * Returns: Returns the code returned by the @nproc callback, or -1 if
+  *          the maximum recursion limit has been exceeded.
+  */
+ static int ep_call_nested(struct nested_calls *ncalls, int max_nests,
+ 			  int (*nproc)(void *, void *, int), void *priv,
+-			  void *cookie)
++			  void *cookie, void *ctx)
+ {
+ 	int error, call_nests = 0;
+ 	unsigned long flags;
+-	int this_cpu = get_cpu();
+ 	struct list_head *lsthead = &ncalls->tasks_call_list;
+ 	struct nested_call_node *tncur;
+ 	struct nested_call_node tnode;
+@@ -340,7 +340,7 @@ static int ep_call_nested(struct nested_calls *ncalls, int max_nests,
+ 	 * very much limited.
+ 	 */
+ 	list_for_each_entry(tncur, lsthead, llink) {
+-		if (tncur->cpu == this_cpu &&
++		if (tncur->ctx == ctx &&
+ 		    (tncur->cookie == cookie || ++call_nests > max_nests)) {
+ 			/*
+ 			 * Ops ... loop detected or maximum nest level reached.
+@@ -352,7 +352,7 @@ static int ep_call_nested(struct nested_calls *ncalls, int max_nests,
+ 	}
+ 
+ 	/* Add the current task and cookie to the list */
+-	tnode.cpu = this_cpu;
++	tnode.ctx = ctx;
+ 	tnode.cookie = cookie;
+ 	list_add(&tnode.llink, lsthead);
+ 
+@@ -364,10 +364,9 @@ static int ep_call_nested(struct nested_calls *ncalls, int max_nests,
+ 	/* Remove the current task from the list */
+ 	spin_lock_irqsave(&ncalls->lock, flags);
+ 	list_del(&tnode.llink);
+- out_unlock:
++out_unlock:
+ 	spin_unlock_irqrestore(&ncalls->lock, flags);
+ 
+-	put_cpu();
+ 	return error;
+ }
+ 
+@@ -408,8 +407,12 @@ static int ep_poll_wakeup_proc(void *priv, void *cookie, int call_nests)
+  */
+ static void ep_poll_safewake(wait_queue_head_t *wq)
+ {
++	int this_cpu = get_cpu();
++
+ 	ep_call_nested(&poll_safewake_ncalls, EP_MAX_NESTS,
+-		       ep_poll_wakeup_proc, NULL, wq);
++		       ep_poll_wakeup_proc, NULL, wq, (void *) (long) this_cpu);
++
++	put_cpu();
+ }
+ 
+ /*
+@@ -663,7 +666,7 @@ static unsigned int ep_eventpoll_poll(struct file *file, poll_table *wait)
+ 	 * could re-enter here.
+ 	 */
+ 	pollflags = ep_call_nested(&poll_readywalk_ncalls, EP_MAX_NESTS,
+-				   ep_poll_readyevents_proc, ep, ep);
++				   ep_poll_readyevents_proc, ep, ep, current);
+ 
+ 	return pollflags != -1 ? pollflags : 0;
+ }
+diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
+index 91013ff..39083e4 100644
+--- a/fs/fs-writeback.c
++++ b/fs/fs-writeback.c
+@@ -289,7 +289,6 @@ __sync_single_inode(struct inode *inode, struct writeback_control *wbc)
+ 	int ret;
+ 
+ 	BUG_ON(inode->i_state & I_SYNC);
+-	WARN_ON(inode->i_state & I_NEW);
+ 
+ 	/* Set I_SYNC, reset I_DIRTY */
+ 	dirty = inode->i_state & I_DIRTY;
+@@ -314,7 +313,6 @@ __sync_single_inode(struct inode *inode, struct writeback_control *wbc)
+ 	}
+ 
+ 	spin_lock(&inode_lock);
+-	WARN_ON(inode->i_state & I_NEW);
+ 	inode->i_state &= ~I_SYNC;
+ 	if (!(inode->i_state & I_FREEING)) {
+ 		if (!(inode->i_state & I_DIRTY) &&
+diff --git a/fs/jfs/jfs_extent.c b/fs/jfs/jfs_extent.c
+index bbbd5f2..41d6045 100644
+--- a/fs/jfs/jfs_extent.c
++++ b/fs/jfs/jfs_extent.c
+@@ -391,6 +391,7 @@ int extHint(struct inode *ip, s64 offset, xad_t * xp)
+ 		}
+ 		XADaddress(xp, xaddr);
+ 		XADlength(xp, xlen);
++		XADoffset(xp, prev);
+ 		/*
+ 		 * only preserve the abnr flag within the xad flags
+ 		 * of the returned hint.
+diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
+index 79ff8d9..1a0f632 100644
+--- a/fs/ocfs2/super.c
++++ b/fs/ocfs2/super.c
+@@ -232,20 +232,24 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len)
+ 			"%10s => Opts: 0x%lX  AtimeQuanta: %u\n", "Mount",
+ 			osb->s_mount_opt, osb->s_atime_quantum);
+ 
+-	out += snprintf(buf + out, len - out,
+-			"%10s => Stack: %s  Name: %*s  Version: %d.%d\n",
+-			"Cluster",
+-			(*osb->osb_cluster_stack == '\0' ?
+-			 "o2cb" : osb->osb_cluster_stack),
+-			cconn->cc_namelen, cconn->cc_name,
+-			cconn->cc_version.pv_major, cconn->cc_version.pv_minor);
++	if (cconn) {
++		out += snprintf(buf + out, len - out,
++				"%10s => Stack: %s  Name: %*s  "
++				"Version: %d.%d\n", "Cluster",
++				(*osb->osb_cluster_stack == '\0' ?
++				 "o2cb" : osb->osb_cluster_stack),
++				cconn->cc_namelen, cconn->cc_name,
++				cconn->cc_version.pv_major,
++				cconn->cc_version.pv_minor);
++	}
+ 
+ 	spin_lock(&osb->dc_task_lock);
+ 	out += snprintf(buf + out, len - out,
+ 			"%10s => Pid: %d  Count: %lu  WakeSeq: %lu  "
+ 			"WorkSeq: %lu\n", "DownCnvt",
+-			task_pid_nr(osb->dc_task), osb->blocked_lock_count,
+-			osb->dc_wake_sequence, osb->dc_work_sequence);
++			(osb->dc_task ?  task_pid_nr(osb->dc_task) : -1),
++			osb->blocked_lock_count, osb->dc_wake_sequence,
++			osb->dc_work_sequence);
+ 	spin_unlock(&osb->dc_task_lock);
+ 
+ 	spin_lock(&osb->osb_lock);
+@@ -265,14 +269,15 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len)
+ 
+ 	out += snprintf(buf + out, len - out,
+ 			"%10s => Pid: %d  Interval: %lu  Needs: %d\n", "Commit",
+-			task_pid_nr(osb->commit_task), osb->osb_commit_interval,
++			(osb->commit_task ? task_pid_nr(osb->commit_task) : -1),
++			osb->osb_commit_interval,
+ 			atomic_read(&osb->needs_checkpoint));
+ 
+ 	out += snprintf(buf + out, len - out,
+-			"%10s => State: %d  NumTxns: %d  TxnId: %lu\n",
++			"%10s => State: %d  TxnId: %lu  NumTxns: %d\n",
+ 			"Journal", osb->journal->j_state,
+-			atomic_read(&osb->journal->j_num_trans),
+-			osb->journal->j_trans_id);
++			osb->journal->j_trans_id,
++			atomic_read(&osb->journal->j_num_trans));
+ 
+ 	out += snprintf(buf + out, len - out,
+ 			"%10s => GlobalAllocs: %d  LocalAllocs: %d  "
+@@ -300,7 +305,6 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len)
+ 
+ 	out += snprintf(buf + out, len - out, "%10s => %3s  %10s\n",
+ 			"Slots", "Num", "RecoGen");
+-
+ 	for (i = 0; i < osb->max_slots; ++i) {
+ 		out += snprintf(buf + out, len - out,
+ 				"%10s  %c %3d  %10d\n",
+diff --git a/fs/ramfs/inode.c b/fs/ramfs/inode.c
+index 3a6b193..0ff7566 100644
+--- a/fs/ramfs/inode.c
++++ b/fs/ramfs/inode.c
+@@ -202,9 +202,12 @@ static int ramfs_parse_options(char *data, struct ramfs_mount_opts *opts)
+ 				return -EINVAL;
+ 			opts->mode = option & S_IALLUGO;
+ 			break;
+-		default:
+-			printk(KERN_ERR "ramfs: bad mount option: %s\n", p);
+-			return -EINVAL;
++		/*
++		 * We might like to report bad mount options here;
++		 * but traditionally ramfs has ignored all mount options,
++		 * and as it is used as a !CONFIG_SHMEM simple substitute
++		 * for tmpfs, better continue to ignore other mount options.
++		 */
+ 		}
+ 	}
+ 
+diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
+index ca7c600..b5cba98 100644
+--- a/fs/xfs/xfs_bmap.c
++++ b/fs/xfs/xfs_bmap.c
+@@ -6085,6 +6085,7 @@ xfs_getbmap(
+ 			break;
+ 	}
+ 
++	kmem_free(out);
+ 	return error;
+ }
+ 
+diff --git a/include/linux/firmware-map.h b/include/linux/firmware-map.h
+index cca686b..875451f 100644
+--- a/include/linux/firmware-map.h
++++ b/include/linux/firmware-map.h
+@@ -24,21 +24,17 @@
+  */
+ #ifdef CONFIG_FIRMWARE_MEMMAP
+ 
+-int firmware_map_add(resource_size_t start, resource_size_t end,
+-		     const char *type);
+-int firmware_map_add_early(resource_size_t start, resource_size_t end,
+-			   const char *type);
++int firmware_map_add(u64 start, u64 end, const char *type);
++int firmware_map_add_early(u64 start, u64 end, const char *type);
+ 
+ #else /* CONFIG_FIRMWARE_MEMMAP */
+ 
+-static inline int firmware_map_add(resource_size_t start, resource_size_t end,
+-				   const char *type)
++static inline int firmware_map_add(u64 start, u64 end, const char *type)
+ {
+ 	return 0;
+ }
+ 
+-static inline int firmware_map_add_early(resource_size_t start,
+-					 resource_size_t end, const char *type)
++static inline int firmware_map_add_early(u64 start, u64 end, const char *type)
+ {
+ 	return 0;
+ }
+diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
+index 894a56e..5eed8fa 100644
+--- a/include/linux/kvm_host.h
++++ b/include/linux/kvm_host.h
+@@ -125,6 +125,7 @@ struct kvm_kernel_irq_routing_entry {
+ struct kvm {
+ 	struct mutex lock; /* protects the vcpus array and APIC accesses */
+ 	spinlock_t mmu_lock;
++	spinlock_t requests_lock;
+ 	struct rw_semaphore slots_lock;
+ 	struct mm_struct *mm; /* userspace tied to this vm */
+ 	int nmemslots;
+diff --git a/include/linux/mlx4/qp.h b/include/linux/mlx4/qp.h
+index bf8f119..9f29d86 100644
+--- a/include/linux/mlx4/qp.h
++++ b/include/linux/mlx4/qp.h
+@@ -165,6 +165,7 @@ enum {
+ 	MLX4_WQE_CTRL_IP_CSUM		= 1 << 4,
+ 	MLX4_WQE_CTRL_TCP_UDP_CSUM	= 1 << 5,
+ 	MLX4_WQE_CTRL_INS_VLAN		= 1 << 6,
++	MLX4_WQE_CTRL_STRONG_ORDER	= 1 << 7,
+ };
+ 
+ struct mlx4_wqe_ctrl_seg {
+diff --git a/include/linux/serial.h b/include/linux/serial.h
+index 9136cc5..e5bb75a 100644
+--- a/include/linux/serial.h
++++ b/include/linux/serial.h
+@@ -96,54 +96,76 @@ struct serial_uart_config {
+ 
+ /*
+  * Definitions for async_struct (and serial_struct) flags field
++ *
++ * Define ASYNCB_* for convenient use with {test,set,clear}_bit.
+  */
+-#define ASYNC_HUP_NOTIFY 0x0001 /* Notify getty on hangups and closes 
+-				   on the callout port */
+-#define ASYNC_FOURPORT  0x0002	/* Set OU1, OUT2 per AST Fourport settings */
+-#define ASYNC_SAK	0x0004	/* Secure Attention Key (Orange book) */
+-#define ASYNC_SPLIT_TERMIOS 0x0008 /* Separate termios for dialin/callout */
+-
+-#define ASYNC_SPD_MASK	0x1030
+-#define ASYNC_SPD_HI	0x0010	/* Use 56000 instead of 38400 bps */
+-
+-#define ASYNC_SPD_VHI	0x0020  /* Use 115200 instead of 38400 bps */
+-#define ASYNC_SPD_CUST	0x0030  /* Use user-specified divisor */
+-
+-#define ASYNC_SKIP_TEST	0x0040 /* Skip UART test during autoconfiguration */
+-#define ASYNC_AUTO_IRQ  0x0080 /* Do automatic IRQ during autoconfiguration */
+-#define ASYNC_SESSION_LOCKOUT 0x0100 /* Lock out cua opens based on session */
+-#define ASYNC_PGRP_LOCKOUT    0x0200 /* Lock out cua opens based on pgrp */
+-#define ASYNC_CALLOUT_NOHUP   0x0400 /* Don't do hangups for cua device */
+-
+-#define ASYNC_HARDPPS_CD	0x0800	/* Call hardpps when CD goes high  */
+-
+-#define ASYNC_SPD_SHI	0x1000	/* Use 230400 instead of 38400 bps */
+-#define ASYNC_SPD_WARP	0x1010	/* Use 460800 instead of 38400 bps */
+-
+-#define ASYNC_LOW_LATENCY 0x2000 /* Request low latency behaviour */
+-
+-#define ASYNC_BUGGY_UART  0x4000 /* This is a buggy UART, skip some safety
+-				  * checks.  Note: can be dangerous! */
+-
+-#define ASYNC_AUTOPROBE	 0x8000 /* Port was autoprobed by PCI or PNP code */
+-
+-#define ASYNC_FLAGS	0x7FFF	/* Possible legal async flags */
+-#define ASYNC_USR_MASK	0x3430	/* Legal flags that non-privileged
+-				 * users can set or reset */
+-
+-/* Internal flags used only by kernel/chr_drv/serial.c */
+-#define ASYNC_INITIALIZED	0x80000000 /* Serial port was initialized */
+-#define ASYNC_NORMAL_ACTIVE	0x20000000 /* Normal device is active */
+-#define ASYNC_BOOT_AUTOCONF	0x10000000 /* Autoconfigure port on bootup */
+-#define ASYNC_CLOSING		0x08000000 /* Serial port is closing */
+-#define ASYNC_CTS_FLOW		0x04000000 /* Do CTS flow control */
+-#define ASYNC_CHECK_CD		0x02000000 /* i.e., CLOCAL */
+-#define ASYNC_SHARE_IRQ		0x01000000 /* for multifunction cards
+-					     --- no longer used */
+-#define ASYNC_CONS_FLOW		0x00800000 /* flow control for console  */
+-
+-#define ASYNC_BOOT_ONLYMCA	0x00400000 /* Probe only if MCA bus */
+-#define ASYNC_INTERNAL_FLAGS	0xFFC00000 /* Internal flags */
++#define ASYNCB_HUP_NOTIFY	 0 /* Notify getty on hangups and closes
++				    * on the callout port */
++#define ASYNCB_FOURPORT		 1 /* Set OU1, OUT2 per AST Fourport settings */
++#define ASYNCB_SAK		 2 /* Secure Attention Key (Orange book) */
++#define ASYNCB_SPLIT_TERMIOS	 3 /* Separate termios for dialin/callout */
++#define ASYNCB_SPD_HI		 4 /* Use 56000 instead of 38400 bps */
++#define ASYNCB_SPD_VHI		 5 /* Use 115200 instead of 38400 bps */
++#define ASYNCB_SKIP_TEST	 6 /* Skip UART test during autoconfiguration */
++#define ASYNCB_AUTO_IRQ		 7 /* Do automatic IRQ during
++				    * autoconfiguration */
++#define ASYNCB_SESSION_LOCKOUT	 8 /* Lock out cua opens based on session */
++#define ASYNCB_PGRP_LOCKOUT	 9 /* Lock out cua opens based on pgrp */
++#define ASYNCB_CALLOUT_NOHUP	10 /* Don't do hangups for cua device */
++#define ASYNCB_HARDPPS_CD	11 /* Call hardpps when CD goes high  */
++#define ASYNCB_SPD_SHI		12 /* Use 230400 instead of 38400 bps */
++#define ASYNCB_LOW_LATENCY	13 /* Request low latency behaviour */
++#define ASYNCB_BUGGY_UART	14 /* This is a buggy UART, skip some safety
++				    * checks.  Note: can be dangerous! */
++#define ASYNCB_AUTOPROBE	15 /* Port was autoprobed by PCI or PNP code */
++#define ASYNCB_LAST_USER	15
++
++/* Internal flags used only by kernel */
++#define ASYNCB_INITIALIZED	31 /* Serial port was initialized */
++#define ASYNCB_NORMAL_ACTIVE	29 /* Normal device is active */
++#define ASYNCB_BOOT_AUTOCONF	28 /* Autoconfigure port on bootup */
++#define ASYNCB_CLOSING		27 /* Serial port is closing */
++#define ASYNCB_CTS_FLOW		26 /* Do CTS flow control */
++#define ASYNCB_CHECK_CD		25 /* i.e., CLOCAL */
++#define ASYNCB_SHARE_IRQ	24 /* for multifunction cards, no longer used */
++#define ASYNCB_CONS_FLOW	23 /* flow control for console  */
++#define ASYNCB_BOOT_ONLYMCA	22 /* Probe only if MCA bus */
++#define ASYNCB_FIRST_KERNEL	22
++
++#define ASYNC_HUP_NOTIFY	(1U << ASYNCB_HUP_NOTIFY)
++#define ASYNC_FOURPORT		(1U << ASYNCB_FOURPORT)
++#define ASYNC_SAK		(1U << ASYNCB_SAK)
++#define ASYNC_SPLIT_TERMIOS	(1U << ASYNCB_SPLIT_TERMIOS)
++#define ASYNC_SPD_HI		(1U << ASYNCB_SPD_HI)
++#define ASYNC_SPD_VHI		(1U << ASYNCB_SPD_VHI)
++#define ASYNC_SKIP_TEST		(1U << ASYNCB_SKIP_TEST)
++#define ASYNC_AUTO_IRQ		(1U << ASYNCB_AUTO_IRQ)
++#define ASYNC_SESSION_LOCKOUT	(1U << ASYNCB_SESSION_LOCKOUT)
++#define ASYNC_PGRP_LOCKOUT	(1U << ASYNCB_PGRP_LOCKOUT)
++#define ASYNC_CALLOUT_NOHUP	(1U << ASYNCB_CALLOUT_NOHUP)
++#define ASYNC_HARDPPS_CD	(1U << ASYNCB_HARDPPS_CD)
++#define ASYNC_SPD_SHI		(1U << ASYNCB_SPD_SHI)
++#define ASYNC_LOW_LATENCY	(1U << ASYNCB_LOW_LATENCY)
++#define ASYNC_BUGGY_UART	(1U << ASYNCB_BUGGY_UART)
++#define ASYNC_AUTOPROBE		(1U << ASYNCB_AUTOPROBE)
++
++#define ASYNC_FLAGS		((1U << ASYNCB_LAST_USER) - 1)
++#define ASYNC_USR_MASK		(ASYNC_SPD_HI|ASYNC_SPD_VHI| \
++		ASYNC_CALLOUT_NOHUP|ASYNC_SPD_SHI|ASYNC_LOW_LATENCY)
++#define ASYNC_SPD_CUST		(ASYNC_SPD_HI|ASYNC_SPD_VHI)
++#define ASYNC_SPD_WARP		(ASYNC_SPD_HI|ASYNC_SPD_SHI)
++#define ASYNC_SPD_MASK		(ASYNC_SPD_HI|ASYNC_SPD_VHI|ASYNC_SPD_SHI)
++
++#define ASYNC_INITIALIZED	(1U << ASYNCB_INITIALIZED)
++#define ASYNC_NORMAL_ACTIVE	(1U << ASYNCB_NORMAL_ACTIVE)
++#define ASYNC_BOOT_AUTOCONF	(1U << ASYNCB_BOOT_AUTOCONF)
++#define ASYNC_CLOSING		(1U << ASYNCB_CLOSING)
++#define ASYNC_CTS_FLOW		(1U << ASYNCB_CTS_FLOW)
++#define ASYNC_CHECK_CD		(1U << ASYNCB_CHECK_CD)
++#define ASYNC_SHARE_IRQ		(1U << ASYNCB_SHARE_IRQ)
++#define ASYNC_CONS_FLOW		(1U << ASYNCB_CONS_FLOW)
++#define ASYNC_BOOT_ONLYMCA	(1U << ASYNCB_BOOT_ONLYMCA)
++#define ASYNC_INTERNAL_FLAGS	(~((1U << ASYNCB_FIRST_KERNEL) - 1))
+ 
+ /*
+  * Multiport serial configuration structure --- external structure
+diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h
+index 625e9e4..6d6c3b8 100644
+--- a/include/linux/usb/serial.h
++++ b/include/linux/usb/serial.h
+@@ -181,8 +181,10 @@ static inline void usb_set_serial_data(struct usb_serial *serial, void *data)
+  *	This will be called when the struct usb_serial structure is fully set
+  *	set up.  Do any local initialization of the device, or any private
+  *	memory structure allocation at this point in time.
+- * @shutdown: pointer to the driver's shutdown function.  This will be
+- *	called when the device is removed from the system.
++ * @disconnect: pointer to the driver's disconnect function.  This will be
++ *	called when the device is unplugged or unbound from the driver.
++ * @release: pointer to the driver's release function.  This will be called
++ *	when the usb_serial data structure is about to be destroyed.
+  * @usb_driver: pointer to the struct usb_driver that controls this
+  *	device.  This is necessary to allow dynamic ids to be added to
+  *	the driver from sysfs.
+@@ -212,7 +214,8 @@ struct usb_serial_driver {
+ 	int (*attach)(struct usb_serial *serial);
+ 	int (*calc_num_ports) (struct usb_serial *serial);
+ 
+-	void (*shutdown)(struct usb_serial *serial);
++	void (*disconnect)(struct usb_serial *serial);
++	void (*release)(struct usb_serial *serial);
+ 
+ 	int (*port_probe)(struct usb_serial_port *port);
+ 	int (*port_remove)(struct usb_serial_port *port);
+@@ -292,7 +295,8 @@ extern void usb_serial_generic_read_bulk_callback(struct urb *urb);
+ extern void usb_serial_generic_write_bulk_callback(struct urb *urb);
+ extern void usb_serial_generic_throttle(struct tty_struct *tty);
+ extern void usb_serial_generic_unthrottle(struct tty_struct *tty);
+-extern void usb_serial_generic_shutdown(struct usb_serial *serial);
++extern void usb_serial_generic_disconnect(struct usb_serial *serial);
++extern void usb_serial_generic_release(struct usb_serial *serial);
+ extern int usb_serial_generic_register(int debug);
+ extern void usb_serial_generic_deregister(void);
+ 
+diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
+index 524cd1b..cfdd3ca 100644
+--- a/include/linux/vmstat.h
++++ b/include/linux/vmstat.h
+@@ -36,6 +36,9 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
+ 		FOR_ALL_ZONES(PGSTEAL),
+ 		FOR_ALL_ZONES(PGSCAN_KSWAPD),
+ 		FOR_ALL_ZONES(PGSCAN_DIRECT),
++#ifdef CONFIG_NUMA
++		PGSCAN_ZONE_RECLAIM_FAILED,
++#endif
+ 		PGINODESTEAL, SLABS_SCANNED, KSWAPD_STEAL, KSWAPD_INODESTEAL,
+ 		PAGEOUTRUN, ALLOCSTALL, PGROTATED,
+ #ifdef CONFIG_HUGETLB_PAGE
+diff --git a/include/net/x25.h b/include/net/x25.h
+index fc3f03d..2cda040 100644
+--- a/include/net/x25.h
++++ b/include/net/x25.h
+@@ -187,7 +187,7 @@ extern int  x25_addr_ntoa(unsigned char *, struct x25_address *,
+ extern int  x25_addr_aton(unsigned char *, struct x25_address *,
+ 			  struct x25_address *);
+ extern struct sock *x25_find_socket(unsigned int, struct x25_neigh *);
+-extern void x25_destroy_socket(struct sock *);
++extern void x25_destroy_socket_from_timer(struct sock *);
+ extern int  x25_rx_call_request(struct sk_buff *, struct x25_neigh *, unsigned int);
+ extern void x25_kill_by_neigh(struct x25_neigh *);
+ 
+diff --git a/kernel/acct.c b/kernel/acct.c
+index 7afa315..9f33910 100644
+--- a/kernel/acct.c
++++ b/kernel/acct.c
+@@ -215,6 +215,7 @@ static void acct_file_reopen(struct bsd_acct_struct *acct, struct file *file,
+ static int acct_on(char *name)
+ {
+ 	struct file *file;
++	struct vfsmount *mnt;
+ 	int error;
+ 	struct pid_namespace *ns;
+ 	struct bsd_acct_struct *acct = NULL;
+@@ -256,11 +257,12 @@ static int acct_on(char *name)
+ 		acct = NULL;
+ 	}
+ 
+-	mnt_pin(file->f_path.mnt);
++	mnt = file->f_path.mnt;
++	mnt_pin(mnt);
+ 	acct_file_reopen(ns->bacct, file, ns);
+ 	spin_unlock(&acct_lock);
+ 
+-	mntput(file->f_path.mnt); /* it's pinned, now give up active reference */
++	mntput(mnt); /* it's pinned, now give up active reference */
+ 	kfree(acct);
+ 
+ 	return 0;
+diff --git a/kernel/trace/trace_functions.c b/kernel/trace/trace_functions.c
+index c9a0b7d..90f1347 100644
+--- a/kernel/trace/trace_functions.c
++++ b/kernel/trace/trace_functions.c
+@@ -193,9 +193,11 @@ static void tracing_start_function_trace(void)
+ static void tracing_stop_function_trace(void)
+ {
+ 	ftrace_function_enabled = 0;
+-	/* OK if they are not registered */
+-	unregister_ftrace_function(&trace_stack_ops);
+-	unregister_ftrace_function(&trace_ops);
++
++	if (func_flags.val & TRACE_FUNC_OPT_STACK)
++		unregister_ftrace_function(&trace_stack_ops);
++	else
++		unregister_ftrace_function(&trace_ops);
+ }
+ 
+ static int func_set_flag(u32 old_flags, u32 bit, int set)
+diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
+index 6cdcf38..3be4b7c 100644
+--- a/lib/Kconfig.debug
++++ b/lib/Kconfig.debug
+@@ -440,7 +440,7 @@ config LOCKDEP
+ 	bool
+ 	depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
+ 	select STACKTRACE
+-	select FRAME_POINTER if !X86 && !MIPS && !PPC && !ARM_UNWIND && !S390
++	select FRAME_POINTER if !MIPS && !PPC && !ARM_UNWIND && !S390
+ 	select KALLSYMS
+ 	select KALLSYMS_ALL
+ 
+diff --git a/lib/dma-debug.c b/lib/dma-debug.c
+index 69da09a..2b16536 100644
+--- a/lib/dma-debug.c
++++ b/lib/dma-debug.c
+@@ -185,15 +185,50 @@ static void put_hash_bucket(struct hash_bucket *bucket,
+ static struct dma_debug_entry *hash_bucket_find(struct hash_bucket *bucket,
+ 						struct dma_debug_entry *ref)
+ {
+-	struct dma_debug_entry *entry;
++	struct dma_debug_entry *entry, *ret = NULL;
++	int matches = 0, match_lvl, last_lvl = 0;
+ 
+ 	list_for_each_entry(entry, &bucket->list, list) {
+-		if ((entry->dev_addr == ref->dev_addr) &&
+-		    (entry->dev == ref->dev))
++		if ((entry->dev_addr != ref->dev_addr) ||
++		    (entry->dev != ref->dev))
++			continue;
++
++		/*
++		 * Some drivers map the same physical address multiple
++		 * times. Without a hardware IOMMU this results in the
++		 * same device addresses being put into the dma-debug
++		 * hash multiple times too. This can result in false
++		 * positives being reported. Therfore we implement a
++		 * best-fit algorithm here which returns the entry from
++		 * the hash which fits best to the reference value
++		 * instead of the first-fit.
++		 */
++		matches += 1;
++		match_lvl = 0;
++		entry->size      == ref->size      ? ++match_lvl : match_lvl;
++		entry->type      == ref->type      ? ++match_lvl : match_lvl;
++		entry->direction == ref->direction ? ++match_lvl : match_lvl;
++
++		if (match_lvl == 3) {
++			/* perfect-fit - return the result */
+ 			return entry;
++		} else if (match_lvl > last_lvl) {
++			/*
++			 * We found an entry that fits better then the
++			 * previous one
++			 */
++			last_lvl = match_lvl;
++			ret      = entry;
++		}
+ 	}
+ 
+-	return NULL;
++	/*
++	 * If we have multiple matches but no perfect-fit, just return
++	 * NULL.
++	 */
++	ret = (matches == 1) ? ret : NULL;
++
++	return ret;
+ }
+ 
+ /*
+diff --git a/lib/genalloc.c b/lib/genalloc.c
+index f6d276d..eed2bdb 100644
+--- a/lib/genalloc.c
++++ b/lib/genalloc.c
+@@ -85,7 +85,6 @@ void gen_pool_destroy(struct gen_pool *pool)
+ 	int bit, end_bit;
+ 
+ 
+-	write_lock(&pool->lock);
+ 	list_for_each_safe(_chunk, _next_chunk, &pool->chunks) {
+ 		chunk = list_entry(_chunk, struct gen_pool_chunk, next_chunk);
+ 		list_del(&chunk->next_chunk);
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index fe753ec..f820383 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -2812,7 +2812,7 @@ bad:
+ 		if (dzone == zone)
+ 			break;
+ 		kfree(zone_pcp(dzone, cpu));
+-		zone_pcp(dzone, cpu) = NULL;
++		zone_pcp(dzone, cpu) = &boot_pageset[cpu];
+ 	}
+ 	return -ENOMEM;
+ }
+@@ -2827,7 +2827,7 @@ static inline void free_zone_pagesets(int cpu)
+ 		/* Free per_cpu_pageset if it is slab allocated */
+ 		if (pset != &boot_pageset[cpu])
+ 			kfree(pset);
+-		zone_pcp(zone, cpu) = NULL;
++		zone_pcp(zone, cpu) = &boot_pageset[cpu];
+ 	}
+ }
+ 
+@@ -4501,7 +4501,7 @@ int percpu_pagelist_fraction_sysctl_handler(ctl_table *table, int write,
+ 	ret = proc_dointvec_minmax(table, write, file, buffer, length, ppos);
+ 	if (!write || (ret == -EINVAL))
+ 		return ret;
+-	for_each_zone(zone) {
++	for_each_populated_zone(zone) {
+ 		for_each_online_cpu(cpu) {
+ 			unsigned long  high;
+ 			high = zone->present_pages / percpu_pagelist_fraction;
+diff --git a/mm/vmscan.c b/mm/vmscan.c
+index d254306..2500b01 100644
+--- a/mm/vmscan.c
++++ b/mm/vmscan.c
+@@ -2290,6 +2290,48 @@ int sysctl_min_unmapped_ratio = 1;
+  */
+ int sysctl_min_slab_ratio = 5;
+ 
++static inline unsigned long zone_unmapped_file_pages(struct zone *zone)
++{
++	unsigned long file_mapped = zone_page_state(zone, NR_FILE_MAPPED);
++	unsigned long file_lru = zone_page_state(zone, NR_INACTIVE_FILE) +
++		zone_page_state(zone, NR_ACTIVE_FILE);
++
++	/*
++	 * It's possible for there to be more file mapped pages than
++	 * accounted for by the pages on the file LRU lists because
++	 * tmpfs pages accounted for as ANON can also be FILE_MAPPED
++	 */
++	return (file_lru > file_mapped) ? (file_lru - file_mapped) : 0;
++}
++
++/* Work out how many page cache pages we can reclaim in this reclaim_mode */
++static long zone_pagecache_reclaimable(struct zone *zone)
++{
++	long nr_pagecache_reclaimable;
++	long delta = 0;
++
++	/*
++	 * If RECLAIM_SWAP is set, then all file pages are considered
++	 * potentially reclaimable. Otherwise, we have to worry about
++	 * pages like swapcache and zone_unmapped_file_pages() provides
++	 * a better estimate
++	 */
++	if (zone_reclaim_mode & RECLAIM_SWAP)
++		nr_pagecache_reclaimable = zone_page_state(zone, NR_FILE_PAGES);
++	else
++		nr_pagecache_reclaimable = zone_unmapped_file_pages(zone);
++
++	/* If we can't clean pages, remove dirty pages from consideration */
++	if (!(zone_reclaim_mode & RECLAIM_WRITE))
++		delta += zone_page_state(zone, NR_FILE_DIRTY);
++
++	/* Watch for any possible underflows due to delta */
++	if (unlikely(delta > nr_pagecache_reclaimable))
++		delta = nr_pagecache_reclaimable;
++
++	return nr_pagecache_reclaimable - delta;
++}
++
+ /*
+  * Try to free up some pages from this zone through reclaim.
+  */
+@@ -2324,9 +2366,7 @@ static int __zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
+ 	reclaim_state.reclaimed_slab = 0;
+ 	p->reclaim_state = &reclaim_state;
+ 
+-	if (zone_page_state(zone, NR_FILE_PAGES) -
+-		zone_page_state(zone, NR_FILE_MAPPED) >
+-		zone->min_unmapped_pages) {
++	if (zone_pagecache_reclaimable(zone) > zone->min_unmapped_pages) {
+ 		/*
+ 		 * Free memory by calling shrink zone with increasing
+ 		 * priorities until we have enough memory freed.
+@@ -2384,10 +2424,8 @@ int zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
+ 	 * if less than a specified percentage of the zone is used by
+ 	 * unmapped file backed pages.
+ 	 */
+-	if (zone_page_state(zone, NR_FILE_PAGES) -
+-	    zone_page_state(zone, NR_FILE_MAPPED) <= zone->min_unmapped_pages
+-	    && zone_page_state(zone, NR_SLAB_RECLAIMABLE)
+-			<= zone->min_slab_pages)
++	if (zone_pagecache_reclaimable(zone) <= zone->min_unmapped_pages &&
++	    zone_page_state(zone, NR_SLAB_RECLAIMABLE) <= zone->min_slab_pages)
+ 		return 0;
+ 
+ 	if (zone_is_all_unreclaimable(zone))
+@@ -2414,6 +2452,9 @@ int zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
+ 	ret = __zone_reclaim(zone, gfp_mask, order);
+ 	zone_clear_flag(zone, ZONE_RECLAIM_LOCKED);
+ 
++	if (!ret)
++		count_vm_event(PGSCAN_ZONE_RECLAIM_FAILED);
++
+ 	return ret;
+ }
+ #endif
+diff --git a/mm/vmstat.c b/mm/vmstat.c
+index 74d66db..ddb360a 100644
+--- a/mm/vmstat.c
++++ b/mm/vmstat.c
+@@ -675,6 +675,9 @@ static const char * const vmstat_text[] = {
+ 	TEXTS_FOR_ZONES("pgscan_kswapd")
+ 	TEXTS_FOR_ZONES("pgscan_direct")
+ 
++#ifdef CONFIG_NUMA
++	"zone_reclaim_failed",
++#endif
+ 	"pginodesteal",
+ 	"slabs_scanned",
+ 	"kswapd_steal",
+diff --git a/net/ipv4/route.c b/net/ipv4/route.c
+index 28205e5..d777f84 100644
+--- a/net/ipv4/route.c
++++ b/net/ipv4/route.c
+@@ -1081,8 +1081,35 @@ restart:
+ 	now = jiffies;
+ 
+ 	if (!rt_caching(dev_net(rt->u.dst.dev))) {
+-		rt_drop(rt);
+-		return 0;
++		/*
++		 * If we're not caching, just tell the caller we
++		 * were successful and don't touch the route.  The
++		 * caller hold the sole reference to the cache entry, and
++		 * it will be released when the caller is done with it.
++		 * If we drop it here, the callers have no way to resolve routes
++		 * when we're not caching.  Instead, just point *rp at rt, so
++		 * the caller gets a single use out of the route
++		 * Note that we do rt_free on this new route entry, so that
++		 * once its refcount hits zero, we are still able to reap it
++		 * (Thanks Alexey)
++		 * Note also the rt_free uses call_rcu.  We don't actually
++		 * need rcu protection here, this is just our path to get
++		 * on the route gc list.
++		 */
++
++		if (rt->rt_type == RTN_UNICAST || rt->fl.iif == 0) {
++			int err = arp_bind_neighbour(&rt->u.dst);
++			if (err) {
++				if (net_ratelimit())
++					printk(KERN_WARNING
++					    "Neighbour table failure & not caching routes.\n");
++				rt_drop(rt);
++				return err;
++			}
++		}
++
++		rt_free(rt);
++		goto skip_hashing;
+ 	}
+ 
+ 	rthp = &rt_hash_table[hash].chain;
+@@ -1196,7 +1223,8 @@ restart:
+ #if RT_CACHE_DEBUG >= 2
+ 	if (rt->u.dst.rt_next) {
+ 		struct rtable *trt;
+-		printk(KERN_DEBUG "rt_cache @%02x: %pI4", hash, &rt->rt_dst);
++		printk(KERN_DEBUG "rt_cache @%02x: %pI4",
++		       hash, &rt->rt_dst);
+ 		for (trt = rt->u.dst.rt_next; trt; trt = trt->u.dst.rt_next)
+ 			printk(" . %pI4", &trt->rt_dst);
+ 		printk("\n");
+@@ -1210,6 +1238,8 @@ restart:
+ 	rcu_assign_pointer(rt_hash_table[hash].chain, rt);
+ 
+ 	spin_unlock_bh(rt_hash_lock_addr(hash));
++
++skip_hashing:
+ 	*rp = rt;
+ 	return 0;
+ }
+diff --git a/net/mac80211/rc80211_minstrel.c b/net/mac80211/rc80211_minstrel.c
+index d9233ec..2681dfa 100644
+--- a/net/mac80211/rc80211_minstrel.c
++++ b/net/mac80211/rc80211_minstrel.c
+@@ -216,7 +216,7 @@ minstrel_get_next_sample(struct minstrel_sta_info *mi)
+ 	unsigned int sample_ndx;
+ 	sample_ndx = SAMPLE_TBL(mi, mi->sample_idx, mi->sample_column);
+ 	mi->sample_idx++;
+-	if (mi->sample_idx > (mi->n_rates - 2)) {
++	if ((int) mi->sample_idx > (mi->n_rates - 2)) {
+ 		mi->sample_idx = 0;
+ 		mi->sample_column++;
+ 		if (mi->sample_column >= SAMPLE_COLUMNS)
+diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
+index 2456e4e..b759106 100644
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -2385,18 +2385,24 @@ static int nl80211_set_reg(struct sk_buff *skb, struct genl_info *info)
+ 			rem_reg_rules) {
+ 		num_rules++;
+ 		if (num_rules > NL80211_MAX_SUPP_REG_RULES)
+-			goto bad_reg;
++			return -EINVAL;
+ 	}
+ 
+-	if (!reg_is_valid_request(alpha2))
+-		return -EINVAL;
++	mutex_lock(&cfg80211_mutex);
++
++	if (!reg_is_valid_request(alpha2)) {
++		r = -EINVAL;
++		goto bad_reg;
++	}
+ 
+ 	size_of_regd = sizeof(struct ieee80211_regdomain) +
+ 		(num_rules * sizeof(struct ieee80211_reg_rule));
+ 
+ 	rd = kzalloc(size_of_regd, GFP_KERNEL);
+-	if (!rd)
+-		return -ENOMEM;
++	if (!rd) {
++		r = -ENOMEM;
++		goto bad_reg;
++	}
+ 
+ 	rd->n_reg_rules = num_rules;
+ 	rd->alpha2[0] = alpha2[0];
+@@ -2413,20 +2419,24 @@ static int nl80211_set_reg(struct sk_buff *skb, struct genl_info *info)
+ 
+ 		rule_idx++;
+ 
+-		if (rule_idx > NL80211_MAX_SUPP_REG_RULES)
++		if (rule_idx > NL80211_MAX_SUPP_REG_RULES) {
++			r = -EINVAL;
+ 			goto bad_reg;
++		}
+ 	}
+ 
+ 	BUG_ON(rule_idx != num_rules);
+ 
+-	mutex_lock(&cfg80211_mutex);
+ 	r = set_regdom(rd);
++
+ 	mutex_unlock(&cfg80211_mutex);
++
+ 	return r;
+ 
+  bad_reg:
++	mutex_unlock(&cfg80211_mutex);
+ 	kfree(rd);
+-	return -EINVAL;
++	return r;
+ }
+ 
+ static int nl80211_trigger_scan(struct sk_buff *skb, struct genl_info *info)
+diff --git a/net/wireless/reg.c b/net/wireless/reg.c
+index 487cb62..9765bc8 100644
+--- a/net/wireless/reg.c
++++ b/net/wireless/reg.c
+@@ -389,6 +389,8 @@ static int call_crda(const char *alpha2)
+ /* Used by nl80211 before kmalloc'ing our regulatory domain */
+ bool reg_is_valid_request(const char *alpha2)
+ {
++	assert_cfg80211_lock();
++
+ 	if (!last_request)
+ 		return false;
+ 
+@@ -2042,7 +2044,13 @@ static int __set_regdom(const struct ieee80211_regdomain *rd)
+ 	 * the country IE rd with what CRDA believes that country should have
+ 	 */
+ 
+-	BUG_ON(!country_ie_regdomain);
++	/*
++	 * Userspace could have sent two replies with only
++	 * one kernel request. By the second reply we would have
++	 * already processed and consumed the country_ie_regdomain.
++	 */
++	if (!country_ie_regdomain)
++		return -EALREADY;
+ 	BUG_ON(rd == country_ie_regdomain);
+ 
+ 	/*
+diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
+index ed80af8..c51f309 100644
+--- a/net/x25/af_x25.c
++++ b/net/x25/af_x25.c
+@@ -332,14 +332,14 @@ static unsigned int x25_new_lci(struct x25_neigh *nb)
+ /*
+  *	Deferred destroy.
+  */
+-void x25_destroy_socket(struct sock *);
++static void __x25_destroy_socket(struct sock *);
+ 
+ /*
+  *	handler for deferred kills.
+  */
+ static void x25_destroy_timer(unsigned long data)
+ {
+-	x25_destroy_socket((struct sock *)data);
++	x25_destroy_socket_from_timer((struct sock *)data);
+ }
+ 
+ /*
+@@ -349,12 +349,10 @@ static void x25_destroy_timer(unsigned long data)
+  *	will touch it and we are (fairly 8-) ) safe.
+  *	Not static as it's used by the timer
+  */
+-void x25_destroy_socket(struct sock *sk)
++static void __x25_destroy_socket(struct sock *sk)
+ {
+ 	struct sk_buff *skb;
+ 
+-	sock_hold(sk);
+-	lock_sock(sk);
+ 	x25_stop_heartbeat(sk);
+ 	x25_stop_timer(sk);
+ 
+@@ -385,7 +383,22 @@ void x25_destroy_socket(struct sock *sk)
+ 		/* drop last reference so sock_put will free */
+ 		__sock_put(sk);
+ 	}
++}
+ 
++void x25_destroy_socket_from_timer(struct sock *sk)
++{
++	sock_hold(sk);
++	bh_lock_sock(sk);
++	__x25_destroy_socket(sk);
++	bh_unlock_sock(sk);
++	sock_put(sk);
++}
++
++static void x25_destroy_socket(struct sock *sk)
++{
++	sock_hold(sk);
++	lock_sock(sk);
++	__x25_destroy_socket(sk);
+ 	release_sock(sk);
+ 	sock_put(sk);
+ }
+diff --git a/net/x25/x25_timer.c b/net/x25/x25_timer.c
+index d3e3e54..5c5db1a 100644
+--- a/net/x25/x25_timer.c
++++ b/net/x25/x25_timer.c
+@@ -113,7 +113,7 @@ static void x25_heartbeat_expiry(unsigned long param)
+ 			    (sk->sk_state == TCP_LISTEN &&
+ 			     sock_flag(sk, SOCK_DEAD))) {
+ 				bh_unlock_sock(sk);
+-				x25_destroy_socket(sk);
++				x25_destroy_socket_from_timer(sk);
+ 				return;
+ 			}
+ 			break;
+diff --git a/security/integrity/ima/ima_audit.c b/security/integrity/ima/ima_audit.c
+index 1e082bb..97a80fb 100644
+--- a/security/integrity/ima/ima_audit.c
++++ b/security/integrity/ima/ima_audit.c
+@@ -50,7 +50,7 @@ void integrity_audit_msg(int audit_msgno, struct inode *inode,
+ 
+ 	ab = audit_log_start(current->audit_context, GFP_KERNEL, audit_msgno);
+ 	audit_log_format(ab, "integrity: pid=%d uid=%u auid=%u ses=%u",
+-			 current->pid, current->cred->uid,
++			 current->pid, current_cred()->uid,
+ 			 audit_get_loginuid(current),
+ 			 audit_get_sessionid(current));
+ 	audit_log_task_context(ab);
+diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c
+index f4e7266..88407e5 100644
+--- a/security/integrity/ima/ima_main.c
++++ b/security/integrity/ima/ima_main.c
+@@ -128,10 +128,6 @@ static int get_path_measurement(struct ima_iint_cache *iint, struct file *file,
+ {
+ 	int rc = 0;
+ 
+-	if (IS_ERR(file)) {
+-		pr_info("%s dentry_open failed\n", filename);
+-		return rc;
+-	}
+ 	iint->opencount++;
+ 	iint->readcount++;
+ 
+@@ -196,7 +192,14 @@ int ima_path_check(struct path *path, int mask)
+ 		struct dentry *dentry = dget(path->dentry);
+ 		struct vfsmount *mnt = mntget(path->mnt);
+ 
+-		file = dentry_open(dentry, mnt, O_RDONLY, current->cred);
++		file = dentry_open(dentry, mnt, O_RDONLY | O_LARGEFILE,
++				   current_cred());
++		if (IS_ERR(file)) {
++			pr_info("%s dentry_open failed\n", dentry->d_name.name);
++			rc = PTR_ERR(file);
++			file = NULL;
++			goto out;
++		}
+ 		rc = get_path_measurement(iint, file, dentry->d_name.name);
+ 	}
+ out:
+diff --git a/sound/core/seq/seq_midi_event.c b/sound/core/seq/seq_midi_event.c
+index 8284f17..b5d6ea4 100644
+--- a/sound/core/seq/seq_midi_event.c
++++ b/sound/core/seq/seq_midi_event.c
+@@ -504,10 +504,10 @@ static int extra_decode_xrpn(struct snd_midi_event *dev, unsigned char *buf,
+ 	if (dev->nostat && count < 12)
+ 		return -ENOMEM;
+ 	cmd = MIDI_CMD_CONTROL|(ev->data.control.channel & 0x0f);
+-	bytes[0] = ev->data.control.param & 0x007f;
+-	bytes[1] = (ev->data.control.param & 0x3f80) >> 7;
+-	bytes[2] = ev->data.control.value & 0x007f;
+-	bytes[3] = (ev->data.control.value & 0x3f80) >> 7;
++	bytes[0] = (ev->data.control.param & 0x3f80) >> 7;
++	bytes[1] = ev->data.control.param & 0x007f;
++	bytes[2] = (ev->data.control.value & 0x3f80) >> 7;
++	bytes[3] = ev->data.control.value & 0x007f;
+ 	if (cmd != dev->lastcmd && !dev->nostat) {
+ 		if (count < 9)
+ 			return -ENOMEM;
+diff --git a/sound/isa/cmi8330.c b/sound/isa/cmi8330.c
+index de83608..3ee0269 100644
+--- a/sound/isa/cmi8330.c
++++ b/sound/isa/cmi8330.c
+@@ -338,7 +338,7 @@ static int __devinit snd_cmi8330_pnp(int dev, struct snd_cmi8330 *acard,
+ 		return -EBUSY;
+ 
+ 	acard->mpu = pnp_request_card_device(card, id->devs[2].id, NULL);
+-	if (acard->play == NULL)
++	if (acard->mpu == NULL)
+ 		return -EBUSY;
+ 
+ 	pdev = acard->cap;
+diff --git a/sound/pci/ca0106/ca0106_mixer.c b/sound/pci/ca0106/ca0106_mixer.c
+index c111efe..f143f71 100644
+--- a/sound/pci/ca0106/ca0106_mixer.c
++++ b/sound/pci/ca0106/ca0106_mixer.c
+@@ -841,6 +841,9 @@ int __devinit snd_ca0106_mixer(struct snd_ca0106 *emu)
+ 					      snd_ca0106_master_db_scale);
+ 	if (!vmaster)
+ 		return -ENOMEM;
++	err = snd_ctl_add(card, vmaster);
++	if (err < 0)
++		return err;
+ 	add_slaves(card, vmaster, slave_vols);
+ 
+ 	if (emu->details->spi_dac == 1) {
+@@ -848,6 +851,9 @@ int __devinit snd_ca0106_mixer(struct snd_ca0106 *emu)
+ 						      NULL);
+ 		if (!vmaster)
+ 			return -ENOMEM;
++		err = snd_ctl_add(card, vmaster);
++		if (err < 0)
++			return err;
+ 		add_slaves(card, vmaster, slave_sws);
+ 	}
+         return 0;
+diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
+index 0fd258e..f09324a 100644
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -10915,6 +10915,7 @@ static struct snd_pci_quirk alc262_cfg_tbl[] = {
+ 	SND_PCI_QUIRK(0x104d, 0x8203, "Sony UX-90", ALC262_HIPPO),
+ 	SND_PCI_QUIRK(0x104d, 0x820f, "Sony ASSAMD", ALC262_SONY_ASSAMD),
+ 	SND_PCI_QUIRK(0x104d, 0x9016, "Sony VAIO", ALC262_AUTO), /* dig-only */
++	SND_PCI_QUIRK(0x104d, 0x9025, "Sony VAIO Z21MN", ALC262_TOSHIBA_S06),
+ 	SND_PCI_QUIRK_MASK(0x104d, 0xff00, 0x9000, "Sony VAIO",
+ 			   ALC262_SONY_ASSAMD),
+ 	SND_PCI_QUIRK(0x1179, 0x0001, "Toshiba dynabook SS RX1",
+@@ -11122,6 +11123,7 @@ static struct alc_config_preset alc262_presets[] = {
+ 		.capsrc_nids = alc262_dmic_capsrc_nids,
+ 		.dac_nids = alc262_dac_nids,
+ 		.adc_nids = alc262_dmic_adc_nids, /* ADC0 */
++		.num_adc_nids = 1, /* single ADC */
+ 		.dig_out_nid = ALC262_DIGOUT_NID,
+ 		.num_channel_mode = ARRAY_SIZE(alc262_modes),
+ 		.channel_mode = alc262_modes,
+diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
+index 173bebf..8aa5687 100644
+--- a/sound/pci/intel8x0.c
++++ b/sound/pci/intel8x0.c
+@@ -356,8 +356,6 @@ struct ichdev {
+         unsigned int position;
+ 	unsigned int pos_shift;
+ 	unsigned int last_pos;
+-	unsigned long last_pos_jiffies;
+-	unsigned int jiffy_to_bytes;
+         int frags;
+         int lvi;
+         int lvi_frag;
+@@ -844,7 +842,6 @@ static int snd_intel8x0_pcm_trigger(struct snd_pcm_substream *substream, int cmd
+ 	case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
+ 		val = ICH_IOCE | ICH_STARTBM;
+ 		ichdev->last_pos = ichdev->position;
+-		ichdev->last_pos_jiffies = jiffies;
+ 		break;
+ 	case SNDRV_PCM_TRIGGER_SUSPEND:
+ 		ichdev->suspended = 1;
+@@ -1048,7 +1045,6 @@ static int snd_intel8x0_pcm_prepare(struct snd_pcm_substream *substream)
+ 			ichdev->pos_shift = (runtime->sample_bits > 16) ? 2 : 1;
+ 	}
+ 	snd_intel8x0_setup_periods(chip, ichdev);
+-	ichdev->jiffy_to_bytes = (runtime->rate * 4 * ichdev->pos_shift) / HZ;
+ 	return 0;
+ }
+ 
+@@ -1073,19 +1069,23 @@ static snd_pcm_uframes_t snd_intel8x0_pcm_pointer(struct snd_pcm_substream *subs
+ 		    ptr1 == igetword(chip, ichdev->reg_offset + ichdev->roff_picb))
+ 			break;
+ 	} while (timeout--);
++	ptr = ichdev->last_pos;
+ 	if (ptr1 != 0) {
+ 		ptr1 <<= ichdev->pos_shift;
+ 		ptr = ichdev->fragsize1 - ptr1;
+ 		ptr += position;
+-		ichdev->last_pos = ptr;
+-		ichdev->last_pos_jiffies = jiffies;
+-	} else {
+-		ptr1 = jiffies - ichdev->last_pos_jiffies;
+-		if (ptr1)
+-			ptr1 -= 1;
+-		ptr = ichdev->last_pos + ptr1 * ichdev->jiffy_to_bytes;
+-		ptr %= ichdev->size;
++		if (ptr < ichdev->last_pos) {
++			unsigned int pos_base, last_base;
++			pos_base = position / ichdev->fragsize1;
++			last_base = ichdev->last_pos / ichdev->fragsize1;
++			/* another sanity check; ptr1 can go back to full
++			 * before the base position is updated
++			 */
++			if (pos_base == last_base)
++				ptr = ichdev->last_pos;
++		}
+ 	}
++	ichdev->last_pos = ptr;
+ 	spin_unlock(&chip->reg_lock);
+ 	if (ptr >= ichdev->size)
+ 		return 0;
+diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c
+index 8cf571f..39805ce 100644
+--- a/sound/soc/codecs/wm8903.c
++++ b/sound/soc/codecs/wm8903.c
+@@ -1215,22 +1215,18 @@ static struct {
+ 	int div;
+ } bclk_divs[] = {
+ 	{  10,  0 },
+-	{  15,  1 },
+ 	{  20,  2 },
+ 	{  30,  3 },
+ 	{  40,  4 },
+ 	{  50,  5 },
+-	{  55,  6 },
+ 	{  60,  7 },
+ 	{  80,  8 },
+ 	{ 100,  9 },
+-	{ 110, 10 },
+ 	{ 120, 11 },
+ 	{ 160, 12 },
+ 	{ 200, 13 },
+ 	{ 220, 14 },
+ 	{ 240, 15 },
+-	{ 250, 16 },
+ 	{ 300, 17 },
+ 	{ 320, 18 },
+ 	{ 440, 19 },
+diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
+index 4d0dd39..1489829 100644
+--- a/virt/kvm/kvm_main.c
++++ b/virt/kvm/kvm_main.c
+@@ -581,6 +581,7 @@ static bool make_all_cpus_request(struct kvm *kvm, unsigned int req)
+ 		cpumask_clear(cpus);
+ 
+ 	me = get_cpu();
++	spin_lock(&kvm->requests_lock);
+ 	for (i = 0; i < KVM_MAX_VCPUS; ++i) {
+ 		vcpu = kvm->vcpus[i];
+ 		if (!vcpu)
+@@ -597,6 +598,7 @@ static bool make_all_cpus_request(struct kvm *kvm, unsigned int req)
+ 		smp_call_function_many(cpus, ack_flush, NULL, 1);
+ 	else
+ 		called = false;
++	spin_unlock(&kvm->requests_lock);
+ 	put_cpu();
+ 	free_cpumask_var(cpus);
+ 	return called;
+@@ -817,6 +819,7 @@ static struct kvm *kvm_create_vm(void)
+ 	kvm->mm = current->mm;
+ 	atomic_inc(&kvm->mm->mm_count);
+ 	spin_lock_init(&kvm->mmu_lock);
++	spin_lock_init(&kvm->requests_lock);
+ 	kvm_io_bus_init(&kvm->pio_bus);
+ 	mutex_init(&kvm->lock);
+ 	kvm_io_bus_init(&kvm->mmio_bus);
+@@ -919,9 +922,8 @@ int __kvm_set_memory_region(struct kvm *kvm,
+ {
+ 	int r;
+ 	gfn_t base_gfn;
+-	unsigned long npages;
+-	int largepages;
+-	unsigned long i;
++	unsigned long npages, ugfn;
++	unsigned long largepages, i;
+ 	struct kvm_memory_slot *memslot;
+ 	struct kvm_memory_slot old, new;
+ 
+@@ -1010,6 +1012,14 @@ int __kvm_set_memory_region(struct kvm *kvm,
+ 			new.lpage_info[0].write_count = 1;
+ 		if ((base_gfn+npages) % KVM_PAGES_PER_HPAGE)
+ 			new.lpage_info[largepages-1].write_count = 1;
++		ugfn = new.userspace_addr >> PAGE_SHIFT;
++		/*
++		 * If the gfn and userspace address are not aligned wrt each
++		 * other, disable large page support for this slot
++		 */
++		if ((base_gfn ^ ugfn) & (KVM_PAGES_PER_HPAGE - 1))
++			for (i = 0; i < largepages; ++i)
++				new.lpage_info[i].write_count = 1;
+ 	}
+ 
+ 	/* Allocate page dirty bitmap if needed */
+@@ -1020,6 +1030,8 @@ int __kvm_set_memory_region(struct kvm *kvm,
+ 		if (!new.dirty_bitmap)
+ 			goto out_free;
+ 		memset(new.dirty_bitmap, 0, dirty_bytes);
++		if (old.npages)
++			kvm_arch_flush_shadow(kvm);
+ 	}
+ #endif /* not defined CONFIG_S390 */
+ 
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/stable/2.6.30.2.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/stable/2.6.30.2.patch
@@ -0,0 +1,786 @@
+diff --git a/Makefile b/Makefile
+index f8a0893..ab8cda6 100644
+--- a/Makefile
++++ b/Makefile
+@@ -351,7 +351,8 @@ KBUILD_CPPFLAGS := -D__KERNEL__
+ 
+ KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
+ 		   -fno-strict-aliasing -fno-common \
+-		   -Werror-implicit-function-declaration
++		   -Werror-implicit-function-declaration \
++		   -fno-delete-null-pointer-checks
+ KBUILD_AFLAGS   := -D__ASSEMBLY__
+ 
+ # Read KERNELRELEASE from include/config/kernel.release (if it exists)
+@@ -573,7 +574,7 @@ KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
+ KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
+ 
+ # disable invalid "can't wrap" optimizations for signed / pointers
+-KBUILD_CFLAGS	+= $(call cc-option,-fwrapv)
++KBUILD_CFLAGS	+= $(call cc-option,-fno-strict-overflow)
+ 
+ # revert to pre-gcc-4.4 behaviour of .eh_frame
+ KBUILD_CFLAGS	+= $(call cc-option,-fno-dwarf2-cfi-asm)
+diff --git a/arch/alpha/include/asm/percpu.h b/arch/alpha/include/asm/percpu.h
+index 06c5c7a..b663f1f 100644
+--- a/arch/alpha/include/asm/percpu.h
++++ b/arch/alpha/include/asm/percpu.h
+@@ -30,7 +30,7 @@ extern unsigned long __per_cpu_offset[NR_CPUS];
+ 
+ #ifndef MODULE
+ #define SHIFT_PERCPU_PTR(var, offset) RELOC_HIDE(&per_cpu_var(var), (offset))
+-#define PER_CPU_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
+ #else
+ /*
+  * To calculate addresses of locally defined variables, GCC uses 32-bit
+@@ -49,7 +49,7 @@ extern unsigned long __per_cpu_offset[NR_CPUS];
+ 		: "=&r"(__ptr), "=&r"(tmp_gp));		\
+ 	(typeof(&per_cpu_var(var)))(__ptr + (offset)); })
+ 
+-#define PER_CPU_ATTRIBUTES	__used
++#define PER_CPU_DEF_ATTRIBUTES	__used
+ 
+ #endif /* MODULE */
+ 
+@@ -71,7 +71,7 @@ extern unsigned long __per_cpu_offset[NR_CPUS];
+ #define __get_cpu_var(var)		per_cpu_var(var)
+ #define __raw_get_cpu_var(var)		per_cpu_var(var)
+ 
+-#define PER_CPU_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
+ 
+ #endif /* SMP */
+ 
+diff --git a/arch/blackfin/kernel/irqchip.c b/arch/blackfin/kernel/irqchip.c
+index 401bd32..6ab0532 100644
+--- a/arch/blackfin/kernel/irqchip.c
++++ b/arch/blackfin/kernel/irqchip.c
+@@ -38,14 +38,6 @@
+ #include <asm/pda.h>
+ 
+ static atomic_t irq_err_count;
+-static spinlock_t irq_controller_lock;
+-
+-/*
+- * Dummy mask/unmask handler
+- */
+-void dummy_mask_unmask_irq(unsigned int irq)
+-{
+-}
+ 
+ void ack_bad_irq(unsigned int irq)
+ {
+@@ -53,21 +45,9 @@ void ack_bad_irq(unsigned int irq)
+ 	printk(KERN_ERR "IRQ: spurious interrupt %d\n", irq);
+ }
+ 
+-static struct irq_chip bad_chip = {
+-	.ack = dummy_mask_unmask_irq,
+-	.mask = dummy_mask_unmask_irq,
+-	.unmask = dummy_mask_unmask_irq,
+-};
+-
+ static struct irq_desc bad_irq_desc = {
+-	.status = IRQ_DISABLED,
+-	.chip = &bad_chip,
+ 	.handle_irq = handle_bad_irq,
+-	.depth = 1,
+ 	.lock = __SPIN_LOCK_UNLOCKED(irq_desc->lock),
+-#ifdef CONFIG_SMP
+-	.affinity = CPU_MASK_ALL
+-#endif
+ };
+ 
+ #ifdef CONFIG_CPUMASK_OFFSTACK
+@@ -117,21 +97,13 @@ __attribute__((l1_text))
+ #endif
+ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
+ {
+-	struct pt_regs *old_regs;
+-	struct irq_desc *desc = irq_desc + irq;
+ #ifndef CONFIG_IPIPE
+ 	unsigned short pending, other_ints;
+ #endif
+-	old_regs = set_irq_regs(regs);
+-
+-	/*
+-	 * Some hardware gives randomly wrong interrupts.  Rather
+-	 * than crashing, do something sensible.
+-	 */
+-	if (irq >= NR_IRQS)
+-		desc = &bad_irq_desc;
++	struct pt_regs *old_regs = set_irq_regs(regs);
+ 
+ 	irq_enter();
++
+ #ifdef CONFIG_DEBUG_STACKOVERFLOW
+ 	/* Debugging check for stack overflow: is there less than STACK_WARN free? */
+ 	{
+@@ -147,7 +119,15 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
+ 		}
+ 	}
+ #endif
+-	generic_handle_irq(irq);
++
++	/*
++	 * Some hardware gives randomly wrong interrupts.  Rather
++	 * than crashing, do something sensible.
++	 */
++	if (irq >= NR_IRQS)
++		handle_bad_irq(irq, &bad_irq_desc);
++	else
++		generic_handle_irq(irq);
+ 
+ #ifndef CONFIG_IPIPE
+ 	/*
+@@ -171,14 +151,6 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
+ 
+ void __init init_IRQ(void)
+ {
+-	struct irq_desc *desc;
+-	int irq;
+-
+-	spin_lock_init(&irq_controller_lock);
+-	for (irq = 0, desc = irq_desc; irq < NR_IRQS; irq++, desc++) {
+-		*desc = bad_irq_desc;
+-	}
+-
+ 	init_arch_irq();
+ 
+ #ifdef CONFIG_DEBUG_BFIN_HWTRACE_EXPAND
+diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c
+index a58687b..b550bae 100644
+--- a/arch/blackfin/kernel/setup.c
++++ b/arch/blackfin/kernel/setup.c
+@@ -831,7 +831,8 @@ void __init setup_arch(char **cmdline_p)
+     defined(CONFIG_BF538) || defined(CONFIG_BF539)
+ 	_bfin_swrst = bfin_read_SWRST();
+ #else
+-	_bfin_swrst = bfin_read_SYSCR();
++	/* Clear boot mode field */
++	_bfin_swrst = bfin_read_SYSCR() & ~0xf;
+ #endif
+ 
+ #ifdef CONFIG_DEBUG_DOUBLEFAULT_PRINT
+diff --git a/arch/blackfin/mach-common/head.S b/arch/blackfin/mach-common/head.S
+index 698d4c0..7e5143c 100644
+--- a/arch/blackfin/mach-common/head.S
++++ b/arch/blackfin/mach-common/head.S
+@@ -126,25 +126,25 @@ ENTRY(__start)
+ 	 * below
+ 	 */
+ 	GET_PDA(p0, r0);
+-	r7 = [p0 + PDA_RETX];
++	r6 = [p0 + PDA_RETX];
+ 	p1.l = _init_saved_retx;
+ 	p1.h = _init_saved_retx;
+-	[p1] = r7;
++	[p1] = r6;
+ 
+-	r7 = [p0 + PDA_DCPLB];
++	r6 = [p0 + PDA_DCPLB];
+ 	p1.l = _init_saved_dcplb_fault_addr;
+ 	p1.h = _init_saved_dcplb_fault_addr;
+-	[p1] = r7;
++	[p1] = r6;
+ 
+-	r7 = [p0 + PDA_ICPLB];
++	r6 = [p0 + PDA_ICPLB];
+ 	p1.l = _init_saved_icplb_fault_addr;
+ 	p1.h = _init_saved_icplb_fault_addr;
+-	[p1] = r7;
++	[p1] = r6;
+ 
+-	r7 = [p0 + PDA_SEQSTAT];
++	r6 = [p0 + PDA_SEQSTAT];
+ 	p1.l = _init_saved_seqstat;
+ 	p1.h = _init_saved_seqstat;
+-	[p1] = r7;
++	[p1] = r6;
+ #endif
+ 
+ 	/* Initialize stack pointer */
+diff --git a/arch/blackfin/mach-common/smp.c b/arch/blackfin/mach-common/smp.c
+index 93eab61..66fb780 100644
+--- a/arch/blackfin/mach-common/smp.c
++++ b/arch/blackfin/mach-common/smp.c
+@@ -139,7 +139,7 @@ static void ipi_call_function(unsigned int cpu, struct ipi_message *msg)
+ 
+ static irqreturn_t ipi_handler(int irq, void *dev_instance)
+ {
+-	struct ipi_message *msg, *mg;
++	struct ipi_message *msg;
+ 	struct ipi_message_queue *msg_queue;
+ 	unsigned int cpu = smp_processor_id();
+ 
+@@ -149,7 +149,8 @@ static irqreturn_t ipi_handler(int irq, void *dev_instance)
+ 	msg_queue->count++;
+ 
+ 	spin_lock(&msg_queue->lock);
+-	list_for_each_entry_safe(msg, mg, &msg_queue->head, list) {
++	while (!list_empty(&msg_queue->head)) {
++		msg = list_entry(msg_queue->head.next, typeof(*msg), list);
+ 		list_del(&msg->list);
+ 		switch (msg->type) {
+ 		case BFIN_IPI_RESCHEDULE:
+@@ -216,7 +217,7 @@ int smp_call_function(void (*func)(void *info), void *info, int wait)
+ 	for_each_cpu_mask(cpu, callmap) {
+ 		msg_queue = &per_cpu(ipi_msg_queue, cpu);
+ 		spin_lock_irqsave(&msg_queue->lock, flags);
+-		list_add(&msg->list, &msg_queue->head);
++		list_add_tail(&msg->list, &msg_queue->head);
+ 		spin_unlock_irqrestore(&msg_queue->lock, flags);
+ 		platform_send_ipi_cpu(cpu);
+ 	}
+@@ -256,7 +257,7 @@ int smp_call_function_single(int cpuid, void (*func) (void *info), void *info,
+ 
+ 	msg_queue = &per_cpu(ipi_msg_queue, cpu);
+ 	spin_lock_irqsave(&msg_queue->lock, flags);
+-	list_add(&msg->list, &msg_queue->head);
++	list_add_tail(&msg->list, &msg_queue->head);
+ 	spin_unlock_irqrestore(&msg_queue->lock, flags);
+ 	platform_send_ipi_cpu(cpu);
+ 
+@@ -287,7 +288,7 @@ void smp_send_reschedule(int cpu)
+ 
+ 	msg_queue = &per_cpu(ipi_msg_queue, cpu);
+ 	spin_lock_irqsave(&msg_queue->lock, flags);
+-	list_add(&msg->list, &msg_queue->head);
++	list_add_tail(&msg->list, &msg_queue->head);
+ 	spin_unlock_irqrestore(&msg_queue->lock, flags);
+ 	platform_send_ipi_cpu(cpu);
+ 
+@@ -315,7 +316,7 @@ void smp_send_stop(void)
+ 	for_each_cpu_mask(cpu, callmap) {
+ 		msg_queue = &per_cpu(ipi_msg_queue, cpu);
+ 		spin_lock_irqsave(&msg_queue->lock, flags);
+-		list_add(&msg->list, &msg_queue->head);
++		list_add_tail(&msg->list, &msg_queue->head);
+ 		spin_unlock_irqrestore(&msg_queue->lock, flags);
+ 		platform_send_ipi_cpu(cpu);
+ 	}
+diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
+index b51a1e8..abbc09b 100644
+--- a/arch/x86/include/asm/pci.h
++++ b/arch/x86/include/asm/pci.h
+@@ -91,7 +91,7 @@ extern void pci_iommu_alloc(void);
+ 
+ #define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys)
+ 
+-#if defined(CONFIG_X86_64) || defined(CONFIG_DMA_API_DEBUG)
++#if defined(CONFIG_X86_64) || defined(CONFIG_DMAR) || defined(CONFIG_DMA_API_DEBUG)
+ 
+ #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME)       \
+ 	        dma_addr_t ADDR_NAME;
+diff --git a/block/blk-core.c b/block/blk-core.c
+index c89883b..a59f180 100644
+--- a/block/blk-core.c
++++ b/block/blk-core.c
+@@ -1158,6 +1158,11 @@ static int __make_request(struct request_queue *q, struct bio *bio)
+ 
+ 	nr_sectors = bio_sectors(bio);
+ 
++	if (bio_barrier(bio) && bio_has_data(bio) &&
++	    (q->next_ordered == QUEUE_ORDERED_NONE)) {
++		bio_endio(bio, -EOPNOTSUPP);
++		return 0;
++	}
+ 	/*
+ 	 * low level driver can indicate that it wants pages above a
+ 	 * certain limit bounced to low memory (ie for highmem, or even
+@@ -1461,11 +1466,6 @@ static inline void __generic_make_request(struct bio *bio)
+ 			err = -EOPNOTSUPP;
+ 			goto end_io;
+ 		}
+-		if (bio_barrier(bio) && bio_has_data(bio) &&
+-		    (q->next_ordered == QUEUE_ORDERED_NONE)) {
+-			err = -EOPNOTSUPP;
+-			goto end_io;
+-		}
+ 
+ 		ret = q->make_request_fn(q, bio);
+ 	} while (ret);
+diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
+index 1300df6..39e1b58 100644
+--- a/drivers/block/floppy.c
++++ b/drivers/block/floppy.c
+@@ -3327,7 +3327,10 @@ static inline int set_geometry(unsigned int cmd, struct floppy_struct *g,
+ 		if (!capable(CAP_SYS_ADMIN))
+ 			return -EPERM;
+ 		mutex_lock(&open_lock);
+-		LOCK_FDC(drive, 1);
++		if (lock_fdc(drive, 1)) {
++			mutex_unlock(&open_lock);
++			return -EINTR;
++		}
+ 		floppy_type[type] = *g;
+ 		floppy_type[type].name = "user format";
+ 		for (cnt = type << 2; cnt < (type << 2) + 4; cnt++)
+diff --git a/drivers/md/md.c b/drivers/md/md.c
+index 641b211..eb1b73f 100644
+--- a/drivers/md/md.c
++++ b/drivers/md/md.c
+@@ -3589,7 +3589,8 @@ suspend_lo_store(mddev_t *mddev, const char *buf, size_t len)
+ 	char *e;
+ 	unsigned long long new = simple_strtoull(buf, &e, 10);
+ 
+-	if (mddev->pers->quiesce == NULL)
++	if (mddev->pers == NULL ||
++	    mddev->pers->quiesce == NULL)
+ 		return -EINVAL;
+ 	if (buf == e || (*e && *e != '\n'))
+ 		return -EINVAL;
+@@ -3617,7 +3618,8 @@ suspend_hi_store(mddev_t *mddev, const char *buf, size_t len)
+ 	char *e;
+ 	unsigned long long new = simple_strtoull(buf, &e, 10);
+ 
+-	if (mddev->pers->quiesce == NULL)
++	if (mddev->pers == NULL ||
++	    mddev->pers->quiesce == NULL)
+ 		return -EINVAL;
+ 	if (buf == e || (*e && *e != '\n'))
+ 		return -EINVAL;
+@@ -3876,6 +3878,8 @@ static int md_alloc(dev_t dev, char *name)
+ 			if (mddev2->gendisk &&
+ 			    strcmp(mddev2->gendisk->disk_name, name) == 0) {
+ 				spin_unlock(&all_mddevs_lock);
++				mutex_unlock(&disks_mutex);
++				mddev_put(mddev);
+ 				return -EEXIST;
+ 			}
+ 		spin_unlock(&all_mddevs_lock);
+diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
+index c0434e0..1f98ea4 100644
+--- a/drivers/md/raid5.c
++++ b/drivers/md/raid5.c
+@@ -3703,7 +3703,8 @@ static int make_request(struct request_queue *q, struct bio * bi)
+ 			/* FIXME what if we get a false positive because these
+ 			 * are being updated.
+ 			 */
+-			if (logical_sector >= mddev->suspend_lo &&
++			if (bio_data_dir(bi) == WRITE &&
++			    logical_sector >= mddev->suspend_lo &&
+ 			    logical_sector < mddev->suspend_hi) {
+ 				release_stripe(sh);
+ 				schedule();
+diff --git a/drivers/net/tun.c b/drivers/net/tun.c
+index 1be6a6b..8289292 100644
+--- a/drivers/net/tun.c
++++ b/drivers/net/tun.c
+@@ -486,12 +486,14 @@ static unsigned int tun_chr_poll(struct file *file, poll_table * wait)
+ {
+ 	struct tun_file *tfile = file->private_data;
+ 	struct tun_struct *tun = __tun_get(tfile);
+-	struct sock *sk = tun->sk;
++	struct sock *sk;
+ 	unsigned int mask = 0;
+ 
+ 	if (!tun)
+ 		return POLLERR;
+ 
++	sk = tun->sk;
++
+ 	DBG(KERN_INFO "%s: tun_chr_poll\n", tun->dev->name);
+ 
+ 	poll_wait(file, &tun->socket.wait, wait);
+diff --git a/drivers/pci/iova.c b/drivers/pci/iova.c
+index 2287116..46dd440 100644
+--- a/drivers/pci/iova.c
++++ b/drivers/pci/iova.c
+@@ -1,9 +1,19 @@
+ /*
+- * Copyright (c) 2006, Intel Corporation.
++ * Copyright © 2006-2009, Intel Corporation.
+  *
+- * This file is released under the GPLv2.
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms and conditions of the GNU General Public License,
++ * version 2, as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope 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., 59 Temple
++ * Place - Suite 330, Boston, MA 02111-1307 USA.
+  *
+- * Copyright (C) 2006-2008 Intel Corporation
+  * Author: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
+  */
+ 
+@@ -123,7 +133,15 @@ move_left:
+ 	/* Insert the new_iova into domain rbtree by holding writer lock */
+ 	/* Add new node and rebalance tree. */
+ 	{
+-		struct rb_node **entry = &((prev)), *parent = NULL;
++		struct rb_node **entry, *parent = NULL;
++
++		/* If we have 'prev', it's a valid place to start the
++		   insertion. Otherwise, start from the root. */
++		if (prev)
++			entry = &prev;
++		else
++			entry = &iovad->rbroot.rb_node;
++
+ 		/* Figure out where to put new node */
+ 		while (*entry) {
+ 			struct iova *this = container_of(*entry,
+diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
+index ba76b68..eb40335 100644
+--- a/fs/fuse/dev.c
++++ b/fs/fuse/dev.c
+@@ -904,7 +904,7 @@ static ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov,
+ 			       unsigned long nr_segs, loff_t pos)
+ {
+ 	int err;
+-	unsigned nbytes = iov_length(iov, nr_segs);
++	size_t nbytes = iov_length(iov, nr_segs);
+ 	struct fuse_req *req;
+ 	struct fuse_out_header oh;
+ 	struct fuse_copy_state cs;
+diff --git a/fs/fuse/file.c b/fs/fuse/file.c
+index 06f30e9..053ff1c 100644
+--- a/fs/fuse/file.c
++++ b/fs/fuse/file.c
+@@ -1867,7 +1867,7 @@ static unsigned fuse_file_poll(struct file *file, poll_table *wait)
+ 
+ 	req = fuse_get_req(fc);
+ 	if (IS_ERR(req))
+-		return PTR_ERR(req);
++		return POLLERR;
+ 
+ 	req->in.h.opcode = FUSE_POLL;
+ 	req->in.h.nodeid = get_node_id(inode);
+diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h
+index d7d50d7..aa00800 100644
+--- a/include/asm-generic/percpu.h
++++ b/include/asm-generic/percpu.h
+@@ -97,4 +97,8 @@ extern void setup_per_cpu_areas(void);
+ #define PER_CPU_ATTRIBUTES
+ #endif
+ 
++#ifndef PER_CPU_DEF_ATTRIBUTES
++#define PER_CPU_DEF_ATTRIBUTES
++#endif
++
+ #endif /* _ASM_GENERIC_PERCPU_H_ */
+diff --git a/include/linux/mm.h b/include/linux/mm.h
+index bff1f0d..0c21af6 100644
+--- a/include/linux/mm.h
++++ b/include/linux/mm.h
+@@ -580,12 +580,10 @@ static inline void set_page_links(struct page *page, enum zone_type zone,
+  */
+ static inline unsigned long round_hint_to_min(unsigned long hint)
+ {
+-#ifdef CONFIG_SECURITY
+ 	hint &= PAGE_MASK;
+ 	if (((void *)hint != NULL) &&
+ 	    (hint < mmap_min_addr))
+ 		return PAGE_ALIGN(mmap_min_addr);
+-#endif
+ 	return hint;
+ }
+ 
+diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h
+index 8f921d7..68438e1 100644
+--- a/include/linux/percpu-defs.h
++++ b/include/linux/percpu-defs.h
+@@ -24,7 +24,8 @@
+ 
+ #define DEFINE_PER_CPU_SECTION(type, name, section)			\
+ 	__attribute__((__section__(PER_CPU_BASE_SECTION section)))	\
+-	PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
++	PER_CPU_ATTRIBUTES PER_CPU_DEF_ATTRIBUTES			\
++	__typeof__(type) per_cpu__##name
+ 
+ /*
+  * Variant on the per-CPU variable declaration/definition theme used for
+diff --git a/include/linux/personality.h b/include/linux/personality.h
+index a84e9ff..1261208 100644
+--- a/include/linux/personality.h
++++ b/include/linux/personality.h
+@@ -40,7 +40,10 @@ enum {
+  * Security-relevant compatibility flags that must be
+  * cleared upon setuid or setgid exec:
+  */
+-#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC|ADDR_NO_RANDOMIZE)
++#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC  | \
++			    ADDR_NO_RANDOMIZE  | \
++			    ADDR_COMPAT_LAYOUT | \
++			    MMAP_PAGE_ZERO)
+ 
+ /*
+  * Personality types.
+diff --git a/include/linux/security.h b/include/linux/security.h
+index d5fd616..5eff459 100644
+--- a/include/linux/security.h
++++ b/include/linux/security.h
+@@ -2197,6 +2197,8 @@ static inline int security_file_mmap(struct file *file, unsigned long reqprot,
+ 				     unsigned long addr,
+ 				     unsigned long addr_only)
+ {
++	if ((addr < mmap_min_addr) && !capable(CAP_SYS_RAWIO))
++		return -EACCES;
+ 	return 0;
+ }
+ 
+diff --git a/kernel/futex.c b/kernel/futex.c
+index d546b2d..4d973bd 100644
+--- a/kernel/futex.c
++++ b/kernel/futex.c
+@@ -241,6 +241,7 @@ again:
+ 	if (err < 0)
+ 		return err;
+ 
++	page = compound_head(page);
+ 	lock_page(page);
+ 	if (!page->mapping) {
+ 		unlock_page(page);
+@@ -278,6 +279,25 @@ void put_futex_key(int fshared, union futex_key *key)
+ 	drop_futex_key_refs(key);
+ }
+ 
++/*
++ * fault_in_user_writeable - fault in user address and verify RW access
++ * @uaddr:	pointer to faulting user space address
++ *
++ * Slow path to fixup the fault we just took in the atomic write
++ * access to @uaddr.
++ *
++ * We have no generic implementation of a non destructive write to the
++ * user address. We know that we faulted in the atomic pagefault
++ * disabled section so we can as well avoid the #PF overhead by
++ * calling get_user_pages() right away.
++ */
++static int fault_in_user_writeable(u32 __user *uaddr)
++{
++	int ret = get_user_pages(current, current->mm, (unsigned long)uaddr,
++				 1, 1, 0, NULL, NULL);
++	return ret < 0 ? ret : 0;
++}
++
+ static u32 cmpxchg_futex_value_locked(u32 __user *uaddr, u32 uval, u32 newval)
+ {
+ 	u32 curval;
+@@ -739,7 +759,6 @@ retry:
+ retry_private:
+ 	op_ret = futex_atomic_op_inuser(op, uaddr2);
+ 	if (unlikely(op_ret < 0)) {
+-		u32 dummy;
+ 
+ 		double_unlock_hb(hb1, hb2);
+ 
+@@ -757,7 +776,7 @@ retry_private:
+ 			goto out_put_keys;
+ 		}
+ 
+-		ret = get_user(dummy, uaddr2);
++		ret = fault_in_user_writeable(uaddr2);
+ 		if (ret)
+ 			goto out_put_keys;
+ 
+@@ -1097,7 +1116,7 @@ retry:
+ handle_fault:
+ 	spin_unlock(q->lock_ptr);
+ 
+-	ret = get_user(uval, uaddr);
++	ret = fault_in_user_writeable(uaddr);
+ 
+ 	spin_lock(q->lock_ptr);
+ 
+@@ -1552,16 +1571,9 @@ out:
+ 	return ret;
+ 
+ uaddr_faulted:
+-	/*
+-	 * We have to r/w  *(int __user *)uaddr, and we have to modify it
+-	 * atomically.  Therefore, if we continue to fault after get_user()
+-	 * below, we need to handle the fault ourselves, while still holding
+-	 * the mmap_sem.  This can occur if the uaddr is under contention as
+-	 * we have to drop the mmap_sem in order to call get_user().
+-	 */
+ 	queue_unlock(&q, hb);
+ 
+-	ret = get_user(uval, uaddr);
++	ret = fault_in_user_writeable(uaddr);
+ 	if (ret)
+ 		goto out_put_key;
+ 
+@@ -1657,17 +1669,10 @@ out:
+ 	return ret;
+ 
+ pi_faulted:
+-	/*
+-	 * We have to r/w  *(int __user *)uaddr, and we have to modify it
+-	 * atomically.  Therefore, if we continue to fault after get_user()
+-	 * below, we need to handle the fault ourselves, while still holding
+-	 * the mmap_sem.  This can occur if the uaddr is under contention as
+-	 * we have to drop the mmap_sem in order to call get_user().
+-	 */
+ 	spin_unlock(&hb->lock);
+ 	put_futex_key(fshared, &key);
+ 
+-	ret = get_user(uval, uaddr);
++	ret = fault_in_user_writeable(uaddr);
+ 	if (!ret)
+ 		goto retry;
+ 
+diff --git a/kernel/resource.c b/kernel/resource.c
+index ac5f3a3..78b0872 100644
+--- a/kernel/resource.c
++++ b/kernel/resource.c
+@@ -787,7 +787,7 @@ static int __init reserve_setup(char *str)
+ 	static struct resource reserve[MAXRESERVE];
+ 
+ 	for (;;) {
+-		int io_start, io_num;
++		unsigned int io_start, io_num;
+ 		int x = reserved;
+ 
+ 		if (get_option (&str, &io_start) != 2)
+diff --git a/kernel/sysctl.c b/kernel/sysctl.c
+index b2970d5..e5bfcc7 100644
+--- a/kernel/sysctl.c
++++ b/kernel/sysctl.c
+@@ -1225,7 +1225,6 @@ static struct ctl_table vm_table[] = {
+ 		.strategy	= &sysctl_jiffies,
+ 	},
+ #endif
+-#ifdef CONFIG_SECURITY
+ 	{
+ 		.ctl_name	= CTL_UNNUMBERED,
+ 		.procname	= "mmap_min_addr",
+@@ -1234,7 +1233,6 @@ static struct ctl_table vm_table[] = {
+ 		.mode		= 0644,
+ 		.proc_handler	= &proc_doulongvec_minmax,
+ 	},
+-#endif
+ #ifdef CONFIG_NUMA
+ 	{
+ 		.ctl_name	= CTL_UNNUMBERED,
+diff --git a/lib/dma-debug.c b/lib/dma-debug.c
+index 2b16536..6a4e3d4 100644
+--- a/lib/dma-debug.c
++++ b/lib/dma-debug.c
+@@ -599,7 +599,7 @@ static inline bool overlap(void *addr, u64 size, void *start, void *end)
+ 
+ 	return ((addr >= start && addr < end) ||
+ 		(addr2 >= start && addr2 < end) ||
+-		((addr < start) && (addr2 >= end)));
++		((addr < start) && (addr2 > end)));
+ }
+ 
+ static void check_for_illegal_area(struct device *dev, void *addr, u64 size)
+diff --git a/mm/Kconfig b/mm/Kconfig
+index c2b57d8..71830ba 100644
+--- a/mm/Kconfig
++++ b/mm/Kconfig
+@@ -226,6 +226,25 @@ config HAVE_MLOCKED_PAGE_BIT
+ config MMU_NOTIFIER
+ 	bool
+ 
++config DEFAULT_MMAP_MIN_ADDR
++        int "Low address space to protect from user allocation"
++        default 4096
++        help
++	  This is the portion of low virtual memory which should be protected
++	  from userspace allocation.  Keeping a user from writing to low pages
++	  can help reduce the impact of kernel NULL pointer bugs.
++
++	  For most ia64, ppc64 and x86 users with lots of address space
++	  a value of 65536 is reasonable and should cause no problems.
++	  On arm and other archs it should not be higher than 32768.
++	  Programs which use vm86 functionality would either need additional
++	  permissions from either the LSM or the capabilities module or have
++	  this protection disabled.
++
++	  This value can be changed after boot using the
++	  /proc/sys/vm/mmap_min_addr tunable.
++
++
+ config NOMMU_INITIAL_TRIM_EXCESS
+ 	int "Turn on mmap() excess space trimming before booting"
+ 	depends on !MMU
+diff --git a/mm/mmap.c b/mm/mmap.c
+index 6b7b1a9..2b43fa1 100644
+--- a/mm/mmap.c
++++ b/mm/mmap.c
+@@ -87,6 +87,9 @@ int sysctl_overcommit_ratio = 50;	/* default is 50% */
+ int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT;
+ struct percpu_counter vm_committed_as;
+ 
++/* amount of vm to protect from userspace access */
++unsigned long mmap_min_addr = CONFIG_DEFAULT_MMAP_MIN_ADDR;
++
+ /*
+  * Check that a process has enough memory to allocate a new virtual
+  * mapping. 0 means there is enough memory for the allocation to
+diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
+index f11931c..9c22032 100644
+--- a/net/ipv4/arp.c
++++ b/net/ipv4/arp.c
+@@ -801,11 +801,8 @@ static int arp_process(struct sk_buff *skb)
+  *  cache.
+  */
+ 
+-	/*
+-	 *  Special case: IPv4 duplicate address detection packet (RFC2131)
+-	 *  and Gratuitous ARP/ARP Announce. (RFC3927, Section 2.4)
+-	 */
+-	if (sip == 0 || tip == sip) {
++	/* Special case: IPv4 duplicate address detection packet (RFC2131) */
++	if (sip == 0) {
+ 		if (arp->ar_op == htons(ARPOP_REQUEST) &&
+ 		    inet_addr_type(net, tip) == RTN_LOCAL &&
+ 		    !arp_ignore(in_dev, sip, tip))
+diff --git a/security/Kconfig b/security/Kconfig
+index bb24477..d23c839 100644
+--- a/security/Kconfig
++++ b/security/Kconfig
+@@ -110,28 +110,8 @@ config SECURITY_ROOTPLUG
+ 
+ 	  See <http://www.linuxjournal.com/article.php?sid=6279> for
+ 	  more information about this module.
+-	  
+-	  If you are unsure how to answer this question, answer N.
+-
+-config SECURITY_DEFAULT_MMAP_MIN_ADDR
+-        int "Low address space to protect from user allocation"
+-        depends on SECURITY
+-        default 0
+-        help
+-	  This is the portion of low virtual memory which should be protected
+-	  from userspace allocation.  Keeping a user from writing to low pages
+-	  can help reduce the impact of kernel NULL pointer bugs.
+-
+-	  For most ia64, ppc64 and x86 users with lots of address space
+-	  a value of 65536 is reasonable and should cause no problems.
+-	  On arm and other archs it should not be higher than 32768.
+-	  Programs which use vm86 functionality would either need additional
+-	  permissions from either the LSM or the capabilities module or have
+-	  this protection disabled.
+-
+-	  This value can be changed after boot using the
+-	  /proc/sys/vm/mmap_min_addr tunable.
+ 
++	  If you are unsure how to answer this question, answer N.
+ 
+ source security/selinux/Kconfig
+ source security/smack/Kconfig
+diff --git a/security/security.c b/security/security.c
+index 5284255..dc7674f 100644
+--- a/security/security.c
++++ b/security/security.c
+@@ -26,9 +26,6 @@ extern void security_fixup_ops(struct security_operations *ops);
+ 
+ struct security_operations *security_ops;	/* Initialized to NULL */
+ 
+-/* amount of vm to protect from userspace access */
+-unsigned long mmap_min_addr = CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR;
+-
+ static inline int verify(struct security_operations *ops)
+ {
+ 	/* verify the security_operations structure exists */
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/stable/2.6.30.3.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/stable/2.6.30.3.patch
@@ -0,0 +1,15 @@
+diff --git a/drivers/video/fbmon.c b/drivers/video/fbmon.c
+index 5c1a2c0..9ae9cd3 100644
+--- a/drivers/video/fbmon.c
++++ b/drivers/video/fbmon.c
+@@ -256,8 +256,8 @@ static void fix_edid(unsigned char *edid, int fix)
+ 
+ static int edid_checksum(unsigned char *edid)
+ {
+-	unsigned char i, csum = 0, all_null = 0;
+-	int err = 0, fix = check_edid(edid);
++	unsigned char csum = 0, all_null = 0;
++	int i, err = 0, fix = check_edid(edid);
+ 
+ 	if (fix)
+ 		fix_edid(edid, fix);
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/stable/gen-patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/stable/gen-patch
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+
+import os.path, re, sys, textwrap
+
+class Version(object):
+    _rules = ur"^(\d+\.\d+\.\d+)\.(\d+)$"
+    _re = re.compile(_rules)
+
+    def __init__(self, version):
+        self.complete = version
+        match = self._re.match(version)
+        if match is None:
+            raise RuntimeError
+        self.release = match.group(1)
+        self.patch = int(match.group(2))
+
+class GenPatch(object):
+    def __init__(self, path, repo, version):
+        self.path = path
+        self.repo = repo
+        self.version = version
+
+    def __call__(self):
+        base = self.version.complete
+        patch = base + '.patch'
+        log = base + '.log'
+        series = base + '.series'
+
+        if self.version.patch == 1:
+            tag_in = "v%s" % self.version.release
+        else:
+            tag_in = "v%s.%d" % (self.version.release, self.version.patch - 1)
+        tag_out = "v%s" % self.version.complete
+        print tag_in, tag_out
+
+        f = os.popen("cd %s; git diff %s %s > %s" % (self.repo, tag_in, tag_out, os.path.join(self.path, patch)))
+        if f.close() is not None:
+            raise RuntimeError
+
+        f = os.popen("cd %s; git log --oneline --reverse %s..%s^" % (self.repo, tag_in, tag_out))
+        out = file(os.path.join(self.path, log), 'w')
+        out.write("  * Add stable release %s:\n" % self.version.complete)
+        for line in f:
+            line = line.strip()
+            if not line:
+                continue
+            hash, log = line.split(' ', 1)
+            log = textwrap.wrap(log, 74)
+            log = '\n      '.join(log)
+            out.write("    - %s\n" % log)
+        if f.close() is not None:
+            raise RuntimeError
+
+        out = file(os.path.join(self.path, series), 'w')
+        out.write("+ bugfix/all/stable/%s\n" % patch)
+        out.close()
+
+if __name__ == '__main__':
+    path = os.path.realpath(os.path.dirname(sys.argv[0]))
+    repo = sys.argv[1]
+    for i in sys.argv[2:]:
+        GenPatch(path, repo, Version(i))()
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/all/stable/2.6.30.4.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/all/stable/2.6.30.4.patch
@@ -0,0 +1,2452 @@
+diff --git a/Documentation/RCU/rculist_nulls.txt b/Documentation/RCU/rculist_nulls.txt
+index 6389dec..d0c017e 100644
+--- a/Documentation/RCU/rculist_nulls.txt
++++ b/Documentation/RCU/rculist_nulls.txt
+@@ -83,11 +83,12 @@ not detect it missed following items in original chain.
+ obj = kmem_cache_alloc(...);
+ lock_chain(); // typically a spin_lock()
+ obj->key = key;
+-atomic_inc(&obj->refcnt);
+ /*
+  * we need to make sure obj->key is updated before obj->next
++ * or obj->refcnt
+  */
+ smp_wmb();
++atomic_set(&obj->refcnt, 1);
+ hlist_add_head_rcu(&obj->obj_node, list);
+ unlock_chain(); // typically a spin_unlock()
+ 
+@@ -159,6 +160,10 @@ out:
+ obj = kmem_cache_alloc(cachep);
+ lock_chain(); // typically a spin_lock()
+ obj->key = key;
++/*
++ * changes to obj->key must be visible before refcnt one
++ */
++smp_wmb();
+ atomic_set(&obj->refcnt, 1);
+ /*
+  * insert obj in RCU way (readers might be traversing chain)
+diff --git a/arch/parisc/include/asm/system.h b/arch/parisc/include/asm/system.h
+index ee80c92..d91357b 100644
+--- a/arch/parisc/include/asm/system.h
++++ b/arch/parisc/include/asm/system.h
+@@ -168,8 +168,8 @@ static inline void set_eiem(unsigned long val)
+ /* LDCW, the only atomic read-write operation PA-RISC has. *sigh*.  */
+ #define __ldcw(a) ({						\
+ 	unsigned __ret;						\
+-	__asm__ __volatile__(__LDCW " 0(%1),%0"			\
+-		: "=r" (__ret) : "r" (a));			\
++	__asm__ __volatile__(__LDCW " 0(%2),%0"			\
++		: "=r" (__ret), "+m" (*(a)) : "r" (a));		\
+ 	__ret;							\
+ })
+ 
+diff --git a/arch/parisc/include/asm/tlbflush.h b/arch/parisc/include/asm/tlbflush.h
+index 1f6fd4f..8f1a810 100644
+--- a/arch/parisc/include/asm/tlbflush.h
++++ b/arch/parisc/include/asm/tlbflush.h
+@@ -12,14 +12,12 @@
+  * N class systems, only one PxTLB inter processor broadcast can be
+  * active at any one time on the Merced bus.  This tlb purge
+  * synchronisation is fairly lightweight and harmless so we activate
+- * it on all SMP systems not just the N class.  We also need to have
+- * preemption disabled on uniprocessor machines, and spin_lock does that
+- * nicely.
++ * it on all systems not just the N class.
+  */
+ extern spinlock_t pa_tlb_lock;
+ 
+-#define purge_tlb_start(x) spin_lock(&pa_tlb_lock)
+-#define purge_tlb_end(x) spin_unlock(&pa_tlb_lock)
++#define purge_tlb_start(flags)	spin_lock_irqsave(&pa_tlb_lock, flags)
++#define purge_tlb_end(flags)	spin_unlock_irqrestore(&pa_tlb_lock, flags)
+ 
+ extern void flush_tlb_all(void);
+ extern void flush_tlb_all_local(void *);
+@@ -63,14 +61,16 @@ static inline void flush_tlb_mm(struct mm_struct *mm)
+ static inline void flush_tlb_page(struct vm_area_struct *vma,
+ 	unsigned long addr)
+ {
++	unsigned long flags;
++
+ 	/* For one page, it's not worth testing the split_tlb variable */
+ 
+ 	mb();
+ 	mtsp(vma->vm_mm->context,1);
+-	purge_tlb_start();
++	purge_tlb_start(flags);
+ 	pdtlb(addr);
+ 	pitlb(addr);
+-	purge_tlb_end();
++	purge_tlb_end(flags);
+ }
+ 
+ void __flush_tlb_range(unsigned long sid,
+diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
+index 837530e..43546de 100644
+--- a/arch/parisc/kernel/cache.c
++++ b/arch/parisc/kernel/cache.c
+@@ -398,12 +398,13 @@ EXPORT_SYMBOL(flush_kernel_icache_range_asm);
+ 
+ void clear_user_page_asm(void *page, unsigned long vaddr)
+ {
++	unsigned long flags;
+ 	/* This function is implemented in assembly in pacache.S */
+ 	extern void __clear_user_page_asm(void *page, unsigned long vaddr);
+ 
+-	purge_tlb_start();
++	purge_tlb_start(flags);
+ 	__clear_user_page_asm(page, vaddr);
+-	purge_tlb_end();
++	purge_tlb_end(flags);
+ }
+ 
+ #define FLUSH_THRESHOLD 0x80000 /* 0.5MB */
+@@ -444,20 +445,24 @@ extern void clear_user_page_asm(void *page, unsigned long vaddr);
+ 
+ void clear_user_page(void *page, unsigned long vaddr, struct page *pg)
+ {
++	unsigned long flags;
++
+ 	purge_kernel_dcache_page((unsigned long)page);
+-	purge_tlb_start();
++	purge_tlb_start(flags);
+ 	pdtlb_kernel(page);
+-	purge_tlb_end();
++	purge_tlb_end(flags);
+ 	clear_user_page_asm(page, vaddr);
+ }
+ EXPORT_SYMBOL(clear_user_page);
+ 
+ void flush_kernel_dcache_page_addr(void *addr)
+ {
++	unsigned long flags;
++
+ 	flush_kernel_dcache_page_asm(addr);
+-	purge_tlb_start();
++	purge_tlb_start(flags);
+ 	pdtlb_kernel(addr);
+-	purge_tlb_end();
++	purge_tlb_end(flags);
+ }
+ EXPORT_SYMBOL(flush_kernel_dcache_page_addr);
+ 
+@@ -490,8 +495,10 @@ void __flush_tlb_range(unsigned long sid, unsigned long start,
+ 	if (npages >= 512)  /* 2MB of space: arbitrary, should be tuned */
+ 		flush_tlb_all();
+ 	else {
++		unsigned long flags;
++
+ 		mtsp(sid, 1);
+-		purge_tlb_start();
++		purge_tlb_start(flags);
+ 		if (split_tlb) {
+ 			while (npages--) {
+ 				pdtlb(start);
+@@ -504,7 +511,7 @@ void __flush_tlb_range(unsigned long sid, unsigned long start,
+ 				start += PAGE_SIZE;
+ 			}
+ 		}
+-		purge_tlb_end();
++		purge_tlb_end(flags);
+ 	}
+ }
+ 
+diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c
+index 7d927ea..c07f618 100644
+--- a/arch/parisc/kernel/pci-dma.c
++++ b/arch/parisc/kernel/pci-dma.c
+@@ -90,12 +90,14 @@ static inline int map_pte_uncached(pte_t * pte,
+ 	if (end > PMD_SIZE)
+ 		end = PMD_SIZE;
+ 	do {
++		unsigned long flags;
++
+ 		if (!pte_none(*pte))
+ 			printk(KERN_ERR "map_pte_uncached: page already exists\n");
+ 		set_pte(pte, __mk_pte(*paddr_ptr, PAGE_KERNEL_UNC));
+-		purge_tlb_start();
++		purge_tlb_start(flags);
+ 		pdtlb_kernel(orig_vaddr);
+-		purge_tlb_end();
++		purge_tlb_end(flags);
+ 		vaddr += PAGE_SIZE;
+ 		orig_vaddr += PAGE_SIZE;
+ 		(*paddr_ptr) += PAGE_SIZE;
+@@ -168,11 +170,13 @@ static inline void unmap_uncached_pte(pmd_t * pmd, unsigned long vaddr,
+ 	if (end > PMD_SIZE)
+ 		end = PMD_SIZE;
+ 	do {
++		unsigned long flags;
+ 		pte_t page = *pte;
++
+ 		pte_clear(&init_mm, vaddr, pte);
+-		purge_tlb_start();
++		purge_tlb_start(flags);
+ 		pdtlb_kernel(orig_vaddr);
+-		purge_tlb_end();
++		purge_tlb_end(flags);
+ 		vaddr += PAGE_SIZE;
+ 		orig_vaddr += PAGE_SIZE;
+ 		pte++;
+diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
+index 0efc12d..5bd527b 100644
+--- a/arch/powerpc/sysdev/mpic.c
++++ b/arch/powerpc/sysdev/mpic.c
+@@ -279,28 +279,29 @@ static void _mpic_map_mmio(struct mpic *mpic, phys_addr_t phys_addr,
+ }
+ 
+ #ifdef CONFIG_PPC_DCR
+-static void _mpic_map_dcr(struct mpic *mpic, struct mpic_reg_bank *rb,
++static void _mpic_map_dcr(struct mpic *mpic, struct device_node *node,
++			  struct mpic_reg_bank *rb,
+ 			  unsigned int offset, unsigned int size)
+ {
+ 	const u32 *dbasep;
+ 
+-	dbasep = of_get_property(mpic->irqhost->of_node, "dcr-reg", NULL);
++	dbasep = of_get_property(node, "dcr-reg", NULL);
+ 
+-	rb->dhost = dcr_map(mpic->irqhost->of_node, *dbasep + offset, size);
++	rb->dhost = dcr_map(node, *dbasep + offset, size);
+ 	BUG_ON(!DCR_MAP_OK(rb->dhost));
+ }
+ 
+-static inline void mpic_map(struct mpic *mpic, phys_addr_t phys_addr,
+-			    struct mpic_reg_bank *rb, unsigned int offset,
+-			    unsigned int size)
++static inline void mpic_map(struct mpic *mpic, struct device_node *node,
++			    phys_addr_t phys_addr, struct mpic_reg_bank *rb,
++			    unsigned int offset, unsigned int size)
+ {
+ 	if (mpic->flags & MPIC_USES_DCR)
+-		_mpic_map_dcr(mpic, rb, offset, size);
++		_mpic_map_dcr(mpic, node, rb, offset, size);
+ 	else
+ 		_mpic_map_mmio(mpic, phys_addr, rb, offset, size);
+ }
+ #else /* CONFIG_PPC_DCR */
+-#define mpic_map(m,p,b,o,s)	_mpic_map_mmio(m,p,b,o,s)
++#define mpic_map(m,n,p,b,o,s)	_mpic_map_mmio(m,p,b,o,s)
+ #endif /* !CONFIG_PPC_DCR */
+ 
+ 
+@@ -1150,8 +1151,8 @@ struct mpic * __init mpic_alloc(struct device_node *node,
+ 	}
+ 
+ 	/* Map the global registers */
+-	mpic_map(mpic, paddr, &mpic->gregs, MPIC_INFO(GREG_BASE), 0x1000);
+-	mpic_map(mpic, paddr, &mpic->tmregs, MPIC_INFO(TIMER_BASE), 0x1000);
++	mpic_map(mpic, node, paddr, &mpic->gregs, MPIC_INFO(GREG_BASE), 0x1000);
++	mpic_map(mpic, node, paddr, &mpic->tmregs, MPIC_INFO(TIMER_BASE), 0x1000);
+ 
+ 	/* Reset */
+ 	if (flags & MPIC_WANTS_RESET) {
+@@ -1192,7 +1193,7 @@ struct mpic * __init mpic_alloc(struct device_node *node,
+ 
+ 	/* Map the per-CPU registers */
+ 	for (i = 0; i < mpic->num_cpus; i++) {
+-		mpic_map(mpic, paddr, &mpic->cpuregs[i],
++		mpic_map(mpic, node, paddr, &mpic->cpuregs[i],
+ 			 MPIC_INFO(CPU_BASE) + i * MPIC_INFO(CPU_STRIDE),
+ 			 0x1000);
+ 	}
+@@ -1200,7 +1201,7 @@ struct mpic * __init mpic_alloc(struct device_node *node,
+ 	/* Initialize main ISU if none provided */
+ 	if (mpic->isu_size == 0) {
+ 		mpic->isu_size = mpic->num_sources;
+-		mpic_map(mpic, paddr, &mpic->isus[0],
++		mpic_map(mpic, node, paddr, &mpic->isus[0],
+ 			 MPIC_INFO(IRQ_BASE), MPIC_INFO(IRQ_STRIDE) * mpic->isu_size);
+ 	}
+ 	mpic->isu_shift = 1 + __ilog2(mpic->isu_size - 1);
+@@ -1254,8 +1255,10 @@ void __init mpic_assign_isu(struct mpic *mpic, unsigned int isu_num,
+ 
+ 	BUG_ON(isu_num >= MPIC_MAX_ISU);
+ 
+-	mpic_map(mpic, paddr, &mpic->isus[isu_num], 0,
++	mpic_map(mpic, mpic->irqhost->of_node,
++		 paddr, &mpic->isus[isu_num], 0,
+ 		 MPIC_INFO(IRQ_STRIDE) * mpic->isu_size);
++
+ 	if ((isu_first + mpic->isu_size) > mpic->num_sources)
+ 		mpic->num_sources = isu_first + mpic->isu_size;
+ }
+diff --git a/arch/x86/boot/video-vga.c b/arch/x86/boot/video-vga.c
+index 9e0587a..2fd19e6 100644
+--- a/arch/x86/boot/video-vga.c
++++ b/arch/x86/boot/video-vga.c
+@@ -45,8 +45,10 @@ static u8 vga_set_basic_mode(void)
+ 
+ #ifdef CONFIG_VIDEO_400_HACK
+ 	if (adapter >= ADAPTER_VGA) {
++		ax = 0x1202;
+ 		asm volatile(INT10
+-			     : : "a" (0x1202), "b" (0x0030)
++			     : "+a" (ax)
++			     : "b" (0x0030)
+ 			     : "ecx", "edx", "esi", "edi");
+ 	}
+ #endif
+@@ -81,44 +83,59 @@ static u8 vga_set_basic_mode(void)
+ 
+ static void vga_set_8font(void)
+ {
++	u16 ax;
++
+ 	/* Set 8x8 font - 80x43 on EGA, 80x50 on VGA */
+ 
+ 	/* Set 8x8 font */
+-	asm volatile(INT10 : : "a" (0x1112), "b" (0));
++	ax = 0x1112;
++	asm volatile(INT10 : "+a" (ax) : "b" (0));
+ 
+ 	/* Use alternate print screen */
+-	asm volatile(INT10 : : "a" (0x1200), "b" (0x20));
++	ax = 0x1200;
++	asm volatile(INT10 : "+a" (ax) : "b" (0x20));
+ 
+ 	/* Turn off cursor emulation */
+-	asm volatile(INT10 : : "a" (0x1201), "b" (0x34));
++	ax = 0x1201;
++	asm volatile(INT10 : "+a" (ax) : "b" (0x34));
+ 
+ 	/* Cursor is scan lines 6-7 */
+-	asm volatile(INT10 : : "a" (0x0100), "c" (0x0607));
++	ax = 0x0100;
++	asm volatile(INT10 : "+a" (ax) : "c" (0x0607));
+ }
+ 
+ static void vga_set_14font(void)
+ {
++	u16 ax;
++
+ 	/* Set 9x14 font - 80x28 on VGA */
+ 
+ 	/* Set 9x14 font */
+-	asm volatile(INT10 : : "a" (0x1111), "b" (0));
++	ax = 0x1111;
++	asm volatile(INT10 : "+a" (ax) : "b" (0));
+ 
+ 	/* Turn off cursor emulation */
+-	asm volatile(INT10 : : "a" (0x1201), "b" (0x34));
++	ax = 0x1201;
++	asm volatile(INT10 : "+a" (ax) : "b" (0x34));
+ 
+ 	/* Cursor is scan lines 11-12 */
+-	asm volatile(INT10 : : "a" (0x0100), "c" (0x0b0c));
++	ax = 0x0100;
++	asm volatile(INT10 : "+a" (ax) : "c" (0x0b0c));
+ }
+ 
+ static void vga_set_80x43(void)
+ {
++	u16 ax;
++
+ 	/* Set 80x43 mode on VGA (not EGA) */
+ 
+ 	/* Set 350 scans */
+-	asm volatile(INT10 : : "a" (0x1201), "b" (0x30));
++	ax = 0x1201;
++	asm volatile(INT10 : "+a" (ax) : "b" (0x30));
+ 
+ 	/* Reset video mode */
+-	asm volatile(INT10 : : "a" (0x0003));
++	ax = 0x0003;
++	asm volatile(INT10 : "+a" (ax));
+ 
+ 	vga_set_8font();
+ }
+@@ -225,7 +242,7 @@ static int vga_set_mode(struct mode_info *mode)
+  */
+ static int vga_probe(void)
+ {
+-	u16 ega_bx;
++	u16 ax, ega_bx;
+ 
+ 	static const char *card_name[] = {
+ 		"CGA/MDA/HGC", "EGA", "VGA"
+@@ -242,9 +259,10 @@ static int vga_probe(void)
+ 	};
+ 	u8 vga_flag;
+ 
++	ax = 0x1200;
+ 	asm(INT10
+-	    : "=b" (ega_bx)
+-	    : "a" (0x1200), "b" (0x10) /* Check EGA/VGA */
++	    : "+a" (ax), "=b" (ega_bx)
++	    : "b" (0x10) /* Check EGA/VGA */
+ 	    : "ecx", "edx", "esi", "edi");
+ 
+ #ifndef _WAKEUP
+diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h
+index 2d81af3..7b2d71d 100644
+--- a/arch/x86/include/asm/fixmap.h
++++ b/arch/x86/include/asm/fixmap.h
+@@ -111,12 +111,9 @@ enum fixed_addresses {
+ #ifdef CONFIG_PARAVIRT
+ 	FIX_PARAVIRT_BOOTMAP,
+ #endif
+-	FIX_TEXT_POKE0,	/* reserve 2 pages for text_poke() */
+-	FIX_TEXT_POKE1,
++	FIX_TEXT_POKE1,	/* reserve 2 pages for text_poke() */
++	FIX_TEXT_POKE0, /* first page is last, because allocation is backward */
+ 	__end_of_permanent_fixed_addresses,
+-#ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT
+-	FIX_OHCI1394_BASE,
+-#endif
+ 	/*
+ 	 * 256 temporary boot-time mappings, used by early_ioremap(),
+ 	 * before ioremap() is functional.
+@@ -129,6 +126,9 @@ enum fixed_addresses {
+ 	FIX_BTMAP_END = __end_of_permanent_fixed_addresses + 256 -
+ 			(__end_of_permanent_fixed_addresses & 255),
+ 	FIX_BTMAP_BEGIN = FIX_BTMAP_END + NR_FIX_BTMAPS*FIX_BTMAPS_SLOTS - 1,
++#ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT
++	FIX_OHCI1394_BASE,
++#endif
+ #ifdef CONFIG_X86_32
+ 	FIX_WP_TEST,
+ #endif
+diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h
+index 9d826e4..667ed7f 100644
+--- a/arch/x86/include/asm/io_apic.h
++++ b/arch/x86/include/asm/io_apic.h
+@@ -160,6 +160,7 @@ extern int io_apic_set_pci_routing(int ioapic, int pin, int irq,
+ 
+ extern int (*ioapic_renumber_irq)(int ioapic, int irq);
+ extern void ioapic_init_mappings(void);
++extern void ioapic_insert_resources(void);
+ 
+ #ifdef CONFIG_X86_64
+ extern struct IO_APIC_route_entry **alloc_ioapic_entries(void);
+@@ -183,6 +184,7 @@ extern void ioapic_write_entry(int apic, int pin,
+ #define io_apic_assign_pci_irqs 0
+ static const int timer_through_8259 = 0;
+ static inline void ioapic_init_mappings(void)	{ }
++static inline void ioapic_insert_resources(void) { }
+ 
+ static inline void probe_nr_irqs_gsi(void)	{ }
+ #endif
+diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
+index b685ece..02c3fc6 100644
+--- a/arch/x86/include/asm/uaccess.h
++++ b/arch/x86/include/asm/uaccess.h
+@@ -212,9 +212,9 @@ extern int __get_user_bad(void);
+ 		     : "A" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
+ #else
+ #define __put_user_asm_u64(x, ptr, retval, errret) \
+-	__put_user_asm(x, ptr, retval, "q", "", "Zr", errret)
++	__put_user_asm(x, ptr, retval, "q", "", "er", errret)
+ #define __put_user_asm_ex_u64(x, addr)	\
+-	__put_user_asm_ex(x, addr, "q", "", "Zr")
++	__put_user_asm_ex(x, addr, "q", "", "er")
+ #define __put_user_x8(x, ptr, __ret_pu) __put_user_x(8, x, ptr, __ret_pu)
+ #endif
+ 
+diff --git a/arch/x86/include/asm/uaccess_64.h b/arch/x86/include/asm/uaccess_64.h
+index 8cc6873..db24b21 100644
+--- a/arch/x86/include/asm/uaccess_64.h
++++ b/arch/x86/include/asm/uaccess_64.h
+@@ -88,11 +88,11 @@ int __copy_to_user(void __user *dst, const void *src, unsigned size)
+ 			      ret, "l", "k", "ir", 4);
+ 		return ret;
+ 	case 8:__put_user_asm(*(u64 *)src, (u64 __user *)dst,
+-			      ret, "q", "", "ir", 8);
++			      ret, "q", "", "er", 8);
+ 		return ret;
+ 	case 10:
+ 		__put_user_asm(*(u64 *)src, (u64 __user *)dst,
+-			       ret, "q", "", "ir", 10);
++			       ret, "q", "", "er", 10);
+ 		if (unlikely(ret))
+ 			return ret;
+ 		asm("":::"memory");
+@@ -101,12 +101,12 @@ int __copy_to_user(void __user *dst, const void *src, unsigned size)
+ 		return ret;
+ 	case 16:
+ 		__put_user_asm(*(u64 *)src, (u64 __user *)dst,
+-			       ret, "q", "", "ir", 16);
++			       ret, "q", "", "er", 16);
+ 		if (unlikely(ret))
+ 			return ret;
+ 		asm("":::"memory");
+ 		__put_user_asm(1[(u64 *)src], 1 + (u64 __user *)dst,
+-			       ret, "q", "", "ir", 8);
++			       ret, "q", "", "er", 8);
+ 		return ret;
+ 	default:
+ 		return copy_user_generic((__force void *)dst, src, size);
+@@ -157,7 +157,7 @@ int __copy_in_user(void __user *dst, const void __user *src, unsigned size)
+ 			       ret, "q", "", "=r", 8);
+ 		if (likely(!ret))
+ 			__put_user_asm(tmp, (u64 __user *)dst,
+-				       ret, "q", "", "ir", 8);
++				       ret, "q", "", "er", 8);
+ 		return ret;
+ 	}
+ 	default:
+diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
+index 30da617..edfc25c 100644
+--- a/arch/x86/kernel/apic/io_apic.c
++++ b/arch/x86/kernel/apic/io_apic.c
+@@ -4182,28 +4182,20 @@ fake_ioapic_page:
+ 	}
+ }
+ 
+-static int __init ioapic_insert_resources(void)
++void __init ioapic_insert_resources(void)
+ {
+ 	int i;
+ 	struct resource *r = ioapic_resources;
+ 
+ 	if (!r) {
+-		if (nr_ioapics > 0) {
++		if (nr_ioapics > 0)
+ 			printk(KERN_ERR
+ 				"IO APIC resources couldn't be allocated.\n");
+-			return -1;
+-		}
+-		return 0;
++		return;
+ 	}
+ 
+ 	for (i = 0; i < nr_ioapics; i++) {
+ 		insert_resource(&iomem_resource, r);
+ 		r++;
+ 	}
+-
+-	return 0;
+ }
+-
+-/* Insert the IO APIC resources after PCI initialization has occured to handle
+- * IO APICS that are mapped in on a BAR in PCI space. */
+-late_initcall(ioapic_insert_resources);
+diff --git a/arch/x86/kernel/mfgpt_32.c b/arch/x86/kernel/mfgpt_32.c
+index 846510b..2a62d84 100644
+--- a/arch/x86/kernel/mfgpt_32.c
++++ b/arch/x86/kernel/mfgpt_32.c
+@@ -347,7 +347,7 @@ static irqreturn_t mfgpt_tick(int irq, void *dev_id)
+ 
+ static struct irqaction mfgptirq  = {
+ 	.handler = mfgpt_tick,
+-	.flags = IRQF_DISABLED | IRQF_NOBALANCING,
++	.flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_TIMER,
+ 	.name = "mfgpt-timer"
+ };
+ 
+diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
+index 0acc6a7..771ffd0 100644
+--- a/arch/x86/kernel/setup.c
++++ b/arch/x86/kernel/setup.c
+@@ -650,6 +650,19 @@ static struct dmi_system_id __initdata bad_bios_dmi_table[] = {
+ 			DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies"),
+ 		},
+ 	},
++	{
++	/*
++	 * AMI BIOS with low memory corruption was found on Intel DG45ID board.
++	 * It hase different DMI_BIOS_VENDOR = "Intel Corp.", for now we will
++	 * match only DMI_BOARD_NAME and see if there is more bad products
++	 * with this vendor.
++	 */
++		.callback = dmi_low_memory_corruption,
++		.ident = "AMI BIOS",
++		.matches = {
++			DMI_MATCH(DMI_BOARD_NAME, "DG45ID"),
++		},
++	},
+ #endif
+ 	{}
+ };
+diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c
+index 6340cef..312e8eb 100644
+--- a/arch/x86/mm/gup.c
++++ b/arch/x86/mm/gup.c
+@@ -247,10 +247,15 @@ int get_user_pages_fast(unsigned long start, int nr_pages, int write,
+ 	start &= PAGE_MASK;
+ 	addr = start;
+ 	len = (unsigned long) nr_pages << PAGE_SHIFT;
++
+ 	end = start + len;
+-	if (unlikely(!access_ok(write ? VERIFY_WRITE : VERIFY_READ,
+-					(void __user *)start, len)))
++	if (end < start)
++		goto slow_irqon;
++
++#ifdef CONFIG_X86_64
++	if (end >> 47)
+ 		goto slow_irqon;
++#endif
+ 
+ 	/*
+ 	 * XXX: batch / limit 'nr', to avoid large irq off latency
+diff --git a/arch/x86/mm/srat_64.c b/arch/x86/mm/srat_64.c
+index 0176595..c5c43e0 100644
+--- a/arch/x86/mm/srat_64.c
++++ b/arch/x86/mm/srat_64.c
+@@ -89,8 +89,10 @@ static __init void bad_srat(void)
+ 	found_add_area = 0;
+ 	for (i = 0; i < MAX_LOCAL_APIC; i++)
+ 		apicid_to_node[i] = NUMA_NO_NODE;
+-	for (i = 0; i < MAX_NUMNODES; i++)
+-		nodes_add[i].start = nodes[i].end = 0;
++	for (i = 0; i < MAX_NUMNODES; i++) {
++		nodes[i].start = nodes[i].end = 0;
++		nodes_add[i].start = nodes_add[i].end = 0;
++	}
+ 	remove_all_active_ranges();
+ }
+ 
+diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c
+index a85bef2..6dcebb5 100644
+--- a/arch/x86/pci/i386.c
++++ b/arch/x86/pci/i386.c
+@@ -35,6 +35,7 @@
+ #include <asm/pat.h>
+ #include <asm/e820.h>
+ #include <asm/pci_x86.h>
++#include <asm/io_apic.h>
+ 
+ 
+ static int
+@@ -230,6 +231,12 @@ void __init pcibios_resource_survey(void)
+ 	pcibios_allocate_resources(1);
+ 
+ 	e820_reserve_resources_late();
++	/*
++	 * Insert the IO APIC resources after PCI initialization has
++	 * occured to handle IO APICS that are mapped in on a BAR in
++	 * PCI space, but before trying to assign unassigned pci res.
++	 */
++	ioapic_insert_resources();
+ }
+ 
+ /**
+diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
+index 94919ad..d37808b 100644
+--- a/drivers/ata/libata-eh.c
++++ b/drivers/ata/libata-eh.c
+@@ -2517,6 +2517,10 @@ int ata_eh_reset(struct ata_link *link, int classify,
+ 
+ 			ata_eh_about_to_do(link, NULL, ATA_EH_RESET);
+ 			rc = ata_do_reset(link, reset, classes, deadline, true);
++			if (rc) {
++				failed_link = link;
++				goto fail;
++			}
+ 		}
+ 	} else {
+ 		if (verbose)
+diff --git a/drivers/char/vc_screen.c b/drivers/char/vc_screen.c
+index d94d25c..c1791a6 100644
+--- a/drivers/char/vc_screen.c
++++ b/drivers/char/vc_screen.c
+@@ -495,11 +495,15 @@ void vcs_remove_sysfs(int index)
+ 
+ int __init vcs_init(void)
+ {
++	unsigned int i;
++
+ 	if (register_chrdev(VCS_MAJOR, "vcs", &vcs_fops))
+ 		panic("unable to get major %d for vcs device", VCS_MAJOR);
+ 	vc_class = class_create(THIS_MODULE, "vc");
+ 
+ 	device_create(vc_class, NULL, MKDEV(VCS_MAJOR, 0), NULL, "vcs");
+ 	device_create(vc_class, NULL, MKDEV(VCS_MAJOR, 128), NULL, "vcsa");
++	for (i = 0; i < MIN_NR_CONSOLES; i++)
++		vcs_make_sysfs(i);
+ 	return 0;
+ }
+diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c
+index e9b436d..39e27f4 100644
+--- a/drivers/hid/usbhid/hiddev.c
++++ b/drivers/hid/usbhid/hiddev.c
+@@ -527,8 +527,10 @@ static noinline int hiddev_ioctl_usage(struct hiddev *hiddev, unsigned int cmd,
+ 			goto goodreturn;
+ 
+ 		case HIDIOCGCOLLECTIONINDEX:
++			i = field->usage[uref->usage_index].collection_index;
++			unlock_kernel();
+ 			kfree(uref_multi);
+-			return field->usage[uref->usage_index].collection_index;
++			return i;
+ 		case HIDIOCGUSAGES:
+ 			for (i = 0; i < uref_multi->num_values; i++)
+ 				uref_multi->values[i] =
+diff --git a/drivers/hwmon/max6650.c b/drivers/hwmon/max6650.c
+index f27af6a..65cf25f 100644
+--- a/drivers/hwmon/max6650.c
++++ b/drivers/hwmon/max6650.c
+@@ -407,6 +407,7 @@ static ssize_t set_div(struct device *dev, struct device_attribute *devattr,
+ 		data->count = 3;
+ 		break;
+ 	default:
++		mutex_unlock(&data->update_lock);
+ 		dev_err(&client->dev,
+ 			"illegal value for fan divider (%d)\n", div);
+ 		return -EINVAL;
+diff --git a/drivers/input/misc/wistron_btns.c b/drivers/input/misc/wistron_btns.c
+index 7c8957d..26e17a9 100644
+--- a/drivers/input/misc/wistron_btns.c
++++ b/drivers/input/misc/wistron_btns.c
+@@ -646,6 +646,15 @@ static struct dmi_system_id dmi_ids[] __initdata = {
+ 	},
+ 	{
+ 		.callback = dmi_matched,
++		.ident = "Maxdata Pro 7000 DX",
++		.matches = {
++			DMI_MATCH(DMI_SYS_VENDOR, "MAXDATA"),
++			DMI_MATCH(DMI_PRODUCT_NAME, "Pro 7000"),
++		},
++		.driver_data = keymap_fs_amilo_pro_v2000
++	},
++	{
++		.callback = dmi_matched,
+ 		.ident = "Fujitsu N3510",
+ 		.matches = {
+ 			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+diff --git a/drivers/isdn/gigaset/ev-layer.c b/drivers/isdn/gigaset/ev-layer.c
+index e582a48..42f1a82 100644
+--- a/drivers/isdn/gigaset/ev-layer.c
++++ b/drivers/isdn/gigaset/ev-layer.c
+@@ -294,32 +294,33 @@ struct reply_t gigaset_tab_cid_m10x[] = /* for M10x */
+ 	{RSP_OK,      604,604, -1,                605, 5, {ACT_CMD+AT_MSN}},
+ 	{RSP_OK,      605,605, -1,                606, 5, {ACT_CMD+AT_ISO}},
+ 	{RSP_NULL,    605,605, -1,                606, 5, {ACT_CMD+AT_ISO}},
+-	{RSP_OK,      606,606, -1,                607, 5, {0},             "+VLS=17\r"}, /* set "Endgeraetemodus" */
++	{RSP_OK,      606,606, -1,                607, 5, {0}, "+VLS=17\r"},
+ 	{RSP_OK,      607,607, -1,                608,-1},
+-	//{RSP_ZSAU,    608,608,ZSAU_PROCEEDING,    608, 0, {ACT_ERROR}},//DELETE
+ 	{RSP_ZSAU,    608,608,ZSAU_PROCEEDING,    609, 5, {ACT_CMD+AT_DIAL}},
+ 	{RSP_OK,      609,609, -1,                650, 0, {ACT_DIALING}},
+ 
+-	{RSP_ZVLS,    608,608, 17,                 -1,-1, {ACT_DEBUG}},
+-	{RSP_ZCTP,    609,609, -1,                 -1,-1, {ACT_DEBUG}},
+-	{RSP_ZCPN,    609,609, -1,                 -1,-1, {ACT_DEBUG}},
+ 	{RSP_ERROR,   601,609, -1,                  0, 0, {ACT_ABORTDIAL}},
+ 	{EV_TIMEOUT,  601,609, -1,                  0, 0, {ACT_ABORTDIAL}},
+ 
+-	/* dialing */
+-	{RSP_ZCTP,    650,650, -1,                 -1,-1, {ACT_DEBUG}},
+-	{RSP_ZCPN,    650,650, -1,                 -1,-1, {ACT_DEBUG}},
+-	{RSP_ZSAU,    650,650,ZSAU_CALL_DELIVERED, -1,-1, {ACT_DEBUG}}, /* some devices don't send this */
+-
+-	/* connection established  */
+-	{RSP_ZSAU,    650,650,ZSAU_ACTIVE,        800,-1, {ACT_CONNECT}}, //FIXME -> DLE1
+-	{RSP_ZSAU,    750,750,ZSAU_ACTIVE,        800,-1, {ACT_CONNECT}}, //FIXME -> DLE1
+-
+-	{EV_BC_OPEN,  800,800, -1,                800,-1, {ACT_NOTIFY_BC_UP}}, //FIXME new constate + timeout
++	/* optional dialing responses */
++	{EV_BC_OPEN,  650,650, -1,                651,-1},
++	{RSP_ZVLS,    608,651, 17,                 -1,-1, {ACT_DEBUG}},
++	{RSP_ZCTP,    609,651, -1,                 -1,-1, {ACT_DEBUG}},
++	{RSP_ZCPN,    609,651, -1,                 -1,-1, {ACT_DEBUG}},
++	{RSP_ZSAU,    650,651,ZSAU_CALL_DELIVERED, -1,-1, {ACT_DEBUG}},
++
++	/* connect */
++	{RSP_ZSAU,    650,650,ZSAU_ACTIVE,        800,-1, {ACT_CONNECT}},
++	{RSP_ZSAU,    651,651,ZSAU_ACTIVE,        800,-1, {ACT_CONNECT,
++							   ACT_NOTIFY_BC_UP}},
++	{RSP_ZSAU,    750,750,ZSAU_ACTIVE,        800,-1, {ACT_CONNECT}},
++	{RSP_ZSAU,    751,751,ZSAU_ACTIVE,        800,-1, {ACT_CONNECT,
++							   ACT_NOTIFY_BC_UP}},
++	{EV_BC_OPEN,  800,800, -1,                800,-1, {ACT_NOTIFY_BC_UP}},
+ 
+ 	/* remote hangup */
+-	{RSP_ZSAU,    650,650,ZSAU_DISCONNECT_IND,  0, 0, {ACT_REMOTEREJECT}},
+-	{RSP_ZSAU,    750,750,ZSAU_DISCONNECT_IND,  0, 0, {ACT_REMOTEHUP}},
++	{RSP_ZSAU,    650,651,ZSAU_DISCONNECT_IND,  0, 0, {ACT_REMOTEREJECT}},
++	{RSP_ZSAU,    750,751,ZSAU_DISCONNECT_IND,  0, 0, {ACT_REMOTEHUP}},
+ 	{RSP_ZSAU,    800,800,ZSAU_DISCONNECT_IND,  0, 0, {ACT_REMOTEHUP}},
+ 
+ 	/* hangup */
+@@ -358,7 +359,8 @@ struct reply_t gigaset_tab_cid_m10x[] = /* for M10x */
+ 	{RSP_ZSAU,    700,729,ZSAU_ACTIVE,          0, 0, {ACT_ABORTACCEPT}},
+ 	{RSP_ZSAU,    700,729,ZSAU_DISCONNECT_IND,  0, 0, {ACT_ABORTACCEPT}},
+ 
+-	{EV_TIMEOUT,  750,750, -1,                  0, 0, {ACT_CONNTIMEOUT}},
++	{EV_BC_OPEN,  750,750, -1,                751,-1},
++	{EV_TIMEOUT,  750,751, -1,                  0, 0, {ACT_CONNTIMEOUT}},
+ 
+ 	/* B channel closed (general case) */
+ 	{EV_BC_CLOSED, -1, -1, -1,                 -1,-1, {ACT_NOTIFY_BC_DOWN}}, //FIXME
+@@ -876,12 +878,6 @@ static void bchannel_down(struct bc_state *bcs)
+ 
+ static void bchannel_up(struct bc_state *bcs)
+ {
+-	if (!(bcs->chstate & CHS_D_UP)) {
+-		dev_notice(bcs->cs->dev, "%s: D channel not up\n", __func__);
+-		bcs->chstate |= CHS_D_UP;
+-		gigaset_i4l_channel_cmd(bcs, ISDN_STAT_DCONN);
+-	}
+-
+ 	if (bcs->chstate & CHS_B_UP) {
+ 		dev_notice(bcs->cs->dev, "%s: B channel already up\n",
+ 			   __func__);
+diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c
+index 076fbb4..d8d31b8 100644
+--- a/drivers/md/dm-raid1.c
++++ b/drivers/md/dm-raid1.c
+@@ -638,6 +638,7 @@ static void do_writes(struct mirror_set *ms, struct bio_list *writes)
+ 		spin_lock_irq(&ms->lock);
+ 		bio_list_merge(&ms->writes, &requeue);
+ 		spin_unlock_irq(&ms->lock);
++		delayed_wake(ms);
+ 	}
+ 
+ 	/*
+diff --git a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
+index b56d72f..34e2348 100644
+--- a/drivers/mmc/host/mvsdio.c
++++ b/drivers/mmc/host/mvsdio.c
+@@ -384,7 +384,7 @@ static irqreturn_t mvsd_irq(int irq, void *dev)
+ 				u16 val[2] = {0, 0};
+ 				val[0] = mvsd_read(MVSD_FIFO);
+ 				val[1] = mvsd_read(MVSD_FIFO);
+-				memcpy(p, &val, s);
++				memcpy(p, ((void *)&val) + 4 - s, s);
+ 				s = 0;
+ 				intr_status = mvsd_read(MVSD_NOR_INTR_STATUS);
+ 			}
+@@ -423,7 +423,7 @@ static irqreturn_t mvsd_irq(int irq, void *dev)
+ 		if (s < 4) {
+ 			if (s && (intr_status & MVSD_NOR_TX_AVAIL)) {
+ 				u16 val[2] = {0, 0};
+-				memcpy(&val, p, s);
++				memcpy(((void *)&val) + 4 - s, p, s);
+ 				mvsd_write(MVSD_FIFO, val[0]);
+ 				mvsd_write(MVSD_FIFO, val[1]);
+ 				s = 0;
+diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c
+index 1fc4543..d35cf5b 100644
+--- a/drivers/net/8139too.c
++++ b/drivers/net/8139too.c
+@@ -917,6 +917,7 @@ static const struct net_device_ops rtl8139_netdev_ops = {
+ 	.ndo_open		= rtl8139_open,
+ 	.ndo_stop		= rtl8139_close,
+ 	.ndo_get_stats		= rtl8139_get_stats,
++	.ndo_change_mtu		= eth_change_mtu,
+ 	.ndo_validate_addr	= eth_validate_addr,
+ 	.ndo_set_mac_address 	= rtl8139_set_mac_address,
+ 	.ndo_start_xmit		= rtl8139_start_xmit,
+diff --git a/drivers/net/arm/ixp4xx_eth.c b/drivers/net/arm/ixp4xx_eth.c
+index a740053..25aef09 100644
+--- a/drivers/net/arm/ixp4xx_eth.c
++++ b/drivers/net/arm/ixp4xx_eth.c
+@@ -1140,7 +1140,9 @@ static const struct net_device_ops ixp4xx_netdev_ops = {
+ 	.ndo_start_xmit = eth_xmit,
+ 	.ndo_set_multicast_list = eth_set_mcast_list,
+ 	.ndo_do_ioctl = eth_ioctl,
+-
++	.ndo_change_mtu = eth_change_mtu,
++	.ndo_set_mac_address = eth_mac_addr,
++	.ndo_validate_addr = eth_validate_addr,
+ };
+ 
+ static int __devinit eth_init_one(struct platform_device *pdev)
+diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
+index b22dab9..0a7a288 100644
+--- a/drivers/net/ehea/ehea_main.c
++++ b/drivers/net/ehea/ehea_main.c
+@@ -3080,7 +3080,9 @@ static const struct net_device_ops ehea_netdev_ops = {
+ 	.ndo_poll_controller	= ehea_netpoll,
+ #endif
+ 	.ndo_get_stats		= ehea_get_stats,
++	.ndo_change_mtu		= eth_change_mtu,
+ 	.ndo_set_mac_address	= ehea_set_mac_addr,
++	.ndo_validate_addr	= eth_validate_addr,
+ 	.ndo_set_multicast_list	= ehea_set_multicast_list,
+ 	.ndo_change_mtu		= ehea_change_mtu,
+ 	.ndo_vlan_rx_register	= ehea_vlan_rx_register,
+diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
+index a051918..d8b2649 100644
+--- a/drivers/net/gianfar.c
++++ b/drivers/net/gianfar.c
+@@ -155,6 +155,8 @@ static const struct net_device_ops gfar_netdev_ops = {
+ 	.ndo_tx_timeout = gfar_timeout,
+ 	.ndo_do_ioctl = gfar_ioctl,
+ 	.ndo_vlan_rx_register = gfar_vlan_rx_register,
++	.ndo_set_mac_address = eth_mac_addr,
++	.ndo_validate_addr = eth_validate_addr,
+ #ifdef CONFIG_NET_POLL_CONTROLLER
+ 	.ndo_poll_controller = gfar_netpoll,
+ #endif
+diff --git a/drivers/net/plip.c b/drivers/net/plip.c
+index 0be0f0b..5e2d89d 100644
+--- a/drivers/net/plip.c
++++ b/drivers/net/plip.c
+@@ -270,6 +270,9 @@ static const struct net_device_ops plip_netdev_ops = {
+ 	.ndo_stop		 = plip_close,
+ 	.ndo_start_xmit		 = plip_tx_packet,
+ 	.ndo_do_ioctl		 = plip_ioctl,
++	.ndo_change_mtu		 = eth_change_mtu,
++	.ndo_set_mac_address	 = eth_mac_addr,
++	.ndo_validate_addr	 = eth_validate_addr,
+ };
+ 
+ /* Entry point of PLIP driver.
+diff --git a/drivers/net/ps3_gelic_net.c b/drivers/net/ps3_gelic_net.c
+index 30900b3..34c53c6 100644
+--- a/drivers/net/ps3_gelic_net.c
++++ b/drivers/net/ps3_gelic_net.c
+@@ -1410,6 +1410,7 @@ static const struct net_device_ops gelic_netdevice_ops = {
+ 	.ndo_set_multicast_list = gelic_net_set_multi,
+ 	.ndo_change_mtu = gelic_net_change_mtu,
+ 	.ndo_tx_timeout = gelic_net_tx_timeout,
++	.ndo_set_mac_address = eth_mac_addr,
+ 	.ndo_validate_addr = eth_validate_addr,
+ #ifdef CONFIG_NET_POLL_CONTROLLER
+ 	.ndo_poll_controller = gelic_net_poll_controller,
+diff --git a/drivers/net/ps3_gelic_wireless.c b/drivers/net/ps3_gelic_wireless.c
+index 4f3ada6..4530126 100644
+--- a/drivers/net/ps3_gelic_wireless.c
++++ b/drivers/net/ps3_gelic_wireless.c
+@@ -2707,6 +2707,7 @@ static const struct net_device_ops gelic_wl_netdevice_ops = {
+ 	.ndo_set_multicast_list = gelic_net_set_multi,
+ 	.ndo_change_mtu = gelic_net_change_mtu,
+ 	.ndo_tx_timeout = gelic_net_tx_timeout,
++	.ndo_set_mac_address = eth_mac_addr,
+ 	.ndo_validate_addr = eth_validate_addr,
+ #ifdef CONFIG_NET_POLL_CONTROLLER
+ 	.ndo_poll_controller = gelic_net_poll_controller,
+diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c
+index fdcbaf8..1c70e99 100644
+--- a/drivers/net/smc91x.c
++++ b/drivers/net/smc91x.c
+@@ -1774,6 +1774,7 @@ static const struct net_device_ops smc_netdev_ops = {
+ 	.ndo_start_xmit		= smc_hard_start_xmit,
+ 	.ndo_tx_timeout		= smc_timeout,
+ 	.ndo_set_multicast_list	= smc_set_multicast_list,
++	.ndo_change_mtu		= eth_change_mtu,
+ 	.ndo_validate_addr	= eth_validate_addr,
+ 	.ndo_set_mac_address 	= eth_mac_addr,
+ #ifdef CONFIG_NET_POLL_CONTROLLER
+diff --git a/drivers/net/smsc911x.c b/drivers/net/smsc911x.c
+index eb7db03..b4e2685 100644
+--- a/drivers/net/smsc911x.c
++++ b/drivers/net/smsc911x.c
+@@ -1766,6 +1766,7 @@ static const struct net_device_ops smsc911x_netdev_ops = {
+ 	.ndo_get_stats		= smsc911x_get_stats,
+ 	.ndo_set_multicast_list	= smsc911x_set_multicast_list,
+ 	.ndo_do_ioctl		= smsc911x_do_ioctl,
++	.ndo_change_mtu		= eth_change_mtu,
+ 	.ndo_validate_addr	= eth_validate_addr,
+ 	.ndo_set_mac_address 	= smsc911x_set_mac_address,
+ #ifdef CONFIG_NET_POLL_CONTROLLER
+diff --git a/drivers/net/sunvnet.c b/drivers/net/sunvnet.c
+index a82fb2a..f1e5e45 100644
+--- a/drivers/net/sunvnet.c
++++ b/drivers/net/sunvnet.c
+@@ -1016,7 +1016,9 @@ static const struct net_device_ops vnet_ops = {
+ 	.ndo_open		= vnet_open,
+ 	.ndo_stop		= vnet_close,
+ 	.ndo_set_multicast_list	= vnet_set_rx_mode,
++	.ndo_change_mtu		= eth_change_mtu,
+ 	.ndo_set_mac_address	= vnet_set_mac_addr,
++	.ndo_validate_addr	= eth_validate_addr,
+ 	.ndo_tx_timeout		= vnet_tx_timeout,
+ 	.ndo_change_mtu		= vnet_change_mtu,
+ 	.ndo_start_xmit		= vnet_start_xmit,
+diff --git a/drivers/net/usb/kaweth.c b/drivers/net/usb/kaweth.c
+index 3d0d0b0..d837cf1 100644
+--- a/drivers/net/usb/kaweth.c
++++ b/drivers/net/usb/kaweth.c
+@@ -982,6 +982,9 @@ static const struct net_device_ops kaweth_netdev_ops = {
+ 	.ndo_tx_timeout =		kaweth_tx_timeout,
+ 	.ndo_set_multicast_list =	kaweth_set_rx_mode,
+ 	.ndo_get_stats =		kaweth_netdev_stats,
++	.ndo_change_mtu =		eth_change_mtu,
++	.ndo_set_mac_address =		eth_mac_addr,
++	.ndo_validate_addr =		eth_validate_addr,
+ };
+ 
+ static int kaweth_probe(
+diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c
+index 73acbd2..631d269 100644
+--- a/drivers/net/usb/pegasus.c
++++ b/drivers/net/usb/pegasus.c
+@@ -1493,6 +1493,9 @@ static const struct net_device_ops pegasus_netdev_ops = {
+ 	.ndo_set_multicast_list =	pegasus_set_multicast,
+ 	.ndo_get_stats =		pegasus_netdev_stats,
+ 	.ndo_tx_timeout =		pegasus_tx_timeout,
++	.ndo_change_mtu =		eth_change_mtu,
++	.ndo_set_mac_address =		eth_mac_addr,
++	.ndo_validate_addr =		eth_validate_addr,
+ };
+ 
+ static struct usb_driver pegasus_driver = {
+diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
+index 45daba7..9d49497 100644
+--- a/drivers/net/via-rhine.c
++++ b/drivers/net/via-rhine.c
+@@ -622,6 +622,7 @@ static const struct net_device_ops rhine_netdev_ops = {
+ 	.ndo_start_xmit		 = rhine_start_tx,
+ 	.ndo_get_stats		 = rhine_get_stats,
+ 	.ndo_set_multicast_list	 = rhine_set_rx_mode,
++	.ndo_change_mtu		 = eth_change_mtu,
+ 	.ndo_validate_addr	 = eth_validate_addr,
+ 	.ndo_set_mac_address 	 = eth_mac_addr,
+ 	.ndo_do_ioctl		 = netdev_ioctl,
+diff --git a/drivers/net/wireless/orinoco/main.c b/drivers/net/wireless/orinoco/main.c
+index 345593c..a370e51 100644
+--- a/drivers/net/wireless/orinoco/main.c
++++ b/drivers/net/wireless/orinoco/main.c
+@@ -2521,6 +2521,8 @@ static const struct net_device_ops orinoco_netdev_ops = {
+ 	.ndo_start_xmit		= orinoco_xmit,
+ 	.ndo_set_multicast_list	= orinoco_set_multicast_list,
+ 	.ndo_change_mtu		= orinoco_change_mtu,
++	.ndo_set_mac_address	= eth_mac_addr,
++	.ndo_validate_addr	= eth_validate_addr,
+ 	.ndo_tx_timeout		= orinoco_tx_timeout,
+ 	.ndo_get_stats		= orinoco_get_stats,
+ };
+@@ -2555,7 +2557,6 @@ struct net_device
+ 	priv->wireless_data.spy_data = &priv->spy_data;
+ 	dev->wireless_data = &priv->wireless_data;
+ #endif
+-	/* we use the default eth_mac_addr for setting the MAC addr */
+ 
+ 	/* Reserve space in skb for the SNAP header */
+ 	dev->hard_header_len += ENCAPS_OVERHEAD;
+diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
+index e1716f1..ff63279 100644
+--- a/drivers/scsi/sg.c
++++ b/drivers/scsi/sg.c
+@@ -1656,6 +1656,10 @@ static int sg_start_req(Sg_request *srp, unsigned char *cmd)
+ 		md->nr_entries = req_schp->k_use_sg;
+ 		md->offset = 0;
+ 		md->null_mapped = hp->dxferp ? 0 : 1;
++		if (dxfer_dir == SG_DXFER_TO_FROM_DEV)
++			md->from_user = 1;
++		else
++			md->from_user = 0;
+ 	}
+ 
+ 	if (iov_count) {
+diff --git a/drivers/scsi/zalon.c b/drivers/scsi/zalon.c
+index 97f3158..27e84e4 100644
+--- a/drivers/scsi/zalon.c
++++ b/drivers/scsi/zalon.c
+@@ -134,7 +134,7 @@ zalon_probe(struct parisc_device *dev)
+ 
+ 	host = ncr_attach(&zalon7xx_template, unit, &device);
+ 	if (!host)
+-		goto fail;
++		return -ENODEV;
+ 
+ 	if (request_irq(dev->irq, ncr53c8xx_intr, IRQF_SHARED, "zalon", host)) {
+ 	  dev_printk(KERN_ERR, &dev->dev, "irq problem with %d, detaching\n ",
+diff --git a/drivers/staging/rt2870/rt2870.h b/drivers/staging/rt2870/rt2870.h
+index a69cf33..fef14a4 100644
+--- a/drivers/staging/rt2870/rt2870.h
++++ b/drivers/staging/rt2870/rt2870.h
+@@ -97,6 +97,7 @@
+ 	{USB_DEVICE(0x0DF6,0x002C)}, /* Sitecom */		\
+ 	{USB_DEVICE(0x0DF6,0x002D)}, /* Sitecom */		\
+ 	{USB_DEVICE(0x0DF6,0x0039)}, /* Sitecom */		\
++	{USB_DEVICE(0x0DF6,0x003F)}, /* Sitecom WL-608 */	\
+ 	{USB_DEVICE(0x14B2,0x3C06)}, /* Conceptronic */		\
+ 	{USB_DEVICE(0x14B2,0x3C28)}, /* Conceptronic */		\
+ 	{USB_DEVICE(0x2019,0xED06)}, /* Planex Communications, Inc. */		\
+diff --git a/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac_wx.c b/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac_wx.c
+index 93af37e..54b4b71 100644
+--- a/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac_wx.c
++++ b/drivers/staging/rtl8187se/ieee80211/ieee80211_softmac_wx.c
+@@ -461,19 +461,19 @@ int ieee80211_wx_get_name(struct ieee80211_device *ieee,
+ 			     struct iw_request_info *info,
+ 			     union iwreq_data *wrqu, char *extra)
+ {
+-	strcpy(wrqu->name, "802.11");
++	strlcpy(wrqu->name, "802.11", IFNAMSIZ);
+ 	if(ieee->modulation & IEEE80211_CCK_MODULATION){
+-		strcat(wrqu->name, "b");
++		strlcat(wrqu->name, "b", IFNAMSIZ);
+ 		if(ieee->modulation & IEEE80211_OFDM_MODULATION)
+-			strcat(wrqu->name, "/g");
++			strlcat(wrqu->name, "/g", IFNAMSIZ);
+ 	}else if(ieee->modulation & IEEE80211_OFDM_MODULATION)
+-		strcat(wrqu->name, "g");
++		strlcat(wrqu->name, "g", IFNAMSIZ);
+ 
+ 	if((ieee->state == IEEE80211_LINKED) ||
+ 		(ieee->state == IEEE80211_LINKED_SCANNING))
+-		strcat(wrqu->name," linked");
++		strlcat(wrqu->name,"  link", IFNAMSIZ);
+ 	else if(ieee->state != IEEE80211_NOLINK)
+-		strcat(wrqu->name," link..");
++		strlcat(wrqu->name," .....", IFNAMSIZ);
+ 
+ 
+ 	return 0;
+diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
+index 3086090..ef03927 100644
+--- a/drivers/usb/core/devio.c
++++ b/drivers/usb/core/devio.c
+@@ -982,7 +982,7 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb,
+ 				USBDEVFS_URB_ZERO_PACKET |
+ 				USBDEVFS_URB_NO_INTERRUPT))
+ 		return -EINVAL;
+-	if (!uurb->buffer)
++	if (uurb->buffer_length > 0 && !uurb->buffer)
+ 		return -EINVAL;
+ 	if (!(uurb->type == USBDEVFS_URB_TYPE_CONTROL &&
+ 	    (uurb->endpoint & ~USB_ENDPOINT_DIR_MASK) == 0)) {
+@@ -1038,11 +1038,6 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb,
+ 			is_in = 0;
+ 			uurb->endpoint &= ~USB_DIR_IN;
+ 		}
+-		if (!access_ok(is_in ? VERIFY_WRITE : VERIFY_READ,
+-				uurb->buffer, uurb->buffer_length)) {
+-			kfree(dr);
+-			return -EFAULT;
+-		}
+ 		snoop(&ps->dev->dev, "control urb: bRequest=%02x "
+ 			"bRrequestType=%02x wValue=%04x "
+ 			"wIndex=%04x wLength=%04x\n",
+@@ -1062,9 +1057,6 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb,
+ 		uurb->number_of_packets = 0;
+ 		if (uurb->buffer_length > MAX_USBFS_BUFFER_SIZE)
+ 			return -EINVAL;
+-		if (!access_ok(is_in ? VERIFY_WRITE : VERIFY_READ,
+-				uurb->buffer, uurb->buffer_length))
+-			return -EFAULT;
+ 		snoop(&ps->dev->dev, "bulk urb\n");
+ 		break;
+ 
+@@ -1106,28 +1098,35 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb,
+ 			return -EINVAL;
+ 		if (uurb->buffer_length > MAX_USBFS_BUFFER_SIZE)
+ 			return -EINVAL;
+-		if (!access_ok(is_in ? VERIFY_WRITE : VERIFY_READ,
+-				uurb->buffer, uurb->buffer_length))
+-			return -EFAULT;
+ 		snoop(&ps->dev->dev, "interrupt urb\n");
+ 		break;
+ 
+ 	default:
+ 		return -EINVAL;
+ 	}
+-	as = alloc_async(uurb->number_of_packets);
+-	if (!as) {
++	if (uurb->buffer_length > 0 &&
++			!access_ok(is_in ? VERIFY_WRITE : VERIFY_READ,
++				uurb->buffer, uurb->buffer_length)) {
+ 		kfree(isopkt);
+ 		kfree(dr);
+-		return -ENOMEM;
++		return -EFAULT;
+ 	}
+-	as->urb->transfer_buffer = kmalloc(uurb->buffer_length, GFP_KERNEL);
+-	if (!as->urb->transfer_buffer) {
++	as = alloc_async(uurb->number_of_packets);
++	if (!as) {
+ 		kfree(isopkt);
+ 		kfree(dr);
+-		free_async(as);
+ 		return -ENOMEM;
+ 	}
++	if (uurb->buffer_length > 0) {
++		as->urb->transfer_buffer = kmalloc(uurb->buffer_length,
++				GFP_KERNEL);
++		if (!as->urb->transfer_buffer) {
++			kfree(isopkt);
++			kfree(dr);
++			free_async(as);
++			return -ENOMEM;
++		}
++	}
+ 	as->urb->dev = ps->dev;
+ 	as->urb->pipe = (uurb->type << 30) |
+ 			__create_pipe(ps->dev, uurb->endpoint & 0xf) |
+@@ -1169,7 +1168,7 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb,
+ 	kfree(isopkt);
+ 	as->ps = ps;
+ 	as->userurb = arg;
+-	if (uurb->endpoint & USB_DIR_IN)
++	if (is_in && uurb->buffer_length > 0)
+ 		as->userbuffer = uurb->buffer;
+ 	else
+ 		as->userbuffer = NULL;
+@@ -1179,9 +1178,9 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb,
+ 	as->uid = cred->uid;
+ 	as->euid = cred->euid;
+ 	security_task_getsecid(current, &as->secid);
+-	if (!is_in) {
++	if (!is_in && uurb->buffer_length > 0) {
+ 		if (copy_from_user(as->urb->transfer_buffer, uurb->buffer,
+-				as->urb->transfer_buffer_length)) {
++				uurb->buffer_length)) {
+ 			free_async(as);
+ 			return -EFAULT;
+ 		}
+@@ -1231,22 +1230,22 @@ static int processcompl(struct async *as, void __user * __user *arg)
+ 	if (as->userbuffer)
+ 		if (copy_to_user(as->userbuffer, urb->transfer_buffer,
+ 				 urb->transfer_buffer_length))
+-			return -EFAULT;
++			goto err_out;
+ 	if (put_user(as->status, &userurb->status))
+-		return -EFAULT;
++		goto err_out;
+ 	if (put_user(urb->actual_length, &userurb->actual_length))
+-		return -EFAULT;
++		goto err_out;
+ 	if (put_user(urb->error_count, &userurb->error_count))
+-		return -EFAULT;
++		goto err_out;
+ 
+ 	if (usb_endpoint_xfer_isoc(&urb->ep->desc)) {
+ 		for (i = 0; i < urb->number_of_packets; i++) {
+ 			if (put_user(urb->iso_frame_desc[i].actual_length,
+ 				     &userurb->iso_frame_desc[i].actual_length))
+-				return -EFAULT;
++				goto err_out;
+ 			if (put_user(urb->iso_frame_desc[i].status,
+ 				     &userurb->iso_frame_desc[i].status))
+-				return -EFAULT;
++				goto err_out;
+ 		}
+ 	}
+ 
+@@ -1255,6 +1254,10 @@ static int processcompl(struct async *as, void __user * __user *arg)
+ 	if (put_user(addr, (void __user * __user *)arg))
+ 		return -EFAULT;
+ 	return 0;
++
++err_out:
++	free_async(as);
++	return -EFAULT;
+ }
+ 
+ static struct async *reap_as(struct dev_state *ps)
+diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
+index b626283..a94f184 100644
+--- a/drivers/usb/core/message.c
++++ b/drivers/usb/core/message.c
+@@ -758,6 +758,48 @@ static int usb_string_sub(struct usb_device *dev, unsigned int langid,
+ 	return rc;
+ }
+ 
++static int usb_get_langid(struct usb_device *dev, unsigned char *tbuf)
++{
++	int err;
++
++	if (dev->have_langid)
++		return 0;
++
++	if (dev->string_langid < 0)
++		return -EPIPE;
++
++	err = usb_string_sub(dev, 0, 0, tbuf);
++
++	/* If the string was reported but is malformed, default to english
++	 * (0x0409) */
++	if (err == -ENODATA || (err > 0 && err < 4)) {
++		dev->string_langid = 0x0409;
++		dev->have_langid = 1;
++		dev_err(&dev->dev,
++			"string descriptor 0 malformed (err = %d), "
++			"defaulting to 0x%04x\n",
++				err, dev->string_langid);
++		return 0;
++	}
++
++	/* In case of all other errors, we assume the device is not able to
++	 * deal with strings at all. Set string_langid to -1 in order to
++	 * prevent any string to be retrieved from the device */
++	if (err < 0) {
++		dev_err(&dev->dev, "string descriptor 0 read error: %d\n",
++					err);
++		dev->string_langid = -1;
++		return -EPIPE;
++	}
++
++	/* always use the first langid listed */
++	dev->string_langid = tbuf[2] | (tbuf[3] << 8);
++	dev->have_langid = 1;
++	dev_dbg(&dev->dev, "default language 0x%04x\n",
++				dev->string_langid);
++	return 0;
++}
++
+ /**
+  * usb_string - returns ISO 8859-1 version of a string descriptor
+  * @dev: the device whose string descriptor is being retrieved
+@@ -797,24 +839,9 @@ int usb_string(struct usb_device *dev, int index, char *buf, size_t size)
+ 	if (!tbuf)
+ 		return -ENOMEM;
+ 
+-	/* get langid for strings if it's not yet known */
+-	if (!dev->have_langid) {
+-		err = usb_string_sub(dev, 0, 0, tbuf);
+-		if (err < 0) {
+-			dev_err(&dev->dev,
+-				"string descriptor 0 read error: %d\n",
+-				err);
+-		} else if (err < 4) {
+-			dev_err(&dev->dev, "string descriptor 0 too short\n");
+-		} else {
+-			dev->string_langid = tbuf[2] | (tbuf[3] << 8);
+-			/* always use the first langid listed */
+-			dev_dbg(&dev->dev, "default language 0x%04x\n",
+-				dev->string_langid);
+-		}
+-
+-		dev->have_langid = 1;
+-	}
++	err = usb_get_langid(dev, tbuf);
++	if (err < 0)
++		goto errout;
+ 
+ 	err = usb_string_sub(dev, dev->string_langid, index, tbuf);
+ 	if (err < 0)
+diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
+index d006dc6..bd102f5 100644
+--- a/drivers/usb/gadget/ether.c
++++ b/drivers/usb/gadget/ether.c
+@@ -293,15 +293,16 @@ static int __init eth_bind(struct usb_composite_dev *cdev)
+ 		/* CDC Subset */
+ 		eth_config_driver.label = "CDC Subset/SAFE";
+ 
+-		device_desc.idVendor = cpu_to_le16(SIMPLE_VENDOR_NUM),
+-		device_desc.idProduct = cpu_to_le16(SIMPLE_PRODUCT_NUM),
+-		device_desc.bDeviceClass = USB_CLASS_VENDOR_SPEC;
++		device_desc.idVendor = cpu_to_le16(SIMPLE_VENDOR_NUM);
++		device_desc.idProduct = cpu_to_le16(SIMPLE_PRODUCT_NUM);
++		if (!has_rndis())
++			device_desc.bDeviceClass = USB_CLASS_VENDOR_SPEC;
+ 	}
+ 
+ 	if (has_rndis()) {
+ 		/* RNDIS plus ECM-or-Subset */
+-		device_desc.idVendor = cpu_to_le16(RNDIS_VENDOR_NUM),
+-		device_desc.idProduct = cpu_to_le16(RNDIS_PRODUCT_NUM),
++		device_desc.idVendor = cpu_to_le16(RNDIS_VENDOR_NUM);
++		device_desc.idProduct = cpu_to_le16(RNDIS_PRODUCT_NUM);
+ 		device_desc.bNumConfigurations = 2;
+ 	}
+ 
+diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c
+index 556d0ec..a01201a 100644
+--- a/drivers/usb/host/ehci-sched.c
++++ b/drivers/usb/host/ehci-sched.c
+@@ -1617,11 +1617,14 @@ itd_complete (
+ 				desc->status = -EPROTO;
+ 
+ 			/* HC need not update length with this error */
+-			if (!(t & EHCI_ISOC_BABBLE))
+-				desc->actual_length = EHCI_ITD_LENGTH (t);
++			if (!(t & EHCI_ISOC_BABBLE)) {
++				desc->actual_length = EHCI_ITD_LENGTH(t);
++				urb->actual_length += desc->actual_length;
++			}
+ 		} else if (likely ((t & EHCI_ISOC_ACTIVE) == 0)) {
+ 			desc->status = 0;
+-			desc->actual_length = EHCI_ITD_LENGTH (t);
++			desc->actual_length = EHCI_ITD_LENGTH(t);
++			urb->actual_length += desc->actual_length;
+ 		} else {
+ 			/* URB was too late */
+ 			desc->status = -EXDEV;
+@@ -2012,7 +2015,8 @@ sitd_complete (
+ 			desc->status = -EPROTO;
+ 	} else {
+ 		desc->status = 0;
+-		desc->actual_length = desc->length - SITD_LENGTH (t);
++		desc->actual_length = desc->length - SITD_LENGTH(t);
++		urb->actual_length += desc->actual_length;
+ 	}
+ 	stream->depth -= stream->interval << 3;
+ 
+diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
+index ef5f756..1b28cae 100644
+--- a/drivers/usb/serial/ti_usb_3410_5052.c
++++ b/drivers/usb/serial/ti_usb_3410_5052.c
+@@ -192,7 +192,6 @@ static struct usb_device_id ti_id_table_5052[5+TI_EXTRA_VID_PID_COUNT+1] = {
+ 	{ USB_DEVICE(TI_VENDOR_ID, TI_5152_BOOT_PRODUCT_ID) },
+ 	{ USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) },
+ 	{ USB_DEVICE(TI_VENDOR_ID, TI_5052_FIRMWARE_PRODUCT_ID) },
+-	{ USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
+ };
+ 
+ static struct usb_device_id ti_id_table_combined[14+2*TI_EXTRA_VID_PID_COUNT+1] = {
+@@ -1660,7 +1659,7 @@ static int ti_do_download(struct usb_device *dev, int pipe,
+ 	u8 cs = 0;
+ 	int done;
+ 	struct ti_firmware_header *header;
+-	int status;
++	int status = 0;
+ 	int len;
+ 
+ 	for (pos = sizeof(struct ti_firmware_header); pos < size; pos++)
+diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
+index 40381df..605b17a 100644
+--- a/fs/binfmt_elf.c
++++ b/fs/binfmt_elf.c
+@@ -1518,11 +1518,11 @@ static int fill_note_info(struct elfhdr *elf, int phdrs,
+ 	info->thread = NULL;
+ 
+ 	psinfo = kmalloc(sizeof(*psinfo), GFP_KERNEL);
+-	fill_note(&info->psinfo, "CORE", NT_PRPSINFO, sizeof(*psinfo), psinfo);
+-
+ 	if (psinfo == NULL)
+ 		return 0;
+ 
++	fill_note(&info->psinfo, "CORE", NT_PRPSINFO, sizeof(*psinfo), psinfo);
++
+ 	/*
+ 	 * Figure out how many notes we're going to need for each thread.
+ 	 */
+diff --git a/fs/bio.c b/fs/bio.c
+index 9871164..78b0509 100644
+--- a/fs/bio.c
++++ b/fs/bio.c
+@@ -706,14 +706,13 @@ static struct bio_map_data *bio_alloc_map_data(int nr_segs, int iov_count,
+ }
+ 
+ static int __bio_copy_iov(struct bio *bio, struct bio_vec *iovecs,
+-			  struct sg_iovec *iov, int iov_count, int uncopy,
+-			  int do_free_page)
++			  struct sg_iovec *iov, int iov_count,
++			  int to_user, int from_user, int do_free_page)
+ {
+ 	int ret = 0, i;
+ 	struct bio_vec *bvec;
+ 	int iov_idx = 0;
+ 	unsigned int iov_off = 0;
+-	int read = bio_data_dir(bio) == READ;
+ 
+ 	__bio_for_each_segment(bvec, bio, i, 0) {
+ 		char *bv_addr = page_address(bvec->bv_page);
+@@ -728,13 +727,14 @@ static int __bio_copy_iov(struct bio *bio, struct bio_vec *iovecs,
+ 			iov_addr = iov[iov_idx].iov_base + iov_off;
+ 
+ 			if (!ret) {
+-				if (!read && !uncopy)
+-					ret = copy_from_user(bv_addr, iov_addr,
+-							     bytes);
+-				if (read && uncopy)
++				if (to_user)
+ 					ret = copy_to_user(iov_addr, bv_addr,
+ 							   bytes);
+ 
++				if (from_user)
++					ret = copy_from_user(bv_addr, iov_addr,
++							     bytes);
++
+ 				if (ret)
+ 					ret = -EFAULT;
+ 			}
+@@ -771,7 +771,8 @@ int bio_uncopy_user(struct bio *bio)
+ 
+ 	if (!bio_flagged(bio, BIO_NULL_MAPPED))
+ 		ret = __bio_copy_iov(bio, bmd->iovecs, bmd->sgvecs,
+-				     bmd->nr_sgvecs, 1, bmd->is_our_pages);
++				     bmd->nr_sgvecs, bio_data_dir(bio) == READ,
++				     0, bmd->is_our_pages);
+ 	bio_free_map_data(bmd);
+ 	bio_put(bio);
+ 	return ret;
+@@ -876,8 +877,9 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
+ 	/*
+ 	 * success
+ 	 */
+-	if (!write_to_vm && (!map_data || !map_data->null_mapped)) {
+-		ret = __bio_copy_iov(bio, bio->bi_io_vec, iov, iov_count, 0, 0);
++	if ((!write_to_vm && (!map_data || !map_data->null_mapped)) ||
++	    (map_data && map_data->from_user)) {
++		ret = __bio_copy_iov(bio, bio->bi_io_vec, iov, iov_count, 0, 1, 0);
+ 		if (ret)
+ 			goto cleanup;
+ 	}
+diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
+index 4aa81a5..1dc14f2 100644
+--- a/fs/cifs/connect.c
++++ b/fs/cifs/connect.c
+@@ -2745,6 +2745,7 @@ CIFSTCon(unsigned int xid, struct cifsSesInfo *ses,
+ 		strncpy(tcon->treeName, tree, MAX_TREE_SIZE);
+ 
+ 		/* mostly informational -- no need to fail on error here */
++		kfree(tcon->nativeFileSystem);
+ 		tcon->nativeFileSystem = cifs_strndup_from_ucs(bcc_ptr,
+ 						      bytes_left, is_unicode,
+ 						      nls_codepage);
+diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
+index 3758965..83440ca 100644
+--- a/fs/cifs/dir.c
++++ b/fs/cifs/dir.c
+@@ -641,6 +641,15 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
+ 			}
+ 	}
+ 
++	/*
++	 * O_EXCL: optimize away the lookup, but don't hash the dentry. Let
++	 * the VFS handle the create.
++	 */
++	if (nd->flags & LOOKUP_EXCL) {
++		d_instantiate(direntry, NULL);
++		return 0;
++	}
++
+ 	/* can not grab the rename sem here since it would
+ 	deadlock in the cases (beginning of sys_rename itself)
+ 	in which we already have the sb rename sem */
+diff --git a/fs/ecryptfs/keystore.c b/fs/ecryptfs/keystore.c
+index af737bb..259525c 100644
+--- a/fs/ecryptfs/keystore.c
++++ b/fs/ecryptfs/keystore.c
+@@ -1303,6 +1303,13 @@ parse_tag_3_packet(struct ecryptfs_crypt_stat *crypt_stat,
+ 	}
+ 	(*new_auth_tok)->session_key.encrypted_key_size =
+ 		(body_size - (ECRYPTFS_SALT_SIZE + 5));
++	if ((*new_auth_tok)->session_key.encrypted_key_size
++	    > ECRYPTFS_MAX_ENCRYPTED_KEY_BYTES) {
++		printk(KERN_WARNING "Tag 3 packet contains key larger "
++		       "than ECRYPTFS_MAX_ENCRYPTED_KEY_BYTES\n");
++		rc = -EINVAL;
++		goto out_free;
++	}
+ 	if (unlikely(data[(*packet_size)++] != 0x04)) {
+ 		printk(KERN_WARNING "Unknown version number [%d]\n",
+ 		       data[(*packet_size) - 1]);
+@@ -1449,6 +1456,12 @@ parse_tag_11_packet(unsigned char *data, unsigned char *contents,
+ 		rc = -EINVAL;
+ 		goto out;
+ 	}
++	if (unlikely((*tag_11_contents_size) > max_contents_bytes)) {
++		printk(KERN_ERR "Literal data section in tag 11 packet exceeds "
++		       "expected size\n");
++		rc = -EINVAL;
++		goto out;
++	}
+ 	if (data[(*packet_size)++] != 0x62) {
+ 		printk(KERN_WARNING "Unrecognizable packet\n");
+ 		rc = -EINVAL;
+diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
+index b660435..7843755 100644
+--- a/fs/nfsd/vfs.c
++++ b/fs/nfsd/vfs.c
+@@ -677,7 +677,6 @@ __be32
+ nfsd_open(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
+ 			int access, struct file **filp)
+ {
+-	const struct cred *cred = current_cred();
+ 	struct dentry	*dentry;
+ 	struct inode	*inode;
+ 	int		flags = O_RDONLY|O_LARGEFILE;
+@@ -732,7 +731,7 @@ nfsd_open(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
+ 		vfs_dq_init(inode);
+ 	}
+ 	*filp = dentry_open(dget(dentry), mntget(fhp->fh_export->ex_path.mnt),
+-			    flags, cred);
++			    flags, current_cred());
+ 	if (IS_ERR(*filp))
+ 		host_err = PTR_ERR(*filp);
+ out_nfserr:
+diff --git a/fs/nilfs2/cpfile.c b/fs/nilfs2/cpfile.c
+index 300f1cd..2d81a4d 100644
+--- a/fs/nilfs2/cpfile.c
++++ b/fs/nilfs2/cpfile.c
+@@ -311,7 +311,7 @@ int nilfs_cpfile_delete_checkpoints(struct inode *cpfile,
+ 		ret = nilfs_cpfile_get_checkpoint_block(cpfile, cno, 0, &cp_bh);
+ 		if (ret < 0) {
+ 			if (ret != -ENOENT)
+-				goto out_header;
++				break;
+ 			/* skip hole */
+ 			ret = 0;
+ 			continue;
+@@ -344,7 +344,7 @@ int nilfs_cpfile_delete_checkpoints(struct inode *cpfile,
+ 					continue;
+ 				printk(KERN_ERR "%s: cannot delete block\n",
+ 				       __func__);
+-				goto out_header;
++				break;
+ 			}
+ 		}
+ 
+@@ -362,7 +362,6 @@ int nilfs_cpfile_delete_checkpoints(struct inode *cpfile,
+ 		kunmap_atomic(kaddr, KM_USER0);
+ 	}
+ 
+- out_header:
+ 	brelse(header_bh);
+ 
+  out_sem:
+diff --git a/fs/nilfs2/dat.c b/fs/nilfs2/dat.c
+index bb8a581..e2646c3 100644
+--- a/fs/nilfs2/dat.c
++++ b/fs/nilfs2/dat.c
+@@ -149,15 +149,6 @@ void nilfs_dat_commit_start(struct inode *dat, struct nilfs_palloc_req *req,
+ 	entry = nilfs_palloc_block_get_entry(dat, req->pr_entry_nr,
+ 					     req->pr_entry_bh, kaddr);
+ 	entry->de_start = cpu_to_le64(nilfs_mdt_cno(dat));
+-	if (entry->de_blocknr != cpu_to_le64(0) ||
+-	    entry->de_end != cpu_to_le64(NILFS_CNO_MAX)) {
+-		printk(KERN_CRIT
+-		       "%s: vbn = %llu, start = %llu, end = %llu, pbn = %llu\n",
+-		       __func__, (unsigned long long)req->pr_entry_nr,
+-		       (unsigned long long)le64_to_cpu(entry->de_start),
+-		       (unsigned long long)le64_to_cpu(entry->de_end),
+-		       (unsigned long long)le64_to_cpu(entry->de_blocknr));
+-	}
+ 	entry->de_blocknr = cpu_to_le64(blocknr);
+ 	kunmap_atomic(kaddr, KM_USER0);
+ 
+diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c
+index 22c7f65..1779ddc 100644
+--- a/fs/nilfs2/segment.c
++++ b/fs/nilfs2/segment.c
+@@ -1846,26 +1846,13 @@ static int nilfs_segctor_write(struct nilfs_sc_info *sci,
+ 		err = nilfs_segbuf_write(segbuf, &wi);
+ 
+ 		res = nilfs_segbuf_wait(segbuf, &wi);
+-		err = unlikely(err) ? : res;
+-		if (unlikely(err))
++		err = err ? : res;
++		if (err)
+ 			return err;
+ 	}
+ 	return 0;
+ }
+ 
+-static int nilfs_page_has_uncleared_buffer(struct page *page)
+-{
+-	struct buffer_head *head, *bh;
+-
+-	head = bh = page_buffers(page);
+-	do {
+-		if (buffer_dirty(bh) && !list_empty(&bh->b_assoc_buffers))
+-			return 1;
+-		bh = bh->b_this_page;
+-	} while (bh != head);
+-	return 0;
+-}
+-
+ static void __nilfs_end_page_io(struct page *page, int err)
+ {
+ 	if (!err) {
+@@ -1889,12 +1876,11 @@ static void nilfs_end_page_io(struct page *page, int err)
+ 	if (!page)
+ 		return;
+ 
+-	if (buffer_nilfs_node(page_buffers(page)) &&
+-	    nilfs_page_has_uncleared_buffer(page))
+-		/* For b-tree node pages, this function may be called twice
+-		   or more because they might be split in a segment.
+-		   This check assures that cleanup has been done for all
+-		   buffers in a split btnode page. */
++	if (buffer_nilfs_node(page_buffers(page)) && !PageWriteback(page))
++		/*
++		 * For b-tree node pages, this function may be called twice
++		 * or more because they might be split in a segment.
++		 */
+ 		return;
+ 
+ 	__nilfs_end_page_io(page, err);
+@@ -1957,7 +1943,7 @@ static void nilfs_segctor_abort_write(struct nilfs_sc_info *sci,
+ 			}
+ 			if (bh->b_page != fs_page) {
+ 				nilfs_end_page_io(fs_page, err);
+-				if (unlikely(fs_page == failed_page))
++				if (fs_page && fs_page == failed_page)
+ 					goto done;
+ 				fs_page = bh->b_page;
+ 			}
+diff --git a/fs/partitions/check.c b/fs/partitions/check.c
+index 99e33ef..763c9e2 100644
+--- a/fs/partitions/check.c
++++ b/fs/partitions/check.c
+@@ -426,7 +426,7 @@ struct hd_struct *add_partition(struct gendisk *disk, int partno,
+ 	rcu_assign_pointer(ptbl->part[partno], p);
+ 
+ 	/* suppress uevent if the disk supresses it */
+-	if (!dev_get_uevent_suppress(pdev))
++	if (!dev_get_uevent_suppress(ddev))
+ 		kobject_uevent(&pdev->kobj, KOBJ_ADD);
+ 
+ 	return p;
+diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
+index b4f71f1..e590df0 100644
+--- a/include/linux/blkdev.h
++++ b/include/linux/blkdev.h
+@@ -723,6 +723,7 @@ struct rq_map_data {
+ 	int nr_entries;
+ 	unsigned long offset;
+ 	int null_mapped;
++	int from_user;
+ };
+ 
+ struct req_iterator {
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index b4c38bc..03c6c36 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -206,7 +206,7 @@ extern unsigned long long time_sync_thresh;
+ 			((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0)
+ #define task_contributes_to_load(task)	\
+ 				((task->state & TASK_UNINTERRUPTIBLE) != 0 && \
+-				 (task->flags & PF_FROZEN) == 0)
++				 (task->flags & PF_FREEZING) == 0)
+ 
+ #define __set_task_state(tsk, state_value)		\
+ 	do { (tsk)->state = (state_value); } while (0)
+@@ -1630,6 +1630,7 @@ extern cputime_t task_gtime(struct task_struct *p);
+ #define PF_MEMALLOC	0x00000800	/* Allocating memory */
+ #define PF_FLUSHER	0x00001000	/* responsible for disk writeback */
+ #define PF_USED_MATH	0x00002000	/* if unset the fpu must be initialized before use */
++#define PF_FREEZING	0x00004000	/* freeze in progress. do not account to load */
+ #define PF_NOFREEZE	0x00008000	/* this thread should not be frozen */
+ #define PF_FROZEN	0x00010000	/* frozen for system suspend */
+ #define PF_FSTRANS	0x00020000	/* inside a filesystem transaction */
+diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h
+index 6c3f964..5d9a848 100644
+--- a/include/net/netfilter/nf_conntrack.h
++++ b/include/net/netfilter/nf_conntrack.h
+@@ -255,8 +255,8 @@ static inline bool nf_ct_kill(struct nf_conn *ct)
+ /* Update TCP window tracking data when NAT mangles the packet */
+ extern void nf_conntrack_tcp_update(const struct sk_buff *skb,
+ 				    unsigned int dataoff,
+-				    struct nf_conn *ct,
+-				    int dir);
++				    struct nf_conn *ct, int dir,
++				    s16 offset);
+ 
+ /* Fake conntrack entry for untracked connections */
+ extern struct nf_conn nf_conntrack_untracked;
+diff --git a/kernel/freezer.c b/kernel/freezer.c
+index 2f4936c..bd1d42b 100644
+--- a/kernel/freezer.c
++++ b/kernel/freezer.c
+@@ -44,12 +44,19 @@ void refrigerator(void)
+ 	recalc_sigpending(); /* We sent fake signal, clean it up */
+ 	spin_unlock_irq(&current->sighand->siglock);
+ 
++	/* prevent accounting of that task to load */
++	current->flags |= PF_FREEZING;
++
+ 	for (;;) {
+ 		set_current_state(TASK_UNINTERRUPTIBLE);
+ 		if (!frozen(current))
+ 			break;
+ 		schedule();
+ 	}
++
++	/* Remove the accounting blocker */
++	current->flags &= ~PF_FREEZING;
++
+ 	pr_debug("%s left refrigerator\n", current->comm);
+ 	__set_current_state(save);
+ }
+diff --git a/kernel/sched.c b/kernel/sched.c
+index 26efa47..0d3d47f 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -497,6 +497,7 @@ struct rt_rq {
+ #endif
+ #ifdef CONFIG_SMP
+ 	unsigned long rt_nr_migratory;
++	unsigned long rt_nr_total;
+ 	int overloaded;
+ 	struct plist_head pushable_tasks;
+ #endif
+diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
+index 9bf0d2a..3918e01 100644
+--- a/kernel/sched_rt.c
++++ b/kernel/sched_rt.c
+@@ -10,6 +10,8 @@ static inline struct task_struct *rt_task_of(struct sched_rt_entity *rt_se)
+ 
+ #ifdef CONFIG_RT_GROUP_SCHED
+ 
++#define rt_entity_is_task(rt_se) (!(rt_se)->my_q)
++
+ static inline struct rq *rq_of_rt_rq(struct rt_rq *rt_rq)
+ {
+ 	return rt_rq->rq;
+@@ -22,6 +24,8 @@ static inline struct rt_rq *rt_rq_of_se(struct sched_rt_entity *rt_se)
+ 
+ #else /* CONFIG_RT_GROUP_SCHED */
+ 
++#define rt_entity_is_task(rt_se) (1)
++
+ static inline struct rq *rq_of_rt_rq(struct rt_rq *rt_rq)
+ {
+ 	return container_of(rt_rq, struct rq, rt);
+@@ -73,7 +77,7 @@ static inline void rt_clear_overload(struct rq *rq)
+ 
+ static void update_rt_migration(struct rt_rq *rt_rq)
+ {
+-	if (rt_rq->rt_nr_migratory && (rt_rq->rt_nr_running > 1)) {
++	if (rt_rq->rt_nr_migratory && rt_rq->rt_nr_total > 1) {
+ 		if (!rt_rq->overloaded) {
+ 			rt_set_overload(rq_of_rt_rq(rt_rq));
+ 			rt_rq->overloaded = 1;
+@@ -86,6 +90,12 @@ static void update_rt_migration(struct rt_rq *rt_rq)
+ 
+ static void inc_rt_migration(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq)
+ {
++	if (!rt_entity_is_task(rt_se))
++		return;
++
++	rt_rq = &rq_of_rt_rq(rt_rq)->rt;
++
++	rt_rq->rt_nr_total++;
+ 	if (rt_se->nr_cpus_allowed > 1)
+ 		rt_rq->rt_nr_migratory++;
+ 
+@@ -94,6 +104,12 @@ static void inc_rt_migration(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq)
+ 
+ static void dec_rt_migration(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq)
+ {
++	if (!rt_entity_is_task(rt_se))
++		return;
++
++	rt_rq = &rq_of_rt_rq(rt_rq)->rt;
++
++	rt_rq->rt_nr_total--;
+ 	if (rt_se->nr_cpus_allowed > 1)
+ 		rt_rq->rt_nr_migratory--;
+ 
+diff --git a/kernel/trace/trace_functions.c b/kernel/trace/trace_functions.c
+index 90f1347..01e5c43 100644
+--- a/kernel/trace/trace_functions.c
++++ b/kernel/trace/trace_functions.c
+@@ -364,7 +364,7 @@ ftrace_trace_onoff_callback(char *glob, char *cmd, char *param, int enable)
+  out_reg:
+ 	ret = register_ftrace_function_probe(glob, ops, count);
+ 
+-	return ret;
++	return ret < 0 ? ret : 0;
+ }
+ 
+ static struct ftrace_func_command ftrace_traceon_cmd = {
+diff --git a/mm/filemap.c b/mm/filemap.c
+index 1b60f30..0b20d1f 100644
+--- a/mm/filemap.c
++++ b/mm/filemap.c
+@@ -2249,6 +2249,7 @@ again:
+ 		pagefault_enable();
+ 		flush_dcache_page(page);
+ 
++		mark_page_accessed(page);
+ 		status = a_ops->write_end(file, mapping, pos, bytes, copied,
+ 						page, fsdata);
+ 		if (unlikely(status < 0))
+diff --git a/mm/internal.h b/mm/internal.h
+index 987bb03..090c267 100644
+--- a/mm/internal.h
++++ b/mm/internal.h
+@@ -284,4 +284,8 @@ int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
+ 		     unsigned long start, int len, int flags,
+ 		     struct page **pages, struct vm_area_struct **vmas);
+ 
++#define ZONE_RECLAIM_NOSCAN	-2
++#define ZONE_RECLAIM_FULL	-1
++#define ZONE_RECLAIM_SOME	0
++#define ZONE_RECLAIM_SUCCESS	1
+ #endif
+diff --git a/mm/nommu.c b/mm/nommu.c
+index b571ef7..2fd2ad5 100644
+--- a/mm/nommu.c
++++ b/mm/nommu.c
+@@ -69,6 +69,9 @@ int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT;
+ int sysctl_nr_trim_pages = CONFIG_NOMMU_INITIAL_TRIM_EXCESS;
+ int heap_stack_gap = 0;
+ 
++/* amount of vm to protect from userspace access */
++unsigned long mmap_min_addr = CONFIG_DEFAULT_MMAP_MIN_ADDR;
++
+ atomic_long_t mmap_pages_allocated;
+ 
+ EXPORT_SYMBOL(mem_map);
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index f820383..480907c 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -1420,20 +1420,38 @@ zonelist_scan:
+ 
+ 		if (!(alloc_flags & ALLOC_NO_WATERMARKS)) {
+ 			unsigned long mark;
++			int ret;
+ 			if (alloc_flags & ALLOC_WMARK_MIN)
+ 				mark = zone->pages_min;
+ 			else if (alloc_flags & ALLOC_WMARK_LOW)
+ 				mark = zone->pages_low;
+ 			else
+ 				mark = zone->pages_high;
+-			if (!zone_watermark_ok(zone, order, mark,
+-				    classzone_idx, alloc_flags)) {
+-				if (!zone_reclaim_mode ||
+-				    !zone_reclaim(zone, gfp_mask, order))
++
++			if (zone_watermark_ok(zone, order, mark,
++				    classzone_idx, alloc_flags))
++				goto try_this_zone;
++
++			if (zone_reclaim_mode == 0)
++				goto this_zone_full;
++
++			ret = zone_reclaim(zone, gfp_mask, order);
++			switch (ret) {
++			case ZONE_RECLAIM_NOSCAN:
++				/* did not scan */
++				goto try_next_zone;
++			case ZONE_RECLAIM_FULL:
++				/* scanned but unreclaimable */
++				goto this_zone_full;
++			default:
++				/* did we reclaim enough */
++				if (!zone_watermark_ok(zone, order, mark,
++						classzone_idx, alloc_flags))
+ 					goto this_zone_full;
+ 			}
+ 		}
+ 
++try_this_zone:
+ 		page = buffered_rmqueue(preferred_zone, zone, order, gfp_mask);
+ 		if (page)
+ 			break;
+diff --git a/mm/slab.c b/mm/slab.c
+index 9a90b00..021d69f 100644
+--- a/mm/slab.c
++++ b/mm/slab.c
+@@ -2592,7 +2592,7 @@ void kmem_cache_destroy(struct kmem_cache *cachep)
+ 	}
+ 
+ 	if (unlikely(cachep->flags & SLAB_DESTROY_BY_RCU))
+-		synchronize_rcu();
++		rcu_barrier();
+ 
+ 	__kmem_cache_destroy(cachep);
+ 	mutex_unlock(&cache_chain_mutex);
+diff --git a/mm/slob.c b/mm/slob.c
+index f92e66d..c80d982 100644
+--- a/mm/slob.c
++++ b/mm/slob.c
+@@ -590,6 +590,8 @@ EXPORT_SYMBOL(kmem_cache_create);
+ 
+ void kmem_cache_destroy(struct kmem_cache *c)
+ {
++	if (c->flags & SLAB_DESTROY_BY_RCU)
++		rcu_barrier();
+ 	slob_free(c, sizeof(struct kmem_cache));
+ }
+ EXPORT_SYMBOL(kmem_cache_destroy);
+diff --git a/mm/slub.c b/mm/slub.c
+index 65ffda5..253016d 100644
+--- a/mm/slub.c
++++ b/mm/slub.c
+@@ -2490,6 +2490,8 @@ static inline int kmem_cache_close(struct kmem_cache *s)
+  */
+ void kmem_cache_destroy(struct kmem_cache *s)
+ {
++	if (s->flags & SLAB_DESTROY_BY_RCU)
++		rcu_barrier();
+ 	down_write(&slub_lock);
+ 	s->refcount--;
+ 	if (!s->refcount) {
+diff --git a/mm/vmscan.c b/mm/vmscan.c
+index 2500b01..b3e39b5 100644
+--- a/mm/vmscan.c
++++ b/mm/vmscan.c
+@@ -2426,16 +2426,16 @@ int zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
+ 	 */
+ 	if (zone_pagecache_reclaimable(zone) <= zone->min_unmapped_pages &&
+ 	    zone_page_state(zone, NR_SLAB_RECLAIMABLE) <= zone->min_slab_pages)
+-		return 0;
++		return ZONE_RECLAIM_FULL;
+ 
+ 	if (zone_is_all_unreclaimable(zone))
+-		return 0;
++		return ZONE_RECLAIM_FULL;
+ 
+ 	/*
+ 	 * Do not scan if the allocation should not be delayed.
+ 	 */
+ 	if (!(gfp_mask & __GFP_WAIT) || (current->flags & PF_MEMALLOC))
+-			return 0;
++		return ZONE_RECLAIM_NOSCAN;
+ 
+ 	/*
+ 	 * Only run zone reclaim on the local zone or on zones that do not
+@@ -2445,10 +2445,11 @@ int zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
+ 	 */
+ 	node_id = zone_to_nid(zone);
+ 	if (node_state(node_id, N_CPU) && node_id != numa_node_id())
+-		return 0;
++		return ZONE_RECLAIM_NOSCAN;
+ 
+ 	if (zone_test_and_set_flag(zone, ZONE_RECLAIM_LOCKED))
+-		return 0;
++		return ZONE_RECLAIM_NOSCAN;
++
+ 	ret = __zone_reclaim(zone, gfp_mask, order);
+ 	zone_clear_flag(zone, ZONE_RECLAIM_LOCKED);
+ 
+diff --git a/net/dsa/mv88e6xxx.c b/net/dsa/mv88e6xxx.c
+index 4e4d8b5..efe661a 100644
+--- a/net/dsa/mv88e6xxx.c
++++ b/net/dsa/mv88e6xxx.c
+@@ -418,7 +418,7 @@ static int mv88e6xxx_stats_wait(struct dsa_switch *ds)
+ 	int i;
+ 
+ 	for (i = 0; i < 10; i++) {
+-		ret = REG_READ(REG_GLOBAL2, 0x1d);
++		ret = REG_READ(REG_GLOBAL, 0x1d);
+ 		if ((ret & 0x8000) == 0)
+ 			return 0;
+ 	}
+diff --git a/net/ipv4/netfilter/nf_nat_helper.c b/net/ipv4/netfilter/nf_nat_helper.c
+index cf7a42b..05ede41 100644
+--- a/net/ipv4/netfilter/nf_nat_helper.c
++++ b/net/ipv4/netfilter/nf_nat_helper.c
+@@ -191,7 +191,8 @@ nf_nat_mangle_tcp_packet(struct sk_buff *skb,
+ 				    ct, ctinfo);
+ 		/* Tell TCP window tracking about seq change */
+ 		nf_conntrack_tcp_update(skb, ip_hdrlen(skb),
+-					ct, CTINFO2DIR(ctinfo));
++					ct, CTINFO2DIR(ctinfo),
++					(int)rep_len - (int)match_len);
+ 
+ 		nf_conntrack_event_cache(IPCT_NATSEQADJ, ct);
+ 	}
+@@ -377,6 +378,7 @@ nf_nat_seq_adjust(struct sk_buff *skb,
+ 	struct tcphdr *tcph;
+ 	int dir;
+ 	__be32 newseq, newack;
++	s16 seqoff, ackoff;
+ 	struct nf_conn_nat *nat = nfct_nat(ct);
+ 	struct nf_nat_seq *this_way, *other_way;
+ 
+@@ -390,15 +392,18 @@ nf_nat_seq_adjust(struct sk_buff *skb,
+ 
+ 	tcph = (void *)skb->data + ip_hdrlen(skb);
+ 	if (after(ntohl(tcph->seq), this_way->correction_pos))
+-		newseq = htonl(ntohl(tcph->seq) + this_way->offset_after);
++		seqoff = this_way->offset_after;
+ 	else
+-		newseq = htonl(ntohl(tcph->seq) + this_way->offset_before);
++		seqoff = this_way->offset_before;
+ 
+ 	if (after(ntohl(tcph->ack_seq) - other_way->offset_before,
+ 		  other_way->correction_pos))
+-		newack = htonl(ntohl(tcph->ack_seq) - other_way->offset_after);
++		ackoff = other_way->offset_after;
+ 	else
+-		newack = htonl(ntohl(tcph->ack_seq) - other_way->offset_before);
++		ackoff = other_way->offset_before;
++
++	newseq = htonl(ntohl(tcph->seq) + seqoff);
++	newack = htonl(ntohl(tcph->ack_seq) - ackoff);
+ 
+ 	inet_proto_csum_replace4(&tcph->check, skb, tcph->seq, newseq, 0);
+ 	inet_proto_csum_replace4(&tcph->check, skb, tcph->ack_seq, newack, 0);
+@@ -413,7 +418,7 @@ nf_nat_seq_adjust(struct sk_buff *skb,
+ 	if (!nf_nat_sack_adjust(skb, tcph, ct, ctinfo))
+ 		return 0;
+ 
+-	nf_conntrack_tcp_update(skb, ip_hdrlen(skb), ct, dir);
++	nf_conntrack_tcp_update(skb, ip_hdrlen(skb), ct, dir, seqoff);
+ 
+ 	return 1;
+ }
+diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
+index 8020db6..0d961ee 100644
+--- a/net/netfilter/nf_conntrack_core.c
++++ b/net/netfilter/nf_conntrack_core.c
+@@ -295,7 +295,8 @@ begin:
+ 	h = __nf_conntrack_find(net, tuple);
+ 	if (h) {
+ 		ct = nf_ct_tuplehash_to_ctrack(h);
+-		if (unlikely(!atomic_inc_not_zero(&ct->ct_general.use)))
++		if (unlikely(nf_ct_is_dying(ct) ||
++			     !atomic_inc_not_zero(&ct->ct_general.use)))
+ 			h = NULL;
+ 		else {
+ 			if (unlikely(!nf_ct_tuple_equal(tuple, &h->tuple))) {
+@@ -385,7 +386,6 @@ __nf_conntrack_confirm(struct sk_buff *skb)
+ 	/* Remove from unconfirmed list */
+ 	hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);
+ 
+-	__nf_conntrack_hash_insert(ct, hash, repl_hash);
+ 	/* Timer relative to confirmation time, not original
+ 	   setting time, otherwise we'd get timer wrap in
+ 	   weird delay cases. */
+@@ -393,8 +393,16 @@ __nf_conntrack_confirm(struct sk_buff *skb)
+ 	add_timer(&ct->timeout);
+ 	atomic_inc(&ct->ct_general.use);
+ 	set_bit(IPS_CONFIRMED_BIT, &ct->status);
++
++	/* Since the lookup is lockless, hash insertion must be done after
++	 * starting the timer and setting the CONFIRMED bit. The RCU barriers
++	 * guarantee that no other CPU can find the conntrack before the above
++	 * stores are visible.
++	 */
++	__nf_conntrack_hash_insert(ct, hash, repl_hash);
+ 	NF_CT_STAT_INC(net, insert);
+ 	spin_unlock_bh(&nf_conntrack_lock);
++
+ 	help = nfct_help(ct);
+ 	if (help && help->helper)
+ 		nf_conntrack_event_cache(IPCT_HELPER, ct);
+@@ -467,7 +475,8 @@ static noinline int early_drop(struct net *net, unsigned int hash)
+ 			cnt++;
+ 		}
+ 
+-		if (ct && unlikely(!atomic_inc_not_zero(&ct->ct_general.use)))
++		if (ct && unlikely(nf_ct_is_dying(ct) ||
++				   !atomic_inc_not_zero(&ct->ct_general.use)))
+ 			ct = NULL;
+ 		if (ct || cnt >= NF_CT_EVICTION_RANGE)
+ 			break;
+@@ -516,22 +525,37 @@ struct nf_conn *nf_conntrack_alloc(struct net *net,
+ 		}
+ 	}
+ 
+-	ct = kmem_cache_zalloc(nf_conntrack_cachep, gfp);
++	/*
++	 * Do not use kmem_cache_zalloc(), as this cache uses
++	 * SLAB_DESTROY_BY_RCU.
++	 */
++	ct = kmem_cache_alloc(nf_conntrack_cachep, gfp);
+ 	if (ct == NULL) {
+ 		pr_debug("nf_conntrack_alloc: Can't alloc conntrack.\n");
+ 		atomic_dec(&net->ct.count);
+ 		return ERR_PTR(-ENOMEM);
+ 	}
+-
+-	atomic_set(&ct->ct_general.use, 1);
++	/*
++	 * Let ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode.next
++	 * and ct->tuplehash[IP_CT_DIR_REPLY].hnnode.next unchanged.
++	 */
++	memset(&ct->tuplehash[IP_CT_DIR_MAX], 0,
++	       sizeof(*ct) - offsetof(struct nf_conn, tuplehash[IP_CT_DIR_MAX]));
+ 	ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple = *orig;
++	ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode.pprev = NULL;
+ 	ct->tuplehash[IP_CT_DIR_REPLY].tuple = *repl;
++	ct->tuplehash[IP_CT_DIR_REPLY].hnnode.pprev = NULL;
+ 	/* Don't set timer yet: wait for confirmation */
+ 	setup_timer(&ct->timeout, death_by_timeout, (unsigned long)ct);
+ #ifdef CONFIG_NET_NS
+ 	ct->ct_net = net;
+ #endif
+ 
++	/*
++	 * changes to lookup keys must be done before setting refcnt to 1
++	 */
++	smp_wmb();
++	atomic_set(&ct->ct_general.use, 1);
+ 	return ct;
+ }
+ EXPORT_SYMBOL_GPL(nf_conntrack_alloc);
+diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c
+index 97a6e93..a38bc22 100644
+--- a/net/netfilter/nf_conntrack_proto_tcp.c
++++ b/net/netfilter/nf_conntrack_proto_tcp.c
+@@ -706,8 +706,8 @@ static bool tcp_in_window(const struct nf_conn *ct,
+ /* Caller must linearize skb at tcp header. */
+ void nf_conntrack_tcp_update(const struct sk_buff *skb,
+ 			     unsigned int dataoff,
+-			     struct nf_conn *ct,
+-			     int dir)
++			     struct nf_conn *ct, int dir,
++			     s16 offset)
+ {
+ 	const struct tcphdr *tcph = (const void *)skb->data + dataoff;
+ 	const struct ip_ct_tcp_state *sender = &ct->proto.tcp.seen[dir];
+@@ -720,7 +720,7 @@ void nf_conntrack_tcp_update(const struct sk_buff *skb,
+ 	/*
+ 	 * We have to worry for the ack in the reply packet only...
+ 	 */
+-	if (after(end, ct->proto.tcp.seen[dir].td_end))
++	if (ct->proto.tcp.seen[dir].td_end + offset == end)
+ 		ct->proto.tcp.seen[dir].td_end = end;
+ 	ct->proto.tcp.last_end = end;
+ 	write_unlock_bh(&tcp_lock);
+diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c
+index beb3731..4e62030 100644
+--- a/net/netfilter/nf_log.c
++++ b/net/netfilter/nf_log.c
+@@ -47,7 +47,6 @@ int nf_log_register(u_int8_t pf, struct nf_logger *logger)
+ 	mutex_lock(&nf_log_mutex);
+ 
+ 	if (pf == NFPROTO_UNSPEC) {
+-		int i;
+ 		for (i = NFPROTO_UNSPEC; i < NFPROTO_NUMPROTO; i++)
+ 			list_add_tail(&(logger->list[i]), &(nf_loggers_l[i]));
+ 	} else {
+@@ -216,7 +215,7 @@ static const struct file_operations nflog_file_ops = {
+ #endif /* PROC_FS */
+ 
+ #ifdef CONFIG_SYSCTL
+-struct ctl_path nf_log_sysctl_path[] = {
++static struct ctl_path nf_log_sysctl_path[] = {
+ 	{ .procname = "net", .ctl_name = CTL_NET, },
+ 	{ .procname = "netfilter", .ctl_name = NET_NETFILTER, },
+ 	{ .procname = "nf_log", .ctl_name = CTL_UNNUMBERED, },
+@@ -228,19 +227,26 @@ static struct ctl_table nf_log_sysctl_table[NFPROTO_NUMPROTO+1];
+ static struct ctl_table_header *nf_log_dir_header;
+ 
+ static int nf_log_proc_dostring(ctl_table *table, int write, struct file *filp,
+-			 void *buffer, size_t *lenp, loff_t *ppos)
++			 void __user *buffer, size_t *lenp, loff_t *ppos)
+ {
+ 	const struct nf_logger *logger;
++	char buf[NFLOGGER_NAME_LEN];
++	size_t size = *lenp;
+ 	int r = 0;
+ 	int tindex = (unsigned long)table->extra1;
+ 
+ 	if (write) {
+-		if (!strcmp(buffer, "NONE")) {
++		if (size > sizeof(buf))
++			size = sizeof(buf);
++		if (copy_from_user(buf, buffer, size))
++			return -EFAULT;
++
++		if (!strcmp(buf, "NONE")) {
+ 			nf_log_unbind_pf(tindex);
+ 			return 0;
+ 		}
+ 		mutex_lock(&nf_log_mutex);
+-		logger = __find_logger(tindex, buffer);
++		logger = __find_logger(tindex, buf);
+ 		if (logger == NULL) {
+ 			mutex_unlock(&nf_log_mutex);
+ 			return -ENOENT;
+@@ -248,14 +254,14 @@ static int nf_log_proc_dostring(ctl_table *table, int write, struct file *filp,
+ 		rcu_assign_pointer(nf_loggers[tindex], logger);
+ 		mutex_unlock(&nf_log_mutex);
+ 	} else {
+-		rcu_read_lock();
+-		logger = rcu_dereference(nf_loggers[tindex]);
++		mutex_lock(&nf_log_mutex);
++		logger = nf_loggers[tindex];
+ 		if (!logger)
+ 			table->data = "NONE";
+ 		else
+ 			table->data = logger->name;
+ 		r = proc_dostring(table, write, filp, buffer, lenp, ppos);
+-		rcu_read_unlock();
++		mutex_unlock(&nf_log_mutex);
+ 	}
+ 
+ 	return r;
+diff --git a/net/netfilter/xt_quota.c b/net/netfilter/xt_quota.c
+index 01dd07b..98fc190 100644
+--- a/net/netfilter/xt_quota.c
++++ b/net/netfilter/xt_quota.c
+@@ -54,6 +54,7 @@ static bool quota_mt_check(const struct xt_mtchk_param *par)
+ 	if (q->master == NULL)
+ 		return -ENOMEM;
+ 
++	q->master->quota = q->quota;
+ 	return true;
+ }
+ 
+diff --git a/net/netfilter/xt_rateest.c b/net/netfilter/xt_rateest.c
+index 220a1d5..4fc6a91 100644
+--- a/net/netfilter/xt_rateest.c
++++ b/net/netfilter/xt_rateest.c
+@@ -66,7 +66,7 @@ xt_rateest_mt(const struct sk_buff *skb, const struct xt_match_param *par)
+ 		if (info->flags & XT_RATEEST_MATCH_BPS)
+ 			ret &= bps1 == bps2;
+ 		if (info->flags & XT_RATEEST_MATCH_PPS)
+-			ret &= pps2 == pps2;
++			ret &= pps1 == pps2;
+ 		break;
+ 	}
+ 
+diff --git a/net/wireless/scan.c b/net/wireless/scan.c
+index 1f260c4..bc7f788 100644
+--- a/net/wireless/scan.c
++++ b/net/wireless/scan.c
+@@ -365,7 +365,6 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
+ 	found = rb_find_bss(dev, res);
+ 
+ 	if (found) {
+-		kref_get(&found->ref);
+ 		found->pub.beacon_interval = res->pub.beacon_interval;
+ 		found->pub.tsf = res->pub.tsf;
+ 		found->pub.signal = res->pub.signal;
+diff --git a/sound/pci/ca0106/ca0106_main.c b/sound/pci/ca0106/ca0106_main.c
+index bfac30f..a31412b 100644
+--- a/sound/pci/ca0106/ca0106_main.c
++++ b/sound/pci/ca0106/ca0106_main.c
+@@ -325,9 +325,9 @@ static struct snd_pcm_hardware snd_ca0106_capture_hw = {
+ 	.rate_max =		192000,
+ 	.channels_min =		2,
+ 	.channels_max =		2,
+-	.buffer_bytes_max =	((65536 - 64) * 8),
++	.buffer_bytes_max =	65536 - 128,
+ 	.period_bytes_min =	64,
+-	.period_bytes_max =	(65536 - 64),
++	.period_bytes_max =	32768 - 64,
+ 	.periods_min =		2,
+ 	.periods_max =		2,
+ 	.fifo_size =		0,
+diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
+index f09324a..18e8dad 100644
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -10204,6 +10204,18 @@ static void alc262_lenovo_3000_unsol_event(struct hda_codec *codec,
+ 	alc262_lenovo_3000_automute(codec, 1);
+ }
+ 
++static int amp_stereo_mute_update(struct hda_codec *codec, hda_nid_t nid,
++				  int dir, int idx, long *valp)
++{
++	int i, change = 0;
++
++	for (i = 0; i < 2; i++, valp++)
++		change |= snd_hda_codec_amp_update(codec, nid, i, dir, idx,
++						   HDA_AMP_MUTE,
++						   *valp ? 0 : HDA_AMP_MUTE);
++	return change;
++}
++
+ /* bind hp and internal speaker mute (with plug check) */
+ static int alc262_fujitsu_master_sw_put(struct snd_kcontrol *kcontrol,
+ 					 struct snd_ctl_elem_value *ucontrol)
+@@ -10212,13 +10224,8 @@ static int alc262_fujitsu_master_sw_put(struct snd_kcontrol *kcontrol,
+ 	long *valp = ucontrol->value.integer.value;
+ 	int change;
+ 
+-	change = snd_hda_codec_amp_stereo(codec, 0x14, HDA_OUTPUT, 0,
+-						 HDA_AMP_MUTE,
+-						 valp ? 0 : HDA_AMP_MUTE);
+-	change |= snd_hda_codec_amp_stereo(codec, 0x1b, HDA_OUTPUT, 0,
+-						 HDA_AMP_MUTE,
+-						 valp ? 0 : HDA_AMP_MUTE);
+-
++	change = amp_stereo_mute_update(codec, 0x14, HDA_OUTPUT, 0, valp);
++	change |= amp_stereo_mute_update(codec, 0x1b, HDA_OUTPUT, 0, valp);
+ 	if (change)
+ 		alc262_fujitsu_automute(codec, 0);
+ 	return change;
+@@ -10253,10 +10260,7 @@ static int alc262_lenovo_3000_master_sw_put(struct snd_kcontrol *kcontrol,
+ 	long *valp = ucontrol->value.integer.value;
+ 	int change;
+ 
+-	change = snd_hda_codec_amp_stereo(codec, 0x1b, HDA_OUTPUT, 0,
+-						 HDA_AMP_MUTE,
+-						 valp ? 0 : HDA_AMP_MUTE);
+-
++	change = amp_stereo_mute_update(codec, 0x1b, HDA_OUTPUT, 0, valp);
+ 	if (change)
+ 		alc262_lenovo_3000_automute(codec, 0);
+ 	return change;
+@@ -11377,12 +11381,7 @@ static int alc268_acer_master_sw_put(struct snd_kcontrol *kcontrol,
+ 	long *valp = ucontrol->value.integer.value;
+ 	int change;
+ 
+-	change = snd_hda_codec_amp_update(codec, 0x14, 0, HDA_OUTPUT, 0,
+-					  HDA_AMP_MUTE,
+-					  valp[0] ? 0 : HDA_AMP_MUTE);
+-	change |= snd_hda_codec_amp_update(codec, 0x14, 1, HDA_OUTPUT, 0,
+-					   HDA_AMP_MUTE,
+-					   valp[1] ? 0 : HDA_AMP_MUTE);
++	change = amp_stereo_mute_update(codec, 0x14, HDA_OUTPUT, 0, valp);
+ 	if (change)
+ 		alc268_acer_automute(codec, 0);
+ 	return change;
+diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
+index d2fd8ef..4e971b6 100644
+--- a/sound/pci/hda/patch_sigmatel.c
++++ b/sound/pci/hda/patch_sigmatel.c
+@@ -2325,6 +2325,7 @@ static struct snd_pci_quirk stac9205_cfg_tbl[] = {
+ 	SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0228,
+ 		      "Dell Vostro 1500", STAC_9205_DELL_M42),
+ 	/* Gateway */
++	SND_PCI_QUIRK(0x107b, 0x0560, "Gateway T6834c", STAC_9205_EAPD),
+ 	SND_PCI_QUIRK(0x107b, 0x0565, "Gateway T1616", STAC_9205_EAPD),
+ 	{} /* terminator */
+ };
+@@ -5661,6 +5662,8 @@ static unsigned int *stac9872_brd_tbl[STAC_9872_MODELS] = {
+ };
+ 
+ static struct snd_pci_quirk stac9872_cfg_tbl[] = {
++	SND_PCI_QUIRK_MASK(0x104d, 0xfff0, 0x81e0,
++			   "Sony VAIO F/S", STAC_9872_VAIO),
+ 	{} /* terminator */
+ };
+ 
+@@ -5673,6 +5676,8 @@ static int patch_stac9872(struct hda_codec *codec)
+ 	if (spec == NULL)
+ 		return -ENOMEM;
+ 	codec->spec = spec;
++	spec->num_pins = ARRAY_SIZE(stac9872_pin_nids);
++	spec->pin_nids = stac9872_pin_nids;
+ 
+ 	spec->board_config = snd_hda_check_board_config(codec, STAC_9872_MODELS,
+ 							stac9872_models,
+@@ -5684,8 +5689,6 @@ static int patch_stac9872(struct hda_codec *codec)
+ 		stac92xx_set_config_regs(codec,
+ 					 stac9872_brd_tbl[spec->board_config]);
+ 
+-	spec->num_pins = ARRAY_SIZE(stac9872_pin_nids);
+-	spec->pin_nids = stac9872_pin_nids;
+ 	spec->multiout.dac_nids = spec->dac_nids;
+ 	spec->num_adcs = ARRAY_SIZE(stac9872_adc_nids);
+ 	spec->adc_nids = stac9872_adc_nids;
+diff --git a/sound/pci/oxygen/virtuoso.c b/sound/pci/oxygen/virtuoso.c
+index bc5ce11..b369504 100644
+--- a/sound/pci/oxygen/virtuoso.c
++++ b/sound/pci/oxygen/virtuoso.c
+@@ -621,6 +621,8 @@ static void xonar_d2_resume(struct oxygen *chip)
+ 
+ static void xonar_d1_resume(struct oxygen *chip)
+ {
++	oxygen_set_bits8(chip, OXYGEN_FUNCTION, OXYGEN_FUNCTION_RESET_CODEC);
++	msleep(1);
+ 	cs43xx_init(chip);
+ 	xonar_enable_output(chip);
+ }
+diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c
+index a6e8f3f..40d4116 100644
+--- a/sound/soc/codecs/wm8753.c
++++ b/sound/soc/codecs/wm8753.c
+@@ -1664,7 +1664,7 @@ static int wm8753_register(struct wm8753_priv *wm8753)
+ 	codec->reg_cache = &wm8753->reg_cache;
+ 	codec->private_data = wm8753;
+ 
+-	memcpy(codec->reg_cache, wm8753_reg, sizeof(codec->reg_cache));
++	memcpy(codec->reg_cache, wm8753_reg, sizeof(wm8753->reg_cache));
+ 	INIT_DELAYED_WORK(&codec->delayed_work, wm8753_work);
+ 
+ 	ret = wm8753_reset(codec);
+diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c
+index a6b8848..6ea6868 100644
+--- a/sound/usb/usbaudio.c
++++ b/sound/usb/usbaudio.c
+@@ -2649,7 +2649,7 @@ static int parse_audio_endpoints(struct snd_usb_audio *chip, int iface_no)
+ 	struct usb_interface_descriptor *altsd;
+ 	int i, altno, err, stream;
+ 	int format;
+-	struct audioformat *fp;
++	struct audioformat *fp = NULL;
+ 	unsigned char *fmt, *csep;
+ 	int num;
+ 
+@@ -2722,6 +2722,18 @@ static int parse_audio_endpoints(struct snd_usb_audio *chip, int iface_no)
+ 			continue;
+ 		}
+ 
++		/*
++		 * Blue Microphones workaround: The last altsetting is identical
++		 * with the previous one, except for a larger packet size, but
++		 * is actually a mislabeled two-channel setting; ignore it.
++		 */
++		if (fmt[4] == 1 && fmt[5] == 2 && altno == 2 && num == 3 &&
++		    fp && fp->altsetting == 1 && fp->channels == 1 &&
++		    fp->format == SNDRV_PCM_FORMAT_S16_LE &&
++		    le16_to_cpu(get_endpoint(alts, 0)->wMaxPacketSize) ==
++							fp->maxpacksize * 2)
++			continue;
++
+ 		csep = snd_usb_find_desc(alts->endpoint[0].extra, alts->endpoint[0].extralen, NULL, USB_DT_CS_ENDPOINT);
+ 		/* Creamware Noah has this descriptor after the 2nd endpoint */
+ 		if (!csep && altsd->bNumEndpoints >= 2)
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/ia64/hardcode-arch-script-output.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/ia64/hardcode-arch-script-output.patch
@@ -0,0 +1,45 @@
+--- linux-source-2.6.18/arch/ia64/Makefile.orig	2007-01-03 17:26:31.000000000 -0700
++++ linux-source-2.6.18/arch/ia64/Makefile	2007-01-03 17:57:52.000000000 -0700
+@@ -28,16 +28,7 @@
+ 		   -falign-functions=32 -frename-registers -fno-optimize-sibling-calls
+ CFLAGS_KERNEL	:= -mconstant-gp
+ 
+-GAS_STATUS	= $(shell $(srctree)/arch/ia64/scripts/check-gas "$(CC)" "$(OBJDUMP)")
+-KBUILD_CPPFLAGS += $(shell $(srctree)/arch/ia64/scripts/toolchain-flags "$(CC)" "$(OBJDUMP)" "$(READELF)")
+-
+-ifeq ($(GAS_STATUS),buggy)
+-$(error Sorry, you need a newer version of the assember, one that is built from	\
+-	a source-tree that post-dates 18-Dec-2002.  You can find a pre-compiled	\
+-	static binary of such an assembler at:					\
+-										\
+-		ftp://ftp.hpl.hp.com/pub/linux-ia64/gas-030124.tar.gz)
+-endif
++KBUILD_CPPFLAGS += -DHAVE_WORKING_TEXT_ALIGN -DHAVE_MODEL_SMALL_ATTRIBUTE -DHAVE_SERIALIZE_DIRECTIVE
+ 
+ ifeq ($(call cc-version),0304)
+ 	cflags-$(CONFIG_ITANIUM)	+= -mtune=merced
+@@ -67,7 +58,7 @@
+ 
+ PHONY += boot compressed check
+ 
+-all: compressed unwcheck
++all: compressed
+ 
+ compressed: vmlinux.gz
+ 
+@@ -76,9 +67,6 @@
+ vmlinux.gz: vmlinux
+ 	$(Q)$(MAKE) $(build)=$(boot) $@
+ 
+-unwcheck: vmlinux
+-	-$(Q)READELF=$(READELF) python $(srctree)/arch/ia64/scripts/unwcheck.py $<
+-
+ archclean:
+ 	$(Q)$(MAKE) $(clean)=$(boot)
+ 
+@@ -94,5 +82,4 @@
+   echo '* compressed	- Build compressed kernel image'
+   echo '  install	- Install compressed kernel image'
+   echo '  boot		- Build vmlinux and bootloader for Ski simulator'
+-  echo '* unwcheck	- Check vmlinux for invalid unwind info'
+ endef
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/ia64/fix-asm-fpu-h.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/ia64/fix-asm-fpu-h.patch
@@ -0,0 +1,29 @@
+From 9457fedcd62feb1305af553dbc0fdd05243adc52 Mon Sep 17 00:00:00 2001
+From: Aurelien Jarno <aurelien@aurel32.net>
+Date: Sun, 12 Jul 2009 17:52:44 +0200
+Subject: [PATCH] Revert "Neither asm/types.h nor linux/types.h is required for arch/ia64/include/asm/fpu.h"
+
+asm/fpu.h uses the __IA64_UL macro which is declared in asm/types.h, so
+this include is really required. Without it, GNU libc fails to build.
+
+This reverts commit 2678c07b07ac2076675e5d57653bdf02e9af1950.
+---
+ arch/ia64/include/asm/fpu.h |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/arch/ia64/include/asm/fpu.h b/arch/ia64/include/asm/fpu.h
+index 0c26157..b6395ad 100644
+--- a/arch/ia64/include/asm/fpu.h
++++ b/arch/ia64/include/asm/fpu.h
+@@ -6,6 +6,8 @@
+  *	David Mosberger-Tang <davidm@hpl.hp.com>
+  */
+ 
++#include <linux/types.h>
++
+ /* floating point status register: */
+ #define FPSR_TRAP_VD	(1 << 0)	/* invalid op trap disabled */
+ #define FPSR_TRAP_DD	(1 << 1)	/* denormal trap disabled */
+-- 
+1.6.1.3
+
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/arm/export-__cpuc_flush_dcache_page.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/arm/export-__cpuc_flush_dcache_page.patch
@@ -0,0 +1,30 @@
+From: Russell King <rmk@dyn-67.arm.linux.org.uk>
+Date: Sun, 5 Jul 2009 09:50:37 +0000 (+0100)
+Subject: [ARM] export __cpu_flush_dcache_page
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=ba9b42e4ff5eb68f9c946378229d7e45299d7151
+
+[ARM] export __cpu_flush_dcache_page
+
+Now required for libsas:
+
+  Kernel: arch/arm/boot/Image is ready
+  Kernel: arch/arm/boot/zImage is ready
+  Building modules, stage 2.
+  MODPOST 1096 modules
+ERROR: "xscale_flush_kern_dcache_page" [drivers/scsi/libsas/libsas.ko] undefined!
+
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+---
+
+diff --git a/arch/arm/mm/proc-syms.c b/arch/arm/mm/proc-syms.c
+index 195e48e..ac5c800 100644
+--- a/arch/arm/mm/proc-syms.c
++++ b/arch/arm/mm/proc-syms.c
+@@ -27,6 +27,7 @@ EXPORT_SYMBOL(__cpuc_flush_kern_all);
+ EXPORT_SYMBOL(__cpuc_flush_user_all);
+ EXPORT_SYMBOL(__cpuc_flush_user_range);
+ EXPORT_SYMBOL(__cpuc_coherent_kern_range);
++EXPORT_SYMBOL(__cpuc_flush_dcache_page);
+ EXPORT_SYMBOL(dmac_inv_range);  /* because of flush_ioremap_region() */
+ #else
+ EXPORT_SYMBOL(cpu_cache);
--- linux-2.6-2.6.30.orig/debian/patches/bugfix/arm/disable-scsi_acard.patch
+++ linux-2.6-2.6.30/debian/patches/bugfix/arm/disable-scsi_acard.patch
@@ -0,0 +1,16 @@
+ERROR: "__bad_udelay" [drivers/scsi/atp870u.ko] undefined!
+make[1]: *** [__modpost] Error 1
+
+diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
+index a7a0813..fa6a4fe 100644
+--- a/drivers/scsi/Kconfig
++++ b/drivers/scsi/Kconfig
+@@ -396,7 +396,7 @@ config SCSI_7000FASST
+ 
+ config SCSI_ACARD
+ 	tristate "ACARD SCSI support"
+-	depends on PCI && SCSI
++	depends on PCI && SCSI && (!ARM || BROKEN)
+ 	help
+ 	  This driver supports the ACARD SCSI host adapter.
+ 	  Support Chip <ATP870 ATP876 ATP880 ATP885>
--- linux-2.6-2.6.30.orig/debian/patches/series/5
+++ linux-2.6-2.6.30/debian/patches/series/5
@@ -0,0 +1,5 @@
+- bugfix/parisc/ensure-broadcast-tlb-purge-runs-single-threaded.patch
+- bugfix/parisc/fix-ldcw-inline-assembler.patch
++ bugfix/all/stable/2.6.30.4.patch
+- bugfix/all/block-fix-sg-sg_dxfer_to_from_dev-regression.patch
+- bugfix/all/sched_rt-fix-overload-bug-on-rt-group-scheduling.patch
--- linux-2.6-2.6.30.orig/debian/patches/series/base
+++ linux-2.6-2.6.30/debian/patches/series/base
@@ -0,0 +1,40 @@
++ debian/version.patch
++ debian/kernelvariables.patch
++ debian/doc-build-parallel.patch
++ debian/scripts-kconfig-reportoldconfig.patch
+
++ debian/drivers-ata-ata_piix-postpone-pata.patch
++ debian/drivers-ata-pata_sis-postpone-pata.patch
+
++ features/all/drivers-gpu-drm-mga-request_firmware.patch
++ features/all/drivers-gpu-drm-r128-request_firmware.patch
++ features/all/drivers-gpu-drm-radeon-request_firmware.patch
+# rt2860sta and rt2870sta need ITU-T CRC on bit-reversed data
++ features/all/lib-crcitut-bit-reversed.patch
++ features/all/drivers-staging-rt2860sta-request_firmware.patch
++ features/all/drivers-staging-rt2870sta-request_firmware.patch
++ features/all/export-unionfs-symbols.patch
+
++ bugfix/sparc/drivers_net-broken.patch
+#+ bugfix/ia64/hardcode-arch-script-output.patch
++ bugfix/mips/disable-advansys.patch
++ bugfix/arm/disable-scsi_acard.patch
++ bugfix/mips/disable-werror.patch
++ bugfix/fix-hifn_795X-divdi3.patch
++ bugfix/powerpc/mm-mol.patch
++ bugfix/powerpc/lpar-console.patch
+#+ bugfix/all/wireless-regulatory-default-EU.patch
+#+ features/sparc/video-sunxvr500-intergraph.patch
++ features/arm/allow-alternative-copy-user.patch
++ features/arm/alternative-copy-user.patch
++ features/arm/lower_overhead_with_alternative.patch
++ features/arm/copy_to_user-better_threshold.patch
++ features/arm/nand-setup.patch
++ features/arm/clock_gating.patch
++ features/arm/kirkwood-cpu-idle.patch
++ bugfix/sparc/arch-zimage-target.patch
++ features/all/bnx2x-Separated-FW-from-the-source.patch
++ features/all/bnx2x-driver-version-1.48.105-1.patch
+- debian/dfsg/drivers-net-bnx2x-disable.patch
++ bugfix/mips/fix-ndelay-build-error.patch
++ bugfix/all/0001-xfs-fix-freeing-memory-in-xfs_getbmap.patch
--- linux-2.6-2.6.30.orig/debian/patches/series/4
+++ linux-2.6-2.6.30/debian/patches/series/4
@@ -0,0 +1,7 @@
+- bugfix/all/alpha-fix-percpu-build-breakage.patch
+- bugfix/all/tun-tap-fix-crash-on-open-and-poll.patch
+- bugfix/all/personality-fix-PER_CLEAR_ON_SETID.patch
+- bugfix/all/add-fno-delete-null-pointer-checks-to-cflags.patch
++ bugfix/all/stable/2.6.30.2.patch
++ bugfix/x86/arch-kernel-cpu-amd-pci-access.diff
++ bugfix/all/stable/2.6.30.3.patch
--- linux-2.6-2.6.30.orig/debian/patches/series/base-extra
+++ linux-2.6-2.6.30/debian/patches/series/base-extra
@@ -0,0 +1,4 @@
+#+ features/all/openvz/openvz.patch featureset=openvz
+
+#+ features/all/vserver/vs2.3.0.35.patch featureset=vserver
++ features/all/vserver/bindmount-dev.patch featureset=vserver
--- linux-2.6-2.6.30.orig/debian/patches/series/orig-0
+++ linux-2.6-2.6.30/debian/patches/series/orig-0
@@ -0,0 +1,14 @@
++ debian/dfsg/arch-powerpc-platforms-8xx-ucode-disable.patch
++ debian/dfsg/drivers-gpu-drm-mga-disable.patch
++ debian/dfsg/drivers-gpu-drm-r128-disable.patch
++ debian/dfsg/drivers-gpu-drm-radeon-disable.patch
++ debian/dfsg/drivers-net-bnx2x-disable.patch
++ debian/dfsg/drivers-net-appletalk-cops.patch
++ debian/dfsg/drivers-staging-me4000-disable.patch                             
++ debian/dfsg/drivers-staging-otus-disable.patch                               
++ debian/dfsg/drivers-staging-rt2860-disable.patch                             
++ debian/dfsg/drivers-staging-rt2870-disable.patch                             
++ debian/dfsg/drivers-staging-rt3070-disable.patch                             
++ debian/dfsg/firmware-cleanup.patch
++ debian/dfsg/sound-pci.patch
+X debian/dfsg/files-1
--- linux-2.6-2.6.30.orig/debian/patches/series/3
+++ linux-2.6-2.6.30/debian/patches/series/3
@@ -0,0 +1,5 @@
++ bugfix/arm/export-__cpuc_flush_dcache_page.patch
++ bugfix/ia64/fix-asm-fpu-h.patch
++ bugfix/all/tun-tap-fix-crash-on-open-and-poll.patch
++ bugfix/all/personality-fix-PER_CLEAR_ON_SETID.patch
++ bugfix/all/add-fno-delete-null-pointer-checks-to-cflags.patch
--- linux-2.6-2.6.30.orig/debian/patches/series/2
+++ linux-2.6-2.6.30/debian/patches/series/2
@@ -0,0 +1,5 @@
+- bugfix/all/0001-xfs-fix-freeing-memory-in-xfs_getbmap.patch
++ bugfix/all/stable/2.6.30.1.patch
++ bugfix/all/alpha-fix-percpu-build-breakage.patch
++ bugfix/parisc/ensure-broadcast-tlb-purge-runs-single-threaded.patch
++ bugfix/parisc/fix-ldcw-inline-assembler.patch
--- linux-2.6-2.6.30.orig/debian/patches/features/all/drivers-gpu-drm-r128-request_firmware.patch
+++ linux-2.6-2.6.30/debian/patches/features/all/drivers-gpu-drm-r128-request_firmware.patch
@@ -0,0 +1,139 @@
+From 870bed4eea53fbaeb8f585fb9b89d23d9d8c2436 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sat, 18 Oct 2008 02:27:57 +0100
+Subject: [PATCH 03/24] r128: Use request_firmware() to load CCE microcode
+
+Firmware blob looks like this:
+    __be32 datah
+    __be32 datal
+
+Compile-tested only.
+---
+ drivers/gpu/drm/Kconfig         |    2 +-
+ drivers/gpu/drm/r128/r128_cce.c |   54 ++++++++++++++++++++++++++++++++++----
+ 2 files changed, 49 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
+index 725f244..e6f4401 100644
+--- a/drivers/gpu/drm/Kconfig
++++ b/drivers/gpu/drm/Kconfig
+@@ -26,7 +26,7 @@ config DRM_TDFX
+ config DRM_R128
+ 	tristate "ATI Rage 128"
+ 	depends on DRM && PCI
+-	depends on BROKEN
++	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
+diff --git a/drivers/gpu/drm/r128/r128_cce.c b/drivers/gpu/drm/r128/r128_cce.c
+index a9ee89a..63bed21 100644
+--- a/drivers/gpu/drm/r128/r128_cce.c
++++ b/drivers/gpu/drm/r128/r128_cce.c
+@@ -29,6 +29,9 @@
+  *    Gareth Hughes <gareth@valinux.com>
+  */
+ 
++#include <linux/firmware.h>
++#include <linux/platform_device.h>
++
+ #include "drmP.h"
+ #include "drm.h"
+ #include "r128_drm.h"
+@@ -36,6 +39,9 @@
+ 
+ #define R128_FIFO_DEBUG		0
+ 
++#define FIRMWARE_NAME		"r128/r128_cce.bin"
++
++MODULE_FIRMWARE(FIRMWARE_NAME);
+ 
+ static int R128_READ_PLL(struct drm_device * dev, int addr)
+ {
+@@ -132,20 +138,50 @@ static int r128_do_wait_for_idle(drm_r128_private_t * dev_priv)
+  */
+ 
+ /* Load the microcode for the CCE */
+-static void r128_cce_load_microcode(drm_r128_private_t * dev_priv)
++static int r128_cce_load_microcode(drm_r128_private_t *dev_priv)
+ {
+-	int i;
++	struct platform_device *pdev;
++	const struct firmware *fw;
++	const __be32 *fw_data;
++	int rc, i;
+ 
+ 	DRM_DEBUG("\n");
+ 
++	pdev = platform_device_register_simple("r128_cce", 0, NULL, 0);
++	if (IS_ERR(pdev)) {
++		printk(KERN_ERR "r128_cce: Failed to register firmware\n");
++		return PTR_ERR(pdev);
++	}
++	rc = request_firmware(&fw, FIRMWARE_NAME, &pdev->dev);
++	platform_device_unregister(pdev);
++	if (rc) {
++		printk(KERN_ERR "r128_cce: Failed to load firmware \"%s\"\n",
++		       FIRMWARE_NAME);
++		return rc;
++	}
++
++	if (fw->size != 256 * 8) {
++		printk(KERN_ERR
++		       "r128_cce: Bogus length %zu in firmware \"%s\"\n",
++		       fw->size, FIRMWARE_NAME);
++		rc = -EINVAL;
++		goto out_release;
++	}
++
+ 	r128_do_wait_for_idle(dev_priv);
+ 
++	fw_data = (const __be32 *)fw->data;
+ 	R128_WRITE(R128_PM4_MICROCODE_ADDR, 0);
+ 	for (i = 0; i < 256; i++) {
+-		R128_WRITE(R128_PM4_MICROCODE_DATAH, r128_cce_microcode[i * 2]);
++		R128_WRITE(R128_PM4_MICROCODE_DATAH,
++			   be32_to_cpup(&fw_data[i * 2]));
+ 		R128_WRITE(R128_PM4_MICROCODE_DATAL,
+-			   r128_cce_microcode[i * 2 + 1]);
++			   be32_to_cpup(&fw_data[i * 2 + 1]));
+ 	}
++
++out_release:
++	release_firmware(fw);
++	return rc;
+ }
+ 
+ /* Flush any pending commands to the CCE.  This should only be used just
+@@ -306,6 +342,7 @@ static void r128_cce_init_ring_buffer(struct drm_device * dev,
+ static int r128_do_init_cce(struct drm_device * dev, drm_r128_init_t * init)
+ {
+ 	drm_r128_private_t *dev_priv;
++	int rc;
+ 
+ 	DRM_DEBUG("\n");
+ 
+@@ -532,13 +569,18 @@ static int r128_do_init_cce(struct drm_device * dev, drm_r128_init_t * init)
+ #endif
+ 
+ 	r128_cce_init_ring_buffer(dev, dev_priv);
+-	r128_cce_load_microcode(dev_priv);
++	rc = r128_cce_load_microcode(dev_priv);
+ 
+ 	dev->dev_private = (void *)dev_priv;
+ 
+ 	r128_do_engine_reset(dev);
+ 
+-	return 0;
++	if (rc) {
++		DRM_ERROR("Failed to load firmware!\n");
++		r128_do_cleanup_cce(dev);
++	}
++
++	return rc;
+ }
+ 
+ int r128_do_cleanup_cce(struct drm_device * dev)
+-- 
+1.6.1.3
+
--- linux-2.6-2.6.30.orig/debian/patches/features/all/lib-crcitut-bit-reversed.patch
+++ linux-2.6-2.6.30/debian/patches/features/all/lib-crcitut-bit-reversed.patch
@@ -0,0 +1,79 @@
+From c450dd0d27ff5cd7b83084e381e0cc808db2554e Mon Sep 17 00:00:00 2001
+From: Darren Salt <linux@youmustbejoking.demon.co.uk>
+Date: Sat, 11 Apr 2009 15:40:04 +0100
+Subject: [PATCH] crc-itu-t: add bit-reversed calculation
+
+Signed-off-by: Darren Salt <linux@youmustbejoking.demon.co.uk>
+---
+ include/linux/crc-itu-t.h |   10 ++++++++++
+ lib/crc-itu-t.c           |   18 ++++++++++++++++++
+ 2 files changed, 28 insertions(+), 0 deletions(-)
+
+diff --git a/include/linux/crc-itu-t.h b/include/linux/crc-itu-t.h
+index 84920f3..7b2b7ba 100644
+--- a/include/linux/crc-itu-t.h
++++ b/include/linux/crc-itu-t.h
+@@ -6,6 +6,9 @@
+  *   Poly  0x0x1021 (x^16 + x^12 + x^15 + 1)
+  *   Init  0
+  *
++ * The bit-reversed buffer variants may be non-standard, but some firmware
++ * loaders require them.
++ *
+  * This source code is licensed under the GNU General Public License,
+  * Version 2. See the file COPYING for more details.
+  */
+@@ -14,15 +17,22 @@
+ #define CRC_ITU_T_H
+ 
+ #include <linux/types.h>
++#include <linux/bitrev.h>
+ 
+ extern u16 const crc_itu_t_table[256];
+ 
+ extern u16 crc_itu_t(u16 crc, const u8 *buffer, size_t len);
++extern u16 crc_itu_t_bitreversed(u16 crc, const u8 *buffer, size_t len);
+ 
+ static inline u16 crc_itu_t_byte(u16 crc, const u8 data)
+ {
+ 	return (crc << 8) ^ crc_itu_t_table[((crc >> 8) ^ data) & 0xff];
+ }
+ 
++static inline u16 crc_itu_t_bitreversed_byte(u16 crc, const u8 data)
++{
++	return (crc << 8) ^ crc_itu_t_table[((crc >> 8) ^ bitrev8(data)) & 0xff];
++}
++
+ #endif /* CRC_ITU_T_H */
+ 
+diff --git a/lib/crc-itu-t.c b/lib/crc-itu-t.c
+index a63472b..886981e 100644
+--- a/lib/crc-itu-t.c
++++ b/lib/crc-itu-t.c
+@@ -64,6 +64,23 @@ u16 crc_itu_t(u16 crc, const u8 *buffer, size_t len)
+ }
+ EXPORT_SYMBOL(crc_itu_t);
+ 
++/**
++ * crc_itu_t_bitreversed - Compute the CRC-ITU-T for a bit-reversed data buffer
++ *
++ * @crc:     previous CRC value
++ * @buffer:  data pointer
++ * @len:     number of bytes in the buffer
++ *
++ * Returns the updated CRC value
++ */
++u16 crc_itu_t_bitreversed(u16 crc, const u8 *buffer, size_t len)
++{
++	while (len--)
++		crc = crc_itu_t_bitreversed_byte(crc, *buffer++);
++	return crc;
++}
++EXPORT_SYMBOL(crc_itu_t_bitreversed);
++
+ MODULE_DESCRIPTION("CRC ITU-T V.41 calculations");
+ MODULE_LICENSE("GPL");
+ 
+-- 
+1.5.6.5
+
--- linux-2.6-2.6.30.orig/debian/patches/features/all/drivers-gpu-drm-radeon-request_firmware.patch
+++ linux-2.6-2.6.30/debian/patches/features/all/drivers-gpu-drm-radeon-request_firmware.patch
@@ -0,0 +1,559 @@
+From fd63ae3af6c8ab1eeb658b501db2a5a593cdd353 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sun, 12 Apr 2009 04:56:11 +0100
+Subject: [PATCH] radeon: Use request_firmware() to load CP microcode
+
+Tested on Radeon 7500 (RV200) with and without firmware installed.
+---
+ drivers/gpu/drm/Kconfig             |    2 +-
+ drivers/gpu/drm/radeon/r600_cp.c    |  252 +++++++++++++++--------------------
+ drivers/gpu/drm/radeon/radeon_cp.c  |  121 +++++++++++------
+ drivers/gpu/drm/radeon/radeon_drv.h |    5 +
+ 4 files changed, 188 insertions(+), 192 deletions(-)
+
+diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
+index b0414ee..fb97c8a 100644
+--- a/drivers/gpu/drm/Kconfig
++++ b/drivers/gpu/drm/Kconfig
+@@ -37,7 +37,7 @@ config DRM_R128
+ config DRM_RADEON
+ 	tristate "ATI Radeon"
+ 	depends on DRM && PCI
+-	depends on BROKEN
++	select FW_LOADER
+ 	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
+diff --git a/drivers/gpu/drm/radeon/r600_cp.c b/drivers/gpu/drm/radeon/r600_cp.c
+index bc9d09d..4620b1b 100644
+--- a/drivers/gpu/drm/radeon/r600_cp.c
++++ b/drivers/gpu/drm/radeon/r600_cp.c
+@@ -31,7 +31,22 @@
+ #include "radeon_drm.h"
+ #include "radeon_drv.h"
+ 
+-#include "r600_microcode.h"
++#define PFP_UCODE_SIZE 576
++#define PM4_UCODE_SIZE 1792
++#define R700_PFP_UCODE_SIZE 848
++#define R700_PM4_UCODE_SIZE 1360
++
++/* Firmware Names */
++MODULE_FIRMWARE("radeon/R600_cp.bin");
++MODULE_FIRMWARE("radeon/RV610_cp.bin");
++MODULE_FIRMWARE("radeon/RV630_cp.bin");
++MODULE_FIRMWARE("radeon/RV620_cp.bin");
++MODULE_FIRMWARE("radeon/RV635_cp.bin");
++MODULE_FIRMWARE("radeon/RV670_cp.bin");
++MODULE_FIRMWARE("radeon/RS780_cp.bin");
++MODULE_FIRMWARE("radeon/RV770_cp.bin");
++MODULE_FIRMWARE("radeon/RV730_cp.bin");
++MODULE_FIRMWARE("radeon/RV710_cp.bin");
+ 
+ # define ATI_PCIGART_PAGE_SIZE		4096	/**< PCI GART page size */
+ # define ATI_PCIGART_PAGE_MASK		(~(ATI_PCIGART_PAGE_SIZE-1))
+@@ -275,11 +290,68 @@ static void r600_vm_init(struct drm_device *dev)
+ 	r600_vm_flush_gart_range(dev);
+ }
+ 
+-/* load r600 microcode */
++static int r600_cp_init_microcode(drm_radeon_private_t *dev_priv)
++{
++	struct platform_device *pdev;
++	const char *chip_name;
++	size_t required_size;
++	char fw_name[30];
++	int err;
++
++	pdev = platform_device_register_simple("r600_cp", 0, NULL, 0);
++	err = IS_ERR(pdev);
++	if (err) {
++		printk(KERN_ERR "r600_cp: Failed to register firmware\n");
++		return -EINVAL;
++	}
++
++	switch (dev_priv->flags & RADEON_FAMILY_MASK) {
++	case CHIP_R600:  chip_name = "R600";  break;
++	case CHIP_RV610: chip_name = "RV610"; break;
++	case CHIP_RV630: chip_name = "RV630"; break;
++	case CHIP_RV620: chip_name = "RV620"; break;
++	case CHIP_RV635: chip_name = "RV635"; break;
++	case CHIP_RV670: chip_name = "RV670"; break;
++	case CHIP_RS780: chip_name = "RS780"; break;
++	case CHIP_RV770: chip_name = "RV770"; break;
++	case CHIP_RV730: chip_name = "RV730"; break;
++	case CHIP_RV710: chip_name = "RV710"; break;
++	default:         BUG();
++	}
++
++	if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RV770)
++		required_size = (R700_PM4_UCODE_SIZE * 4 +
++				 R700_PFP_UCODE_SIZE * 4);
++	else
++		required_size = PM4_UCODE_SIZE * 12 + PFP_UCODE_SIZE * 4;
++
++	DRM_INFO("Loading %s CP Microcode\n", chip_name);
++	snprintf(fw_name, sizeof(fw_name), "radeon/%s_cp.bin", chip_name);
++
++	err = request_firmware(&dev_priv->fw, fw_name, &pdev->dev);
++	platform_device_unregister(pdev);
++	if (err) {
++		printk(KERN_ERR "r600_cp: Failed to load firmware \"%s\"\n",
++		       fw_name);
++	} else if (dev_priv->fw->size != required_size) {
++		printk(KERN_ERR
++		       "r600_cp: Bogus length %zu in firmware \"%s\"\n",
++		       dev_priv->fw->size, fw_name);
++		err = -EINVAL;
++		release_firmware(dev_priv->fw);
++		dev_priv->fw = NULL;
++	}
++	return err;
++}
++
+ static void r600_cp_load_microcode(drm_radeon_private_t *dev_priv)
+ {
++	const __be32 *fw_data;
+ 	int i;
+ 
++	if (!dev_priv->fw)
++		return;
++
+ 	r600_do_cp_stop(dev_priv);
+ 
+ 	RADEON_WRITE(R600_CP_RB_CNTL,
+@@ -292,114 +364,18 @@ static void r600_cp_load_microcode(drm_radeon_private_t *dev_priv)
+ 	DRM_UDELAY(15000);
+ 	RADEON_WRITE(R600_GRBM_SOFT_RESET, 0);
+ 
+-	RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
+-
+-	if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R600)) {
+-		DRM_INFO("Loading R600 CP Microcode\n");
+-		for (i = 0; i < PM4_UCODE_SIZE; i++) {
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     R600_cp_microcode[i][0]);
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     R600_cp_microcode[i][1]);
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     R600_cp_microcode[i][2]);
+-		}
+-
+-		RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+-		DRM_INFO("Loading R600 PFP Microcode\n");
+-		for (i = 0; i < PFP_UCODE_SIZE; i++)
+-			RADEON_WRITE(R600_CP_PFP_UCODE_DATA, R600_pfp_microcode[i]);
+-	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610)) {
+-		DRM_INFO("Loading RV610 CP Microcode\n");
+-		for (i = 0; i < PM4_UCODE_SIZE; i++) {
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV610_cp_microcode[i][0]);
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV610_cp_microcode[i][1]);
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV610_cp_microcode[i][2]);
+-		}
+-
+-		RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+-		DRM_INFO("Loading RV610 PFP Microcode\n");
+-		for (i = 0; i < PFP_UCODE_SIZE; i++)
+-			RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV610_pfp_microcode[i]);
+-	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV630)) {
+-		DRM_INFO("Loading RV630 CP Microcode\n");
+-		for (i = 0; i < PM4_UCODE_SIZE; i++) {
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV630_cp_microcode[i][0]);
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV630_cp_microcode[i][1]);
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV630_cp_microcode[i][2]);
+-		}
+-
+-		RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+-		DRM_INFO("Loading RV630 PFP Microcode\n");
+-		for (i = 0; i < PFP_UCODE_SIZE; i++)
+-			RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV630_pfp_microcode[i]);
+-	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620)) {
+-		DRM_INFO("Loading RV620 CP Microcode\n");
+-		for (i = 0; i < PM4_UCODE_SIZE; i++) {
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV620_cp_microcode[i][0]);
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV620_cp_microcode[i][1]);
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV620_cp_microcode[i][2]);
+-		}
+-
+-		RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+-		DRM_INFO("Loading RV620 PFP Microcode\n");
+-		for (i = 0; i < PFP_UCODE_SIZE; i++)
+-			RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV620_pfp_microcode[i]);
+-	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV635)) {
+-		DRM_INFO("Loading RV635 CP Microcode\n");
+-		for (i = 0; i < PM4_UCODE_SIZE; i++) {
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV635_cp_microcode[i][0]);
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV635_cp_microcode[i][1]);
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV635_cp_microcode[i][2]);
+-		}
++	fw_data = (const __be32 *)dev_priv->fw->data;
+ 
+-		RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+-		DRM_INFO("Loading RV635 PFP Microcode\n");
+-		for (i = 0; i < PFP_UCODE_SIZE; i++)
+-			RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV635_pfp_microcode[i]);
+-	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV670)) {
+-		DRM_INFO("Loading RV670 CP Microcode\n");
+-		for (i = 0; i < PM4_UCODE_SIZE; i++) {
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV670_cp_microcode[i][0]);
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV670_cp_microcode[i][1]);
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RV670_cp_microcode[i][2]);
+-		}
++	RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
++	for (i = 0; i < PM4_UCODE_SIZE * 3; i++)
++		RADEON_WRITE(R600_CP_ME_RAM_DATA,
++			     be32_to_cpup(fw_data++));
+ 
+-		RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+-		DRM_INFO("Loading RV670 PFP Microcode\n");
+-		for (i = 0; i < PFP_UCODE_SIZE; i++)
+-			RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV670_pfp_microcode[i]);
+-	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780)) {
+-		DRM_INFO("Loading RS780 CP Microcode\n");
+-		for (i = 0; i < PM4_UCODE_SIZE; i++) {
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RS780_cp_microcode[i][0]);
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RS780_cp_microcode[i][1]);
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA,
+-				     RS780_cp_microcode[i][2]);
+-		}
++	RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
++	for (i = 0; i < PFP_UCODE_SIZE; i++)
++		RADEON_WRITE(R600_CP_PFP_UCODE_DATA,
++			     be32_to_cpup(fw_data++));
+ 
+-		RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+-		DRM_INFO("Loading RS780 PFP Microcode\n");
+-		for (i = 0; i < PFP_UCODE_SIZE; i++)
+-			RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RS780_pfp_microcode[i]);
+-	}
+ 	RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+ 	RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
+ 	RADEON_WRITE(R600_CP_ME_RAM_RADDR, 0);
+@@ -458,11 +434,14 @@ static void r700_vm_init(struct drm_device *dev)
+ 	r600_vm_flush_gart_range(dev);
+ }
+ 
+-/* load r600 microcode */
+ static void r700_cp_load_microcode(drm_radeon_private_t *dev_priv)
+ {
++	const __be32 *fw_data;
+ 	int i;
+ 
++	if (!dev_priv->fw)
++		return;
++
+ 	r600_do_cp_stop(dev_priv);
+ 
+ 	RADEON_WRITE(R600_CP_RB_CNTL,
+@@ -475,47 +454,18 @@ static void r700_cp_load_microcode(drm_radeon_private_t *dev_priv)
+ 	DRM_UDELAY(15000);
+ 	RADEON_WRITE(R600_GRBM_SOFT_RESET, 0);
+ 
++	fw_data = (const __be32 *)dev_priv->fw->data + R700_PM4_UCODE_SIZE;
++	RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
++	for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
++		RADEON_WRITE(R600_CP_PFP_UCODE_DATA, be32_to_cpup(fw_data++));
++	RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+ 
+-	if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV770)) {
+-		RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+-		DRM_INFO("Loading RV770 PFP Microcode\n");
+-		for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
+-			RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV770_pfp_microcode[i]);
+-		RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+-
+-		RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
+-		DRM_INFO("Loading RV770 CP Microcode\n");
+-		for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA, RV770_cp_microcode[i]);
+-		RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
+-
+-	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV730)) {
+-		RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+-		DRM_INFO("Loading RV730 PFP Microcode\n");
+-		for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
+-			RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV730_pfp_microcode[i]);
+-		RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+-
+-		RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
+-		DRM_INFO("Loading RV730 CP Microcode\n");
+-		for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA, RV730_cp_microcode[i]);
+-		RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
+-
+-	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV710)) {
+-		RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+-		DRM_INFO("Loading RV710 PFP Microcode\n");
+-		for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
+-			RADEON_WRITE(R600_CP_PFP_UCODE_DATA, RV710_pfp_microcode[i]);
+-		RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+-
+-		RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
+-		DRM_INFO("Loading RV710 CP Microcode\n");
+-		for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
+-			RADEON_WRITE(R600_CP_ME_RAM_DATA, RV710_cp_microcode[i]);
+-		RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
++	fw_data = (const __be32 *)dev_priv->fw->data;
++	RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
++	for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
++		RADEON_WRITE(R600_CP_ME_RAM_DATA, be32_to_cpup(fw_data++));
++	RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
+ 
+-	}
+ 	RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
+ 	RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
+ 	RADEON_WRITE(R600_CP_ME_RAM_RADDR, 0);
+@@ -2107,6 +2057,14 @@ int r600_do_init_cp(struct drm_device *dev, drm_radeon_init_t *init,
+ 			r600_vm_init(dev);
+ 	}
+ 
++	if (!dev_priv->fw) {
++		int err = r600_cp_init_microcode(dev_priv);
++		if (err) {
++			DRM_ERROR("Failed to load firmware!\n");
++			r600_do_cleanup_cp(dev);
++			return err;
++		}
++	}
+ 	if (((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RV770))
+ 		r700_cp_load_microcode(dev_priv);
+ 	else
+diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c
+index 77a7a4d..e9894ac 100644
+--- a/drivers/gpu/drm/radeon/radeon_cp.c
++++ b/drivers/gpu/drm/radeon/radeon_cp.c
+@@ -36,10 +36,25 @@
+ #include "radeon_drv.h"
+ #include "r300_reg.h"
+ 
+-#include "radeon_microcode.h"
+-
+ #define RADEON_FIFO_DEBUG	0
+ 
++/* Firmware Names */
++#define FIRMWARE_R100		"radeon/R100_cp.bin"
++#define FIRMWARE_R200		"radeon/R200_cp.bin"
++#define FIRMWARE_R300		"radeon/R300_cp.bin"
++#define FIRMWARE_R420		"radeon/R420_cp.bin"
++#define FIRMWARE_RS690		"radeon/RS690_cp.bin"
++#define FIRMWARE_RS600		"radeon/RS600_cp.bin"
++#define FIRMWARE_R520		"radeon/R520_cp.bin"
++
++MODULE_FIRMWARE(FIRMWARE_R100);
++MODULE_FIRMWARE(FIRMWARE_R200);
++MODULE_FIRMWARE(FIRMWARE_R300);
++MODULE_FIRMWARE(FIRMWARE_R420);
++MODULE_FIRMWARE(FIRMWARE_RS690);
++MODULE_FIRMWARE(FIRMWARE_RS600);
++MODULE_FIRMWARE(FIRMWARE_R520);
++
+ static int radeon_do_cleanup_cp(struct drm_device * dev);
+ static void radeon_do_cp_start(drm_radeon_private_t * dev_priv);
+ 
+@@ -451,37 +466,34 @@ static void radeon_init_pipes(drm_radeon_private_t *dev_priv)
+  */
+ 
+ /* Load the microcode for the CP */
+-static void radeon_cp_load_microcode(drm_radeon_private_t * dev_priv)
++static int radeon_cp_init_microcode(drm_radeon_private_t *dev_priv)
+ {
+-	int i;
++	struct platform_device *pdev;
++	const char *fw_name = NULL;
++	int err;
++
+ 	DRM_DEBUG("\n");
+ 
+-	radeon_do_wait_for_idle(dev_priv);
++	pdev = platform_device_register_simple("radeon_cp", 0, NULL, 0);
++	err = IS_ERR(pdev);
++	if (err) {
++		printk(KERN_ERR "radeon_cp: Failed to register firmware\n");
++		return -EINVAL;
++	}
+ 
+-	RADEON_WRITE(RADEON_CP_ME_RAM_ADDR, 0);
+ 	if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R100) ||
+ 	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV100) ||
+ 	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV200) ||
+ 	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS100) ||
+ 	    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS200)) {
+ 		DRM_INFO("Loading R100 Microcode\n");
+-		for (i = 0; i < 256; i++) {
+-			RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
+-				     R100_cp_microcode[i][1]);
+-			RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
+-				     R100_cp_microcode[i][0]);
+-		}
++		fw_name = FIRMWARE_R100;
+ 	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R200) ||
+ 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV250) ||
+ 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV280) ||
+ 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS300)) {
+ 		DRM_INFO("Loading R200 Microcode\n");
+-		for (i = 0; i < 256; i++) {
+-			RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
+-				     R200_cp_microcode[i][1]);
+-			RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
+-				     R200_cp_microcode[i][0]);
+-		}
++		fw_name = FIRMWARE_R200;
+ 	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R300) ||
+ 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R350) ||
+ 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV350) ||
+@@ -489,39 +501,19 @@ static void radeon_cp_load_microcode(drm_radeon_private_t * dev_priv)
+ 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS400) ||
+ 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS480)) {
+ 		DRM_INFO("Loading R300 Microcode\n");
+-		for (i = 0; i < 256; i++) {
+-			RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
+-				     R300_cp_microcode[i][1]);
+-			RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
+-				     R300_cp_microcode[i][0]);
+-		}
++		fw_name = FIRMWARE_R300;
+ 	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R420) ||
+ 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R423) ||
+ 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV410)) {
+ 		DRM_INFO("Loading R400 Microcode\n");
+-		for (i = 0; i < 256; i++) {
+-			RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
+-				     R420_cp_microcode[i][1]);
+-			RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
+-				     R420_cp_microcode[i][0]);
+-		}
++		fw_name = FIRMWARE_R420;
+ 	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS690) ||
+ 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS740)) {
+ 		DRM_INFO("Loading RS690/RS740 Microcode\n");
+-		for (i = 0; i < 256; i++) {
+-			RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
+-				     RS690_cp_microcode[i][1]);
+-			RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
+-				     RS690_cp_microcode[i][0]);
+-		}
++		fw_name = FIRMWARE_RS690;
+ 	} else if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS600) {
+ 		DRM_INFO("Loading RS600 Microcode\n");
+-		for (i = 0; i < 256; i++) {
+-			RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
+-				     RS600_cp_microcode[i][1]);
+-			RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
+-				     RS600_cp_microcode[i][0]);
+-		}
++		fw_name = FIRMWARE_RS600;
+ 	} else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV515) ||
+ 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R520) ||
+ 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV530) ||
+@@ -529,11 +521,40 @@ static void radeon_cp_load_microcode(drm_radeon_private_t * dev_priv)
+ 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV560) ||
+ 		   ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV570)) {
+ 		DRM_INFO("Loading R500 Microcode\n");
++		fw_name = FIRMWARE_R520;
++	}
++
++	err = request_firmware(&dev_priv->fw, fw_name, &pdev->dev);
++	platform_device_unregister(pdev);
++	if (err) {
++		printk(KERN_ERR "radeon_cp: Failed to load firmware \"%s\"\n",
++		       fw_name);
++	} else if (dev_priv->fw->size != 256 * 8) {
++		printk(KERN_ERR
++		       "radeon_cp: Bogus length %zu in firmware \"%s\"\n",
++		       dev_priv->fw->size, fw_name);
++		err = -EINVAL;
++		release_firmware(dev_priv->fw);
++		dev_priv->fw = NULL;
++	}
++	return err;
++}
++
++static void radeon_cp_load_microcode(drm_radeon_private_t *dev_priv)
++{
++	const __be32 *fw_data;
++	int i;
++
++	radeon_do_wait_for_idle(dev_priv);
++
++	if (dev_priv->fw) {
++		fw_data = (const __be32 *)&dev_priv->fw->data[0];
++		RADEON_WRITE(RADEON_CP_ME_RAM_ADDR, 0);
+ 		for (i = 0; i < 256; i++) {
+ 			RADEON_WRITE(RADEON_CP_ME_RAM_DATAH,
+-				     R520_cp_microcode[i][1]);
++				     be32_to_cpup(fw_data++));
+ 			RADEON_WRITE(RADEON_CP_ME_RAM_DATAL,
+-				     R520_cp_microcode[i][0]);
++				     be32_to_cpup(fw_data++));
+ 		}
+ 	}
+ }
+@@ -1486,6 +1507,14 @@ static int radeon_do_init_cp(struct drm_device *dev, drm_radeon_init_t *init,
+ 		radeon_set_pcigart(dev_priv, 1);
+ 	}
+ 
++	if (!dev_priv->fw) {
++		int err = radeon_cp_init_microcode(dev_priv);
++		if (err) {
++			DRM_ERROR("Failed to load firmware!\n");
++			radeon_do_cleanup_cp(dev);
++			return err;
++		}
++	}
+ 	radeon_cp_load_microcode(dev_priv);
+ 	radeon_cp_init_ring_buffer(dev, dev_priv, file_priv);
+ 
+@@ -1755,6 +1784,10 @@ void radeon_do_release(struct drm_device * dev)
+ 			r600_do_cleanup_cp(dev);
+ 		else
+ 			radeon_do_cleanup_cp(dev);
++		if (dev_priv->fw) {
++			release_firmware(dev_priv->fw);
++			dev_priv->fw = NULL;
++		}
+ 	}
+ }
+ 
+diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
+index ed4d27e..829eefa 100644
+--- a/drivers/gpu/drm/radeon/radeon_drv.h
++++ b/drivers/gpu/drm/radeon/radeon_drv.h
+@@ -31,6 +31,9 @@
+ #ifndef __RADEON_DRV_H__
+ #define __RADEON_DRV_H__
+ 
++#include <linux/firmware.h>
++#include <linux/platform_device.h>
++
+ /* General customization:
+  */
+ 
+@@ -348,6 +351,8 @@ typedef struct drm_radeon_private {
+ 	int r700_sc_hiz_tile_fifo_size;
+ 	int r700_sc_earlyz_tile_fifo_fize;
+ 
++	/* firmware */
++	const struct firmware *fw;
+ } drm_radeon_private_t;
+ 
+ typedef struct drm_radeon_buf_priv {
+-- 
+1.5.6.5
+
--- linux-2.6-2.6.30.orig/debian/patches/features/all/drivers-staging-rt2860sta-request_firmware.patch
+++ linux-2.6-2.6.30/debian/patches/features/all/drivers-staging-rt2860sta-request_firmware.patch
@@ -0,0 +1,400 @@
+From 1322d21f7d160924ac9dec88a7088bee22447250 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sun, 12 Apr 2009 21:07:48 +0100
+Subject: [PATCH] rt2860sta: use the firmware loader interface and library CRC code
+
+Based on work by Darren Salt <linux@youmustbejoking.demon.co.uk>.
+---
+ drivers/staging/rt2860/Kconfig            |    3 +-
+ drivers/staging/rt2860/common/rtmp_init.c |  309 ++++++-----------------------
+ 2 files changed, 64 insertions(+), 248 deletions(-)
+
+diff --git a/drivers/staging/rt2860/Kconfig b/drivers/staging/rt2860/Kconfig
+index 9fb130d..d75a87a 100644
+--- a/drivers/staging/rt2860/Kconfig
++++ b/drivers/staging/rt2860/Kconfig
+@@ -1,6 +1,7 @@
+ config RT2860
+ 	tristate "Ralink 2860 wireless support"
+-	depends on BROKEN
+ 	depends on PCI && X86 && WLAN_80211
++	select CRC_ITU_T
++	select FW_LOADER
+ 	---help---
+ 	  This is an experimental driver for the Ralink 2860 wireless chip.
+diff --git a/drivers/staging/rt2860/common/rtmp_init.c b/drivers/staging/rt2860/common/rtmp_init.c
+index 8a00cee..bdcdef6 100644
+--- a/drivers/staging/rt2860/common/rtmp_init.c
++++ b/drivers/staging/rt2860/common/rtmp_init.c
+@@ -38,8 +38,8 @@
+     Jan Lee  2006-09-15    RT2860. Change for 802.11n , EEPROM, Led, BA, HT.
+ */
+ #include "../rt_config.h"
+-#include 	"firmware.h"
+-#include <linux/bitrev.h>
++#include <linux/firmware.h>
++#include <linux/crc-itu-t.h>
+ 
+ UCHAR    BIT8[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
+ ULONG    BIT32[] = {0x00000001, 0x00000002, 0x00000004, 0x00000008,
+@@ -53,43 +53,6 @@ ULONG    BIT32[] = {0x00000001, 0x00000002, 0x00000004, 0x00000008,
+ 
+ char*   CipherName[] = {"none","wep64","wep128","TKIP","AES","CKIP64","CKIP128"};
+ 
+-const unsigned short ccitt_16Table[] = {
+-	0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
+-	0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
+-	0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
+-	0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
+-	0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
+-	0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
+-	0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
+-	0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
+-	0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
+-	0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
+-	0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
+-	0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
+-	0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
+-	0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
+-	0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
+-	0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
+-	0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
+-	0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
+-	0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
+-	0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
+-	0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
+-	0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
+-	0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
+-	0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
+-	0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
+-	0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
+-	0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
+-	0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
+-	0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
+-	0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
+-	0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
+-	0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
+-};
+-#define ByteCRC16(v, crc) \
+-	(unsigned short)((crc << 8) ^  ccitt_16Table[((crc >> 8) ^ (v)) & 255])
+-
+ //
+ // BBP register initialization set
+ //
+@@ -178,14 +141,11 @@ RTMP_REG_PAIR	STAMACRegTable[] =	{
+ #endif // CONFIG_STA_SUPPORT //
+ 
+ 
+-// New 8k byte firmware size for RT3071/RT3072
++#define FW_FILENAME "rt2860.bin"
++MODULE_FIRMWARE(FW_FILENAME);
++
+ #define FIRMWAREIMAGE_MAX_LENGTH	0x2000
+-#define FIRMWAREIMAGE_LENGTH		(sizeof (FirmwareImage) / sizeof(UCHAR))
+ #define FIRMWARE_MAJOR_VERSION	0
+-
+-#define FIRMWAREIMAGEV1_LENGTH	0x1000
+-#define FIRMWAREIMAGEV2_LENGTH	0x1000
+-
+ #define FIRMWARE_MINOR_VERSION	2
+ 
+ 
+@@ -2643,186 +2603,54 @@ VOID NICEraseFirmware(
+ NDIS_STATUS NICLoadFirmware(
+ 	IN PRTMP_ADAPTER pAd)
+ {
+-#ifdef BIN_IN_FILE
+-#define NICLF_DEFAULT_USE()	\
+-	flg_default_firm_use = TRUE; \
+-	printk("%s - Use default firmware!\n", __func__);
+-
+-	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+-	PUCHAR			src;
+-	struct file		*srcf;
+-	INT 			retval, orgfsuid, orgfsgid, i;
+-   	mm_segment_t	orgfs;
+-	PUCHAR			pFirmwareImage;
+-	UINT			FileLength = 0;
+-	UINT32			MacReg;
+-	ULONG			Index;
+-	ULONG			firm;
+-	BOOLEAN			flg_default_firm_use = FALSE;
+-
+-
+-	DBGPRINT(RT_DEBUG_TRACE, ("===> %s\n", __func__));
+-
+-	/* init */
+-	pFirmwareImage = NULL;
+-	src = RTMP_FIRMWARE_FILE_NAME;
+-
+-	/* save uid and gid used for filesystem access.
+-	   set user and group to 0 (root) */
+-	orgfsuid = current->fsuid;
+-	orgfsgid = current->fsgid;
+-	current->fsuid = current->fsgid = 0;
+-    orgfs = get_fs();
+-    set_fs(KERNEL_DS);
+-
+-	pAd->FirmwareVersion = (FIRMWARE_MAJOR_VERSION << 8) + \
+-						   FIRMWARE_MINOR_VERSION;
+-
+-
+-	/* allocate firmware buffer */
+-    pFirmwareImage = kmalloc(MAX_FIRMWARE_IMAGE_SIZE, MEM_ALLOC_FLAG);
+-    if (pFirmwareImage == NULL)
+-	{
+-		/* allocate fail, use default firmware array in firmware.h */
+-		printk("%s - Allocate memory fail!\n", __func__);
+-		NICLF_DEFAULT_USE();
+-    }
+-	else
+-	{
+-		/* allocate ok! zero the firmware buffer */
+-		memset(pFirmwareImage, 0x00, MAX_FIRMWARE_IMAGE_SIZE);
+-	} /* End of if */
+-
+-
+-	/* if ok, read firmware file from *.bin file */
+-	if (flg_default_firm_use == FALSE)
+-	{
+-		do
+-		{
+-			/* open the bin file */
+-			srcf = filp_open(src, O_RDONLY, 0);
+-
+-			if (IS_ERR(srcf))
+-			{
+-				printk("%s - Error %ld opening %s\n",
+-					   __func__, -PTR_ERR(srcf), src);
+-				NICLF_DEFAULT_USE();
+-				break;
+-			} /* End of if */
+-
+-			/* the object must have a read method */
+-			if ((srcf->f_op == NULL) || (srcf->f_op->read == NULL))
+-			{
+-				printk("%s - %s does not have a write method\n", __func__, src);
+-				NICLF_DEFAULT_USE();
+-				break;
+-			} /* End of if */
+-
+-			/* read the firmware from the file *.bin */
+-			FileLength = srcf->f_op->read(srcf,
+-										  pFirmwareImage,
+-										  MAX_FIRMWARE_IMAGE_SIZE,
+-										  &srcf->f_pos);
+-
+-			if (FileLength != MAX_FIRMWARE_IMAGE_SIZE)
+-			{
+-				printk("%s: error file length (=%d) in RT2860AP.BIN\n",
+-					   __func__, FileLength);
+-				NICLF_DEFAULT_USE();
+-				break;
+-			}
+-			else
+-			{
+-				PUCHAR ptr = pFirmwareImage;
+-				USHORT crc = 0xffff;
++	const struct firmware *fw;
++	int ret, i;
++	NDIS_STATUS Status = NDIS_STATUS_SUCCESS;
+ 
++	ret = request_firmware(&fw, FW_FILENAME,
++			       &((POS_COOKIE)pAd->OS_Cookie)->pci_dev->dev);
++	if (ret) {
++		printk(KERN_ERR "rt2860sta: firmware file %s request failed (%d)\n",
++		       FW_FILENAME, ret);
++		goto fail;
++	}
+ 
+-				/* calculate firmware CRC */
+-				for(i=0; i<(MAX_FIRMWARE_IMAGE_SIZE-2); i++, ptr++)
+-					crc = ByteCRC16(bitrev8(*ptr), crc);
+-				/* End of for */
++	if (fw->size != MAX_FIRMWARE_IMAGE_SIZE) {
++		printk(KERN_ERR "rt2860sta: firmware file %s size is wrong\n",
++		       FW_FILENAME);
++		goto fail;
++	}
+ 
+-				if ((pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-2] != \
+-								(UCHAR)bitrev8((UCHAR)(crc>>8))) ||
+-					(pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-1] != \
+-								(UCHAR)bitrev8((UCHAR)crc)))
+-				{
+-					/* CRC fail */
+-					printk("%s: CRC = 0x%02x 0x%02x "
+-						   "error, should be 0x%02x 0x%02x\n",
+-						   __func__,
+-						   pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-2],
+-						   pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-1],
+-						   (UCHAR)(crc>>8), (UCHAR)(crc));
+-					NICLF_DEFAULT_USE();
+-					break;
+-				}
+-				else
+-				{
+-					/* firmware is ok */
+-					pAd->FirmwareVersion = \
+-						(pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-4] << 8) +
+-						pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-3];
+-
+-					/* check if firmware version of the file is too old */
+-					if ((pAd->FirmwareVersion) < \
+-											((FIRMWARE_MAJOR_VERSION << 8) +
+-									  	 	 FIRMWARE_MINOR_VERSION))
+-					{
+-						printk("%s: firmware version too old!\n", __func__);
+-						NICLF_DEFAULT_USE();
+-						break;
+-					} /* End of if */
+-				} /* End of if */
+-
+-				DBGPRINT(RT_DEBUG_TRACE,
+-						 ("NICLoadFirmware: CRC ok, ver=%d.%d\n",
+-						  pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-4],
+-						  pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-3]));
+-			} /* End of if (FileLength == MAX_FIRMWARE_IMAGE_SIZE) */
+-			break;
+-		} while(TRUE);
++	/* is it new enough? */
++	pAd->FirmwareVersion = (fw->data[fw->size - 4] << 8 |
++				fw->data[fw->size - 3]);
+ 
+-		/* close firmware file */
+-		if (IS_ERR(srcf))
+-			;
+-		else
+-		{
+-			retval = filp_close(srcf, NULL);
+-			if (retval)
+-			{
+-				DBGPRINT(RT_DEBUG_ERROR,
+-						 ("--> Error %d closing %s\n", -retval, src));
+-			} /* End of if */
+-		} /* End of if */
+-	} /* End of if */
++	if (pAd->FirmwareVersion <
++	    (FIRMWARE_MAJOR_VERSION << 8 | FIRMWARE_MINOR_VERSION)) {
++		printk(KERN_ERR "rt2860sta: firmware file %s is too old\n",
++		       FW_FILENAME);
++		goto fail;
++	}
+ 
++	/* is the internal CRC correct? */
++	if (crc_itu_t_bitreversed(0xffff, fw->data, fw->size - 2) !=
++	    (bitrev8(fw->data[fw->size - 2]) << 8 |
++	     bitrev8(fw->data[fw->size - 1]))) {
++		/* CRC fail */
++		printk(KERN_ERR "rt2860sta: firmware file %s failed internal CRC\n",
++		       FW_FILENAME);
++		goto fail;
++	}
+ 
+ 	/* write firmware to ASIC */
+-	if (flg_default_firm_use == TRUE)
+-	{
+-		/* use default fimeware, free allocated buffer */
+-		if (pFirmwareImage != NULL)
+-			kfree(pFirmwareImage);
+-		/* End of if */
+-
+-		/* use default *.bin array */
+-		pFirmwareImage = FirmwareImage;
+-		FileLength = sizeof(FirmwareImage);
+-	} /* End of if */
+ 
+ 	/* enable Host program ram write selection */
+ 	RTMP_IO_WRITE32(pAd, PBF_SYS_CTRL, 0x10000);
+ 
+-	for(i=0; i<FileLength; i+=4)
+-	{
+-		firm = pFirmwareImage[i] +
+-			   (pFirmwareImage[i+3] << 24) +
+-			   (pFirmwareImage[i+2] << 16) +
+-			   (pFirmwareImage[i+1] << 8);
+-
++	for (i = 0; i < fw->size; i += 4) {
++		u32 firm = le32_to_cpup((const __le32 *)(fw->data + i));
+ 		RTMP_IO_WRITE32(pAd, FIRMWARE_IMAGE_BASE + i, firm);
+-	} /* End of for */
++	}
+ 
+ 	RTMP_IO_WRITE32(pAd, PBF_SYS_CTRL, 0x00000);
+ 	RTMP_IO_WRITE32(pAd, PBF_SYS_CTRL, 0x00001);
+@@ -2831,51 +2659,38 @@ NDIS_STATUS NICLoadFirmware(
+ 	RTMP_IO_WRITE32(pAd, H2M_BBP_AGENT, 0);
+ 	RTMP_IO_WRITE32(pAd, H2M_MAILBOX_CSR, 0);
+ 
+-	if (flg_default_firm_use == FALSE)
+-	{
+-		/* use file firmware, free allocated buffer */
+-		if (pFirmwareImage != NULL)
+-			kfree(pFirmwareImage);
+-		/* End of if */
+-	} /* End of if */
+-
+-	set_fs(orgfs);
+-	current->fsuid = orgfsuid;
+-	current->fsgid = orgfsgid;
+-#else
+-
+-	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+-	PUCHAR			pFirmwareImage;
+-	ULONG			FileLength, Index;
+-	//ULONG			firm;
+-	UINT32			MacReg = 0;
++	release_firmware(fw);
+ 
+-	pFirmwareImage = FirmwareImage;
+-	FileLength = sizeof(FirmwareImage);
+-	RT28XX_WRITE_FIRMWARE(pAd, pFirmwareImage, FileLength);
+-#endif
+-
+-	/* check if MCU is ready */
+-	Index = 0;
+-	do
+-	{
++	/* Check if MCU is ready - this may work even if firmware load
++	 * failed: specifically, if firmware was loaded some time ago & the
++	 * device hasn't been powered down since.
++	 * There is the possibility of failure here...
++	 */
++	i = 0;
++	do {
++		UINT32 MacReg;
+ 		RTMP_IO_READ32(pAd, PBF_SYS_CTRL, &MacReg);
+ 
+ 		if (MacReg & 0x80)
+ 			break;
+ 
+ 		RTMPusecDelay(1000);
+-	} while (Index++ < 1000);
++	} while (++i < 1000);
+ 
+-    if (Index >= 1000)
+-	{
++	if (i >= 1000) {
+ 		Status = NDIS_STATUS_FAILURE;
+-		DBGPRINT(RT_DEBUG_ERROR, ("NICLoadFirmware: MCU is not ready\n\n\n"));
+-	} /* End of if */
++		printk(KERN_ERR "rt2860sta: failed to install firmware: MCU is not ready\n");
++	} else if (Status == NDIS_STATUS_SUCCESS) {
++		printk(KERN_INFO "rt2860sta: firmware loaded\n");
++	}
+ 
+-    DBGPRINT(RT_DEBUG_TRACE,
++	DBGPRINT(RT_DEBUG_TRACE,
+ 			 ("<=== %s (status=%d)\n", __func__, Status));
+-    return Status;
++	return Status;
++
++fail:
++	release_firmware(fw);
++	return NDIS_STATUS_FAILURE;
+ } /* End of NICLoadFirmware */
+ 
+ 
+-- 
+1.5.6.5
+
--- linux-2.6-2.6.30.orig/debian/patches/features/all/bnx2x-driver-version-1.48.105-1.patch
+++ linux-2.6-2.6.30/debian/patches/features/all/bnx2x-driver-version-1.48.105-1.patch
@@ -0,0 +1,30 @@
+From cf0ee91376694cdf023b75c41ed1b1c8c4518479 Mon Sep 17 00:00:00 2001
+From: Vladislav Zolotarov <vladz@broadcom.com>
+Date: Mon, 27 Apr 2009 03:28:25 -0700
+Subject: [PATCH 2/2] bnx2x: driver version 1.48.105-1
+
+Signed-off-by: Vladislav Zolotarov <vladz@broadcom.com>
+Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/bnx2x_main.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/bnx2x_main.c b/drivers/net/bnx2x_main.c
+index cdc80e0..a669bb7 100644
+--- a/drivers/net/bnx2x_main.c
++++ b/drivers/net/bnx2x_main.c
+@@ -56,8 +56,8 @@
+ #include "bnx2x_init_ops.h"
+ #include "bnx2x_dump.h"
+ 
+-#define DRV_MODULE_VERSION	"1.48.105"
+-#define DRV_MODULE_RELDATE	"2009/03/02"
++#define DRV_MODULE_VERSION	"1.48.105-1"
++#define DRV_MODULE_RELDATE	"2009/04/22"
+ #define BNX2X_BC_VER		0x040200
+ 
+ #include <linux/firmware.h>
+-- 
+1.6.2.3
+
--- linux-2.6-2.6.30.orig/debian/patches/features/all/drivers-staging-rt2870sta-request_firmware.patch
+++ linux-2.6-2.6.30/debian/patches/features/all/drivers-staging-rt2870sta-request_firmware.patch
@@ -0,0 +1,479 @@
+From 18a11dab81150451495bed8694cd0aec7d5a1575 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sun, 12 Apr 2009 20:53:26 +0100
+Subject: [PATCH] rt2870sta: Use the firmware loader interface and library CRC code
+
+Based on Darren Salt's work for rt2860sta.
+---
+ drivers/staging/rt2870/Kconfig            |    3 +-
+ drivers/staging/rt2870/common/rtmp_init.c |  385 ++++++-----------------------
+ 2 files changed, 76 insertions(+), 312 deletions(-)
+
+diff --git a/drivers/staging/rt2870/Kconfig b/drivers/staging/rt2870/Kconfig
+index cd4f0b6..59d533d 100644
+--- a/drivers/staging/rt2870/Kconfig
++++ b/drivers/staging/rt2870/Kconfig
+@@ -1,7 +1,8 @@
+ config RT2870
+ 	tristate "Ralink 2870 wireless support"
+-	depends on BROKEN
+ 	depends on USB && X86 && WLAN_80211
++	select CRC_ITU_T
++	select FW_LOADER
+ 	---help---
+ 	  This is an experimental driver for the Ralink 2870 wireless chip.
+ 
+diff --git a/drivers/staging/rt2870/common/rtmp_init.c b/drivers/staging/rt2870/common/rtmp_init.c
+index 099b6a8..84fd108 100644
+--- a/drivers/staging/rt2870/common/rtmp_init.c
++++ b/drivers/staging/rt2870/common/rtmp_init.c
+@@ -38,9 +38,8 @@
+     Jan Lee  2006-09-15    RT2860. Change for 802.11n , EEPROM, Led, BA, HT.
+ */
+ #include "../rt_config.h"
+-#include "firmware.h"
+-
+-//#define BIN_IN_FILE /* use *.bin firmware */
++#include <linux/firmware.h>
++#include <linux/crc-itu-t.h>
+ 
+ UCHAR    BIT8[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
+ ULONG    BIT32[] = {0x00000001, 0x00000002, 0x00000004, 0x00000008,
+@@ -54,57 +53,6 @@ ULONG    BIT32[] = {0x00000001, 0x00000002, 0x00000004, 0x00000008,
+ 
+ char*   CipherName[] = {"none","wep64","wep128","TKIP","AES","CKIP64","CKIP128"};
+ 
+-const unsigned short ccitt_16Table[] = {
+-	0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
+-	0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
+-	0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
+-	0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
+-	0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
+-	0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
+-	0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
+-	0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
+-	0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
+-	0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
+-	0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
+-	0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
+-	0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
+-	0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
+-	0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
+-	0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
+-	0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
+-	0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
+-	0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
+-	0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
+-	0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
+-	0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
+-	0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
+-	0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
+-	0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
+-	0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
+-	0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
+-	0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
+-	0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
+-	0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
+-	0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
+-	0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
+-};
+-#define ByteCRC16(v, crc) \
+-	(unsigned short)((crc << 8) ^  ccitt_16Table[((crc >> 8) ^ (v)) & 255])
+-
+-unsigned char BitReverse(unsigned char x)
+-{
+-	int i;
+-	unsigned char Temp=0;
+-	for(i=0; ; i++)
+-	{
+-		if(x & 0x80)	Temp |= 0x80;
+-		if(i==7)		break;
+-		x	<<= 1;
+-		Temp >>= 1;
+-	}
+-	return Temp;
+-}
+-
+ //
+ // BBP register initialization set
+ //
+@@ -237,12 +185,17 @@ RTMP_REG_PAIR	STAMACRegTable[] =	{
+ 
+ // New 8k byte firmware size for RT3071/RT3072
+ #define FIRMWAREIMAGE_MAX_LENGTH	0x2000
+-#define FIRMWAREIMAGE_LENGTH		(sizeof (FirmwareImage) / sizeof(UCHAR))
+ #define FIRMWARE_MAJOR_VERSION	0
+ 
+ #define FIRMWAREIMAGEV1_LENGTH	0x1000
+ #define FIRMWAREIMAGEV2_LENGTH	0x1000
+ 
++#define FW_FILENAME_V1 "rt2870.bin"
++#define FW_FILENAME_V2 "rt3071.bin"
++
++MODULE_FIRMWARE(FW_FILENAME_V1);
++MODULE_FIRMWARE(FW_FILENAME_V2);
++
+ 
+ 
+ /*
+@@ -2743,186 +2696,65 @@ VOID NICEraseFirmware(
+ NDIS_STATUS NICLoadFirmware(
+ 	IN PRTMP_ADAPTER pAd)
+ {
+-#ifdef BIN_IN_FILE
+-#define NICLF_DEFAULT_USE()	\
+-	flg_default_firm_use = TRUE; \
+-	printk("%s - Use default firmware!\n", __func__);
+-
+-	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+-	PUCHAR			src;
+-	struct file		*srcf;
+-	INT 			retval, orgfsuid, orgfsgid, i;
+-   	mm_segment_t	orgfs;
+-	PUCHAR			pFirmwareImage;
+-	UINT			FileLength = 0;
+-	UINT32			MacReg;
+-	ULONG			Index;
+-	ULONG			firm;
+-	BOOLEAN			flg_default_firm_use = FALSE;
+-
+-
+-	DBGPRINT(RT_DEBUG_TRACE, ("===> %s\n", __func__));
+-
+-	/* init */
+-	pFirmwareImage = NULL;
+-	src = RTMP_FIRMWARE_FILE_NAME;
+-
+-	/* save uid and gid used for filesystem access.
+-	   set user and group to 0 (root) */
+-	orgfsuid = current->fsuid;
+-	orgfsgid = current->fsgid;
+-	current->fsuid = current->fsgid = 0;
+-    orgfs = get_fs();
+-    set_fs(KERNEL_DS);
+-
+-	pAd->FirmwareVersion = (FIRMWARE_MAJOR_VERSION << 8) + \
+-						   FIRMWARE_MINOR_VERSION;
+-
+-
+-	/* allocate firmware buffer */
+-    pFirmwareImage = kmalloc(MAX_FIRMWARE_IMAGE_SIZE, MEM_ALLOC_FLAG);
+-    if (pFirmwareImage == NULL)
+-	{
+-		/* allocate fail, use default firmware array in firmware.h */
+-		printk("%s - Allocate memory fail!\n", __func__);
+-		NICLF_DEFAULT_USE();
+-    }
+-	else
+-	{
+-		/* allocate ok! zero the firmware buffer */
+-		memset(pFirmwareImage, 0x00, MAX_FIRMWARE_IMAGE_SIZE);
+-	} /* End of if */
+-
+-
+-	/* if ok, read firmware file from *.bin file */
+-	if (flg_default_firm_use == FALSE)
+-	{
+-		do
+-		{
+-			/* open the bin file */
+-			srcf = filp_open(src, O_RDONLY, 0);
+-
+-			if (IS_ERR(srcf))
+-			{
+-				printk("%s - Error %ld opening %s\n",
+-					   __func__, -PTR_ERR(srcf), src);
+-				NICLF_DEFAULT_USE();
+-				break;
+-			} /* End of if */
+-
+-			/* the object must have a read method */
+-			if ((srcf->f_op == NULL) || (srcf->f_op->read == NULL))
+-			{
+-				printk("%s - %s does not have a write method\n", __func__, src);
+-				NICLF_DEFAULT_USE();
+-				break;
+-			} /* End of if */
+-
+-			/* read the firmware from the file *.bin */
+-			FileLength = srcf->f_op->read(srcf,
+-										  pFirmwareImage,
+-										  MAX_FIRMWARE_IMAGE_SIZE,
+-										  &srcf->f_pos);
++	unsigned Version = (pAd->MACVersion >> 16);
++	const char *name;
++	size_t required_size;
++	const struct firmware *fw;
++	int ret, i;
++	NDIS_STATUS Status = NDIS_STATUS_SUCCESS;
+ 
+-			if (FileLength != MAX_FIRMWARE_IMAGE_SIZE)
+-			{
+-				printk("%s: error file length (=%d) in RT2860AP.BIN\n",
+-					   __func__, FileLength);
+-				NICLF_DEFAULT_USE();
+-				break;
+-			}
+-			else
+-			{
+-				PUCHAR ptr = pFirmwareImage;
+-				USHORT crc = 0xffff;
++	if (Version == 0x2860 || Version == 0x2872 || Version == 0x3070) {
++		name = FW_FILENAME_V1;
++		required_size = FIRMWAREIMAGEV1_LENGTH;
++	} else {
++		name = FW_FILENAME_V2;
++		required_size = FIRMWAREIMAGEV2_LENGTH;
++	}
+ 
++	ret = request_firmware(&fw, name,
++			       &((POS_COOKIE)pAd->OS_Cookie)->pUsb_Dev->dev);
++	if (ret) {
++		printk(KERN_ERR "rt2870sta: firmware file %s request failed (%d)\n",
++		       name, ret);
++		goto fail;
++	}
+ 
+-				/* calculate firmware CRC */
+-				for(i=0; i<(MAX_FIRMWARE_IMAGE_SIZE-2); i++, ptr++)
+-					crc = ByteCRC16(BitReverse(*ptr), crc);
+-				/* End of for */
++	if (fw->size != required_size) {
++		printk(KERN_ERR "rt2870sta: firmware file %s size is wrong\n",
++		       name);
++		goto fail;
++	}
+ 
+-				if ((pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-2] != \
+-								(UCHAR)BitReverse((UCHAR)(crc>>8))) ||
+-					(pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-1] != \
+-								(UCHAR)BitReverse((UCHAR)crc)))
+-				{
+-					/* CRC fail */
+-					printk("%s: CRC = 0x%02x 0x%02x "
+-						   "error, should be 0x%02x 0x%02x\n",
+-						   __func__,
+-						   pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-2],
+-						   pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-1],
+-						   (UCHAR)(crc>>8), (UCHAR)(crc));
+-					NICLF_DEFAULT_USE();
+-					break;
+-				}
+-				else
+-				{
+-					/* firmware is ok */
+-					pAd->FirmwareVersion = \
+-						(pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-4] << 8) +
+-						pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-3];
+-
+-					/* check if firmware version of the file is too old */
+-					if ((pAd->FirmwareVersion) < \
+-											((FIRMWARE_MAJOR_VERSION << 8) +
+-									  	 	 FIRMWARE_MINOR_VERSION))
+-					{
+-						printk("%s: firmware version too old!\n", __func__);
+-						NICLF_DEFAULT_USE();
+-						break;
+-					} /* End of if */
+-				} /* End of if */
+-
+-				DBGPRINT(RT_DEBUG_TRACE,
+-						 ("NICLoadFirmware: CRC ok, ver=%d.%d\n",
+-						  pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-4],
+-						  pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-3]));
+-			} /* End of if (FileLength == MAX_FIRMWARE_IMAGE_SIZE) */
+-			break;
+-		} while(TRUE);
++	/* is it new enough? */
++	pAd->FirmwareVersion = (fw->data[fw->size - 4] << 8 |
++				fw->data[fw->size - 3]);
+ 
+-		/* close firmware file */
+-		if (IS_ERR(srcf))
+-			;
+-		else
+-		{
+-			retval = filp_close(srcf, NULL);
+-			if (retval)
+-			{
+-				DBGPRINT(RT_DEBUG_ERROR,
+-						 ("--> Error %d closing %s\n", -retval, src));
+-			} /* End of if */
+-		} /* End of if */
+-	} /* End of if */
++	if (pAd->FirmwareVersion <
++	    (FIRMWARE_MAJOR_VERSION << 8 | FIRMWARE_MINOR_VERSION)) {
++		printk(KERN_ERR "rt2870sta: firmware file %s is too old\n",
++		       name);
++		goto fail;
++	}
+ 
++	/* is the internal CRC correct? */
++	if (crc_itu_t_bitreversed(0xffff, fw->data, fw->size - 2) !=
++	    (bitrev8(fw->data[fw->size - 2]) << 8 |
++	     bitrev8(fw->data[fw->size - 1]))) {
++		/* CRC fail */
++		printk(KERN_ERR "rt2870sta: firmware file %s failed internal CRC\n",
++		       name);
++		goto fail;
++	}
+ 
+ 	/* write firmware to ASIC */
+-	if (flg_default_firm_use == TRUE)
+-	{
+-		/* use default fimeware, free allocated buffer */
+-		if (pFirmwareImage != NULL)
+-			kfree(pFirmwareImage);
+-		/* End of if */
+-
+-		/* use default *.bin array */
+-		pFirmwareImage = FirmwareImage;
+-		FileLength = sizeof(FirmwareImage);
+-	} /* End of if */
+ 
+ 	/* enable Host program ram write selection */
+ 	RTMP_IO_WRITE32(pAd, PBF_SYS_CTRL, 0x10000);
+ 
+-	for(i=0; i<FileLength; i+=4)
+-	{
+-		firm = pFirmwareImage[i] +
+-			   (pFirmwareImage[i+3] << 24) +
+-			   (pFirmwareImage[i+2] << 16) +
+-			   (pFirmwareImage[i+1] << 8);
+-
++	for (i = 0; i < fw->size; i += 4) {
++		u32 firm = le32_to_cpup((const __le32 *)(fw->data + i));
+ 		RTMP_IO_WRITE32(pAd, FIRMWARE_IMAGE_BASE + i, firm);
+-	} /* End of for */
++	}
+ 
+ 	RTMP_IO_WRITE32(pAd, PBF_SYS_CTRL, 0x00000);
+ 	RTMP_IO_WRITE32(pAd, PBF_SYS_CTRL, 0x00001);
+@@ -2931,105 +2763,36 @@ NDIS_STATUS NICLoadFirmware(
+ 	RTMP_IO_WRITE32(pAd, H2M_BBP_AGENT, 0);
+ 	RTMP_IO_WRITE32(pAd, H2M_MAILBOX_CSR, 0);
+ 
+-	if (flg_default_firm_use == FALSE)
+-	{
+-		/* use file firmware, free allocated buffer */
+-		if (pFirmwareImage != NULL)
+-			kfree(pFirmwareImage);
+-		/* End of if */
+-	} /* End of if */
+-
+-	set_fs(orgfs);
+-	current->fsuid = orgfsuid;
+-	current->fsgid = orgfsgid;
+-#else
+-
+-	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+-	PUCHAR			pFirmwareImage;
+-	ULONG			FileLength, Index;
+-	//ULONG			firm;
+-	UINT32			MacReg = 0;
+-#ifdef RT2870
+-	UINT32			Version = (pAd->MACVersion >> 16);
+-#endif // RT2870 //
+-
+-	pFirmwareImage = FirmwareImage;
+-	FileLength = sizeof(FirmwareImage);
+-#ifdef RT2870
+-	// New 8k byte firmware size for RT3071/RT3072
+-	//printk("Usb Chip\n");
+-	if (FIRMWAREIMAGE_LENGTH == FIRMWAREIMAGE_MAX_LENGTH)
+-	//The firmware image consists of two parts. One is the origianl and the other is the new.
+-	//Use Second Part
+-	{
+-		if ((Version != 0x2860) && (Version != 0x2872) && (Version != 0x3070))
+-		{	// Use Firmware V2.
+-			//printk("KH:Use New Version,part2\n");
+-			pFirmwareImage = (PUCHAR)&FirmwareImage[FIRMWAREIMAGEV1_LENGTH];
+-			FileLength = FIRMWAREIMAGEV2_LENGTH;
+-		}
+-		else
+-		{
+-			//printk("KH:Use New Version,part1\n");
+-			pFirmwareImage = FirmwareImage;
+-			FileLength = FIRMWAREIMAGEV1_LENGTH;
+-		}
+-	}
+-	else
+-	{
+-		DBGPRINT(RT_DEBUG_ERROR, ("KH: bin file should be 8KB.\n"));
+-		Status = NDIS_STATUS_FAILURE;
+-	}
++	release_firmware(fw);
+ 
+-#endif // RT2870 //
+-
+-#if 0
+-	/* enable Host program ram write selection */
+-	RT28XX_FIRMUD_INIT(pAd);
+-
+-	for(i=0; i<FileLength; i+=4)
+-	{
+-		firm = pFirmwareImage[i] +
+-			   (pFirmwareImage[i+3] << 24) +
+-			   (pFirmwareImage[i+2] << 16) +
+-			   (pFirmwareImage[i+1] << 8);
+-
+-		RTMP_IO_WRITE32(pAd, FIRMWARE_IMAGE_BASE + i, firm);
+-	} /* End of for */
+-
+-	RT28XX_FIRMUD_END(pAd);
+-#else
+-	RT28XX_WRITE_FIRMWARE(pAd, pFirmwareImage, FileLength);
+-#endif
+-
+-#endif
+-
+-	/* check if MCU is ready */
+-	Index = 0;
+-	do
+-	{
++	/* Check if MCU is ready - this may work even if firmware load
++	 * failed: specifically, if firmware was loaded some time ago & the
++	 * device hasn't been powered down since.
++	 * There is the possibility of failure here...
++	 */
++	i = 0;
++	do {
++		UINT32 MacReg;
+ 		RTMP_IO_READ32(pAd, PBF_SYS_CTRL, &MacReg);
+ 
+ 		if (MacReg & 0x80)
+ 			break;
+ 
+ 		RTMPusecDelay(1000);
+-	} while (Index++ < 1000);
++	} while (++i < 1000);
+ 
+-    if (Index >= 1000)
+-	{
++	if (i >= 1000) {
+ 		Status = NDIS_STATUS_FAILURE;
+-		DBGPRINT(RT_DEBUG_ERROR, ("NICLoadFirmware: MCU is not ready\n\n\n"));
++		printk(KERN_ERR "rt2870sta: failed to install firmware: MCU is not ready\n");
+ 	} /* End of if */
+ 
+-#if 0
+-    DBGPRINT(RT_DEBUG_TRACE,
+-			 ("<=== %s (src=%s, status=%d)\n", __func__, src, Status));
+-#else
+-    DBGPRINT(RT_DEBUG_TRACE,
+-			 ("<=== %s (status=%d)\n", __func__, Status));
+-#endif
+-    return Status;
++	DBGPRINT(RT_DEBUG_TRACE,
++		 ("<=== %s (status=%d)\n", __func__, Status));
++	return Status;
++
++fail:
++	release_firmware(fw);
++	return NDIS_STATUS_FAILURE;
+ } /* End of NICLoadFirmware */
+ 
+ 
+-- 
+1.5.6.5
+
--- linux-2.6-2.6.30.orig/debian/patches/features/all/export-unionfs-symbols.patch
+++ linux-2.6-2.6.30/debian/patches/features/all/export-unionfs-symbols.patch
@@ -0,0 +1,11 @@
+diff -Naurp linux-2.6.orig/fs/namei.c linux-2.6/fs/namei.c
+--- linux-2.6.orig/fs/namei.c	2008-01-24 22:58:37.000000000 +0000
++++ linux-2.6/fs/namei.c	2008-02-11 19:53:38.000000000 +0000
+@@ -389,6 +389,7 @@ void release_open_intent(struct nameidat
+ 	else
+ 		fput(nd->intent.open.file);
+ }
++EXPORT_SYMBOL_GPL(release_open_intent);
+ 
+ static inline struct dentry *
+ do_revalidate(struct dentry *dentry, struct nameidata *nd)
--- linux-2.6-2.6.30.orig/debian/patches/features/all/drivers-gpu-drm-mga-request_firmware.patch
+++ linux-2.6-2.6.30/debian/patches/features/all/drivers-gpu-drm-mga-request_firmware.patch
@@ -0,0 +1,295 @@
+From 0175b4bdefff22f837203fd47f568c4647f24a4f Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sat, 18 Oct 2008 04:28:10 +0100
+Subject: [PATCH 18/24] mga: Use request_firmware() to load microcode
+
+Image format is IHEX, one record for each pipe in order (record
+addresses are ignored).
+
+Compile-tested only.
+---
+ drivers/gpu/drm/Kconfig        |    2 +-
+ drivers/gpu/drm/mga/mga_dma.c  |    4 +-
+ drivers/gpu/drm/mga/mga_drv.h  |    1 -
+ drivers/gpu/drm/mga/mga_warp.c |  180 +++++++++++++++++-----------------------
+ include/drm/mga_drm.h          |    2 +-
+ 5 files changed, 82 insertions(+), 107 deletions(-)
+
+diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
+index 853814c..a61d10a 100644
+--- a/drivers/gpu/drm/Kconfig
++++ b/drivers/gpu/drm/Kconfig
+@@ -81,7 +81,7 @@ endchoice
+ config DRM_MGA
+ 	tristate "Matrox g200/g400"
+ 	depends on DRM
+-	depends on BROKEN
++	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/mga/mga_dma.c b/drivers/gpu/drm/mga/mga_dma.c
+index b49c5ff..7e0b106 100644
+--- a/drivers/gpu/drm/mga/mga_dma.c
++++ b/drivers/gpu/drm/mga/mga_dma.c
+@@ -447,7 +447,7 @@ static int mga_do_agp_dma_bootstrap(struct drm_device * dev,
+ {
+ 	drm_mga_private_t *const dev_priv =
+ 	    (drm_mga_private_t *) dev->dev_private;
+-	unsigned int warp_size = mga_warp_microcode_size(dev_priv);
++	unsigned int warp_size = MGA_WARP_UCODE_SIZE;
+ 	int err;
+ 	unsigned offset;
+ 	const unsigned secondary_size = dma_bs->secondary_bin_count
+@@ -622,7 +622,7 @@ static int mga_do_pci_dma_bootstrap(struct drm_device * dev,
+ {
+ 	drm_mga_private_t *const dev_priv =
+ 	    (drm_mga_private_t *) dev->dev_private;
+-	unsigned int warp_size = mga_warp_microcode_size(dev_priv);
++	unsigned int warp_size = MGA_WARP_UCODE_SIZE;
+ 	unsigned int primary_size;
+ 	unsigned int bin_count;
+ 	int err;
+diff --git a/drivers/gpu/drm/mga/mga_drv.h b/drivers/gpu/drm/mga/mga_drv.h
+index 88257c2..9e40226 100644
+--- a/drivers/gpu/drm/mga/mga_drv.h
++++ b/drivers/gpu/drm/mga/mga_drv.h
+@@ -177,7 +177,6 @@ extern void mga_do_dma_wrap_end(drm_mga_private_t * dev_priv);
+ extern int mga_freelist_put(struct drm_device * dev, struct drm_buf * buf);
+ 
+ 				/* mga_warp.c */
+-extern unsigned int mga_warp_microcode_size(const drm_mga_private_t * dev_priv);
+ extern int mga_warp_install_microcode(drm_mga_private_t * dev_priv);
+ extern int mga_warp_init(drm_mga_private_t * dev_priv);
+ 
+diff --git a/drivers/gpu/drm/mga/mga_warp.c b/drivers/gpu/drm/mga/mga_warp.c
+index 651b93c..9aad484 100644
+--- a/drivers/gpu/drm/mga/mga_warp.c
++++ b/drivers/gpu/drm/mga/mga_warp.c
+@@ -27,132 +27,108 @@
+  *    Gareth Hughes <gareth@valinux.com>
+  */
+ 
++#include <linux/firmware.h>
++#include <linux/ihex.h>
++#include <linux/platform_device.h>
++
+ #include "drmP.h"
+ #include "drm.h"
+ #include "mga_drm.h"
+ #include "mga_drv.h"
+-#include "mga_ucode.h"
++
++#define FIRMWARE_G200 "matrox/g200_warp.fw"
++#define FIRMWARE_G400 "matrox/g400_warp.fw"
++
++MODULE_FIRMWARE(FIRMWARE_G200);
++MODULE_FIRMWARE(FIRMWARE_G400);
+ 
+ #define MGA_WARP_CODE_ALIGN		256	/* in bytes */
+ 
+-#define WARP_UCODE_SIZE( which )					\
+-	((sizeof(which) / MGA_WARP_CODE_ALIGN + 1) * MGA_WARP_CODE_ALIGN)
+-
+-#define WARP_UCODE_INSTALL( which, where )				\
+-do {									\
+-	DRM_DEBUG( " pcbase = 0x%08lx  vcbase = %p\n", pcbase, vcbase );\
+-	dev_priv->warp_pipe_phys[where] = pcbase;			\
+-	memcpy( vcbase, which, sizeof(which) );				\
+-	pcbase += WARP_UCODE_SIZE( which );				\
+-	vcbase += WARP_UCODE_SIZE( which );				\
+-} while (0)
+-
+-static const unsigned int mga_warp_g400_microcode_size =
+-    (WARP_UCODE_SIZE(warp_g400_tgz) +
+-     WARP_UCODE_SIZE(warp_g400_tgza) +
+-     WARP_UCODE_SIZE(warp_g400_tgzaf) +
+-     WARP_UCODE_SIZE(warp_g400_tgzf) +
+-     WARP_UCODE_SIZE(warp_g400_tgzs) +
+-     WARP_UCODE_SIZE(warp_g400_tgzsa) +
+-     WARP_UCODE_SIZE(warp_g400_tgzsaf) +
+-     WARP_UCODE_SIZE(warp_g400_tgzsf) +
+-     WARP_UCODE_SIZE(warp_g400_t2gz) +
+-     WARP_UCODE_SIZE(warp_g400_t2gza) +
+-     WARP_UCODE_SIZE(warp_g400_t2gzaf) +
+-     WARP_UCODE_SIZE(warp_g400_t2gzf) +
+-     WARP_UCODE_SIZE(warp_g400_t2gzs) +
+-     WARP_UCODE_SIZE(warp_g400_t2gzsa) +
+-     WARP_UCODE_SIZE(warp_g400_t2gzsaf) + WARP_UCODE_SIZE(warp_g400_t2gzsf));
+-
+-static const unsigned int mga_warp_g200_microcode_size =
+-    (WARP_UCODE_SIZE(warp_g200_tgz) +
+-     WARP_UCODE_SIZE(warp_g200_tgza) +
+-     WARP_UCODE_SIZE(warp_g200_tgzaf) +
+-     WARP_UCODE_SIZE(warp_g200_tgzf) +
+-     WARP_UCODE_SIZE(warp_g200_tgzs) +
+-     WARP_UCODE_SIZE(warp_g200_tgzsa) +
+-     WARP_UCODE_SIZE(warp_g200_tgzsaf) + WARP_UCODE_SIZE(warp_g200_tgzsf));
+-
+-unsigned int mga_warp_microcode_size(const drm_mga_private_t * dev_priv)
++#define WARP_UCODE_SIZE(size)		ALIGN(size, MGA_WARP_CODE_ALIGN)
++
++int mga_warp_install_microcode(drm_mga_private_t * dev_priv)
+ {
++	unsigned char *vcbase = dev_priv->warp->handle;
++	unsigned long pcbase = dev_priv->warp->offset;
++	const char *firmware_name;
++	struct platform_device *pdev;
++	const struct firmware *fw = NULL;
++	const struct ihex_binrec *rec;
++	unsigned int size;
++	int n_pipes, where;
++	int rc = 0;
++
+ 	switch (dev_priv->chipset) {
+ 	case MGA_CARD_TYPE_G400:
+ 	case MGA_CARD_TYPE_G550:
+-		return PAGE_ALIGN(mga_warp_g400_microcode_size);
++		firmware_name = FIRMWARE_G400;
++		n_pipes = MGA_MAX_G400_PIPES;
++		break;
+ 	case MGA_CARD_TYPE_G200:
+-		return PAGE_ALIGN(mga_warp_g200_microcode_size);
++		firmware_name = FIRMWARE_G200;
++		n_pipes = MGA_MAX_G200_PIPES;
++		break;
+ 	default:
+-		return 0;
++		return -EINVAL;
+ 	}
+-}
+-
+-static int mga_warp_install_g400_microcode(drm_mga_private_t * dev_priv)
+-{
+-	unsigned char *vcbase = dev_priv->warp->handle;
+-	unsigned long pcbase = dev_priv->warp->offset;
+-
+-	memset(dev_priv->warp_pipe_phys, 0, sizeof(dev_priv->warp_pipe_phys));
+-
+-	WARP_UCODE_INSTALL(warp_g400_tgz, MGA_WARP_TGZ);
+-	WARP_UCODE_INSTALL(warp_g400_tgzf, MGA_WARP_TGZF);
+-	WARP_UCODE_INSTALL(warp_g400_tgza, MGA_WARP_TGZA);
+-	WARP_UCODE_INSTALL(warp_g400_tgzaf, MGA_WARP_TGZAF);
+-	WARP_UCODE_INSTALL(warp_g400_tgzs, MGA_WARP_TGZS);
+-	WARP_UCODE_INSTALL(warp_g400_tgzsf, MGA_WARP_TGZSF);
+-	WARP_UCODE_INSTALL(warp_g400_tgzsa, MGA_WARP_TGZSA);
+-	WARP_UCODE_INSTALL(warp_g400_tgzsaf, MGA_WARP_TGZSAF);
+-
+-	WARP_UCODE_INSTALL(warp_g400_t2gz, MGA_WARP_T2GZ);
+-	WARP_UCODE_INSTALL(warp_g400_t2gzf, MGA_WARP_T2GZF);
+-	WARP_UCODE_INSTALL(warp_g400_t2gza, MGA_WARP_T2GZA);
+-	WARP_UCODE_INSTALL(warp_g400_t2gzaf, MGA_WARP_T2GZAF);
+-	WARP_UCODE_INSTALL(warp_g400_t2gzs, MGA_WARP_T2GZS);
+-	WARP_UCODE_INSTALL(warp_g400_t2gzsf, MGA_WARP_T2GZSF);
+-	WARP_UCODE_INSTALL(warp_g400_t2gzsa, MGA_WARP_T2GZSA);
+-	WARP_UCODE_INSTALL(warp_g400_t2gzsaf, MGA_WARP_T2GZSAF);
+-
+-	return 0;
+-}
+-
+-static int mga_warp_install_g200_microcode(drm_mga_private_t * dev_priv)
+-{
+-	unsigned char *vcbase = dev_priv->warp->handle;
+-	unsigned long pcbase = dev_priv->warp->offset;
+-
+-	memset(dev_priv->warp_pipe_phys, 0, sizeof(dev_priv->warp_pipe_phys));
+-
+-	WARP_UCODE_INSTALL(warp_g200_tgz, MGA_WARP_TGZ);
+-	WARP_UCODE_INSTALL(warp_g200_tgzf, MGA_WARP_TGZF);
+-	WARP_UCODE_INSTALL(warp_g200_tgza, MGA_WARP_TGZA);
+-	WARP_UCODE_INSTALL(warp_g200_tgzaf, MGA_WARP_TGZAF);
+-	WARP_UCODE_INSTALL(warp_g200_tgzs, MGA_WARP_TGZS);
+-	WARP_UCODE_INSTALL(warp_g200_tgzsf, MGA_WARP_TGZSF);
+-	WARP_UCODE_INSTALL(warp_g200_tgzsa, MGA_WARP_TGZSA);
+-	WARP_UCODE_INSTALL(warp_g200_tgzsaf, MGA_WARP_TGZSAF);
+ 
+-	return 0;
+-}
++	pdev = platform_device_register_simple("mga_warp", 0, NULL, 0);
++	if (IS_ERR(pdev)) {
++		DRM_ERROR("mga: Failed to register microcode\n");
++		return PTR_ERR(pdev);
++	}
++	rc = request_ihex_firmware(&fw, firmware_name, &pdev->dev);
++	platform_device_unregister(pdev);
++	if (rc) {
++		DRM_ERROR("mga: Failed to load microcode \"%s\"\n",
++			  firmware_name);
++		return rc;
++	}
+ 
+-int mga_warp_install_microcode(drm_mga_private_t * dev_priv)
+-{
+-	const unsigned int size = mga_warp_microcode_size(dev_priv);
++	size = 0;
++	where = 0;
++	for (rec = (const struct ihex_binrec *)fw->data;
++	     rec;
++	     rec = ihex_next_binrec(rec)) {
++		size += WARP_UCODE_SIZE(be16_to_cpu(rec->len));
++		where++;
++	}
+ 
++	if (where != n_pipes) {
++		DRM_ERROR("mga: Invalid microcode \"%s\"\n", firmware_name);
++		rc = -EINVAL;
++		goto out;
++	}
++	size = PAGE_ALIGN(size);
+ 	DRM_DEBUG("MGA ucode size = %d bytes\n", size);
+ 	if (size > dev_priv->warp->size) {
+ 		DRM_ERROR("microcode too large! (%u > %lu)\n",
+ 			  size, dev_priv->warp->size);
+-		return -ENOMEM;
++		rc = -ENOMEM;
++		goto out;
+ 	}
+ 
+-	switch (dev_priv->chipset) {
+-	case MGA_CARD_TYPE_G400:
+-	case MGA_CARD_TYPE_G550:
+-		return mga_warp_install_g400_microcode(dev_priv);
+-	case MGA_CARD_TYPE_G200:
+-		return mga_warp_install_g200_microcode(dev_priv);
+-	default:
+-		return -EINVAL;
++	memset(dev_priv->warp_pipe_phys, 0, sizeof(dev_priv->warp_pipe_phys));
++
++	where = 0;
++	for (rec = (const struct ihex_binrec *)fw->data;
++	     rec;
++	     rec = ihex_next_binrec(rec)) {
++		unsigned int src_size, dst_size;
++
++		DRM_DEBUG(" pcbase = 0x%08lx  vcbase = %p\n", pcbase, vcbase);
++		dev_priv->warp_pipe_phys[where] = pcbase;
++		src_size = be16_to_cpu(rec->len);
++		dst_size = WARP_UCODE_SIZE(src_size);
++		memcpy(vcbase, rec->data, src_size);
++		pcbase += dst_size;
++		vcbase += dst_size;
++		where++;
+ 	}
++
++out:
++	release_firmware(fw);
++	return rc;
+ }
+ 
+ #define WMISC_EXPECTED		(MGA_WUCODECACHE_ENABLE | MGA_WMASTER_ENABLE)
+diff --git a/include/drm/mga_drm.h b/include/drm/mga_drm.h
+index 944b50a..0b8fc27 100644
+--- a/include/drm/mga_drm.h
++++ b/include/drm/mga_drm.h
+@@ -69,7 +69,7 @@
+ #define MGA_MAX_G200_PIPES	8	/* no multitex */
+ #define MGA_MAX_G400_PIPES	16
+ #define MGA_MAX_WARP_PIPES	MGA_MAX_G400_PIPES
+-#define MGA_WARP_UCODE_SIZE	32768	/* in bytes */
++#define MGA_WARP_UCODE_SIZE	40960	/* in bytes */
+ 
+ #define MGA_CARD_TYPE_G200	1
+ #define MGA_CARD_TYPE_G400	2
+-- 
+1.6.1.3
+
--- linux-2.6-2.6.30.orig/debian/patches/features/all/bnx2x-Separated-FW-from-the-source.patch
+++ linux-2.6-2.6.30/debian/patches/features/all/bnx2x-Separated-FW-from-the-source.patch
@@ -0,0 +1,1876 @@
+From 08fa4f9f5ec207b19f950662e247fea584dc21c4 Mon Sep 17 00:00:00 2001
+From: Vladislav Zolotarov <vladz@broadcom.com>
+Date: Mon, 27 Apr 2009 03:27:43 -0700
+Subject: [PATCH 1/2] bnx2x: Separated FW from the source.
+
+>From now on FW will be downloaded from the binary file using request_firmware.
+
+There will be different files for every supported chip. Currently 57710 (e1) and
+57711 (e1h).
+
+File names have the following format: bnx2x-<chip version>-<FW version>.fw.
+ihex versions of current FW files are submitted in the next patch.
+
+Each binary file has a header in the following format:
+
+struct bnx2x_fw_file_section {
+	__be32 len;
+	__be32 offset;
+}
+
+struct bnx2x_fw_file_hdr {
+	struct bnx2x_fw_file_section init_ops;
+	struct bnx2x_fw_file_section init_ops_offsets;
+	struct bnx2x_fw_file_section init_data;
+	struct bnx2x_fw_file_section tsem_int_table_data;
+	struct bnx2x_fw_file_section tsem_pram_data;
+	struct bnx2x_fw_file_section usem_int_table_data;
+	struct bnx2x_fw_file_section usem_pram_data;
+	struct bnx2x_fw_file_section csem_int_table_data;
+	struct bnx2x_fw_file_section csem_pram_data;
+	struct bnx2x_fw_file_section xsem_int_table_data;
+	struct bnx2x_fw_file_section xsem_pram_data;
+	struct bnx2x_fw_file_section fw_version;
+}
+
+Each bnx2x_fw_file_section contains the length and the offset of the appropriate
+section in the binary file. Values are stored in the big endian format.
+
+Data types of arrays:
+
+init_data            __be32
+init_ops_offsets     __be16
+XXsem_pram_data         u8
+XXsem_int_table_data    u8
+init_ops             struct raw_op {
+                          u8   op;
+			__be24 offset;
+                        __be32 data;
+		     }
+fw_version              u8
+
+>From now boundaries of a specific initialization stage are stored in
+init_ops_offsets array instead of being defined by separate macroes. The index
+in init_ops_offsets is calculated by BLOCK_OPS_IDX macro:
+
+#define BLOCK_OPS_IDX(block, stage, end) \
+       (2*(((block)*STAGE_IDX_MAX) + (stage)) + (end))
+
+Security:
+
+In addition to sanity check of array boundaries bnx2x will check a FW version.
+Additional checks might be added in the future.
+
+Signed-off-by: Vladislav Zolotarov <vladz@broadcom.com>
+Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/Kconfig             |    1 +
+ drivers/net/bnx2x.h             |   15 +
+ drivers/net/bnx2x_fw_file_hdr.h |   37 +++
+ drivers/net/bnx2x_init.h        |  605 +++++----------------------------------
+ drivers/net/bnx2x_init_ops.h    |  442 ++++++++++++++++++++++++++++
+ drivers/net/bnx2x_main.c        |  343 ++++++++++++++++++----
+ firmware/Makefile               |    1 +
+ firmware/WHENCE                 |   20 ++
+ 8 files changed, 866 insertions(+), 598 deletions(-)
+ create mode 100644 drivers/net/bnx2x_fw_file_hdr.h
+ create mode 100644 drivers/net/bnx2x_init_ops.h
+
+Adjusted to apply to Debian's 2.6.30-rc6 by dann frazier <dannf@debian.org>
+
+diff -urpN linux-2.6-2.6.30~rc6.orig/drivers/net/bnx2x_fw_file_hdr.h linux-2.6-2.6.30~rc6/drivers/net/bnx2x_fw_file_hdr.h
+--- linux-2.6-2.6.30~rc6.orig/drivers/net/bnx2x_fw_file_hdr.h	1969-12-31 17:00:00.000000000 -0700
++++ linux-2.6-2.6.30~rc6/drivers/net/bnx2x_fw_file_hdr.h	2009-05-26 15:20:01.000000000 -0600
+@@ -0,0 +1,37 @@
++/* bnx2x_fw_file_hdr.h: FW binary file header structure.
++ *
++ * Copyright (c) 2007-2009 Broadcom Corporation
++ *
++ * 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.
++ *
++ * Maintained by: Eilon Greenstein <eilong@broadcom.com>
++ * Written by: Vladislav Zolotarov <vladz@broadcom.com>
++ * Based on the original idea of John Wright <john.wright@hp.com>.
++ */
++
++#ifndef BNX2X_INIT_FILE_HDR_H
++#define BNX2X_INIT_FILE_HDR_H
++
++struct bnx2x_fw_file_section {
++	__be32 len;
++	__be32 offset;
++};
++
++struct bnx2x_fw_file_hdr {
++	struct bnx2x_fw_file_section init_ops;
++	struct bnx2x_fw_file_section init_ops_offsets;
++	struct bnx2x_fw_file_section init_data;
++	struct bnx2x_fw_file_section tsem_int_table_data;
++	struct bnx2x_fw_file_section tsem_pram_data;
++	struct bnx2x_fw_file_section usem_int_table_data;
++	struct bnx2x_fw_file_section usem_pram_data;
++	struct bnx2x_fw_file_section csem_int_table_data;
++	struct bnx2x_fw_file_section csem_pram_data;
++	struct bnx2x_fw_file_section xsem_int_table_data;
++	struct bnx2x_fw_file_section xsem_pram_data;
++	struct bnx2x_fw_file_section fw_version;
++};
++
++#endif /* BNX2X_INIT_FILE_HDR_H */
+diff -urpN linux-2.6-2.6.30~rc6.orig/drivers/net/bnx2x.h linux-2.6-2.6.30~rc6/drivers/net/bnx2x.h
+--- linux-2.6-2.6.30~rc6.orig/drivers/net/bnx2x.h	2009-05-19 03:52:18.000000000 -0600
++++ linux-2.6-2.6.30~rc6/drivers/net/bnx2x.h	2009-05-26 15:20:01.000000000 -0600
+@@ -965,6 +965,21 @@ struct bnx2x {
+ 	int			gunzip_outlen;
+ #define FW_BUF_SIZE			0x8000
+ 
++	struct raw_op          *init_ops;
++	/* Init blocks offsets inside init_ops */
++	u16                    *init_ops_offsets;
++	/* Data blob - has 32 bit granularity */
++	u32                    *init_data;
++	/* Zipped PRAM blobs - raw data */
++	const u8               *tsem_int_table_data;
++	const u8               *tsem_pram_data;
++	const u8               *usem_int_table_data;
++	const u8               *usem_pram_data;
++	const u8               *xsem_int_table_data;
++	const u8               *xsem_pram_data;
++	const u8               *csem_int_table_data;
++	const u8               *csem_pram_data;
++        const struct firmware  *firmware;
+ };
+ 
+ 
+diff -urpN linux-2.6-2.6.30~rc6.orig/drivers/net/bnx2x_init.h linux-2.6-2.6.30~rc6/drivers/net/bnx2x_init.h
+--- linux-2.6-2.6.30~rc6.orig/drivers/net/bnx2x_init.h	2009-05-19 03:52:18.000000000 -0600
++++ linux-2.6-2.6.30~rc6/drivers/net/bnx2x_init.h	2009-05-26 15:20:01.000000000 -0600
+@@ -1,4 +1,5 @@
+ /* bnx2x_init.h: Broadcom Everest network driver.
++ *               Structures and macroes needed during the initialization.
+  *
+  * Copyright (c) 2007-2009 Broadcom Corporation
+  *
+@@ -8,6 +9,7 @@
+  *
+  * Maintained by: Eilon Greenstein <eilong@broadcom.com>
+  * Written by: Eliezer Tamir
++ * Modified by: Vladislav Zolotarov <vladz@broadcom.com>
+  */
+ 
+ #ifndef BNX2X_INIT_H
+@@ -45,33 +47,71 @@
+ #define OP_WR_64		0x8 /* write 64 bit pattern */
+ #define OP_WB			0x9 /* copy a string using DMAE */
+ 
+-/* Operation specific for E1 */
+-#define OP_RD_E1		0xa /* read single register */
+-#define OP_WR_E1		0xb /* write single register */
+-#define OP_IW_E1		0xc /* write single register using mailbox */
+-#define OP_SW_E1		0xd /* copy a string to the device */
+-#define OP_SI_E1		0xe /* copy a string using mailbox */
+-#define OP_ZR_E1		0xf /* clear memory */
+-#define OP_ZP_E1		0x10 /* unzip then copy with DMAE */
+-#define OP_WR_64_E1		0x11 /* write 64 bit pattern on E1 */
+-#define OP_WB_E1		0x12 /* copy a string using DMAE */
+-
+-/* Operation specific for E1H */
+-#define OP_RD_E1H		0x13 /* read single register */
+-#define OP_WR_E1H		0x14 /* write single register */
+-#define OP_IW_E1H		0x15 /* write single register using mailbox */
+-#define OP_SW_E1H		0x16 /* copy a string to the device */
+-#define OP_SI_E1H		0x17 /* copy a string using mailbox */
+-#define OP_ZR_E1H		0x18 /* clear memory */
+-#define OP_ZP_E1H		0x19 /* unzip then copy with DMAE */
+-#define OP_WR_64_E1H		0x1a /* write 64 bit pattern on E1H */
+-#define OP_WB_E1H		0x1b /* copy a string using DMAE */
+-
+ /* FPGA and EMUL specific operations */
+-#define OP_WR_EMUL_E1H		0x1c /* write single register on E1H Emul */
+-#define OP_WR_EMUL		0x1d /* write single register on Emulation */
+-#define OP_WR_FPGA		0x1e /* write single register on FPGA */
+-#define OP_WR_ASIC		0x1f /* write single register on ASIC */
++#define OP_WR_EMUL		0xa /* write single register on Emulation */
++#define OP_WR_FPGA		0xb /* write single register on FPGA */
++#define OP_WR_ASIC		0xc /* write single register on ASIC */
++
++/* Init stages */
++#define COMMON_STAGE            0
++#define PORT0_STAGE     	1
++#define PORT1_STAGE     	2
++/* Never reorder FUNCx stages !!! */
++#define FUNC0_STAGE     	3
++#define FUNC1_STAGE     	4
++#define FUNC2_STAGE     	5
++#define FUNC3_STAGE     	6
++#define FUNC4_STAGE     	7
++#define FUNC5_STAGE     	8
++#define FUNC6_STAGE     	9
++#define FUNC7_STAGE     	10
++#define STAGE_IDX_MAX   	11
++
++#define STAGE_START     	0
++#define STAGE_END       	1
++
++
++/* Indices of blocks */
++#define PRS_BLOCK               0
++#define SRCH_BLOCK              1
++#define TSDM_BLOCK              2
++#define TCM_BLOCK               3
++#define BRB1_BLOCK              4
++#define TSEM_BLOCK              5
++#define PXPCS_BLOCK             6
++#define EMAC0_BLOCK             7
++#define EMAC1_BLOCK             8
++#define DBU_BLOCK               9
++#define MISC_BLOCK              10
++#define DBG_BLOCK               11
++#define NIG_BLOCK               12
++#define MCP_BLOCK               13
++#define UPB_BLOCK               14
++#define CSDM_BLOCK              15
++#define USDM_BLOCK              16
++#define CCM_BLOCK               17
++#define UCM_BLOCK               18
++#define USEM_BLOCK              19
++#define CSEM_BLOCK              20
++#define XPB_BLOCK               21
++#define DQ_BLOCK                22
++#define TIMERS_BLOCK            23
++#define XSDM_BLOCK              24
++#define QM_BLOCK                25
++#define PBF_BLOCK               26
++#define XCM_BLOCK               27
++#define XSEM_BLOCK              28
++#define CDU_BLOCK               29
++#define DMAE_BLOCK              30
++#define PXP_BLOCK               31
++#define CFC_BLOCK               32
++#define HC_BLOCK                33
++#define PXP2_BLOCK              34
++#define MISC_AEU_BLOCK          35
++
++/* Returns the index of start or end of a specific block stage in ops array*/
++#define BLOCK_OPS_IDX(block, stage, end) \
++       (2*(((block)*STAGE_IDX_MAX) + (stage)) + (end))
+ 
+ 
+ struct raw_op {
+@@ -118,292 +158,6 @@ union init_op {
+ 	struct raw_op		raw;
+ };
+ 
+-#include "bnx2x_init_values.h"
+-
+-static void bnx2x_reg_wr_ind(struct bnx2x *bp, u32 addr, u32 val);
+-static int bnx2x_gunzip(struct bnx2x *bp, u8 *zbuf, int len);
+-
+-static void bnx2x_init_str_wr(struct bnx2x *bp, u32 addr, const u32 *data,
+-			      u32 len)
+-{
+-	int i;
+-
+-	for (i = 0; i < len; i++) {
+-		REG_WR(bp, addr + i*4, data[i]);
+-		if (!(i % 10000)) {
+-			touch_softlockup_watchdog();
+-			cpu_relax();
+-		}
+-	}
+-}
+-
+-static void bnx2x_init_ind_wr(struct bnx2x *bp, u32 addr, const u32 *data,
+-			      u16 len)
+-{
+-	int i;
+-
+-	for (i = 0; i < len; i++) {
+-		REG_WR_IND(bp, addr + i*4, data[i]);
+-		if (!(i % 10000)) {
+-			touch_softlockup_watchdog();
+-			cpu_relax();
+-		}
+-	}
+-}
+-
+-static void bnx2x_write_big_buf(struct bnx2x *bp, u32 addr, u32 len)
+-{
+-	int offset = 0;
+-
+-	if (bp->dmae_ready) {
+-		while (len > DMAE_LEN32_WR_MAX) {
+-			bnx2x_write_dmae(bp, bp->gunzip_mapping + offset,
+-					 addr + offset, DMAE_LEN32_WR_MAX);
+-			offset += DMAE_LEN32_WR_MAX * 4;
+-			len -= DMAE_LEN32_WR_MAX;
+-		}
+-		bnx2x_write_dmae(bp, bp->gunzip_mapping + offset,
+-				 addr + offset, len);
+-	} else
+-		bnx2x_init_str_wr(bp, addr, bp->gunzip_buf, len);
+-}
+-
+-static void bnx2x_init_fill(struct bnx2x *bp, u32 addr, int fill, u32 len)
+-{
+-	u32 buf_len = (((len * 4) > FW_BUF_SIZE) ? FW_BUF_SIZE : (len * 4));
+-	u32 buf_len32 = buf_len / 4;
+-	int i;
+-
+-	memset(bp->gunzip_buf, fill, buf_len);
+-
+-	for (i = 0; i < len; i += buf_len32) {
+-		u32 cur_len = min(buf_len32, len - i);
+-
+-		bnx2x_write_big_buf(bp, addr + i * 4, cur_len);
+-	}
+-}
+-
+-static void bnx2x_init_wr_64(struct bnx2x *bp, u32 addr, const u32 *data,
+-			     u32 len64)
+-{
+-	u32 buf_len32 = FW_BUF_SIZE / 4;
+-	u32 len = len64 * 2;
+-	u64 data64 = 0;
+-	int i;
+-
+-	/* 64 bit value is in a blob: first low DWORD, then high DWORD */
+-	data64 = HILO_U64((*(data + 1)), (*data));
+-	len64 = min((u32)(FW_BUF_SIZE/8), len64);
+-	for (i = 0; i < len64; i++) {
+-		u64 *pdata = ((u64 *)(bp->gunzip_buf)) + i;
+-
+-		*pdata = data64;
+-	}
+-
+-	for (i = 0; i < len; i += buf_len32) {
+-		u32 cur_len = min(buf_len32, len - i);
+-
+-		bnx2x_write_big_buf(bp, addr + i * 4, cur_len);
+-	}
+-}
+-
+-/*********************************************************
+-   There are different blobs for each PRAM section.
+-   In addition, each blob write operation is divided into a few operations
+-   in order to decrease the amount of phys. contiguous buffer needed.
+-   Thus, when we select a blob the address may be with some offset
+-   from the beginning of PRAM section.
+-   The same holds for the INT_TABLE sections.
+-**********************************************************/
+-#define IF_IS_INT_TABLE_ADDR(base, addr) \
+-			if (((base) <= (addr)) && ((base) + 0x400 >= (addr)))
+-
+-#define IF_IS_PRAM_ADDR(base, addr) \
+-			if (((base) <= (addr)) && ((base) + 0x40000 >= (addr)))
+-
+-static const u32 *bnx2x_sel_blob(u32 addr, const u32 *data, int is_e1)
+-{
+-	IF_IS_INT_TABLE_ADDR(TSEM_REG_INT_TABLE, addr)
+-		data = is_e1 ? tsem_int_table_data_e1 :
+-			       tsem_int_table_data_e1h;
+-	else
+-		IF_IS_INT_TABLE_ADDR(CSEM_REG_INT_TABLE, addr)
+-			data = is_e1 ? csem_int_table_data_e1 :
+-				       csem_int_table_data_e1h;
+-	else
+-		IF_IS_INT_TABLE_ADDR(USEM_REG_INT_TABLE, addr)
+-			data = is_e1 ? usem_int_table_data_e1 :
+-				       usem_int_table_data_e1h;
+-	else
+-		IF_IS_INT_TABLE_ADDR(XSEM_REG_INT_TABLE, addr)
+-			data = is_e1 ? xsem_int_table_data_e1 :
+-				       xsem_int_table_data_e1h;
+-	else
+-		IF_IS_PRAM_ADDR(TSEM_REG_PRAM, addr)
+-			data = is_e1 ? tsem_pram_data_e1 : tsem_pram_data_e1h;
+-	else
+-		IF_IS_PRAM_ADDR(CSEM_REG_PRAM, addr)
+-			data = is_e1 ? csem_pram_data_e1 : csem_pram_data_e1h;
+-	else
+-		IF_IS_PRAM_ADDR(USEM_REG_PRAM, addr)
+-			data = is_e1 ? usem_pram_data_e1 : usem_pram_data_e1h;
+-	else
+-		IF_IS_PRAM_ADDR(XSEM_REG_PRAM, addr)
+-			data = is_e1 ? xsem_pram_data_e1 : xsem_pram_data_e1h;
+-
+-	return data;
+-}
+-
+-static void bnx2x_init_wr_wb(struct bnx2x *bp, u32 addr, const u32 *data,
+-			     u32 len, int gunzip, int is_e1, u32 blob_off)
+-{
+-	int offset = 0;
+-
+-	data = bnx2x_sel_blob(addr, data, is_e1) + blob_off;
+-
+-	if (gunzip) {
+-		int rc;
+-#ifdef __BIG_ENDIAN
+-		int i, size;
+-		u32 *temp;
+-
+-		temp = kmalloc(len, GFP_KERNEL);
+-		size = (len / 4) + ((len % 4) ? 1 : 0);
+-		for (i = 0; i < size; i++)
+-			temp[i] = swab32(data[i]);
+-		data = temp;
+-#endif
+-		rc = bnx2x_gunzip(bp, (u8 *)data, len);
+-		if (rc) {
+-			BNX2X_ERR("gunzip failed ! rc %d\n", rc);
+-#ifdef __BIG_ENDIAN
+-			kfree(temp);
+-#endif
+-			return;
+-		}
+-		len = bp->gunzip_outlen;
+-#ifdef __BIG_ENDIAN
+-		kfree(temp);
+-		for (i = 0; i < len; i++)
+-			((u32 *)bp->gunzip_buf)[i] =
+-					swab32(((u32 *)bp->gunzip_buf)[i]);
+-#endif
+-	} else {
+-		if ((len * 4) > FW_BUF_SIZE) {
+-			BNX2X_ERR("LARGE DMAE OPERATION ! "
+-				  "addr 0x%x  len 0x%x\n", addr, len*4);
+-			return;
+-		}
+-		memcpy(bp->gunzip_buf, data, len * 4);
+-	}
+-
+-	if (bp->dmae_ready) {
+-		while (len > DMAE_LEN32_WR_MAX) {
+-			bnx2x_write_dmae(bp, bp->gunzip_mapping + offset,
+-					 addr + offset, DMAE_LEN32_WR_MAX);
+-			offset += DMAE_LEN32_WR_MAX * 4;
+-			len -= DMAE_LEN32_WR_MAX;
+-		}
+-		bnx2x_write_dmae(bp, bp->gunzip_mapping + offset,
+-				 addr + offset, len);
+-	} else
+-		bnx2x_init_ind_wr(bp, addr, bp->gunzip_buf, len);
+-}
+-
+-static void bnx2x_init_block(struct bnx2x *bp, u32 op_start, u32 op_end)
+-{
+-	int is_e1       = CHIP_IS_E1(bp);
+-	int is_e1h      = CHIP_IS_E1H(bp);
+-	int is_emul_e1h = (CHIP_REV_IS_EMUL(bp) && is_e1h);
+-	int hw_wr, i;
+-	union init_op *op;
+-	u32 op_type, addr, len;
+-	const u32 *data, *data_base;
+-
+-	if (CHIP_REV_IS_FPGA(bp))
+-		hw_wr = OP_WR_FPGA;
+-	else if (CHIP_REV_IS_EMUL(bp))
+-		hw_wr = OP_WR_EMUL;
+-	else
+-		hw_wr = OP_WR_ASIC;
+-
+-	if (is_e1)
+-		data_base = init_data_e1;
+-	else /* CHIP_IS_E1H(bp) */
+-		data_base = init_data_e1h;
+-
+-	for (i = op_start; i < op_end; i++) {
+-
+-		op = (union init_op *)&(init_ops[i]);
+-
+-		op_type = op->str_wr.op;
+-		addr = op->str_wr.offset;
+-		len = op->str_wr.data_len;
+-		data = data_base + op->str_wr.data_off;
+-
+-		/* careful! it must be in order */
+-		if (unlikely(op_type > OP_WB)) {
+-
+-			/* If E1 only */
+-			if (op_type <= OP_WB_E1) {
+-				if (is_e1)
+-					op_type -= (OP_RD_E1 - OP_RD);
+-
+-			/* If E1H only */
+-			} else if (op_type <= OP_WB_E1H) {
+-				if (is_e1h)
+-					op_type -= (OP_RD_E1H - OP_RD);
+-			}
+-
+-			/* HW/EMUL specific */
+-			if (op_type == hw_wr)
+-				op_type = OP_WR;
+-
+-			/* EMUL on E1H is special */
+-			if ((op_type == OP_WR_EMUL_E1H) && is_emul_e1h)
+-				op_type = OP_WR;
+-		}
+-
+-		switch (op_type) {
+-		case OP_RD:
+-			REG_RD(bp, addr);
+-			break;
+-		case OP_WR:
+-			REG_WR(bp, addr, op->write.val);
+-			break;
+-		case OP_SW:
+-			bnx2x_init_str_wr(bp, addr, data, len);
+-			break;
+-		case OP_WB:
+-			bnx2x_init_wr_wb(bp, addr, data, len, 0, is_e1, 0);
+-			break;
+-		case OP_SI:
+-			bnx2x_init_ind_wr(bp, addr, data, len);
+-			break;
+-		case OP_ZR:
+-			bnx2x_init_fill(bp, addr, 0, op->zero.len);
+-			break;
+-		case OP_ZP:
+-			bnx2x_init_wr_wb(bp, addr, data, len, 1, is_e1,
+-					 op->str_wr.data_off);
+-			break;
+-		case OP_WR_64:
+-			bnx2x_init_wr_64(bp, addr, data, len);
+-			break;
+-		default:
+-			/* happens whenever an op is of a diff HW */
+-#if 0
+-			DP(NETIF_MSG_HW, "skipping init operation  "
+-			   "index %d[%d:%d]: type %d  addr 0x%x  "
+-			   "len %d(0x%x)\n",
+-			   i, op_start, op_end, op_type, addr, len, len);
+-#endif
+-			break;
+-		}
+-	}
+-}
+-
+-
+ /****************************************************************************
+ * PXP
+ ****************************************************************************/
+@@ -567,111 +321,6 @@ static const struct arb_line write_arb_a
+ 		PXP2_REG_RQ_BW_WR_UBOUND30}
+ };
+ 
+-static void bnx2x_init_pxp(struct bnx2x *bp)
+-{
+-	u16 devctl;
+-	int r_order, w_order;
+-	u32 val, i;
+-
+-	pci_read_config_word(bp->pdev,
+-			     bp->pcie_cap + PCI_EXP_DEVCTL, &devctl);
+-	DP(NETIF_MSG_HW, "read 0x%x from devctl\n", devctl);
+-	w_order = ((devctl & PCI_EXP_DEVCTL_PAYLOAD) >> 5);
+-	if (bp->mrrs == -1)
+-		r_order = ((devctl & PCI_EXP_DEVCTL_READRQ) >> 12);
+-	else {
+-		DP(NETIF_MSG_HW, "force read order to %d\n", bp->mrrs);
+-		r_order = bp->mrrs;
+-	}
+-
+-	if (r_order > MAX_RD_ORD) {
+-		DP(NETIF_MSG_HW, "read order of %d  order adjusted to %d\n",
+-		   r_order, MAX_RD_ORD);
+-		r_order = MAX_RD_ORD;
+-	}
+-	if (w_order > MAX_WR_ORD) {
+-		DP(NETIF_MSG_HW, "write order of %d  order adjusted to %d\n",
+-		   w_order, MAX_WR_ORD);
+-		w_order = MAX_WR_ORD;
+-	}
+-	if (CHIP_REV_IS_FPGA(bp)) {
+-		DP(NETIF_MSG_HW, "write order adjusted to 1 for FPGA\n");
+-		w_order = 0;
+-	}
+-	DP(NETIF_MSG_HW, "read order %d  write order %d\n", r_order, w_order);
+-
+-	for (i = 0; i < NUM_RD_Q-1; i++) {
+-		REG_WR(bp, read_arb_addr[i].l, read_arb_data[i][r_order].l);
+-		REG_WR(bp, read_arb_addr[i].add,
+-		       read_arb_data[i][r_order].add);
+-		REG_WR(bp, read_arb_addr[i].ubound,
+-		       read_arb_data[i][r_order].ubound);
+-	}
+-
+-	for (i = 0; i < NUM_WR_Q-1; i++) {
+-		if ((write_arb_addr[i].l == PXP2_REG_RQ_BW_WR_L29) ||
+-		    (write_arb_addr[i].l == PXP2_REG_RQ_BW_WR_L30)) {
+-
+-			REG_WR(bp, write_arb_addr[i].l,
+-			       write_arb_data[i][w_order].l);
+-
+-			REG_WR(bp, write_arb_addr[i].add,
+-			       write_arb_data[i][w_order].add);
+-
+-			REG_WR(bp, write_arb_addr[i].ubound,
+-			       write_arb_data[i][w_order].ubound);
+-		} else {
+-
+-			val = REG_RD(bp, write_arb_addr[i].l);
+-			REG_WR(bp, write_arb_addr[i].l,
+-			       val | (write_arb_data[i][w_order].l << 10));
+-
+-			val = REG_RD(bp, write_arb_addr[i].add);
+-			REG_WR(bp, write_arb_addr[i].add,
+-			       val | (write_arb_data[i][w_order].add << 10));
+-
+-			val = REG_RD(bp, write_arb_addr[i].ubound);
+-			REG_WR(bp, write_arb_addr[i].ubound,
+-			       val | (write_arb_data[i][w_order].ubound << 7));
+-		}
+-	}
+-
+-	val =  write_arb_data[NUM_WR_Q-1][w_order].add;
+-	val += write_arb_data[NUM_WR_Q-1][w_order].ubound << 10;
+-	val += write_arb_data[NUM_WR_Q-1][w_order].l << 17;
+-	REG_WR(bp, PXP2_REG_PSWRQ_BW_RD, val);
+-
+-	val =  read_arb_data[NUM_RD_Q-1][r_order].add;
+-	val += read_arb_data[NUM_RD_Q-1][r_order].ubound << 10;
+-	val += read_arb_data[NUM_RD_Q-1][r_order].l << 17;
+-	REG_WR(bp, PXP2_REG_PSWRQ_BW_WR, val);
+-
+-	REG_WR(bp, PXP2_REG_RQ_WR_MBS0, w_order);
+-	REG_WR(bp, PXP2_REG_RQ_WR_MBS1, w_order);
+-	REG_WR(bp, PXP2_REG_RQ_RD_MBS0, r_order);
+-	REG_WR(bp, PXP2_REG_RQ_RD_MBS1, r_order);
+-
+-	if (r_order == MAX_RD_ORD)
+-		REG_WR(bp, PXP2_REG_RQ_PDR_LIMIT, 0xe00);
+-
+-	REG_WR(bp, PXP2_REG_WR_USDMDP_TH, (0x18 << w_order));
+-
+-	if (CHIP_IS_E1H(bp)) {
+-		val = ((w_order == 0) ? 2 : 3);
+-		REG_WR(bp, PXP2_REG_WR_HC_MPS, val);
+-		REG_WR(bp, PXP2_REG_WR_USDM_MPS, val);
+-		REG_WR(bp, PXP2_REG_WR_CSDM_MPS, val);
+-		REG_WR(bp, PXP2_REG_WR_TSDM_MPS, val);
+-		REG_WR(bp, PXP2_REG_WR_XSDM_MPS, val);
+-		REG_WR(bp, PXP2_REG_WR_QM_MPS, val);
+-		REG_WR(bp, PXP2_REG_WR_TM_MPS, val);
+-		REG_WR(bp, PXP2_REG_WR_SRC_MPS, val);
+-		REG_WR(bp, PXP2_REG_WR_DBG_MPS, val);
+-		REG_WR(bp, PXP2_REG_WR_DMAE_MPS, 2); /* DMAE is special */
+-		REG_WR(bp, PXP2_REG_WR_CDU_MPS, val);
+-	}
+-}
+-
+ 
+ /****************************************************************************
+ * CDU
+@@ -695,128 +344,12 @@ static void bnx2x_init_pxp(struct bnx2x 
+ 	(0x80 | ((_type) & 0xf << 3) | (CDU_CRC8(_cid, _region, _type) & 0x7))
+ #define CDU_RSRVD_INVALIDATE_CONTEXT_VALUE(_val)	((_val) & ~0x80)
+ 
+-/*****************************************************************************
+- * Description:
+- *         Calculates crc 8 on a word value: polynomial 0-1-2-8
+- *         Code was translated from Verilog.
+- ****************************************************************************/
+-static u8 calc_crc8(u32 data, u8 crc)
+-{
+-	u8 D[32];
+-	u8 NewCRC[8];
+-	u8 C[8];
+-	u8 crc_res;
+-	u8 i;
+-
+-	/* split the data into 31 bits */
+-	for (i = 0; i < 32; i++) {
+-		D[i] = data & 1;
+-		data = data >> 1;
+-	}
+-
+-	/* split the crc into 8 bits */
+-	for (i = 0; i < 8; i++) {
+-		C[i] = crc & 1;
+-		crc = crc >> 1;
+-	}
+-
+-	NewCRC[0] = D[31] ^ D[30] ^ D[28] ^ D[23] ^ D[21] ^ D[19] ^ D[18] ^
+-		D[16] ^ D[14] ^ D[12] ^ D[8] ^ D[7] ^ D[6] ^ D[0] ^ C[4] ^
+-		C[6] ^ C[7];
+-	NewCRC[1] = D[30] ^ D[29] ^ D[28] ^ D[24] ^ D[23] ^ D[22] ^ D[21] ^
+-		D[20] ^ D[18] ^ D[17] ^ D[16] ^ D[15] ^ D[14] ^ D[13] ^
+-		D[12] ^ D[9] ^ D[6] ^ D[1] ^ D[0] ^ C[0] ^ C[4] ^ C[5] ^ C[6];
+-	NewCRC[2] = D[29] ^ D[28] ^ D[25] ^ D[24] ^ D[22] ^ D[17] ^ D[15] ^
+-		D[13] ^ D[12] ^ D[10] ^ D[8] ^ D[6] ^ D[2] ^ D[1] ^ D[0] ^
+-		C[0] ^ C[1] ^ C[4] ^ C[5];
+-	NewCRC[3] = D[30] ^ D[29] ^ D[26] ^ D[25] ^ D[23] ^ D[18] ^ D[16] ^
+-		D[14] ^ D[13] ^ D[11] ^ D[9] ^ D[7] ^ D[3] ^ D[2] ^ D[1] ^
+-		C[1] ^ C[2] ^ C[5] ^ C[6];
+-	NewCRC[4] = D[31] ^ D[30] ^ D[27] ^ D[26] ^ D[24] ^ D[19] ^ D[17] ^
+-		D[15] ^ D[14] ^ D[12] ^ D[10] ^ D[8] ^ D[4] ^ D[3] ^ D[2] ^
+-		C[0] ^ C[2] ^ C[3] ^ C[6] ^ C[7];
+-	NewCRC[5] = D[31] ^ D[28] ^ D[27] ^ D[25] ^ D[20] ^ D[18] ^ D[16] ^
+-		D[15] ^ D[13] ^ D[11] ^ D[9] ^ D[5] ^ D[4] ^ D[3] ^ C[1] ^
+-		C[3] ^ C[4] ^ C[7];
+-	NewCRC[6] = D[29] ^ D[28] ^ D[26] ^ D[21] ^ D[19] ^ D[17] ^ D[16] ^
+-		D[14] ^ D[12] ^ D[10] ^ D[6] ^ D[5] ^ D[4] ^ C[2] ^ C[4] ^
+-		C[5];
+-	NewCRC[7] = D[30] ^ D[29] ^ D[27] ^ D[22] ^ D[20] ^ D[18] ^ D[17] ^
+-		D[15] ^ D[13] ^ D[11] ^ D[7] ^ D[6] ^ D[5] ^ C[3] ^ C[5] ^
+-		C[6];
+-
+-	crc_res = 0;
+-	for (i = 0; i < 8; i++)
+-		crc_res |= (NewCRC[i] << i);
+-
+-	return crc_res;
+-}
+ 
+ /* registers addresses are not in order
+    so these arrays help simplify the code */
+-static const int cm_start[E1H_FUNC_MAX][9] = {
+-	{MISC_FUNC0_START, TCM_FUNC0_START, UCM_FUNC0_START, CCM_FUNC0_START,
+-	 XCM_FUNC0_START, TSEM_FUNC0_START, USEM_FUNC0_START, CSEM_FUNC0_START,
+-	 XSEM_FUNC0_START},
+-	{MISC_FUNC1_START, TCM_FUNC1_START, UCM_FUNC1_START, CCM_FUNC1_START,
+-	 XCM_FUNC1_START, TSEM_FUNC1_START, USEM_FUNC1_START, CSEM_FUNC1_START,
+-	 XSEM_FUNC1_START},
+-	{MISC_FUNC2_START, TCM_FUNC2_START, UCM_FUNC2_START, CCM_FUNC2_START,
+-	 XCM_FUNC2_START, TSEM_FUNC2_START, USEM_FUNC2_START, CSEM_FUNC2_START,
+-	 XSEM_FUNC2_START},
+-	{MISC_FUNC3_START, TCM_FUNC3_START, UCM_FUNC3_START, CCM_FUNC3_START,
+-	 XCM_FUNC3_START, TSEM_FUNC3_START, USEM_FUNC3_START, CSEM_FUNC3_START,
+-	 XSEM_FUNC3_START},
+-	{MISC_FUNC4_START, TCM_FUNC4_START, UCM_FUNC4_START, CCM_FUNC4_START,
+-	 XCM_FUNC4_START, TSEM_FUNC4_START, USEM_FUNC4_START, CSEM_FUNC4_START,
+-	 XSEM_FUNC4_START},
+-	{MISC_FUNC5_START, TCM_FUNC5_START, UCM_FUNC5_START, CCM_FUNC5_START,
+-	 XCM_FUNC5_START, TSEM_FUNC5_START, USEM_FUNC5_START, CSEM_FUNC5_START,
+-	 XSEM_FUNC5_START},
+-	{MISC_FUNC6_START, TCM_FUNC6_START, UCM_FUNC6_START, CCM_FUNC6_START,
+-	 XCM_FUNC6_START, TSEM_FUNC6_START, USEM_FUNC6_START, CSEM_FUNC6_START,
+-	 XSEM_FUNC6_START},
+-	{MISC_FUNC7_START, TCM_FUNC7_START, UCM_FUNC7_START, CCM_FUNC7_START,
+-	 XCM_FUNC7_START, TSEM_FUNC7_START, USEM_FUNC7_START, CSEM_FUNC7_START,
+-	 XSEM_FUNC7_START}
+-};
+-
+-static const int cm_end[E1H_FUNC_MAX][9] = {
+-	{MISC_FUNC0_END, TCM_FUNC0_END, UCM_FUNC0_END, CCM_FUNC0_END,
+-	 XCM_FUNC0_END, TSEM_FUNC0_END, USEM_FUNC0_END, CSEM_FUNC0_END,
+-	 XSEM_FUNC0_END},
+-	{MISC_FUNC1_END, TCM_FUNC1_END, UCM_FUNC1_END, CCM_FUNC1_END,
+-	 XCM_FUNC1_END, TSEM_FUNC1_END, USEM_FUNC1_END, CSEM_FUNC1_END,
+-	 XSEM_FUNC1_END},
+-	{MISC_FUNC2_END, TCM_FUNC2_END, UCM_FUNC2_END, CCM_FUNC2_END,
+-	 XCM_FUNC2_END, TSEM_FUNC2_END, USEM_FUNC2_END, CSEM_FUNC2_END,
+-	 XSEM_FUNC2_END},
+-	{MISC_FUNC3_END, TCM_FUNC3_END, UCM_FUNC3_END, CCM_FUNC3_END,
+-	 XCM_FUNC3_END, TSEM_FUNC3_END, USEM_FUNC3_END, CSEM_FUNC3_END,
+-	 XSEM_FUNC3_END},
+-	{MISC_FUNC4_END, TCM_FUNC4_END, UCM_FUNC4_END, CCM_FUNC4_END,
+-	 XCM_FUNC4_END, TSEM_FUNC4_END, USEM_FUNC4_END, CSEM_FUNC4_END,
+-	 XSEM_FUNC4_END},
+-	{MISC_FUNC5_END, TCM_FUNC5_END, UCM_FUNC5_END, CCM_FUNC5_END,
+-	 XCM_FUNC5_END, TSEM_FUNC5_END, USEM_FUNC5_END, CSEM_FUNC5_END,
+-	 XSEM_FUNC5_END},
+-	{MISC_FUNC6_END, TCM_FUNC6_END, UCM_FUNC6_END, CCM_FUNC6_END,
+-	 XCM_FUNC6_END, TSEM_FUNC6_END, USEM_FUNC6_END, CSEM_FUNC6_END,
+-	 XSEM_FUNC6_END},
+-	{MISC_FUNC7_END, TCM_FUNC7_END, UCM_FUNC7_END, CCM_FUNC7_END,
+-	 XCM_FUNC7_END, TSEM_FUNC7_END, USEM_FUNC7_END, CSEM_FUNC7_END,
+-	 XSEM_FUNC7_END},
+-};
+-
+-static const int hc_limits[E1H_FUNC_MAX][2] = {
+-	{HC_FUNC0_START, HC_FUNC0_END},
+-	{HC_FUNC1_START, HC_FUNC1_END},
+-	{HC_FUNC2_START, HC_FUNC2_END},
+-	{HC_FUNC3_START, HC_FUNC3_END},
+-	{HC_FUNC4_START, HC_FUNC4_END},
+-	{HC_FUNC5_START, HC_FUNC5_END},
+-	{HC_FUNC6_START, HC_FUNC6_END},
+-	{HC_FUNC7_START, HC_FUNC7_END}
++static const int cm_blocks[9] = {
++	MISC_BLOCK, TCM_BLOCK,  UCM_BLOCK,  CCM_BLOCK, XCM_BLOCK,
++	TSEM_BLOCK, USEM_BLOCK, CSEM_BLOCK, XSEM_BLOCK
+ };
+ 
+ #endif /* BNX2X_INIT_H */
+diff -urpN linux-2.6-2.6.30~rc6.orig/drivers/net/bnx2x_init_ops.h linux-2.6-2.6.30~rc6/drivers/net/bnx2x_init_ops.h
+--- linux-2.6-2.6.30~rc6.orig/drivers/net/bnx2x_init_ops.h	1969-12-31 17:00:00.000000000 -0700
++++ linux-2.6-2.6.30~rc6/drivers/net/bnx2x_init_ops.h	2009-05-26 15:20:01.000000000 -0600
+@@ -0,0 +1,442 @@
++/* bnx2x_init_ops.h: Broadcom Everest network driver.
++ *               Static functions needed during the initialization.
++ *               This file is "included" in bnx2x_main.c.
++ *
++ * Copyright (c) 2007-2009 Broadcom Corporation
++ *
++ * 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.
++ *
++ * Maintained by: Eilon Greenstein <eilong@broadcom.com>
++ * Written by: Vladislav Zolotarov <vladz@broadcom.com>
++ */
++#ifndef BNX2X_INIT_OPS_H
++#define BNX2X_INIT_OPS_H
++
++static void bnx2x_reg_wr_ind(struct bnx2x *bp, u32 addr, u32 val);
++static int bnx2x_gunzip(struct bnx2x *bp, const u8 *zbuf, int len);
++
++static void bnx2x_init_str_wr(struct bnx2x *bp, u32 addr, const u32 *data,
++			      u32 len)
++{
++	int i;
++
++	for (i = 0; i < len; i++) {
++		REG_WR(bp, addr + i*4, data[i]);
++		if (!(i % 10000)) {
++			touch_softlockup_watchdog();
++			cpu_relax();
++		}
++	}
++}
++
++static void bnx2x_init_ind_wr(struct bnx2x *bp, u32 addr, const u32 *data,
++			      u16 len)
++{
++	int i;
++
++	for (i = 0; i < len; i++) {
++		REG_WR_IND(bp, addr + i*4, data[i]);
++		if (!(i % 10000)) {
++			touch_softlockup_watchdog();
++			cpu_relax();
++		}
++	}
++}
++
++static void bnx2x_write_big_buf(struct bnx2x *bp, u32 addr, u32 len)
++{
++	int offset = 0;
++
++	if (bp->dmae_ready) {
++		while (len > DMAE_LEN32_WR_MAX) {
++			bnx2x_write_dmae(bp, bp->gunzip_mapping + offset,
++					 addr + offset, DMAE_LEN32_WR_MAX);
++			offset += DMAE_LEN32_WR_MAX * 4;
++			len -= DMAE_LEN32_WR_MAX;
++		}
++		bnx2x_write_dmae(bp, bp->gunzip_mapping + offset,
++				 addr + offset, len);
++	} else
++		bnx2x_init_str_wr(bp, addr, bp->gunzip_buf, len);
++}
++
++static void bnx2x_init_fill(struct bnx2x *bp, u32 addr, int fill, u32 len)
++{
++	u32 buf_len = (((len * 4) > FW_BUF_SIZE) ? FW_BUF_SIZE : (len * 4));
++	u32 buf_len32 = buf_len / 4;
++	int i;
++
++	memset(bp->gunzip_buf, fill, buf_len);
++
++	for (i = 0; i < len; i += buf_len32) {
++		u32 cur_len = min(buf_len32, len - i);
++
++		bnx2x_write_big_buf(bp, addr + i * 4, cur_len);
++	}
++}
++
++static void bnx2x_init_wr_64(struct bnx2x *bp, u32 addr, const u32 *data,
++			     u32 len64)
++{
++	u32 buf_len32 = FW_BUF_SIZE / 4;
++	u32 len = len64 * 2;
++	u64 data64 = 0;
++	int i;
++
++	/* 64 bit value is in a blob: first low DWORD, then high DWORD */
++	data64 = HILO_U64((*(data + 1)), (*data));
++	len64 = min((u32)(FW_BUF_SIZE/8), len64);
++	for (i = 0; i < len64; i++) {
++		u64 *pdata = ((u64 *)(bp->gunzip_buf)) + i;
++
++		*pdata = data64;
++	}
++
++	for (i = 0; i < len; i += buf_len32) {
++		u32 cur_len = min(buf_len32, len - i);
++
++		bnx2x_write_big_buf(bp, addr + i * 4, cur_len);
++	}
++}
++
++/*********************************************************
++   There are different blobs for each PRAM section.
++   In addition, each blob write operation is divided into a few operations
++   in order to decrease the amount of phys. contiguous buffer needed.
++   Thus, when we select a blob the address may be with some offset
++   from the beginning of PRAM section.
++   The same holds for the INT_TABLE sections.
++**********************************************************/
++#define IF_IS_INT_TABLE_ADDR(base, addr) \
++			if (((base) <= (addr)) && ((base) + 0x400 >= (addr)))
++
++#define IF_IS_PRAM_ADDR(base, addr) \
++			if (((base) <= (addr)) && ((base) + 0x40000 >= (addr)))
++
++static const u8 *bnx2x_sel_blob(struct bnx2x *bp, u32 addr, const u8 *data)
++{
++	IF_IS_INT_TABLE_ADDR(TSEM_REG_INT_TABLE, addr)
++		data = bp->tsem_int_table_data;
++	else IF_IS_INT_TABLE_ADDR(CSEM_REG_INT_TABLE, addr)
++		data = bp->csem_int_table_data;
++	else IF_IS_INT_TABLE_ADDR(USEM_REG_INT_TABLE, addr)
++		data = bp->usem_int_table_data;
++	else IF_IS_INT_TABLE_ADDR(XSEM_REG_INT_TABLE, addr)
++		data = bp->xsem_int_table_data;
++	else IF_IS_PRAM_ADDR(TSEM_REG_PRAM, addr)
++		data = bp->tsem_pram_data;
++	else IF_IS_PRAM_ADDR(CSEM_REG_PRAM, addr)
++		data = bp->csem_pram_data;
++	else IF_IS_PRAM_ADDR(USEM_REG_PRAM, addr)
++		data = bp->usem_pram_data;
++	else IF_IS_PRAM_ADDR(XSEM_REG_PRAM, addr)
++		data = bp->xsem_pram_data;
++
++	return data;
++}
++
++static void bnx2x_write_big_buf_wb(struct bnx2x *bp, u32 addr, u32 len)
++{
++	int offset = 0;
++
++	if (bp->dmae_ready) {
++		while (len > DMAE_LEN32_WR_MAX) {
++			bnx2x_write_dmae(bp, bp->gunzip_mapping + offset,
++					 addr + offset, DMAE_LEN32_WR_MAX);
++			offset += DMAE_LEN32_WR_MAX * 4;
++			len -= DMAE_LEN32_WR_MAX;
++		}
++		bnx2x_write_dmae(bp, bp->gunzip_mapping + offset,
++				 addr + offset, len);
++	} else
++		bnx2x_init_ind_wr(bp, addr, bp->gunzip_buf, len);
++}
++
++static void bnx2x_init_wr_wb(struct bnx2x *bp, u32 addr, const u32 *data,
++			     u32 len)
++{
++	/* This is needed for NO_ZIP mode, currently supported
++	   in little endian mode only */
++	data = (const u32*)bnx2x_sel_blob(bp, addr, (const u8*)data);
++
++	if ((len * 4) > FW_BUF_SIZE) {
++		BNX2X_ERR("LARGE DMAE OPERATION ! "
++			  "addr 0x%x  len 0x%x\n", addr, len*4);
++		return;
++	}
++	memcpy(bp->gunzip_buf, data, len * 4);
++
++	bnx2x_write_big_buf_wb(bp, addr, len);
++}
++
++static void bnx2x_init_wr_zp(struct bnx2x *bp, u32 addr,
++			     u32 len, u32 blob_off)
++{
++	int rc, i;
++        const u8 *data = NULL;
++
++	data = bnx2x_sel_blob(bp, addr, data) + 4*blob_off;
++
++	if (data == NULL) {
++		panic("Blob not found for addr 0x%x\n", addr);
++		return;
++	}
++
++	rc = bnx2x_gunzip(bp, data, len);
++	if (rc) {
++		BNX2X_ERR("gunzip failed ! addr 0x%x rc %d\n", addr, rc);
++		BNX2X_ERR("blob_offset=0x%x\n", blob_off);
++		return;
++	}
++
++	/* gunzip_outlen is in dwords */
++	len = bp->gunzip_outlen;
++	for (i = 0; i < len; i++)
++		((u32 *)bp->gunzip_buf)[i] =
++			cpu_to_le32(((u32 *)bp->gunzip_buf)[i]);
++
++	bnx2x_write_big_buf_wb(bp, addr, len);
++}
++
++static void bnx2x_init_block(struct bnx2x *bp, u32 block, u32 stage)
++{
++	int hw_wr, i;
++	u16 op_start =
++		bp->init_ops_offsets[BLOCK_OPS_IDX(block,stage,STAGE_START)];
++	u16 op_end =
++		bp->init_ops_offsets[BLOCK_OPS_IDX(block,stage,STAGE_END)];
++	union init_op *op;
++	u32 op_type, addr, len;
++	const u32 *data, *data_base;
++
++	/* If empty block */
++	if (op_start == op_end)
++		return;
++
++	if (CHIP_REV_IS_FPGA(bp))
++		hw_wr = OP_WR_FPGA;
++	else if (CHIP_REV_IS_EMUL(bp))
++		hw_wr = OP_WR_EMUL;
++	else
++		hw_wr = OP_WR_ASIC;
++
++	data_base = bp->init_data;
++
++	for (i = op_start; i < op_end; i++) {
++
++		op = (union init_op *)&(bp->init_ops[i]);
++
++		op_type = op->str_wr.op;
++		addr = op->str_wr.offset;
++		len = op->str_wr.data_len;
++		data = data_base + op->str_wr.data_off;
++
++		/* HW/EMUL specific */
++		if (unlikely((op_type > OP_WB) && (op_type == hw_wr)))
++			op_type = OP_WR;
++
++		switch (op_type) {
++		case OP_RD:
++			REG_RD(bp, addr);
++			break;
++		case OP_WR:
++			REG_WR(bp, addr, op->write.val);
++			break;
++		case OP_SW:
++			bnx2x_init_str_wr(bp, addr, data, len);
++			break;
++		case OP_WB:
++			bnx2x_init_wr_wb(bp, addr, data, len);
++			break;
++		case OP_SI:
++			bnx2x_init_ind_wr(bp, addr, data, len);
++			break;
++		case OP_ZR:
++			bnx2x_init_fill(bp, addr, 0, op->zero.len);
++			break;
++		case OP_ZP:
++			bnx2x_init_wr_zp(bp, addr, len,
++					 op->str_wr.data_off);
++			break;
++		case OP_WR_64:
++			bnx2x_init_wr_64(bp, addr, data, len);
++			break;
++		default:
++			/* happens whenever an op is of a diff HW */
++#if 0
++			DP(NETIF_MSG_HW, "skipping init operation  "
++			   "index %d[%d:%d]: type %d  addr 0x%x  "
++			   "len %d(0x%x)\n",
++			   i, op_start, op_end, op_type, addr, len, len);
++#endif
++			break;
++		}
++	}
++}
++
++/* PXP */
++static void bnx2x_init_pxp(struct bnx2x *bp)
++{
++	u16 devctl;
++	int r_order, w_order;
++	u32 val, i;
++
++	pci_read_config_word(bp->pdev,
++			     bp->pcie_cap + PCI_EXP_DEVCTL, &devctl);
++	DP(NETIF_MSG_HW, "read 0x%x from devctl\n", devctl);
++	w_order = ((devctl & PCI_EXP_DEVCTL_PAYLOAD) >> 5);
++	if (bp->mrrs == -1)
++		r_order = ((devctl & PCI_EXP_DEVCTL_READRQ) >> 12);
++	else {
++		DP(NETIF_MSG_HW, "force read order to %d\n", bp->mrrs);
++		r_order = bp->mrrs;
++	}
++
++	if (r_order > MAX_RD_ORD) {
++		DP(NETIF_MSG_HW, "read order of %d  order adjusted to %d\n",
++		   r_order, MAX_RD_ORD);
++		r_order = MAX_RD_ORD;
++	}
++	if (w_order > MAX_WR_ORD) {
++		DP(NETIF_MSG_HW, "write order of %d  order adjusted to %d\n",
++		   w_order, MAX_WR_ORD);
++		w_order = MAX_WR_ORD;
++	}
++	if (CHIP_REV_IS_FPGA(bp)) {
++		DP(NETIF_MSG_HW, "write order adjusted to 1 for FPGA\n");
++		w_order = 0;
++	}
++	DP(NETIF_MSG_HW, "read order %d  write order %d\n", r_order, w_order);
++
++	for (i = 0; i < NUM_RD_Q-1; i++) {
++		REG_WR(bp, read_arb_addr[i].l, read_arb_data[i][r_order].l);
++		REG_WR(bp, read_arb_addr[i].add,
++		       read_arb_data[i][r_order].add);
++		REG_WR(bp, read_arb_addr[i].ubound,
++		       read_arb_data[i][r_order].ubound);
++	}
++
++	for (i = 0; i < NUM_WR_Q-1; i++) {
++		if ((write_arb_addr[i].l == PXP2_REG_RQ_BW_WR_L29) ||
++		    (write_arb_addr[i].l == PXP2_REG_RQ_BW_WR_L30)) {
++
++			REG_WR(bp, write_arb_addr[i].l,
++			       write_arb_data[i][w_order].l);
++
++			REG_WR(bp, write_arb_addr[i].add,
++			       write_arb_data[i][w_order].add);
++
++			REG_WR(bp, write_arb_addr[i].ubound,
++			       write_arb_data[i][w_order].ubound);
++		} else {
++
++			val = REG_RD(bp, write_arb_addr[i].l);
++			REG_WR(bp, write_arb_addr[i].l,
++			       val | (write_arb_data[i][w_order].l << 10));
++
++			val = REG_RD(bp, write_arb_addr[i].add);
++			REG_WR(bp, write_arb_addr[i].add,
++			       val | (write_arb_data[i][w_order].add << 10));
++
++			val = REG_RD(bp, write_arb_addr[i].ubound);
++			REG_WR(bp, write_arb_addr[i].ubound,
++			       val | (write_arb_data[i][w_order].ubound << 7));
++		}
++	}
++
++	val =  write_arb_data[NUM_WR_Q-1][w_order].add;
++	val += write_arb_data[NUM_WR_Q-1][w_order].ubound << 10;
++	val += write_arb_data[NUM_WR_Q-1][w_order].l << 17;
++	REG_WR(bp, PXP2_REG_PSWRQ_BW_RD, val);
++
++	val =  read_arb_data[NUM_RD_Q-1][r_order].add;
++	val += read_arb_data[NUM_RD_Q-1][r_order].ubound << 10;
++	val += read_arb_data[NUM_RD_Q-1][r_order].l << 17;
++	REG_WR(bp, PXP2_REG_PSWRQ_BW_WR, val);
++
++	REG_WR(bp, PXP2_REG_RQ_WR_MBS0, w_order);
++	REG_WR(bp, PXP2_REG_RQ_WR_MBS1, w_order);
++	REG_WR(bp, PXP2_REG_RQ_RD_MBS0, r_order);
++	REG_WR(bp, PXP2_REG_RQ_RD_MBS1, r_order);
++
++	if (r_order == MAX_RD_ORD)
++		REG_WR(bp, PXP2_REG_RQ_PDR_LIMIT, 0xe00);
++
++	REG_WR(bp, PXP2_REG_WR_USDMDP_TH, (0x18 << w_order));
++
++	if (CHIP_IS_E1H(bp)) {
++		val = ((w_order == 0) ? 2 : 3);
++		REG_WR(bp, PXP2_REG_WR_HC_MPS, val);
++		REG_WR(bp, PXP2_REG_WR_USDM_MPS, val);
++		REG_WR(bp, PXP2_REG_WR_CSDM_MPS, val);
++		REG_WR(bp, PXP2_REG_WR_TSDM_MPS, val);
++		REG_WR(bp, PXP2_REG_WR_XSDM_MPS, val);
++		REG_WR(bp, PXP2_REG_WR_QM_MPS, val);
++		REG_WR(bp, PXP2_REG_WR_TM_MPS, val);
++		REG_WR(bp, PXP2_REG_WR_SRC_MPS, val);
++		REG_WR(bp, PXP2_REG_WR_DBG_MPS, val);
++		REG_WR(bp, PXP2_REG_WR_DMAE_MPS, 2); /* DMAE is special */
++		REG_WR(bp, PXP2_REG_WR_CDU_MPS, val);
++	}
++}
++
++/*****************************************************************************
++ * Description:
++ *         Calculates crc 8 on a word value: polynomial 0-1-2-8
++ *         Code was translated from Verilog.
++ ****************************************************************************/
++static u8 calc_crc8(u32 data, u8 crc)
++{
++	u8 D[32];
++	u8 NewCRC[8];
++	u8 C[8];
++	u8 crc_res;
++	u8 i;
++
++	/* split the data into 31 bits */
++	for (i = 0; i < 32; i++) {
++		D[i] = data & 1;
++		data = data >> 1;
++	}
++
++	/* split the crc into 8 bits */
++	for (i = 0; i < 8; i++) {
++		C[i] = crc & 1;
++		crc = crc >> 1;
++	}
++
++	NewCRC[0] = D[31] ^ D[30] ^ D[28] ^ D[23] ^ D[21] ^ D[19] ^ D[18] ^
++		D[16] ^ D[14] ^ D[12] ^ D[8] ^ D[7] ^ D[6] ^ D[0] ^ C[4] ^
++		C[6] ^ C[7];
++	NewCRC[1] = D[30] ^ D[29] ^ D[28] ^ D[24] ^ D[23] ^ D[22] ^ D[21] ^
++		D[20] ^ D[18] ^ D[17] ^ D[16] ^ D[15] ^ D[14] ^ D[13] ^
++		D[12] ^ D[9] ^ D[6] ^ D[1] ^ D[0] ^ C[0] ^ C[4] ^ C[5] ^ C[6];
++	NewCRC[2] = D[29] ^ D[28] ^ D[25] ^ D[24] ^ D[22] ^ D[17] ^ D[15] ^
++		D[13] ^ D[12] ^ D[10] ^ D[8] ^ D[6] ^ D[2] ^ D[1] ^ D[0] ^
++		C[0] ^ C[1] ^ C[4] ^ C[5];
++	NewCRC[3] = D[30] ^ D[29] ^ D[26] ^ D[25] ^ D[23] ^ D[18] ^ D[16] ^
++		D[14] ^ D[13] ^ D[11] ^ D[9] ^ D[7] ^ D[3] ^ D[2] ^ D[1] ^
++		C[1] ^ C[2] ^ C[5] ^ C[6];
++	NewCRC[4] = D[31] ^ D[30] ^ D[27] ^ D[26] ^ D[24] ^ D[19] ^ D[17] ^
++		D[15] ^ D[14] ^ D[12] ^ D[10] ^ D[8] ^ D[4] ^ D[3] ^ D[2] ^
++		C[0] ^ C[2] ^ C[3] ^ C[6] ^ C[7];
++	NewCRC[5] = D[31] ^ D[28] ^ D[27] ^ D[25] ^ D[20] ^ D[18] ^ D[16] ^
++		D[15] ^ D[13] ^ D[11] ^ D[9] ^ D[5] ^ D[4] ^ D[3] ^ C[1] ^
++		C[3] ^ C[4] ^ C[7];
++	NewCRC[6] = D[29] ^ D[28] ^ D[26] ^ D[21] ^ D[19] ^ D[17] ^ D[16] ^
++		D[14] ^ D[12] ^ D[10] ^ D[6] ^ D[5] ^ D[4] ^ C[2] ^ C[4] ^
++		C[5];
++	NewCRC[7] = D[30] ^ D[29] ^ D[27] ^ D[22] ^ D[20] ^ D[18] ^ D[17] ^
++		D[15] ^ D[13] ^ D[11] ^ D[7] ^ D[6] ^ D[5] ^ C[3] ^ C[5] ^
++		C[6];
++
++	crc_res = 0;
++	for (i = 0; i < 8; i++)
++		crc_res |= (NewCRC[i] << i);
++
++	return crc_res;
++}
++
++#endif /* BNX2X_INIT_OPS_H */
+diff -urpN linux-2.6-2.6.30~rc6.orig/drivers/net/bnx2x_main.c linux-2.6-2.6.30~rc6/drivers/net/bnx2x_main.c
+--- linux-2.6-2.6.30~rc6.orig/drivers/net/bnx2x_main.c	2009-05-19 03:52:19.000000000 -0600
++++ linux-2.6-2.6.30~rc6/drivers/net/bnx2x_main.c	2009-05-26 15:20:01.000000000 -0600
+@@ -53,12 +53,19 @@
+ 
+ #include "bnx2x.h"
+ #include "bnx2x_init.h"
++#include "bnx2x_init_ops.h"
+ #include "bnx2x_dump.h"
+ 
+ #define DRV_MODULE_VERSION	"1.48.105"
+ #define DRV_MODULE_RELDATE	"2009/03/02"
+ #define BNX2X_BC_VER		0x040200
+ 
++#include <linux/firmware.h>
++#include "bnx2x_fw_file_hdr.h"
++/* FW files */
++#define FW_FILE_PREFIX_E1		"bnx2x-e1-"
++#define FW_FILE_PREFIX_E1H		"bnx2x-e1h-"
++
+ /* Time in jiffies before concluding the transmitter is hung */
+ #define TX_TIMEOUT		(5*HZ)
+ 
+@@ -5232,13 +5239,15 @@ static void bnx2x_gunzip_end(struct bnx2
+ 	}
+ }
+ 
+-static int bnx2x_gunzip(struct bnx2x *bp, u8 *zbuf, int len)
++static int bnx2x_gunzip(struct bnx2x *bp, const u8 *zbuf, int len)
+ {
+ 	int n, rc;
+ 
+ 	/* check gzip header */
+-	if ((zbuf[0] != 0x1f) || (zbuf[1] != 0x8b) || (zbuf[2] != Z_DEFLATED))
++	if ((zbuf[0] != 0x1f) || (zbuf[1] != 0x8b) || (zbuf[2] != Z_DEFLATED)) {
++		BNX2X_ERR("Bad gzip header\n");
+ 		return -EINVAL;
++	}
+ 
+ 	n = 10;
+ 
+@@ -5247,7 +5256,7 @@ static int bnx2x_gunzip(struct bnx2x *bp
+ 	if (zbuf[3] & FNAME)
+ 		while ((zbuf[n++] != 0) && (n < len));
+ 
+-	bp->strm->next_in = zbuf + n;
++	bp->strm->next_in = (typeof(bp->strm->next_in))zbuf + n;
+ 	bp->strm->avail_in = len - n;
+ 	bp->strm->next_out = bp->gunzip_buf;
+ 	bp->strm->avail_out = FW_BUF_SIZE;
+@@ -5369,8 +5378,8 @@ static int bnx2x_int_mem_test(struct bnx
+ 	msleep(50);
+ 	REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0x03);
+ 	msleep(50);
+-	bnx2x_init_block(bp, BRB1_COMMON_START, BRB1_COMMON_END);
+-	bnx2x_init_block(bp, PRS_COMMON_START, PRS_COMMON_END);
++	bnx2x_init_block(bp, BRB1_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, PRS_BLOCK, COMMON_STAGE);
+ 
+ 	DP(NETIF_MSG_HW, "part2\n");
+ 
+@@ -5434,8 +5443,8 @@ static int bnx2x_int_mem_test(struct bnx
+ 	msleep(50);
+ 	REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0x03);
+ 	msleep(50);
+-	bnx2x_init_block(bp, BRB1_COMMON_START, BRB1_COMMON_END);
+-	bnx2x_init_block(bp, PRS_COMMON_START, PRS_COMMON_END);
++	bnx2x_init_block(bp, BRB1_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, PRS_BLOCK, COMMON_STAGE);
+ #ifndef BCM_ISCSI
+ 	/* set NIC mode */
+ 	REG_WR(bp, PRS_REG_NIC_MODE, 1);
+@@ -5510,7 +5519,7 @@ static int bnx2x_init_common(struct bnx2
+ 	REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0xffffffff);
+ 	REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, 0xfffc);
+ 
+-	bnx2x_init_block(bp, MISC_COMMON_START, MISC_COMMON_END);
++	bnx2x_init_block(bp, MISC_BLOCK, COMMON_STAGE);
+ 	if (CHIP_IS_E1H(bp))
+ 		REG_WR(bp, MISC_REG_E1HMF_MODE, IS_E1HMF(bp));
+ 
+@@ -5518,14 +5527,14 @@ static int bnx2x_init_common(struct bnx2
+ 	msleep(30);
+ 	REG_WR(bp, MISC_REG_LCPLL_CTRL_REG_2, 0x0);
+ 
+-	bnx2x_init_block(bp, PXP_COMMON_START, PXP_COMMON_END);
++	bnx2x_init_block(bp, PXP_BLOCK, COMMON_STAGE);
+ 	if (CHIP_IS_E1(bp)) {
+ 		/* enable HW interrupt from PXP on USDM overflow
+ 		   bit 16 on INT_MASK_0 */
+ 		REG_WR(bp, PXP_REG_PXP_INT_MASK_0, 0);
+ 	}
+ 
+-	bnx2x_init_block(bp, PXP2_COMMON_START, PXP2_COMMON_END);
++	bnx2x_init_block(bp, PXP2_BLOCK, COMMON_STAGE);
+ 	bnx2x_init_pxp(bp);
+ 
+ #ifdef __BIG_ENDIAN
+@@ -5571,60 +5580,60 @@ static int bnx2x_init_common(struct bnx2
+ 	REG_WR(bp, PXP2_REG_RQ_DISABLE_INPUTS, 0);
+ 	REG_WR(bp, PXP2_REG_RD_DISABLE_INPUTS, 0);
+ 
+-	bnx2x_init_block(bp, DMAE_COMMON_START, DMAE_COMMON_END);
++	bnx2x_init_block(bp, DMAE_BLOCK, COMMON_STAGE);
+ 
+ 	/* clean the DMAE memory */
+ 	bp->dmae_ready = 1;
+ 	bnx2x_init_fill(bp, TSEM_REG_PRAM, 0, 8);
+ 
+-	bnx2x_init_block(bp, TCM_COMMON_START, TCM_COMMON_END);
+-	bnx2x_init_block(bp, UCM_COMMON_START, UCM_COMMON_END);
+-	bnx2x_init_block(bp, CCM_COMMON_START, CCM_COMMON_END);
+-	bnx2x_init_block(bp, XCM_COMMON_START, XCM_COMMON_END);
++	bnx2x_init_block(bp, TCM_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, UCM_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, CCM_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, XCM_BLOCK, COMMON_STAGE);
+ 
+ 	bnx2x_read_dmae(bp, XSEM_REG_PASSIVE_BUFFER, 3);
+ 	bnx2x_read_dmae(bp, CSEM_REG_PASSIVE_BUFFER, 3);
+ 	bnx2x_read_dmae(bp, TSEM_REG_PASSIVE_BUFFER, 3);
+ 	bnx2x_read_dmae(bp, USEM_REG_PASSIVE_BUFFER, 3);
+ 
+-	bnx2x_init_block(bp, QM_COMMON_START, QM_COMMON_END);
++	bnx2x_init_block(bp, QM_BLOCK, COMMON_STAGE);
+ 	/* soft reset pulse */
+ 	REG_WR(bp, QM_REG_SOFT_RESET, 1);
+ 	REG_WR(bp, QM_REG_SOFT_RESET, 0);
+ 
+ #ifdef BCM_ISCSI
+-	bnx2x_init_block(bp, TIMERS_COMMON_START, TIMERS_COMMON_END);
++	bnx2x_init_block(bp, TIMERS_BLOCK, COMMON_STAGE);
+ #endif
+ 
+-	bnx2x_init_block(bp, DQ_COMMON_START, DQ_COMMON_END);
++	bnx2x_init_block(bp, DQ_BLOCK, COMMON_STAGE);
+ 	REG_WR(bp, DORQ_REG_DPM_CID_OFST, BCM_PAGE_SHIFT);
+ 	if (!CHIP_REV_IS_SLOW(bp)) {
+ 		/* enable hw interrupt from doorbell Q */
+ 		REG_WR(bp, DORQ_REG_DORQ_INT_MASK, 0);
+ 	}
+ 
+-	bnx2x_init_block(bp, BRB1_COMMON_START, BRB1_COMMON_END);
+-	bnx2x_init_block(bp, PRS_COMMON_START, PRS_COMMON_END);
++	bnx2x_init_block(bp, BRB1_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, PRS_BLOCK, COMMON_STAGE);
+ 	REG_WR(bp, PRS_REG_A_PRSU_20, 0xf);
+ 	/* set NIC mode */
+ 	REG_WR(bp, PRS_REG_NIC_MODE, 1);
+ 	if (CHIP_IS_E1H(bp))
+ 		REG_WR(bp, PRS_REG_E1HOV_MODE, IS_E1HMF(bp));
+ 
+-	bnx2x_init_block(bp, TSDM_COMMON_START, TSDM_COMMON_END);
+-	bnx2x_init_block(bp, CSDM_COMMON_START, CSDM_COMMON_END);
+-	bnx2x_init_block(bp, USDM_COMMON_START, USDM_COMMON_END);
+-	bnx2x_init_block(bp, XSDM_COMMON_START, XSDM_COMMON_END);
++	bnx2x_init_block(bp, TSDM_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, CSDM_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, USDM_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, XSDM_BLOCK, COMMON_STAGE);
+ 
+ 	bnx2x_init_fill(bp, TSTORM_INTMEM_ADDR, 0, STORM_INTMEM_SIZE(bp));
+ 	bnx2x_init_fill(bp, USTORM_INTMEM_ADDR, 0, STORM_INTMEM_SIZE(bp));
+ 	bnx2x_init_fill(bp, CSTORM_INTMEM_ADDR, 0, STORM_INTMEM_SIZE(bp));
+ 	bnx2x_init_fill(bp, XSTORM_INTMEM_ADDR, 0, STORM_INTMEM_SIZE(bp));
+ 
+-	bnx2x_init_block(bp, TSEM_COMMON_START, TSEM_COMMON_END);
+-	bnx2x_init_block(bp, USEM_COMMON_START, USEM_COMMON_END);
+-	bnx2x_init_block(bp, CSEM_COMMON_START, CSEM_COMMON_END);
+-	bnx2x_init_block(bp, XSEM_COMMON_START, XSEM_COMMON_END);
++	bnx2x_init_block(bp, TSEM_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, USEM_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, CSEM_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, XSEM_BLOCK, COMMON_STAGE);
+ 
+ 	/* sync semi rtc */
+ 	REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_CLEAR,
+@@ -5632,16 +5641,16 @@ static int bnx2x_init_common(struct bnx2
+ 	REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET,
+ 	       0x80000000);
+ 
+-	bnx2x_init_block(bp, UPB_COMMON_START, UPB_COMMON_END);
+-	bnx2x_init_block(bp, XPB_COMMON_START, XPB_COMMON_END);
+-	bnx2x_init_block(bp, PBF_COMMON_START, PBF_COMMON_END);
++	bnx2x_init_block(bp, UPB_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, XPB_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, PBF_BLOCK, COMMON_STAGE);
+ 
+ 	REG_WR(bp, SRC_REG_SOFT_RST, 1);
+ 	for (i = SRC_REG_KEYRSS0_0; i <= SRC_REG_KEYRSS1_9; i += 4) {
+ 		REG_WR(bp, i, 0xc0cac01a);
+ 		/* TODO: replace with something meaningful */
+ 	}
+-	bnx2x_init_block(bp, SRCH_COMMON_START, SRCH_COMMON_END);
++	bnx2x_init_block(bp, SRCH_BLOCK, COMMON_STAGE);
+ 	REG_WR(bp, SRC_REG_SOFT_RST, 0);
+ 
+ 	if (sizeof(union cdu_context) != 1024)
+@@ -5649,7 +5658,7 @@ static int bnx2x_init_common(struct bnx2
+ 		printk(KERN_ALERT PFX "please adjust the size of"
+ 		       " cdu_context(%ld)\n", (long)sizeof(union cdu_context));
+ 
+-	bnx2x_init_block(bp, CDU_COMMON_START, CDU_COMMON_END);
++	bnx2x_init_block(bp, CDU_BLOCK, COMMON_STAGE);
+ 	val = (4 << 24) + (0 << 12) + 1024;
+ 	REG_WR(bp, CDU_REG_CDU_GLOBAL_PARAMS, val);
+ 	if (CHIP_IS_E1(bp)) {
+@@ -5658,7 +5667,7 @@ static int bnx2x_init_common(struct bnx2
+ 		REG_WR(bp, CDU_REG_CDU_DEBUG, 0);
+ 	}
+ 
+-	bnx2x_init_block(bp, CFC_COMMON_START, CFC_COMMON_END);
++	bnx2x_init_block(bp, CFC_BLOCK, COMMON_STAGE);
+ 	REG_WR(bp, CFC_REG_INIT_REG, 0x7FF);
+ 	/* enable context validation interrupt from CFC */
+ 	REG_WR(bp, CFC_REG_CFC_INT_MASK, 0);
+@@ -5666,20 +5675,25 @@ static int bnx2x_init_common(struct bnx2
+ 	/* set the thresholds to prevent CFC/CDU race */
+ 	REG_WR(bp, CFC_REG_DEBUG0, 0x20020000);
+ 
+-	bnx2x_init_block(bp, HC_COMMON_START, HC_COMMON_END);
+-	bnx2x_init_block(bp, MISC_AEU_COMMON_START, MISC_AEU_COMMON_END);
++	bnx2x_init_block(bp, HC_BLOCK, COMMON_STAGE);
++	bnx2x_init_block(bp, MISC_AEU_BLOCK, COMMON_STAGE);
+ 
+ 	/* PXPCS COMMON comes here */
++	bnx2x_init_block(bp, PXPCS_BLOCK, COMMON_STAGE);
+ 	/* Reset PCIE errors for debug */
+ 	REG_WR(bp, 0x2814, 0xffffffff);
+ 	REG_WR(bp, 0x3820, 0xffffffff);
+ 
+ 	/* EMAC0 COMMON comes here */
++	bnx2x_init_block(bp, EMAC0_BLOCK, COMMON_STAGE);
+ 	/* EMAC1 COMMON comes here */
++	bnx2x_init_block(bp, EMAC1_BLOCK, COMMON_STAGE);
+ 	/* DBU COMMON comes here */
++	bnx2x_init_block(bp, DBU_BLOCK, COMMON_STAGE);
+ 	/* DBG COMMON comes here */
++	bnx2x_init_block(bp, DBG_BLOCK, COMMON_STAGE);
+ 
+-	bnx2x_init_block(bp, NIG_COMMON_START, NIG_COMMON_END);
++	bnx2x_init_block(bp, NIG_BLOCK, COMMON_STAGE);
+ 	if (CHIP_IS_E1H(bp)) {
+ 		REG_WR(bp, NIG_REG_LLH_MF_MODE, IS_E1HMF(bp));
+ 		REG_WR(bp, NIG_REG_LLH_E1HOV_MODE, IS_E1HMF(bp));
+@@ -5763,6 +5777,7 @@ static int bnx2x_init_common(struct bnx2
+ static int bnx2x_init_port(struct bnx2x *bp)
+ {
+ 	int port = BP_PORT(bp);
++	int init_stage = port ? PORT1_STAGE : PORT0_STAGE;
+ 	u32 low, high;
+ 	u32 val;
+ 
+@@ -5771,7 +5786,9 @@ static int bnx2x_init_port(struct bnx2x 
+ 	REG_WR(bp, NIG_REG_MASK_INTERRUPT_PORT0 + port*4, 0);
+ 
+ 	/* Port PXP comes here */
++	bnx2x_init_block(bp, PXP_BLOCK, init_stage);
+ 	/* Port PXP2 comes here */
++	bnx2x_init_block(bp, PXP2_BLOCK, init_stage);
+ #ifdef BCM_ISCSI
+ 	/* Port0  1
+ 	 * Port1  385 */
+@@ -5798,21 +5815,19 @@ static int bnx2x_init_port(struct bnx2x 
+ 	REG_WR(bp, PXP2_REG_PSWRQ_SRC0_L2P + func*4, PXP_ONE_ILT(i));
+ #endif
+ 	/* Port CMs come here */
+-	bnx2x_init_block(bp, (port ? XCM_PORT1_START : XCM_PORT0_START),
+-			     (port ? XCM_PORT1_END : XCM_PORT0_END));
++	bnx2x_init_block(bp, XCM_BLOCK, init_stage);
+ 
+ 	/* Port QM comes here */
+ #ifdef BCM_ISCSI
+ 	REG_WR(bp, TM_REG_LIN0_SCAN_TIME + func*4, 1024/64*20);
+ 	REG_WR(bp, TM_REG_LIN0_MAX_ACTIVE_CID + func*4, 31);
+ 
+-	bnx2x_init_block(bp, func ? TIMERS_PORT1_START : TIMERS_PORT0_START,
+-			     func ? TIMERS_PORT1_END : TIMERS_PORT0_END);
++	bnx2x_init_block(bp, TIMERS_BLOCK, init_stage);
+ #endif
+ 	/* Port DQ comes here */
++	bnx2x_init_block(bp, DQ_BLOCK, init_stage);
+ 
+-	bnx2x_init_block(bp, (port ? BRB1_PORT1_START : BRB1_PORT0_START),
+-			     (port ? BRB1_PORT1_END : BRB1_PORT0_END));
++	bnx2x_init_block(bp, BRB1_BLOCK, init_stage);
+ 	if (CHIP_REV_IS_SLOW(bp) && !CHIP_IS_E1H(bp)) {
+ 		/* no pause for emulation and FPGA */
+ 		low = 0;
+@@ -5837,25 +5852,27 @@ static int bnx2x_init_port(struct bnx2x 
+ 
+ 
+ 	/* Port PRS comes here */
++	bnx2x_init_block(bp, PRS_BLOCK, init_stage);
+ 	/* Port TSDM comes here */
++	bnx2x_init_block(bp, TSDM_BLOCK, init_stage);
+ 	/* Port CSDM comes here */
++	bnx2x_init_block(bp, CSDM_BLOCK, init_stage);
+ 	/* Port USDM comes here */
++	bnx2x_init_block(bp, USDM_BLOCK, init_stage);
+ 	/* Port XSDM comes here */
++	bnx2x_init_block(bp, XSDM_BLOCK, init_stage);
+ 
+-	bnx2x_init_block(bp, port ? TSEM_PORT1_START : TSEM_PORT0_START,
+-			     port ? TSEM_PORT1_END : TSEM_PORT0_END);
+-	bnx2x_init_block(bp, port ? USEM_PORT1_START : USEM_PORT0_START,
+-			     port ? USEM_PORT1_END : USEM_PORT0_END);
+-	bnx2x_init_block(bp, port ? CSEM_PORT1_START : CSEM_PORT0_START,
+-			     port ? CSEM_PORT1_END : CSEM_PORT0_END);
+-	bnx2x_init_block(bp, port ? XSEM_PORT1_START : XSEM_PORT0_START,
+-			     port ? XSEM_PORT1_END : XSEM_PORT0_END);
++	bnx2x_init_block(bp, TSEM_BLOCK, init_stage);
++	bnx2x_init_block(bp, USEM_BLOCK, init_stage);
++	bnx2x_init_block(bp, CSEM_BLOCK, init_stage);
++	bnx2x_init_block(bp, XSEM_BLOCK, init_stage);
+ 
+ 	/* Port UPB comes here */
++	bnx2x_init_block(bp, UPB_BLOCK, init_stage);
+ 	/* Port XPB comes here */
++	bnx2x_init_block(bp, XPB_BLOCK, init_stage);
+ 
+-	bnx2x_init_block(bp, port ? PBF_PORT1_START : PBF_PORT0_START,
+-			     port ? PBF_PORT1_END : PBF_PORT0_END);
++	bnx2x_init_block(bp, PBF_BLOCK, init_stage);
+ 
+ 	/* configure PBF to work without PAUSE mtu 9000 */
+ 	REG_WR(bp, PBF_REG_P0_PAUSE_ENABLE + port*4, 0);
+@@ -5885,18 +5902,17 @@ static int bnx2x_init_port(struct bnx2x 
+ 	/* Port SRCH comes here */
+ #endif
+ 	/* Port CDU comes here */
++	bnx2x_init_block(bp, CDU_BLOCK, init_stage);
+ 	/* Port CFC comes here */
++	bnx2x_init_block(bp, CFC_BLOCK, init_stage);
+ 
+ 	if (CHIP_IS_E1(bp)) {
+ 		REG_WR(bp, HC_REG_LEADING_EDGE_0 + port*8, 0);
+ 		REG_WR(bp, HC_REG_TRAILING_EDGE_0 + port*8, 0);
+ 	}
+-	bnx2x_init_block(bp, port ? HC_PORT1_START : HC_PORT0_START,
+-			     port ? HC_PORT1_END : HC_PORT0_END);
++	bnx2x_init_block(bp, HC_BLOCK, init_stage);
+ 
+-	bnx2x_init_block(bp, port ? MISC_AEU_PORT1_START :
+-				    MISC_AEU_PORT0_START,
+-			     port ? MISC_AEU_PORT1_END : MISC_AEU_PORT0_END);
++	bnx2x_init_block(bp, MISC_AEU_BLOCK, init_stage);
+ 	/* init aeu_mask_attn_func_0/1:
+ 	 *  - SF mode: bits 3-7 are masked. only bits 0-2 are in use
+ 	 *  - MF mode: bit 3 is masked. bits 0-2 are in use as in SF
+@@ -5905,13 +5921,17 @@ static int bnx2x_init_port(struct bnx2x 
+ 	       (IS_E1HMF(bp) ? 0xF7 : 0x7));
+ 
+ 	/* Port PXPCS comes here */
++	bnx2x_init_block(bp, PXPCS_BLOCK, init_stage);
+ 	/* Port EMAC0 comes here */
++	bnx2x_init_block(bp, EMAC0_BLOCK, init_stage);
+ 	/* Port EMAC1 comes here */
++	bnx2x_init_block(bp, EMAC1_BLOCK, init_stage);
+ 	/* Port DBU comes here */
++	bnx2x_init_block(bp, DBU_BLOCK, init_stage);
+ 	/* Port DBG comes here */
++	bnx2x_init_block(bp, DBG_BLOCK, init_stage);
+ 
+-	bnx2x_init_block(bp, port ? NIG_PORT1_START : NIG_PORT0_START,
+-			     port ? NIG_PORT1_END : NIG_PORT0_END);
++	bnx2x_init_block(bp, NIG_BLOCK, init_stage);
+ 
+ 	REG_WR(bp, NIG_REG_XGXS_SERDES0_MODE_SEL + port*4, 1);
+ 
+@@ -5931,7 +5951,9 @@ static int bnx2x_init_port(struct bnx2x 
+ 	}
+ 
+ 	/* Port MCP comes here */
++	bnx2x_init_block(bp, MCP_BLOCK, init_stage);
+ 	/* Port DMAE comes here */
++	bnx2x_init_block(bp, DMAE_BLOCK, init_stage);
+ 
+ 	switch (XGXS_EXT_PHY_TYPE(bp->link_params.ext_phy_config)) {
+ 	case PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726:
+@@ -6036,7 +6058,7 @@ static int bnx2x_init_func(struct bnx2x 
+ 	if (CHIP_IS_E1H(bp)) {
+ 		for (i = 0; i < 9; i++)
+ 			bnx2x_init_block(bp,
+-					 cm_start[func][i], cm_end[func][i]);
++					 cm_blocks[i], FUNC0_STAGE + func);
+ 
+ 		REG_WR(bp, NIG_REG_LLH0_FUNC_EN + port*8, 1);
+ 		REG_WR(bp, NIG_REG_LLH0_FUNC_VLAN_ID + port*8, bp->e1hov);
+@@ -6049,7 +6071,7 @@ static int bnx2x_init_func(struct bnx2x 
+ 		REG_WR(bp, HC_REG_LEADING_EDGE_0 + port*8, 0);
+ 		REG_WR(bp, HC_REG_TRAILING_EDGE_0 + port*8, 0);
+ 	}
+-	bnx2x_init_block(bp, hc_limits[func][0], hc_limits[func][1]);
++	bnx2x_init_block(bp, HC_BLOCK, FUNC0_STAGE + func);
+ 
+ 	/* Reset PCIE errors for debug */
+ 	REG_WR(bp, 0x2114, 0xffffffff);
+@@ -11082,6 +11104,190 @@ static int __devinit bnx2x_get_pcie_spee
+ 	val = (val & PCICFG_LINK_SPEED) >> PCICFG_LINK_SPEED_SHIFT;
+ 	return val;
+ }
++static int __devinit bnx2x_check_firmware(struct bnx2x *bp)
++{
++	struct bnx2x_fw_file_hdr *fw_hdr;
++	struct bnx2x_fw_file_section *sections;
++	u16 *ops_offsets;
++	u32 offset, len, num_ops;
++	int i;
++	const struct firmware *firmware = bp->firmware;
++	const u8 * fw_ver;
++
++	if (firmware->size < sizeof(struct bnx2x_fw_file_hdr))
++		return -EINVAL;
++
++	fw_hdr = (struct bnx2x_fw_file_hdr *)firmware->data;
++	sections = (struct bnx2x_fw_file_section *)fw_hdr;
++
++	/* Make sure none of the offsets and sizes make us read beyond
++	 * the end of the firmware data */
++	for (i = 0; i < sizeof(*fw_hdr) / sizeof(*sections); i++) {
++		offset = be32_to_cpu(sections[i].offset);
++		len = be32_to_cpu(sections[i].len);
++		if (offset + len > firmware->size) {
++			printk(KERN_ERR PFX "Section %d length is out of bounds\n", i);
++			return -EINVAL;
++		}
++	}
++
++	/* Likewise for the init_ops offsets */
++	offset = be32_to_cpu(fw_hdr->init_ops_offsets.offset);
++	ops_offsets = (u16 *)(firmware->data + offset);
++	num_ops = be32_to_cpu(fw_hdr->init_ops.len) / sizeof(struct raw_op);
++
++	for (i = 0; i < be32_to_cpu(fw_hdr->init_ops_offsets.len) / 2; i++) {
++		if (be16_to_cpu(ops_offsets[i]) > num_ops) {
++			printk(KERN_ERR PFX "Section offset %d is out of bounds\n", i);
++			return -EINVAL;
++		}
++	}
++
++	/* Check FW version */
++	offset = be32_to_cpu(fw_hdr->fw_version.offset);
++	fw_ver = firmware->data + offset;
++	if ((fw_ver[0] != BCM_5710_FW_MAJOR_VERSION) ||
++	    (fw_ver[1] != BCM_5710_FW_MINOR_VERSION) ||
++	    (fw_ver[2] != BCM_5710_FW_REVISION_VERSION) ||
++	    (fw_ver[3] != BCM_5710_FW_ENGINEERING_VERSION)) {
++		printk(KERN_ERR PFX "Bad FW version:%d.%d.%d.%d."
++				    " Should be %d.%d.%d.%d\n",
++		       fw_ver[0], fw_ver[1], fw_ver[2],
++		       fw_ver[3], BCM_5710_FW_MAJOR_VERSION,
++		       BCM_5710_FW_MINOR_VERSION,
++		       BCM_5710_FW_REVISION_VERSION,
++		       BCM_5710_FW_ENGINEERING_VERSION);
++                return -EINVAL;
++	}
++
++	return 0;
++}
++
++static void inline be32_to_cpu_n(const u8 *_source, u8 *_target, u32 n)
++{
++	u32 i;
++	const __be32 *source = (const __be32*)_source;
++	u32 *target = (u32*)_target;
++
++	for (i = 0; i < n/4; i++)
++		target[i] = be32_to_cpu(source[i]);
++}
++
++/*
++   Ops array is stored in the following format:
++   {op(8bit), offset(24bit, big endian), data(32bit, big endian)}
++ */
++static void inline bnx2x_prep_ops(const u8 *_source, u8 *_target, u32 n)
++{
++	u32 i, j, tmp;
++	const __be32 *source = (const __be32*)_source;
++	struct raw_op *target = (struct raw_op*)_target;
++
++	for (i = 0, j = 0; i < n/8; i++, j+=2) {
++		tmp = be32_to_cpu(source[j]);
++		target[i].op = (tmp >> 24) & 0xff;
++		target[i].offset =  tmp & 0xffffff;
++		target[i].raw_data = be32_to_cpu(source[j+1]);
++	}
++}
++static void inline be16_to_cpu_n(const u8 *_source, u8 *_target, u32 n)
++{
++	u32 i;
++	u16 *target = (u16*)_target;
++	const __be16 *source = (const __be16*)_source;
++
++	for (i = 0; i < n/2; i++)
++		target[i] = be16_to_cpu(source[i]);
++}
++
++#define BNX2X_ALLOC_AND_SET(arr, lbl, func) \
++	do {   \
++		u32 len = be32_to_cpu(fw_hdr->arr.len);   \
++		bp->arr = kmalloc(len, GFP_KERNEL);  \
++		if (!bp->arr) { \
++			printk(KERN_ERR PFX "Failed to allocate %d bytes for "#arr"\n", len); \
++			goto lbl; \
++		} \
++		func(bp->firmware->data + \
++			be32_to_cpu(fw_hdr->arr.offset), \
++			(u8*)bp->arr, len); \
++	} while (0)
++
++
++static int __devinit bnx2x_init_firmware(struct bnx2x *bp, struct device *dev)
++{
++	char fw_file_name[40] = {0};
++        int rc, offset;
++	struct bnx2x_fw_file_hdr *fw_hdr;
++
++	/* Create a FW file name */
++	if (CHIP_IS_E1(bp))
++                offset = sprintf(fw_file_name, FW_FILE_PREFIX_E1);
++	else
++		offset = sprintf(fw_file_name, FW_FILE_PREFIX_E1H);
++
++	sprintf(fw_file_name + offset, "%d.%d.%d.%d.fw",
++		BCM_5710_FW_MAJOR_VERSION,
++                BCM_5710_FW_MINOR_VERSION,
++                BCM_5710_FW_REVISION_VERSION,
++                BCM_5710_FW_ENGINEERING_VERSION);
++
++	printk(KERN_INFO PFX "Loading %s\n", fw_file_name);
++
++	rc = request_firmware(&bp->firmware, fw_file_name, dev);
++	if (rc) {
++		printk(KERN_ERR PFX "Can't load firmware file %s\n", fw_file_name);
++		goto request_firmware_exit;
++	}
++
++	rc = bnx2x_check_firmware(bp);
++	if (rc) {
++		printk(KERN_ERR PFX "Corrupt firmware file %s\n", fw_file_name);
++		goto request_firmware_exit;
++	}
++
++	fw_hdr = (struct bnx2x_fw_file_hdr *)bp->firmware->data;
++
++	/* Initialize the pointers to the init arrays */
++	/* Blob */
++	BNX2X_ALLOC_AND_SET(init_data, request_firmware_exit, be32_to_cpu_n);
++
++	/* Opcodes */
++	BNX2X_ALLOC_AND_SET(init_ops, init_ops_alloc_err, bnx2x_prep_ops);
++
++	/* Offsets */
++	BNX2X_ALLOC_AND_SET(init_ops_offsets, init_offsets_alloc_err, be16_to_cpu_n);
++
++	/* STORMs firmware */
++	bp->tsem_int_table_data = bp->firmware->data +
++		be32_to_cpu(fw_hdr->tsem_int_table_data.offset);
++	bp->tsem_pram_data      = bp->firmware->data +
++		be32_to_cpu(fw_hdr->tsem_pram_data.offset);
++	bp->usem_int_table_data = bp->firmware->data +
++		be32_to_cpu(fw_hdr->usem_int_table_data.offset);
++	bp->usem_pram_data      = bp->firmware->data +
++		be32_to_cpu(fw_hdr->usem_pram_data.offset);
++	bp->xsem_int_table_data = bp->firmware->data +
++		be32_to_cpu(fw_hdr->xsem_int_table_data.offset);
++	bp->xsem_pram_data      = bp->firmware->data +
++		be32_to_cpu(fw_hdr->xsem_pram_data.offset);
++	bp->csem_int_table_data = bp->firmware->data +
++		be32_to_cpu(fw_hdr->csem_int_table_data.offset);
++	bp->csem_pram_data      = bp->firmware->data +
++		be32_to_cpu(fw_hdr->csem_pram_data.offset);
++
++	return 0;
++init_offsets_alloc_err:
++	kfree(bp->init_ops);
++init_ops_alloc_err:
++	kfree(bp->init_data);
++request_firmware_exit:
++	release_firmware(bp->firmware);
++
++	return rc;
++}
++
++
+ 
+ static int __devinit bnx2x_init_one(struct pci_dev *pdev,
+ 				    const struct pci_device_id *ent)
+@@ -11116,6 +11322,13 @@ static int __devinit bnx2x_init_one(stru
+ 	if (rc)
+ 		goto init_one_exit;
+ 
++	/* Set init arrays */
++	rc = bnx2x_init_firmware(bp, &pdev->dev);
++	if (rc) {
++		printk(KERN_ERR PFX "Error loading firmware\n");
++		goto init_one_exit;
++	}
++
+ 	rc = register_netdev(dev);
+ 	if (rc) {
+ 		dev_err(&pdev->dev, "Cannot register net device\n");
+@@ -11163,6 +11376,11 @@ static void __devexit bnx2x_remove_one(s
+ 
+ 	unregister_netdev(dev);
+ 
++	kfree(bp->init_ops_offsets);
++	kfree(bp->init_ops);
++	kfree(bp->init_data);
++	release_firmware(bp->firmware);
++
+ 	if (bp->regview)
+ 		iounmap(bp->regview);
+ 
+@@ -11431,3 +11649,4 @@ static void __exit bnx2x_cleanup(void)
+ module_init(bnx2x_init);
+ module_exit(bnx2x_cleanup);
+ 
++
+diff -urpN linux-2.6-2.6.30~rc6.orig/drivers/net/Kconfig linux-2.6-2.6.30~rc6/drivers/net/Kconfig
+--- linux-2.6-2.6.30~rc6.orig/drivers/net/Kconfig	2009-05-19 03:53:04.000000000 -0600
++++ linux-2.6-2.6.30~rc6/drivers/net/Kconfig	2009-05-26 15:20:01.000000000 -0600
+@@ -2669,6 +2669,7 @@ config BNX2X
+ 	tristate "Broadcom NetXtremeII 10Gb support"
+ 	depends on BROKEN
+ 	depends on PCI
++	select FW_LOADER
+ 	select ZLIB_INFLATE
+ 	select LIBCRC32C
+ 	help
--- linux-2.6-2.6.30.orig/debian/patches/features/all/vserver/bindmount-dev.patch
+++ linux-2.6-2.6.30/debian/patches/features/all/vserver/bindmount-dev.patch
@@ -0,0 +1,41 @@
+--- a/fs/namespace.c	2007-02-07 14:15:28.000000000 +0100
++++ b/fs/namespace.c	2007-02-08 10:57:40.000000000 +0100
+@@ -988,6 +988,9 @@ static int do_loopback(struct nameidata 
+ 	if (!mnt)
+ 		goto out;
+ 
++	if (!capable(CAP_SYS_ADMIN) && (old_nd.path.mnt->mnt_flags & MNT_NODEV))
++		mnt_flags |= MNT_NODEV;
++
+ 	err = graft_tree(mnt, &nd->path);
+ 	if (err) {
+ 		LIST_HEAD(umount_list);
+@@ -1030,6 +1033,9 @@ static int do_remount(struct nameidata *
+ 	if (nd->path.dentry != nd->path.mnt->mnt_root)
+ 		return -EINVAL;
+ 
++	if (!capable(CAP_SYS_ADMIN))
++		mnt_flags |= MNT_NODEV;
++
+ 	down_write(&sb->s_umount);
+ 	if (flags & MS_BIND)
+ 		err = change_mount_flags(nd->path.mnt, flags);
+@@ -1138,6 +1144,9 @@ static int do_new_mount(struct nameidata
+ 	if (!vx_capable(CAP_SYS_ADMIN, VXC_SECURE_MOUNT))
+ 		return -EPERM;
+ 
++	if (!capable(CAP_SYS_ADMIN))
++		mnt_flags |= MNT_NODEV;
++
+ 	mnt = do_kern_mount(type, flags, name, data);
+ 	if (IS_ERR(mnt))
+ 		return PTR_ERR(mnt);
+@@ -1489,8 +1498,6 @@ long do_mount(char *dev_name, char *dir_
+ 	if (flags & MS_RDONLY)
+ 		mnt_flags |= MNT_READONLY;
+ 
+-	if (!capable(CAP_SYS_ADMIN))
+-		mnt_flags |= MNT_NODEV;
+ 	flags &= ~(MS_NOSUID | MS_NOEXEC | MS_NODEV | MS_ACTIVE |
+ 		   MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT);
+ 
--- linux-2.6-2.6.30.orig/debian/patches/features/all/vserver/gen-patch
+++ linux-2.6-2.6.30/debian/patches/features/all/vserver/gen-patch
@@ -0,0 +1,14 @@
+#!/bin/sh
+patch="$1"
+
+error() {
+  echo "$@";
+  exit 1
+}
+
+version=$(filterdiff -p 1 -i Makefile "$patch" | grep "+EXTRAVERSION" | sed -e 's,.*-vs,vs,')
+[ "$version" ] || error "can't find version!"
+
+file="$(dirname $0)/$version.patch"
+
+filterdiff -p 1 --strip 1 --addprefix=a/ -x Makefile -x include/linux/Kbuild -x include/linux/vserver/Kbuild "$patch" | grep -v "^diff" > "$file"
--- linux-2.6-2.6.30.orig/debian/patches/features/arm/clock_gating.patch
+++ linux-2.6-2.6.30/debian/patches/features/arm/clock_gating.patch
@@ -0,0 +1,236 @@
+From: Rabeeh Khoury <rabeeh@marvell.com>
+Date: Sun, 22 Mar 2009 15:30:32 +0000 (+0200)
+Subject: [ARM] Kirkwood: clock gating for unused peripherals
+X-Git-Url:
+http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=80d8a1c2acd885a69259640fa6d789b714c9f7b9
+
+[ARM] Kirkwood: clock gating for unused peripherals
+
+To save power:
+
+1. Enabling clock gating of unused peripherals
+
+2. PLL and PHY of the units are also disabled (when possible.
+
+Signed-off-by: Rabeeh Khoury <rabeeh@marvell.com>
+Signed-off-by: Nicolas Pitre <nico@marvell.com>
+---
+
+diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
+index 6e3eb1a..d127731 100644
+--- a/arch/arm/mach-kirkwood/common.c
++++ b/arch/arm/mach-kirkwood/common.c
+@@ -55,6 +55,13 @@ void __init kirkwood_map_io(void)
+ 	iotable_init(kirkwood_io_desc, ARRAY_SIZE(kirkwood_io_desc));
+ }
+ 
++/*
++ * Default clock control bits.  Any bit _not_ set in this variable
++ * will be cleared from the hardware after platform devices have been
++ * registered.  Some reserved bits must be set to 1.
++ */
++unsigned int kirkwood_clk_ctrl = CGC_DUNIT | CGC_RESERVED;
++	
+ 
+ /*****************************************************************************
+  * EHCI
+@@ -96,6 +103,7 @@ static struct platform_device kirkwood_ehci = {
+ 
+ void __init kirkwood_ehci_init(void)
+ {
++	kirkwood_clk_ctrl |= CGC_USB0;
+ 	platform_device_register(&kirkwood_ehci);
+ }
+ 
+@@ -152,6 +160,7 @@ static struct platform_device kirkwood_ge00 = {
+ 
+ void __init kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data)
+ {
++	kirkwood_clk_ctrl |= CGC_GE0;
+ 	eth_data->shared = &kirkwood_ge00_shared;
+ 	kirkwood_ge00.dev.platform_data = eth_data;
+ 
+@@ -213,6 +222,7 @@ static struct platform_device kirkwood_ge01 = {
+ 
+ void __init kirkwood_ge01_init(struct mv643xx_eth_platform_data *eth_data)
+ {
++	kirkwood_clk_ctrl |= CGC_GE1;
+ 	eth_data->shared = &kirkwood_ge01_shared;
+ 	kirkwood_ge01.dev.platform_data = eth_data;
+ 
+@@ -287,6 +297,7 @@ static struct platform_device kirkwood_nand_flash = {
+ void __init kirkwood_nand_init(struct mtd_partition *parts, int nr_parts,
+ 			       int chip_delay)
+ {
++	kirkwood_clk_ctrl |= CGC_RUNIT;
+ 	kirkwood_nand_data.parts = parts;
+ 	kirkwood_nand_data.nr_parts = nr_parts;
+ 	kirkwood_nand_data.chip_delay = chip_delay;
+@@ -338,6 +349,9 @@ static struct platform_device kirkwood_sata = {
+ 
+ void __init kirkwood_sata_init(struct mv_sata_platform_data *sata_data)
+ {
++	kirkwood_clk_ctrl |= CGC_SATA0;
++	if (sata_data->n_ports > 1)
++		kirkwood_clk_ctrl |= CGC_SATA1;
+ 	sata_data->dram = &kirkwood_mbus_dram_info;
+ 	kirkwood_sata.dev.platform_data = sata_data;
+ 	platform_device_register(&kirkwood_sata);
+@@ -383,6 +397,7 @@ void __init kirkwood_sdio_init(struct mvsdio_platform_data *mvsdio_data)
+ 	else
+ 		mvsdio_data->clock = 200000000;
+ 	mvsdio_data->dram = &kirkwood_mbus_dram_info;
++	kirkwood_clk_ctrl |= CGC_SDIO;
+ 	kirkwood_sdio.dev.platform_data = mvsdio_data;
+ 	platform_device_register(&kirkwood_sdio);
+ }
+@@ -414,6 +429,7 @@ static struct platform_device kirkwood_spi = {
+ 
+ void __init kirkwood_spi_init()
+ {
++	kirkwood_clk_ctrl |= CGC_RUNIT;
+ 	platform_device_register(&kirkwood_spi);
+ }
+ 
+@@ -634,6 +650,7 @@ static struct platform_device kirkwood_xor01_channel = {
+ 
+ static void __init kirkwood_xor0_init(void)
+ {
++	kirkwood_clk_ctrl |= CGC_XOR0;
+ 	platform_device_register(&kirkwood_xor0_shared);
+ 
+ 	/*
+@@ -732,6 +749,7 @@ static struct platform_device kirkwood_xor11_channel = {
+ 
+ static void __init kirkwood_xor1_init(void)
+ {
++	kirkwood_clk_ctrl |= CGC_XOR1;
+ 	platform_device_register(&kirkwood_xor1_shared);
+ 
+ 	/*
+@@ -844,3 +862,44 @@ void __init kirkwood_init(void)
+ 	kirkwood_xor0_init();
+ 	kirkwood_xor1_init();
+ }
++
++static int __init kirkwood_clock_gate(void)
++{
++	unsigned int curr = readl(CLOCK_GATING_CTRL);
++
++	printk(KERN_DEBUG "Gating clock of unused units\n");
++	printk(KERN_DEBUG "before: 0x%08x\n", curr);
++
++	/* Make sure those units are accessible */
++	writel(curr | CGC_SATA0 | CGC_SATA1 | CGC_PEX0, CLOCK_GATING_CTRL);
++
++	/* For SATA: first shutdown the phy */
++	if (!(kirkwood_clk_ctrl & CGC_SATA0)) {
++		/* Disable PLL and IVREF */
++		writel(readl(SATA0_PHY_MODE_2) & ~0xf, SATA0_PHY_MODE_2);
++		/* Disable PHY */
++		writel(readl(SATA0_IF_CTRL) | 0x200, SATA0_IF_CTRL);
++	}
++	if (!(kirkwood_clk_ctrl & CGC_SATA1)) {
++		/* Disable PLL and IVREF */
++		writel(readl(SATA1_PHY_MODE_2) & ~0xf, SATA1_PHY_MODE_2);
++		/* Disable PHY */
++		writel(readl(SATA1_IF_CTRL) | 0x200, SATA1_IF_CTRL);
++	}
++	
++	/* For PCIe: first shutdown the phy */
++	if (!(kirkwood_clk_ctrl & CGC_PEX0)) {
++		writel(readl(PCIE_LINK_CTRL) | 0x10, PCIE_LINK_CTRL);
++		while (1)
++			if (readl(PCIE_STATUS) & 0x1)
++				break;
++		writel(readl(PCIE_LINK_CTRL) & ~0x10, PCIE_LINK_CTRL);
++	}
++
++	/* Now gate clock the required units */
++	writel(kirkwood_clk_ctrl, CLOCK_GATING_CTRL);
++	printk(KERN_DEBUG " after: 0x%08x\n", readl(CLOCK_GATING_CTRL));
++
++	return 0;
++}
++late_initcall(kirkwood_clock_gate);
+diff --git a/arch/arm/mach-kirkwood/include/mach/bridge-regs.h b/arch/arm/mach-kirkwood/include/mach/bridge-regs.h
+index 4f7029f..00d96ab 100644
+--- a/arch/arm/mach-kirkwood/include/mach/bridge-regs.h
++++ b/arch/arm/mach-kirkwood/include/mach/bridge-regs.h
+@@ -39,4 +39,22 @@
+ #define L2_CONFIG_REG		(BRIDGE_VIRT_BASE | 0x0128)
+ #define L2_WRITETHROUGH		0x00000010
+ 
++#define CLOCK_GATING_CTRL	(BRIDGE_VIRT_BASE | 0x11c)
++#define CGC_GE0			(1 << 0)
++#define CGC_PEX0		(1 << 2)
++#define CGC_USB0		(1 << 3)
++#define CGC_SDIO		(1 << 4)
++#define CGC_TSU			(1 << 5)
++#define CGC_DUNIT		(1 << 6)
++#define CGC_RUNIT		(1 << 7)
++#define CGC_XOR0		(1 << 8)
++#define CGC_AUDIO		(1 << 9)
++#define CGC_SATA0		(1 << 14)
++#define CGC_SATA1		(1 << 15)
++#define CGC_XOR1		(1 << 16)
++#define CGC_CRYPTO		(1 << 17)
++#define CGC_GE1			(1 << 19)
++#define CGC_TDM			(1 << 20)
++#define CGC_RESERVED		((1 << 18) | (0x6 << 21))
++
+ #endif
+diff --git a/arch/arm/mach-kirkwood/include/mach/kirkwood.h b/arch/arm/mach-kirkwood/include/mach/kirkwood.h
+index b3e1395..fa87ce6 100644
+--- a/arch/arm/mach-kirkwood/include/mach/kirkwood.h
++++ b/arch/arm/mach-kirkwood/include/mach/kirkwood.h
+@@ -65,6 +65,8 @@
+ #define BRIDGE_VIRT_BASE	(KIRKWOOD_REGS_VIRT_BASE | 0x20000)
+ 
+ #define PCIE_VIRT_BASE		(KIRKWOOD_REGS_VIRT_BASE | 0x40000)
++#define PCIE_LINK_CTRL		(PCIE_VIRT_BASE | 0x70)
++#define PCIE_STATUS		(PCIE_VIRT_BASE | 0x1a04)
+ 
+ #define USB_PHYS_BASE		(KIRKWOOD_REGS_PHYS_BASE | 0x50000)
+ 
+@@ -81,6 +83,11 @@
+ #define GE01_PHYS_BASE		(KIRKWOOD_REGS_PHYS_BASE | 0x74000)
+ 
+ #define SATA_PHYS_BASE		(KIRKWOOD_REGS_PHYS_BASE | 0x80000)
++#define SATA_VIRT_BASE		(KIRKWOOD_REGS_VIRT_BASE | 0x80000)
++#define SATA0_IF_CTRL		(SATA_VIRT_BASE | 0x2050)
++#define SATA0_PHY_MODE_2	(SATA_VIRT_BASE | 0x2330)
++#define SATA1_IF_CTRL		(SATA_VIRT_BASE | 0x4050)
++#define SATA1_PHY_MODE_2	(SATA_VIRT_BASE | 0x4330)
+ 
+ #define SDIO_PHYS_BASE		(KIRKWOOD_REGS_PHYS_BASE | 0x90000)
+ 
+diff --git a/arch/arm/mach-kirkwood/pcie.c b/arch/arm/mach-kirkwood/pcie.c
+index 73fccac..d90b9aa 100644
+--- a/arch/arm/mach-kirkwood/pcie.c
++++ b/arch/arm/mach-kirkwood/pcie.c
+@@ -14,6 +14,7 @@
+ #include <asm/irq.h>
+ #include <asm/mach/pci.h>
+ #include <plat/pcie.h>
++#include <mach/bridge-regs.h>
+ #include "common.h"
+ 
+ 
+@@ -95,6 +96,7 @@ static struct pci_ops pcie_ops = {
+ static int kirkwood_pcie_setup(int nr, struct pci_sys_data *sys)
+ {
+ 	struct resource *res;
++	extern unsigned int kirkwood_clk_ctrl;
+ 
+ 	/*
+ 	 * Generic PCIe unit setup.
+@@ -133,6 +135,8 @@ static int kirkwood_pcie_setup(int nr, struct pci_sys_data *sys)
+ 	sys->resource[2] = NULL;
+ 	sys->io_offset = 0;
+ 
++	kirkwood_clk_ctrl |= CGC_PEX0;
++
+ 	return 1;
+ }
+ 
--- linux-2.6-2.6.30.orig/debian/patches/features/arm/copy_to_user-better_threshold.patch
+++ linux-2.6-2.6.30/debian/patches/features/arm/copy_to_user-better_threshold.patch
@@ -0,0 +1,121 @@
+From: Nicolas Pitre <nico@cam.org>
+Date: Sat, 30 May 2009 01:55:50 +0000 (-0400)
+Subject: [ARM] alternative copy_to_user: more precise fallback threshold
+X-Git-Url: http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=c626e3f5ca1d95ad2204d3128c26e7678714eb55
+
+[ARM] alternative copy_to_user: more precise fallback threshold
+
+Previous size thresholds were guessed from various user space benchmarks
+using a kernel with and without the alternative uaccess option.  This
+is however not as precise as a kernel based test to measure the real
+speed of each method.
+
+This adds a simple test bench to show the time needed for each method.
+With this, the optimal size treshold for the alternative implementation
+can be determined with more confidence.  It appears that the optimal
+threshold for both copy_to_user and clear_user is around 64 bytes. This
+is not a surprise knowing that the memcpy and memset implementations
+need at least 64 bytes to achieve maximum throughput.
+
+One might suggest that such test be used to determine the optimal
+threshold at run time instead, but results are near enough to 64 on
+tested targets concerned by this alternative copy_to_user implementation,
+so adding some overhead associated with a variable threshold is probably
+not worth it for now.
+
+Signed-off-by: Nicolas Pitre <nico@marvell.com>
+---
+
+diff --git a/arch/arm/lib/uaccess_with_memcpy.c b/arch/arm/lib/uaccess_with_memcpy.c
+index 92838e7..6b967ff 100644
+--- a/arch/arm/lib/uaccess_with_memcpy.c
++++ b/arch/arm/lib/uaccess_with_memcpy.c
+@@ -106,7 +106,7 @@ __copy_to_user(void __user *to, const void *from, unsigned long n)
+ 	 * With frame pointer disabled, tail call optimization kicks in
+ 	 * as well making this test almost invisible.
+ 	 */
+-	if (n < 1024)
++	if (n < 64)
+ 		return __copy_to_user_std(to, from, n);
+ 	return __copy_to_user_memcpy(to, from, n);
+ }
+@@ -151,7 +151,78 @@ out:
+ unsigned long __clear_user(void __user *addr, unsigned long n)
+ {
+ 	/* See rational for this in __copy_to_user() above. */
+-	if (n < 256)
++	if (n < 64)
+ 		return __clear_user_std(addr, n);
+ 	return __clear_user_memset(addr, n);
+ }
++
++#if 0
++
++/*
++ * This code is disabled by default, but kept around in case the chosen
++ * thresholds need to be revalidated.  Some overhead (small but still)
++ * would be implied by a runtime determined variable threshold, and
++ * so far the measurement on concerned targets didn't show a worthwhile
++ * variation.
++ *
++ * Note that a fairly precise sched_clock() implementation is needed
++ * for results to make some sense.
++ */
++
++#include <linux/vmalloc.h>
++
++static int __init test_size_treshold(void)
++{
++	struct page *src_page, *dst_page;
++	void *user_ptr, *kernel_ptr;
++	unsigned long long t0, t1, t2;
++	int size, ret;
++
++	ret = -ENOMEM;
++	src_page = alloc_page(GFP_KERNEL);
++	if (!src_page)
++		goto no_src;
++	dst_page = alloc_page(GFP_KERNEL);
++	if (!dst_page)
++		goto no_dst;
++	kernel_ptr = page_address(src_page);
++	user_ptr = vmap(&dst_page, 1, VM_IOREMAP, __pgprot(__P010));
++	if (!user_ptr)
++		goto no_vmap;
++
++	/* warm up the src page dcache */
++	ret = __copy_to_user_memcpy(user_ptr, kernel_ptr, PAGE_SIZE);
++
++	for (size = PAGE_SIZE; size >= 4; size /= 2) {
++		t0 = sched_clock();
++		ret |= __copy_to_user_memcpy(user_ptr, kernel_ptr, size);
++		t1 = sched_clock();
++		ret |= __copy_to_user_std(user_ptr, kernel_ptr, size);
++		t2 = sched_clock();
++		printk("copy_to_user: %d %llu %llu\n", size, t1 - t0, t2 - t1);
++	}
++
++	for (size = PAGE_SIZE; size >= 4; size /= 2) {
++		t0 = sched_clock();
++		ret |= __clear_user_memset(user_ptr, size);
++		t1 = sched_clock();
++		ret |= __clear_user_std(user_ptr, size);
++		t2 = sched_clock();
++		printk("clear_user: %d %llu %llu\n", size, t1 - t0, t2 - t1);
++	}
++
++	if (ret)
++		ret = -EFAULT;
++
++	vunmap(user_ptr);
++no_vmap:
++	put_page(dst_page);
++no_dst:
++	put_page(src_page);
++no_src:
++	return ret;
++}
++
++subsys_initcall(test_size_treshold);
++
++#endif
--- linux-2.6-2.6.30.orig/debian/patches/features/arm/nand-setup.patch
+++ linux-2.6-2.6.30/debian/patches/features/arm/nand-setup.patch
@@ -0,0 +1,313 @@
+From: Nicolas Pitre <nico@cam.org>
+Date: Mon, 1 Jun 2009 19:36:36 +0000 (-0400)
+Subject: [ARM] Kirkwood: rationalize NAND setup a bit
+X-Git-Url:
+http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=3ac7b8d83d92c33647ce21f655931b5cabbcbfd7
+
+[ARM] Kirkwood: rationalize NAND setup a bit
+
+Common resource and platform device structures are moved to common.c
+and only the partition table and chip delay remains a per board
+parameter.
+
+Signed-off-by: Nicolas Pitre <nico@marvell.com>
+---
+
+diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
+index be1ca28..6e3eb1a 100644
+--- a/arch/arm/mach-kirkwood/common.c
++++ b/arch/arm/mach-kirkwood/common.c
+@@ -16,6 +16,7 @@
+ #include <linux/mv643xx_eth.h>
+ #include <linux/mv643xx_i2c.h>
+ #include <linux/ata_platform.h>
++#include <linux/mtd/nand.h>
+ #include <linux/spi/orion_spi.h>
+ #include <net/dsa.h>
+ #include <asm/page.h>
+@@ -258,6 +259,42 @@ void __init kirkwood_ge00_switch_init(struct dsa_platform_data *d, int irq)
+ 
+ 
+ /*****************************************************************************
++ * NAND flash
++ ****************************************************************************/
++static struct resource kirkwood_nand_resource = {
++	.flags		= IORESOURCE_MEM,
++	.start		= KIRKWOOD_NAND_MEM_PHYS_BASE,
++	.end		= KIRKWOOD_NAND_MEM_PHYS_BASE +
++				KIRKWOOD_NAND_MEM_SIZE - 1,
++};
++
++static struct orion_nand_data kirkwood_nand_data = {
++	.cle		= 0,
++	.ale		= 1,
++	.width		= 8,
++};
++
++static struct platform_device kirkwood_nand_flash = {
++	.name		= "orion_nand",
++	.id		= -1,
++	.dev		= {
++		.platform_data	= &kirkwood_nand_data,
++	},
++	.resource	= &kirkwood_nand_resource,
++	.num_resources	= 1,
++};
++
++void __init kirkwood_nand_init(struct mtd_partition *parts, int nr_parts,
++			       int chip_delay)
++{
++	kirkwood_nand_data.parts = parts;
++	kirkwood_nand_data.nr_parts = nr_parts;
++	kirkwood_nand_data.chip_delay = chip_delay;
++	platform_device_register(&kirkwood_nand_flash);
++}
++
++
++/*****************************************************************************
+  * SoC RTC
+  ****************************************************************************/
+ static struct resource kirkwood_rtc_resource = {
+diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
+index 6ee8840..9de5256 100644
+--- a/arch/arm/mach-kirkwood/common.h
++++ b/arch/arm/mach-kirkwood/common.h
+@@ -15,6 +15,7 @@ struct dsa_platform_data;
+ struct mv643xx_eth_platform_data;
+ struct mv_sata_platform_data;
+ struct mvsdio_platform_data;
++struct mtd_partition;
+ 
+ /*
+  * Basic Kirkwood init functions used early by machine-setup.
+@@ -40,9 +41,11 @@ void kirkwood_spi_init(void);
+ void kirkwood_i2c_init(void);
+ void kirkwood_uart0_init(void);
+ void kirkwood_uart1_init(void);
++void kirkwood_nand_init(struct mtd_partition *parts, int nr_parts, int delay);
+ 
+ extern int kirkwood_tclk;
+ extern struct sys_timer kirkwood_timer;
+ 
++#define ARRAY_AND_SIZE(x)	(x), ARRAY_SIZE(x)
+ 
+ #endif
+diff --git a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c b/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
+index 5505d58..39bdf4b 100644
+--- a/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
++++ b/arch/arm/mach-kirkwood/db88f6281-bp-setup.c
+@@ -11,14 +11,12 @@
+ #include <linux/kernel.h>
+ #include <linux/init.h>
+ #include <linux/platform_device.h>
+-#include <linux/mtd/nand.h>
+ #include <linux/mtd/partitions.h>
+ #include <linux/ata_platform.h>
+ #include <linux/mv643xx_eth.h>
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <mach/kirkwood.h>
+-#include <plat/orion_nand.h>
+ #include <plat/mvsdio.h>
+ #include "common.h"
+ #include "mpp.h"
+@@ -39,32 +37,6 @@ static struct mtd_partition db88f6281_nand_parts[] = {
+ 	},
+ };
+ 
+-static struct resource db88f6281_nand_resource = {
+-	.flags		= IORESOURCE_MEM,
+-	.start		= KIRKWOOD_NAND_MEM_PHYS_BASE,
+-	.end		= KIRKWOOD_NAND_MEM_PHYS_BASE +
+-			  KIRKWOOD_NAND_MEM_SIZE - 1,
+-};
+-
+-static struct orion_nand_data db88f6281_nand_data = {
+-	.parts		= db88f6281_nand_parts,
+-	.nr_parts	= ARRAY_SIZE(db88f6281_nand_parts),
+-	.cle		= 0,
+-	.ale		= 1,
+-	.width		= 8,
+-	.chip_delay	= 25,
+-};
+-
+-static struct platform_device db88f6281_nand_flash = {
+-	.name		= "orion_nand",
+-	.id		= -1,
+-	.dev		= {
+-		.platform_data	= &db88f6281_nand_data,
+-	},
+-	.resource	= &db88f6281_nand_resource,
+-	.num_resources	= 1,
+-};
+-
+ static struct mv643xx_eth_platform_data db88f6281_ge00_data = {
+ 	.phy_addr	= MV643XX_ETH_PHY_ADDR(8),
+ };
+@@ -92,13 +64,12 @@ static void __init db88f6281_init(void)
+ 	kirkwood_init();
+ 	kirkwood_mpp_conf(db88f6281_mpp_config);
+ 
++	kirkwood_nand_init(ARRAY_AND_SIZE(db88f6281_nand_parts), 25);
+ 	kirkwood_ehci_init();
+ 	kirkwood_ge00_init(&db88f6281_ge00_data);
+ 	kirkwood_sata_init(&db88f6281_sata_data);
+ 	kirkwood_uart0_init();
+ 	kirkwood_sdio_init(&db88f6281_mvsdio_data);
+-	
+-	platform_device_register(&db88f6281_nand_flash);
+ }
+ 
+ static int __init db88f6281_pci_init(void)
+diff --git a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
+index 2f0e4ef..8bf4153 100644
+--- a/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
++++ b/arch/arm/mach-kirkwood/rd88f6192-nas-setup.c
+@@ -11,8 +11,6 @@
+ #include <linux/kernel.h>
+ #include <linux/init.h>
+ #include <linux/platform_device.h>
+-#include <linux/mtd/nand.h>
+-#include <linux/mtd/partitions.h>
+ #include <linux/ata_platform.h>
+ #include <linux/mv643xx_eth.h>
+ #include <linux/spi/flash.h>
+diff --git a/arch/arm/mach-kirkwood/rd88f6281-setup.c b/arch/arm/mach-kirkwood/rd88f6281-setup.c
+index 31e996d..31708dd 100644
+--- a/arch/arm/mach-kirkwood/rd88f6281-setup.c
++++ b/arch/arm/mach-kirkwood/rd88f6281-setup.c
+@@ -12,7 +12,6 @@
+ #include <linux/init.h>
+ #include <linux/platform_device.h>
+ #include <linux/irq.h>
+-#include <linux/mtd/nand.h>
+ #include <linux/mtd/partitions.h>
+ #include <linux/ata_platform.h>
+ #include <linux/mv643xx_eth.h>
+@@ -22,7 +21,6 @@
+ #include <asm/mach/arch.h>
+ #include <mach/kirkwood.h>
+ #include <plat/mvsdio.h>
+-#include <plat/orion_nand.h>
+ #include "common.h"
+ #include "mpp.h"
+ 
+@@ -42,32 +40,6 @@ static struct mtd_partition rd88f6281_nand_parts[] = {
+ 	},
+ };
+ 
+-static struct resource rd88f6281_nand_resource = {
+-	.flags		= IORESOURCE_MEM,
+-	.start		= KIRKWOOD_NAND_MEM_PHYS_BASE,
+-	.end		= KIRKWOOD_NAND_MEM_PHYS_BASE +
+-			  KIRKWOOD_NAND_MEM_SIZE - 1,
+-};
+-
+-static struct orion_nand_data rd88f6281_nand_data = {
+-	.parts		= rd88f6281_nand_parts,
+-	.nr_parts	= ARRAY_SIZE(rd88f6281_nand_parts),
+-	.cle		= 0,
+-	.ale		= 1,
+-	.width		= 8,
+-	.chip_delay	= 25,
+-};
+-
+-static struct platform_device rd88f6281_nand_flash = {
+-	.name		= "orion_nand",
+-	.id		= -1,
+-	.dev		= {
+-		.platform_data	= &rd88f6281_nand_data,
+-	},
+-	.resource	= &rd88f6281_nand_resource,
+-	.num_resources	= 1,
+-};
+-
+ static struct mv643xx_eth_platform_data rd88f6281_ge00_data = {
+ 	.phy_addr	= MV643XX_ETH_PHY_NONE,
+ 	.speed		= SPEED_1000,
+@@ -114,6 +86,7 @@ static void __init rd88f6281_init(void)
+ 	kirkwood_init();
+ 	kirkwood_mpp_conf(rd88f6281_mpp_config);
+ 
++	kirkwood_nand_init(ARRAY_AND_SIZE(rd88f6281_nand_parts), 25);
+ 	kirkwood_ehci_init();
+ 
+ 	kirkwood_ge00_init(&rd88f6281_ge00_data);
+@@ -129,8 +102,6 @@ static void __init rd88f6281_init(void)
+ 	kirkwood_sata_init(&rd88f6281_sata_data);
+ 	kirkwood_sdio_init(&rd88f6281_mvsdio_data);
+ 	kirkwood_uart0_init();
+-
+-	platform_device_register(&rd88f6281_nand_flash);
+ }
+ 
+ static int __init rd88f6281_pci_init(void)
+diff --git a/arch/arm/mach-kirkwood/sheevaplug-setup.c b/arch/arm/mach-kirkwood/sheevaplug-setup.c
+index 831e4a5..93ea64c 100644
+--- a/arch/arm/mach-kirkwood/sheevaplug-setup.c
++++ b/arch/arm/mach-kirkwood/sheevaplug-setup.c
+@@ -11,7 +11,6 @@
+ #include <linux/kernel.h>
+ #include <linux/init.h>
+ #include <linux/platform_device.h>
+-#include <linux/mtd/nand.h>
+ #include <linux/mtd/partitions.h>
+ #include <linux/mv643xx_eth.h>
+ #include <linux/gpio.h>
+@@ -20,7 +19,6 @@
+ #include <asm/mach/arch.h>
+ #include <mach/kirkwood.h>
+ #include <plat/mvsdio.h>
+-#include <plat/orion_nand.h>
+ #include "common.h"
+ #include "mpp.h"
+ 
+@@ -40,32 +38,6 @@ static struct mtd_partition sheevaplug_nand_parts[] = {
+ 	},
+ };
+ 
+-static struct resource sheevaplug_nand_resource = {
+-	.flags		= IORESOURCE_MEM,
+-	.start		= KIRKWOOD_NAND_MEM_PHYS_BASE,
+-	.end		= KIRKWOOD_NAND_MEM_PHYS_BASE +
+-			  KIRKWOOD_NAND_MEM_SIZE - 1,
+-};
+-
+-static struct orion_nand_data sheevaplug_nand_data = {
+-	.parts		= sheevaplug_nand_parts,
+-	.nr_parts	= ARRAY_SIZE(sheevaplug_nand_parts),
+-	.cle		= 0,
+-	.ale		= 1,
+-	.width		= 8,
+-	.chip_delay	= 25,
+-};
+-
+-static struct platform_device sheevaplug_nand_flash = {
+-	.name		= "orion_nand",
+-	.id		= -1,
+-	.dev		= {
+-		.platform_data	= &sheevaplug_nand_data,
+-	},
+-	.resource	= &sheevaplug_nand_resource,
+-	.num_resources	= 1,
+-};
+-
+ static struct mv643xx_eth_platform_data sheevaplug_ge00_data = {
+ 	.phy_addr	= MV643XX_ETH_PHY_ADDR(0),
+ };
+@@ -111,6 +83,7 @@ static void __init sheevaplug_init(void)
+ 	kirkwood_mpp_conf(sheevaplug_mpp_config);
+ 
+ 	kirkwood_uart0_init();
++	kirkwood_nand_init(ARRAY_AND_SIZE(sheevaplug_nand_parts), 25);
+ 
+ 	if (gpio_request(29, "USB Power Enable") != 0 ||
+ 	    gpio_direction_output(29, 1) != 0)
+@@ -120,7 +93,6 @@ static void __init sheevaplug_init(void)
+ 	kirkwood_ge00_init(&sheevaplug_ge00_data);
+ 	kirkwood_sdio_init(&sheevaplug_mvsdio_data);
+ 
+-	platform_device_register(&sheevaplug_nand_flash);
+ 	platform_device_register(&sheevaplug_leds);
+ }
+ 
--- linux-2.6-2.6.30.orig/debian/patches/features/arm/allow-alternative-copy-user.patch
+++ linux-2.6-2.6.30/debian/patches/features/arm/allow-alternative-copy-user.patch
@@ -0,0 +1,63 @@
+From: Nicolas Pitre <nico@cam.org>
+Date: Mon, 9 Mar 2009 02:34:45 +0000 (-0400)
+Subject: [ARM] allow for alternative __copy_to_user/__clear_user implementations
+X-Git-Url: http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=8a1510fe084352b2e95131fa00fe22eaf27d3441
+
+[ARM] allow for alternative __copy_to_user/__clear_user implementations
+
+This allows for optional alternative implementations of __copy_to_user
+and __clear_user, with a possible runtime fallback to the standard
+version when the alternative provides no gain over that standard
+version. This is done by making the standard __copy_to_user into a weak
+alias for the symbol __copy_to_user_std.  Same thing for __clear_user.
+
+Those two functions are particularly good candidates to have alternative
+implementations for, since they rely on the STRT instruction which has
+lower performances than STM instructions on some CPU cores such as
+the ARM1176 and Marvell Feroceon.
+
+Signed-off-by: Nicolas Pitre <nico@marvell.com>
+---
+
+diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
+index 7897464..0da9bc9 100644
+--- a/arch/arm/include/asm/uaccess.h
++++ b/arch/arm/include/asm/uaccess.h
+@@ -386,7 +386,9 @@ do {									\
+ #ifdef CONFIG_MMU
+ extern unsigned long __must_check __copy_from_user(void *to, const void __user *from, unsigned long n);
+ extern unsigned long __must_check __copy_to_user(void __user *to, const void *from, unsigned long n);
++extern unsigned long __must_check __copy_to_user_std(void __user *to, const void *from, unsigned long n);
+ extern unsigned long __must_check __clear_user(void __user *addr, unsigned long n);
++extern unsigned long __must_check __clear_user_std(void __user *addr, unsigned long n);
+ #else
+ #define __copy_from_user(to,from,n)	(memcpy(to, (void __force *)from, n), 0)
+ #define __copy_to_user(to,from,n)	(memcpy((void __force *)to, from, n), 0)
+diff --git a/arch/arm/lib/clear_user.S b/arch/arm/lib/clear_user.S
+index 4d6bc71..844f567 100644
+--- a/arch/arm/lib/clear_user.S
++++ b/arch/arm/lib/clear_user.S
+@@ -18,7 +18,8 @@
+  *          : sz   - number of bytes to clear
+  * Returns  : number of bytes NOT cleared
+  */
+-ENTRY(__clear_user)
++ENTRY(__clear_user_std)
++WEAK(__clear_user)
+ 		stmfd	sp!, {r1, lr}
+ 		mov	r2, #0
+ 		cmp	r1, #4
+diff --git a/arch/arm/lib/copy_to_user.S b/arch/arm/lib/copy_to_user.S
+index 22f968b..878820f 100644
+--- a/arch/arm/lib/copy_to_user.S
++++ b/arch/arm/lib/copy_to_user.S
+@@ -86,7 +86,8 @@
+ 
+ 	.text
+ 
+-ENTRY(__copy_to_user)
++ENTRY(__copy_to_user_std)
++WEAK(__copy_to_user)
+ 
+ #include "copy_template.S"
+ 
--- linux-2.6-2.6.30.orig/debian/patches/features/arm/lower_overhead_with_alternative.patch
+++ linux-2.6-2.6.30/debian/patches/features/arm/lower_overhead_with_alternative.patch
@@ -0,0 +1,88 @@
+From: Nicolas Pitre <nico@cam.org>
+Date: Fri, 22 May 2009 02:17:17 +0000 (-0400)
+Subject: [ARM] lower overhead with alternative copy_to_user for small copies
+X-Git-Url: http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=cb9dc92c0a1b76165c8c334402e27191084b2047
+
+[ARM] lower overhead with alternative copy_to_user for small copies
+
+Because the alternate copy_to_user implementation has a higher setup cost
+than the standard implementation, the size of the memory area to copy
+is tested and the standard implementation invoked instead when that size
+is too small.  Still, that test is made after the processor has preserved
+a bunch of registers on the stack which have to be reloaded right away
+needlessly in that case, causing a measurable performance regression
+compared to plain usage of the standard implementation only.
+
+To make the size test overhead negligible, let's factorize it out of
+the alternate copy_to_user function where it is clear to the compiler
+that no stack frame is needed.  Thanks to CONFIG_ARM_UNWIND allowing
+for frame pointers to be disabled and tail call optimization to kick in,
+the overhead in the small copy case becomes only 3 assembly instructions.
+
+A similar trick is applied to clear_user as well.
+
+Signed-off-by: Nicolas Pitre <nico@marvell.com>
+---
+
+diff --git a/arch/arm/lib/uaccess_with_memcpy.c b/arch/arm/lib/uaccess_with_memcpy.c
+index bf987b4..92838e7 100644
+--- a/arch/arm/lib/uaccess_with_memcpy.c
++++ b/arch/arm/lib/uaccess_with_memcpy.c
+@@ -49,14 +49,11 @@ pin_page_for_write(const void __user *_addr, pte_t **ptep, spinlock_t **ptlp)
+ 	return 1;
+ }
+ 
+-unsigned long
+-__copy_to_user(void __user *to, const void *from, unsigned long n)
++static unsigned long noinline
++__copy_to_user_memcpy(void __user *to, const void *from, unsigned long n)
+ {
+ 	int atomic;
+ 
+-	if (n < 1024)
+-		return __copy_to_user_std(to, from, n);
+-
+ 	if (unlikely(segment_eq(get_fs(), KERNEL_DS))) {
+ 		memcpy((void *)to, from, n);
+ 		return 0;
+@@ -99,11 +96,24 @@ out:
+ 	return n;
+ }
+ 
+-unsigned long __clear_user(void __user *addr, unsigned long n)
++unsigned long
++__copy_to_user(void __user *to, const void *from, unsigned long n)
++{
++	/*
++	 * This test is stubbed out of the main function above to keep
++	 * the overhead for small copies low by avoiding a large
++	 * register dump on the stack just to reload them right away.
++	 * With frame pointer disabled, tail call optimization kicks in
++	 * as well making this test almost invisible.
++	 */
++	if (n < 1024)
++		return __copy_to_user_std(to, from, n);
++	return __copy_to_user_memcpy(to, from, n);
++}
++	
++static unsigned long noinline
++__clear_user_memset(void __user *addr, unsigned long n)
+ {
+-	if (n < 256)
+-		return __clear_user_std(addr, n);
+-
+ 	if (unlikely(segment_eq(get_fs(), KERNEL_DS))) {
+ 		memset((void *)addr, 0, n);
+ 		return 0;
+@@ -137,3 +147,11 @@ unsigned long __clear_user(void __user *addr, unsigned long n)
+ out:
+ 	return n;
+ }
++
++unsigned long __clear_user(void __user *addr, unsigned long n)
++{
++	/* See rational for this in __copy_to_user() above. */
++	if (n < 256)
++		return __clear_user_std(addr, n);
++	return __clear_user_memset(addr, n);
++}
--- linux-2.6-2.6.30.orig/debian/patches/features/arm/kirkwood-cpu-idle.patch
+++ linux-2.6-2.6.30/debian/patches/features/arm/kirkwood-cpu-idle.patch
@@ -0,0 +1,155 @@
+From: Rabeeh Khoury <rabeeh@marvell.com>
+Date: Tue, 24 Mar 2009 14:10:15 +0000 (+0200)
+Subject: [ARM] Kirkwood: CPU idle driver
+X-Git-Url: http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=e89596e4f5aa872b16169be55c0fc3e12cdd63f1
+
+[ARM] Kirkwood: CPU idle driver
+
+The patch adds support for Kirkwood cpu idle.
+Two idle states are defined:
+1. Wait-for-interrupt (replacing default kirkwood wfi)
+2. Wait-for-interrupt and DDR self refresh
+
+Signed-off-by: Rabeeh Khoury <rabeeh@marvell.com>
+Signed-off-by: Nicolas Pitre <nico@marvell.com>
+---
+
+diff --git a/arch/arm/configs/kirkwood_defconfig b/arch/arm/configs/kirkwood_defconfig
+index dcf8153..bde56f4 100644
+--- a/arch/arm/configs/kirkwood_defconfig
++++ b/arch/arm/configs/kirkwood_defconfig
+@@ -270,7 +270,9 @@ CONFIG_CMDLINE=""
+ #
+ # CPU Power Management
+ #
+-# CONFIG_CPU_IDLE is not set
++CONFIG_CPU_IDLE=y
++CONFIG_CPU_IDLE_GOV_LADDER=y
++CONFIG_CPU_IDLE_GOV_MENU=y
+ 
+ #
+ # Floating point emulation
+diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
+index 8f03c9b..f21f35d 100644
+--- a/arch/arm/mach-kirkwood/Makefile
++++ b/arch/arm/mach-kirkwood/Makefile
+@@ -5,3 +5,5 @@ obj-$(CONFIG_MACH_RD88F6192_NAS)	+= rd88f6192-nas-setup.o
+ obj-$(CONFIG_MACH_RD88F6281)		+= rd88f6281-setup.o
+ obj-$(CONFIG_MACH_SHEEVAPLUG)		+= sheevaplug-setup.o
+ obj-$(CONFIG_MACH_TS219)		+= ts219-setup.o
++
++obj-$(CONFIG_CPU_IDLE)			+= cpuidle.o
+diff --git a/arch/arm/mach-kirkwood/cpuidle.c b/arch/arm/mach-kirkwood/cpuidle.c
+new file mode 100644
+index 0000000..43052c7
+--- /dev/null
++++ b/arch/arm/mach-kirkwood/cpuidle.c
+@@ -0,0 +1,96 @@
++/*
++ * arch/arm/mach-kirkwood/cpuidle.c
++ *
++ * CPU idle Marvell Kirkwood SoCs
++ *
++ * This file is licensed under the terms of the GNU General Public
++ * License version 2.  This program is licensed "as is" without any
++ * warranty of any kind, whether express or implied.
++ *
++ * The cpu idle uses wait-for-interrupt and DDR self refresh in order
++ * to implement two idle states -
++ * #1 wait-for-interrupt
++ * #2 wait-for-interrupt and DDR self refresh
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/cpuidle.h>
++#include <asm/io.h>
++#include <asm/proc-fns.h>
++#include <mach/kirkwood.h>
++
++#define KIRKWOOD_MAX_STATES	2
++
++static struct cpuidle_driver kirkwood_idle_driver = {
++	.name =         "kirkwood_idle",
++	.owner =        THIS_MODULE,
++};
++
++static DEFINE_PER_CPU(struct cpuidle_device, kirkwood_cpuidle_device);
++
++/* Actual code that puts the SoC in different idle states */
++static int kirkwood_enter_idle(struct cpuidle_device *dev,
++			       struct cpuidle_state *state)
++{
++	struct timeval before, after;
++	int idle_time;
++
++	local_irq_disable();
++	do_gettimeofday(&before);
++	if (state == &dev->states[0])
++		/* Wait for interrupt state */
++		cpu_do_idle();
++	else if (state == &dev->states[1]) {
++		/*
++		 * Following write will put DDR in self refresh.
++		 * Note that we have 256 cycles before DDR puts it
++		 * self in self-refresh, so the wait-for-interrupt
++		 * call afterwards won't get the DDR from self refresh
++		 * mode.
++		 */
++		writel(0x7, DDR_OPERATION_BASE);
++		cpu_do_idle();
++	}
++	do_gettimeofday(&after);
++	local_irq_enable();
++	idle_time = (after.tv_sec - before.tv_sec) * USEC_PER_SEC +
++			(after.tv_usec - before.tv_usec);
++	return idle_time;
++}
++
++/* Initialize CPU idle by registering the idle states */
++static int kirkwood_init_cpuidle(void)
++{
++	struct cpuidle_device *device;
++
++	cpuidle_register_driver(&kirkwood_idle_driver);
++
++	device = &per_cpu(kirkwood_cpuidle_device, smp_processor_id());
++	device->state_count = KIRKWOOD_MAX_STATES;
++
++	/* Wait for interrupt state */
++	device->states[0].enter = kirkwood_enter_idle;
++	device->states[0].exit_latency = 1;
++	device->states[0].target_residency = 10000;
++	device->states[0].flags = CPUIDLE_FLAG_TIME_VALID;
++	strcpy(device->states[0].name, "WFI");
++	strcpy(device->states[0].desc, "Wait for interrupt");
++
++	/* Wait for interrupt and DDR self refresh state */
++	device->states[1].enter = kirkwood_enter_idle;
++	device->states[1].exit_latency = 10;
++	device->states[1].target_residency = 10000;
++	device->states[1].flags = CPUIDLE_FLAG_TIME_VALID;
++	strcpy(device->states[1].name, "DDR SR");
++	strcpy(device->states[1].desc, "WFI and DDR Self Refresh");
++
++	if (cpuidle_register_device(device)) {
++		printk(KERN_ERR "kirkwood_init_cpuidle: Failed registering\n");
++		return -EIO;
++	}
++	return 0;
++}
++
++device_initcall(kirkwood_init_cpuidle);
+diff --git a/arch/arm/mach-kirkwood/include/mach/kirkwood.h b/arch/arm/mach-kirkwood/include/mach/kirkwood.h
+index b3e1395..f20ff64 100644
+--- a/arch/arm/mach-kirkwood/include/mach/kirkwood.h
++++ b/arch/arm/mach-kirkwood/include/mach/kirkwood.h
+@@ -48,6 +48,7 @@
+  */
+ #define DDR_VIRT_BASE		(KIRKWOOD_REGS_VIRT_BASE | 0x00000)
+ #define  DDR_WINDOW_CPU_BASE	(DDR_VIRT_BASE | 0x1500)
++#define DDR_OPERATION_BASE	(DDR_VIRT_BASE | 0x1418)
+ 
+ #define DEV_BUS_PHYS_BASE	(KIRKWOOD_REGS_PHYS_BASE | 0x10000)
+ #define DEV_BUS_VIRT_BASE	(KIRKWOOD_REGS_VIRT_BASE | 0x10000)
--- linux-2.6-2.6.30.orig/debian/patches/features/arm/alternative-copy-user.patch
+++ linux-2.6-2.6.30/debian/patches/features/arm/alternative-copy-user.patch
@@ -0,0 +1,229 @@
+From: Lennert Buytenhek <buytenh@marvell.com>
+Date: Mon, 9 Mar 2009 18:30:09 +0000 (-0400)
+Subject: [ARM] alternative copy_to_user/clear_user implementation
+X-Git-Url: http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=d3ba043cc30dcef3bd5baf29584d53681e66eafc
+
+[ARM] alternative copy_to_user/clear_user implementation
+
+This implements {copy_to,clear}_user() by faulting in the userland
+pages and then using the regular kernel mem{cpy,set}() to copy the
+data (while holding the page table lock).  This is a win if the regular
+mem{cpy,set}() implementations are faster than the user copy functions,
+which is the case e.g. on Feroceon, where 8-word STMs (which memcpy()
+uses under the right conditions) give significantly higher memory write
+throughput than a sequence of individual 32bit stores.
+
+Here are numbers for page sized buffers on some Feroceon cores:
+
+ - copy_to_user on Orion5x goes from 51 MB/s to 83 MB/s
+ - clear_user on Orion5x goes from 89MB/s to 314MB/s
+ - copy_to_user on Kirkwood goes from 240 MB/s to 356 MB/s
+ - clear_user on Kirkwood goes from 367 MB/s to 1108 MB/s
+ - copy_to_user on Disco-Duo goes from 248 MB/s to 398 MB/s
+ - clear_user on Disco-Duo goes from 328 MB/s to 1741 MB/s
+
+Because the setup cost is non negligible, this is worthwhile only if
+the amount of data to copy is large enough.  The operation falls back
+to the standard implementation when the amount of data is below a certain
+treshold. This treshold was determined empirically, however some targets
+could benefit from a lower runtime determined value for optimal results
+eventually.
+
+In the copy_from_user() case, this technique does not provide any
+worthwhile performance gain due to the fact that any kind of read access
+allocates the cache and subsequent 32bit loads are just as fast as the
+equivalent 8-word LDM.
+
+[ Nicolas Pitre came with the idea, Lennert Buytenhek wrote the code. ]
+
+Tested-by: Martin Michlmayr <tbm@cyrius.com>
+Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
+Signed-off-by: Nicolas Pitre <nico@marvell.com>
+---
+
+diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
+index dbfdf87..0d1c72b 100644
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -983,6 +983,22 @@ config ALIGNMENT_TRAP
+ 	  correct operation of some network protocols. With an IP-only
+ 	  configuration it is safe to say N, otherwise say Y.
+ 
++config UACCESS_WITH_MEMCPY
++	bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user() (EXPERIMENTAL)"
++	depends on MMU && EXPERIMENTAL
++	default y if CPU_FEROCEON
++	help
++	  Implement faster copy_to_user and clear_user methods for CPU
++	  cores where a 8-word STM instruction give significantly higher
++	  memory write throughput than a sequence of individual 32bit stores.
++
++	  A possible side effect is a slight increase in scheduling latency
++	  between threads sharing the same address space if they invoke
++	  such copy operations with large buffers.
++
++	  However, if the CPU data cache is using a write-allocate mode,
++	  this option is unlikely to provide any performance gain.
++
+ endmenu
+ 
+ menu "Boot options"
+diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
+index 866f84a..030ba72 100644
+--- a/arch/arm/lib/Makefile
++++ b/arch/arm/lib/Makefile
+@@ -29,6 +29,9 @@ else
+ endif
+ endif
+ 
++# using lib_ here won't override already available weak symbols
++obj-$(CONFIG_UACCESS_WITH_MEMCPY) += uaccess_with_memcpy.o
++
+ lib-$(CONFIG_MMU) += $(mmu-y)
+ 
+