Commit Graph

3555 Commits

Author SHA1 Message Date
andip71
c4580b2626 tcp_output: set initial TCP window size to 64K (speed improvement)
Signed-off-by: SamarV-121 <samarvispute121@gmail.com>
2020-08-18 21:19:44 +05:30
prashantpaddune
48bd579a3a defconfigs: Enable wireguard 2020-08-18 21:19:07 +05:30
Jason A. Donenfeld
3b63ceea8f net/wireguard: add wireguard importer
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-08-18 21:18:10 +05:30
Varun Chitre
fc69405a3a mmc: Disable CRC check 2020-08-18 21:09:38 +05:30
SamarV-121
68da00ea53 fs: Disable fsync by default
Signed-off-by: SamarV-121 <samarvispute121@gmail.com>
2020-08-18 21:08:39 +05:30
franciscofranco
248a47bf83 fs: Add fsync on/off support
[efremov: change permissions from 0755 to 0644]
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
Signed-off-by: Denis Efremov <efremov@linux.com>
2020-08-18 21:08:08 +05:30
Siarhei Vishniakou
2a285456a4 input: touchscreen: Require low latency
Currently, CPU can enter deep sleep while waiting for data on the i2c
bug. That means an i2c read of 8 bytes can take as long as 10 ms, which
would overrun the desired interrupt handling time.
Use pm qos to require low latency and prevent CPU from entering deep
sleep while handling touch interrupts.

Bug: 110939384
Test: look at the i2c read traces:
1) ./external/chromium-trace/systrace.py --atrace-categories=view,wm,am,app,gfx,i2c,sched,irq,video,power,input,workq,freq
2) perform a fling
3) review the i2c read duration on the touchscreen bus

Change-Id: Icf8ab09324003a85af70517769ced3bae52f705c
Signed-Off-By: Siarhei Vishniakou <svv@google.com>
2020-08-18 21:06:05 +05:30
Jesse Chan
a3103639ca input: sec_ts: bind input_open/close to display state
Signed-off-by: SamarV-121 <samarvispute121@gmail.com>
2020-08-18 21:05:17 +05:30
prashantpaddune
671d649fa8 A750FNPUU4CTE3 2020-08-18 17:44:51 +05:30
prashantpaddune
7bf46eb137 switch to pc 2020-08-18 17:19:57 +05:30
Anan jaser
0bed742faf selinux: disable hardenforce 2020-04-09 14:56:56 +05:30
prashantpaddune
afd412249c dts: increase minimum freq 2020-04-09 14:54:44 +05:30
prashantpaddune
669172a5fa fix my stupid typo 2020-04-08 16:24:30 +05:30
prashantpaddune
bb1e083ed4 defconfig: Enable state notifier 2020-04-08 12:48:37 +02:00
BlackMesa123
b06212b2d7 dpu_7885: add state notifier hooks
Signed-off-by: BlackMesa123 <brother12@hotmail.it>
2020-04-08 12:47:32 +02:00
DarkLord1731
02e9cfca46 Update State Notifier 2020-04-08 12:42:31 +02:00
Pranav Vashi
5f79239f13 samsung: Add state notifier driver
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Luca Grifo <lg@linux.com>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
2020-04-08 12:42:14 +02:00
prashantpaddune
cb423f5a16 cpufreq: Overclock the little core to 1.7Ghz
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:37:14 +02:00
prashantpaddune
6a799beaa1 dtb: Lower the min freq limit of the CPU
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:35:20 +02:00
flar2
c26f9bdbd0 exynos-acme: Allow to overclock the CPU 2020-04-08 11:30:42 +02:00
DarkLord1731
6e361de8c5 cpufreq: Use struct kobj_attribute instead of struct global_attr 2020-04-08 11:30:40 +02:00
djb77
bf7da277a5 defconfig: Enable SCHEDUTIL Governor 2020-04-08 11:30:30 +02:00
djb77
62cc91209e sched: Fix SCHEDUTIL Governor
Compared to G96XFXXU1ARB3 (S9) Kernel Source to fix issues
Thanks to Tkkg1994 for the advice

Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
2020-04-08 11:29:53 +02:00
djb77
b1f1dfd69b cpufreq: Add BIOSHOCK governor
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:29:27 +02:00
djb77
4987f7b57e cpufreq: Add DARKNESS governor
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:28:29 +02:00
djb77
a233b7c91c blu-active: Adjust for struct kobj_attribute
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
2020-04-08 11:27:27 +02:00
engstk
7233c6d23a cpufreq: Add BLU_ACTIVE governor
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:25:10 +02:00
Joe Maples
12c22648f0 block: Add Maple I/O Scheduler
Adapted to State Notifier by @farovitus

Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:24:18 +02:00
andip71
de23aa06ae block: Add ZEN v2 scheduler
Signed-off-by: andip71 <andreasp@gmx.de>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:23:50 +02:00
andip71
2770b840af block: Add VR scheduler
Signed-off-by: andip71 <andreasp@gmx.de>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:23:18 +02:00
andip71
e14797c423 block: Add TRIPNDROID scheduler
Signed-off-by: andip71 <andreasp@gmx.de>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:22:45 +02:00
andip71
62f3029a5c block: Add SIOPLUS scheduler
Signed-off-by: andip71 <andreasp@gmx.de>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:22:13 +02:00
andip71
5d4baa68a8 block: Add FIFO scheduler
Signed-off-by: andip71 <andreasp@gmx.de>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:21:39 +02:00
andip71
b8a7393f07 block: Add SIO scheduler
Signed-off-by: andip71 <andreasp@gmx.de>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:20:51 +02:00
andip71
f2225b03b6 block: add FIOPS scheduler
Signed-off-by: andip71 <andreasp@gmx.de>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:19:48 +02:00
DarkLord1731
bb02460a50 defconfig: Enable BFQ IO Scheduler
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:18:14 +02:00
Paolo Valente
b72b02b26f block/bfq: Improve and refactor throughput-boosting logic
When a queue associated with a process remains empty, there are cases
where throughput gets boosted if the device is idled to await the
arrival of a new I/O request for that queue. Currently, BFQ assumes
that one of these cases is when the device has no internal queueing
(regardless of the properties of the I/O being served). Unfortunately,
this condition has proved to be too general. So, this commit refines it
as "the device has no internal queueing and is rotational".

