Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upstream #1

Merged
merged 20 commits into from
Dec 7, 2018
Merged

Upstream #1

merged 20 commits into from
Dec 7, 2018

Conversation

liuwang97
Copy link
Owner

23333

milouk and others added 20 commits December 3, 2018 19:12
…NFIG_CPU_FREQ_GOV_ALUCARDSCHED"

This reverts commit 019c92f.
Querying the fuelgauge for data is expensive, so doing it frequently can
result in a significant increase in power consumption.

Limit how frequently data queries can be sent to 5 seconds in order to
prevent fuelgauge queries from consuming too much power. Only do this while
there is no USB cable connected to the device, since the charging drivers
need fresh statistics when there's a USB cable connected.

Signed-off-by: Sultan Alsawaf <[email protected]>
Signed-off-by: Francisco Franco <[email protected]>
Signed-off-by: Michael <[email protected]>
Enable the low-latency-xprt property to IPC router DSPS edge.

Bug: 78206719

CRs-Fixed: 2261724
Change-Id: I042a402e52764e6008231e2f39aaf0f6698bd325
Signed-off-by: Arun Kumar Neelakantam <[email protected]>
Signed-off-by: Roopesh Rajashekharaiah Nataraja <[email protected]>
Signed-off-by: Francisco Franco <[email protected]>
Signed-off-by: Michael <[email protected]>
Bug: 111322929
Test: build
Change-Id: Ic3cdb7ca55eca3606643799d2b49007af545a268
Signed-off-by: Wei Wang <[email protected]>
Signed-off-by: Francisco Franco <[email protected]>
Signed-off-by: Michael <[email protected]>
…locks

The gcc_pcie_0_pipe_clk and gcc_pcie_1_pipe_clk clocks are sourced off
of the PCIe PHY. There's a circular dependency between the PHY and its
corresponding pipe clock where the pipe clock does not turn on until
the PHY is up but the PHY itself relies on a feedback signal from the
pipe clock for it to turn on. This results in a long delay whilst
enabling the pipe clocks, greater than 1 msec in some instances.
Since it's not advisable for the clock driver to hold on to a spinlock
whilst disabling interrupts for so long, move the status check to the
PCIe client driver instead.

Bug: 72643141
Signed-off-by: Roopesh Rajashekharaiah Nataraja <[email protected]>
Signed-off-by: Francisco Franco <[email protected]>
Signed-off-by: Michael <[email protected]>
Changes in 4.9.143: (51 commits)
        mm/huge_memory: rename freeze_page() to unmap_page()
        mm/huge_memory.c: reorder operations in __split_huge_page_tail()
        mm/huge_memory: splitting set mapping+index before unfreeze
        mm/huge_memory: fix lockdep complaint on 32-bit i_size_read()
        mm/khugepaged: collapse_shmem() stop if punched or truncated
        shmem: shmem_charge: verify max_block is not exceeded before inode update
        shmem: introduce shmem_inode_acct_block
        mm/khugepaged: fix crashes due to misaccounted holes
        mm/khugepaged: collapse_shmem() remember to clear holes
        mm/khugepaged: minor reorderings in collapse_shmem()
        mm/khugepaged: collapse_shmem() without freezing new_page
        mm/khugepaged: collapse_shmem() do not crash on Compound
        media: em28xx: Fix use-after-free when disconnecting
        Revert "wlcore: Add missing PM call for wlcore_cmd_wait_for_event_or_timeout()"
        net: skb_scrub_packet(): Scrub offload_fwd_mark
        rapidio/rionet: do not free skb before reading its length
        s390/qeth: fix length check in SNMP processing
        usbnet: ipheth: fix potential recvmsg bug and recvmsg bug 2
        kvm: mmu: Fix race in emulated page table writes
        kvm: svm: Ensure an IBPB on all affected CPUs when freeing a vmcb
        KVM: X86: Fix scan ioapic use-before-initialization
        xtensa: enable coprocessors that are being flushed
        xtensa: fix coprocessor context offset definitions
        Btrfs: ensure path name is null terminated at btrfs_control_ioctl
        perf/x86/intel: Move branch tracing setup to the Intel-specific source file
        perf/x86/intel: Add generic branch tracing check to intel_pmu_has_bts()
        fs: fix lost error code in dio_complete
        ALSA: wss: Fix invalid snd_free_pages() at error path
        ALSA: ac97: Fix incorrect bit shift at AC97-SPSA control write
        ALSA: control: Fix race between adding and removing a user element
        ALSA: sparc: Fix invalid snd_free_pages() at error path
        ext2: fix potential use after free
        dmaengine: at_hdmac: fix memory leak in at_dma_xlate()
        dmaengine: at_hdmac: fix module unloading
        btrfs: release metadata before running delayed refs
        USB: usb-storage: Add new IDs to ums-realtek
        usb: core: quirks: add RESET_RESUME quirk for Cherry G230 Stream series
        Revert "usb: dwc3: gadget: skip Set/Clear Halt when invalid"
        iio:st_magn: Fix enable device after trigger
        mm: use swp_offset as key in shmem_replace_page()
        Drivers: hv: vmbus: check the creation_status in vmbus_establish_gpadl()
        misc: mic/scif: fix copy-paste error in scif_create_remote_lookup
        efi/libstub: arm: support building with clang
        ARM: 8766/1: drop no-thumb-interwork in EABI mode
        ARM: 8767/1: add support for building ARM kernel with clang
        bus: arm-cci: remove unnecessary unreachable()
        ARM: trusted_foundations: do not use naked function
        workqueue: avoid clang warning
        efi/libstub: Make file I/O chunking x86-specific
        kbuild: Set KBUILD_CFLAGS before incl. arch Makefile
        Linux 4.9.143

