Bläddra i källkod

Merge branch 'master' of /home/davem/src/GIT/linux-2.6/

David S. Miller 15 år sedan
förälder
incheckning
4a1032faac
100 ändrade filer med 583 tillägg och 158 borttagningar
  1. 0 0
      Documentation/DMA-API-HOWTO.txt
  2. 13 0
      Documentation/DocBook/tracepoint.tmpl
  3. 2 2
      Documentation/block/biodoc.txt
  4. 1 1
      Documentation/cgroups/memory.txt
  5. 234 0
      Documentation/circular-buffers.txt
  6. 1 0
      Documentation/connector/cn_test.c
  7. 7 7
      Documentation/fb/efifb.txt
  8. 2 0
      Documentation/filesystems/00-INDEX
  9. 16 2
      Documentation/filesystems/9p.txt
  10. 6 5
      Documentation/filesystems/ceph.txt
  11. 5 1
      Documentation/filesystems/tmpfs.txt
  12. 20 0
      Documentation/memory-barriers.txt
  13. 54 0
      Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt
  14. 12 4
      Documentation/sound/alsa/HD-Audio.txt
  15. 3 3
      Documentation/volatile-considered-harmful.txt
  16. 0 3
      Documentation/watchdog/src/watchdog-simple.c
  17. 6 2
      Documentation/watchdog/src/watchdog-test.c
  18. 2 3
      Documentation/watchdog/watchdog-api.txt
  19. 38 27
      MAINTAINERS
  20. 1 1
      Makefile
  21. 1 0
      arch/alpha/boot/bootp.c
  22. 1 0
      arch/alpha/boot/bootpz.c
  23. 1 0
      arch/alpha/boot/main.c
  24. 1 0
      arch/alpha/boot/misc.c
  25. 0 1
      arch/alpha/kernel/irq.c
  26. 1 1
      arch/alpha/kernel/osf_sys.c
  27. 1 0
      arch/alpha/kernel/pci-noop.c
  28. 1 0
      arch/alpha/kernel/pci-sysfs.c
  29. 1 1
      arch/alpha/kernel/pci_iommu.c
  30. 1 1
      arch/alpha/kernel/process.c
  31. 0 1
      arch/alpha/kernel/ptrace.c
  32. 0 1
      arch/alpha/kernel/smc37c669.c
  33. 0 1
      arch/alpha/kernel/smc37c93x.c
  34. 1 0
      arch/alpha/kernel/srm_env.c
  35. 1 0
      arch/alpha/mm/init.c
  36. 1 0
      arch/arm/common/clkdev.c
  37. 0 1
      arch/arm/common/it8152.c
  38. 5 5
      arch/arm/common/locomo.c
  39. 1 37
      arch/arm/include/asm/cacheflush.h
  40. 1 0
      arch/arm/include/asm/clkdev.h
  41. 1 0
      arch/arm/include/asm/irq.h
  42. 75 0
      arch/arm/include/asm/outercache.h
  43. 10 6
      arch/arm/include/asm/system.h
  44. 0 1
      arch/arm/kernel/irq.c
  45. 10 1
      arch/arm/kernel/kprobes.c
  46. 1 1
      arch/arm/kernel/module.c
  47. 0 1
      arch/arm/kernel/process.c
  48. 1 1
      arch/arm/kernel/sys_arm.c
  49. 2 2
      arch/arm/lib/memmove.S
  50. 1 0
      arch/arm/lib/uaccess_with_memcpy.c
  51. 1 0
      arch/arm/mach-aaec2000/core.c
  52. 1 0
      arch/arm/mach-bcmring/dma.c
  53. 1 0
      arch/arm/mach-davinci/board-dm365-evm.c
  54. 0 1
      arch/arm/mach-davinci/dm365.c
  55. 3 1
      arch/arm/mach-davinci/dma.c
  56. 7 1
      arch/arm/mach-davinci/include/mach/da8xx.h
  57. 4 2
      arch/arm/mach-davinci/time.c
  58. 0 1
      arch/arm/mach-h720x/common.c
  59. 0 1
      arch/arm/mach-integrator/cpu.c
  60. 1 0
      arch/arm/mach-integrator/impd1.c
  61. 1 1
      arch/arm/mach-integrator/integrator_cp.c
  62. 0 1
      arch/arm/mach-integrator/pci_v3.c
  63. 1 0
      arch/arm/mach-iop13xx/pci.c
  64. 0 1
      arch/arm/mach-iop32x/glantank.c
  65. 0 1
      arch/arm/mach-iop32x/iq31244.c
  66. 0 1
      arch/arm/mach-iop32x/iq80321.c
  67. 0 1
      arch/arm/mach-iop32x/n2100.c
  68. 0 1
      arch/arm/mach-iop33x/iq80331.c
  69. 0 1
      arch/arm/mach-iop33x/iq80332.c
  70. 0 1
      arch/arm/mach-ixp2000/enp2611.c
  71. 0 1
      arch/arm/mach-ixp2000/ixdp2400.c
  72. 0 1
      arch/arm/mach-ixp2000/ixdp2800.c
  73. 0 1
      arch/arm/mach-ixp2000/ixdp2x00.c
  74. 0 1
      arch/arm/mach-ixp2000/ixdp2x01.c
  75. 0 1
      arch/arm/mach-ixp2000/pci.c
  76. 1 1
      arch/arm/mach-ixp23xx/include/mach/memory.h
  77. 0 1
      arch/arm/mach-ixp23xx/pci.c
  78. 0 1
      arch/arm/mach-ixp4xx/avila-setup.c
  79. 0 1
      arch/arm/mach-ixp4xx/coyote-setup.c
  80. 0 1
      arch/arm/mach-ixp4xx/gateway7001-setup.c
  81. 0 1
      arch/arm/mach-ixp4xx/gtwx5715-setup.c
  82. 0 1
      arch/arm/mach-ixp4xx/ixdp425-setup.c
  83. 0 1
      arch/arm/mach-ixp4xx/ixp4xx_npe.c
  84. 0 1
      arch/arm/mach-ixp4xx/wg302v2-setup.c
  85. 2 2
      arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
  86. 1 0
      arch/arm/mach-kirkwood/pcie.c
  87. 1 0
      arch/arm/mach-lh7a40x/clcd.c
  88. 4 1
      arch/arm/mach-mmp/include/mach/uncompress.h
  89. 1 0
      arch/arm/mach-mx3/mach-mx31moboard.c
  90. 1 0
      arch/arm/mach-mx3/mach-pcm037.c
  91. 1 0
      arch/arm/mach-mx3/mx31moboard-devboard.c
  92. 1 0
      arch/arm/mach-mx3/mx31moboard-marxbot.c
  93. 1 0
      arch/arm/mach-netx/fb.c
  94. 1 0
      arch/arm/mach-netx/xc.c
  95. 1 0
      arch/arm/mach-nomadik/gpio.c
  96. 1 0
      arch/arm/mach-ns9xxx/plat-serial8250.c
  97. 0 1
      arch/arm/mach-ns9xxx/processor-ns9360.c
  98. 1 0
      arch/arm/mach-omap1/mcbsp.c
  99. 1 0
      arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
  100. 1 0
      arch/arm/mach-omap2/iommu2.c

+ 0 - 0
Documentation/PCI/PCI-DMA-mapping.txt → Documentation/DMA-API-HOWTO.txt


+ 13 - 0
Documentation/DocBook/tracepoint.tmpl

@@ -16,6 +16,15 @@
      </address>
      </address>
     </affiliation>
     </affiliation>
    </author>
    </author>
+   <author>
+    <firstname>William</firstname>
+    <surname>Cohen</surname>
+    <affiliation>
+     <address>
+      <email>wcohen@redhat.com</email>
+     </address>
+    </affiliation>
+   </author>
   </authorgroup>
   </authorgroup>
 
 
   <legalnotice>
   <legalnotice>
@@ -91,4 +100,8 @@
 !Iinclude/trace/events/signal.h
 !Iinclude/trace/events/signal.h
   </chapter>
   </chapter>
 
 
+  <chapter id="block">
+   <title>Block IO</title>
+!Iinclude/trace/events/block.h
+  </chapter>
 </book>
 </book>

+ 2 - 2
Documentation/block/biodoc.txt

@@ -1162,8 +1162,8 @@ where a driver received a request ala this before:
 
 
 As mentioned, there is no virtual mapping of a bio. For DMA, this is
 As mentioned, there is no virtual mapping of a bio. For DMA, this is
 not a problem as the driver probably never will need a virtual mapping.
 not a problem as the driver probably never will need a virtual mapping.
-Instead it needs a bus mapping (pci_map_page for a single segment or
-use blk_rq_map_sg for scatter gather) to be able to ship it to the driver. For
+Instead it needs a bus mapping (dma_map_page for a single segment or
+use dma_map_sg for scatter gather) to be able to ship it to the driver. For
 PIO drivers (or drivers that need to revert to PIO transfer once in a
 PIO drivers (or drivers that need to revert to PIO transfer once in a
 while (IDE for example)), where the CPU is doing the actual data
 while (IDE for example)), where the CPU is doing the actual data
 transfer a virtual mapping is needed. If the driver supports highmem I/O,
 transfer a virtual mapping is needed. If the driver supports highmem I/O,

+ 1 - 1
Documentation/cgroups/memory.txt

@@ -340,7 +340,7 @@ Note:
 5.3 swappiness
 5.3 swappiness
   Similar to /proc/sys/vm/swappiness, but affecting a hierarchy of groups only.
   Similar to /proc/sys/vm/swappiness, but affecting a hierarchy of groups only.
 
 
-  Following cgroups' swapiness can't be changed.
+  Following cgroups' swappiness can't be changed.
   - root cgroup (uses /proc/sys/vm/swappiness).
   - root cgroup (uses /proc/sys/vm/swappiness).
   - a cgroup which uses hierarchy and it has child cgroup.
   - a cgroup which uses hierarchy and it has child cgroup.
   - a cgroup which uses hierarchy and not the root of hierarchy.
   - a cgroup which uses hierarchy and not the root of hierarchy.

+ 234 - 0
Documentation/circular-buffers.txt

