Linux 3.0.2
I'm announcing the release of the 3.0.2 kernel.
All users of the 3.0 kernel series must upgrade.
The updated 3.0.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-3.0.y.git
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-3.0.y.git;a=summarythanks,
greg k-h
------------
Makefile | 2 arch/cris/arch-v10/drivers/sync_serial.c | 6 arch/cris/arch-v10/kernel/irq.c | 3 arch/cris/include/asm/thread_info.h | 6 arch/parisc/include/asm/atomic.h | 4 arch/parisc/include/asm/futex.h | 66 ++++ arch/parisc/include/asm/unistd.h | 3 arch/parisc/kernel/syscall_table.S | 1 arch/powerpc/kernel/prom_init.c | 6 arch/powerpc/platforms/pseries/dtl.c | 2 arch/powerpc/platforms/pseries/kexec.c | 11 arch/powerpc/platforms/pseries/lpar.c | 2 arch/powerpc/platforms/pseries/plpar_wrappers.h | 4 arch/sparc/include/asm/bitops_64.h | 49 --- arch/sparc/include/asm/elf_64.h | 63 ++-- arch/sparc/include/asm/hypervisor.h | 14 + arch/sparc/include/asm/spitfire.h | 1 arch/sparc/include/asm/tsb.h | 51 +-- arch/sparc/include/asm/xor_64.h | 3 arch/sparc/kernel/cpu.c | 8 arch/sparc/kernel/cpumap.c | 1 arch/sparc/kernel/ds.c | 31 ++ arch/sparc/kernel/entry.h | 14 + arch/sparc/kernel/head_64.S | 33 ++ arch/sparc/kernel/hvapi.c | 7 arch/sparc/kernel/hvcalls.S | 7 arch/sparc/kernel/kernel.h | 15 + arch/sparc/kernel/ktlb.S | 24 - arch/sparc/kernel/mdesc.c | 30 +- arch/sparc/kernel/pcr.c | 11 arch/sparc/kernel/perf_event.c | 3 arch/sparc/kernel/setup_64.c | 186 +++++++++++++ arch/sparc/kernel/sparc_ksyms_64.c | 11 arch/sparc/kernel/sstate.c | 9 arch/sparc/kernel/unaligned_64.c | 15 - arch/sparc/kernel/vmlinux.lds.S | 21 + arch/sparc/lib/Makefile | 4 arch/sparc/lib/NG2page.S | 61 ---- arch/sparc/lib/NGpage.S | 114 +++++--- arch/sparc/lib/ffs.S | 84 ++++++ arch/sparc/lib/hweight.S | 51 +++ arch/sparc/mm/init_64.c | 42 ++- arch/x86/xen/Makefile | 2 arch/x86/xen/enlighten.c | 8 arch/x86/xen/vga.c | 67 ++++ arch/x86/xen/xen-ops.h | 11 crypto/md5.c | 92 ------ drivers/char/random.c | 334 ------------------------ drivers/gpu/drm/drm_edid.c | 24 + drivers/gpu/drm/i915/i915_dma.c | 6 drivers/gpu/drm/i915/i915_irq.c | 3 drivers/gpu/drm/i915/intel_display.c | 8 drivers/gpu/drm/i915/intel_panel.c | 4 drivers/gpu/drm/i915/intel_ringbuffer.c | 3 drivers/gpu/drm/radeon/radeon_connectors.c | 54 +++ drivers/gpu/drm/radeon/radeon_device.c | 5 drivers/gpu/drm/radeon/radeon_display.c | 9 drivers/gpu/drm/radeon/radeon_i2c.c | 32 +- drivers/gpu/drm/radeon/radeon_mode.h | 6 drivers/isdn/i4l/isdn_net.c | 3 drivers/net/Makefile | 1 drivers/net/bonding/bond_main.c | 6 drivers/net/bonding/bond_sysfs.c | 133 +++++---- drivers/net/e1000e/lib.c | 3 drivers/net/gianfar_ptp.c | 9 drivers/net/ifb.c | 2 drivers/net/macvlan.c | 2 drivers/net/niu.c | 4 drivers/net/phy/dp83640.c | 5 drivers/net/r8169.c | 1 drivers/net/sis190.c | 12 drivers/net/tun.c | 1 drivers/net/veth.c | 2 drivers/net/wan/hdlc_fr.c | 5 drivers/net/wireless/airo.c | 1 drivers/net/wireless/ath/ath9k/ar9002_hw.c | 6 drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 6 drivers/net/wireless/ath/ath9k/ar9003_hw.c | 6 drivers/net/wireless/ath/ath9k/ar9003_phy.h | 2 drivers/net/wireless/ath/ath9k/hw.c | 11 drivers/net/wireless/ath/ath9k/hw.h | 3 drivers/net/wireless/ath/ath9k/init.c | 2 drivers/net/wireless/ath/ath9k/pci.c | 27 + drivers/net/wireless/hostap/hostap_main.c | 1 drivers/net/wireless/iwlegacy/iwl-3945.c | 6 drivers/net/wireless/iwlegacy/iwl-4965.c | 8 drivers/net/wireless/iwlwifi/iwl-5000.c | 1 drivers/net/wireless/iwlwifi/iwl-core.h | 2 drivers/net/wireless/iwlwifi/iwl-power.c | 3 drivers/net/wireless/rt2x00/rt2800lib.c | 3 drivers/net/wireless/rt2x00/rt2x00mac.c | 5 drivers/net/wireless/rtlwifi/pci.c | 20 - drivers/platform/x86/asus-wmi.c | 17 - drivers/scsi/mpt2sas/mpt2sas_base.c | 65 +--- drivers/scsi/mpt2sas/mpt2sas_base.h | 53 +++ drivers/scsi/mpt2sas/mpt2sas_ctl.c | 10 drivers/scsi/mpt2sas/mpt2sas_debug.h | 2 drivers/scsi/mpt2sas/mpt2sas_scsih.c | 12 drivers/scsi/mpt2sas/mpt2sas_transport.c | 24 - drivers/staging/ath6kl/os/linux/ar6000_drv.c | 1 fs/cifs/cifsfs.c | 4 fs/cifs/inode.c | 14 - fs/cifs/transport.c | 2 fs/ecryptfs/main.c | 23 + fs/ecryptfs/read_write.c | 18 - fs/ext3/namei.c | 6 fs/ext4/namei.c | 6 include/drm/drm_crtc.h | 1 include/drm/i915_drm.h | 2 include/linux/cryptohash.h | 5 include/linux/if.h | 2 include/linux/mm.h | 12 include/linux/random.h | 11 include/net/ipv6.h | 12 include/net/secure_seq.h | 20 + include/net/transp_v6.h | 2 include/xen/interface/xen.h | 39 ++ kernel/futex.c | 54 +++ lib/Makefile | 2 lib/md5.c | 95 ++++++ net/8021q/vlan_dev.c | 2 net/bluetooth/bnep/netdev.c | 1 net/core/Makefile | 2 net/core/link_watch.c | 2 net/core/pktgen.c | 8 net/core/secure_seq.c | 184 +++++++++++++ net/dccp/ipv4.c | 1 net/dccp/ipv6.c | 9 net/ethernet/eth.c | 1 net/ipv4/devinet.c | 16 - net/ipv4/gre.c | 21 - net/ipv4/icmp.c | 14 - net/ipv4/igmp.c | 2 net/ipv4/inet_hashtables.c | 1 net/ipv4/inetpeer.c | 1 net/ipv4/ip_output.c | 6 net/ipv4/ipmr.c | 2 net/ipv4/netfilter/nf_nat_proto_common.c | 1 net/ipv4/route.c | 6 net/ipv4/tcp_ipv4.c | 1 net/ipv6/af_inet6.c | 2 net/ipv6/inet6_hashtables.c | 1 net/ipv6/ip6_output.c | 40 ++ net/ipv6/tcp_ipv6.c | 1 net/ipv6/udp.c | 2 net/l2tp/l2tp_eth.c | 2 net/mac80211/iface.c | 1 net/netfilter/ipvs/ip_vs_ctl.c | 1 net/sched/sch_sfq.c | 7 net/socket.c | 73 ++--- net/xfrm/xfrm_algo.c | 4 sound/core/timer.c | 2 sound/soc/codecs/sgtl5000.c | 128 ++------- sound/usb/caiaq/input.c | 2 sound/usb/endpoint.c | 2 sound/usb/mixer.c | 25 - sound/usb/mixer.h | 1 157 files changed, 1966 insertions(+), 1172 deletions(-)
Adam Jackson (1):
drm/i915/pch: Fix integer math bugs in panel fitting
Alex Hacker (1):
ath9k: fix a misprint which leads to incorrect calibration
Andy Gospodarek (1):
bonding: fix string comparison errors
Anton Blanchard (5):
net: sendmmsg should only return an error if no messages were sent
net: Cap number of elements for sendmmsg powerpc/pseries: Fix kexec on recent firmware versions
powerpc: Fix device tree claim code
powerpc: pseries: Fix kexec on machines with more than 4TB of RAM
Bill Sommerfeld (1):
ipv4: Constrain UFO fragment sizes to multiples of 8 bytes
Bruce Allan (1):
e1000e: alternate MAC address does not work on device id 0x1060
Carlos O'Donell (1):
Fix futex support
Chris Clayton (1):
Fix cdc-phonet build
Clemens Ladisch (1):
ALSA: snd-usb: Accept UAC2 FORMAT_TYPE descriptors with bLength > 6
Corentin Chary (2):
asus-wmi: fix hwmon/pwm1
asus-wmi: return proper value in store_cpufv()
Daniel Mack (2):
ALSA: snd-usb-caiaq: Fix keymap for RigKontrol3
ALSA: snd-usb: operate on given mixer interface only
David S. Miller (18):
crypto: Move md5_transform to lib/md5.c
net: Compute protocol sequence numbers and fragment IDs using MD5.
icmp: Fix regression in nexthop resolution during replies.
sparc: Don't leave sparc_pmu_type NULL on sun4v.
sparc: Add T3 sun4v cpu type and hypervisor group defines.
sparc: Don't do expensive hypervisor PCR write unless necessary.
sparc: Detect and handle UltraSPARC-T3 cpu types.
sparc: Sanitize cpu feature detection and reporting.
sparc: Minor tweaks to Niagara page copy/clear.
sparc: Use popc if possible for hweight routines.
sparc: Use hweight64() in popc emulation.
sparc: Add some missing hypervisor API groups.
sparc: Set reboot-cmd using reboot data hypervisor call if available.
sparc: Use popc when possible for ffs/__ffs/ffz.
sparc: Access kernel TSB using physical addressing when possible.
sparc: Size mondo queues more sanely.
sparc: Fix build with DEBUG_PAGEALLOC enabled.
sparc: Don't do hypervisor calls on non-sun4v in DS driver.
Eric Dumazet (2):
ipv6: make fragment identifications less predictable
sch_sfq: fix sfq_enqueue()
Eric Sandeen (2):
ext3: Properly count journal credits for long symlinks
ext4: Properly count journal credits for long symlinks
Felix Fietkau (1):
ath9k: initialize tx chainmask before testing channel tx power values
Greg Kroah-Hartman (1):
Linux 3.0.2
James Bottomley (1):
wire up sendmmsg syscall
Jeff Layton (2):
cifs: cope with negative dentries in cifs_get_root
cifs: convert prefixpath delimiters in cifs_build_path_to_root
Jeremy Fitzhardinge (1):
xen: allow enable use of VGA console on dom0
Jesse Barnes (1):
drm/i915: load the LUT before pipe enable on ILK+
John David Anglin (1):
fix return type of __atomic64_add_return
John Johansen (1):
Ecryptfs: Add mount option to check uid of device being mounted = expect uid
Julia Lawall (2):
net: adjust array index
drivers/net/niu.c: adjust array index
Julian Anastasov (2):
ipv4: fix the reusing of routing cache entries
ipv4: use RT_TOS after some rt_tos conversions
Kashyap, Desai (1):
mpt2sas: Fixed Big Indian Issues on 32 bit PPC
Keith Packard (3):
drm/i915: Initialize RCS ring status page address in intel_render_ring_init_dri
drm/i915: Hold mode_config->mutex during hotplug processing
drm/i915: Fixup for 'Hold mode_config->mutex during hotplug'Klement Fish (1):
sis190: Rx filter init is needed for MAC address change.
Larry Finger (1):
rtlwifi: Fix kernel oops on ARM SOC
Lennart Sorensen (1):
r8169: Add support for D-Link 530T rev C1 (Kernel Bug 38862)
Neil Horman (2):
net: add IFF_SKB_TX_SHARED flag to priv_flags
net: Audit drivers to identify those needing IFF_TX_SKB_SHARING cleared
Nicolai Krakowiak (1):
ALSA: snd-usb: avoid dividing by zero on invalid input
Ole Henrik Jahren (1):
drm/i915: Fix typo in DRM_I915_OVERLAY_PUT_IMAGE ioctl define
Pavel Shilovsky (1):
CIFS: Fix missing a decrement of inFlight value
Peter Zijlstra (1):
mm: Fix fixup_user_fault() for MMU=n
Rajkumar Manoharan (1):
ath9k_hw: Fix incorrect Tx control power in AR9003 template
Richard Cochran (2):
gianfar: fix fiper alignment after resetting the time
dp83640: increase receive time stamp buffer size
Shawn Bohrer (1):
futex: Fix regression with read only mappings
Simon Horman (1):
IPVS: Free resources on module removal
Stanislaw Gruszka (4):
rt2x00: rt2800: fix zeroing skb structure
rt2x00: fix usage of NULL queue
iwlegacy: set tx power after rxon_assoc
ath9k: skip ->config_pci_powersave() if PCIe port has ASPM disabled
Takashi Iwai (1):
ALSA: timer - Fix Oops at closing slave timer
Tetsuo Handa (1):
net: Fix security_socket_sendmsg() bypass problem.
Thomas Reim (4):
drm: Separate EDID Header Check from EDID Block Check
drm/radeon: Extended DDC Probing for Connectors with Improperly Wired DDC Lines (here: Asus M2A-VM HDMI) drm/radeon: Extended DDC Probing for ECS A740GM-M DVI-D Connector
drm/radeon: Log Subsystem Vendor and Device Information
Tushar Gohad (1):
xfrm: Fix key lengths for rfc3686(ctr(aes))
Tyler Hicks (1):
eCryptfs: Return error when lower file pointer is NULL
WANG Cong (4):
cris: fix a build error in kernel/fork.c
cris: fix a build error in sync_serial_open()
cris: fix the prototype of sync_serial_ioctl()
cris: add missing declaration of kgdb_init() and breakpoint()
Wey-Yi Guy (1):
iwlagn: 5000 do not support idle mode
Wolfram Sang (1):
ASoC: sgtl5000: fix cache handling
Zoltan Kiss (1):
IPv4: Send gratuitous ARP for secondary IP addresses also
stephen hemminger (1):
net: allow netif_carrier to be called safely from IRQ
[email protected] (1):
gre: fix improper error handling
Makefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 3 PATCHLEVEL = 0 -SUBLEVEL = 1 +SUBLEVEL = 2 EXTRAVERSION = NAME = Sneaky Weasel
arch/cris/arch-v10/drivers/sync_serial.c +3 -3
@@ -158,7 +158,7 @@ static int sync_serial_open(struct inode *inode, struct file *file);static int sync_serial_release (struct inode *inode,struct file *file);static unsigned int sync_serial_poll (struct file *filp,poll_table *wait); -static int sync_serial_ioctl (struct file *file, +static long sync_serial_ioctl (struct file *file,unsigned int cmd,unsigned long arg);static ssize_t sync_serial_write (struct file *file,const char *buf,size_t count,loff_t *ppos);
@@ -625,11 +625,11 @@ static int sync_serial_open(struct inode *inode, struct file *file) *R_IRQ_MASK1_SET =1 << port->data_avail_bit;DEBUG (printk (KERN_DEBUG "sser%d rec started\n" , dev)); } - ret =0 ; + err =0 ; out:mutex_unlock (&sync_serial_mutex); -return ret; +return err; }static int sync_serial_release (struct inode *inode,struct file *file)
arch/cris/arch-v10/kernel/irq.c +3 -0
@@ -20,6 +20,9 @@#define crisv10_mask_irq (irq_nr) (*R_VECT_MASK_CLR = 1 << (irq_nr));#define crisv10_unmask_irq (irq_nr) (*R_VECT_MASK_SET = 1 << (irq_nr)); +extern void kgdb_init (void ); +extern void breakpoint (void ); +/* don't use set_int_vector, it bypasses the linux interrupt handlers. it is * global just so that the kernel gdb can use it. */
arch/cris/include/asm/thread_info.h +3 -3
@@ -11,8 +11,6 @@#ifdef __KERNEL__ -#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR -#ifndef __ASSEMBLY__#include <asm/types.h> #include <asm/processor.h>
@@ -67,8 +65,10 @@ struct thread_info {#define init_thread_info (init_thread_union.thread_info) +#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR/* thread information allocation */ -#define alloc_thread_info (tsk, node) ((struct thread_info *) __get_free_pages(GFP_KERNEL,1)) +#define alloc_thread_info_node (tsk, node) \ + ((struct thread_info *) __get_free_pages(GFP_KERNEL, 1))#define free_thread_info (ti) free_pages((unsigned long) (ti), 1)#endif /* !__ASSEMBLY__ */
arch/parisc/include/asm/atomic.h +2 -2
@@ -259,10 +259,10 @@ static __inline__ int atomic_add_unless(atomic_t *v, int a, int u)#define ATOMIC64_INIT (i) ((atomic64_t) { (i) }) -static __inline__int +static __inline__s64 __atomic64_add_return (s64 i,atomic64_t *v) { -int ret; +s64 ret;unsigned long flags;_atomic_spin_lock_irqsave (v, flags);
arch/parisc/include/asm/futex.h +60 -6
111 lines not on this page · raw message
arch/parisc/include/asm/unistd.h +2 -1
@@ -821,8 +821,9 @@#define __NR_open_by_handle_at (__NR_Linux + 326)#define __NR_syncfs (__NR_Linux + 327)#define __NR_setns (__NR_Linux + 328) +#define __NR_sendmmsg (__NR_Linux + 329) -#define __NR_Linux_syscalls (__NR_setns + 1) +#define __NR_Linux_syscalls (__NR_sendmmsg + 1)#define __IGNORE_select/* newselect */
arch/parisc/kernel/syscall_table.S +1 -0
@@ -427,6 +427,7 @@ ENTRY_COMP(open_by_handle_at) ENTRY_SAME(syncfs) ENTRY_SAME(setns) + ENTRY_COMP(sendmmsg) /* Nothing yet */
arch/powerpc/kernel/prom_init.c +3 -3
@@ -1020,7 +1020,7 @@ static unsigned long __init alloc_up(unsigned long size, unsigned long align) }if (addr ==0 )return 0 ; -RELOC (alloc_bottom) = addr; +RELOC (alloc_bottom) = addr + size;prom_debug (" -> %x\n" , addr);prom_debug (" alloc_bottom : %x\n" ,RELOC (alloc_bottom));
@@ -1834,7 +1834,7 @@ static void __init *make_room(unsigned long *mem_start, unsigned long *mem_end, chunk =alloc_up (room,0 );if (chunk ==0 )prom_panic ("No memory for flatten_device_tree (claim failed)" ); - *mem_end =RELOC (alloc_top); + *mem_end = chunk + room; } ret = (void *)*mem_start;
@@ -2053,7 +2053,7 @@ static void __init flatten_device_tree(void) mem_start = (unsigned long )alloc_up (room,PAGE_SIZE );if (mem_start ==0 )prom_panic ("Can't allocate initial device-tree chunk\n" ); - mem_end =RELOC (alloc_top); + mem_end = mem_start + room;/* Get root of tree */ root =call_prom ("peer" ,1 ,1 , (phandle )0 );
arch/powerpc/platforms/pseries/dtl.c +1 -1
@@ -181,7 +181,7 @@ static void dtl_stop(struct dtl *dtl)lppaca_of (dtl->cpu).dtl_enable_mask =0x0 ; -unregister_dtl (hwcpu,__pa (dtl->buf)); +unregister_dtl (hwcpu); }static u64 dtl_current_index (struct dtl *dtl)
arch/powerpc/platforms/pseries/kexec.c +11 -0
@@ -26,6 +26,17 @@ static void pseries_kexec_cpu_down(int crash_shutdown, int secondary)/* Don't risk a hypervisor call if we're crashing */ if (firmware_has_feature (FW_FEATURE_SPLPAR ) && !crash_shutdown) {unsigned long addr; +int ret; + +if (get_lppaca ()->dtl_enable_mask) { + ret =unregister_dtl (hard_smp_processor_id ()); +if (ret) { +pr_err ("WARNING: DTL deregistration for cpu " +"%d (hw %d) failed with %d\n" , +smp_processor_id (), +hard_smp_processor_id (), ret); + } + } addr =__pa (get_slb_shadow ());if (unregister_slb_shadow (hard_smp_processor_id (), addr))
arch/powerpc/platforms/pseries/lpar.c +1 -1
@@ -395,7 +395,7 @@ static void pSeries_lpar_hptab_clear(void)unsigned long ptel; } ptes[4 ];long lpar_rc; -int i, j; +unsigned long i, j;/* Read in batches of 4, * invalidate only valid entries not in the VRMA
arch/powerpc/platforms/pseries/plpar_wrappers.h +2 -2
@@ -73,9 +73,9 @@ static inline long register_slb_shadow(unsigned long cpu, unsigned long vpa)return vpa_call (0x3 , cpu, vpa); } -static inline long unregister_dtl (unsigned long cpu,unsigned long vpa) +static inline long unregister_dtl (unsigned long cpu) { -return vpa_call (0x6 , cpu, vpa); +return vpa_call (0x6 , cpu,0 ); }static inline long register_dtl (unsigned long cpu,unsigned long vpa)
arch/sparc/include/asm/bitops_64.h +8 -41
69 lines not on this page · raw message
arch/sparc/include/asm/elf_64.h +29 -34
75 lines not on this page · raw message
arch/sparc/include/asm/hypervisor.h +14 -0
@@ -2927,6 +2927,13 @@ extern unsigned long sun4v_ncs_request(unsigned long request,#define HV_FAST_FIRE_GET_PERFREG 0x120#define HV_FAST_FIRE_SET_PERFREG 0x121 +#define HV_FAST_REBOOT_DATA_SET 0x172 + +#ifndef __ASSEMBLY__ +extern unsigned long sun4v_reboot_data_set (unsigned long ra, +unsigned long len); +#endif +/* Function numbers for HV_CORE_TRAP. */ #define HV_CORE_SET_VER 0x00#define HV_CORE_PUTCHAR 0x01
@@ -2940,16 +2947,23 @@ extern unsigned long sun4v_ncs_request(unsigned long request,#define HV_GRP_CORE 0x0001#define HV_GRP_INTR 0x0002#define HV_GRP_SOFT_STATE 0x0003 +#define HV_GRP_TM 0x0080#define HV_GRP_PCI 0x0100#define HV_GRP_LDOM 0x0101#define HV_GRP_SVC_CHAN 0x0102#define HV_GRP_NCS 0x0103#define HV_GRP_RNG 0x0104 +#define HV_GRP_PBOOT 0x0105 +#define HV_GRP_TPM 0x0107 +#define HV_GRP_SDIO 0x0108 +#define HV_GRP_SDIO_ERR 0x0109 +#define HV_GRP_REBOOT_DATA 0x0110#define HV_GRP_NIAG_PERF 0x0200#define HV_GRP_FIRE_PERF 0x0201#define HV_GRP_N2_CPU 0x0202#define HV_GRP_NIU 0x0204#define HV_GRP_VF_CPU 0x0205 +#define HV_GRP_KT_CPU 0x0209#define HV_GRP_DIAG 0x0300#ifndef __ASSEMBLY__
arch/sparc/include/asm/spitfire.h +1 -0
@@ -42,6 +42,7 @@#define SUN4V_CHIP_INVALID 0x00#define SUN4V_CHIP_NIAGARA1 0x01#define SUN4V_CHIP_NIAGARA2 0x02 +#define SUN4V_CHIP_NIAGARA3 0x03#define SUN4V_CHIP_UNKNOWN 0xff#ifndef __ASSEMBLY__
arch/sparc/include/asm/tsb.h +24 -27
84 lines not on this page · raw message
arch/sparc/include/asm/xor_64.h +2 -1
@@ -65,6 +65,7 @@ static struct xor_block_template xor_block_niagara = {#define XOR_SELECT_TEMPLATE (FASTEST ) \ ((tlb_type == hypervisor && \ (sun4v_chip_type == SUN4V_CHIP_NIAGARA1 || \ - sun4v_chip_type == SUN4V_CHIP_NIAGARA2)) ? \ + sun4v_chip_type == SUN4V_CHIP_NIAGARA2 || \ + sun4v_chip_type == SUN4V_CHIP_NIAGARA3)) ? \ &xor_block_niagara : \ &xor_block_VIS)
arch/sparc/kernel/cpu.c +8 -0
@@ -396,6 +396,7 @@ static int show_cpuinfo(struct seq_file *m, void *__unused) , cpu_data(0).clock_tick#endif ); +cpucap_info (m);#ifdef CONFIG_SMP smp_bogo (m);#endif
@@ -474,11 +475,18 @@ static void __init sun4v_cpu_probe(void) sparc_pmu_type ="niagara2" ;break ; +case SUN4V_CHIP_NIAGARA3 : + sparc_cpu_type ="UltraSparc T3 (Niagara3)" ; + sparc_fpu_type ="UltraSparc T3 integrated FPU" ; + sparc_pmu_type ="niagara3" ; +break ; +default :printk (KERN_WARNING "CPU: Unknown sun4v cpu type [%s]\n" , prom_cpu_compatible); sparc_cpu_type ="Unknown SUN4V CPU" ; sparc_fpu_type ="Unknown SUN4V FPU" ; + sparc_pmu_type ="Unknown SUN4V PMU" ;break ; } }
arch/sparc/kernel/cpumap.c +1 -0
@@ -324,6 +324,7 @@ static int iterate_cpu(struct cpuinfo_tree *t, unsigned int root_index)switch (sun4v_chip_type) {case SUN4V_CHIP_NIAGARA1 :case SUN4V_CHIP_NIAGARA2 : +case SUN4V_CHIP_NIAGARA3 : rover_inc_table = niagara_iterate_method;break ;default :
arch/sparc/kernel/ds.c +29 -2
@@ -15,12 +15,15 @@#include <linux/reboot.h> #include <linux/cpu.h> +#include <asm/hypervisor.h> #include <asm/ldc.h> #include <asm/vio.h> #include <asm/mdesc.h> #include <asm/head.h> #include <asm/irq.h> +#include "kernel.h" +#define DRV_MODULE_NAME "ds"#define PFX DRV_MODULE_NAME ": "#define DRV_MODULE_VERSION "1.0"
@@ -828,18 +831,32 @@ void ldom_set_var(const char *var, const char *value) } } +static char full_boot_str[256] __attribute__((aligned(32))); +static int reboot_data_supported; +void ldom_reboot (const char *boot_command) {/* Don't bother with any of this if the boot_command * is empty. */ if (boot_command &&strlen (boot_command)) { -char full_boot_str[256 ]; +unsigned long len;strcpy (full_boot_str,"boot " );strcpy (full_boot_str +strlen ("boot " ), boot_command); + len =strlen (full_boot_str); -ldom_set_var ("reboot-command" , full_boot_str); +if (reboot_data_supported) { +unsigned long ra =kimage_addr_to_ra (full_boot_str); +unsigned long hv_ret; + + hv_ret =sun4v_reboot_data_set (ra, len); +if (hv_ret !=HV_EOK ) +pr_err ("SUN4V: Unable to set reboot data " +"hv_ret=%lu\n" , hv_ret); + }else { +ldom_set_var ("reboot-command" , full_boot_str); + } }sun4v_mach_sir (); }
@@ -1237,6 +1254,16 @@ static struct vio_driver ds_driver = {static int __init ds_init (void ) { +unsigned long hv_ret, major, minor; + +if (tlb_type == hypervisor) { + hv_ret =sun4v_get_version (HV_GRP_REBOOT_DATA , &major, &minor); +if (hv_ret ==HV_EOK ) { +pr_info ("SUN4V: Reboot data supported (maj=%lu,min=%lu).\n" , + major, minor); + reboot_data_supported =1 ; + } + }kthread_run (ds_thread,NULL ,"kldomd" );return vio_register_driver (&ds_driver);
arch/sparc/kernel/entry.h +14 -0
@@ -42,6 +42,20 @@ extern void fpsave(unsigned long *fpregs, unsigned long *fsr,extern void fpload (unsigned long *fpregs,unsigned long *fsr);#else /* CONFIG_SPARC32 */ +struct popc_3insn_patch_entry { +unsigned int addr; +unsigned int insns[3 ]; +}; +extern struct popc_3insn_patch_entry __popc_3insn_patch, + __popc_3insn_patch_end; + +struct popc_6insn_patch_entry { +unsigned int addr; +unsigned int insns[6 ]; +}; +extern struct popc_6insn_patch_entry __popc_6insn_patch, + __popc_6insn_patch_end; +extern void __init per_cpu_patch (void );extern void __init sun4v_patch (void );extern void __init boot_cpu_id_too_large (int cpu);
arch/sparc/kernel/head_64.S +32 -1
@@ -132,6 +132,8 @@ prom_sun4v_name: .asciz "sun4v" prom_niagara_prefix: .asciz "SUNW,UltraSPARC-T" +prom_sparc_prefix: + .asciz "SPARC-T" .align 4 prom_root_compatible: .skip 64
@@ -382,6 +384,22 @@ sun4v_chip_type: 90: ldub [%g7], %g2 ldub [%g1], %g4 cmp %g2, %g4 + bne,pn %icc, 89f + add %g7, 1, %g7 + subcc %g3, 1, %g3 + bne,pt %xcc, 90b + add %g1, 1, %g1 + ba,pt %xcc, 91f + nop + +89: sethi %hi(prom_cpu_compatible), %g1 + or %g1, %lo(prom_cpu_compatible), %g1 + sethi %hi(prom_sparc_prefix), %g7 + or %g7, %lo(prom_sparc_prefix), %g7 + mov 7, %g3 +90: ldub [%g7], %g2 + ldub [%g1], %g4 + cmp %g2, %g4 bne,pn %icc, 4f add %g7, 1, %g7 subcc %g3, 1, %g3
@@ -390,6 +408,15 @@ sun4v_chip_type: sethi %hi(prom_cpu_compatible), %g1 or %g1, %lo(prom_cpu_compatible), %g1 + ldub [%g1 + 7], %g2 + cmp %g2, '3' + be,pt %xcc, 5f + mov SUN4V_CHIP_NIAGARA3, %g4 + ba,pt %xcc, 4f + nop + +91: sethi %hi(prom_cpu_compatible), %g1 + or %g1, %lo(prom_cpu_compatible), %g1 ldub [%g1 + 17], %g2 cmp %g2, '1' be,pt %xcc, 5f
@@ -397,6 +424,7 @@ sun4v_chip_type: cmp %g2, '2' be,pt %xcc, 5f mov SUN4V_CHIP_NIAGARA2, %g4 + 4: mov SUN4V_CHIP_UNKNOWN, %g4 5: sethi %hi(sun4v_chip_type), %g2
@@ -514,6 +542,9 @@ niagara_tlb_fixup: cmp %g1, SUN4V_CHIP_NIAGARA2 be,pt %xcc, niagara2_patch nop + cmp %g1, SUN4V_CHIP_NIAGARA3 + be,pt %xcc, niagara2_patch + nop call generic_patch_copyops nop
@@ -528,7 +559,7 @@ niagara2_patch: nop call niagara_patch_bzero nop - call niagara2_patch_pageops + call niagara_patch_pageops nop ba,a,pt %xcc, 80f
arch/sparc/kernel/hvapi.c +7 -0
@@ -28,16 +28,23 @@ static struct api_info api_table[] = { { .group = HV_GRP_CORE, .flags = FLAG_PRE_API }, { .group = HV_GRP_INTR, }, { .group = HV_GRP_SOFT_STATE, }, + { .group = HV_GRP_TM, }, { .group = HV_GRP_PCI, .flags = FLAG_PRE_API }, { .group = HV_GRP_LDOM, }, { .group = HV_GRP_SVC_CHAN, .flags = FLAG_PRE_API }, { .group = HV_GRP_NCS, .flags = FLAG_PRE_API }, { .group = HV_GRP_RNG, }, + { .group = HV_GRP_PBOOT, }, + { .group = HV_GRP_TPM, }, + { .group = HV_GRP_SDIO, }, + { .group = HV_GRP_SDIO_ERR, }, + { .group = HV_GRP_REBOOT_DATA, }, { .group = HV_GRP_NIAG_PERF, .flags = FLAG_PRE_API }, { .group = HV_GRP_FIRE_PERF, }, { .group = HV_GRP_N2_CPU, }, { .group = HV_GRP_NIU, }, { .group = HV_GRP_VF_CPU, }, + { .group = HV_GRP_KT_CPU, }, { .group = HV_GRP_DIAG, .flags = FLAG_PRE_API }, };
arch/sparc/kernel/hvcalls.S +7 -0
@@ -798,3 +798,10 @@ ENTRY(sun4v_niagara2_setperf) retl nop ENDPROC(sun4v_niagara2_setperf) + +ENTRY(sun4v_reboot_data_set) + mov HV_FAST_REBOOT_DATA_SET, %o5 + ta HV_FAST_TRAP + retl + nop +ENDPROC(sun4v_reboot_data_set)
arch/sparc/kernel/kernel.h +15 -0
@@ -4,12 +4,27 @@#include <linux/interrupt.h> #include <asm/traps.h> +#include <asm/head.h> +#include <asm/io.h> /* cpu.c */ extern const char *sparc_pmu_type;extern unsigned int fsr_storage;extern int ncpus_probed; +#ifdef CONFIG_SPARC64 +/* setup_64.c */ +struct seq_file ; +extern void cpucap_info (struct seq_file *); + +static inline unsigned long kimage_addr_to_ra (const char *p) +{ +unsigned long val = (unsigned long ) p; + +return kern_base + (val -KERNBASE ); +} +#endif +#ifdef CONFIG_SPARC32 /* cpu.c */ extern void cpu_probe (void );
arch/sparc/kernel/ktlb.S +12 -12
@@ -47,16 +47,16 @@ kvmap_itlb_tsb_miss: kvmap_itlb_vmalloc_addr: KERN_PGTABLE_WALK(%g4, %g5, %g2, kvmap_itlb_longpath) - KTSB_LOCK_TAG(%g1, %g2, %g7) + TSB_LOCK_TAG(%g1, %g2, %g7) /* Load and check PTE. */ ldxa [%g5] ASI_PHYS_USE_EC, %g5 mov 1, %g7 sllx %g7, TSB_TAG_INVALID_BIT, %g7 brgez,a,pn %g5, kvmap_itlb_longpath - KTSB_STORE(%g1, %g7) + TSB_STORE(%g1, %g7) - KTSB_WRITE(%g1, %g5, %g6) + TSB_WRITE(%g1, %g5, %g6) /* fallthrough to TLB load */
@@ -102,9 +102,9 @@ kvmap_itlb_longpath: kvmap_itlb_obp: OBP_TRANS_LOOKUP(%g4, %g5, %g2, %g3, kvmap_itlb_longpath) - KTSB_LOCK_TAG(%g1, %g2, %g7) + TSB_LOCK_TAG(%g1, %g2, %g7) - KTSB_WRITE(%g1, %g5, %g6) + TSB_WRITE(%g1, %g5, %g6) ba,pt %xcc, kvmap_itlb_load nop
@@ -112,17 +112,17 @@ kvmap_itlb_obp: kvmap_dtlb_obp: OBP_TRANS_LOOKUP(%g4, %g5, %g2, %g3, kvmap_dtlb_longpath) - KTSB_LOCK_TAG(%g1, %g2, %g7) + TSB_LOCK_TAG(%g1, %g2, %g7) - KTSB_WRITE(%g1, %g5, %g6) + TSB_WRITE(%g1, %g5, %g6) ba,pt %xcc, kvmap_dtlb_load nop .align 32 kvmap_dtlb_tsb4m_load: - KTSB_LOCK_TAG(%g1, %g2, %g7) - KTSB_WRITE(%g1, %g5, %g6) + TSB_LOCK_TAG(%g1, %g2, %g7) + TSB_WRITE(%g1, %g5, %g6) ba,pt %xcc, kvmap_dtlb_load nop
@@ -222,16 +222,16 @@ kvmap_linear_patch: kvmap_dtlb_vmalloc_addr: KERN_PGTABLE_WALK(%g4, %g5, %g2, kvmap_dtlb_longpath) - KTSB_LOCK_TAG(%g1, %g2, %g7) + TSB_LOCK_TAG(%g1, %g2, %g7) /* Load and check PTE. */ ldxa [%g5] ASI_PHYS_USE_EC, %g5 mov 1, %g7 sllx %g7, TSB_TAG_INVALID_BIT, %g7 brgez,a,pn %g5, kvmap_dtlb_longpath - KTSB_STORE(%g1, %g7) + TSB_STORE(%g1, %g7) - KTSB_WRITE(%g1, %g5, %g6) + TSB_WRITE(%g1, %g5, %g6) /* fallthrough to TLB load */
arch/sparc/kernel/mdesc.c +23 -7
@@ -508,6 +508,8 @@ const char *mdesc_node_name(struct mdesc_handle *hp, u64 node) }EXPORT_SYMBOL (mdesc_node_name); +static u64 max_cpus =64 ; +static void __init report_platform_properties (void ) {struct mdesc_handle *hp =mdesc_grab ();
@@ -543,8 +545,10 @@ static void __init report_platform_properties(void)if (v)printk ("PLATFORM: watchdog-max-timeout [%llu ms]\n" , *v); v =mdesc_get_property (hp, pn,"max-cpus" ,NULL ); -if (v) -printk ("PLATFORM: max-cpus [%llu]\n" , *v); +if (v) { + max_cpus = *v; +printk ("PLATFORM: max-cpus [%llu]\n" , max_cpus); + }#ifdef CONFIG_SMP {
@@ -715,7 +719,7 @@ static void __cpuinit set_proc_ids(struct mdesc_handle *hp) }static void __cpuinit get_one_mondo_bits (const u64 *p,unsigned int *mask, -unsigned char def) +unsigned long def,unsigned long max) {u64 val;
@@ -726,6 +730,9 @@ static void __cpuinit get_one_mondo_bits(const u64 *p, unsigned int *mask,if (!val || val >=64 ) goto use_default; +if (val > max) + val = max; + *mask = ((1U << val) *64U ) -1U ;return ;
@@ -736,19 +743,28 @@ use_default:static void __cpuinit get_mondo_data (struct mdesc_handle *hp,u64 mp,struct trap_per_cpu *tb) { +static int printed;const u64 *val; val =mdesc_get_property (hp, mp,"q-cpu-mondo-#bits" ,NULL ); -get_one_mondo_bits (val, &tb->cpu_mondo_qmask,7 ); +get_one_mondo_bits (val, &tb->cpu_mondo_qmask,7 ,ilog2 (max_cpus *2 )); val =mdesc_get_property (hp, mp,"q-dev-mondo-#bits" ,NULL ); -get_one_mondo_bits (val, &tb->dev_mondo_qmask,7 ); +get_one_mondo_bits (val, &tb->dev_mondo_qmask,7 ,8 ); val =mdesc_get_property (hp, mp,"q-resumable-#bits" ,NULL ); -get_one_mondo_bits (val, &tb->resum_qmask,6 ); +get_one_mondo_bits (val, &tb->resum_qmask,6 ,7 ); val =mdesc_get_property (hp, mp,"q-nonresumable-#bits" ,NULL ); -get_one_mondo_bits (val, &tb->nonresum_qmask,2 ); +get_one_mondo_bits (val, &tb->nonresum_qmask,2 ,2 ); +if (!printed++) { +pr_info ("SUN4V: Mondo queue sizes " +"[cpu(%u) dev(%u) r(%u) nr(%u)]\n" , + tb->cpu_mondo_qmask +1 , + tb->dev_mondo_qmask +1 , + tb->resum_qmask +1 , + tb->nonresum_qmask +1 ); + } }static void *__cpuinit mdesc_iterate_over_cpus (void *(*func)(struct mdesc_handle *,u64 ,int ,void *),void *arg,cpumask_t *mask)
arch/sparc/kernel/pcr.c +9 -2
@@ -80,8 +80,11 @@ static void n2_pcr_write(u64 val) {unsigned long ret; - ret =sun4v_niagara2_setperf (HV_N2_PERF_SPARC_CTL , val); -if (ret !=HV_EOK ) +if (val &PCR_N2_HTRACE ) { + ret =sun4v_niagara2_setperf (HV_N2_PERF_SPARC_CTL , val); +if (ret !=HV_EOK ) +write_pcr (val); + }else write_pcr (val); }
@@ -106,6 +109,10 @@ static int __init register_perf_hsvc(void) perf_hsvc_group =HV_GRP_N2_CPU ;break ; +case SUN4V_CHIP_NIAGARA3 : + perf_hsvc_group =HV_GRP_KT_CPU ; +break ; +default :return -ENODEV ; }
arch/sparc/kernel/perf_event.c +2 -1
@@ -1301,7 +1301,8 @@ static bool __init supported_pmu(void) sparc_pmu = &niagara1_pmu;return true; } -if (!strcmp (sparc_pmu_type,"niagara2" )) { +if (!strcmp (sparc_pmu_type,"niagara2" ) || + !strcmp (sparc_pmu_type,"niagara3" )) { sparc_pmu = &niagara2_pmu;return true; }
arch/sparc/kernel/setup_64.c +186 -0
216 lines not on this page · raw message
arch/sparc/kernel/sparc_ksyms_64.c +11 -0
@@ -8,6 +8,7 @@#include <linux/module.h> #include <linux/pci.h> #include <linux/init.h> +#include <linux/bitops.h> #include <asm/system.h> #include <asm/cpudata.h>
@@ -38,5 +39,15 @@ EXPORT_SYMBOL(sun4v_niagara_setperf);EXPORT_SYMBOL (sun4v_niagara2_getperf);EXPORT_SYMBOL (sun4v_niagara2_setperf); +/* from hweight.S */ +EXPORT_SYMBOL (__arch_hweight8); +EXPORT_SYMBOL (__arch_hweight16); +EXPORT_SYMBOL (__arch_hweight32); +EXPORT_SYMBOL (__arch_hweight64); + +/* from ffs_ffz.S */ +EXPORT_SYMBOL (ffs); +EXPORT_SYMBOL (__ffs); +/* Exporting a symbol from /init/main.c */ EXPORT_SYMBOL (saved_command_line);
arch/sparc/kernel/sstate.c +2 -7
@@ -14,14 +14,9 @@#include <asm/head.h> #include <asm/io.h> -static int hv_supports_soft_state; - -static unsigned long kimage_addr_to_ra (const char *p) -{ -unsigned long val = (unsigned long ) p; +#include "kernel.h" -return kern_base + (val -KERNBASE ); -} +static int hv_supports_soft_state;static void do_set_sstate (unsigned long state,const char *msg) {
arch/sparc/kernel/unaligned_64.c +4 -11
@@ -22,6 +22,7 @@#include <linux/bitops.h> #include <linux/perf_event.h> #include <linux/ratelimit.h> +#include <linux/bitops.h> #include <asm/fpumacro.h> enum direction {
@@ -373,16 +374,11 @@ asmlinkage void kernel_unaligned_trap(struct pt_regs *regs, unsigned int insn) } } -static char popc_helper[] = { -0 ,1 ,1 ,2 ,1 ,2 ,2 ,3 , -1 ,2 ,2 ,3 ,2 ,3 ,3 ,4 , -}; -int handle_popc (u32 insn,struct pt_regs *regs) { -u64 value; -int ret, i, rd = ((insn >>25 ) &0x1f );int from_kernel = (regs->tstate &TSTATE_PRIV ) !=0 ; +int ret, rd = ((insn >>25 ) &0x1f ); +u64 value;perf_sw_event (PERF_COUNT_SW_EMULATION_FAULTS ,1 ,0 , regs,0 );if (insn &0x2000 ) {
@@ -392,10 +388,7 @@ int handle_popc(u32 insn, struct pt_regs *regs)maybe_flush_windows (0 , insn &0x1f , rd, from_kernel); value =fetch_reg (insn &0x1f , regs); } -for (ret =0 , i =0 ; i <16 ; i++) { - ret += popc_helper[value &0xf ]; - value >>=4 ; - } + ret =hweight64 (value);if (rd <16 ) {if (rd) regs->u_regs[rd] = ret;
arch/sparc/kernel/vmlinux.lds.S +20 -1
@@ -107,7 +107,26 @@ SECTIONS *(.sun4v_2insn_patch) __sun4v_2insn_patch_end = .; } - + .swapper_tsb_phys_patch : { + __swapper_tsb_phys_patch = .; + *(.swapper_tsb_phys_patch) + __swapper_tsb_phys_patch_end = .; + } + .swapper_4m_tsb_phys_patch : { + __swapper_4m_tsb_phys_patch = .; + *(.swapper_4m_tsb_phys_patch) + __swapper_4m_tsb_phys_patch_end = .; + } + .popc_3insn_patch : { + __popc_3insn_patch = .; + *(.popc_3insn_patch) + __popc_3insn_patch_end = .; + } + .popc_6insn_patch : { + __popc_6insn_patch = .; + *(.popc_6insn_patch) + __popc_6insn_patch_end = .; + } PERCPU_SECTION(SMP_CACHE_BYTES) . = ALIGN(PAGE_SIZE);
arch/sparc/lib/Makefile +2 -2
@@ -31,13 +31,13 @@ lib-$(CONFIG_SPARC64) += NGmemcpy.o NGcopy_from_user.o NGcopy_to_user.o lib-$(CONFIG_SPARC64) += NGpatch.o NGpage.o NGbzero.o lib-$(CONFIG_SPARC64) += NG2memcpy.o NG2copy_from_user.o NG2copy_to_user.o -lib-$(CONFIG_SPARC64) += NG2patch.o NG2page.o +lib-$(CONFIG_SPARC64) += NG2patch.o lib-$(CONFIG_SPARC64) += GENmemcpy.o GENcopy_from_user.o GENcopy_to_user.o lib-$(CONFIG_SPARC64) += GENpatch.o GENpage.o GENbzero.o lib-$(CONFIG_SPARC64) += copy_in_user.o user_fixup.o memmove.o -lib-$(CONFIG_SPARC64) += mcount.o ipcsum.o xor.o +lib-$(CONFIG_SPARC64) += mcount.o ipcsum.o xor.o hweight.o ffs.o obj-y += iomap.o obj-$(CONFIG_SPARC32) += atomic32.o
arch/sparc/lib/NG2page.S deleted +0 -61
61 lines not on this page · raw message
arch/sparc/lib/NGpage.S +75 -39
130 lines not on this page · raw message
arch/sparc/lib/ffs.S new file +84 -0
84 lines not on this page · raw message
arch/sparc/lib/hweight.S new file +51 -0
51 lines not on this page · raw message
arch/sparc/mm/init_64.c +41 -1
55 lines not on this page · raw message
arch/x86/xen/Makefile +1 -1
@@ -18,5 +18,5 @@ obj-y := enlighten.o setup.o multicalls.o mmu.o irq.o \ obj-$(CONFIG_SMP) += smp.o obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= spinlock.o obj-$(CONFIG_XEN_DEBUG_FS) += debugfs.o - +obj-$(CONFIG_XEN_DOM0) += vga.o obj-$(CONFIG_SWIOTLB_XEN) += pci-swiotlb-xen.o
arch/x86/xen/enlighten.c +8 -0
@@ -1248,6 +1248,14 @@ asmlinkage void __init xen_start_kernel(void)if (pci_xen) x86_init.pci.arch_init = pci_xen_init; }else { +const struct dom0_vga_console_info *info = + (void *)((char *)xen_start_info + + xen_start_info->console.dom0.info_off); + +xen_init_vga (info, xen_start_info->console.dom0.info_size); + xen_start_info->console.domU.mfn =0 ; + xen_start_info->console.domU.evtchn =0 ; +/* Make sure ACS will be enabled */ pci_request_acs (); }
arch/x86/xen/vga.c new file +67 -0
67 lines not on this page · raw message
arch/x86/xen/xen-ops.h +11 -0
@@ -88,6 +88,17 @@ static inline void xen_uninit_lock_cpu(int cpu) }#endif +struct dom0_vga_console_info ; + +#ifdef CONFIG_XEN_DOM0 +void __init xen_init_vga (const struct dom0_vga_console_info *,size_t size); +#else +static inline void __init xen_init_vga (const struct dom0_vga_console_info *info, +size_t size) +{ +} +#endif +/* Declare an asm function, along with symbols needed to make it inlineable */ #define DECL_ASM (ret, name, ...) \
crypto/md5.c +1 -91
100 lines not on this page · raw message
drivers/char/random.c +8 -326
355 lines not on this page · raw message
drivers/gpu/drm/drm_edid.c +18 -6
@@ -127,6 +127,23 @@ static const u8 edid_header[] = { 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00 }; +/* +* Sanity check the header of the base EDID block. Return 8 if the header +* is perfect, down to 0 if it's totally wrong. +*/ +int drm_edid_header_is_valid (const u8 *raw_edid) +{ +int i, score =0 ; + +for (i =0 ; i <sizeof (edid_header); i++) +if (raw_edid[i] == edid_header[i]) + score++; + +return score; +} +EXPORT_SYMBOL (drm_edid_header_is_valid); + +/* * Sanity check the EDID block (base or extension). Return 0 if the block * doesn't check out, or 1 if it's valid.
@@ -139,12 +156,7 @@ drm_edid_block_valid(u8 *raw_edid)struct edid *edid = (struct edid *)raw_edid;if (raw_edid[0 ] ==0x00 ) { -int score =0 ; - -for (i =0 ; i <sizeof (edid_header); i++) -if (raw_edid[i] == edid_header[i]) - score++; - +int score =drm_edid_header_is_valid (raw_edid);if (score ==8 ) ;else if (score >=6 ) {DRM_DEBUG ("Fixing EDID header, your hardware may be failing\n" );
drivers/gpu/drm/i915/i915_dma.c +2 -4
@@ -61,7 +61,6 @@ static void i915_write_hws_pga(struct drm_device *dev)static int i915_init_phys_hws (struct drm_device *dev) {drm_i915_private_t *dev_priv = dev->dev_private; -struct intel_ring_buffer *ring =LP_RING (dev_priv);/* Program Hardware Status Page */ dev_priv->status_page_dmah =
@@ -71,10 +70,9 @@ static int i915_init_phys_hws(struct drm_device *dev)DRM_ERROR ("Can not allocate hardware status page\n" );return -ENOMEM ; } - ring->status_page.page_addr = - (void __force __iomem *)dev_priv->status_page_dmah->vaddr; -memset_io (ring->status_page.page_addr,0 ,PAGE_SIZE ); +memset_io ((void __force __iomem *)dev_priv->status_page_dmah->vaddr, +0 ,PAGE_SIZE );i915_write_hws_pga (dev);
drivers/gpu/drm/i915/i915_irq.c +3 -0
@@ -306,12 +306,15 @@ static void i915_hotplug_work_func(struct work_struct *work)struct drm_mode_config *mode_config = &dev->mode_config;struct intel_encoder *encoder; +mutex_lock (&mode_config->mutex);DRM_DEBUG_KMS ("running encoder hotplug functions\n" );list_for_each_entry (encoder, &mode_config->encoder_list, base.head)if (encoder->hot_plug) encoder->hot_plug (encoder); +mutex_unlock (&mode_config->mutex); +/* Just fire off a uevent and let userspace tell us what to do */ drm_helper_hpd_irq_event (dev); }
drivers/gpu/drm/i915/intel_display.c +6 -2
@@ -2699,14 +2699,18 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)I915_WRITE (PF_WIN_SZ (pipe), dev_priv->pch_pf_size); } +/* +* On ILK+ LUT must be loaded before the pipe is running but with +* clocks enabled +*/ +intel_crtc_load_lut (crtc); +intel_enable_pipe (dev_priv, pipe, is_pch_port);intel_enable_plane (dev_priv, plane, pipe);if (is_pch_port)ironlake_pch_enable (crtc); -intel_crtc_load_lut (crtc); -mutex_lock (&dev->struct_mutex);intel_update_fbc (dev);mutex_unlock (&dev->struct_mutex);
drivers/gpu/drm/i915/intel_panel.c +4 -0
@@ -83,11 +83,15 @@ intel_pch_panel_fitting(struct drm_device *dev,u32 scaled_height = mode->hdisplay * adjusted_mode->vdisplay;if (scaled_width > scaled_height) {/* pillar */ width = scaled_height / mode->vdisplay; +if (width &1 ) + width++; x = (adjusted_mode->hdisplay - width +1 ) /2 ; y =0 ; height = adjusted_mode->vdisplay; }else if (scaled_width < scaled_height) {/* letter */ height = scaled_width / mode->hdisplay; +if (height &1 ) + height++; y = (adjusted_mode->vdisplay - height +1 ) /2 ; x =0 ; width = adjusted_mode->hdisplay;
drivers/gpu/drm/i915/intel_ringbuffer.c +3 -0
@@ -1319,6 +1319,9 @@ int intel_render_ring_init_dri(struct drm_device *dev, u64 start, u32 size) ring->get_seqno = pc_render_get_seqno; } +if (!I915_NEED_GFX_HWS (dev)) + ring->status_page.page_addr = dev_priv->status_page_dmah->vaddr; + ring->dev = dev;INIT_LIST_HEAD (&ring->active_list);INIT_LIST_HEAD (&ring->request_list);
drivers/gpu/drm/radeon/radeon_connectors.c +51 -3
90 lines not on this page · raw message
drivers/gpu/drm/radeon/radeon_device.c +3 -2
@@ -704,8 +704,9 @@ int radeon_device_init(struct radeon_device *rdev, rdev->gpu_lockup = false; rdev->accel_working = false; -DRM_INFO ("initializing kernel modesetting (%s 0x%04X:0x%04X).\n" , - radeon_family_name[rdev->family], pdev->vendor, pdev->device); +DRM_INFO ("initializing kernel modesetting (%s 0x%04X:0x%04X 0x%04X:0x%04X).\n" , + radeon_family_name[rdev->family], pdev->vendor, pdev->device, + pdev->subsystem_vendor, pdev->subsystem_device);/* mutex initialization are all done here so we * can recall function without having locking issues */
drivers/gpu/drm/radeon/radeon_display.c +9 -0
@@ -777,8 +777,17 @@ static int radeon_ddc_dump(struct drm_connector *connector)if (!radeon_connector->ddc_bus)return -1 ; edid =drm_get_edid (connector, &radeon_connector->ddc_bus->adapter); +/* Log EDID retrieval status here. In particular with regard to +* connectors with requires_extended_probe flag set, that will prevent +* function radeon_dvi_detect() to fetch EDID on this connector, +* as long as there is no valid EDID header found */ if (edid) { +DRM_INFO ("Radeon display connector %s: Found valid EDID" , +drm_get_connector_name (connector));kfree (edid); + }else { +DRM_INFO ("Radeon display connector %s: No monitor connected or invalid EDID" , +drm_get_connector_name (connector)); }return ret; }
drivers/gpu/drm/radeon/radeon_i2c.c +24 -8
@@ -32,17 +32,17 @@* radeon_ddc_probe * */ -bool radeon_ddc_probe (struct radeon_connector *radeon_connector) +bool radeon_ddc_probe (struct radeon_connector *radeon_connector,bool requires_extended_probe) { -u8 out_buf[] = {0x0 ,0x0 }; -u8 buf[2 ]; +u8 out =0x0 ; +u8 buf[8 ];int ret;struct i2c_msg msgs[] = { { .addr =0x50 , .flags =0 , .len =1 , - .buf = out_buf, + .buf = &out, }, { .addr =0x50 ,
@@ -52,15 +52,31 @@ bool radeon_ddc_probe(struct radeon_connector *radeon_connector) } }; +/* Read 8 bytes from i2c for extended probe of EDID header */ +if (requires_extended_probe) + msgs[1 ].len =8 ; +/* on hw with routers, select right port */ if (radeon_connector->router.ddc_valid)radeon_router_select_ddc_port (radeon_connector); ret =i2c_transfer (&radeon_connector->ddc_bus->adapter, msgs,2 ); -if (ret ==2 ) -return true; - -return false; +if (ret !=2 ) +/* Couldn't find an accessible DDC on this connector */ +return false; +if (requires_extended_probe) { +/* Probe also for valid EDID header +* EDID header starts with: +* 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00. +* Only the first 6 bytes must be valid as +* drm_edid_block_valid() can fix the last 2 bytes */ +if (drm_edid_header_is_valid (buf) <6 ) { +/* Couldn't find an accessible EDID on this +* connector */ +return false; + } + } +return true; }/* bit banging i2c */
drivers/gpu/drm/radeon/radeon_mode.h +5 -1
@@ -438,6 +438,9 @@ struct radeon_connector {struct radeon_i2c_chan *ddc_bus;/* some systems have an hdmi and vga port with a shared ddc line */ bool shared_ddc; +/* for some Radeon chip families we apply an additional EDID header +check as part of the DDC probe */ +bool requires_extended_probe;bool use_digital;/* we need to mind the EDID between detect and get modes due to analog/digital/tvencoder */
@@ -514,7 +517,8 @@ extern void radeon_i2c_put_byte(struct radeon_i2c_chan *i2c, u8 val);extern void radeon_router_select_ddc_port (struct radeon_connector *radeon_connector);extern void radeon_router_select_cd_port (struct radeon_connector *radeon_connector); -extern bool radeon_ddc_probe (struct radeon_connector *radeon_connector); +extern bool radeon_ddc_probe (struct radeon_connector *radeon_connector, +bool requires_extended_probe);extern int radeon_ddc_get_modes (struct radeon_connector *radeon_connector);extern struct drm_encoder *radeon_best_encoder (struct drm_connector *connector);
drivers/isdn/i4l/isdn_net.c +3 -0
@@ -2531,6 +2531,9 @@ static void _isdn_setup(struct net_device *dev)/* Setup the generic properties */ dev->flags =IFF_NOARP |IFF_POINTOPOINT ; + +/* isdn prepends a header in the tx path, can't share skbs */ + dev->priv_flags &= ~IFF_TX_SKB_SHARING ; dev->header_ops =NULL ; dev->netdev_ops = &isdn_netdev_ops;
drivers/net/Makefile +1 -0
@@ -283,6 +283,7 @@ obj-$(CONFIG_USB_HSO) += usb/ obj-$(CONFIG_USB_USBNET) += usb/ obj-$(CONFIG_USB_ZD1201) += usb/ obj-$(CONFIG_USB_IPHETH) += usb/ +obj-$(CONFIG_USB_CDC_PHONET) += usb/ obj-$(CONFIG_WLAN) += wireless/ obj-$(CONFIG_NET_TULIP) += tulip/
drivers/net/bonding/bond_main.c +4 -2
@@ -1625,8 +1625,10 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)if (slave_dev->type !=ARPHRD_ETHER )bond_setup_by_slave (bond_dev, slave_dev); -else +else {ether_setup (bond_dev); + bond_dev->priv_flags &= ~IFF_TX_SKB_SHARING ; + }netdev_bonding_change (bond_dev,NETDEV_POST_TYPE_CHANGE );
@@ -4398,7 +4400,7 @@ static void bond_setup(struct net_device *bond_dev) bond_dev->tx_queue_len =0 ; bond_dev->flags |=IFF_MASTER |IFF_MULTICAST ; bond_dev->priv_flags |=IFF_BONDING ; - bond_dev->priv_flags &= ~IFF_XMIT_DST_RELEASE ; + bond_dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE |IFF_TX_SKB_SHARING );/* At first, we block adding VLANs. That's the only way to * prevent problems that occur when adding VLANs over an
drivers/net/bonding/bond_sysfs.c +71 -62
171 lines not on this page · raw message
drivers/net/e1000e/lib.c +2 -1
@@ -190,7 +190,8 @@ s32 e1000_check_alt_mac_addr_generic(struct e1000_hw *hw)/* Check for LOM (vs. NIC) or one of two valid mezzanine cards */ if (!((nvm_data &NVM_COMPAT_LOM ) || (hw->adapter->pdev->device ==E1000_DEV_ID_82571EB_SERDES_DUAL ) || - (hw->adapter->pdev->device ==E1000_DEV_ID_82571EB_SERDES_QUAD ))) + (hw->adapter->pdev->device ==E1000_DEV_ID_82571EB_SERDES_QUAD ) || + (hw->adapter->pdev->device ==E1000_DEV_ID_82571EB_SERDES ))) goto out; ret_val = e1000_read_nvm(hw, NVM_ALT_MAC_ADDR_PTR, 1,
drivers/net/gianfar_ptp.c +2 -7
@@ -193,14 +193,9 @@ static void set_alarm(struct etsects *etsects)/* Caller must hold etsects->lock. */ static void set_fipers (struct etsects *etsects) { -u32 tmr_ctrl =gfar_read (&etsects->regs->tmr_ctrl); - -gfar_write (&etsects->regs->tmr_ctrl, tmr_ctrl & (~TE )); -gfar_write (&etsects->regs->tmr_prsc, etsects->tmr_prsc); +set_alarm (etsects);gfar_write (&etsects->regs->tmr_fiper1, etsects->tmr_fiper1);gfar_write (&etsects->regs->tmr_fiper2, etsects->tmr_fiper2); -set_alarm (etsects); -gfar_write (&etsects->regs->tmr_ctrl, tmr_ctrl|TE ); }/*
@@ -511,7 +506,7 @@ static int gianfar_ptp_probe(struct platform_device *dev)gfar_write (&etsects->regs->tmr_fiper1, etsects->tmr_fiper1);gfar_write (&etsects->regs->tmr_fiper2, etsects->tmr_fiper2);set_alarm (etsects); -gfar_write (&etsects->regs->tmr_ctrl, tmr_ctrl|FS |RTPE |TE ); +gfar_write (&etsects->regs->tmr_ctrl, tmr_ctrl|FS |RTPE |TE |FRD );spin_unlock_irqrestore (&etsects->lock, flags);
drivers/net/ifb.c +1 -1
@@ -145,7 +145,7 @@ static void ifb_setup(struct net_device *dev) dev->flags |=IFF_NOARP ; dev->flags &= ~IFF_MULTICAST ; - dev->priv_flags &= ~IFF_XMIT_DST_RELEASE ; + dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE |IFF_TX_SKB_SHARING );random_ether_addr (dev->dev_addr); }
drivers/net/macvlan.c +1 -1
@@ -547,7 +547,7 @@ void macvlan_common_setup(struct net_device *dev) {ether_setup (dev); - dev->priv_flags &= ~IFF_XMIT_DST_RELEASE ; + dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE |IFF_TX_SKB_SHARING ); dev->netdev_ops = &macvlan_netdev_ops; dev->destructor = free_netdev; dev->header_ops = &macvlan_hard_header_ops,
drivers/net/niu.c +2 -2
@@ -9196,7 +9196,7 @@ static int __devinit niu_ldg_init(struct niu *np) first_chan =0 ;for (i =0 ; i < port; i++) - first_chan += parent->rxchan_per_port[port]; + first_chan += parent->rxchan_per_port[i]; num_chan = parent->rxchan_per_port[port];for (i = first_chan; i < (first_chan + num_chan); i++) {
@@ -9212,7 +9212,7 @@ static int __devinit niu_ldg_init(struct niu *np) first_chan =0 ;for (i =0 ; i < port; i++) - first_chan += parent->txchan_per_port[port]; + first_chan += parent->txchan_per_port[i]; num_chan = parent->txchan_per_port[port];for (i = first_chan; i < (first_chan + num_chan); i++) { err = niu_ldg_assign_ldn(np, parent,
drivers/net/phy/dp83640.c +2 -3
@@ -34,8 +34,7 @@#define PAGESEL 0x13#define LAYER4 0x02#define LAYER2 0x01 -#define MAX_RXTS 4 -#define MAX_TXTS 4 +#define MAX_RXTS 64#define N_EXT_TS 1#define PSF_PTPVER 2#define PSF_EVNT 0x4000
@@ -218,7 +217,7 @@ static void phy2rxts(struct phy_rxts *p, struct rxts *rxts) rxts->seqid = p->seqid; rxts->msgtype = (p->msgtype >>12 ) &0xf ; rxts->hash = p->msgtype &0x0fff ; - rxts->tmo = jiffies +HZ ; + rxts->tmo = jiffies +2 ; }static u64 phy2txts (struct phy_txts *p)
drivers/net/r8169.c +1 -0
@@ -236,6 +236,7 @@ static DEFINE_PCI_DEVICE_TABLE(rtl8169_pci_tbl) = { { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8168), 0, 0, RTL_CFG_1 }, { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8169), 0, 0, RTL_CFG_0 }, { PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4300), 0, 0, RTL_CFG_0 }, + { PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4302), 0, 0, RTL_CFG_0 }, { PCI_DEVICE(PCI_VENDOR_ID_AT, 0xc107), 0, 0, RTL_CFG_0 }, { PCI_DEVICE(0x16ec, 0x0116), 0, 0, RTL_CFG_0 }, { PCI_VENDOR_ID_LINKSYS, 0x1032,
drivers/net/sis190.c +11 -1
@@ -1824,6 +1824,16 @@ static int sis190_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)generic_mii_ioctl (&tp->mii_if,if_mii (ifr), cmd,NULL ); } +static int sis190_mac_addr (struct net_device *dev,void *p) +{ +int rc; + + rc =eth_mac_addr (dev, p); +if (!rc) +sis190_init_rxfilter (dev); +return rc; +} +static const struct net_device_ops sis190_netdev_ops = { .ndo_open = sis190_open, .ndo_stop = sis190_close,
@@ -1832,7 +1842,7 @@ static const struct net_device_ops sis190_netdev_ops = { .ndo_tx_timeout = sis190_tx_timeout, .ndo_set_multicast_list = sis190_set_rx_mode, .ndo_change_mtu = eth_change_mtu, - .ndo_set_mac_address = eth_mac_addr, + .ndo_set_mac_address = sis190_mac_addr, .ndo_validate_addr = eth_validate_addr, #ifdef CONFIG_NET_POLL_CONTROLLER .ndo_poll_controller = sis190_netpoll,
drivers/net/tun.c +1 -0
@@ -528,6 +528,7 @@ static void tun_net_init(struct net_device *dev) dev->netdev_ops = &tap_netdev_ops;/* Ethernet TAP Device */ ether_setup (dev); + dev->priv_flags &= ~IFF_TX_SKB_SHARING ;random_ether_addr (dev->dev_addr);
drivers/net/veth.c +2 -0
@@ -262,6 +262,8 @@ static void veth_setup(struct net_device *dev) {ether_setup (dev); + dev->priv_flags &= ~IFF_TX_SKB_SHARING ; + dev->netdev_ops = &veth_netdev_ops; dev->ethtool_ops = &veth_ethtool_ops; dev->features |=NETIF_F_LLTX ;
drivers/net/wan/hdlc_fr.c +3 -2
@@ -1083,9 +1083,10 @@ static int fr_add_pvc(struct net_device *frad, unsigned int dlci, int type) used =pvc_is_used (pvc); -if (type ==ARPHRD_ETHER ) +if (type ==ARPHRD_ETHER ) { dev =alloc_netdev (0 ,"pvceth%d" , ether_setup); -else + dev->priv_flags &= ~IFF_TX_SKB_SHARING ; + }else dev =alloc_netdev (0 ,"pvc%d" , pvc_setup);if (!dev) {
drivers/net/wireless/airo.c +1 -0
@@ -2823,6 +2823,7 @@ static struct net_device *_init_airo_card( unsigned short irq, int port, dev->wireless_data = &ai->wireless_data; dev->irq = irq; dev->base_addr = port; + dev->priv_flags &= ~IFF_TX_SKB_SHARING ;SET_NETDEV_DEV (dev, dmdev);
drivers/net/wireless/ath/ath9k/ar9002_hw.c +1 -5
@@ -309,11 +309,7 @@ static void ar9002_hw_configpcipowersave(struct ath_hw *ah,u8 i;u32 val; -if (ah->is_pciexpress != true) -return ; - -/* Do not touch SerDes registers */ -if (ah->config.pcie_powersave_enable ==2 ) +if (ah->is_pciexpress != true || ah->aspm_enabled != true)return ;/* Nothing to do on restore for 11N */
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +3 -3
@@ -306,7 +306,7 @@ static const struct ar9300_eeprom ar9300_default = { { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 1) } }, - { { CTL(60, 1), CTL(60, 0), CTL(0, 0), CTL(0, 0) } }, + { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 0) } }, { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } },
@@ -883,7 +883,7 @@ static const struct ar9300_eeprom ar9300_x113 = { { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 1) } }, - { { CTL(60, 1), CTL(60, 0), CTL(0, 0), CTL(0, 0) } }, + { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 0) } }, { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } },
@@ -2039,7 +2039,7 @@ static const struct ar9300_eeprom ar9300_x112 = { { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 1) } }, - { { CTL(60, 1), CTL(60, 0), CTL(0, 0), CTL(0, 0) } }, + { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 0) } }, { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } },
drivers/net/wireless/ath/ath9k/ar9003_hw.c +1 -5
@@ -351,11 +351,7 @@ static void ar9003_hw_configpcipowersave(struct ath_hw *ah, int restore, int power_off) { -if (ah->is_pciexpress != true) -return ; - -/* Do not touch SerDes registers */ -if (ah->config.pcie_powersave_enable ==2 ) +if (ah->is_pciexpress != true || ah->aspm_enabled != true)return ;/* Nothing to do on restore for 11N */
drivers/net/wireless/ath/ath9k/ar9003_phy.h +1 -1
@@ -848,7 +848,7 @@#define AR_PHY_TPC_11_B1 (AR_SM1_BASE + 0x220)#define AR_PHY_PDADC_TAB_1 (AR_SM1_BASE + 0x240)#define AR_PHY_TX_IQCAL_STATUS_B1 (AR_SM1_BASE + 0x48c) -#define AR_PHY_TX_IQCAL_CORR_COEFF_B1 (_i) (AR_SM_BASE + 0x450 + ((_i) << 2)) +#define AR_PHY_TX_IQCAL_CORR_COEFF_B1 (_i) (AR_SM1_BASE + 0x450 + ((_i) << 2))/* * Channel 2 Register Map
drivers/net/wireless/ath/ath9k/hw.c +9 -2
@@ -299,6 +299,14 @@ static void ath9k_hw_disablepcie(struct ath_hw *ah)REG_WRITE (ah,AR_PCIE_SERDES2 ,0x00000000 ); } +static void ath9k_hw_aspm_init (struct ath_hw *ah) +{ +struct ath_common *common =ath9k_hw_common (ah); + +if (common->bus_ops->aspm_init) + common->bus_ops->aspm_init (common); +} +/* This should work for all families including legacy */ static bool ath9k_hw_chip_test (struct ath_hw *ah) {
@@ -359,7 +367,6 @@ static void ath9k_hw_init_config(struct ath_hw *ah) ah->config.additional_swba_backoff =0 ; ah->config.ack_6mb =0x0 ; ah->config.cwm_ignore_extcca =0 ; - ah->config.pcie_powersave_enable =0 ; ah->config.pcie_clock_req =0 ; ah->config.pcie_waen =0 ; ah->config.analog_shiftreg =1 ;
@@ -577,7 +584,7 @@ static int __ath9k_hw_init(struct ath_hw *ah)if (ah->is_pciexpress) -ath9k_hw_configpcipowersave (ah,0 ,0 ); +ath9k_hw_aspm_init (ah);else ath9k_hw_disablepcie (ah);
drivers/net/wireless/ath/ath9k/hw.h +2 -1
@@ -215,7 +215,6 @@ struct ath9k_ops_config {int additional_swba_backoff;int ack_6mb;u32 cwm_ignore_extcca; -u8 pcie_powersave_enable;bool pcieSerDesWrite;u8 pcie_clock_req;u32 pcie_waen;
@@ -671,6 +670,7 @@ struct ath_hw {bool sw_mgmt_crypto;bool is_pciexpress; +bool aspm_enabled;bool is_monitoring;bool need_an_top2_fixup;u16 tx_trig_level;
@@ -870,6 +870,7 @@ struct ath_bus_ops {bool (*eeprom_read)(struct ath_common *common,u32 off,u16 *data);void (*bt_coex_prep)(struct ath_common *common);void (*extn_synch_en)(struct ath_common *common); +void (*aspm_init)(struct ath_common *common); };static inline struct ath_common *ath9k_hw_common (struct ath_hw *ah)
drivers/net/wireless/ath/ath9k/init.c +2 -0
@@ -665,8 +665,10 @@ static void ath9k_init_band_txpower(struct ath_softc *sc, int band)static void ath9k_init_txpower_limits (struct ath_softc *sc) {struct ath_hw *ah = sc->sc_ah; +struct ath_common *common =ath9k_hw_common (sc->sc_ah);
Lines of this file are not shown. View the raw message.
drivers/net/wireless/hostap/hostap_main.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlegacy/iwl-3945.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlegacy/iwl-4965.c +6 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlwifi/iwl-5000.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlwifi/iwl-core.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/iwlwifi/iwl-power.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rt2x00/rt2800lib.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rt2x00/rt2x00mac.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/scsi/mpt2sas/mpt2sas_base.c +25 -40
65 lines not on this page · raw message
drivers/scsi/mpt2sas/mpt2sas_base.h +50 -3
53 lines not on this page · raw message
drivers/scsi/mpt2sas/mpt2sas_transport.c +9 -15
Lines of this file are not shown. View the raw message.
drivers/staging/ath6kl/os/linux/ar6000_drv.c +1 -0
Lines of this file are not shown. View the raw message.
kernel/futex.c +42 -12
54 lines not on this page · raw message
lib/md5.c new file +95 -0
95 lines not on this page · raw message
net/core/secure_seq.c new file +184 -0
184 lines not on this page · raw message
net/ipv4/netfilter/nf_nat_proto_common.c +1 -0
Lines of this file are not shown. View the raw message.
net/socket.c +40 -33
73 lines not on this page · raw message
sound/soc/codecs/sgtl5000.c +35 -93
128 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.
Makefile line 4
Quoted 11 lines
Makefile +1
-1@@ -1,6 +1,6 @@ VERSION = 3 PATCHLEVEL = 0 -SUBLEVEL = 1 +SUBLEVEL = 2 EXTRAVERSION =
Isn't it time we remove that EXTRAVERSION from the stable kernels now that they are using SUBLEVEL ?
Signature · 3 lines
Jesper Juhl <[email protected]> http://www.chaosbits.net/ Don't top-post http://www.catb.org/jargon/html/T/top-post.html Plain text mails only, please.
Quoted 14 lines · Jesper Juhl
Makefile line 4
Quoted 11 lines
Makefile +1
-1@@ -1,6 +1,6 @@ VERSION = 3 PATCHLEVEL = 0 -SUBLEVEL = 1 +SUBLEVEL = 2 EXTRAVERSION =Isn't it time we remove that EXTRAVERSION from the stable kernels now that they are using SUBLEVEL ?
It can be left empty here, it's still used a lot when doing specific builds that need to embed a variant name (make bzImage modules EXTRAVERSION=xxx).
Regards,
Willy
Quoted 16 lines · Willy Tarreau
Quoted 14 lines · Jesper Juhl
Quoted 11 lines
Makefile +0
-0@@ -1,6 +1,6 @@VERSION = 3
PATCHLEVEL = 0Makefile +1
-1-SUBLEVEL = 1 +SUBLEVEL = 2EXTRAVERSION =
Isn't it time we remove that EXTRAVERSION from the stable kernels now that they are using SUBLEVEL ?
Quoted 2 lines
It can be left empty here, it's still used a lot when doing specific builds that need to embed a variant name (make bzImage modules EXTRAVERSION=xxx).
Distros still use it as well. We use it to add in the RPM release number.
josh
Quoted 9 lines · Greg KH
I'm announcing the release of the 3.0.2 kernel.
All users of the 3.0 kernel series must upgrade.
The updated 3.0.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-3.0.y.git and can be browsed at the normal kernel.org git web browser: http://git.kernel.org/?p=linux/kernel/git/stable/linux-3.0.y.git;a=summary
Kernel.org still shows 3.0.1, although the gitweb link points to the correct place repository and I can see 3.0.2 there. Is this some side-effect of switching to the linux-3.0.y.git repository? (the -2.6 stable repo is at 3.0.1).
Best regards,
--Edwin
Quoted 12 lines · Török Edwin
Quoted 9 lines · Greg KH
I'm announcing the release of the 3.0.2 kernel.
All users of the 3.0 kernel series must upgrade.
The updated 3.0.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-3.0.y.git and can be browsed at the normal kernel.org git web browser: http://git.kernel.org/?p=linux/kernel/git/stable/linux-3.0.y.git;a=summary
Quoted 2 lines
Kernel.org still shows 3.0.1, although the gitweb link points to the correct place repository and I can see 3.0.2 there.
There are already a gzip compressed tarball and patches in kernel.org/pub/linux/kernel/v3.0/, but no bzip2 compressed versions.
Quoted 2 lines
Is this some side-effect of switching to the linux-3.0.y.git repository? (the -2.6 stable repo is at 3.0.1).
I doubt that, since 3.0.1 had no such problems. And updated tarballs/patches for 2.6.3[23]-longterm haven't appeared at all yet, although those are in git as well. :-(
Cheers,
Sven
Quoted 5 lines · Török Edwin
Quoted 4 lines · Greg KH
I'm announcing the release of the 3.0.2 kernel.
All users of the 3.0 kernel series must upgrade.
Quoted 8 lines
Quoted 5 lines
The updated 3.0.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-3.0.y.git and can be browsed at the normal kernel.org git web browser: http://git.kernel.org/?p=linux/kernel/git/stable/linux-3.0.y.git;a=summaryKernel.org still shows 3.0.1, although the gitweb link points to the correct place repository and I can see 3.0.2 there. Is this some side-effect of switching to the linux-3.0.y.git repository? (the -2.6 stable repo is at 3.0.1).
No, kernel.org is still having mirroring problems, please just give it some time, it will show up eventually.
greg k-h