diff --git a/android/GKI_VERSION b/android/GKI_VERSION index 0735418fed1f..5bf5856b8bc6 100644 --- a/android/GKI_VERSION +++ b/android/GKI_VERSION @@ -1 +1 @@ -LTS_5.4.61_9c7cbdf8b4cf +LTS_5.4.61_e0b1644a472e diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 41eb6b5ddfae..77fd73d8c10c 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -2682,6 +2682,7 @@ + @@ -11459,6 +11460,23 @@ + + + + + + + + + + + + + + + + + @@ -14468,23 +14486,6 @@ - - - - - - - - - - - - - - - - - @@ -16008,7 +16009,7 @@ - + @@ -16078,18 +16079,18 @@ - + - + - + @@ -16097,7 +16098,7 @@ - + @@ -37764,7 +37765,6 @@ - @@ -54745,25 +54745,6 @@ - - - - - - - - - - - - - - - - - - - @@ -56042,7 +56023,7 @@ - + @@ -56067,8 +56048,8 @@ - - + + @@ -56096,20 +56077,6 @@ - - - - - - - - - - - - - - @@ -63854,7 +63821,7 @@ - + @@ -63863,7 +63830,7 @@ - + @@ -67901,6 +67868,10 @@ + + + + @@ -72944,6 +72915,22 @@ + + + + + + + + + + + + + + + + @@ -73522,22 +73509,6 @@ - - - - - - - - - - - - - - - - @@ -89134,23 +89105,6 @@ - - - - - - - - - - - - - - - - - @@ -89497,14 +89451,6 @@ - - - - - - - - @@ -89953,7 +89899,7 @@ - + @@ -91372,7 +91318,7 @@ - + @@ -91571,7 +91517,7 @@ - + @@ -91717,17 +91663,6 @@ - - - - - - - - - - - @@ -93397,14 +93332,14 @@ - + - - + + - + @@ -93413,69 +93348,69 @@ - - - + + + - - - - + + + + - - + + - - - + + + - - - + + + - - + + - - - - + + + + - - + + - - - - + + + + - - + + - - + + - - + + - - + + @@ -108981,240 +108916,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -109367,18 +109071,7 @@ - - - - - - - - - - - @@ -109567,13 +109260,6 @@ - - - - - - - @@ -109581,10 +109267,6 @@ - - - - @@ -109799,7 +109481,7 @@ - + @@ -110505,6 +110187,17 @@ + + + + + + + + + + + @@ -113848,25 +113541,6 @@ - - - - - - - - - - - - - - - - - - - @@ -115836,6 +115510,25 @@ + + + + + + + + + + + + + + + + + + + @@ -118561,7 +118254,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -118645,6 +118599,17 @@ + + + + + + + + + + + @@ -118708,7 +118673,6 @@ - @@ -123290,6 +123254,14 @@ + + + + + + + + @@ -124597,6 +124569,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -125347,9 +125360,10 @@ + - + @@ -130921,6 +130935,6 @@ diff --git a/android/abi_gki_aarch64_d6430e6763.xml b/android/abi_gki_aarch64_d6430e6763.xml index 9e395e56f806..3612f4152f77 100644 --- a/android/abi_gki_aarch64_d6430e6763.xml +++ b/android/abi_gki_aarch64_d6430e6763.xml @@ -1530,6 +1530,7 @@ + @@ -1667,6 +1668,7 @@ + @@ -7671,39 +7673,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -7814,6 +7784,24 @@ + + + + + + + + + + + + + + + + + + @@ -8388,6 +8376,20 @@ + + + + + + + + + + + + + + @@ -8401,6 +8403,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -11400,44 +11422,44 @@ - - - + + + - - - - - + + + + + - - - + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - + + + @@ -13168,17 +13190,6 @@ - - - - - - - - - - - @@ -16036,7 +16047,7 @@ - + @@ -18046,7 +18057,7 @@ - + @@ -20889,6 +20900,17 @@ + + + + + + + + + + + @@ -22395,6 +22417,17 @@ + + + + + + + + + + + @@ -24176,6 +24209,7 @@ + @@ -24215,7 +24249,7 @@ - + @@ -24321,7 +24355,7 @@ - + @@ -24359,7 +24393,7 @@ - + @@ -24487,7 +24521,7 @@ - + @@ -27073,7 +27107,7 @@ - + @@ -28020,7 +28054,7 @@ - + @@ -29410,6 +29444,7 @@ + @@ -33238,8 +33273,14 @@ + + + + + + @@ -33395,6 +33436,10 @@ + + + + @@ -36203,6 +36248,10 @@ + + + + @@ -39236,14 +39285,6 @@ - - - - - - - - @@ -43424,7 +43465,7 @@ - + @@ -43477,6 +43518,14 @@ + + + + + + + + @@ -48767,6 +48816,17 @@ + + + + + + + + + + + @@ -48796,17 +48856,6 @@ - - - - - - - - - - - @@ -53917,7 +53966,7 @@ - + @@ -54615,14 +54664,6 @@ - - - - - - - - @@ -54690,6 +54731,14 @@ + + + + + + + + @@ -55107,7 +55156,7 @@ - + @@ -55297,7 +55346,7 @@ - + @@ -57153,7 +57202,7 @@ - + @@ -66412,7 +66461,7 @@ - + @@ -67687,7 +67736,7 @@ - + @@ -67942,7 +67991,7 @@ - + @@ -70241,7 +70290,7 @@ - + @@ -70736,8 +70785,6 @@ - - @@ -83159,75 +83206,75 @@ - + - + - - - + + + - - - - + + + + - - + + - - - + + + - - - + + + - - + + - - - - + + + + - - + + - - - - + + + + - - + + - - + + - - + + - - + + @@ -83658,17 +83705,6 @@ - - - - - - - - - - - @@ -90578,11 +90614,6 @@ - - - - - @@ -91070,22 +91101,6 @@ - - - - - - - - - - - - - - - - @@ -91182,12 +91197,275 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -91250,7 +91528,7 @@ - + @@ -91325,75 +91603,14 @@ - - - - - - - - - - - - - + - + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -91472,32 +91689,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -91613,23 +91804,9 @@ - - - - - - - - - - - - - - - + @@ -91704,23 +91881,6 @@ - - - - - - - - - - - - - - - - - @@ -91854,154 +92014,14 @@ - + - + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -92040,16 +92060,14 @@ - - - + @@ -92061,7 +92079,7 @@ - + @@ -92144,107 +92162,99 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index bb024bf3a5d1..00e48da5d33a 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -1468,6 +1468,7 @@ netlink_unicast net_ratelimit new_inode + nf_conntrack_destroy nla_memcpy __nla_parse nla_put_64bit @@ -1665,6 +1666,7 @@ pci_walk_bus pci_write_config_dword pci_write_config_word + pci_dev_present PDE_DATA __per_cpu_offset perf_trace_buf_alloc diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index f121a388508e..77e707f79064 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -19,6 +19,7 @@ CONFIG_UCLAMP_TASK=y CONFIG_CGROUPS=y CONFIG_MEMCG=y CONFIG_MEMCG_SWAP=y +CONFIG_BLK_CGROUP=y CONFIG_CGROUP_SCHED=y # CONFIG_FAIR_GROUP_SCHED is not set CONFIG_UCLAMP_TASK_GROUP=y diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index 79d8b75310a8..34c14810f4b3 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -84,8 +84,7 @@ static void dma_buf_release(struct dentry *dentry) int dtor_ret = 0; dmabuf = dentry->d_fsdata; - - if (!dmabuf) + if (unlikely(!dmabuf)) return; msm_dma_buf = to_msm_dma_buf(dmabuf); diff --git a/kernel/kthread.c b/kernel/kthread.c index 1e9bf63a30de..ec0bdcc79ef9 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -806,14 +807,15 @@ static void kthread_insert_work_sanity_check(struct kthread_worker *worker, /* insert @work before @pos in @worker */ static void kthread_insert_work(struct kthread_worker *worker, struct kthread_work *work, - struct list_head *pos) + struct list_head *pos, + struct wake_q_head *wake_q) { kthread_insert_work_sanity_check(worker, work); list_add_tail(&work->node, pos); work->worker = worker; if (!worker->current_work && likely(worker->task)) - wake_up_process(worker->task); + wake_q_add(wake_q, worker->task); } /** @@ -831,15 +833,19 @@ static void kthread_insert_work(struct kthread_worker *worker, bool kthread_queue_work(struct kthread_worker *worker, struct kthread_work *work) { - bool ret = false; + DEFINE_WAKE_Q(wake_q); unsigned long flags; + bool ret = false; raw_spin_lock_irqsave(&worker->lock, flags); if (!queuing_blocked(worker, work)) { - kthread_insert_work(worker, work, &worker->work_list); + kthread_insert_work(worker, work, &worker->work_list, &wake_q); ret = true; } raw_spin_unlock_irqrestore(&worker->lock, flags); + + wake_up_q(&wake_q); + return ret; } EXPORT_SYMBOL_GPL(kthread_queue_work); @@ -857,6 +863,7 @@ void kthread_delayed_work_timer_fn(struct timer_list *t) struct kthread_delayed_work *dwork = from_timer(dwork, t, timer); struct kthread_work *work = &dwork->work; struct kthread_worker *worker = work->worker; + DEFINE_WAKE_Q(wake_q); unsigned long flags; /* @@ -873,15 +880,18 @@ void kthread_delayed_work_timer_fn(struct timer_list *t) /* Move the work from worker->delayed_work_list. */ WARN_ON_ONCE(list_empty(&work->node)); list_del_init(&work->node); - kthread_insert_work(worker, work, &worker->work_list); + kthread_insert_work(worker, work, &worker->work_list, &wake_q); raw_spin_unlock_irqrestore(&worker->lock, flags); + + wake_up_q(&wake_q); } EXPORT_SYMBOL(kthread_delayed_work_timer_fn); static void __kthread_queue_delayed_work(struct kthread_worker *worker, struct kthread_delayed_work *dwork, - unsigned long delay) + unsigned long delay, + struct wake_q_head *wake_q) { struct timer_list *timer = &dwork->timer; struct kthread_work *work = &dwork->work; @@ -897,7 +907,7 @@ static void __kthread_queue_delayed_work(struct kthread_worker *worker, * on that there's no such delay when @delay is 0. */ if (!delay) { - kthread_insert_work(worker, work, &worker->work_list); + kthread_insert_work(worker, work, &worker->work_list, wake_q); return; } @@ -930,17 +940,21 @@ bool kthread_queue_delayed_work(struct kthread_worker *worker, unsigned long delay) { struct kthread_work *work = &dwork->work; + DEFINE_WAKE_Q(wake_q); unsigned long flags; bool ret = false; raw_spin_lock_irqsave(&worker->lock, flags); if (!queuing_blocked(worker, work)) { - __kthread_queue_delayed_work(worker, dwork, delay); + __kthread_queue_delayed_work(worker, dwork, delay, &wake_q); ret = true; } raw_spin_unlock_irqrestore(&worker->lock, flags); + + wake_up_q(&wake_q); + return ret; } EXPORT_SYMBOL_GPL(kthread_queue_delayed_work); @@ -969,6 +983,7 @@ void kthread_flush_work(struct kthread_work *work) KTHREAD_WORK_INIT(fwork.work, kthread_flush_work_fn), COMPLETION_INITIALIZER_ONSTACK(fwork.done), }; + DEFINE_WAKE_Q(wake_q); struct kthread_worker *worker; bool noop = false; @@ -981,15 +996,18 @@ void kthread_flush_work(struct kthread_work *work) WARN_ON_ONCE(work->worker != worker); if (!list_empty(&work->node)) - kthread_insert_work(worker, &fwork.work, work->node.next); + kthread_insert_work(worker, &fwork.work, + work->node.next, &wake_q); else if (worker->current_work == work) kthread_insert_work(worker, &fwork.work, - worker->work_list.next); + worker->work_list.next, &wake_q); else noop = true; raw_spin_unlock_irq(&worker->lock); + wake_up_q(&wake_q); + if (!noop) wait_for_completion(&fwork.done); } @@ -1067,6 +1085,7 @@ bool kthread_mod_delayed_work(struct kthread_worker *worker, unsigned long delay) { struct kthread_work *work = &dwork->work; + DEFINE_WAKE_Q(wake_q); unsigned long flags; int ret = false; @@ -1085,9 +1104,12 @@ bool kthread_mod_delayed_work(struct kthread_worker *worker, ret = __kthread_cancel_work(work, true, &flags); fast_queue: - __kthread_queue_delayed_work(worker, dwork, delay); + __kthread_queue_delayed_work(worker, dwork, delay, &wake_q); out: raw_spin_unlock_irqrestore(&worker->lock, flags); + + wake_up_q(&wake_q); + return ret; } EXPORT_SYMBOL_GPL(kthread_mod_delayed_work); diff --git a/mm/memblock.c b/mm/memblock.c index 2b94c94cf97a..6cd835034785 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -1630,6 +1630,7 @@ phys_addr_t __init_memblock memblock_end_of_DRAM(void) return (memblock.memory.regions[idx].base + memblock.memory.regions[idx].size); } +EXPORT_SYMBOL_GPL(memblock_end_of_DRAM); static phys_addr_t __init_memblock __find_max_addr(phys_addr_t limit) {