This refinement provides a significant throughput boost with random
I/O, on flash-based storage without internal queueing. For example, on
a HiKey board, throughput increases by up to 125%, growing, e.g., from
6.9MB/s to 15.6MB/s with two or three random readers in parallel.

This commit also refactors the code related to device idling, for the
following reason. Finding the change that provides the above large
improvement has been slightly more difficult than it had to be,
because the logic that decides whether to idle the device is still
scattered across three functions. Almost all of the logic is in the
function bfq_bfqq_may_idle, but (1) part of the decision is made in
bfq_update_idle_window, and (2) the function bfq_bfqq_must_idle may
switch off idling regardless of the output of bfq_bfqq_may_idle. In
addition, both bfq_update_idle_window and bfq_bfqq_must_idle make
their decisions as a function of parameters that are used, for similar
purposes, also in bfq_bfqq_may_idle. This commit addresses this issue
by moving all the logic into bfq_bfqq_may_idle.

Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: Luca Miccio <lucmiccio@gmail.com>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
2020-04-08 11:17:15 +02:00
Paolo Valente
72c098e1e1 block/bfq: Consider also in_service_entity to state whether an entity is active
Groups of BFQ queues are represented by generic entities in BFQ. When
a queue belonging to a parent entity is deactivated, the parent entity
may need to be deactivated too, in case the deactivated queue was the
only active queue for the parent entity. This deactivation may need to
be propagated upwards if the entity belongs, in its turn, to a further
higher-level entity, and so on. In particular, the upward propagation
of deactivation stops at the first parent entity that remains active
even if one of its child entities has been deactivated.

To decide whether the last non-deactivation condition holds for a
parent entity, BFQ checks whether the field next_in_service is still
not NULL for the parent entity, after the deactivation of one of its
child entity. If it is not NULL, then there are certainly other active
entities in the parent entity, and deactivations can stop.

Unfortunately, this check misses a corner case: if in_service_entity
is not NULL, then next_in_service may happen to be NULL, although the
parent entity is evidently active. This happens if: 1) the entity
pointed by in_service_entity is the only active entity in the parent
entity, and 2) according to the definition of next_in_service, the
in_service_entity cannot be considered as next_in_service. See the
comments on the definition of next_in_service for details on this
second point.