Signed-off-by: Nathan Chancellor <[email protected]>
Signed-off-by: Michael <[email protected]>
This reverts commit e94591d.

This cleanup broke the parsing of procfs mount parameters.

Bug: 79705088
Change-Id: I0f07180ef9a994c884abfa269ffb273ee0bcbc0d
Signed-off-by: Alistair Strachan <[email protected]>
Signed-off-by: Michael <[email protected]>
@liuwang97 liuwang97 merged commit 7c72ca6 into liuwang97:Sphinx-Pie Dec 7, 2018
liuwang97 pushed a commit that referenced this pull request Dec 9, 2018
commit 26feb9bc3c5322d331d0b713106ac7631cbab938
Author: Ritesh Harjani <[email protected]>
Date:   Wed Aug 9 18:28:32 2017 +0530

    cfq: Give a chance for arming slice idle timer in case of group_idle

    In below scenario blkio cgroup does not work as per their assigned
    weights :-
    1. When the underlying device is nonrotational with a single HW queue
    with depth of >= CFQ_HW_QUEUE_MIN
    2. When the use case is forming two blkio cgroups cg1(weight 1000) &
    cg2(wight 100) and two processes(file1 and file2) doing sync IO in
    their respective blkio cgroups.

    For above usecase result of fio (without this patch):-
    file1: (groupid=0, jobs=1): err= 0: pid=685: Thu Jan  1 19:41:49 1970
      write: IOPS=1315, BW=41.1MiB/s (43.1MB/s)(1024MiB/24906msec)
    <...>
    file2: (groupid=0, jobs=1): err= 0: pid=686: Thu Jan  1 19:41:49 1970
      write: IOPS=1295, BW=40.5MiB/s (42.5MB/s)(1024MiB/25293msec)
    <...>
    // both the process BW is equal even though they belong to diff.
    cgroups with weight of 1000(cg1) and 100(cg2)

    In above case (for non rotational NCQ devices),
    as soon as the request from cg1 is completed and even
    though it is provided with higher set_slice=10, because of CFQ
    algorithm when the driver tries to fetch the request, CFQ expires
    this group without providing any idle time nor weight priority
    and schedules another cfq group (in this case cg2).
    And thus both cfq groups(cg1 & cg2) keep alternating to get the
    disk time and hence loses the cgroup weight based scheduling.

    Below patch gives a chance to cfq algorithm (cfq_arm_slice_timer)
    to arm the slice timer in case group_idle is enabled.
    In case if group_idle is also not required (including for nonrotational
    NCQ drives), we need to explicitly set group_idle = 0 from sysfs for
    such cases.

    With this patch result of fio(for above usecase) :-
    file1: (groupid=0, jobs=1): err= 0: pid=690: Thu Jan  1 00:06:08 1970
      write: IOPS=1706, BW=53.3MiB/s (55.9MB/s)(1024MiB/19197msec)
    <..>
    file2: (groupid=0, jobs=1): err= 0: pid=691: Thu Jan  1 00:06:08 1970
      write: IOPS=1043, BW=32.6MiB/s (34.2MB/s)(1024MiB/31401msec)
    <..>
    // In this processes BW is as per their respective cgroups weight.

    Change-Id: Ia68ba16e76fdcc60d66e256f94290c871c5b2a73
    Signed-off-by: Ritesh Harjani <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: mydongistiny <[email protected]>

