aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/SM501.txt66
-rw-r--r--Documentation/volatile-considered-harmful.txt119
-rw-r--r--arch/alpha/lib/csum_ipv6_magic.S51
-rw-r--r--arch/alpha/lib/ev6-csum_ipv6_magic.S42
-rw-r--r--arch/avr32/boards/atngw100/setup.c3
-rw-r--r--arch/avr32/configs/atngw100_defconfig152
-rw-r--r--arch/avr32/configs/atstk1002_defconfig180
-rw-r--r--arch/avr32/mach-at32ap/at32ap7000.c12
-rw-r--r--arch/avr32/mm/cache.c14
-rw-r--r--arch/i386/Kconfig2
-rw-r--r--arch/i386/Kconfig.cpu2
-rw-r--r--arch/i386/kernel/acpi/wakeup.S2
-rw-r--r--arch/x86_64/kernel/entry.S7
-rw-r--r--arch/x86_64/kernel/mce.c6
-rw-r--r--arch/x86_64/kernel/setup64.c3
-rw-r--r--drivers/acpi/processor_idle.c10
-rw-r--r--drivers/acpi/thermal.c15
-rw-r--r--drivers/acpi/utilities/utobject.c2
-rw-r--r--drivers/char/stallion.c7
-rw-r--r--drivers/char/vt.c18
-rw-r--r--drivers/hwmon/coretemp.c1
-rw-r--r--drivers/macintosh/Kconfig2
-rw-r--r--drivers/mfd/sm501.c173
-rw-r--r--fs/ext2/super.c8
-rw-r--r--fs/ext3/inode.c4
-rw-r--r--fs/ext4/inode.c4
-rw-r--r--include/asm-um/bug.h2
-rw-r--r--include/asm-um/common.lds.S2
-rw-r--r--include/asm-um/paravirt.h6
-rw-r--r--include/linux/fs.h27
-rw-r--r--include/linux/slab.h4
-rw-r--r--include/linux/sm501-regs.h8
-rw-r--r--kernel/auditfilter.c2
-rw-r--r--kernel/nsproxy.c10
-rw-r--r--kernel/sched.c22
-rw-r--r--mm/slub.c6
-rwxr-xr-xscripts/checkpatch.pl266
37 files changed, 870 insertions, 390 deletions
diff --git a/Documentation/SM501.txt b/Documentation/SM501.txt
new file mode 100644
index 000000000000..3a1bd95d3767
--- /dev/null
+++ b/Documentation/SM501.txt
@@ -0,0 +1,66 @@
1 SM501 Driver
2 ============
3
4Copyright 2006, 2007 Simtec Electronics
5
6Core
7----
8
9The core driver in drivers/mfd provides common services for the
10drivers which manage the specific hardware blocks. These services
11include locking for common registers, clock control and resource
12management.
13
14The core registers drivers for both PCI and generic bus based
15chips via the platform device and driver system.
16
17On detection of a device, the core initialises the chip (which may
18be specified by the platform data) and then exports the selected
19peripheral set as platform devices for the specific drivers.
20
21The core re-uses the platform device system as the platform device
22system provides enough features to support the drivers without the
23need to create a new bus-type and the associated code to go with it.
24
25
26Resources
27---------
28
29Each peripheral has a view of the device which is implicitly narrowed to
30the specific set of resources that peripheral requires in order to
31function correctly.
32
33The centralised memory allocation allows the driver to ensure that the
34maximum possible resource allocation can be made to the video subsystem
35as this is by-far the most resource-sensitive of the on-chip functions.
36
37The primary issue with memory allocation is that of moving the video
38buffers once a display mode is chosen. Indeed when a video mode change
39occurs the memory footprint of the video subsystem changes.
40
41Since video memory is difficult to move without changing the display
42(unless sufficient contiguous memory can be provided for the old and new
43modes simultaneously) the video driver fully utilises the memory area
44given to it by aligning fb0 to the start of the area and fb1 to the end
45of it. Any memory left over in the middle is used for the acceleration
46functions, which are transient and thus their location is less critical
47as it can be moved.
48
49
50Configuration
51-------------
52
53The platform device driver uses a set of platform data to pass
54configurations through to the core and the subsidiary drivers
55so that there can be support for more than one system carrying
56an SM501 built into a single kernel image.
57
58The PCI driver assumes that the PCI card behaves as per the Silicon
59Motion reference design.
60
61There is an errata (AB-5) affecting the selection of the
62of the M1XCLK and M1CLK frequencies. These two clocks
63must be sourced from the same PLL, although they can then
64be divided down individually. If this is not set, then SM501 may
65lock and hang the whole system. The driver will refuse to
66attach if the PLL selection is different.
diff --git a/Documentation/volatile-considered-harmful.txt b/Documentation/volatile-considered-harmful.txt
new file mode 100644
index 000000000000..10c2e411cca8
--- /dev/null
+++ b/Documentation/volatile-considered-harmful.txt
@@ -0,0 +1,119 @@
1Why the "volatile" type class should not be used
2------------------------------------------------
3
4C programmers have often taken volatile to mean that the variable could be
5changed outside of the current thread of execution; as a result, they are
6sometimes tempted to use it in kernel code when shared data structures are
7being used. In other words, they have been known to treat volatile types
8as a sort of easy atomic variable, which they are not. The use of volatile in
9kernel code is almost never correct; this document describes why.
10
11The key point to understand with regard to volatile is that its purpose is
12to suppress optimization, which is almost never what one really wants to
13do. In the kernel, one must protect shared data structures against
14unwanted concurrent access, which is very much a different task. The
15process of protecting against unwanted concurrency will also avoid almost
16all optimization-related problems in a more efficient way.
17
18Like volatile, the kernel primitives which make concurrent access to data
19safe (spinlocks, mutexes, memory barriers, etc.) are designed to prevent
20unwanted optimization. If they are being used properly, there will be no
21need to use volatile as well. If volatile is still necessary, there is
22almost certainly a bug in the code somewhere. In properly-written kernel
23code, volatile can only serve to slow things down.
24
25Consider a typical block of kernel code:
26
27 spin_lock(&the_lock);
28 do_something_on(&shared_data);
29 do_something_else_with(&shared_data);
30 spin_unlock(&the_lock);
31
32If all the code follows the locking rules, the value of shared_data cannot
33change unexpectedly while the_lock is held. Any other code which might
34want to play with that data will be waiting on the lock. The spinlock
35primitives act as memory barriers - they are explicitly written to do so -
36meaning that data accesses will not be optimized across them. So the
37compiler might think it knows what will be in shared_data, but the
38spin_lock() call, since it acts as a memory barrier, will force it to
39forget anything it knows. There will be no optimization problems with
40accesses to that data.
41
42If shared_data were declared volatile, the locking would still be
43necessary. But the compiler would also be prevented from optimizing access
44to shared_data _within_ the critical section, when we know that nobody else
45can be working with it. While the lock is held, shared_data is not
46volatile. When dealing with shared data, proper locking makes volatile
47unnecessary - and potentially harmful.
48
49The volatile storage class was originally meant for memory-mapped I/O
50registers. Within the kernel, register accesses, too, should be protected
51by locks, but one also does not want the compiler "optimizing" register
52accesses within a critical section. But, within the kernel, I/O memory
53accesses are always done through accessor functions; accessing I/O memory
54directly through pointers is frowned upon and does not work on all
55architectures. Those accessors are written to prevent unwanted
56optimization, so, once again, volatile is unnecessary.
57
58Another situation where one might be tempted to use volatile is
59when the processor is busy-waiting on the value of a variable. The right
60way to perform a busy wait is:
61
62 while (my_variable != what_i_want)
63 cpu_relax();
64
65The cpu_relax() call can lower CPU power consumption or yield to a
66hyperthreaded twin processor; it also happens to serve as a memory barrier,
67so, once again, volatile is unnecessary. Of course, busy-waiting is
68generally an anti-social act to begin with.
69
70There are still a few rare situations where volatile makes sense in the
71kernel:
72
73 - The above-mentioned accessor functions might use volatile on
74 architectures where direct I/O memory access does work. Essentially,
75 each accessor call becomes a little critical section on its own and
76 ensures that the access happens as expected by the programmer.
77
78 - Inline assembly code which changes memory, but which has no other
79 visible side effects, risks being deleted by GCC. Adding the volatile
80 keyword to asm statements will prevent this removal.
81
82 - The jiffies variable is special in that it can have a different value
83 every time it is referenced, but it can be read without any special
84 locking. So jiffies can be volatile, but the addition of other
85 variables of this type is strongly frowned upon. Jiffies is considered
86 to be a "stupid legacy" issue (Linus's words) in this regard; fixing it
87 would be more trouble than it is worth.
88
89 - Pointers to data structures in coherent memory which might be modified
90 by I/O devices can, sometimes, legitimately be volatile. A ring buffer
91 used by a network adapter, where that adapter changes pointers to
92 indicate which descriptors have been processed, is an example of this
93 type of situation.
94
95For most code, none of the above justifications for volatile apply. As a
96result, the use of volatile is likely to be seen as a bug and will bring
97additional scrutiny to the code. Developers who are tempted to use
98volatile should take a step back and think about what they are truly trying
99to accomplish.
100
101Patches to remove volatile variables are generally welcome - as long as
102they come with a justification which shows that the concurrency issues have
103been properly thought through.
104
105
106NOTES
107-----
108
109[1] http://lwn.net/Articles/233481/
110[2] http://lwn.net/Articles/233482/
111
112CREDITS
113-------
114
115Original impetus and research by Randy Dunlap
116Written by Jonathan Corbet
117Improvements via coments from Satyam Sharma, Johannes Stezenbach, Jesper
118 Juhl, Heikki Orsila, H. Peter Anvin, Philipp Hahn, and Stefan
119 Richter.
diff --git a/arch/alpha/lib/csum_ipv6_magic.S b/arch/alpha/lib/csum_ipv6_magic.S
index e09748dbf2ed..2c2acb96deb6 100644
--- a/arch/alpha/lib/csum_ipv6_magic.S
+++ b/arch/alpha/lib/csum_ipv6_magic.S
@@ -7,6 +7,9 @@
7 * __u32 len, 7 * __u32 len,
8 * unsigned short proto, 8 * unsigned short proto,
9 * unsigned int csum); 9 * unsigned int csum);
10 *
11 * Misalignment handling (which costs 16 instructions / 8 cycles)
12 * added by Ivan Kokshaysky <ink@jurassic.park.msu.ru>
10 */ 13 */
11 14
12 .globl csum_ipv6_magic 15 .globl csum_ipv6_magic
@@ -16,37 +19,57 @@
16csum_ipv6_magic: 19csum_ipv6_magic:
17 .prologue 0 20 .prologue 0
18 21
19 ldq $0,0($16) # e0 : load src & dst addr words 22 ldq_u $0,0($16) # e0 : load src & dst addr words
20 zapnot $20,15,$20 # .. e1 : zero extend incoming csum 23 zapnot $20,15,$20 # .. e1 : zero extend incoming csum
21 extqh $18,1,$4 # e0 : byte swap len & proto while we wait 24 extqh $18,1,$4 # e0 : byte swap len & proto while we wait
22 ldq $1,8($16) # .. e1 : 25 ldq_u $21,7($16) # .. e1 : handle misalignment
23 26
24 extbl $18,1,$5 # e0 : 27 extbl $18,1,$5 # e0 :
25 ldq $2,0($17) # .. e1 : 28 ldq_u $1,8($16) # .. e1 :
26 extbl $18,2,$6 # e0 : 29 extbl $18,2,$6 # e0 :
27 ldq $3,8($17) # .. e1 : 30 ldq_u $22,15($16) # .. e1 :
28 31
29 extbl $18,3,$18 # e0 : 32 extbl $18,3,$18 # e0 :
33 ldq_u $2,0($17) # .. e1 :
30 sra $4,32,$4 # e0 : 34 sra $4,32,$4 # e0 :
35 ldq_u $23,7($17) # .. e1 :
36
37 extql $0,$16,$0 # e0 :
38 ldq_u $3,8($17) # .. e1 :
39 extqh $21,$16,$21 # e0 :
40 ldq_u $24,15($17) # .. e1 :
41
31 sll $5,16,$5 # e0 : 42 sll $5,16,$5 # e0 :
43 or $0,$21,$0 # .. e1 : 1st src word complete
44 extql $1,$16,$1 # e0 :
32 addq $20,$0,$20 # .. e1 : begin summing the words 45 addq $20,$0,$20 # .. e1 : begin summing the words
33 46
34 sll $6,8,$6 # e0 : 47 extqh $22,$16,$22 # e0 :
35 cmpult $20,$0,$0 # .. e1 : 48 cmpult $20,$0,$0 # .. e1 :
36 extwh $19,7,$7 # e0 : 49 sll $6,8,$6 # e0 :
37 or $4,$18,$18 # .. e1 : 50 or $1,$22,$1 # .. e1 : 2nd src word complete
38 51
39 extbl $19,1,$19 # e0 : 52 extql $2,$17,$2 # e0 :
53 or $4,$18,$18 # .. e1 :
54 extqh $23,$17,$23 # e0 :
40 or $5,$6,$5 # .. e1 : 55 or $5,$6,$5 # .. e1 :
41 or $18,$5,$18 # e0 : len complete
42 or $19,$7,$19 # .. e1 :
43 56
44 sll $19,48,$19 # e0 : 57 extql $3,$17,$3 # e0 :
58 or $2,$23,$2 # .. e1 : 1st dst word complete
59 extqh $24,$17,$24 # e0 :
60 or $18,$5,$18 # .. e1 : len complete
61
62 extwh $19,7,$7 # e0 :
63 or $3,$24,$3 # .. e1 : 2nd dst word complete
64 extbl $19,1,$19 # e0 :
45 addq $20,$1,$20 # .. e1 : 65 addq $20,$1,$20 # .. e1 :
46 sra $19,32,$19 # e0 : proto complete 66
67 or $19,$7,$19 # e0 :
47 cmpult $20,$1,$1 # .. e1 : 68 cmpult $20,$1,$1 # .. e1 :
69 sll $19,48,$19 # e0 :
70 nop # .. e0 :
48 71
49 nop # e0 : 72 sra $19,32,$19 # e0 : proto complete
50 addq $20,$2,$20 # .. e1 : 73 addq $20,$2,$20 # .. e1 :
51 cmpult $20,$2,$2 # e0 : 74 cmpult $20,$2,$2 # e0 :
52 addq $20,$3,$20 # .. e1 : 75 addq $20,$3,$20 # .. e1 :
@@ -84,7 +107,7 @@ csum_ipv6_magic:
84 extwl $0,2,$1 # e0 : fold 17-bit value 107 extwl $0,2,$1 # e0 : fold 17-bit value
85 zapnot $0,3,$0 # .. e1 : 108 zapnot $0,3,$0 # .. e1 :
86 addq $0,$1,$0 # e0 : 109 addq $0,$1,$0 # e0 :
87 not $0,$0 # e1 : and complement. 110 not $0,$0 # .. e1 : and complement.
88 111
89 zapnot $0,3,$0 # e0 : 112 zapnot $0,3,$0 # e0 :
90 ret # .. e1 : 113 ret # .. e1 :
diff --git a/arch/alpha/lib/ev6-csum_ipv6_magic.S b/arch/alpha/lib/ev6-csum_ipv6_magic.S
index de1948a69118..fc0bc399f872 100644
--- a/arch/alpha/lib/ev6-csum_ipv6_magic.S
+++ b/arch/alpha/lib/ev6-csum_ipv6_magic.S
@@ -46,6 +46,10 @@
46 * add the 3 low ushorts together, generating a uint 46 * add the 3 low ushorts together, generating a uint
47 * a final add of the 2 lower ushorts 47 * a final add of the 2 lower ushorts
48 * truncating the result. 48 * truncating the result.
49 *
50 * Misalignment handling added by Ivan Kokshaysky <ink@jurassic.park.msu.ru>
51 * The cost is 16 instructions (~8 cycles), including two extra loads which
52 * may cause additional delay in rare cases (load-load replay traps).
49 */ 53 */
50 54
51 .globl csum_ipv6_magic 55 .globl csum_ipv6_magic
@@ -55,25 +59,45 @@
55csum_ipv6_magic: 59csum_ipv6_magic:
56 .prologue 0 60 .prologue 0
57 61
58 ldq $0,0($16) # L : Latency: 3 62 ldq_u $0,0($16) # L : Latency: 3
59 inslh $18,7,$4 # U : 0000000000AABBCC 63 inslh $18,7,$4 # U : 0000000000AABBCC
60 ldq $1,8($16) # L : Latency: 3 64 ldq_u $1,8($16) # L : Latency: 3
61 sll $19,8,$7 # U : U L U L : 0x00000000 00aabb00 65 sll $19,8,$7 # U : U L U L : 0x00000000 00aabb00
62 66
67 and $16,7,$6 # E : src misalignment
68 ldq_u $5,15($16) # L : Latency: 3
63 zapnot $20,15,$20 # U : zero extend incoming csum 69 zapnot $20,15,$20 # U : zero extend incoming csum
64 ldq $2,0($17) # L : Latency: 3 70 ldq_u $2,0($17) # L : U L U L : Latency: 3
65 sll $19,24,$19 # U : U L L U : 0x000000aa bb000000 71
72 extql $0,$6,$0 # U :
73 extqh $1,$6,$22 # U :
74 ldq_u $3,8($17) # L : Latency: 3
75 sll $19,24,$19 # U : U U L U : 0x000000aa bb000000
76
77 cmoveq $6,$31,$22 # E : src aligned?
78 ldq_u $23,15($17) # L : Latency: 3
66 inswl $18,3,$18 # U : 000000CCDD000000 79 inswl $18,3,$18 # U : 000000CCDD000000
80 addl $19,$7,$19 # E : U L U L : <sign bits>bbaabb00
67 81
68 ldq $3,8($17) # L : Latency: 3 82 or $0,$22,$0 # E : 1st src word complete
69 bis $18,$4,$18 # E : 000000CCDDAABBCC 83 extql $1,$6,$1 # U :
70 addl $19,$7,$19 # E : <sign bits>bbaabb00 84 or $18,$4,$18 # E : 000000CCDDAABBCC
71 nop # E : U L U L 85 extqh $5,$6,$5 # U : L U L U
72 86
87 and $17,7,$6 # E : dst misalignment
88 extql $2,$6,$2 # U :
89 or $1,$5,$1 # E : 2nd src word complete
90 extqh $3,$6,$22 # U : L U L U :
91
92 cmoveq $6,$31,$22 # E : dst aligned?
93 extql $3,$6,$3 # U :
73 addq $20,$0,$20 # E : begin summing the words 94 addq $20,$0,$20 # E : begin summing the words
95 extqh $23,$6,$23 # U : L U L U :
96
74 srl $18,16,$4 # U : 0000000000CCDDAA 97 srl $18,16,$4 # U : 0000000000CCDDAA
98 or $2,$22,$2 # E : 1st dst word complete
75 zap $19,0x3,$19 # U : <sign bits>bbaa0000 99 zap $19,0x3,$19 # U : <sign bits>bbaa0000
76 nop # E : L U U L 100 or $3,$23,$3 # E : U L U L : 2nd dst word complete
77 101
78 cmpult $20,$0,$0 # E : 102 cmpult $20,$0,$0 # E :
79 addq $20,$1,$20 # E : 103 addq $20,$1,$20 # E :
diff --git a/arch/avr32/boards/atngw100/setup.c b/arch/avr32/boards/atngw100/setup.c
index 9bc37d4f6687..6c4dc0a00e9f 100644
--- a/arch/avr32/boards/atngw100/setup.c
+++ b/arch/avr32/boards/atngw100/setup.c
@@ -94,9 +94,6 @@ static void __init set_hw_addr(struct platform_device *pdev)
94 clk_put(pclk); 94 clk_put(pclk);
95} 95}
96 96
97struct platform_device *at32_usart_map[1];
98unsigned int at32_nr_usarts = 1;
99
100void __init setup_board(void) 97void __init setup_board(void)
101{ 98{
102 at32_map_usart(1, 0); /* USART 1: /dev/ttyS0, DB9 */ 99 at32_map_usart(1, 0); /* USART 1: /dev/ttyS0, DB9 */
diff --git a/arch/avr32/configs/atngw100_defconfig b/arch/avr32/configs/atngw100_defconfig
index c254ffcfa458..49493ad3b5a9 100644
--- a/arch/avr32/configs/atngw100_defconfig
+++ b/arch/avr32/configs/atngw100_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21-rc6 3# Linux kernel version: 2.6.22-rc5
4# Thu Apr 12 16:35:07 2007 4# Sat Jun 23 15:40:05 2007
5# 5#
6CONFIG_AVR32=y 6CONFIG_AVR32=y
7CONFIG_GENERIC_GPIO=y 7CONFIG_GENERIC_GPIO=y
@@ -40,6 +40,7 @@ CONFIG_BSD_PROCESS_ACCT_V3=y
40# CONFIG_UTS_NS is not set 40# CONFIG_UTS_NS is not set
41# CONFIG_AUDIT is not set 41# CONFIG_AUDIT is not set
42# CONFIG_IKCONFIG is not set 42# CONFIG_IKCONFIG is not set
43CONFIG_LOG_BUF_SHIFT=14
43CONFIG_SYSFS_DEPRECATED=y 44CONFIG_SYSFS_DEPRECATED=y
44# CONFIG_RELAY is not set 45# CONFIG_RELAY is not set
45CONFIG_BLK_DEV_INITRD=y 46CONFIG_BLK_DEV_INITRD=y
@@ -57,14 +58,20 @@ CONFIG_BUG=y
57CONFIG_ELF_CORE=y 58CONFIG_ELF_CORE=y
58# CONFIG_BASE_FULL is not set 59# CONFIG_BASE_FULL is not set
59CONFIG_FUTEX=y 60CONFIG_FUTEX=y
61CONFIG_ANON_INODES=y
60CONFIG_EPOLL=y 62CONFIG_EPOLL=y
63CONFIG_SIGNALFD=y
64CONFIG_TIMERFD=y
65CONFIG_EVENTFD=y
61CONFIG_SHMEM=y 66CONFIG_SHMEM=y
62CONFIG_SLAB=y
63CONFIG_VM_EVENT_COUNTERS=y 67CONFIG_VM_EVENT_COUNTERS=y
68# CONFIG_SLUB_DEBUG is not set
69# CONFIG_SLAB is not set
70CONFIG_SLUB=y
71# CONFIG_SLOB is not set
64CONFIG_RT_MUTEXES=y 72CONFIG_RT_MUTEXES=y
65# CONFIG_TINY_SHMEM is not set 73# CONFIG_TINY_SHMEM is not set
66CONFIG_BASE_SMALL=1 74CONFIG_BASE_SMALL=1
67# CONFIG_SLOB is not set
68 75
69# 76#
70# Loadable module support 77# Loadable module support
@@ -148,6 +155,7 @@ CONFIG_CMDLINE=""
148# 155#
149# Bus options 156# Bus options
150# 157#
158# CONFIG_ARCH_SUPPORTS_MSI is not set
151 159
152# 160#
153# PCCARD (PCMCIA/CardBus) support 161# PCCARD (PCMCIA/CardBus) support
@@ -168,7 +176,6 @@ CONFIG_NET=y
168# 176#
169# Networking options 177# Networking options
170# 178#
171# CONFIG_NETDEBUG is not set
172CONFIG_PACKET=y 179CONFIG_PACKET=y
173CONFIG_PACKET_MMAP=y 180CONFIG_PACKET_MMAP=y
174CONFIG_UNIX=y 181CONFIG_UNIX=y
@@ -212,14 +219,11 @@ CONFIG_INET_TCP_DIAG=y
212CONFIG_TCP_CONG_CUBIC=y 219CONFIG_TCP_CONG_CUBIC=y
213CONFIG_DEFAULT_TCP_CONG="cubic" 220CONFIG_DEFAULT_TCP_CONG="cubic"
214# CONFIG_TCP_MD5SIG is not set 221# CONFIG_TCP_MD5SIG is not set
215
216#
217# IP: Virtual Server Configuration
218#
219# CONFIG_IP_VS is not set 222# CONFIG_IP_VS is not set
220CONFIG_IPV6=y 223CONFIG_IPV6=y
221# CONFIG_IPV6_PRIVACY is not set 224# CONFIG_IPV6_PRIVACY is not set
222# CONFIG_IPV6_ROUTER_PREF is not set 225# CONFIG_IPV6_ROUTER_PREF is not set
226# CONFIG_IPV6_OPTIMISTIC_DAD is not set
223CONFIG_INET6_AH=y 227CONFIG_INET6_AH=y
224CONFIG_INET6_ESP=y 228CONFIG_INET6_ESP=y
225CONFIG_INET6_IPCOMP=y 229CONFIG_INET6_IPCOMP=y
@@ -242,8 +246,6 @@ CONFIG_NETFILTER=y
242# 246#
243# CONFIG_NETFILTER_NETLINK is not set 247# CONFIG_NETFILTER_NETLINK is not set
244CONFIG_NF_CONNTRACK_ENABLED=m 248CONFIG_NF_CONNTRACK_ENABLED=m
245CONFIG_NF_CONNTRACK_SUPPORT=y
246# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
247CONFIG_NF_CONNTRACK=m 249CONFIG_NF_CONNTRACK=m
248CONFIG_NF_CT_ACCT=y 250CONFIG_NF_CT_ACCT=y
249CONFIG_NF_CONNTRACK_MARK=y 251CONFIG_NF_CONNTRACK_MARK=y
@@ -357,20 +359,8 @@ CONFIG_IP6_NF_TARGET_REJECT=m
357CONFIG_IP6_NF_MANGLE=m 359CONFIG_IP6_NF_MANGLE=m
358CONFIG_IP6_NF_TARGET_HL=m 360CONFIG_IP6_NF_TARGET_HL=m
359CONFIG_IP6_NF_RAW=m 361CONFIG_IP6_NF_RAW=m
360
361#
362# DCCP Configuration (EXPERIMENTAL)
363#
364# CONFIG_IP_DCCP is not set 362# CONFIG_IP_DCCP is not set
365
366#
367# SCTP Configuration (EXPERIMENTAL)
368#
369# CONFIG_IP_SCTP is not set 363# CONFIG_IP_SCTP is not set
370
371#
372# TIPC Configuration (EXPERIMENTAL)
373#
374# CONFIG_TIPC is not set 364# CONFIG_TIPC is not set
375# CONFIG_ATM is not set 365# CONFIG_ATM is not set
376# CONFIG_BRIDGE is not set 366# CONFIG_BRIDGE is not set
@@ -397,7 +387,16 @@ CONFIG_NET_CLS_ROUTE=y
397# CONFIG_HAMRADIO is not set 387# CONFIG_HAMRADIO is not set
398# CONFIG_IRDA is not set 388# CONFIG_IRDA is not set
399# CONFIG_BT is not set 389# CONFIG_BT is not set
390# CONFIG_AF_RXRPC is not set
391
392#
393# Wireless
394#
395# CONFIG_CFG80211 is not set
396# CONFIG_WIRELESS_EXT is not set
397# CONFIG_MAC80211 is not set
400# CONFIG_IEEE80211 is not set 398# CONFIG_IEEE80211 is not set
399# CONFIG_RFKILL is not set
401 400
402# 401#
403# Device Drivers 402# Device Drivers
@@ -417,10 +416,6 @@ CONFIG_STANDALONE=y
417# Connector - unified userspace <-> kernelspace linker 416# Connector - unified userspace <-> kernelspace linker
418# 417#
419# CONFIG_CONNECTOR is not set 418# CONFIG_CONNECTOR is not set
420
421#
422# Memory Technology Devices (MTD)
423#
424CONFIG_MTD=y 419CONFIG_MTD=y
425# CONFIG_MTD_DEBUG is not set 420# CONFIG_MTD_DEBUG is not set
426# CONFIG_MTD_CONCAT is not set 421# CONFIG_MTD_CONCAT is not set
@@ -464,7 +459,6 @@ CONFIG_MTD_CFI_UTIL=y
464# CONFIG_MTD_RAM is not set 459# CONFIG_MTD_RAM is not set
465# CONFIG_MTD_ROM is not set 460# CONFIG_MTD_ROM is not set
466# CONFIG_MTD_ABSENT is not set 461# CONFIG_MTD_ABSENT is not set
467# CONFIG_MTD_OBSOLETE_CHIPS is not set
468 462
469# 463#
470# Mapping drivers for chip access 464# Mapping drivers for chip access
@@ -492,16 +486,13 @@ CONFIG_MTD_DATAFLASH=y
492# CONFIG_MTD_DOC2000 is not set 486# CONFIG_MTD_DOC2000 is not set
493# CONFIG_MTD_DOC2001 is not set 487# CONFIG_MTD_DOC2001 is not set
494# CONFIG_MTD_DOC2001PLUS is not set 488# CONFIG_MTD_DOC2001PLUS is not set
495
496#
497# NAND Flash Device Drivers
498#
499# CONFIG_MTD_NAND is not set 489# CONFIG_MTD_NAND is not set
490# CONFIG_MTD_ONENAND is not set
500 491
501# 492#
502# OneNAND Flash Device Drivers 493# UBI - Unsorted block images
503# 494#
504# CONFIG_MTD_ONENAND is not set 495# CONFIG_MTD_UBI is not set
505 496
506# 497#
507# Parallel port support 498# Parallel port support
@@ -530,10 +521,7 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
530# 521#
531# Misc devices 522# Misc devices
532# 523#
533 524# CONFIG_BLINK is not set
534#
535# ATA/ATAPI/MFM/RLL support
536#
537# CONFIG_IDE is not set 525# CONFIG_IDE is not set
538 526
539# 527#
@@ -542,10 +530,6 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
542# CONFIG_RAID_ATTRS is not set 530# CONFIG_RAID_ATTRS is not set
543# CONFIG_SCSI is not set 531# CONFIG_SCSI is not set
544# CONFIG_SCSI_NETLINK is not set 532# CONFIG_SCSI_NETLINK is not set
545
546#
547# Serial ATA (prod) and Parallel ATA (experimental) drivers
548#
549# CONFIG_ATA is not set 533# CONFIG_ATA is not set
550 534
551# 535#
@@ -554,19 +538,6 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
554# CONFIG_MD is not set 538# CONFIG_MD is not set
555 539
556# 540#
557# Fusion MPT device support
558#
559# CONFIG_FUSION is not set
560
561#
562# IEEE 1394 (FireWire) support
563#
564
565#
566# I2O device support
567#
568
569#
570# Network device support 541# Network device support
571# 542#
572CONFIG_NETDEVICES=y 543CONFIG_NETDEVICES=y
@@ -574,10 +545,6 @@ CONFIG_NETDEVICES=y
574# CONFIG_BONDING is not set 545# CONFIG_BONDING is not set
575# CONFIG_EQUALIZER is not set 546# CONFIG_EQUALIZER is not set
576CONFIG_TUN=m 547CONFIG_TUN=m
577
578#
579# PHY device support
580#
581# CONFIG_PHYLIB is not set 548# CONFIG_PHYLIB is not set
582 549
583# 550#
@@ -586,27 +553,14 @@ CONFIG_TUN=m
586CONFIG_NET_ETHERNET=y 553CONFIG_NET_ETHERNET=y
587CONFIG_MII=y 554CONFIG_MII=y
588CONFIG_MACB=y 555CONFIG_MACB=y
556# CONFIG_NETDEV_1000 is not set
557# CONFIG_NETDEV_10000 is not set
589 558
590# 559#
591# Ethernet (1000 Mbit) 560# Wireless LAN
592#
593
594#
595# Ethernet (10000 Mbit)
596#
597
598#
599# Token Ring devices
600#
601
602#
603# Wireless LAN (non-hamradio)
604#
605# CONFIG_NET_RADIO is not set
606
607#
608# Wan interfaces
609# 561#
562# CONFIG_WLAN_PRE80211 is not set
563# CONFIG_WLAN_80211 is not set
610# CONFIG_WAN is not set 564# CONFIG_WAN is not set
611CONFIG_PPP=m 565CONFIG_PPP=m
612# CONFIG_PPP_MULTILINK is not set 566# CONFIG_PPP_MULTILINK is not set
@@ -671,15 +625,10 @@ CONFIG_UNIX98_PTYS=y
671# IPMI 625# IPMI
672# 626#
673# CONFIG_IPMI_HANDLER is not set 627# CONFIG_IPMI_HANDLER is not set
674
675#
676# Watchdog Cards
677#
678# CONFIG_WATCHDOG is not set 628# CONFIG_WATCHDOG is not set
679# CONFIG_HW_RANDOM is not set 629# CONFIG_HW_RANDOM is not set
680# CONFIG_RTC is not set 630# CONFIG_RTC is not set
681# CONFIG_GEN_RTC is not set 631# CONFIG_GEN_RTC is not set
682# CONFIG_DTLK is not set
683# CONFIG_R3964 is not set 632# CONFIG_R3964 is not set
684# CONFIG_RAW_DRIVER is not set 633# CONFIG_RAW_DRIVER is not set
685 634
@@ -687,10 +636,6 @@ CONFIG_UNIX98_PTYS=y
687# TPM devices 636# TPM devices
688# 637#
689# CONFIG_TCG_TPM is not set 638# CONFIG_TCG_TPM is not set
690
691#
692# I2C support
693#
694# CONFIG_I2C is not set 639# CONFIG_I2C is not set
695 640
696# 641#
@@ -710,17 +655,13 @@ CONFIG_SPI_ATMEL=y
710# SPI Protocol Masters 655# SPI Protocol Masters
711# 656#
712# CONFIG_SPI_AT25 is not set 657# CONFIG_SPI_AT25 is not set
658# CONFIG_SPI_SPIDEV is not set
713 659
714# 660#
715# Dallas's 1-wire bus 661# Dallas's 1-wire bus
716# 662#
717# CONFIG_W1 is not set 663# CONFIG_W1 is not set
718
719#
720# Hardware Monitoring support
721#
722# CONFIG_HWMON is not set 664# CONFIG_HWMON is not set
723# CONFIG_HWMON_VID is not set
724 665
725# 666#
726# Multifunction device drivers 667# Multifunction device drivers
@@ -731,16 +672,19 @@ CONFIG_SPI_ATMEL=y
731# Multimedia devices 672# Multimedia devices
732# 673#
733# CONFIG_VIDEO_DEV is not set 674# CONFIG_VIDEO_DEV is not set
675# CONFIG_DVB_CORE is not set
676# CONFIG_DAB is not set
734 677
735# 678#
736# Digital Video Broadcasting Devices 679# Graphics support
737# 680#
738# CONFIG_DVB is not set 681# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
739 682
740# 683#
741# Graphics support 684# Display device support
742# 685#
743# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 686# CONFIG_DISPLAY_SUPPORT is not set
687# CONFIG_VGASTATE is not set
744# CONFIG_FB is not set 688# CONFIG_FB is not set
745 689
746# 690#
@@ -763,10 +707,6 @@ CONFIG_SPI_ATMEL=y
763# USB Gadget Support 707# USB Gadget Support
764# 708#
765# CONFIG_USB_GADGET is not set 709# CONFIG_USB_GADGET is not set
766
767#
768# MMC/SD Card support
769#
770# CONFIG_MMC is not set 710# CONFIG_MMC is not set
771 711
772# 712#
@@ -809,14 +749,6 @@ CONFIG_SPI_ATMEL=y
809# 749#
810 750
811# 751#
812# Auxiliary Display support
813#
814
815#
816# Virtualization
817#
818
819#
820# File systems 752# File systems
821# 753#
822CONFIG_EXT2_FS=y 754CONFIG_EXT2_FS=y
@@ -911,6 +843,7 @@ CONFIG_LOCKD=y
911CONFIG_LOCKD_V4=y 843CONFIG_LOCKD_V4=y
912CONFIG_NFS_COMMON=y 844CONFIG_NFS_COMMON=y
913CONFIG_SUNRPC=y 845CONFIG_SUNRPC=y
846# CONFIG_SUNRPC_BIND34 is not set
914# CONFIG_RPCSEC_GSS_KRB5 is not set 847# CONFIG_RPCSEC_GSS_KRB5 is not set
915# CONFIG_RPCSEC_GSS_SPKM3 is not set 848# CONFIG_RPCSEC_GSS_SPKM3 is not set
916CONFIG_SMB_FS=m 849CONFIG_SMB_FS=m
@@ -993,11 +926,9 @@ CONFIG_MAGIC_SYSRQ=y
993# CONFIG_HEADERS_CHECK is not set 926# CONFIG_HEADERS_CHECK is not set
994CONFIG_DEBUG_KERNEL=y 927CONFIG_DEBUG_KERNEL=y
995# CONFIG_DEBUG_SHIRQ is not set 928# CONFIG_DEBUG_SHIRQ is not set
996CONFIG_LOG_BUF_SHIFT=14
997CONFIG_DETECT_SOFTLOCKUP=y 929CONFIG_DETECT_SOFTLOCKUP=y
998# CONFIG_SCHEDSTATS is not set 930# CONFIG_SCHEDSTATS is not set
999# CONFIG_TIMER_STATS is not set 931# CONFIG_TIMER_STATS is not set
1000# CONFIG_DEBUG_SLAB is not set
1001# CONFIG_DEBUG_RT_MUTEXES is not set 932# CONFIG_DEBUG_RT_MUTEXES is not set
1002# CONFIG_RT_MUTEX_TESTER is not set 933# CONFIG_RT_MUTEX_TESTER is not set
1003# CONFIG_DEBUG_SPINLOCK is not set 934# CONFIG_DEBUG_SPINLOCK is not set
@@ -1044,6 +975,7 @@ CONFIG_CRYPTO_ECB=m
1044CONFIG_CRYPTO_CBC=y 975CONFIG_CRYPTO_CBC=y
1045CONFIG_CRYPTO_PCBC=m 976CONFIG_CRYPTO_PCBC=m
1046# CONFIG_CRYPTO_LRW is not set 977# CONFIG_CRYPTO_LRW is not set
978# CONFIG_CRYPTO_CRYPTD is not set
1047CONFIG_CRYPTO_DES=y 979CONFIG_CRYPTO_DES=y
1048# CONFIG_CRYPTO_FCRYPT is not set 980# CONFIG_CRYPTO_FCRYPT is not set
1049# CONFIG_CRYPTO_BLOWFISH is not set 981# CONFIG_CRYPTO_BLOWFISH is not set
@@ -1072,6 +1004,7 @@ CONFIG_CRYPTO_DEFLATE=y
1072CONFIG_BITREVERSE=y 1004CONFIG_BITREVERSE=y
1073CONFIG_CRC_CCITT=m 1005CONFIG_CRC_CCITT=m
1074# CONFIG_CRC16 is not set 1006# CONFIG_CRC16 is not set
1007# CONFIG_CRC_ITU_T is not set
1075CONFIG_CRC32=y 1008CONFIG_CRC32=y
1076# CONFIG_LIBCRC32C is not set 1009# CONFIG_LIBCRC32C is not set
1077CONFIG_ZLIB_INFLATE=y 1010CONFIG_ZLIB_INFLATE=y
@@ -1083,3 +1016,4 @@ CONFIG_TEXTSEARCH_FSM=m
1083CONFIG_PLIST=y 1016CONFIG_PLIST=y
1084CONFIG_HAS_IOMEM=y 1017CONFIG_HAS_IOMEM=y
1085CONFIG_HAS_IOPORT=y 1018CONFIG_HAS_IOPORT=y
1019CONFIG_HAS_DMA=y
diff --git a/arch/avr32/configs/atstk1002_defconfig b/arch/avr32/configs/atstk1002_defconfig
index 77dace9d54bc..3b977fdbaa78 100644
--- a/arch/avr32/configs/atstk1002_defconfig
+++ b/arch/avr32/configs/atstk1002_defconfig
@@ -1,9 +1,10 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.20-rc6 3# Linux kernel version: 2.6.22-rc5
4# Fri Jan 26 13:12:59 2007 4# Sat Jun 23 15:32:08 2007
5# 5#
6CONFIG_AVR32=y 6CONFIG_AVR32=y
7CONFIG_GENERIC_GPIO=y
7CONFIG_GENERIC_HARDIRQS=y 8CONFIG_GENERIC_HARDIRQS=y
8CONFIG_HARDIRQS_SW_RESEND=y 9CONFIG_HARDIRQS_SW_RESEND=y
9CONFIG_GENERIC_IRQ_PROBE=y 10CONFIG_GENERIC_IRQ_PROBE=y
@@ -13,6 +14,7 @@ CONFIG_GENERIC_TIME=y
13# CONFIG_ARCH_HAS_ILOG2_U64 is not set 14# CONFIG_ARCH_HAS_ILOG2_U64 is not set
14CONFIG_GENERIC_HWEIGHT=y 15CONFIG_GENERIC_HWEIGHT=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y 16CONFIG_GENERIC_CALIBRATE_DELAY=y
17CONFIG_GENERIC_BUG=y
16CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
17 19
18# 20#
@@ -30,19 +32,22 @@ CONFIG_LOCALVERSION=""
30CONFIG_SWAP=y 32CONFIG_SWAP=y
31CONFIG_SYSVIPC=y 33CONFIG_SYSVIPC=y
32# CONFIG_IPC_NS is not set 34# CONFIG_IPC_NS is not set
35CONFIG_SYSVIPC_SYSCTL=y
33CONFIG_POSIX_MQUEUE=y 36CONFIG_POSIX_MQUEUE=y
34CONFIG_BSD_PROCESS_ACCT=y 37CONFIG_BSD_PROCESS_ACCT=y
35CONFIG_BSD_PROCESS_ACCT_V3=y 38CONFIG_BSD_PROCESS_ACCT_V3=y
36CONFIG_TASKSTATS=y 39CONFIG_TASKSTATS=y
37CONFIG_TASK_DELAY_ACCT=y 40CONFIG_TASK_DELAY_ACCT=y
41# CONFIG_TASK_XACCT is not set
38# CONFIG_UTS_NS is not set 42# CONFIG_UTS_NS is not set
39CONFIG_AUDIT=y 43CONFIG_AUDIT=y
40# CONFIG_IKCONFIG is not set 44# CONFIG_IKCONFIG is not set
45CONFIG_LOG_BUF_SHIFT=14
41CONFIG_SYSFS_DEPRECATED=y 46CONFIG_SYSFS_DEPRECATED=y
42CONFIG_RELAY=y 47CONFIG_RELAY=y
48CONFIG_BLK_DEV_INITRD=y
43CONFIG_INITRAMFS_SOURCE="" 49CONFIG_INITRAMFS_SOURCE=""
44CONFIG_CC_OPTIMIZE_FOR_SIZE=y 50CONFIG_CC_OPTIMIZE_FOR_SIZE=y
45# CONFIG_TASK_XACCT is not set
46CONFIG_SYSCTL=y 51CONFIG_SYSCTL=y
47CONFIG_EMBEDDED=y 52CONFIG_EMBEDDED=y
48# CONFIG_SYSCTL_SYSCALL is not set 53# CONFIG_SYSCTL_SYSCALL is not set
@@ -55,14 +60,20 @@ CONFIG_BUG=y
55CONFIG_ELF_CORE=y 60CONFIG_ELF_CORE=y
56# CONFIG_BASE_FULL is not set 61# CONFIG_BASE_FULL is not set
57CONFIG_FUTEX=y 62CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
58CONFIG_EPOLL=y 64CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y
67CONFIG_EVENTFD=y
59CONFIG_SHMEM=y 68CONFIG_SHMEM=y
60CONFIG_SLAB=y
61CONFIG_VM_EVENT_COUNTERS=y 69CONFIG_VM_EVENT_COUNTERS=y
70# CONFIG_SLUB_DEBUG is not set
71# CONFIG_SLAB is not set
72CONFIG_SLUB=y
73# CONFIG_SLOB is not set
62CONFIG_RT_MUTEXES=y 74CONFIG_RT_MUTEXES=y
63# CONFIG_TINY_SHMEM is not set 75# CONFIG_TINY_SHMEM is not set
64CONFIG_BASE_SMALL=1 76CONFIG_BASE_SMALL=1
65# CONFIG_SLOB is not set
66 77
67# 78#
68# Loadable module support 79# Loadable module support
@@ -105,7 +116,15 @@ CONFIG_PLATFORM_AT32AP=y
105CONFIG_CPU_AT32AP7000=y 116CONFIG_CPU_AT32AP7000=y
106CONFIG_BOARD_ATSTK1002=y 117CONFIG_BOARD_ATSTK1002=y
107CONFIG_BOARD_ATSTK1000=y 118CONFIG_BOARD_ATSTK1000=y
119# CONFIG_BOARD_ATNGW100 is not set
108CONFIG_LOADER_U_BOOT=y 120CONFIG_LOADER_U_BOOT=y
121
122#
123# Atmel AVR32 AP options
124#
125# CONFIG_AP7000_32_BIT_SMC is not set
126CONFIG_AP7000_16_BIT_SMC=y
127# CONFIG_AP7000_8_BIT_SMC is not set
109CONFIG_LOAD_ADDRESS=0x10000000 128CONFIG_LOAD_ADDRESS=0x10000000
110CONFIG_ENTRY_ADDRESS=0x90000000 129CONFIG_ENTRY_ADDRESS=0x90000000
111CONFIG_PHYS_OFFSET=0x10000000 130CONFIG_PHYS_OFFSET=0x10000000
@@ -127,6 +146,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
127# CONFIG_SPARSEMEM_STATIC is not set 146# CONFIG_SPARSEMEM_STATIC is not set
128CONFIG_SPLIT_PTLOCK_CPUS=4 147CONFIG_SPLIT_PTLOCK_CPUS=4
129# CONFIG_RESOURCES_64BIT is not set 148# CONFIG_RESOURCES_64BIT is not set
149CONFIG_ZONE_DMA_FLAG=0
130# CONFIG_OWNERSHIP_TRACE is not set 150# CONFIG_OWNERSHIP_TRACE is not set
131# CONFIG_HZ_100 is not set 151# CONFIG_HZ_100 is not set
132CONFIG_HZ_250=y 152CONFIG_HZ_250=y
@@ -138,6 +158,7 @@ CONFIG_CMDLINE=""
138# 158#
139# Bus options 159# Bus options
140# 160#
161# CONFIG_ARCH_SUPPORTS_MSI is not set
141 162
142# 163#
143# PCCARD (PCMCIA/CardBus) support 164# PCCARD (PCMCIA/CardBus) support
@@ -158,7 +179,6 @@ CONFIG_NET=y
158# 179#
159# Networking options 180# Networking options
160# 181#
161# CONFIG_NETDEBUG is not set
162CONFIG_PACKET=y 182CONFIG_PACKET=y
163CONFIG_PACKET_MMAP=y 183CONFIG_PACKET_MMAP=y
164CONFIG_UNIX=y 184CONFIG_UNIX=y
@@ -194,20 +214,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
194# CONFIG_INET6_TUNNEL is not set 214# CONFIG_INET6_TUNNEL is not set
195# CONFIG_NETWORK_SECMARK is not set 215# CONFIG_NETWORK_SECMARK is not set
196# CONFIG_NETFILTER is not set 216# CONFIG_NETFILTER is not set
197
198#
199# DCCP Configuration (EXPERIMENTAL)
200#
201# CONFIG_IP_DCCP is not set 217# CONFIG_IP_DCCP is not set
202
203#
204# SCTP Configuration (EXPERIMENTAL)
205#
206# CONFIG_IP_SCTP is not set 218# CONFIG_IP_SCTP is not set
207
208#
209# TIPC Configuration (EXPERIMENTAL)
210#
211# CONFIG_TIPC is not set 219# CONFIG_TIPC is not set
212# CONFIG_ATM is not set 220# CONFIG_ATM is not set
213# CONFIG_BRIDGE is not set 221# CONFIG_BRIDGE is not set
@@ -233,7 +241,16 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
233# CONFIG_HAMRADIO is not set 241# CONFIG_HAMRADIO is not set
234# CONFIG_IRDA is not set 242# CONFIG_IRDA is not set
235# CONFIG_BT is not set 243# CONFIG_BT is not set
244# CONFIG_AF_RXRPC is not set
245
246#
247# Wireless
248#
249# CONFIG_CFG80211 is not set
250# CONFIG_WIRELESS_EXT is not set
251# CONFIG_MAC80211 is not set
236# CONFIG_IEEE80211 is not set 252# CONFIG_IEEE80211 is not set
253# CONFIG_RFKILL is not set
237 254
238# 255#
239# Device Drivers 256# Device Drivers
@@ -246,16 +263,13 @@ CONFIG_STANDALONE=y
246# CONFIG_PREVENT_FIRMWARE_BUILD is not set 263# CONFIG_PREVENT_FIRMWARE_BUILD is not set
247# CONFIG_FW_LOADER is not set 264# CONFIG_FW_LOADER is not set
248# CONFIG_DEBUG_DRIVER is not set 265# CONFIG_DEBUG_DRIVER is not set
266# CONFIG_DEBUG_DEVRES is not set
249# CONFIG_SYS_HYPERVISOR is not set 267# CONFIG_SYS_HYPERVISOR is not set
250 268
251# 269#
252# Connector - unified userspace <-> kernelspace linker 270# Connector - unified userspace <-> kernelspace linker
253# 271#
254# CONFIG_CONNECTOR is not set 272# CONFIG_CONNECTOR is not set
255
256#
257# Memory Technology Devices (MTD)
258#
259CONFIG_MTD=y 273CONFIG_MTD=y
260# CONFIG_MTD_DEBUG is not set 274# CONFIG_MTD_DEBUG is not set
261# CONFIG_MTD_CONCAT is not set 275# CONFIG_MTD_CONCAT is not set
@@ -299,7 +313,6 @@ CONFIG_MTD_CFI_UTIL=y
299# CONFIG_MTD_RAM is not set 313# CONFIG_MTD_RAM is not set
300# CONFIG_MTD_ROM is not set 314# CONFIG_MTD_ROM is not set
301# CONFIG_MTD_ABSENT is not set 315# CONFIG_MTD_ABSENT is not set
302# CONFIG_MTD_OBSOLETE_CHIPS is not set
303 316
304# 317#
305# Mapping drivers for chip access 318# Mapping drivers for chip access
@@ -325,16 +338,13 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
325# CONFIG_MTD_DOC2000 is not set 338# CONFIG_MTD_DOC2000 is not set
326# CONFIG_MTD_DOC2001 is not set 339# CONFIG_MTD_DOC2001 is not set
327# CONFIG_MTD_DOC2001PLUS is not set 340# CONFIG_MTD_DOC2001PLUS is not set
328
329#
330# NAND Flash Device Drivers
331#
332# CONFIG_MTD_NAND is not set 341# CONFIG_MTD_NAND is not set
342# CONFIG_MTD_ONENAND is not set
333 343
334# 344#
335# OneNAND Flash Device Drivers 345# UBI - Unsorted block images
336# 346#
337# CONFIG_MTD_ONENAND is not set 347# CONFIG_MTD_UBI is not set
338 348
339# 349#
340# Parallel port support 350# Parallel port support
@@ -344,6 +354,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
344# 354#
345# Plug and Play support 355# Plug and Play support
346# 356#
357# CONFIG_PNPACPI is not set
347 358
348# 359#
349# Block devices 360# Block devices
@@ -356,18 +367,13 @@ CONFIG_BLK_DEV_RAM=m
356CONFIG_BLK_DEV_RAM_COUNT=16 367CONFIG_BLK_DEV_RAM_COUNT=16
357CONFIG_BLK_DEV_RAM_SIZE=4096 368CONFIG_BLK_DEV_RAM_SIZE=4096
358CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 369CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
359CONFIG_BLK_DEV_INITRD=y
360# CONFIG_CDROM_PKTCDVD is not set 370# CONFIG_CDROM_PKTCDVD is not set
361# CONFIG_ATA_OVER_ETH is not set 371# CONFIG_ATA_OVER_ETH is not set
362 372
363# 373#
364# Misc devices 374# Misc devices
365# 375#
366# CONFIG_TIFM_CORE is not set 376# CONFIG_BLINK is not set
367
368#
369# ATA/ATAPI/MFM/RLL support
370#
371# CONFIG_IDE is not set 377# CONFIG_IDE is not set
372 378
373# 379#
@@ -376,10 +382,6 @@ CONFIG_BLK_DEV_INITRD=y
376# CONFIG_RAID_ATTRS is not set 382# CONFIG_RAID_ATTRS is not set
377# CONFIG_SCSI is not set 383# CONFIG_SCSI is not set
378# CONFIG_SCSI_NETLINK is not set 384# CONFIG_SCSI_NETLINK is not set
379
380#
381# Serial ATA (prod) and Parallel ATA (experimental) drivers
382#
383# CONFIG_ATA is not set 385# CONFIG_ATA is not set
384 386
385# 387#
@@ -388,19 +390,6 @@ CONFIG_BLK_DEV_INITRD=y
388# CONFIG_MD is not set 390# CONFIG_MD is not set
389 391
390# 392#
391# Fusion MPT device support
392#
393# CONFIG_FUSION is not set
394
395#
396# IEEE 1394 (FireWire) support
397#
398
399#
400# I2O device support
401#
402
403#
404# Network device support 393# Network device support
405# 394#
406CONFIG_NETDEVICES=y 395CONFIG_NETDEVICES=y
@@ -408,10 +397,6 @@ CONFIG_DUMMY=y
408# CONFIG_BONDING is not set 397# CONFIG_BONDING is not set
409# CONFIG_EQUALIZER is not set 398# CONFIG_EQUALIZER is not set
410CONFIG_TUN=m 399CONFIG_TUN=m
411
412#
413# PHY device support
414#
415# CONFIG_PHYLIB is not set 400# CONFIG_PHYLIB is not set
416 401
417# 402#
@@ -420,27 +405,14 @@ CONFIG_TUN=m
420CONFIG_NET_ETHERNET=y 405CONFIG_NET_ETHERNET=y
421CONFIG_MII=y 406CONFIG_MII=y
422CONFIG_MACB=y 407CONFIG_MACB=y
408# CONFIG_NETDEV_1000 is not set
409# CONFIG_NETDEV_10000 is not set
423 410
424# 411#
425# Ethernet (1000 Mbit) 412# Wireless LAN
426#
427
428#
429# Ethernet (10000 Mbit)
430#
431
432#
433# Token Ring devices
434#
435
436#
437# Wireless LAN (non-hamradio)
438#
439# CONFIG_NET_RADIO is not set
440
441#
442# Wan interfaces
443# 413#
414# CONFIG_WLAN_PRE80211 is not set
415# CONFIG_WLAN_80211 is not set
444# CONFIG_WAN is not set 416# CONFIG_WAN is not set
445CONFIG_PPP=m 417CONFIG_PPP=m
446# CONFIG_PPP_MULTILINK is not set 418# CONFIG_PPP_MULTILINK is not set
@@ -505,15 +477,10 @@ CONFIG_UNIX98_PTYS=y
505# IPMI 477# IPMI
506# 478#
507# CONFIG_IPMI_HANDLER is not set 479# CONFIG_IPMI_HANDLER is not set
508
509#
510# Watchdog Cards
511#
512# CONFIG_WATCHDOG is not set 480# CONFIG_WATCHDOG is not set
513# CONFIG_HW_RANDOM is not set 481# CONFIG_HW_RANDOM is not set
514# CONFIG_RTC is not set 482# CONFIG_RTC is not set
515# CONFIG_GEN_RTC is not set 483# CONFIG_GEN_RTC is not set
516# CONFIG_DTLK is not set
517# CONFIG_R3964 is not set 484# CONFIG_R3964 is not set
518# CONFIG_RAW_DRIVER is not set 485# CONFIG_RAW_DRIVER is not set
519 486
@@ -521,10 +488,6 @@ CONFIG_UNIX98_PTYS=y
521# TPM devices 488# TPM devices
522# 489#
523# CONFIG_TCG_TPM is not set 490# CONFIG_TCG_TPM is not set
524
525#
526# I2C support
527#
528# CONFIG_I2C is not set 491# CONFIG_I2C is not set
529 492
530# 493#
@@ -537,29 +500,31 @@ CONFIG_UNIX98_PTYS=y
537# Dallas's 1-wire bus 500# Dallas's 1-wire bus
538# 501#
539# CONFIG_W1 is not set 502# CONFIG_W1 is not set
503# CONFIG_HWMON is not set
540 504
541# 505#
542# Hardware Monitoring support 506# Multifunction device drivers
543# 507#
544# CONFIG_HWMON is not set 508# CONFIG_MFD_SM501 is not set
545# CONFIG_HWMON_VID is not set
546 509
547# 510#
548# Multimedia devices 511# Multimedia devices
549# 512#
550# CONFIG_VIDEO_DEV is not set 513# CONFIG_VIDEO_DEV is not set
514# CONFIG_DVB_CORE is not set
515# CONFIG_DAB is not set
551 516
552# 517#
553# Digital Video Broadcasting Devices 518# Graphics support
554# 519#
555# CONFIG_DVB is not set 520# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
556 521
557# 522#
558# Graphics support 523# Display device support
559# 524#
560# CONFIG_FIRMWARE_EDID is not set 525# CONFIG_DISPLAY_SUPPORT is not set
526# CONFIG_VGASTATE is not set
561# CONFIG_FB is not set 527# CONFIG_FB is not set
562# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
563 528
564# 529#
565# Sound 530# Sound
@@ -581,10 +546,6 @@ CONFIG_UNIX98_PTYS=y
581# USB Gadget Support 546# USB Gadget Support
582# 547#
583# CONFIG_USB_GADGET is not set 548# CONFIG_USB_GADGET is not set
584
585#
586# MMC/SD Card support
587#
588# CONFIG_MMC is not set 549# CONFIG_MMC is not set
589 550
590# 551#
@@ -627,10 +588,6 @@ CONFIG_UNIX98_PTYS=y
627# 588#
628 589
629# 590#
630# Virtualization
631#
632
633#
634# File systems 591# File systems
635# 592#
636CONFIG_EXT2_FS=m 593CONFIG_EXT2_FS=m
@@ -712,8 +669,20 @@ CONFIG_JFFS2_RTIME=y
712# 669#
713# Network File Systems 670# Network File Systems
714# 671#
715# CONFIG_NFS_FS is not set 672CONFIG_NFS_FS=y
673CONFIG_NFS_V3=y
674# CONFIG_NFS_V3_ACL is not set
675# CONFIG_NFS_V4 is not set
676# CONFIG_NFS_DIRECTIO is not set
716# CONFIG_NFSD is not set 677# CONFIG_NFSD is not set
678CONFIG_ROOT_NFS=y
679CONFIG_LOCKD=y
680CONFIG_LOCKD_V4=y
681CONFIG_NFS_COMMON=y
682CONFIG_SUNRPC=y
683# CONFIG_SUNRPC_BIND34 is not set
684# CONFIG_RPCSEC_GSS_KRB5 is not set
685# CONFIG_RPCSEC_GSS_SPKM3 is not set
717# CONFIG_SMB_FS is not set 686# CONFIG_SMB_FS is not set
718# CONFIG_CIFS is not set 687# CONFIG_CIFS is not set
719# CONFIG_NCP_FS is not set 688# CONFIG_NCP_FS is not set
@@ -787,15 +756,14 @@ CONFIG_MAGIC_SYSRQ=y
787CONFIG_DEBUG_FS=y 756CONFIG_DEBUG_FS=y
788# CONFIG_HEADERS_CHECK is not set 757# CONFIG_HEADERS_CHECK is not set
789CONFIG_DEBUG_KERNEL=y 758CONFIG_DEBUG_KERNEL=y
790CONFIG_LOG_BUF_SHIFT=14 759# CONFIG_DEBUG_SHIRQ is not set
791CONFIG_DETECT_SOFTLOCKUP=y 760CONFIG_DETECT_SOFTLOCKUP=y
792# CONFIG_SCHEDSTATS is not set 761# CONFIG_SCHEDSTATS is not set
793# CONFIG_DEBUG_SLAB is not set 762# CONFIG_TIMER_STATS is not set
794# CONFIG_DEBUG_RT_MUTEXES is not set 763# CONFIG_DEBUG_RT_MUTEXES is not set
795# CONFIG_RT_MUTEX_TESTER is not set 764# CONFIG_RT_MUTEX_TESTER is not set
796# CONFIG_DEBUG_SPINLOCK is not set 765# CONFIG_DEBUG_SPINLOCK is not set
797# CONFIG_DEBUG_MUTEXES is not set 766# CONFIG_DEBUG_MUTEXES is not set
798# CONFIG_DEBUG_RWSEMS is not set
799# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 767# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
800# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 768# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
801# CONFIG_DEBUG_KOBJECT is not set 769# CONFIG_DEBUG_KOBJECT is not set
@@ -806,6 +774,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
806CONFIG_FRAME_POINTER=y 774CONFIG_FRAME_POINTER=y
807CONFIG_FORCED_INLINING=y 775CONFIG_FORCED_INLINING=y
808# CONFIG_RCU_TORTURE_TEST is not set 776# CONFIG_RCU_TORTURE_TEST is not set
777# CONFIG_FAULT_INJECTION is not set
809# CONFIG_KPROBES is not set 778# CONFIG_KPROBES is not set
810 779
811# 780#
@@ -825,10 +794,13 @@ CONFIG_FORCED_INLINING=y
825CONFIG_BITREVERSE=y 794CONFIG_BITREVERSE=y
826CONFIG_CRC_CCITT=m 795CONFIG_CRC_CCITT=m
827# CONFIG_CRC16 is not set 796# CONFIG_CRC16 is not set
797# CONFIG_CRC_ITU_T is not set
828CONFIG_CRC32=y 798CONFIG_CRC32=y
829# CONFIG_LIBCRC32C is not set 799# CONFIG_LIBCRC32C is not set
830CONFIG_AUDIT_GENERIC=y 800CONFIG_AUDIT_GENERIC=y
831CONFIG_ZLIB_INFLATE=y 801CONFIG_ZLIB_INFLATE=y
832CONFIG_ZLIB_DEFLATE=y 802CONFIG_ZLIB_DEFLATE=y
833CONFIG_PLIST=y 803CONFIG_PLIST=y
834CONFIG_IOMAP_COPY=y 804CONFIG_HAS_IOMEM=y
805CONFIG_HAS_IOPORT=y
806CONFIG_HAS_DMA=y
diff --git a/arch/avr32/mach-at32ap/at32ap7000.c b/arch/avr32/mach-at32ap/at32ap7000.c
index 1d2bf347a1d6..4dda42d3f6d5 100644
--- a/arch/avr32/mach-at32ap/at32ap7000.c
+++ b/arch/avr32/mach-at32ap/at32ap7000.c
@@ -9,6 +9,7 @@
9#include <linux/fb.h> 9#include <linux/fb.h>
10#include <linux/init.h> 10#include <linux/init.h>
11#include <linux/platform_device.h> 11#include <linux/platform_device.h>
12#include <linux/dma-mapping.h>
12#include <linux/spi/spi.h> 13#include <linux/spi/spi.h>
13 14
14#include <asm/io.h> 15#include <asm/io.h>
@@ -45,19 +46,30 @@
45 .flags = IORESOURCE_IRQ, \ 46 .flags = IORESOURCE_IRQ, \
46 } 47 }
47 48
49/* REVISIT these assume *every* device supports DMA, but several
50 * don't ... tc, smc, pio, rtc, watchdog, pwm, ps2, and more.
51 */
48#define DEFINE_DEV(_name, _id) \ 52#define DEFINE_DEV(_name, _id) \
53static u64 _name##_id##_dma_mask = DMA_32BIT_MASK; \
49static struct platform_device _name##_id##_device = { \ 54static struct platform_device _name##_id##_device = { \
50 .name = #_name, \ 55 .name = #_name, \
51 .id = _id, \ 56 .id = _id, \
57 .dev = { \
58 .dma_mask = &_name##_id##_dma_mask, \
59 .coherent_dma_mask = DMA_32BIT_MASK, \
60 }, \
52 .resource = _name##_id##_resource, \ 61 .resource = _name##_id##_resource, \
53 .num_resources = ARRAY_SIZE(_name##_id##_resource), \ 62 .num_resources = ARRAY_SIZE(_name##_id##_resource), \
54} 63}
55#define DEFINE_DEV_DATA(_name, _id) \ 64#define DEFINE_DEV_DATA(_name, _id) \
65static u64 _name##_id##_dma_mask = DMA_32BIT_MASK; \
56static struct platform_device _name##_id##_device = { \ 66static struct platform_device _name##_id##_device = { \
57 .name = #_name, \ 67 .name = #_name, \
58 .id = _id, \ 68 .id = _id, \
59 .dev = { \ 69 .dev = { \
70 .dma_mask = &_name##_id##_dma_mask, \
60 .platform_data = &_name##_id##_data, \ 71 .platform_data = &_name##_id##_data, \
72 .coherent_dma_mask = DMA_32BIT_MASK, \
61 }, \ 73 }, \
62 .resource = _name##_id##_resource, \ 74 .resource = _name##_id##_resource, \
63 .num_resources = ARRAY_SIZE(_name##_id##_resource), \ 75 .num_resources = ARRAY_SIZE(_name##_id##_resource), \
diff --git a/arch/avr32/mm/cache.c b/arch/avr32/mm/cache.c
index 8f7b1c3cd0f9..c1233c615e67 100644
--- a/arch/avr32/mm/cache.c
+++ b/arch/avr32/mm/cache.c
@@ -23,7 +23,6 @@
23void invalidate_dcache_region(void *start, size_t size) 23void invalidate_dcache_region(void *start, size_t size)
24{ 24{
25 unsigned long v, begin, end, linesz, mask; 25 unsigned long v, begin, end, linesz, mask;
26 int flush = 0;
27 26
28 linesz = boot_cpu_data.dcache.linesz; 27 linesz = boot_cpu_data.dcache.linesz;
29 mask = linesz - 1; 28 mask = linesz - 1;
@@ -32,24 +31,21 @@ void invalidate_dcache_region(void *start, size_t size)
32 * instead of invalidating ... never discard valid data! 31 * instead of invalidating ... never discard valid data!
33 */ 32 */
34 begin = (unsigned long)start; 33 begin = (unsigned long)start;
35 end = begin + size - 1; 34 end = begin + size;
36 35
37 if (begin & mask) { 36 if (begin & mask) {
38 flush_dcache_line(start); 37 flush_dcache_line(start);
39 begin += linesz; 38 begin += linesz;
40 flush = 1;
41 } 39 }
42 if ((end & mask) != mask) { 40 if (end & mask) {
43 flush_dcache_line((void *)end); 41 flush_dcache_line((void *)end);
44 end -= linesz; 42 end &= ~mask;
45 flush = 1;
46 } 43 }
47 44
48 /* remaining cachelines only need invalidation */ 45 /* remaining cachelines only need invalidation */
49 for (v = begin; v <= end; v += linesz) 46 for (v = begin; v < end; v += linesz)
50 invalidate_dcache_line((void *)v); 47 invalidate_dcache_line((void *)v);
51 if (flush) 48 flush_write_buffer();
52 flush_write_buffer();
53} 49}
54 50
55void clean_dcache_region(void *start, size_t size) 51void clean_dcache_region(void *start, size_t size)
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index 8770a5d0b143..d2f6a247414d 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -541,7 +541,7 @@ config HIGHMEM4G
541 541
542config HIGHMEM64G 542config HIGHMEM64G
543 bool "64GB" 543 bool "64GB"
544 depends on X86_CMPXCHG64 544 depends on !M386 && !M486
545 help 545 help
546 Select this if you have a 32-bit processor and more than 4 546 Select this if you have a 32-bit processor and more than 4
547 gigabytes of physical RAM. 547 gigabytes of physical RAM.
diff --git a/arch/i386/Kconfig.cpu b/arch/i386/Kconfig.cpu
index d7f6fb0b30f2..5c95ceb7f122 100644
--- a/arch/i386/Kconfig.cpu
+++ b/arch/i386/Kconfig.cpu
@@ -299,7 +299,7 @@ config X86_POPAD_OK
299 299
300config X86_CMPXCHG64 300config X86_CMPXCHG64
301 bool 301 bool
302 depends on !M386 && !M486 302 depends on X86_PAE
303 default y 303 default y
304 304
305config X86_ALIGNMENT_16 305config X86_ALIGNMENT_16
diff --git a/arch/i386/kernel/acpi/wakeup.S b/arch/i386/kernel/acpi/wakeup.S
index b781b38131c0..a2295a34b2c7 100644
--- a/arch/i386/kernel/acpi/wakeup.S
+++ b/arch/i386/kernel/acpi/wakeup.S
@@ -230,6 +230,7 @@ bogus_magic:
230# 230#
231ENTRY(acpi_copy_wakeup_routine) 231ENTRY(acpi_copy_wakeup_routine)
232 232
233 pushl %ebx
233 sgdt saved_gdt 234 sgdt saved_gdt
234 sidt saved_idt 235 sidt saved_idt
235 sldt saved_ldt 236 sldt saved_ldt
@@ -263,6 +264,7 @@ ENTRY(acpi_copy_wakeup_routine)
263 movl %edx, video_flags - wakeup_start (%eax) 264 movl %edx, video_flags - wakeup_start (%eax)
264 movl $0x12345678, real_magic - wakeup_start (%eax) 265 movl $0x12345678, real_magic - wakeup_start (%eax)
265 movl $0x12345678, saved_magic 266 movl $0x12345678, saved_magic
267 popl %ebx
266 ret 268 ret
267 269
268save_registers: 270save_registers:
diff --git a/arch/x86_64/kernel/entry.S b/arch/x86_64/kernel/entry.S
index fa984b53e7e6..a67f87bf4015 100644
--- a/arch/x86_64/kernel/entry.S
+++ b/arch/x86_64/kernel/entry.S
@@ -1163,3 +1163,10 @@ ENTRY(call_softirq)
1163 ret 1163 ret
1164 CFI_ENDPROC 1164 CFI_ENDPROC
1165ENDPROC(call_softirq) 1165ENDPROC(call_softirq)
1166
1167KPROBE_ENTRY(ignore_sysret)
1168 CFI_STARTPROC
1169 mov $-ENOSYS,%eax
1170 sysret
1171 CFI_ENDPROC
1172ENDPROC(ignore_sysret)
diff --git a/arch/x86_64/kernel/mce.c b/arch/x86_64/kernel/mce.c
index a14375dd5425..aa1d15991794 100644
--- a/arch/x86_64/kernel/mce.c
+++ b/arch/x86_64/kernel/mce.c
@@ -497,15 +497,17 @@ static ssize_t mce_read(struct file *filp, char __user *ubuf, size_t usize, loff
497 for (i = 0; i < next; i++) { 497 for (i = 0; i < next; i++) {
498 unsigned long start = jiffies; 498 unsigned long start = jiffies;
499 while (!mcelog.entry[i].finished) { 499 while (!mcelog.entry[i].finished) {
500 if (!time_before(jiffies, start + 2)) { 500 if (time_after_eq(jiffies, start + 2)) {
501 memset(mcelog.entry + i,0, sizeof(struct mce)); 501 memset(mcelog.entry + i,0, sizeof(struct mce));
502 continue; 502 goto timeout;
503 } 503 }
504 cpu_relax(); 504 cpu_relax();
505 } 505 }
506 smp_rmb(); 506 smp_rmb();
507 err |= copy_to_user(buf, mcelog.entry + i, sizeof(struct mce)); 507 err |= copy_to_user(buf, mcelog.entry + i, sizeof(struct mce));
508 buf += sizeof(struct mce); 508 buf += sizeof(struct mce);
509 timeout:
510 ;
509 } 511 }
510 512
511 memset(mcelog.entry, 0, next * sizeof(struct mce)); 513 memset(mcelog.entry, 0, next * sizeof(struct mce));
diff --git a/arch/x86_64/kernel/setup64.c b/arch/x86_64/kernel/setup64.c
index 64379a80d763..1200aaac403e 100644
--- a/arch/x86_64/kernel/setup64.c
+++ b/arch/x86_64/kernel/setup64.c
@@ -150,6 +150,8 @@ void pda_init(int cpu)
150char boot_exception_stacks[(N_EXCEPTION_STACKS - 1) * EXCEPTION_STKSZ + DEBUG_STKSZ] 150char boot_exception_stacks[(N_EXCEPTION_STACKS - 1) * EXCEPTION_STKSZ + DEBUG_STKSZ]
151__attribute__((section(".bss.page_aligned"))); 151__attribute__((section(".bss.page_aligned")));
152 152
153extern asmlinkage void ignore_sysret(void);
154
153/* May not be marked __init: used by software suspend */ 155/* May not be marked __init: used by software suspend */
154void syscall_init(void) 156void syscall_init(void)
155{ 157{
@@ -160,6 +162,7 @@ void syscall_init(void)
160 */ 162 */
161 wrmsrl(MSR_STAR, ((u64)__USER32_CS)<<48 | ((u64)__KERNEL_CS)<<32); 163 wrmsrl(MSR_STAR, ((u64)__USER32_CS)<<48 | ((u64)__KERNEL_CS)<<32);
162 wrmsrl(MSR_LSTAR, system_call); 164 wrmsrl(MSR_LSTAR, system_call);
165 wrmsrl(MSR_CSTAR, ignore_sysret);
163 166
164#ifdef CONFIG_IA32_EMULATION 167#ifdef CONFIG_IA32_EMULATION
165 syscall32_cpu_init (); 168 syscall32_cpu_init ();
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index ee5759bef945..80ffc7829916 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -332,16 +332,18 @@ static void acpi_processor_idle(void)
332 int sleep_ticks = 0; 332 int sleep_ticks = 0;
333 u32 t1, t2 = 0; 333 u32 t1, t2 = 0;
334 334
335 pr = processors[smp_processor_id()];
336 if (!pr)
337 return;
338
339 /* 335 /*
340 * Interrupts must be disabled during bus mastering calculations and 336 * Interrupts must be disabled during bus mastering calculations and
341 * for C2/C3 transitions. 337 * for C2/C3 transitions.
342 */ 338 */
343 local_irq_disable(); 339 local_irq_disable();
344 340
341 pr = processors[smp_processor_id()];
342 if (!pr) {
343 local_irq_enable();
344 return;
345 }
346
345 /* 347 /*
346 * Check whether we truly need to go idle, or should 348 * Check whether we truly need to go idle, or should
347 * reschedule: 349 * reschedule:
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 194ecfe8b360..88a6fc7fd271 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -828,6 +828,8 @@ static int acpi_thermal_trip_seq_show(struct seq_file *seq, void *offset)
828{ 828{
829 struct acpi_thermal *tz = seq->private; 829 struct acpi_thermal *tz = seq->private;
830 struct acpi_device *device; 830 struct acpi_device *device;
831 acpi_status status;
832
831 int i = 0; 833 int i = 0;
832 int j = 0; 834 int j = 0;
833 835
@@ -850,8 +852,10 @@ static int acpi_thermal_trip_seq_show(struct seq_file *seq, void *offset)
850 tz->trips.passive.tc1, tz->trips.passive.tc2, 852 tz->trips.passive.tc1, tz->trips.passive.tc2,
851 tz->trips.passive.tsp); 853 tz->trips.passive.tsp);
852 for (j = 0; j < tz->trips.passive.devices.count; j++) { 854 for (j = 0; j < tz->trips.passive.devices.count; j++) {
853 acpi_bus_get_device(tz->trips.passive.devices.handles[j], &device); 855 status = acpi_bus_get_device(tz->trips.passive.devices.
854 seq_printf(seq, "%4.4s ", acpi_device_bid(device)); 856 handles[j], &device);
857 seq_printf(seq, "%4.4s ", status ? "" :
858 acpi_device_bid(device));
855 } 859 }
856 seq_puts(seq, "\n"); 860 seq_puts(seq, "\n");
857 } 861 }
@@ -863,8 +867,11 @@ static int acpi_thermal_trip_seq_show(struct seq_file *seq, void *offset)
863 i, 867 i,
864 KELVIN_TO_CELSIUS(tz->trips.active[i].temperature)); 868 KELVIN_TO_CELSIUS(tz->trips.active[i].temperature));
865 for (j = 0; j < tz->trips.active[i].devices.count; j++){ 869 for (j = 0; j < tz->trips.active[i].devices.count; j++){
866 acpi_bus_get_device(tz->trips.active[i].devices.handles[j], &device); 870 status = acpi_bus_get_device(tz->trips.active[i].
867 seq_printf(seq, "%4.4s ", acpi_device_bid(device)); 871 devices.handles[j],
872 &device);
873 seq_printf(seq, "%4.4s ", status ? "" :
874 acpi_device_bid(device));
868 } 875 }
869 seq_puts(seq, "\n"); 876 seq_puts(seq, "\n");
870 } 877 }
diff --git a/drivers/acpi/utilities/utobject.c b/drivers/acpi/utilities/utobject.c
index db0b9bac7945..76ee766c84f9 100644
--- a/drivers/acpi/utilities/utobject.c
+++ b/drivers/acpi/utilities/utobject.c
@@ -177,7 +177,7 @@ union acpi_operand_object *acpi_ut_create_package_object(u32 count)
177 package_elements = ACPI_ALLOCATE_ZEROED((acpi_size) 177 package_elements = ACPI_ALLOCATE_ZEROED((acpi_size)
178 (count + 1) * sizeof(void *)); 178 (count + 1) * sizeof(void *));
179 if (!package_elements) { 179 if (!package_elements) {
180 ACPI_FREE(package_desc); 180 acpi_ut_remove_reference(package_desc);
181 return_PTR(NULL); 181 return_PTR(NULL);
182 } 182 }
183 183
diff --git a/drivers/char/stallion.c b/drivers/char/stallion.c
index 45bf2a262a85..8c73ccb8830f 100644
--- a/drivers/char/stallion.c
+++ b/drivers/char/stallion.c
@@ -4753,13 +4753,14 @@ static int __init stallion_module_init(void)
4753 brdp->ioaddr2 = conf.ioaddr2; 4753 brdp->ioaddr2 = conf.ioaddr2;
4754 brdp->irq = conf.irq; 4754 brdp->irq = conf.irq;
4755 brdp->irqtype = conf.irqtype; 4755 brdp->irqtype = conf.irqtype;
4756 if (stl_brdinit(brdp)) 4756 stl_brds[brdp->brdnr] = brdp;
4757 if (stl_brdinit(brdp)) {
4758 stl_brds[brdp->brdnr] = NULL;
4757 kfree(brdp); 4759 kfree(brdp);
4758 else { 4760 } else {
4759 for (j = 0; j < brdp->nrports; j++) 4761 for (j = 0; j < brdp->nrports; j++)
4760 tty_register_device(stl_serial, 4762 tty_register_device(stl_serial,
4761 brdp->brdnr * STL_MAXPORTS + j, NULL); 4763 brdp->brdnr * STL_MAXPORTS + j, NULL);
4762 stl_brds[brdp->brdnr] = brdp;
4763 stl_nrbrds = i + 1; 4764 stl_nrbrds = i + 1;
4764 } 4765 }
4765 } 4766 }
diff --git a/drivers/char/vt.c b/drivers/char/vt.c
index bbd9fc412877..6650ae1c088f 100644
--- a/drivers/char/vt.c
+++ b/drivers/char/vt.c
@@ -1956,7 +1956,7 @@ char con_buf[CON_BUF_SIZE];
1956DEFINE_MUTEX(con_buf_mtx); 1956DEFINE_MUTEX(con_buf_mtx);
1957 1957
1958/* is_double_width() is based on the wcwidth() implementation by 1958/* is_double_width() is based on the wcwidth() implementation by
1959 * Markus Kuhn -- 2003-05-20 (Unicode 4.0) 1959 * Markus Kuhn -- 2007-05-26 (Unicode 5.0)
1960 * Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c 1960 * Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
1961 */ 1961 */
1962struct interval { 1962struct interval {
@@ -1988,8 +1988,8 @@ static int is_double_width(uint32_t ucs)
1988 static const struct interval double_width[] = { 1988 static const struct interval double_width[] = {
1989 { 0x1100, 0x115F }, { 0x2329, 0x232A }, { 0x2E80, 0x303E }, 1989 { 0x1100, 0x115F }, { 0x2329, 0x232A }, { 0x2E80, 0x303E },
1990 { 0x3040, 0xA4CF }, { 0xAC00, 0xD7A3 }, { 0xF900, 0xFAFF }, 1990 { 0x3040, 0xA4CF }, { 0xAC00, 0xD7A3 }, { 0xF900, 0xFAFF },
1991 { 0xFE30, 0xFE6F }, { 0xFF00, 0xFF60 }, { 0xFFE0, 0xFFE6 }, 1991 { 0xFE10, 0xFE19 }, { 0xFE30, 0xFE6F }, { 0xFF00, 0xFF60 },
1992 { 0x20000, 0x2FFFD }, { 0x30000, 0x3FFFD } 1992 { 0xFFE0, 0xFFE6 }, { 0x20000, 0x2FFFD }, { 0x30000, 0x3FFFD }
1993 }; 1993 };
1994 return bisearch(ucs, double_width, 1994 return bisearch(ucs, double_width,
1995 sizeof(double_width) / sizeof(*double_width) - 1); 1995 sizeof(double_width) / sizeof(*double_width) - 1);
@@ -2187,9 +2187,12 @@ rescan_last_byte:
2187 continue; /* nothing to display */ 2187 continue; /* nothing to display */
2188 } 2188 }
2189 /* Glyph not found */ 2189 /* Glyph not found */
2190 if (!(vc->vc_utf && !vc->vc_disp_ctrl) && !(c & ~charmask)) { 2190 if ((!(vc->vc_utf && !vc->vc_disp_ctrl) || c < 128) && !(c & ~charmask)) {
2191 /* In legacy mode use the glyph we get by a 1:1 mapping. 2191 /* In legacy mode use the glyph we get by a 1:1 mapping.
2192 This would make absolutely no sense with Unicode in mind. */ 2192 This would make absolutely no sense with Unicode in mind,
2193 but do this for ASCII characters since a font may lack
2194 Unicode mapping info and we don't want to end up with
2195 having question marks only. */
2193 tc = c; 2196 tc = c;
2194 } else { 2197 } else {
2195 /* Display U+FFFD. If it's not found, display an inverse question mark. */ 2198 /* Display U+FFFD. If it's not found, display an inverse question mark. */
@@ -2213,6 +2216,7 @@ rescan_last_byte:
2213 } else { 2216 } else {
2214 vc_attr = ((vc->vc_attr) & 0x88) | (((vc->vc_attr) & 0x70) >> 4) | (((vc->vc_attr) & 0x07) << 4); 2217 vc_attr = ((vc->vc_attr) & 0x88) | (((vc->vc_attr) & 0x70) >> 4) | (((vc->vc_attr) & 0x07) << 4);
2215 } 2218 }
2219 FLUSH
2216 } 2220 }
2217 2221
2218 while (1) { 2222 while (1) {
@@ -2246,6 +2250,10 @@ rescan_last_byte:
2246 if (tc < 0) tc = ' '; 2250 if (tc < 0) tc = ' ';
2247 } 2251 }
2248 2252
2253 if (inverse) {
2254 FLUSH
2255 }
2256
2249 if (rescan) { 2257 if (rescan) {
2250 rescan = 0; 2258 rescan = 0;
2251 inverse = 0; 2259 inverse = 0;
diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c
index 0328382df8fa..6d54c8caed79 100644
--- a/drivers/hwmon/coretemp.c
+++ b/drivers/hwmon/coretemp.c
@@ -185,6 +185,7 @@ static int __devinit coretemp_probe(struct platform_device *pdev)
185 /* check for microcode update */ 185 /* check for microcode update */
186 rdmsr_on_cpu(data->id, MSR_IA32_UCODE_REV, &eax, &edx); 186 rdmsr_on_cpu(data->id, MSR_IA32_UCODE_REV, &eax, &edx);
187 if (edx < 0x39) { 187 if (edx < 0x39) {
188 err = -ENODEV;
188 dev_err(&pdev->dev, 189 dev_err(&pdev->dev,
189 "Errata AE18 not fixed, update BIOS or " 190 "Errata AE18 not fixed, update BIOS or "
190 "microcode of the CPU!\n"); 191 "microcode of the CPU!\n");
diff --git a/drivers/macintosh/Kconfig b/drivers/macintosh/Kconfig
index 0852d330c265..dbe96268866e 100644
--- a/drivers/macintosh/Kconfig
+++ b/drivers/macintosh/Kconfig
@@ -2,7 +2,7 @@
2menuconfig MACINTOSH_DRIVERS 2menuconfig MACINTOSH_DRIVERS
3 bool "Macintosh device drivers" 3 bool "Macintosh device drivers"
4 depends on PPC || MAC || X86 4 depends on PPC || MAC || X86
5 default y if MAC 5 default y if (PPC_PMAC || MAC)
6 6
7if MACINTOSH_DRIVERS 7if MACINTOSH_DRIVERS
8 8
diff --git a/drivers/mfd/sm501.c b/drivers/mfd/sm501.c
index b0b4458ae90b..8135e4c3bf47 100644
--- a/drivers/mfd/sm501.c
+++ b/drivers/mfd/sm501.c
@@ -41,6 +41,9 @@ struct sm501_devdata {
41 struct resource *regs_claim; 41 struct resource *regs_claim;
42 struct sm501_platdata *platdata; 42 struct sm501_platdata *platdata;
43 43
44 unsigned int in_suspend;
45 unsigned long pm_misc;
46
44 int unit_power[20]; 47 int unit_power[20];
45 unsigned int pdev_id; 48 unsigned int pdev_id;
46 unsigned int irq; 49 unsigned int irq;
@@ -169,10 +172,41 @@ x "M %ld.%ld (%ld), MX1 %ld.%ld (%ld)\n",
169 fmt_freq(decode_div(pll2, pm1, 8, 1<<12, 15, misc_div)), 172 fmt_freq(decode_div(pll2, pm1, 8, 1<<12, 15, misc_div)),
170 fmt_freq(decode_div(pll2, pm1, 0, 1<<4, 15, misc_div))); 173 fmt_freq(decode_div(pll2, pm1, 0, 1<<4, 15, misc_div)));
171} 174}
172#else 175
173static void sm501_dump_clk(struct sm501_devdata *sm) 176static void sm501_dump_regs(struct sm501_devdata *sm)
174{ 177{
178 void __iomem *regs = sm->regs;
179
180 dev_info(sm->dev, "System Control %08x\n",
181 readl(regs + SM501_SYSTEM_CONTROL));
182 dev_info(sm->dev, "Misc Control %08x\n",
183 readl(regs + SM501_MISC_CONTROL));
184 dev_info(sm->dev, "GPIO Control Low %08x\n",
185 readl(regs + SM501_GPIO31_0_CONTROL));
186 dev_info(sm->dev, "GPIO Control Hi %08x\n",
187 readl(regs + SM501_GPIO63_32_CONTROL));
188 dev_info(sm->dev, "DRAM Control %08x\n",
189 readl(regs + SM501_DRAM_CONTROL));
190 dev_info(sm->dev, "Arbitration Ctrl %08x\n",
191 readl(regs + SM501_ARBTRTN_CONTROL));
192 dev_info(sm->dev, "Misc Timing %08x\n",
193 readl(regs + SM501_MISC_TIMING));
175} 194}
195
196static void sm501_dump_gate(struct sm501_devdata *sm)
197{
198 dev_info(sm->dev, "CurrentGate %08x\n",
199 readl(sm->regs + SM501_CURRENT_GATE));
200 dev_info(sm->dev, "CurrentClock %08x\n",
201 readl(sm->regs + SM501_CURRENT_CLOCK));
202 dev_info(sm->dev, "PowerModeControl %08x\n",
203 readl(sm->regs + SM501_POWER_MODE_CONTROL));
204}
205
206#else
207static inline void sm501_dump_gate(struct sm501_devdata *sm) { }
208static inline void sm501_dump_regs(struct sm501_devdata *sm) { }
209static inline void sm501_dump_clk(struct sm501_devdata *sm) { }
176#endif 210#endif
177 211
178/* sm501_sync_regs 212/* sm501_sync_regs
@@ -185,9 +219,21 @@ static void sm501_sync_regs(struct sm501_devdata *sm)
185 readl(sm->regs); 219 readl(sm->regs);
186} 220}
187 221
222static inline void sm501_mdelay(struct sm501_devdata *sm, unsigned int delay)
223{
224 /* during suspend/resume, we are currently not allowed to sleep,
225 * so change to using mdelay() instead of msleep() if we
226 * are in one of these paths */
227
228 if (sm->in_suspend)
229 mdelay(delay);
230 else
231 msleep(delay);
232}
233
188/* sm501_misc_control 234/* sm501_misc_control
189 * 235 *
190 * alters the misceleneous control parameters 236 * alters the miscellaneous control parameters
191*/ 237*/
192 238
193int sm501_misc_control(struct device *dev, 239int sm501_misc_control(struct device *dev,
@@ -368,7 +414,7 @@ int sm501_unit_power(struct device *dev, unsigned int unit, unsigned int to)
368 dev_dbg(sm->dev, "gate %08lx, clock %08lx, mode %08lx\n", 414 dev_dbg(sm->dev, "gate %08lx, clock %08lx, mode %08lx\n",
369 gate, clock, mode); 415 gate, clock, mode);
370 416
371 msleep(16); 417 sm501_mdelay(sm, 16);
372 418
373 already: 419 already:
374 mutex_unlock(&sm->clock_lock); 420 mutex_unlock(&sm->clock_lock);
@@ -538,7 +584,7 @@ unsigned long sm501_set_clock(struct device *dev,
538 dev_info(sm->dev, "gate %08lx, clock %08lx, mode %08lx\n", 584 dev_info(sm->dev, "gate %08lx, clock %08lx, mode %08lx\n",
539 gate, clock, mode); 585 gate, clock, mode);
540 586
541 msleep(16); 587 sm501_mdelay(sm, 16);
542 mutex_unlock(&sm->clock_lock); 588 mutex_unlock(&sm->clock_lock);
543 589
544 sm501_dump_clk(sm); 590 sm501_dump_clk(sm);
@@ -767,6 +813,9 @@ static DEVICE_ATTR(dbg_regs, 0666, sm501_dbg_regs, NULL);
767/* sm501_init_reg 813/* sm501_init_reg
768 * 814 *
769 * Helper function for the init code to setup a register 815 * Helper function for the init code to setup a register
816 *
817 * clear the bits which are set in r->mask, and then set
818 * the bits set in r->set.
770*/ 819*/
771 820
772static inline void sm501_init_reg(struct sm501_devdata *sm, 821static inline void sm501_init_reg(struct sm501_devdata *sm,
@@ -776,8 +825,8 @@ static inline void sm501_init_reg(struct sm501_devdata *sm,
776 unsigned long tmp; 825 unsigned long tmp;
777 826
778 tmp = readl(sm->regs + reg); 827 tmp = readl(sm->regs + reg);
779 tmp |= r->set;
780 tmp &= ~r->mask; 828 tmp &= ~r->mask;
829 tmp |= r->set;
781 writel(tmp, sm->regs + reg); 830 writel(tmp, sm->regs + reg);
782} 831}
783 832
@@ -797,15 +846,33 @@ static void sm501_init_regs(struct sm501_devdata *sm,
797 sm501_init_reg(sm, SM501_GPIO31_0_CONTROL, &init->gpio_low); 846 sm501_init_reg(sm, SM501_GPIO31_0_CONTROL, &init->gpio_low);
798 sm501_init_reg(sm, SM501_GPIO63_32_CONTROL, &init->gpio_high); 847 sm501_init_reg(sm, SM501_GPIO63_32_CONTROL, &init->gpio_high);
799 848
849 if (init->m1xclk) {
850 dev_info(sm->dev, "setting M1XCLK to %ld\n", init->m1xclk);
851 sm501_set_clock(sm->dev, SM501_CLOCK_M1XCLK, init->m1xclk);
852 }
853
800 if (init->mclk) { 854 if (init->mclk) {
801 dev_info(sm->dev, "setting MCLK to %ld\n", init->mclk); 855 dev_info(sm->dev, "setting MCLK to %ld\n", init->mclk);
802 sm501_set_clock(sm->dev, SM501_CLOCK_MCLK, init->mclk); 856 sm501_set_clock(sm->dev, SM501_CLOCK_MCLK, init->mclk);
803 } 857 }
804 858
805 if (init->m1xclk) { 859}
806 dev_info(sm->dev, "setting M1XCLK to %ld\n", init->m1xclk); 860
807 sm501_set_clock(sm->dev, SM501_CLOCK_M1XCLK, init->m1xclk); 861/* Check the PLL sources for the M1CLK and M1XCLK
808 } 862 *
863 * If the M1CLK and M1XCLKs are not sourced from the same PLL, then
864 * there is a risk (see errata AB-5) that the SM501 will cease proper
865 * function. If this happens, then it is likely the SM501 will
866 * hang the system.
867*/
868
869static int sm501_check_clocks(struct sm501_devdata *sm)
870{
871 unsigned long pwrmode = readl(sm->regs + SM501_CURRENT_CLOCK);
872 unsigned long msrc = (pwrmode & SM501_POWERMODE_M_SRC);
873 unsigned long m1src = (pwrmode & SM501_POWERMODE_M1_SRC);
874
875 return ((msrc == 0 && m1src != 0) || (msrc != 0 && m1src == 0));
809} 876}
810 877
811static unsigned int sm501_mem_local[] = { 878static unsigned int sm501_mem_local[] = {
@@ -826,6 +893,7 @@ static int sm501_init_dev(struct sm501_devdata *sm)
826{ 893{
827 resource_size_t mem_avail; 894 resource_size_t mem_avail;
828 unsigned long dramctrl; 895 unsigned long dramctrl;
896 unsigned long devid;
829 int ret; 897 int ret;
830 898
831 mutex_init(&sm->clock_lock); 899 mutex_init(&sm->clock_lock);
@@ -833,17 +901,20 @@ static int sm501_init_dev(struct sm501_devdata *sm)
833 901
834 INIT_LIST_HEAD(&sm->devices); 902 INIT_LIST_HEAD(&sm->devices);
835 903
836 dramctrl = readl(sm->regs + SM501_DRAM_CONTROL); 904 devid = readl(sm->regs + SM501_DEVICEID);
905
906 if ((devid & SM501_DEVICEID_IDMASK) != SM501_DEVICEID_SM501) {
907 dev_err(sm->dev, "incorrect device id %08lx\n", devid);
908 return -EINVAL;
909 }
837 910
911 dramctrl = readl(sm->regs + SM501_DRAM_CONTROL);
838 mem_avail = sm501_mem_local[(dramctrl >> 13) & 0x7]; 912 mem_avail = sm501_mem_local[(dramctrl >> 13) & 0x7];
839 913
840 dev_info(sm->dev, "SM501 At %p: Version %08x, %ld Mb, IRQ %d\n", 914 dev_info(sm->dev, "SM501 At %p: Version %08lx, %ld Mb, IRQ %d\n",
841 sm->regs, readl(sm->regs + SM501_DEVICEID), 915 sm->regs, devid, (unsigned long)mem_avail >> 20, sm->irq);
842 (unsigned long)mem_avail >> 20, sm->irq);
843 916
844 dev_info(sm->dev, "CurrentGate %08x\n", readl(sm->regs+0x38)); 917 sm501_dump_gate(sm);
845 dev_info(sm->dev, "CurrentClock %08x\n", readl(sm->regs+0x3c));
846 dev_info(sm->dev, "PowerModeControl %08x\n", readl(sm->regs+0x54));
847 918
848 ret = device_create_file(sm->dev, &dev_attr_dbg_regs); 919 ret = device_create_file(sm->dev, &dev_attr_dbg_regs);
849 if (ret) 920 if (ret)
@@ -864,6 +935,13 @@ static int sm501_init_dev(struct sm501_devdata *sm)
864 } 935 }
865 } 936 }
866 937
938 ret = sm501_check_clocks(sm);
939 if (ret) {
940 dev_err(sm->dev, "M1X and M clocks sourced from different "
941 "PLLs\n");
942 return -EINVAL;
943 }
944
867 /* always create a framebuffer */ 945 /* always create a framebuffer */
868 sm501_register_display(sm, &mem_avail); 946 sm501_register_display(sm, &mem_avail);
869 947
@@ -933,6 +1011,57 @@ static int sm501_plat_probe(struct platform_device *dev)
933 1011
934} 1012}
935 1013
1014#ifdef CONFIG_PM
1015/* power management support */
1016
1017static int sm501_plat_suspend(struct platform_device *pdev, pm_message_t state)
1018{
1019 struct sm501_devdata *sm = platform_get_drvdata(pdev);
1020
1021 sm->in_suspend = 1;
1022 sm->pm_misc = readl(sm->regs + SM501_MISC_CONTROL);
1023
1024 sm501_dump_regs(sm);
1025 return 0;
1026}
1027
1028static int sm501_plat_resume(struct platform_device *pdev)
1029{
1030 struct sm501_devdata *sm = platform_get_drvdata(pdev);
1031
1032 sm501_dump_regs(sm);
1033 sm501_dump_gate(sm);
1034 sm501_dump_clk(sm);
1035
1036 /* check to see if we are in the same state as when suspended */
1037
1038 if (readl(sm->regs + SM501_MISC_CONTROL) != sm->pm_misc) {
1039 dev_info(sm->dev, "SM501_MISC_CONTROL changed over sleep\n");
1040 writel(sm->pm_misc, sm->regs + SM501_MISC_CONTROL);
1041
1042 /* our suspend causes the controller state to change,
1043 * either by something attempting setup, power loss,
1044 * or an external reset event on power change */
1045
1046 if (sm->platdata && sm->platdata->init) {
1047 sm501_init_regs(sm, sm->platdata->init);
1048 }
1049 }
1050
1051 /* dump our state from resume */
1052
1053 sm501_dump_regs(sm);
1054 sm501_dump_clk(sm);
1055
1056 sm->in_suspend = 0;
1057
1058 return 0;
1059}
1060#else
1061#define sm501_plat_suspend NULL
1062#define sm501_plat_resume NULL
1063#endif
1064
936/* Initialisation data for PCI devices */ 1065/* Initialisation data for PCI devices */
937 1066
938static struct sm501_initdata sm501_pci_initdata = { 1067static struct sm501_initdata sm501_pci_initdata = {
@@ -950,8 +1079,12 @@ static struct sm501_initdata sm501_pci_initdata = {
950 }, 1079 },
951 1080
952 .devices = SM501_USE_ALL, 1081 .devices = SM501_USE_ALL,
953 .mclk = 100 * MHZ, 1082
954 .m1xclk = 160 * MHZ, 1083 /* Errata AB-3 says that 72MHz is the fastest available
1084 * for 33MHZ PCI with proper bus-mastering operation */
1085
1086 .mclk = 72 * MHZ,
1087 .m1xclk = 144 * MHZ,
955}; 1088};
956 1089
957static struct sm501_platdata_fbsub sm501_pdata_fbsub = { 1090static struct sm501_platdata_fbsub sm501_pdata_fbsub = {
@@ -1126,6 +1259,8 @@ static struct platform_driver sm501_plat_drv = {
1126 }, 1259 },
1127 .probe = sm501_plat_probe, 1260 .probe = sm501_plat_probe,
1128 .remove = sm501_plat_remove, 1261 .remove = sm501_plat_remove,
1262 .suspend = sm501_plat_suspend,
1263 .resume = sm501_plat_resume,
1129}; 1264};
1130 1265
1131static int __init sm501_base_init(void) 1266static int __init sm501_base_init(void)
diff --git a/fs/ext2/super.c b/fs/ext2/super.c
index 16337bff0272..c9fd8cf6eaa9 100644
--- a/fs/ext2/super.c
+++ b/fs/ext2/super.c
@@ -1038,6 +1038,14 @@ static int ext2_remount (struct super_block * sb, int * flags, char * data)
1038 sb->s_flags = (sb->s_flags & ~MS_POSIXACL) | 1038 sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
1039 ((sbi->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0); 1039 ((sbi->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
1040 1040
1041 ext2_xip_verify_sb(sb); /* see if bdev supports xip, unset
1042 EXT2_MOUNT_XIP if not */
1043
1044 if ((ext2_use_xip(sb)) && (sb->s_blocksize != PAGE_SIZE)) {
1045 printk("XIP: Unsupported blocksize\n");
1046 goto restore_opts;
1047 }
1048
1041 es = sbi->s_es; 1049 es = sbi->s_es;
1042 if (((sbi->s_mount_opt & EXT2_MOUNT_XIP) != 1050 if (((sbi->s_mount_opt & EXT2_MOUNT_XIP) !=
1043 (old_mount_opt & EXT2_MOUNT_XIP)) && 1051 (old_mount_opt & EXT2_MOUNT_XIP)) &&
diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c
index a6cb6171c3af..2a85ddee4740 100644
--- a/fs/ext3/inode.c
+++ b/fs/ext3/inode.c
@@ -2677,8 +2677,10 @@ void ext3_read_inode(struct inode * inode)
2677 */ 2677 */
2678 ei->i_extra_isize = le16_to_cpu(raw_inode->i_extra_isize); 2678 ei->i_extra_isize = le16_to_cpu(raw_inode->i_extra_isize);
2679 if (EXT3_GOOD_OLD_INODE_SIZE + ei->i_extra_isize > 2679 if (EXT3_GOOD_OLD_INODE_SIZE + ei->i_extra_isize >
2680 EXT3_INODE_SIZE(inode->i_sb)) 2680 EXT3_INODE_SIZE(inode->i_sb)) {
2681 brelse (bh);
2681 goto bad_inode; 2682 goto bad_inode;
2683 }
2682 if (ei->i_extra_isize == 0) { 2684 if (ei->i_extra_isize == 0) {
2683 /* The extra space is currently unused. Use it. */ 2685 /* The extra space is currently unused. Use it. */
2684 ei->i_extra_isize = sizeof(struct ext3_inode) - 2686 ei->i_extra_isize = sizeof(struct ext3_inode) -
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 0bcf62a750ff..8416fa28c422 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -2673,8 +2673,10 @@ void ext4_read_inode(struct inode * inode)
2673 */ 2673 */
2674 ei->i_extra_isize = le16_to_cpu(raw_inode->i_extra_isize); 2674 ei->i_extra_isize = le16_to_cpu(raw_inode->i_extra_isize);
2675 if (EXT4_GOOD_OLD_INODE_SIZE + ei->i_extra_isize > 2675 if (EXT4_GOOD_OLD_INODE_SIZE + ei->i_extra_isize >
2676 EXT4_INODE_SIZE(inode->i_sb)) 2676 EXT4_INODE_SIZE(inode->i_sb)) {
2677 brelse (bh);
2677 goto bad_inode; 2678 goto bad_inode;
2679 }
2678 if (ei->i_extra_isize == 0) { 2680 if (ei->i_extra_isize == 0) {
2679 /* The extra space is currently unused. Use it. */ 2681 /* The extra space is currently unused. Use it. */
2680 ei->i_extra_isize = sizeof(struct ext4_inode) - 2682 ei->i_extra_isize = sizeof(struct ext4_inode) -
diff --git a/include/asm-um/bug.h b/include/asm-um/bug.h
index 3357c5e2468e..9e33b864c359 100644
--- a/include/asm-um/bug.h
+++ b/include/asm-um/bug.h
@@ -1,6 +1,6 @@
1#ifndef __UM_BUG_H 1#ifndef __UM_BUG_H
2#define __UM_BUG_H 2#define __UM_BUG_H
3 3
4#include <asm/arch/bug.h> 4#include <asm-generic/bug.h>
5 5
6#endif 6#endif
diff --git a/include/asm-um/common.lds.S b/include/asm-um/common.lds.S
index f5de80c31e88..e3f010bd12b3 100644
--- a/include/asm-um/common.lds.S
+++ b/include/asm-um/common.lds.S
@@ -20,6 +20,8 @@
20 __ex_table : { *(__ex_table) } 20 __ex_table : { *(__ex_table) }
21 __stop___ex_table = .; 21 __stop___ex_table = .;
22 22
23 BUG_TABLE
24
23 __uml_setup_start = .; 25 __uml_setup_start = .;
24 .uml.setup.init : { *(.uml.setup.init) } 26 .uml.setup.init : { *(.uml.setup.init) }
25 __uml_setup_end = .; 27 __uml_setup_end = .;
diff --git a/include/asm-um/paravirt.h b/include/asm-um/paravirt.h
new file mode 100644
index 000000000000..9d6aaad80b5f
--- /dev/null
+++ b/include/asm-um/paravirt.h
@@ -0,0 +1,6 @@
1#ifndef __UM_PARAVIRT_H
2#define __UM_PARAVIRT_H
3
4#include "asm/arch/paravirt.h"
5
6#endif
diff --git a/include/linux/fs.h b/include/linux/fs.h
index b3ae77cccbb6..6a41f4cab14c 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1211,6 +1211,14 @@ static inline void mark_inode_dirty_sync(struct inode *inode)
1211 __mark_inode_dirty(inode, I_DIRTY_SYNC); 1211 __mark_inode_dirty(inode, I_DIRTY_SYNC);
1212} 1212}
1213 1213
1214/**
1215 * inc_nlink - directly increment an inode's link count
1216 * @inode: inode
1217 *
1218 * This is a low-level filesystem helper to replace any
1219 * direct filesystem manipulation of i_nlink. Currently,
1220 * it is only here for parity with dec_nlink().
1221 */
1214static inline void inc_nlink(struct inode *inode) 1222static inline void inc_nlink(struct inode *inode)
1215{ 1223{
1216 inode->i_nlink++; 1224 inode->i_nlink++;
@@ -1222,11 +1230,30 @@ static inline void inode_inc_link_count(struct inode *inode)
1222 mark_inode_dirty(inode); 1230 mark_inode_dirty(inode);
1223} 1231}
1224 1232
1233/**
1234 * drop_nlink - directly drop an inode's link count
1235 * @inode: inode
1236 *
1237 * This is a low-level filesystem helper to replace any
1238 * direct filesystem manipulation of i_nlink. In cases
1239 * where we are attempting to track writes to the
1240 * filesystem, a decrement to zero means an imminent
1241 * write when the file is truncated and actually unlinked
1242 * on the filesystem.
1243 */
1225static inline void drop_nlink(struct inode *inode) 1244static inline void drop_nlink(struct inode *inode)
1226{ 1245{
1227 inode->i_nlink--; 1246 inode->i_nlink--;
1228} 1247}
1229 1248
1249/**
1250 * clear_nlink - directly zero an inode's link count
1251 * @inode: inode
1252 *
1253 * This is a low-level filesystem helper to replace any
1254 * direct filesystem manipulation of i_nlink. See
1255 * drop_nlink() for why we care about i_nlink hitting zero.
1256 */
1230static inline void clear_nlink(struct inode *inode) 1257static inline void clear_nlink(struct inode *inode)
1231{ 1258{
1232 inode->i_nlink = 0; 1259 inode->i_nlink = 0;
diff --git a/include/linux/slab.h b/include/linux/slab.h
index a015236cc572..cebcd3833c76 100644
--- a/include/linux/slab.h
+++ b/include/linux/slab.h
@@ -82,8 +82,8 @@ static inline void *kmem_cache_alloc_node(struct kmem_cache *cachep,
82 * to do various tricks to work around compiler limitations in order to 82 * to do various tricks to work around compiler limitations in order to
83 * ensure proper constant folding. 83 * ensure proper constant folding.
84 */ 84 */
85#define KMALLOC_SHIFT_HIGH ((MAX_ORDER + PAGE_SHIFT) <= 25 ? \ 85#define KMALLOC_SHIFT_HIGH ((MAX_ORDER + PAGE_SHIFT - 1) <= 25 ? \
86 (MAX_ORDER + PAGE_SHIFT) : 25) 86 (MAX_ORDER + PAGE_SHIFT - 1) : 25)
87 87
88#define KMALLOC_MAX_SIZE (1UL << KMALLOC_SHIFT_HIGH) 88#define KMALLOC_MAX_SIZE (1UL << KMALLOC_SHIFT_HIGH)
89#define KMALLOC_MAX_ORDER (KMALLOC_SHIFT_HIGH - PAGE_SHIFT) 89#define KMALLOC_MAX_ORDER (KMALLOC_SHIFT_HIGH - PAGE_SHIFT)
diff --git a/include/linux/sm501-regs.h b/include/linux/sm501-regs.h
index cc9be4a11861..014e73b31fc0 100644
--- a/include/linux/sm501-regs.h
+++ b/include/linux/sm501-regs.h
@@ -64,6 +64,11 @@
64#define SM501_DEBUG_CONTROL (0x000034) 64#define SM501_DEBUG_CONTROL (0x000034)
65 65
66/* power management */ 66/* power management */
67#define SM501_POWERMODE_P2X_SRC (1<<29)
68#define SM501_POWERMODE_V2X_SRC (1<<20)
69#define SM501_POWERMODE_M_SRC (1<<12)
70#define SM501_POWERMODE_M1_SRC (1<<4)
71
67#define SM501_CURRENT_GATE (0x000038) 72#define SM501_CURRENT_GATE (0x000038)
68#define SM501_CURRENT_CLOCK (0x00003C) 73#define SM501_CURRENT_CLOCK (0x00003C)
69#define SM501_POWER_MODE_0_GATE (0x000040) 74#define SM501_POWER_MODE_0_GATE (0x000040)
@@ -104,6 +109,9 @@
104#define SM501_DEVICEID (0x000060) 109#define SM501_DEVICEID (0x000060)
105/* 0x050100A0 */ 110/* 0x050100A0 */
106 111
112#define SM501_DEVICEID_SM501 (0x05010000)
113#define SM501_DEVICEID_IDMASK (0xffff0000)
114
107#define SM501_PLLCLOCK_COUNT (0x000064) 115#define SM501_PLLCLOCK_COUNT (0x000064)
108#define SM501_MISC_TIMING (0x000068) 116#define SM501_MISC_TIMING (0x000068)
109#define SM501_CURRENT_SDRAM_CLOCK (0x00006C) 117#define SM501_CURRENT_SDRAM_CLOCK (0x00006C)
diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c
index 74cc0fc6bb81..ce61f423542c 100644
--- a/kernel/auditfilter.c
+++ b/kernel/auditfilter.c
@@ -947,7 +947,7 @@ static void audit_update_watch(struct audit_parent *parent,
947 947
948 /* If the update involves invalidating rules, do the inode-based 948 /* If the update involves invalidating rules, do the inode-based
949 * filtering now, so we don't omit records. */ 949 * filtering now, so we don't omit records. */
950 if (invalidating && 950 if (invalidating && current->audit_context &&
951 audit_filter_inodes(current, current->audit_context) == AUDIT_RECORD_CONTEXT) 951 audit_filter_inodes(current, current->audit_context) == AUDIT_RECORD_CONTEXT)
952 audit_set_auditable(current->audit_context); 952 audit_set_auditable(current->audit_context);
953 953
diff --git a/kernel/nsproxy.c b/kernel/nsproxy.c
index 1bc4b55241a8..9e83b589f754 100644
--- a/kernel/nsproxy.c
+++ b/kernel/nsproxy.c
@@ -145,13 +145,11 @@ void free_nsproxy(struct nsproxy *ns)
145 145
146/* 146/*
147 * Called from unshare. Unshare all the namespaces part of nsproxy. 147 * Called from unshare. Unshare all the namespaces part of nsproxy.
148 * On sucess, returns the new nsproxy and a reference to old nsproxy 148 * On success, returns the new nsproxy.
149 * to make sure it stays around.
150 */ 149 */
151int unshare_nsproxy_namespaces(unsigned long unshare_flags, 150int unshare_nsproxy_namespaces(unsigned long unshare_flags,
152 struct nsproxy **new_nsp, struct fs_struct *new_fs) 151 struct nsproxy **new_nsp, struct fs_struct *new_fs)
153{ 152{
154 struct nsproxy *old_ns = current->nsproxy;
155 int err = 0; 153 int err = 0;
156 154
157 if (!(unshare_flags & (CLONE_NEWNS | CLONE_NEWUTS | CLONE_NEWIPC))) 155 if (!(unshare_flags & (CLONE_NEWNS | CLONE_NEWUTS | CLONE_NEWIPC)))
@@ -170,13 +168,9 @@ int unshare_nsproxy_namespaces(unsigned long unshare_flags,
170 if (!capable(CAP_SYS_ADMIN)) 168 if (!capable(CAP_SYS_ADMIN))
171 return -EPERM; 169 return -EPERM;
172 170
173 get_nsproxy(old_ns);
174
175 *new_nsp = create_new_namespaces(unshare_flags, current, 171 *new_nsp = create_new_namespaces(unshare_flags, current,
176 new_fs ? new_fs : current->fs); 172 new_fs ? new_fs : current->fs);
177 if (IS_ERR(*new_nsp)) { 173 if (IS_ERR(*new_nsp))
178 err = PTR_ERR(*new_nsp); 174 err = PTR_ERR(*new_nsp);
179 put_nsproxy(old_ns);
180 }
181 return err; 175 return err;
182} 176}
diff --git a/kernel/sched.c b/kernel/sched.c
index a7475913b009..50e1a3122699 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -2938,17 +2938,21 @@ static void idle_balance(int this_cpu, struct rq *this_rq)
2938 unsigned long next_balance = jiffies + 60 * HZ; 2938 unsigned long next_balance = jiffies + 60 * HZ;
2939 2939
2940 for_each_domain(this_cpu, sd) { 2940 for_each_domain(this_cpu, sd) {
2941 if (sd->flags & SD_BALANCE_NEWIDLE) { 2941 unsigned long interval;
2942
2943 if (!(sd->flags & SD_LOAD_BALANCE))
2944 continue;
2945
2946 if (sd->flags & SD_BALANCE_NEWIDLE)
2942 /* If we've pulled tasks over stop searching: */ 2947 /* If we've pulled tasks over stop searching: */
2943 pulled_task = load_balance_newidle(this_cpu, 2948 pulled_task = load_balance_newidle(this_cpu,
2944 this_rq, sd); 2949 this_rq, sd);
2945 if (time_after(next_balance, 2950
2946 sd->last_balance + sd->balance_interval)) 2951 interval = msecs_to_jiffies(sd->balance_interval);
2947 next_balance = sd->last_balance 2952 if (time_after(next_balance, sd->last_balance + interval))
2948 + sd->balance_interval; 2953 next_balance = sd->last_balance + interval;
2949 if (pulled_task) 2954 if (pulled_task)
2950 break; 2955 break;
2951 }
2952 } 2956 }
2953 if (!pulled_task) 2957 if (!pulled_task)
2954 /* 2958 /*
diff --git a/mm/slub.c b/mm/slub.c
index fa28b1623644..202049a45764 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -3042,13 +3042,15 @@ static int list_locations(struct kmem_cache *s, char *buf,
3042 n += sprintf(buf + n, " pid=%ld", 3042 n += sprintf(buf + n, " pid=%ld",
3043 l->min_pid); 3043 l->min_pid);
3044 3044
3045 if (num_online_cpus() > 1 && !cpus_empty(l->cpus)) { 3045 if (num_online_cpus() > 1 && !cpus_empty(l->cpus) &&
3046 n < PAGE_SIZE - 60) {
3046 n += sprintf(buf + n, " cpus="); 3047 n += sprintf(buf + n, " cpus=");
3047 n += cpulist_scnprintf(buf + n, PAGE_SIZE - n - 50, 3048 n += cpulist_scnprintf(buf + n, PAGE_SIZE - n - 50,
3048 l->cpus); 3049 l->cpus);
3049 } 3050 }
3050 3051
3051 if (num_online_nodes() > 1 && !nodes_empty(l->nodes)) { 3052 if (num_online_nodes() > 1 && !nodes_empty(l->nodes) &&
3053 n < PAGE_SIZE - 60) {
3052 n += sprintf(buf + n, " nodes="); 3054 n += sprintf(buf + n, " nodes=");
3053 n += nodelist_scnprintf(buf + n, PAGE_SIZE - n - 50, 3055 n += nodelist_scnprintf(buf + n, PAGE_SIZE - n - 50,
3054 l->nodes); 3056 l->nodes);
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index aea90d30d229..277c32647f36 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -9,7 +9,7 @@ use strict;
9my $P = $0; 9my $P = $0;
10$P =~ s@.*/@@g; 10$P =~ s@.*/@@g;
11 11
12my $V = '0.04'; 12my $V = '0.06';
13 13
14use Getopt::Long qw(:config no_auto_abbrev); 14use Getopt::Long qw(:config no_auto_abbrev);
15 15
@@ -17,11 +17,13 @@ my $quiet = 0;
17my $tree = 1; 17my $tree = 1;
18my $chk_signoff = 1; 18my $chk_signoff = 1;
19my $chk_patch = 1; 19my $chk_patch = 1;
20my $tst_type = 0;
20GetOptions( 21GetOptions(
21 'q|quiet' => \$quiet, 22 'q|quiet' => \$quiet,
22 'tree!' => \$tree, 23 'tree!' => \$tree,
23 'signoff!' => \$chk_signoff, 24 'signoff!' => \$chk_signoff,
24 'patch!' => \$chk_patch, 25 'patch!' => \$chk_patch,
26 'test-type!' => \$tst_type,
25) or exit; 27) or exit;
26 28
27my $exit = 0; 29my $exit = 0;
@@ -151,7 +153,7 @@ sub sanitise_line {
151} 153}
152 154
153sub ctx_block_get { 155sub ctx_block_get {
154 my ($linenr, $remain, $outer) = @_; 156 my ($linenr, $remain, $outer, $open, $close) = @_;
155 my $line; 157 my $line;
156 my $start = $linenr - 1; 158 my $start = $linenr - 1;
157 my $blk = ''; 159 my $blk = '';
@@ -165,8 +167,8 @@ sub ctx_block_get {
165 167
166 $blk .= $rawlines[$line]; 168 $blk .= $rawlines[$line];
167 169
168 @o = ($blk =~ /\{/g); 170 @o = ($blk =~ /$open/g);
169 @c = ($blk =~ /\}/g); 171 @c = ($blk =~ /$close/g);
170 172
171 if (!$outer || (scalar(@o) - scalar(@c)) == 1) { 173 if (!$outer || (scalar(@o) - scalar(@c)) == 1) {
172 push(@res, $rawlines[$line]); 174 push(@res, $rawlines[$line]);
@@ -180,12 +182,17 @@ sub ctx_block_get {
180sub ctx_block_outer { 182sub ctx_block_outer {
181 my ($linenr, $remain) = @_; 183 my ($linenr, $remain) = @_;
182 184
183 return ctx_block_get($linenr, $remain, 1); 185 return ctx_block_get($linenr, $remain, 1, '\{', '\}');
184} 186}
185sub ctx_block { 187sub ctx_block {
186 my ($linenr, $remain) = @_; 188 my ($linenr, $remain) = @_;
187 189
188 return ctx_block_get($linenr, $remain, 0); 190 return ctx_block_get($linenr, $remain, 0, '\{', '\}');
191}
192sub ctx_statement {
193 my ($linenr, $remain) = @_;
194
195 return ctx_block_get($linenr, $remain, 0, '\(', '\)');
189} 196}
190 197
191sub ctx_locate_comment { 198sub ctx_locate_comment {
@@ -264,9 +271,44 @@ sub process {
264 my $in_comment = 0; 271 my $in_comment = 0;
265 my $first_line = 0; 272 my $first_line = 0;
266 273
274 my $Ident = qr{[A-Za-z\d_]+};
275 my $Storage = qr{extern|static};
276 my $Sparse = qr{__user|__kernel|__force|__iomem};
277 my $NonptrType = qr{
278 \b
279 (?:const\s+)?
280 (?:unsigned\s+)?
281 (?:
282 void|
283 char|
284 short|
285 int|
286 long|
287 unsigned|
288 float|
289 double|
290 long\s+int|
291 long\s+long|
292 long\s+long\s+int|
293 struct\s+$Ident|
294 union\s+$Ident|
295 ${Ident}_t
296 )
297 (?:\s+$Sparse)*
298 \b
299 }x;
300 my $Type = qr{
301 \b$NonptrType\b
302 (?:\s*\*+\s*const|\s*\*+)?
303 }x;
304 my $Declare = qr{(?:$Storage\s+)?$Type};
305 my $Attribute = qr{__read_mostly|__init|__initdata};
306
267 foreach my $line (@lines) { 307 foreach my $line (@lines) {
268 $linenr++; 308 $linenr++;
269 309
310 my $rawline = $line;
311
270#extract the filename as it passes 312#extract the filename as it passes
271 if ($line=~/^\+\+\+\s+(\S+)/) { 313 if ($line=~/^\+\+\+\s+(\S+)/) {
272 $realfile=$1; 314 $realfile=$1;
@@ -293,6 +335,7 @@ sub process {
293# blank context lines so we need to count that too. 335# blank context lines so we need to count that too.
294 if ($line =~ /^( |\+|$)/) { 336 if ($line =~ /^( |\+|$)/) {
295 $realline++; 337 $realline++;
338 $realcnt-- if ($realcnt != 0);
296 339
297 # track any sort of multi-line comment. Obviously if 340 # track any sort of multi-line comment. Obviously if
298 # the added text or context do not include the whole 341 # the added text or context do not include the whole
@@ -317,8 +360,9 @@ sub process {
317 # Track the previous line. 360 # Track the previous line.
318 ($prevline, $stashline) = ($stashline, $line); 361 ($prevline, $stashline) = ($stashline, $line);
319 ($previndent, $stashindent) = ($stashindent, $indent); 362 ($previndent, $stashindent) = ($stashindent, $indent);
363 } elsif ($realcnt == 1) {
364 $realcnt--;
320 } 365 }
321 $realcnt-- if ($realcnt != 0);
322 366
323#make up the handle for any error we report on this line 367#make up the handle for any error we report on this line
324 $here = "#$linenr: "; 368 $here = "#$linenr: ";
@@ -329,14 +373,11 @@ sub process {
329 my $hereprev = "$here\n$prevline\n$line\n\n"; 373 my $hereprev = "$here\n$prevline\n$line\n\n";
330 374
331#check the patch for a signoff: 375#check the patch for a signoff:
332 if ($line =~ /^\s*Signed-off-by:\s/) { 376 if ($line =~ /^\s*signed-off-by:/i) {
333 $signoff++;
334
335 } elsif ($line =~ /^\s*signed-off-by:/i) {
336 # This is a signoff, if ugly, so do not double report. 377 # This is a signoff, if ugly, so do not double report.
337 $signoff++; 378 $signoff++;
338 if (!($line =~ /^\s*Signed-off-by:/)) { 379 if (!($line =~ /^\s*Signed-off-by:/)) {
339 print "use Signed-off-by:\n"; 380 print "Signed-off-by: is the preferred form\n";
340 print "$herecurr"; 381 print "$herecurr";
341 $clean = 0; 382 $clean = 0;
342 } 383 }
@@ -361,7 +402,7 @@ sub process {
361 next if ($realfile !~ /\.(h|c|s|S|pl|sh)$/); 402 next if ($realfile !~ /\.(h|c|s|S|pl|sh)$/);
362 403
363#trailing whitespace 404#trailing whitespace
364 if ($line=~/\+.*\S\s+$/) { 405 if ($line =~ /^\+.*\S\s+$/ || $line =~ /^\+\s+$/) {
365 my $herevet = "$here\n" . cat_vet($line) . "\n\n"; 406 my $herevet = "$here\n" . cat_vet($line) . "\n\n";
366 print "trailing whitespace\n"; 407 print "trailing whitespace\n";
367 print "$herevet"; 408 print "$herevet";
@@ -392,17 +433,20 @@ sub process {
392 # 433 #
393 next if ($in_comment); 434 next if ($in_comment);
394 435
395 # Remove comments from the line before processing. 436# Remove comments from the line before processing.
396 $line =~ s@/\*.*\*/@@g; 437 $line =~ s@/\*.*\*/@@g;
397 $line =~ s@/\*.*@@; 438 $line =~ s@/\*.*@@;
398 $line =~ s@.*\*/@@; 439 $line =~ s@.*\*/@@;
399 440
400 # 441# Standardise the strings and chars within the input to simplify matching.
401 # Checks which may be anchored in the context. 442 $line = sanitise_line($line);
402 #
403 443
404 # Check for switch () and associated case and default 444#
405 # statements should be at the same indent. 445# Checks which may be anchored in the context.
446#
447
448# Check for switch () and associated case and default
449# statements should be at the same indent.
406 if ($line=~/\bswitch\s*\(.*\)/) { 450 if ($line=~/\bswitch\s*\(.*\)/) {
407 my $err = ''; 451 my $err = '';
408 my $sep = ''; 452 my $sep = '';
@@ -428,9 +472,30 @@ sub process {
428#ignore lines not being added 472#ignore lines not being added
429 if ($line=~/^[^\+]/) {next;} 473 if ($line=~/^[^\+]/) {next;}
430 474
431 # 475# TEST: allow direct testing of the type matcher.
432 # Checks which are anchored on the added line. 476 if ($tst_type && $line =~ /^.$Declare$/) {
433 # 477 print "TEST: is type $Declare\n";
478 print "$herecurr";
479 $clean = 0;
480 next;
481 }
482
483#
484# Checks which are anchored on the added line.
485#
486
487# check for malformed paths in #include statements (uses RAW line)
488 if ($rawline =~ m{^.#\s*include\s+[<"](.*)[">]}) {
489 my $path = $1;
490 if ($path =~ m{//}) {
491 print "malformed #include filename\n";
492 print "$herecurr";
493 $clean = 0;
494 }
495 # Sanitise this special form of string.
496 $path = 'X' x length($path);
497 $line =~ s{\<.*\>}{<$path>};
498 }
434 499
435# no C99 // comments 500# no C99 // comments
436 if ($line =~ m{//}) { 501 if ($line =~ m{//}) {
@@ -441,59 +506,55 @@ sub process {
441 # Remove C99 comments. 506 # Remove C99 comments.
442 $line =~ s@//.*@@; 507 $line =~ s@//.*@@;
443 508
444 # Standardise the strings and chars within the input
445 # to simplify matching.
446 $line = sanitise_line($line);
447
448#EXPORT_SYMBOL should immediately follow its function closing }. 509#EXPORT_SYMBOL should immediately follow its function closing }.
449 if (($line =~ /EXPORT_SYMBOL.*\(.*\)/) || 510 if (($line =~ /EXPORT_SYMBOL.*\((.*)\)/) ||
450 ($line =~ /EXPORT_UNUSED_SYMBOL.*\(.*\)/)) { 511 ($line =~ /EXPORT_UNUSED_SYMBOL.*\((.*)\)/)) {
512 my $name = $1;
451 if (($prevline !~ /^}/) && 513 if (($prevline !~ /^}/) &&
452 ($prevline !~ /^\+}/) && 514 ($prevline !~ /^\+}/) &&
453 ($prevline !~ /^ }/)) { 515 ($prevline !~ /^ }/) &&
454 print "EXPORT_SYMBOL(func); should immediately follow its function\n"; 516 ($prevline !~ /\s$name(?:\s+$Attribute)?\s*(?:;|=)/)) {
517 print "EXPORT_SYMBOL(foo); should immediately follow its function/variable\n";
455 print "$herecurr"; 518 print "$herecurr";
456 $clean = 0; 519 $clean = 0;
457 } 520 }
458 } 521 }
459 522
460 # check for static initialisers. 523# check for static initialisers.
461 if ($line=~/\s*static\s.*=\s+(0|NULL);/) { 524 if ($line=~/\s*static\s.*=\s+(0|NULL);/) {
462 print "do not initialise statics to 0 or NULL\n"; 525 print "do not initialise statics to 0 or NULL\n";
463 print "$herecurr"; 526 print "$herecurr";
464 $clean = 0; 527 $clean = 0;
465 } 528 }
466 529
467 # check for new typedefs. 530# check for new typedefs, only function parameters and sparse annotations
468 if ($line=~/\s*typedef\s/) { 531# make sense.
532 if ($line =~ /\btypedef\s/ &&
533 $line !~ /\btypedef\s+$Type\s+\(\s*$Ident\s*\)\s*\(/ &&
534 $line !~ /\b__bitwise(?:__|)\b/) {
469 print "do not add new typedefs\n"; 535 print "do not add new typedefs\n";
470 print "$herecurr"; 536 print "$herecurr";
471 $clean = 0; 537 $clean = 0;
472 } 538 }
473 539
474# * goes on variable not on type 540# * goes on variable not on type
475 my $type = '(?:char|short|int|long|unsigned|float|double|' . 541 if ($line =~ m{\($NonptrType(\*+)(?:\s+const)?\)}) {
476 'struct\s+[A-Za-z\d_]+|' . 542 print "\"(foo$1)\" should be \"(foo $1)\"\n";
477 'union\s+[A-Za-z\d_]+)';
478
479 if ($line =~ m{[A-Za-z\d_]+(\*+) [A-Za-z\d_]+}) {
480 print "\"foo$1 bar\" should be \"foo $1bar\"\n";
481 print "$herecurr"; 543 print "$herecurr";
482 $clean = 0; 544 $clean = 0;
483 } 545
484 if ($line =~ m{$type (\*) [A-Za-z\d_]+} || 546 } elsif ($line =~ m{\($NonptrType\s+(\*+)(?!\s+const)\s+\)}) {
485 $line =~ m{[A-Za-z\d_]+ (\*\*+) [A-Za-z\d_]+}) { 547 print "\"(foo $1 )\" should be \"(foo $1)\"\n";
486 print "\"foo $1 bar\" should be \"foo $1bar\"\n";
487 print "$herecurr"; 548 print "$herecurr";
488 $clean = 0; 549 $clean = 0;
489 } 550
490 if ($line =~ m{\([A-Za-z\d_\s]+[A-Za-z\d_](\*+)\)}) { 551 } elsif ($line =~ m{$NonptrType(\*+)(?:\s+const)?\s+[A-Za-z\d_]+}) {
491 print "\"(foo$1)\" should be \"(foo $1)\"\n"; 552 print "\"foo$1 bar\" should be \"foo $1bar\"\n";
492 print "$herecurr"; 553 print "$herecurr";
493 $clean = 0; 554 $clean = 0;
494 } 555
495 if ($line =~ m{\([A-Za-z\d_\s]+[A-Za-z\d_]\s+(\*+)\s+\)}) { 556 } elsif ($line =~ m{$NonptrType\s+(\*+)(?!\s+const)\s+[A-Za-z\d_]+}) {
496 print "\"(foo $1 )\" should be \"(foo $1)\"\n"; 557 print "\"foo $1 bar\" should be \"foo $1bar\"\n";
497 print "$herecurr"; 558 print "$herecurr";
498 $clean = 0; 559 $clean = 0;
499 } 560 }
@@ -530,13 +591,16 @@ sub process {
530 } 591 }
531 } 592 }
532 593
533#function brace can't be on same line, except for #defines of do while, or if closed on same line 594# function brace can't be on same line, except for #defines of do while,
534 if (($line=~/[A-Za-z\d_]+\**\s+\**[A-Za-z\d_]+\(.*\).* {/) and 595# or if closed on same line
596 if (($line=~/$Type\s*[A-Za-z\d_]+\(.*\).* {/) and
535 !($line=~/\#define.*do\s{/) and !($line=~/}/)) { 597 !($line=~/\#define.*do\s{/) and !($line=~/}/)) {
536 print "braces following function declarations go on the next line\n"; 598 print "braces following function declarations go on the next line\n";
537 print "$herecurr"; 599 print "$herecurr";
538 $clean = 0; 600 $clean = 0;
539 } 601 }
602
603# Check operator spacing.
540 # Note we expand the line with the leading + as the real 604 # Note we expand the line with the leading + as the real
541 # line will be displayed with the leading + and the tabs 605 # line will be displayed with the leading + and the tabs
542 # will therefore also expand that way. 606 # will therefore also expand that way.
@@ -544,7 +608,6 @@ sub process {
544 $opline = expand_tabs($opline); 608 $opline = expand_tabs($opline);
545 $opline =~ s/^./ /; 609 $opline =~ s/^./ /;
546 if (!($line=~/\#\s*include/)) { 610 if (!($line=~/\#\s*include/)) {
547 # Check operator spacing.
548 my @elements = split(/(<<=|>>=|<=|>=|==|!=|\+=|-=|\*=|\/=|%=|\^=|\|=|&=|->|<<|>>|<|>|=|!|~|&&|\|\||,|\^|\+\+|--|;|&|\||\+|-|\*|\/\/|\/)/, $opline); 611 my @elements = split(/(<<=|>>=|<=|>=|==|!=|\+=|-=|\*=|\/=|%=|\^=|\|=|&=|->|<<|>>|<|>|=|!|~|&&|\|\||,|\^|\+\+|--|;|&|\||\+|-|\*|\/\/|\/)/, $opline);
549 my $off = 0; 612 my $off = 0;
550 for (my $n = 0; $n < $#elements; $n += 2) { 613 for (my $n = 0; $n < $#elements; $n += 2) {
@@ -572,8 +635,8 @@ sub process {
572 # Pick up the preceeding and succeeding characters. 635 # Pick up the preceeding and succeeding characters.
573 my $ca = substr($opline, $off - 1, 1); 636 my $ca = substr($opline, $off - 1, 1);
574 my $cc = ''; 637 my $cc = '';
575 if (length($opline) > ($off + length($elements[$n]))) { 638 if (length($opline) >= ($off + length($elements[$n + 1]))) {
576 $cc = substr($opline, $off + 1 + length($elements[$n]), 1); 639 $cc = substr($opline, $off + length($elements[$n + 1]));
577 } 640 }
578 641
579 my $ctx = "${a}x${c}"; 642 my $ctx = "${a}x${c}";
@@ -585,8 +648,16 @@ sub process {
585 648
586 ##print "<$s1:$op:$s2> <$elements[$n]:$elements[$n + 1]:$elements[$n + 2]>\n"; 649 ##print "<$s1:$op:$s2> <$elements[$n]:$elements[$n + 1]:$elements[$n + 2]>\n";
587 650
588 # We need ; as an operator. // is a comment. 651 # ; should have either the end of line or a space or \ after it
589 if ($op eq ';' or $op eq '//') { 652 if ($op eq ';') {
653 if ($ctx !~ /.x[WE]/ && $cc !~ /^\\/) {
654 print "need space after that '$op' $at\n";
655 print "$hereptr";
656 $clean = 0;
657 }
658
659 # // is a comment
660 } elsif ($op eq '//') {
590 661
591 # -> should have no spaces 662 # -> should have no spaces
592 } elsif ($op eq '->') { 663 } elsif ($op eq '->') {
@@ -598,7 +669,7 @@ sub process {
598 669
599 # , must have a space on the right. 670 # , must have a space on the right.
600 } elsif ($op eq ',') { 671 } elsif ($op eq ',') {
601 if ($ctx !~ /.xW|.xE/) { 672 if ($ctx !~ /.xW|.xE/ && $cc !~ /^}/) {
602 print "need space after that '$op' $at\n"; 673 print "need space after that '$op' $at\n";
603 print "$hereptr"; 674 print "$hereptr";
604 $clean = 0; 675 $clean = 0;
@@ -619,11 +690,16 @@ sub process {
619 690
620 # unary ++ and unary -- are allowed no space on one side. 691 # unary ++ and unary -- are allowed no space on one side.
621 } elsif ($op eq '++' or $op eq '--') { 692 } elsif ($op eq '++' or $op eq '--') {
622 if ($ctx !~ /[WOB]x[^W]|[^W]x[WOB]/) { 693 if ($ctx !~ /[WOB]x[^W]/ && $ctx !~ /[^W]x[WOBE]/) {
623 print "need space one side of that '$op' $at\n"; 694 print "need space one side of that '$op' $at\n";
624 print "$hereptr"; 695 print "$hereptr";
625 $clean = 0; 696 $clean = 0;
626 } 697 }
698 if ($ctx =~ /Wx./ && $cc =~ /^;/) {
699 print "no space before that '$op' $at\n";
700 print "$hereptr";
701 $clean = 0;
702 }
627 703
628 # & is both unary and binary 704 # & is both unary and binary
629 # unary: 705 # unary:
@@ -651,12 +727,12 @@ sub process {
651 # 727 #
652 } elsif ($op eq '*') { 728 } elsif ($op eq '*') {
653 if ($ca eq '*') { 729 if ($ca eq '*') {
654 if ($cc =~ /\s/) { 730 if ($cc =~ /^\s(?!\s*const)/) {
655 print "no space after that '$op' $at\n"; 731 print "no space after that '$op' $at\n";
656 print "$hereptr"; 732 print "$hereptr";
657 $clean = 0; 733 $clean = 0;
658 } 734 }
659 } elsif ($ctx !~ /VxV|[EW]x[WE]|[EWB]x[VO]|OxV|WxB/) { 735 } elsif ($ctx !~ /VxV|[EW]x[WE]|[EWB]x[VO]|OxV|WxB|BxB/) {
660 print "need space before that '$op' $at\n"; 736 print "need space before that '$op' $at\n";
661 print "$hereptr"; 737 print "$hereptr";
662 $clean = 0; 738 $clean = 0;
@@ -705,9 +781,9 @@ sub process {
705 } 781 }
706 782
707# Check for illegal assignment in if conditional. 783# Check for illegal assignment in if conditional.
708 if ($line=~/\b(if|while)\s*\(.*[^<>!=]=[^=].*\)/) { 784 if ($line=~/\bif\s*\(.*[^<>!=]=[^=].*\)/) {
709 #next if ($line=~/\".*\Q$op\E.*\"/ or $line=~/\'\Q$op\E\'/); 785 #next if ($line=~/\".*\Q$op\E.*\"/ or $line=~/\'\Q$op\E\'/);
710 print "do not use assignment in condition\n"; 786 print "do not use assignment in if condition\n";
711 print "$herecurr"; 787 print "$herecurr";
712 $clean = 0; 788 $clean = 0;
713 } 789 }
@@ -735,8 +811,8 @@ sub process {
735 $clean = 0; 811 $clean = 0;
736 } 812 }
737 813
738#warn if <asm/foo.h> is #included and <linux/foo.h> is available. 814#warn if <asm/foo.h> is #included and <linux/foo.h> is available (uses RAW line)
739 if ($tree && $line =~ qr|\s*\#\s*include\s*\<asm\/(.*)\.h\>|) { 815 if ($tree && $rawline =~ m{^.\#\s*include\s*\<asm\/(.*)\.h\>}) {
740 my $checkfile = "include/linux/$1.h"; 816 my $checkfile = "include/linux/$1.h";
741 if (-f $checkfile) { 817 if (-f $checkfile) {
742 print "Use #include <linux/$1.h> instead of <asm/$1.h>\n"; 818 print "Use #include <linux/$1.h> instead of <asm/$1.h>\n";
@@ -745,8 +821,9 @@ sub process {
745 } 821 }
746 } 822 }
747 823
748#if/while/etc brace do not go on next line, unless #defining a do while loop, or if that brace on the next line is for something else 824# if/while/etc brace do not go on next line, unless defining a do while loop,
749 if ($prevline=~/\b(if|while|for|switch)\s*\(/) { 825# or if that brace on the next line is for something else
826 if ($prevline=~/\b(?:(if|while|for|switch)\s*\(|do\b|else\b)/) {
750 my @opened = $prevline=~/\(/g; 827 my @opened = $prevline=~/\(/g;
751 my @closed = $prevline=~/\)/g; 828 my @closed = $prevline=~/\)/g;
752 my $nr_line = $linenr; 829 my $nr_line = $linenr;
@@ -766,26 +843,56 @@ sub process {
766 @closed = $prevline=~/\)/g; 843 @closed = $prevline=~/\)/g;
767 } 844 }
768 845
769 if (($prevline=~/\b(if|while|for|switch)\s*\(.*\)\s*$/) and ($next_line=~/{/) and 846 if (($prevline=~/\b(?:(if|while|for|switch)\s*\(.*\)|do|else)\s*$/) and ($next_line=~/{/) and
770 !($next_line=~/\b(if|while|for)/) and !($next_line=~/\#define.*do.*while/)) { 847 !($next_line=~/\b(?:if|while|for|switch|do|else)\b/) and !($next_line=~/\#define.*do.*while/)) {
771 print "That { should be on the previous line\n"; 848 print "That { should be on the previous line\n";
772 print "$here\n$display_segment\n$next_line\n\n"; 849 print "$here\n$display_segment\n$next_line\n\n";
773 $clean = 0; 850 $clean = 0;
774 } 851 }
775 } 852 }
776 853
777#multiline macros should be enclosed in a do while loop 854# if and else should not have general statements after it
778 if (($prevline=~/\#define.*\\/) and !($prevline=~/do\s+{/) and 855 if ($line =~ /^.\s*(?:}\s*)?else\b(.*)/ &&
779 !($prevline=~/\(\{/) and ($line=~/;\s*\\/) and 856 $1 !~ /^\s*(?:\sif|{|$)/) {
780 !($line=~/do.*{/) and !($line=~/\(\{/)) { 857 print "trailing statements should be on next line\n";
781 print "Macros with multiple statements should be enclosed in a do - while loop\n"; 858 print "$herecurr";
782 print "$hereprev";
783 $clean = 0; 859 $clean = 0;
784 } 860 }
785 861
786# don't include deprecated include files 862# multi-statement macros should be enclosed in a do while loop, grab the
863# first statement and ensure its the whole macro if its not enclosed
864# in a known goot container
865 if (($prevline=~/\#define.*\\/) and
866 !($prevline=~/do\s+{/) and !($prevline=~/\(\{/) and
867 !($line=~/do.*{/) and !($line=~/\(\{/) and
868 !($line=~/^.\s*$Declare\s/)) {
869 # Grab the first statement, if that is the entire macro
870 # its ok. This may start either on the #define line
871 # or the one below.
872 my $ln = $linenr;
873 my $cnt = $realcnt;
874
875 # If the macro starts on the define line start there.
876 if ($prevline !~ m{^.#\s*define\s*$Ident(?:\([^\)]*\))?\s*\\\s*$}) {
877 $ln--;
878 $cnt++;
879 }
880 my $ctx = join('', ctx_statement($ln, $cnt));
881
882 if ($ctx =~ /\\$/) {
883 if ($ctx =~ /;/) {
884 print "Macros with multiple statements should be enclosed in a do - while loop\n";
885 } else {
886 print "Macros with complex values should be enclosed in parenthesis\n";
887 }
888 print "$hereprev";
889 $clean = 0;
890 }
891 }
892
893# don't include deprecated include files (uses RAW line)
787 for my $inc (@dep_includes) { 894 for my $inc (@dep_includes) {
788 if ($line =~ m@\#\s*include\s*\<$inc>@) { 895 if ($rawline =~ m@\#\s*include\s*\<$inc>@) {
789 print "Don't use <$inc>: see Documentation/feature-removal-schedule.txt\n"; 896 print "Don't use <$inc>: see Documentation/feature-removal-schedule.txt\n";
790 print "$herecurr"; 897 print "$herecurr";
791 $clean = 0; 898 $clean = 0;
@@ -845,6 +952,13 @@ sub process {
845 print "$herecurr"; 952 print "$herecurr";
846 $clean = 0; 953 $clean = 0;
847 } 954 }
955
956 if ($line =~ /$Type\s+(?:inline|__always_inline)\b/ ||
957 $line =~ /\b(?:inline|always_inline)\s+$Storage/) {
958 print "inline keyword should sit between storage class and type\n";
959 print "$herecurr";
960 $clean = 0;
961 }
848 } 962 }
849 963
850 if ($chk_patch && !$is_patch) { 964 if ($chk_patch && !$is_patch) {