Hitting the above corner case causes crashes.

To address this issue, this commit:
1) Extends the above check on only next_in_service to controlling both
next_in_service and in_service_entity (if any of them is not NULL,
then no further deactivation is performed)
2) Improves the (important) comments on how next_in_service is defined
and updated; in particular it fixes a few rather obscure paragraphs

Reported-by: Eric Wheeler <bfq-sched@lists.ewheeler.net>
Reported-by: Rick Yiu <rick_yiu@htc.com>
Reported-by: Tom X Nguyen <tom81094@gmail.com>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Tested-by: Eric Wheeler <bfq-sched@lists.ewheeler.net>
Tested-by: Rick Yiu <rick_yiu@htc.com>
Tested-by: Laurentiu Nicola <lnicola@dend.ro>
Tested-by: Tom X Nguyen <tom81094@gmail.com>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
2020-04-08 11:17:15 +02:00
Paolo Valente
1d0e650f1f block/bfq: Reset in_service_entity if it becomes idle
BFQ implements hierarchical scheduling by representing each group of
queues with a generic parent entity. For each parent entity, BFQ
maintains an in_service_entity pointer: if one of the child entities
happens to be in service, in_service_entity points to it.  The
resetting of these pointers happens only on queue expirations: when
the in-service queue is expired, i.e., stops to be the queue in
service, BFQ resets all in_service_entity pointers along the
parent-entity path from this queue to the root entity.

Functions handling the scheduling of entities assume, naturally, that
in-service entities are active, i.e., have pending I/O requests (or,
as a special case, even if they have no pending requests, they are
expected to receive a new request very soon, with the scheduler idling
the storage device while waiting for such an event). Unfortunately,
the above resetting scheme of the in_service_entity pointers may cause
this assumption to be violated.  For example, the in-service queue may
happen to remain without requests because of a request merge. In this
case the queue does become idle, and all related data structures are
updated accordingly. But in_service_entity still points to the queue
in the parent entity. This inconsistency may even propagate to
higher-level parent entities, if they happen to become idle as well,
as a consequence of the leaf queue becoming idle. For this queue and
parent entities, scheduling functions have an undefined behaviour,
and, as reported, may easily lead to kernel crashes or hangs.

This commit addresses this issue by simply resetting the
in_service_entity field also when it is detected to point to an entity
becoming idle (regardless of why the entity becomes idle).

Reported-by: Laurentiu Nicola <lnicola@dend.ro>
Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Tested-by: Laurentiu Nicola <lnicola@dend.ro>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
2020-04-08 11:17:14 +02:00
Paolo Valente
e2ee71b054 block/bfq: Add extra checks related to entity scheduling
- extra checks related to ioprioi-class changes
- specific check on st->idle in __bfq_requeue_entity

Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
2020-04-08 11:17:13 +02:00
Paolo Valente
afb148019a block/bfq: Update BFQ to v8r12
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
2020-04-08 11:17:12 +02:00
Mauro Andreolini
11cb842942 block, bfq: add Early Queue Merge (EQM) to BFQ-v7r11 for 4.4.0
A set of processes may happen  to  perform interleaved reads, i.e.,requests
whose union would give rise to a  sequential read  pattern.  There are two
typical  cases: in the first  case,   processes  read  fixed-size chunks of
data at a fixed distance from each other, while in the second case processes
may read variable-size chunks at  variable distances. The latter case occurs
for  example with  QEMU, which  splits the  I/O generated  by the  guest into
multiple chunks,  and lets these chunks  be served by a  pool of cooperating
processes,  iteratively  assigning  the  next  chunk of  I/O  to  the first
available  process. CFQ  uses actual  queue merging  for the  first type of
rocesses, whereas it  uses preemption to get a sequential  read pattern out
of the read requests  performed by the second type of  processes. In the end
it uses  two different  mechanisms to  achieve the  same goal: boosting the
throughput with interleaved I/O.

This patch introduces  Early Queue Merge (EQM), a unified mechanism to get a
sequential  read pattern  with both  types of  processes. The  main idea is
checking newly arrived requests against the next request of the active queue
both in case of actual request insert and in case of request merge. By doing
so, both the types of processes can be handled by just merging their queues.
EQM is  then simpler and  more compact than the  pair of mechanisms used in
CFQ.