@@ -0,0 +1,234 @@
+			       ================
+			       CIRCULAR BUFFERS
+			       ================
+
+By: David Howells <dhowells@redhat.com>
+    Paul E. McKenney <paulmck@linux.vnet.ibm.com>
+
+
+Linux provides a number of features that can be used to implement circular
+buffering.  There are two sets of such features:
+
+ (1) Convenience functions for determining information about power-of-2 sized
+     buffers.
+
+ (2) Memory barriers for when the producer and the consumer of objects in the
+     buffer don't want to share a lock.
+
+To use these facilities, as discussed below, there needs to be just one
+producer and just one consumer.  It is possible to handle multiple producers by
+serialising them, and to handle multiple consumers by serialising them.
+
+
+Contents:
+
+ (*) What is a circular buffer?
+
+ (*) Measuring power-of-2 buffers.
+
+ (*) Using memory barriers with circular buffers.
+     - The producer.
+     - The consumer.
+
+
+==========================
+WHAT IS A CIRCULAR BUFFER?
+==========================
+
+First of all, what is a circular buffer?  A circular buffer is a buffer of
+fixed, finite size into which there are two indices:
+
+ (1) A 'head' index - the point at which the producer inserts items into the
+     buffer.
+
+ (2) A 'tail' index - the point at which the consumer finds the next item in
+     the buffer.
+
+Typically when the tail pointer is equal to the head pointer, the buffer is
+empty; and the buffer is full when the head pointer is one less than the tail
+pointer.
+
+The head index is incremented when items are added, and the tail index when
+items are removed.  The tail index should never jump the head index, and both
+indices should be wrapped to 0 when they reach the end of the buffer, thus
+allowing an infinite amount of data to flow through the buffer.
+
+Typically, items will all be of the same unit size, but this isn't strictly
+required to use the techniques below.  The indices can be increased by more
+than 1 if multiple items or variable-sized items are to be included in the
+buffer, provided that neither index overtakes the other.  The implementer must
+be careful, however, as a region more than one unit in size may wrap the end of
+the buffer and be broken into two segments.
+
+
+============================
+MEASURING POWER-OF-2 BUFFERS
+============================
+
+Calculation of the occupancy or the remaining capacity of an arbitrarily sized
+circular buffer would normally be a slow operation, requiring the use of a
+modulus (divide) instruction.  However, if the buffer is of a power-of-2 size,
+then a much quicker bitwise-AND instruction can be used instead.
+
+Linux provides a set of macros for handling power-of-2 circular buffers.  These
+can be made use of by:
+
+	#include <linux/circ_buf.h>
+
+The macros are:
+
+ (*) Measure the remaining capacity of a buffer:
+
+	CIRC_SPACE(head_index, tail_index, buffer_size);
+
+     This returns the amount of space left in the buffer[1] into which items
+     can be inserted.
+
+
+ (*) Measure the maximum consecutive immediate space in a buffer:
+
+	CIRC_SPACE_TO_END(head_index, tail_index, buffer_size);
+
+     This returns the amount of consecutive space left in the buffer[1] into
+     which items can be immediately inserted without having to wrap back to the
+     beginning of the buffer.
+
+
+ (*) Measure the occupancy of a buffer:
+
+	CIRC_CNT(head_index, tail_index, buffer_size);
+
+     This returns the number of items currently occupying a buffer[2].
+
+
+ (*) Measure the non-wrapping occupancy of a buffer:
+
+	CIRC_CNT_TO_END(head_index, tail_index, buffer_size);
+
+     This returns the number of consecutive items[2] that can be extracted from
+     the buffer without having to wrap back to the beginning of the buffer.
+
+
+Each of these macros will nominally return a value between 0 and buffer_size-1,
+however:
+
+ [1] CIRC_SPACE*() are intended to be used in the producer.  To the producer
+     they will return a lower bound as the producer controls the head index,
+     but the consumer may still be depleting the buffer on another CPU and
+     moving the tail index.
+
+     To the consumer it will show an upper bound as the producer may be busy
+     depleting the space.
+
+ [2] CIRC_CNT*() are intended to be used in the consumer.  To the consumer they
+     will return a lower bound as the consumer controls the tail index, but the
+     producer may still be filling the buffer on another CPU and moving the
+     head index.
+
+     To the producer it will show an upper bound as the consumer may be busy
+     emptying the buffer.
+
+ [3] To a third party, the order in which the writes to the indices by the
+     producer and consumer become visible cannot be guaranteed as they are
+     independent and may be made on different CPUs - so the result in such a
+     situation will merely be a guess, and may even be negative.
+
+
+===========================================
+USING MEMORY BARRIERS WITH CIRCULAR BUFFERS
+===========================================
+
+By using memory barriers in conjunction with circular buffers, you can avoid
+the need to:
+
+ (1) use a single lock to govern access to both ends of the buffer, thus
+     allowing the buffer to be filled and emptied at the same time; and
+
+ (2) use atomic counter operations.
+
+There are two sides to this: the producer that fills the buffer, and the
+consumer that empties it.  Only one thing should be filling a buffer at any one
+time, and only one thing should be emptying a buffer at any one time, but the
+two sides can operate simultaneously.
+
+
+THE PRODUCER
+------------
+
+The producer will look something like this:
+
+	spin_lock(&producer_lock);
+
+	unsigned long head = buffer->head;
+	unsigned long tail = ACCESS_ONCE(buffer->tail);
+
+	if (CIRC_SPACE(head, tail, buffer->size) >= 1) {
+		/* insert one item into the buffer */
+		struct item *item = buffer[head];
+
+		produce_item(item);
+
+		smp_wmb(); /* commit the item before incrementing the head */
+
+		buffer->head = (head + 1) & (buffer->size - 1);
+
+		/* wake_up() will make sure that the head is committed before
+		 * waking anyone up */
+		wake_up(consumer);
+	}
+
+	spin_unlock(&producer_lock);
+
+This will instruct the CPU that the contents of the new item must be written
+before the head index makes it available to the consumer and then instructs the
+CPU that the revised head index must be written before the consumer is woken.
+
+Note that wake_up() doesn't have to be the exact mechanism used, but whatever
+is used must guarantee a (write) memory barrier between the update of the head
+index and the change of state of the consumer, if a change of state occurs.
+
+
+THE CONSUMER
+------------
+
+The consumer will look something like this:
+
+	spin_lock(&consumer_lock);
+
+	unsigned long head = ACCESS_ONCE(buffer->head);
+	unsigned long tail = buffer->tail;
+
+	if (CIRC_CNT(head, tail, buffer->size) >= 1) {
+		/* read index before reading contents at that index */
+		smp_read_barrier_depends();
+
+		/* extract one item from the buffer */
+		struct item *item = buffer[tail];
+
+		consume_item(item);
+
+		smp_mb(); /* finish reading descriptor before incrementing tail */
+
+		buffer->tail = (tail + 1) & (buffer->size - 1);
+	}
+
+	spin_unlock(&consumer_lock);
+
+This will instruct the CPU to make sure the index is up to date before reading
+the new item, and then it shall make sure the CPU has finished reading the item
+before it writes the new tail pointer, which will erase the item.
+
+
+Note the use of ACCESS_ONCE() in both algorithms to read the opposition index.
+This prevents the compiler from discarding and reloading its cached value -
+which some compilers will do across smp_read_barrier_depends().  This isn't
+strictly needed if you can be sure that the opposition index will _only_ be
+used the once.
+
+
+===============
+FURTHER READING
+===============
+
+See also Documentation/memory-barriers.txt for a description of Linux's memory
+barrier facilities.

+ 1 - 0
Documentation/connector/cn_test.c

@@ -25,6 +25,7 @@
 #include <linux/module.h>
 #include <linux/module.h>
 #include <linux/moduleparam.h>
 #include <linux/moduleparam.h>
 #include <linux/skbuff.h>
 #include <linux/skbuff.h>
+#include <linux/slab.h>
 #include <linux/timer.h>
 #include <linux/timer.h>
 
 
 #include <linux/connector.h>
 #include <linux/connector.h>

+ 7 - 7
Documentation/fb/imacfb.txt → Documentation/fb/efifb.txt

@@ -1,9 +1,9 @@
 
 
-What is imacfb?
+What is efifb?
 ===============
 ===============
 
 
 This is a generic EFI platform driver for Intel based Apple computers.
 This is a generic EFI platform driver for Intel based Apple computers.
-Imacfb is only for EFI booted Intel Macs.
+efifb is only for EFI booted Intel Macs.
 
 
 Supported Hardware
 Supported Hardware
 ==================
 ==================
@@ -16,16 +16,16 @@ MacMini
 How to use it?
 How to use it?
 ==============
 ==============
 
 
-Imacfb does not have any kind of autodetection of your machine.
+efifb does not have any kind of autodetection of your machine.
 You have to add the following kernel parameters in your elilo.conf:
 You have to add the following kernel parameters in your elilo.conf:
 	Macbook :
 	Macbook :
-		video=imacfb:macbook
+		video=efifb:macbook
 	MacMini :
 	MacMini :
-		video=imacfb:mini
+		video=efifb:mini
 	Macbook Pro 15", iMac 17" :
 	Macbook Pro 15", iMac 17" :
-		video=imacfb:i17
+		video=efifb:i17
 	Macbook Pro 17", iMac 20" :
 	Macbook Pro 17", iMac 20" :
-		video=imacfb:i20
+		video=efifb:i20
 
 
 --
 --
 Edgar Hucek <gimli@dark-green.com>
 Edgar Hucek <gimli@dark-green.com>

+ 2 - 0
Documentation/filesystems/00-INDEX

@@ -16,6 +16,8 @@ befs.txt
 	- information about the BeOS filesystem for Linux.
 	- information about the BeOS filesystem for Linux.
 bfs.txt
 bfs.txt
 	- info for the SCO UnixWare Boot Filesystem (BFS).
 	- info for the SCO UnixWare Boot Filesystem (BFS).
+ceph.txt
+	- info for the Ceph Distributed File System
 cifs.txt
 cifs.txt
 	- description of the CIFS filesystem.
 	- description of the CIFS filesystem.
 coda.txt
 coda.txt

+ 16 - 2
Documentation/filesystems/9p.txt

@@ -37,6 +37,15 @@ For Plan 9 From User Space applications (http://swtch.com/plan9)
 
 
 	mount -t 9p `namespace`/acme /mnt/9 -o trans=unix,uname=$USER
 	mount -t 9p `namespace`/acme /mnt/9 -o trans=unix,uname=$USER
 
 
+For server running on QEMU host with virtio transport:
+
+	mount -t 9p -o trans=virtio <mount_tag> /mnt/9
+
+where mount_tag is the tag associated by the server to each of the exported
+mount points. Each 9P export is seen by the client as a virtio device with an
+associated "mount_tag" property. Available mount tags can be
+seen by reading /sys/bus/virtio/drivers/9pnet_virtio/virtio<n>/mount_tag files.
+
 OPTIONS
 OPTIONS
 =======
 =======
 
 
@@ -47,7 +56,7 @@ OPTIONS
 			fd   	- used passed file descriptors for connection
 			fd   	- used passed file descriptors for connection
                                 (see rfdno and wfdno)
                                 (see rfdno and wfdno)
 			virtio	- connect to the next virtio channel available
 			virtio	- connect to the next virtio channel available
-				(from lguest or KVM with trans_virtio module)
+				(from QEMU with trans_virtio module)
 			rdma	- connect to a specified RDMA channel
 			rdma	- connect to a specified RDMA channel
 
 
   uname=name	user name to attempt mount as on the remote server.  The
   uname=name	user name to attempt mount as on the remote server.  The
@@ -85,7 +94,12 @@ OPTIONS
 
 
   port=n	port to connect to on the remote server
   port=n	port to connect to on the remote server
 
 
-  noextend	force legacy mode (no 9p2000.u semantics)
+  noextend	force legacy mode (no 9p2000.u or 9p2000.L semantics)
+
+  version=name	Select 9P protocol version. Valid options are:
+			9p2000          - Legacy mode (same as noextend)
+			9p2000.u        - Use 9P2000.u protocol
+			9p2000.L        - Use 9P2000.L protocol
 
 
   dfltuid	attempt to mount as a particular uid
   dfltuid	attempt to mount as a particular uid
 
 

+ 6 - 5
Documentation/filesystems/ceph.txt

@@ -8,7 +8,7 @@ Basic features include:
 
 
  * POSIX semantics
  * POSIX semantics
  * Seamless scaling from 1 to many thousands of nodes
  * Seamless scaling from 1 to many thousands of nodes
- * High availability and reliability.  No single points of failure.
+ * High availability and reliability.  No single point of failure.
  * N-way replication of data across storage nodes
  * N-way replication of data across storage nodes
  * Fast recovery from node failures
  * Fast recovery from node failures
  * Automatic rebalancing of data on node addition/removal
  * Automatic rebalancing of data on node addition/removal
@@ -94,7 +94,7 @@ Mount Options
 
 
   wsize=X
   wsize=X
 	Specify the maximum write size in bytes.  By default there is no
 	Specify the maximum write size in bytes.  By default there is no
-	maximu.  Ceph will normally size writes based on the file stripe
+	maximum.  Ceph will normally size writes based on the file stripe
 	size.
 	size.
 
 
   rsize=X
   rsize=X
@@ -115,7 +115,7 @@ Mount Options
 	number of entries in that directory.
 	number of entries in that directory.
 
 
   nocrc
   nocrc
-	Disable CRC32C calculation for data writes.  If set, the OSD
+	Disable CRC32C calculation for data writes.  If set, the storage node
 	must rely on TCP's error correction to detect data corruption
 	must rely on TCP's error correction to detect data corruption
 	in the data payload.
 	in the data payload.
 
 
@@ -133,7 +133,8 @@ For more information on Ceph, see the home page at
 	http://ceph.newdream.net/
 	http://ceph.newdream.net/
 
 
 The Linux kernel client source tree is available at
 The Linux kernel client source tree is available at
-	git://ceph.newdream.net/linux-ceph-client.git
+	git://ceph.newdream.net/git/ceph-client.git
+	git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
 
 
 and the source for the full system is at
 and the source for the full system is at
-	git://ceph.newdream.net/ceph.git
+	git://ceph.newdream.net/git/ceph.git

+ 5 - 1
Documentation/filesystems/tmpfs.txt

@@ -82,11 +82,13 @@ tmpfs has a mount option to set the NUMA memory allocation policy for
 all files in that instance (if CONFIG_NUMA is enabled) - which can be
 all files in that instance (if CONFIG_NUMA is enabled) - which can be
 adjusted on the fly via 'mount -o remount ...'
 adjusted on the fly via 'mount -o remount ...'
 
 
-mpol=default             prefers to allocate memory from the local node
+mpol=default             use the process allocation policy
+                         (see set_mempolicy(2))
 mpol=prefer:Node         prefers to allocate memory from the given Node
 mpol=prefer:Node         prefers to allocate memory from the given Node
 mpol=bind:NodeList       allocates memory only from nodes in NodeList
 mpol=bind:NodeList       allocates memory only from nodes in NodeList
 mpol=interleave          prefers to allocate from each node in turn
 mpol=interleave          prefers to allocate from each node in turn
 mpol=interleave:NodeList allocates from each node of NodeList in turn
 mpol=interleave:NodeList allocates from each node of NodeList in turn
+mpol=local		 prefers to allocate memory from the local node
 
 
 NodeList format is a comma-separated list of decimal numbers and ranges,
 NodeList format is a comma-separated list of decimal numbers and ranges,
 a range being two hyphen-separated decimal numbers, the smallest and
 a range being two hyphen-separated decimal numbers, the smallest and
@@ -134,3 +136,5 @@ Author:
    Christoph Rohland <cr@sap.com>, 1.12.01
    Christoph Rohland <cr@sap.com>, 1.12.01
 Updated:
 Updated:
    Hugh Dickins, 4 June 2007
    Hugh Dickins, 4 June 2007
+Updated:
+   KOSAKI Motohiro, 16 Mar 2010

+ 20 - 0
Documentation/memory-barriers.txt

@@ -3,6 +3,7 @@
 			 ============================
 			 ============================
 
 
 By: David Howells <dhowells@redhat.com>
 By: David Howells <dhowells@redhat.com>
+    Paul E. McKenney <paulmck@linux.vnet.ibm.com>
 
 
 Contents:
 Contents:
 
 
@@ -60,6 +61,10 @@ Contents:
 
 
      - And then there's the Alpha.
      - And then there's the Alpha.
 
 
+ (*) Example uses.
+
+     - Circular buffers.
+
  (*) References.
  (*) References.
 
 
 
 
@@ -2226,6 +2231,21 @@ The Alpha defines the Linux kernel's memory barrier model.
 See the subsection on "Cache Coherency" above.
 See the subsection on "Cache Coherency" above.
 
 
 
 
+============
+EXAMPLE USES
+============
+
+CIRCULAR BUFFERS
+----------------
+
+Memory barriers can be used to implement circular buffering without the need
+of a lock to serialise the producer with the consumer.  See:
+
+	Documentation/circular-buffers.txt
+
+for details.
+
+
 ==========
 ==========
 REFERENCES
 REFERENCES
 ==========
 ==========

+ 54 - 0
Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt

@@ -21,6 +21,15 @@ Required properties:
 - fsl,qe-num-snums: define how many serial number(SNUM) the QE can use for the
 - fsl,qe-num-snums: define how many serial number(SNUM) the QE can use for the
   threads.
   threads.
 
 
+Optional properties:
+- fsl,firmware-phandle:
+    Usage: required only if there is no fsl,qe-firmware child node
+    Value type: <phandle>
+    Definition: Points to a firmware node (see "QE Firmware Node" below)
+        that contains the firmware that should be uploaded for this QE.
+        The compatible property for the firmware node should say,
+        "fsl,qe-firmware".
+
 Recommended properties
 Recommended properties
 - brg-frequency : the internal clock source frequency for baud-rate
 - brg-frequency : the internal clock source frequency for baud-rate
   generators in Hz.
   generators in Hz.
@@ -59,3 +68,48 @@ Example:
 		reg = <0 c000>;
 		reg = <0 c000>;
 	};
 	};
      };
      };
+
+* QE Firmware Node
+
+This node defines a firmware binary that is embedded in the device tree, for
+the purpose of passing the firmware from bootloader to the kernel, or from
+the hypervisor to the guest.
+
+The firmware node itself contains the firmware binary contents, a compatible
+property, and any firmware-specific properties.  The node should be placed
+inside a QE node that needs it.  Doing so eliminates the need for a
+fsl,firmware-phandle property.  Other QE nodes that need the same firmware
+should define an fsl,firmware-phandle property that points to the firmware node
+in the first QE node.
+
+The fsl,firmware property can be specified in the DTS (possibly using incbin)
+or can be inserted by the boot loader at boot time.
+
+Required properties:
+  - compatible
+      Usage: required
+      Value type: <string>
+      Definition: A standard property.  Specify a string that indicates what
+          kind of firmware it is.  For QE, this should be "fsl,qe-firmware".
+
+   - fsl,firmware
+      Usage: required
+      Value type: <prop-encoded-array>, encoded as an array of bytes
+      Definition: A standard property.  This property contains the firmware
+          binary "blob".
+
+Example:
+	qe1@e0080000 {
+		compatible = "fsl,qe";
+		qe_firmware:qe-firmware {
+			compatible = "fsl,qe-firmware";
+			fsl,firmware = [0x70 0xcd 0x00 0x00 0x01 0x46 0x45 ...];
+		};
+		...
+	};
+
+	qe2@e0090000 {
+		compatible = "fsl,qe";
+		fsl,firmware-phandle = <&qe_firmware>;
+		...
+	};

+ 12 - 4
Documentation/sound/alsa/HD-Audio.txt

@@ -119,10 +119,18 @@ the codec slots 0 and 1 no matter what the hardware reports.
 
 
 Interrupt Handling
 Interrupt Handling
 ~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~~~~
-In rare but some cases, the interrupt isn't properly handled as
-default.  You would notice this by the DMA transfer error reported by
-ALSA PCM core, for example.  Using MSI might help in such a case.
-Pass `enable_msi=1` option for enabling MSI.
+HD-audio driver uses MSI as default (if available) since 2.6.33
+kernel as MSI works better on some machines, and in general, it's
+better for performance.  However, Nvidia controllers showed bad
+regressions with MSI (especially in a combination with AMD chipset),
+thus we disabled MSI for them.
+
+There seem also still other devices that don't work with MSI.  If you
+see a regression wrt the sound quality (stuttering, etc) or a lock-up
+in the recent kernel, try to pass `enable_msi=0` option to disable
+MSI.  If it works, you can add the known bad device to the blacklist
+defined in hda_intel.c.  In such a case, please report and give the
+patch back to the upstream developer. 
 
 
 
 
 HD-AUDIO CODEC
 HD-AUDIO CODEC

+ 3 - 3
Documentation/volatile-considered-harmful.txt

@@ -63,9 +63,9 @@ way to perform a busy wait is:
         cpu_relax();
         cpu_relax();
 
 
 The cpu_relax() call can lower CPU power consumption or yield to a
 The cpu_relax() call can lower CPU power consumption or yield to a
-hyperthreaded twin processor; it also happens to serve as a memory barrier,
-so, once again, volatile is unnecessary.  Of course, busy-waiting is
-generally an anti-social act to begin with.
+hyperthreaded twin processor; it also happens to serve as a compiler
+barrier, so, once again, volatile is unnecessary.  Of course, busy-
+waiting is generally an anti-social act to begin with.
 
 
 There are still a few rare situations where volatile makes sense in the
 There are still a few rare situations where volatile makes sense in the
 kernel:
 kernel:

+ 0 - 3
Documentation/watchdog/src/watchdog-simple.c

@@ -17,9 +17,6 @@ int main(void)
 			ret = -1;
 			ret = -1;
 			break;
 			break;
 		}
 		}
-		ret = fsync(fd);
-		if (ret)
-			break;
 		sleep(10);
 		sleep(10);
 	}
 	}
 	close(fd);
 	close(fd);

+ 6 - 2
Documentation/watchdog/src/watchdog-test.c