commit 2133aba5a779fa206289ea3e1ebbc5ef67be7d2c
Author: Hou Tao <[email protected]>
Date:   Wed Mar 1 09:02:33 2017 +0800

    cfq-iosched: fix the delay of cfq_group's vdisktime under iops mode

    When adding a cfq_group into the cfq service tree, we use CFQ_IDLE_DELAY
    as the delay of cfq_group's vdisktime if there have been other cfq_groups
    already.

    When cfq is under iops mode, commit 9a7f38c ("cfq-iosched: Convert
    from jiffies to nanoseconds") could result in a large iops delay and
    lead to an abnormal io schedule delay for the added cfq_group. To fix
    it, we just need to revert to the old CFQ_IDLE_DELAY value: HZ / 5
    when iops mode is enabled.

    Despite having the same value, the delay of a cfq_queue in idle class
    and the delay of cfq_group are different things, so I define two new
    macros for the delay of a cfq_group under time-slice mode and iops mode.

    Change-Id: I6d3a048e063b2826136e5416c28c1a7b471f5d18
    Fixes: 9a7f38c ("cfq-iosched: Convert from jiffies to nanoseconds")
    Cc: <[email protected]> # 4.8+
    Signed-off-by: Hou Tao <[email protected]>
    Acked-by: Jan Kara <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: mydongistiny <[email protected]>

commit 9b5738156b8f9da812966499f8982b6cfd25e144
Author: Matthias Kaehlcke <[email protected]>
Date:   Fri May 26 14:22:37 2017 -0700

    cfq-iosched: Delete unused function min_vdisktime()

    This fixes the following warning when building with clang:

        block/cfq-iosched.c:970:19: error: unused function 'min_vdisktime'
            [-Werror,-Wunused-function]

    Change-Id: I74bcf4a5407496a627e6ac41b274c7a3cc887cc3
    Signed-off-by: Matthias Kaehlcke <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: mydongistiny <[email protected]>

commit 962bbb5e92abc53a11042a8d992057b6f1e7505a
Author: Markus Elfring <[email protected]>
Date:   Sat Jan 21 22:44:07 2017 +0100

    cfq-iosched: Adjust one function call together with a variable assignment

    The script "checkpatch.pl" pointed information out like the following.

    ERROR: do not use assignment in if condition

    Thus fix the affected source code place.

    Change-Id: I54338d5e9de5d3b8b593b63a535c98ec9a4a0f05
    Signed-off-by: Markus Elfring <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: mydongistiny <[email protected]>

commit a846d0ed19f1b51314a27a01810922643b457ec8
Author: Jens Axboe <[email protected]>
Date:   Thu Jun 9 15:47:29 2016 -0600

    cfq-iosched: temporarily boost queue priority for idle classes

    If we're queuing REQ_PRIO IO and the task is running at an idle IO
    class, then temporarily boost the priority. This prevents livelocks
    due to priority inversion, when a low priority task is holding file
    system resources while attempting to do IO.

    An example of that is shown below. An ioniced idle task is holding
    the directory mutex, while a normal priority task is trying to do
    a directory lookup.

    [478381.198925] ------------[ cut here ]------------
    [478381.200315] INFO: task ionice:1168369 blocked for more than 120 seconds.
    [478381.201324]       Not tainted 4.0.9-38_fbk5_hotfix1_2936_g85409c6 #1
    [478381.202278] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [478381.203462] ionice          D ffff8803692736a8     0 1168369      1 0x00000080
    [478381.203466]  ffff8803692736a8 ffff880399c21300 ffff880276adcc00 ffff880369273698
    [478381.204589]  ffff880369273fd8 0000000000000000 7fffffffffffffff 0000000000000002
    [478381.205752]  ffffffff8177d5e0 ffff8803692736c8 ffffffff8177cea7 0000000000000000
    [478381.206874] Call Trace:
    [478381.207253]  [<ffffffff8177d5e0>] ? bit_wait_io_timeout+0x80/0x80
    [478381.208175]  [<ffffffff8177cea7>] schedule+0x37/0x90
    [478381.208932]  [<ffffffff8177f5fc>] schedule_timeout+0x1dc/0x250
    [478381.209805]  [<ffffffff81421c17>] ? __blk_run_queue+0x37/0x50
    [478381.210706]  [<ffffffff810ca1c5>] ? ktime_get+0x45/0xb0
    [478381.211489]  [<ffffffff8177c407>] io_schedule_timeout+0xa7/0x110
    [478381.212402]  [<ffffffff810a8c2b>] ? prepare_to_wait+0x5b/0x90
    [478381.213280]  [<ffffffff8177d616>] bit_wait_io+0x36/0x50
    [478381.214063]  [<ffffffff8177d325>] __wait_on_bit+0x65/0x90
    [478381.214961]  [<ffffffff8177d5e0>] ? bit_wait_io_timeout+0x80/0x80
    [478381.215872]  [<ffffffff8177d47c>] out_of_line_wait_on_bit+0x7c/0x90
    [478381.216806]  [<ffffffff810a89f0>] ? wake_atomic_t_function+0x40/0x40
    [478381.217773]  [<ffffffff811f03aa>] __wait_on_buffer+0x2a/0x30
    [478381.218641]  [<ffffffff8123c557>] ext4_bread+0x57/0x70
    [478381.219425]  [<ffffffff8124498c>] __ext4_read_dirblock+0x3c/0x380
    [478381.220467]  [<ffffffff8124665d>] ext4_dx_find_entry+0x7d/0x170
    [478381.221357]  [<ffffffff8114c49e>] ? find_get_entry+0x1e/0xa0
    [478381.222208]  [<ffffffff81246bd4>] ext4_find_entry+0x484/0x510
    [478381.223090]  [<ffffffff812471a2>] ext4_lookup+0x52/0x160
    [478381.223882]  [<ffffffff811c401d>] lookup_real+0x1d/0x60
    [478381.224675]  [<ffffffff811c4698>] __lookup_hash+0x38/0x50
    [478381.225697]  [<ffffffff817745bd>] lookup_slow+0x45/0xab
    [478381.226941]  [<ffffffff811c690e>] link_path_walk+0x7ae/0x820
    [478381.227880]  [<ffffffff811c6a42>] path_init+0xc2/0x430
    [478381.228677]  [<ffffffff813e6e26>] ? security_file_alloc+0x16/0x20
    [478381.229776]  [<ffffffff811c8c57>] path_openat+0x77/0x620
    [478381.230767]  [<ffffffff81185c6e>] ? page_add_file_rmap+0x2e/0x70
    [478381.232019]  [<ffffffff811cb253>] do_filp_open+0x43/0xa0
    [478381.233016]  [<ffffffff8108c4a9>] ? creds_are_invalid+0x29/0x70
    [478381.234072]  [<ffffffff811c0cb0>] do_open_execat+0x70/0x170
    [478381.235039]  [<ffffffff811c1bf8>] do_execveat_common.isra.36+0x1b8/0x6e0
    [478381.236051]  [<ffffffff811c214c>] do_execve+0x2c/0x30
    [478381.236809]  [<ffffffff811ca392>] ? getname+0x12/0x20
    [478381.237564]  [<ffffffff811c23be>] SyS_execve+0x2e/0x40
    [478381.238338]  [<ffffffff81780a1d>] stub_execve+0x6d/0xa0
    [478381.239126] ------------[ cut here ]------------
    [478381.239915] ------------[ cut here ]------------
    [478381.240606] INFO: task python2.7:1168375 blocked for more than 120 seconds.
    [478381.242673]       Not tainted 4.0.9-38_fbk5_hotfix1_2936_g85409c6 #1
    [478381.243653] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [478381.244902] python2.7       D ffff88005cf8fb98     0 1168375 1168248 0x00000080
    [478381.244904]  ffff88005cf8fb98 ffff88016c1f0980 ffffffff81c134c0 ffff88016c1f11a0
    [478381.246023]  ffff88005cf8ffd8 ffff880466cd0cbc ffff88016c1f0980 00000000ffffffff
    [478381.247138]  ffff880466cd0cc0 ffff88005cf8fbb8 ffffffff8177cea7 ffff88005cf8fcc8
    [478381.248252] Call Trace:
    [478381.248630]  [<ffffffff8177cea7>] schedule+0x37/0x90
    [478381.249382]  [<ffffffff8177d08e>] schedule_preempt_disabled+0xe/0x10
    [478381.250465]  [<ffffffff8177e892>] __mutex_lock_slowpath+0x92/0x100
    [478381.251409]  [<ffffffff8177e91b>] mutex_lock+0x1b/0x2f
    [478381.252199]  [<ffffffff817745ae>] lookup_slow+0x36/0xab
    [478381.253023]  [<ffffffff811c690e>] link_path_walk+0x7ae/0x820
    [478381.253877]  [<ffffffff811aeb41>] ? try_charge+0xc1/0x700
    [478381.254690]  [<ffffffff811c6a42>] path_init+0xc2/0x430
    [478381.255525]  [<ffffffff813e6e26>] ? security_file_alloc+0x16/0x20
    [478381.256450]  [<ffffffff811c8c57>] path_openat+0x77/0x620
    [478381.257256]  [<ffffffff8115b2fb>] ? lru_cache_add_active_or_unevictable+0x2b/0xa0
    [478381.258390]  [<ffffffff8117b623>] ? handle_mm_fault+0x13f3/0x1720
    [478381.259309]  [<ffffffff811cb253>] do_filp_open+0x43/0xa0
    [478381.260139]  [<ffffffff811d7ae2>] ? __alloc_fd+0x42/0x120
    [478381.260962]  [<ffffffff811b95ac>] do_sys_open+0x13c/0x230
    [478381.261779]  [<ffffffff81011393>] ? syscall_trace_enter_phase1+0x113/0x170
    [478381.262851]  [<ffffffff811b96c2>] SyS_open+0x22/0x30
    [478381.263598]  [<ffffffff81780532>] system_call_fastpath+0x12/0x17
    [478381.264551] ------------[ cut here ]------------
    [478381.265377] ------------[ cut here ]------------

    Change-Id: I8e7e1dd2f9bbdf4b42954260ecde1a4ea53ad1dd
    Signed-off-by: Jens Axboe <[email protected]>
    Reviewed-by: Jeff Moyer <[email protected]>
    Signed-off-by: Park Ju Hyung <[email protected]>
    Signed-off-by: mydongistiny <[email protected]>

commit 05190a47bb024b6a03ce480054b27d1ea6fe315a
Author: Jens Axboe <[email protected]>
Date:   Wed Jun 10 08:01:20 2015 -0600

    cfq-iosched: fix the setting of IOPS mode on SSDs

    A previous commit wanted to make CFQ default to IOPS mode on
    non-rotational storage, however it did so when the queue was
    initialized and the non-rotational flag is only set later on
    in the probe.

    Add an elevator hook that gets called off the add_disk() path,
    at that point we know that feature probing has finished, and
    we can reliably check for the various flags that drivers can
    set.

    Change-Id: I854ce21ffae67cb7d9b4164dc77ad4bc57731ebb
    Fixes: 41c0126 ("block: Make CFQ default to IOPS mode on SSDs")
    Tested-by: Romain Francoise <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: mydongistiny <[email protected]>

commit 6bd1f2f55e64640caf1a2def7dea38cab3dc3c36
Author: Jan Kara <[email protected]>
Date:   Tue Jan 12 16:24:15 2016 +0100

    cfq-iosched: Don't group_idle if cfqq has big thinktime

    There is no point in idling on a cfq group if the only cfq queue that is
    there has too big thinktime.

    Change-Id: I988a6f6681410cdcc9b1f95e0e0a40ed60f60c31
    Signed-off-by: Jan Kara <[email protected]>
    Acked-by: Tejun Heo <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: mydongistiny <[email protected]>

Change-Id: Idaaa4f30cd537fa785a53775b75589df178aedd3
Signed-off-by: mydongistiny <[email protected]>
Signed-off-by: kdrag0n <[email protected]>
liuwang97 pushed a commit that referenced this pull request Dec 9, 2018
For the same reasons we already cache the leftmost pointer, apply the same
optimization for rb_last() calls.  Users must explicitly do this as
rb_root_cached only deals with the smallest node.

[[email protected]: brain fart #1]
  Link: http://lkml.kernel.org/r/[email protected]
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Davidlohr Bueso <[email protected]>
Cc: Jens Axboe <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Signed-off-by: kdrag0n <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants