summaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
2017-11-30Merge "usb: host: xhci: Remove helper API retuning dcba dma address"Linux Build Service Account
2017-11-29Merge "icnss: Add dev to all export APIs in ICNSS"Linux Build Service Account
2017-11-29Merge "usb: core: Add helper function to return controller id"Linux Build Service Account
2017-11-29icnss: Add dev to all export APIs in ICNSSSarada Prasanna Garnayak
Add device pointer in all export symbol to add support for numerous WLAN module. CRs-Fixed: 2138446 Change-Id: I981155c165e4e5c2794b778afe647f8a588dd860 Signed-off-by: Sarada Prasanna Garnayak <sgarna@codeaurora.org>
2017-11-28Merge "arm64: Honor limits set by bootloader"Linux Build Service Account
2017-11-28Merge "arm64: Hot-remove implementation for arm64"Linux Build Service Account
2017-11-26Merge "spi: spi_qsd: Add slave support for QUP core"Linux Build Service Account
2017-11-24usb: host: xhci: Remove helper API retuning dcba dma addressHemant Kumar
Since dcba dma address is not required by class driver therefore remove the API definition. Change-Id: I6851729f1ad4254bbfaf179755d9afa7870e8e01 Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
2017-11-24usb: core: Remove helper APIs returning dcba dma addressHemant Kumar
Since dcba dma address is not required by class driver therefore remove the API definitions. Change-Id: I2623cf3bf406ca0d47ea2549b5163d9e9b7351a1 Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
2017-11-24usb: core: Add helper function to return controller idHemant Kumar
Function provides controller id used by a remote entity to identify which usb controller to program to initiate data transfer. Change-Id: Ied396f34496104c139a7910ee86844c124e6803f Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
2017-11-23spi: spi_qsd: Add slave support for QUP coreDilip Kota
The QUP core can be programmed to operate as an SPI slave. This change modifies the existing SPI master driver and adds the slave functionality. Change-Id: I73189339956e0fd52449391737fb1e616a6e0bb2 Signed-off-by: Dilip Kota <dkota@codeaurora.org>
2017-11-23cfg80211: Make pre-CAC results valid only for ETSI domainVasanthakumar Thiagarajan
DFS requirement for ETSI domain (section 4.7.1.4 in ETSI EN 301 893 V1.8.1) is the only one which explicitly states that once DFS channel is marked as available afer the CAC, this channel will remain in available state even moving to a different operating channel. But the same is not explicitly stated in FCC DFS requirement. Also, Pre-CAC requriements are not explicitly mentioned in FCC requirement. Current implementation in keeping DFS channel in available state is same as described in ETSI domain. For non-ETSI DFS domain, this patch gives a grace period of 2 seconds since the completion of successful CAC before moving the channel's DFS state to 'usable' from 'available' state. The same grace period is checked against the channel's dfs_state_entered timestamp while deciding if a DFS channel is available for operation. There is a new radar event, NL80211_RADAR_PRE_CAC_EXPIRED, reported when DFS channel is moved from available to usable state after the grace period. Also make sure the DFS channel state is reset to usable once the beaconing operation on that channel is brought down (like stop_ap, leave_ibss and leave_mesh) in non-ETSI domain. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qti.qualcomm.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com> Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git Git-commit: b35a51c7dd25a823767969e3089542d7478777e9 [svishnoi@codeaurora.org: removed NaN interface type from switch case in net/wireless/chan.c as NaN interface is not supported] Change-Id: Iba19513d1e40fe5da129d6251212c33d1361fec3 Signed-off-by: Surabhi Vishnoi <svishnoi@codeaurora.org>
2017-11-22arm64: Honor limits set by bootloaderArun KS
Introduce a varible to save bootloader enforced memory limits and restricts adding beyond this boundary during a memory hotplug. Change-Id: I28c100644b7287ec4625c4c018b5fffc865e2e72 Signed-off-by: Arun KS <arunks@codeaurora.org>
2017-11-22arm64: Memory hotplug support for arm64 platformMaciej Bielski
This is a second and improved version of the patch previously released in [3]. It builds on the work by Scott Branden [2] and, henceforth, it needs to be applied on top of Scott's patches [2]. Comments are very welcome. Changes from the original patchset and known issues: - Compared to Scott's original patchset, this work adds the mapping of the new hotplugged pages into the kernel page tables. This is done by copying the old swapper_pg_dir over a new page, adding the new mappings, and then switching to the newly built pg_dir (see `hotplug_paging` in arch/arm64/mmu.c). There might be better ways to to this: suggestions are more than welcome. - The stub function for `arch_remove_memory` has been removed for now; we are working in parallel on memory hot remove, and we plan to contribute it as a separate patch. - Corresponding Kconfig flags have been added; - Note that this patch does not work when NUMA is enabled; in fact, the function `memory_add_physaddr_to_nid` does not have an implementation when the NUMA flag is on: this function is supposed to return the nid the hotplugged memory should be associated with. However it is not really clear to us yet what the semantics of this function in the context of a NUMA system should be. A quick and dirty fix would be to always attach to the first available NUMA node. - In arch/arm64/mm/init.c `arch_add_memory`, we are doing a hack with the nomap memory block flags to satisfy preconditions and postconditions of `__add_pages` and postconditions of `arch_add_memory`. Compared to memory hotplug implementation for other architectures, the "issue" seems to be in the implemenation of `pfn_valid`. Suggestions on how to cleanly avoid this hack are welcome. This patchset can be tested by starting the kernel with the `mem=X` flag, where X is less than the total available physical memory and has to be multiple of MIN_MEMORY_BLOCK_SIZE. We also tested it on a customised version of QEMU capable to emulate physical hotplug on arm64 platform. To enable the feature the CONFIG_MEMORY_HOTPLUG compilation flag needs to be set to true. Then, after memory is physically hotplugged, the standard two steps to make it available (as also documented in Documentation/memory-hotplug.txt) are: (1) Notify memory hot-add echo '0xYY000000' > /sys/devices/system/memory/probe where 0xYY000000 is the first physical address of the new memory section. (2) Online new memory block(s) echo online > /sys/devices/system/memory/memoryXXX/state -- or -- echo online_movable > /sys/devices/system/memory/memoryXXX/state where XXX corresponds to the ids of newly added blocks. Onlining can optionally be automatic at hot-add notification by enabling the global flag: echo online > /sys/devices/system/memory/auto_online_blocks or by setting the corresponding config flag in the kernel build. Again, any comment is highly appreciated. [1] https://lkml.org/lkml/2016/11/17/49 [2] https://lkml.org/lkml/2016/12/1/811 [3] https://lkml.org/lkml/2016/12/14/188 Change-Id: I545807e3121c159aaa2f917ea914ee98f38fb296 Signed-off-by: Maciej Bielski <m.bielski@virtualopensystems.com> Signed-off-by: Andrea Reale <ar@linux.vnet.ibm.com> Patch-mainline: linux-kernel @ 11 Apr 2017, 18:25 Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org> [arunks@codeaurora.org: fix to pass checker test] Signed-off-by: Arun KS <arunks@codeaurora.org>
2017-11-21Merge "Revert "ais: query field info and pass to user space""Linux Build Service Account
2017-11-21Revert "ais: query field info and pass to user space"Andy Sun
This reverts commit 3375a292eaf2230a2ad3b90dfc16c9c3ad1f9ce7. Need to change the solution and re-implement this feature. Change-Id: Iabd38bd5c0c062590215c3f22e9383853efa889c Signed-off-by: Andy Sun <bins@codeaurora.org>
2017-11-19Merge "ais: query field info and pass to user space"Linux Build Service Account
2017-11-15ais: query field info and pass to user spaceAndy Sun
Current path to query field info: SOF ISR -> tasklet -> query thread with high priority -> ba driver -> adv7481. Pass field type to user space if they are valid after verification. Change-Id: Id9926236389200446092dc9abb688ee1f83ab0c3 Signed-off-by: Andy Sun <bins@codeaurora.org>
2017-11-09drm/msm: add SRM support for HDCP 1.4Abhinav Kumar
Add support for clients to notify SRM update to HDCP 1.x driver. Integrate the SRM validation check in the HDCP 1.x authentication flow to check HDCP 1.x receiver/repeater KSV against the SRM revoked list and fail the authentication if the sink is found to be present in the list. Change-Id: I6615122f785bde94cb746ec4df7ab63b9f878528 Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
2017-11-09Merge "soc: qcom: msm_bus: Add debug logging for max bandwidth votes"Linux Build Service Account
2017-11-09Merge "Merge android-4.4@ceee5bd (v4.4.95) into msm-4.4"Linux Build Service Account
2017-11-08Merge "spi: core: Add support for registering SPI slave controllers"Linux Build Service Account
2017-11-08spi: core: Add support for registering SPI slave controllersGeert Uytterhoeven
Add support for registering SPI slave controllers using the existing SPI master framework: - SPI slave controllers must use spi_alloc_slave() instead of spi_alloc_master(), and should provide an additional callback "slave_abort" to abort an ongoing SPI transfer request, - SPI slave controllers are added to a new "spi_slave" device class, - SPI slave handlers can be bound to the SPI slave device represented by an SPI slave controller using a DT child node named "slave", - Alternatively, (un)binding an SPI slave handler to the SPI slave device represented by an SPI slave controller can be done by (un)registering the slave device through a sysfs virtual file named "slave". From the point of view of an SPI slave protocol handler, an SPI slave controller looks almost like an ordinary SPI master controller. The only exception is that a transfer request will block on the remote SPI master, and may be cancelled using spi_slave_abort(). Change-Id: I251c5b7247ee7088285e42dd3b3cdce9c56cb9f7 Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Mark Brown <broonie@kernel.org> Git-commit: 6c364062bfed3c34490e85bea52ff6e2d4f0f281 Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git Signed-off-by: Alok Chauhan <alokc@codeaurora.org>
2017-11-08soc: qcom: msm_bus: Add debug logging for max bandwidth votesOdelu Kukatla
Max bandwidth vote on each bus device is required to be printed when the device panics, so add a panic notifier to print the max BW votes on each bus device. Change-Id: I2256407638fe5085cb4b0f4d5a594dd00f4f3bce Signed-off-by: Odelu Kukatla <okukatla@codeaurora.org>
2017-11-07mmc: core: Return error if fallback to lower speed mode failsWanhyeong Ryu
If there are continuous data-CRC errors in higher speed modes (SDR104 mode), then driver fallbacks to lower speed mode. But if at all it fails to fallback to lower speed mode, then that error should be propagated to the caller so that caller will handle it appropriately. Without this change, sometime while processing card removal event, driver fails to detect card removal and treats card as present eventhough its removed. Change-Id: I89544d41c5b014eb9227ba33ef9ec1917b6793dc Signed-off-by: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
2017-11-06Merge android-4.4@ceee5bd (v4.4.95) into msm-4.4Blagovest Kolenichev
* refs/heads/tmp-ceee5bd BACKPORT: arm64: relocatable: suppress R_AARCH64_ABS64 relocations in vmlinux sched/core: fix have_sched_energy_data build warning sched/core: Warn if ENERGY_AWARE is enabled but data is missing sched: walt: Correct WALT window size initialization FROMLIST: sched/fair: Use wake_q length as a hint for wake_wide sched: WALT: account cumulative window demand sched/fair: remove useless variable in find_best_target sched/tune: access schedtune_initialized under CGROUP_SCHEDTUNE sched/fair: consider task utilization in group_max_util() sched/fair: consider task utilization in group_norm_util() sched/fair: enforce EAS mode sched/fair: ignore backup CPU when not valid sched/fair: trace energy_diff for non boosted tasks UPSTREAM: sched/fair: Sync task util before slow-path wakeup UPSTREAM: sched/fair: Fix usage of find_idlest_group() when the local group is idlest UPSTREAM: sched/fair: Fix usage of find_idlest_group() when no groups are allowed BACKPORT: sched/fair: Fix find_idlest_group when local group is not allowed UPSTREAM: sched/fair: Remove unnecessary comparison with -1 BACKPORT: sched/fair: Move select_task_rq_fair slow-path into its own function UPSTREAM: sched/fair: Force balancing on nohz balance if local group has capacity UPSTREAM: sched/core: Add missing update_rq_clock() call in set_user_nice() UPSTREAM: sched/core: Add missing update_rq_clock() call for task_hot() UPSTREAM: sched/core: Add missing update_rq_clock() in detach_task_cfs_rq() UPSTREAM: sched/core: Add missing update_rq_clock() in post_init_entity_util_avg() UPSTREAM: sched/core: Fix find_idlest_group() for fork BACKPORT: sched/fair: Fix PELT integrity for new tasks BACKPORT: sched/cgroup: Fix cpu_cgroup_fork() handling UPSTREAM: sched/fair: Fix and optimize the fork() path BACKPORT: sched/fair: Make it possible to account fair load avg consistently cpufreq/sched: Consider max cpu capacity when choosing frequencies Linux 4.4.95 FS-Cache: fix dereference of NULL user_key_payload fscrypto: require write access to mount to set encryption policy KEYS: Fix race between updating and finding a negative key fscrypt: fix dereference of NULL user_key_payload f2fs crypto: add missing locking for keyring_key access f2fs crypto: replace some BUG_ON()'s with error checks sched/autogroup: Fix autogroup_move_group() to never skip sched_move_task() parisc: Fix double-word compare and exchange in LWS code on 32-bit kernels parisc: Avoid trashing sr2 and sr3 in LWS code pkcs7: Prevent NULL pointer dereference, since sinfo is not always set. KEYS: don't let add_key() update an uninstantiated key lib/digsig: fix dereference of NULL user_key_payload KEYS: encrypted: fix dereference of NULL user_key_payload rtlwifi: rtl8821ae: Fix connection lost problem clockevents/drivers/cs5535: Improve resilience to spurious interrupts bus: mbus: fix window size calculation for 4GB windows brcmsmac: make some local variables 'static const' to reduce stack size i2c: ismt: Separate I2C block read from SMBus block read ALSA: hda: Remove superfluous '-' added by printk conversion ALSA: seq: Enable 'use' locking in all configurations drm/nouveau/mmu: flush tlbs before deleting page tables drm/nouveau/bsp/g92: disable by default can: esd_usb2: Fix can_dlc value for received RTR, frames usb: musb: Check for host-mode using is_host_active() on reset interrupt usb: musb: sunxi: Explicitly release USB PHY on exit can: gs_usb: fix busy loop if no more TX context is available ALSA: usb-audio: Add native DSD support for Pro-Ject Pre Box S2 Digital usb: hub: Allow reset retry for USB2 devices on connect bounce usb: quirks: add quirk for WORLDE MINI MIDI keyboard usb: cdc_acm: Add quirk for Elatec TWN3 USB: serial: metro-usb: add MS7820 device id USB: core: fix out-of-bounds access bug in usb_get_bos_descriptor() USB: devio: Revert "USB: devio: Don't corrupt user memory" ANDROID: binder: show high watermark of alloc->pages. ANDROID: binder: Add thread->process_todo flag. UPSTREAM: arm64: compat: Remove leftover variable declaration ANDROID: sched/fair: Select correct capacity state for energy_diff Revert "UPSTREAM: efi/libstub/arm64: Set -fpie when building the EFI stub" cpufreq: schedutil: clamp util to CPU maximum capacity FROMLIST: android: binder: Fix null ptr dereference in debug msg FROMLIST: android: binder: Change binder_shrinker to static cpufreq/sched: Use cpu max freq rather than policy max Conflicts: include/linux/sched.h kernel/sched/core.c kernel/sched/fair.c Change-Id: I2751f851df741f00e797deaf2119872b3dced655 Signed-off-by: Blagovest Kolenichev <bkolenichev@codeaurora.org>
2017-11-05Merge "msm: kgsl: Add property to determine commands timeout"Linux Build Service Account
2017-11-05Merge "cnss2: Add device pointer to all external APIs"Linux Build Service Account
2017-11-03Merge "memblock: Fix memblock_overlaps_memory()"Linux Build Service Account
2017-11-03cnss2: Add device pointer to all external APIsYue Ma
Add device pointer to all external APIs so that platform driver is able to support multiple devices/instances at the same time. Change-Id: I09dfb146da30d3fd6514dc79dc31cd239a03afa8 Signed-off-by: Yue Ma <yuem@codeaurora.org>
2017-11-03cnss2: Remove deprecated APIYue Ma
cnss_set_driver_status() is no longer needed by WLAN host driver. Hence remove it from platform driver. Change-Id: I31a3174bdded924a9279a40ece05a835277e4626 Signed-off-by: Yue Ma <yuem@codeaurora.org>
2017-11-03Merge "Merge android-4.4@89074de (v4.4.94) into msm-4.4"Linux Build Service Account
2017-10-31Merge "block: Fix oops in locked_inode_to_wb_and_lock_list()"Linux Build Service Account
2017-10-30msm: kgsl: Add property to determine commands timeoutSunil Khatri
Add the property to determine the current command timeout value which is used by the clients via KGSL IOCTL. Change-Id: Ifd6b373d211ebd78dc3a8032ede073258487d689 Signed-off-by: Sunil Khatri <sunilkh@codeaurora.org>
2017-10-30Merge 4.4.95 into android-4.4Greg Kroah-Hartman
Changes in 4.4.95 USB: devio: Revert "USB: devio: Don't corrupt user memory" USB: core: fix out-of-bounds access bug in usb_get_bos_descriptor() USB: serial: metro-usb: add MS7820 device id usb: cdc_acm: Add quirk for Elatec TWN3 usb: quirks: add quirk for WORLDE MINI MIDI keyboard usb: hub: Allow reset retry for USB2 devices on connect bounce ALSA: usb-audio: Add native DSD support for Pro-Ject Pre Box S2 Digital can: gs_usb: fix busy loop if no more TX context is available usb: musb: sunxi: Explicitly release USB PHY on exit usb: musb: Check for host-mode using is_host_active() on reset interrupt can: esd_usb2: Fix can_dlc value for received RTR, frames drm/nouveau/bsp/g92: disable by default drm/nouveau/mmu: flush tlbs before deleting page tables ALSA: seq: Enable 'use' locking in all configurations ALSA: hda: Remove superfluous '-' added by printk conversion i2c: ismt: Separate I2C block read from SMBus block read brcmsmac: make some local variables 'static const' to reduce stack size bus: mbus: fix window size calculation for 4GB windows clockevents/drivers/cs5535: Improve resilience to spurious interrupts rtlwifi: rtl8821ae: Fix connection lost problem KEYS: encrypted: fix dereference of NULL user_key_payload lib/digsig: fix dereference of NULL user_key_payload KEYS: don't let add_key() update an uninstantiated key pkcs7: Prevent NULL pointer dereference, since sinfo is not always set. parisc: Avoid trashing sr2 and sr3 in LWS code parisc: Fix double-word compare and exchange in LWS code on 32-bit kernels sched/autogroup: Fix autogroup_move_group() to never skip sched_move_task() f2fs crypto: replace some BUG_ON()'s with error checks f2fs crypto: add missing locking for keyring_key access fscrypt: fix dereference of NULL user_key_payload KEYS: Fix race between updating and finding a negative key fscrypto: require write access to mount to set encryption policy FS-Cache: fix dereference of NULL user_key_payload Linux 4.4.95 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2017-10-27sched: walt: Correct WALT window size initializationVikram Mulukutla
It is preferable that WALT window rollover occurs just before a tick, since the tick is an opportune moment to record a complete window's statistics, as well as report those stats to the cpu frequency governor. When CONFIG_HZ results in a TICK_NSEC that isn't a integral number, this requirement may be violated. Account for this by reducing the WALT window size to the nearest multiple of TICK_NSEC. Commit d368c6faa19b ("sched: walt: fix window misalignment when HZ=300") attempted to do this but WALT isn't using MIN_SCHED_RAVG_WINDOW as the window size and the patch was doing nothing. Also, change the type of 'walt_disabled' to bool and warn if an invalid window size causes WALT to be disabled. Change-Id: Ie3dcfc21a3df4408254ca1165a355bbe391ed5c7 Signed-off-by: Vikram Mulukutla <markivx@codeaurora.org>
2017-10-27FROMLIST: sched/fair: Use wake_q length as a hint for wake_wideBrendan Jackman
(from https://patchwork.kernel.org/patch/9895261/) This patch adds a parameter to select_task_rq, sibling_count_hint allowing the caller, where it has this information, to inform the sched_class the number of tasks that are being woken up as part of the same event. The wake_q mechanism is one case where this information is available. select_task_rq_fair can then use the information to detect that it needs to widen the search space for task placement in order to avoid overloading the last-level cache domain's CPUs. * * * The reason I am investigating this change is the following use case on ARM big.LITTLE (asymmetrical CPU capacity): 1 task per CPU, which all repeatedly do X amount of work then pthread_barrier_wait (i.e. sleep until the last task finishes its X and hits the barrier). On big.LITTLE, the tasks which get a "big" CPU finish faster, and then those CPUs pull over the tasks that are still running: v CPU v ->time-> ------------- 0 (big) 11111 /333 ------------- 1 (big) 22222 /444| ------------- 2 (LITTLE) 333333/ ------------- 3 (LITTLE) 444444/ ------------- Now when task 4 hits the barrier (at |) and wakes the others up, there are 4 tasks with prev_cpu=<big> and 0 tasks with prev_cpu=<little>. want_affine therefore means that we'll only look in CPUs 0 and 1 (sd_llc), so tasks will be unnecessarily coscheduled on the bigs until the next load balance, something like this: v CPU v ->time-> ------------------------ 0 (big) 11111 /333 31313\33333 ------------------------ 1 (big) 22222 /444|424\4444444 ------------------------ 2 (LITTLE) 333333/ \222222 ------------------------ 3 (LITTLE) 444444/ \1111 ------------------------ ^^^ underutilization So, I'm trying to get want_affine = 0 for these tasks. I don't _think_ any incarnation of the wakee_flips mechanism can help us here because which task is waker and which tasks are wakees generally changes with each iteration. However pthread_barrier_wait (or more accurately FUTEX_WAKE) has the nice property that we know exactly how many tasks are being woken, so we can cheat. It might be a disadvantage that we "widen" _every_ task that's woken in an event, while select_idle_sibling would work fine for the first sd_llc_size - 1 tasks. IIUC, if wake_affine() behaves correctly this trick wouldn't be necessary on SMP systems, so it might be best guarded by the presence of SD_ASYM_CPUCAPACITY? * * * Final note.. In order to observe "perfect" behaviour for this use case, I also had to disable the TTWU_QUEUE sched feature. Suppose during the wakeup above we are working through the work queue and have placed tasks 3 and 2, and are about to place task 1: v CPU v ->time-> -------------- 0 (big) 11111 /333 3 -------------- 1 (big) 22222 /444|4 -------------- 2 (LITTLE) 333333/ 2 -------------- 3 (LITTLE) 444444/ <- Task 1 should go here -------------- If TTWU_QUEUE is enabled, we will not yet have enqueued task 2 (having instead sent a reschedule IPI) or attached its load to CPU 2. So we are likely to also place task 1 on cpu 2. Disabling TTWU_QUEUE means that we enqueue task 2 before placing task 1, solving this issue. TTWU_QUEUE is there to minimise rq lock contention, and I guess that this contention is less of an issue on big.LITTLE systems since they have relatively few CPUs, which suggests the trade-off makes sense here. Change-Id: I2080302839a263e0841a89efea8589ea53bbda9c Signed-off-by: Brendan Jackman <brendan.jackman@arm.com> Signed-off-by: Chris Redpath <chris.redpath@arm.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Josef Bacik <josef@toxicpanda.com> Cc: Joel Fernandes <joelaf@google.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Matt Fleming <matt@codeblueprint.co.uk>
2017-10-27sched: WALT: account cumulative window demandJoonwoo Park
Energy cost estimation has been a long lasting challenge for WALT because WALT guides CPU frequency based on the CPU utilization of previous window. Consequently it's not possible to know newly waking-up task's energy cost until WALT's end of the current window. The WALT already tracks 'Previous Runnable Sum' (prev_runnable_sum) and 'Cumulative Runnable Average' (cr_avg). They are designed for CPU frequency guidance and task placement but unfortunately both are not suitable for the energy cost estimation. It's because using prev_runnable_sum for energy cost calculation would make us to account CPU and task's energy solely based on activity in the previous window so for example, any task didn't have an activity in the previous window will be accounted as a 'zero energy cost' task. Energy estimation with cr_avg is what energy_diff() relies on at present. However cr_avg can only represent instantaneous picture of energy cost thus for example, if a CPU was fully occupied for an entire WALT window and became idle just before window boundary, and if there is a wake-up, energy_diff() accounts that CPU is a 'zero energy cost' CPU. As a result, introduce a new accounting unit 'Cumulative Window Demand'. The cumulative window demand tracks all the tasks' demands have seen in current window which is neither instantaneous nor actual execution time. Because task demand represents estimated scaled execution time when the task runs a full window, accumulation of all the demands represents predicted CPU load at the end of window. Thus we can estimate CPU's frequency at the end of current WALT window with the cumulative window demand. The use of prev_runnable_sum for the CPU frequency guidance and cr_avg for the task placement have not changed and these are going to be used for both purpose while this patch aims to add an additional statistics. Change-Id: I9908c77ead9973a26dea2b36c001c2baf944d4f5 Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2017-10-27Merge android-4.4@89074de (v4.4.94) into msm-4.4Blagovest Kolenichev
* refs/heads/tmp-89074de Linux 4.4.94 Revert "tty: goldfish: Fix a parameter of a call to free_irq" cpufreq: CPPC: add ACPI_PROCESSOR dependency nfsd/callback: Cleanup callback cred on shutdown target/iscsi: Fix unsolicited data seq_end_offset calculation uapi: fix linux/mroute6.h userspace compilation errors uapi: fix linux/rds.h userspace compilation errors ceph: clean up unsafe d_parent accesses in build_dentry_path i2c: at91: ensure state is restored after suspending net: mvpp2: release reference to txq_cpu[] entry after unmapping scsi: scsi_dh_emc: return success in clariion_std_inquiry() slub: do not merge cache if slub_debug contains a never-merge flag ocfs2/dlmglue: prepare tracking logic to avoid recursive cluster lock crypto: xts - Add ECB dependency net/mlx4_core: Fix VF overwrite of module param which disables DMFS on new probed PFs sparc64: Migrate hvcons irq to panicked cpu md/linear: shutup lockdep warnning f2fs: do not wait for writeback in write_begin Btrfs: send, fix failure to rename top level inode due to name collision iio: adc: xilinx: Fix error handling netfilter: nf_ct_expect: Change __nf_ct_expect_check() return value. net/mlx4_en: fix overflow in mlx4_en_init_timestamp() mac80211: fix power saving clients handling in iwlwifi mac80211_hwsim: check HWSIM_ATTR_RADIO_NAME length irqchip/crossbar: Fix incorrect type of local variables watchdog: kempld: fix gcc-4.3 build locking/lockdep: Add nest_lock integrity test Revert "bsg-lib: don't free job in bsg_prepare_job" tipc: use only positive error codes in messages net: Set sk_prot_creator when cloning sockets to the right proto packet: only test po->has_vnet_hdr once in packet_snd packet: in packet_do_bind, test fanout with bind_lock held tun: bail out from tun_get_user() if the skb is empty l2tp: fix race condition in l2tp_tunnel_delete l2tp: Avoid schedule while atomic in exit_net vti: fix use after free in vti_tunnel_xmit/vti6_tnl_xmit isdn/i4l: fetch the ppp_write buffer in one shot bpf: one perf event close won't free bpf program attached by another perf event packet: hold bind lock when rebinding to fanout hook net: emac: Fix napi poll list corruption ip6_gre: skb_push ipv6hdr before packing the header in ip6gre_header udpv6: Fix the checksum computation when HW checksum does not apply bpf/verifier: reject BPF_ALU64|BPF_END sctp: potential read out of bounds in sctp_ulpevent_type_enabled() MIPS: Fix minimum alignment requirement of IRQ stack drm/dp/mst: save vcpi with payloads percpu: make this_cpu_generic_read() atomic w.r.t. interrupts trace: sched: Fix util_avg_walt in sched_load_avg_cpu trace sched/fair: remove erroneous RCU_LOCKDEP_WARN from start_cpu() sched: EAS/WALT: finish accounting prior to task_tick cpufreq: sched: update capacity request upon tick always sched/fair: prevent meaningless active migration sched: walt: Leverage existing helper APIs to apply invariance Conflicts: kernel/sched/core.c kernel/sched/fair.c kernel/sched/sched.h Change-Id: I0effac90fb6a4db559479bfa2fefa31c41200ce9 Signed-off-by: Blagovest Kolenichev <bkolenichev@codeaurora.org>
2017-10-27sched: restore discarded ifdef CONFIG_SCHED_WALT codeBlagovest Kolenichev
Code closed in ifdef CONFIG_SCHED_WALT blocks is not used in msm-4.4 builds, hence in order to be as much as closer to upstream and subsequently to have less merge conflicts in the future, let's restore this code. Restore below CONFIG_SCHED_WALT changes in file [1]: 3c5c4e9 trace/sched: add rq utilization signal for WALT 3a29814 sched: fix wrong truncation of walt_avg efb86bd sched: Introduce Window Assisted Load Tracking (WALT) [1] include/trace/events/sched.h The above changes were discarded during android-4.4 merging into msm-4.4 starting from change 1758716. Change-Id: I1dfe59689ee5f1207e0951a8362a497a8c67c6a7 Signed-off-by: Blagovest Kolenichev <bkolenichev@codeaurora.org>
2017-10-27Merge "drm/msm: add SRM support for HDCP 2.2"Linux Build Service Account
2017-10-27BACKPORT: sched/fair: Fix PELT integrity for new tasksPeter Zijlstra
Vincent and Yuyang found another few scenarios in which entity tracking goes wobbly. The scenarios are basically due to the fact that new tasks are not immediately attached and thereby differ from the normal situation -- a task is always attached to a cfs_rq load average (such that it includes its blocked contribution) and are explicitly detached/attached on migration to another cfs_rq. Scenario 1: switch to fair class p->sched_class = fair_class; if (queued) enqueue_task(p); ... enqueue_entity() enqueue_entity_load_avg() migrated = !sa->last_update_time (true) if (migrated) attach_entity_load_avg() check_class_changed() switched_from() (!fair) switched_to() (fair) switched_to_fair() attach_entity_load_avg() If @p is a new task that hasn't been fair before, it will have !last_update_time and, per the above, end up in attach_entity_load_avg() _twice_. Scenario 2: change between cgroups sched_move_group(p) if (queued) dequeue_task() task_move_group_fair() detach_task_cfs_rq() detach_entity_load_avg() set_task_rq() attach_task_cfs_rq() attach_entity_load_avg() if (queued) enqueue_task(); ... enqueue_entity() enqueue_entity_load_avg() migrated = !sa->last_update_time (true) if (migrated) attach_entity_load_avg() Similar as with scenario 1, if @p is a new task, it will have !load_update_time and we'll end up in attach_entity_load_avg() _twice_. Furthermore, notice how we do a detach_entity_load_avg() on something that wasn't attached to begin with. As stated above; the problem is that the new task isn't yet attached to the load tracking and thereby violates the invariant assumption. This patch remedies this by ensuring a new task is indeed properly attached to the load tracking on creation, through post_init_entity_util_avg(). Of course, this isn't entirely as straightforward as one might think, since the task is hashed before we call wake_up_new_task() and thus can be poked at. We avoid this by adding TASK_NEW and teaching cpu_cgroup_can_attach() to refuse such tasks. .:: BACKPORT Complicated by the fact that mch of the lines changed by the original of this commit were then changed by: df217913e72e sched/fair: Factorize attach/detach entity <Vincent Guittot> and then d31b1a66cbe0 sched/fair: Factorize PELT update <Vincent Guittot> , which have both already been backported here. Reported-by: Yuyang Du <yuyang.du@intel.com> Reported-by: Vincent Guittot <vincent.guittot@linaro.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Mike Galbraith <efault@gmx.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: linux-kernel@vger.kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org> (cherry picked from commit 7dc603c9028ea5d4354e0e317e8481df99b06d7e) Change-Id: Ibc59eb52310a62709d49a744bd5a24e8b97c4ae8 Signed-off-by: Brendan Jackman <brendan.jackman@arm.com> Signed-off-by: Chris Redpath <chris.redpath@arm.com>
2017-10-27KEYS: Fix race between updating and finding a negative keyDavid Howells
commit 363b02dab09b3226f3bd1420dad9c72b79a42a76 upstream. Consolidate KEY_FLAG_INSTANTIATED, KEY_FLAG_NEGATIVE and the rejection error into one field such that: (1) The instantiation state can be modified/read atomically. (2) The error can be accessed atomically with the state. (3) The error isn't stored unioned with the payload pointers. This deals with the problem that the state is spread over three different objects (two bits and a separate variable) and reading or updating them atomically isn't practical, given that not only can uninstantiated keys change into instantiated or rejected keys, but rejected keys can also turn into instantiated keys - and someone accessing the key might not be using any locking. The main side effect of this problem is that what was held in the payload may change, depending on the state. For instance, you might observe the key to be in the rejected state. You then read the cached error, but if the key semaphore wasn't locked, the key might've become instantiated between the two reads - and you might now have something in hand that isn't actually an error code. The state is now KEY_IS_UNINSTANTIATED, KEY_IS_POSITIVE or a negative error code if the key is negatively instantiated. The key_is_instantiated() function is replaced with key_is_positive() to avoid confusion as negative keys are also 'instantiated'. Additionally, barriering is included: (1) Order payload-set before state-set during instantiation. (2) Order state-read before payload-read when using the key. Further separate barriering is necessary if RCU is being used to access the payload content after reading the payload pointers. Fixes: 146aa8b1453b ("KEYS: Merge the type-specific data with the payload data") Reported-by: Eric Biggers <ebiggers@google.com> Signed-off-by: David Howells <dhowells@redhat.com> Reviewed-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-10-27bus: mbus: fix window size calculation for 4GB windowsJan Luebbe
commit 2bbbd96357ce76cc45ec722c00f654aa7b189112 upstream. At least the Armada XP SoC supports 4GB on a single DRAM window. Because the size register values contain the actual size - 1, the MSB is set in that case. For example, the SDRAM window's control register's value is 0xffffffe1 for 4GB (bits 31 to 24 contain the size). The MBUS driver reads back each window's size from registers and calculates the actual size as (control_reg | ~DDR_SIZE_MASK) + 1, which overflows for 32 bit values, resulting in other miscalculations further on (a bad RAM window for the CESA crypto engine calculated by mvebu_mbus_setup_cpu_target_nooverlap() in my case). This patch changes the type in 'struct mbus_dram_window' from u32 to u64, which allows us to keep using the same register calculation code in most MBUS-using drivers (which calculate ->size - 1 again). Fixes: fddddb52a6c4 ("bus: introduce an Marvell EBU MBus driver") Signed-off-by: Jan Luebbe <jlu@pengutronix.de> Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-10-26Merge "uapi: Export msm_ipc.h"Linux Build Service Account
2017-10-26Merge "Merge android-4.4@d6fbbe5 (v4.4.93) into msm-4.4"Linux Build Service Account
2017-10-25Merge "Merge android-4.4@73a2b70 (v4.4.92) into msm-4.4"Linux Build Service Account
2017-10-24Merge "net: restore upstream changes which break routing in tunnel scenarios"Linux Build Service Account
2017-10-24uapi: Export msm_ipc.hYasir Malik
Export msm_ipc.h for use by user-space. Change-Id: I53b96c4cb0b6fe785d3e73e7f00565c68dadf411 CRs-Fixed: 2125734 Acked-by: Jennifer L Zenner <jzenner@qti.qualcomm.com> Signed-off-by: Yasir Malik <ymalik@codeaurora.org>
2017-10-22Merge 4.4.94 into android-4.4Greg Kroah-Hartman
Changes in 4.4.94 percpu: make this_cpu_generic_read() atomic w.r.t. interrupts drm/dp/mst: save vcpi with payloads MIPS: Fix minimum alignment requirement of IRQ stack sctp: potential read out of bounds in sctp_ulpevent_type_enabled() bpf/verifier: reject BPF_ALU64|BPF_END udpv6: Fix the checksum computation when HW checksum does not apply ip6_gre: skb_push ipv6hdr before packing the header in ip6gre_header net: emac: Fix napi poll list corruption packet: hold bind lock when rebinding to fanout hook bpf: one perf event close won't free bpf program attached by another perf event isdn/i4l: fetch the ppp_write buffer in one shot vti: fix use after free in vti_tunnel_xmit/vti6_tnl_xmit l2tp: Avoid schedule while atomic in exit_net l2tp: fix race condition in l2tp_tunnel_delete tun: bail out from tun_get_user() if the skb is empty packet: in packet_do_bind, test fanout with bind_lock held packet: only test po->has_vnet_hdr once in packet_snd net: Set sk_prot_creator when cloning sockets to the right proto tipc: use only positive error codes in messages Revert "bsg-lib: don't free job in bsg_prepare_job" locking/lockdep: Add nest_lock integrity test watchdog: kempld: fix gcc-4.3 build irqchip/crossbar: Fix incorrect type of local variables mac80211_hwsim: check HWSIM_ATTR_RADIO_NAME length mac80211: fix power saving clients handling in iwlwifi net/mlx4_en: fix overflow in mlx4_en_init_timestamp() netfilter: nf_ct_expect: Change __nf_ct_expect_check() return value. iio: adc: xilinx: Fix error handling Btrfs: send, fix failure to rename top level inode due to name collision f2fs: do not wait for writeback in write_begin md/linear: shutup lockdep warnning sparc64: Migrate hvcons irq to panicked cpu net/mlx4_core: Fix VF overwrite of module param which disables DMFS on new probed PFs crypto: xts - Add ECB dependency ocfs2/dlmglue: prepare tracking logic to avoid recursive cluster lock slub: do not merge cache if slub_debug contains a never-merge flag scsi: scsi_dh_emc: return success in clariion_std_inquiry() net: mvpp2: release reference to txq_cpu[] entry after unmapping i2c: at91: ensure state is restored after suspending ceph: clean up unsafe d_parent accesses in build_dentry_path uapi: fix linux/rds.h userspace compilation errors uapi: fix linux/mroute6.h userspace compilation errors target/iscsi: Fix unsolicited data seq_end_offset calculation nfsd/callback: Cleanup callback cred on shutdown cpufreq: CPPC: add ACPI_PROCESSOR dependency Revert "tty: goldfish: Fix a parameter of a call to free_irq" Linux 4.4.94 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>