@@ -31,6 +31,8 @@ static void keep_alive(void)
  */
  */
 int main(int argc, char *argv[])
 int main(int argc, char *argv[])
 {
 {
+    int flags;
+
     fd = open("/dev/watchdog", O_WRONLY);
     fd = open("/dev/watchdog", O_WRONLY);
 
 
     if (fd == -1) {
     if (fd == -1) {
@@ -41,12 +43,14 @@ int main(int argc, char *argv[])
 
 
     if (argc > 1) {
     if (argc > 1) {
 	if (!strncasecmp(argv[1], "-d", 2)) {
 	if (!strncasecmp(argv[1], "-d", 2)) {
-	    ioctl(fd, WDIOC_SETOPTIONS, WDIOS_DISABLECARD);
+	    flags = WDIOS_DISABLECARD;
+	    ioctl(fd, WDIOC_SETOPTIONS, &flags);
 	    fprintf(stderr, "Watchdog card disabled.\n");
 	    fprintf(stderr, "Watchdog card disabled.\n");
 	    fflush(stderr);
 	    fflush(stderr);
 	    exit(0);
 	    exit(0);
 	} else if (!strncasecmp(argv[1], "-e", 2)) {
 	} else if (!strncasecmp(argv[1], "-e", 2)) {
-	    ioctl(fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD);
+	    flags = WDIOS_ENABLECARD;
+	    ioctl(fd, WDIOC_SETOPTIONS, &flags);
 	    fprintf(stderr, "Watchdog card enabled.\n");
 	    fprintf(stderr, "Watchdog card enabled.\n");
 	    fflush(stderr);
 	    fflush(stderr);
 	    exit(0);
 	    exit(0);

+ 2 - 3
Documentation/watchdog/watchdog-api.txt

@@ -222,11 +222,10 @@ returned value is the temperature in degrees fahrenheit.
     ioctl(fd, WDIOC_GETTEMP, &temperature);
     ioctl(fd, WDIOC_GETTEMP, &temperature);
 
 
 Finally the SETOPTIONS ioctl can be used to control some aspects of
 Finally the SETOPTIONS ioctl can be used to control some aspects of
-the cards operation; right now the pcwd driver is the only one
-supporting this ioctl.
+the cards operation.
 
 
     int options = 0;
     int options = 0;
-    ioctl(fd, WDIOC_SETOPTIONS, options);
+    ioctl(fd, WDIOC_SETOPTIONS, &options);
 
 
 The following options are available:
 The following options are available:
 
 

+ 38 - 27
MAINTAINERS

@@ -797,12 +797,12 @@ M:	Michael Petchkovsky <mkpetch@internode.on.net>
 S:	Maintained
 S:	Maintained
 
 
 ARM/NOMADIK ARCHITECTURE
 ARM/NOMADIK ARCHITECTURE
-M:     Alessandro Rubini <rubini@unipv.it>
-M:     STEricsson <STEricsson_nomadik_linux@list.st.com>
-L:     linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
-S:     Maintained
-F:     arch/arm/mach-nomadik/
-F:     arch/arm/plat-nomadik/
+M:	Alessandro Rubini <rubini@unipv.it>
+M:	STEricsson <STEricsson_nomadik_linux@list.st.com>
+L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+S:	Maintained
+F:	arch/arm/mach-nomadik/
+F:	arch/arm/plat-nomadik/
 
 
 ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT
 ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT
 M:	Nelson Castillo <arhuaco@freaks-unidos.net>
 M:	Nelson Castillo <arhuaco@freaks-unidos.net>
@@ -1443,7 +1443,7 @@ F:	arch/powerpc/platforms/cell/
 
 
 CEPH DISTRIBUTED FILE SYSTEM CLIENT
 CEPH DISTRIBUTED FILE SYSTEM CLIENT
 M:	Sage Weil <sage@newdream.net>
 M:	Sage Weil <sage@newdream.net>
-L:	ceph-devel@lists.sourceforge.net
+L:	ceph-devel@vger.kernel.org
 W:	http://ceph.newdream.net/
 W:	http://ceph.newdream.net/
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
 S:	Supported
 S:	Supported
@@ -1926,17 +1926,17 @@ F:	drivers/scsi/dpt*
 F:	drivers/scsi/dpt/
 F:	drivers/scsi/dpt/
 
 
 DRBD DRIVER
 DRBD DRIVER
-P:     Philipp Reisner
-P:     Lars Ellenberg
-M:     drbd-dev@lists.linbit.com
-L:     drbd-user@lists.linbit.com
-W:     http://www.drbd.org
-T:     git git://git.drbd.org/linux-2.6-drbd.git drbd
-T:     git git://git.drbd.org/drbd-8.3.git
-S:     Supported
-F:     drivers/block/drbd/
-F:     lib/lru_cache.c
-F:     Documentation/blockdev/drbd/
+P:	Philipp Reisner
+P:	Lars Ellenberg
+M:	drbd-dev@lists.linbit.com
+L:	drbd-user@lists.linbit.com
+W:	http://www.drbd.org
+T:	git git://git.drbd.org/linux-2.6-drbd.git drbd
+T:	git git://git.drbd.org/drbd-8.3.git
+S:	Supported
+F:	drivers/block/drbd/
+F:	lib/lru_cache.c
+F:	Documentation/blockdev/drbd/
 
 
 DRIVER CORE, KOBJECTS, AND SYSFS
 DRIVER CORE, KOBJECTS, AND SYSFS
 M:	Greg Kroah-Hartman <gregkh@suse.de>
 M:	Greg Kroah-Hartman <gregkh@suse.de>
@@ -2474,12 +2474,6 @@ L:	linuxppc-dev@ozlabs.org
 S:	Odd Fixes
 S:	Odd Fixes
 F:	drivers/char/hvc_*
 F:	drivers/char/hvc_*
 
 
-VIRTIO CONSOLE DRIVER
-M:	Amit Shah <amit.shah@redhat.com>
-L:	virtualization@lists.linux-foundation.org
-S:	Maintained
-F:	drivers/char/virtio_console.c
-
 iSCSI BOOT FIRMWARE TABLE (iBFT) DRIVER
 iSCSI BOOT FIRMWARE TABLE (iBFT) DRIVER
 M:	Peter Jones <pjones@redhat.com>
 M:	Peter Jones <pjones@redhat.com>
 M:	Konrad Rzeszutek Wilk <konrad@kernel.org>
 M:	Konrad Rzeszutek Wilk <konrad@kernel.org>
@@ -3270,6 +3264,16 @@ S:	Maintained
 F:	include/linux/kexec.h
 F:	include/linux/kexec.h
 F:	kernel/kexec.c
 F:	kernel/kexec.c
 
 
+KEYS/KEYRINGS:
+M:	David Howells <dhowells@redhat.com>
+L:	keyrings@linux-nfs.org
+S:	Maintained
+F:	Documentation/keys.txt
+F:	include/linux/key.h
+F:	include/linux/key-type.h
+F:	include/keys/
+F:	security/keys/
+
 KGDB
 KGDB
 M:	Jason Wessel <jason.wessel@windriver.com>
 M:	Jason Wessel <jason.wessel@windriver.com>
 L:	kgdb-bugreport@lists.sourceforge.net
 L:	kgdb-bugreport@lists.sourceforge.net
@@ -3519,8 +3523,8 @@ F:	drivers/scsi/sym53c8xx_2/
 LTP (Linux Test Project)
 LTP (Linux Test Project)
 M:	Rishikesh K Rajak <risrajak@linux.vnet.ibm.com>
 M:	Rishikesh K Rajak <risrajak@linux.vnet.ibm.com>
 M:	Garrett Cooper <yanegomi@gmail.com>
 M:	Garrett Cooper <yanegomi@gmail.com>
-M:     Mike Frysinger <vapier@gentoo.org>
-M:     Subrata Modak <subrata@linux.vnet.ibm.com>
+M:	Mike Frysinger <vapier@gentoo.org>
+M:	Subrata Modak <subrata@linux.vnet.ibm.com>
 L:	ltp-list@lists.sourceforge.net (subscribers-only)
 L:	ltp-list@lists.sourceforge.net (subscribers-only)
 W:	http://ltp.sourceforge.net/
 W:	http://ltp.sourceforge.net/
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/galak/ltp.git
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/galak/ltp.git
@@ -5961,6 +5965,13 @@ S:	Maintained
 F:	Documentation/filesystems/vfat.txt
 F:	Documentation/filesystems/vfat.txt
 F:	fs/fat/
 F:	fs/fat/
 
 
+VIRTIO CONSOLE DRIVER
+M:	Amit Shah <amit.shah@redhat.com>
+L:	virtualization@lists.linux-foundation.org
+S:	Maintained
+F:	drivers/char/virtio_console.c
+F:	include/linux/virtio_console.h
+
 VIRTIO HOST (VHOST)
 VIRTIO HOST (VHOST)
 M:	"Michael S. Tsirkin" <mst@redhat.com>
 M:	"Michael S. Tsirkin" <mst@redhat.com>
 L:	kvm@vger.kernel.org
 L:	kvm@vger.kernel.org
@@ -6201,7 +6212,7 @@ F:	arch/x86/
 X86 PLATFORM DRIVERS
 X86 PLATFORM DRIVERS
 M:	Matthew Garrett <mjg@redhat.com>
 M:	Matthew Garrett <mjg@redhat.com>
 L:	platform-driver-x86@vger.kernel.org
 L:	platform-driver-x86@vger.kernel.org
-T:      git git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86.git
+T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86.git
 S:	Maintained
 S:	Maintained
 F:	drivers/platform/x86
 F:	drivers/platform/x86
 
 

+ 1 - 1
Makefile

@@ -1,7 +1,7 @@
 VERSION = 2
 VERSION = 2
 PATCHLEVEL = 6
 PATCHLEVEL = 6
 SUBLEVEL = 34
 SUBLEVEL = 34
-EXTRAVERSION = -rc2
+EXTRAVERSION = -rc3
 NAME = Man-Eating Seals of Antiquity
 NAME = Man-Eating Seals of Antiquity
 
 
 # *DOCUMENTATION*
 # *DOCUMENTATION*

+ 1 - 0
arch/alpha/boot/bootp.c

@@ -8,6 +8,7 @@
  * based significantly on the arch/alpha/boot/main.c of Linus Torvalds
  * based significantly on the arch/alpha/boot/main.c of Linus Torvalds
  */
  */
 #include <linux/kernel.h>
 #include <linux/kernel.h>
+#include <linux/slab.h>
 #include <linux/string.h>
 #include <linux/string.h>
 #include <generated/utsrelease.h>
 #include <generated/utsrelease.h>
 #include <linux/mm.h>
 #include <linux/mm.h>

+ 1 - 0
arch/alpha/boot/bootpz.c

@@ -10,6 +10,7 @@
  * and the decompression code from MILO.
  * and the decompression code from MILO.
  */
  */
 #include <linux/kernel.h>
 #include <linux/kernel.h>
+#include <linux/slab.h>
 #include <linux/string.h>
 #include <linux/string.h>
 #include <generated/utsrelease.h>
 #include <generated/utsrelease.h>
 #include <linux/mm.h>
 #include <linux/mm.h>

+ 1 - 0
arch/alpha/boot/main.c

@@ -6,6 +6,7 @@
  * This file is the bootloader for the Linux/AXP kernel
  * This file is the bootloader for the Linux/AXP kernel
  */
  */
 #include <linux/kernel.h>
 #include <linux/kernel.h>
+#include <linux/slab.h>
 #include <linux/string.h>
 #include <linux/string.h>
 #include <generated/utsrelease.h>
 #include <generated/utsrelease.h>
 #include <linux/mm.h>
 #include <linux/mm.h>

+ 1 - 0
arch/alpha/boot/misc.c

@@ -19,6 +19,7 @@
  */
  */
 
 
 #include <linux/kernel.h>
 #include <linux/kernel.h>
+#include <linux/slab.h>
 
 
 #include <asm/uaccess.h>
 #include <asm/uaccess.h>
 
 

+ 0 - 1
arch/alpha/kernel/irq.c

@@ -18,7 +18,6 @@
 #include <linux/sched.h>
 #include <linux/sched.h>
 #include <linux/ptrace.h>
 #include <linux/ptrace.h>
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>
-#include <linux/slab.h>
 #include <linux/random.h>
 #include <linux/random.h>
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/irq.h>
 #include <linux/irq.h>

+ 1 - 1
arch/alpha/kernel/osf_sys.c

@@ -20,7 +20,6 @@
 #include <linux/syscalls.h>
 #include <linux/syscalls.h>
 #include <linux/unistd.h>
 #include <linux/unistd.h>
 #include <linux/ptrace.h>
 #include <linux/ptrace.h>
-#include <linux/slab.h>
 #include <linux/user.h>
 #include <linux/user.h>
 #include <linux/utsname.h>
 #include <linux/utsname.h>
 #include <linux/time.h>
 #include <linux/time.h>
@@ -37,6 +36,7 @@
 #include <linux/uio.h>
 #include <linux/uio.h>
 #include <linux/vfs.h>
 #include <linux/vfs.h>
 #include <linux/rcupdate.h>
 #include <linux/rcupdate.h>
+#include <linux/slab.h>
 
 
 #include <asm/fpu.h>
 #include <asm/fpu.h>
 #include <asm/io.h>
 #include <asm/io.h>

+ 1 - 0
arch/alpha/kernel/pci-noop.c

@@ -7,6 +7,7 @@
 #include <linux/pci.h>
 #include <linux/pci.h>
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/bootmem.h>
 #include <linux/bootmem.h>
+#include <linux/gfp.h>
 #include <linux/capability.h>
 #include <linux/capability.h>
 #include <linux/mm.h>
 #include <linux/mm.h>
 #include <linux/errno.h>
 #include <linux/errno.h>

+ 1 - 0
arch/alpha/kernel/pci-sysfs.c

@@ -10,6 +10,7 @@
  */
  */
 
 
 #include <linux/sched.h>
 #include <linux/sched.h>
+#include <linux/slab.h>
 #include <linux/pci.h>
 #include <linux/pci.h>
 
 
 static int hose_mmap_page_range(struct pci_controller *hose,
 static int hose_mmap_page_range(struct pci_controller *hose,

+ 1 - 1
arch/alpha/kernel/pci_iommu.c

@@ -5,7 +5,7 @@
 #include <linux/kernel.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
 #include <linux/mm.h>
 #include <linux/pci.h>
 #include <linux/pci.h>
-#include <linux/slab.h>
+#include <linux/gfp.h>
 #include <linux/bootmem.h>
 #include <linux/bootmem.h>
 #include <linux/scatterlist.h>
 #include <linux/scatterlist.h>
 #include <linux/log2.h>
 #include <linux/log2.h>

+ 1 - 1
arch/alpha/kernel/process.c

@@ -17,7 +17,6 @@
 #include <linux/stddef.h>
 #include <linux/stddef.h>
 #include <linux/unistd.h>
 #include <linux/unistd.h>
 #include <linux/ptrace.h>
 #include <linux/ptrace.h>
-#include <linux/slab.h>
 #include <linux/user.h>
 #include <linux/user.h>
 #include <linux/time.h>
 #include <linux/time.h>
 #include <linux/major.h>
 #include <linux/major.h>
@@ -28,6 +27,7 @@
 #include <linux/reboot.h>
 #include <linux/reboot.h>
 #include <linux/tty.h>
 #include <linux/tty.h>
 #include <linux/console.h>
 #include <linux/console.h>
+#include <linux/slab.h>
 
 
 #include <asm/reg.h>
 #include <asm/reg.h>
 #include <asm/uaccess.h>
 #include <asm/uaccess.h>

+ 0 - 1
arch/alpha/kernel/ptrace.c

@@ -11,7 +11,6 @@
 #include <linux/errno.h>
 #include <linux/errno.h>
 #include <linux/ptrace.h>
 #include <linux/ptrace.h>
 #include <linux/user.h>
 #include <linux/user.h>
-#include <linux/slab.h>
 #include <linux/security.h>
 #include <linux/security.h>
 #include <linux/signal.h>
 #include <linux/signal.h>
 
 

+ 0 - 1
arch/alpha/kernel/smc37c669.c

@@ -3,7 +3,6 @@
  */
  */
 #include <linux/kernel.h>
 #include <linux/kernel.h>
 
 
-#include <linux/slab.h>
 #include <linux/mm.h>
 #include <linux/mm.h>
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/delay.h>
 #include <linux/delay.h>

+ 0 - 1
arch/alpha/kernel/smc37c93x.c

@@ -4,7 +4,6 @@
 
 
 #include <linux/kernel.h>
 #include <linux/kernel.h>
 
 
-#include <linux/slab.h>
 #include <linux/mm.h>
 #include <linux/mm.h>
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/delay.h>
 #include <linux/delay.h>

+ 1 - 0
arch/alpha/kernel/srm_env.c

@@ -30,6 +30,7 @@
  */
  */
 
 
 #include <linux/kernel.h>
 #include <linux/kernel.h>
+#include <linux/gfp.h>
 #include <linux/module.h>
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/proc_fs.h>
 #include <linux/proc_fs.h>

+ 1 - 0
arch/alpha/mm/init.c

@@ -20,6 +20,7 @@
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/bootmem.h> /* max_low_pfn */
 #include <linux/bootmem.h> /* max_low_pfn */
 #include <linux/vmalloc.h>
 #include <linux/vmalloc.h>
+#include <linux/gfp.h>
 
 
 #include <asm/system.h>
 #include <asm/system.h>
 #include <asm/uaccess.h>
 #include <asm/uaccess.h>

+ 1 - 0
arch/arm/common/clkdev.c

@@ -18,6 +18,7 @@
 #include <linux/string.h>
 #include <linux/string.h>
 #include <linux/mutex.h>
 #include <linux/mutex.h>
 #include <linux/clk.h>
 #include <linux/clk.h>
+#include <linux/slab.h>
 
 
 #include <asm/clkdev.h>
 #include <asm/clkdev.h>
 #include <mach/clkdev.h>
 #include <mach/clkdev.h>

+ 0 - 1
arch/arm/common/it8152.c

@@ -21,7 +21,6 @@
 #include <linux/ptrace.h>
 #include <linux/ptrace.h>
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>
 #include <linux/mm.h>
 #include <linux/mm.h>
-#include <linux/slab.h>
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/ioport.h>
 #include <linux/ioport.h>
 #include <linux/irq.h>
 #include <linux/irq.h>

+ 5 - 5
arch/arm/common/locomo.c

@@ -290,7 +290,7 @@ static int locomo_suspend(struct platform_device *dev, pm_message_t state)
 	save->LCM_GPO     = locomo_readl(lchip->base + LOCOMO_GPO);	/* GPIO */
 	save->LCM_GPO     = locomo_readl(lchip->base + LOCOMO_GPO);	/* GPIO */
 	locomo_writel(0x00, lchip->base + LOCOMO_GPO);
 	locomo_writel(0x00, lchip->base + LOCOMO_GPO);
 	save->LCM_SPICT   = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPICT);	/* SPI */
 	save->LCM_SPICT   = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPICT);	/* SPI */
-	locomo_writel(0x40, lchip->base + LOCOMO_SPICT);
+	locomo_writel(0x40, lchip->base + LOCOMO_SPI + LOCOMO_SPICT);
 	save->LCM_GPE     = locomo_readl(lchip->base + LOCOMO_GPE);	/* GPIO */
 	save->LCM_GPE     = locomo_readl(lchip->base + LOCOMO_GPE);	/* GPIO */
 	locomo_writel(0x00, lchip->base + LOCOMO_GPE);
 	locomo_writel(0x00, lchip->base + LOCOMO_GPE);
 	save->LCM_ASD     = locomo_readl(lchip->base + LOCOMO_ASD);	/* ADSTART */
 	save->LCM_ASD     = locomo_readl(lchip->base + LOCOMO_ASD);	/* ADSTART */
@@ -418,7 +418,7 @@ __locomo_probe(struct device *me, struct resource *mem, int irq)
 	/* Longtime timer */
 	/* Longtime timer */
 	locomo_writel(0, lchip->base + LOCOMO_LTINT);
 	locomo_writel(0, lchip->base + LOCOMO_LTINT);
 	/* SPI */
 	/* SPI */
-	locomo_writel(0, lchip->base + LOCOMO_SPIIE);
+	locomo_writel(0, lchip->base + LOCOMO_SPI + LOCOMO_SPIIE);
 
 
 	locomo_writel(6 + 8 + 320 + 30 - 10, lchip->base + LOCOMO_ASD);
 	locomo_writel(6 + 8 + 320 + 30 - 10, lchip->base + LOCOMO_ASD);
 	r = locomo_readl(lchip->base + LOCOMO_ASD);
 	r = locomo_readl(lchip->base + LOCOMO_ASD);
@@ -707,7 +707,7 @@ void locomo_m62332_senddata(struct locomo_dev *ldev, unsigned int dac_data, int
 	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4.7 usec */
 	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4.7 usec */
 	if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) {	/* High is error */
 	if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) {	/* High is error */
 		printk(KERN_WARNING "locomo: m62332_senddata Error 1\n");
 		printk(KERN_WARNING "locomo: m62332_senddata Error 1\n");
-		return;
+		goto out;
 	}
 	}
 
 
 	/* Send Sub address (LSB is channel select) */
 	/* Send Sub address (LSB is channel select) */
@@ -735,7 +735,7 @@ void locomo_m62332_senddata(struct locomo_dev *ldev, unsigned int dac_data, int
 	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4.7 usec */
 	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4.7 usec */
 	if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) {	/* High is error */
 	if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) {	/* High is error */
 		printk(KERN_WARNING "locomo: m62332_senddata Error 2\n");
 		printk(KERN_WARNING "locomo: m62332_senddata Error 2\n");
-		return;
+		goto out;
 	}
 	}
 
 
 	/* Send DAC data */
 	/* Send DAC data */
@@ -760,9 +760,9 @@ void locomo_m62332_senddata(struct locomo_dev *ldev, unsigned int dac_data, int
 	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4.7 usec */
 	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4.7 usec */
 	if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) {	/* High is error */
 	if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) {	/* High is error */
 		printk(KERN_WARNING "locomo: m62332_senddata Error 3\n");
 		printk(KERN_WARNING "locomo: m62332_senddata Error 3\n");
-		return;
 	}
 	}
 
 
+out:
 	/* stop */
 	/* stop */
 	r = locomo_readl(mapbase + LOCOMO_DAC);
 	r = locomo_readl(mapbase + LOCOMO_DAC);
 	r &=  ~(LOCOMO_DAC_SCLOEB);
 	r &=  ~(LOCOMO_DAC_SCLOEB);

+ 1 - 37
arch/arm/include/asm/cacheflush.h

@@ -15,6 +15,7 @@
 #include <asm/glue.h>
 #include <asm/glue.h>
 #include <asm/shmparam.h>
 #include <asm/shmparam.h>
 #include <asm/cachetype.h>
 #include <asm/cachetype.h>
+#include <asm/outercache.h>
 
 
 #define CACHE_COLOUR(vaddr)	((vaddr & (SHMLBA - 1)) >> PAGE_SHIFT)
 #define CACHE_COLOUR(vaddr)	((vaddr & (SHMLBA - 1)) >> PAGE_SHIFT)
 
 
@@ -219,12 +220,6 @@ struct cpu_cache_fns {
 	void (*dma_flush_range)(const void *, const void *);
 	void (*dma_flush_range)(const void *, const void *);
 };
 };
 
 
-struct outer_cache_fns {
-	void (*inv_range)(unsigned long, unsigned long);
-	void (*clean_range)(unsigned long, unsigned long);
-	void (*flush_range)(unsigned long, unsigned long);
-};
-
 /*
 /*
  * Select the calling method
  * Select the calling method
  */
  */
@@ -281,37 +276,6 @@ extern void dmac_flush_range(const void *, const void *);
 
 
 #endif
 #endif
 
 
-#ifdef CONFIG_OUTER_CACHE
-
-extern struct outer_cache_fns outer_cache;
-
-static inline void outer_inv_range(unsigned long start, unsigned long end)
-{
-	if (outer_cache.inv_range)
-		outer_cache.inv_range(start, end);
-}
-static inline void outer_clean_range(unsigned long start, unsigned long end)
-{
-	if (outer_cache.clean_range)
-		outer_cache.clean_range(start, end);
-}
-static inline void outer_flush_range(unsigned long start, unsigned long end)
-{
-	if (outer_cache.flush_range)
-		outer_cache.flush_range(start, end);
-}
-
-#else
-
-static inline void outer_inv_range(unsigned long start, unsigned long end)
-{ }
-static inline void outer_clean_range(unsigned long start, unsigned long end)
-{ }
-static inline void outer_flush_range(unsigned long start, unsigned long end)
-{ }
-
-#endif
-
 /*
 /*
  * Copy user data from/to a page which is mapped into a different
  * Copy user data from/to a page which is mapped into a different
  * processes address space.  Really, we want to allow our "user
  * processes address space.  Really, we want to allow our "user

+ 1 - 0
arch/arm/include/asm/clkdev.h

@@ -13,6 +13,7 @@
 #define __ASM_CLKDEV_H
 #define __ASM_CLKDEV_H
 
 
 struct clk;
 struct clk;
+struct device;
 
 
 struct clk_lookup {
 struct clk_lookup {
 	struct list_head	node;
 	struct list_head	node;

+ 1 - 0
arch/arm/include/asm/irq.h

@@ -17,6 +17,7 @@
 
 
 #ifndef __ASSEMBLY__
 #ifndef __ASSEMBLY__
 struct irqaction;
 struct irqaction;
+struct pt_regs;
 extern void migrate_irqs(void);
 extern void migrate_irqs(void);
 
 
 extern void asm_do_IRQ(unsigned int, struct pt_regs *);
 extern void asm_do_IRQ(unsigned int, struct pt_regs *);

+ 75 - 0
arch/arm/include/asm/outercache.h

@@ -0,0 +1,75 @@
+/*
+ * arch/arm/include/asm/outercache.h
+ *
+ * Copyright (C) 2010 ARM Ltd.
+ * Written by Catalin Marinas <catalin.marinas@arm.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __ASM_OUTERCACHE_H
+#define __ASM_OUTERCACHE_H
+
+struct outer_cache_fns {
+	void (*inv_range)(unsigned long, unsigned long);
+	void (*clean_range)(unsigned long, unsigned long);
+	void (*flush_range)(unsigned long, unsigned long);
+#ifdef CONFIG_OUTER_CACHE_SYNC
+	void (*sync)(void);
+#endif
+};
+
+#ifdef CONFIG_OUTER_CACHE
+
+extern struct outer_cache_fns outer_cache;
+
+static inline void outer_inv_range(unsigned long start, unsigned long end)
+{
+	if (outer_cache.inv_range)
+		outer_cache.inv_range(start, end);
+}
+static inline void outer_clean_range(unsigned long start, unsigned long end)
+{
+	if (outer_cache.clean_range)
+		outer_cache.clean_range(start, end);
+}
+static inline void outer_flush_range(unsigned long start, unsigned long end)
+{
+	if (outer_cache.flush_range)
+		outer_cache.flush_range(start, end);
+}
+
+#else
+
+static inline void outer_inv_range(unsigned long start, unsigned long end)
+{ }
+static inline void outer_clean_range(unsigned long start, unsigned long end)
+{ }
+static inline void outer_flush_range(unsigned long start, unsigned long end)
+{ }
+
+#endif
+
+#ifdef CONFIG_OUTER_CACHE_SYNC
+static inline void outer_sync(void)
+{
+	if (outer_cache.sync)
+		outer_cache.sync();
+}
+#else
+static inline void outer_sync(void)
+{ }
+#endif
+
+#endif	/* __ASM_OUTERCACHE_H */

+ 10 - 6
arch/arm/include/asm/system.h

@@ -60,6 +60,8 @@
 #include <linux/linkage.h>
 #include <linux/linkage.h>
 #include <linux/irqflags.h>
 #include <linux/irqflags.h>
 
 
+#include <asm/outercache.h>
+
 #define __exception	__attribute__((section(".exception.text")))
 #define __exception	__attribute__((section(".exception.text")))
 
 
 struct thread_info;
 struct thread_info;
@@ -137,10 +139,12 @@ extern unsigned int user_debug;
 #define dmb() __asm__ __volatile__ ("" : : : "memory")
 #define dmb() __asm__ __volatile__ ("" : : : "memory")
 #endif
 #endif
 
 
-#if __LINUX_ARM_ARCH__ >= 7 || defined(CONFIG_SMP)
-#define mb()		dmb()
+#ifdef CONFIG_ARCH_HAS_BARRIERS
+#include <mach/barriers.h>
+#elif __LINUX_ARM_ARCH__ >= 7 || defined(CONFIG_SMP)
+#define mb()		do { dsb(); outer_sync(); } while (0)
 #define rmb()		dmb()
 #define rmb()		dmb()
-#define wmb()		dmb()
+#define wmb()		mb()
 #else
 #else
 #define mb()	do { if (arch_is_coherent()) dmb(); else barrier(); } while (0)
 #define mb()	do { if (arch_is_coherent()) dmb(); else barrier(); } while (0)
 #define rmb()	do { if (arch_is_coherent()) dmb(); else barrier(); } while (0)
 #define rmb()	do { if (arch_is_coherent()) dmb(); else barrier(); } while (0)
@@ -152,9 +156,9 @@ extern unsigned int user_debug;
 #define smp_rmb()	barrier()
 #define smp_rmb()	barrier()
 #define smp_wmb()	barrier()
 #define smp_wmb()	barrier()
 #else
 #else
-#define smp_mb()	mb()
-#define smp_rmb()	rmb()
-#define smp_wmb()	wmb()
+#define smp_mb()	dmb()
+#define smp_rmb()	dmb()
+#define smp_wmb()	dmb()
 #endif
 #endif
 
 
 #define read_barrier_depends()		do { } while(0)
 #define read_barrier_depends()		do { } while(0)

+ 0 - 1
arch/arm/kernel/irq.c

@@ -27,7 +27,6 @@
 #include <linux/ioport.h>
 #include <linux/ioport.h>
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>
 #include <linux/irq.h>
 #include <linux/irq.h>
-#include <linux/slab.h>
 #include <linux/random.h>
 #include <linux/random.h>
 #include <linux/smp.h>
 #include <linux/smp.h>
 #include <linux/init.h>
 #include <linux/init.h>

+ 10 - 1
arch/arm/kernel/kprobes.c

@@ -22,6 +22,7 @@
 #include <linux/kernel.h>
 #include <linux/kernel.h>
 #include <linux/kprobes.h>
 #include <linux/kprobes.h>
 #include <linux/module.h>
 #include <linux/module.h>
+#include <linux/slab.h>
 #include <linux/stop_machine.h>
 #include <linux/stop_machine.h>
 #include <linux/stringify.h>
 #include <linux/stringify.h>
 #include <asm/traps.h>
 #include <asm/traps.h>
@@ -393,6 +394,14 @@ void __kprobes jprobe_return(void)
 		/*
 		/*
 		 * Setup an empty pt_regs. Fill SP and PC fields as
 		 * Setup an empty pt_regs. Fill SP and PC fields as
 		 * they're needed by longjmp_break_handler.
 		 * they're needed by longjmp_break_handler.
+		 *
+		 * We allocate some slack between the original SP and start of
+		 * our fabricated regs. To be precise we want to have worst case
+		 * covered which is STMFD with all 16 regs so we allocate 2 *
+		 * sizeof(struct_pt_regs)).
+		 *
+		 * This is to prevent any simulated instruction from writing
+		 * over the regs when they are accessing the stack.
 		 */
 		 */
 		"sub    sp, %0, %1		\n\t"
 		"sub    sp, %0, %1		\n\t"
 		"ldr    r0, ="__stringify(JPROBE_MAGIC_ADDR)"\n\t"
 		"ldr    r0, ="__stringify(JPROBE_MAGIC_ADDR)"\n\t"
@@ -410,7 +419,7 @@ void __kprobes jprobe_return(void)
 		"ldmia	sp, {r0 - pc}		\n\t"
 		"ldmia	sp, {r0 - pc}		\n\t"
 		:
 		:
 		: "r" (kcb->jprobe_saved_regs.ARM_sp),
 		: "r" (kcb->jprobe_saved_regs.ARM_sp),
-		  "I" (sizeof(struct pt_regs)),
+		  "I" (sizeof(struct pt_regs) * 2),
 		  "J" (offsetof(struct pt_regs, ARM_sp)),
 		  "J" (offsetof(struct pt_regs, ARM_sp)),
 		  "J" (offsetof(struct pt_regs, ARM_pc)),
 		  "J" (offsetof(struct pt_regs, ARM_pc)),
 		  "J" (offsetof(struct pt_regs, ARM_cpsr))
 		  "J" (offsetof(struct pt_regs, ARM_cpsr))

+ 1 - 1
arch/arm/kernel/module.c

@@ -16,9 +16,9 @@
 #include <linux/mm.h>
 #include <linux/mm.h>
 #include <linux/elf.h>
 #include <linux/elf.h>
 #include <linux/vmalloc.h>
 #include <linux/vmalloc.h>
-#include <linux/slab.h>
 #include <linux/fs.h>
 #include <linux/fs.h>
 #include <linux/string.h>
 #include <linux/string.h>
+#include <linux/gfp.h>
 
 
 #include <asm/pgtable.h>
 #include <asm/pgtable.h>
 #include <asm/sections.h>
 #include <asm/sections.h>

+ 0 - 1
arch/arm/kernel/process.c

@@ -16,7 +16,6 @@
 #include <linux/mm.h>
 #include <linux/mm.h>
 #include <linux/stddef.h>
 #include <linux/stddef.h>
 #include <linux/unistd.h>
 #include <linux/unistd.h>
-#include <linux/slab.h>
 #include <linux/user.h>
 #include <linux/user.h>
 #include <linux/delay.h>
 #include <linux/delay.h>
 #include <linux/reboot.h>
 #include <linux/reboot.h>

+ 1 - 1
arch/arm/kernel/sys_arm.c

@@ -15,7 +15,6 @@
 #include <linux/module.h>
 #include <linux/module.h>
 #include <linux/errno.h>
 #include <linux/errno.h>
 #include <linux/sched.h>
 #include <linux/sched.h>
-#include <linux/slab.h>
 #include <linux/mm.h>
 #include <linux/mm.h>
 #include <linux/sem.h>
 #include <linux/sem.h>
 #include <linux/msg.h>
 #include <linux/msg.h>
@@ -27,6 +26,7 @@
 #include <linux/file.h>
 #include <linux/file.h>
 #include <linux/ipc.h>
 #include <linux/ipc.h>
 #include <linux/uaccess.h>
 #include <linux/uaccess.h>
+#include <linux/slab.h>
 
 
 /* Fork a new task - this creates a new program thread.
 /* Fork a new task - this creates a new program thread.
  * This is called indirectly via a small wrapper
  * This is called indirectly via a small wrapper

+ 2 - 2
arch/arm/lib/memmove.S

@@ -74,7 +74,7 @@ ENTRY(memmove)
 		rsb	ip, ip, #32
 		rsb	ip, ip, #32
 		addne	pc, pc, ip		@ C is always clear here
 		addne	pc, pc, ip		@ C is always clear here
 		b	7f
 		b	7f
-6:		nop
+6:		W(nop)
 		W(ldr)	r3, [r1, #-4]!
 		W(ldr)	r3, [r1, #-4]!
 		W(ldr)	r4, [r1, #-4]!
 		W(ldr)	r4, [r1, #-4]!
 		W(ldr)	r5, [r1, #-4]!
 		W(ldr)	r5, [r1, #-4]!
@@ -85,7 +85,7 @@ ENTRY(memmove)
 
 
 		add	pc, pc, ip
 		add	pc, pc, ip
 		nop
 		nop
-		nop
+		W(nop)
 		W(str)	r3, [r0, #-4]!
 		W(str)	r3, [r0, #-4]!
 		W(str)	r4, [r0, #-4]!
 		W(str)	r4, [r0, #-4]!
 		W(str)	r5, [r0, #-4]!
 		W(str)	r5, [r0, #-4]!

+ 1 - 0
arch/arm/lib/uaccess_with_memcpy.c

@@ -16,6 +16,7 @@
 #include <linux/mm.h>
 #include <linux/mm.h>
 #include <linux/sched.h>
 #include <linux/sched.h>
 #include <linux/hardirq.h> /* for in_atomic() */
 #include <linux/hardirq.h> /* for in_atomic() */
+#include <linux/gfp.h>
 #include <asm/current.h>
 #include <asm/current.h>
 #include <asm/page.h>
 #include <asm/page.h>
 
 

+ 1 - 0
arch/arm/mach-aaec2000/core.c

@@ -20,6 +20,7 @@
 #include <linux/timex.h>
 #include <linux/timex.h>
 #include <linux/signal.h>
 #include <linux/signal.h>
 #include <linux/clk.h>
 #include <linux/clk.h>
+#include <linux/gfp.h>
 
 
 #include <mach/hardware.h>
 #include <mach/hardware.h>
 #include <asm/irq.h>
 #include <asm/irq.h>

+ 1 - 0
arch/arm/mach-bcmring/dma.c

@@ -28,6 +28,7 @@
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>
 #include <linux/irqreturn.h>
 #include <linux/irqreturn.h>
 #include <linux/proc_fs.h>
 #include <linux/proc_fs.h>
+#include <linux/slab.h>
 
 
 #include <mach/timer.h>
 #include <mach/timer.h>
 
 

+ 1 - 0
arch/arm/mach-davinci/board-dm365-evm.c

@@ -22,6 +22,7 @@
 #include <linux/leds.h>
 #include <linux/leds.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
 #include <linux/mtd/partitions.h>
+#include <linux/slab.h>
 #include <linux/mtd/nand.h>
 #include <linux/mtd/nand.h>
 #include <linux/input.h>
 #include <linux/input.h>
 #include <linux/spi/spi.h>
 #include <linux/spi/spi.h>

+ 0 - 1
arch/arm/mach-davinci/dm365.c

@@ -758,7 +758,6 @@ static u8 dm365_default_priorities[DAVINCI_N_AINTC_IRQ] = {
 	[IRQ_MMCINT]			= 7,
 	[IRQ_MMCINT]			= 7,
 	[IRQ_DM365_MMCINT1]		= 7,
 	[IRQ_DM365_MMCINT1]		= 7,
 	[IRQ_DM365_PWMINT3]		= 7,
 	[IRQ_DM365_PWMINT3]		= 7,
-	[IRQ_DDRINT]			= 4,
 	[IRQ_AEMIFINT]			= 2,
 	[IRQ_AEMIFINT]			= 2,
 	[IRQ_DM365_SDIOINT1]		= 2,
 	[IRQ_DM365_SDIOINT1]		= 2,
 	[IRQ_TINT0_TINT12]		= 7,
 	[IRQ_TINT0_TINT12]		= 7,

+ 3 - 1
arch/arm/mach-davinci/dma.c

@@ -23,6 +23,7 @@
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>
 #include <linux/platform_device.h>
 #include <linux/platform_device.h>
 #include <linux/io.h>
 #include <linux/io.h>
+#include <linux/slab.h>
 
 
 #include <mach/edma.h>
 #include <mach/edma.h>
 
 
@@ -1266,7 +1267,8 @@ int edma_start(unsigned channel)
 		/* EDMA channel with event association */
 		/* EDMA channel with event association */
 		pr_debug("EDMA: ER%d %08x\n", j,
 		pr_debug("EDMA: ER%d %08x\n", j,
 			edma_shadow0_read_array(ctlr, SH_ER, j));
 			edma_shadow0_read_array(ctlr, SH_ER, j));
-		/* Clear any pending error */
+		/* Clear any pending event or error */
+		edma_write_array(ctlr, EDMA_ECR, j, mask);
 		edma_write_array(ctlr, EDMA_EMCR, j, mask);
 		edma_write_array(ctlr, EDMA_EMCR, j, mask);
 		/* Clear any SER */
 		/* Clear any SER */
 		edma_shadow0_write_array(ctlr, SH_SECR, j, mask);
 		edma_shadow0_write_array(ctlr, SH_SECR, j, mask);

+ 7 - 1
arch/arm/mach-davinci/include/mach/da8xx.h

@@ -3,7 +3,7 @@
  *
  *
  * Author: Mark A. Greer <mgreer@mvista.com>
  * Author: Mark A. Greer <mgreer@mvista.com>
  *
  *
- * 2007, 2009 (c) MontaVista Software, Inc. This file is licensed under
+ * 2007, 2009-2010 (c) MontaVista Software, Inc. This file is licensed under
  * the terms of the GNU General Public License version 2. This program
  * the terms of the GNU General Public License version 2. This program
  * is licensed "as is" without any warranty of any kind, whether express
  * is licensed "as is" without any warranty of any kind, whether express
  * or implied.
  * or implied.
@@ -13,7 +13,9 @@
 
 
 #include <video/da8xx-fb.h>
 #include <video/da8xx-fb.h>
 
 
+#include <linux/platform_device.h>
 #include <linux/davinci_emac.h>
 #include <linux/davinci_emac.h>
+
 #include <mach/serial.h>
 #include <mach/serial.h>
 #include <mach/edma.h>
 #include <mach/edma.h>
 #include <mach/i2c.h>
 #include <mach/i2c.h>
@@ -144,6 +146,10 @@ extern const short da850_mmcsd0_pins[];
 extern const short da850_nand_pins[];
 extern const short da850_nand_pins[];
 extern const short da850_nor_pins[];
 extern const short da850_nor_pins[];
 
 
+#ifdef CONFIG_DAVINCI_MUX
 int da8xx_pinmux_setup(const short pins[]);
 int da8xx_pinmux_setup(const short pins[]);
+#else
+static inline int da8xx_pinmux_setup(const short pins[]) { return 0; }
+#endif
 
 
 #endif /* __ASM_ARCH_DAVINCI_DA8XX_H */
 #endif /* __ASM_ARCH_DAVINCI_DA8XX_H */

+ 4 - 2
arch/arm/mach-davinci/time.c

@@ -253,8 +253,6 @@ static void __init timer_init(void)
 			irq = USING_COMPARE(t) ? dtip[i].cmp_irq : irq;
 			irq = USING_COMPARE(t) ? dtip[i].cmp_irq : irq;
 			setup_irq(irq, &t->irqaction);
 			setup_irq(irq, &t->irqaction);
 		}
 		}
-
-		timer32_config(&timers[i]);
 	}
 	}
 }
 }
 
 
