aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-10-16configs: arndale.conf - Restore USB functionalitylinux-lng-3.14.19-2014.12linux-lng-3.14.19-2014.11linux-lng-3.14.19-2014.10Gary S. Robertson
LSK removed USB functionality from arndale.conf because USB does not work on Arndale without locallly applied patches from the Linaro Samsung landing team which have apparently not been applied upstream. This patch restores settings for USB support as well as other settings which the Samsung landing team had added in arndale.conf for the LNG kernel, which contains the locally applied USB patches. Signed-off-by: Gary S. Robertson <gary.robertson@linaro.org>
2014-09-29hrtimer.h: prevent pinned timer state from breaking inactive testInitial_commit_of_LSK-based_LNG_kernelGary S. Robertson
An hrtimer may be pinned to a CPU but inactive, so it is no longer valid to test the hrtimer.state struct member as having no bits set when inactive. Changed the test function to mask out the HRTIMER_STATE_PINNED bit when checking for inactive state. Signed-off-by: Gary S. Robertson <gary.robertson@linaro.org>
2014-09-29hrtimer: make sure PINNED flag is cleared after removing hrtimerViresh Kumar
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2014-09-29sched/nohz: add debugfs control over sched_tick_max_defermentKevin Hilman
Allow debugfs override of sched_tick_max_deferment in order to ease finding/fixing the remaining issues with full nohz. The value to be written is in jiffies, and -1 means the max deferment is disabled (scheduler_tick_max_deferment() returns KTIME_MAX.) Cc: Frederic Weisbecker <fweisbec@gmail.com> Signed-off-by: Kevin Hilman <khilman@linaro.org>
2014-09-29tick: SHUTDOWN event-dev if no events are required for KTIME_MAXViresh Kumar
When expires is set to KTIME_MAX in tick_program_event(), we are sure that there are no events enqueued for a very long time and so there is no point keeping event device running. We will get interrupted without any work to do many a times, for example when timer's counter overflows. So, its better to SHUTDOWN the event device then and restart it ones we get a request for next event. For implementing this a new field 'last_mode' is added to 'struct clock_event_device' to keep track of last mode used. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2014-09-29hrtimer: reprogram event for expires=KTIME_MAX in hrtimer_force_reprogram()Viresh Kumar
In hrtimer_force_reprogram(), we are reprogramming event device only if the next timer event is before KTIME_MAX. But what if it is equal to KTIME_MAX? As we aren't reprogramming it again, it will be set to the last value it was, probably tick interval, i.e. few milliseconds. And we will get a interrupt due to that, wouldn't have any hrtimers to service and return without doing much. But the implementation of event device's driver may make it more stupid. For example: drivers/clocksource/arm_arch_timer.c disables the event device only on SHUTDOWN/UNUSED requests in set-mode. Otherwise, it will keep giving interrupts at tick interval even if hrtimer_interrupt() didn't reprogram tick.. To get this fixed, lets reprogram event device even for KTIME_MAX, so that the timer is scheduled for long enough. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Anders Roxell <anders.roxell@linaro.org> Conflicts: kernel/hrtimer.c
2014-09-29sched: don't queue timers on quiesced CPUsViresh Kumar
CPUSets have cpusets.quiesce sysfs file now, with which some CPUs can opt for isolating themselves from background kernel activities, like: timers & hrtimers. get_nohz_timer_target() is used for finding suitable CPU for firing a timer. To guarantee that new timers wouldn't be queued on quiesced CPUs, we need to modify this routine. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2014-09-29cpuset: Create sysfs file: cpusets.quiesce to isolate CPUsViresh Kumar
For networking applications, platforms need to provide one CPU per each user space data plane thread. These CPUs shouldn't be interrupted by kernel at all unless userspace has requested for some functionality. Currently, there are background kernel activities that are running on almost every CPU, like: timers/hrtimers/watchdogs/etc, and these are required to be migrated to other CPUs. To achieve that, this patch adds another option to cpusets, i.e. 'quiesce'. Writing '1' on this file would migrate these unbound/unpinned timers/hrtimers away from the CPUs of the cpuset in question. Also it would disallow addition of any new unpinned timers/hrtimers to isolated CPUs (This would be handled in next patch). Writing '0' will disable isolation of CPUs in current cpuset and unpinned timers/hrtimers would be allowed in future on these CPUs. Currently, only timers and hrtimers are migrated. This would be followed by other kernel infrastructure later if required. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2014-09-29hrtimer: create hrtimer_quiesce_cpu() to isolate CPU from hrtimersViresh Kumar
To isolate CPUs (isolate from hrtimers) from sysfs using cpusets, we need some support from the hrtimer core. i.e. A routine hrtimer_quiesce_cpu() which would migrate away all the unpinned hrtimers, but shouldn't touch the pinned ones. This patch creates this routine. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2014-09-29hrtimer: update timer->state with 'pinned' informationViresh Kumar
'Pinned' information would be required in migrate_hrtimers() now, as we can migrate non-pinned timers away without a hotplug (i.e. with cpuset.quiesce). And so we may need to identify pinned timers now, as we can't migrate them. This patch reuses the timer->state variable for setting this flag as there were enough number of free bits available in this variable. And there is no point increasing size of this struct by adding another field. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2014-09-29timer: create timer_quiesce_cpu() to isolate CPU from timersViresh Kumar
To isolate CPUs (isolate from timers) from sysfs using cpusets, we need some support from the timer core. i.e. A routine timer_quiesce_cpu() which would migrates away all the unpinned timers, but shouldn't touch the pinned ones. This patch creates this routine. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2014-09-29timer: track pinned timers with TIMER_PINNED flagViresh Kumar
In order to quiesce a CPU on which Isolation might be required, we need to move away all the timers queued on that CPU. There are two types of timers queued on any CPU: ones that are pinned to that CPU and others can run on any CPU but are queued on CPU in question. And we need to migrate only the second type of timers away from the CPU entering quiesce state. For this we need some basic infrastructure in timer core to identify which timers are pinned and which are not. Hence, this patch adds another flag bit TIMER_PINNED which will be set only for the timers which are pinned to a CPU. It also removes 'pinned' parameter of __mod_timer() as it is no more required. NOTE: One functional change worth mentioning Existing Behavior: add_timer_on() followed by multiple mod_timer() wouldn't pin the timer on CPU mentioned in add_timer_on().. New Behavior: add_timer_on() followed by multiple mod_timer() would pin the timer on CPU running mod_timer(). I didn't gave much attention to this as we should call mod_timer_on() for the timers queued with add_timer_on(). Though if required we can simply clear the TIMER_PINNED flag in mod_timer(). Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2014-09-29timer: Remove code redundancy while calling get_nohz_timer_target()Viresh Kumar
There are only two users of get_nohz_timer_target(): timer and hrtimer. Both call it under same circumstances, i.e. #ifdef CONFIG_NO_HZ_COMMON if (!pinned && get_sysctl_timer_migration() && idle_cpu(this_cpu)) return get_nohz_timer_target(); #endif So, it makes more sense to get all this as part of get_nohz_timer_target() instead of duplicating code at two places. For this another parameter is required to be passed to this routine, pinned. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Cc: linaro-kernel@lists.linaro.org Cc: fweisbec@gmail.com Cc: peterz@infradead.org Link: http://lkml.kernel.org/r/1e1b53537217d58d48c2d7a222a9c3ac47d5b64c.1395140107.git.viresh.kumar@linaro.org Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2014-09-29exynos: enable big endian supportVictor Kamensky
Previous patches fixed endian neutral issues in Arndale BSP, so mark it as one that supports big endian Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
2014-09-29exynos: serial clear and set big endian fixVictor Kamensky
Samsung serial driver uses __set_bit and __clear_bit functions directly with h/w registers. But these functions are not endian neutral. In case of BE host before operation on the bit byte swap is needed and byte swap is required after operation on the bit is complete. Patch creates and use __hw_set_bit and __hw_clear_bit, that in case of LE just call __set_bit and __clear_bit, but in case of BE they do required byteswaps Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
2014-09-29exynos: secondary_startup endian fixVictor Kamensky
If kernel operates in BE mode on board that has LE bootloader/rom code, we need to switch CPU to operate in BE mode as soon as possible. generic secondary_startup that is called from exynos specific secondary startup code will do the switch, but we need it to do earlier because exynos specific secondary_startup code works with BE data. Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
2014-09-29exynos: boot serial endian fixVictor Kamensky
uncompress serial line write utils need to use endian neutral functions to read h/w register - i.e in case of BE host byteswap is needed. Fix uart_rd, uart_wr and serial chip fifo related macros Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
2014-09-29exynos: driver raw read and write endian fixVictor Kamensky
Need to use endian neutral functions to read/write LE h/w registers. I.e instead of __raw_read[lw] and _raw_write[lw] functions code need to use read[lw]_relaxed and write[lw]_relaxed functions. If the first just read/write register with memory barrier, the second will byteswap it if host operates in BE mode. This patch covers drivers used by arndale board where all changes are trivial, sed like replacement of __raw_xxx functions with xxx_relaxed variant. Literally this sed program was used to make the change: s|__raw_readl|readl_relaxed|g s|__raw_writel|writel_relaxed|g s|__raw_readw|readw_relaxed|g s|__raw_writew|writew_relaxed|g Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org> Signed-off-by: Anders Roxell <anders.roxell@linaro.org> Conflicts: arch/arm/mach-exynos/platsmp.c
2014-09-29mmc: dw_mmc endian fixVictor Kamensky
Need to use endian neutral functions to read/write h/w registers. I.e __raw_readl replaced with readl_relaxed and __raw_writel replaced with writel_relaxed. The relaxed version of function will read/write LE h/w register and byteswap it if host operates in BE mode. However in case of this file __raw_read(wlq) and __raw_write(wlq) are also used to transfer data from uchar buffer into h/w mmc host register. And in this case byteswap is not need - bytes of data buffer should go into h/w register in the same order as they are in memory. So we need to split control mci_readl/mci_writel macros from one that operates on data mci_readw_data, mci_readl_data, mci_readq_data, mci_writew, mci_writel_data, mci_writeq_data. The latter one do not do byte swaps. Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
2014-09-29mtd: map.h endian fixVictor Kamensky
Need to use endian neutral functions to read/write LE h/w registers. I.e insted of __raw_readl and _raw_writel, readl_relaxed and writel_relaxed. If the first just read/write register with memory barrier, the second will byteswap it if host operates in BE mode. Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
2014-09-29ARM: dts: Disable MDMA1 node for Arndale-octa boardTushar Behera
MDMA1 can support both secure and non-secure AXI transactions. When this is enabled in the kernel for boards that run in secure mode, we get imprecise external aborts causing the kernel to oops. Unhandled fault: imprecise external abort (0x1406) at 0x00000000 Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000007 Signed-off-by: Tushar Behera <tushar.behera@linaro.org> Conflicts: arch/arm/boot/dts/exynos5420-arndale-octa.dts
2014-09-29ARM: dts: Add secure firmware supportTushar Behera
Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2014-09-29ARM: EXYNOS: Add secure firmware support for Exynos5420Sachin Kamat
Secure firmware support for booting secondary CPUs on Exynos5420 based boards with trustzone support. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2014-09-29ARM: EXYNOS: Add IO mapping for non-secure SYSRAMSachin Kamat
On trustzone enabled boards non-secure SYSRAM is used for secondary CPU boot up. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2014-09-29ARM: dts: Add PMIC support to arndale-octaSachin Kamat
Added PMIC node to Arndale-Octa board. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2014-09-29ARM: EXYNOS: Enable all 8 cores on 5420Chander Kashyap
Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2014-09-29usb: misc: usb3503: Force late initializationTushar Behera
While not working as an I2C device, USB3503 chip needs to be reset after the USB PHY has been initialized for this to work properly. Currently there is no other way to ensure that USB3503 chip is probed after the USB PHY has been initialized, hence the last resort. Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2014-09-29ARM: dts: Add pmu node for Exynos4412Tushar Behera
Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
2014-09-29distribution.conf: use CC_STACKPROTECTOR_REGULAR introduced in 3.14Fathi Boudra
In 3.14, CONFIG_CC_STACKPROTECTOR_STRONG is introduced and CONFIG_CC_STACKPROTECTOR is renamed to CONFIG_CC_STACKPROTECTOR_REGULAR. http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8779657d29c0ebcc0c94ede4df2f497baf1b563f Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
2014-09-29distribution.conf: enable BLK_DEV_LOOPRiku Voipio
LOOP block device is needed by kpartx and other tools for loopback mounts. Enable it in distribution conf to have it everywhere. Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
2014-09-29distribution: enable NETFILTER_XT_MATCH_CONNTRACK (LP: #1255382)Fathi Boudra
Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
2014-09-29distribution: enable more modules for netfilter and bridgingFathi Boudra
Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org> Conflicts: linaro/configs/distribution.conf
2014-09-29distribution: enable xtables "state" match supportFathi Boudra
Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
2014-09-29distribution.conf: add more options for libvirt/openstackAndrey Konovalov
Signed-off-by: Andrey Konovalov <andrey.konovalov@linaro.org>
2014-09-29distribution.conf: add more netfilter configs for the ltp networking iptable ↵Vincent Hsu
test Signed-off-by: Vincent Hsu <vincent.hsu@linaro.org>
2014-09-29configs: preempt(ion|-rt).conf - disabled CPU frequency scalingGary S. Robertson
Signed-off-by: Gary S. Robertson <gary.robertson@linaro.org> Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
2014-09-23linaro:no_hz_full.conf: add config required fragGary S. Robertson
Needed for no_hz_full with exynos_defconfig
2014-09-23linaro/configs/no_hz_full: enable NO_HZ_FULL_ALLAnders Roxell
Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
2014-09-23no_hz_full.conf: added cpusets config fragmentAnders Roxell
Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
2014-09-23Added dependency config settings for NO_HZ_FULLGary S. Robertson
Signed-off-by: Gary S. Robertson <gary.robertson@linaro.org>
2014-09-23Add config fragment with support for NO_HZ_FULLGary S. Robertson
Signed-off-by: Gary S. Robertson <gary.robertson@linaro.org>
2014-09-23preemption.conf: newly added for low latencyAnders Roxell
Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
2014-09-23linaro/configs/kvm-guest: add extra devicesRyan Harkin
Add extra devices needed for arm64 KVM testing. Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org> Signed-off-by: Jon Medhurst <tixy@linaro.org> Acked-by: Fathi Boudra <fathi.boudra@linaro.org>
2014-09-23linaro/configs: Add LNG OpenVswitch config fragmentViresh Kumar
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Gary S. Robertson <gary.robertson@linaro.org>
2014-09-23kvm-host: turn ethernet bridging to moduleFathi Boudra
Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
2014-09-23kvm-host.conf: enable guest OS networkingKim Phillips
Bridge and TUN/TAP support are needed for enabling networking with a guest OS. Signed-off-by: Kim Phillips <kim.phillips@linaro.org> Acked-by: Riku Voipio <riku.voipio@linaro.org>
2014-09-17Merge tag 'v3.14.19' into linux-linaro-lsk-v3.14lsk-v3.14-14.09Mark Brown
This is the 3.14.19 stable release
2014-09-17Linux 3.14.19v3.14.19Greg Kroah-Hartman
2014-09-17KEYS: Fix termination condition in assoc array garbage collectionDavid Howells
commit 95389b08d93d5c06ec63ab49bd732b0069b7c35e upstream. This fixes CVE-2014-3631. It is possible for an associative array to end up with a shortcut node at the root of the tree if there are more than fan-out leaves in the tree, but they all crowd into the same slot in the lowest level (ie. they all have the same first nibble of their index keys). When assoc_array_gc() returns back up the tree after scanning some leaves, it can fall off of the root and crash because it assumes that the back pointer from a shortcut (after label ascend_old_tree) must point to a normal node - which isn't true of a shortcut node at the root. Should we find we're ascending rootwards over a shortcut, we should check to see if the backpointer is zero - and if it is, we have completed the scan. This particular bug cannot occur if the root node is not a shortcut - ie. if you have fewer than 17 keys in a keyring or if you have at least two keys that sit into separate slots (eg. a keyring and a non keyring). This can be reproduced by: ring=`keyctl newring bar @s` for ((i=1; i<=18; i++)); do last_key=`keyctl newring foo$i $ring`; done keyctl timeout $last_key 2 Doing this: echo 3 >/proc/sys/kernel/keys/gc_delay first will speed things up. If we do fall off of the top of the tree, we get the following oops: BUG: unable to handle kernel NULL pointer dereference at 0000000000000018 IP: [<ffffffff8136cea7>] assoc_array_gc+0x2f7/0x540 PGD dae15067 PUD cfc24067 PMD 0 Oops: 0000 [#1] SMP Modules linked in: xt_nat xt_mark nf_conntrack_netbios_ns nf_conntrack_broadcast ip6t_rpfilter ip6t_REJECT xt_conntrack ebtable_nat ebtable_broute bridge stp llc ebtable_filter ebtables ip6table_ni CPU: 0 PID: 26011 Comm: kworker/0:1 Not tainted 3.14.9-200.fc20.x86_64 #1 Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 Workqueue: events key_garbage_collector task: ffff8800918bd580 ti: ffff8800aac14000 task.ti: ffff8800aac14000 RIP: 0010:[<ffffffff8136cea7>] [<ffffffff8136cea7>] assoc_array_gc+0x2f7/0x540 RSP: 0018:ffff8800aac15d40 EFLAGS: 00010206 RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff8800aaecacc0 RDX: ffff8800daecf440 RSI: 0000000000000001 RDI: ffff8800aadc2bc0 RBP: ffff8800aac15da8 R08: 0000000000000001 R09: 0000000000000003 R10: ffffffff8136ccc7 R11: 0000000000000000 R12: 0000000000000000 R13: 0000000000000000 R14: 0000000000000070 R15: 0000000000000001 FS: 0000000000000000(0000) GS:ffff88011fc00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b CR2: 0000000000000018 CR3: 00000000db10d000 CR4: 00000000000006f0 Stack: ffff8800aac15d50 0000000000000011 ffff8800aac15db8 ffffffff812e2a70 ffff880091a00600 0000000000000000 ffff8800aadc2bc3 00000000cd42c987 ffff88003702df20 ffff88003702dfa0 0000000053b65c09 ffff8800aac15fd8 Call Trace: [<ffffffff812e2a70>] ? keyring_detect_cycle_iterator+0x30/0x30 [<ffffffff812e3e75>] keyring_gc+0x75/0x80 [<ffffffff812e1424>] key_garbage_collector+0x154/0x3c0 [<ffffffff810a67b6>] process_one_work+0x176/0x430 [<ffffffff810a744b>] worker_thread+0x11b/0x3a0 [<ffffffff810a7330>] ? rescuer_thread+0x3b0/0x3b0 [<ffffffff810ae1a8>] kthread+0xd8/0xf0 [<ffffffff810ae0d0>] ? insert_kthread_work+0x40/0x40 [<ffffffff816ffb7c>] ret_from_fork+0x7c/0xb0 [<ffffffff810ae0d0>] ? insert_kthread_work+0x40/0x40 Code: 08 4c 8b 22 0f 84 bf 00 00 00 41 83 c7 01 49 83 e4 fc 41 83 ff 0f 4c 89 65 c0 0f 8f 5a fe ff ff 48 8b 45 c0 4d 63 cf 49 83 c1 02 <4e> 8b 34 c8 4d 85 f6 0f 84 be 00 00 00 41 f6 c6 01 0f 84 92 RIP [<ffffffff8136cea7>] assoc_array_gc+0x2f7/0x540 RSP <ffff8800aac15d40> CR2: 0000000000000018 ---[ end trace 1129028a088c0cbd ]--- Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Don Zickus <dzickus@redhat.com> Signed-off-by: James Morris <james.l.morris@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-09-17KEYS: Fix use-after-free in assoc_array_gc()David Howells
commit 27419604f51a97d497853f14142c1059d46eb597 upstream. An edit script should be considered inaccessible by a function once it has called assoc_array_apply_edit() or assoc_array_cancel_edit(). However, assoc_array_gc() is accessing the edit script just after the gc_complete: label. Reported-by: Andreea-Cristina Bernat <bernat.ada@gmail.com> Signed-off-by: David Howells <dhowells@redhat.com> Reviewed-by: Andreea-Cristina Bernat <bernat.ada@gmail.com> cc: shemming@brocade.com cc: paulmck@linux.vnet.ibm.com Signed-off-by: James Morris <james.l.morris@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>