Skip to contentSkip to conversation

Linux 2.6.33.3

DISCUSSION Greg KH 2 participants 3 messages Apr 26, 2010

Subsystems (67)
lore
Share & tools
lore

Greg KH

author
#0 lore raw

I'm announcing the release of the 2.6.33.3 kernel.

All users of the 2.6.33 kernel series should upgrade.

Many thanks to maximilian attems for all of his work in submitting patches for this release, it is much appreciated.

The updated 2.6.33.y git tree can be found at:

        git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.33.y.git
and can be browsed at the normal kernel.org git web browser:
        http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.33.y.git;a=summary

thanks,

greg k-h

------------

 Documentation/i2c/busses/i2c-i801               |    3 
 Makefile                                        |    2 
 arch/arm/boot/compressed/head.S                 |    2 
 arch/ia64/kvm/kvm-ia64.c                        |    9 
 arch/powerpc/kvm/book3s.c                       |    5 
 arch/powerpc/platforms/pseries/offline_states.h |   22 ++
 arch/s390/mm/vmem.c                             |   11 -
 arch/sh/include/asm/elf.h                       |    6 
 arch/sh/kernel/smp.c                            |    1 
 arch/sparc/kernel/ptrace_32.c                   |    4 
 arch/sparc/kernel/ptrace_64.c                   |    4 
 arch/um/sys-x86_64/Makefile                     |    3 
 arch/x86/Kconfig.cpu                            |    2 
 arch/x86/include/asm/rwsem.h                    |   81 ++++---
 arch/x86/include/asm/smp.h                      |    9 
 arch/x86/kernel/amd_iommu.c                     |    6 
 arch/x86/kernel/amd_iommu_init.c                |    5 
 arch/x86/kernel/aperture_64.c                   |   15 +
 arch/x86/kernel/apic/apic.c                     |    2 
 arch/x86/kernel/cpu/intel_cacheinfo.c           |  250 ++++++++++++++----------
 arch/x86/kernel/cpu/perf_event.c                |  104 +++++++++
 arch/x86/kernel/crash.c                         |    6 
 arch/x86/kernel/hpet.c                          |    8 
 arch/x86/kernel/kgdb.c                          |    2 
 arch/x86/kernel/mpparse.c                       |    4 
 arch/x86/kernel/pci-gart_64.c                   |    3 
 arch/x86/kvm/mmu.c                              |   11 -
 arch/x86/kvm/svm.c                              |   25 +-
 arch/x86/kvm/vmx.c                              |   37 ++-
 arch/x86/kvm/x86.c                              |   45 +---
 arch/x86/lib/Makefile                           |    3 
 arch/x86/lib/cache-smp.c                        |   19 +
 arch/x86/lib/rwsem_64.S                         |   81 +++++++
 arch/x86/pci/irq.c                              |    2 
 arch/x86/power/hibernate_asm_32.S               |   15 -
 drivers/acpi/acpica/exprep.c                    |   17 +
 drivers/acpi/ec.c                               |   35 ---
 drivers/ata/ahci.c                              |    6 
 drivers/ata/ata_piix.c                          |    8 
 drivers/ata/libata-core.c                       |    3 
 drivers/ata/pata_via.c                          |    1 
 drivers/char/agp/intel-agp.c                    |   15 -
 drivers/char/raw.c                              |    1 
 drivers/char/tty_io.c                           |    2 
 drivers/gpu/drm/drm_crtc_helper.c               |    1 
 drivers/gpu/drm/drm_edid.c                      |   11 -
 drivers/gpu/drm/drm_fops.c                      |   16 -
 drivers/gpu/drm/i915/intel_lvds.c               |    8 
 drivers/gpu/drm/radeon/atom.c                   |   10 
 drivers/gpu/drm/radeon/r300.c                   |    5 
 drivers/gpu/drm/radeon/radeon_combios.c         |   20 +
 drivers/gpu/drm/radeon/radeon_connectors.c      |    7 
 drivers/gpu/drm/radeon/radeon_cp.c              |   10 
 drivers/gpu/drm/radeon/radeon_cs.c              |   15 -
 drivers/gpu/drm/radeon/radeon_device.c          |    8 
 drivers/gpu/drm/radeon/radeon_encoders.c        |    8 
 drivers/gpu/drm/radeon/radeon_legacy_tv.c       |   29 ++
 drivers/gpu/drm/radeon/rs600.c                  |    2 
 drivers/hid/hid-gyration.c                      |    5 
 drivers/hwmon/sht15.c                           |   13 -
 drivers/i2c/busses/Kconfig                      |    5 
 drivers/i2c/busses/i2c-i801.c                   |    5 
 drivers/infiniband/ulp/ipoib/ipoib_cm.c         |    2 
 drivers/input/sparse-keymap.c                   |    2 
 drivers/input/tablet/wacom_sys.c                |   12 -
 drivers/md/dm-ioctl.c                           |   19 +
 drivers/md/dm.c                                 |    7 
 drivers/md/dm.h                                 |    4 
 drivers/md/linear.c                             |   12 -
 drivers/md/multipath.c                          |   20 +
 drivers/md/raid0.c                              |   13 -
 drivers/md/raid10.c                             |   28 +-
 drivers/net/e1000e/netdev.c                     |    2 
 drivers/net/r8169.c                             |    4 
 drivers/net/wireless/ath/ar9170/usb.c           |    2 
 drivers/net/wireless/ath/ath9k/main.c           |    3 
 drivers/net/wireless/b43/Kconfig                |    6 
 drivers/net/wireless/b43/Makefile               |    2 
 drivers/net/wireless/b43/b43.h                  |   12 -
 drivers/net/wireless/b43/dma.c                  |    2 
 drivers/net/wireless/b43/main.c                 |   11 -
 drivers/net/wireless/b43/pio.h                  |   40 ---
 drivers/net/wireless/iwlwifi/iwl-4965.c         |   11 -
 drivers/net/wireless/iwlwifi/iwl-5000.c         |    2 
 drivers/net/wireless/iwlwifi/iwl-agn.c          |    2 
 drivers/net/wireless/iwlwifi/iwl-scan.c         |   27 +-
 drivers/net/wireless/iwlwifi/iwl3945-base.c     |    4 
 drivers/pci/pci.c                               |   24 ++
 drivers/scsi/libiscsi.c                         |    5 
 drivers/usb/class/cdc-acm.c                     |   43 ++--
 drivers/usb/class/cdc-acm.h                     |    1 
 drivers/video/backlight/mbp_nvidia_bl.c         |   45 ++++
 drivers/video/sunxvr500.c                       |   24 +-
 drivers/watchdog/hpwdt.c                        |    2 
 drivers/watchdog/iTCO_wdt.c                     |   99 ++++++++-
 fs/9p/vfs_file.c                                |    2 
 fs/block_dev.c                                  |    3 
 fs/cifs/cifssmb.c                               |   19 +
 fs/ecryptfs/inode.c                             |  108 +++++-----
 fs/ecryptfs/super.c                             |    1 
 fs/ext4/ext4.h                                  |    6 
 fs/ext4/extents.c                               |    2 
 fs/ext4/inode.c                                 |    2 
 fs/fat/namei_vfat.c                             |    6 
 fs/nfs/client.c                                 |    3 
 fs/nfs/dir.c                                    |    2 
 fs/nfs/nfs4proc.c                               |    4 
 fs/nfsd/nfs4xdr.c                               |   12 -
 fs/ocfs2/acl.c                                  |   77 ++++++-
 fs/ocfs2/suballoc.c                             |   13 -
 fs/proc/base.c                                  |    5 
 fs/quota/dquot.c                                |   12 -
 fs/reiserfs/super.c                             |   10 
 fs/xfs/linux-2.6/xfs_aops.c                     |   93 +++++---
 fs/xfs/linux-2.6/xfs_sync.c                     |   10 
 fs/xfs/xfs_iget.c                               |   19 +
 include/drm/drm_pciids.h                        |    2 
 include/linux/dm-ioctl.h                        |    9 
 include/linux/freezer.h                         |    7 
 include/linux/fs.h                              |    1 
 include/linux/kfifo.h                           |    3 
 include/linux/kvm_host.h                        |    7 
 include/linux/module.h                          |    2 
 include/linux/nfs_fs_sb.h                       |    1 
 include/linux/pci.h                             |    5 
 include/linux/pci_ids.h                         |    3 
 kernel/cgroup_freezer.c                         |    9 
 kernel/irq/manage.c                             |   10 
 kernel/lockdep.c                                |    6 
 kernel/module.c                                 |    2 
 kernel/power/process.c                          |    2 
 kernel/sched.c                                  |   10 
 mm/readahead.c                                  |    2 
 net/mac80211/mesh.c                             |    3 
 net/mac80211/mesh_hwmp.c                        |    4 
 net/mac80211/rx.c                               |    5 
 net/mac80211/tx.c                               |    6 
 net/mac80211/util.c                             |   20 +
 sound/pci/hda/hda_intel.c                       |   10 
 sound/pci/hda/patch_analog.c                    |    8 
 sound/pci/hda/patch_realtek.c                   |    1 
 sound/pci/mixart/mixart.c                       |   24 +-
 sound/usb/usbmidi.c                             |   24 +-
 virt/kvm/kvm_main.c                             |   13 -
 144 files changed, 1492 insertions(+), 681 deletions(-)

Adam Jackson (1):
drm/edid/quirks: Envision EN2028

Adam Lackorzynski (1):
powerpc: Fix SMP build with disabled CPU hotplugging.

Al Viro (1):
fix NFS4 handling of mountpoint stat

Alex Deucher (8):
drm/radeon: add new RS880 pci id
drm/radeon/kms: never treat rs4xx as AGP drm/radeon/kms: fix pal tv-out support on legacy IGP chips drm/radeon/kms: fix washed out image on legacy tv dac drm/radeon/kms/combios: verify dac_adj values are valid drm/radeon/kms: more atom parser fixes (v2) drm/radeon/kms: disable the tv encoder when tv/cv is not in use drm/radeon/kms: fix tv dac conflict resolver

Alexey Starikovskiy (2):
ACPI: EC: Allow multibyte access to EC
ACPI: EC: Limit burst to 64 bits

Andi Kleen (1):
x86: Handle overlapping mptables

Andre Przywara (1):
KVM: allow bit 10 to be cleared in MSR_IA32_MC4_CTL

Andrew Perepechko (1):
quota: Fix possible dq_flags corruption

Andrew Stubbs (1):
sh: Fix FDPIC binary loader

Anton Blanchard (2):

      raw: fsync method is now required
      sched: Fix sched_getaffinity()

Avi Kivity (3):
x86-64, rwsem: Avoid store forwarding hazard in __downgrade_write
KVM: Don't spam kernel log when injecting exceptions due to bad cr writes
KVM: VMX: Save/restore rflags.vm correctly in real mode

Ben Skeggs (1):
drm/edid: allow certain bogus edids to hit a fixup path rather than fail

Borislav Petkov (7):
x86, lib: Add wbinvd smp helpers
x86, cacheinfo: Fix disabling of L3 cache indices
intel-agp: Switch to wbinvd_on_all_cpus
x86, cacheinfo: Add cache index disable sysfs attrs only to L3 caches x86, cacheinfo: Calculate L3 indices
x86, cacheinfo: Remove NUMA dependency, fix for AMD Fam10h rev D1 x86, cacheinfo: Enable L3 CID only on AMD

Chris Wilson (1):
drm: Return ENODEV if the inode mapping changes

Chris Wright (3):
x86/amd-iommu: Pt mode fix for domain_destroy x86/amd-iommu: enable iommu before attaching devices Revert "x86: disable IOMMUs on kernel crash"

Christian Borntraeger (1):
s390: disable change bit override

Christian Pulvermacher (1):
ecryptfs: fix error code for missing xattrs in lower fs

Christoph Hellwig (1):
xfs: fix locking for inode cache radix tree tag updates

Dan Carpenter (2):
iwlwifi: range checking issue
ALSA: mixart: range checking proc file

Daniel T Chen (1):
ALSA: hda: Fix 0 dB offset for Lenovo Thinkpad models using AD1981

Dave Airlie (2):
drm/radeon/kms: don't print error on -ERESTARTSYS. drm/radeon/kms: add FireMV 2400 PCI ID.

Dave Chinner (2):
xfs: Non-blocking inode locking in IO completion
xfs: check for more work before sleeping in xfssyncd

David Härdeman (1):
include/linux/kfifo.h: fix INIT_KFIFO()

David S. Miller (2):
sparc: Fix regset register window handling.
sunxvr500: Ignore secondary output PCI devices.

Eli Cohen (1):
IPoIB: Fix TX queue lockup with mixed UD/CM traffic

Eric Sandeen (1):
ext4: fix async i/o writes beyond 4GB to a sparse file

Evan McClain (1):
backlight: mbp_nvidia_bl - add five more MacBook variants

Felix Fietkau (1):
ath9k: fix double calls to ath_radio_enable

Greg Kroah-Hartman (1):

      Linux 2.6.33.3

H. Peter Anvin (1):
x86-64, rwsem: 64-bit xadd rwsem implementation

Jan Kiszka (2):
KVM: VMX: Update instruction length on intercepted BP
KVM: x86: Fix TSS size check for 16-bit tasks

Jason Wessel (1):
x86,kgdb: Always initialize the hw breakpoint attribute

Javier Cardona (1):
mac80211: Handle mesh action frames in ieee80211_rx_h_action

Jean Delvare (1):
hwmon: (sht15) Properly handle the case CONFIG_REGULATOR=n

Jeff Mahoney (2):
reiserfs: Fix locking BUG during mount failure
ecryptfs: fix use with tmpfs by removing d_drop from ecryptfs_destroy_inode

Jerome Glisse (1):
drm/radeon/kms: fix rs600 tlb flush

Jerome Oufella (1):
hwmon: (sht15) Fix sht15_calc_temp interpolation function

Jiri Kosina (1):
HID: fix oops in gyration_event()

Joerg Roedel (2):
x86/amd-iommu: Use helper function to destroy domain x86/gart: Disable GART explicitly before initialization

Joerg Schirottke (1):
ALSA: hda - add a quirk for Clevo M570U laptop

Johannes Berg (1):
mac80211: move netdev queue enabling to correct spot

[email protected] (1):
pata_via: Add VIA VX900 support

KOSAKI Motohiro (2):
sched: sched_getaffinity(): Allow less than NR_CPUS length
sched: Use proper type in sched_getaffinity()

Larry Finger (1):
b43: Allow PIO mode to be selected at module load

Linus Torvalds (5):
x86-32: clean up rwsem inline asm statements
x86: clean up rwsem type system
x86-64: support native xadd rwsem implementation
x86: Fix breakage of UML from the changes in the rwsem system
b43: fall back gracefully to PIO mode after fatal DMA errors

Mark Fasheh (1):
ocfs2: set i_mode on disk during acl operations

Mathieu Desnoyers (3):
modules: fix incorrect percpu usage
lockdep: fix incorrect percpu usage
module: fix __module_ref_addr()

Matt Fleming (1):
sh: Enable the mmu in start_secondary()

Matt Helsley (1):
Freezer: Fix buggy resume test for tasks frozen with cgroup freezer

Michel Dänzer (1):
drm/radeon: R300 AD only has one quad pipe.

Michele Ballabio (1):
ALSA: hda - Add ASRock mobo to MSI blacklist

Mike Christie (1):
libiscsi: Fix recovery slowdown regression

Mike Travis (1):
pci: Update pci_set_vga_state() to call arch functions

Neil Horman (1):
r8169: clean up my printk uglyness

NeilBrown (1):
md: deal with merge_bvec_fn in component devices better.

Nikolaus Schulz (1):
fat: fix buffer overflow in vfat_create_shortname()

Oleg Nesterov (2):
oom: fix the unsafe usage of badness() in proc_oom_score()
tty: release_one_tty() forgets to put pids

Oliver Neukum (2):
USB: cdc-acm: Update to new autopm API
USB: cdc-acm: Fix stupid NULL pointer in resume()

Pallipadi, Venkatesh (1):
x86, hpet: Erratum workaround for read after write of HPET comparator

Paul Mundt (1):
PCI: kill off pci_register_set_vga_state() symbol export.

Peter Rajnoha (1):
dm ioctl: introduce flag indicating uevent was generated

Peter Zijlstra (1):
perf_events, x86: Implement Intel Westmere/Nehalem-EX support

Ping Cheng (1):
Input: wacom - switch mode upon system resume

Porsch, Marco (1):
mac80211: fix PREQ processing and one small bug

Rabin Vincent (1):

      ARM: 6031/1: fix Thumb-2 decompressor

Reinette Chatre (2):
iwlwifi: fix regulatory
iwlwifi: fix scan race

Sachin Prabhu (1):
9p: Skip check for mandatory locks when unlocking

Seth Heasley (7):
WATCHDOG: iTCO_wdt: TCO Watchdog patch for additional Intel Cougar Point DeviceIDs x86/PCI: irq and pci_ids patch for Intel Cougar Point DeviceIDs
ALSA: hda_intel: ALSA HD Audio patch for Intel Cougar Point DeviceIDs
ALSA: hda - enable snoop for Intel Cougar Point
ata_piix: IDE Mode SATA patch for Intel Cougar Point DeviceIDs
ahci: AHCI and RAID mode SATA patch for Intel Cougar Point DeviceIDs
i2c-i801: Add Intel Cougar Point device IDs

Shaohua Li (1):
x86-32, resume: do a global tlb flush in S4 resume

Sridhar Samudrala (1):
KVM: Increase NR_IOBUS_DEVS limit to 200

Stefan Bader (1):
drm/i915: Add no_lvds entry for the Clientron U800

Stefan Lippers-Hollmann (1):
drm/radeon/kms: Fix NULL pointer dereference if memory allocation failed in a simple way

Steve French (1):
CIFS: initialize nbytes at the beginning of CIFSSMBWrite()

Suresh Jayaraman (1):
cifs: Fix a kernel BUG with remote OS/2 server (try #3)

Suresh Siddha (1):
x86: Fix double enable_IR_x2apic() call on SMP kernel on !SMP boards

Takashi Iwai (3):
ALSA: hda - Add MSI blacklist for Aopen MZ915-M
ALSA: usb - Fix Oops after usb-midi disconnection
ALSA: hda - Add position_fix quirk for Biostar mobo

Takuya Yoshikawa (2):
KVM: SVM: Fix memory leaks that happen when svm_create_vcpu() fails
KVM: fix the handling of dirty bitmaps to avoid overflows

Tao Ma (1):
ocfs2: Change bg_chain check for ocfs2_validate_gd_parent.

Tejun Heo (1):
libata: disable NCQ on Crucial C300 SSD

Terry Loftin (1):

      e1000e: stop cleaning when we reach tx_ring->next_to_use

Thomas Gleixner (1):
genirq: Force MSI irq handlers to run with interrupts disabled

Thomas Mingarelli (1):
WATCHDOG: hpwdt - fix lower timeout limit

Trond Myklebust (2):
NFSv4: Fall back to ordinary lookup if nfs4_atomic_open() returns EISDIR
NFSv4: fix delegated locking

Tyler Hicks (1):
eCryptfs: Decrypt symlink target for stat size

Valentin Longchamp (1):
setup correct int pipe type in ar9170_usb_exec_cmd

Wey-Yi Guy (4):
iwlwifi: counting number of tfds can be free for 4965
mac80211: tear down all agg queues when restart/reconfig hw
iwlwifi: need check for valid qos packet before free
iwlwifi: clear all tx queues when firmware ready

Wu Fengguang (1):
readahead: fix NULL filp dereference

Xiao Guangrong (1):
KVM: MMU: fix kvm_mmu_zap_page() and its calling path

Yong Wang (1):
Input: sparse-keymap - free the right keymap on error

Zhao Yakui (1):
drm: remove the EDID blob stored in the EDID property when it is disconnected

author
#1 lore raw
Documentation/i2c/busses/i2c-i801 +2 -1
index 81c0c59..e1bb5b2 100644
@@ -15,7 +15,8 @@ Supported adapters:
   * Intel 82801I (ICH9)
   * Intel EP80579 (Tolapai)
   * Intel 82801JI (ICH10)
-  * Intel PCH
+  * Intel 3400/5 Series (PCH)
+  * Intel Cougar Point (PCH)
    Datasheets: Publicly available at the Intel website
 
 Authors: 
Makefile +1 -1
index 35160e3..de3e66c 100644
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
 SUBLEVEL = 33
-EXTRAVERSION = .2
+EXTRAVERSION = .3
 NAME = Man-Eating Seals of Antiquity
 
 # *DOCUMENTATION*
arch/arm/boot/compressed/head.S +1 -1
index 6b84a04..cbeb6e0 100644
@@ -172,7 +172,7 @@ not_angel:
 		adr	r0, LC0
  ARM(		ldmia	r0, {r1, r2, r3, r4, r5, r6, r11, ip, sp})
  THUMB(		ldmia	r0, {r1, r2, r3, r4, r5, r6, r11, ip}	)
- THUMB(		ldr	sp, [r0, #28]				)
+ THUMB(		ldr	sp, [r0, #32]				)
 		subs	r0, r0, r1		@ calculate the delta offset
 
 						@ if delta is zero, we are
arch/ia64/kvm/kvm-ia64.c +5 -4
index 5fdeec5..d76279a 100644
@@ -1794,7 +1794,8 @@ static int kvm_ia64_sync_dirty_log(struct kvm *kvm,
 {
 	struct kvm_memory_slot *memslot;
 	int r, i;
-	long n, base;
+	long base;
+	unsigned long n;
 	unsigned long *dirty_bitmap = (unsigned long *)(kvm->arch.vm_base +
 			offsetof(struct kvm_vm_data, kvm_mem_dirty_log));
 
@@ -1807,7 +1808,7 @@ static int kvm_ia64_sync_dirty_log(struct kvm *kvm,
 	if (!memslot->dirty_bitmap)
 		goto out;
 
-	n = ALIGN(memslot->npages, BITS_PER_LONG) / 8;
+	n = kvm_dirty_bitmap_bytes(memslot);
 	base = memslot->base_gfn / BITS_PER_LONG;
 
 	for (i = 0; i < n/sizeof(long); ++i) {
@@ -1823,7 +1824,7 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
 		struct kvm_dirty_log *log)
 {
 	int r;
-	int n;
+	unsigned long n;
 	struct kvm_memory_slot *memslot;
 	int is_dirty = 0;
 
@@ -1841,7 +1842,7 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
 	if (is_dirty) {
 		kvm_flush_remote_tlbs(kvm);
 		memslot = &kvm->memslots[log->slot];
-		n = ALIGN(memslot->npages, BITS_PER_LONG) / 8;
+		n = kvm_dirty_bitmap_bytes(memslot);
 		memset(memslot->dirty_bitmap, 0, n);
 	}
 	r = 0;
arch/powerpc/kvm/book3s.c +3 -2
index 3e294bd..e6dc595 100644
@@ -848,7 +848,8 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
 	struct kvm_vcpu *vcpu;
 	ulong ga, ga_end;
 	int is_dirty = 0;
-	int r, n;
+	int r;
+	unsigned long n;
 
 	down_write(&kvm->slots_lock);
 
@@ -866,7 +867,7 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
 		kvm_for_each_vcpu(n, vcpu, kvm)
 			kvmppc_mmu_pte_pflush(vcpu, ga, ga_end);
 
-		n = ALIGN(memslot->npages, BITS_PER_LONG) / 8;
+		n = kvm_dirty_bitmap_bytes(memslot);
 		memset(memslot->dirty_bitmap, 0, n);
 	}
 
arch/powerpc/platforms/pseries/offline_states.h +21 -1
index 22574e0..202d869 100644
@@ -9,10 +9,30 @@ enum cpu_state_vals {
 	CPU_MAX_OFFLINE_STATES
 };
 
+#ifdef CONFIG_HOTPLUG_CPU
 extern enum cpu_state_vals get_cpu_current_state(int cpu);
 extern void set_cpu_current_state(int cpu, enum cpu_state_vals state);
-extern enum cpu_state_vals get_preferred_offline_state(int cpu);
 extern void set_preferred_offline_state(int cpu, enum cpu_state_vals state);
 extern void set_default_offline_state(int cpu);
+#else
+static inline enum cpu_state_vals get_cpu_current_state(int cpu)
+{
+	return CPU_STATE_ONLINE;
+}
+
+static inline void set_cpu_current_state(int cpu, enum cpu_state_vals state)
+{
+}
+
+static inline void set_preferred_offline_state(int cpu, enum cpu_state_vals state)
+{
+}
+
+static inline void set_default_offline_state(int cpu)
+{
+}
+#endif
+
+extern enum cpu_state_vals get_preferred_offline_state(int cpu);
 extern int start_secondary(void);
 #endif
arch/s390/mm/vmem.c +3 -8
index 300ab01..5f91a38 100644
@@ -70,12 +70,8 @@ static pte_t __ref *vmem_pte_alloc(void)
 		pte = alloc_bootmem(PTRS_PER_PTE * sizeof(pte_t));
 	if (!pte)
 		return NULL;
-	if (MACHINE_HAS_HPAGE)
-		clear_table((unsigned long *) pte, _PAGE_TYPE_EMPTY | _PAGE_CO,
-			    PTRS_PER_PTE * sizeof(pte_t));
-	else
-		clear_table((unsigned long *) pte, _PAGE_TYPE_EMPTY,
-			    PTRS_PER_PTE * sizeof(pte_t));
+	clear_table((unsigned long *) pte, _PAGE_TYPE_EMPTY,
+		    PTRS_PER_PTE * sizeof(pte_t));
 	return pte;
 }
 
@@ -116,8 +112,7 @@ static int vmem_add_mem(unsigned long start, unsigned long size, int ro)
 		if (MACHINE_HAS_HPAGE && !(address & ~HPAGE_MASK) &&
 		    (address + HPAGE_SIZE <= start + size) &&
 		    (address >= HPAGE_SIZE)) {
-			pte_val(pte) |= _SEGMENT_ENTRY_LARGE |
-					_SEGMENT_ENTRY_CO;
+			pte_val(pte) |= _SEGMENT_ENTRY_LARGE;
 			pmd_val(*pm_dir) = pte_val(pte);
 			address += HPAGE_SIZE - PAGE_SIZE;
 			continue;
arch/sh/include/asm/elf.h +4 -2
index ac04255..ce830fa 100644
@@ -211,7 +211,9 @@ extern void __kernel_vsyscall;
 
 #define VSYSCALL_AUX_ENT					\
 	if (vdso_enabled)					\
-		NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_BASE);
+		NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_BASE);	\
+	else							\
+		NEW_AUX_ENT(AT_IGNORE, 0);
 #else
 #define VSYSCALL_AUX_ENT
 #endif /* CONFIG_VSYSCALL */
@@ -219,7 +221,7 @@ extern void __kernel_vsyscall;
 #ifdef CONFIG_SH_FPU
 #define FPU_AUX_ENT	NEW_AUX_ENT(AT_FPUCW, FPSCR_INIT)
 #else
-#define FPU_AUX_ENT
+#define FPU_AUX_ENT	NEW_AUX_ENT(AT_IGNORE, 0)
 #endif
 
 extern int l1i_cache_shape, l1d_cache_shape, l2_cache_shape;
arch/sh/kernel/smp.c +1 -0
index 983e079..1d19c19 100644
@@ -69,6 +69,7 @@ asmlinkage void __cpuinit start_secondary(void)
 	unsigned int cpu;
 	struct mm_struct *mm = &init_mm;
 
+	enable_mmu();
 	atomic_inc(&mm->mm_count);
 	atomic_inc(&mm->mm_users);
 	current->active_mm = mm;
arch/sparc/kernel/ptrace_32.c +4 -0
index 7e3dfd9..e608f39 100644
@@ -65,6 +65,7 @@ static int genregs32_get(struct task_struct *target,
 			*k++ = regs->u_regs[pos++];
 
 		reg_window = (unsigned long __user *) regs->u_regs[UREG_I6];
+		reg_window -= 16;
 		for (; count > 0 && pos < 32; count--) {
 			if (get_user(*k++, &reg_window[pos++]))
 				return -EFAULT;
@@ -76,6 +77,7 @@ static int genregs32_get(struct task_struct *target,
 		}
 
 		reg_window = (unsigned long __user *) regs->u_regs[UREG_I6];
+		reg_window -= 16;
 		for (; count > 0 && pos < 32; count--) {
 			if (get_user(reg, &reg_window[pos++]) ||
 			    put_user(reg, u++))
@@ -141,6 +143,7 @@ static int genregs32_set(struct task_struct *target,
 			regs->u_regs[pos++] = *k++;
 
 		reg_window = (unsigned long __user *) regs->u_regs[UREG_I6];
+		reg_window -= 16;
 		for (; count > 0 && pos < 32; count--) {
 			if (put_user(*k++, &reg_window[pos++]))
 				return -EFAULT;
@@ -153,6 +156,7 @@ static int genregs32_set(struct task_struct *target,
 		}
 
 		reg_window = (unsigned long __user *) regs->u_regs[UREG_I6];
+		reg_window -= 16;
 		for (; count > 0 && pos < 32; count--) {
 			if (get_user(reg, u++) ||
 			    put_user(reg, &reg_window[pos++]))
arch/sparc/kernel/ptrace_64.c +4 -0
index 2f6524d..aa90da0 100644
@@ -492,6 +492,7 @@ static int genregs32_get(struct task_struct *target,
 			*k++ = regs->u_regs[pos++];
 
 		reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6];
+		reg_window -= 16;
 		if (target == current) {
 			for (; count > 0 && pos < 32; count--) {
 				if (get_user(*k++, &reg_window[pos++]))
@@ -516,6 +517,7 @@ static int genregs32_get(struct task_struct *target,
 		}
 
 		reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6];
+		reg_window -= 16;
 		if (target == current) {
 			for (; count > 0 && pos < 32; count--) {
 				if (get_user(reg, &reg_window[pos++]) ||
@@ -599,6 +601,7 @@ static int genregs32_set(struct task_struct *target,
 			regs->u_regs[pos++] = *k++;
 
 		reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6];
+		reg_window -= 16;
 		if (target == current) {
 			for (; count > 0 && pos < 32; count--) {
 				if (put_user(*k++, &reg_window[pos++]))
@@ -625,6 +628,7 @@ static int genregs32_set(struct task_struct *target,
 		}
 
 		reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6];
+		reg_window -= 16;
 		if (target == current) {
 			for (; count > 0 && pos < 32; count--) {
 				if (get_user(reg, u++) ||
arch/um/sys-x86_64/Makefile +2 -1
index 2201e9c..c1ea9eb 100644
@@ -8,7 +8,8 @@ obj-y = bug.o bugs.o delay.o fault.o ldt.o mem.o ptrace.o ptrace_user.o \
 	setjmp.o signal.o stub.o stub_segv.o syscalls.o syscall_table.o \
 	sysrq.o ksyms.o tls.o
 
-subarch-obj-y = lib/csum-partial_64.o lib/memcpy_64.o lib/thunk_64.o
+subarch-obj-y = lib/csum-partial_64.o lib/memcpy_64.o lib/thunk_64.o \
+		lib/rwsem_64.o
 subarch-obj-$(CONFIG_MODULES) += kernel/module.o
 
 ldt-y = ../sys-i386/ldt.o
arch/x86/Kconfig.cpu +1 -1
index f20ddf8..a198293 100644
@@ -319,7 +319,7 @@ config X86_L1_CACHE_SHIFT
 
 config X86_XADD
 	def_bool y
-	depends on X86_32 && !M386
+	depends on X86_64 || !M386
 
 config X86_PPRO_FENCE
 	bool "PentiumPro memory ordering errata workaround"
arch/x86/include/asm/rwsem.h +49 -32

175 lines not on this page · raw message

arch/x86/include/asm/smp.h +9 -0
index 1e79678..4cfc908 100644
@@ -135,6 +135,8 @@ int native_cpu_disable(void);
 void native_cpu_die(unsigned int cpu);
 void native_play_dead(void);
 void play_dead_common(void);
+void wbinvd_on_cpu(int cpu);
+int wbinvd_on_all_cpus(void);
 
 void native_send_call_func_ipi(const struct cpumask *mask);
 void native_send_call_func_single_ipi(int cpu);
@@ -147,6 +149,13 @@ static inline int num_booting_cpus(void)
 {
 	return cpumask_weight(cpu_callout_mask);
 }
+#else /* !CONFIG_SMP */
+#define wbinvd_on_cpu(cpu)     wbinvd()
+static inline int wbinvd_on_all_cpus(void)
+{
+	wbinvd();
+	return 0;
+}
 #endif /* CONFIG_SMP */
 
 extern unsigned disabled_cpus __cpuinitdata;
arch/x86/kernel/amd_iommu.c +2 -4
index adb0ba0..2e77516 100644
@@ -2298,7 +2298,7 @@ static void cleanup_domain(struct protection_domain *domain)
 	list_for_each_entry_safe(dev_data, next, &domain->dev_list, list) {
 		struct device *dev = dev_data->dev;
 
-		do_detach(dev);
+		__detach_device(dev);
 		atomic_set(&dev_data->bind, 0);
 	}
 
@@ -2379,9 +2379,7 @@ static void amd_iommu_domain_destroy(struct iommu_domain *dom)
 
 	free_pagetable(domain);
 
-	domain_id_free(domain->id);
-
-	kfree(domain);
+	protection_domain_free(domain);
 
 	dom->priv = NULL;
 }
arch/x86/kernel/amd_iommu_init.c +3 -2
index 9dc91b4..883d619 100644
@@ -1288,6 +1288,8 @@ static int __init amd_iommu_init(void)
 	if (ret)
 		goto free;
 
+	enable_iommus();
+
 	if (iommu_pass_through)
 		ret = amd_iommu_init_passthrough();
 	else
@@ -1300,8 +1302,6 @@ static int __init amd_iommu_init(void)
 
 	amd_iommu_init_notifier();
 
-	enable_iommus();
-
 	if (iommu_pass_through)
 		goto out;
 
@@ -1315,6 +1315,7 @@ out:
 	return ret;
 
 free:
+	disable_iommus();
 
 	amd_iommu_uninit_devices();
 
arch/x86/kernel/aperture_64.c +14 -1
index f147a95..19f2c70 100644
@@ -394,6 +394,7 @@ void __init gart_iommu_hole_init(void)
 	for (i = 0; i < ARRAY_SIZE(bus_dev_ranges); i++) {
 		int bus;
 		int dev_base, dev_limit;
+		u32 ctl;
 
 		bus = bus_dev_ranges[i].bus;
 		dev_base = bus_dev_ranges[i].dev_base;
@@ -407,7 +408,19 @@ void __init gart_iommu_hole_init(void)
 			gart_iommu_aperture = 1;
 			x86_init.iommu.iommu_init = gart_iommu_init;
 
-			aper_order = (read_pci_config(bus, slot, 3, AMD64_GARTAPERTURECTL) >> 1) & 7;
+			ctl = read_pci_config(bus, slot, 3,
+					      AMD64_GARTAPERTURECTL);
+
+			/*
+			 * Before we do anything else disable the GART. It may
+			 * still be enabled if we boot into a crash-kernel here.
+			 * Reconfiguring the GART while it is enabled could have
+			 * unknown side-effects.
+			 */
+			ctl &= ~GARTEN;
+			write_pci_config(bus, slot, 3, AMD64_GARTAPERTURECTL, ctl);
+
+			aper_order = (ctl >> 1) & 7;
 			aper_size = (32 * 1024 * 1024) << aper_order;
 			aper_base = read_pci_config(bus, slot, 3, AMD64_GARTAPERTUREBASE) & 0x7fff;
 			aper_base <<= 25;
arch/x86/kernel/apic/apic.c +2 -0
index dfca210..d4df517 100644
@@ -1640,8 +1640,10 @@ int __init APIC_init_uniprocessor(void)
 	}
 #endif
 
+#ifndef CONFIG_SMP
 	enable_IR_x2apic();
 	default_setup_apic_routing();
+#endif
 
 	verify_local_APIC();
 	connect_bsp_APIC();
arch/x86/kernel/cpu/intel_cacheinfo.c +156 -94

311 lines not on this page · raw message

arch/x86/kernel/cpu/perf_event.c +103 -1

128 lines not on this page · raw message

arch/x86/kernel/crash.c +0 -6
index a4849c1..ebd4c51 100644
@@ -27,7 +27,6 @@
 #include <asm/cpu.h>
 #include <asm/reboot.h>
 #include <asm/virtext.h>
-#include <asm/x86_init.h>
 
 #if defined(CONFIG_SMP) && defined(CONFIG_X86_LOCAL_APIC)
 
@@ -103,10 +102,5 @@ void native_machine_crash_shutdown(struct pt_regs *regs)
 #ifdef CONFIG_HPET_TIMER
 	hpet_disable();
 #endif
-
-#ifdef CONFIG_X86_64
-	x86_platform.iommu_shutdown();
-#endif
-
 	crash_save_cpu(regs, safe_smp_processor_id());
 }
arch/x86/kernel/hpet.c +7 -1
index ad80a1c..773afc9 100644
@@ -399,9 +399,15 @@ static int hpet_next_event(unsigned long delta,
 	 * then we might have a real hardware problem. We can not do
 	 * much about it here, but at least alert the user/admin with
 	 * a prominent warning.
+	 * An erratum on some chipsets (ICH9,..), results in comparator read
+	 * immediately following a write returning old value. Workaround
+	 * for this is to read this value second time, when first
+	 * read returns old value.
 	 */
-	WARN_ONCE(hpet_readl(HPET_Tn_CMP(timer)) != cnt,
+	if (unlikely((u32)hpet_readl(HPET_Tn_CMP(timer)) != cnt)) {
+		WARN_ONCE(hpet_readl(HPET_Tn_CMP(timer)) != cnt,
 		  KERN_WARNING "hpet: compare register read back failed.\n");
+	}
 
 	return (s32)(hpet_readl(HPET_COUNTER) - cnt) >= 0 ? -ETIME : 0;
 }
arch/x86/kernel/kgdb.c +1 -1
index bfba601..b2258ca 100644
@@ -618,8 +618,8 @@ int kgdb_arch_init(void)
 	 * portion of kgdb because this operation requires mutexs to
 	 * complete.
 	 */
+	hw_breakpoint_init(&attr);
 	attr.bp_addr = (unsigned long)kgdb_arch_init;
-	attr.type = PERF_TYPE_BREAKPOINT;
 	attr.bp_len = HW_BREAKPOINT_LEN_1;
 	attr.bp_type = HW_BREAKPOINT_W;
 	attr.disabled = 1;
arch/x86/kernel/mpparse.c +2 -2
index a2c1edd..e81030f 100644
@@ -664,7 +664,7 @@ static void __init smp_reserve_memory(struct mpf_intel *mpf)
 {
 	unsigned long size = get_mpc_size(mpf->physptr);
 
-	reserve_early(mpf->physptr, mpf->physptr+size, "MP-table mpc");
+	reserve_early_overlap_ok(mpf->physptr, mpf->physptr+size, "MP-table mpc");
 }
 
 static int __init smp_scan_config(unsigned long base, unsigned long length)
@@ -693,7 +693,7 @@ static int __init smp_scan_config(unsigned long base, unsigned long length)
 			       mpf, (u64)virt_to_phys(mpf));
 
 			mem = virt_to_phys(mpf);
-			reserve_early(mem, mem + sizeof(*mpf), "MP-table mpf");
+			reserve_early_overlap_ok(mem, mem + sizeof(*mpf), "MP-table mpf");
 			if (mpf->physptr)
 				smp_reserve_memory(mpf);
 
arch/x86/kernel/pci-gart_64.c +3 -0
index 34de53b..4f41b29 100644
@@ -564,6 +564,9 @@ static void enable_gart_translations(void)
 
 		enable_gart_translation(dev, __pa(agp_gatt_table));
 	}
+
+	/* Flush the GART-TLB to remove stale entries */
+	k8_flush_garts();
 }
 
 /*
arch/x86/kvm/mmu.c +7 -4
index 89a49fb..28c3d81 100644
@@ -1502,8 +1502,8 @@ static int mmu_zap_unsync_children(struct kvm *kvm,
 		for_each_sp(pages, sp, parents, i) {
 			kvm_mmu_zap_page(kvm, sp);
 			mmu_pages_clear_parents(&parents);
+			zapped++;
 		}
-		zapped += pages.nr;
 		kvm_mmu_pages_init(parent, &parents, &pages);
 	}
 
@@ -1554,14 +1554,16 @@ void kvm_mmu_change_mmu_pages(struct kvm *kvm, unsigned int kvm_nr_mmu_pages)
 	 */
 
 	if (used_pages > kvm_nr_mmu_pages) {
-		while (used_pages > kvm_nr_mmu_pages) {
+		while (used_pages > kvm_nr_mmu_pages &&
+			!list_empty(&kvm->arch.active_mmu_pages)) {
 			struct kvm_mmu_page *page;
 
 			page = container_of(kvm->arch.active_mmu_pages.prev,
 					    struct kvm_mmu_page, link);
-			kvm_mmu_zap_page(kvm, page);
+			used_pages -= kvm_mmu_zap_page(kvm, page);
 			used_pages--;
 		}
+		kvm_nr_mmu_pages = used_pages;
 		kvm->arch.n_free_mmu_pages = 0;
 	}
 	else
@@ -1608,7 +1610,8 @@ static void mmu_unshadow(struct kvm *kvm, gfn_t gfn)
 		    && !sp->role.invalid) {
 			pgprintk("%s: zap %lx %x\n",
 				 __func__, gfn, sp->role.word);
-			kvm_mmu_zap_page(kvm, sp);
+			if (kvm_mmu_zap_page(kvm, sp))
+				nn = bucket->first;
 		}
 	}
 }
arch/x86/kvm/svm.c +15 -10
index 1d9b338..d42e191 100644
@@ -698,29 +698,28 @@ static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id)
 	if (err)
 		goto free_svm;
 
+	err = -ENOMEM;
 	page = alloc_page(GFP_KERNEL);
-	if (!page) {
-		err = -ENOMEM;
+	if (!page)
 		goto uninit;
-	}
 
-	err = -ENOMEM;
 	msrpm_pages = alloc_pages(GFP_KERNEL, MSRPM_ALLOC_ORDER);
 	if (!msrpm_pages)
-		goto uninit;
+		goto free_page1;
 
 	nested_msrpm_pages = alloc_pages(GFP_KERNEL, MSRPM_ALLOC_ORDER);
 	if (!nested_msrpm_pages)
-		goto uninit;
-
-	svm->msrpm = page_address(msrpm_pages);
-	svm_vcpu_init_msrpm(svm->msrpm);
+		goto free_page2;
 
 	hsave_page = alloc_page(GFP_KERNEL);
 	if (!hsave_page)
-		goto uninit;
+		goto free_page3;
+
 	svm->nested.hsave = page_address(hsave_page);
 
+	svm->msrpm = page_address(msrpm_pages);
+	svm_vcpu_init_msrpm(svm->msrpm);
+
 	svm->nested.msrpm = page_address(nested_msrpm_pages);
 
 	svm->vmcb = page_address(page);
@@ -737,6 +736,12 @@ static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id)
 
 	return &svm->vcpu;
 
+free_page3:
+	__free_pages(nested_msrpm_pages, MSRPM_ALLOC_ORDER);
+free_page2:
+	__free_pages(msrpm_pages, MSRPM_ALLOC_ORDER);
+free_page1:
+	__free_page(page);
 uninit:
 	kvm_vcpu_uninit(&svm->vcpu);
 free_svm:
arch/x86/kvm/vmx.c +28 -9
index 8a8e139..3acbe19 100644
@@ -61,6 +61,8 @@ module_param_named(unrestricted_guest,
 static int __read_mostly emulate_invalid_guest_state = 0;
 module_param(emulate_invalid_guest_state, bool, S_IRUGO);
 
+#define RMODE_GUEST_OWNED_EFLAGS_BITS (~(X86_EFLAGS_IOPL | X86_EFLAGS_VM))
+
 /*
  * These 2 parameters are used to config the controls for Pause-Loop Exiting:
  * ple_gap:    upper bound on the amount of time between two successive
@@ -115,7 +117,7 @@ struct vcpu_vmx {
 	} host_state;
 	struct {
 		int vm86_active;
-		u8 save_iopl;
+		ulong save_rflags;
 		struct kvm_save_segment {
 			u16 selector;
 			unsigned long base;
@@ -787,18 +789,23 @@ static void vmx_fpu_deactivate(struct kvm_vcpu *vcpu)
 
 static unsigned long vmx_get_rflags(struct kvm_vcpu *vcpu)
 {
-	unsigned long rflags;
+	unsigned long rflags, save_rflags;
 
 	rflags = vmcs_readl(GUEST_RFLAGS);
-	if (to_vmx(vcpu)->rmode.vm86_active)
-		rflags &= ~(unsigned long)(X86_EFLAGS_IOPL | X86_EFLAGS_VM);
+	if (to_vmx(vcpu)->rmode.vm86_active) {
+		rflags &= RMODE_GUEST_OWNED_EFLAGS_BITS;
+		save_rflags = to_vmx(vcpu)->rmode.save_rflags;
+		rflags |= save_rflags & ~RMODE_GUEST_OWNED_EFLAGS_BITS;
+	}
 	return rflags;
 }
 
 static void vmx_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags)
 {
-	if (to_vmx(vcpu)->rmode.vm86_active)
+	if (to_vmx(vcpu)->rmode.vm86_active) {
+		to_vmx(vcpu)->rmode.save_rflags = rflags;
 		rflags |= X86_EFLAGS_IOPL | X86_EFLAGS_VM;
+	}
 	vmcs_writel(GUEST_RFLAGS, rflags);
 }
 
@@ -1431,8 +1438,8 @@ static void enter_pmode(struct kvm_vcpu *vcpu)
 	vmcs_write32(GUEST_TR_AR_BYTES, vmx->rmode.tr.ar);
 
 	flags = vmcs_readl(GUEST_RFLAGS);
-	flags &= ~(X86_EFLAGS_IOPL | X86_EFLAGS_VM);
-	flags |= (vmx->rmode.save_iopl << IOPL_SHIFT);
+	flags &= RMODE_GUEST_OWNED_EFLAGS_BITS;
+	flags |= vmx->rmode.save_rflags & ~RMODE_GUEST_OWNED_EFLAGS_BITS;
 	vmcs_writel(GUEST_RFLAGS, flags);
 
 	vmcs_writel(GUEST_CR4, (vmcs_readl(GUEST_CR4) & ~X86_CR4_VME) |
@@ -1501,8 +1508,7 @@ static void enter_rmode(struct kvm_vcpu *vcpu)
 	vmcs_write32(GUEST_TR_AR_BYTES, 0x008b);
 
 	flags = vmcs_readl(GUEST_RFLAGS);
-	vmx->rmode.save_iopl
-		= (flags & X86_EFLAGS_IOPL) >> IOPL_SHIFT;
+	vmx->rmode.save_rflags = flags;
 
 	flags |= X86_EFLAGS_IOPL | X86_EFLAGS_VM;
 
@@ -2719,6 +2725,12 @@ static int handle_rmode_exception(struct kvm_vcpu *vcpu,
 		kvm_queue_exception(vcpu, vec);
 		return 1;
 	case BP_VECTOR:
+		/*
+		 * Update instruction length as we may reinject the exception
+		 * from user space while in guest debugging mode.
+		 */
+		to_vmx(vcpu)->vcpu.arch.event_exit_inst_len =
+			vmcs_read32(VM_EXIT_INSTRUCTION_LEN);
 		if (vcpu->guest_debug & KVM_GUESTDBG_USE_SW_BP)
 			return 0;
 		/* fall through */
@@ -2841,6 +2853,13 @@ static int handle_exception(struct kvm_vcpu *vcpu)
 		kvm_run->debug.arch.dr7 = vmcs_readl(GUEST_DR7);
 		/* fall through */
 	case BP_VECTOR:
+		/*
+		 * Update instruction length as we may reinject #BP from
+		 * user space while in guest debugging mode. Reading it for
+		 * #DB as well causes no harm, it is not used in that case.
+		 */
+		vmx->vcpu.arch.event_exit_inst_len =
+			vmcs_read32(VM_EXIT_INSTRUCTION_LEN);
 		kvm_run->exit_reason = KVM_EXIT_DEBUG;
 		kvm_run->debug.arch.pc = vmcs_readl(GUEST_CS_BASE) + rip;
 		kvm_run->debug.arch.exception = ex_no;
arch/x86/kvm/x86.c +13 -32

178 lines not on this page · raw message

arch/x86/lib/Makefile +2 -1
index cffd754..ddef409 100644
@@ -14,7 +14,7 @@ $(obj)/inat.o: $(obj)/inat-tables.c
 
 clean-files := inat-tables.c
 
-obj-$(CONFIG_SMP) += msr-smp.o
+obj-$(CONFIG_SMP) += msr-smp.o cache-smp.o
 
 lib-y := delay.o
 lib-y += thunk_$(BITS).o
@@ -39,4 +39,5 @@ else
         lib-y += thunk_64.o clear_page_64.o copy_page_64.o
         lib-y += memmove_64.o memset_64.o
         lib-y += copy_user_64.o rwlock_64.o copy_user_nocache_64.o
+	lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem_64.o
 endif
arch/x86/lib/cache-smp.c new file +19 -0
new file mode 100644
index 0000000..a3c6688
@@ -0,0 +1,19 @@
+#include <linux/smp.h>
+#include <linux/module.h>
+
+static void __wbinvd(void *dummy)
+{
+	wbinvd();
+}
+
+void wbinvd_on_cpu(int cpu)
+{
+	smp_call_function_single(cpu, __wbinvd, NULL, 1);
+}
+EXPORT_SYMBOL(wbinvd_on_cpu);
+
+int wbinvd_on_all_cpus(void)
+{
+	return on_each_cpu(__wbinvd, NULL, 1);
+}
+EXPORT_SYMBOL(wbinvd_on_all_cpus);
arch/x86/lib/rwsem_64.S new file +81 -0

81 lines not on this page · raw message

arch/x86/pci/irq.c +2 -0
index 0696d50..b02f6d8 100644
@@ -590,6 +590,8 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route
 	case PCI_DEVICE_ID_INTEL_ICH10_1:
 	case PCI_DEVICE_ID_INTEL_ICH10_2:
 	case PCI_DEVICE_ID_INTEL_ICH10_3:
+	case PCI_DEVICE_ID_INTEL_CPT_LPC1:
+	case PCI_DEVICE_ID_INTEL_CPT_LPC2:
 		r->name = "PIIX/ICH";
 		r->get = pirq_piix_get;
 		r->set = pirq_piix_set;
arch/x86/power/hibernate_asm_32.S +7 -8
index b641388..ad47dae 100644
@@ -27,10 +27,17 @@ ENTRY(swsusp_arch_suspend)
 	ret
 
 ENTRY(restore_image)
+	movl	mmu_cr4_features, %ecx
 	movl	resume_pg_dir, %eax
 	subl	$__PAGE_OFFSET, %eax
 	movl	%eax, %cr3
 
+	jecxz	1f	# cr4 Pentium and higher, skip if zero
+	andl	$~(X86_CR4_PGE), %ecx
+	movl	%ecx, %cr4;  # turn off PGE
+	movl	%cr3, %eax;  # flush TLB
+	movl	%eax, %cr3
+1:
 	movl	restore_pblist, %edx
 	.p2align 4,,7
 
@@ -54,16 +61,8 @@ done:
 	movl	$swapper_pg_dir, %eax
 	subl	$__PAGE_OFFSET, %eax
 	movl	%eax, %cr3
-	/* Flush TLB, including "global" things (vmalloc) */
 	movl	mmu_cr4_features, %ecx
 	jecxz	1f	# cr4 Pentium and higher, skip if zero
-	movl	%ecx, %edx
-	andl	$~(X86_CR4_PGE), %edx
-	movl	%edx, %cr4;  # turn off PGE
-1:
-	movl	%cr3, %eax;  # flush TLB
-	movl	%eax, %cr3
-	jecxz	1f	# cr4 Pentium and higher, skip if zero
 	movl	%ecx, %cr4;  # turn PGE back on
 1:
 
drivers/acpi/acpica/exprep.c +17 -0
index 52fec07..83b6252 100644
@@ -468,6 +468,23 @@ acpi_status acpi_ex_prep_field_value(struct acpi_create_field_info *info)
 
 		acpi_ut_add_reference(obj_desc->field.region_obj);
 
+		/* allow full data read from EC address space */
+		if (obj_desc->field.region_obj->region.space_id ==
+			ACPI_ADR_SPACE_EC) {
+			if (obj_desc->common_field.bit_length > 8) {
+				unsigned width =
+					ACPI_ROUND_BITS_UP_TO_BYTES(
+					obj_desc->common_field.bit_length);
+				// access_bit_width is u8, don't overflow it
+				if (width > 8)
+					width = 8;
+				obj_desc->common_field.access_byte_width =
+							width;
+				obj_desc->common_field.access_bit_width =
+							8 * width;
+			}
+		}
+
 		ACPI_DEBUG_PRINT((ACPI_DB_BFIELD,
 				  "RegionField: BitOff %X, Off %X, Gran %X, Region %p\n",
 				  obj_desc->field.start_field_bit_offset,
drivers/acpi/ec.c +9 -26
index d6471bb..fc67d11 100644
@@ -589,12 +589,12 @@ static u32 acpi_ec_gpe_handler(void *data)
 
 static acpi_status
 acpi_ec_space_handler(u32 function, acpi_physical_address address,
-		      u32 bits, acpi_integer *value,
+		      u32 bits, acpi_integer *value64,
 		      void *handler_context, void *region_context)
 {
 	struct acpi_ec *ec = handler_context;
-	int result = 0, i;
-	u8 temp = 0;
+	int result = 0, i, bytes = bits / 8;
+	u8 *value = (u8 *)value64;
 
 	if ((address > 0xFF) || !value || !handler_context)
 		return AE_BAD_PARAMETER;
@@ -602,32 +602,15 @@ acpi_ec_space_handler(u32 function, acpi_physical_address address,
 	if (function != ACPI_READ && function != ACPI_WRITE)
 		return AE_BAD_PARAMETER;
 
-	if (bits != 8 && acpi_strict)
-		return AE_BAD_PARAMETER;
-
-	if (EC_FLAGS_MSI)
+	if (EC_FLAGS_MSI || bits > 8)
 		acpi_ec_burst_enable(ec);
 
-	if (function == ACPI_READ) {
-		result = acpi_ec_read(ec, address, &temp);
-		*value = temp;
-	} else {
-		temp = 0xff & (*value);
-		result = acpi_ec_write(ec, address, temp);
-	}
-
-	for (i = 8; unlikely(bits - i > 0); i += 8) {
-		++address;
-		if (function == ACPI_READ) {
-			result = acpi_ec_read(ec, address, &temp);
-			(*value) |= ((acpi_integer)temp) << i;
-		} else {
-			temp = 0xff & ((*value) >> i);
-			result = acpi_ec_write(ec, address, temp);
-		}
-	}
+	for (i = 0; i < bytes; ++i, ++address, ++value)
+		result = (function == ACPI_READ) ?
+			acpi_ec_read(ec, address, value) :
+			acpi_ec_write(ec, address, *value);
 
-	if (EC_FLAGS_MSI)
+	if (EC_FLAGS_MSI || bits > 8)
 		acpi_ec_burst_disable(ec);
 
 	switch (result) {
drivers/ata/ahci.c +6 -0
index 9e2feb6..462200d 100644
@@ -570,6 +570,12 @@ static const struct pci_device_id ahci_pci_tbl[] = {
 	{ PCI_VDEVICE(INTEL, 0x3b2b), board_ahci }, /* PCH RAID */
 	{ PCI_VDEVICE(INTEL, 0x3b2c), board_ahci }, /* PCH RAID */
 	{ PCI_VDEVICE(INTEL, 0x3b2f), board_ahci }, /* PCH AHCI */
+	{ PCI_VDEVICE(INTEL, 0x1c02), board_ahci }, /* CPT AHCI */
+	{ PCI_VDEVICE(INTEL, 0x1c03), board_ahci }, /* CPT AHCI */
+	{ PCI_VDEVICE(INTEL, 0x1c04), board_ahci }, /* CPT RAID */
+	{ PCI_VDEVICE(INTEL, 0x1c05), board_ahci }, /* CPT RAID */
+	{ PCI_VDEVICE(INTEL, 0x1c06), board_ahci }, /* CPT RAID */
+	{ PCI_VDEVICE(INTEL, 0x1c07), board_ahci }, /* CPT RAID */
 
 	/* JMicron 360/1/3/5/6, match class to avoid IDE function */
 	{ PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
drivers/ata/ata_piix.c +8 -0
index 6f3f225..b5f614b 100644
@@ -291,6 +291,14 @@ static const struct pci_device_id piix_pci_tbl[] = {
 	{ 0x8086, 0x3b2d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
 	/* SATA Controller IDE (PCH) */
 	{ 0x8086, 0x3b2e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
+	/* SATA Controller IDE (CPT) */
+	{ 0x8086, 0x1c00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
+	/* SATA Controller IDE (CPT) */
+	{ 0x8086, 0x1c01, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata },
+	/* SATA Controller IDE (CPT) */
+	{ 0x8086, 0x1c08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
+	/* SATA Controller IDE (CPT) */
+	{ 0x8086, 0x1c09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
 	{ }	/* terminate list */
 };
 
drivers/ata/libata-core.c +3 -0
index 6728328..2401c9c 100644
@@ -4348,6 +4348,9 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
 	{ "HTS541080G9SA00",    "MB4OC60D",     ATA_HORKAGE_NONCQ, },
 	{ "HTS541010G9SA00",    "MBZOC60D",     ATA_HORKAGE_NONCQ, },
 
+	/* https://bugzilla.kernel.org/show_bug.cgi?id=15573 */
+	{ "C300-CTFDDAC128MAG",	"0001",		ATA_HORKAGE_NONCQ, },
+
 	/* devices which puke on READ_NATIVE_MAX */
 	{ "HDS724040KLSA80",	"KFAOA20N",	ATA_HORKAGE_BROKEN_HPA, },
 	{ "WDC WD3200JD-00KLB0", "WD-WCAMR1130137", ATA_HORKAGE_BROKEN_HPA },
drivers/ata/pata_via.c +1 -0
index be7c395..ad64750 100644
@@ -697,6 +697,7 @@ static const struct pci_device_id via[] = {
 	{ PCI_VDEVICE(VIA, 0x3164), },
 	{ PCI_VDEVICE(VIA, 0x5324), },
 	{ PCI_VDEVICE(VIA, 0xC409), VIA_IDFLAG_SINGLE },
+	{ PCI_VDEVICE(VIA, 0x9001), VIA_IDFLAG_SINGLE },
 
 	{ },
 };
drivers/char/agp/intel-agp.c +4 -11
index 3999a5f..8a713f1 100644
@@ -8,6 +8,7 @@
 #include <linux/kernel.h>
 #include <linux/pagemap.h>
 #include <linux/agp_backend.h>
+#include <asm/smp.h>
 #include "agp.h"
 
 /*
@@ -815,12 +816,6 @@ static void intel_i830_setup_flush(void)
 		intel_i830_fini_flush();
 }
 
-static void
-do_wbinvd(void *null)
-{
-	wbinvd();
-}
-
 /* The chipset_flush interface needs to get data that has already been
  * flushed out of the CPU all the way out to main memory, because the GPU
  * doesn't snoop those buffers.
@@ -837,12 +832,10 @@ static void intel_i830_chipset_flush(struct agp_bridge_data *bridge)
 
 	memset(pg, 0, 1024);
 
-	if (cpu_has_clflush) {
+	if (cpu_has_clflush)
 		clflush_cache_range(pg, 1024);
-	} else {
-		if (on_each_cpu(do_wbinvd, NULL, 1) != 0)
-			printk(KERN_ERR "Timed out waiting for cache flush.\n");
-	}
+	else if (wbinvd_on_all_cpus() != 0)
+		printk(KERN_ERR "Timed out waiting for cache flush.\n");
 }
 
 /* The intel i830 automatically initializes the agp aperture during POST.
drivers/char/raw.c +1 -0
index 64acd05..9abc3a1 100644
@@ -247,6 +247,7 @@ static const struct file_operations raw_fops = {
 	.aio_read = 	generic_file_aio_read,
 	.write	=	do_sync_write,
 	.aio_write =	blkdev_aio_write,
+	.fsync	=	block_fsync,
 	.open	=	raw_open,
 	.release=	raw_release,
 	.ioctl	=	raw_ioctl,
drivers/char/tty_io.c +2 -0
index dcb9083..76253cf 100644
@@ -1423,6 +1423,8 @@ static void release_one_tty(struct work_struct *work)
 	list_del_init(&tty->tty_files);
 	file_list_unlock();
 
+	put_pid(tty->pgrp);
+	put_pid(tty->session);
 	free_tty_struct(tty);
 }
 
drivers/gpu/drm/drm_crtc_helper.c +1 -0
index 7d0f00a..99907c3 100644
@@ -104,6 +104,7 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
 	if (connector->status == connector_status_disconnected) {
 		DRM_DEBUG_KMS("%s is disconnected\n",
 			  drm_get_connector_name(connector));
+		drm_mode_connector_update_edid_property(connector, NULL);
 		goto prune;
 	}
 
drivers/gpu/drm/drm_edid.c +2 -9
index ab6c973..bfd0e4a 100644
@@ -85,6 +85,8 @@ static struct edid_quirk {
 
 	/* Envision Peripherals, Inc. EN-7100e */
 	{ "EPI", 59264, EDID_QUIRK_135_CLOCK_TOO_HIGH },
+	/* Envision EN2028 */
+	{ "EPI", 8232, EDID_QUIRK_PREFER_LARGE_60 },
 
 	/* Funai Electronics PM36B */
 	{ "FCM", 13600, EDID_QUIRK_PREFER_LARGE_75 |
@@ -707,15 +709,6 @@ static struct drm_display_mode *drm_mode_detailed(struct drm_device *dev,
 	mode->vsync_end = mode->vsync_start + vsync_pulse_width;
 	mode->vtotal = mode->vdisplay + vblank;
 
-	/* perform the basic check for the detailed timing */
-	if (mode->hsync_end > mode->htotal ||
-		mode->vsync_end > mode->vtotal) {
-		drm_mode_destroy(dev, mode);
-		DRM_DEBUG_KMS("Incorrect detailed timing. "
-				"Sync is beyond the blank.\n");
-		return NULL;
-	}
-
 	/* Some EDIDs have bogus h/vtotal values */
 	if (mode->hsync_end > mode->htotal)
 		mode->htotal = mode->hsync_end + 1;
drivers/gpu/drm/drm_fops.c +9 -7
index 08d14df..4804872 100644
@@ -140,14 +140,16 @@ int drm_open(struct inode *inode, struct file *filp)
 		spin_unlock(&dev->count_lock);
 	}
 out:
-	mutex_lock(&dev->struct_mutex);
-	if (minor->type == DRM_MINOR_LEGACY) {
-		BUG_ON((dev->dev_mapping != NULL) &&
-			(dev->dev_mapping != inode->i_mapping));
-		if (dev->dev_mapping == NULL)
-			dev->dev_mapping = inode->i_mapping;
+	if (!retcode) {
+		mutex_lock(&dev->struct_mutex);
+		if (minor->type == DRM_MINOR_LEGACY) {
+			if (dev->dev_mapping == NULL)
+				dev->dev_mapping = inode->i_mapping;
+			else if (dev->dev_mapping != inode->i_mapping)
+				retcode = -ENODEV;
+		}
+		mutex_unlock(&dev->struct_mutex);
 	}
-	mutex_unlock(&dev->struct_mutex);
 
 	return retcode;
 }
drivers/gpu/drm/i915/intel_lvds.c +8 -0
index 93031a7..1238bc9 100644
@@ -899,6 +899,14 @@ static const struct dmi_system_id intel_no_lvds[] = {
 			DMI_MATCH(DMI_PRODUCT_VERSION, "AO00001JW"),
 		},
 	},
+	{
+		.callback = intel_no_lvds_dmi_callback,
+		.ident = "Clientron U800",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Clientron"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "U800"),
+		},
+	},
 
 	{ }	/* terminating entry */
 };
drivers/gpu/drm/radeon/atom.c +10 -0
index d75788f..b1f929d 100644
@@ -881,11 +881,16 @@ static void atom_op_shl(atom_exec_context *ctx, int *ptr, int arg)
 	uint8_t attr = U8((*ptr)++), shift;
 	uint32_t saved, dst;
 	int dptr = *ptr;
+	uint32_t dst_align = atom_dst_to_src[(attr >> 3) & 7][(attr >> 6) & 3];
 	SDEBUG("   dst: ");
 	dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1);
+	/* op needs to full dst value */
+	dst = saved;
 	shift = atom_get_src(ctx, attr, ptr);
 	SDEBUG("   shift: %d\n", shift);
 	dst <<= shift;
+	dst &= atom_arg_mask[dst_align];
+	dst >>= atom_arg_shift[dst_align];
 	SDEBUG("   dst: ");
 	atom_put_dst(ctx, arg, attr, &dptr, dst, saved);
 }
@@ -895,11 +900,16 @@ static void atom_op_shr(atom_exec_context *ctx, int *ptr, int arg)
 	uint8_t attr = U8((*ptr)++), shift;
 	uint32_t saved, dst;
 	int dptr = *ptr;
+	uint32_t dst_align = atom_dst_to_src[(attr >> 3) & 7][(attr >> 6) & 3];
 	SDEBUG("   dst: ");
 	dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1);
+	/* op needs to full dst value */
+	dst = saved;
 	shift = atom_get_src(ctx, attr, ptr);
 	SDEBUG("   shift: %d\n", shift);
 	dst >>= shift;
+	dst &= atom_arg_mask[dst_align];
+	dst >>= atom_arg_shift[dst_align];
 	SDEBUG("   dst: ");
 	atom_put_dst(ctx, arg, attr, &dptr, dst, saved);
 }
drivers/gpu/drm/radeon/r300.c +3 -2
index 43b55a0..5bdfaf2 100644
@@ -364,11 +364,12 @@ void r300_gpu_init(struct radeon_device *rdev)
 
 	r100_hdp_reset(rdev);
 	/* FIXME: rv380 one pipes ? */
-	if ((rdev->family == CHIP_R300) || (rdev->family == CHIP_R350)) {
+	if ((rdev->family == CHIP_R300 && rdev->pdev->device != 0x4144) ||
+	    (rdev->family == CHIP_R350)) {
 		/* r300,r350 */
 		rdev->num_gb_pipes = 2;
 	} else {
-		/* rv350,rv370,rv380 */
+		/* rv350,rv370,rv380,r300 AD */
 		rdev->num_gb_pipes = 1;
 	}
 	rdev->num_z_pipes = 1;
drivers/gpu/drm/radeon/radeon_combios.c +15 -5
index e7b1944..81b832e 100644
@@ -670,7 +670,9 @@ struct radeon_encoder_primary_dac *radeon_combios_get_primary_dac_info(struct
 			dac = RBIOS8(dac_info + 0x3) & 0xf;
 			p_dac->ps2_pdac_adj = (bg << 8) | (dac);
 		}
-		found = 1;
+		/* if the values are all zeros, use the table */
+		if (p_dac->ps2_pdac_adj)
+			found = 1;
 	}
 
 out:
@@ -812,7 +814,9 @@ struct radeon_encoder_tv_dac *radeon_combios_get_tv_dac_info(struct
 			bg = RBIOS8(dac_info + 0x10) & 0xf;
 			dac = RBIOS8(dac_info + 0x11) & 0xf;
 			tv_dac->ntsc_tvdac_adj = (bg << 16) | (dac << 20);
-			found = 1;
+			/* if the values are all zeros, use the table */
+			if (tv_dac->ps2_tvdac_adj)
+				found = 1;
 		} else if (rev > 1) {
 			bg = RBIOS8(dac_info + 0xc) & 0xf;
 			dac = (RBIOS8(dac_info + 0xc) >> 4) & 0xf;
@@ -825,7 +829,9 @@ struct radeon_encoder_tv_dac *radeon_combios_get_tv_dac_info(struct
 			bg = RBIOS8(dac_info + 0xe) & 0xf;
 			dac = (RBIOS8(dac_info + 0xe) >> 4) & 0xf;
 			tv_dac->ntsc_tvdac_adj = (bg << 16) | (dac << 20);
-			found = 1;
+			/* if the values are all zeros, use the table */
+			if (tv_dac->ps2_tvdac_adj)
+				found = 1;
 		}
 		tv_dac->tv_std = radeon_combios_get_tv_info(rdev);
 	}
@@ -842,7 +848,9 @@ struct radeon_encoder_tv_dac *radeon_combios_get_tv_dac_info(struct
 				    (bg << 16) | (dac << 20);
 				tv_dac->pal_tvdac_adj = tv_dac->ps2_tvdac_adj;
 				tv_dac->ntsc_tvdac_adj = tv_dac->ps2_tvdac_adj;
-				found = 1;
+				/* if the values are all zeros, use the table */
+				if (tv_dac->ps2_tvdac_adj)
+					found = 1;
 			} else {
 				bg = RBIOS8(dac_info + 0x4) & 0xf;
 				dac = RBIOS8(dac_info + 0x5) & 0xf;
@@ -850,7 +858,9 @@ struct radeon_encoder_tv_dac *radeon_combios_get_tv_dac_info(struct
 				    (bg << 16) | (dac << 20);
 				tv_dac->pal_tvdac_adj = tv_dac->ps2_tvdac_adj;
 				tv_dac->ntsc_tvdac_adj = tv_dac->ps2_tvdac_adj;
-				found = 1;
+				/* if the values are all zeros, use the table */
+				if (tv_dac->ps2_tvdac_adj)
+					found = 1;
 			}
 		} else {
 			DRM_INFO("No TV DAC info found in BIOS\n");
drivers/gpu/drm/radeon/radeon_connectors.c +6 -1
index 65f8194..2bdfbcd 100644
@@ -162,12 +162,14 @@ radeon_connector_analog_encoder_conflict_solve(struct drm_connector *connector,
 {
 	struct drm_device *dev = connector->dev;
 	struct drm_connector *conflict;
+	struct radeon_connector *radeon_conflict;
 	int i;
 
 	list_for_each_entry(conflict, &dev->mode_config.connector_list, head) {
 		if (conflict == connector)
 			continue;
 
+		radeon_conflict = to_radeon_connector(conflict);
 		for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) {
 			if (conflict->encoder_ids[i] == 0)
 				break;
@@ -177,6 +179,9 @@ radeon_connector_analog_encoder_conflict_solve(struct drm_connector *connector,
 				if (conflict->status != connector_status_connected)
 					continue;
 
+				if (radeon_conflict->use_digital)
+					continue;
+
 				if (priority == true) {
 					DRM_INFO("1: conflicting encoders switching off %s\n", drm_get_connector_name(conflict));
 					DRM_INFO("in favor of %s\n", drm_get_connector_name(connector));
@@ -315,7 +320,7 @@ int radeon_connector_set_property(struct drm_connector *connector, struct drm_pr
 		radeon_encoder = to_radeon_encoder(encoder);
 		if (!radeon_encoder->enc_priv)
 			return 0;
-		if (rdev->is_atom_bios) {
+		if (ASIC_IS_AVIVO(rdev) || radeon_r4xx_atom) {
 			struct radeon_encoder_atom_dac *dac_int;
 			dac_int = radeon_encoder->enc_priv;
 			dac_int->tv_std = val;
drivers/gpu/drm/radeon/radeon_cp.c +6 -4
index 06123ba..f129bbb 100644
@@ -417,8 +417,9 @@ static int radeon_do_wait_for_idle(drm_radeon_private_t * dev_priv)
 	return -EBUSY;
 }
 
-static void radeon_init_pipes(drm_radeon_private_t *dev_priv)
+static void radeon_init_pipes(struct drm_device *dev)
 {
+	drm_radeon_private_t *dev_priv = dev->dev_private;
 	uint32_t gb_tile_config, gb_pipe_sel = 0;
 
 	if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV530) {
@@ -436,11 +437,12 @@ static void radeon_init_pipes(drm_radeon_private_t *dev_priv)
 		dev_priv->num_gb_pipes = ((gb_pipe_sel >> 12) & 0x3) + 1;
 	} else {
 		/* R3xx */
-		if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R300) ||
+		if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R300 &&
+		     dev->pdev->device != 0x4144) ||
 		    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R350)) {
 			dev_priv->num_gb_pipes = 2;
 		} else {
-			/* R3Vxx */
+			/* RV3xx/R300 AD */
 			dev_priv->num_gb_pipes = 1;
 		}
 	}
@@ -736,7 +738,7 @@ static int radeon_do_engine_reset(struct drm_device * dev)
 
 	/* setup the raster pipes */
 	if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_R300)
-	    radeon_init_pipes(dev_priv);
+	    radeon_init_pipes(dev);
 
 	/* Reset the CP ring */
 	radeon_do_cp_reset(dev_priv);
drivers/gpu/drm/radeon/radeon_cs.c +9 -6
index e9d0850..9933c2c 100644
@@ -193,11 +193,13 @@ static void radeon_cs_parser_fini(struct radeon_cs_parser *parser, int error)
 		radeon_bo_list_fence(&parser->validated, parser->ib->fence);
 	}
 	radeon_bo_list_unreserve(&parser->validated);
-	for (i = 0; i < parser->nrelocs; i++) {
-		if (parser->relocs[i].gobj) {
-			mutex_lock(&parser->rdev->ddev->struct_mutex);
-			drm_gem_object_unreference(parser->relocs[i].gobj);
-			mutex_unlock(&parser->rdev->ddev->struct_mutex);
+	if (parser->relocs != NULL) {
+		for (i = 0; i < parser->nrelocs; i++) {
+			if (parser->relocs[i].gobj) {
+				mutex_lock(&parser->rdev->ddev->struct_mutex);
+				drm_gem_object_unreference(parser->relocs[i].gobj);
+				mutex_unlock(&parser->rdev->ddev->struct_mutex);
+			}
 		}
 	}
 	kfree(parser->track);
@@ -246,7 +248,8 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
 	}
 	r = radeon_cs_parser_relocs(&parser);
 	if (r) {
-		DRM_ERROR("Failed to parse relocation !\n");
+		if (r != -ERESTARTSYS)
+			DRM_ERROR("Failed to parse relocation %d!\n", r);
 		radeon_cs_parser_fini(&parser, r);
 		mutex_unlock(&rdev->cs_mutex);
 		return r;
drivers/gpu/drm/radeon/radeon_device.c +8 -0
index 768b150..509ba3f 100644
@@ -655,6 +655,14 @@ int radeon_device_init(struct radeon_device *rdev,
 		return r;
 	radeon_check_arguments(rdev);
 
+	/* all of the newer IGP chips have an internal gart
+	 * However some rs4xx report as AGP, so remove that here.
+	 */
+	if ((rdev->family >= CHIP_RS400) &&
+	    (rdev->flags & RADEON_IS_IGP)) {
+		rdev->flags &= ~RADEON_IS_AGP;
+	}
+
 	if (rdev->flags & RADEON_IS_AGP && radeon_agpmode == -1) {
 		radeon_agp_disable(rdev);
 	}
drivers/gpu/drm/radeon/radeon_encoders.c +6 -2
index 3c91724..7626bd5 100644
@@ -1276,8 +1276,12 @@ radeon_atom_encoder_mode_set(struct drm_encoder *encoder,
 	case ENCODER_OBJECT_ID_INTERNAL_DAC2:
 	case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2:
 		atombios_dac_setup(encoder, ATOM_ENABLE);
-		if (radeon_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT | ATOM_DEVICE_CV_SUPPORT))
-			atombios_tv_setup(encoder, ATOM_ENABLE);
+		if (radeon_encoder->devices & (ATOM_DEVICE_TV_SUPPORT | ATOM_DEVICE_CV_SUPPORT)) {
+			if (radeon_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT | ATOM_DEVICE_CV_SUPPORT))
+				atombios_tv_setup(encoder, ATOM_ENABLE);
+			else
+				atombios_tv_setup(encoder, ATOM_DISABLE);
+		}
 		break;
 	}
 	atombios_apply_encoder_quirks(encoder, adjusted_mode);
drivers/gpu/drm/radeon/radeon_legacy_tv.c +24 -5
index 417684d..f2ed27c 100644
@@ -57,6 +57,10 @@
 #define NTSC_TV_PLL_N_14 693
 #define NTSC_TV_PLL_P_14 7
 
+#define PAL_TV_PLL_M_14 19
+#define PAL_TV_PLL_N_14 353
+#define PAL_TV_PLL_P_14 5
+
 #define VERT_LEAD_IN_LINES 2
 #define FRAC_BITS 0xe
 #define FRAC_MASK 0x3fff
@@ -205,9 +209,24 @@ static const struct radeon_tv_mode_constants available_tv_modes[] = {
 		630627,             /* defRestart */
 		347,                /* crtcPLL_N */
 		14,                 /* crtcPLL_M */
-			8,                  /* crtcPLL_postDiv */
+		8,                  /* crtcPLL_postDiv */
 		1022,               /* pixToTV */
 	},
+	{ /* PAL timing for 14 Mhz ref clk */
+		800,                /* horResolution */
+		600,                /* verResolution */
+		TV_STD_PAL,         /* standard */
+		1131,               /* horTotal */
+		742,                /* verTotal */
+		813,                /* horStart */
+		840,                /* horSyncStart */
+		633,                /* verSyncStart */
+		708369,             /* defRestart */
+		211,                /* crtcPLL_N */
+		9,                  /* crtcPLL_M */
+		8,                  /* crtcPLL_postDiv */
+		759,                /* pixToTV */
+	},
 };
 
 #define N_AVAILABLE_MODES ARRAY_SIZE(available_tv_modes)
@@ -242,7 +261,7 @@ static const struct radeon_tv_mode_constants *radeon_legacy_tv_get_std_mode(stru
 		if (pll->reference_freq == 2700)
 			const_ptr = &available_tv_modes[1];
 		else
-			const_ptr = &available_tv_modes[1]; /* FIX ME */
+			const_ptr = &available_tv_modes[3];
 	}
 	return const_ptr;
 }
@@ -685,9 +704,9 @@ void radeon_legacy_tv_mode_set(struct drm_encoder *encoder,
 			n = PAL_TV_PLL_N_27;
 			p = PAL_TV_PLL_P_27;
 		} else {
-			m = PAL_TV_PLL_M_27;
-			n = PAL_TV_PLL_N_27;
-			p = PAL_TV_PLL_P_27;
+			m = PAL_TV_PLL_M_14;
+			n = PAL_TV_PLL_N_14;
+			p = PAL_TV_PLL_P_14;
 		}
 	}
 
drivers/gpu/drm/radeon/rs600.c +1 -1
index c381856..a27c09f 100644
@@ -175,7 +175,7 @@ void rs600_gart_tlb_flush(struct radeon_device *rdev)
 	WREG32_MC(R_000100_MC_PT0_CNTL, tmp);
 
 	tmp = RREG32_MC(R_000100_MC_PT0_CNTL);
-	tmp |= S_000100_INVALIDATE_ALL_L1_TLBS(1) & S_000100_INVALIDATE_L2_CACHE(1);
+	tmp |= S_000100_INVALIDATE_ALL_L1_TLBS(1) | S_000100_INVALIDATE_L2_CACHE(1);
 	WREG32_MC(R_000100_MC_PT0_CNTL, tmp);
 
 	tmp = RREG32_MC(R_000100_MC_PT0_CNTL);
drivers/hid/hid-gyration.c +4 -1
index cab13e8..62416e6 100644
@@ -53,10 +53,13 @@ static int gyration_input_mapping(struct hid_device *hdev, struct hid_input *hi,
 static int gyration_event(struct hid_device *hdev, struct hid_field *field,
 		struct hid_usage *usage, __s32 value)
 {
-	struct input_dev *input = field->hidinput->input;
+
+	if (!(hdev->claimed & HID_CLAIMED_INPUT) || !field->hidinput)
+		return 0;
 
 	if ((usage->hid & HID_USAGE_PAGE) == HID_UP_GENDESK &&
 			(usage->hid & 0xff) == 0x82) {
+		struct input_dev *input = field->hidinput->input;
 		input_event(input, usage->type, usage->code, 1);
 		input_sync(input);
 		input_event(input, usage->type, usage->code, 0);
drivers/hwmon/sht15.c +9 -4
index 864a371..fbc997e 100644
@@ -302,13 +302,13 @@ error_ret:
  **/
 static inline int sht15_calc_temp(struct sht15_data *data)
 {
-	int d1 = 0;
+	int d1 = temppoints[0].d1;
 	int i;
 
-	for (i = 1; i < ARRAY_SIZE(temppoints); i++)
+	for (i = ARRAY_SIZE(temppoints) - 1; i > 0; i--)
 		/* Find pointer to interpolate */
 		if (data->supply_uV > temppoints[i - 1].vdd) {
-			d1 = (data->supply_uV/1000 - temppoints[i - 1].vdd)
+			d1 = (data->supply_uV - temppoints[i - 1].vdd)
 				* (temppoints[i].d1 - temppoints[i - 1].d1)
 				/ (temppoints[i].vdd - temppoints[i - 1].vdd)
 				+ temppoints[i - 1].d1;
@@ -541,7 +541,12 @@ static int __devinit sht15_probe(struct platform_device *pdev)
 /* If a regulator is available, query what the supply voltage actually is!*/
 	data->reg = regulator_get(data->dev, "vcc");
 	if (!IS_ERR(data->reg)) {
-		data->supply_uV = regulator_get_voltage(data->reg);
+		int voltage;
+
+		voltage = regulator_get_voltage(data->reg);
+		if (voltage)
+			data->supply_uV = voltage;
+
 		regulator_enable(data->reg);
 		/* setup a notifier block to update this if another device
 		 *  causes the voltage to change */
drivers/i2c/busses/Kconfig +3 -2
index 5f318ce..cb9f95c 100644
@@ -77,7 +77,7 @@ config I2C_AMD8111
 	  will be called i2c-amd8111.
 
 config I2C_I801
-	tristate "Intel 82801 (ICH)"
+	tristate "Intel 82801 (ICH/PCH)"
 	depends on PCI
 	help
 	  If you say yes to this option, support will be included for the Intel
@@ -97,7 +97,8 @@ config I2C_I801
 	    ICH9
 	    Tolapai
 	    ICH10
-	    PCH
+	    3400/5 Series (PCH)
+	    Cougar Point (PCH)
 
 	  This driver can also be built as a module.  If so, the module
 	  will be called i2c-i801.
drivers/i2c/busses/i2c-i801.c +4 -1
index 5574be2..e361da7 100644
@@ -41,7 +41,8 @@
   Tolapai               0x5032     32     hard     yes     yes     yes
   ICH10                 0x3a30     32     hard     yes     yes     yes
   ICH10                 0x3a60     32     hard     yes     yes     yes
-  PCH                   0x3b30     32     hard     yes     yes     yes
+  3400/5 Series (PCH)   0x3b30     32     hard     yes     yes     yes
+  Cougar Point (PCH)    0x1c22     32     hard     yes     yes     yes
 
   Features supported by this driver:
   Software PEC                     no
@@ -580,6 +581,7 @@ static struct pci_device_id i801_ids[] = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH10_4) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH10_5) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PCH_SMBUS) },
+	{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_CPT_SMBUS) },
 	{ 0, }
 };
 
@@ -709,6 +711,7 @@ static int __devinit i801_probe(struct pci_dev *dev, const struct pci_device_id
 	case PCI_DEVICE_ID_INTEL_ICH10_4:
 	case PCI_DEVICE_ID_INTEL_ICH10_5:
 	case PCI_DEVICE_ID_INTEL_PCH_SMBUS:
+	case PCI_DEVICE_ID_INTEL_CPT_SMBUS:
 		i801_features |= FEATURE_I2C_BLOCK_READ;
 		/* fall through */
 	case PCI_DEVICE_ID_INTEL_82801DB_3:
drivers/infiniband/ulp/ipoib/ipoib_cm.c +2 -0
index 30bdf42..f8302c2 100644
@@ -752,6 +752,8 @@ void ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_
 		if (++priv->tx_outstanding == ipoib_sendq_size) {
 			ipoib_dbg(priv, "TX ring 0x%x full, stopping kernel net queue\n",
 				  tx->qp->qp_num);
+			if (ib_req_notify_cq(priv->send_cq, IB_CQ_NEXT_COMP))
+				ipoib_warn(priv, "request notify on send CQ failed\n");
 			netif_stop_queue(dev);
 		}
 	}
drivers/input/sparse-keymap.c +1 -1
index fbd3987..e8d65b3 100644
@@ -161,7 +161,7 @@ int sparse_keymap_setup(struct input_dev *dev,
 	return 0;
 
  err_out:
-	kfree(keymap);
+	kfree(map);
 	return error;
 
 }
drivers/input/tablet/wacom_sys.c +7 -5
index 072f33b..e53ddc5 100644
@@ -644,13 +644,15 @@ static int wacom_resume(struct usb_interface *intf)
 	int rv;
 
 	mutex_lock(&wacom->lock);
-	if (wacom->open) {
+
+	/* switch to wacom mode first */
+	wacom_query_tablet_data(intf, features);
+
+	if (wacom->open)
 		rv = usb_submit_urb(wacom->irq, GFP_NOIO);
-		/* switch to wacom mode if needed */
-		if (!wacom_retrieve_hid_descriptor(intf, features))
-			wacom_query_tablet_data(intf, features);
-	} else
+	else
 		rv = 0;
+
 	mutex_unlock(&wacom->lock);
 
 	return rv;
drivers/md/dm-ioctl.c +12 -7
index e3cf568..d7500e1 100644
@@ -285,7 +285,8 @@ retry:
 	up_write(&_hash_lock);
 }
 
-static int dm_hash_rename(uint32_t cookie, const char *old, const char *new)
+static int dm_hash_rename(uint32_t cookie, uint32_t *flags, const char *old,
+			  const char *new)
 {
 	char *new_name, *old_name;
 	struct hash_cell *hc;
@@ -344,7 +345,8 @@ static int dm_hash_rename(uint32_t cookie, const char *old, const char *new)
 		dm_table_put(table);
 	}
 
-	dm_kobject_uevent(hc->md, KOBJ_CHANGE, cookie);
+	if (!dm_kobject_uevent(hc->md, KOBJ_CHANGE, cookie))
+		*flags |= DM_UEVENT_GENERATED_FLAG;
 
 	dm_put(hc->md);
 	up_write(&_hash_lock);
@@ -736,10 +738,10 @@ static int dev_remove(struct dm_ioctl *param, size_t param_size)
 	__hash_remove(hc);
 	up_write(&_hash_lock);
 
-	dm_kobject_uevent(md, KOBJ_REMOVE, param->event_nr);
+	if (!dm_kobject_uevent(md, KOBJ_REMOVE, param->event_nr))
+		param->flags |= DM_UEVENT_GENERATED_FLAG;
 
 	dm_put(md);
-	param->data_size = 0;
 	return 0;
 }
 
@@ -773,7 +775,9 @@ static int dev_rename(struct dm_ioctl *param, size_t param_size)
 		return r;
 
 	param->data_size = 0;
-	return dm_hash_rename(param->event_nr, param->name, new_name);
+
+	return dm_hash_rename(param->event_nr, &param->flags, param->name,
+			      new_name);
 }
 
 static int dev_set_geometry(struct dm_ioctl *param, size_t param_size)
@@ -899,8 +903,8 @@ static int do_resume(struct dm_ioctl *param)
 
 	if (dm_suspended_md(md)) {
 		r = dm_resume(md);
-		if (!r)
-			dm_kobject_uevent(md, KOBJ_CHANGE, param->event_nr);
+		if (!r && !dm_kobject_uevent(md, KOBJ_CHANGE, param->event_nr))
+			param->flags |= DM_UEVENT_GENERATED_FLAG;
 	}
 
 	if (old_map)
@@ -1477,6 +1481,7 @@ static int validate_params(uint cmd, struct dm_ioctl *param)
 {
 	/* Always clear this flag */
 	param->flags &= ~DM_BUFFER_FULL_FLAG;
+	param->flags &= ~DM_UEVENT_GENERATED_FLAG;
 
 	/* Ignores parameters */
 	if (cmd == DM_REMOVE_ALL_CMD ||
drivers/md/dm.c +4 -3
index fa786b9..fe8889e 100644
@@ -2618,18 +2618,19 @@ out:
 /*-----------------------------------------------------------------
  * Event notification.
  *---------------------------------------------------------------*/
-void dm_kobject_uevent(struct mapped_device *md, enum kobject_action action,
+int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action,
 		       unsigned cookie)
 {
 	char udev_cookie[DM_COOKIE_LENGTH];
 	char *envp[] = { udev_cookie, NULL };
 
 	if (!cookie)
-		kobject_uevent(&disk_to_dev(md->disk)->kobj, action);
+		return kobject_uevent(&disk_to_dev(md->disk)->kobj, action);
 	else {
 		snprintf(udev_cookie, DM_COOKIE_LENGTH, "%s=%u",
 			 DM_COOKIE_ENV_VAR_NAME, cookie);
-		kobject_uevent_env(&disk_to_dev(md->disk)->kobj, action, envp);
+		return kobject_uevent_env(&disk_to_dev(md->disk)->kobj,
+					  action, envp);
 	}
 }
 
drivers/md/dm.h +2 -2
index 8dadaa5..bad1724 100644
@@ -125,8 +125,8 @@ void dm_stripe_exit(void);
 int dm_open_count(struct mapped_device *md);
 int dm_lock_for_deletion(struct mapped_device *md);
 
-void dm_kobject_uevent(struct mapped_device *md, enum kobject_action action,
-		       unsigned cookie);
+int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action,
+		      unsigned cookie);
 
 int dm_io_init(void);
 void dm_io_exit(void);
drivers/md/linear.c +7 -5
index 00435bd..001317b 100644
@@ -172,12 +172,14 @@ static linear_conf_t *linear_conf(mddev_t *mddev, int raid_disks)
 		disk_stack_limits(mddev->gendisk, rdev->bdev,
 				  rdev->data_offset << 9);
 		/* as we don't honour merge_bvec_fn, we must never risk
-		 * violating it, so limit ->max_sector to one PAGE, as
-		 * a one page request is never in violation.
+		 * violating it, so limit max_phys_segments to 1 lying within
+		 * a single page.
 		 */
-		if (rdev->bdev->bd_disk->queue->merge_bvec_fn &&
-		    queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9))
-			blk_queue_max_sectors(mddev->queue, PAGE_SIZE>>9);
+		if (rdev->bdev->bd_disk->queue->merge_bvec_fn) {
+			blk_queue_max_phys_segments(mddev->queue, 1);
+			blk_queue_segment_boundary(mddev->queue,
+						   PAGE_CACHE_SIZE - 1);
+		}
 
 		conf->array_sectors += rdev->sectors;
 		cnt++;
drivers/md/multipath.c +12 -8
index 32a662f..f9ee99f 100644
@@ -301,14 +301,16 @@ static int multipath_add_disk(mddev_t *mddev, mdk_rdev_t *rdev)
 					  rdev->data_offset << 9);
 
 		/* as we don't honour merge_bvec_fn, we must never risk
-		 * violating it, so limit ->max_sector to one PAGE, as
-		 * a one page request is never in violation.
+		 * violating it, so limit ->max_phys_segments to one, lying
+		 * within a single page.
 		 * (Note: it is very unlikely that a device with
 		 * merge_bvec_fn will be involved in multipath.)
 		 */
-			if (q->merge_bvec_fn &&
-			    queue_max_sectors(q) > (PAGE_SIZE>>9))
-				blk_queue_max_sectors(mddev->queue, PAGE_SIZE>>9);
+			if (q->merge_bvec_fn) {
+				blk_queue_max_phys_segments(mddev->queue, 1);
+				blk_queue_segment_boundary(mddev->queue,
+							   PAGE_CACHE_SIZE - 1);
+			}
 
 			conf->working_disks++;
 			mddev->degraded--;
@@ -476,9 +478,11 @@ static int multipath_run (mddev_t *mddev)
 		/* as we don't honour merge_bvec_fn, we must never risk
 		 * violating it, not that we ever expect a device with
 		 * a merge_bvec_fn to be involved in multipath */
-		if (rdev->bdev->bd_disk->queue->merge_bvec_fn &&
-		    queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9))
-			blk_queue_max_sectors(mddev->queue, PAGE_SIZE>>9);
+		if (rdev->bdev->bd_disk->queue->merge_bvec_fn) {
+			blk_queue_max_phys_segments(mddev->queue, 1);
+			blk_queue_segment_boundary(mddev->queue,
+						   PAGE_CACHE_SIZE - 1);
+		}
 
 		if (!test_bit(Faulty, &rdev->flags))
 			conf->working_disks++;
drivers/md/raid0.c +7 -6
index 77605cd..41ee9de 100644
@@ -176,14 +176,15 @@ static int create_strip_zones(mddev_t *mddev)
 		disk_stack_limits(mddev->gendisk, rdev1->bdev,
 				  rdev1->data_offset << 9);
 		/* as we don't honour merge_bvec_fn, we must never risk
-		 * violating it, so limit ->max_sector to one PAGE, as
-		 * a one page request is never in violation.
+		 * violating it, so limit ->max_phys_segments to 1, lying within
+		 * a single page.
 		 */
 
-		if (rdev1->bdev->bd_disk->queue->merge_bvec_fn &&
-		    queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9))
-			blk_queue_max_sectors(mddev->queue, PAGE_SIZE>>9);
-
+		if (rdev1->bdev->bd_disk->queue->merge_bvec_fn) {
+			blk_queue_max_phys_segments(mddev->queue, 1);
+			blk_queue_segment_boundary(mddev->queue,
+						   PAGE_CACHE_SIZE - 1);
+		}
 		if (!smallest || (rdev1->sectors < smallest->sectors))
 			smallest = rdev1;
 		cnt++;
drivers/md/raid10.c +17 -11
index d119b7b..047c468 100644
@@ -1155,13 +1155,17 @@ static int raid10_add_disk(mddev_t *mddev, mdk_rdev_t *rdev)
 
 			disk_stack_limits(mddev->gendisk, rdev->bdev,
 					  rdev->data_offset << 9);
-			/* as we don't honour merge_bvec_fn, we must never risk
-			 * violating it, so limit ->max_sector to one PAGE, as
-			 * a one page request is never in violation.
+			/* as we don't honour merge_bvec_fn, we must
+			 * never risk violating it, so limit
+			 * ->max_phys_segments to one lying with a single
+			 * page, as a one page request is never in
+			 * violation.
 			 */
-			if (rdev->bdev->bd_disk->queue->merge_bvec_fn &&
-			    queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9))
-				blk_queue_max_sectors(mddev->queue, PAGE_SIZE>>9);
+			if (rdev->bdev->bd_disk->queue->merge_bvec_fn) {
+				blk_queue_max_phys_segments(mddev->queue, 1);
+				blk_queue_segment_boundary(mddev->queue,
+							   PAGE_CACHE_SIZE - 1);
+			}
 
 			p->head_position = 0;
 			rdev->raid_disk = mirror;
@@ -2255,12 +2259,14 @@ static int run(mddev_t *mddev)
 		disk_stack_limits(mddev->gendisk, rdev->bdev,
 				  rdev->data_offset << 9);
 		/* as we don't honour merge_bvec_fn, we must never risk
-		 * violating it, so limit ->max_sector to one PAGE, as
-		 * a one page request is never in violation.
+		 * violating it, so limit max_phys_segments to 1 lying
+		 * within a single page.
 		 */
-		if (rdev->bdev->bd_disk->queue->merge_bvec_fn &&
-		    queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9))
-			blk_queue_max_sectors(mddev->queue, PAGE_SIZE>>9);
+		if (rdev->bdev->bd_disk->queue->merge_bvec_fn) {
+			blk_queue_max_phys_segments(mddev->queue, 1);
+			blk_queue_segment_boundary(mddev->queue,
+						   PAGE_CACHE_SIZE - 1);
+		}
 
 		disk->head_position = 0;
 	}
drivers/net/e1000e/netdev.c +2 -0
index 57f149b..4d353d2 100644
@@ -660,6 +660,8 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter)
 				i = 0;
 		}
 
+		if (i == tx_ring->next_to_use)
+			break;
 		eop = tx_ring->buffer_info[i].next_to_watch;
 		eop_desc = E1000_TX_DESC(*tx_ring, eop);
 	}
drivers/net/r8169.c +2 -2
index 67d414b..3db85da 100644
@@ -3255,8 +3255,8 @@ static void rtl8169_set_rxbufsize(struct rtl8169_private *tp,
 	unsigned int max_frame = mtu + VLAN_ETH_HLEN + ETH_FCS_LEN;
 
 	if (max_frame != 16383)
-		printk(KERN_WARNING "WARNING! Changing of MTU on this NIC"
-			"May lead to frame reception errors!\n");
+		printk(KERN_WARNING PFX "WARNING! Changing of MTU on this "
+			"NIC may lead to frame reception errors!\n");
 
 	tp->rx_buf_sz = (max_frame > RX_BUF_SIZE) ? max_frame : RX_BUF_SIZE;
 }
drivers/net/wireless/ath/ar9170/usb.c +1 -1
index e0799d9..0387658 100644
@@ -414,7 +414,7 @@ static int ar9170_usb_exec_cmd(struct ar9170 *ar, enum ar9170_cmd cmd,
 	spin_unlock_irqrestore(&aru->common.cmdlock, flags);
 
 	usb_fill_int_urb(urb, aru->udev,
-			 usb_sndbulkpipe(aru->udev, AR9170_EP_CMD),
+			 usb_sndintpipe(aru->udev, AR9170_EP_CMD),
 			 aru->common.cmdbuf, plen + 4,
 			 ar9170_usb_tx_urb_complete, NULL, 1);
 
drivers/net/wireless/ath/ath9k/main.c +1 -2
index 33a1071..7b1eab4 100644
@@ -2721,8 +2721,7 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
 		all_wiphys_idle =  ath9k_all_wiphys_idle(sc);
 		ath9k_set_wiphy_idle(aphy, idle);
 
-		if (!idle && all_wiphys_idle)
-			enable_radio = true;
+		enable_radio = (!idle && all_wiphys_idle);
 
 		/*
 		 * After we unlock here its possible another wiphy
drivers/net/wireless/b43/Kconfig +3 -3
index 64c12e1..0a00d42 100644
@@ -78,11 +78,11 @@ config B43_SDIO
 
 	  If unsure, say N.
 
-# Data transfers to the device via PIO
-# This is only needed on PCMCIA and SDIO devices. All others can do DMA properly.
+#Data transfers to the device via PIO. We want it as a fallback even
+# if we can do DMA.
 config B43_PIO
 	bool
-	depends on B43 && (B43_SDIO || B43_PCMCIA || B43_FORCE_PIO)
+	depends on B43
 	select SSB_BLOCKIO
 	default y
 
drivers/net/wireless/b43/Makefile +1 -1
index 84772a2..5e83b6f 100644
@@ -12,7 +12,7 @@ b43-y				+= xmit.o
 b43-y				+= lo.o
 b43-y				+= wa.o
 b43-y				+= dma.o
-b43-$(CONFIG_B43_PIO)		+= pio.o
+b43-y				+= pio.o
 b43-y				+= rfkill.o
 b43-$(CONFIG_B43_LEDS)		+= leds.o
 b43-$(CONFIG_B43_PCMCIA)	+= pcmcia.o
drivers/net/wireless/b43/b43.h +3 -9
index c484cc2..7df822e 100644
@@ -694,6 +694,7 @@ struct b43_wldev {
 	bool radio_hw_enable;	/* saved state of radio hardware enabled state */
 	bool qos_enabled;		/* TRUE, if QoS is used. */
 	bool hwcrypto_enabled;		/* TRUE, if HW crypto acceleration is enabled. */
+	bool use_pio;			/* TRUE if next init should use PIO */
 
 	/* PHY/Radio device. */
 	struct b43_phy phy;
@@ -822,11 +823,9 @@ struct b43_wl {
 	/* The device LEDs. */
 	struct b43_leds leds;
 
-#ifdef CONFIG_B43_PIO
 	/* Kmalloc'ed scratch space for PIO TX/RX. Protected by wl->mutex. */
 	u8 pio_scratchspace[110] __attribute__((__aligned__(8)));
 	u8 pio_tailspace[4] __attribute__((__aligned__(8)));
-#endif /* CONFIG_B43_PIO */
 };
 
 static inline struct b43_wl *hw_to_b43_wl(struct ieee80211_hw *hw)
@@ -877,20 +876,15 @@ static inline void b43_write32(struct b43_wldev *dev, u16 offset, u32 value)
 
 static inline bool b43_using_pio_transfers(struct b43_wldev *dev)
 {
-#ifdef CONFIG_B43_PIO
 	return dev->__using_pio_transfers;
-#else
-	return 0;
-#endif
 }
 
 #ifdef CONFIG_B43_FORCE_PIO
-# define B43_FORCE_PIO	1
+# define B43_PIO_DEFAULT 1
 #else
-# define B43_FORCE_PIO	0
+# define B43_PIO_DEFAULT 0
 #endif
 
-
 /* Message printing */
 void b43info(struct b43_wl *wl, const char *fmt, ...)
     __attribute__ ((format(printf, 2, 3)));
drivers/net/wireless/b43/dma.c +0 -2
index 88d1fd0..615af22 100644
@@ -1653,7 +1653,6 @@ void b43_dma_tx_resume(struct b43_wldev *dev)
 	b43_power_saving_ctl_bits(dev, 0);
 }
 
-#ifdef CONFIG_B43_PIO
 static void direct_fifo_rx(struct b43_wldev *dev, enum b43_dmatype type,
 			   u16 mmio_base, bool enable)
 {
@@ -1687,4 +1686,3 @@ void b43_dma_direct_fifo_rx(struct b43_wldev *dev,
 	mmio_base = b43_dmacontroller_base(type, engine_index);
 	direct_fifo_rx(dev, type, mmio_base, enable);
 }
-#endif /* CONFIG_B43_PIO */
drivers/net/wireless/b43/main.c +8 -3
index 629c166..9eb4f5e 100644
@@ -102,6 +102,9 @@ int b43_modparam_verbose = B43_VERBOSITY_DEFAULT;
 module_param_named(verbose, b43_modparam_verbose, int, 0644);
 MODULE_PARM_DESC(verbose, "Log message verbosity: 0=error, 1=warn, 2=info(default), 3=debug");
 
+int b43_modparam_pio = B43_PIO_DEFAULT;
+module_param_named(pio, b43_modparam_pio, int, 0644);
+MODULE_PARM_DESC(pio, "Use PIO accesses by default: 0=DMA, 1=PIO");
 
 static const struct ssb_device_id b43_ssb_tbl[] = {
 	SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5),
@@ -1790,8 +1793,9 @@ static void b43_do_interrupt_thread(struct b43_wldev *dev)
 			       dma_reason[4], dma_reason[5]);
 			b43err(dev->wl, "This device does not support DMA "
 			       "on your system. Please use PIO instead.\n");
-			b43err(dev->wl, "CONFIG_B43_FORCE_PIO must be set in "
-			       "your kernel configuration.\n");
+			/* Fall back to PIO transfers if we get fatal DMA errors! */
+			dev->use_pio = 1;
+			b43_controller_restart(dev, "DMA error");
 			return;
 		}
 		if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {
@@ -4358,7 +4362,7 @@ static int b43_wireless_core_init(struct b43_wldev *dev)
 
 	if ((dev->dev->bus->bustype == SSB_BUSTYPE_PCMCIA) ||
 	    (dev->dev->bus->bustype == SSB_BUSTYPE_SDIO) ||
-	    B43_FORCE_PIO) {
+	    dev->use_pio) {
 		dev->__using_pio_transfers = 1;
 		err = b43_pio_init(dev);
 	} else {
@@ -4826,6 +4830,7 @@ static int b43_one_core_attach(struct ssb_device *dev, struct b43_wl *wl)
 	if (!wldev)
 		goto out;
 
+	wldev->use_pio = b43_modparam_pio;
 	wldev->dev = dev;
 	wldev->wl = wl;
 	b43_set_status(wldev, B43_STAT_UNINIT);
drivers/net/wireless/b43/pio.h +0 -40
index 7dd649c..7b3c42f 100644
@@ -55,8 +55,6 @@
 #define B43_PIO_MAX_NR_TXPACKETS	32
 
 
-#ifdef CONFIG_B43_PIO
-
 struct b43_pio_txpacket {
 	/* Pointer to the TX queue we belong to. */
 	struct b43_pio_txqueue *queue;
@@ -169,42 +167,4 @@ void b43_pio_rx(struct b43_pio_rxqueue *q);
 void b43_pio_tx_suspend(struct b43_wldev *dev);
 void b43_pio_tx_resume(struct b43_wldev *dev);
 
-
-#else /* CONFIG_B43_PIO */
-
-
-static inline int b43_pio_init(struct b43_wldev *dev)
-{
-	return 0;
-}
-static inline void b43_pio_free(struct b43_wldev *dev)
-{
-}
-static inline void b43_pio_stop(struct b43_wldev *dev)
-{
-}
-static inline int b43_pio_tx(struct b43_wldev *dev,
-			     struct sk_buff *skb)
-{
-	return 0;
-}
-static inline void b43_pio_handle_txstatus(struct b43_wldev *dev,
-					   const struct b43_txstatus *status)
-{
-}
-static inline void b43_pio_get_tx_stats(struct b43_wldev *dev,
-					struct ieee80211_tx_queue_stats *stats)
-{
-}
-static inline void b43_pio_rx(struct b43_pio_rxqueue *q)
-{
-}
-static inline void b43_pio_tx_suspend(struct b43_wldev *dev)
-{
-}
-static inline void b43_pio_tx_resume(struct b43_wldev *dev)
-{
-}
-
-#endif /* CONFIG_B43_PIO */
 #endif /* B43_PIO_H_ */
drivers/net/wireless/iwlwifi/iwl-4965.c +8 -3
index 3146281..3b4c5a4 100644
@@ -581,6 +581,8 @@ static int iwl4965_alive_notify(struct iwl_priv *priv)
 
 	iwl4965_set_wr_ptrs(priv, IWL_CMD_QUEUE_NUM, 0);
 
+	/* reset to 0 to enable all the queue first */
+	priv->txq_ctx_active_msk = 0;
 	/* Map each Tx/cmd queue to its corresponding fifo */
 	for (i = 0; i < ARRAY_SIZE(default_queue_to_tx_fifo); i++) {
 		int ac = default_queue_to_tx_fifo[i];
@@ -2008,7 +2010,9 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
 			IWL_DEBUG_TX_REPLY(priv, "Retry scheduler reclaim scd_ssn "
 					   "%d index %d\n", scd_ssn , index);
 			freed = iwl_tx_queue_reclaim(priv, txq_id, index);
-			iwl_free_tfds_in_queue(priv, sta_id, tid, freed);
+			if (qc)
+				iwl_free_tfds_in_queue(priv, sta_id,
+						       tid, freed);
 
 			if (priv->mac80211_registered &&
 			    (iwl_queue_space(&txq->q) > txq->q.low_mark) &&
@@ -2035,13 +2039,14 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
 
 		freed = iwl_tx_queue_reclaim(priv, txq_id, index);
 		if (qc && likely(sta_id != IWL_INVALID_STATION))
-			priv->stations[sta_id].tid[tid].tfds_in_queue -= freed;
+			iwl_free_tfds_in_queue(priv, sta_id, tid, freed);
+		else if (sta_id == IWL_INVALID_STATION)
+			IWL_DEBUG_TX_REPLY(priv, "Station not known\n");
 
 		if (priv->mac80211_registered &&
 		    (iwl_queue_space(&txq->q) > txq->q.low_mark))
 			iwl_wake_queue(priv, txq_id);
 	}
-
 	if (qc && likely(sta_id != IWL_INVALID_STATION))
 		iwl_txq_check_empty(priv, sta_id, tid, txq_id);
 
drivers/net/wireless/iwlwifi/iwl-5000.c +2 -0
index cffaae7..c610e5f 100644
@@ -657,6 +657,8 @@ int iwl5000_alive_notify(struct iwl_priv *priv)
 
 	iwl5000_set_wr_ptrs(priv, IWL_CMD_QUEUE_NUM, 0);
 
+	/* reset to 0 to enable all the queue first */
+	priv->txq_ctx_active_msk = 0;
 	/* map qos queues to fifos one-to-one */
 	for (i = 0; i < ARRAY_SIZE(iwl5000_default_queue_to_tx_fifo); i++) {
 		int ac = iwl5000_default_queue_to_tx_fifo[i];
drivers/net/wireless/iwlwifi/iwl-agn.c +1 -1
index 1c9866d..5622a55 100644
@@ -2461,7 +2461,7 @@ static int iwl_setup_mac(struct iwl_priv *priv)
 		BIT(NL80211_IFTYPE_STATION) |
 		BIT(NL80211_IFTYPE_ADHOC);
 
-	hw->wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY |
+	hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY |
 			    WIPHY_FLAG_DISABLE_BEACON_HINTS;
 
 	/*
drivers/net/wireless/iwlwifi/iwl-scan.c +12 -15
index fa1c89b..8f1b850 100644
@@ -404,21 +404,6 @@ EXPORT_SYMBOL(iwl_init_scan_params);
 
 static int iwl_scan_initiate(struct iwl_priv *priv)
 {
-	if (!iwl_is_ready_rf(priv)) {
-		IWL_DEBUG_SCAN(priv, "Aborting scan due to not ready.\n");
-		return -EIO;
-	}
-
-	if (test_bit(STATUS_SCANNING, &priv->status)) {
-		IWL_DEBUG_SCAN(priv, "Scan already in progress.\n");
-		return -EAGAIN;
-	}
-
-	if (test_bit(STATUS_SCAN_ABORTING, &priv->status)) {
-		IWL_DEBUG_SCAN(priv, "Scan request while abort pending\n");
-		return -EAGAIN;
-	}
-
 	IWL_DEBUG_INFO(priv, "Starting scan...\n");
 	set_bit(STATUS_SCANNING, &priv->status);
 	priv->scan_start = jiffies;
@@ -449,6 +434,18 @@ int iwl_mac_hw_scan(struct ieee80211_hw *hw,
 		goto out_unlock;
 	}
 
+	if (test_bit(STATUS_SCANNING, &priv->status)) {
+		IWL_DEBUG_SCAN(priv, "Scan already in progress.\n");
+		ret = -EAGAIN;
+		goto out_unlock;
+	}
+
+	if (test_bit(STATUS_SCAN_ABORTING, &priv->status)) {
+		IWL_DEBUG_SCAN(priv, "Scan request while abort pending\n");
+		ret = -EAGAIN;
+		goto out_unlock;
+	}
+
 	/* We don't schedule scan within next_scan_jiffies period.
 	 * Avoid scanning during possible EAPOL exchange, return
 	 * success immediately.
drivers/net/wireless/iwlwifi/iwl3945-base.c +2 -2
index f297865..adbb3ea 100644
@@ -1926,7 +1926,7 @@ static void iwl3945_init_hw_rates(struct iwl_priv *priv,
 {
 	int i;
 
-	for (i = 0; i < IWL_RATE_COUNT; i++) {
+	for (i = 0; i < IWL_RATE_COUNT_LEGACY; i++) {
 		rates[i].bitrate = iwl3945_rates[i].ieee * 5;
 		rates[i].hw_value = i; /* Rate scaling will work on indexes */
 		rates[i].hw_value_short = i;
@@ -3903,7 +3903,7 @@ static int iwl3945_setup_mac(struct iwl_priv *priv)
 		BIT(NL80211_IFTYPE_STATION) |
 		BIT(NL80211_IFTYPE_ADHOC);
 
-	hw->wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY |
+	hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY |
 			    WIPHY_FLAG_DISABLE_BEACON_HINTS;
 
 	hw->wiphy->max_scan_ssids = PROBE_OPTION_MAX_3945;
drivers/pci/pci.c +23 -1
index 3245d33..c4fead1 100644
@@ -2612,6 +2612,23 @@ int pci_resource_bar(struct pci_dev *dev, int resno, enum pci_bar_type *type)
 	return 0;
 }
 
+/* Some architectures require additional programming to enable VGA */
+static arch_set_vga_state_t arch_set_vga_state;
+
+void __init pci_register_set_vga_state(arch_set_vga_state_t func)
+{
+	arch_set_vga_state = func;	/* NULL disables */
+}
+
+static int pci_set_vga_state_arch(struct pci_dev *dev, bool decode,
+		      unsigned int command_bits, bool change_bridge)
+{
+	if (arch_set_vga_state)
+		return arch_set_vga_state(dev, decode, command_bits,
+						change_bridge);
+	return 0;
+}
+
 /**
  * pci_set_vga_state - set VGA decode state on device and parents if requested
  * @dev: the PCI device
@@ -2625,9 +2642,15 @@ int pci_set_vga_state(struct pci_dev *dev, bool decode,
 	struct pci_bus *bus;
 	struct pci_dev *bridge;
 	u16 cmd;
+	int rc;
 
 	WARN_ON(command_bits & ~(PCI_COMMAND_IO|PCI_COMMAND_MEMORY));
 
+	/* ARCH specific VGA enables */
+	rc = pci_set_vga_state_arch(dev, decode, command_bits, change_bridge);
+	if (rc)
+		return rc;
+
 	pci_read_config_word(dev, PCI_COMMAND, &cmd);
 	if (decode == true)
 		cmd |= command_bits;
@@ -2874,4 +2897,3 @@ EXPORT_SYMBOL(pci_target_state);
 EXPORT_SYMBOL(pci_prepare_to_sleep);
 EXPORT_SYMBOL(pci_back_from_sleep);
 EXPORT_SYMBOL_GPL(pci_set_pcie_reset_state);
-
drivers/scsi/libiscsi.c +3 -2
index c28a712..e6b67f2 100644
@@ -3027,14 +3027,15 @@ static void iscsi_start_session_recovery(struct iscsi_session *session,
 		session->state = ISCSI_STATE_TERMINATE;
 	else if (conn->stop_stage != STOP_CONN_RECOVER)
 		session->state = ISCSI_STATE_IN_RECOVERY;
+
+	old_stop_stage = conn->stop_stage;
+	conn->stop_stage = flag;
 	spin_unlock_bh(&session->lock);
 
 	del_timer_sync(&conn->transport_timer);
 	iscsi_suspend_tx(conn);
 
 	spin_lock_bh(&session->lock);
-	old_stop_stage = conn->stop_stage;
-	conn->stop_stage = flag;
 	conn->c_stage = ISCSI_CONN_STOPPED;
 	spin_unlock_bh(&session->lock);
 
drivers/usb/class/cdc-acm.c +22 -21

86 lines not on this page · raw message

drivers/usb/class/cdc-acm.h +0 -1
index c4a0ee8..519eb63 100644
@@ -112,7 +112,6 @@ struct acm {
 	struct mutex mutex;
 	struct usb_cdc_line_coding line;		/* bits, stop, parity */
 	struct work_struct work;			/* work queue entry for line discipline waking up */
-	struct work_struct waker;
 	wait_queue_head_t drain_wait;			/* close processing */
 	struct tasklet_struct urb_task;                 /* rx processing */
 	spinlock_t throttle_lock;			/* synchronize throtteling and read callback */
drivers/video/backlight/mbp_nvidia_bl.c +45 -0

51 lines not on this page · raw message

drivers/video/sunxvr500.c +17 -7
index 4cd5049..3803745 100644
@@ -242,11 +242,27 @@ static int __devinit e3d_set_fbinfo(struct e3d_info *ep)
 static int __devinit e3d_pci_register(struct pci_dev *pdev,
 				      const struct pci_device_id *ent)
 {
+	struct device_node *of_node;
+	const char *device_type;
 	struct fb_info *info;
 	struct e3d_info *ep;
 	unsigned int line_length;
 	int err;
 
+	of_node = pci_device_to_OF_node(pdev);
+	if (!of_node) {
+		printk(KERN_ERR "e3d: Cannot find OF node of %s\n",
+		       pci_name(pdev));
+		return -ENODEV;
+	}
+
+	device_type = of_get_property(of_node, "device_type", NULL);
+	if (!device_type) {
+		printk(KERN_INFO "e3d: Ignoring secondary output device "
+		       "at %s\n", pci_name(pdev));
+		return -ENODEV;
+	}
+
 	err = pci_enable_device(pdev);
 	if (err < 0) {
 		printk(KERN_ERR "e3d: Cannot enable PCI device %s\n",
@@ -265,13 +281,7 @@ static int __devinit e3d_pci_register(struct pci_dev *pdev,
 	ep->info = info;
 	ep->pdev = pdev;
 	spin_lock_init(&ep->lock);
-	ep->of_node = pci_device_to_OF_node(pdev);
-	if (!ep->of_node) {
-		printk(KERN_ERR "e3d: Cannot find OF node of %s\n",
-		       pci_name(pdev));
-		err = -ENODEV;
-		goto err_release_fb;
-	}
+	ep->of_node = of_node;
 
 	/* Read the PCI base register of the frame buffer, which we
 	 * need in order to interpret the RAMDAC_VID_*FB* values in
drivers/watchdog/hpwdt.c +1 -1
index a6c5674..0b91907 100644
@@ -443,7 +443,7 @@ static void hpwdt_ping(void)
 static int hpwdt_change_timer(int new_margin)
 {
 	/* Arbitrary, can't find the card's limits */
-	if (new_margin < 30 || new_margin > 600) {
+	if (new_margin < 5 || new_margin > 600) {
 		printk(KERN_WARNING
 			"hpwdt: New value passed in is invalid: %d seconds.\n",
 			new_margin);
drivers/watchdog/iTCO_wdt.c +93 -6

102 lines not on this page · raw message

fs/9p/vfs_file.c +1 -1
index 74a0461..92f9590 100644

Lines of this file are not shown. View the raw message.

fs/block_dev.c +2 -1
index d11d028..8db62b2 100644

Lines of this file are not shown. View the raw message.

fs/cifs/cifssmb.c +18 -1
index 941441d..4e6dbab 100644

Lines of this file are not shown. View the raw message.

fs/ecryptfs/inode.c +56 -52

108 lines not on this page · raw message

fs/ecryptfs/super.c +0 -1
index b15a43a..1a037f7 100644

Lines of this file are not shown. View the raw message.

fs/ext4/ext4.h +3 -3
index 874d169..602d5ad 100644

Lines of this file are not shown. View the raw message.

fs/ext4/extents.c +1 -1
index 765a482..c568779 100644

Lines of this file are not shown. View the raw message.

fs/ext4/inode.c +1 -1
index e119524..2059c34 100644

Lines of this file are not shown. View the raw message.

fs/fat/namei_vfat.c +3 -3
index f565f24..72646e2 100644

Lines of this file are not shown. View the raw message.

fs/nfs/client.c +2 -1
index ee77713..bd39abc 100644

Lines of this file are not shown. View the raw message.

fs/nfs/dir.c +1 -1
index 8b5382e..af6948d 100644

Lines of this file are not shown. View the raw message.

fs/nfs/nfs4proc.c +3 -1
index 375f0fa..ecf6602 100644

Lines of this file are not shown. View the raw message.

fs/nfsd/nfs4xdr.c +9 -3
index a8587e9..bbf72d8 100644

Lines of this file are not shown. View the raw message.

fs/ocfs2/acl.c +72 -5

77 lines not on this page · raw message

fs/ocfs2/suballoc.c +8 -5
index c30b644..79b5dac 100644

Lines of this file are not shown. View the raw message.

fs/proc/base.c +3 -2
index 58324c2..3cd449d 100644

Lines of this file are not shown. View the raw message.

fs/quota/dquot.c +6 -6
index 6e722c1..6c9da00 100644

Lines of this file are not shown. View the raw message.

fs/reiserfs/super.c +4 -6
index b4a7dd0..33bc410 100644

Lines of this file are not shown. View the raw message.

fs/xfs/linux-2.6/xfs_aops.c +56 -37

93 lines not on this page · raw message

fs/xfs/linux-2.6/xfs_sync.c +5 -5
index 1f5e4bb..6b6b394 100644

Lines of this file are not shown. View the raw message.

fs/xfs/xfs_iget.c +13 -6
index 155e798..fd21160 100644

Lines of this file are not shown. View the raw message.

include/drm/drm_pciids.h +2 -0
index e6f3b12..0cbdccc 100644

Lines of this file are not shown. View the raw message.

include/linux/dm-ioctl.h +7 -2
index aa95508..2c445e1 100644

Lines of this file are not shown. View the raw message.

include/linux/freezer.h +5 -2
index 5a361f8..da7e52b 100644

Lines of this file are not shown. View the raw message.

include/linux/fs.h +1 -0
index f2f68ce..66b0705 100644

Lines of this file are not shown. View the raw message.

include/linux/kfifo.h +2 -1
index ece0b1c..e117b1a 100644

Lines of this file are not shown. View the raw message.

include/linux/kvm_host.h +6 -1
index bd5a616..1fe293e 100644

Lines of this file are not shown. View the raw message.

include/linux/module.h +1 -1
index 6cb1a3c..bd465d4 100644

Lines of this file are not shown. View the raw message.

include/linux/nfs_fs_sb.h +1 -0
index 34fc6be..ebc4809 100644

Lines of this file are not shown. View the raw message.

include/linux/pci.h +5 -0
index c1968f4..0afb527 100644

Lines of this file are not shown. View the raw message.

include/linux/pci_ids.h +3 -0
index cca8a04..0be8243 100644

Lines of this file are not shown. View the raw message.

kernel/cgroup_freezer.c +6 -3
index 59e9ef6..eb3f34d 100644

Lines of this file are not shown. View the raw message.

kernel/irq/manage.c +10 -0
index 69a3d7b..0b23ff7 100644

Lines of this file are not shown. View the raw message.

kernel/lockdep.c +3 -3
index c62ec14..493a0ef 100644

Lines of this file are not shown. View the raw message.

kernel/module.c +1 -1
index f82386b..5b6ce39 100644

Lines of this file are not shown. View the raw message.

kernel/power/process.c +1 -1
index 5ade1bd..de53015 100644

Lines of this file are not shown. View the raw message.

kernel/sched.c +7 -3
index 7ca9345..da19c1e 100644

Lines of this file are not shown. View the raw message.

mm/readahead.c +1 -1
index 337b20e..fe1a069 100644

Lines of this file are not shown. View the raw message.

net/mac80211/mesh.c +0 -3
index 6a43314..ba1fadb 100644

Lines of this file are not shown. View the raw message.

net/mac80211/mesh_hwmp.c +2 -2
index d28acb6..4eed81b 100644

Lines of this file are not shown. View the raw message.

net/mac80211/rx.c +5 -0
index da92cde..edfa036 100644

Lines of this file are not shown. View the raw message.

net/mac80211/tx.c +6 -0
index 70c79c3..1fdc0a5 100644

Lines of this file are not shown. View the raw message.

net/mac80211/util.c +14 -6
index 3848140..27212e8 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/hda_intel.c +10 -0
index 9ace8eb..062a8b0 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_analog.c +8 -0
index 7069441..263bf3b 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_realtek.c +1 -0
index a79f841..bd8a567 100644

Lines of this file are not shown. View the raw message.

sound/pci/mixart/mixart.c +14 -10
index a83d196..32f9853 100644

Lines of this file are not shown. View the raw message.

sound/usb/usbmidi.c +18 -6
index b2da478..c7cb207 100644

Lines of this file are not shown. View the raw message.

virt/kvm/kvm_main.c +8 -5
index a944be3..9dd98cb 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.

#2 lore raw
In reply to Greg KH
Quoted 496 lines · Greg KH

I'm announcing the release of the 2.6.33.3 kernel.

All users of the 2.6.33 kernel series should upgrade.

Many thanks to maximilian attems for all of his work in submitting patches for this release, it is much appreciated.

The updated 2.6.33.y git tree can be found at:

        git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.33.y.git
and can be browsed at the normal kernel.org git web browser:
        http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.33.y.git;a=summary

thanks,

greg k-h

------------

 Documentation/i2c/busses/i2c-i801               |    3
 Makefile                                        |    2
 arch/arm/boot/compressed/head.S                 |    2
 arch/ia64/kvm/kvm-ia64.c                        |    9
 arch/powerpc/kvm/book3s.c                       |    5
 arch/powerpc/platforms/pseries/offline_states.h |   22 ++
 arch/s390/mm/vmem.c                             |   11 -
 arch/sh/include/asm/elf.h                       |    6
 arch/sh/kernel/smp.c                            |    1
 arch/sparc/kernel/ptrace_32.c                   |    4
 arch/sparc/kernel/ptrace_64.c                   |    4
 arch/um/sys-x86_64/Makefile                     |    3
 arch/x86/Kconfig.cpu                            |    2
 arch/x86/include/asm/rwsem.h                    |   81 ++++---
 arch/x86/include/asm/smp.h                      |    9
 arch/x86/kernel/amd_iommu.c                     |    6
 arch/x86/kernel/amd_iommu_init.c                |    5
 arch/x86/kernel/aperture_64.c                   |   15 +
 arch/x86/kernel/apic/apic.c                     |    2
 arch/x86/kernel/cpu/intel_cacheinfo.c           |  250  
++++++++++++++----------
 arch/x86/kernel/cpu/perf_event.c                |  104 +++++++++
 arch/x86/kernel/crash.c                         |    6
 arch/x86/kernel/hpet.c                          |    8
 arch/x86/kernel/kgdb.c                          |    2
 arch/x86/kernel/mpparse.c                       |    4
 arch/x86/kernel/pci-gart_64.c                   |    3
 arch/x86/kvm/mmu.c                              |   11 -
 arch/x86/kvm/svm.c                              |   25 +-
 arch/x86/kvm/vmx.c                              |   37 ++-
 arch/x86/kvm/x86.c                              |   45 +---
 arch/x86/lib/Makefile                           |    3
 arch/x86/lib/cache-smp.c                        |   19 +
 arch/x86/lib/rwsem_64.S                         |   81 +++++++
 arch/x86/pci/irq.c                              |    2
 arch/x86/power/hibernate_asm_32.S               |   15 -
 drivers/acpi/acpica/exprep.c                    |   17 +
 drivers/acpi/ec.c                               |   35 ---
 drivers/ata/ahci.c                              |    6
 drivers/ata/ata_piix.c                          |    8
 drivers/ata/libata-core.c                       |    3
 drivers/ata/pata_via.c                          |    1
 drivers/char/agp/intel-agp.c                    |   15 -
 drivers/char/raw.c                              |    1
 drivers/char/tty_io.c                           |    2
 drivers/gpu/drm/drm_crtc_helper.c               |    1
 drivers/gpu/drm/drm_edid.c                      |   11 -
 drivers/gpu/drm/drm_fops.c                      |   16 -
 drivers/gpu/drm/i915/intel_lvds.c               |    8
 drivers/gpu/drm/radeon/atom.c                   |   10
 drivers/gpu/drm/radeon/r300.c                   |    5
 drivers/gpu/drm/radeon/radeon_combios.c         |   20 +
 drivers/gpu/drm/radeon/radeon_connectors.c      |    7
 drivers/gpu/drm/radeon/radeon_cp.c              |   10
 drivers/gpu/drm/radeon/radeon_cs.c              |   15 -
 drivers/gpu/drm/radeon/radeon_device.c          |    8
 drivers/gpu/drm/radeon/radeon_encoders.c        |    8
 drivers/gpu/drm/radeon/radeon_legacy_tv.c       |   29 ++
 drivers/gpu/drm/radeon/rs600.c                  |    2
 drivers/hid/hid-gyration.c                      |    5
 drivers/hwmon/sht15.c                           |   13 -
 drivers/i2c/busses/Kconfig                      |    5
 drivers/i2c/busses/i2c-i801.c                   |    5
 drivers/infiniband/ulp/ipoib/ipoib_cm.c         |    2
 drivers/input/sparse-keymap.c                   |    2
 drivers/input/tablet/wacom_sys.c                |   12 -
 drivers/md/dm-ioctl.c                           |   19 +
 drivers/md/dm.c                                 |    7
 drivers/md/dm.h                                 |    4
 drivers/md/linear.c                             |   12 -
 drivers/md/multipath.c                          |   20 +
 drivers/md/raid0.c                              |   13 -
 drivers/md/raid10.c                             |   28 +-
 drivers/net/e1000e/netdev.c                     |    2
 drivers/net/r8169.c                             |    4
 drivers/net/wireless/ath/ar9170/usb.c           |    2
 drivers/net/wireless/ath/ath9k/main.c           |    3
 drivers/net/wireless/b43/Kconfig                |    6
 drivers/net/wireless/b43/Makefile               |    2
 drivers/net/wireless/b43/b43.h                  |   12 -
 drivers/net/wireless/b43/dma.c                  |    2
 drivers/net/wireless/b43/main.c                 |   11 -
 drivers/net/wireless/b43/pio.h                  |   40 ---
 drivers/net/wireless/iwlwifi/iwl-4965.c         |   11 -
 drivers/net/wireless/iwlwifi/iwl-5000.c         |    2
 drivers/net/wireless/iwlwifi/iwl-agn.c          |    2
 drivers/net/wireless/iwlwifi/iwl-scan.c         |   27 +-
 drivers/net/wireless/iwlwifi/iwl3945-base.c     |    4
 drivers/pci/pci.c                               |   24 ++
 drivers/scsi/libiscsi.c                         |    5
 drivers/usb/class/cdc-acm.c                     |   43 ++--
 drivers/usb/class/cdc-acm.h                     |    1
 drivers/video/backlight/mbp_nvidia_bl.c         |   45 ++++
 drivers/video/sunxvr500.c                       |   24 +-
 drivers/watchdog/hpwdt.c                        |    2
 drivers/watchdog/iTCO_wdt.c                     |   99 ++++++++-
 fs/9p/vfs_file.c                                |    2
 fs/block_dev.c                                  |    3
 fs/cifs/cifssmb.c                               |   19 +
 fs/ecryptfs/inode.c                             |  108 +++++-----
 fs/ecryptfs/super.c                             |    1
 fs/ext4/ext4.h                                  |    6
 fs/ext4/extents.c                               |    2
 fs/ext4/inode.c                                 |    2
 fs/fat/namei_vfat.c                             |    6
 fs/nfs/client.c                                 |    3
 fs/nfs/dir.c                                    |    2
 fs/nfs/nfs4proc.c                               |    4
 fs/nfsd/nfs4xdr.c                               |   12 -
 fs/ocfs2/acl.c                                  |   77 ++++++-
 fs/ocfs2/suballoc.c                             |   13 -
 fs/proc/base.c                                  |    5
 fs/quota/dquot.c                                |   12 -
 fs/reiserfs/super.c                             |   10
 fs/xfs/linux-2.6/xfs_aops.c                     |   93 +++++---
 fs/xfs/linux-2.6/xfs_sync.c                     |   10
 fs/xfs/xfs_iget.c                               |   19 +
 include/drm/drm_pciids.h                        |    2
 include/linux/dm-ioctl.h                        |    9
 include/linux/freezer.h                         |    7
 include/linux/fs.h                              |    1
 include/linux/kfifo.h                           |    3
 include/linux/kvm_host.h                        |    7
 include/linux/module.h                          |    2
 include/linux/nfs_fs_sb.h                       |    1
 include/linux/pci.h                             |    5
 include/linux/pci_ids.h                         |    3
 kernel/cgroup_freezer.c                         |    9
 kernel/irq/manage.c                             |   10
 kernel/lockdep.c                                |    6
 kernel/module.c                                 |    2
 kernel/power/process.c                          |    2
 kernel/sched.c                                  |   10
 mm/readahead.c                                  |    2
 net/mac80211/mesh.c                             |    3
 net/mac80211/mesh_hwmp.c                        |    4
 net/mac80211/rx.c                               |    5
 net/mac80211/tx.c                               |    6
 net/mac80211/util.c                             |   20 +
 sound/pci/hda/hda_intel.c                       |   10
 sound/pci/hda/patch_analog.c                    |    8
 sound/pci/hda/patch_realtek.c                   |    1
 sound/pci/mixart/mixart.c                       |   24 +-
 sound/usb/usbmidi.c                             |   24 +-
 virt/kvm/kvm_main.c                             |   13 -
 144 files changed, 1492 insertions(+), 681 deletions(-)

Adam Jackson (1):
drm/edid/quirks: Envision EN2028

Adam Lackorzynski (1):
powerpc: Fix SMP build with disabled CPU hotplugging.

Al Viro (1):
fix NFS4 handling of mountpoint stat

Alex Deucher (8):
drm/radeon: add new RS880 pci id
drm/radeon/kms: never treat rs4xx as AGP drm/radeon/kms: fix pal tv-out support on legacy IGP chips drm/radeon/kms: fix washed out image on legacy tv dac drm/radeon/kms/combios: verify dac_adj values are valid drm/radeon/kms: more atom parser fixes (v2) drm/radeon/kms: disable the tv encoder when tv/cv is not in use drm/radeon/kms: fix tv dac conflict resolver

Alexey Starikovskiy (2):
ACPI: EC: Allow multibyte access to EC
ACPI: EC: Limit burst to 64 bits

Andi Kleen (1):
x86: Handle overlapping mptables

Andre Przywara (1):
KVM: allow bit 10 to be cleared in MSR_IA32_MC4_CTL

Andrew Perepechko (1):
quota: Fix possible dq_flags corruption

Andrew Stubbs (1):
sh: Fix FDPIC binary loader

Anton Blanchard (2):

      raw: fsync method is now required
      sched: Fix sched_getaffinity()

Avi Kivity (3):
x86-64, rwsem: Avoid store forwarding hazard in __downgrade_write
KVM: Don't spam kernel log when injecting exceptions due to bad cr
writes
KVM: VMX: Save/restore rflags.vm correctly in real mode

Ben Skeggs (1):
drm/edid: allow certain bogus edids to hit a fixup path rather
than fail

Borislav Petkov (7):
x86, lib: Add wbinvd smp helpers
x86, cacheinfo: Fix disabling of L3 cache indices
intel-agp: Switch to wbinvd_on_all_cpus
x86, cacheinfo: Add cache index disable sysfs attrs only to L3
caches
x86, cacheinfo: Calculate L3 indices
x86, cacheinfo: Remove NUMA dependency, fix for AMD Fam10h rev D1 x86, cacheinfo: Enable L3 CID only on AMD

Chris Wilson (1):
drm: Return ENODEV if the inode mapping changes

Chris Wright (3):
x86/amd-iommu: Pt mode fix for domain_destroy x86/amd-iommu: enable iommu before attaching devices Revert "x86: disable IOMMUs on kernel crash"

Christian Borntraeger (1):
s390: disable change bit override

Christian Pulvermacher (1):
ecryptfs: fix error code for missing xattrs in lower fs

Christoph Hellwig (1):
xfs: fix locking for inode cache radix tree tag updates

Dan Carpenter (2):
iwlwifi: range checking issue
ALSA: mixart: range checking proc file

Daniel T Chen (1):
ALSA: hda: Fix 0 dB offset for Lenovo Thinkpad models using AD1981

Dave Airlie (2):
drm/radeon/kms: don't print error on -ERESTARTSYS. drm/radeon/kms: add FireMV 2400 PCI ID.

Dave Chinner (2):
xfs: Non-blocking inode locking in IO completion
xfs: check for more work before sleeping in xfssyncd

David Härdeman (1):
include/linux/kfifo.h: fix INIT_KFIFO()

David S. Miller (2):
sparc: Fix regset register window handling.
sunxvr500: Ignore secondary output PCI devices.

Eli Cohen (1):
IPoIB: Fix TX queue lockup with mixed UD/CM traffic

Eric Sandeen (1):
ext4: fix async i/o writes beyond 4GB to a sparse file

Evan McClain (1):
backlight: mbp_nvidia_bl - add five more MacBook variants

Felix Fietkau (1):
ath9k: fix double calls to ath_radio_enable

Greg Kroah-Hartman (1):

      Linux 2.6.33.3

H. Peter Anvin (1):
x86-64, rwsem: 64-bit xadd rwsem implementation

Jan Kiszka (2):
KVM: VMX: Update instruction length on intercepted BP
KVM: x86: Fix TSS size check for 16-bit tasks

Jason Wessel (1):
x86,kgdb: Always initialize the hw breakpoint attribute

Javier Cardona (1):
mac80211: Handle mesh action frames in ieee80211_rx_h_action

Jean Delvare (1):
hwmon: (sht15) Properly handle the case CONFIG_REGULATOR=n

Jeff Mahoney (2):
reiserfs: Fix locking BUG during mount failure
ecryptfs: fix use with tmpfs by removing d_drop from
ecryptfs_destroy_inode

Jerome Glisse (1):
drm/radeon/kms: fix rs600 tlb flush

Jerome Oufella (1):
hwmon: (sht15) Fix sht15_calc_temp interpolation function

Jiri Kosina (1):
HID: fix oops in gyration_event()

Joerg Roedel (2):
x86/amd-iommu: Use helper function to destroy domain x86/gart: Disable GART explicitly before initialization

Joerg Schirottke (1):
ALSA: hda - add a quirk for Clevo M570U laptop

Johannes Berg (1):
mac80211: move netdev queue enabling to correct spot

[email protected] (1):
pata_via: Add VIA VX900 support

KOSAKI Motohiro (2):
sched: sched_getaffinity(): Allow less than NR_CPUS length
sched: Use proper type in sched_getaffinity()

Larry Finger (1):
b43: Allow PIO mode to be selected at module load

Linus Torvalds (5):
x86-32: clean up rwsem inline asm statements
x86: clean up rwsem type system
x86-64: support native xadd rwsem implementation
x86: Fix breakage of UML from the changes in the rwsem system
b43: fall back gracefully to PIO mode after fatal DMA errors

Mark Fasheh (1):
ocfs2: set i_mode on disk during acl operations

Mathieu Desnoyers (3):
modules: fix incorrect percpu usage
lockdep: fix incorrect percpu usage
module: fix __module_ref_addr()

Matt Fleming (1):
sh: Enable the mmu in start_secondary()

Matt Helsley (1):
Freezer: Fix buggy resume test for tasks frozen with cgroup freezer

Michel Dänzer (1):
drm/radeon: R300 AD only has one quad pipe.

Michele Ballabio (1):
ALSA: hda - Add ASRock mobo to MSI blacklist

Mike Christie (1):
libiscsi: Fix recovery slowdown regression

Mike Travis (1):
pci: Update pci_set_vga_state() to call arch functions

Neil Horman (1):
r8169: clean up my printk uglyness

NeilBrown (1):
md: deal with merge_bvec_fn in component devices better.

Nikolaus Schulz (1):
fat: fix buffer overflow in vfat_create_shortname()

Oleg Nesterov (2):
oom: fix the unsafe usage of badness() in proc_oom_score()
tty: release_one_tty() forgets to put pids

Oliver Neukum (2):
USB: cdc-acm: Update to new autopm API
USB: cdc-acm: Fix stupid NULL pointer in resume()

Pallipadi, Venkatesh (1):
x86, hpet: Erratum workaround for read after write of HPET
comparator

Paul Mundt (1):
PCI: kill off pci_register_set_vga_state() symbol export.

Peter Rajnoha (1):
dm ioctl: introduce flag indicating uevent was generated

Peter Zijlstra (1):
perf_events, x86: Implement Intel Westmere/Nehalem-EX support

Ping Cheng (1):
Input: wacom - switch mode upon system resume

Porsch, Marco (1):
mac80211: fix PREQ processing and one small bug

Rabin Vincent (1):

      ARM: 6031/1: fix Thumb-2 decompressor

Reinette Chatre (2):
iwlwifi: fix regulatory
iwlwifi: fix scan race

Sachin Prabhu (1):
9p: Skip check for mandatory locks when unlocking

Seth Heasley (7):
WATCHDOG: iTCO_wdt: TCO Watchdog patch for additional Intel Cougar
Point DeviceIDs
x86/PCI: irq and pci_ids patch for Intel Cougar Point DeviceIDs
ALSA: hda_intel: ALSA HD Audio patch for Intel Cougar Point
DeviceIDs
ALSA: hda - enable snoop for Intel Cougar Point
ata_piix: IDE Mode SATA patch for Intel Cougar Point DeviceIDs
ahci: AHCI and RAID mode SATA patch for Intel Cougar Point
DeviceIDs
i2c-i801: Add Intel Cougar Point device IDs

Shaohua Li (1):
x86-32, resume: do a global tlb flush in S4 resume

Sridhar Samudrala (1):
KVM: Increase NR_IOBUS_DEVS limit to 200

Stefan Bader (1):
drm/i915: Add no_lvds entry for the Clientron U800

Stefan Lippers-Hollmann (1):
drm/radeon/kms: Fix NULL pointer dereference if memory allocation
failed in a simple way

Steve French (1):
CIFS: initialize nbytes at the beginning of CIFSSMBWrite()

Suresh Jayaraman (1):
cifs: Fix a kernel BUG with remote OS/2 server (try #3)

Suresh Siddha (1):
x86: Fix double enable_IR_x2apic() call on SMP kernel on !SMP
boards

Takashi Iwai (3):
ALSA: hda - Add MSI blacklist for Aopen MZ915-M
ALSA: usb - Fix Oops after usb-midi disconnection
ALSA: hda - Add position_fix quirk for Biostar mobo

Takuya Yoshikawa (2):
KVM: SVM: Fix memory leaks that happen when svm_create_vcpu() fails
KVM: fix the handling of dirty bitmaps to avoid overflows

Tao Ma (1):
ocfs2: Change bg_chain check for ocfs2_validate_gd_parent.

Tejun Heo (1):
libata: disable NCQ on Crucial C300 SSD

Terry Loftin (1):

      e1000e: stop cleaning when we reach tx_ring->next_to_use

Thomas Gleixner (1):
genirq: Force MSI irq handlers to run with interrupts disabled

Thomas Mingarelli (1):
WATCHDOG: hpwdt - fix lower timeout limit

Trond Myklebust (2):
NFSv4: Fall back to ordinary lookup if nfs4_atomic_open() returns
EISDIR
NFSv4: fix delegated locking

Tyler Hicks (1):
eCryptfs: Decrypt symlink target for stat size

Valentin Longchamp (1):
setup correct int pipe type in ar9170_usb_exec_cmd

Wey-Yi Guy (4):
iwlwifi: counting number of tfds can be free for 4965
mac80211: tear down all agg queues when restart/reconfig hw
iwlwifi: need check for valid qos packet before free
iwlwifi: clear all tx queues when firmware ready

Wu Fengguang (1):
readahead: fix NULL filp dereference

Xiao Guangrong (1):
KVM: MMU: fix kvm_mmu_zap_page() and its calling path

Yong Wang (1):
Input: sparse-keymap - free the right keymap on error

Zhao Yakui (1):
drm: remove the EDID blob stored in the EDID property when it is
disconnected

Quoted 5 lines

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Congratulations. I experienced one minor issue when compiling it, and that was that update-initramfs didn't not work, when specifying a local version, leading it to a non-boot on my minimal Lucid install. However, glxgears performance is now on par with my older BFS patched kernel, and shows less jitter! This is with a commandline install of Lucid Lynx (ubuntu) + x + openbox wm (which is the one I found with the least jitter).

Framerate is 83300 +- 100 with +- 10 being more common. Very little jitter, in other words.

Peace Be With You.
Uwaysi Bin Kareem.