@@ -331,6 +329,7 @@ static void __init davinci_timer_init(void)
 	unsigned int clocksource_id;
 	unsigned int clocksource_id;
 	static char err[] __initdata = KERN_ERR
 	static char err[] __initdata = KERN_ERR
 		"%s: can't register clocksource!\n";
 		"%s: can't register clocksource!\n";
+	int i;
 
 
 	clockevent_id = soc_info->timer_info->clockevent_id;
 	clockevent_id = soc_info->timer_info->clockevent_id;
 	clocksource_id = soc_info->timer_info->clocksource_id;
 	clocksource_id = soc_info->timer_info->clocksource_id;
@@ -389,6 +388,9 @@ static void __init davinci_timer_init(void)
 
 
 	clockevent_davinci.cpumask = cpumask_of(0);
 	clockevent_davinci.cpumask = cpumask_of(0);
 	clockevents_register_device(&clockevent_davinci);
 	clockevents_register_device(&clockevent_davinci);
+
+	for (i=0; i< ARRAY_SIZE(timers); i++)
+		timer32_config(&timers[i]);
 }
 }
 
 
 struct sys_timer davinci_timer = {
 struct sys_timer davinci_timer = {

+ 0 - 1
arch/arm/mach-h720x/common.c

@@ -14,7 +14,6 @@
  */
  */
 
 
 #include <linux/sched.h>
 #include <linux/sched.h>
-#include <linux/slab.h>
 #include <linux/mman.h>
 #include <linux/mman.h>
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>

+ 0 - 1
arch/arm/mach-integrator/cpu.c

@@ -13,7 +13,6 @@
 #include <linux/types.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/kernel.h>
 #include <linux/cpufreq.h>
 #include <linux/cpufreq.h>
-#include <linux/slab.h>
 #include <linux/sched.h>
 #include <linux/sched.h>
 #include <linux/smp.h>
 #include <linux/smp.h>
 #include <linux/init.h>
 #include <linux/init.h>

+ 1 - 0
arch/arm/mach-integrator/impd1.c

@@ -21,6 +21,7 @@
 #include <linux/amba/bus.h>
 #include <linux/amba/bus.h>
 #include <linux/amba/clcd.h>
 #include <linux/amba/clcd.h>
 #include <linux/io.h>
 #include <linux/io.h>
+#include <linux/slab.h>
 
 
 #include <asm/clkdev.h>
 #include <asm/clkdev.h>
 #include <mach/clkdev.h>
 #include <mach/clkdev.h>

+ 1 - 1
arch/arm/mach-integrator/integrator_cp.c

@@ -13,7 +13,6 @@
 #include <linux/list.h>
 #include <linux/list.h>
 #include <linux/platform_device.h>
 #include <linux/platform_device.h>
 #include <linux/dma-mapping.h>
 #include <linux/dma-mapping.h>
-#include <linux/slab.h>
 #include <linux/string.h>
 #include <linux/string.h>
 #include <linux/sysdev.h>
 #include <linux/sysdev.h>
 #include <linux/amba/bus.h>
 #include <linux/amba/bus.h>
@@ -21,6 +20,7 @@
 #include <linux/amba/clcd.h>
 #include <linux/amba/clcd.h>
 #include <linux/amba/mmci.h>
 #include <linux/amba/mmci.h>
 #include <linux/io.h>
 #include <linux/io.h>
+#include <linux/gfp.h>
 
 
 #include <asm/clkdev.h>
 #include <asm/clkdev.h>
 #include <mach/clkdev.h>
 #include <mach/clkdev.h>

+ 0 - 1
arch/arm/mach-integrator/pci_v3.c

@@ -22,7 +22,6 @@
  */
  */
 #include <linux/kernel.h>
 #include <linux/kernel.h>
 #include <linux/pci.h>
 #include <linux/pci.h>
-#include <linux/slab.h>
 #include <linux/ioport.h>
 #include <linux/ioport.h>
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>
 #include <linux/spinlock.h>
 #include <linux/spinlock.h>

+ 1 - 0
arch/arm/mach-iop13xx/pci.c

@@ -18,6 +18,7 @@
  */
  */
 
 
 #include <linux/pci.h>
 #include <linux/pci.h>
+#include <linux/slab.h>
 #include <linux/delay.h>
 #include <linux/delay.h>
 #include <linux/jiffies.h>
 #include <linux/jiffies.h>
 #include <asm/irq.h>
 #include <asm/irq.h>

+ 0 - 1
arch/arm/mach-iop32x/glantank.c

@@ -19,7 +19,6 @@
 #include <linux/pci.h>
 #include <linux/pci.h>
 #include <linux/pm.h>
 #include <linux/pm.h>
 #include <linux/string.h>
 #include <linux/string.h>
-#include <linux/slab.h>
 #include <linux/serial_core.h>
 #include <linux/serial_core.h>
 #include <linux/serial_8250.h>
 #include <linux/serial_8250.h>
 #include <linux/mtd/physmap.h>
 #include <linux/mtd/physmap.h>

+ 0 - 1
arch/arm/mach-iop32x/iq31244.c

@@ -21,7 +21,6 @@
 #include <linux/pci.h>
 #include <linux/pci.h>
 #include <linux/pm.h>
 #include <linux/pm.h>
 #include <linux/string.h>
 #include <linux/string.h>
-#include <linux/slab.h>
 #include <linux/serial_core.h>
 #include <linux/serial_core.h>
 #include <linux/serial_8250.h>
 #include <linux/serial_8250.h>
 #include <linux/mtd/physmap.h>
 #include <linux/mtd/physmap.h>

+ 0 - 1
arch/arm/mach-iop32x/iq80321.c

@@ -18,7 +18,6 @@
 #include <linux/kernel.h>
 #include <linux/kernel.h>
 #include <linux/pci.h>
 #include <linux/pci.h>
 #include <linux/string.h>
 #include <linux/string.h>
-#include <linux/slab.h>
 #include <linux/serial_core.h>
 #include <linux/serial_core.h>
 #include <linux/serial_8250.h>
 #include <linux/serial_8250.h>
 #include <linux/mtd/physmap.h>
 #include <linux/mtd/physmap.h>

+ 0 - 1
arch/arm/mach-iop32x/n2100.c

@@ -23,7 +23,6 @@
 #include <linux/pci.h>
 #include <linux/pci.h>
 #include <linux/pm.h>
 #include <linux/pm.h>
 #include <linux/string.h>
 #include <linux/string.h>
-#include <linux/slab.h>
 #include <linux/serial_core.h>
 #include <linux/serial_core.h>
 #include <linux/serial_8250.h>
 #include <linux/serial_8250.h>
 #include <linux/mtd/physmap.h>
 #include <linux/mtd/physmap.h>

+ 0 - 1
arch/arm/mach-iop33x/iq80331.c

@@ -17,7 +17,6 @@
 #include <linux/kernel.h>
 #include <linux/kernel.h>
 #include <linux/pci.h>
 #include <linux/pci.h>
 #include <linux/string.h>
 #include <linux/string.h>
-#include <linux/slab.h>
 #include <linux/serial_core.h>
 #include <linux/serial_core.h>
 #include <linux/serial_8250.h>
 #include <linux/serial_8250.h>
 #include <linux/mtd/physmap.h>
 #include <linux/mtd/physmap.h>

+ 0 - 1
arch/arm/mach-iop33x/iq80332.c

@@ -17,7 +17,6 @@
 #include <linux/kernel.h>
 #include <linux/kernel.h>
 #include <linux/pci.h>
 #include <linux/pci.h>
 #include <linux/string.h>
 #include <linux/string.h>
-#include <linux/slab.h>
 #include <linux/serial_core.h>
 #include <linux/serial_core.h>
 #include <linux/serial_8250.h>
 #include <linux/serial_8250.h>
 #include <linux/mtd/physmap.h>
 #include <linux/mtd/physmap.h>

+ 0 - 1
arch/arm/mach-ixp2000/enp2611.c

@@ -26,7 +26,6 @@
 #include <linux/bitops.h>
 #include <linux/bitops.h>
 #include <linux/pci.h>
 #include <linux/pci.h>
 #include <linux/ioport.h>
 #include <linux/ioport.h>
-#include <linux/slab.h>
 #include <linux/delay.h>
 #include <linux/delay.h>
 #include <linux/serial.h>
 #include <linux/serial.h>
 #include <linux/tty.h>
 #include <linux/tty.h>

+ 0 - 1
arch/arm/mach-ixp2000/ixdp2400.c

@@ -23,7 +23,6 @@
 #include <linux/bitops.h>
 #include <linux/bitops.h>
 #include <linux/pci.h>
 #include <linux/pci.h>
 #include <linux/ioport.h>
 #include <linux/ioport.h>
-#include <linux/slab.h>
 #include <linux/delay.h>
 #include <linux/delay.h>
 #include <linux/io.h>
 #include <linux/io.h>
 
 

+ 0 - 1
arch/arm/mach-ixp2000/ixdp2800.c

@@ -23,7 +23,6 @@
 #include <linux/bitops.h>
 #include <linux/bitops.h>
 #include <linux/pci.h>
 #include <linux/pci.h>
 #include <linux/ioport.h>
 #include <linux/ioport.h>
-#include <linux/slab.h>
 #include <linux/delay.h>
 #include <linux/delay.h>
 #include <linux/io.h>
 #include <linux/io.h>
 
 

+ 0 - 1
arch/arm/mach-ixp2000/ixdp2x00.c

@@ -23,7 +23,6 @@
 #include <linux/bitops.h>
 #include <linux/bitops.h>
 #include <linux/pci.h>
 #include <linux/pci.h>
 #include <linux/ioport.h>
 #include <linux/ioport.h>
-#include <linux/slab.h>
 #include <linux/delay.h>
 #include <linux/delay.h>
 #include <linux/io.h>
 #include <linux/io.h>
 
 

+ 0 - 1
arch/arm/mach-ixp2000/ixdp2x01.c

@@ -23,7 +23,6 @@
 #include <linux/bitops.h>
 #include <linux/bitops.h>
 #include <linux/pci.h>
 #include <linux/pci.h>
 #include <linux/ioport.h>
 #include <linux/ioport.h>
-#include <linux/slab.h>
 #include <linux/delay.h>
 #include <linux/delay.h>
 #include <linux/serial.h>
 #include <linux/serial.h>
 #include <linux/tty.h>
 #include <linux/tty.h>

+ 0 - 1
arch/arm/mach-ixp2000/pci.c

@@ -22,7 +22,6 @@
 #include <linux/mm.h>
 #include <linux/mm.h>
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/ioport.h>
 #include <linux/ioport.h>
-#include <linux/slab.h>
 #include <linux/delay.h>
 #include <linux/delay.h>
 #include <linux/io.h>
 #include <linux/io.h>
 
 

+ 1 - 1
arch/arm/mach-ixp23xx/include/mach/memory.h

@@ -19,7 +19,7 @@
  */
  */
 #define PHYS_OFFSET		(0x00000000)
 #define PHYS_OFFSET		(0x00000000)
 
 
-#define IXP23XX_PCI_SDRAM_OFFSET (*((volatile int *)IXP23XX_PCI_SDRAM_BAR) & 0xfffffff0))
+#define IXP23XX_PCI_SDRAM_OFFSET (*((volatile int *)IXP23XX_PCI_SDRAM_BAR) & 0xfffffff0)
 
 
 #define __phys_to_bus(x)	((x) + (IXP23XX_PCI_SDRAM_OFFSET - PHYS_OFFSET))
 #define __phys_to_bus(x)	((x) + (IXP23XX_PCI_SDRAM_OFFSET - PHYS_OFFSET))
 #define __bus_to_phys(x)	((x) - (IXP23XX_PCI_SDRAM_OFFSET - PHYS_OFFSET))
 #define __bus_to_phys(x)	((x) - (IXP23XX_PCI_SDRAM_OFFSET - PHYS_OFFSET))

+ 0 - 1
arch/arm/mach-ixp23xx/pci.c

@@ -23,7 +23,6 @@
 #include <linux/mm.h>
 #include <linux/mm.h>
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/ioport.h>
 #include <linux/ioport.h>
-#include <linux/slab.h>
 #include <linux/delay.h>
 #include <linux/delay.h>
 #include <linux/io.h>
 #include <linux/io.h>
 
 

+ 0 - 1
arch/arm/mach-ixp4xx/avila-setup.c

@@ -17,7 +17,6 @@
 #include <linux/serial.h>
 #include <linux/serial.h>
 #include <linux/tty.h>
 #include <linux/tty.h>
 #include <linux/serial_8250.h>
 #include <linux/serial_8250.h>
-#include <linux/slab.h>
 #include <linux/i2c-gpio.h>
 #include <linux/i2c-gpio.h>
 #include <asm/types.h>
 #include <asm/types.h>
 #include <asm/setup.h>
 #include <asm/setup.h>

+ 0 - 1
arch/arm/mach-ixp4xx/coyote-setup.c

@@ -14,7 +14,6 @@
 #include <linux/serial.h>
 #include <linux/serial.h>
 #include <linux/tty.h>
 #include <linux/tty.h>
 #include <linux/serial_8250.h>
 #include <linux/serial_8250.h>
-#include <linux/slab.h>
 
 
 #include <asm/types.h>
 #include <asm/types.h>
 #include <asm/setup.h>
 #include <asm/setup.h>

+ 0 - 1
arch/arm/mach-ixp4xx/gateway7001-setup.c

@@ -17,7 +17,6 @@
 #include <linux/serial.h>
 #include <linux/serial.h>
 #include <linux/tty.h>
 #include <linux/tty.h>
 #include <linux/serial_8250.h>
 #include <linux/serial_8250.h>
-#include <linux/slab.h>
 
 
 #include <asm/types.h>
 #include <asm/types.h>
 #include <asm/setup.h>
 #include <asm/setup.h>

+ 0 - 1
arch/arm/mach-ixp4xx/gtwx5715-setup.c

@@ -27,7 +27,6 @@
 #include <linux/serial.h>
 #include <linux/serial.h>
 #include <linux/tty.h>
 #include <linux/tty.h>
 #include <linux/serial_8250.h>
 #include <linux/serial_8250.h>
-#include <linux/slab.h>
 #include <asm/types.h>
 #include <asm/types.h>
 #include <asm/setup.h>
 #include <asm/setup.h>
 #include <asm/memory.h>
 #include <asm/memory.h>

+ 0 - 1
arch/arm/mach-ixp4xx/ixdp425-setup.c

@@ -14,7 +14,6 @@
 #include <linux/serial.h>
 #include <linux/serial.h>
 #include <linux/tty.h>
 #include <linux/tty.h>
 #include <linux/serial_8250.h>
 #include <linux/serial_8250.h>
-#include <linux/slab.h>
 #include <linux/i2c-gpio.h>
 #include <linux/i2c-gpio.h>
 #include <linux/io.h>
 #include <linux/io.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/mtd.h>

+ 0 - 1
arch/arm/mach-ixp4xx/ixp4xx_npe.c

@@ -20,7 +20,6 @@
 #include <linux/io.h>
 #include <linux/io.h>
 #include <linux/kernel.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/module.h>
-#include <linux/slab.h>
 #include <mach/npe.h>
 #include <mach/npe.h>
 
 
 #define DEBUG_MSG			0
 #define DEBUG_MSG			0

+ 0 - 1
arch/arm/mach-ixp4xx/wg302v2-setup.c

@@ -18,7 +18,6 @@
 #include <linux/serial.h>
 #include <linux/serial.h>
 #include <linux/tty.h>
 #include <linux/tty.h>
 #include <linux/serial_8250.h>
 #include <linux/serial_8250.h>
-#include <linux/slab.h>
 
 
 #include <asm/types.h>
 #include <asm/types.h>
 #include <asm/setup.h>
 #include <asm/setup.h>

+ 2 - 2
arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c

@@ -74,9 +74,9 @@ static struct gpio_keys_button mv88f6281gtw_ge_button_pins[] = {
 		.desc		= "SWR Button",
 		.desc		= "SWR Button",
 		.active_low	= 1,
 		.active_low	= 1,
 	}, {
 	}, {
-		.code		= KEY_F1,
+		.code		= KEY_WPS_BUTTON,
 		.gpio		= 46,
 		.gpio		= 46,
-		.desc		= "WPS Button(F1)",
+		.desc		= "WPS Button",
 		.active_low	= 1,
 		.active_low	= 1,
 	},
 	},
 };
 };