Finally, EQM  also preserves the  typical low-latency properties of BFQ, by
properly restoring the weight-raising state of a queue when it gets back to
a non-merged state.

Signed-off-by: Mauro Andreolini <mauro.andreolini@unimore.it>
Signed-off-by: Arianna Avanzini <avanzini@google.com>
Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Luca Grifo <lg@linux.com>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
2020-04-08 11:17:11 +02:00
Paolo Valente
f7efdfa441 block: introduce the BFQ-v7r11 I/O sched for 4.4.0
The general structure is borrowed from CFQ, as much of the code for
handling I/O contexts. Over time, several useful features have been
ported from CFQ as well (details in the changelog in README.BFQ). A
(bfq_)queue is associated to each task doing I/O on a device, and each
time a scheduling decision has to be made a queue is selected and served
until it expires.

    - Slices are given in the service domain: tasks are assigned
      budgets, measured in number of sectors. Once got the disk, a task
      must however consume its assigned budget within a configurable
      maximum time (by default, the maximum possible value of the
      budgets is automatically computed to comply with this timeout).
      This allows the desired latency vs "throughput boosting" tradeoff
      to be set.

    - Budgets are scheduled according to a variant of WF2Q+, implemented
      using an augmented rb-tree to take eligibility into account while
      preserving an O(log N) overall complexity.

    - A low-latency tunable is provided; if enabled, both interactive
      and soft real-time applications are guaranteed a very low latency.

    - Latency guarantees are preserved also in the presence of NCQ.

    - Also with flash-based devices, a high throughput is achieved
      while still preserving latency guarantees.

    - BFQ features Early Queue Merge (EQM), a sort of fusion of the
      cooperating-queue-merging and the preemption mechanisms present
      in CFQ. EQM is in fact a unified mechanism that tries to get a
      sequential read pattern, and hence a high throughput, with any
      set of processes performing interleaved I/O over a contiguous
      sequence of sectors.

    - BFQ supports full hierarchical scheduling, exporting a cgroups
      interface.  Since each node has a full scheduler, each group can
      be assigned its own weight.

    - If the cgroups interface is not used, only I/O priorities can be
      assigned to processes, with ioprio values mapped to weights
      with the relation weight = IOPRIO_BE_NR - ioprio.

    - ioprio classes are served in strict priority order, i.e., lower
      priority queues are not served as long as there are higher
      priority queues.  Among queues in the same class the bandwidth is
      distributed in proportion to the weight of each queue. A very
      thin extra bandwidth is however guaranteed to the Idle class, to
      prevent it from starving.

Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
Signed-off-by: Arianna Avanzini <avanzini@google.com>
Signed-off-by: Luca Grifo <lg@linux.com>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
2020-04-08 11:17:11 +02:00
Paolo Valente
97bf962ea5 block: cgroups, kconfig, build bits for BFQ-v7r11-4.4.0
Update Kconfig.iosched and do the related Makefile changes to include
kernel configuration options for BFQ. Also increase the number of
policies supported by the blkio controller so that BFQ can add its
own.

Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
Signed-off-by: Arianna Avanzini <avanzini@google.com>
Signed-off-by: Luca Grifo <lg@linux.com>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
2020-04-08 11:17:10 +02:00
andip71
24871cea54 printk: Add sys kernel interface to configure linux printk logging
- now logging can be switched on and off via /sys/kernel/printk_mode interface
- default is 1 (on)
- Enabled time stamp information in logs again

Signed-off-by: andip71 <andreasp@gmx.de>
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
2020-04-08 11:16:47 +02:00
DarkLord1731
9252298ae9 defconfig: Enable available cpu governors, deadline IO scheduler and TCP algorithms 2020-04-08 11:16:14 +02:00
djb77
5ea4dbfcd3 scripts: Remove DIRTY status from Kernel
Signed-off-by: djb77 <dwayne.bakewell@gmail.com>
2020-04-08 11:15:05 +02:00
prashantpaddune
7b285d6d30 defconfig:fix CC_STACKPROTECTOR_STRONG override warning
Signed-off-by: prashantpaddune <elonpras@my.smccd.edu>
2020-04-08 11:12:19 +02:00
prashantpaddune
1d0cb4645e fix compile errors 2020-04-08 14:18:09 +05:30
prashantpaddune
aba2d18cee arm64: smp: fix compile errors 2020-04-07 18:00:22 +05:30