commit d200db2f2df5a58f21d55b82c731227739e3e650 Author: Andrey Konovalov Date: Mon Jan 23 21:06:26 2012 +0400 Get rid of "ERROR: "omap_bus_sync" undefined!" when building modules Signed-off-by: Andrey Konovalov commit c2a5a3cfab76c6b1768c5f4d5ad73404c81d3767 Author: Andrey Konovalov Date: Mon Jan 23 21:00:43 2012 +0400 arm: omap4: Fix omap_barriers_init for generic ioremap changes From: Tony Lindgren Date: Thu, 12 Jan 2012 10:42:57 -0800 Cc: Santosh Shilimkar Commit 73829af71fdb8655e7ba4b5a2a6612ad34a75a11 (Merge branch 'vmalloc' of git://git.linaro.org/people/nico/linux into devel-stable) merged generic ioremap changes. Commit 137d105d50f6e6c373c1aa759f59045e6239cf66 (ARM: OMAP4: Fix errata i688 with MPU interconnect barriers) added a workaround for omap4. In order for the errata to work, we now need the following patch or else we'll get: kernel BUG at mm/vmalloc.c:1134! Signed-off-by: Tony Lindgren Signed-off-by: Andrey Konovalov commit 34e7c4f3f9e5403ef4f135394aa7e4357588fd89 Author: Santosh Shilimkar Date: Sat Jun 25 18:04:31 2011 -0700 ARM: OMAP4: Fix errata i688 with MPU interconnect barriers. On OMAP4 SOC, intecronnects has many write buffers in the async bridges and they need to be drained before CPU enters into standby state. Patch 'OMAP4: PM: Add CPUX OFF mode support' added CPU PM support but OMAP errata i688 (Async Bridge Corruption) needs to be taken care to avoid issues like system freeze, CPU deadlocks, random crashes with register accesses, synchronisation loss on initiators operating on both interconnect port simultaneously. As per the errata, if a data is stalled inside asynchronous bridge because of back pressure, it may be accepted multiple times, creating pointer misalignment that will corrupt next transfers on that data path until next reset of the system (No recovery procedure once the issue is hit, the path remains consistently broken). Async bridge can be found on path between MPU to EMIF and MPU to L3 interconnect. This situation can happen only when the idle is initiated by a Master Request Disconnection (which is trigged by software when executing WFI on CPU). The work-around for this errata needs all the initiators connected through async bridge must ensure that data path is properly drained before issuing WFI. This condition will be met if one Strongly ordered access is performed to the target right before executing the WFI. In MPU case, L3 T2ASYNC FIFO and DDR T2ASYNC FIFO needs to be drained. IO barrier ensure that there is no synchronisation loss on initiators operating on both interconnect port simultaneously. Thanks to Russell for a tip to conver assembly function to C fuction there by reducing 40 odd lines of code from the patch. Signed-off-by: Santosh Shilimkar Signed-off-by: Richard Woodruff Acked-by: Jean Pihet Reviewed-by: Kevin Hilman Tested-by: Vishwanath BS Signed-off-by: Kevin Hilman Conflicts: arch/arm/mach-omap2/omap4-common.c arch/arm/mach-omap2/sleep44xx.S commit 8511c8cce280177ec9999d162e0f63bddfdbc732 Merge: b93b9d9 b8ed9e5 Author: Andrey Konovalov Date: Thu Jan 19 18:25:13 2012 +0400 Merge branch 'linux-3.2.y' into linux-linaro-3.2 commit b93b9d935637fc8ecc90d163587bd37201de3aed Merge: ddd0651 027d7c3 Author: Andrey Konovalov Date: Tue Jan 17 00:05:56 2012 +0400 Merge device tree support patches from linux-linaro-3.1 commit ddd06511cec618157b50ffa54c0f0f6ae0f67a01 Merge: e50ef51 904f06d Author: Andrey Konovalov Date: Mon Jan 16 19:36:58 2012 +0400 Merge branch 'config-fragments' into linux-linaro-tracking commit e50ef516f9f0d285ce40ce07812c1cb53e46c9b3 Merge: 70df977 0d2006b Author: Andrey Konovalov Date: Fri Jan 13 21:39:38 2012 +0400 Merge branch 'linusw-pinctrl-for-next' into linux-linaro-tracking commit 70df977b8157276fff0794660e8590f316ca6458 Merge: b6d31b9 17c05c6 Author: Andrey Konovalov Date: Fri Jan 13 21:36:05 2012 +0400 Merge branch 'thermal_cpu_cooling' into linux-linaro-tracking commit b6d31b946185ce89c10d113351a1e61932d26603 Merge: 3d07054 29a443b Author: Andrey Konovalov Date: Fri Jan 13 21:33:30 2012 +0400 Merge branch 'samsung_cpuidle_l2_retention' into linux-linaro-tracking commit b8ed9e5b8c34dc9fb1882669e45b21e3d0194881 Author: Greg Kroah-Hartman Date: Thu Jan 12 11:42:45 2012 -0800 Linux 3.2.1 commit da777f649cf96859d61cf285957b30b694c0fbcb Author: Xi Wang Date: Mon Dec 12 21:55:52 2011 +0000 xfs: fix acl count validation in xfs_acl_from_disk() commit 093019cf1b18dd31b2c3b77acce4e000e2cbc9ce upstream. Commit fa8b18ed didn't prevent the integer overflow and possible memory corruption. "count" can go negative and bypass the check. Signed-off-by: Xi Wang Reviewed-by: Christoph Hellwig Signed-off-by: Ben Myers Signed-off-by: Greg Kroah-Hartman commit f9fd8d6232137e255fc9409a81cf282817472b6f Author: Thilo-Alexander Ginkel Date: Sat Dec 17 10:55:10 2011 +0100 usb: cdc-acm: Fix acm_tty_hangup() vs. acm_tty_close() race [Not upstream as it was fixed differently for 3.3 with a much more "intrusive" rework of the driver - gregkh] There is a race condition involving acm_tty_hangup() and acm_tty_close() where hangup() would attempt to access tty->driver_data without proper locking and NULL checking after close() has potentially already set it to NULL. One possibility to (sporadically) trigger this behavior is to perform a suspend/resume cycle with a running WWAN data connection. This patch addresses the issue by introducing a NULL check for tty->driver_data in acm_tty_hangup() protected by open_mutex and exiting gracefully when hangup() is invoked on a device that has already been closed. Signed-off-by: Thilo-Alexander Ginkel Signed-off-by: Greg Kroah-Hartman commit f60d8cd0b0e0def00c9ac54bb4becae034138484 Author: stephen hemminger Date: Sat Dec 31 13:26:46 2011 +0000 bonding: fix error handling if slave is busy (v2) commit f7d9821a6a9c83450ac35e76d3709e32fd38b76f upstream. If slave device already has a receive handler registered, then the error unwind of bonding device enslave function is broken. The following will leave a pointer to freed memory in the slave device list, causing a later kernel panic. # modprobe dummy # ip li add dummy0-1 link dummy0 type macvlan # modprobe bonding # echo +dummy0 >/sys/class/net/bond0/bonding/slaves The fix is to detach the slave (which removes it from the list) in the unwind path. Signed-off-by: Stephen Hemminger Reviewed-by: Nicolas de Pesloüan Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman commit 4a75c219087a4079e668c3e5836d64009446c0d3 Author: Aurelien Jacobs Date: Sat Jan 7 12:15:16 2012 -0800 asix: fix infinite loop in rx_fixup() commit 6c15d74defd38e7e7f8805392578b7a1d508097e upstream. At this point if skb->len happens to be 2, the subsequant skb_pull(skb, 4) call won't work and the skb->len won't be decreased and won't ever reach 0, resulting in an infinite loop. With an ASIX 88772 under heavy load, without this patch, rx_fixup() reaches an infinite loop in less than a minute. With this patch applied, no infinite loop even after hours of heavy load. Signed-off-by: Aurelien Jacobs Cc: Jussi Kivilinna Signed-off-by: David S. Miller commit 25c413ad0029ea86008234be28aee33456e53e5b Author: Ben Hutchings Date: Mon Jan 9 14:06:46 2012 -0800 igmp: Avoid zero delay when receiving odd mixture of IGMP queries commit a8c1f65c79cbbb2f7da782d4c9d15639a9b94b27 upstream. Commit 5b7c84066733c5dfb0e4016d939757b38de189e4 ('ipv4: correct IGMP behavior on v3 query during v2-compatibility mode') added yet another case for query parsing, which can result in max_delay = 0. Substitute a value of 1, as in the usual v3 case. Reported-by: Simon McVittie References: http://bugs.debian.org/654876 Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit d2570fc048ca1307e64572c825e0d7908bd60a21 Author: Felipe Balbi Date: Mon Jan 2 13:35:41 2012 +0200 usb: ch9: fix up MaxStreams helper commit 18b7ede5f7ee2092aedcb578d3ac30bd5d4fc23c upstream. [ removed the dwc3 portion of the patch as it didn't apply to older kernels - gregkh] According to USB 3.0 Specification Table 9-22, if bmAttributes [4:0] are set to zero, it means "no streams supported", but the way this helper was defined on Linux, we will *always* have one stream which might cause several problems. For example on DWC3, we would tell the controller endpoint has streams enabled and yet start transfers with Stream ID set to 0, which would goof up the host side. While doing that, convert the macro to an inline function due to the different checks we now need. Signed-off-by: Felipe Balbi Signed-off-by: Sarah Sharp Signed-off-by: Greg Kroah-Hartman commit 5b511b783385bc68663e4729be7f169ce3061e6d Author: Hans de Goede Date: Wed Jan 4 23:29:18 2012 +0100 xhci: Properly handle COMP_2ND_BW_ERR commit 71d85724bdd947a3b42a88d08af79f290a1a767b upstream. I encountered a result of COMP_2ND_BW_ERR while improving how the pwc webcam driver handles not having the full usb1 bandwidth available to itself. I created the following test setup, a NEC xhci controller with a single TT USB 2 hub plugged into it, with a usb keyboard and a pwc webcam plugged into the usb2 hub. This caused the following to show up in dmesg when trying to stream from the pwc camera at its highest alt setting: xhci_hcd 0000:01:00.0: ERROR: unexpected command completion code 0x23. usb 6-2.1: Not enough bandwidth for altsetting 9 And usb_set_interface returned -EINVAL, which caused my pwc code to not do the right thing as it expected -ENOSPC. This patch makes the xhci driver properly handle COMP_2ND_BW_ERR and makes usb_set_interface return -ENOSPC as expected. This should be backported to stable kernels as old as 2.6.32. Signed-off-by: Hans de Goede Signed-off-by: Sarah Sharp Signed-off-by: Greg Kroah-Hartman commit 4781ace0ddff8057f2c1bf1811ae4886f8b88876 Author: Clemens Ladisch Date: Sat Dec 3 23:41:31 2011 +0100 usb: fix number of mapped SG DMA entries commit bc677d5b64644c399cd3db6a905453e611f402ab upstream. Add a new field num_mapped_sgs to struct urb so that we have a place to store the number of mapped entries and can also retain the original value of entries in num_sgs. Previously, usb_hcd_map_urb_for_dma() would overwrite this with the number of mapped entries, which would break dma_unmap_sg() because it requires the original number of entries. This fixes warnings like the following when using USB storage devices: ------------[ cut here ]------------ WARNING: at lib/dma-debug.c:902 check_unmap+0x4e4/0x695() ehci_hcd 0000:00:12.2: DMA-API: device driver frees DMA sg list with different entry count [map count=4] [unmap count=1] Modules linked in: ohci_hcd ehci_hcd Pid: 0, comm: kworker/0:1 Not tainted 3.2.0-rc2+ #319 Call Trace: [] warn_slowpath_common+0x80/0x98 [] warn_slowpath_fmt+0x41/0x43 [] check_unmap+0x4e4/0x695 [] ? trace_hardirqs_off+0xd/0xf [] ? _raw_spin_unlock_irqrestore+0x33/0x50 [] debug_dma_unmap_sg+0xeb/0x117 [] usb_hcd_unmap_urb_for_dma+0x71/0x188 [] unmap_urb_for_dma+0x20/0x22 [] usb_hcd_giveback_urb+0x5d/0xc0 [] ehci_urb_done+0xf7/0x10c [ehci_hcd] [] qh_completions+0x429/0x4bd [ehci_hcd] [] ehci_work+0x95/0x9c0 [ehci_hcd] ... ---[ end trace f29ac88a5a48c580 ]--- Mapped at: [] debug_dma_map_sg+0x45/0x139 [] usb_hcd_map_urb_for_dma+0x22e/0x478 [] usb_hcd_submit_urb+0x63f/0x6fa [] usb_submit_urb+0x2c7/0x2de [] usb_sg_wait+0x55/0x161 Signed-off-by: Clemens Ladisch Signed-off-by: Greg Kroah-Hartman commit d2758dc6e9a3a0243e120df6132406f409ffd2bf Author: Malte Schröder Date: Thu Jan 5 20:34:40 2012 +0100 USB: Add USB-ID for Multiplex RC serial adapter to cp210x.c commit 08e87d0d773dc9ca5faf4c3306e238ed0ea129b0 upstream. Hi, below patch adds the USB-ID of the serial adapters sold by Multiplex RC (www.multiplex-rc.de). Signed-off-by: Malte Schröder Cc: stable Signed-off-by: Greg Kroah-Hartman commit 3ff8999cb9dabcac0cbb8a778f79fb991f2358c8 Author: Janne Snabb Date: Wed Dec 28 19:36:00 2011 +0000 usb: option: add ZD Incorporated HSPA modem commit 3c8c9316710b83e906e425024153bf0929887b59 upstream. Add support for Chinese Noname HSPA USB modem which is apparently manufactured by a company called ZD Incorporated (based on texts in the Windows drivers). This product is available at least from Dealextreme (SKU 80032) and possibly in India with name Olive V-MW250. It is based on Qualcomm MSM6280 chip. I needed to also add "options usb-storage quirks=0685:7000:i" in modprobe configuration because udevd or the kernel keeps poking the embedded fake-cd-rom which fails and causes the device to reset. There might be a better way to accomplish the same. usb_modeswitch is not needed with this device. Signed-off-by: Janne Snabb Signed-off-by: Greg Kroah-Hartman commit b4868343c4dde5315ffebc08de71ddffdd1460d8 Author: Johan Hovold Date: Sun Nov 6 19:06:21 2011 +0100 USB: omninet: fix write_room commit 694c6301e515bad574af74b6552134c4d9dcb334 upstream. Fix regression introduced by commit 507ca9bc047666 ([PATCH] USB: add ability for usb-serial drivers to determine if their write urb is currently being used.) which inverted the logic in write_room so that it returns zero when the write urb is actually free. Signed-off-by: Johan Hovold Signed-off-by: Greg Kroah-Hartman commit 945d49b38f4e3aa8a570b2fe51f179e7c2181b4d Author: Felipe Contreras Date: Mon Dec 19 22:01:54 2011 +0200 usb: musb: fix pm_runtime mismatch commit 772aed45b604c5ff171f0f12c12392d868333f79 upstream. In musb_init_controller() there's a pm_runtime_put(), but there's no pm_runtime_get(), which creates a mismatch that causes the driver to sleep when it shouldn't. This was introduced in 7acc619[1], but it wasn't triggered in my setup until 18a2689[2] was merged to Linus' branch at point df0914[3]. IOW; when PM is working as it was supposed to. However, it seems most of the time this is used in a way that keeps the counter above 0, so nobody noticed. Also, it seems to depend on the configuration used in versions before 3.1, but not later (or in it). I found the problem by loading isp1704_charger before any usb gadgets: http://article.gmane.org/gmane.linux.kernel/1226122 All versions after 2.6.39 are affected. [1] usb: musb: Idle path retention and offmode support for OMAP3 [2] OMAP2+: musb: hwmod adaptation for musb registration [3] Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 Cc: Hema HK Signed-off-by: Felipe Contreras Signed-off-by: Felipe Balbi commit dd857f5b4dc1d8d010da1711b71be789054fbcbe Author: Oliver Neukum Date: Tue Jan 3 09:58:54 2012 +0100 USB: add quirk for another camera commit 35284b3d2f68a8a3703745e629999469f78386b5 upstream. The Guillemot Webcam Hercules Dualpix Exchange camera has been reported with a second ID. Signed-off-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman commit 966c248e661ce7d265caeb73c7d0aa68fbf8801a Author: Tanmay Upadhyay Date: Thu Dec 8 10:03:49 2011 +0530 USB: pxa168: Fix compilation error commit 35657c4d72925936c7219cc5caac118ca632acc2 upstream. After commit c430131a02d677aa708f56342c1565edfdacb3c0 (Support controllers with big endian capability regs), HC_LENGTH takes two arguments. This patch fixes following compilation error: In file included from drivers/usb/host/ehci-hcd.c:1323: drivers/usb/host/ehci-pxa168.c:302:54: error: macro "HC_LENGTH" requires 2 arguments, but only 1 given In file included from drivers/usb/host/ehci-hcd.c:1323: drivers/usb/host/ehci-pxa168.c: In function 'ehci_pxa168_drv_probe': drivers/usb/host/ehci-pxa168.c:302: error: 'HC_LENGTH' undeclared (first use in this function) drivers/usb/host/ehci-pxa168.c:302: error: (Each undeclared identifier is reported only once drivers/usb/host/ehci-pxa168.c:302: error: for each function it appears in.) Signed-off-by: Tanmay Upadhyay Acked-by: Alan Stern Signed-off-by: Greg Kroah-Hartman commit ab8887268c60a5dac0dc388c773a679470292c55 Author: Huajun Li Date: Wed Jan 4 19:25:33 2012 +0800 usb: usb-storage doesn't support dynamic id currently, the patch disables the feature to fix an oops commit 1a3a026ba1b6bbfe0b7f79ab38cf991d691e7c9a upstream. Echo vendor and product number of a non usb-storage device to usb-storage driver's new_id, then plug in the device to host and you will find following oops msg, the root cause is usb_stor_probe1() refers invalid id entry if giving a dynamic id, so just disable the feature. [ 3105.018012] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC [ 3105.018062] CPU 0 [ 3105.018075] Modules linked in: usb_storage usb_libusual bluetooth dm_crypt binfmt_misc snd_hda_codec_analog snd_hda_intel snd_hda_codec snd_hwdep hp_wmi ppdev sparse_keymap snd_pcm snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_timer snd_seq_device psmouse snd serio_raw tpm_infineon soundcore i915 snd_page_alloc tpm_tis parport_pc tpm tpm_bios drm_kms_helper drm i2c_algo_bit video lp parport usbhid hid sg sr_mod sd_mod ehci_hcd uhci_hcd usbcore e1000e usb_common floppy [ 3105.018408] [ 3105.018419] Pid: 189, comm: khubd Tainted: G I 3.2.0-rc7+ #29 Hewlett-Packard HP Compaq dc7800p Convertible Minitower/0AACh [ 3105.018481] RIP: 0010:[] [] usb_stor_probe1+0x2fd/0xc20 [usb_storage] [ 3105.018536] RSP: 0018:ffff880056a3d830 EFLAGS: 00010286 [ 3105.018562] RAX: ffff880065f4e648 RBX: ffff88006bb28000 RCX: 0000000000000000 [ 3105.018597] RDX: ffff88006f23c7b0 RSI: 0000000000000001 RDI: 0000000000000206 [ 3105.018632] RBP: ffff880056a3d900 R08: 0000000000000000 R09: ffff880067365000 [ 3105.018665] R10: 00000000000002ac R11: 0000000000000010 R12: ffff6000b41a7340 [ 3105.018698] R13: ffff880065f4ef60 R14: ffff88006bb28b88 R15: ffff88006f23d270 [ 3105.018733] FS: 0000000000000000(0000) GS:ffff88007a200000(0000) knlGS:0000000000000000 [ 3105.018773] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 3105.018801] CR2: 00007fc99c8c4650 CR3: 0000000001e05000 CR4: 00000000000006f0 [ 3105.018835] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 3105.018870] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 3105.018906] Process khubd (pid: 189, threadinfo ffff880056a3c000, task ffff88005677a400) [ 3105.018945] Stack: [ 3105.018959] 0000000000000000 0000000000000000 ffff880056a3d8d0 0000000000000002 [ 3105.019011] 0000000000000000 ffff880056a3d918 ffff880000000000 0000000000000002 [ 3105.019058] ffff880056a3d8d0 0000000000000012 ffff880056a3d8d0 0000000000000006 [ 3105.019105] Call Trace: [ 3105.019128] [] storage_probe+0xa4/0xe0 [usb_storage] [ 3105.019173] [] usb_probe_interface+0x172/0x330 [usbcore] [ 3105.019211] [] driver_probe_device+0x257/0x3b0 [ 3105.019243] [] __device_attach+0x73/0x90 [ 3105.019272] [] ? __driver_attach+0x110/0x110 [ 3105.019303] [] bus_for_each_drv+0x9c/0xf0 [ 3105.019334] [] device_attach+0xf7/0x120 [ 3105.019364] [] bus_probe_device+0x45/0x80 [ 3105.019396] [] device_add+0x876/0x990 [ 3105.019434] [] usb_set_configuration+0x822/0x9e0 [usbcore] [ 3105.019479] [] generic_probe+0x62/0xf0 [usbcore] [ 3105.019518] [] usb_probe_device+0x66/0xb0 [usbcore] [ 3105.019555] [] driver_probe_device+0x257/0x3b0 [ 3105.019589] [] __device_attach+0x73/0x90 [ 3105.019617] [] ? __driver_attach+0x110/0x110 [ 3105.019648] [] bus_for_each_drv+0x9c/0xf0 [ 3105.019680] [] device_attach+0xf7/0x120 [ 3105.019709] [] bus_probe_device+0x45/0x80 [ 3105.021040] usb usb6: usb auto-resume [ 3105.021045] usb usb6: wakeup_rh [ 3105.024849] [] device_add+0x876/0x990 [ 3105.025086] [] usb_new_device+0x1e7/0x2b0 [usbcore] [ 3105.025086] [] hub_thread+0xb27/0x1ec0 [usbcore] [ 3105.025086] [] ? wake_up_bit+0x50/0x50 [ 3105.025086] [] ? usb_remote_wakeup+0xa0/0xa0 [usbcore] [ 3105.025086] [] kthread+0xd8/0xf0 [ 3105.025086] [] kernel_thread_helper+0x4/0x10 [ 3105.025086] [] ? _raw_spin_unlock_irq+0x50/0x80 [ 3105.025086] [] ? retint_restore_args+0x13/0x13 [ 3105.025086] [] ? __init_kthread_worker+0x80/0x80 [ 3105.025086] [] ? gs_change+0x13/0x13 [ 3105.025086] Code: 00 48 83 05 cd ad 00 00 01 48 83 05 cd ad 00 00 01 4c 8b ab 30 0c 00 00 48 8b 50 08 48 83 c0 30 48 89 45 a0 4c 89 a3 40 0c 00 00 <41> 0f b6 44 24 10 48 89 55 a8 3c ff 0f 84 b8 04 00 00 48 83 05 [ 3105.025086] RIP [] usb_stor_probe1+0x2fd/0xc20 [usb_storage] [ 3105.025086] RSP [ 3105.060037] hub 6-0:1.0: hub_resume [ 3105.062616] usb usb5: usb auto-resume [ 3105.064317] ehci_hcd 0000:00:1d.7: resume root hub [ 3105.094809] ---[ end trace a7919e7f17c0a727 ]--- [ 3105.130069] hub 5-0:1.0: hub_resume [ 3105.132131] usb usb4: usb auto-resume [ 3105.132136] usb usb4: wakeup_rh [ 3105.180059] hub 4-0:1.0: hub_resume [ 3106.290052] usb usb6: suspend_rh (auto-stop) [ 3106.290077] usb usb4: suspend_rh (auto-stop) Signed-off-by: Huajun Li Signed-off-by: Greg Kroah-Hartman commit d6b3d54200b7b29473041fe8c2e2f5382f2f0c80 Author: Greg Kroah-Hartman Date: Mon Dec 5 14:02:59 2011 -0800 USB: isight: fix kernel bug when loading firmware commit 59bf5cf94f0fa3b08fb1258b52649077b7d0914d upstream. We were sending data on the stack when uploading firmware, which causes some machines fits, and is not allowed. Fix this by using the buffer we already had around for this very purpose. Reported-by: Wouter M. Koolen Tested-by: Wouter M. Koolen Signed-off-by: Greg Kroah-Hartman commit 30234e2694cbc1d6985cafc87db5cd4848493196 Author: Julia Lawall Date: Fri Dec 23 14:02:55 2011 +0100 drivers/usb/class/cdc-acm.c: clear dangling pointer commit e7c8e8605d0bafc705ff27f9da98a1668427cc0f upstream. On some failures, the country_code field of an acm structure is freed without freeing the acm structure itself. Elsewhere, operations including memcpy and kfree are performed on the country_code field. The patch sets the country_code field to NULL when it is freed, and likewise sets the country_code_size field to 0. Signed-off-by: Julia Lawall Acked-by: Oliver Neukum Signed-off-by: Greg Kroah-Hartman commit 9e9f6a20b59570ca9374b5e79cf1e7df32c67944 Author: Jan Kara Date: Sat Dec 10 02:30:48 2011 +0100 udf: Fix deadlock when converting file from in-ICB one to normal one commit d2eb8c359309ec45d6bf5b147303ab8e13be86ea upstream. During BKL removal in 2.6.38, conversion of files from in-ICB format to normal format got broken. We call ->writepage with i_data_sem held but udf_get_block() also acquires i_data_sem thus creating A-A deadlock. We fix the problem by dropping i_data_sem before calling ->writepage() which is safe since i_mutex still protects us against any changes in the file. Also fix pagelock - i_data_sem lock inversion in udf_expand_file_adinicb() by dropping i_data_sem before calling find_or_create_page(). Reported-by: Matthias Matiak Tested-by: Matthias Matiak Reviewed-by: Namjae Jeon Signed-off-by: Jan Kara Signed-off-by: Greg Kroah-Hartman commit 62cf6918d66acca738688658e33f9686ab174d94 Author: Li Zefan Date: Tue Dec 27 14:25:55 2011 +0800 cgroup: fix to allow mounting a hierarchy by name commit 0d19ea866562e46989412a0676412fa0983c9ce7 upstream. If we mount a hierarchy with a specified name, the name is unique, and we can use it to mount the hierarchy without specifying its set of subsystem names. This feature is documented is Documentation/cgroups/cgroups.txt section 2.3 Here's an example: # mount -t cgroup -o cpuset,name=myhier xxx /cgroup1 # mount -t cgroup -o name=myhier xxx /cgroup2 But it was broken by commit 32a8cf235e2f192eb002755076994525cdbaa35a (cgroup: make the mount options parsing more accurate) This fixes the regression. Signed-off-by: Li Zefan Signed-off-by: Tejun Heo Signed-off-by: Greg Kroah-Hartman commit b71bb82900b7491f47a0360f14d23dc30646433d Author: Claudio Scordino Date: Fri Dec 16 15:08:49 2011 +0100 atmel_serial: fix spinlock lockup in RS485 code commit dbf1115d3f8c7052788aa4e6e46abd27f3b3eeba upstream. Patch to fix a spinlock lockup in the driver that sometimes happens when the tasklet starts. Signed-off-by: Claudio Scordino Signed-off-by: Dave Bender Tested-by: Dave Bender Acked-by: Nicolas Ferre Acked-by: Alan Cox Signed-off-by: Greg Kroah-Hartman commit 7f35a6941c20af66dde1148b491e2f501192179b Author: Sarah Sharp Date: Fri Dec 16 11:26:30 2011 -0800 usbfs: Fix oops related to user namespace conversion. commit 1b41c8321e495337e877ca02d0b9680bc4112eff upstream. When running the Point Grey "flycap" program for their USB 3.0 camera (which was running as a USB 2.0 device for some reason), I trigger this oops whenever I try to open a video stream: Dec 15 16:48:34 puck kernel: [ 1798.715559] BUG: unable to handle kernel NULL pointer dereference at (null) Dec 15 16:48:34 puck kernel: [ 1798.719153] IP: [] free_async+0x1e/0x70 Dec 15 16:48:34 puck kernel: [ 1798.720991] PGD 6f833067 PUD 6fc56067 PMD 0 Dec 15 16:48:34 puck kernel: [ 1798.722815] Oops: 0002 [#1] SMP Dec 15 16:48:34 puck kernel: [ 1798.724627] CPU 0 Dec 15 16:48:34 puck kernel: [ 1798.724636] Modules linked in: ecryptfs encrypted_keys sha1_generic trusted binfmt_misc sha256_generic aesni_intel cryptd aes_x86_64 aes_generic parport_pc dm_crypt ppdev joydev snd_hda_codec_hdmi snd_hda_codec_conexant arc4 iwlwifi snd_hda_intel snd_hda_codec snd_hwdep snd_pcm thinkpad_acpi mac80211 snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_timer btusb uvcvideo snd_seq_device bluetooth videodev psmouse snd v4l2_compat_ioctl32 serio_raw tpm_tis cfg80211 tpm tpm_bios nvram soundcore snd_page_alloc lp parport i915 xhci_hcd ahci libahci drm_kms_helper drm sdhci_pci sdhci e1000e i2c_algo_bit video Dec 15 16:48:34 puck kernel: [ 1798.734212] Dec 15 16:48:34 puck kernel: [ 1798.736162] Pid: 2713, comm: FlyCap2 Not tainted 3.2.0-rc5+ #28 LENOVO 4286CTO/4286CTO Dec 15 16:48:34 puck kernel: [ 1798.738148] RIP: 0010:[] [] free_async+0x1e/0x70 Dec 15 16:48:34 puck kernel: [ 1798.740134] RSP: 0018:ffff88005715fd78 EFLAGS: 00010296 Dec 15 16:48:34 puck kernel: [ 1798.742118] RAX: 00000000fffffff4 RBX: ffff88006fe8f900 RCX: 0000000000004118 Dec 15 16:48:34 puck kernel: [ 1798.744116] RDX: 0000000001000000 RSI: 0000000000016390 RDI: 0000000000000000 Dec 15 16:48:34 puck kernel: [ 1798.746087] RBP: ffff88005715fd88 R08: 0000000000000000 R09: ffffffff8146f22e Dec 15 16:48:34 puck kernel: [ 1798.748018] R10: ffff88006e520ac0 R11: 0000000000000001 R12: ffff88005715fe28 Dec 15 16:48:34 puck kernel: [ 1798.749916] R13: ffff88005d31df00 R14: ffff88006fe8f900 R15: 00007f688c995cb8 Dec 15 16:48:34 puck kernel: [ 1798.751785] FS: 00007f68a366da40(0000) GS:ffff880100200000(0000) knlGS:0000000000000000 Dec 15 16:48:34 puck kernel: [ 1798.753659] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 Dec 15 16:48:34 puck kernel: [ 1798.755509] CR2: 0000000000000000 CR3: 00000000706bb000 CR4: 00000000000406f0 Dec 15 16:48:34 puck kernel: [ 1798.757334] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 Dec 15 16:48:34 puck kernel: [ 1798.759124] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Dec 15 16:48:34 puck kernel: [ 1798.760871] Process FlyCap2 (pid: 2713, threadinfo ffff88005715e000, task ffff88006c675b80) Dec 15 16:48:34 puck kernel: [ 1798.762605] Stack: Dec 15 16:48:34 puck kernel: [ 1798.764297] ffff88005715fe28 0000000000000000 ffff88005715fe08 ffffffff81479058 Dec 15 16:48:34 puck kernel: [ 1798.766020] 0000000000000000 ffffea0000004000 ffff880000004118 0000000000000000 Dec 15 16:48:34 puck kernel: [ 1798.767750] ffff880000000001 ffff88006e520ac0 fffffff46fd81180 0000000000000000 Dec 15 16:48:34 puck kernel: [ 1798.769472] Call Trace: Dec 15 16:48:34 puck kernel: [ 1798.771147] [] proc_do_submiturb+0x778/0xa00 Dec 15 16:48:34 puck kernel: [ 1798.772798] [] usbdev_do_ioctl+0x24d/0x1200 Dec 15 16:48:34 puck kernel: [ 1798.774410] [] usbdev_ioctl+0xe/0x20 Dec 15 16:48:34 puck kernel: [ 1798.775975] [] do_vfs_ioctl+0x99/0x600 Dec 15 16:48:34 puck kernel: [ 1798.777534] [] sys_ioctl+0x91/0xa0 Dec 15 16:48:34 puck kernel: [ 1798.779088] [] system_call_fastpath+0x16/0x1b ec 15 16:48:34 puck kernel: [ 1798.780634] Code: 51 ff ff ff e9 29 ff ff ff 0f 1f 40 00 55 48 89 e5 53 48 83 ec 08 66 66 66 66 90 48 89 fb 48 8b 7f 18 e8 a6 ea c0 ff 4 8 8b 7b 20 ff 0f 0f 94 c0 84 c0 74 05 e8 d3 99 c1 ff 48 8b 43 40 48 8b Dec 15 16:48:34 puck kernel: [ 1798.783970] RIP [] free_async+0x1e/0x70 Dec 15 16:48:34 puck kernel: [ 1798.785630] RSP Dec 15 16:48:34 puck kernel: [ 1798.787274] CR2: 0000000000000000 Dec 15 16:48:34 puck kernel: [ 1798.794728] ---[ end trace 52894d3355f88d19 ]--- markup_oops.pl says the oops is in put_cred: ffffffff81478401: 48 89 e5 mov %rsp,%rbp ffffffff81478404: 53 push %rbx ffffffff81478405: 48 83 ec 08 sub $0x8,%rsp ffffffff81478409: e8 f2 c0 1a 00 callq ffffffff81624500 ffffffff8147840e: 48 89 fb mov %rdi,%rbx | %ebx => ffff88006fe8f900 put_pid(as->pid); ffffffff81478411: 48 8b 7f 18 mov 0x18(%rdi),%rdi ffffffff81478415: e8 a6 ea c0 ff callq ffffffff81086ec0 put_cred(as->cred); ffffffff8147841a: 48 8b 7b 20 mov 0x20(%rbx),%rdi | %edi => 0 %ebx = ffff88006fe8f900 */ static inline int atomic_dec_and_test(atomic_t *v) { unsigned char c; asm volatile(LOCK_PREFIX "decl %0; sete %1" *ffffffff8147841e: f0 ff 0f lock decl (%rdi) | %edi = 0 <--- faulting instruction ffffffff81478421: 0f 94 c0 sete %al static inline void put_cred(const struct cred *_cred) { struct cred *cred = (struct cred *) _cred; validate_creds(cred); if (atomic_dec_and_test(&(cred)->usage)) ffffffff81478424: 84 c0 test %al,%al ffffffff81478426: 74 05 je ffffffff8147842d __put_cred(cred); ffffffff81478428: e8 d3 99 c1 ff callq ffffffff81091e00 <__put_cred> kfree(as->urb->transfer_buffer); ffffffff8147842d: 48 8b 43 40 mov 0x40(%rbx),%rax ffffffff81478431: 48 8b 78 68 mov 0x68(%rax),%rdi ffffffff81478435: e8 a6 e1 ce ff callq ffffffff811665e0 kfree(as->urb->setup_packet); ffffffff8147843a: 48 8b 43 40 mov 0x40(%rbx),%rax ffffffff8147843e: 48 8b b8 90 00 00 00 mov 0x90(%rax),%rdi ffffffff81478445: e8 96 e1 ce ff callq ffffffff811665e0 usb_free_urb(as->urb); ffffffff8147844a: 48 8b 7b 40 mov 0x40(%rbx),%rdi ffffffff8147844e: e8 0d 6b ff ff callq ffffffff8146ef60 This bug seems to have been introduced by commit d178bc3a708f39cbfefc3fab37032d3f2511b4ec "user namespace: usb: make usb urbs user namespace aware (v2)" I'm not sure if this is right fix, but it does stop the oops. Unfortunately, the Point Grey software still refuses to work, but it's a closed source app, so I can't fix it. Signed-off-by: Sarah Sharp Acked-by: Serge Hallyn Signed-off-by: Greg Kroah-Hartman commit 170b209abef52783adcc3855c6afb51333e8ae89 Author: Alan Stern Date: Wed Jan 4 16:36:35 2012 -0500 USB: update documentation for usbmon commit d8cae98cddd286e38db1724dda1b0e7b467f9237 upstream. The documentation for usbmon is out of date; the usbfs "devices" file now exists in /sys/kernel/debug/usb rather than /proc/bus/usb. This patch (as1505) updates the documentation accordingly, and also mentions that the necessary information can be found by running lsusb. Signed-off-by: Alan Stern CC: Pete Zaitcev Signed-off-by: Greg Kroah-Hartman commit d1883e7052eeffca3f42922bb31fa44d0992c6a6 Author: K. Y. Srinivasan Date: Tue Dec 27 13:49:37 2011 -0800 Drivers:hv: Fix a bug in vmbus_driver_unregister() commit 8f257a142fc3868d69de3f996b95d7bdbc509560 upstream. The function vmbus_exists() was introduced recently to deal with cases where the vmbus driver failed to initialize and yet other Hyper-V drivers attempted to register with the vmbus bus driver. This patch introduced a bug where vmbus_driver_unregister() would fail to unregister the driver. This patch fixes the problem. Signed-off-by: K. Y. Srinivasan Signed-off-by: Fuzhou Chen Cc: Sasha Levin Signed-off-by: Greg Kroah-Hartman commit 32eef9ed02e483cb39d0d70316ba35a5d4920b6b Author: K. Y. Srinivasan Date: Thu Dec 1 09:59:34 2011 -0800 drivers: hv: Don't OOPS when you cannot init vmbus commit cf6a2eacbcb2593b5b91d0817915c4f0464bb534 upstream. The hv vmbus driver was causing an OOPS since it was trying to register drivers on top of the bus even if initialization of the bus has failed for some reason (such as the odd chance someone would run a hv enabled kernel in a non-hv environment). Signed-off-by: Sasha Levin Signed-off-by: K. Y. Srinivasan Signed-off-by: Greg Kroah-Hartman commit 0558681f027b24a134e24fee2d96a0a1c6174c76 Author: Jan Kara Date: Thu Dec 22 16:49:05 2011 +0100 ext3: Don't warn from writepage when readonly inode is spotted after error commit 33c104d415e92a51aaf638dc3d93920cfa601e5c upstream. WARN_ON_ONCE(IS_RDONLY(inode)) tends to trip when filesystem hits error and is remounted read-only. This unnecessarily scares users (well, they should be scared because of filesystem error, but the stack trace distracts them from the right source of their fear ;-). We could as well just remove the WARN_ON but it's not hard to fix it to not trip on filesystem with errors and not use more cycles in the common case so that's what we do. Signed-off-by: Jan Kara Signed-off-by: Greg Kroah-Hartman commit 04e06ee56d4667deb90a3bb2952cfcffb051ff65 Author: Jeff Mahoney Date: Wed Dec 21 21:18:43 2011 +0100 reiserfs: Force inode evictions before umount to avoid crash commit a9e36da655e54545c3289b2a0700b5c443de0edd upstream. This patch fixes a crash in reiserfs_delete_xattrs during umount. When shrink_dcache_for_umount clears the dcache from generic_shutdown_super, delayed evictions are forced to disk. If an evicted inode has extended attributes associated with it, it will need to walk the xattr tree to locate and remove them. But since shrink_dcache_for_umount will BUG if it encounters active dentries, the xattr tree must be released before it's called or it will crash during every umount. This patch forces the evictions to occur before generic_shutdown_super by calling shrink_dcache_sb first. The additional evictions caused by the removal of each associated xattr file and dir will be automatically handled as they're added to the LRU list. CC: reiserfs-devel@vger.kernel.org Signed-off-by: Jeff Mahoney Signed-off-by: Jan Kara Signed-off-by: Greg Kroah-Hartman commit e75c11aceb7c8717241719e531c9adece8111987 Author: Jan Kara Date: Wed Dec 21 17:35:34 2011 +0100 reiserfs: Fix quota mount option parsing commit a06d789b424190e9f59da391681f908486db2554 upstream. When jqfmt mount option is not specified on remount, we mistakenly clear s_jquota_fmt value stored in superblock. Fix the problem. CC: reiserfs-devel@vger.kernel.org Signed-off-by: Jan Kara Signed-off-by: Greg Kroah-Hartman commit 88e02818005ddaf5d584f58586c38f18168cecf3 Author: Boaz Harrosh Date: Tue Nov 29 15:35:53 2011 -0800 ore: FIX breakage when MISC_FILESYSTEMS is not set commit 831c2dc5f47c1dc79c32229d75065ada1dcc66e1 upstream. As Reported by Randy Dunlap When MISC_FILESYSTEMS is not enabled and NFS4.1 is: fs/built-in.o: In function `objio_alloc_io_state': objio_osd.c:(.text+0xcb525): undefined reference to `ore_get_rw_state' fs/built-in.o: In function `_write_done': objio_osd.c:(.text+0xcb58d): undefined reference to `ore_check_io' fs/built-in.o: In function `_read_done': ... When MISC_FILESYSTEMS, which is more of a GUI thing then anything else, is not selected. exofs/Kconfig is never examined during Kconfig, and it can not do it's magic stuff to automatically select everything needed. We must split exofs/Kconfig in two. The ore one is always included. And the exofs one is left in it's old place in the menu. Reported-by: Randy Dunlap Signed-off-by: Boaz Harrosh Signed-off-by: Greg Kroah-Hartman commit 673a3083dc48d45a798ee509995899e11625aa9d Author: Boaz Harrosh Date: Wed Dec 28 19:21:45 2011 +0200 ore: Must support none-PAGE-aligned IO commit 724577ca355795b0a25c93ccbeee927871ca1a77 upstream. NFS might send us offsets that are not PAGE aligned. So we must read in the reminder of the first/last pages, in cases we need it for Parity calculations. We only add an sg segments to read the partial page. But we don't mark it as read=true because it is a lock-for-write page. TODO: In some cases (IO spans a single unit) we can just adjust the raid_unit offset/length, but this is left for later Kernels. Signed-off-by: Boaz Harrosh Signed-off-by: Greg Kroah-Hartman commit 0889c179651f57c6fdf4ed72e5027c5dcc90bda2 Author: Boaz Harrosh Date: Wed Dec 28 19:14:23 2011 +0200 ore: fix BUG_ON, too few sgs when reading commit 361aba569f55dd159b850489a3538253afbb3973 upstream. When reading RAID5 files, in rare cases, we calculated too few sg segments. There should be two extra for the beginning and end partial units. Also "too few sg segments" should not be a BUG_ON there is all the mechanics in place to handle it, as a short read. So just return -ENOMEM and the rest of the code will gracefully split the IO. Signed-off-by: Boaz Harrosh Signed-off-by: Greg Kroah-Hartman commit 688485273b3173d2fdb590ff916b55c581da6ed0 Author: Boaz Harrosh Date: Tue Dec 27 19:23:36 2011 +0200 ore: Fix crash in case of an IO error. commit ffefb8eaa367e8a5c14f779233d9da1fbc23d164 upstream. The users of ore_check_io() expect the reported device (In case of error) to be indexed relative to the passed-in ore_components table, and not the logical dev index. This causes a crash inside objlayoutdriver in case of an IO error. Signed-off-by: Boaz Harrosh Signed-off-by: Greg Kroah-Hartman commit 923415295307845e614589c1cce62abedd4d1731 Author: Steven Rostedt Date: Fri Nov 4 16:32:25 2011 -0400 perf: Fix parsing of __print_flags() in TP_printk() commit 49908a1b25d448d68fd26faca260e1850201575f upstream. A update is made to the sched:sched_switch event that adds some logic to the first parameter of the __print_flags() that shows the state of tasks. This change cause perf to fail parsing the flags. A simple fix is needed to have the parser be able to process ops within the argument. Reported-by: Andrew Vagin Signed-off-by: Steven Rostedt Signed-off-by: Greg Kroah-Hartman commit 0b58bf9909d4ef70275921fc1535f21390cf5bb5 Author: Johannes Berg Date: Mon Dec 19 14:00:59 2011 -0800 iwlagn: fix (remove) use of PAGE_SIZE commit 106671369e6d046c0b3e1e72b18ad6dd9cb298b0 upstream. The ICT code erroneously uses PAGE_SIZE. The bug is that PAGE_SIZE isn't necessarily 4096, so on such platforms this code will not work correctly as we'll try to attempt to read an index in the table that the device never wrote, it always has 4096-byte pages. Additionally, the manual alignment code here is unnecessary -- Documentation/DMA-API-HOWTO.txt states: The cpu return address and the DMA bus master address are both guaranteed to be aligned to the smallest PAGE_SIZE order which is greater than or equal to the requested size. This invariant exists (for example) to guarantee that if you allocate a chunk which is smaller than or equal to 64 kilobytes, the extent of the buffer you receive will not cross a 64K boundary. Just use appropriate new constants and get rid of the alignment code. Cc: Emmanuel Grumbach Signed-off-by: Johannes Berg Signed-off-by: Wey-Yi Guy Signed-off-by: John W. Linville Signed-off-by: Greg Kroah-Hartman commit 01b366aa69f33489d59d7a79702987752070fb3a Author: Johannes Berg Date: Fri Dec 2 12:22:54 2011 -0800 iwlagn: fix TID use bug commit 9a215e40d70ae63762963ab3ccc7f31dd966dc6a upstream. The driver everywhere uses max TID count as 9, which is wrong, it should be 8. I think the reason it uses 9 here is off-by-one confusion by whoever wrote this. We do use the value IWL_MAX_TID_COUNT for "not QoS/no TID" but that is completely correct even if it is 8 and not 9 since 0-7 are only valid. As a side effect, this fixes the following bug: Open BA session requested for 00:23:cd:16:8a:7e tid 8 ------------[ cut here ]------------ kernel BUG at drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h:350! ... when you do echo "tx start 8" > /sys/kernel/debug/ieee80211/*/*/*/*/agg_status Reported-by: Nikolay Martynov Signed-off-by: Johannes Berg Signed-off-by: Wey-Yi Guy Signed-off-by: Greg Kroah-Hartman commit 585ea9bc6752c41d669ea0f4cee8f3954df326e0 Author: Eli Cohen Date: Tue Jan 3 20:36:48 2012 -0800 IB/uverbs: Protect QP multicast list commit e214a0fe2b382fa302c036ecd6e6ffe99e3b9875 upstream. Userspace verbs multicast attach/detach operations on a QP are done while holding the rwsem of the QP for reading. That's not sufficient since a reader lock allows more than one reader to acquire the lock. However, multicast attach/detach does list manipulation that can corrupt the list if multiple threads run in parallel. Fix this by acquiring the rwsem as a writer to serialize attach/detach operations. Add idr_write_qp() and put_qp_write() to encapsulate this. This fixes oops seen when running applications that perform multicast joins/leaves. Reported by: Mike Dubman Signed-off-by: Eli Cohen Signed-off-by: Roland Dreier Signed-off-by: Greg Kroah-Hartman commit 0d878668d0a4663a4807d413532f3a99496eebf4 Author: Ram Vepa Date: Fri Dec 23 08:01:43 2011 -0500 IB/qib: Fix a possible data corruption when receiving packets commit eddfb675256f49d14e8c5763098afe3eb2c93701 upstream. Prevent a receive data corruption by ensuring that the write to update the rcvhdrheadn register to generate an interrupt is at the very end of the receive processing. Signed-off-by: Ramkrishna Vepa Signed-off-by: Mike Marciniszyn Signed-off-by: Roland Dreier Signed-off-by: Greg Kroah-Hartman commit ddcf85d72ffe4fd46239a94253fe04c114d4d1e2 Author: Li Zhong Date: Sun Dec 18 16:03:04 2011 +0000 powerpc: Fix unpaired probe_hcall_entry and probe_hcall_exit commit e4f387d8db3ba3c2dae4d8bdfe7bb5f4fe1bcb0d upstream. Unpaired calling of probe_hcall_entry and probe_hcall_exit might happen as following, which could cause incorrect preempt count. __trace_hcall_entry => trace_hcall_entry -> probe_hcall_entry => get_cpu_var => preempt_disable __trace_hcall_exit => trace_hcall_exit -> probe_hcall_exit => put_cpu_var => preempt_enable where: A => B and A -> B means A calls B, but => means A will call B through function name, and B will definitely be called. -> means A will call B through function pointer, so B might not be called if the function pointer is not set. So error happens when only one of probe_hcall_entry and probe_hcall_exit get called during a hcall. This patch tries to move the preempt count operations from probe_hcall_entry and probe_hcall_exit to its callers. Reported-by: Paul E. McKenney Signed-off-by: Li Zhong Tested-by: Paul E. McKenney Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Greg Kroah-Hartman commit 8e04782a06882913304916bc60960e4fc7405e18 Author: Anton Blanchard Date: Wed Nov 23 20:07:17 2011 +0000 powerpc/time: Handle wrapping of decrementer commit 37fb9a0231ee43d42d069863bdfd567fca2b61af upstream. When re-enabling interrupts we have code to handle edge sensitive decrementers by resetting the decrementer to 1 whenever it is negative. If interrupts were disabled long enough that the decrementer wrapped to positive we do nothing. This means interrupts can be delayed for a long time until it finally goes negative again. While we hope interrupts are never be disabled long enough for the decrementer to go positive, we have a very good test team that can drive any kernel into the ground. The softlockup data we get back from these fails could be seconds in the future, completely missing the cause of the lockup. We already keep track of the timebase of the next event so use that to work out if we should trigger a decrementer exception. Signed-off-by: Anton Blanchard Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Greg Kroah-Hartman commit f92fed3f1de1942a61978c5e59bbed56eab4ac55 Author: Pontus Fuchs Date: Thu Dec 1 12:13:44 2011 +0100 wl12xx: Restore testmode ABI commit 3f1764945eaac532c20ab1f23afa352a40f797b2 upstream. Commit 80900d0140a7648587982c8f299830e900e49165 accidently broke the ABI for testmode commands. Restore the ABI again. Signed-off-by: Pontus Fuchs Signed-off-by: Luciano Coelho Signed-off-by: Greg Kroah-Hartman commit 67d3bda61b6cf7b8c3166091ab44a07fbd9e091a Author: Pontus Fuchs Date: Tue Oct 18 09:23:42 2011 +0200 wl12xx: Check buffer bound when processing nvs data commit f6efe96edd9c41c624c8f4ddbc4930c1a2d8f1e1 upstream. An nvs with malformed contents could cause the processing of the calibration data to read beyond the end of the buffer. Prevent this from happening by adding bound checking. Signed-off-by: Pontus Fuchs Reviewed-by: Luciano Coelho Signed-off-by: Luciano Coelho Signed-off-by: Greg Kroah-Hartman commit 240ecc4a6fa0449738920ea0658ed4508398091a Author: Pontus Fuchs Date: Tue Oct 18 09:23:41 2011 +0200 wl12xx: Validate FEM index from ini file and FW commit 2131d3c2f99b081806fdae7662c92fe6acda52af upstream. Check for out of bound FEM index to prevent reading beyond ini memory end. Signed-off-by: Pontus Fuchs Reviewed-by: Luciano Coelho Signed-off-by: Luciano Coelho Signed-off-by: Greg Kroah-Hartman commit 618bbbe723e697e71b4533d3d8af554fbe5f3e16 Author: Rafał Miłecki Date: Fri Dec 9 22:16:07 2011 +0100 bcma: support for suspend and resume commit 775ab52142b02237a54184238e922251c59a2b5c upstream. bcma used to lock up machine without enabling PCI or initializing CC. Signed-off-by: Rafał Miłecki Signed-off-by: John W. Linville Signed-off-by: Greg Kroah-Hartman commit dd4f146b63d18b2cc5b7f20c56ba270f6a45fd01 Author: Andres Salomon Date: Mon Dec 19 12:22:58 2011 -0800 libertas: clean up scan thread handling commit afbca95f95f2bf7283a72670c24c1f6de00b1cb5 upstream. The libertas scan thread expects priv->scan_req to be non-NULL. In theory, it should always be set. In practice, we've seen the following oops: [ 8363.067444] Unable to handle kernel NULL pointer dereference at virtual address 00000004 [ 8363.067490] pgd = c0004000 [ 8363.078393] [00000004] *pgd=00000000 [ 8363.086711] Internal error: Oops: 17 [#1] PREEMPT [ 8363.091375] Modules linked in: fuse libertas_sdio libertas psmouse mousedev ov7670 mmp_camera joydev videobuf2_core videobuf2_dma_sg videobuf2_memops [last unloaded: scsi_wait_scan] [ 8363.107490] CPU: 0 Not tainted (3.0.0-gf7ccc69 #671) [ 8363.112799] PC is at lbs_scan_worker+0x108/0x5a4 [libertas] [ 8363.118326] LR is at 0x0 [ 8363.120836] pc : [] lr : [<00000000>] psr: 60000113 [ 8363.120845] sp : ee66bf48 ip : 00000000 fp : 00000000 [ 8363.120845] r10: ee2c2088 r9 : c04e2efc r8 : eef97005 [ 8363.132231] r7 : eee0716f r6 : ee2c02c0 r5 : ee2c2088 r4 : eee07160 [ 8363.137419] r3 : 00000000 r2 : a0000113 r1 : 00000001 r0 : eee07160 [ 8363.143896] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel [ 8363.157630] Control: 10c5387d Table: 2e754019 DAC: 00000015 [ 8363.163334] Process kworker/u:1 (pid: 25, stack limit = 0xee66a2f8) While I've not found a smoking gun, there are two places that raised red flags for me. The first is in _internal_start_scan, when we queue up a scan; we first queue the worker, and then set priv->scan_req. There's theoretically a 50mS delay which should be plenty, but doing things that way just seems racy (and not in the good way). The second is in the scan worker thread itself. Depending on the state of priv->scan_channel, we cancel pending scan runs and then requeue a run in 300mS. We then send the scan command down to the hardware, sleep, and if we get scan results for all the desired channels, we set priv->scan_req to NULL. However, it that's happened in less than 300mS, what happens with the pending scan run? This patch addresses both of those concerns. With the patch applied, we have not seen the oops in the past two weeks. Signed-off-by: Andres Salomon Signed-off-by: John W. Linville Signed-off-by: Greg Kroah-Hartman commit 69236e6011d14450a3ed033327d1e6e225b35027 Author: Benjamin Herrenschmidt Date: Tue Jan 3 12:09:15 2012 +1100 offb: Fix bug in calculating requested vram size commit c055fe0797b7bd8f6f21a13598a55a16d5c13ae7 upstream. We used to try to request 8 times more vram than needed, which would fail if the card has a too small BAR (observed with qemu & kvm). Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Greg Kroah-Hartman commit dfedad611959d25331b77459bc9a96fb7765127f Author: Benjamin Herrenschmidt Date: Wed Dec 28 00:10:16 2011 +0000 offb: Fix setting of the pseudo-palette for >8bpp commit 1bb0b7d21584b3f878e2bc880db62351ddee5185 upstream. When using a >8bpp framebuffer, offb advertises truecolor, not directcolor, and doesn't touch the color map even if it has a corresponding access method for the real hardware. Thus it needs to set the pseudo-palette with all 3 components of the color, like other truecolor framebuffers, not with copies of the color index like a directcolor framebuffer would do. This went unnoticed for a long time because it's pretty hard to get offb to kick in with anything but 8bpp (old BootX under MacOS will do that and qemu does it). Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Greg Kroah-Hartman commit 2289fb57dc2caea22e167bba67b0b52997bce28f Author: Larry Finger Date: Tue Dec 27 12:22:51 2011 -0600 rt2800usb: Move ID out of unknown commit 3f81f8f1524ccca24df1029b0cf825ecef5e5cdc upstream. Testing on the openSUSE wireless forum has shown that a Linksys WUSB54GC v3 with USB ID 1737:0077 works with rt2800usb when the ID is written to /sys/.../new_id. This ID can therefore be moved out of UNKNOWN. Signed-off-by: Larry Finger Acked-by: Gertjan van Wingerde Acked-by: Ivo van Doorn Signed-off-by: John W. Linville Signed-off-by: Greg Kroah-Hartman commit a5a0cdd640258b80e116de11517dd6482ab6f229 Author: Neil Horman Date: Mon Jan 2 15:31:23 2012 -0500 firmware: Fix an oops on reading fw_priv->fw in sysfs loading file commit eea915bb0d1358755f151eaefb8208a2d5f3e10c upstream. This oops was reported recently: firmware_loading_store+0xf9/0x17b dev_attr_store+0x20/0x22 sysfs_write_file+0x101/0x134 vfs_write+0xac/0xf3 sys_write+0x4a/0x6e system_call_fastpath+0x16/0x1b The complete backtrace was unfortunately not captured, but details can be found here: https://bugzilla.redhat.com/show_bug.cgi?id=769920 The cause is fairly clear. Its caused by the fact that firmware_loading_store has a case 0 in its switch statement that reads and writes the fw_priv->fw poniter without the protection of the fw_lock mutex. since there is a window between the time that _request_firmware sets fw_priv->fw to NULL and the time the corresponding sysfs file is unregistered, its possible for a user space application to race in, and write a zero to the loading file, causing a NULL dereference in firmware_loading_store. Fix it by extending the protection of the fw_lock mutex to cover all of the firware_loading_store function. Signed-off-by: Neil Horman Signed-off-by: Greg Kroah-Hartman commit 170797705f7ccb335e9fe3f61967a4d465846642 Author: Joe Perches Date: Fri Dec 9 14:12:00 2011 -0800 Documentation: Update stable address commit 2eb7f204db51969ea558802a6601d79c2fb273b9 upstream. The Japanese/Korean/Chinese versions still need updating. Also, the stable kernel 2.6.x.y descriptions are out of date and should be updated as well. Signed-off-by: Joe Perches Signed-off-by: Greg Kroah-Hartman commit 13e864be180093e145da19980e247b991d2fd99d Author: Joe Perches Date: Fri Dec 9 13:54:34 2011 -0800 MAINTAINERS: stable: Update address commit bc7a2f3abc636d7cab84258a48e77b08fb5fd3d6 upstream. The old address hasn't worked since the great intrusion of August 2011. Signed-off-by: Joe Perches Signed-off-by: Greg Kroah-Hartman commit 904f06d14d0b5de9872816fb97a3ab319bf6c0b0 Author: Arnaud Lacombe Date: Sat Nov 19 01:51:30 2011 -0500 merge_config.sh: Improve file and option handling Three issues: 1) bail out early on error. This fixes handling of non-existant file: Before: % sh scripts/kconfig/merge_config.sh non existant files Merging non sed: can't read non: No such file or directory cat: non: No such file or directory Merging existant sed: can't read existant: No such file or directory cat: existant: No such file or directory Merging files sed: can't read files: No such file or directory cat: files: No such file or directory scripts/kconfig/conf --alldefconfig Kconfig # # configuration written to .config # After: % sh scripts/kconfig/merge_config.sh non existant files Merging non sed: can't read non: No such file or directory 2) re-implement argument parsing using sh(1) getopts builtin 3) verify that the script was given enough argument to proceed. There isn't much point running the script with less than 2 arguments. CC: Sam Ravnborg CC: gthelen@google.com CC: tartler@cs.fau.de CC: Dmitry Fink CC: Darren Hart CC: Eric B Munson CC: Bruce Ashfield CC: Michal Marek CC: linux-kbuild@vger.kernel.org Signed-off-by: Arnaud Lacombe [jstultz: Slight tweaks to patch description] [jstultz: Avoid using "set -e", and catch non-existing files explicitly] Signed-off-by: John Stultz commit e58af63725fa5dfee53cb089d59f42f43e1d627a Author: John Stultz Date: Mon Nov 21 15:29:45 2011 -0800 merge_config.sh: Fix bug in final check Arnaud Lacombe pointed out the final checking that the requested configs were included in the final .config was broken. The example was that if you had a fragment that disabled CONFIG_DECOMPRESS_GZIP applied to a normal defconfig, there would be no final warning that CONFIG_DECOMPRESS_GZIP was acutally set in the final .config. This bug was introduced by me in v3 of the original patch, and the following patch reverts the invalid change. Reported-by: Arnaud Lacombe Signed-off-by: John Stultz commit 6d778591c6db7e49ad401edce7cf488e109e8508 Author: Darren Hart Date: Mon Nov 21 11:42:30 2011 -0800 merge_config.sh: Whitespace cleanup Fix whitespace usage in the clean_up routine. Signed-off-by: Darren Hart Signed-off-by: John Stultz commit 2559983204c0572c76fef48af19ddae122715bfc Author: Darren Hart Date: Mon Nov 21 11:42:29 2011 -0800 merge_config.sh: Use signal names compatible with dash and bash The SIGHUP SIGINT and SIGTERM names caused failures when running merge_config.sh with the dash shell. Dropping the "SIG" component makes the script work in both bash and dash. Signed-off-by: Darren Hart Signed-off-by: John Stultz commit d346dd1f67570d28fcadbf43c4ce0f806fdd19d2 Author: John Stultz Date: Wed Aug 24 14:35:24 2011 -0700 kconfig: Add merge_config.sh script After noticing almost every distro has their own method of managing config fragments, I went looking at some best practices, and wanted to try to consolidate some of the different approaches so this fairly simple infrastructure can be shared (and new distros/build systems don't have to implement yet another config fragment merge script). This script is most influenced by the Windriver tools used in the Yocto Project, reusing some portions found there. This script merges multiple config fragments, warning on any overrided values. It then sets any unspecified values to their default, then finally checks to make sure no specified value was dropped due to unsatisfied dependencies. I'm sure this implementation won't work for everyone, and I expect it will need to evolve to adapt for various use cases. But I think its a reasonable starting point. v2: * Reworked to use alldefconfig instead of the proposed olddefconfig as suggested by Sam Ravnborg. v3: * Script improvements from Dmitri. * allnoconfig option from Darren * pre-make exit option from Darren * lots of other fixes/cleanups from Darren. * Fix final check to not compain about config values in comments v4: * No code change, only properly add Darren's signed-off-by line. Please let me know if you have any comments or thoughts! CC: Sam Ravnborg CC: gthelen@google.com CC: tartler@cs.fau.de CC: Dmitry Fink CC: Darren Hart CC: Eric B Munson CC: Bruce Ashfield CC: Michal Marek CC: linux-kbuild@vger.kernel.org Signed-off-by: John Stultz Signed-off-by: Darren Hart Signed-off-by: John Stultz commit 17c05c6dee35a7e8eb3f3ac9f06c49c96daa3972 Author: Amit Daniel Kachhap Date: Wed Dec 21 16:38:23 2011 +0530 ARM: exynos4: Add thermal sensor driver platform device support This patch adds necessary source definations needed for TMU driver and the platform device support. Signed-off-by: Amit Daniel Kachhap commit a1d8ad20f836f6c93cc64c0ff1a0f14849004e49 Author: Amit Daniel Kachhap Date: Wed Dec 21 14:32:48 2011 +0530 thermal: exynos4: Register the tmu sensor with the thermal interface layer Export and register information from the hwmon tmu sensor to the samsung exynos kernel thermal framework where different cooling devices and thermal zone are binded. The exported information is based according to the data structure thermal_sensor_conf present in exynos_thermal.h. HWMON sysfs functions are currently left although all of them are present in generic linux thermal layer. Also the platform data structure is modified to pass frequency cooling in percentages for each thermal level. Signed-off-by: Amit Daniel Kachhap commit 6437b2693ca0bdafb9264b939cb9a1b9fcac0856 Author: Amit Daniel Kachhap Date: Wed Dec 21 15:23:55 2011 +0530 thermal: exynos: Add thermal interface support for linux thermal layer This codes uses the generic linux thermal layer and creates a bridge between temperature sensors, linux thermal framework and cooling devices for samsung exynos platform. This layer recieves or monitor the temperature from the sensor and informs the generic thermal layer to take the necessary cooling action. Signed-off-by: Amit Daniel Kachhap commit 807ebf2427a3f208338d49b7d6b66ff115e8cb72 Author: Amit Daniel Kachhap Date: Tue Dec 13 20:40:01 2011 +0530 thermal: Add generic cpu cooling implementation This patch adds support for generic cpu thermal cooling low level implementations using frequency scaling and cpuhotplugg currently. Different cpu related cooling devices can be registered by the user and the binding of these cooling devices to the corresponding trip points can be easily done as the registration API's return the cooling device pointer. Signed-off-by: Amit Daniel Kachhap commit 7308530279ffbb04456bfedef5c86281af5d90f4 Author: Amit Daniel Kachhap Date: Thu Dec 1 18:51:39 2011 +0530 thermal: Add a new trip type to use cooling device instance number This patch adds a new trip type THERMAL_TRIP_STATE_ACTIVE. This trip behaves same as THERMAL_TRIP_ACTIVE but also passes the cooling device instance number. This helps the cooling device registered as different instances to perform appropriate cooling action decision in the set_cur_state call back function. Also since the trip temperature's are in ascending order so some logic is put in place to skip the un-necessary checks. Signed-off-by: Amit Daniel Kachhap commit 92a78c5dfff148e46ab43caf8344dabe79be5783 Author: Jaecheol Lee Date: Tue Dec 6 15:43:10 2011 +0530 EXYNOS: Removed useless headers and codes This patch removes no referencing header files and cleaned up useless code. Signed-off-by: Jaecheol Lee Signed-off-by: Kukjin Kim commit cdc0ab6d14b08082c995e28512285fec390a7ce4 Author: Jaecheol Lee Date: Tue Dec 6 15:43:09 2011 +0530 EXYNOS: Make EXYNOS common cpufreq driver To support various EXYNOS series SoCs commonly, added exynos common structure. exynos-cpufreq.c => EXYNOS series common cpufreq driver exynos4210-cpufreq.c => EXYNOS4210 support cpufreq driver Signed-off-by: Jaecheol Lee Signed-off-by: Kukjin Kim commit c1859cf917f3734c539b3660fcecba33edc58798 Author: Jaecheol Lee Date: Tue Dec 6 15:43:08 2011 +0530 EXYNOS4210: cpufreq code is changed for stable working This patch is modify code for stable working 1. Remove unused register access code 2. Change sequence for frequency changing Signed-off-by: Jaecheol Lee Signed-off-by: Jonghwan Choi Signed-off-by: Jongpill Lee Signed-off-by: Kukjin Kim commit b2dc5704dbe07b44eb586250532893ec98017d26 Author: Jaecheol Lee Date: Tue Dec 6 15:43:07 2011 +0530 EXYNOS4210: Update frequency table for cpu divider This patch is changes frequency table for cpu divider for stable frequency. Signed-off-by: Jaecheol Lee Signed-off-by: Jongpill Lee Signed-off-by: Kukjin Kim commit 9d6614da322c00dd536a2c5aff50e88934ddacbc Author: Jaecheol Lee Date: Tue Dec 6 15:43:06 2011 +0530 EXYNOS4210: Remove code about bus on cpufreq This patch removes code for bus on cpufreq because the code for bus frequency changing moves to busfreq driver. So code about bus on cpufreq is not necessary. Signed-off-by: Jaecheol Lee Signed-off-by: Jongpill Lee Signed-off-by: Kukjin Kim commit 29a443b2f2b0d3eb5d9b81e5d7eb495a237fbce4 Author: Amit Daniel Kachhap Date: Tue Jan 10 10:49:19 2012 +0530 ARM: exynos: Enable l2 configuration through device tree This patch enables calling generic l2 setup functions if device tree is used. Signed-off-by: Amit Daniel Kachhap commit 0e751a7fd1547a24aaee058e034074b3aea5854c Author: Amit Daniel Kachhap Date: Tue Jan 10 10:45:16 2012 +0530 ARM: exynos: remove useless code to save/restore L2 Following the merge of CPU PM notifiers and L2 resume code, this patch removes useless code to save and restore L2 registers. This is now automatically covered by suspend calls which integrated CPU PM notifiers and new sleep code that allows to resume L2 before MMU is turned on. Signed-off-by: Lorenzo Pieralisi Signed-off-by: Amit Daniel Kachhap commit c054d6bd3be5c41186359eb3e29ad02d8d0a603a Author: Amit Daniel Kachhap Date: Tue Jan 10 10:39:46 2012 +0530 ARM: exynos: save L2 settings during bootup This patch adds code to save L2 register configuration at boot, and later used to resume L2 before MMU is enabled in suspend and cpuidle resume paths. Signed-off-by: Lorenzo Pieralisi Signed-off-by: Amit Daniel Kachhap commit 36c3124de174d3e0a1802783a066c34e6bafaaa0 Author: Amit Daniel Kachhap Date: Mon Dec 5 15:24:33 2011 +0530 ARM: s5p: add L2 early resume code This patch adds code to resume L2 before MMU is enabled in suspend and cpuidle resume paths. s3c_cpu_resume is moved to the data section with appropriate comments. Signed-off-by: Lorenzo Pieralisi Signed-off-by: Amit Daniel Kachhap commit 1c6ff422e74e1a58d25a815cf4c04d05255852e5 Author: Amit Daniel Kachhap Date: Wed Jan 4 13:46:19 2012 +0530 ARM: exynos: Add support AFTR mode on EXYNOS4210 This patch adds support AFTR(ARM OFF TOP RUNNING) mode in cpuidle driver. L2 cache keeps their data in this mode. This patch ports the code to the latest interfaces to save/restore CPU state inclusive of CPU PM notifiers, l2 resume and cpu_suspend/resume. Signed-off-by: Jaecheol Lee Signed-off-by: Lorenzo Pieralisi Signed-off-by: Amit Daniel Kachhap commit 027d7c326426cc82f6190ac905f23e061b10de04 Author: Grant Likely Date: Mon Oct 24 11:09:15 2011 +0200 dt: Linux dt usage model documentation v2: 2nd draft - Editorial cleanups from Randy Dunlap Signed-off-by: Grant Likely commit b155f49f99013f97367dd500771a89d6e01573c1 Author: Grant Likely Date: Mon Oct 24 11:09:12 2011 +0200 arm/dt: vexpress: add basic DT platform matching support This patch adds a DT match table to the Versatile Express machine description in order to enable basic device tree support. Tested on a Versatile Express board where the device tree blob is passed to the kernel by u-boot. Signed-off-by: Lorenzo Pieralisi [converted .dts file to use skeleton.dtsi, and added 'dtbs' targets] Signed-off-by: Grant Likely commit 924374e93b4fc8b81256afff8b2cf7dddfcc8841 Author: Grant Likely Date: Mon Oct 24 11:09:11 2011 +0200 arm/dt: Add basic device tree support for mx51 and mx53 boards This patch add support for the Genesi Efika MX Smarttop and Smartbook, the Freescale mx51 babbage board, and the Freescale mx53 loco board Signed-off-by: Jason Liu Signed-off-by: Grant Likely commit 9c50b33c062467aea0a9609222457213a9cd1c6a Author: Andrey Konovalov Date: Fri Jan 6 23:12:42 2012 +0400 arm/dt: Add basic device tree support for smdkv310 board Enable basic device tree support for Exynos4 smdkv310 board. Signed-off-by: Thomas Abraham Signed-off-by: Grant Likely commit fb722352d16890b54e392d3055e3ecb4bd3471db Author: Grant Likely Date: Mon Oct 24 11:09:10 2011 +0200 arm/dt: omap3 basic device tree board support Enable basic device tree support for the Gumstix Overo, IGEP, Panda and Beagle OMAP boards Signed-off-by: Andy Doan Signed-off-by: Jon Medhurst Signed-off-by: Grant Likely Conflicts: arch/arm/boot/dts/omap3-beagle.dts arch/arm/boot/dts/omap4-panda.dts arch/arm/mach-omap2/board-omap4panda.c commit eefbee38f4dc7f3815f70c00e2d4d6e4ef341e6b Author: Shawn Guo Date: Mon Oct 24 11:09:07 2011 +0200 arm/dt: add versatile dtb build rules Makes 'make dtbs' build the versatile .dtb files when versatile is enabled. Signed-off-by: Grant Likely commit e1682169767813478b39b9049caffe155d231f4e Author: John Bonesio Date: Mon Oct 24 11:09:06 2011 +0200 dt: Add id to AUXDATA structure This patch adds the ability to set the device id in the AUXDATA structure for those few device drivers that just have to have a statically defined device id. Signed-off-by: John Bonesio Signed-off-by: Grant Likely commit 3d07054219c418577cf384a14107fdadc6deca12 Author: Kautuk Consul Date: Tue Nov 22 13:31:30 2011 -0500 arm: fault.c: Port OOM changes into do_page_fault Commit d065bd810b6deb67d4897a14bfe21f8eb526ba99 (mm: retry page fault when blocking on disk transfer) and commit 37b23e0525d393d48a7d59f870b3bc061a30ccdb (x86,mm: make pagefault killable) The above commits introduced changes into the x86 pagefault handler for making the page fault handler retryable as well as killable. These changes reduce the mmap_sem hold time, which is crucial during OOM killer invocation. Port these changes to ARM. Without these changes, my ARM board encounters many hang and livelock scenarios. After applying this patch, OOM feature performance improves according to my testing. Signed-off-by: Kautuk Consul "I think this is fine"-by Russell King - ARM Linux Signed-off-by: Nicolas Pitre commit 2eb6f8b98d8471c83be7e3ab53fe4386884c96a9 Author: Vincent Guittot Date: Fri Oct 21 09:02:47 2011 +0200 sched: Ensure cpu_power periodic update With a lot of small task, the softirq sched is nearly never called when no_hz is enable. Te load_balance is mainly called with the newly_idle mode which doesn't update the cpu_power. Add a next_update field which ensure a maximum update period when there is short activity Signed-off-by: Vincent Guittot commit 2b21b980917662503a16e079b5d4a5a8a17886cd Author: Arnd Bergmann Date: Sat Oct 8 17:07:50 2011 +0200 ARM: kprobes: work around build errors I got a few build errors for kprobes playing with randconfig on the latest kernel. While this patch manages to avoid these errors, I'm pretty sure that it is not the ideal solution. The errors I got in arm are while building for ARMv6 with the arm-linux-gnueabihf-gcc-4.6 provided by Linaro, which results in these messages: /tmp/ccGpftnj.s: Assembler messages: /tmp/ccGpftnj.s:22066: Error: selected processor does not support ARM mode `mls r0,r1,r2,r3' /tmp/ccGpftnj.s:22099: Error: selected processor does not support ARM mode `mlshi r7,r8,r9,r10' /tmp/ccGpftnj.s:22128: Error: selected processor does not support ARM mode `mls lr,r1,r2,r13' /tmp/ccGpftnj.s:23781: Error: selected processor does not support ARM mode `strexd r0,r2,r3,[sp]' /tmp/ccGpftnj.s:23802: Error: selected processor does not support ARM mode `ldrexd r2,r3,[sp]' /tmp/ccGpftnj.s:23823: Error: selected processor does not support ARM mode `strexb r0,r2,[sp]' /tmp/ccGpftnj.s:23844: Error: selected processor does not support ARM mode `ldrexb r2,[sp]' /tmp/ccGpftnj.s:23865: Error: selected processor does not support ARM mode `strexh r0,r2,[sp]' /tmp/ccGpftnj.s:23886: Error: selected processor does not support ARM mode `ldrexh r2,[sp]' /tmp/ccGpftnj.s:25836: Warning: base register written back, and overlaps second transfer register [ NP: I didn't reproduce the T2 errors, and Tixy was doubtful about them. Merged Tixy's change suggestions and his ACK. ] Signed-off-by: Arnd Bergmann Acked-by: Jon Medhurst Signed-off-by: Nicolas Pitre commit 61d24dd4d0528d369ea81f6e5d5e1db9c62ad46a Author: Ming Lei Date: Wed Aug 31 00:03:13 2011 +0800 usb: ehci: make HC see up-to-date qh/qtd descriptor ASAP This patch introduces the helper of ehci_sync_mem to flush qtd/qh into memory immediately on some ARM, so that HC can see the up-to-date qtd/qh descriptor asap. This patch fixs one performance bug on ARM Cortex A9 dual core platform, which has been reported on quite a few ARM machines (OMAP4, Tegra 2, snowball...), see details from link of https://bugs.launchpad.net/bugs/709245. The patch has been tested ok on OMAP4 panda A1 board, and the performance of 'dd' over usb mass storage can be increased from 4~5MB/sec to 14~16MB/sec after applying this patch. Cc: Russell King Signed-off-by: Ming Lei Signed-off-by: Alan Stern commit 01deeef1e25035bbaca9bc580c88dc7cdbc85363 Merge: 805a6af ef3a0bf Author: Andrey Konovalov Date: Fri Jan 6 16:53:54 2012 +0400 Merge branch 'rmk-devel-stable' into linux-linaro-tracking Conflicts: arch/arm/kernel/setup.c arch/arm/mach-shmobile/board-kota2.c commit ef3a0bf5bfadbace156fa2a3b9c753df2de41df2 Author: Linus Walleij Date: Wed Jan 4 11:42:19 2012 +0100 ARM: 7269/1: mach-sa1100: fix sched_clock breakage Fixed up a simple typo in the runtime sched_clock conversion so we compile again. Cc: Kristoffer Ericson Acked-by: Marc Zyngier Signed-off-by: Linus Walleij Signed-off-by: Russell King commit e0b58ee8c429197c3747b1f03dd1cb9dd082bc0e Merge: cfef032 9561f4e Author: Russell King Date: Wed Jan 4 09:01:51 2012 +0000 Merge branch 'vmalloc' of git://git.linaro.org/people/nico/linux into devel-stable commit cfef0320ead7d707c363b18bb6f13f6c3bda316a Author: Linus Walleij Date: Mon Jan 2 14:50:15 2012 +0100 ARM: 7261/1: clocksource/ux500-prcmu: fix sched_clock breakage commit 2f0778afac79bd8d226225556858a636931eeabc adding runtime-selectable sched_clock() forgot to patch this driver down in drivers/clocksource, this patch fixes the problem. Reported-by: Daniel Lezcano Acked-by: Marc Zyngier Signed-off-by: Linus Walleij Signed-off-by: Russell King commit 9f9df00accb343f61a5782904af10366a18ebb5a Author: Jamie Iles Date: Wed Dec 14 23:43:17 2011 +0100 ARM: 7236/1: vic: always use simple ops Now that irq_domain_simple_ops are available for non-DT users, use them in the VIC driver so that we don't get a NULL dereference in irq_domain_to_irq() when registering the domain. Cc: Linus Walleij Signed-off-by: Jamie Iles Signed-off-by: Russell King commit 0d2006bbf09e817f125ba1e42b2549bc2c5d7351 Author: Chanho Park Date: Tue Jan 3 16:47:51 2012 +0900 pinctrl: remove unnecessary max pin number This patch removes maxpin member in the pin control descriptor because we don't need this value as we enumerate a pin space using offset. Signed-off-by: Chanho Park Signed-off-by: Kyungmin Park Signed-off-by: Linus Walleij commit 706e8520e8450a631ca6f798f8c811faf56f0a59 Author: Chanho Park Date: Tue Jan 3 16:47:50 2012 +0900 pinctrl: correct a offset while enumerating pins This patch modifies a offset while enumerating pins to support a partial pin space. If we use a pin number for enumerating pins, the pin space always starts with zero base. Indeed, we always check the pin is in the pin space. An extreme example, there is only two pins. One is 0. Another is 1000. We always enumerate whole offsets until 1000. For solving this problem, we use the offset of the pin array instead of the zero-based pin number. Signed-off-by: Chanho Park Signed-off-by: Kyungmin Park [Restored sparse pin space comment] Signed-off-by: Linus Walleij commit e6337c3c96a7ee5cfd5e7afed825f894d4576f58 Author: Dong Aisheng Date: Tue Dec 20 17:51:59 2011 +0800 pinctrl: some typo fixes Minor copyedits. Signed-off-by: Dong Aisheng Signed-off-by: Linus Walleij commit 3bece55aa5356af0171aaa64fd9c4f7601c47f1c Author: Linus Walleij Date: Sun Dec 18 23:44:26 2011 +0100 pinctrl: rename U300 and SIRF pin controllers For stringent order, rename the pinmux-* pin controllers to pinctrl-* and also rename the Kconfig symbols and in-kernel users. Cc: Rongjun Ying Cc: Jean-Christophe PLAGNIOL-VILLARD Acked-by: Stephen Warren Signed-off-by: Linus Walleij commit 43699dea1ea21a0d5786317a794cb2ba27a6f4fe Author: Stephen Warren Date: Thu Dec 15 16:57:17 2011 -0700 pinctrl: pass name instead of device to pin_config_* Obtaining a "struct pinctrl_dev *" is difficult for code not directly related to the pinctrl subsystem. However, the device name of the pinctrl device is fairly well known. So, modify pin_config_*() to take the device name instead of the "struct pinctrl_dev *". Signed-off-by: Stephen Warren [rebased on top of refactoring code] Signed-off-by: Linus Walleij commit 63fd5984a9b2214cba7dd7dd7b5a75cf40dde39f Author: Stephen Warren Date: Thu Dec 15 16:57:16 2011 -0700 pinctrl: add "struct seq_file;" to pinconf.h This allows one to include pinconf.h without having to include other headers first. Signed-off-by: Stephen Warren Signed-off-by: Linus Walleij commit ca53c5f1ca5c936777caca46b7c716a40682ce83 Author: Linus Walleij Date: Wed Dec 14 20:33:37 2011 +0100 pinctrl: conjure names for unnamed pins If pins with blank names are registered, we assign them names on-the-fly on the form "PINn" where n is the pin number for that pin on the specific controller. Acked-by: Stephen Warren Signed-off-by: Linus Walleij commit 23750196ef472e9249958d5165b0bb292518c710 Author: Linus Walleij Date: Wed Dec 14 09:30:08 2011 +0100 pinctrl: add a group-specific hog macro To create elegant tables for pinmux hogs on the PXA MMP platform, we need this hog macro that can specify both function and group in one go. Acked-by: Stephen Warren Acked-by: Haojian Zhuang Signed-off-by: Linus Walleij commit 51cd24ee625c348654114032499914d0311e5832 Author: Stephen Warren Date: Fri Dec 9 16:59:05 2011 -0700 pinctrl: don't create a device for each pin controller Pin controllers should already be instantiated as a device, so there's no need for the pinctrl core to create a new struct device for each controller. This allows the controller's real name to be used in the mux mapping table, rather than e.g. "pinctrl.0", "pinctrl.1", etc. This necessitates removal of the PINMUX_MAP_PRIMARY*() macros, since their sole purpose was to hard-code the .ctrl_dev_name field to be "pinctrl.0". Signed-off-by: Stephen Warren Signed-off-by: Linus Walleij commit 528b78306ecf82af06c4862aa5518643fe20a440 Author: Stephen Warren Date: Fri Dec 9 16:59:04 2011 -0700 arm/u300: don't use PINMUX_MAP_PRIMARY* The next patch will remove these macros. Signed-off-by: Stephen Warren Signed-off-by: Linus Walleij commit 1ddb6ff03c0cdec58c6cfdbada95acddcce4a7b7 Author: Stephen Warren Date: Fri Dec 9 16:59:03 2011 -0700 pinctrl: implement PINMUX_MAP_SYS_HOG This is the same as PINMUX_MAP_PRIMARY_SYS_HOG, except that it allows you to specify a particular control device. Signed-off-by: Stephen Warren Signed-off-by: Linus Walleij commit ae6b4d8588f4fc95520b0e62c4b1f474c82191a9 Author: Linus Walleij Date: Wed Oct 19 18:14:33 2011 +0200 pinctrl: add a pin config interface This add per-pin and per-group pin config interfaces for biasing, driving and other such electronic properties. The details of passed configurations are passed in an opaque unsigned long which may be dereferences to integer types, structs or lists on either side of the configuration interface. ChangeLog v1->v2: - Clear split of terminology: we now have pin controllers, and those may support two interfaces using vtables: pin multiplexing and pin configuration. - Break out pin configuration to its own C file, controllers may implement only config without mux, and vice versa, so keep each sub-functionality of pin controllers separate. Introduce CONFIG_PINCONF in Kconfig. - Implement some core logic around pin configuration in the pinconf.c file. - Remove UNKNOWN config states, these were just surplus baggage. - Remove FLOAT config state - HIGH_IMPEDANCE should be enough for everyone. - PIN_CONFIG_POWER_SOURCE added to handle switching the power supply for the pin logic between different sources - Explicit DISABLE config enums to turn schmitt-trigger, wakeup etc OFF. - Update documentation to reflect all the recent reasoning. ChangeLog v2->v3: - Twist API around to pass around arrays of config tuples instead of (param, value) pairs everywhere. - Explicit drive strength semantics for push/pull and similar drive modes, this shall be the number of drive stages vs nominal load impedance, which should match the actual electronics used in push/pull CMOS or TTY totempoles. - Drop load capacitance configuration - I probably don't know what I'm doing here so leave it out. - Drop PIN_CONFIG_INPUT_SCHMITT_OFF, instead the argument zero to PIN_CONFIG_INPUT_SCHMITT turns schmitt trigger off. - Drop PIN_CONFIG_NORMAL_POWER_MODE and have a well defined argument to PIN_CONFIG_LOW_POWER_MODE to get out of it instead. - Drop PIN_CONFIG_WAKEUP_ENABLE/DISABLE and just use PIN_CONFIG_WAKEUP with defined value zero to turn wakeup off. - Add PIN_CONFIG_INPUT_DEBOUNCE for configuring debounce time on input lines. - Fix a bug when we tried to configure pins for pin controllers without pinconf support. - Initialized debugfs properly so it works. - Initialize the mutex properly and lock around config tampering sections. - Check the return value from get_initial_config() properly. ChangeLog v3->v4: - Export the pin_config_get(), pin_config_set() and pin_config_group() functions. - Drop the entire concept of just getting initial config and keeping track of pin states internally, instead ask the pins what state they are in. Previous idea was plain wrong, if the device cannot keep track of its state, the driver should do it. - Drop the generic configuration layout, it seems this impose too much restriction on some pin controllers, so let them do things the way they want and split off support for generic config as an optional add-on. ChangeLog v4->v5: - Introduce two symmetric driver calls for group configuration, .pin_config_group_[get|set] and corresponding external calls. - Remove generic semantic meanings of return values from config calls, these belong in the generic config patch. Just pass the return value through instead. - Add a debugfs entry "pinconf-groups" to read status from group configuration only, also slam in a per-group debug callback in the pinconf_ops so custom drivers can display something meaningful for their pins. - Fix some dangling newline. - Drop dangling #else clause. - Update documentation to match the above. ChangeLog v5->v6: - Change to using a pin name as parameter for the [get|set]_config() functions, as suggested by Stephen Warren. This is more natural as names will be what a developer has access to in written documentation etc. ChangeLog v6->v7: - Refactor out by-pin and by-name get/set functions, only expose the by-name functions externally, expose the by-pin functions internally. - Show supported pin control functionality in the debugfs pinctrl-devices file. Acked-by: Stephen Warren Signed-off-by: Linus Walleij commit b4e3ac74d5cd4152f2ec6b3280b1ff3428952f7f Author: Linus Walleij Date: Wed Nov 16 10:24:39 2011 +0100 pinctrl/coh901: driver to request its pins This makes the COH 901 driver request muxing of its GPIO pins from the pinmux-u300 driver using the standard API calls. Signed-off-by: Linus Walleij commit f812f0f53e5643c06b929ce3299cbaffb307c488 Author: Linus Walleij Date: Wed Nov 16 10:23:05 2011 +0100 pinctrl: u300-pinmux: register proper GPIO ranges This register the actual GPIO ranges used by the COH901XXX GPIO driver. Signed-off-by: Linus Walleij commit ca402d37dccf2b797440c5f03bd0db16f977acc9 Author: Linus Walleij Date: Wed Nov 16 09:22:59 2011 +0100 pinctrl: move the U300 GPIO driver to pinctrl This driver will be converted to a dual GPIO + pinctrl driver since it supports biasing and driving control options. Hopefully it can serve as an example. Signed-off-by: Linus Walleij commit dd68acc7cc256c928256eb5f53e163233605de5d Author: Linus Walleij Date: Tue Nov 15 11:18:54 2011 +0100 ARM: u300: localize GPIO assignments Move the GPIO assignments for the U300 variants down to a local header file in the mach-u300 directory. There is no point in broadcasting this across the entire kernel. Signed-off-by: Linus Walleij commit 59b099b04981917ee7fbd88b6f50eeaffc9f33cd Author: Linus Walleij Date: Wed Nov 30 13:28:14 2011 +0100 pinctrl: make it possible to add multiple maps Since we now anyway make a copy of the platform-supplied pinmux map, we can just as well make it possible to call the function adding maps several times, so as to simplify cases (as PXA) where several sets of disparate mappings need to be added depending on target platform. Acked-by: Haojian Zhuang Acked-by: Arnd Bergmann Signed-off-by: Linus Walleij commit 97607d157c133ab18dfcd77fa836e37fa950a44a Author: Linus Walleij Date: Tue Nov 29 12:52:39 2011 +0100 pinctrl: make a copy of pinmux map This makes a deep copy of the pinmux function map instead of keeping the copy supplied from the platform around. This makes it possible to tag the platforms map with __initdata as is also done as part of this patch. Rationale: a certain target platform (PXA) has numerous pinmux maps, many of which will be lying around unused after boot in a multi-platform binary. Instead, deep-copy the one we're going to use and tag them all __initdata so they go away after boot. ChangeLog v1->v2: - Fixup the deep copy, missed a few items on the struct, plus mark bool member non-const since we're making runtime copies if this stuff now. ChangeLog v2->v3: - Make a shallow copy (just copy the array of map structs) as Arnd noticed, string constants never get discarded by the kernel anyway, so these pointers may be safely copied over. Reviewed-by: Arnd Bergmann Signed-off-by: Linus Walleij commit 542e704f3ffee1dc4539c9e8191e4dc215220f5e Author: Linus Walleij Date: Mon Nov 14 10:06:22 2011 +0100 pinctrl: GPIO direction support for muxing When requesting a single GPIO pin to be muxed in, some controllers will need to poke a different value into the control register depending on whether the pin will be used for GPIO output or GPIO input. So create pinmux counterparts to gpio_direction_[input|output] in the pinctrl framework. ChangeLog v1->v2: - This also amends the documentation to make it clear the this function and associated machinery is *ONLY* intended as a backend to gpiolib machinery, not for everyone and his dog to start playing around with pins. ChangeLog v2->v3: - Don't pass an argument to the common request function, instead provide pinmux_* counterparts to the gpio_direction_[input|output] calls, simpler and anyone can understand it. ChangeLog v3->v4: - Fix numerous spelling mistakes and dangling text in documentation. Add Ack and Rewewed-by. Cc: Igor Grinberg Acked-by: Stephen Warren Reviewed-by: Thomas Abraham Signed-off-by: Linus Walleij commit 75d6642a3ee1dfe2552028997cdcc2c4207bec8f Author: Linus Walleij Date: Wed Nov 16 09:58:51 2011 +0100 pinctrl: print pin range in GPIO range debugs Show the mapped pin range corresponding to the GPIO range in debugfs for pin controllers. Acked-by: Stephen Warren Signed-off-by: Linus Walleij commit 3c739ad0df5eb41cd7adad879eda6aa09879eb76 Author: Chanho Park Date: Fri Nov 11 18:47:58 2011 +0900 pinctrl: add a pin_base for sparse gpio-ranges This patch enables mapping a base offset of gpio ranges with a pin offset even if does'nt matched. A base of pinctrl_gpio_range means a base offset of gpio. However, we cannot convert gpio to pin number for sparse gpio ranges just only using a gpio base offset. We can convert a gpio to real pin number(even if not matched) using a new pin_base which means a base pin offset of requested gpio range. Now, the pin control subsystem passes the pin base offset to the pinmux driver. For example, let's assume below two gpio ranges in the system. static struct pinctrl_gpio_range gpio_range_a = { .name = "chip a", .id = 0, .base = 32, .pin_base = 32, .npins = 16, .gc = &chip_a; }; static struct pinctrl_gpio_range gpio_range_b = { .name = "chip b", .id = 0, .base = 48, .pin_base = 64, .npins = 8, .gc = &chip_b; }; We can calucalate a exact pin ranges even if doesn't matched with gpio ranges. chip a: gpio-range : [32 .. 47] pin-range : [32 .. 47] chip b: gpio-range : [48 .. 55] pin-range : [64 .. 71] Signed-off-by: Chanho Park Signed-off-by: Kyungmin Park Signed-off-by: Linus Walleij commit 33d58949adee5086478e140751e4a7263bd7e207 Author: Marek Belisko Date: Mon Oct 31 21:27:52 2011 +0100 pinctrl: unify pin type from signed to unsigned We want singned pins to mean "invalid" only on the outside of the subsystem. Signed-off-by: Marek Belisko Signed-off-by: Linus Walleij commit 336cdba09a5df706402628fb20b7660d186aff6c Author: Linus Walleij Date: Thu Nov 10 09:27:41 2011 +0100 pinctrl: documentation update Update the docs removing an obsolete __refdata tag and document the mysterious return value of pin_free(). And fixes up some various confusions in the pinctrl documentation. Reported-by: Rajendra Nayak Reported-by: Randy Dunlap Reported-by: Thomas Abraham Reported-by: Uwe Kleine-König Acked-by: Stephen Warren Signed-off-by: Linus Walleij commit 3712a3c488987849613a4ad74129e67e40b12b38 Author: Stephen Warren Date: Fri Oct 21 12:25:53 2011 -0600 pinctrl: add explicit gpio_disable_free pinmux_op Some pinctrl drivers (Tegra at least) program a pin to be a GPIO in a completely different manner than they select which function to mux out of that pin. In order to support a single "free" pinmux_op, the driver would need to maintain a per-pin state of requested-for-gpio vs. requested-for- function. However, that's a lot of work when the core already has explicit separate paths for gpio request/free and function request/free. So, add a gpio_disable_free op to struct pinmux_ops, and make pin_free() call it when appropriate. When doing this, I noticed that when calling pin_request(): !!gpio == (gpio_range != NULL) ... and so I collapsed those two parameters in both pin_request(), and when adding writing the new code in pin_free(). Also, for pin_free(): !!free_func == (gpio_range != NULL) However, I didn't want pin_free() to know about the GPIO function naming special case, so instead, I reworked pin_free() to always return the pin's previously requested function, and now pinmux_free_gpio() calls kfree(function). This is much more balanced with the allocation having been performed in pinmux_request_gpio(). Signed-off-by: Stephen Warren Signed-off-by: Linus Walleij commit d2f6a1c6fb0e510a24ccac066eefbcfd0c932858 Author: Marek Belisko Date: Wed Oct 26 22:57:20 2011 +0200 pinctrl: remove double pin validity check. Function pin_is_valid just call pin_desc_get which is in pin_request call some line below. Remove pin_is_valid() check. Acked-by: Stephen Warren Signed-off-by: Marek Belisko Signed-off-by: Linus Walleij commit 7afde8baa83b9ac409a6db86f27a41878aa6b33f Author: Linus Walleij Date: Wed Oct 19 17:07:16 2011 +0200 pinctrl: move group lookup to core Now also the core needs to look up pin groups so move the lookup function there and expose it in the internal header. Acked-by: Stephen Warren Signed-off-by: Linus Walleij commit b84e673f51799a2d0bad7a7c1e7a74021c4eba4b Author: Rajendra Nayak Date: Tue Nov 15 12:10:26 2011 +0530 pinctrl: iterate over u300_pmx_mask's in u300_pmx_endisable Fix u300_pmx_endisable() to iterate over the list of 'bits' and 'mask' populated as part of u300_pmx_functions.mask[] Signed-off-by: Rajendra Nayak Signed-off-by: Linus Walleij commit 07f29ba67b7f016e8c968c8892f277bb50221ad4 Author: Stephen Warren Date: Thu Dec 8 15:16:19 2011 -0700 MAINTAINERS: Fix pinctrl subsystem's directory Signed-off-by: Stephen Warren Signed-off-by: Linus Walleij commit 9561f4e052a06167694e110d76ce3a5e38b59522 Author: Nicolas Pitre Date: Mon Jan 2 23:00:32 2012 -0500 Revert "ARM: move VMALLOC_END down temporarily for shmobile" This reverts commit 0af362f8440a78b970d5f215e234420fa87d0f3f as shmobile is not using a non-standard memory layout anymore. Signed-off-by: Nicolas Pitre commit 5917bfa4c0c529d7a93323671f2edec7e3d81c07 Author: Magnus Damm Date: Mon Jan 2 22:57:03 2012 -0500 ARM: mach-shmobile: use standard 2MiB coherent DMA memory size The 158MiB memory area was used to support HD resolution multimedia workloads using the same legacy memory allocating solution as on SH. There are no in-tree kernel dependencies on the 158MiB setting, and future development should reserve and allocate memory using some other method like for instance CMA. Signed-off-by: Magnus Damm Signed-off-by: Nicolas Pitre commit c87fb57346fc7653ace98769f148e0dcd88ac1ee Author: Jamie Iles Date: Wed Dec 14 23:43:16 2011 +0100 ARM: 7235/1: irqdomain: export irq_domain_simple_ops for !CONFIG_OF irqdomain support is used in interrupt controller drivers that may not have device tree support but only need the basic HW->Linux irq translation. Rather than having each of these implement their own IRQ domain, allow them to use the simple ops. Acked-by: Thomas Gleixner Acked-by: Rob Herring Cc: Grant Likely Signed-off-by: Jamie Iles Signed-off-by: Russell King commit df0bcfe0f811a73077c06f75e440397e89ba58a4 Merge: 215e83d a2075a7 Author: Russell King Date: Mon Dec 19 21:54:35 2011 +0000 Merge branch 'arm/common-kconfig-refactor+for-rmk' of git://git.linaro.org/people/dmart/linux-2.6-arm into devel-stable commit a2075a7aff5f469b91029c14f216dc169d1bd5f3 Author: Dave Martin Date: Mon Dec 12 16:17:34 2011 +0000 imx6q: Remove unconditional dependency on l2x0 L2 cache support The i.MX6 Quad SoC will work without the l2x0 L2 cache controller support built into the kernel, so this patch removes the dependency on CACHE_L2X0. This makes the l2x0 support optional, so that it can be turned off when desired for debugging purposes etc. Since SOC_IMX6Q already depends on ARCH_IMX_V6_V7 and ARCH_IMX_V6_V7 selects MIGHT_HAVE_CACHE_L2X0, there is no need to select that option explicitly from SOC_IMX6Q. Thanks to Shawn Guo for this suggestion. [1] [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2011-November/074602.html Acked-by: Shawn Guo Tested-by: Shawn Guo Acked-by: Sascha Hauer commit 22d80379e9b6b167e145c12099705bc8e9946d84 Author: Dave Martin Date: Mon Dec 12 16:17:34 2011 +0000 highbank: Unconditionally require l2x0 L2 cache controller support If running in the Normal World on a TrustZone-enabled SoC, Linux does not have complete control over the L2 cache controller configuration. The kernel cannot work reliably on such platforms without the l2x0 cache support code built in. This patch unconditionally enables l2x0 support for the Highbank SoC. Thanks to Rob Herring for this suggestion. [1] [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2011-November/074495.html Signed-off-by: Dave Martin Acked-by: Rob Herring commit c957445bf960047cf1e9d3aa764beb18f3fbb734 Author: Dave Martin Date: Mon Dec 12 16:17:34 2011 +0000 omap4: Unconditionally require l2x0 L2 cache controller support If running in the Normal World on a TrustZone-enabled SoC, Linux does not have complete control over the L2 cache controller configuration. The kernel cannot work reliably on such platforms without the l2x0 cache support code built in. This patch unconditionally enables l2x0 support for the OMAP4 SoCs. Thanks to Rob Herring for this suggestion. [1] [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2011-November/074495.html Signed-off-by: Dave Martin Acked-by: Tony Lindgren commit 3b55658aefbf82646a246f3c8a14b9b8a24198a9 Author: Dave Martin Date: Wed Dec 7 15:38:04 2011 +0000 ARM: SMP: Refactor Kconfig to be more maintainable Making SMP depend on (huge list of MACH_ and ARCH_ configs) is bothersome to maintain and likely to lead to merge conflicts. This patch moves the knowledge of which platforms are SMP-capable to the individual machines. To enable this, a new HAVE_SMP config option is introduced to allow machines to indicate that they can run in a SMP configuration. Signed-off-by: Dave Martin Acked-by: Linus Walleij (for nomadik, ux500) Acked-by: Tony Lindgren (for omap) Acked-by: Kukjin Kim (for exynos) Acked-by: Sascha Hauer (for imx) Acked-by: Olof Johansson (for tegra) commit ce5ea9f3767e8589521319cae2eb6e05c52bd056 Author: Dave Martin Date: Tue Nov 29 15:56:19 2011 +0000 ARM: l2x0/pl310: Refactor Kconfig to be more maintainable Making CACHE_L2X0 depend on (huge list of MACH_ and ARCH_ configs) is bothersome to maintain and likely to lead to merge conflicts. This patch moves the knowledge of which platforms have a L2x0 or PL310 cache controller to the individual machines. To enable this, a new MIGHT_HAVE_CACHE_L2X0 config option is introduced to allow machines to indicate that they may have such a cache controller independently of each other. Boards/SoCs which cannot reliably operate without the L2 cache controller support will need to select CACHE_L2X0 directly from their own Kconfigs instead. This applies to some TrustZone-enabled boards where Linux runs in the Normal World, for example. Signed-off-by: Dave Martin Acked-by: Anton Vorontsov (for cns3xxx) Acked-by: Tony Lindgren (for omap) Acked-by: Shawn Guo (for imx) Acked-by: Kukjin Kim (for exynos) Acked-by: Sascha Hauer (for imx) Acked-by: Olof Johansson (for tegra) commit 215e83d971a04f04d191c7f702943412a19408fd Author: Linus Walleij Date: Wed Dec 14 18:15:42 2011 +0100 ARM: 7233/1: ux500: remove overlapping iotable entries The overlapping iotable mapping entries for the ux500 Cortex A9 SCU, CPU control and TWD are no longer accepted by the kernel. Remove the overlaps so the machine boots again. Cc: Srinidhi Kasagar Cc: Rabin Vincent Reported-by: Daniel Lezcano Acked-by: Nicolas Pitre Signed-off-by: Linus Walleij Signed-off-by: Russell King commit 2f0778afac79bd8d226225556858a636931eeabc Author: Marc Zyngier Date: Thu Dec 15 12:19:23 2011 +0100 ARM: 7205/2: sched_clock: allow sched_clock to be selected at runtime sched_clock() is yet another blocker on the road to the single image. This patch implements an idea by Russell King: http://www.spinics.net/lists/linux-omap/msg49561.html Instead of asking the platform to implement both sched_clock() itself and the rollover callback, simply register a read() function, and let the ARM code care about sched_clock() itself, the conversion to ns and the rollover. sched_clock() uses this read() function as an indirection to the platform code. If the platform doesn't provide a read(), the code falls back to the jiffy counter (just like the default sched_clock). This allow some simplifications and possibly some footprint gain when multiple platforms are compiled in. Among the drawbacks, the removal of the *_fixed_sched_clock optimization which could negatively impact some platforms (sa1100, tegra, versatile and omap). Tested on 11MPCore, OMAP4 and Tegra. Cc: Imre Kaloz Cc: Eric Miao Cc: Colin Cross Cc: Erik Gilling Cc: Olof Johansson Cc: Sascha Hauer Cc: Alessandro Rubini Cc: STEricsson Cc: Lennert Buytenhek Cc: Ben Dooks Tested-by: Jamie Iles Tested-by: Tony Lindgren Tested-by: Kyungmin Park Acked-by: Linus Walleij Acked-by: Nicolas Pitre Acked-by: Krzysztof Halasa Acked-by: Kukjin Kim Signed-off-by: Marc Zyngier Signed-off-by: Russell King commit 3bdc3484e8f2b1b219ad0397d81ce4601fbaf76d Author: Will Deacon Date: Mon Jun 6 12:35:46 2011 +0100 ARM: kexec: use soft_restart for branching to the reboot buffer Now that there is a common way to reset the machine, let's use it instead of reinventing the wheel in the kexec backend. Signed-off-by: Will Deacon commit 02b73e2e9c288cbbb6ec96bef628cf08e29824c4 Author: Will Deacon Date: Mon Jun 6 15:49:23 2011 +0100 ARM: stop: execute platform callback from cpu_stop code Sending IPI_CPU_STOP to a CPU causes it to execute a busy cpu_relax loop forever. This makes it impossible to kexec successfully on an SMP system since the secondary CPUs do not reset. This patch adds a callback to platform_cpu_kill, defined when CONFIG_HOTPLUG_CPU=y, from the ipi_cpu_stop handling code. This function currently just returns 1 on all platforms that define it but allows them to do something more sophisticated in the future. Signed-off-by: Will Deacon commit 290130a17718c1451bb8a77a5e2510e0279bd5f3 Author: Will Deacon Date: Mon Jun 6 12:28:54 2011 +0100 ARM: reset: implement soft_restart for jumping to a physical address Tools such as kexec and CPU hotplug require a way to reset the processor and branch to some code in physical space. This requires various bits of jiggery pokery with the caches and MMU which, when it goes wrong, tends to lock up the system. This patch fleshes out the soft_restart implementation so that it branches to the reset code using the identity mapping. This requires us to change to a temporary stack, held within the kernel image as a static array, to avoid conflicting with the new view of memory. Signed-off-by: Will Deacon commit 2d81f1fe81b753a5744fd2deceafab3e62ba02d5 Author: Will Deacon Date: Wed Jun 8 15:29:00 2011 +0100 ARM: lib: add call_with_stack function for safely changing stack When disabling the MMU, it is necessary to take out a 1:1 identity map of the reset code so that it can safely be executed with and without the MMU active. To avoid the situation where the physical address of the reset code aliases with the virtual address of the active stack (which cannot be included in the 1:1 mapping), it is desirable to change to a new stack at a location which is less likely to alias. This code adds a new lib function, call_with_stack: void call_with_stack(void (*fn)(void *), void *arg, void *sp); which changes the stack to point at the sp parameter, before invoking fn(arg) with the new stack selected. Reviewed-by: Nicolas Pitre Reviewed-by: Catalin Marinas Signed-off-by: Dave Martin Signed-off-by: Will Deacon commit ad622671a4da0b6db1c1382e6345e1361c5fbab8 Author: Jamie Iles Date: Thu Dec 1 11:16:46 2011 +0100 ARM: 7183/1: vic: register the VIC for ST-modified VIC's When probing the VIC, the ST variant has a different probing method to account for the extra interrupts which meant we didn't previously call vic_register() which registered the irq_domain. Acked-by: Linus Walleij Cc: Marc Zyngier Signed-off-by: Jamie Iles Signed-off-by: Russell King commit 6ae25a5b9d7ba86d6ac19c403dfa57dae6caa73d Merge: 3ee0fc5 497b7e9 Author: Russell King Date: Thu Dec 8 18:02:04 2011 +0000 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux into devel-stable Conflicts: arch/arm/mm/ioremap.c commit cc96ffbb744bff2826aa9e62b14bb599b1f15fc3 Author: Uwe Kleine-König Date: Thu Dec 8 15:52:15 2011 +0100 pinctrl: remove two unused global variables Signed-off-by: Uwe Kleine-König Signed-off-by: Linus Walleij commit 3838d3275923d0e0df706d2d32e633839166ccea Author: Uwe Kleine-König Date: Thu Dec 8 15:42:45 2011 +0100 pinctrl: make the "Debug PINCTRL calls" entry actually do something DEBUG_PINCTRL wasn't used at all and DEBUG_PINMUX doesn't exist. Signed-off-by: Uwe Kleine-König Signed-off-by: Linus Walleij commit 497b7e943d0dc5743454de56dcdb67352bbf96b2 Author: Catalin Marinas Date: Tue Nov 22 17:30:32 2011 +0000 ARM: LPAE: Add the Kconfig entries This patch adds the ARM_LPAE and ARCH_PHYS_ADDR_T_64BIT Kconfig entries allowing LPAE support to be compiled into the kernel. Signed-off-by: Catalin Marinas commit 77f73a2c8e869b035e71eea5cae07c30fe4bded0 Author: Will Deacon Date: Tue Nov 22 17:30:32 2011 +0000 ARM: LPAE: mark memory banks with start > ULONG_MAX as highmem Memory banks living outside of the 32-bit physical address space do not have a 1:1 pa <-> va mapping and therefore the __va macro may wrap. This patch ensures that such banks are marked as highmem so that the Kernel doesn't try to split them up when it sees that the wrapped virtual address overlaps the vmalloc space. Signed-off-by: Will Deacon Signed-off-by: Catalin Marinas Acked-by: Nicolas Pitre commit ae2de101739c5a2a43a23a74a0d43aea810fb5a8 Author: Catalin Marinas Date: Tue Nov 22 17:30:32 2011 +0000 ARM: LPAE: Add identity mapping support for the 3-level page table format With LPAE, the pgd is a separate page table with entries pointing to the pmd. The identity_mapping_add() function needs to ensure that the pgd is populated before populating the pmd level. The do..while blocks now loop over the pmd in order to have the same implementation for the two page table formats. The pmd_addr_end() definition has been removed and the generic one used instead. The pmd clean-up is done in the pgd_free() function. Signed-off-by: Catalin Marinas commit 14d8c9512aef5bf25c017d1b331de51c7928c5d4 Author: Catalin Marinas Date: Tue Nov 22 17:30:31 2011 +0000 ARM: LPAE: Add context switching support With LPAE, TTBRx registers are 64-bit. The ASID is stored in TTBR0 rather than a separate Context ID register. This patch makes the necessary changes to handle context switching on LPAE. Signed-off-by: Catalin Marinas commit f7b8156d150f7383b42622a9219b230b36435b4a Author: Catalin Marinas Date: Tue Nov 22 17:30:31 2011 +0000 ARM: LPAE: Add fault handling support The DFSR and IFSR register format is different when LPAE is enabled. In addition, DFSR and IFSR have similar definitions for the fault type. This modifies the fault code to correctly handle the new format. Signed-off-by: Catalin Marinas commit c9f27f1026f55b543df260ad8ab84a7bdab7792f Author: Catalin Marinas Date: Tue Nov 22 17:30:29 2011 +0000 ARM: LPAE: Invalidate the TLB before freeing the PMD Similar to the PTE freeing, this patch introduced __pmd_free_tlb() which invalidates the TLB before freeing a PMD page. This is needed because on newer processors the entry in the upper page table may be cached by the TLB and point to random data after the PMD has been freed. Signed-off-by: Catalin Marinas commit 1b6ba46b7efa31055eb993a6f2c6bbcb8b35b001 Author: Catalin Marinas Date: Tue Nov 22 17:30:29 2011 +0000 ARM: LPAE: MMU setup for the 3-level page table format This patch adds the MMU initialisation for the LPAE page table format. The swapper_pg_dir size with LPAE is 5 rather than 4 pages. A new proc-v7-3level.S file contains the TTB initialisation, context switch and PTE setting code with the LPAE. The TTBRx split is based on the PAGE_OFFSET with TTBR1 used for the kernel mappings. The 36-bit mappings (supersections) and a few other memory types in mmu.c are conditionally compiled. Signed-off-by: Catalin Marinas commit da02877987e6e173ebba137d4e1e155e1f1151cd Author: Catalin Marinas Date: Tue Nov 22 17:30:29 2011 +0000 ARM: LPAE: Page table maintenance for the 3-level format This patch modifies the pgd/pmd/pte manipulation functions to support the 3-level page table format. Since there is no need for an 'ext' argument to cpu_set_pte_ext(), this patch conditionally defines a different prototype for this function when CONFIG_ARM_LPAE. The patch also introduces the L_PGD_SWAPPER flag to mark pgd entries pointing to pmd tables pre-allocated in the swapper_pg_dir and avoid trying to free them at run-time. This flag is 0 with the classic page table format. Signed-off-by: Catalin Marinas commit dcfdae04bd92e8a2ea155db0e21e3bddc09e0a89 Author: Catalin Marinas Date: Tue Nov 22 17:30:29 2011 +0000 ARM: LPAE: Introduce the 3-level page table format definitions This patch introduces the pgtable-3level*.h files with definitions specific to the LPAE page table format (3 levels of page tables). Each table is 4KB and has 512 64-bit entries. An entry can point to a 40-bit physical address. The young, write and exec software bits share the corresponding hardware bits (negated). Other software bits use spare bits in the PTE. The patch also changes some variable types from unsigned long or int to pteval_t or pgprot_t. Signed-off-by: Catalin Marinas commit d675d0bc47f28c5414fbbe17fcc801f69c45b960 Author: Will Deacon Date: Tue Nov 22 17:30:28 2011 +0000 ARM: LPAE: add ISBs around MMU enabling code Before we enable the MMU, we must ensure that the TTBR registers contain sane values. After the MMU has been enabled, we jump to the *virtual* address of the following function, so we also need to ensure that the SCTLR write has taken effect. This patch adds ISB instructions around the SCTLR write to ensure the visibility of the above. Signed-off-by: Will Deacon Signed-off-by: Catalin Marinas commit 8d2cd3a38fd663bd341507f5ac29002ffd81d986 Author: Catalin Marinas Date: Tue Nov 22 17:30:28 2011 +0000 ARM: LPAE: Factor out classic-MMU specific code into proc-v7-2level.S This patch modifies the proc-v7.S file so that it only contains code shared between classic MMU and LPAE. The non-common code is factored out into a separate file. Signed-off-by: Catalin Marinas commit 136848d4ca9cf6f08edf6e50cb9bbe19de55c32a Author: Catalin Marinas Date: Tue Nov 22 17:30:28 2011 +0000 ARM: LPAE: Move the FSR definitions to separate files The FSR structure is different with LPAE and this patch moves the classic MMU specific definition to a separate fsr-2level.c file that is included in fault.c. It also moves the fsr_fs and FSR bits to the fault.h file. Signed-off-by: Catalin Marinas commit e0c0313bd720977a7ed01dc48f0762a3ddec607f Author: Catalin Marinas Date: Tue Nov 22 17:30:28 2011 +0000 ARM: LPAE: Move page table maintenance macros to pgtable-2level.h The page table maintenance macros need to be duplicated between the classic and the LPAE MMU so this patch moves those that are not common to the pgtable-2level.h file. Signed-off-by: Catalin Marinas commit a32618d28dbe6e9bf8ec508ccbc3561a7d7d32f0 Author: Russell King Date: Tue Nov 22 17:30:28 2011 +0000 ARM: pgtable: switch to use pgtable-nopud.h Nick Piggin noted upon introducing 4level-fixup.h: | Add a temporary "fallback" header so architectures can run with | the 4level pagetables patch without modification. All architectures | should be converted to use the folding headers (include/asm-generic/ | pgtable-nop?d.h) as soon as possible, and the fallback header removed. This makes ARM compliant with this statement. Signed-off-by: Russell King Signed-off-by: Catalin Marinas commit 03a6b8274cc61fb9bb77aaa102e63840461c5f3a Author: Catalin Marinas Date: Tue Nov 22 17:30:27 2011 +0000 ARM: pgtable: Fix compiler warning in ioremap.c introduced by nopud With the arch/arm code conversion to pgtable-nopud.h, the section and supersection (un|re)map code triggers compiler warnings on UP systems. This is caused by pmd_offset() being given a pgd_t argument rather than a pud_t one. This patch makes the necessary conversion with the assumption that the pud is folded into the pgd. The page table setting code only loops over the pmd which is enough with the classic page tables. This code is not compiled when LPAE is enabled. Signed-off-by: Catalin Marinas commit 3ee0fc5ca129cbae81c073756febcb1c552af446 Merge: deee6d5 4e8ee7d Author: Russell King Date: Tue Dec 6 20:27:54 2011 +0000 Merge branch 'kexec/idmap' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into devel-stable commit deee6d5359969a0ce4e2760cfd7b9f379bd5698a Author: Tony Lindgren Date: Tue Dec 6 17:50:42 2011 +0100 ARM: 7194/1: OMAP: Fix build after a merge between v3.2-rc4 and ARM restart changes ARM restart changes needed changes to common.h to make it local. This conflicted with v3.2-rc4 DSS related hwmod changes that git mergetool was not able to handle. Signed-off-by: Tony Lindgren Signed-off-by: Russell King commit 4e8ee7de227e3ab9a72040b448ad728c5428a042 Author: Will Deacon Date: Wed Nov 23 12:26:25 2011 +0000 ARM: SMP: use idmap_pgd for mapping MMU enable during secondary booting The ARM SMP booting code allocates a temporary set of page tables containing an identity mapping of the kernel image and provides this to secondary CPUs for initial booting. In reality, we only need to include the __turn_mmu_on function in the identity mapping since the rest of the kernel is executing from virtual addresses after this point. This patch adds __turn_mmu_on to the .idmap.text section, allowing the SMP booting code to use the idmap_pgd directly and not have to populate its own set of page table. As a result of this patch, we can make the identity_mapping_add function static (since it is only used within mm/idmap.c) and also remove the identity_mapping_del function. The identity map population is moved to an early initcall so that it is setup in time for secondary CPU bringup. Reviewed-by: Catalin Marinas Signed-off-by: Will Deacon commit 72662e01088394577be4a3f14da94cf87bea2591 Author: Will Deacon Date: Wed Nov 23 12:03:27 2011 +0000 ARM: head.S: only include __turn_mmu_on in the initial identity mapping __create_page_tables identity maps the region of memory from __enable_mmu to the end of __turn_mmu_on. In preparation for including __turn_mmu_on in the .idmap.text section, this patch modifies the identity mapping so that it only includes the __turn_mmu_on code. Reviewed-by: Catalin Marinas Signed-off-by: Will Deacon commit 2c8951ab0c337cb198236df07ad55f9dd4892c26 Author: Will Deacon Date: Wed Jun 8 15:53:34 2011 +0100 ARM: idmap: use idmap_pgd when setting up mm for reboot For soft-rebooting a system, it is necessary to map the MMU-off code with an identity mapping so that execution can continue safely once the MMU has been switched off. Currently, switch_mm_for_reboot takes out a 1:1 mapping from 0x0 to TASK_SIZE during reboot in the hope that the reset code lives at a physical address corresponding to a userspace virtual address. This patch modifies the code so that we switch to the idmap_pgd tables, which contain a 1:1 mapping of the cpu_reset code. This has the advantage of only remapping the code that we need and also means we don't need to worry about allocating a pgd from an atomic context in the case that the physical address of the cpu_reset code aliases with the virtual space used by the kernel. Acked-by: Dave Martin Reviewed-by: Catalin Marinas Signed-off-by: Will Deacon commit 1a4baafa7d203da1cceb302c2df38f0fea1c17a1 Author: Will Deacon Date: Tue Nov 15 13:25:04 2011 +0000 ARM: proc-*.S: place cpu_reset functions into .idmap.text section The CPU reset functions disable the MMU and therefore must be executed with an identity mapping in place. This patch places the CPU reset functions into the .idmap.text section, causing the idmap code to include them as part of the identity mapping. Acked-by: Dave Martin Signed-off-by: Will Deacon commit e6eadc67873d5f363c864cd7723104e7d47dcb44 Author: Will Deacon Date: Tue Nov 15 11:11:19 2011 +0000 ARM: suspend: use idmap_pgd instead of suspend_pgd The ARM CPU suspend code requires cpu_resume_mmu to be identity mapped in order to re-enable the MMU when coming out of suspend. Currently, this is accomplished by maintaining a suspend_pgd with the relevant mapping put in place at init time. This patch replaces the use of suspend_pgd with the new idmap_pgd. cpu_resume_mmu is placed in the .idmap.text section so that it is included in the identity map. Reviewed-by: Catalin Marinas Acked-by: Dave Martin Tested-by: Lorenzo Pieralisi Signed-off-by: Will Deacon commit 8903826d0cd99aed9267e792d38284cf3092042b Author: Will Deacon Date: Fri Sep 30 11:43:29 2011 +0100 ARM: idmap: populate identity map pgd at init time using .init.text When disabling and re-enabling the MMU, it is necessary to take out an identity mapping for the code that manipulates the SCTLR in order to avoid it disappearing from under our feet. This is useful when soft rebooting and returning from CPU suspend. This patch allocates a set of page tables during boot and populates them with an identity mapping for the .idmap.text section. This means that users of the identity map do not need to manage their own pgd and can instead annotate their functions with __idmap or, in the case of assembly code, place them in the correct section. Acked-by: Dave Martin Reviewed-by: Catalin Marinas Tested-by: Lorenzo Pieralisi Signed-off-by: Will Deacon commit 16edc3df8a1b40fd381d3500f23527d7ad6e5e1b Author: Tony Lindgren Date: Tue Dec 6 05:45:37 2011 +0100 ARM: 7192/1: OMAP: Fix build error for omap1_defconfig Otherwise we get the following error: In function 'omap_init_consistent_dma_size': error: implicit declaration of function 'init_consistent_dma_size' Signed-off-by: Tony Lindgren Acked-by: Nicolas Pitre Signed-off-by: Russell King commit 73829af71fdb8655e7ba4b5a2a6612ad34a75a11 Merge: 742eaa6 0af362f Author: Russell King Date: Mon Dec 5 23:27:54 2011 +0000 Merge branch 'vmalloc' of git://git.linaro.org/people/nico/linux into devel-stable commit 742eaa6a6e356a16788ce6530271de89bc4f8fb5 Merge: ba8bb18 ae72fd5 Author: Russell King Date: Mon Dec 5 23:20:17 2011 +0000 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into devel-stable Conflicts: arch/arm/common/gic.c arch/arm/plat-omap/include/plat/common.h commit ba8bb18a03f8c7508565c385576a5431a4ad804a Author: Santosh Shilimkar Date: Mon Dec 5 09:46:24 2011 +0100 ARM: 7189/1: OMAP3: Fix build break in cpuidle34xx.c because of irq function Fix the below build break by including common.h arch/arm/mach-omap2/cpuidle34xx.c: In function 'omap3_enter_idle': arch/arm/mach-omap2/cpuidle34xx.c:117: error: implicit declaration of function 'omap_irq_pending' make[1]: *** [arch/arm/mach-omap2/cpuidle34xx.o] Error 1 make: *** [arch/arm/mach-omap2] Error 2 Signed-off-by: Santosh Shilimkar Signed-off-by: Russell King commit f88f4dd868e59c0cf1d61d3465966d33e3309b07 Author: Santosh Shilimkar Date: Mon Dec 5 09:44:58 2011 +0100 ARM: 7188/1: OMAP2PLUS: Fix build error: 'omap2/omap3_intc_handle_irq' undeclared. Fix the build break by adding the necessary irq functions to common header. Signed-off-by: Santosh Shilimkar Signed-off-by: Russell King commit 53fadbdd83039bb1181e4ff76123d612cdf26c37 Merge: 2d13cca e1d95ea Author: Russell King Date: Sat Dec 3 09:11:54 2011 +0000 Merge branch 'irqchip-consolidation' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into devel-stable commit ae72fd588a2b302222769b44775912b83f0785eb Merge: 0445e7a feb45d0 e0516a6 Author: Will Deacon Date: Fri Dec 2 15:22:18 2011 +0000 Merge branches 'perf/event-nos', 'perf/updates' and 'perf/omap4' into for-rmk commit e0516a64e7ea9d9522d98f9f5f47aa38f147779f Author: Ming Lei Date: Wed Mar 2 15:00:08 2011 +0800 arm: pmu: allow platform specific irq enable/disable handling This patch introduces .enable_irq and .disable_irq into struct arm_pmu_platdata, so platform specific irq enablement can be handled after request_irq, and platform specific irq disablement can be handled before free_irq. This patch is for support of pmu irq routed from CTI on omap4. Acked-by: Jean Pihet Reviewed-by: Will Deacon Signed-off-by: Ming Lei Signed-off-by: Will Deacon commit 14eec97ff4635977b026a53b27915ab0dec51e94 Author: Ming Lei Date: Mon Oct 24 15:45:53 2011 +0100 arm: introduce cross trigger interface helpers OMAP4 uses cross trigger interface(CTI) to route performance monitor irq to GIC, so introduce cti helpers to make access for cti easily. Acked-by: Jean Pihet Signed-off-by: Ming Lei Signed-off-by: Will Deacon commit feb45d06ffd7b59f43f1ed8edf53a0cfe3e7ad2a Author: Will Deacon Date: Mon Nov 14 10:33:05 2011 +0000 ARM: perf: remove unused armpmu_get_max_events armpmu_get_max_events is only called from perf_num_counters, so we can inline it there. It existed as a separate entity as a hangover from the original perf-based oprofile implementation. Signed-off-by: Will Deacon commit 0445e7a58e794d82c3a76975b1eefd920addbf39 Author: Will Deacon Date: Thu Sep 29 18:23:39 2011 +0100 ARM: perf: add support for stalled cycle ABI events Commit 8f622422 ("perf events: Add generic front-end and back-end stalled cycle event definitions") added two new ABI events for counting stalled cycles. This patch adds support for these new events to the ARM perf implementation. Cc: Jamie Iles Cc: Jean Pihet Signed-off-by: Will Deacon commit 4d301512ab368f83f774f414213a5e6cf3641632 Author: Will Deacon Date: Thu Sep 29 15:29:02 2011 +0100 ARM: perf: clean and update ARMv7 event numbers This patch updates the ARMv7 perf event numbers so that: (1) A consistent naming scheme is used between different CPUs. (2) Only events actually used by Linux are described. (3) Where possible, architected events are used in preference to CPU-specific events. This results in the removal of a load of unused, hardcoded data and makes it more clear as to which events are supported on each PMU. Cc: Jean Pihet Signed-off-by: Will Deacon commit e1d95eaf005b7edd3e63ba9312994c3f834a78ac Author: Axel Lin Date: Thu Dec 1 23:25:45 2011 +0800 ARM: exynos4: Fix build error Trivial fix to fix below build error: CC arch/arm/mach-exynos/mach-universal_c210.o arch/arm/mach-exynos/mach-universal_c210.c:24: error: expected identifier or '(' before '<' token Signed-off-by: Axel Lin Signed-off-by: Marc Zyngier commit 69676c37290317910543ad0bd14e70544fb3dbf2 Author: Axel Lin Date: Thu Dec 1 23:24:30 2011 +0800 ARM: exynos4: Fix build error due to 'gic_bank_offset' undeclared Fix below build error: CC arch/arm/mach-exynos/cpu.o arch/arm/mach-exynos/cpu.c: In function 'exynos4_init_irq': arch/arm/mach-exynos/cpu.c:245: error: 'gic_bank_offset' undeclared (first use in this function) arch/arm/mach-exynos/cpu.c:245: error: (Each undeclared identifier is reported only once arch/arm/mach-exynos/cpu.c:245: error: for each function it appears in.) arch/arm/mach-exynos/cpu.c:243: warning: unused variable 'bank_offset' make[1]: *** [arch/arm/mach-exynos/cpu.o] Error 1 make: *** [arch/arm/mach-exynos] Error 2 Signed-off-by: Axel Lin Signed-off-by: Marc Zyngier commit f59d28dc00ae3f1a76b442dcd0a52d8708c577cc Author: Barry Song Date: Fri Dec 2 10:32:15 2011 +0800 pinctrl/sirf: fix pin number typo for SPI1 Signed-off-by: Barry Song Signed-off-by: Linus Walleij commit 0af362f8440a78b970d5f215e234420fa87d0f3f Author: Nicolas Pitre Date: Mon Sep 19 00:28:45 2011 -0400 ARM: move VMALLOC_END down temporarily for shmobile THIS IS A TEMPORARY HACK. The purpose of this is _only_ to avoid a regression on an existing machine while a better fix is implemented. On shmobile the consistent DMA memory area was set to 158MB in commit 28f0721a79 with no explanation. The documented size for this area should vary between 2MB and 14MB, and none of the other ARM targets exceed that. The included #warning is therefore meant to be noisy on purpose to get shmobile maintainers attention and this commit reverted once this consistent DMA size conflict is resolved. Signed-off-by: Nicolas Pitre Cc: Magnus Damm Cc: Paul Mundt commit d0e6b2236a26711939bfcdd97370fedcd526a191 Author: Nicolas Pitre Date: Thu Sep 15 16:30:54 2011 -0400 ARM: big removal of now unused vmalloc.h files Signed-off-by: Nicolas Pitre commit 576d2f2525612ecb5af029a76f21f22a3b82563d Author: Nicolas Pitre Date: Fri Sep 16 01:14:23 2011 -0400 ARM: add generic ioremap optimization by reusing static mappings Now that we have all the static mappings from iotable_init() located in the vmalloc area, it is trivial to optimize ioremap by reusing those static mappings when the requested physical area fits in one of them, and so in a generic way for all platforms. Signed-off-by: Nicolas Pitre Tested-by: Stephen Warren Tested-by: Kevin Hilman Tested-by: Jamie Iles commit 6ee723a6570a897208b76ab3e9a495e9106b2f8c Author: Nicolas Pitre Date: Thu Sep 15 22:12:19 2011 -0400 ARM: simplify __iounmap() when dealing with section based mapping Firstly, there is no need to have a double pointer here as we're only walking the vmlist and not modifying it. Secondly, for the same reason, we don't need a write lock but only a read lock here, since the lock only protects the coherency of the list nothing else. Lastly, the reason for holding a lock is not what the comment says, so let's remove that misleading piece of information. Signed-off-by: Nicolas Pitre commit 0536bdf33faff4d940ac094c77998cfac368cfff Author: Nicolas Pitre Date: Thu Aug 25 00:35:59 2011 -0400 ARM: move iotable mappings within the vmalloc region In order to remove the build time variation between different SOCs with regards to VMALLOC_END, the iotable mappings are now allocated inside the vmalloc region. This allows for VMALLOC_END to be identical across all machines. The value for VMALLOC_END is now set to 0xff000000 which is right where the consistent DMA area starts. To accommodate all static mappings on machines with possible highmem usage, the default vmalloc area size is changed to 240 MB so that VMALLOC_START is no higher than 0xf0000000 by default. Signed-off-by: Nicolas Pitre Tested-by: Stephen Warren Tested-by: Kevin Hilman Tested-by: Jamie Iles commit 2d13ccaa8797d7e599f3792aed4b1e44b47f94a5 Merge: 59136ef 11f1c5d Author: Russell King Date: Mon Nov 21 21:56:56 2011 +0000 Merge branch 'irqchip-consolidation' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into devel-stable Conflicts: arch/arm/mach-omap2/board-4430sdp.c arch/arm/mach-omap2/board-omap4panda.c arch/arm/mach-omap2/include/mach/omap4-common.h arch/arm/plat-omap/include/plat/irqs.h The changes to omap4-common.h were moved to arch/arm/mach-omap2/common.h and the other trivial conflicts resolved. The now empty ifdef in irqs.h was also eliminated. commit 59136ef3c596606d3eef920dc3e0fdfa2ce52c6f Merge: e879c86 3f1517a Author: Russell King Date: Mon Nov 21 09:49:47 2011 +0000 Merge branch 'restart-cleanup' into restart commit 3f1517a761905c55d1db71cb0afd359d74a76a6c Author: Russell King Date: Wed Nov 2 14:38:07 2011 +0000 ARM: restart: remove poodle restart handler The poodle restart handler was added in 74617fb6b8 (3593/1: Add reboot and shutdown handlers for Zaurus handhelds), and at that time it was necessary to deal with the RCSR register. This commit also forced all restarts to use the 'hard' restart method. In dc38e2ad53 (pxa: Fix RCSR handling), the RCSR handling was removed, leaving just the forcing to use a 'hard' restart. As hard restarts are the default (in the absense of a reboot= command line argument), this seems pointless. In any case, Richard Purdie says: > From what I remember that hardware either always reboots or always > halts. I think the option was therefore left hardcoded to make it clear > it wasn't expected to work. Later Zaurii models could do either but > required some manual poking of registers to make it happen iirc. > > Regardless, you can probably clean this up as you suggest now. So, lets remove the unnecessary interception and rely on the default restart mode. Acked-by: Richard Purdie Signed-off-by: Russell King commit e5bc9e257a4ef3dabc6b5573215983d663ffcd55 Author: Russell King Date: Mon Nov 7 18:02:39 2011 +0000 ARM: w90x900: add common nuc9xx.h Rather than having separate extern declarations in nuc9*.h, provide a common header file containing these definitions. Tested-by: Wan Zongshun Signed-off-by: Russell King commit e879c862fb81b986095ae7a4676b2281c2f97957 Author: Russell King Date: Tue Nov 1 13:16:26 2011 +0000 ARM: restart: only perform setup for restart when soft-restarting We only need to set the system up for a soft-restart if we're going to be doing a soft-restart. Provide a new function (soft_restart()) which does the setup and final call for this, and make platforms use it. Eliminate the call to setup_restart() from the default handler. This means that platforms arch_reset() function is no longer called with the page tables prepared for a soft-restart, and caches will still be enabled. Acked-by: Nicolas Pitre Acked-by: Will Deacon Acked-by: H Hartley Sweeten Acked-by: Kukjin Kim Acked-by: Sascha Hauer Acked-by: Viresh Kumar Acked-by: Krzysztof Ha■asa Acked-by: Paul Mundt Acked-by: Richard Purdie Acked-by: Wan ZongShun Acked-by: Eric Miao Signed-off-by: Russell King commit be9b7335e70696bee731c152429b1737e42fe163 Author: Nicolas Pitre Date: Thu Aug 25 00:24:21 2011 -0400 mm: add vm_area_add_early() The existing vm_area_register_early() allows for early vmalloc space allocation. However upcoming cleanups in the ARM architecture require that some fixed locations in the vmalloc area be reserved also very early. The name "vm_area_register_early" would have been a good name for the reservation part without the allocation. Since it is already in use with different semantics, let's create vm_area_add_early() instead. Both vm_area_register_early() and vm_area_add_early() can be used together meaning that the former is now implemented using the later where it is ensured that no conflicting areas are added, but no attempt is made to make the allocation scheme in vm_area_register_early() more sophisticated. After all, you must know what you're doing when using those functions. Signed-off-by: Nicolas Pitre Acked-by: Andrew Morton Cc: linux-mm@kvack.org commit 55a8173cfe1c6b489f8f5705282c762aed2e265e Author: Nicolas Pitre Date: Sun Sep 18 22:40:00 2011 -0400 ARM: move initialization of the high_memory variable earlier Some upcoming changes must know the VMALLOC_START value, which is based on high_memory, before bootmem_init() is called. The best location to set it is in sanity_check_meminfo() where the needed computation is already done, and in the non MMU case it is trivial to do now that the meminfo array is already sorted at that point. Signed-off-by: Nicolas Pitre commit 27a3f0e91bed0f4dcf0a363e5f5938126d1ff4e5 Author: Nicolas Pitre Date: Thu Aug 25 19:10:29 2011 -0400 ARM: sort the meminfo array earlier The meminfo array has to be sorted before sanity_check_meminfo() in arch/arm/mm/mmu.c is called for it to work properly. This also allows for a simpler find_limits() in arch/arm/mm/init.c. The sort is moved to arch/arm/kernel/setup.c because that's where the meminfo array is populated. Eventually this should be improved upon to make the memory bank parser a bit more robust against problems such as overlapping memory ranges. Signed-off-by: Nicolas Pitre commit 3e28c800440d80ede7edb21dbde61f6522d6536b Author: Rob Herring Date: Thu Sep 29 19:46:18 2011 -0500 ARM: realview-eb11mp: fix map_desc alignment REALVIEW_EB11MP_GIC_CPU_BASE is not 4KB aligned which causes an overlapping mapping. Use REALVIEW_EB11MP_SCU_BASE instead which is aligned. Signed-off-by: Rob Herring Signed-off-by: Nicolas Pitre commit 9ceceb652a0f1e5f45cb6c8af09267e7db875d7b Author: Rob Herring Date: Thu Sep 29 16:22:02 2011 -0500 ARM: realview: fix map_desc alignment REALVIEW_PBX_TILE_GIC_CPU_BASE is not 4KB aligned which causes an overlapping mapping. Use REALVIEW_PBX_TILE_SCU_BASE instead which is aligned. Signed-off-by: Rob Herring Signed-off-by: Nicolas Pitre commit 38bd7493aa37d72bfa57dfd4e7e34ae6ade2697c Author: Rob Herring Date: Thu Sep 29 13:18:29 2011 -0500 ARM: versatile: remove overlapping map_desc entry The map_desc for VERSATILE_GPIO0_BASE overlaps with VERSATILE_SCTL_BASE. The overlapping entry can be removed. Signed-off-by: Rob Herring Signed-off-by: Nicolas Pitre commit a55eaacb18e61f40e2c2e468d22b192a1e0d2641 Author: Nicolas Pitre Date: Wed Sep 14 17:06:22 2011 -0400 ARM: plat-iop: remove arch specific special handling for ioremap A generic version should replace this later. Signed-off-by: Nicolas Pitre commit d88cc28799fd5ad2987e6b1ff2a3c4d5a039cbaf Author: Nicolas Pitre Date: Wed Sep 14 17:06:22 2011 -0400 ARM: mach-ixp23xx: remove arch specific special handling for ioremap A generic version should replace this later. Signed-off-by: Nicolas Pitre Reviewed-by: Deepak Saxena commit a8ceac5ef7a98a1c36030e1ebd3f32f105fde288 Author: Nicolas Pitre Date: Wed Sep 14 17:06:22 2011 -0400 ARM: mach-kirkwood: remove arch specific special handling for ioremap A generic version should replace this later. Signed-off-by: Nicolas Pitre commit 6949f8c08d232a4f4ed8f93eeff0815b2a6d39f4 Author: Nicolas Pitre Date: Wed Sep 14 17:06:22 2011 -0400 ARM: mach-orion5x: remove arch specific special handling for ioremap A generic version should replace this later. Signed-off-by: Nicolas Pitre commit bfcd2ea6a40b33270564d706396f1b514a988d3c Author: Nicolas Pitre Date: Thu Sep 15 16:23:45 2011 -0400 ARM: mach-bcmring: use proper constant to identify DMA memory area Using VMALLOC_END implies a presumption about the layout which is best avoided, even if in practice this would not change much. Signed-off-by: Nicolas Pitre commit 7146182c7f446903dea032fc992dca8d61c12750 Author: Nicolas Pitre Date: Wed Sep 14 17:06:22 2011 -0400 ARM: plat-omap: remove arch specific special handling for ioremap A generic version should replace this later. As io.c has become nearly empty, omap_init_consistent_dma_size() is moved into common.c so that io.c can be removed entirely. Signed-off-by: Nicolas Pitre Tested-by: Kevin Hilman commit 3a083227a45cbbf5d29e6fe7c093af9e09905d4d Author: Russell King Date: Sat Nov 5 17:38:32 2011 +0000 ARM: clps711x: consolidate irq/mm/time code into a single file The separate files for clps711x which contain maybe one or two data structures or functions is an inefficient use of files, and encourages further small files as other changes happen. Collapse down these into a single core.c file. Signed-off-by: Russell King commit 4e65331c6bb4a777bd61a4dac0daa9fc47777b63 Author: Tony Lindgren Date: Thu Nov 10 22:45:17 2011 +0100 ARM: 7159/1: OMAP: Introduce local common.h files As suggested by Russell King - ARM Linux , there's no need to keep local prototypes in non-local headers. Add mach-omap1/common.h and mach-omap2/common.h and move the local prototypes there from plat/common.h and mach/omap4-common.h. Signed-off-by: Tony Lindgren Signed-off-by: Russell King commit 6a6f1efaced2ca7f8cd581a220af428c6bfc909d Author: Russell King Date: Mon Oct 31 14:34:31 2011 +0000 ARM: restart: remove local_irq_disable() from within arch_reset() IRQs are already disabled by the time arch_reset() is called, so these calls to local_irq_disable() instead arch_reset() are redundant. Remove them. Acked-by: H Hartley Sweeten Acked-by: Nicolas Pitre Acked-by: Will Deacon Signed-off-by: Russell King commit 3c4c342fea35fa1976853d8ebc518a06c98259a3 Author: Nicolas Pitre Date: Wed Sep 14 17:06:22 2011 -0400 ARM: mach-tegra: remove arch specific special handling for ioremap A generic version should replace this later. Signed-off-by: Nicolas Pitre Tested-by: Stephen Warren commit 400eeee1bd48cec3b7c2c57c473568ccb53486cc Author: Nicolas Pitre Date: Wed Sep 14 17:06:22 2011 -0400 ARM: mach-davinci: remove arch specific special handling for ioremap A generic version should replace this later. Signed-off-by: Nicolas Pitre commit cf48c02e3bf0f996897f0c5ab300b16a69ad67f7 Author: Nicolas Pitre Date: Wed Sep 14 17:06:22 2011 -0400 ARM: mach-at91: remove arch specific special handling for ioremap A generic version should replace this later. Signed-off-by: Nicolas Pitre commit df9528add197bccf10df5e8b465fed54a70d73b4 Author: Nicolas Pitre Date: Thu Aug 25 00:33:59 2011 -0400 ARM: plat-mxc: remove inclusion of Signed-off-by: Nicolas Pitre commit 8da54a0b47a0c3f2cbb31e92472d5d3887b620b8 Author: Nicolas Pitre Date: Wed Sep 14 15:14:19 2011 -0400 ARM: mach-prima2: don't define SIRFSOC_VA in terms of VMALLOC_END ... since it is going to change. Signed-off-by: Nicolas Pitre Tested-by: Barry Song commit 1a4c1c966958ec602c5efd46eb2e53a9cb17f5e4 Author: Nicolas Pitre Date: Thu Aug 25 00:33:59 2011 -0400 ARM: mach-dove: remove inclusion of This include is unnecessary. Signed-off-by: Nicolas Pitre commit 11f1c5de7be06bbb51363002ebc4d00edc2677df Author: Jamie Iles Date: Thu Nov 3 17:32:39 2011 +0000 ARM: VIC: remove non MULTI_IRQ_HANDLER support Now that all platforms are converted to MULTI_IRQ_HANDLER, remove the legacy support. Tested-by: Thomas Abraham Signed-off-by: Jamie Iles commit c05012ce9a70100dd547042865df751498244ec3 Author: Jamie Iles Date: Thu Nov 3 17:29:03 2011 +0000 ARM: picoxcell: convert to MULTI_IRQ_HANDLER Now that there is a generic IRQ handler for multiple VIC devices use it for picoxcell to help building multi platform kernels. Signed-off-by: Jamie Iles commit bb3a4ebe63194a41b7d4420cbc26732e15aa8242 Author: Jamie Iles Date: Tue Sep 27 20:53:31 2011 +0100 ARM: samsung: convert to MULTI_IRQ_HANDLER Now that there is a generic IRQ handler for multiple VIC devices use it for samsung to help building multi platform kernels. Cc: Kukjin Kim Tested-by: Thomas Abraham Signed-off-by: Jamie Iles commit c8be7acd63ed65aa034fc036bb2c7867f30561bd Author: Jamie Iles Date: Tue Sep 27 20:46:10 2011 +0100 ARM: versatile: convert to MULTI_IRQ_HANDLER Now that there is a generic IRQ handler for multiple VIC devices use it for versatile to help building multi platform kernels. Cc: Russell King Tested-by: Marc Zyngier Signed-off-by: Jamie Iles commit b7378eafb3c478824146977022889c97f077bbd5 Author: Jamie Iles Date: Tue Sep 27 20:41:01 2011 +0100 ARM: u300: convert to MULTI_IRQ_HANDLER Now that there is a generic IRQ handler for multiple VIC devices use it for u300 to help building multi platform kernels. Acked-by: Linus Walleij Signed-off-by: Jamie Iles commit 66266f4ab8a049680cacf72ce792d967c12cd99a Author: Jamie Iles Date: Tue Sep 27 20:35:14 2011 +0100 ARM: spear: convert to MULTI_IRQ_HANDLER Now that there is a generic IRQ handler for multiple VIC devices use it for spear to help building multi platform kernels. Acked-by: Viresh Kumar Cc: Rajeev Kumar Signed-off-by: Jamie Iles commit 774b51f8f8269cb9a2cdbe2ac2c0a2ff62250b01 Author: Jamie Iles Date: Fri Nov 4 01:10:04 2011 +0000 ARM: s3c64xx: convert to MULTI_IRQ_HANDLER Now that there is a generic IRQ handler for multiple VIC devices use it for s3c64xx to help building multi platform kernels. Cc: Ben Dooks Tested-by: Thomas Abraham Signed-off-by: Jamie Iles commit 42ab5304547b1d40909eeb499b5f38b99410e597 Author: Jamie Iles Date: Tue Sep 27 20:25:51 2011 +0100 ARM: nomadik: convert to MULTI_IRQ_HANDLER Now that there is a generic IRQ handler for multiple VIC devices use it for nomadik to help building multi platform kernels. Cc: Alessandro Rubini Acked-by: Linus Walleij Cc: STEricsson Tested-by: Thomas Abraham Signed-off-by: Jamie Iles commit 14f127badadb3960f73c63dac91092a7425aa38e Author: Jamie Iles Date: Tue Sep 27 20:22:21 2011 +0100 ARM: netx: convert to MULTI_IRQ_HANDLER Now that there is a generic IRQ handler for multiple VIC devices use it for netx to help building multi platform kernels. Signed-off-by: Jamie Iles commit 9a6879bd902e2ec605fff4d9fb3247b440a1f66a Author: Jamie Iles Date: Tue Sep 27 20:07:05 2011 +0100 ARM: ep93xx: convert to MULTI_IRQ_HANDLER Now that there is a generic IRQ handler for multiple VIC devices use it for ep93xx to help building multi platform kernels. Cc: Hartley Sweeten Cc: Ryan Mallon Signed-off-by: Jamie Iles commit 1558368eb5d67a41d4199db32d3f5858660b44cf Author: Jamie Iles Date: Wed Sep 28 09:40:11 2011 +0100 ARM: vic: MULTI_IRQ_HANDLER handler Add a handler for the VIC that is suitable for MULTI_IRQ_HANDLER platforms. This can replace the ASM entry macros for platforms that use the VIC. v4: - rebase ontop of move __exception and friends to asm/exception.h - rework polling loop to handle as many irqs as possible in one go v3: - simplify irq handling loop as suggested by Grant - service interrupts from msb->lsb order v2: - allow the handler be used for !CONFIG_OF - use irq_domain_to_irq() Cc: Rob Herring Acked-by: Grant Likely Acked-by: Linus Walleij Tested-by: Thomas Abraham Signed-off-by: Jamie Iles commit f9b28ccbc7139af656147dcbba9c5425d5706b7d Author: Jamie Iles Date: Tue Sep 27 11:00:46 2011 +0100 ARM: vic: device tree binding This adds a device tree binding for the VIC based on the of_irq_init() support. This adds an irqdomain to the vic and always registers all vics in the static vic array rather than for pm only to keep track of the irq domain. struct irq_data::hwirq is used where appropriate rather than runtime masking. v3: - include linux/export.h for THIS_MODULE v2: - use irq_domain_simple_ops - remove stub implementation of vic_of_init for !CONFIG_OF - Make VIC select IRQ_DOMAIN Reviewed-by: Rob Herring Reviewed-by: Grant Likely Tested-by: Thomas Abraham Signed-off-by: Jamie Iles commit 08d33b27f7063ba2b4a29f9e3a2dcb65f30dec0b Author: Marc Zyngier Date: Tue Sep 6 13:27:10 2011 +0100 ARM: GIC: Make MULTI_IRQ_HANDLER mandatory Now that MULTI_IRQ_HANDLER is selected by all the in-tree GIC users, make it mandatory and remove the unused macros. Signed-off-by: Marc Zyngier commit ab65be268adaae59da5b1306b425a7859f955669 Author: Marc Zyngier Date: Tue Nov 15 17:22:45 2011 +0000 ARM: omap2plus: remove irq-related global base addresses After the MULTI_IRQ_HANDLER conversion, a couple of global variables can be removed. Signed-off-by: Marc Zyngier commit 6b2f55d7851aa358d3a99cff344c560c4967f042 Author: Marc Zyngier Date: Tue Sep 6 10:23:45 2011 +0100 ARM: omap2plus: convert to CONFIG_MULTI_IRQ_HANDLER Convert the omap2plus platforms to be using CONFIG_MULTI_IRQ_HANDLER. Each machine is modified to provide either omap2_intc_handle_irq(), omap3_intc_handle_irq() or gic_handle_irq(). This allows for a major cleanup, removing the MULTI_OMAP setup from the interrupt path. Tested on both Panda and IGEPv2 (single kernel image) Tested-by: Tony Lindgren Signed-off-by: Marc Zyngier commit 2db1499784da653f7e257d98fefdebc65fde7c40 Author: Marc Zyngier Date: Tue Sep 6 09:56:17 2011 +0100 ARM: omap2/3: Add global omap2/3_intc_handle_irq() functions Provide the OMAP2/3 IRQ code with low level handlers that can be used by platforms using CONFIG_MULTI_IRQ_HANDLER. Though the handlers are written in C, the compiled code looks very similar to its assembly counterpart (at least with my gcc 4.4.1). Tested-by: Tony Lindgren Signed-off-by: Marc Zyngier commit 368b8e252335725ea72d7bcbb3b1c8837b8dfeed Author: Marc Zyngier Date: Tue Sep 6 10:23:45 2011 +0100 ARM: zynq: convert to CONFIG_MULTI_IRQ_HANDLER Convert the zynq platform to be using the gic_handle_irq function as its primary interrupt handler. Acked-by: John Linn Signed-off-by: Marc Zyngier commit ead31ee5ed00d2b95922d868cd0d63da23e47213 Author: Marc Zyngier Date: Tue Sep 6 10:23:45 2011 +0100 ARM: cns3xxx: convert to CONFIG_MULTI_IRQ_HANDLER Convert the cns3xxx platform to be using the gic_handle_irq function as its primary interrupt handler. Acked-by: Anton Vorontsov Signed-off-by: Marc Zyngier commit a83d8e27d2f6f548de54da34a9dfd7f2f7bf200e Author: Marc Zyngier Date: Tue Sep 6 10:23:45 2011 +0100 ARM: shmobile: convert smp platforms to gic_handle_irq() Convert the SMP shmobile platforms to use gic_handle_irq() instead of the assembly macro. Cc: Paul Mundt Signed-off-by: Marc Zyngier commit bbf5f38599701d80d0bf03ffd0a68baa48f98e43 Author: Marc Zyngier Date: Tue Sep 6 10:23:45 2011 +0100 ARM: ux500: convert to CONFIG_MULTI_IRQ_HANDLER Convert the ux500 platforms to be using the gic_handle_irq function as their primary interrupt handler. Acked-by: Linus Walleij Signed-off-by: Marc Zyngier commit afed2a261825e83cf9564dec60961e8aba6dc701 Author: Marc Zyngier Date: Tue Sep 6 10:23:45 2011 +0100 ARM: tegra2: convert to CONFIG_MULTI_IRQ_HANDLER Convert the tegra2 platforms to be using the gic_handle_irq function as their primary interrupt handler. Tested on harmony. Cc: Colin Cross Acked-by: Stephen Warren Acked-by: Olof Johansson Signed-off-by: Marc Zyngier commit 4e44d2cb95bd93abe16a131dbcd4c052ae36665f Author: Marc Zyngier Date: Mon May 30 11:04:53 2011 +0100 ARM: exynos4: convert to CONFIG_MULTI_IRQ_HANDLER Convert the Exynos4 platforms to be using the gic_handle_irq function as their primary interrupt handler. Cc: Ben Dooks Cc: Kukjin Kim Signed-off-by: Marc Zyngier commit 041f777c93bab29565d999a292b9b9b533fe6f5e Author: Marc Zyngier Date: Tue Sep 6 10:23:45 2011 +0100 ARM: msm: convert SMP platforms to CONFIG_MULTI_IRQ_HANDLER Convert the SMP msm platforms to be using the gic_handle_irq function as their primary interrupt handler. Tested-by: David Brown Acked-by: David Brown Signed-off-by: Marc Zyngier commit abd3ca51fba8bc200ae78e99bd1ac19c4e3b6781 Author: Marc Zyngier Date: Tue Sep 6 10:23:45 2011 +0100 ARM: VExpress: convert to CONFIG_MULTI_IRQ_HANDLER Convert the VExpress platform to be using the gic_handle_irq function as its primary interrupt handler. Signed-off-by: Marc Zyngier commit 1b99d9ccb52d64bfdab0d58915909b10cbbdf9e1 Author: Marc Zyngier Date: Tue Sep 6 10:23:45 2011 +0100 ARM: RealView: convert to CONFIG_MULTI_IRQ_HANDLER Convert the RealView platforms to be using the gic_handle_irq function as their primary interrupt handler. Signed-off-by: Marc Zyngier commit 7e01799c669c60460dce43556065ca3b66760dcf Author: Marc Zyngier Date: Tue Sep 6 10:23:45 2011 +0100 ARM: highbank: convert to CONFIG_MULTI_IRQ_HANDLER Convert the highbank platform to be using the gic_handle_irq function as its primary interrupt handler. Cc: Rob Herring Signed-off-by: Marc Zyngier commit fea9fe8329c74159fb2030f1aacf29fdab9fc6d6 Author: Marc Zyngier Date: Tue Sep 6 10:23:45 2011 +0100 ARM: imx: convert smp platforms to global gic_handle_irq() Convert the SMP imx platforms to use the global gic_handle_irq() function instead a private function. Cc: Sascha Hauer Acked-by: Shawn Guo Signed-off-by: Marc Zyngier commit 562e0027d21bf64838178e2f5157df3d5833972e Author: Marc Zyngier Date: Tue Sep 6 09:56:17 2011 +0100 ARM: GIC: Add global gic_handle_irq() function Provide the GIC code with a low level handler that can be used by platforms using CONFIG_MULTI_IRQ_HANDLER. Signed-off-by: Marc Zyngier commit baeeb8229cace91c10c856d91e5ca861d3c44968 Author: Marc Zyngier Date: Wed Nov 2 15:28:49 2011 +0000 ARM: mxc: rename gic_handle_irq to avoid name clash Before introducing a global gic_handle_irq(), rename MXC's version to mxc_gic_handle_irq(). This function will be removed altogether in a later patch. Cc: Sascha Hauer Acked-by: Shawn Guo Signed-off-by: Marc Zyngier commit abeb24ae4d3e543ecf0104cff08a3af4e7a42479 Author: Marc Zyngier Date: Tue Sep 6 09:23:26 2011 +0100 ARM: Make global handler and CONFIG_MULTI_IRQ_HANDLER mutually exclusive Even when CONFIG_MULTI_IRQ_HANDLER is selected, the core code requires the arch_irq_handler_default macro to be defined as a fallback. It turns out nobody is using that particular feature as both PXA and shmobile have all their machine descriptors populated with the interrupt handler, leaving unused code (or empty macros) in their entry-macro.S file just to be able to compile entry-armv.S. Make CONFIG_MULTI_IRQ_HANDLER exclusive wrt arch_irq_handler_default, which allows to remove one test from the hot path. Also cleanup both PXA and shmobile entry-macro.S. Cc: Paul Mundt Acked-by: Nicolas Pitre Acked-by: Eric Miao Tested-by: Jamie Iles Signed-off-by: Marc Zyngier commit db0d4db22a78d31c59087f7057b8f1612fecc35d Author: Marc Zyngier Date: Sat Nov 12 16:09:49 2011 +0000 ARM: gic: allow GIC to support non-banked setups The GIC support code is heavily using the fact that hardware implementations are exposing banked registers. Unfortunately, it looks like at least one GIC implementation (EXYNOS) offers both the distributor and the CPU interfaces at different addresses, depending on the CPU. This problem is solved by allowing the distributor and CPU interface addresses to be per-cpu variables for the platforms that require it. The EXYNOS code is updated not to mess with the GIC internals while handling interrupts, and struct gic_chip_data is back to being private. The DT binding for the gic is updated to allow an optional "cpu-offset" value, which is used to compute the various base addresses. Finally, a new config option (GIC_NON_BANKED) is used to control this feature, so the overhead is only present on kernels compiled with support for EXYNOS. Tested on Origen (EXYNOS4) and Panda (OMAP4). Cc: Kukjin Kim Cc: Will Deacon Cc: Thomas Abraham Acked-by: Rob Herring Signed-off-by: Marc Zyngier commit 5aafec15bdc54cf0722696c95091d7bd674bfcad Author: Russell King Date: Tue Nov 1 10:15:27 2011 +0000 ARM: restart: remove argument to setup_mm_for_reboot() setup_mm_for_reboot() doesn't make use of its argument, so remove it. Acked-by: Nicolas Pitre Acked-by: Will Deacon Acked-by: H Hartley Sweeten Acked-by: Tony Lindgren Signed-off-by: Russell King commit ac15e00b1efe705b66a36d1a6a9db7f6ed524c43 Author: Russell King Date: Mon Oct 31 09:22:22 2011 +0000 ARM: restart: move reboot failure handing into machine_restart() Move the failure to reboot into machine_restart() to always catch this condition, even if a platform decides to hook the restarting via arm_pm_restart(). Acked-by: Nicolas Pitre Acked-by: Will Deacon Acked-by: H Hartley Sweeten Acked-by: Tony Lindgren Signed-off-by: Russell King commit 34adeda943e1fb10e8de022b834996e04241fa7d Author: Russell King Date: Tue Nov 1 16:24:18 2011 +0000 ARM: restart: add default restart modes for PXA mioa701, spitz and tosa Add a default restart mode to reflect the hard-coded restart mode found in these files. Acked-by: Nicolas Pitre Acked-by: Will Deacon Acked-by: H Hartley Sweeten Acked-by: Robert Jarzmik Signed-off-by: Russell King commit b44c350d4104265cf3a6b4355dc1ee05c16aa5de Author: Russell King Date: Tue Nov 1 14:27:33 2011 +0000 ARM: restart: allow platforms more flexibility specifying restart mode Change 'soft_reboot' into a more generic 'restart_mode' variable, allowing the default restart mode to be specified. Acked-by: Nicolas Pitre Acked-by: Will Deacon Acked-by: H Hartley Sweeten Signed-off-by: Russell King commit a528721da08a793e0cec6ef6281d404eddd6e27b Author: Russell King Date: Fri Nov 4 15:05:24 2011 +0000 ARM: restart: add restart hook to machine_desc record Add a restart hook to the machine_desc record so we don't have to populate all platforms with init_early methods to initialize the arm_pm_restart function pointer. Acked-by: Nicolas Pitre Acked-by: Will Deacon Acked-by: H Hartley Sweeten Acked-by: Tony Lindgren Signed-off-by: Russell King