diff options
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 | |||
4 | Copyright 2006, 2007 Simtec Electronics | ||
5 | |||
6 | Core | ||
7 | ---- | ||
8 | |||
9 | The core driver in drivers/mfd provides common services for the | ||
10 | drivers which manage the specific hardware blocks. These services | ||
11 | include locking for common registers, clock control and resource | ||
12 | management. | ||
13 | |||
14 | The core registers drivers for both PCI and generic bus based | ||
15 | chips via the platform device and driver system. | ||
16 | |||
17 | On detection of a device, the core initialises the chip (which may | ||
18 | be specified by the platform data) and then exports the selected | ||
19 | peripheral set as platform devices for the specific drivers. | ||
20 | |||
21 | The core re-uses the platform device system as the platform device | ||
22 | system provides enough features to support the drivers without the | ||
23 | need to create a new bus-type and the associated code to go with it. | ||
24 | |||
25 | |||
26 | Resources | ||
27 | --------- | ||
28 | |||
29 | Each peripheral has a view of the device which is implicitly narrowed to | ||
30 | the specific set of resources that peripheral requires in order to | ||
31 | function correctly. | ||
32 | |||
33 | The centralised memory allocation allows the driver to ensure that the | ||
34 | maximum possible resource allocation can be made to the video subsystem | ||
35 | as this is by-far the most resource-sensitive of the on-chip functions. | ||
36 | |||
37 | The primary issue with memory allocation is that of moving the video | ||
38 | buffers once a display mode is chosen. Indeed when a video mode change | ||
39 | occurs the memory footprint of the video subsystem changes. | ||
40 | |||
41 | Since video memory is difficult to move without changing the display | ||
42 | (unless sufficient contiguous memory can be provided for the old and new | ||
43 | modes simultaneously) the video driver fully utilises the memory area | ||
44 | given to it by aligning fb0 to the start of the area and fb1 to the end | ||
45 | of it. Any memory left over in the middle is used for the acceleration | ||
46 | functions, which are transient and thus their location is less critical | ||
47 | as it can be moved. | ||
48 | |||
49 | |||
50 | Configuration | ||
51 | ------------- | ||
52 | |||
53 | The platform device driver uses a set of platform data to pass | ||
54 | configurations through to the core and the subsidiary drivers | ||
55 | so that there can be support for more than one system carrying | ||
56 | an SM501 built into a single kernel image. | ||
57 | |||
58 | The PCI driver assumes that the PCI card behaves as per the Silicon | ||
59 | Motion reference design. | ||
60 | |||
61 | There is an errata (AB-5) affecting the selection of the | ||
62 | of the M1XCLK and M1CLK frequencies. These two clocks | ||
63 | must be sourced from the same PLL, although they can then | ||
64 | be divided down individually. If this is not set, then SM501 may | ||
65 | lock and hang the whole system. The driver will refuse to | ||
66 | attach 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 @@ | |||
1 | Why the "volatile" type class should not be used | ||
2 | ------------------------------------------------ | ||
3 | |||
4 | C programmers have often taken volatile to mean that the variable could be | ||
5 | changed outside of the current thread of execution; as a result, they are | ||
6 | sometimes tempted to use it in kernel code when shared data structures are | ||
7 | being used. In other words, they have been known to treat volatile types | ||
8 | as a sort of easy atomic variable, which they are not. The use of volatile in | ||
9 | kernel code is almost never correct; this document describes why. | ||
10 | |||
11 | The key point to understand with regard to volatile is that its purpose is | ||
12 | to suppress optimization, which is almost never what one really wants to | ||
13 | do. In the kernel, one must protect shared data structures against | ||
14 | unwanted concurrent access, which is very much a different task. The | ||
15 | process of protecting against unwanted concurrency will also avoid almost | ||
16 | all optimization-related problems in a more efficient way. | ||
17 | |||
18 | Like volatile, the kernel primitives which make concurrent access to data | ||
19 | safe (spinlocks, mutexes, memory barriers, etc.) are designed to prevent | ||
20 | unwanted optimization. If they are being used properly, there will be no | ||
21 | need to use volatile as well. If volatile is still necessary, there is | ||
22 | almost certainly a bug in the code somewhere. In properly-written kernel | ||
23 | code, volatile can only serve to slow things down. | ||
24 | |||
25 | Consider 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 | |||
32 | If all the code follows the locking rules, the value of shared_data cannot | ||
33 | change unexpectedly while the_lock is held. Any other code which might | ||
34 | want to play with that data will be waiting on the lock. The spinlock | ||
35 | primitives act as memory barriers - they are explicitly written to do so - | ||
36 | meaning that data accesses will not be optimized across them. So the | ||
37 | compiler might think it knows what will be in shared_data, but the | ||
38 | spin_lock() call, since it acts as a memory barrier, will force it to | ||
39 | forget anything it knows. There will be no optimization problems with | ||
40 | accesses to that data. | ||
41 | |||
42 | If shared_data were declared volatile, the locking would still be | ||
43 | necessary. But the compiler would also be prevented from optimizing access | ||
44 | to shared_data _within_ the critical section, when we know that nobody else | ||
45 | can be working with it. While the lock is held, shared_data is not | ||
46 | volatile. When dealing with shared data, proper locking makes volatile | ||
47 | unnecessary - and potentially harmful. | ||
48 | |||
49 | The volatile storage class was originally meant for memory-mapped I/O | ||
50 | registers. Within the kernel, register accesses, too, should be protected | ||
51 | by locks, but one also does not want the compiler "optimizing" register | ||
52 | accesses within a critical section. But, within the kernel, I/O memory | ||
53 | accesses are always done through accessor functions; accessing I/O memory | ||
54 | directly through pointers is frowned upon and does not work on all | ||
55 | architectures. Those accessors are written to prevent unwanted | ||
56 | optimization, so, once again, volatile is unnecessary. | ||
57 | |||
58 | Another situation where one might be tempted to use volatile is | ||
59 | when the processor is busy-waiting on the value of a variable. The right | ||
60 | way to perform a busy wait is: | ||
61 | |||
62 | while (my_variable != what_i_want) | ||
63 | cpu_relax(); | ||
64 | |||
65 | The cpu_relax() call can lower CPU power consumption or yield to a | ||
66 | hyperthreaded twin processor; it also happens to serve as a memory barrier, | ||
67 | so, once again, volatile is unnecessary. Of course, busy-waiting is | ||
68 | generally an anti-social act to begin with. | ||
69 | |||
70 | There are still a few rare situations where volatile makes sense in the | ||
71 | kernel: | ||
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 | |||
95 | For most code, none of the above justifications for volatile apply. As a | ||
96 | result, the use of volatile is likely to be seen as a bug and will bring | ||
97 | additional scrutiny to the code. Developers who are tempted to use | ||
98 | volatile should take a step back and think about what they are truly trying | ||
99 | to accomplish. | ||
100 | |||
101 | Patches to remove volatile variables are generally welcome - as long as | ||
102 | they come with a justification which shows that the concurrency issues have | ||
103 | been properly thought through. | ||
104 | |||
105 | |||
106 | NOTES | ||
107 | ----- | ||
108 | |||
109 | [1] http://lwn.net/Articles/233481/ | ||
110 | [2] http://lwn.net/Articles/233482/ | ||
111 | |||
112 | CREDITS | ||
113 | ------- | ||
114 | |||
115 | Original impetus and research by Randy Dunlap | ||
116 | Written by Jonathan Corbet | ||
117 | Improvements 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 @@ | |||
16 | csum_ipv6_magic: | 19 | csum_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 @@ | |||
55 | csum_ipv6_magic: | 59 | csum_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 | ||
97 | struct platform_device *at32_usart_map[1]; | ||
98 | unsigned int at32_nr_usarts = 1; | ||
99 | |||
100 | void __init setup_board(void) | 97 | void __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 | # |
6 | CONFIG_AVR32=y | 6 | CONFIG_AVR32=y |
7 | CONFIG_GENERIC_GPIO=y | 7 | CONFIG_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 |
43 | CONFIG_LOG_BUF_SHIFT=14 | ||
43 | CONFIG_SYSFS_DEPRECATED=y | 44 | CONFIG_SYSFS_DEPRECATED=y |
44 | # CONFIG_RELAY is not set | 45 | # CONFIG_RELAY is not set |
45 | CONFIG_BLK_DEV_INITRD=y | 46 | CONFIG_BLK_DEV_INITRD=y |
@@ -57,14 +58,20 @@ CONFIG_BUG=y | |||
57 | CONFIG_ELF_CORE=y | 58 | CONFIG_ELF_CORE=y |
58 | # CONFIG_BASE_FULL is not set | 59 | # CONFIG_BASE_FULL is not set |
59 | CONFIG_FUTEX=y | 60 | CONFIG_FUTEX=y |
61 | CONFIG_ANON_INODES=y | ||
60 | CONFIG_EPOLL=y | 62 | CONFIG_EPOLL=y |
63 | CONFIG_SIGNALFD=y | ||
64 | CONFIG_TIMERFD=y | ||
65 | CONFIG_EVENTFD=y | ||
61 | CONFIG_SHMEM=y | 66 | CONFIG_SHMEM=y |
62 | CONFIG_SLAB=y | ||
63 | CONFIG_VM_EVENT_COUNTERS=y | 67 | CONFIG_VM_EVENT_COUNTERS=y |
68 | # CONFIG_SLUB_DEBUG is not set | ||
69 | # CONFIG_SLAB is not set | ||
70 | CONFIG_SLUB=y | ||
71 | # CONFIG_SLOB is not set | ||
64 | CONFIG_RT_MUTEXES=y | 72 | CONFIG_RT_MUTEXES=y |
65 | # CONFIG_TINY_SHMEM is not set | 73 | # CONFIG_TINY_SHMEM is not set |
66 | CONFIG_BASE_SMALL=1 | 74 | CONFIG_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 | ||
172 | CONFIG_PACKET=y | 179 | CONFIG_PACKET=y |
173 | CONFIG_PACKET_MMAP=y | 180 | CONFIG_PACKET_MMAP=y |
174 | CONFIG_UNIX=y | 181 | CONFIG_UNIX=y |
@@ -212,14 +219,11 @@ CONFIG_INET_TCP_DIAG=y | |||
212 | CONFIG_TCP_CONG_CUBIC=y | 219 | CONFIG_TCP_CONG_CUBIC=y |
213 | CONFIG_DEFAULT_TCP_CONG="cubic" | 220 | CONFIG_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 |
220 | CONFIG_IPV6=y | 223 | CONFIG_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 | ||
223 | CONFIG_INET6_AH=y | 227 | CONFIG_INET6_AH=y |
224 | CONFIG_INET6_ESP=y | 228 | CONFIG_INET6_ESP=y |
225 | CONFIG_INET6_IPCOMP=y | 229 | CONFIG_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 |
244 | CONFIG_NF_CONNTRACK_ENABLED=m | 248 | CONFIG_NF_CONNTRACK_ENABLED=m |
245 | CONFIG_NF_CONNTRACK_SUPPORT=y | ||
246 | # CONFIG_IP_NF_CONNTRACK_SUPPORT is not set | ||
247 | CONFIG_NF_CONNTRACK=m | 249 | CONFIG_NF_CONNTRACK=m |
248 | CONFIG_NF_CT_ACCT=y | 250 | CONFIG_NF_CT_ACCT=y |
249 | CONFIG_NF_CONNTRACK_MARK=y | 251 | CONFIG_NF_CONNTRACK_MARK=y |
@@ -357,20 +359,8 @@ CONFIG_IP6_NF_TARGET_REJECT=m | |||
357 | CONFIG_IP6_NF_MANGLE=m | 359 | CONFIG_IP6_NF_MANGLE=m |
358 | CONFIG_IP6_NF_TARGET_HL=m | 360 | CONFIG_IP6_NF_TARGET_HL=m |
359 | CONFIG_IP6_NF_RAW=m | 361 | CONFIG_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 | # | ||
424 | CONFIG_MTD=y | 419 | CONFIG_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 | # |
572 | CONFIG_NETDEVICES=y | 543 | CONFIG_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 |
576 | CONFIG_TUN=m | 547 | CONFIG_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 | |||
586 | CONFIG_NET_ETHERNET=y | 553 | CONFIG_NET_ETHERNET=y |
587 | CONFIG_MII=y | 554 | CONFIG_MII=y |
588 | CONFIG_MACB=y | 555 | CONFIG_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 |
611 | CONFIG_PPP=m | 565 | CONFIG_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 | # |
822 | CONFIG_EXT2_FS=y | 754 | CONFIG_EXT2_FS=y |
@@ -911,6 +843,7 @@ CONFIG_LOCKD=y | |||
911 | CONFIG_LOCKD_V4=y | 843 | CONFIG_LOCKD_V4=y |
912 | CONFIG_NFS_COMMON=y | 844 | CONFIG_NFS_COMMON=y |
913 | CONFIG_SUNRPC=y | 845 | CONFIG_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 |
916 | CONFIG_SMB_FS=m | 849 | CONFIG_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 |
994 | CONFIG_DEBUG_KERNEL=y | 927 | CONFIG_DEBUG_KERNEL=y |
995 | # CONFIG_DEBUG_SHIRQ is not set | 928 | # CONFIG_DEBUG_SHIRQ is not set |
996 | CONFIG_LOG_BUF_SHIFT=14 | ||
997 | CONFIG_DETECT_SOFTLOCKUP=y | 929 | CONFIG_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 | |||
1044 | CONFIG_CRYPTO_CBC=y | 975 | CONFIG_CRYPTO_CBC=y |
1045 | CONFIG_CRYPTO_PCBC=m | 976 | CONFIG_CRYPTO_PCBC=m |
1046 | # CONFIG_CRYPTO_LRW is not set | 977 | # CONFIG_CRYPTO_LRW is not set |
978 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1047 | CONFIG_CRYPTO_DES=y | 979 | CONFIG_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 | |||
1072 | CONFIG_BITREVERSE=y | 1004 | CONFIG_BITREVERSE=y |
1073 | CONFIG_CRC_CCITT=m | 1005 | CONFIG_CRC_CCITT=m |
1074 | # CONFIG_CRC16 is not set | 1006 | # CONFIG_CRC16 is not set |
1007 | # CONFIG_CRC_ITU_T is not set | ||
1075 | CONFIG_CRC32=y | 1008 | CONFIG_CRC32=y |
1076 | # CONFIG_LIBCRC32C is not set | 1009 | # CONFIG_LIBCRC32C is not set |
1077 | CONFIG_ZLIB_INFLATE=y | 1010 | CONFIG_ZLIB_INFLATE=y |
@@ -1083,3 +1016,4 @@ CONFIG_TEXTSEARCH_FSM=m | |||
1083 | CONFIG_PLIST=y | 1016 | CONFIG_PLIST=y |
1084 | CONFIG_HAS_IOMEM=y | 1017 | CONFIG_HAS_IOMEM=y |
1085 | CONFIG_HAS_IOPORT=y | 1018 | CONFIG_HAS_IOPORT=y |
1019 | CONFIG_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 | # |
6 | CONFIG_AVR32=y | 6 | CONFIG_AVR32=y |
7 | CONFIG_GENERIC_GPIO=y | ||
7 | CONFIG_GENERIC_HARDIRQS=y | 8 | CONFIG_GENERIC_HARDIRQS=y |
8 | CONFIG_HARDIRQS_SW_RESEND=y | 9 | CONFIG_HARDIRQS_SW_RESEND=y |
9 | CONFIG_GENERIC_IRQ_PROBE=y | 10 | CONFIG_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 |
14 | CONFIG_GENERIC_HWEIGHT=y | 15 | CONFIG_GENERIC_HWEIGHT=y |
15 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 16 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
17 | CONFIG_GENERIC_BUG=y | ||
16 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 18 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
17 | 19 | ||
18 | # | 20 | # |
@@ -30,19 +32,22 @@ CONFIG_LOCALVERSION="" | |||
30 | CONFIG_SWAP=y | 32 | CONFIG_SWAP=y |
31 | CONFIG_SYSVIPC=y | 33 | CONFIG_SYSVIPC=y |
32 | # CONFIG_IPC_NS is not set | 34 | # CONFIG_IPC_NS is not set |
35 | CONFIG_SYSVIPC_SYSCTL=y | ||
33 | CONFIG_POSIX_MQUEUE=y | 36 | CONFIG_POSIX_MQUEUE=y |
34 | CONFIG_BSD_PROCESS_ACCT=y | 37 | CONFIG_BSD_PROCESS_ACCT=y |
35 | CONFIG_BSD_PROCESS_ACCT_V3=y | 38 | CONFIG_BSD_PROCESS_ACCT_V3=y |
36 | CONFIG_TASKSTATS=y | 39 | CONFIG_TASKSTATS=y |
37 | CONFIG_TASK_DELAY_ACCT=y | 40 | CONFIG_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 |
39 | CONFIG_AUDIT=y | 43 | CONFIG_AUDIT=y |
40 | # CONFIG_IKCONFIG is not set | 44 | # CONFIG_IKCONFIG is not set |
45 | CONFIG_LOG_BUF_SHIFT=14 | ||
41 | CONFIG_SYSFS_DEPRECATED=y | 46 | CONFIG_SYSFS_DEPRECATED=y |
42 | CONFIG_RELAY=y | 47 | CONFIG_RELAY=y |
48 | CONFIG_BLK_DEV_INITRD=y | ||
43 | CONFIG_INITRAMFS_SOURCE="" | 49 | CONFIG_INITRAMFS_SOURCE="" |
44 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 50 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
45 | # CONFIG_TASK_XACCT is not set | ||
46 | CONFIG_SYSCTL=y | 51 | CONFIG_SYSCTL=y |
47 | CONFIG_EMBEDDED=y | 52 | CONFIG_EMBEDDED=y |
48 | # CONFIG_SYSCTL_SYSCALL is not set | 53 | # CONFIG_SYSCTL_SYSCALL is not set |
@@ -55,14 +60,20 @@ CONFIG_BUG=y | |||
55 | CONFIG_ELF_CORE=y | 60 | CONFIG_ELF_CORE=y |
56 | # CONFIG_BASE_FULL is not set | 61 | # CONFIG_BASE_FULL is not set |
57 | CONFIG_FUTEX=y | 62 | CONFIG_FUTEX=y |
63 | CONFIG_ANON_INODES=y | ||
58 | CONFIG_EPOLL=y | 64 | CONFIG_EPOLL=y |
65 | CONFIG_SIGNALFD=y | ||
66 | CONFIG_TIMERFD=y | ||
67 | CONFIG_EVENTFD=y | ||
59 | CONFIG_SHMEM=y | 68 | CONFIG_SHMEM=y |
60 | CONFIG_SLAB=y | ||
61 | CONFIG_VM_EVENT_COUNTERS=y | 69 | CONFIG_VM_EVENT_COUNTERS=y |
70 | # CONFIG_SLUB_DEBUG is not set | ||
71 | # CONFIG_SLAB is not set | ||
72 | CONFIG_SLUB=y | ||
73 | # CONFIG_SLOB is not set | ||
62 | CONFIG_RT_MUTEXES=y | 74 | CONFIG_RT_MUTEXES=y |
63 | # CONFIG_TINY_SHMEM is not set | 75 | # CONFIG_TINY_SHMEM is not set |
64 | CONFIG_BASE_SMALL=1 | 76 | CONFIG_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 | |||
105 | CONFIG_CPU_AT32AP7000=y | 116 | CONFIG_CPU_AT32AP7000=y |
106 | CONFIG_BOARD_ATSTK1002=y | 117 | CONFIG_BOARD_ATSTK1002=y |
107 | CONFIG_BOARD_ATSTK1000=y | 118 | CONFIG_BOARD_ATSTK1000=y |
119 | # CONFIG_BOARD_ATNGW100 is not set | ||
108 | CONFIG_LOADER_U_BOOT=y | 120 | CONFIG_LOADER_U_BOOT=y |
121 | |||
122 | # | ||
123 | # Atmel AVR32 AP options | ||
124 | # | ||
125 | # CONFIG_AP7000_32_BIT_SMC is not set | ||
126 | CONFIG_AP7000_16_BIT_SMC=y | ||
127 | # CONFIG_AP7000_8_BIT_SMC is not set | ||
109 | CONFIG_LOAD_ADDRESS=0x10000000 | 128 | CONFIG_LOAD_ADDRESS=0x10000000 |
110 | CONFIG_ENTRY_ADDRESS=0x90000000 | 129 | CONFIG_ENTRY_ADDRESS=0x90000000 |
111 | CONFIG_PHYS_OFFSET=0x10000000 | 130 | CONFIG_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 |
128 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 147 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
129 | # CONFIG_RESOURCES_64BIT is not set | 148 | # CONFIG_RESOURCES_64BIT is not set |
149 | CONFIG_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 |
132 | CONFIG_HZ_250=y | 152 | CONFIG_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 | ||
162 | CONFIG_PACKET=y | 182 | CONFIG_PACKET=y |
163 | CONFIG_PACKET_MMAP=y | 183 | CONFIG_PACKET_MMAP=y |
164 | CONFIG_UNIX=y | 184 | CONFIG_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 | # | ||
259 | CONFIG_MTD=y | 273 | CONFIG_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 | |||
356 | CONFIG_BLK_DEV_RAM_COUNT=16 | 367 | CONFIG_BLK_DEV_RAM_COUNT=16 |
357 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 368 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
358 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 369 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
359 | CONFIG_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 | # |
406 | CONFIG_NETDEVICES=y | 395 | CONFIG_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 |
410 | CONFIG_TUN=m | 399 | CONFIG_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 | |||
420 | CONFIG_NET_ETHERNET=y | 405 | CONFIG_NET_ETHERNET=y |
421 | CONFIG_MII=y | 406 | CONFIG_MII=y |
422 | CONFIG_MACB=y | 407 | CONFIG_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 |
445 | CONFIG_PPP=m | 417 | CONFIG_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 | # |
636 | CONFIG_EXT2_FS=m | 593 | CONFIG_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 | 672 | CONFIG_NFS_FS=y |
673 | CONFIG_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 |
678 | CONFIG_ROOT_NFS=y | ||
679 | CONFIG_LOCKD=y | ||
680 | CONFIG_LOCKD_V4=y | ||
681 | CONFIG_NFS_COMMON=y | ||
682 | CONFIG_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 | |||
787 | CONFIG_DEBUG_FS=y | 756 | CONFIG_DEBUG_FS=y |
788 | # CONFIG_HEADERS_CHECK is not set | 757 | # CONFIG_HEADERS_CHECK is not set |
789 | CONFIG_DEBUG_KERNEL=y | 758 | CONFIG_DEBUG_KERNEL=y |
790 | CONFIG_LOG_BUF_SHIFT=14 | 759 | # CONFIG_DEBUG_SHIRQ is not set |
791 | CONFIG_DETECT_SOFTLOCKUP=y | 760 | CONFIG_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 | |||
806 | CONFIG_FRAME_POINTER=y | 774 | CONFIG_FRAME_POINTER=y |
807 | CONFIG_FORCED_INLINING=y | 775 | CONFIG_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 | |||
825 | CONFIG_BITREVERSE=y | 794 | CONFIG_BITREVERSE=y |
826 | CONFIG_CRC_CCITT=m | 795 | CONFIG_CRC_CCITT=m |
827 | # CONFIG_CRC16 is not set | 796 | # CONFIG_CRC16 is not set |
797 | # CONFIG_CRC_ITU_T is not set | ||
828 | CONFIG_CRC32=y | 798 | CONFIG_CRC32=y |
829 | # CONFIG_LIBCRC32C is not set | 799 | # CONFIG_LIBCRC32C is not set |
830 | CONFIG_AUDIT_GENERIC=y | 800 | CONFIG_AUDIT_GENERIC=y |
831 | CONFIG_ZLIB_INFLATE=y | 801 | CONFIG_ZLIB_INFLATE=y |
832 | CONFIG_ZLIB_DEFLATE=y | 802 | CONFIG_ZLIB_DEFLATE=y |
833 | CONFIG_PLIST=y | 803 | CONFIG_PLIST=y |
834 | CONFIG_IOMAP_COPY=y | 804 | CONFIG_HAS_IOMEM=y |
805 | CONFIG_HAS_IOPORT=y | ||
806 | CONFIG_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) \ |
53 | static u64 _name##_id##_dma_mask = DMA_32BIT_MASK; \ | ||
49 | static struct platform_device _name##_id##_device = { \ | 54 | static 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) \ |
65 | static u64 _name##_id##_dma_mask = DMA_32BIT_MASK; \ | ||
56 | static struct platform_device _name##_id##_device = { \ | 66 | static 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 @@ | |||
23 | void invalidate_dcache_region(void *start, size_t size) | 23 | void 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 | ||
55 | void clean_dcache_region(void *start, size_t size) | 51 | void 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 | ||
542 | config HIGHMEM64G | 542 | config 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 | ||
300 | config X86_CMPXCHG64 | 300 | config X86_CMPXCHG64 |
301 | bool | 301 | bool |
302 | depends on !M386 && !M486 | 302 | depends on X86_PAE |
303 | default y | 303 | default y |
304 | 304 | ||
305 | config X86_ALIGNMENT_16 | 305 | config 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 | # |
231 | ENTRY(acpi_copy_wakeup_routine) | 231 | ENTRY(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 | ||
268 | save_registers: | 270 | save_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 |
1165 | ENDPROC(call_softirq) | 1165 | ENDPROC(call_softirq) |
1166 | |||
1167 | KPROBE_ENTRY(ignore_sysret) | ||
1168 | CFI_STARTPROC | ||
1169 | mov $-ENOSYS,%eax | ||
1170 | sysret | ||
1171 | CFI_ENDPROC | ||
1172 | ENDPROC(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) | |||
150 | char boot_exception_stacks[(N_EXCEPTION_STACKS - 1) * EXCEPTION_STKSZ + DEBUG_STKSZ] | 150 | char 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 | ||
153 | extern 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 */ |
154 | void syscall_init(void) | 156 | void 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]; | |||
1956 | DEFINE_MUTEX(con_buf_mtx); | 1956 | DEFINE_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 | */ |
1962 | struct interval { | 1962 | struct 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 @@ | |||
2 | menuconfig MACINTOSH_DRIVERS | 2 | menuconfig 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 | ||
7 | if MACINTOSH_DRIVERS | 7 | if 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 | |
173 | static void sm501_dump_clk(struct sm501_devdata *sm) | 176 | static 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 | |||
196 | static 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 | ||
207 | static inline void sm501_dump_gate(struct sm501_devdata *sm) { } | ||
208 | static inline void sm501_dump_regs(struct sm501_devdata *sm) { } | ||
209 | static 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 | ||
222 | static 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 | ||
193 | int sm501_misc_control(struct device *dev, | 239 | int 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 | ||
772 | static inline void sm501_init_reg(struct sm501_devdata *sm, | 821 | static 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 | |||
869 | static 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 | ||
811 | static unsigned int sm501_mem_local[] = { | 878 | static 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 | |||
1017 | static 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 | |||
1028 | static 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 | ||
938 | static struct sm501_initdata sm501_pci_initdata = { | 1067 | static 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 | ||
957 | static struct sm501_platdata_fbsub sm501_pdata_fbsub = { | 1090 | static 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 | ||
1131 | static int __init sm501_base_init(void) | 1266 | static 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 | */ | ||
1214 | static inline void inc_nlink(struct inode *inode) | 1222 | static 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 | */ | ||
1225 | static inline void drop_nlink(struct inode *inode) | 1244 | static 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 | */ | ||
1230 | static inline void clear_nlink(struct inode *inode) | 1257 | static 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 | */ |
151 | int unshare_nsproxy_namespaces(unsigned long unshare_flags, | 150 | int 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 | /* |
@@ -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; | |||
9 | my $P = $0; | 9 | my $P = $0; |
10 | $P =~ s@.*/@@g; | 10 | $P =~ s@.*/@@g; |
11 | 11 | ||
12 | my $V = '0.04'; | 12 | my $V = '0.06'; |
13 | 13 | ||
14 | use Getopt::Long qw(:config no_auto_abbrev); | 14 | use Getopt::Long qw(:config no_auto_abbrev); |
15 | 15 | ||
@@ -17,11 +17,13 @@ my $quiet = 0; | |||
17 | my $tree = 1; | 17 | my $tree = 1; |
18 | my $chk_signoff = 1; | 18 | my $chk_signoff = 1; |
19 | my $chk_patch = 1; | 19 | my $chk_patch = 1; |
20 | my $tst_type = 0; | ||
20 | GetOptions( | 21 | GetOptions( |
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 | ||
27 | my $exit = 0; | 29 | my $exit = 0; |
@@ -151,7 +153,7 @@ sub sanitise_line { | |||
151 | } | 153 | } |
152 | 154 | ||
153 | sub ctx_block_get { | 155 | sub 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 { | |||
180 | sub ctx_block_outer { | 182 | sub 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 | } |
185 | sub ctx_block { | 187 | sub 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 | } | ||
192 | sub ctx_statement { | ||
193 | my ($linenr, $remain) = @_; | ||
194 | |||
195 | return ctx_block_get($linenr, $remain, 0, '\(', '\)'); | ||
189 | } | 196 | } |
190 | 197 | ||
191 | sub ctx_locate_comment { | 198 | sub 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) { |