+ 1 - 0
arch/arm/mach-kirkwood/pcie.c

@@ -10,6 +10,7 @@
 
 
 #include <linux/kernel.h>
 #include <linux/kernel.h>
 #include <linux/pci.h>
 #include <linux/pci.h>
+#include <linux/slab.h>
 #include <linux/mbus.h>
 #include <linux/mbus.h>
 #include <asm/irq.h>
 #include <asm/irq.h>
 #include <asm/mach/pci.h>
 #include <asm/mach/pci.h>

+ 1 - 0
arch/arm/mach-lh7a40x/clcd.c

@@ -10,6 +10,7 @@
  */
  */
 
 
 #include <linux/init.h>
 #include <linux/init.h>
+#include <linux/gfp.h>
 #include <linux/device.h>
 #include <linux/device.h>
 #include <linux/dma-mapping.h>
 #include <linux/dma-mapping.h>
 #include <linux/sysdev.h>
 #include <linux/sysdev.h>

+ 4 - 1
arch/arm/mach-mmp/include/mach/uncompress.h

@@ -14,7 +14,7 @@
 #define UART2_BASE	(APB_PHYS_BASE + 0x17000)
 #define UART2_BASE	(APB_PHYS_BASE + 0x17000)
 #define UART3_BASE	(APB_PHYS_BASE + 0x18000)
 #define UART3_BASE	(APB_PHYS_BASE + 0x18000)
 
 
