Linux 2.6.33.3
Subsystems (67)
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=summarythanks,
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
Documentation/i2c/busses/i2c-i801 +2 -1
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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++, ®_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, ®_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++, ®_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, ®_window[pos++]))
arch/sparc/kernel/ptrace_64.c +4 -0
@@ -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++, ®_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, ®_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++, ®_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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -590,6 +590,8 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *routecase 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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(struif (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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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_idcase 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
@@ -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
@@ -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
@@ -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
@@ -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, ¶m->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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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/ecryptfs/inode.c +56 -52
108 lines not on this page · raw message
fs/ocfs2/acl.c +72 -5
77 lines not on this page · raw message
fs/xfs/linux-2.6/xfs_aops.c +56 -37
93 lines not on this page · 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.
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=summarythanks,
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 EN2028Adam Lackorzynski (1):
powerpc: Fix SMP build with disabled CPU hotplugging.Al Viro (1):
fix NFS4 handling of mountpoint statAlex 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: verifydac_adjvalues 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 resolverAlexey Starikovskiy (2):
ACPI: EC: Allow multibyte access to EC
ACPI: EC: Limit burst to 64 bitsAndi Kleen (1):
x86: Handle overlapping mptablesAndre Przywara (1):
KVM: allow bit 10 to be cleared inMSR_IA32_MC4_CTLAndrew Perepechko (1):
quota: Fix possibledq_flagscorruptionAndrew Stubbs (1):
sh: Fix FDPIC binary loaderAnton 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 modeBen Skeggs (1):
drm/edid: allow certain bogus edids to hit a fixup path rather
than failBorislav Petkov (7):
x86, lib: Add wbinvd smp helpers
x86, cacheinfo: Fix disabling of L3 cache indices
intel-agp: Switch towbinvd_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 AMDChris Wilson (1):
drm: Return ENODEV if the inode mapping changesChris Wright (3):
x86/amd-iommu: Pt mode fix fordomain_destroyx86/amd-iommu: enable iommu before attaching devices Revert "x86: disable IOMMUs on kernel crash"Christian Borntraeger (1):
s390: disable change bit overrideChristian Pulvermacher (1):
ecryptfs: fix error code for missing xattrs in lower fsChristoph Hellwig (1):
xfs: fix locking for inode cache radix tree tag updatesDan Carpenter (2):
iwlwifi: range checking issue
ALSA: mixart: range checking proc fileDaniel T Chen (1):
ALSA: hda: Fix 0 dB offset for Lenovo Thinkpad models using AD1981Dave 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 xfssyncdDavid Härdeman (1):
include/linux/kfifo.h: fixINIT_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 trafficEric Sandeen (1):
ext4: fix async i/o writes beyond 4GB to a sparse fileEvan McClain (1):
backlight:mbp_nvidia_bl- add five more MacBook variantsFelix Fietkau (1):
ath9k: fix double calls toath_radio_enableGreg Kroah-Hartman (1):
Linux 2.6.33.3H. Peter Anvin (1):
x86-64, rwsem: 64-bit xadd rwsem implementationJan Kiszka (2):
KVM: VMX: Update instruction length on intercepted BP
KVM: x86: Fix TSS size check for 16-bit tasksJason Wessel (1):
x86,kgdb: Always initialize the hw breakpoint attributeJavier Cardona (1):
mac80211: Handle mesh action frames inieee80211_rx_h_actionJean Delvare (1):
hwmon: (sht15) Properly handle the caseCONFIG_REGULATOR=nJeff Mahoney (2):
reiserfs: Fix locking BUG during mount failure
ecryptfs: fix use with tmpfs by removingd_dropfromecryptfs_destroy_inodeJerome Glisse (1):
drm/radeon/kms: fix rs600 tlb flushJerome Oufella (1):
hwmon: (sht15) Fixsht15_calc_tempinterpolation functionJiri Kosina (1):
HID: fix oops ingyration_event()Joerg Roedel (2):
x86/amd-iommu: Use helper function to destroy domain x86/gart: Disable GART explicitly before initializationJoerg Schirottke (1):
ALSA: hda - add a quirk for Clevo M570U laptopJohannes Berg (1):
mac80211: move netdev queue enabling to correct spot[email protected] (1):
pata_via: Add VIA VX900 supportKOSAKI Motohiro (2):
sched:sched_getaffinity(): Allow less thanNR_CPUSlength
sched: Use proper type insched_getaffinity()Larry Finger (1):
b43: Allow PIO mode to be selected at module loadLinus 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 errorsMark Fasheh (1):
ocfs2: seti_modeon disk during acl operationsMathieu Desnoyers (3):
modules: fix incorrect percpu usage
lockdep: fix incorrect percpu usage
module: fix__module_ref_addr()Matt Fleming (1):
sh: Enable the mmu instart_secondary()Matt Helsley (1):
Freezer: Fix buggy resume test for tasks frozen with cgroup freezerMichel Dänzer (1):
drm/radeon: R300 AD only has one quad pipe.Michele Ballabio (1):
ALSA: hda - Add ASRock mobo to MSI blacklistMike Christie (1):
libiscsi: Fix recovery slowdown regressionMike Travis (1):
pci: Updatepci_set_vga_state()to call arch functionsNeil Horman (1):
r8169: clean up my printk uglynessNeilBrown (1):
md: deal withmerge_bvec_fnin component devices better.Nikolaus Schulz (1):
fat: fix buffer overflow invfat_create_shortname()Oleg Nesterov (2):
oom: fix the unsafe usage ofbadness()inproc_oom_score()
tty:release_one_tty()forgets to put pidsOliver Neukum (2):
USB: cdc-acm: Update to new autopm API
USB: cdc-acm: Fix stupid NULL pointer inresume()Pallipadi, Venkatesh (1):
x86, hpet: Erratum workaround for read after write of HPET
comparatorPaul Mundt (1):
PCI: kill offpci_register_set_vga_state()symbol export.Peter Rajnoha (1):
dm ioctl: introduce flag indicating uevent was generatedPeter Zijlstra (1):
perf_events, x86: Implement Intel Westmere/Nehalem-EX supportPing Cheng (1):
Input: wacom - switch mode upon system resumePorsch, Marco (1):
mac80211: fix PREQ processing and one small bugRabin Vincent (1):
ARM: 6031/1: fix Thumb-2 decompressorReinette Chatre (2):
iwlwifi: fix regulatory
iwlwifi: fix scan raceSachin Prabhu (1):
9p: Skip check for mandatory locks when unlockingSeth Heasley (7):
WATCHDOG:iTCO_wdt: TCO Watchdog patch for additional Intel Cougar
Point DeviceIDs
x86/PCI: irq andpci_idspatch 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 IDsShaohua Li (1):
x86-32, resume: do a global tlb flush in S4 resumeSridhar Samudrala (1):
KVM: IncreaseNR_IOBUS_DEVSlimit to 200Stefan Bader (1):
drm/i915: Addno_lvdsentry for the Clientron U800Stefan Lippers-Hollmann (1):
drm/radeon/kms: Fix NULL pointer dereference if memory allocation
failed in a simple waySteve French (1):
CIFS: initialize nbytes at the beginning ofCIFSSMBWrite()Suresh Jayaraman (1):
cifs: Fix a kernel BUG with remote OS/2 server (try #3)Suresh Siddha (1):
x86: Fix doubleenable_IR_x2apic()call on SMP kernel on !SMP
boardsTakashi Iwai (3):
ALSA: hda - Add MSI blacklist for Aopen MZ915-M
ALSA: usb - Fix Oops after usb-midi disconnection
ALSA: hda - Addposition_fixquirk for Biostar moboTakuya Yoshikawa (2):
KVM: SVM: Fix memory leaks that happen whensvm_create_vcpu()fails
KVM: fix the handling of dirty bitmaps to avoid overflowsTao Ma (1):
ocfs2: Changebg_chaincheck forocfs2_validate_gd_parent.Tejun Heo (1):
libata: disable NCQ on Crucial C300 SSDTerry Loftin (1):
e1000e: stop cleaning when we reach tx_ring->next_to_useThomas Gleixner (1):
genirq: Force MSI irq handlers to run with interrupts disabledThomas Mingarelli (1):
WATCHDOG: hpwdt - fix lower timeout limitTrond Myklebust (2):
NFSv4: Fall back to ordinary lookup ifnfs4_atomic_open()returns
EISDIR
NFSv4: fix delegated lockingTyler Hicks (1):
eCryptfs: Decrypt symlink target for stat sizeValentin Longchamp (1):
setup correct int pipe type inar9170_usb_exec_cmdWey-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 readyWu Fengguang (1):
readahead: fix NULL filp dereferenceXiao Guangrong (1):
KVM: MMU: fixkvm_mmu_zap_page()and its calling pathYong Wang (1):
Input: sparse-keymap - free the right keymap on errorZhao 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.