-static volatile unsigned long *UART = (unsigned long *)UART2_BASE;
+static volatile unsigned long *UART;
 
 
 static inline void putc(char c)
 static inline void putc(char c)
 {
 {
@@ -37,6 +37,9 @@ static inline void flush(void)
 
 
 static inline void arch_decomp_setup(void)
 static inline void arch_decomp_setup(void)
 {
 {
+	/* default to UART2 */
+	UART = (unsigned long *)UART2_BASE;
+
 	if (machine_is_avengers_lite())
 	if (machine_is_avengers_lite())
 		UART = (unsigned long *)UART3_BASE;
 		UART = (unsigned long *)UART3_BASE;
 }
 }

+ 1 - 0
arch/arm/mach-mx3/mach-mx31moboard.c

@@ -19,6 +19,7 @@
 #include <linux/delay.h>
 #include <linux/delay.h>
 #include <linux/dma-mapping.h>
 #include <linux/dma-mapping.h>
 #include <linux/fsl_devices.h>
 #include <linux/fsl_devices.h>
+#include <linux/gfp.h>
 #include <linux/gpio.h>
 #include <linux/gpio.h>
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>

+ 1 - 0
arch/arm/mach-mx3/mach-pcm037.c

@@ -36,6 +36,7 @@
 #include <linux/usb/otg.h>
 #include <linux/usb/otg.h>
 #include <linux/usb/ulpi.h>
 #include <linux/usb/ulpi.h>
 #include <linux/fsl_devices.h>
 #include <linux/fsl_devices.h>
+#include <linux/gfp.h>
 
 
 #include <media/soc_camera.h>
 #include <media/soc_camera.h>
 
 

+ 1 - 0
arch/arm/mach-mx3/mx31moboard-devboard.c

@@ -20,6 +20,7 @@
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>
 #include <linux/platform_device.h>
 #include <linux/platform_device.h>
+#include <linux/slab.h>
 #include <linux/types.h>
 #include <linux/types.h>
 
 
 #include <linux/usb/otg.h>
 #include <linux/usb/otg.h>

+ 1 - 0
arch/arm/mach-mx3/mx31moboard-marxbot.c

@@ -22,6 +22,7 @@
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>
 #include <linux/i2c.h>
 #include <linux/i2c.h>
 #include <linux/spi/spi.h>
 #include <linux/spi/spi.h>
+#include <linux/slab.h>
 #include <linux/platform_device.h>
 #include <linux/platform_device.h>
 #include <linux/types.h>
 #include <linux/types.h>
 
 

+ 1 - 0
arch/arm/mach-netx/fb.c

@@ -23,6 +23,7 @@
 #include <linux/amba/bus.h>
 #include <linux/amba/bus.h>
 #include <linux/amba/clcd.h>
 #include <linux/amba/clcd.h>
 #include <linux/err.h>
 #include <linux/err.h>
+#include <linux/gfp.h>
 
 
 #include <asm/irq.h>
 #include <asm/irq.h>
 
 

+ 1 - 0
arch/arm/mach-netx/xc.c

@@ -21,6 +21,7 @@
 #include <linux/device.h>
 #include <linux/device.h>
 #include <linux/firmware.h>
 #include <linux/firmware.h>
 #include <linux/mutex.h>
 #include <linux/mutex.h>
+#include <linux/slab.h>
 #include <linux/io.h>
 #include <linux/io.h>
 
 
 #include <mach/hardware.h>
 #include <mach/hardware.h>

+ 1 - 0
arch/arm/mach-nomadik/gpio.c

@@ -19,6 +19,7 @@
 #include <linux/spinlock.h>
 #include <linux/spinlock.h>
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>
 #include <linux/irq.h>
 #include <linux/irq.h>
+#include <linux/slab.h>
 
 
 #include <mach/hardware.h>
 #include <mach/hardware.h>
 #include <mach/gpio.h>
 #include <mach/gpio.h>

+ 1 - 0
arch/arm/mach-ns9xxx/plat-serial8250.c

@@ -10,6 +10,7 @@
  */
  */
 #include <linux/platform_device.h>
 #include <linux/platform_device.h>
 #include <linux/serial_8250.h>
 #include <linux/serial_8250.h>
+#include <linux/slab.h>
 
 
 #include <mach/regs-board-a9m9750dev.h>
 #include <mach/regs-board-a9m9750dev.h>
 #include <mach/board.h>
 #include <mach/board.h>

+ 0 - 1
arch/arm/mach-ns9xxx/processor-ns9360.c

@@ -10,7 +10,6 @@
  */
  */
 #include <linux/io.h>
 #include <linux/io.h>
 #include <linux/kernel.h>
 #include <linux/kernel.h>
-#include <linux/slab.h>
 
 
 #include <asm/page.h>
 #include <asm/page.h>
 #include <asm/mach/map.h>
 #include <asm/mach/map.h>

+ 1 - 0
arch/arm/mach-omap1/mcbsp.c

@@ -16,6 +16,7 @@
 #include <linux/err.h>
 #include <linux/err.h>
 #include <linux/io.h>
 #include <linux/io.h>
 #include <linux/platform_device.h>
 #include <linux/platform_device.h>
+#include <linux/slab.h>
 
 
 #include <mach/irqs.h>
 #include <mach/irqs.h>
 #include <plat/dma.h>
 #include <plat/dma.h>

+ 1 - 0
arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c

@@ -31,6 +31,7 @@
 #include <linux/clk.h>
 #include <linux/clk.h>
 #include <linux/io.h>
 #include <linux/io.h>
 #include <linux/cpufreq.h>
 #include <linux/cpufreq.h>
+#include <linux/slab.h>
 
 
 #include <plat/clock.h>
 #include <plat/clock.h>
 #include <plat/sram.h>
 #include <plat/sram.h>

+ 1 - 0
arch/arm/mach-omap2/iommu2.c

@@ -15,6 +15,7 @@
 #include <linux/device.h>
 #include <linux/device.h>
 #include <linux/jiffies.h>
 #include <linux/jiffies.h>
 #include <linux/module.h>
 #include <linux/module.h>
+#include <linux/slab.h>
 #include <linux/stringify.h>
 #include <linux/stringify.h>
 
 
 #include <plat/iommu.h>
 #include <plat/iommu.h>

Vissa filer visades inte eftersom för många filer har ändrats