From 640610dbc44a041ae1ff22240f195d2ade16f1da Mon Sep 17 00:00:00 2001 From: Lukasz Luba Date: Thu, 10 Jun 2021 16:03:22 +0100 Subject: [PATCH 01/94] UPSTREAM: thermal: cpufreq_cooling: Update also offline CPUs per-cpu thermal_pressure The thermal pressure signal gives information to the scheduler about reduced CPU capacity due to thermal. It is based on a value stored in a per-cpu 'thermal_pressure' variable. The online CPUs will get the new value there, while the offline won't. Unfortunately, when the CPU is back online, the value read from per-cpu variable might be wrong (stale data). This might affect the scheduler decisions, since it sees the CPU capacity differently than what is actually available. Fix it by making sure that all online+offline CPUs would get the proper value in their per-cpu variable when thermal framework sets capping. Fixes: f12e4f66ab6a3 ("thermal/cpu-cooling: Update thermal pressure in case of a maximum frequency capping") Signed-off-by: Lukasz Luba Acked-by: Viresh Kumar Link: https://lore.kernel.org/all/20210614191030.22241-1-lukasz.luba@arm.com/ Bug: 199501011 Change-Id: I10cceb48b72ccce1f51cfc0a7ecfa8d8e67d4394 (cherry picked from commit 2ad8ccc17d1e4270cf65a3f2a07a7534aa23e3fb) Signed-off-by: Ram Chandrasekar --- drivers/thermal/cpufreq_cooling.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/thermal/cpufreq_cooling.c b/drivers/thermal/cpufreq_cooling.c index 3f6a69ccc173..6e1d6a31ee4f 100644 --- a/drivers/thermal/cpufreq_cooling.c +++ b/drivers/thermal/cpufreq_cooling.c @@ -443,7 +443,7 @@ static int cpufreq_set_cur_state(struct thermal_cooling_device *cdev, ret = freq_qos_update_request(&cpufreq_cdev->qos_req, frequency); if (ret >= 0) { cpufreq_cdev->cpufreq_state = state; - cpus = cpufreq_cdev->policy->cpus; + cpus = cpufreq_cdev->policy->related_cpus; max_capacity = arch_scale_cpu_capacity(cpumask_first(cpus)); capacity = frequency * max_capacity; capacity /= cpufreq_cdev->policy->cpuinfo.max_freq; From fca745e32dfec052ecc04431f0ca58d49cce8e94 Mon Sep 17 00:00:00 2001 From: Akilesh Kailash Date: Mon, 13 Sep 2021 09:26:42 +0000 Subject: [PATCH 02/94] FROMLIST: dm-verity: skip verity_handle_error on I/O errors If there is an I/O error and FEC correction fails, return an error instead of calling verity_handle_error(). Suggested-by: Sami Tolvanen Signed-off-by: Akilesh Kailash Bug: 197830746 Change-Id: Idd5f65bb72c78a1cca44e5593e40880b2408b564 Link: https://lore.kernel.org/all/20210913092642.3237796-1-akailash@google.com/ Signed-off-by: Elliot Berman --- drivers/md/dm-verity-target.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/md/dm-verity-target.c b/drivers/md/dm-verity-target.c index 808a98ef624c..9d5c6dd5b756 100644 --- a/drivers/md/dm-verity-target.c +++ b/drivers/md/dm-verity-target.c @@ -475,6 +475,7 @@ static int verity_verify_io(struct dm_verity_io *io) struct bvec_iter start; unsigned b; struct crypto_wait wait; + struct bio *bio = dm_bio_from_per_bio_data(io, v->ti->per_io_data_size); for (b = 0; b < io->n_blocks; b++) { int r; @@ -529,9 +530,17 @@ static int verity_verify_io(struct dm_verity_io *io) else if (verity_fec_decode(v, io, DM_VERITY_BLOCK_TYPE_DATA, cur_block, NULL, &start) == 0) continue; - else if (verity_handle_err(v, DM_VERITY_BLOCK_TYPE_DATA, + else { + if (bio->bi_status) { + /* + * Error correction failed; Just return error + */ + return -EIO; + } + if (verity_handle_err(v, DM_VERITY_BLOCK_TYPE_DATA, cur_block)) - return -EIO; + return -EIO; + } } return 0; From fd2214199a952aec25440b8a73ac017e889adf3b Mon Sep 17 00:00:00 2001 From: Li Li Date: Tue, 7 Sep 2021 16:12:53 -0700 Subject: [PATCH 03/94] FROMGIT: binder: fix freeze race Currently cgroup freezer is used to freeze the application threads, and BINDER_FREEZE is used to freeze the corresponding binder interface. There's already a mechanism in ioctl(BINDER_FREEZE) to wait for any existing transactions to drain out before actually freezing the binder interface. But freezing an app requires 2 steps, freezing the binder interface with ioctl(BINDER_FREEZE) and then freezing the application main threads with cgroupfs. This is not an atomic operation. The following race issue might happen. 1) Binder interface is frozen by ioctl(BINDER_FREEZE); 2) Main thread A initiates a new sync binder transaction to process B; 3) Main thread A is frozen by "echo 1 > cgroup.freeze"; 4) The response from process B reaches the frozen thread, which will unexpectedly fail. This patch provides a mechanism to check if there's any new pending transaction happening between ioctl(BINDER_FREEZE) and freezing the main thread. If there's any, the main thread freezing operation can be rolled back to finish the pending transaction. Furthermore, the response might reach the binder driver before the rollback actually happens. That will still cause failed transaction. As the other process doesn't wait for another response of the response, the response transaction failure can be fixed by treating the response transaction like an oneway/async one, allowing it to reach the frozen thread. And it will be consumed when the thread gets unfrozen later. NOTE: This patch reuses the existing definition of struct binder_frozen_status_info but expands the bit assignments of __u32 member sync_recv. To ensure backward compatibility, bit 0 of sync_recv still indicates there's an outstanding sync binder transaction. This patch adds new information to bit 1 of sync_recv, indicating the binder transaction happens exactly when there's a race. If an existing userspace app runs on a new kernel, a sync binder call will set bit 0 of sync_recv so ioctl(BINDER_GET_FROZEN_INFO) still return the expected value (true). The app just doesn't check bit 1 intentionally so it doesn't have the ability to tell if there's a race. This behavior is aligned with what happens on an old kernel which doesn't set bit 1 at all. A new userspace app can 1) check bit 0 to know if there's a sync binder transaction happened when being frozen - same as before; and 2) check bit 1 to know if that sync binder transaction happened exactly when there's a race - a new information for rollback decision. Fixes: 432ff1e91694 ("binder: BINDER_FREEZE ioctl") Acked-by: Todd Kjos Cc: stable Signed-off-by: Li Li Test: stress test with apps being frozen and initiating binder calls at the same time, confirmed the pending transactions succeeded. Link: https://lore.kernel.org/r/20210910164210.2282716-2-dualli@chromium.org Signed-off-by: Greg Kroah-Hartman Bug: 198493121 (cherry picked from commit b564171ade70570b7f335fa8ed17adb28409e3ac git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git char-misc-linus) Change-Id: I488ba75056f18bb3094ba5007027b76b5caebec9 --- drivers/android/binder.c | 35 ++++++++++++++++++++++++----- drivers/android/binder_internal.h | 2 ++ include/uapi/linux/android/binder.h | 7 ++++++ 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index b28b56e6e4a2..2c0a6058b3d7 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -3187,9 +3187,8 @@ static void binder_transaction(struct binder_proc *proc, if (reply) { binder_enqueue_thread_work(thread, tcomplete); binder_inner_proc_lock(target_proc); - if (target_thread->is_dead || target_proc->is_frozen) { - return_error = target_thread->is_dead ? - BR_DEAD_REPLY : BR_FROZEN_REPLY; + if (target_thread->is_dead) { + return_error = BR_DEAD_REPLY; binder_inner_proc_unlock(target_proc); goto err_dead_proc_or_thread; } @@ -4795,6 +4794,22 @@ static int binder_ioctl_get_node_debug_info(struct binder_proc *proc, return 0; } +static bool binder_txns_pending_ilocked(struct binder_proc *proc) +{ + struct rb_node *n; + struct binder_thread *thread; + + if (proc->outstanding_txns > 0) + return true; + + for (n = rb_first(&proc->threads); n; n = rb_next(n)) { + thread = rb_entry(n, struct binder_thread, rb_node); + if (thread->transaction_stack) + return true; + } + return false; +} + static int binder_ioctl_freeze(struct binder_freeze_info *info, struct binder_proc *target_proc) { @@ -4826,8 +4841,13 @@ static int binder_ioctl_freeze(struct binder_freeze_info *info, (!target_proc->outstanding_txns), msecs_to_jiffies(info->timeout_ms)); - if (!ret && target_proc->outstanding_txns) - ret = -EAGAIN; + /* Check pending transactions that wait for reply */ + if (ret >= 0) { + binder_inner_proc_lock(target_proc); + if (binder_txns_pending_ilocked(target_proc)) + ret = -EAGAIN; + binder_inner_proc_unlock(target_proc); + } if (ret < 0) { binder_inner_proc_lock(target_proc); @@ -4843,6 +4863,7 @@ static int binder_ioctl_get_freezer_info( { struct binder_proc *target_proc; bool found = false; + __u32 txns_pending; info->sync_recv = 0; info->async_recv = 0; @@ -4852,7 +4873,9 @@ static int binder_ioctl_get_freezer_info( if (target_proc->pid == info->pid) { found = true; binder_inner_proc_lock(target_proc); - info->sync_recv |= target_proc->sync_recv; + txns_pending = binder_txns_pending_ilocked(target_proc); + info->sync_recv |= target_proc->sync_recv | + (txns_pending << 1); info->async_recv |= target_proc->async_recv; binder_inner_proc_unlock(target_proc); } diff --git a/drivers/android/binder_internal.h b/drivers/android/binder_internal.h index 2ddbec09d2f9..8508a7e45865 100644 --- a/drivers/android/binder_internal.h +++ b/drivers/android/binder_internal.h @@ -399,6 +399,8 @@ struct binder_priority { * binder transactions * (protected by @inner_lock) * @sync_recv: process received sync transactions since last frozen + * bit 0: received sync transaction after being frozen + * bit 1: new pending sync transaction during freezing * (protected by @inner_lock) * @async_recv: process received async transactions since last frozen * (protected by @inner_lock) diff --git a/include/uapi/linux/android/binder.h b/include/uapi/linux/android/binder.h index 74dcd8e92e50..2d3f015e2ae3 100644 --- a/include/uapi/linux/android/binder.h +++ b/include/uapi/linux/android/binder.h @@ -273,7 +273,14 @@ struct binder_freeze_info { struct binder_frozen_status_info { __u32 pid; + + /* process received sync transactions since last frozen + * bit 0: received sync transaction after being frozen + * bit 1: new pending sync transaction during freezing + */ __u32 sync_recv; + + /* process received async transactions since last frozen */ __u32 async_recv; }; From 4d9d866fe52c579a423be7c9d0dda2d4790ec7ee Mon Sep 17 00:00:00 2001 From: Vinayak Menon Date: Mon, 13 Sep 2021 16:27:10 +0530 Subject: [PATCH 04/94] ANDROID: mm: unlock the page on speculative fault retry It is observed that certain file accesses are failing when speculative file faults are enabled via "allow_file_spec_access". This is because of not unlocking the page on error in filemap_map_pages, and the locked page causes endless retry of fault. Bug: 199706590 Fixes: 35eacb5c87b9 ("ANDROID: mm: allow vmas with vm_ops to be speculatively handled") Change-Id: Ic7643ea8188aa281754318866fde09eea094c5da Signed-off-by: Vinayak Menon --- mm/filemap.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/filemap.c b/mm/filemap.c index d60dd67000fb..632734e9f8f1 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2996,6 +2996,8 @@ vm_fault_t filemap_map_pages(struct vm_fault *vmf, addr = vma->vm_start + ((start_pgoff - vma->vm_pgoff) << PAGE_SHIFT); if (!pte_map_lock_addr(vmf, addr)) { + unlock_page(head); + put_page(head); ret = VM_FAULT_RETRY; goto out; } From b55536ba69596b46ede8ca776e0ab963877439ac Mon Sep 17 00:00:00 2001 From: Jay Jayanna Date: Mon, 13 Sep 2021 12:15:54 -0700 Subject: [PATCH 05/94] ANDROID: abi_gki_aarch64_qcom: Add vsock functions Leaf changes summary: 2 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 2 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 2 Added functions: [A] 'function void vsock_addr_init(struct sockaddr_vm *addr, u32 cid, u32 port)' [A] 'function void vsock_remove_sock(struct vsock_sock *vsk)' Bug: 199425983 Change-Id: I772835db6a1839f0ff658ebfbd1e898278dbcf48 Signed-off-by: Jay Jayanna Signed-off-by: Tony Truong --- android/abi_gki_aarch64.xml | 666 ++++++++++++++++++----------------- android/abi_gki_aarch64_qcom | 2 + 2 files changed, 341 insertions(+), 327 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index bb7b84185652..78c2a37131d5 100755 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -5253,9 +5253,11 @@ + + @@ -7021,7 +7023,7 @@ - + @@ -22586,42 +22588,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -31980,60 +31982,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37927,7 +37929,7 @@ - + @@ -48429,18 +48431,18 @@ - + - + - + - + - + @@ -54966,390 +54968,390 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -64458,7 +64460,7 @@ - + @@ -72811,15 +72813,15 @@ - + - + - + - + @@ -79233,54 +79235,54 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -95236,78 +95238,78 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -100063,33 +100065,33 @@ - + - + - + - + - + - + - + - + - + - + @@ -102193,66 +102195,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -107894,99 +107896,99 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -118886,16 +118888,16 @@ - - - - - + + + + + - - - + + + @@ -122382,9 +122384,9 @@ - - - + + + @@ -122429,9 +122431,9 @@ - - - + + + @@ -123115,12 +123117,12 @@ - - - - - - + + + + + + @@ -125383,8 +125385,8 @@ - - + + @@ -125419,16 +125421,16 @@ - - - - + + + + - - - - + + + + @@ -125564,10 +125566,10 @@ - - - - + + + + @@ -125585,8 +125587,8 @@ - - + + @@ -135103,16 +135105,16 @@ - - - - - + + + + + - - - + + + @@ -138196,9 +138198,9 @@ - - - + + + @@ -138207,8 +138209,8 @@ - - + + @@ -138328,6 +138330,12 @@ + + + + + + @@ -138341,6 +138349,10 @@ + + + + diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index ad24f569f97a..b4072325b581 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -2983,6 +2983,8 @@ vprintk vscnprintf vsnprintf + vsock_addr_init + vsock_remove_sock vunmap vzalloc wait_for_completion From 5a4ed990f250d22229be27d990dd2a40549aa53f Mon Sep 17 00:00:00 2001 From: Todd Kjos Date: Mon, 30 Aug 2021 12:51:46 -0700 Subject: [PATCH 06/94] FROMGIT: binder: make sure fd closes complete During BC_FREE_BUFFER processing, the BINDER_TYPE_FDA object cleanup may close 1 or more fds. The close operations are completed using the task work mechanism -- which means the thread needs to return to userspace or the file object may never be dereferenced -- which can lead to hung processes. Force the binder thread back to userspace if an fd is closed during BC_FREE_BUFFER handling. Fixes: 80cd795630d6 ("binder: fix use-after-free due to ksys_close() during fdget()") Cc: stable Reviewed-by: Martijn Coenen Acked-by: Christian Brauner Signed-off-by: Todd Kjos Link: https://lore.kernel.org/r/20210830195146.587206-1-tkjos@google.com Signed-off-by: Greg Kroah-Hartman Bug: 111997867 (cherry picked from commit 5fdb55c1ac9585eb23bb2541d5819224429e103d git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git Change-Id: Idffa9b54edfc289d95b24f7ae2aa11ae494c7158 --- drivers/android/binder.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 2c0a6058b3d7..2cc96a0e75ae 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -1977,6 +1977,7 @@ static void binder_deferred_fd_close(int fd) } static void binder_transaction_buffer_release(struct binder_proc *proc, + struct binder_thread *thread, struct binder_buffer *buffer, binder_size_t failed_at, bool is_failure) @@ -2136,8 +2137,16 @@ static void binder_transaction_buffer_release(struct binder_proc *proc, &proc->alloc, &fd, buffer, offset, sizeof(fd)); WARN_ON(err); - if (!err) + if (!err) { binder_deferred_fd_close(fd); + /* + * Need to make sure the thread goes + * back to userspace to complete the + * deferred close + */ + if (thread) + thread->looper_need_return = true; + } } } break; default: @@ -3255,7 +3264,7 @@ static void binder_transaction(struct binder_proc *proc, err_copy_data_failed: binder_free_txn_fixups(t); trace_binder_transaction_failed_buffer_release(t->buffer); - binder_transaction_buffer_release(target_proc, t->buffer, + binder_transaction_buffer_release(target_proc, NULL, t->buffer, buffer_offset, true); if (target_node) binder_dec_node_tmpref(target_node); @@ -3334,7 +3343,9 @@ static void binder_transaction(struct binder_proc *proc, * Cleanup buffer and free it. */ static void -binder_free_buf(struct binder_proc *proc, struct binder_buffer *buffer) +binder_free_buf(struct binder_proc *proc, + struct binder_thread *thread, + struct binder_buffer *buffer) { binder_inner_proc_lock(proc); if (buffer->transaction) { @@ -3362,7 +3373,7 @@ binder_free_buf(struct binder_proc *proc, struct binder_buffer *buffer) binder_node_inner_unlock(buf_node); } trace_binder_transaction_buffer_release(buffer); - binder_transaction_buffer_release(proc, buffer, 0, false); + binder_transaction_buffer_release(proc, thread, buffer, 0, false); binder_alloc_free_buf(&proc->alloc, buffer); } @@ -3556,7 +3567,7 @@ static int binder_thread_write(struct binder_proc *proc, proc->pid, thread->pid, (u64)data_ptr, buffer->debug_id, buffer->transaction ? "active" : "finished"); - binder_free_buf(proc, buffer); + binder_free_buf(proc, thread, buffer); break; } @@ -4250,7 +4261,7 @@ static int binder_thread_read(struct binder_proc *proc, buffer->transaction = NULL; binder_cleanup_transaction(t, "fd fixups failed", BR_FAILED_REPLY); - binder_free_buf(proc, buffer); + binder_free_buf(proc, thread, buffer); binder_debug(BINDER_DEBUG_FAILED_TRANSACTION, "%d:%d %stransaction %d fd fixups failed %d/%d, line %d\n", proc->pid, thread->pid, From e6e66cb3dd7378c39023247e2b385cdbb6017bc3 Mon Sep 17 00:00:00 2001 From: Puma Hsu Date: Tue, 14 Sep 2021 15:15:59 +0800 Subject: [PATCH 07/94] ANDROID: Update the ABI representation Leaf changes summary: 4 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 2 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 2 Added variables 2 Added functions: [A] 'function int __traceiter_android_vh_usb_dev_resume(void*, usb_device*, pm_message_t, int*)' [A] 'function int __traceiter_android_vh_usb_dev_suspend(void*, usb_device*, pm_message_t, int*)' 2 Added variables: [A] 'tracepoint __tracepoint_android_vh_usb_dev_resume' [A] 'tracepoint __tracepoint_android_vh_usb_dev_suspend' Bug: 187770891 Signed-off-by: Puma Hsu Change-Id: I76f8ebca7ed9e1b4c9b863d6d9172e8ba8e53b5c --- android/abi_gki_aarch64.xml | 20 ++++++++++++++++++++ android/abi_gki_aarch64_generic | 9 +++++++++ 2 files changed, 29 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 78c2a37131d5..50804ed6ca17 100755 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -486,6 +486,8 @@ + + @@ -5596,6 +5598,8 @@ + + @@ -113265,6 +113269,20 @@ + + + + + + + + + + + + + + @@ -113821,6 +113839,8 @@ + + diff --git a/android/abi_gki_aarch64_generic b/android/abi_gki_aarch64_generic index f7b519e42ac4..6f3e75fe3ed2 100644 --- a/android/abi_gki_aarch64_generic +++ b/android/abi_gki_aarch64_generic @@ -398,6 +398,7 @@ __devm_regmap_init_spi devm_regulator_bulk_get devm_regulator_get + devm_regulator_get_exclusive devm_regulator_get_optional devm_regulator_put devm_regulator_register @@ -967,6 +968,7 @@ __ioremap io_schedule_timeout iounmap + iov_iter_bvec ip_send_check iput __irq_alloc_descs @@ -1052,6 +1054,7 @@ kstrtouint kstrtouint_from_user kstrtoull + kstrtoull_from_user kthread_bind kthread_bind_mask kthread_cancel_delayed_work_sync @@ -1246,6 +1249,7 @@ of_get_regulator_init_data of_iomap of_irq_find_parent + of_irq_get of_irq_get_byname of_irq_parse_one of_machine_is_compatible @@ -1355,6 +1359,7 @@ pinctrl_remove_gpio_range pinctrl_select_state pin_get_name + pin_user_pages pin_user_pages_fast pin_user_pages_remote pktgen_xfrm_outer_mode_output @@ -1956,6 +1961,8 @@ __traceiter_android_vh_ufs_send_tm_command __traceiter_android_vh_ufs_send_uic_command __traceiter_android_vh_ufs_update_sysfs + __traceiter_android_vh_usb_dev_resume + __traceiter_android_vh_usb_dev_suspend __traceiter_clock_set_rate __traceiter_cpu_frequency __traceiter_device_pm_callback_end @@ -2031,6 +2038,8 @@ __tracepoint_android_vh_ufs_send_tm_command __tracepoint_android_vh_ufs_send_uic_command __tracepoint_android_vh_ufs_update_sysfs + __tracepoint_android_vh_usb_dev_resume + __tracepoint_android_vh_usb_dev_suspend __tracepoint_clock_set_rate __tracepoint_cpu_frequency __tracepoint_device_pm_callback_end From 6773d5cd773f65a55be6e115c5cd458593e02477 Mon Sep 17 00:00:00 2001 From: Jack Pham Date: Tue, 14 Sep 2021 18:00:08 -0700 Subject: [PATCH 08/94] Revert "FROMLIST: usb: gadget: f_uac2: Add missing companion descriptor for feedback EP" This reverts commit ab9ceb4334cd02e593c0eae77f54f6d75103846d. The change ended up getting reworked in upstream, so revert and reapply the latest change that merged. Bug: 199044440 Change-Id: If03d1c4a063e182e02b4a9b55c6e702ce860c2e0 Signed-off-by: Jack Pham --- drivers/usb/gadget/function/f_uac2.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/usb/gadget/function/f_uac2.c b/drivers/usb/gadget/function/f_uac2.c index 4b506412e273..bdc7e6e78455 100644 --- a/drivers/usb/gadget/function/f_uac2.c +++ b/drivers/usb/gadget/function/f_uac2.c @@ -527,7 +527,6 @@ static struct usb_descriptor_header *ss_audio_desc[] = { (struct usb_descriptor_header *)&ss_epout_desc_comp, (struct usb_descriptor_header *)&as_iso_out_desc, (struct usb_descriptor_header *)&ss_epin_fback_desc, - (struct usb_descriptor_header *)&ss_epin_desc_comp, (struct usb_descriptor_header *)&std_as_in_if0_desc, (struct usb_descriptor_header *)&std_as_in_if1_desc, @@ -661,11 +660,8 @@ static void setup_headers(struct f_uac2_opts *opts, headers[i++] = USBDHDR(&as_iso_out_desc); - if (EPOUT_FBACK_IN_EN(opts)) { + if (EPOUT_FBACK_IN_EN(opts)) headers[i++] = USBDHDR(epin_fback_desc); - if (epin_desc_comp) - headers[i++] = USBDHDR(epin_desc_comp); - } } if (EPIN_EN(opts)) { headers[i++] = USBDHDR(&std_as_in_if0_desc); From d9e738916e46eaf4ff6a612776af98667435d0c3 Mon Sep 17 00:00:00 2001 From: Jack Pham Date: Thu, 9 Sep 2021 10:48:10 -0700 Subject: [PATCH 09/94] BACKPORT: FROMGIT: usb: gadget: f_uac2: Add missing companion descriptor for feedback EP The f_uac2 function fails to enumerate when connected in SuperSpeed due to the feedback endpoint missing the companion descriptor. Add a new ss_epin_fback_desc_comp descriptor and append it behind the ss_epin_fback_desc both in the static definition of the ss_audio_desc structure as well as its dynamic construction in setup_headers(). Fixes: 24f779dac8f3 ("usb: gadget: f_uac2/u_audio: add feedback endpoint support") Cc: stable Signed-off-by: Jack Pham Link: https://lore.kernel.org/r/20210909174811.12534-2-jackp@codeaurora.org Signed-off-by: Greg Kroah-Hartman Bug: 199044440 Change-Id: I8ae495878f38ec733af4ddf61a3f5d57f5cd5a80 (cherry picked from commit 595091a1426a3b2625dad322f69fe569dc9d8943 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-linus) [jackp: Resolved merge conflict in f_uac2.c due to added code in upstream] Signed-off-by: Jack Pham --- drivers/usb/gadget/function/f_uac2.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/usb/gadget/function/f_uac2.c b/drivers/usb/gadget/function/f_uac2.c index bdc7e6e78455..abb8c1852bfb 100644 --- a/drivers/usb/gadget/function/f_uac2.c +++ b/drivers/usb/gadget/function/f_uac2.c @@ -348,6 +348,14 @@ static struct usb_endpoint_descriptor ss_epin_fback_desc = { .bInterval = 4, }; +static struct usb_ss_ep_comp_descriptor ss_epin_fback_desc_comp = { + .bLength = sizeof(ss_epin_fback_desc_comp), + .bDescriptorType = USB_DT_SS_ENDPOINT_COMP, + .bMaxBurst = 0, + .bmAttributes = 0, + .wBytesPerInterval = cpu_to_le16(4), +}; + /* Audio Streaming IN Interface - Alt0 */ static struct usb_interface_descriptor std_as_in_if0_desc = { @@ -527,6 +535,7 @@ static struct usb_descriptor_header *ss_audio_desc[] = { (struct usb_descriptor_header *)&ss_epout_desc_comp, (struct usb_descriptor_header *)&as_iso_out_desc, (struct usb_descriptor_header *)&ss_epin_fback_desc, + (struct usb_descriptor_header *)&ss_epin_fback_desc_comp, (struct usb_descriptor_header *)&std_as_in_if0_desc, (struct usb_descriptor_header *)&std_as_in_if1_desc, @@ -610,6 +619,7 @@ static void setup_headers(struct f_uac2_opts *opts, { struct usb_ss_ep_comp_descriptor *epout_desc_comp = NULL; struct usb_ss_ep_comp_descriptor *epin_desc_comp = NULL; + struct usb_ss_ep_comp_descriptor *epin_fback_desc_comp = NULL; struct usb_endpoint_descriptor *epout_desc; struct usb_endpoint_descriptor *epin_desc; struct usb_endpoint_descriptor *epin_fback_desc; @@ -632,6 +642,7 @@ static void setup_headers(struct f_uac2_opts *opts, epout_desc_comp = &ss_epout_desc_comp; epin_desc_comp = &ss_epin_desc_comp; epin_fback_desc = &ss_epin_fback_desc; + epin_fback_desc_comp = &ss_epin_fback_desc_comp; } i = 0; @@ -660,8 +671,11 @@ static void setup_headers(struct f_uac2_opts *opts, headers[i++] = USBDHDR(&as_iso_out_desc); - if (EPOUT_FBACK_IN_EN(opts)) + if (EPOUT_FBACK_IN_EN(opts)) { headers[i++] = USBDHDR(epin_fback_desc); + if (epin_fback_desc_comp) + headers[i++] = USBDHDR(epin_fback_desc_comp); + } } if (EPIN_EN(opts)) { headers[i++] = USBDHDR(&std_as_in_if0_desc); From ba98a3a1bbcc2a672f2bb9b5a4eafdaf0867de60 Mon Sep 17 00:00:00 2001 From: Jack Pham Date: Thu, 9 Sep 2021 10:48:11 -0700 Subject: [PATCH 10/94] BACKPORT: FROMGIT: usb: gadget: f_uac2: Populate SS descriptors' wBytesPerInterval For Isochronous endpoints, the SS companion descriptor's wBytesPerInterval field is required to reserve bus time in order to transmit the required payload during the service interval. If left at 0, the UAC2 function is unable to transact data on its playback or capture endpoints in SuperSpeed mode. Since f_uac2 currently does not support any bursting this value can be exactly equal to the calculated wMaxPacketSize. Tested with Windows 10 as a host. Fixes: f8cb3d556be3 ("usb: f_uac2: adds support for SS and SSP") Cc: stable Signed-off-by: Jack Pham Link: https://lore.kernel.org/r/20210909174811.12534-3-jackp@codeaurora.org Signed-off-by: Greg Kroah-Hartman Bug: 199044440 Change-Id: Ibf183102d577aa02746822d145d63a1c767557d2 (cherry picked from commit f0e8a206a2a53a919e1709c654cb65d519f7befb https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-linus) [jackp: Resolved merge conflict in f_uac2.c due to added code in upstream] Signed-off-by: Jack Pham --- drivers/usb/gadget/function/f_uac2.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/usb/gadget/function/f_uac2.c b/drivers/usb/gadget/function/f_uac2.c index abb8c1852bfb..53cb6b2637a0 100644 --- a/drivers/usb/gadget/function/f_uac2.c +++ b/drivers/usb/gadget/function/f_uac2.c @@ -957,6 +957,9 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) agdev->out_ep_maxpsize = max_t(u16, agdev->out_ep_maxpsize, le16_to_cpu(ss_epout_desc.wMaxPacketSize)); + ss_epin_desc_comp.wBytesPerInterval = ss_epin_desc.wMaxPacketSize; + ss_epout_desc_comp.wBytesPerInterval = ss_epout_desc.wMaxPacketSize; + hs_epout_desc.bEndpointAddress = fs_epout_desc.bEndpointAddress; hs_epin_fback_desc.bEndpointAddress = fs_epin_fback_desc.bEndpointAddress; hs_epin_desc.bEndpointAddress = fs_epin_desc.bEndpointAddress; From bcbaadf442723ffe3b6b19cebcd3cd84c4a6dc35 Mon Sep 17 00:00:00 2001 From: Prasad Sodagudi Date: Tue, 7 Sep 2021 04:24:23 -0700 Subject: [PATCH 11/94] UPSTREAM: PM: sleep: core: Avoid setting power.must_resume to false There are variables(power.may_skip_resume and dev->power.must_resume) and DPM_FLAG_MAY_SKIP_RESUME flags to control the resume of devices after a system wide suspend transition. Setting the DPM_FLAG_MAY_SKIP_RESUME flag means that the driver allows its "noirq" and "early" resume callbacks to be skipped if the device can be left in suspend after a system-wide transition into the working state. PM core determines that the driver's "noirq" and "early" resume callbacks should be skipped or not with dev_pm_skip_resume() function by checking power.may_skip_resume variable. power.must_resume variable is getting set to false in __device_suspend() function without checking device's DPM_FLAG_MAY_SKIP_RESUME settings. In problematic scenario, where all the devices in the suspend_late stage are successful and some device can fail to suspend in suspend_noirq phase. So some devices successfully suspended in suspend_late stage are not getting chance to execute __device_suspend_noirq() to set dev->power.must_resume variable to true and not getting resumed in early_resume phase. Add a check for device's DPM_FLAG_MAY_SKIP_RESUME flag before setting power.must_resume variable in __device_suspend function. Fixes: 6e176bf8d461 ("PM: sleep: core: Do not skip callbacks in the resume phase") Signed-off-by: Prasad Sodagudi Signed-off-by: Rafael J. Wysocki Bug: 195393473 Change-Id: I641a7ba20cc14f6519e1869b4651cda894400274 (cherry picked from commit 4a9344cd0aa4499beb3772bbecb40bb78888c0e1) Signed-off-by: Elliot Berman --- drivers/base/power/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index 2c7250eb1d67..521fa086b6c8 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c @@ -1649,7 +1649,7 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async) } dev->power.may_skip_resume = true; - dev->power.must_resume = false; + dev->power.must_resume = !dev_pm_test_driver_flags(dev, DPM_FLAG_MAY_SKIP_RESUME); dpm_watchdog_set(&wd, dev); device_lock(dev); From 9f821f9789010f0596fdc4809abf4e55e83bd709 Mon Sep 17 00:00:00 2001 From: Vlastimil Babka Date: Thu, 29 Apr 2021 22:54:42 -0700 Subject: [PATCH 12/94] UPSTREAM: mm, slub: enable slub_debug static key when creating cache with explicit debug flags Commit ca0cab65ea2b ("mm, slub: introduce static key for slub_debug()") introduced a static key to optimize the case where no debugging is enabled for any cache. The static key is enabled when slub_debug boot parameter is passed, or CONFIG_SLUB_DEBUG_ON enabled. However, some caches might be created with one or more debugging flags explicitly passed to kmem_cache_create(), and the commit missed this. Thus the debugging functionality would not be actually performed for these caches unless the static key gets enabled by boot param or config. This patch fixes it by checking for debugging flags passed to kmem_cache_create() and enabling the static key accordingly. Note such explicit debugging flags should not be used outside of debugging and testing as they will now enable the static key globally. btrfs_init_cachep() creates a cache with SLAB_RED_ZONE but that's a mistake that's being corrected [1]. rcu_torture_stats() creates a cache with SLAB_STORE_USER, but that is a testing module so it's OK and will start working as intended after this patch. Also note that in case of backports to kernels before v5.12 that don't have commit 59450bbc12be ("mm, slab, slub: stop taking cpu hotplug lock"), static_branch_enable_cpuslocked() should be used. [1] https://lore.kernel.org/linux-btrfs/20210315141824.26099-1-dsterba@suse.com/ Link: https://lkml.kernel.org/r/20210315153415.24404-1-vbabka@suse.cz Fixes: ca0cab65ea2b ("mm, slub: introduce static key for slub_debug()") Signed-off-by: Vlastimil Babka Reported-by: Oliver Glitta Acked-by: David Rientjes Cc: Christoph Lameter Cc: Pekka Enberg Cc: Joonsoo Kim Cc: "Paul E. McKenney" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds (cherry picked from commit 1f0723a4c0df36cbdffc6fac82cd3c5d57e06d66) Bug: 199581299 Signed-off-by: Liujie Xie Change-Id: Ie075ba29e58a43fa96e7c177695d40103490c9ae --- mm/slub.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mm/slub.c b/mm/slub.c index b61fc40103b5..a20c64237c05 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -3842,6 +3842,15 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order) static int kmem_cache_open(struct kmem_cache *s, slab_flags_t flags) { +#ifdef CONFIG_SLUB_DEBUG + /* + * If no slub_debug was enabled globally, the static key is not yet + * enabled by setup_slub_debug(). Enable it if the cache is being + * created with any of the debugging flags passed explicitly. + */ + if (flags & SLAB_DEBUG_FLAGS) + static_branch_enable(&slub_debug_enabled); +#endif s->flags = kmem_cache_flags(s->size, flags, s->name); #ifdef CONFIG_SLAB_FREELIST_HARDENED s->random = get_random_long(); From 96beb15eb2601e2ffe1daed95790f79aeef60d0b Mon Sep 17 00:00:00 2001 From: Vlastimil Babka Date: Fri, 14 May 2021 17:27:10 -0700 Subject: [PATCH 13/94] UPSTREAM: mm, slub: move slub_debug static key enabling outside slab_mutex Paul E. McKenney reported [1] that commit 1f0723a4c0df ("mm, slub: enable slub_debug static key when creating cache with explicit debug flags") results in the lockdep complaint: ====================================================== WARNING: possible circular locking dependency detected 5.12.0+ #15 Not tainted ------------------------------------------------------ rcu_torture_sta/109 is trying to acquire lock: ffffffff96063cd0 (cpu_hotplug_lock){++++}-{0:0}, at: static_key_enable+0x9/0x20 but task is already holding lock: ffffffff96173c28 (slab_mutex){+.+.}-{3:3}, at: kmem_cache_create_usercopy+0x2d/0x250 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (slab_mutex){+.+.}-{3:3}: lock_acquire+0xb9/0x3a0 __mutex_lock+0x8d/0x920 slub_cpu_dead+0x15/0xf0 cpuhp_invoke_callback+0x17a/0x7c0 cpuhp_invoke_callback_range+0x3b/0x80 _cpu_down+0xdf/0x2a0 cpu_down+0x2c/0x50 device_offline+0x82/0xb0 remove_cpu+0x1a/0x30 torture_offline+0x80/0x140 torture_onoff+0x147/0x260 kthread+0x10a/0x140 ret_from_fork+0x22/0x30 -> #0 (cpu_hotplug_lock){++++}-{0:0}: check_prev_add+0x8f/0xbf0 __lock_acquire+0x13f0/0x1d80 lock_acquire+0xb9/0x3a0 cpus_read_lock+0x21/0xa0 static_key_enable+0x9/0x20 __kmem_cache_create+0x38d/0x430 kmem_cache_create_usercopy+0x146/0x250 kmem_cache_create+0xd/0x10 rcu_torture_stats+0x79/0x280 kthread+0x10a/0x140 ret_from_fork+0x22/0x30 other info that might help us debug this: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(slab_mutex); lock(cpu_hotplug_lock); lock(slab_mutex); lock(cpu_hotplug_lock); *** DEADLOCK *** 1 lock held by rcu_torture_sta/109: #0: ffffffff96173c28 (slab_mutex){+.+.}-{3:3}, at: kmem_cache_create_usercopy+0x2d/0x250 stack backtrace: CPU: 3 PID: 109 Comm: rcu_torture_sta Not tainted 5.12.0+ #15 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-1ubuntu1.1 04/01/2014 Call Trace: dump_stack+0x6d/0x89 check_noncircular+0xfe/0x110 ? lock_is_held_type+0x98/0x110 check_prev_add+0x8f/0xbf0 __lock_acquire+0x13f0/0x1d80 lock_acquire+0xb9/0x3a0 ? static_key_enable+0x9/0x20 ? mark_held_locks+0x49/0x70 cpus_read_lock+0x21/0xa0 ? static_key_enable+0x9/0x20 static_key_enable+0x9/0x20 __kmem_cache_create+0x38d/0x430 kmem_cache_create_usercopy+0x146/0x250 ? rcu_torture_stats_print+0xd0/0xd0 kmem_cache_create+0xd/0x10 rcu_torture_stats+0x79/0x280 ? rcu_torture_stats_print+0xd0/0xd0 kthread+0x10a/0x140 ? kthread_park+0x80/0x80 ret_from_fork+0x22/0x30 This is because there's one order of locking from the hotplug callbacks: lock(cpu_hotplug_lock); // from hotplug machinery itself lock(slab_mutex); // in e.g. slab_mem_going_offline_callback() And commit 1f0723a4c0df made the reverse sequence possible: lock(slab_mutex); // in kmem_cache_create_usercopy() lock(cpu_hotplug_lock); // kmem_cache_open() -> static_key_enable() The simplest fix is to move static_key_enable() to a place before slab_mutex is taken. That means kmem_cache_create_usercopy() in mm/slab_common.c which is not ideal for SLUB-specific code, but the #ifdef CONFIG_SLUB_DEBUG makes it at least self-contained and obvious. [1] https://lore.kernel.org/lkml/20210502171827.GA3670492@paulmck-ThinkPad-P17-Gen-1/ Link: https://lkml.kernel.org/r/20210504120019.26791-1-vbabka@suse.cz Fixes: 1f0723a4c0df ("mm, slub: enable slub_debug static key when creating cache with explicit debug flags") Signed-off-by: Vlastimil Babka Reported-by: Paul E. McKenney Tested-by: Paul E. McKenney Acked-by: David Rientjes Cc: Christoph Lameter Cc: Pekka Enberg Cc: Joonsoo Kim Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds (cherry picked from commit afe0c26d1968fe3bbef6a45df945bfeff774ca75) Bug: 199581299 Signed-off-by: Liujie Xie Change-Id: I72fd0d24e4ca0ee9bd261547133fb6046c8b5f6a --- mm/slab_common.c | 10 ++++++++++ mm/slub.c | 9 --------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/mm/slab_common.c b/mm/slab_common.c index d9473ad1d233..b52ea068634d 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -314,6 +314,16 @@ kmem_cache_create_usercopy(const char *name, get_online_cpus(); get_online_mems(); +#ifdef CONFIG_SLUB_DEBUG + /* + * If no slub_debug was enabled globally, the static key is not yet + * enabled by setup_slub_debug(). Enable it if the cache is being + * created with any of the debugging flags passed explicitly. + */ + if (flags & SLAB_DEBUG_FLAGS) + static_branch_enable(&slub_debug_enabled); +#endif + mutex_lock(&slab_mutex); err = kmem_cache_sanity_check(name, size); diff --git a/mm/slub.c b/mm/slub.c index a20c64237c05..b61fc40103b5 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -3842,15 +3842,6 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order) static int kmem_cache_open(struct kmem_cache *s, slab_flags_t flags) { -#ifdef CONFIG_SLUB_DEBUG - /* - * If no slub_debug was enabled globally, the static key is not yet - * enabled by setup_slub_debug(). Enable it if the cache is being - * created with any of the debugging flags passed explicitly. - */ - if (flags & SLAB_DEBUG_FLAGS) - static_branch_enable(&slub_debug_enabled); -#endif s->flags = kmem_cache_flags(s->size, flags, s->name); #ifdef CONFIG_SLAB_FREELIST_HARDENED s->random = get_random_long(); From 96db9b84a6b31714c1c1940cdf58539d71224b3d Mon Sep 17 00:00:00 2001 From: Jaegeuk Kim Date: Tue, 7 Sep 2021 10:24:21 -0700 Subject: [PATCH 14/94] FROMGIT: f2fs: should use GFP_NOFS for directory inodes We use inline_dentry which requires to allocate dentry page when adding a link. If we allow to reclaim memory from filesystem, we do down_read(&sbi->cp_rwsem) twice by f2fs_lock_op(). I think this should be okay, but how about stopping the lockdep complaint [1]? f2fs_create() - f2fs_lock_op() - f2fs_do_add_link() - __f2fs_find_entry - f2fs_get_read_data_page() -> kswapd - shrink_node - f2fs_evict_inode - f2fs_lock_op() [1] fs_reclaim ){+.+.}-{0:0} : kswapd0: lock_acquire+0x114/0x394 kswapd0: __fs_reclaim_acquire+0x40/0x50 kswapd0: prepare_alloc_pages+0x94/0x1ec kswapd0: __alloc_pages_nodemask+0x78/0x1b0 kswapd0: pagecache_get_page+0x2e0/0x57c kswapd0: f2fs_get_read_data_page+0xc0/0x394 kswapd0: f2fs_find_data_page+0xa4/0x23c kswapd0: find_in_level+0x1a8/0x36c kswapd0: __f2fs_find_entry+0x70/0x100 kswapd0: f2fs_do_add_link+0x84/0x1ec kswapd0: f2fs_mkdir+0xe4/0x1e4 kswapd0: vfs_mkdir+0x110/0x1c0 kswapd0: do_mkdirat+0xa4/0x160 kswapd0: __arm64_sys_mkdirat+0x24/0x34 kswapd0: el0_svc_common.llvm.17258447499513131576+0xc4/0x1e8 kswapd0: do_el0_svc+0x28/0xa0 kswapd0: el0_svc+0x24/0x38 kswapd0: el0_sync_handler+0x88/0xec kswapd0: el0_sync+0x1c0/0x200 kswapd0: -> #1 ( &sbi->cp_rwsem ){++++}-{3:3} : kswapd0: lock_acquire+0x114/0x394 kswapd0: down_read+0x7c/0x98 kswapd0: f2fs_do_truncate_blocks+0x78/0x3dc kswapd0: f2fs_truncate+0xc8/0x128 kswapd0: f2fs_evict_inode+0x2b8/0x8b8 kswapd0: evict+0xd4/0x2f8 kswapd0: iput+0x1c0/0x258 kswapd0: do_unlinkat+0x170/0x2a0 kswapd0: __arm64_sys_unlinkat+0x4c/0x68 kswapd0: el0_svc_common.llvm.17258447499513131576+0xc4/0x1e8 kswapd0: do_el0_svc+0x28/0xa0 kswapd0: el0_svc+0x24/0x38 kswapd0: el0_sync_handler+0x88/0xec kswapd0: el0_sync+0x1c0/0x200 Bug: 198991863 Cc: stable@vger.kernel.org Fixes: bdbc90fa55af ("f2fs: don't put dentry page in pagecache into highmem") Reviewed-by: Chao Yu Reviewed-by: Stanley Chu Reviewed-by: Light Hsieh Tested-by: Light Hsieh Signed-off-by: Jaegeuk Kim (cherry picked from commit 92d602bc7177325e7453189a22e0c8764ed3453e https://https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git dev) Change-Id: Ie25d567390ea5185955356b330e04ebfa5c8836f --- fs/f2fs/inode.c | 2 +- fs/f2fs/namei.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c index 9141147b5bb0..1213f15ffd68 100644 --- a/fs/f2fs/inode.c +++ b/fs/f2fs/inode.c @@ -527,7 +527,7 @@ struct inode *f2fs_iget(struct super_block *sb, unsigned long ino) inode->i_op = &f2fs_dir_inode_operations; inode->i_fop = &f2fs_dir_operations; inode->i_mapping->a_ops = &f2fs_dblock_aops; - inode_nohighmem(inode); + mapping_set_gfp_mask(inode->i_mapping, GFP_NOFS); } else if (S_ISLNK(inode->i_mode)) { if (file_is_encrypt(inode)) inode->i_op = &f2fs_encrypted_symlink_inode_operations; diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c index 6573a7ec92eb..ce72d6083f31 100644 --- a/fs/f2fs/namei.c +++ b/fs/f2fs/namei.c @@ -747,7 +747,7 @@ static int f2fs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) inode->i_op = &f2fs_dir_inode_operations; inode->i_fop = &f2fs_dir_operations; inode->i_mapping->a_ops = &f2fs_dblock_aops; - inode_nohighmem(inode); + mapping_set_gfp_mask(inode->i_mapping, GFP_NOFS); set_inode_flag(inode, FI_INC_LINK); f2fs_lock_op(sbi); From 46527099132b3e61f80db47902ad3478c8f3df70 Mon Sep 17 00:00:00 2001 From: Biao Li Date: Wed, 4 Aug 2021 17:29:31 +0800 Subject: [PATCH 15/94] ANDROID: fuse: Allocate zeroed memory for canonical path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The page used to contain the fuse_dentry_canonical_path to be handled in fuse_dev_do_write is allocated using __get_free_pages(GFP_KERNEL). The returned page may contain undefined data, that by chance may be considered as a valid path name that is not in the cache. In that case, if the FUSE daemon mistakenly doesn't fill the canonical path buffer, the FUSE driver may fall into two blocking request_wait_answer(fuse_dev_write->kern_path->fuse_lookup_name) causing a deadlock condition. The stack is as follows: find S 0 20511 20117 0x00000000 Call trace: [] __switch_to+0xb8/0xd4 [] __schedule+0x458/0x714 [] schedule+0x8c/0xa8 [] request_wait_answer+0x74/0x220 [] __fuse_request_send+0x8c/0xa0 [] fuse_request_send+0x60/0x6c [] fuse_dentry_canonical_path+0xb8/0x104 [] do_sys_open+0x1b4/0x260 [] SyS_openat+0x3c/0x4c [] el0_svc_naked+0x34/0x38 mount.ntfs-3g S 0 5845 1 0x00000000 Call trace: [] __switch_to+0xb8/0xd4 [] __schedule+0x458/0x714 [] schedule+0x8c/0xa8 [] request_wait_answer+0x74/0x220 [] __fuse_request_send+0x8c/0xa0 [] fuse_request_send+0x60/0x6c [] fuse_simple_request+0x128/0x16c [] fuse_lookup_name+0x104/0x1b0 [] fuse_lookup+0x5c/0x11c [] lookup_slow+0xfc/0x174 [] walk_component+0xf0/0x290 [] path_lookupat+0xa0/0x128 [] filename_lookup+0x84/0x124 [] kern_path+0x44/0x54 [] fuse_dev_do_write+0x828/0xa0c [] fuse_dev_write+0x90/0xb4 [] do_iter_readv_writev+0xf4/0x13c [] do_readv_writev+0xec/0x220 [] vfs_writev+0x60/0x74 [] do_writev+0x7c/0x100 [] SyS_writev+0x38/0x48 [] el0_svc_naked+0x34/0x38 Fix by ensuring that the page allocated for the canonical path is zeroed. Bug: 194856119 Bug: 196051870 Fixes: 24ab59f6bb42 ("ANDROID: fuse: Add support for d_canonical_path") Signed-off-by: Biao Li Signed-off-by: Shuosheng Huang Signed-off-by: Alessio Balsini Change-Id: I400815dc1049d90c308f5cf87ce60de97ff82131 --- fs/fuse/dir.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index 17cac6db56ef..22f9f7d0c948 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -390,7 +390,7 @@ static void fuse_dentry_canonical_path(const struct path *path, char *path_name; int err; - path_name = (char *)__get_free_page(GFP_KERNEL); + path_name = (char *)get_zeroed_page(GFP_KERNEL); if (!path_name) goto default_path; From b74189ec8b97a2bc61e42bfc9dd6df1237a58d1b Mon Sep 17 00:00:00 2001 From: jianbinz Date: Fri, 17 Sep 2021 11:14:22 +0800 Subject: [PATCH 16/94] ANDROID: GKI: Update abi_gki_aarch64_qcom for rtc_tm_to_ktime and rtc_ktime_to_tm Add rtc_tm_to_ktime and rtc_ktime_to_tm symbols. Bug: 200193632 Change-Id: Ibe43876597fd944b60b611107d7b9b8d50a64ef4 Signed-off-by: jianbin zhang --- android/abi_gki_aarch64_qcom | 2 ++ 1 file changed, 2 insertions(+) diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index b4072325b581..33b2342d2f23 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -2086,8 +2086,10 @@ rproc_remove_subdev rproc_report_crash rproc_shutdown + rtc_ktime_to_tm __rtc_register_device rtc_time64_to_tm + rtc_tm_to_ktime rtc_tm_to_time64 rtc_update_irq rt_mutex_lock From e21fe3ef803e263c503dfae96a849d0c0dd9044b Mon Sep 17 00:00:00 2001 From: Rick Yiu Date: Fri, 17 Sep 2021 17:08:36 +0800 Subject: [PATCH 17/94] ANDROID: Update the ABI representation Leaf changes summary: 1 artifact changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 1 Added function: [A] 'function void __rt_mutex_init(rt_mutex*, const char*, lock_class_key*)' Bug: 198085505 Signed-off-by: Rick Yiu Change-Id: I97766c915eba89d6d085e32a20cbb416d58de90a --- android/abi_gki_aarch64.xml | 75 ++++++++++++++++++--------------- android/abi_gki_aarch64_generic | 3 ++ 2 files changed, 44 insertions(+), 34 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 50804ed6ca17..8a3e80346d76 100755 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -212,6 +212,7 @@ + @@ -111545,6 +111546,12 @@ + + + + + + @@ -122895,10 +122902,10 @@ - - - - + + + + @@ -125405,8 +125412,8 @@ - - + + @@ -125440,17 +125447,17 @@ - - - - - + + + + + - - - - + + + + @@ -125464,12 +125471,12 @@ - - - - - - + + + + + + @@ -125482,8 +125489,8 @@ - - + + @@ -125586,10 +125593,10 @@ - - - - + + + + @@ -125607,8 +125614,8 @@ - - + + @@ -130532,11 +130539,11 @@ - - - - - + + + + + diff --git a/android/abi_gki_aarch64_generic b/android/abi_gki_aarch64_generic index 6f3e75fe3ed2..b7113819db01 100644 --- a/android/abi_gki_aarch64_generic +++ b/android/abi_gki_aarch64_generic @@ -1587,6 +1587,9 @@ rtc_tm_to_time64 rtc_update_irq rtc_valid_tm + __rt_mutex_init + rt_mutex_lock + rt_mutex_unlock rtnl_is_locked rtnl_lock rtnl_unlock From f278b215d4d9138dc585f452bc665aaac8355a9b Mon Sep 17 00:00:00 2001 From: Michael Adisumarta Date: Wed, 15 Sep 2021 15:32:33 -0700 Subject: [PATCH 18/94] ANDROID: abi_gki_aarch64_qcom: Add 2 new symbols for gsi Add symbols for platform_msi_domain_free_irqs and gsi_update_almst_empty_thrshold. Leaf changes summary: 2 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 2 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 2 Added functions: [A] 'function int platform_msi_domain_alloc_irqs(device*, unsigned int, irq_write_msi_msg_t)' [A] 'function void platform_msi_domain_free_irqs(device*)' Bug: 200009693 Change-Id: I91d17a944fa838b3d8be2eea7eb2f0d7a41d211f Signed-off-by: Michael Adisumarta Signed-off-by: Paresh Purabhiya Signed-off-by: Todd Kjos --- android/abi_gki_aarch64.xml | 10369 +++++++++++++++++---------------- android/abi_gki_aarch64_qcom | 2 + 2 files changed, 5305 insertions(+), 5066 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 8a3e80346d76..f167af472be8 100755 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -3580,6 +3580,8 @@ + + @@ -8169,9 +8171,9 @@ - - - + + + @@ -8184,6 +8186,7 @@ + @@ -8265,6 +8268,7 @@ + @@ -8674,14 +8678,7 @@ - - - - - - - - + @@ -8689,6 +8686,13 @@ + + + + + + + @@ -9274,6 +9278,7 @@ + @@ -11057,7 +11062,6 @@ - @@ -11409,8 +11413,8 @@ - - + + @@ -12026,23 +12030,7 @@ - - - - - - - - - - - - - - - - - + @@ -12640,7 +12628,6 @@ - @@ -14188,6 +14175,12 @@ + + + + + + @@ -14657,9 +14650,6 @@ - - - @@ -14854,29 +14844,7 @@ - - - - - - - - - - - - - - - - - - - - - - - + @@ -17734,6 +17702,7 @@ + @@ -18107,7 +18076,11 @@ - + + + + + @@ -19054,6 +19027,7 @@ + @@ -19120,6 +19094,7 @@ + @@ -19557,6 +19532,14 @@ + + + + + + + + @@ -19907,7 +19890,7 @@ - + @@ -20618,7 +20601,6 @@ - @@ -21359,11 +21341,6 @@ - - - - - @@ -23376,7 +23353,7 @@ - + @@ -23580,7 +23557,6 @@ - @@ -23885,23 +23861,7 @@ - - - - - - - - - - - - - - - - - + @@ -24544,7 +24504,7 @@ - + @@ -24893,6 +24853,7 @@ + @@ -24970,7 +24931,7 @@ - + @@ -25027,7 +24988,6 @@ - @@ -25378,7 +25338,6 @@ - @@ -26935,6 +26894,7 @@ + @@ -30614,9 +30574,9 @@ - - - + + + @@ -31501,6 +31461,7 @@ + @@ -31755,68 +31716,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -32320,6 +32220,7 @@ + @@ -32734,7 +32635,6 @@ - @@ -36476,6 +36376,7 @@ + @@ -37265,8 +37166,8 @@ - - + + @@ -38189,6 +38090,17 @@ + + + + + + + + + + + @@ -38467,9 +38379,9 @@ - - - + + + @@ -38975,7 +38887,6 @@ - @@ -39932,6 +39843,7 @@ + @@ -40900,7 +40812,23 @@ - + + + + + + + + + + + + + + + + + @@ -42363,7 +42291,15 @@ + + + + + + + + @@ -42700,7 +42636,18 @@ - + + + + + + + + + + + + @@ -42796,12 +42743,12 @@ - - - - - - + + + + + + @@ -42906,6 +42853,7 @@ + @@ -43647,21 +43595,21 @@ - + - + - + - + - + - + @@ -44096,6 +44044,7 @@ + @@ -45719,8 +45668,8 @@ - - + + @@ -46066,35 +46015,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -46655,14 +46576,7 @@ - - - - - - - - + @@ -47308,6 +47222,11 @@ + + + + + @@ -47708,7 +47627,7 @@ - + @@ -47834,11 +47753,6 @@ - - - - - @@ -48144,7 +48058,7 @@ - + @@ -48289,7 +48203,56 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -48630,7 +48593,6 @@ - @@ -49564,7 +49526,7 @@ - + @@ -50408,8 +50370,26 @@ + + + + + + + + + + + + + + + + + + @@ -50668,6 +50648,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -50854,7 +50854,6 @@ - @@ -51444,23 +51443,7 @@ - - - - - - - - - - - - - - - - - + @@ -51822,6 +51805,7 @@ + @@ -52740,9 +52724,9 @@ - - - + + + @@ -53462,7 +53446,6 @@ - @@ -54047,7 +54030,7 @@ - + @@ -54512,7 +54495,7 @@ - + @@ -55373,6 +55356,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -56710,6 +56713,7 @@ + @@ -57172,6 +57176,11 @@ + + + + + @@ -58386,7 +58395,44 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -59550,7 +59596,65 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -60325,6 +60429,7 @@ + @@ -61260,17 +61365,7 @@ - - - - - - - - - - - + @@ -62313,7 +62408,7 @@ - + @@ -62799,10 +62894,10 @@ - - - - + + + + @@ -62852,12 +62947,6 @@ - - - - - - @@ -63117,7 +63206,6 @@ - @@ -63440,7 +63528,47 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -64010,6 +64138,11 @@ + + + + + @@ -65036,6 +65169,11 @@ + + + + + @@ -65488,7 +65626,7 @@ - + @@ -65748,7 +65886,20 @@ - + + + + + + + + + + + + + + @@ -66626,6 +66777,7 @@ + @@ -67056,7 +67208,7 @@ - + @@ -67332,6 +67484,7 @@ + @@ -67528,7 +67681,6 @@ - @@ -69050,7 +69202,14 @@ - + + + + + + + + @@ -69176,6 +69335,14 @@ + + + + + + + + @@ -69861,8 +70028,8 @@ - - + + @@ -69981,6 +70148,7 @@ + @@ -70646,8 +70814,8 @@ - - + + @@ -70719,7 +70887,6 @@ - @@ -71155,7 +71322,38 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -71266,7 +71464,7 @@ - + @@ -73956,6 +74154,7 @@ + @@ -75350,11 +75549,11 @@ - + - + @@ -76396,12 +76595,12 @@ - - - - - - + + + + + + @@ -77685,7 +77884,6 @@ - @@ -77923,6 +78121,7 @@ + @@ -78639,7 +78838,6 @@ - @@ -79451,7 +79649,6 @@ - @@ -79524,9 +79721,6 @@ - - - @@ -79543,6 +79737,11 @@ + + + + + @@ -79565,6 +79764,7 @@ + @@ -80019,7 +80219,7 @@ - + @@ -80095,6 +80295,14 @@ + + + + + + + + @@ -82437,6 +82645,11 @@ + + + + + @@ -83012,7 +83225,6 @@ - @@ -83631,7 +83843,7 @@ - + @@ -84311,9 +84523,9 @@ - - - + + + @@ -84674,6 +84886,7 @@ + @@ -84781,7 +84994,26 @@ - + + + + + + + + + + + + + + + + + + + + @@ -84806,7 +85038,7 @@ - + @@ -84831,7 +85063,6 @@ - @@ -84870,7 +85101,6 @@ - @@ -86240,7 +86470,7 @@ - + @@ -86870,8 +87100,8 @@ - - + + @@ -87931,6 +88161,7 @@ + @@ -88090,14 +88321,6 @@ - - - - - - - - @@ -88532,20 +88755,7 @@ - - - - - - - - - - - - - - + @@ -89102,7 +89312,7 @@ - + @@ -89182,7 +89392,7 @@ - + @@ -89477,7 +89687,6 @@ - @@ -89614,7 +89823,7 @@ - + @@ -91076,6 +91285,7 @@ + @@ -91570,6 +91780,17 @@ + + + + + + + + + + + @@ -92329,7 +92550,7 @@ - + @@ -92873,7 +93094,7 @@ - + @@ -93311,7 +93532,7 @@ - + @@ -94008,6 +94229,9 @@ + + + @@ -95242,7 +95466,6 @@ - @@ -95518,8 +95741,8 @@ - - + + @@ -95716,8 +95939,8 @@ - - + + @@ -96837,7 +97060,6 @@ - @@ -97810,14 +98032,7 @@ - - - - - - - - + @@ -98878,10 +99093,10 @@ - - - + + + @@ -98905,7 +99120,7 @@ - + @@ -99046,8 +99261,8 @@ - - + + @@ -99647,6 +99862,7 @@ + @@ -99915,7 +100131,6 @@ - @@ -100441,20 +100656,7 @@ - - - - - - - - - - - - - - + @@ -100513,9 +100715,6 @@ - - - @@ -103881,7 +104080,20 @@ - + + + + + + + + + + + + + + @@ -104216,7 +104428,6 @@ - @@ -107526,7 +107737,7 @@ - + @@ -107728,6 +107939,17 @@ + + + + + + + + + + + @@ -108066,6 +108288,11 @@ + + + + + @@ -108392,7 +108619,6 @@ - @@ -110117,6 +110343,7 @@ + @@ -110201,6 +110428,7 @@ + @@ -110319,8 +110547,8 @@ - - + + @@ -110852,7 +111080,6 @@ - @@ -114060,38 +114287,38 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + @@ -114101,32 +114328,32 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - + + @@ -114145,8 +114372,8 @@ - - + + @@ -114162,57 +114389,57 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + @@ -114223,16 +114450,16 @@ - - + + - - + + @@ -114256,12 +114483,12 @@ - - - - - - + + + + + + @@ -114278,9 +114505,9 @@ - - - + + + @@ -114296,33 +114523,33 @@ - - + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + @@ -114335,22 +114562,22 @@ - - - - + + + + - - - - + + + + - - - - + + + + @@ -114424,13 +114651,13 @@ - - - - - - - + + + + + + + @@ -114439,29 +114666,29 @@ - - - + + + - - - - - - + + + + + + - - - - + + + + - - + + @@ -114503,11 +114730,11 @@ - - - - - + + + + + @@ -114527,14 +114754,14 @@ - - + + - - - - + + + + @@ -114557,27 +114784,27 @@ - - - - + + + + - - - + + + - - - + + + - - - - - + + + + + @@ -114627,21 +114854,21 @@ - - - - - + + + + + - - - - - - + + + + + + - - + + @@ -114682,18 +114909,18 @@ - - + + - - - + + + - - - + + + @@ -114726,17 +114953,17 @@ - - - - + + + + - - - - - + + + + + @@ -114747,58 +114974,58 @@ - - - - + + + + - - + + - - - + + + - - - + + + - - + + - - - - + + + + - - + + - - + + - - + + - - - - - + + + + + - - - + + + @@ -114807,49 +115034,49 @@ - - - - + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -114859,10 +115086,10 @@ - - - - + + + + @@ -114906,17 +115133,17 @@ - - + + - - + + - - - + + + @@ -114951,10 +115178,10 @@ - - - - + + + + @@ -114986,13 +115213,13 @@ - - - + + + - - + + @@ -115023,8 +115250,8 @@ - - + + @@ -115033,8 +115260,8 @@ - - + + @@ -115056,8 +115283,8 @@ - - + + @@ -115104,8 +115331,8 @@ - - + + @@ -115127,10 +115354,10 @@ - - - - + + + + @@ -115166,9 +115393,9 @@ - - - + + + @@ -115312,16 +115539,16 @@ - - + + - - + + @@ -115351,53 +115578,53 @@ - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -115415,9 +115642,9 @@ - - - + + + @@ -115465,67 +115692,67 @@ - - - - + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + @@ -115541,16 +115768,16 @@ - - + + - - - - - - + + + + + + @@ -115571,33 +115798,33 @@ - - + + - - + + - - - + + + - - - - - + + + + + - - - - - + + + + + @@ -115607,8 +115834,8 @@ - - + + @@ -115621,8 +115848,8 @@ - - + + @@ -115692,9 +115919,9 @@ - - - + + + @@ -115709,19 +115936,19 @@ - - - + + + - - - + + + - - - + + + @@ -115753,9 +115980,9 @@ - - - + + + @@ -115833,14 +116060,14 @@ - - - + + + - - - + + + @@ -115849,65 +116076,65 @@ - - - + + + - - - - + + + + - - + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - + + + + - - + + - - + + - - - + + + - - - + + + @@ -115916,19 +116143,19 @@ - - - + + + - - - + + + - - - + + + @@ -115936,35 +116163,35 @@ - - - + + + - - + + - - + + - - - + + + - - + + @@ -116081,8 +116308,8 @@ - - + + @@ -116165,28 +116392,28 @@ - - - + + + - - + + - - - - - + + + + + @@ -116201,11 +116428,11 @@ - - - - - + + + + + @@ -116217,11 +116444,11 @@ - - - - - + + + + + @@ -116240,8 +116467,8 @@ - - + + @@ -116278,10 +116505,10 @@ - - - - + + + + @@ -116319,22 +116546,22 @@ - - + + - - - - + + + + - - + + - - + + @@ -116361,22 +116588,22 @@ - - + + - - - - + + + + - - - + + + @@ -116437,8 +116664,8 @@ - - + + @@ -116449,18 +116676,18 @@ - - + + - - - + + + - - - + + + @@ -116472,8 +116699,8 @@ - - + + @@ -116489,9 +116716,9 @@ - - - + + + @@ -116524,12 +116751,12 @@ - - + + - - + + @@ -116540,23 +116767,23 @@ - - + + - - - + + + - - - - + + + + @@ -116571,9 +116798,9 @@ - - - + + + @@ -116588,8 +116815,8 @@ - - + + @@ -116609,52 +116836,52 @@ - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - + - + - - - + + + - - - - - + + + + + @@ -116697,12 +116924,12 @@ - - + + - - + + @@ -116731,10 +116958,10 @@ - - - - + + + + @@ -116789,42 +117016,42 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - + + - - - + + + - - - + + + - + @@ -116859,10 +117086,10 @@ - - - - + + + + @@ -116870,9 +117097,9 @@ - - - + + + @@ -116882,7 +117109,7 @@ - + @@ -116893,8 +117120,8 @@ - - + + @@ -116911,22 +117138,22 @@ - - + + - - - + + + - - - + + + @@ -116976,11 +117203,11 @@ - - - - - + + + + + @@ -116988,44 +117215,44 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - + + - - + + - - - - + + + + @@ -117040,8 +117267,8 @@ - - + + @@ -117062,18 +117289,18 @@ - - - + + + - - - + + + @@ -117098,11 +117325,11 @@ - - - - - + + + + + @@ -117112,8 +117339,8 @@ - - + + @@ -117129,18 +117356,18 @@ - - + + - - + + - - - - + + + + @@ -117171,8 +117398,8 @@ - - + + @@ -117181,7 +117408,7 @@ - + @@ -117212,11 +117439,11 @@ - - - - - + + + + + @@ -117226,25 +117453,25 @@ - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -117281,11 +117508,11 @@ - - - - - + + + + + @@ -117295,11 +117522,11 @@ - - - - - + + + + + @@ -117331,9 +117558,9 @@ - - - + + + @@ -117344,8 +117571,8 @@ - - + + @@ -117355,9 +117582,9 @@ - - - + + + @@ -117366,11 +117593,11 @@ - - - - - + + + + + @@ -117383,16 +117610,16 @@ - - + + - - + + - - + + @@ -117403,8 +117630,8 @@ - - + + @@ -117440,49 +117667,49 @@ - - + + - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -117504,9 +117731,9 @@ - - - + + + @@ -117519,9 +117746,9 @@ - - - + + + @@ -117543,10 +117770,10 @@ - - - - + + + + @@ -117577,15 +117804,15 @@ - - - - + + + + - - - + + + @@ -117605,8 +117832,8 @@ - - + + @@ -117622,8 +117849,8 @@ - - + + @@ -117631,13 +117858,13 @@ - - + + - - - + + + @@ -117648,9 +117875,9 @@ - - - + + + @@ -117667,16 +117894,16 @@ - - + + - - + + @@ -117692,9 +117919,9 @@ - - - + + + @@ -117779,9 +118006,9 @@ - - - + + + @@ -117794,17 +118021,17 @@ - - - - + + + + - - - - + + + + @@ -117817,9 +118044,9 @@ - - - + + + @@ -117840,11 +118067,11 @@ - - - - - + + + + + @@ -117892,20 +118119,20 @@ - - + + - - + + - - + + @@ -117918,8 +118145,8 @@ - - + + @@ -117941,12 +118168,12 @@ - - - - - - + + + + + + @@ -117955,40 +118182,40 @@ - - - + + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -118023,28 +118250,28 @@ - - - + + + - - + + - - - - + + + + - - - + + + @@ -118066,10 +118293,10 @@ - - - - + + + + @@ -118091,11 +118318,11 @@ - - - - - + + + + + @@ -118118,15 +118345,15 @@ - - - + + + - - - - + + + + @@ -118143,14 +118370,14 @@ - - - + + + - - - + + + @@ -118179,22 +118406,22 @@ - - + + - - + + - - - - + + + + @@ -118217,10 +118444,10 @@ - - - - + + + + @@ -118228,15 +118455,15 @@ - - - - + + + + - - - + + + @@ -118333,11 +118560,11 @@ - - - - - + + + + + @@ -118528,29 +118755,29 @@ - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + + + @@ -118560,10 +118787,10 @@ - - - - + + + + @@ -118602,14 +118829,14 @@ - - - - - - - - + + + + + + + + @@ -118622,9 +118849,9 @@ - - - + + + @@ -118657,8 +118884,8 @@ - - + + @@ -118720,14 +118947,14 @@ - - - + + + - - - + + + @@ -118735,10 +118962,10 @@ - - - - + + + + @@ -118783,15 +119010,15 @@ - - - - + + + + - - - + + + @@ -118890,16 +119117,16 @@ - - - + + + - - - - - + + + + + @@ -118949,46 +119176,46 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - - + + + + + - - + + - - + + @@ -119083,9 +119310,9 @@ - - - + + + @@ -119107,17 +119334,17 @@ - - + + - - - + + + - - + + @@ -119125,15 +119352,15 @@ - - - + + + - - - - + + + + @@ -119144,34 +119371,34 @@ - - + + - - - - + + + + - - + + - - - + + + - - - - + + + + @@ -119183,9 +119410,9 @@ - - - + + + @@ -119193,8 +119420,8 @@ - - + + @@ -119205,15 +119432,15 @@ - + - - - - - - + + + + + + @@ -119225,13 +119452,13 @@ - - - - + + + + - - + + @@ -119251,10 +119478,10 @@ - - - - + + + + @@ -119404,46 +119631,46 @@ - - - + + + - - - + + + - - + + - - - - - + + + + + - - + + - - - + + + - - - - + + + + - - - - - + + + + + @@ -119576,8 +119803,8 @@ - - + + @@ -119610,16 +119837,16 @@ - - + + - - + + - - + + @@ -119631,16 +119858,16 @@ - - + + - - + + @@ -119656,9 +119883,9 @@ - - - + + + @@ -119668,62 +119895,62 @@ - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -119741,14 +119968,14 @@ - - - + + + - - - + + + @@ -119783,13 +120010,13 @@ - - - - - - - + + + + + + + @@ -120013,62 +120240,62 @@ - - + + - - - + + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + @@ -120084,15 +120311,15 @@ - - + + - - - - - + + + + + @@ -120103,10 +120330,10 @@ - - - - + + + + @@ -120135,8 +120362,8 @@ - - + + @@ -120144,9 +120371,9 @@ - - - + + + @@ -120183,9 +120410,9 @@ - - - + + + @@ -120194,8 +120421,8 @@ - - + + @@ -120203,19 +120430,19 @@ - - - - - + + + + + - - - - - - + + + + + + @@ -120223,16 +120450,16 @@ - - + + - - + + - - + + @@ -120245,17 +120472,17 @@ - - + + - - + + - - - + + + @@ -120302,19 +120529,19 @@ - - - - - - - + + + + + + + - - - + + + @@ -120322,17 +120549,17 @@ - - - + + + - - + + @@ -120350,20 +120577,20 @@ - - + + - - + + - - + + @@ -120376,11 +120603,11 @@ - - - - - + + + + + @@ -120391,33 +120618,33 @@ - - - + + + - - - - + + + + - - - - + + + + - - + + - - + + @@ -120692,23 +120919,23 @@ - - + + - - - - + + + + - - - + + + @@ -120724,12 +120951,12 @@ - - - - - - + + + + + + @@ -120781,20 +121008,20 @@ - - + + - - - - + + + + - - - - + + + + @@ -120918,10 +121145,10 @@ - - - - + + + + @@ -120966,9 +121193,9 @@ - - - + + + @@ -121097,19 +121324,19 @@ - - - + + + - - - + + + - - - + + + @@ -121210,8 +121437,8 @@ - - + + @@ -121233,9 +121460,9 @@ - - - + + + @@ -121263,8 +121490,8 @@ - - + + @@ -121279,24 +121506,24 @@ - - + + - - - + + + - - - - + + + + - - - + + + @@ -121315,9 +121542,9 @@ - - - + + + @@ -121325,18 +121552,18 @@ - - + + - - - + + + - - - + + + @@ -121357,9 +121584,9 @@ - - - + + + @@ -121385,89 +121612,89 @@ - - + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + @@ -121519,17 +121746,17 @@ - - + + - - + + - - - + + + @@ -121543,20 +121770,20 @@ - - + + - - + + - - + + @@ -121621,9 +121848,9 @@ - - - + + + @@ -121631,52 +121858,52 @@ - - + + - - - - - + + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -121687,9 +121914,9 @@ - - - + + + @@ -121697,10 +121924,10 @@ - - - - + + + + @@ -121714,30 +121941,30 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + @@ -121773,8 +122000,8 @@ - - + + @@ -121850,20 +122077,20 @@ - - + + - - - - - - - - - - + + + + + + + + + + @@ -121872,19 +122099,19 @@ - - - + + + - - - - + + + + - - - + + + @@ -121911,24 +122138,24 @@ - - - - + + + + - - + + - - - - + + + + @@ -122167,8 +122394,8 @@ - - + + @@ -122182,13 +122409,13 @@ - - + + - - - + + + @@ -122227,14 +122454,14 @@ - - - + + + - - - + + + @@ -122242,17 +122469,17 @@ - - - - + + + + - - + + @@ -122267,9 +122494,9 @@ - - - + + + @@ -122283,50 +122510,50 @@ - - - - + + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - + + @@ -122336,15 +122563,15 @@ - - - + + + - - - - + + + + @@ -122366,27 +122593,27 @@ - - - - + + + + - - - - - + + + + + - - - + + + - - + + @@ -122400,9 +122627,9 @@ - - - + + + @@ -122411,30 +122638,30 @@ - - - + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -122450,26 +122677,26 @@ - - + + - - - + + + - - + + - - - + + + @@ -122486,8 +122713,8 @@ - - + + @@ -122502,8 +122729,8 @@ - - + + @@ -122551,18 +122778,18 @@ - - - + + + - - + + - - - + + + @@ -122570,13 +122797,13 @@ - - + + - - - + + + @@ -122584,9 +122811,9 @@ - - - + + + @@ -122644,8 +122871,8 @@ - - + + @@ -122664,8 +122891,8 @@ - - + + @@ -122708,12 +122935,12 @@ - - + + - - + + @@ -122750,35 +122977,35 @@ - - + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - - - + + + @@ -122790,13 +123017,13 @@ - - - + + + - - + + @@ -122839,33 +123066,33 @@ - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + @@ -122886,8 +123113,8 @@ - - + + @@ -122912,10 +123139,10 @@ - - - - + + + + @@ -122925,12 +123152,12 @@ - - + + - - + + @@ -122941,17 +123168,17 @@ - - - - - - - + + + + + + + - - + + @@ -122968,8 +123195,8 @@ - - + + @@ -122995,15 +123222,15 @@ - - + + - - - - - + + + + + @@ -123015,8 +123242,8 @@ - - + + @@ -123042,8 +123269,8 @@ - - + + @@ -123053,20 +123280,20 @@ - - + + - + - - - + + + @@ -123080,41 +123307,41 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -123124,13 +123351,13 @@ - - + + - - - + + + @@ -123144,41 +123371,41 @@ - - - - - - + + + + + + - - + + - - - - - - + + + + + + - - - - - + + + + + - - - - - - - - + + + + + + + + @@ -123188,8 +123415,8 @@ - - + + @@ -123201,18 +123428,18 @@ - - + + - - - - + + + + @@ -123236,19 +123463,19 @@ - - - + + + - - - + + + - - - + + + @@ -123261,9 +123488,9 @@ - - - + + + @@ -123271,29 +123498,29 @@ - - - - + + + + - - + + - - - - - + + + + + - - - - - - + + + + + + @@ -123326,9 +123553,9 @@ - - - + + + @@ -123337,13 +123564,13 @@ - - + + - - - + + + @@ -123432,8 +123659,8 @@ - - + + @@ -123458,13 +123685,13 @@ - - - + + + - - + + @@ -123509,27 +123736,27 @@ - - + + - + - - - + + + - - + + - - + + @@ -123580,38 +123807,38 @@ - - - - + + + + - - - - - - - - + + + + + + + + - - + + - - + + - + - - + + @@ -123622,38 +123849,38 @@ - - - - + + + + - - + + - - - + + + - - + + - - - - - + + + + + - - - - + + + + @@ -123668,28 +123895,28 @@ - - - - - + + + + + - - + + - - - - - + + + + + - - - - + + + + @@ -123711,18 +123938,18 @@ - - + + - - + + - - + + @@ -123745,12 +123972,12 @@ - - + + - - + + @@ -123787,9 +124014,9 @@ - - - + + + @@ -123824,81 +124051,81 @@ - - - + + + - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -124023,12 +124250,12 @@ - - + + - - + + @@ -124071,14 +124298,14 @@ - - + + - - - - + + + + @@ -124099,36 +124326,36 @@ - - - - - + + + + + - - + + - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -124139,39 +124366,39 @@ - - + + - - - + + + - - - - + + + + - - - + + + - - + + - - - + + + - - - - + + + + @@ -124197,14 +124424,14 @@ - - + + - - - - + + + + @@ -124221,8 +124448,8 @@ - - + + @@ -124302,14 +124529,14 @@ - - - - - - - - + + + + + + + + @@ -124340,9 +124567,9 @@ - - - + + + @@ -124362,18 +124589,18 @@ - - - - + + + + - - - + + + @@ -124381,18 +124608,18 @@ - - - - - - + + + + + + - - - + + + @@ -124402,8 +124629,8 @@ - - + + @@ -124418,8 +124645,8 @@ - - + + @@ -124434,8 +124661,8 @@ - - + + @@ -124468,20 +124695,20 @@ - - + + - - + + - - + + @@ -124508,12 +124735,12 @@ - - + + - - + + @@ -124521,34 +124748,34 @@ - - + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -124630,9 +124857,9 @@ - - - + + + @@ -124793,29 +125020,29 @@ - - - + + + - - + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -124823,47 +125050,47 @@ - - - - - + + + + + - - - - + + + + - - + + - - + + - - - - - - + + + + + + - - - - - + + + + + @@ -124898,8 +125125,8 @@ - - + + @@ -124999,13 +125226,13 @@ - - - + + + - - + + @@ -125016,15 +125243,15 @@ - - - - - - - - - + + + + + + + + + @@ -125060,9 +125287,9 @@ - - - + + + @@ -125086,21 +125313,21 @@ - - - - + + + + - - - - + + + + - - - + + + @@ -125113,10 +125340,10 @@ - - - - + + + + @@ -125124,11 +125351,11 @@ - - - - - + + + + + @@ -125151,10 +125378,10 @@ - - - - + + + + @@ -125167,20 +125394,20 @@ - - - + + + - - - - + + + + - + - - + + @@ -125190,9 +125417,9 @@ - - - + + + @@ -125281,14 +125508,14 @@ - - - + + + - - + + @@ -125364,8 +125591,8 @@ - - + + @@ -125375,66 +125602,66 @@ - - + + - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - + + + + + + + + + - - + + - - + + - - + + - - + + - + - - - - + + + + @@ -125454,21 +125681,21 @@ - - - - + + + + - - - + + + - - - - + + + + @@ -125479,23 +125706,23 @@ - - - - - - - - + + + + + + + + - - + + - - - + + + @@ -125504,10 +125731,10 @@ - - - - + + + + @@ -125539,46 +125766,46 @@ - - - - + + + + - - - + + + - - + + - - + + - - - + + + - - - - - + + + + + - - + + - - - + + + @@ -125587,31 +125814,31 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -125620,23 +125847,23 @@ - - - + + + - - - + + + - - - + + + @@ -125644,34 +125871,34 @@ - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + @@ -125681,10 +125908,10 @@ - - - - + + + + @@ -125700,10 +125927,10 @@ - - - - + + + + @@ -125713,10 +125940,10 @@ - - - - + + + + @@ -125726,37 +125953,37 @@ - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -125767,9 +125994,9 @@ - - - + + + @@ -125780,11 +126007,11 @@ - - - - - + + + + + @@ -125816,11 +126043,11 @@ - - + + - + @@ -125837,15 +126064,15 @@ - - + + - - + + - - + + @@ -125865,8 +126092,8 @@ - - + + @@ -125876,8 +126103,8 @@ - - + + @@ -125889,8 +126116,8 @@ - - + + @@ -125904,18 +126131,18 @@ - - - + + + - - - - + + + + - - + + @@ -125923,10 +126150,10 @@ - - - - + + + + @@ -125939,14 +126166,14 @@ - - - - + + + + - - + + @@ -125977,22 +126204,22 @@ - - - + + + - - - + + + - - + + @@ -126003,29 +126230,29 @@ - - - - + + + + - - - - - + + + + + - - + + - - - + + + - - + + @@ -126044,11 +126271,11 @@ - - - - - + + + + + @@ -126056,8 +126283,8 @@ - - + + @@ -126075,11 +126302,11 @@ - - - - - + + + + + @@ -126107,21 +126334,21 @@ - - - + + + - - - - + + + + - - - - + + + + @@ -126134,9 +126361,9 @@ - - - + + + @@ -126147,13 +126374,13 @@ - - + + - - - + + + @@ -126161,50 +126388,50 @@ - - - + + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -126218,8 +126445,8 @@ - - + + @@ -126290,9 +126517,9 @@ - - - + + + @@ -126326,12 +126553,12 @@ - - + + - - - + + + @@ -126340,17 +126567,17 @@ - - - + + + - - - + + + - + @@ -126361,9 +126588,9 @@ - - - + + + @@ -126428,10 +126655,10 @@ - - - - + + + + @@ -126459,13 +126686,13 @@ - - - - - - - + + + + + + + @@ -126652,12 +126879,12 @@ - - + + - - + + @@ -126669,11 +126896,11 @@ - - - - - + + + + + @@ -126714,8 +126941,8 @@ - - + + @@ -126768,8 +126995,8 @@ - - + + @@ -126781,9 +127008,9 @@ - - - + + + @@ -126794,28 +127021,28 @@ - - - + + + - - - - - - + + + + + + - - + + - - - - - + + + + + @@ -126826,9 +127053,9 @@ - - - + + + @@ -126889,8 +127116,8 @@ - - + + @@ -126929,9 +127156,9 @@ - - - + + + @@ -126987,8 +127214,8 @@ - - + + @@ -127041,51 +127268,51 @@ - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + @@ -127093,18 +127320,18 @@ - - - - + + + + - - + + @@ -127112,14 +127339,14 @@ - - - - + + + + - - - + + + @@ -127150,17 +127377,17 @@ - - + + - - - + + + @@ -127170,9 +127397,9 @@ - - - + + + @@ -127214,12 +127441,12 @@ - - + + - - + + @@ -127233,67 +127460,67 @@ - - - + + + - - + + - - + + - - + + - - + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + @@ -127301,19 +127528,19 @@ - - + + - - + + - - - - - + + + + + @@ -127324,41 +127551,41 @@ - - - - + + + + - - - + + + - - + + - - - - - + + + + + - - + + - - + + @@ -127367,16 +127594,16 @@ - - - - + + + + - - - - + + + + @@ -127397,11 +127624,11 @@ - - - - - + + + + + @@ -127418,24 +127645,24 @@ - - - - + + + + - - - - - + + + + + - - - - - + + + + + @@ -127470,12 +127697,12 @@ - - + + - - + + @@ -127500,18 +127727,18 @@ - - - + + + - - + + - - - + + + @@ -127535,18 +127762,18 @@ - - - - - + + + + + - - - - - + + + + + @@ -127557,19 +127784,19 @@ - - - - + + + + - - + + - - - + + + @@ -127588,14 +127815,14 @@ - - - + + + - - - + + + @@ -127621,9 +127848,9 @@ - - - + + + @@ -127636,14 +127863,14 @@ - - - - + + + + - - + + @@ -127661,39 +127888,39 @@ - - + + - - - + + + - - - - - + + + + + - - - + + + - - - - - + + + + + @@ -127706,9 +127933,9 @@ - - - + + + @@ -127741,14 +127968,14 @@ - - - - + + + + - - + + @@ -127759,44 +127986,44 @@ - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -127830,16 +128057,16 @@ - - - - - - + + + + + + - - - + + + @@ -127847,9 +128074,9 @@ - - - + + + @@ -127886,33 +128113,33 @@ - - - + + + - - - + + + - - + + - - + + - - - + + + - - - - + + + + @@ -127937,9 +128164,9 @@ - - - + + + @@ -127955,32 +128182,32 @@ - - - - + + + + - - + + - - + + - - - + + + - - - + + + - - - + + + @@ -127989,9 +128216,9 @@ - - - + + + @@ -127999,74 +128226,74 @@ - - - + + + - - + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - - + + - - - - + + + + @@ -128078,38 +128305,38 @@ - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - + + @@ -128124,8 +128351,8 @@ - - + + @@ -128141,8 +128368,8 @@ - - + + @@ -128156,61 +128383,61 @@ - - - - - + + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - + + + + @@ -128228,12 +128455,12 @@ - - - - - - + + + + + + @@ -128244,12 +128471,12 @@ - - - - - - + + + + + + @@ -128264,9 +128491,9 @@ - - - + + + @@ -128279,15 +128506,15 @@ - - + + - - - - - + + + + + @@ -128304,10 +128531,10 @@ - - - - + + + + @@ -128322,10 +128549,10 @@ - - - - + + + + @@ -128344,8 +128571,8 @@ - - + + @@ -128356,8 +128583,8 @@ - - + + @@ -128464,25 +128691,25 @@ - - + + - - - - - - + + + + + + - - - + + + - - + + @@ -128508,8 +128735,8 @@ - - + + @@ -128524,16 +128751,16 @@ - - + + - - + + - - + + @@ -128618,19 +128845,19 @@ - - - + + + - - - + + + - - - + + + @@ -128645,8 +128872,8 @@ - - + + @@ -128677,9 +128904,9 @@ - - - + + + @@ -128709,14 +128936,14 @@ - - - + + + - - - + + + @@ -128729,9 +128956,9 @@ - - - + + + @@ -128739,10 +128966,10 @@ - - - - + + + + @@ -128756,12 +128983,12 @@ - - + + - - + + @@ -128782,9 +129009,9 @@ - - - + + + @@ -128796,9 +129023,9 @@ - - - + + + @@ -128842,8 +129069,8 @@ - - + + @@ -128880,9 +129107,9 @@ - - - + + + @@ -128898,10 +129125,10 @@ - - - - + + + + @@ -128922,10 +129149,10 @@ - - - - + + + + @@ -128958,17 +129185,17 @@ - - + + - - - + + + @@ -128982,40 +129209,40 @@ - - + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - + + - - + + - - + + @@ -129037,20 +129264,20 @@ - - - - - - + + + + + + - - + + - - + + @@ -129058,21 +129285,21 @@ - - - - - + + + + + - - - - - + + + + + - - + + @@ -129083,7 +129310,7 @@ - + @@ -129102,21 +129329,21 @@ - - - - + + + + - - - - - - - - - + + + + + + + + + @@ -129143,8 +129370,8 @@ - - + + @@ -129164,9 +129391,9 @@ - - - + + + @@ -129174,23 +129401,23 @@ - - - + + + - - - + + + - - - + + + @@ -129207,31 +129434,31 @@ - - + + - - - + + + - - + + - - - - + + + + @@ -129241,11 +129468,11 @@ - - - - - + + + + + @@ -129296,10 +129523,10 @@ - - - - + + + + @@ -129358,24 +129585,24 @@ - - + + - - + + - - + + @@ -129385,11 +129612,11 @@ - - - - - + + + + + @@ -129434,14 +129661,14 @@ - - - - + + + + - - - + + + @@ -129668,8 +129895,8 @@ - - + + @@ -129689,29 +129916,29 @@ - - - + + + - - + + - - + + - - + + - - + + - - + + @@ -129723,14 +129950,14 @@ - - - + + + - - - + + + @@ -129743,22 +129970,32 @@ - - - - + + + + - - - - + + + + + + + + + + + + + + @@ -129789,12 +130026,12 @@ - - + + - - + + @@ -129836,24 +130073,24 @@ - - + + - - + + - - + + - - + + @@ -129873,13 +130110,13 @@ - - + + - - - + + + @@ -129893,19 +130130,18 @@ - - - - + + + + - - - - + + + + - @@ -129919,8 +130155,8 @@ - - + + @@ -129934,8 +130170,8 @@ - - + + @@ -129969,8 +130205,8 @@ - - + + @@ -129988,10 +130224,10 @@ - - - - + + + + @@ -130004,54 +130240,54 @@ - - + + - - - + + + - - + + - + - + - - - - + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - + + - - + + @@ -130060,36 +130296,36 @@ - - - - - + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - + + + + + + @@ -130100,12 +130336,12 @@ - - - - - - + + + + + + @@ -130124,9 +130360,9 @@ - - - + + + @@ -130136,8 +130372,8 @@ - - + + @@ -130151,19 +130387,19 @@ - - - - + + + + - - - + + + - - + + @@ -130216,11 +130452,11 @@ - - - - - + + + + + @@ -130236,20 +130472,20 @@ - - + + - - + + - - + + @@ -130257,20 +130493,20 @@ - - + + - - + + - - + + @@ -130326,8 +130562,8 @@ - - + + @@ -130337,21 +130573,21 @@ - - - - - + + + + + - - - - + + + + @@ -130365,24 +130601,24 @@ - - - + + + - - + + - - - - + + + + - - - + + + @@ -130410,38 +130646,38 @@ - - - + + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + @@ -130450,7 +130686,7 @@ - + @@ -130490,17 +130726,17 @@ - + - + - - + + @@ -130519,8 +130755,8 @@ - - + + @@ -130547,31 +130783,31 @@ - - + + - - - - + + + + - - - + + + - - - + + + @@ -130631,8 +130867,8 @@ - - + + @@ -130673,16 +130909,16 @@ - - + + - - + + - - + + @@ -130693,8 +130929,8 @@ - - + + @@ -130713,12 +130949,12 @@ - - + + - - + + @@ -130734,8 +130970,8 @@ - - + + @@ -130854,10 +131090,10 @@ - - - - + + + + @@ -130866,20 +131102,20 @@ - - - - - - - - + + + + + + + + - - - - + + + + @@ -130887,14 +131123,14 @@ - - - + + + - - - + + + @@ -130912,8 +131148,8 @@ - - + + @@ -130925,8 +131161,8 @@ - - + + @@ -130963,8 +131199,8 @@ - - + + @@ -131015,22 +131251,22 @@ - - - - + + + + - - - - + + + + - - - - + + + + @@ -131116,8 +131352,8 @@ - - + + @@ -131125,22 +131361,22 @@ - - + + - - - - - - + + + + + + - - - - + + + + @@ -131153,9 +131389,9 @@ - - - + + + @@ -131163,9 +131399,9 @@ - - - + + + @@ -131213,13 +131449,13 @@ - - - - - - - + + + + + + + @@ -131227,28 +131463,28 @@ - - + + - - + + - - + + - - + + - - + + @@ -131264,20 +131500,20 @@ - - - - - - + + + + + + - - - + + + - - + + @@ -131293,8 +131529,8 @@ - - + + @@ -131311,8 +131547,8 @@ - - + + @@ -131325,15 +131561,15 @@ - - - + + + - - - - + + + + @@ -131341,39 +131577,39 @@ - - - + + + - - - - + + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + @@ -131381,30 +131617,30 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + @@ -131531,8 +131767,8 @@ - - + + @@ -131651,12 +131887,12 @@ - - + + - - + + @@ -131668,14 +131904,14 @@ - - - + + + - - - + + + @@ -131683,9 +131919,9 @@ - - - + + + @@ -131710,12 +131946,12 @@ - - + + - - + + @@ -131733,10 +131969,10 @@ - - - - + + + + @@ -131753,62 +131989,62 @@ - - - - + + + + - - - + + + - - + + - - - - - - + + + + + + - - - - + + + + - - - - - - - + + + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -131819,7 +132055,7 @@ - + @@ -131853,10 +132089,10 @@ - - - - + + + + @@ -131898,7 +132134,7 @@ - + @@ -131906,34 +132142,34 @@ - - + + - - + + - - + + - - - - - - + + + + + + - - - - + + + + - - + + @@ -131944,10 +132180,10 @@ - - - - + + + + @@ -131957,8 +132193,8 @@ - - + + @@ -131969,8 +132205,8 @@ - - + + @@ -132008,8 +132244,8 @@ - - + + @@ -132047,14 +132283,14 @@ - - - - - + + + + + - - + + @@ -132088,11 +132324,11 @@ - - - - - + + + + + @@ -132204,21 +132440,21 @@ - - + + - - - + + + - - + + - - + + @@ -132252,11 +132488,11 @@ - - - - - + + + + + @@ -132271,21 +132507,21 @@ - - + + - - + + - - + + - - - + + + @@ -132301,11 +132537,11 @@ - - - - - + + + + + @@ -132339,21 +132575,21 @@ - - - - + + + + - - - - + + + + - - - + + + @@ -132374,26 +132610,26 @@ - - - - + + + + - - - + + + - - - - - + + + + + - - - + + + @@ -132402,20 +132638,20 @@ - - - + + + - - - + + + - - - + + + @@ -132425,26 +132661,26 @@ - - - + + + - - - + + + - - - - + + + + - - - - + + + + @@ -132558,9 +132794,9 @@ - - - + + + @@ -132569,9 +132805,9 @@ - - - + + + @@ -132579,21 +132815,21 @@ - - + + - - - - + + + + - - + + - - + + @@ -132601,15 +132837,15 @@ - - - + + + - - - - + + + + @@ -132621,33 +132857,33 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - - + + + @@ -132655,28 +132891,28 @@ - - - + + + - - - - - + + + + + - - + + - - - + + + - - + + @@ -132687,13 +132923,13 @@ - - - - - - - + + + + + + + @@ -132725,10 +132961,10 @@ - - - - + + + + @@ -132736,10 +132972,10 @@ - - - - + + + + @@ -132747,10 +132983,10 @@ - - - - + + + + @@ -132773,10 +133009,10 @@ - - - - + + + + @@ -132792,29 +133028,29 @@ - + - - + + - - + + - - - - + + + + - - - - - - + + + + + + @@ -132843,13 +133079,13 @@ - - - - - - - + + + + + + + @@ -132868,10 +133104,10 @@ - - - - + + + + @@ -132888,10 +133124,10 @@ - - - - + + + + @@ -132901,30 +133137,30 @@ - - - + + + - - - - - - + + + + + + - - + + - - - - - - - + + + + + + + @@ -132941,13 +133177,13 @@ - - + + - - - + + + @@ -132966,39 +133202,39 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - + + @@ -133015,55 +133251,55 @@ - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -133073,9 +133309,9 @@ - - - + + + @@ -133085,16 +133321,16 @@ - - - - - + + + + + - - - + + + @@ -133129,15 +133365,15 @@ - - - + + + - - - - + + + + @@ -133150,11 +133386,11 @@ - - - - - + + + + + @@ -133164,11 +133400,11 @@ - - - - - + + + + + @@ -133178,8 +133414,8 @@ - - + + @@ -133191,25 +133427,25 @@ - - + + - - + + - - - - - - - + + + + + + + - - + + @@ -133220,9 +133456,9 @@ - - - + + + @@ -133274,9 +133510,9 @@ - - - + + + @@ -133310,22 +133546,22 @@ - - - - - + + + + + - - - - - + + + + + - - + + @@ -133404,13 +133640,13 @@ - - + + - - - + + + @@ -133462,8 +133698,8 @@ - - + + @@ -133479,9 +133715,9 @@ - - - + + + @@ -133491,17 +133727,17 @@ - - - - + + + + - - - - - + + + + + @@ -133518,17 +133754,17 @@ - - + + - - - - - - - + + + + + + + @@ -133537,23 +133773,23 @@ - - + + - - - - + + + + - - - + + + - - + + @@ -133564,12 +133800,12 @@ - - - - - - + + + + + + @@ -133581,8 +133817,8 @@ - - + + @@ -133594,18 +133830,18 @@ - - - - - - + + + + + + - - - - + + + + @@ -133613,12 +133849,12 @@ - - + + - - + + @@ -133656,9 +133892,9 @@ - - - + + + @@ -133670,8 +133906,8 @@ - - + + @@ -133703,45 +133939,45 @@ - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + @@ -133786,9 +134022,9 @@ - - - + + + @@ -133819,10 +134055,10 @@ - - - - + + + + @@ -133914,14 +134150,14 @@ - - - - + + + + - - + + @@ -133939,8 +134175,8 @@ - - + + @@ -134185,9 +134421,9 @@ - - - + + + @@ -134276,9 +134512,9 @@ - - - + + + @@ -134299,13 +134535,13 @@ - - - - - - - + + + + + + + @@ -134317,29 +134553,29 @@ - - - + + + - - + + - - + + - - - - - - + + + + + + - - + + @@ -134397,9 +134633,9 @@ - - - + + + @@ -134411,9 +134647,9 @@ - - - + + + @@ -134537,9 +134773,9 @@ - - - + + + @@ -134565,30 +134801,30 @@ - - + + - - + + - - + + - - - - + + + + - - - - - - + + + + + + @@ -134605,9 +134841,9 @@ - - - + + + @@ -134625,8 +134861,8 @@ - - + + @@ -134661,10 +134897,10 @@ - - - - + + + + @@ -134673,21 +134909,21 @@ - - - - + + + + - - - + + + - - - - + + + + @@ -134695,21 +134931,21 @@ - - - - + + + + - - - - - + + + + + - - - + + + @@ -134728,12 +134964,12 @@ - - - + + + - - + + @@ -134748,26 +134984,26 @@ - - + + - - + + - - + + - + - + @@ -134779,12 +135015,12 @@ - - + + - - + + @@ -134799,23 +135035,23 @@ - - + + - - + + - - - + + + - + - + @@ -134834,15 +135070,15 @@ - - - + + + - - - - + + + + @@ -134855,20 +135091,20 @@ - - - + + + - - - - + + + + - - - + + + @@ -134890,9 +135126,9 @@ - - - + + + @@ -134901,10 +135137,10 @@ - - - - + + + + @@ -134912,9 +135148,9 @@ - - - + + + @@ -134922,9 +135158,9 @@ - - - + + + @@ -134933,17 +135169,17 @@ - - - - + + + + - + @@ -134955,8 +135191,8 @@ - - + + @@ -135056,8 +135292,8 @@ - - + + @@ -135066,8 +135302,8 @@ - - + + @@ -135099,19 +135335,19 @@ - - - - - - - - - + + + + + + + + + - - + + @@ -135123,9 +135359,9 @@ - - - + + + @@ -135144,14 +135380,14 @@ - - - - + + + + - - + + @@ -135179,9 +135415,9 @@ - - - + + + @@ -135195,6 +135431,7 @@ + @@ -135216,19 +135453,19 @@ - - + + - - - - + + + + - - - + + + @@ -135246,8 +135483,8 @@ - - + + @@ -135257,24 +135494,24 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -135284,26 +135521,26 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + @@ -135326,12 +135563,12 @@ - + - - - + + + @@ -135452,10 +135689,10 @@ - - - - + + + + @@ -135463,10 +135700,10 @@ - - - - + + + + @@ -135545,19 +135782,19 @@ - - - + + + - - - + + + - - - + + + @@ -135587,8 +135824,8 @@ - - + + @@ -135606,8 +135843,8 @@ - - + + @@ -135621,14 +135858,14 @@ - - - + + + - - - + + + @@ -135662,9 +135899,9 @@ - - - + + + @@ -135755,11 +135992,11 @@ - - - - - + + + + + @@ -135987,9 +136224,9 @@ - - - + + + @@ -136107,15 +136344,15 @@ - - + + - - - - - + + + + + @@ -136149,8 +136386,8 @@ - - + + @@ -136185,17 +136422,17 @@ - - + + - - + + - - - + + + @@ -136206,8 +136443,8 @@ - - + + @@ -136234,12 +136471,12 @@ - - + + - - + + @@ -136262,8 +136499,8 @@ - - + + @@ -136285,8 +136522,8 @@ - - + + @@ -136317,9 +136554,9 @@ - - - + + + @@ -136342,9 +136579,9 @@ - - - + + + @@ -136359,12 +136596,12 @@ - - + + - - + + @@ -136383,8 +136620,8 @@ - - + + @@ -136399,16 +136636,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -136442,8 +136679,8 @@ - - + + @@ -136461,9 +136698,9 @@ - - - + + + @@ -136475,9 +136712,9 @@ - - - + + + @@ -136496,24 +136733,24 @@ - - - + + + - - - - + + + + - - - + + + @@ -136535,8 +136772,8 @@ - - + + @@ -136555,9 +136792,9 @@ - - - + + + @@ -136566,28 +136803,28 @@ - - - - + + + + - - + + - - + + - - - + + + - - - + + + @@ -136596,14 +136833,14 @@ - - - - + + + + - - + + @@ -136614,9 +136851,9 @@ - - - + + + @@ -136642,8 +136879,8 @@ - - + + @@ -136740,15 +136977,15 @@ - - - + + + - - - - + + + + @@ -136760,8 +136997,8 @@ - - + + @@ -136805,14 +137042,14 @@ - - + + - - - - + + + + @@ -136836,30 +137073,30 @@ - - + + - - + + - - - + + + - - - + + + - - + + @@ -136879,9 +137116,9 @@ - - - + + + @@ -136889,8 +137126,8 @@ - - + + @@ -136916,9 +137153,9 @@ - - - + + + @@ -136939,10 +137176,10 @@ - - - - + + + + @@ -136992,9 +137229,9 @@ - - - + + + @@ -137054,21 +137291,21 @@ - - - + + + - - - - - - + + + + + + - - + + @@ -137259,10 +137496,10 @@ - - - - + + + + @@ -137549,10 +137786,10 @@ - - - - + + + + @@ -137602,9 +137839,9 @@ - - - + + + @@ -137618,15 +137855,15 @@ - - - - + + + + - - - + + + @@ -137704,9 +137941,9 @@ - - - + + + @@ -137733,21 +137970,21 @@ - - - - + + + + - - - - + + + + - - - + + + @@ -137766,9 +138003,9 @@ - - - + + + @@ -137783,14 +138020,14 @@ - - - + + + - - - + + + @@ -137832,15 +138069,15 @@ - - + + - - - - - + + + + + @@ -137848,11 +138085,11 @@ - - - - - + + + + + @@ -137929,8 +138166,8 @@ - - + + @@ -137966,8 +138203,8 @@ - - + + @@ -138034,9 +138271,9 @@ - - - + + + @@ -138107,26 +138344,26 @@ - - - - - - - + + + + + + + - - + + - - - + + + @@ -138171,13 +138408,13 @@ - - - + + + - - - + + + @@ -138241,15 +138478,15 @@ - - + + - - + + @@ -138260,16 +138497,16 @@ - - - - - + + + + + - - - + + + @@ -138278,11 +138515,11 @@ - - - - - + + + + + @@ -138291,9 +138528,9 @@ - - - + + + @@ -138343,11 +138580,11 @@ - - - - - + + + + + @@ -138357,23 +138594,23 @@ - - - - + + + + - - - + + + - - + + - - + + @@ -138386,12 +138623,12 @@ - - + + - - + + @@ -138399,8 +138636,8 @@ - - + + @@ -138417,8 +138654,8 @@ - - + + @@ -138426,12 +138663,12 @@ - - - + + + - + @@ -138460,17 +138697,17 @@ - - - + + + - - + + @@ -138537,28 +138774,28 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - + + + @@ -138568,17 +138805,17 @@ - - + + - - - - + + + + @@ -138589,26 +138826,26 @@ - - - - + + + + - - - - + + + + - - + + - - - - + + + + @@ -138619,9 +138856,9 @@ - - - + + + @@ -138653,10 +138890,10 @@ - - - - + + + + @@ -138689,9 +138926,9 @@ - - - + + + @@ -138708,15 +138945,15 @@ - - - - + + + + - - - + + + @@ -138740,12 +138977,12 @@ - - - - - - + + + + + + @@ -138767,13 +139004,13 @@ - - + + - - - + + + @@ -138790,10 +139027,10 @@ - - - - + + + + @@ -138804,47 +139041,47 @@ - - - + + + - - + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index 33b2342d2f23..f7a087b9a33f 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -1784,6 +1784,8 @@ platform_get_resource platform_get_resource_byname platform_irq_count + platform_msi_domain_alloc_irqs + platform_msi_domain_free_irqs pm_clk_add pm_clk_create pm_clk_destroy From aae44f81e3f55ebc8b52f0985b8cde6abf4d4ddb Mon Sep 17 00:00:00 2001 From: Denis Hsu Date: Tue, 31 Aug 2021 17:32:29 +0800 Subject: [PATCH 19/94] ANDROID: enable MTK RNDIS The performance of RNDIS driver in kernel 5.10 is insufficient to meet the requirement introduced by 5G. MTK RNDIS driver integrates TX/RX aggregation and fine-tune performance to achieve the goal. Leaf changes summary: 2 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 2 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 2 Added functions: [A] 'function int dev_set_mac_address(net_device*, sockaddr*, netlink_ext_ack*)' [A] 'function config_group* usb_os_desc_prepare_interf_dir(config_group*, int, usb_os_desc**, char**, module*)' Bug: 198379444 Change-Id: I04d669c6d67af778a283b5358c5f1e0b1ded83d4 Signed-off-by: Denis Hsu --- android/abi_gki_aarch64.xml | 44 +++++++++++++++---------------------- android/abi_gki_aarch64_mtk | 2 ++ 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index f167af472be8..467332b34a64 100755 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -1280,6 +1280,7 @@ + @@ -4957,6 +4958,7 @@ + @@ -65886,20 +65888,7 @@ - - - - - - - - - - - - - - + @@ -66777,7 +66766,6 @@ - @@ -77835,6 +77823,7 @@ + @@ -107939,17 +107928,6 @@ - - - - - - - - - - - @@ -118039,6 +118017,12 @@ + + + + + + @@ -137001,6 +136985,14 @@ + + + + + + + + diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index cc0be9e998f0..6fe9ba5c647b 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -452,6 +452,7 @@ devres_alloc_node devres_free devres_release + dev_set_mac_address dev_set_name _dev_warn disable_irq @@ -2195,6 +2196,7 @@ usbnet_write_cmd usbnet_write_cmd_async usbnet_write_cmd_nopm + usb_os_desc_prepare_interf_dir usb_put_function usb_put_function_instance usb_put_hcd From 0671bafa244f88d6e554c2dbd98663cb39f45113 Mon Sep 17 00:00:00 2001 From: Kamal Agrawal Date: Fri, 30 Jul 2021 18:53:06 +0530 Subject: [PATCH 20/94] UPSTREAM: tracing: Fix NULL pointer dereference in start_creating The event_trace_add_tracer() can fail. In this case, it leads to a crash in start_creating with below call stack. Handle the error scenario properly in trace_array_create_dir. Call trace: down_write+0x7c/0x204 start_creating.25017+0x6c/0x194 tracefs_create_file+0xc4/0x2b4 init_tracer_tracefs+0x5c/0x940 trace_array_create_dir+0x58/0xb4 trace_array_create+0x1bc/0x2b8 trace_array_get_by_name+0xdc/0x18c Link: https://lkml.kernel.org/r/1627651386-21315-1-git-send-email-kamaagra@codeaurora.org Cc: stable@vger.kernel.org Fixes: 4114fbfd02f1 ("tracing: Enable creating new instance early boot") Signed-off-by: Kamal Agrawal Signed-off-by: Steven Rostedt (VMware) Bug: 200485226 Change-Id: I79946d9bfc3ffd129bbb1e5fa6460ec0a51f8e59 (cherry picked from commit ff41c28c4b54052942180d8b3f49e75f1445135a) Signed-off-by: Kamal Agrawal --- kernel/trace/trace.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index f7c9c51ccd26..f45179252122 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -8672,8 +8672,10 @@ static int trace_array_create_dir(struct trace_array *tr) return -EINVAL; ret = event_trace_add_tracer(tr->dir, tr); - if (ret) + if (ret) { tracefs_remove(tr->dir); + return ret; + } init_tracer_tracefs(tr, tr->dir); __update_tracer_options(tr); From bb13ff05981f0ab5fe3c579cdc5c15ef391c5d48 Mon Sep 17 00:00:00 2001 From: Wesley Cheng Date: Tue, 21 Sep 2021 19:12:18 -0700 Subject: [PATCH 21/94] BACKPORT: FROMGIT: usb: dwc3: gadget: Avoid starting DWC3 gadget during UDC unbind There is a race present where the DWC3 runtime resume runs in parallel to the UDC unbind sequence. This will eventually lead to a possible scenario where we are enabling the run/stop bit, without a valid composition defined. Thread#1 (handling UDC unbind): usb_gadget_remove_driver() -->usb_gadget_disconnect() -->dwc3_gadget_pullup(0) --> continue UDC unbind sequence -->Thread#2 is running in parallel here Thread#2 (handing next cable connect) __dwc3_set_mode() -->pm_runtime_get_sync() -->dwc3_gadget_resume() -->dwc->gadget_driver is NOT NULL yet -->dwc3_gadget_run_stop(1) --> _dwc3gadget_start() ... Fix this by tracking the pullup disable routine, and avoiding resuming of the DWC3 gadget. Once the UDC is re-binded, that will trigger the pullup enable routine, which would handle enabling the DWC3 gadget. Acked-by: Felipe Balbi Signed-off-by: Wesley Cheng Link: https://lore.kernel.org/r/20210917021852.2037-1-wcheng@codeaurora.org Signed-off-by: Greg Kroah-Hartman Bug: 200287549 (cherry picked from commit 8217f07a50236779880f13e87f99224cd9117f83 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing) [wcheng: Fixed KMI breakage by moving softconnect to a new parent structure] Change-Id: I9554933826710cc68136b08176290584f9ab74df Signed-off-by: Wesley Cheng --- drivers/usb/dwc3/core.c | 6 ++++-- drivers/usb/dwc3/core.h | 10 ++++++++++ drivers/usb/dwc3/gadget.c | 5 ++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 1d421c6557d6..34a08815bf18 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -1530,15 +1530,17 @@ static int dwc3_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; struct resource *res, dwc_res; + struct dwc3_vendor *vdwc; struct dwc3 *dwc; int ret; void __iomem *regs; - dwc = devm_kzalloc(dev, sizeof(*dwc), GFP_KERNEL); - if (!dwc) + vdwc = devm_kzalloc(dev, sizeof(*vdwc), GFP_KERNEL); + if (!vdwc) return -ENOMEM; + dwc = &vdwc->dwc; dwc->dev = dev; diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index d938f85c5847..f66fefaf401a 100644 --- a/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h @@ -1319,6 +1319,16 @@ struct dwc3 { ANDROID_KABI_RESERVE(4); }; +/** + * struct dwc3_vendor - contains parameters without modifying the format of DWC3 core + * @dwc: contains dwc3 core reference + * @softconnect: true when gadget connect is called, false when disconnect runs + */ +struct dwc3_vendor { + struct dwc3 dwc; + unsigned softconnect:1; +}; + #define INCRX_BURST_MODE 0 #define INCRX_UNDEF_LENGTH_BURST_MODE 1 diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index fc6508cb0f41..47b00f938ecc 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2411,10 +2411,12 @@ static int __dwc3_gadget_start(struct dwc3 *dwc); static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on) { struct dwc3 *dwc = gadget_to_dwc(g); + struct dwc3_vendor *vdwc = container_of(dwc, struct dwc3_vendor, dwc); unsigned long flags; int ret; is_on = !!is_on; + vdwc->softconnect = is_on; /* * Per databook, when we want to stop the gadget, if a control transfer @@ -4362,9 +4364,10 @@ int dwc3_gadget_suspend(struct dwc3 *dwc) int dwc3_gadget_resume(struct dwc3 *dwc) { + struct dwc3_vendor *vdwc = container_of(dwc, struct dwc3_vendor, dwc); int ret; - if (!dwc->gadget_driver) + if (!dwc->gadget_driver || !vdwc->softconnect) return 0; ret = __dwc3_gadget_start(dwc); From 4e6242598d1f840d6d2825f4ed98c955964c664e Mon Sep 17 00:00:00 2001 From: Rajkumar Subbiah Date: Wed, 15 Sep 2021 16:59:49 -0400 Subject: [PATCH 22/94] UPSTREAM: drm/dp_mst: Fix return code on sideband message failure Commit 2f015ec6eab6 ("drm/dp_mst: Add sideband down request tracing + selftests") added some debug code for sideband message tracing. But it seems to have unintentionally changed the behavior on sideband message failure. It catches and returns failure only if DRM_UT_DP is enabled. Otherwise it ignores the error code and returns success. So on an MST unplug, the caller is unaware that the clear payload message failed and ends up waiting for 4 seconds for the response. Fixes the issue by returning the proper error code. Changes in V2: -- Revise commit text as review comment -- add Fixes text Changes in V3: -- remove "unlikely" optimization Fixes: 2f015ec6eab6 ("drm/dp_mst: Add sideband down request tracing + selftests") Change-Id: Id45a9308d05134e4874144782e31bd92c7f9faae (cherry picked from commit bb693c114e8b53e3e0b8228be218d907d35959a5) Cc: # v5.5+ Signed-off-by: Rajkumar Subbiah Signed-off-by: Kuogee Hsieh Reviewed-by: Stephen Boyd Reviewed-by: Jani Nikula Reviewed-by: Lyude Paul Signed-off-by: Lyude Paul Link: https://patchwork.freedesktop.org/patch/msgid/1625585434-9562-1-git-send-email-khsieh@codeaurora.org --- drivers/gpu/drm/drm_dp_mst_topology.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c index a08cc6b53bc2..4478511c38f7 100644 --- a/drivers/gpu/drm/drm_dp_mst_topology.c +++ b/drivers/gpu/drm/drm_dp_mst_topology.c @@ -2889,11 +2889,13 @@ static int process_single_tx_qlock(struct drm_dp_mst_topology_mgr *mgr, idx += tosend + 1; ret = drm_dp_send_sideband_msg(mgr, up, chunk, idx); - if (unlikely(ret) && drm_debug_enabled(DRM_UT_DP)) { - struct drm_printer p = drm_debug_printer(DBG_PREFIX); + if (ret) { + if (drm_debug_enabled(DRM_UT_DP)) { + struct drm_printer p = drm_debug_printer(DBG_PREFIX); - drm_printf(&p, "sideband msg failed to send\n"); - drm_dp_mst_dump_sideband_msg_tx(&p, txmsg); + drm_printf(&p, "sideband msg failed to send\n"); + drm_dp_mst_dump_sideband_msg_tx(&p, txmsg); + } return ret; } From 5f10883630156290b8919e740931fef848ae1fdf Mon Sep 17 00:00:00 2001 From: Lee Jones Date: Fri, 21 May 2021 10:19:20 +0100 Subject: [PATCH 23/94] Revert "FROMLIST: USB: gadget: f_fs: add SuperSpeed Plus support" This reverts commit cac70628fbe41ecf5c8f2661f3733fe4aaa8795f. This functionality is provided by upstream commit: a353397b0d5df ("usb: gadget: f_fs: Re-use SS descriptors for SuperSpeedPlus") Signed-off-by: Lee Jones Change-Id: I02ad16f4ac031f87e1567c00daaa3f6213a0a06d (cherry picked from commit 4e307150ee18c9b1b491e4885c93ddc5f495eeee) --- drivers/usb/gadget/function/f_fs.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c index 64df4846cc67..7df180b110af 100644 --- a/drivers/usb/gadget/function/f_fs.c +++ b/drivers/usb/gadget/function/f_fs.c @@ -3227,10 +3227,6 @@ static int _ffs_func_bind(struct usb_configuration *c, func->function.os_desc_n = c->cdev->use_os_string ? ffs->interfaces_count : 0; - if (likely(super)) { - func->function.ssp_descriptors = - usb_copy_descriptors(func->function.ss_descriptors); - } /* And we're done */ ffs_event_add(ffs, FUNCTIONFS_BIND); return 0; From 66e24eb093ebb3a2b21a2b55aa5778683b99fd75 Mon Sep 17 00:00:00 2001 From: Todd Kjos Date: Thu, 23 Sep 2021 23:44:34 +0000 Subject: [PATCH 24/94] Revert "ANDROID: mm: page_pinner: use EXPORT_SYMBOL_GPL" This reverts commit d820d22b5d8c7eb86f42b987ed64157baefa11ab. Reason for revert: Needed for non-GPL use of put_page() which is allowed by upstream kernel. Change-Id: I9a2a51c1e2d11ccc5403fc5a8510f577446add92 Signed-off-by: Todd Kjos --- mm/page_pinner.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/page_pinner.c b/mm/page_pinner.c index 3f5c48af3135..f4a141aafac6 100644 --- a/mm/page_pinner.c +++ b/mm/page_pinner.c @@ -59,7 +59,7 @@ static bool page_pinner_enabled; DEFINE_STATIC_KEY_FALSE(page_pinner_inited); DEFINE_STATIC_KEY_TRUE(failure_tracking); -EXPORT_SYMBOL_GPL(failure_tracking); +EXPORT_SYMBOL(failure_tracking); static depot_stack_handle_t failure_handle; @@ -350,7 +350,7 @@ void __page_pinner_migration_failed(struct page *page) acf_pinner.pinner[idx] = record; spin_unlock_irqrestore(&acf_pinner.lock, flags); } -EXPORT_SYMBOL_GPL(__page_pinner_migration_failed); +EXPORT_SYMBOL(__page_pinner_migration_failed); void __page_pinner_mark_migration_failed_pages(struct list_head *page_list) { From cdbeb135e5939afc3c7b2b6c385764cb249698e8 Mon Sep 17 00:00:00 2001 From: Liangliang Li Date: Sat, 18 Sep 2021 17:03:48 +0800 Subject: [PATCH 25/94] ANDROID: GKI: Update symbols to symbol list Add symbol to symbol list for oem module. Leaf changes summary: 6 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 3 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 3 Added variables 3 Added functions: [A] 'function int _kstrtoul(const char*, unsigned int, unsigned long int*)' [A] 'function int profile_event_register(profile_type, notifier_block*)' [A] 'function int profile_event_unregister(profile_type, notifier_block*)' 3 Added variables: [A] 'tracepoint __tracepoint_android_vh_dup_task_struct' [A] 'tracepoint __tracepoint_android_vh_irqtime_account_process_tick' [A] 'tracepoint __tracepoint_android_vh_vmpressure' Bug: 200339191 Change-Id: I7ca0bdc942d26d45b9e19568e66734517d197c73 Signed-off-by: Liangliang Li --- android/abi_gki_aarch64.xml | 10495 ++++++++++++++++----------------- android/abi_gki_aarch64_vivo | 10 + 2 files changed, 5184 insertions(+), 5321 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 467332b34a64..ac1ea4e5e7cd 100755 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -579,6 +579,7 @@ + @@ -3661,6 +3662,8 @@ + + @@ -5495,6 +5498,7 @@ + @@ -5522,6 +5526,7 @@ + @@ -5608,6 +5613,7 @@ + @@ -8173,9 +8179,9 @@ - - - + + + @@ -8188,7 +8194,6 @@ - @@ -8270,7 +8275,6 @@ - @@ -8680,7 +8684,14 @@ - + + + + + + + + @@ -8688,13 +8699,6 @@ - - - - - - - @@ -11064,6 +11068,7 @@ + @@ -11415,8 +11420,8 @@ - - + + @@ -12032,7 +12037,23 @@ - + + + + + + + + + + + + + + + + + @@ -12630,6 +12651,7 @@ + @@ -14177,12 +14199,6 @@ - - - - - - @@ -14652,6 +14668,9 @@ + + + @@ -14846,7 +14865,29 @@ - + + + + + + + + + + + + + + + + + + + + + + + @@ -17704,7 +17745,6 @@ - @@ -18078,11 +18118,7 @@ - - - - - + @@ -19029,7 +19065,6 @@ - @@ -19096,7 +19131,6 @@ - @@ -19534,14 +19568,6 @@ - - - - - - - - @@ -19892,7 +19918,7 @@ - + @@ -20603,6 +20629,7 @@ + @@ -21343,6 +21370,11 @@ + + + + + @@ -23355,7 +23387,7 @@ - + @@ -23559,6 +23591,7 @@ + @@ -23863,7 +23896,23 @@ - + + + + + + + + + + + + + + + + + @@ -24506,7 +24555,7 @@ - + @@ -24855,7 +24904,6 @@ - @@ -24933,7 +24981,7 @@ - + @@ -24990,6 +25038,7 @@ + @@ -25340,6 +25389,7 @@ + @@ -26896,7 +26946,6 @@ - @@ -30576,9 +30625,9 @@ - - - + + + @@ -31463,7 +31512,6 @@ - @@ -31718,7 +31766,68 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -32222,7 +32331,6 @@ - @@ -32637,6 +32745,7 @@ + @@ -36378,7 +36487,6 @@ - @@ -37168,8 +37276,8 @@ - - + + @@ -38092,17 +38200,6 @@ - - - - - - - - - - - @@ -38381,9 +38478,9 @@ - - - + + + @@ -38889,6 +38986,7 @@ + @@ -39845,7 +39943,6 @@ - @@ -42293,15 +42390,7 @@ - - - - - - - - @@ -42638,18 +42727,7 @@ - - - - - - - - - - - - + @@ -42745,12 +42823,12 @@ - - - - - - + + + + + + @@ -42855,7 +42933,6 @@ - @@ -43597,21 +43674,21 @@ - + - + - + - + - + - + @@ -44046,7 +44123,6 @@ - @@ -45670,8 +45746,8 @@ - - + + @@ -46017,7 +46093,35 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -46578,7 +46682,14 @@ - + + + + + + + + @@ -47224,11 +47335,6 @@ - - - - - @@ -47629,7 +47735,7 @@ - + @@ -47755,6 +47861,11 @@ + + + + + @@ -48060,7 +48171,7 @@ - + @@ -48205,56 +48316,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -48595,6 +48657,7 @@ + @@ -49528,7 +49591,7 @@ - + @@ -50372,26 +50435,8 @@ - - - - - - - - - - - - - - - - - - @@ -50650,26 +50695,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -50856,6 +50881,7 @@ + @@ -51445,7 +51471,23 @@ - + + + + + + + + + + + + + + + + + @@ -51807,7 +51849,6 @@ - @@ -52726,9 +52767,9 @@ - - - + + + @@ -53448,6 +53489,7 @@ + @@ -54032,7 +54074,7 @@ - + @@ -54497,7 +54539,7 @@ - + @@ -55358,26 +55400,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -56715,7 +56737,6 @@ - @@ -57178,11 +57199,6 @@ - - - - - @@ -58397,44 +58413,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -59598,65 +59577,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -60431,7 +60352,6 @@ - @@ -61367,7 +61287,17 @@ - + + + + + + + + + + + @@ -62410,7 +62340,7 @@ - + @@ -62896,10 +62826,10 @@ - - - - + + + + @@ -62949,6 +62879,12 @@ + + + + + + @@ -63208,6 +63144,7 @@ + @@ -63530,47 +63467,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -64140,11 +64037,6 @@ - - - - - @@ -65171,11 +65063,6 @@ - - - - - @@ -65628,7 +65515,7 @@ - + @@ -67196,7 +67083,7 @@ - + @@ -67472,7 +67359,6 @@ - @@ -67669,6 +67555,7 @@ + @@ -69190,14 +69077,7 @@ - - - - - - - - + @@ -69323,14 +69203,6 @@ - - - - - - - - @@ -70016,8 +69888,8 @@ - - + + @@ -70136,7 +70008,6 @@ - @@ -70802,8 +70673,8 @@ - - + + @@ -70875,6 +70746,7 @@ + @@ -71310,38 +71182,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -71452,7 +71293,7 @@ - + @@ -73004,15 +72845,15 @@ - + - + - + - + @@ -74142,7 +73983,6 @@ - @@ -75537,11 +75377,11 @@ - + - + @@ -76583,12 +76423,12 @@ - - - - - - + + + + + + @@ -77873,6 +77713,7 @@ + @@ -78110,7 +77951,6 @@ - @@ -78827,6 +78667,7 @@ + @@ -79638,6 +79479,7 @@ + @@ -79710,6 +79552,9 @@ + + + @@ -79726,11 +79571,6 @@ - - - - - @@ -79753,7 +79593,6 @@ - @@ -80208,7 +80047,7 @@ - + @@ -80284,14 +80123,6 @@ - - - - - - - - @@ -83214,6 +83045,7 @@ + @@ -83832,7 +83664,7 @@ - + @@ -84512,9 +84344,9 @@ - - - + + + @@ -84983,26 +84815,7 @@ - - - - - - - - - - - - - - - - - - - - + @@ -85027,7 +84840,7 @@ - + @@ -85052,6 +84865,7 @@ + @@ -85090,6 +84904,7 @@ + @@ -86459,7 +86274,7 @@ - + @@ -87089,8 +86904,8 @@ - - + + @@ -87712,6 +87527,11 @@ + + + + + @@ -88150,7 +87970,6 @@ - @@ -88310,6 +88129,14 @@ + + + + + + + + @@ -88744,7 +88571,20 @@ - + + + + + + + + + + + + + + @@ -89301,7 +89141,7 @@ - + @@ -89381,7 +89221,7 @@ - + @@ -89676,6 +89516,7 @@ + @@ -89812,7 +89653,7 @@ - + @@ -91274,7 +91115,6 @@ - @@ -91769,17 +91609,6 @@ - - - - - - - - - - - @@ -92539,7 +92368,7 @@ - + @@ -93083,7 +92912,7 @@ - + @@ -93521,7 +93350,7 @@ - + @@ -94218,9 +94047,6 @@ - - - @@ -95455,6 +95281,7 @@ + @@ -95730,8 +95557,8 @@ - - + + @@ -95928,8 +95755,8 @@ - - + + @@ -97049,6 +96876,7 @@ + @@ -98021,7 +97849,14 @@ - + + + + + + + + @@ -99082,10 +98917,10 @@ - - - + + + @@ -99109,7 +98944,7 @@ - + @@ -99250,8 +99085,8 @@ - - + + @@ -99851,7 +99686,6 @@ - @@ -100120,6 +99954,7 @@ + @@ -100645,7 +100480,20 @@ - + + + + + + + + + + + + + + @@ -100704,6 +100552,9 @@ + + + @@ -104069,20 +103920,7 @@ - - - - - - - - - - - - - - + @@ -104417,6 +104255,7 @@ + @@ -107726,7 +107565,7 @@ - + @@ -108266,11 +108105,6 @@ - - - - - @@ -108597,6 +108431,7 @@ + @@ -110321,7 +110156,6 @@ - @@ -110406,7 +110240,6 @@ - @@ -110525,8 +110358,8 @@ - - + + @@ -111058,6 +110891,7 @@ + @@ -113943,6 +113777,7 @@ + @@ -113970,6 +113805,7 @@ + @@ -114056,6 +113892,7 @@ + @@ -114265,38 +114102,38 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + @@ -114306,32 +114143,38 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - + + + + + + + + @@ -114350,8 +114193,8 @@ - - + + @@ -114367,57 +114210,57 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + @@ -114428,16 +114271,16 @@ - - + + - - + + @@ -114461,12 +114304,12 @@ - - - - - - + + + + + + @@ -114483,9 +114326,9 @@ - - - + + + @@ -114501,33 +114344,33 @@ - - + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + @@ -114540,22 +114383,22 @@ - - - - + + + + - - - - + + + + - - - - + + + + @@ -114629,13 +114472,13 @@ - - - - - - - + + + + + + + @@ -114644,29 +114487,29 @@ - - - + + + - - - - - - + + + + + + - - - - + + + + - - + + @@ -114708,11 +114551,11 @@ - - - - - + + + + + @@ -114732,14 +114575,14 @@ - - + + - - - - + + + + @@ -114762,27 +114605,27 @@ - - - - + + + + - - - + + + - - - + + + - - - - - + + + + + @@ -114832,21 +114675,21 @@ - - - - - + + + + + - - - - - - + + + + + + - - + + @@ -114887,18 +114730,18 @@ - - + + - - - + + + - - - + + + @@ -114931,17 +114774,17 @@ - - - - + + + + - - - - - + + + + + @@ -114952,58 +114795,58 @@ - - - - + + + + - - + + - - - + + + - - - + + + - - + + - - - - + + + + - - + + - - + + - - + + - - - - - + + + + + - - - + + + @@ -115012,49 +114855,49 @@ - - - - + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -115064,10 +114907,10 @@ - - - - + + + + @@ -115111,17 +114954,17 @@ - - + + - - + + - - - + + + @@ -115156,10 +114999,10 @@ - - - - + + + + @@ -115191,13 +115034,13 @@ - - - + + + - - + + @@ -115228,8 +115071,8 @@ - - + + @@ -115238,8 +115081,8 @@ - - + + @@ -115261,8 +115104,8 @@ - - + + @@ -115309,8 +115152,8 @@ - - + + @@ -115332,10 +115175,10 @@ - - - - + + + + @@ -115371,9 +115214,9 @@ - - - + + + @@ -115517,16 +115360,16 @@ - - + + - - + + @@ -115556,53 +115399,53 @@ - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -115620,9 +115463,9 @@ - - - + + + @@ -115670,67 +115513,67 @@ - - - - + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + @@ -115746,16 +115589,16 @@ - - + + - - - - - - + + + + + + @@ -115776,33 +115619,33 @@ - - + + - - + + - - - + + + - - - - - + + + + + - - - - - + + + + + @@ -115812,8 +115655,8 @@ - - + + @@ -115826,8 +115669,8 @@ - - + + @@ -115897,9 +115740,9 @@ - - - + + + @@ -115914,19 +115757,19 @@ - - - + + + - - - + + + - - - + + + @@ -115958,9 +115801,9 @@ - - - + + + @@ -116038,14 +115881,14 @@ - - - + + + - - - + + + @@ -116054,65 +115897,65 @@ - - - + + + - - - - + + + + - - + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - + + + + - - + + - - + + - - - + + + - - - + + + @@ -116121,19 +115964,19 @@ - - - + + + - - - + + + - - - + + + @@ -116141,35 +115984,35 @@ - - - + + + - - + + - - + + - - - + + + - - + + @@ -116286,8 +116129,8 @@ - - + + @@ -116370,28 +116213,28 @@ - - - + + + - - + + - - - - - + + + + + @@ -116406,11 +116249,11 @@ - - - - - + + + + + @@ -116422,11 +116265,11 @@ - - - - - + + + + + @@ -116445,8 +116288,8 @@ - - + + @@ -116483,10 +116326,10 @@ - - - - + + + + @@ -116524,22 +116367,22 @@ - - + + - - - - + + + + - - + + - - + + @@ -116566,22 +116409,22 @@ - - + + - - - - + + + + - - - + + + @@ -116642,8 +116485,8 @@ - - + + @@ -116654,18 +116497,18 @@ - - + + - - - + + + - - - + + + @@ -116677,8 +116520,8 @@ - - + + @@ -116694,9 +116537,9 @@ - - - + + + @@ -116729,12 +116572,12 @@ - - + + - - + + @@ -116745,23 +116588,23 @@ - - + + - - - + + + - - - - + + + + @@ -116776,9 +116619,9 @@ - - - + + + @@ -116793,8 +116636,8 @@ - - + + @@ -116814,52 +116657,52 @@ - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - + - + - - - + + + - - - - - + + + + + @@ -116902,12 +116745,12 @@ - - + + - - + + @@ -116936,10 +116779,10 @@ - - - - + + + + @@ -116994,42 +116837,42 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - + + - - - + + + - - - + + + - + @@ -117064,10 +116907,10 @@ - - - - + + + + @@ -117075,9 +116918,9 @@ - - - + + + @@ -117087,7 +116930,7 @@ - + @@ -117098,8 +116941,8 @@ - - + + @@ -117116,22 +116959,22 @@ - - + + - - - + + + - - - + + + @@ -117181,11 +117024,11 @@ - - - - - + + + + + @@ -117193,44 +117036,44 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - + + - - + + - - - - + + + + @@ -117245,8 +117088,8 @@ - - + + @@ -117267,18 +117110,18 @@ - - - + + + - - - + + + @@ -117303,11 +117146,11 @@ - - - - - + + + + + @@ -117317,8 +117160,8 @@ - - + + @@ -117334,18 +117177,18 @@ - - + + - - + + - - - - + + + + @@ -117376,8 +117219,8 @@ - - + + @@ -117386,7 +117229,7 @@ - + @@ -117417,11 +117260,11 @@ - - - - - + + + + + @@ -117431,25 +117274,25 @@ - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -117486,11 +117329,11 @@ - - - - - + + + + + @@ -117500,11 +117343,11 @@ - - - - - + + + + + @@ -117536,9 +117379,9 @@ - - - + + + @@ -117549,8 +117392,8 @@ - - + + @@ -117560,9 +117403,9 @@ - - - + + + @@ -117571,11 +117414,11 @@ - - - - - + + + + + @@ -117588,16 +117431,16 @@ - - + + - - + + - - + + @@ -117608,8 +117451,8 @@ - - + + @@ -117645,49 +117488,49 @@ - - + + - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -117709,9 +117552,9 @@ - - - + + + @@ -117724,9 +117567,9 @@ - - - + + + @@ -117748,10 +117591,10 @@ - - - - + + + + @@ -117782,15 +117625,15 @@ - - - - + + + + - - - + + + @@ -117810,8 +117653,8 @@ - - + + @@ -117827,8 +117670,8 @@ - - + + @@ -117836,13 +117679,13 @@ - - + + - - - + + + @@ -117853,9 +117696,9 @@ - - - + + + @@ -117872,16 +117715,16 @@ - - + + - - + + @@ -117897,9 +117740,9 @@ - - - + + + @@ -117984,9 +117827,9 @@ - - - + + + @@ -117999,17 +117842,17 @@ - - - - + + + + - - - - + + + + @@ -118017,10 +117860,10 @@ - - - - + + + + @@ -118028,9 +117871,9 @@ - - - + + + @@ -118051,11 +117894,11 @@ - - - - - + + + + + @@ -118103,20 +117946,20 @@ - - + + - - + + - - + + @@ -118129,8 +117972,8 @@ - - + + @@ -118152,12 +117995,12 @@ - - - - - - + + + + + + @@ -118166,40 +118009,40 @@ - - - + + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -118234,28 +118077,28 @@ - - - + + + - - + + - - - - + + + + - - - + + + @@ -118277,10 +118120,10 @@ - - - - + + + + @@ -118302,11 +118145,11 @@ - - - - - + + + + + @@ -118329,15 +118172,15 @@ - - - + + + - - - - + + + + @@ -118354,14 +118197,14 @@ - - - + + + - - - + + + @@ -118390,22 +118233,22 @@ - - + + - - + + - - - - + + + + @@ -118428,10 +118271,10 @@ - - - - + + + + @@ -118439,15 +118282,15 @@ - - - - + + + + - - - + + + @@ -118544,11 +118387,11 @@ - - - - - + + + + + @@ -118739,29 +118582,29 @@ - - - - + + + + - - - + + + - - - - + + + + - - - - - + + + + + @@ -118771,10 +118614,10 @@ - - - - + + + + @@ -118813,14 +118656,14 @@ - - - - - - - - + + + + + + + + @@ -118833,9 +118676,9 @@ - - - + + + @@ -118868,8 +118711,8 @@ - - + + @@ -118931,14 +118774,14 @@ - - - + + + - - - + + + @@ -118946,10 +118789,10 @@ - - - - + + + + @@ -118994,15 +118837,15 @@ - - - - + + + + - - - + + + @@ -119101,16 +118944,16 @@ - - - + + + - - - - - + + + + + @@ -119160,46 +119003,46 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - + + - - - - - + + + + + - - + + - - + + @@ -119294,9 +119137,9 @@ - - - + + + @@ -119318,17 +119161,17 @@ - - + + - - - + + + - - + + @@ -119336,15 +119179,15 @@ - - - + + + - - - - + + + + @@ -119355,34 +119198,34 @@ - - + + - - - - + + + + - - + + - - - + + + - - - - + + + + @@ -119394,9 +119237,9 @@ - - - + + + @@ -119404,8 +119247,8 @@ - - + + @@ -119416,15 +119259,15 @@ - + - - - - - - + + + + + + @@ -119436,13 +119279,13 @@ - - - - + + + + - - + + @@ -119462,10 +119305,10 @@ - - - - + + + + @@ -119615,46 +119458,46 @@ - - - + + + - - - + + + - - + + - - - - - + + + + + - - + + - - - + + + - - - - + + + + - - - - - + + + + + @@ -119787,8 +119630,8 @@ - - + + @@ -119821,16 +119664,16 @@ - - + + - - + + - - + + @@ -119842,16 +119685,16 @@ - - + + - - + + @@ -119867,9 +119710,9 @@ - - - + + + @@ -119879,62 +119722,62 @@ - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -119952,14 +119795,14 @@ - - - + + + - - - + + + @@ -119994,13 +119837,13 @@ - - - - - - - + + + + + + + @@ -120224,62 +120067,62 @@ - - + + - - - + + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + @@ -120295,15 +120138,15 @@ - - + + - - - - - + + + + + @@ -120314,10 +120157,10 @@ - - - - + + + + @@ -120346,8 +120189,8 @@ - - + + @@ -120355,9 +120198,9 @@ - - - + + + @@ -120394,9 +120237,9 @@ - - - + + + @@ -120405,8 +120248,8 @@ - - + + @@ -120414,19 +120257,19 @@ - - - - - + + + + + - - - - - - + + + + + + @@ -120434,16 +120277,16 @@ - - + + - - + + - - + + @@ -120456,17 +120299,17 @@ - - + + - - + + - - - + + + @@ -120513,19 +120356,19 @@ - - - - - - - + + + + + + + - - - + + + @@ -120533,17 +120376,17 @@ - - - + + + - - + + @@ -120561,20 +120404,20 @@ - - + + - - + + - - + + @@ -120587,11 +120430,11 @@ - - - - - + + + + + @@ -120602,33 +120445,33 @@ - - - + + + - - - - + + + + - - - - + + + + - - + + - - + + @@ -120682,18 +120525,18 @@ - - - - - - + + + + + + - - - - + + + + @@ -120712,10 +120555,10 @@ - - - - + + + + @@ -120723,8 +120566,8 @@ - - + + @@ -120768,9 +120611,9 @@ - - - + + + @@ -120799,77 +120642,77 @@ - - - - - + + + + + - - - + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - + + - - - - - - - + + + + + + + - - - + + + - - - - + + + + @@ -120879,12 +120722,12 @@ - - + + - - + + @@ -120903,23 +120746,23 @@ - - + + - - - - + + + + - - - + + + @@ -120935,12 +120778,12 @@ - - - - - - + + + + + + @@ -120992,20 +120835,20 @@ - - + + - - - - + + + + - - - - + + + + @@ -121129,10 +120972,10 @@ - - - - + + + + @@ -121177,9 +121020,9 @@ - - - + + + @@ -121308,19 +121151,19 @@ - - - + + + - - - + + + - - - + + + @@ -121421,8 +121264,8 @@ - - + + @@ -121444,9 +121287,9 @@ - - - + + + @@ -121474,8 +121317,8 @@ - - + + @@ -121490,24 +121333,24 @@ - - + + - - - + + + - - - - + + + + - - - + + + @@ -121526,9 +121369,9 @@ - - - + + + @@ -121536,18 +121379,18 @@ - - + + - - - + + + - - - + + + @@ -121568,9 +121411,9 @@ - - - + + + @@ -121596,89 +121439,89 @@ - - + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + @@ -121730,17 +121573,17 @@ - - + + - - + + - - - + + + @@ -121754,20 +121597,20 @@ - - + + - - + + - - + + @@ -121832,9 +121675,9 @@ - - - + + + @@ -121842,52 +121685,52 @@ - - + + - - - - - + + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -121898,9 +121741,9 @@ - - - + + + @@ -121908,10 +121751,10 @@ - - - - + + + + @@ -121925,30 +121768,30 @@ - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + @@ -121984,8 +121827,8 @@ - - + + @@ -122061,20 +121904,20 @@ - - + + - - - - - - - - - - + + + + + + + + + + @@ -122083,19 +121926,19 @@ - - - + + + - - - - + + + + - - - + + + @@ -122122,24 +121965,24 @@ - - - - + + + + - - + + - - - - + + + + @@ -122248,10 +122091,10 @@ - - - - + + + + @@ -122378,8 +122221,8 @@ - - + + @@ -122393,13 +122236,13 @@ - - + + - - - + + + @@ -122438,14 +122281,14 @@ - - - + + + - - - + + + @@ -122453,17 +122296,17 @@ - - - - + + + + - - + + @@ -122478,9 +122321,9 @@ - - - + + + @@ -122494,50 +122337,50 @@ - - - - + + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - + + @@ -122547,15 +122390,15 @@ - - - + + + - - - - + + + + @@ -122577,27 +122420,27 @@ - - - - + + + + - - - - - + + + + + - - - + + + - - + + @@ -122611,9 +122454,9 @@ - - - + + + @@ -122622,30 +122465,30 @@ - - - + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -122661,26 +122504,26 @@ - - + + - - - + + + - - + + - - - + + + @@ -122697,8 +122540,8 @@ - - + + @@ -122713,8 +122556,8 @@ - - + + @@ -122762,18 +122605,18 @@ - - - + + + - - + + - - - + + + @@ -122781,13 +122624,13 @@ - - + + - - - + + + @@ -122795,9 +122638,9 @@ - - - + + + @@ -122855,8 +122698,8 @@ - - + + @@ -122875,8 +122718,8 @@ - - + + @@ -122919,12 +122762,12 @@ - - + + - - + + @@ -122961,35 +122804,35 @@ - - + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - - - + + + @@ -123001,13 +122844,13 @@ - - - + + + - - + + @@ -123050,33 +122893,33 @@ - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + @@ -123097,8 +122940,8 @@ - - + + @@ -123123,10 +122966,10 @@ - - - - + + + + @@ -123136,12 +122979,12 @@ - - + + - - + + @@ -123152,17 +122995,17 @@ - - - - - - - + + + + + + + - - + + @@ -123179,8 +123022,8 @@ - - + + @@ -123206,15 +123049,15 @@ - - + + - - - - - + + + + + @@ -123226,8 +123069,8 @@ - - + + @@ -123253,8 +123096,8 @@ - - + + @@ -123264,20 +123107,20 @@ - - + + - + - - - + + + @@ -123291,41 +123134,41 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -123335,13 +123178,13 @@ - - + + - - - + + + @@ -123355,41 +123198,41 @@ - - - - - - + + + + + + - - + + - - - - - - + + + + + + - - - - - + + + + + - - - - - - - - + + + + + + + + @@ -123399,8 +123242,8 @@ - - + + @@ -123412,18 +123255,18 @@ - - + + - - - - + + + + @@ -123447,19 +123290,19 @@ - - - + + + - - - + + + - - - + + + @@ -123472,9 +123315,9 @@ - - - + + + @@ -123482,29 +123325,29 @@ - - - - + + + + - - + + - - - - - + + + + + - - - - - - + + + + + + @@ -123537,9 +123380,9 @@ - - - + + + @@ -123548,13 +123391,13 @@ - - + + - - - + + + @@ -123643,8 +123486,8 @@ - - + + @@ -123669,13 +123512,13 @@ - - - + + + - - + + @@ -123720,27 +123563,27 @@ - - + + - + - - - + + + - - + + - - + + @@ -123791,38 +123634,38 @@ - - - - + + + + - - - - - - - - + + + + + + + + - - + + - - + + - + - - + + @@ -123833,38 +123676,38 @@ - - - - + + + + - - + + - - - + + + - - + + - - - - - + + + + + - - - - + + + + @@ -123879,28 +123722,28 @@ - - - - - + + + + + - - + + - - - - - + + + + + - - - - + + + + @@ -123922,18 +123765,18 @@ - - + + - - + + - - + + @@ -123956,12 +123799,12 @@ - - + + - - + + @@ -123998,9 +123841,9 @@ - - - + + + @@ -124035,81 +123878,81 @@ - - - + + + - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -124234,12 +124077,12 @@ - - + + - - + + @@ -124282,14 +124125,14 @@ - - + + - - - - + + + + @@ -124310,36 +124153,36 @@ - - - - - + + + + + - - + + - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -124350,39 +124193,39 @@ - - + + - - - + + + - - - - + + + + - - - + + + - - + + - - - + + + - - - - + + + + @@ -124408,14 +124251,14 @@ - - + + - - - - + + + + @@ -124432,8 +124275,8 @@ - - + + @@ -124513,14 +124356,14 @@ - - - - - - - - + + + + + + + + @@ -124551,9 +124394,9 @@ - - - + + + @@ -124573,18 +124416,18 @@ - - - - + + + + - - - + + + @@ -124592,18 +124435,18 @@ - - - - - - + + + + + + - - - + + + @@ -124613,8 +124456,8 @@ - - + + @@ -124629,8 +124472,8 @@ - - + + @@ -124645,8 +124488,8 @@ - - + + @@ -124679,20 +124522,20 @@ - - + + - - + + - - + + @@ -124719,12 +124562,12 @@ - - + + - - + + @@ -124732,34 +124575,34 @@ - - + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -124841,9 +124684,9 @@ - - - + + + @@ -125004,29 +124847,29 @@ - - - + + + - - + + - - - - - - + + + + + + - - - - - - + + + + + + @@ -125034,47 +124877,47 @@ - - - - - + + + + + - - - - + + + + - - + + - - + + - - - - - - + + + + + + - - - - - + + + + + @@ -125109,8 +124952,8 @@ - - + + @@ -125210,13 +125053,13 @@ - - - + + + - - + + @@ -125227,15 +125070,15 @@ - - - - - - - - - + + + + + + + + + @@ -125271,9 +125114,9 @@ - - - + + + @@ -125297,21 +125140,21 @@ - - - - + + + + - - - - + + + + - - - + + + @@ -125324,10 +125167,10 @@ - - - - + + + + @@ -125335,11 +125178,11 @@ - - - - - + + + + + @@ -125362,10 +125205,10 @@ - - - - + + + + @@ -125378,20 +125221,20 @@ - - - + + + - - - - + + + + - + - - + + @@ -125401,9 +125244,9 @@ - - - + + + @@ -125492,14 +125335,14 @@ - - - + + + - - + + @@ -125575,8 +125418,8 @@ - - + + @@ -125586,66 +125429,66 @@ - - + + - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - + + + + + + + + + - - + + - - + + - - + + - - + + - + - - - - + + + + @@ -125665,21 +125508,21 @@ - - - - + + + + - - - + + + - - - - + + + + @@ -125690,23 +125533,23 @@ - - - - - - - - + + + + + + + + - - + + - - - + + + @@ -125715,10 +125558,10 @@ - - - - + + + + @@ -125750,46 +125593,46 @@ - - - - + + + + - - - + + + - - + + - - + + - - - + + + - - - - - + + + + + - - + + - - - + + + @@ -125798,31 +125641,31 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + @@ -125831,23 +125674,23 @@ - - - + + + - - - + + + - - - + + + @@ -125855,34 +125698,34 @@ - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + @@ -125892,10 +125735,10 @@ - - - - + + + + @@ -125911,10 +125754,10 @@ - - - - + + + + @@ -125924,10 +125767,10 @@ - - - - + + + + @@ -125937,37 +125780,37 @@ - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -125978,9 +125821,9 @@ - - - + + + @@ -125991,11 +125834,11 @@ - - - - - + + + + + @@ -126027,11 +125870,11 @@ - - + + - + @@ -126048,15 +125891,15 @@ - - + + - - + + - - + + @@ -126076,8 +125919,8 @@ - - + + @@ -126087,8 +125930,8 @@ - - + + @@ -126100,8 +125943,8 @@ - - + + @@ -126115,18 +125958,18 @@ - - - + + + - - - - + + + + - - + + @@ -126134,10 +125977,10 @@ - - - - + + + + @@ -126150,14 +125993,14 @@ - - - - + + + + - - + + @@ -126188,22 +126031,22 @@ - - - + + + - - - + + + - - + + @@ -126214,29 +126057,29 @@ - - - - + + + + - - - - - + + + + + - - + + - - - + + + - - + + @@ -126255,11 +126098,11 @@ - - - - - + + + + + @@ -126267,8 +126110,8 @@ - - + + @@ -126286,11 +126129,11 @@ - - - - - + + + + + @@ -126318,21 +126161,21 @@ - - - + + + - - - - + + + + - - - - + + + + @@ -126345,9 +126188,9 @@ - - - + + + @@ -126358,13 +126201,13 @@ - - + + - - - + + + @@ -126372,50 +126215,50 @@ - - - + + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + @@ -126429,8 +126272,8 @@ - - + + @@ -126501,9 +126344,9 @@ - - - + + + @@ -126537,12 +126380,12 @@ - - + + - - - + + + @@ -126551,17 +126394,17 @@ - - - + + + - - - + + + - + @@ -126572,9 +126415,9 @@ - - - + + + @@ -126639,10 +126482,10 @@ - - - - + + + + @@ -126670,13 +126513,13 @@ - - - - - - - + + + + + + + @@ -126863,12 +126706,12 @@ - - + + - - + + @@ -126880,11 +126723,11 @@ - - - - - + + + + + @@ -126925,8 +126768,8 @@ - - + + @@ -126979,8 +126822,8 @@ - - + + @@ -126992,9 +126835,9 @@ - - - + + + @@ -127005,28 +126848,28 @@ - - - + + + - - - - - - + + + + + + - - + + - - - - - + + + + + @@ -127037,9 +126880,9 @@ - - - + + + @@ -127100,8 +126943,8 @@ - - + + @@ -127140,9 +126983,9 @@ - - - + + + @@ -127198,8 +127041,8 @@ - - + + @@ -127252,51 +127095,51 @@ - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + @@ -127304,18 +127147,18 @@ - - - - + + + + - - + + @@ -127323,14 +127166,14 @@ - - - - + + + + - - - + + + @@ -127361,17 +127204,17 @@ - - + + - - - + + + @@ -127381,9 +127224,9 @@ - - - + + + @@ -127425,12 +127268,12 @@ - - + + - - + + @@ -127444,67 +127287,67 @@ - - - + + + - - + + - - + + - - + + - - + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + @@ -127512,19 +127355,19 @@ - - + + - - + + - - - - - + + + + + @@ -127535,41 +127378,41 @@ - - - - + + + + - - - + + + - - + + - - - - - + + + + + - - + + - - + + @@ -127578,16 +127421,16 @@ - - - - + + + + - - - - + + + + @@ -127608,11 +127451,11 @@ - - - - - + + + + + @@ -127629,24 +127472,24 @@ - - - - + + + + - - - - - + + + + + - - - - - + + + + + @@ -127681,12 +127524,12 @@ - - + + - - + + @@ -127711,18 +127554,18 @@ - - - + + + - - + + - - - + + + @@ -127746,18 +127589,18 @@ - - - - - + + + + + - - - - - + + + + + @@ -127768,19 +127611,19 @@ - - - - + + + + - - + + - - - + + + @@ -127799,14 +127642,14 @@ - - - + + + - - - + + + @@ -127832,9 +127675,9 @@ - - - + + + @@ -127847,14 +127690,14 @@ - - - - + + + + - - + + @@ -127872,39 +127715,39 @@ - - + + - - - + + + - - - - - + + + + + - - - + + + - - - - - + + + + + @@ -127917,9 +127760,9 @@ - - - + + + @@ -127952,14 +127795,14 @@ - - - - + + + + - - + + @@ -127970,44 +127813,44 @@ - - - - + + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -128041,16 +127884,16 @@ - - - - - - + + + + + + - - - + + + @@ -128058,9 +127901,9 @@ - - - + + + @@ -128097,33 +127940,33 @@ - - - + + + - - - + + + - - + + - - + + - - - + + + - - - - + + + + @@ -128148,9 +127991,9 @@ - - - + + + @@ -128166,32 +128009,32 @@ - - - - + + + + - - + + - - + + - - - + + + - - - + + + - - - + + + @@ -128200,9 +128043,9 @@ - - - + + + @@ -128210,74 +128053,74 @@ - - - + + + - - + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - - + + - - - - + + + + @@ -128289,38 +128132,38 @@ - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - + + @@ -128335,8 +128178,8 @@ - - + + @@ -128352,8 +128195,8 @@ - - + + @@ -128367,61 +128210,61 @@ - - - - - + + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - + + + + @@ -128439,12 +128282,12 @@ - - - - - - + + + + + + @@ -128455,12 +128298,12 @@ - - - - - - + + + + + + @@ -128475,9 +128318,9 @@ - - - + + + @@ -128490,15 +128333,15 @@ - - + + - - - - - + + + + + @@ -128515,10 +128358,10 @@ - - - - + + + + @@ -128533,10 +128376,10 @@ - - - - + + + + @@ -128555,8 +128398,8 @@ - - + + @@ -128567,8 +128410,8 @@ - - + + @@ -128675,25 +128518,25 @@ - - + + - - - - - - + + + + + + - - - + + + - - + + @@ -128719,8 +128562,8 @@ - - + + @@ -128735,16 +128578,16 @@ - - + + - - + + - - + + @@ -128829,19 +128672,19 @@ - - - + + + - - - + + + - - - + + + @@ -128856,8 +128699,8 @@ - - + + @@ -128888,9 +128731,9 @@ - - - + + + @@ -128920,14 +128763,14 @@ - - - + + + - - - + + + @@ -128940,9 +128783,9 @@ - - - + + + @@ -128950,10 +128793,10 @@ - - - - + + + + @@ -128967,12 +128810,12 @@ - - + + - - + + @@ -128993,9 +128836,9 @@ - - - + + + @@ -129007,9 +128850,9 @@ - - - + + + @@ -129053,8 +128896,8 @@ - - + + @@ -129091,9 +128934,9 @@ - - - + + + @@ -129109,10 +128952,10 @@ - - - - + + + + @@ -129133,10 +128976,10 @@ - - - - + + + + @@ -129169,17 +129012,17 @@ - - + + - - - + + + @@ -129193,40 +129036,40 @@ - - + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - + + - - + + - - + + @@ -129248,20 +129091,20 @@ - - - - - - + + + + + + - - + + - - + + @@ -129269,21 +129112,21 @@ - - - - - + + + + + - - - - - + + + + + - - + + @@ -129294,7 +129137,7 @@ - + @@ -129313,21 +129156,21 @@ - - - - + + + + - - - - - - - - - + + + + + + + + + @@ -129354,8 +129197,8 @@ - - + + @@ -129375,9 +129218,9 @@ - - - + + + @@ -129385,23 +129228,23 @@ - - - + + + - - - + + + - - - + + + @@ -129418,31 +129261,31 @@ - - + + - - - + + + - - + + - - - - + + + + @@ -129452,11 +129295,11 @@ - - - - - + + + + + @@ -129507,10 +129350,10 @@ - - - - + + + + @@ -129569,24 +129412,24 @@ - - + + - - + + - - + + @@ -129596,11 +129439,11 @@ - - - - - + + + + + @@ -129645,14 +129488,14 @@ - - - - + + + + - - - + + + @@ -129879,8 +129722,8 @@ - - + + @@ -129900,29 +129743,29 @@ - - - + + + - - + + - - + + - - + + - - + + - - + + @@ -129934,14 +129777,14 @@ - - - + + + - - - + + + @@ -129954,16 +129797,16 @@ - - - - + + + + - - - - + + + + @@ -130010,12 +129853,12 @@ - - + + - - + + @@ -130057,24 +129900,24 @@ - - + + - - + + - - + + - - + + @@ -130094,13 +129937,13 @@ - - + + - - - + + + @@ -130114,18 +129957,19 @@ - - - - + + + + - - - - + + + + + @@ -130139,8 +129983,8 @@ - - + + @@ -130154,8 +129998,8 @@ - - + + @@ -130189,8 +130033,8 @@ - - + + @@ -130208,10 +130052,10 @@ - - - - + + + + @@ -130224,54 +130068,54 @@ - - + + - - - + + + - - + + - + - + - - - - + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - + + - - + + @@ -130280,36 +130124,36 @@ - - - - - + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - + + + + + + @@ -130320,12 +130164,12 @@ - - - - - - + + + + + + @@ -130344,9 +130188,9 @@ - - - + + + @@ -130356,8 +130200,8 @@ - - + + @@ -130371,19 +130215,29 @@ - - - - + + + + - - - + + + - - + + + + + + + + + + + + @@ -130436,11 +130290,11 @@ - - - - - + + + + + @@ -130456,20 +130310,20 @@ - - + + - - + + - - + + @@ -130477,20 +130331,20 @@ - - + + - - + + - - + + @@ -130546,8 +130400,8 @@ - - + + @@ -130557,21 +130411,21 @@ - - - - - + + + + + - - - - + + + + @@ -130585,24 +130439,24 @@ - - - + + + - - + + - - - - + + + + - - - + + + @@ -130630,38 +130484,38 @@ - - - + + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + @@ -130670,7 +130524,7 @@ - + @@ -130710,17 +130564,17 @@ - + - + - - + + @@ -130739,8 +130593,8 @@ - - + + @@ -130767,31 +130621,31 @@ - - + + - - - - + + + + - - - + + + - - - + + + @@ -130851,8 +130705,8 @@ - - + + @@ -130893,16 +130747,16 @@ - - + + - - + + - - + + @@ -130913,8 +130767,8 @@ - - + + @@ -130933,12 +130787,12 @@ - - + + - - + + @@ -130954,8 +130808,8 @@ - - + + @@ -131074,10 +130928,10 @@ - - - - + + + + @@ -131086,20 +130940,20 @@ - - - - - - - - + + + + + + + + - - - - + + + + @@ -131107,14 +130961,14 @@ - - - + + + - - - + + + @@ -131132,8 +130986,8 @@ - - + + @@ -131145,8 +130999,8 @@ - - + + @@ -131183,8 +131037,8 @@ - - + + @@ -131235,22 +131089,22 @@ - - - - + + + + - - - - + + + + - - - - + + + + @@ -131336,8 +131190,8 @@ - - + + @@ -131345,22 +131199,22 @@ - - + + - - - - - - + + + + + + - - - - + + + + @@ -131373,9 +131227,9 @@ - - - + + + @@ -131383,9 +131237,9 @@ - - - + + + @@ -131433,13 +131287,13 @@ - - - - - - - + + + + + + + @@ -131447,28 +131301,28 @@ - - + + - - + + - - + + - - + + - - + + @@ -131484,20 +131338,20 @@ - - - - - - + + + + + + - - - + + + - - + + @@ -131513,8 +131367,8 @@ - - + + @@ -131531,8 +131385,8 @@ - - + + @@ -131545,15 +131399,15 @@ - - - + + + - - - - + + + + @@ -131561,39 +131415,39 @@ - - - + + + - - - - + + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + @@ -131601,30 +131455,30 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + @@ -131751,8 +131605,8 @@ - - + + @@ -131871,12 +131725,12 @@ - - + + - - + + @@ -131888,14 +131742,14 @@ - - - + + + - - - + + + @@ -131903,9 +131757,9 @@ - - - + + + @@ -131930,12 +131784,12 @@ - - + + - - + + @@ -131953,10 +131807,10 @@ - - - - + + + + @@ -131973,62 +131827,62 @@ - - - - + + + + - - - + + + - - + + - - - - - - + + + + + + - - - - + + + + - - - - - - - + + + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + @@ -132039,7 +131893,7 @@ - + @@ -132073,10 +131927,10 @@ - - - - + + + + @@ -132118,7 +131972,7 @@ - + @@ -132126,34 +131980,34 @@ - - + + - - + + - - + + - - - - - - + + + + + + - - - - + + + + - - + + @@ -132164,10 +132018,10 @@ - - - - + + + + @@ -132177,8 +132031,8 @@ - - + + @@ -132189,8 +132043,8 @@ - - + + @@ -132228,8 +132082,8 @@ - - + + @@ -132267,14 +132121,14 @@ - - - - - + + + + + - - + + @@ -132308,11 +132162,11 @@ - - - - - + + + + + @@ -132424,21 +132278,21 @@ - - + + - - - + + + - - + + - - + + @@ -132472,11 +132326,11 @@ - - - - - + + + + + @@ -132491,21 +132345,21 @@ - - + + - - + + - - + + - - - + + + @@ -132521,11 +132375,11 @@ - - - - - + + + + + @@ -132559,21 +132413,21 @@ - - - - + + + + - - - - + + + + - - - + + + @@ -132594,26 +132448,26 @@ - - - - + + + + - - - + + + - - - - - + + + + + - - - + + + @@ -132622,20 +132476,20 @@ - - - + + + - - - + + + - - - + + + @@ -132645,26 +132499,26 @@ - - - + + + - - - + + + - - - - + + + + - - - - + + + + @@ -132778,9 +132632,9 @@ - - - + + + @@ -132789,9 +132643,9 @@ - - - + + + @@ -132799,21 +132653,21 @@ - - + + - - - - + + + + - - + + - - + + @@ -132821,15 +132675,15 @@ - - - + + + - - - - + + + + @@ -132841,33 +132695,33 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - - + + + @@ -132875,28 +132729,28 @@ - - - + + + - - - - - + + + + + - - + + - - - + + + - - + + @@ -132907,13 +132761,13 @@ - - - - - - - + + + + + + + @@ -132945,10 +132799,10 @@ - - - - + + + + @@ -132956,10 +132810,10 @@ - - - - + + + + @@ -132967,10 +132821,10 @@ - - - - + + + + @@ -132993,10 +132847,10 @@ - - - - + + + + @@ -133012,29 +132866,29 @@ - + - - + + - - + + - - - - + + + + - - - - - - + + + + + + @@ -133063,13 +132917,13 @@ - - - - - - - + + + + + + + @@ -133088,10 +132942,10 @@ - - - - + + + + @@ -133108,10 +132962,10 @@ - - - - + + + + @@ -133121,30 +132975,30 @@ - - - + + + - - - - - - + + + + + + - - + + - - - - - - - + + + + + + + @@ -133161,13 +133015,13 @@ - - + + - - - + + + @@ -133186,39 +133040,39 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - + + @@ -133235,55 +133089,55 @@ - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + @@ -133293,9 +133147,9 @@ - - - + + + @@ -133305,16 +133159,16 @@ - - - - - + + + + + - - - + + + @@ -133349,15 +133203,15 @@ - - - + + + - - - - + + + + @@ -133370,11 +133224,11 @@ - - - - - + + + + + @@ -133384,11 +133238,11 @@ - - - - - + + + + + @@ -133398,8 +133252,8 @@ - - + + @@ -133411,25 +133265,25 @@ - - + + - - + + - - - - - - - + + + + + + + - - + + @@ -133440,9 +133294,9 @@ - - - + + + @@ -133494,9 +133348,9 @@ - - - + + + @@ -133530,22 +133384,22 @@ - - - - - + + + + + - - - - - + + + + + - - + + @@ -133624,13 +133478,13 @@ - - + + - - - + + + @@ -133682,8 +133536,8 @@ - - + + @@ -133699,9 +133553,9 @@ - - - + + + @@ -133711,17 +133565,17 @@ - - - - + + + + - - - - - + + + + + @@ -133738,17 +133592,17 @@ - - + + - - - - - - - + + + + + + + @@ -133757,23 +133611,23 @@ - - + + - - - - + + + + - - - + + + - - + + @@ -133784,12 +133638,12 @@ - - - - - - + + + + + + @@ -133801,8 +133655,8 @@ - - + + @@ -133814,18 +133668,18 @@ - - - - - - + + + + + + - - - - + + + + @@ -133833,12 +133687,12 @@ - - + + - - + + @@ -133876,9 +133730,9 @@ - - - + + + @@ -133890,8 +133744,8 @@ - - + + @@ -133923,45 +133777,45 @@ - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + @@ -134006,9 +133860,9 @@ - - - + + + @@ -134039,10 +133893,10 @@ - - - - + + + + @@ -134134,14 +133988,14 @@ - - - - + + + + - - + + @@ -134159,8 +134013,8 @@ - - + + @@ -134405,9 +134259,9 @@ - - - + + + @@ -134496,9 +134350,9 @@ - - - + + + @@ -134519,13 +134373,13 @@ - - - - - - - + + + + + + + @@ -134537,29 +134391,29 @@ - - - + + + - - + + - - + + - - - - - - + + + + + + - - + + @@ -134617,9 +134471,9 @@ - - - + + + @@ -134631,9 +134485,9 @@ - - - + + + @@ -134757,9 +134611,9 @@ - - - + + + @@ -134785,30 +134639,30 @@ - - + + - - + + - - + + - - - - + + + + - - - - - - + + + + + + @@ -134825,9 +134679,9 @@ - - - + + + @@ -134845,8 +134699,8 @@ - - + + @@ -134881,10 +134735,10 @@ - - - - + + + + @@ -134893,21 +134747,21 @@ - - - - + + + + - - - + + + - - - - + + + + @@ -134915,21 +134769,21 @@ - - - - + + + + - - - - - + + + + + - - - + + + @@ -134948,12 +134802,12 @@ - - - + + + - - + + @@ -134968,26 +134822,26 @@ - - + + - - + + - - + + - + - + @@ -134999,12 +134853,12 @@ - - + + - - + + @@ -135019,23 +134873,23 @@ - - + + - - + + - - - + + + - + - + @@ -135054,15 +134908,15 @@ - - - + + + - - - - + + + + @@ -135075,20 +134929,20 @@ - - - + + + - - - - + + + + - - - + + + @@ -135110,9 +134964,9 @@ - - - + + + @@ -135121,10 +134975,10 @@ - - - - + + + + @@ -135132,9 +134986,9 @@ - - - + + + @@ -135142,9 +134996,9 @@ - - - + + + @@ -135153,17 +135007,17 @@ - - - - + + + + - + @@ -135175,8 +135029,8 @@ - - + + @@ -135276,8 +135130,8 @@ - - + + @@ -135286,8 +135140,8 @@ - - + + @@ -135319,19 +135173,19 @@ - - - - - - - - - + + + + + + + + + - - + + @@ -135343,9 +135197,9 @@ - - - + + + @@ -135364,14 +135218,14 @@ - - - - + + + + - - + + @@ -135399,9 +135253,9 @@ - - - + + + @@ -135415,12 +135269,11 @@ - - - + + @@ -135437,19 +135290,19 @@ - - + + - - - - + + + + - - - + + + @@ -135467,8 +135320,8 @@ - - + + @@ -135478,24 +135331,24 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -135505,26 +135358,26 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + @@ -135547,12 +135400,12 @@ - + - - - + + + @@ -135673,10 +135526,10 @@ - - - - + + + + @@ -135684,10 +135537,10 @@ - - - - + + + + @@ -135766,19 +135619,19 @@ - - - + + + - - - + + + - - - + + + @@ -135808,8 +135661,8 @@ - - + + @@ -135827,8 +135680,8 @@ - - + + @@ -135842,14 +135695,14 @@ - - - + + + - - - + + + @@ -135883,9 +135736,9 @@ - - - + + + @@ -135976,11 +135829,11 @@ - - - - - + + + + + @@ -136208,9 +136061,9 @@ - - - + + + @@ -136328,15 +136181,15 @@ - - + + - - - - - + + + + + @@ -136370,8 +136223,8 @@ - - + + @@ -136406,17 +136259,17 @@ - - + + - - + + - - - + + + @@ -136427,8 +136280,8 @@ - - + + @@ -136455,12 +136308,12 @@ - - + + - - + + @@ -136483,8 +136336,8 @@ - - + + @@ -136506,8 +136359,8 @@ - - + + @@ -136538,9 +136391,9 @@ - - - + + + @@ -136563,9 +136416,9 @@ - - - + + + @@ -136580,12 +136433,12 @@ - - + + - - + + @@ -136604,8 +136457,8 @@ - - + + @@ -136620,16 +136473,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -136663,8 +136516,8 @@ - - + + @@ -136682,9 +136535,9 @@ - - - + + + @@ -136696,9 +136549,9 @@ - - - + + + @@ -136717,24 +136570,24 @@ - - - + + + - - - - + + + + - - - + + + @@ -136756,8 +136609,8 @@ - - + + @@ -136776,9 +136629,9 @@ - - - + + + @@ -136787,28 +136640,28 @@ - - - - + + + + - - + + - - + + - - - + + + - - - + + + @@ -136817,14 +136670,14 @@ - - - - + + + + - - + + @@ -136835,9 +136688,9 @@ - - - + + + @@ -136863,8 +136716,8 @@ - - + + @@ -136961,15 +136814,15 @@ - - - + + + - - - - + + + + @@ -136981,8 +136834,8 @@ - - + + @@ -137034,14 +136887,14 @@ - - + + - - - - + + + + @@ -137065,30 +136918,30 @@ - - + + - - + + - - - + + + - - - + + + - - + + @@ -137108,9 +136961,9 @@ - - - + + + @@ -137118,8 +136971,8 @@ - - + + @@ -137145,9 +136998,9 @@ - - - + + + @@ -137168,10 +137021,10 @@ - - - - + + + + @@ -137221,9 +137074,9 @@ - - - + + + @@ -137283,21 +137136,21 @@ - - - + + + - - - - - - + + + + + + - - + + @@ -137488,10 +137341,10 @@ - - - - + + + + @@ -137778,10 +137631,10 @@ - - - - + + + + @@ -137831,9 +137684,9 @@ - - - + + + @@ -137847,15 +137700,15 @@ - - - - + + + + - - - + + + @@ -137933,9 +137786,9 @@ - - - + + + @@ -137962,21 +137815,21 @@ - - - - + + + + - - - - + + + + - - - + + + @@ -137995,9 +137848,9 @@ - - - + + + @@ -138012,14 +137865,14 @@ - - - + + + - - - + + + @@ -138061,15 +137914,15 @@ - - + + - - - - - + + + + + @@ -138077,11 +137930,11 @@ - - - - - + + + + + @@ -138158,8 +138011,8 @@ - - + + @@ -138195,8 +138048,8 @@ - - + + @@ -138263,9 +138116,9 @@ - - - + + + @@ -138336,26 +138189,26 @@ - - - - - - - + + + + + + + - - + + - - - + + + @@ -138400,13 +138253,13 @@ - - - + + + - - - + + + @@ -138470,15 +138323,15 @@ - - + + - - + + @@ -138489,16 +138342,16 @@ - - - - - + + + + + - - - + + + @@ -138507,11 +138360,11 @@ - - - - - + + + + + @@ -138520,9 +138373,9 @@ - - - + + + @@ -138572,11 +138425,11 @@ - - - - - + + + + + @@ -138586,23 +138439,23 @@ - - - - + + + + - - - + + + - - + + - - + + @@ -138615,12 +138468,12 @@ - - + + - - + + @@ -138628,8 +138481,8 @@ - - + + @@ -138646,8 +138499,8 @@ - - + + @@ -138655,12 +138508,12 @@ - - - + + + - + @@ -138689,17 +138542,17 @@ - - - + + + - - + + @@ -138766,28 +138619,28 @@ - - - + + + - - - - - + + + + + - - - - - + + + + + - - - + + + @@ -138797,17 +138650,17 @@ - - + + - - - - + + + + @@ -138818,26 +138671,26 @@ - - - - + + + + - - - - + + + + - - + + - - - - + + + + @@ -138848,9 +138701,9 @@ - - - + + + @@ -138882,10 +138735,10 @@ - - - - + + + + @@ -138918,9 +138771,9 @@ - - - + + + @@ -138937,15 +138790,15 @@ - - - - + + + + - - - + + + @@ -138969,12 +138822,12 @@ - - - - - - + + + + + + @@ -138996,13 +138849,13 @@ - - + + - - - + + + @@ -139019,10 +138872,10 @@ - - - - + + + + @@ -139033,47 +138886,47 @@ - - - + + + - - + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo index 5f3433d6f311..44cc1de4a6d3 100644 --- a/android/abi_gki_aarch64_vivo +++ b/android/abi_gki_aarch64_vivo @@ -869,6 +869,7 @@ kstrtou8_from_user kstrtouint kstrtouint_from_user + _kstrtoul kstrtoul_from_user kstrtoull kstrtoull_from_user @@ -1226,6 +1227,8 @@ proc_dointvec_minmax proc_dostring proc_douintvec_minmax + profile_event_register + profile_event_unregister proto_register proto_unregister __pskb_pull_tail @@ -1786,12 +1789,15 @@ __tracepoint_android_rvh_update_cpus_allowed __tracepoint_android_rvh_update_misfit_status __tracepoint_android_rvh_wake_up_new_task + __tracepoint_android_vh_account_task_time __tracepoint_android_vh_allow_domain_state __tracepoint_android_vh_binder_restore_priority __tracepoint_android_vh_binder_set_priority + __tracepoint_android_vh_binder_trans __tracepoint_android_vh_binder_wakeup_ilocked __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit + __tracepoint_android_vh_dup_task_struct __tracepoint_android_vh_ftrace_dump_buffer __tracepoint_android_vh_ftrace_format_check __tracepoint_android_vh_ftrace_oops_enter @@ -1799,6 +1805,7 @@ __tracepoint_android_vh_ftrace_size_check __tracepoint_android_vh_iommu_setup_dma_ops __tracepoint_android_vh_ipi_stop + __tracepoint_android_vh_irqtime_account_process_tick __tracepoint_android_vh_jiffies_update __tracepoint_android_vh_mmc_attach_sd __tracepoint_android_vh_mmc_blk_mq_rw_recovery @@ -1812,10 +1819,13 @@ __tracepoint_android_vh_show_resume_epoch_val __tracepoint_android_vh_show_suspend_epoch_val __tracepoint_android_vh_timer_calc_index + __tracepoint_android_vh_tune_scan_type + __tracepoint_android_vh_tune_swappiness __tracepoint_android_vh_ufs_check_int_errors __tracepoint_android_vh_ufs_compl_command __tracepoint_android_vh_ufs_send_command __tracepoint_android_vh_ufs_update_sdev + __tracepoint_android_vh_vmpressure __tracepoint_binder_transaction_received __tracepoint_cpu_frequency_limits __tracepoint_cpu_idle From cfc0a49c730329982f7b090d5b3d67d7389b786a Mon Sep 17 00:00:00 2001 From: Alessio Balsini Date: Thu, 23 Sep 2021 11:03:46 +0100 Subject: [PATCH 26/94] ANDROID: fs/fuse: Keep FUSE file times consistent with lower file When FUSE passthrough is used, the lower file system file is manipulated directly, but neither mtime, atime or ctime of the referencing FUSE file is updated. Fix by updating the file times when passthrough operations are performed. Bug: 200779468 Reported-by: Fengnan Chang Reported-by: Ed Tsai Signed-off-by: Alessio Balsini Change-Id: I35b72196b2cc1d79a9f62ddb32e2cfa934c3b6d3 --- fs/fuse/passthrough.c | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/fs/fuse/passthrough.c b/fs/fuse/passthrough.c index 52068065fddc..83125de0bfdc 100644 --- a/fs/fuse/passthrough.c +++ b/fs/fuse/passthrough.c @@ -14,11 +14,34 @@ struct fuse_aio_req { struct kiocb *iocb_fuse; }; +static void fuse_file_accessed(struct file *dst_file, struct file *src_file) +{ + struct inode *dst_inode; + struct inode *src_inode; + + if (dst_file->f_flags & O_NOATIME) + return; + + dst_inode = file_inode(dst_file); + src_inode = file_inode(src_file); + + if ((!timespec64_equal(&dst_inode->i_mtime, &src_inode->i_mtime) || + !timespec64_equal(&dst_inode->i_ctime, &src_inode->i_ctime))) { + dst_inode->i_mtime = src_inode->i_mtime; + dst_inode->i_ctime = src_inode->i_ctime; + } + + touch_atime(&dst_file->f_path); +} + static void fuse_copyattr(struct file *dst_file, struct file *src_file) { struct inode *dst = file_inode(dst_file); struct inode *src = file_inode(src_file); + dst->i_atime = src->i_atime; + dst->i_mtime = src->i_mtime; + dst->i_ctime = src->i_ctime; i_size_write(dst, i_size_read(src)); } @@ -84,6 +107,8 @@ ssize_t fuse_passthrough_read_iter(struct kiocb *iocb_fuse, out: revert_creds(old_cred); + fuse_file_accessed(fuse_filp, passthrough_filp); + return ret; } @@ -103,6 +128,8 @@ ssize_t fuse_passthrough_write_iter(struct kiocb *iocb_fuse, inode_lock(fuse_inode); + fuse_copyattr(fuse_filp, passthrough_filp); + old_cred = override_creds(ff->passthrough.cred); if (is_sync_kiocb(iocb_fuse)) { file_start_write(passthrough_filp); @@ -143,9 +170,7 @@ ssize_t fuse_passthrough_mmap(struct file *file, struct vm_area_struct *vma) int ret; const struct cred *old_cred; struct fuse_file *ff = file->private_data; - struct inode *fuse_inode = file_inode(file); struct file *passthrough_filp = ff->passthrough.filp; - struct inode *passthrough_inode = file_inode(passthrough_filp); if (!passthrough_filp->f_op->mmap) return -ENODEV; @@ -164,17 +189,7 @@ ssize_t fuse_passthrough_mmap(struct file *file, struct vm_area_struct *vma) else fput(file); - if (file->f_flags & O_NOATIME) - return ret; - - if ((!timespec64_equal(&fuse_inode->i_mtime, - &passthrough_inode->i_mtime) || - !timespec64_equal(&fuse_inode->i_ctime, - &passthrough_inode->i_ctime))) { - fuse_inode->i_mtime = passthrough_inode->i_mtime; - fuse_inode->i_ctime = passthrough_inode->i_ctime; - } - touch_atime(&file->f_path); + fuse_file_accessed(file, passthrough_filp); return ret; } From 099e8c7741269fcecf94ed23aaece7f7f66b49c2 Mon Sep 17 00:00:00 2001 From: Louis Kuo Date: Fri, 24 Sep 2021 18:48:45 +0800 Subject: [PATCH 27/94] ANDROID: Update symbol list for mtk Leaf changes summary: 1 artifact changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 1 Added function: [A] 'function int __v4l2_ctrl_s_ctrl_compound(v4l2_ctrl*, v4l2_ctrl_type, void*)' Bug: 201043981 Change-Id: I57c70790e02324767314fc84bf53fb593e3e316d Signed-off-by: Louis Kuo --- android/abi_gki_aarch64.xml | 7 +++++++ android/abi_gki_aarch64_mtk | 1 + 2 files changed, 8 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index ac1ea4e5e7cd..a569ffff64f5 100755 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -551,6 +551,7 @@ + @@ -113996,6 +113997,12 @@ + + + + + + diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index 6fe9ba5c647b..13db90146503 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -2237,6 +2237,7 @@ v4l2_ctrl_request_complete v4l2_ctrl_request_setup __v4l2_ctrl_s_ctrl + __v4l2_ctrl_s_ctrl_compound v4l2_ctrl_subdev_subscribe_event v4l2_ctrl_subscribe_event v4l2_device_register From 38532a9f24146d41419a2807dbb3d81ba8b5f2d1 Mon Sep 17 00:00:00 2001 From: Alistair Delva Date: Wed, 22 Sep 2021 15:51:44 -0700 Subject: [PATCH 28/94] ANDROID: GKI: Update symbol list for new modules virtio-snd, gs-usb and the mac80211 modularization were done without regenerating the symbol list for the virtual device. Fix it. Bug: 175151042 Change-Id: Ie6ca12c9dcbcb29057d4fb9c7478abac086e4088 Signed-off-by: Alistair Delva --- android/abi_gki_aarch64_virtual_device | 321 +++++++++++++++++-------- 1 file changed, 226 insertions(+), 95 deletions(-) diff --git a/android/abi_gki_aarch64_virtual_device b/android/abi_gki_aarch64_virtual_device index 724632832596..25170c1b1872 100644 --- a/android/abi_gki_aarch64_virtual_device +++ b/android/abi_gki_aarch64_virtual_device @@ -3,6 +3,7 @@ alloc_anon_inode __alloc_disk_node alloc_etherdev_mqs + alloc_netdev_mqs __alloc_pages_nodemask __alloc_skb alloc_workqueue @@ -27,10 +28,15 @@ blk_queue_physical_block_size blk_queue_write_cache blk_status_to_errno + bpf_trace_run1 bpf_trace_run2 bpf_trace_run3 + bpf_trace_run4 + bpf_trace_run5 + bpf_trace_run6 bus_register bus_unregister + cancel_delayed_work cancel_delayed_work_sync cancel_work_sync capable @@ -38,6 +44,8 @@ __check_object_size __class_create class_destroy + __class_register + class_unregister __ClearPageMovable clk_disable clk_enable @@ -58,6 +66,8 @@ cpu_number __cpu_online_mask __cpu_possible_mask + crc32_le + crypto_destroy_tfm crypto_register_alg crypto_register_scomp crypto_unregister_alg @@ -71,9 +81,14 @@ del_timer del_timer_sync destroy_workqueue + dev_alloc_name + dev_close _dev_err + __dev_get_by_index + device_add device_add_disk device_create + device_del device_initialize device_register device_release_driver @@ -86,6 +101,7 @@ devm_kmalloc devm_request_threaded_irq _dev_notice + dev_printk dev_queue_xmit dev_set_name _dev_warn @@ -104,7 +120,9 @@ down_read down_write ether_setup + eth_mac_addr ethtool_op_get_link + eth_type_trans eth_validate_addr event_triggers_call failure_tracking @@ -117,7 +135,11 @@ free_netdev __free_pages free_pages + free_percpu fs_bio_set + genlmsg_put + genl_register_family + genl_unregister_family get_device __get_free_pages get_random_bytes @@ -129,7 +151,11 @@ ida_free idr_alloc idr_destroy + idr_find + idr_for_each + idr_get_next idr_remove + init_net init_pseudo __init_rwsem __init_swait_queue_head @@ -153,11 +179,13 @@ kern_mount kern_unmount kfree + kfree_sensitive kfree_skb kill_anon_super kimage_voffset __kmalloc kmalloc_caches + kmalloc_order_trace kmem_cache_alloc kmem_cache_alloc_trace kmem_cache_create @@ -183,6 +211,7 @@ ktime_get_ts64 ktime_get_with_offset kvfree + kvfree_call_rcu kvmalloc_node __list_add_valid __list_del_entry_valid @@ -200,6 +229,7 @@ memunmap misc_deregister misc_register + mod_delayed_work_on mod_timer module_layout module_put @@ -210,17 +240,31 @@ mutex_lock_interruptible mutex_trylock mutex_unlock + napi_gro_receive + __netdev_alloc_skb netdev_err netdev_info netdev_rx_handler_register netdev_rx_handler_unregister netdev_upper_dev_unlink + netdev_warn netif_carrier_off netif_carrier_on netif_device_detach + netif_rx + netif_rx_ni netif_tx_stop_all_queues netif_tx_wake_queue + netlink_broadcast + netlink_register_notifier + netlink_unicast + netlink_unregister_notifier + net_ratelimit nf_conntrack_destroy + nla_memcpy + __nla_parse + nla_put_64bit + nla_put no_llseek nonseekable_open noop_llseek @@ -253,6 +297,7 @@ __per_cpu_offset perf_trace_buf_alloc perf_trace_run_bpf_submit + platform_device_register_full platform_device_unregister __platform_driver_register platform_driver_unregister @@ -273,6 +318,7 @@ prepare_to_wait prepare_to_wait_event printk + __pskb_pull_tail put_device put_disk __put_page @@ -296,6 +342,7 @@ register_netdev register_netdevice register_netdevice_notifier + register_pernet_device register_shrinker register_virtio_device register_virtio_driver @@ -303,10 +350,19 @@ __regmap_init regmap_read regmap_write + release_firmware remap_pfn_range + request_firmware __request_module request_threaded_irq revalidate_disk_size + rhashtable_insert_slow + __rht_bucket_nested + rht_bucket_nested + rht_bucket_nested_insert + rtnl_is_locked + rtnl_link_register + rtnl_link_unregister rtnl_lock rtnl_unlock schedule @@ -334,10 +390,18 @@ sg_next simple_strtoul skb_add_rx_frag + skb_clone + skb_copy + skb_copy_bits + skb_copy_expand skb_dequeue + skb_pull skb_push skb_put + skb_queue_head + skb_queue_purge skb_queue_tail + skb_trim snd_card_disconnect snd_card_free snd_card_new @@ -355,6 +419,8 @@ snd_device_new snd_dma_alloc_pages snd_dma_free_pages + snd_jack_new + snd_jack_report snd_pci_quirk_lookup snd_pcm_add_chmap_ctls snd_pcm_alt_chmaps @@ -368,6 +434,7 @@ snprintf sort sprintf + sscanf __stack_chk_fail __stack_chk_guard strcmp @@ -378,13 +445,23 @@ strncpy strsep submit_bio + __sw_hweight16 + __sw_hweight32 + __sw_hweight64 + __sw_hweight8 sync_file_create + synchronize_net synchronize_rcu sysfs_create_group + sysfs_create_link __sysfs_match_string sysfs_remove_group sysfs_remove_link + system_freezable_wq system_wq + tasklet_init + tasklet_kill + __tasklet_schedule trace_event_buffer_commit trace_event_buffer_reserve trace_event_ignore_this_pid @@ -404,8 +481,10 @@ unlock_page unregister_blkdev unregister_netdev + unregister_netdevice_many unregister_netdevice_notifier unregister_netdevice_queue + unregister_pernet_device unregister_shrinker unregister_virtio_device unregister_virtio_driver @@ -483,6 +562,48 @@ sg_miter_start sg_miter_stop +# required by cfg80211.ko + bpf_trace_run10 + bpf_trace_run7 + debugfs_rename + dev_change_net_namespace + dev_get_by_index + device_rename + gcd + genlmsg_multicast_allns + get_net_ns_by_fd + get_net_ns_by_pid + inet_csk_get_port + init_uts_ns + key_create_or_update + key_put + keyring_alloc + ktime_get_coarse_with_offset + memcmp + net_ns_type_operations + nla_find + nla_reserve + __nla_validate + of_prop_next_u32 + __put_net + rb_erase + rb_insert_color + request_firmware_nowait + rfkill_alloc + rfkill_blocked + rfkill_destroy + rfkill_pause_polling + rfkill_register + rfkill_resume_polling + rfkill_set_hw_state + rfkill_unregister + __sock_create + sock_release + system_power_efficient_wq + trace_print_array_seq + verify_pkcs7_signature + wireless_nlevent_flush + # required by clk-vexpress-osc.ko clk_hw_set_rate_range devm_clk_hw_register @@ -497,7 +618,6 @@ # required by failover.ko netdev_master_upper_dev_link - rtnl_is_locked # required by gnss-cmdline.ko bus_find_device @@ -529,15 +649,37 @@ # required by goldfish_pipe.ko get_user_pages_fast set_page_dirty - tasklet_init - tasklet_kill - __tasklet_schedule # required by goldfish_sync.ko __close_fd dma_fence_default_wait dma_fence_free +# required by gs_usb.ko + alloc_candev_mqs + alloc_can_err_skb + alloc_can_skb + can_change_mtu + can_free_echo_skb + can_get_echo_skb + can_put_echo_skb + close_candev + free_candev + open_candev + register_candev + unregister_candev + usb_alloc_coherent + usb_alloc_urb + usb_anchor_urb + usb_control_msg + usb_deregister + usb_free_coherent + usb_free_urb + usb_kill_anchored_urbs + usb_register_driver + usb_submit_urb + usb_unanchor_urb + # required by hci_vhci.ko bt_err _copy_from_iter_full @@ -546,9 +688,6 @@ hci_recv_frame hci_register_dev hci_unregister_dev - skb_pull - skb_queue_head - skb_queue_purge # required by ledtrig-audio.ko led_trigger_event @@ -561,51 +700,82 @@ # required by lzo.ko lzo1x_1_compress +# required by mac80211.ko + __alloc_percpu_gfp + arc4_crypt + arc4_setkey + call_rcu + crc32_be + crypto_aead_decrypt + crypto_aead_encrypt + crypto_aead_setauthsize + crypto_aead_setkey + crypto_alloc_aead + crypto_alloc_shash + crypto_alloc_skcipher + __crypto_memneq + crypto_shash_digest + crypto_shash_finup + crypto_shash_setkey + crypto_shash_update + crypto_skcipher_decrypt + crypto_skcipher_encrypt + crypto_skcipher_setkey + __crypto_xor + dev_fetch_sw_netstats + find_next_bit + flush_delayed_work + get_random_u32 + __hw_addr_init + __hw_addr_sync + __hw_addr_unsync + kernel_param_lock + kernel_param_unlock + kfree_skb_list + ktime_get_seconds + netdev_set_default_ethtool_ops + netif_receive_skb + netif_receive_skb_list + prandom_bytes + prandom_u32 + pskb_expand_head + ___pskb_trim + rcu_barrier + register_inet6addr_notifier + register_inetaddr_notifier + rhashtable_free_and_destroy + rhltable_init + round_jiffies + round_jiffies_relative + round_jiffies_up + skb_checksum_help + skb_clone_sk + skb_complete_wifi_ack + skb_ensure_writable + __skb_get_hash + __skb_gso_segment + unregister_inet6addr_notifier + unregister_inetaddr_notifier + # required by mac80211_hwsim.ko - alloc_netdev_mqs debugfs_attr_read debugfs_attr_write - dev_alloc_name device_bind_driver dst_release - eth_mac_addr - genlmsg_put genl_notify - genl_register_family - genl_unregister_family hrtimer_cancel hrtimer_forward hrtimer_init hrtimer_start_range_ns - init_net - __netdev_alloc_skb - netif_rx - netlink_broadcast - netlink_register_notifier - netlink_unicast - netlink_unregister_notifier net_namespace_list - nla_memcpy - __nla_parse - nla_put_64bit - nla_put param_ops_ushort - register_pernet_device rhashtable_destroy rhashtable_init - rhashtable_insert_slow - __rht_bucket_nested - rht_bucket_nested - rht_bucket_nested_insert schedule_timeout_interruptible simple_attr_open simple_attr_release - skb_copy - skb_copy_expand __skb_ext_put - skb_trim skb_unlink - unregister_pernet_device # required by md-mod.ko ack_all_badblocks @@ -683,7 +853,6 @@ submit_bh submit_bio_wait sync_blockdev - sysfs_create_link unregister_reboot_notifier unregister_sysctl_table vfs_fsync @@ -695,7 +864,6 @@ # required by net_failover.ko call_netdevice_notifiers - dev_close dev_get_stats dev_mc_sync_multiple dev_mc_unsync @@ -772,6 +940,15 @@ rtc_tm_to_time64 rtc_update_irq +# required by slcan.ko + hex_asc_upper + hex_to_bin + msleep_interruptible + tty_hangup + tty_mode_ioctl + tty_register_ldisc + tty_unregister_ldisc + # required by snd-ac97-codec.ko snd_ctl_remove_id snd_info_create_card_entry @@ -785,10 +962,8 @@ snd_ctl_boolean_stereo_info strchr strlcat - __sw_hweight32 # required by snd-hda-codec.ko - bpf_trace_run4 current_work device_attach driver_register @@ -804,8 +979,6 @@ snd_ctl_remove snd_device_disconnect snd_device_free - snd_jack_new - snd_jack_report snd_jack_set_key snd_pcm_hw_constraint_minmax snd_pcm_hw_constraint_step @@ -816,8 +989,6 @@ # required by snd-hda-core.ko add_uevent_var - device_add - device_del kasprintf kobject_create_and_add pm_runtime_get_if_active @@ -826,11 +997,9 @@ regcache_sync regmap_update_bits_base snd_pcm_format_width - __sw_hweight64 timecounter_init # required by snd-hda-intel.ko - bpf_trace_run1 complete_all param_array_ops param_get_int @@ -876,7 +1045,6 @@ efi efi_tpm_final_log_size hash_digest_size - idr_get_next idr_replace jiffies_to_usecs memchr_inv @@ -893,6 +1061,9 @@ anon_inode_getfile compat_ptr_ioctl +# required by vcan.ko + sock_efree + # required by vexpress-config.ko devres_add devres_alloc_node @@ -910,19 +1081,9 @@ devm_mfd_add_devices # required by virt_wifi.ko - __dev_get_by_index - dev_printk __module_get netdev_upper_dev_link netif_stacked_transfer_operstate - rtnl_link_register - rtnl_link_unregister - skb_clone - unregister_netdevice_many - -# required by virt_wifi_sim.ko - release_firmware - request_firmware # required by virtio-gpu.ko __devm_request_region @@ -1039,7 +1200,6 @@ __get_task_comm iomem_resource is_vmalloc_addr - kmalloc_order_trace memdup_user seq_puts sync_file_get_fence @@ -1069,7 +1229,6 @@ register_oom_notifier si_mem_available si_meminfo - system_freezable_wq unregister_oom_notifier vm_event_states vm_node_stat @@ -1127,8 +1286,6 @@ # required by virtio_mmio.ko device_for_each_child devm_platform_ioremap_resource - platform_device_register_full - sscanf # required by virtio_net.ko bpf_dispatcher_xdp_func @@ -1145,17 +1302,14 @@ eth_prepare_mac_addr_change ethtool_op_get_ts_info ethtool_virtdev_set_link_ksettings - eth_type_trans flow_keys_basic_dissector __napi_alloc_skb napi_complete_done napi_consume_skb napi_disable - napi_gro_receive __napi_schedule napi_schedule_prep netdev_notify_peers - netdev_warn netif_device_attach netif_napi_add __netif_napi_del @@ -1163,8 +1317,6 @@ netif_set_real_num_rx_queues netif_set_real_num_tx_queues __netif_set_xps_queue - net_ratelimit - __pskb_pull_tail _raw_spin_trylock sched_clock skb_coalesce_rx_frag @@ -1174,7 +1326,6 @@ skb_to_sgvec skb_tstamp_tx softnet_data - synchronize_net __traceiter_xdp_exception __tracepoint_xdp_exception virtqueue_add_inbuf_ctx @@ -1216,6 +1367,17 @@ nvdimm_bus_unregister nvdimm_pmem_region_create +# required by virtio_snd.ko + snd_ctl_notify + snd_pcm_format_physical_width + snd_pcm_lib_free_pages + snd_pcm_lib_ioctl + snd_pcm_lib_malloc_pages + snd_pcm_lib_preallocate_pages + _snd_pcm_stream_lock_irqsave + snd_pcm_stream_unlock_irqrestore + wait_for_completion_interruptible_timeout + # required by vmw_vsock_virtio_transport.ko lock_sock_nested release_sock @@ -1257,20 +1419,14 @@ __alloc_percpu bdget_disk bdput - __class_register - class_unregister crypto_alloc_base crypto_comp_compress crypto_comp_decompress - crypto_destroy_tfm crypto_has_alg disk_end_io_acct disk_start_io_acct flush_dcache_page - free_percpu fsync_bdev - idr_find - idr_for_each kstrtou16 memset64 mutex_is_locked @@ -1287,28 +1443,3 @@ _raw_read_unlock _raw_write_lock _raw_write_unlock - -# required by gs_usb.ko - usb_kill_anchored_urbs - alloc_candev_mqs - register_candev - free_candev - can_change_mtu - open_candev - usb_anchor_urb - usb_unanchor_urb - alloc_can_skb - can_get_echo_skb - alloc_can_err_skb - close_candev - can_put_echo_skb - can_free_echo_skb - unregister_candev - -# required by vcan.ko - sock_efree - -# required by slcan.ko - tty_mode_ioctl - tty_hangup - hex_asc_upper From de7ca5e7523933301242749c204b23b260697eaa Mon Sep 17 00:00:00 2001 From: Shaleen Agrawal Date: Fri, 24 Sep 2021 11:28:26 -0700 Subject: [PATCH 29/94] ANDROID: Disable CFI on trace hooks Disable CFI on trace hooks, as this improves some lmbench microbenchmarks by as much as 12%. Bug: 200542217 Change-Id: I6ad1d12047c4e69743ff94cf0ea8f70f5023c7da Signed-off-by: Shaleen Agrawal --- include/linux/tracepoint.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h index 966ed8980327..f42129ea11f4 100644 --- a/include/linux/tracepoint.h +++ b/include/linux/tracepoint.h @@ -235,7 +235,7 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p) extern int __traceiter_##name(data_proto); \ DECLARE_STATIC_CALL(tp_func_##name, __traceiter_##name); \ extern struct tracepoint __tracepoint_##name; \ - static inline void trace_##name(proto) \ + static inline void __nocfi trace_##name(proto) \ { \ if (static_key_false(&__tracepoint_##name.key)) \ __DO_TRACE(name, \ @@ -300,7 +300,7 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p) .unregfunc = _unreg, \ .funcs = NULL }; \ __TRACEPOINT_ENTRY(_name); \ - int __traceiter_##_name(void *__data, proto) \ + int __nocfi __traceiter_##_name(void *__data, proto) \ { \ struct tracepoint_func *it_func_ptr; \ void *it_func; \ From c82dbcbec1cfc7bd0a246cf12e9f100f0ca49e8f Mon Sep 17 00:00:00 2001 From: Bicycle Tsai Date: Mon, 6 Sep 2021 11:50:47 +0800 Subject: [PATCH 30/94] BACKPORT: ASoC: soc-pcm: Get all BEs along DAPM path dpcm_end_walk_at_be() stops the graph walk when first BE is found for the given FE component. In a component model we may want to connect multiple DAIs from different components. A new flag is introduced in 'snd_soc_card', which when set allows DAI/component chaining. Later PCM operations can be called for all these listed components for a valid DAPM path. Signed-off-by: Sameer Pujar Link: https://lore.kernel.org/r/1604329814-24779-3-git-send-email-spujar@nvidia.com Signed-off-by: Mark Brown Bug: 198732156 (cherry picked from commit aa293777bfeb75fb8872565ef99cc0e8b98b5c7d) [ refactored to avoid breaking KMI ] ALSA machine driver can setup component_chaining like below code slice. static int my_board_late_probe(struct snd_soc_card *card) { struct snd_soc_card_ext *card_ext = container_of(card, struct snd_soc_card_ext, card); card_ext->component_chaining = 1; return 0; } static struct snd_soc_card my_board_card = { .name = MY_BOARD_NAME, .owner = THIS_MODULE, .dai_link = my_board_dai_links, .num_links = ARRAY_SIZE(my_board_dai_links), .late_probe = my_board_late_probe, }; Change-Id: Icc9e9b120e721a620f7c9f49515342422f80edb7 Signed-off-by: Bicycle Tsai --- include/sound/soc.h | 6 ++++++ sound/soc/soc-core.c | 8 ++++++++ sound/soc/soc-pcm.c | 6 +++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/include/sound/soc.h b/include/sound/soc.h index 63338f68de48..330c82c58afe 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -1105,6 +1105,12 @@ struct snd_soc_card { ANDROID_KABI_RESERVE(3); ANDROID_KABI_RESERVE(4); }; + +struct snd_soc_card_ext { + struct snd_soc_card card; + unsigned int component_chaining:1; +}; + #define for_each_card_prelinks(card, i, link) \ for ((i) = 0; \ ((i) < (card)->num_links) && ((link) = &(card)->dai_link[i]); \ diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 18dfc114ff9e..c234859bef16 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -2175,9 +2175,17 @@ EXPORT_SYMBOL_GPL(snd_soc_add_dai_controls); */ int snd_soc_register_card(struct snd_soc_card *card) { + struct snd_soc_card_ext *card_ext; + if (!card->name || !card->dev) return -EINVAL; + card_ext = devm_kzalloc(card->dev, + sizeof(struct snd_soc_card_ext), GFP_KERNEL); + + memcpy(&card_ext->card, card, sizeof(struct snd_soc_card)); + card = &card_ext->card; + dev_set_drvdata(card->dev, card); INIT_LIST_HEAD(&card->widgets); diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index cc735dc46a44..10afa8efde2a 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c @@ -1274,6 +1274,7 @@ int dpcm_path_get(struct snd_soc_pcm_runtime *fe, int stream, struct snd_soc_dapm_widget_list **list) { struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(fe, 0); + struct snd_soc_card_ext *card_ext; int paths; if (fe->num_cpus > 1) { @@ -1282,9 +1283,12 @@ int dpcm_path_get(struct snd_soc_pcm_runtime *fe, return -EINVAL; } + card_ext = container_of(fe->card, struct snd_soc_card_ext, card); + /* get number of valid DAI paths and their widgets */ paths = snd_soc_dapm_dai_get_connected_widgets(cpu_dai, stream, list, - dpcm_end_walk_at_be); + card_ext->component_chaining ? + NULL : dpcm_end_walk_at_be); dev_dbg(fe->dev, "ASoC: found %d audio %s paths\n", paths, stream ? "capture" : "playback"); From 3b1f439841350eedb29b75c54259d1ea60f3edaf Mon Sep 17 00:00:00 2001 From: Liangliang Li Date: Sun, 26 Sep 2021 17:03:20 +0800 Subject: [PATCH 31/94] ANDROID: GKI: Update symbol list for vivo Leaf changes summary: 1 artifact changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable 1 Added variable: [A] 'tracepoint __tracepoint_android_rvh_refrigerator' Bug: 201184466 Change-Id: I135ebbc5cf8a2ac6c41da523c4f222887b9af440 Signed-off-by: Liangliang Li --- android/abi_gki_aarch64.xml | 2 ++ android/abi_gki_aarch64_vivo | 1 + 2 files changed, 3 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index a569ffff64f5..b4348c9d30b9 100755 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -5414,6 +5414,7 @@ + @@ -113693,6 +113694,7 @@ + diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo index 44cc1de4a6d3..d77ac86a2619 100644 --- a/android/abi_gki_aarch64_vivo +++ b/android/abi_gki_aarch64_vivo @@ -1764,6 +1764,7 @@ __tracepoint_android_rvh_flush_task __tracepoint_android_rvh_migrate_queued_task __tracepoint_android_rvh_new_task_stats + __tracepoint_android_rvh_refrigerator __tracepoint_android_rvh_replace_next_task_fair __tracepoint_android_rvh_resume_cpus __tracepoint_android_rvh_sched_cpu_dying From 49af2e35d5e7aff15c3bb47482ec34f69cba7bc8 Mon Sep 17 00:00:00 2001 From: Guangming Cao Date: Wed, 1 Sep 2021 20:41:54 +0800 Subject: [PATCH 32/94] FROMLIST: dma-buf: support users to change dma_buf.name User space user can call DMA_BUF_SET_NAME to set dma_buf.name, but until now we can't set it at kernel side, it's difficult to debug kernel dma_buf users. There are some kernel users of dma_heap also need it at MTK, such as camera, it's also have a allocator for other camera part, unlike most case in userspace, it's in kernel. For debug buffer owner, we need add it to let it can set debug name for each dmabuf, so that we can know dmabuf owner by dma_buf.name. Bug: 193623372 Link: https://lore.kernel.org/patchwork/patch/1459719/ Change-Id: Iac5c6b8838b9b4d976f4525d000e17a3abab94f6 Signed-off-by: Guangming Cao --- drivers/dma-buf/dma-buf.c | 52 +++++++++++++++++++++++++++++---------- include/linux/dma-buf.h | 1 + 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index d9948d58b3f4..0ee38382ba17 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -348,6 +348,25 @@ static __poll_t dma_buf_poll(struct file *file, poll_table *poll) return events; } +static long _dma_buf_set_name(struct dma_buf *dmabuf, const char *name) +{ + long ret = 0; + + dma_resv_lock(dmabuf->resv, NULL); + if (!list_empty(&dmabuf->attachments)) { + ret = -EBUSY; + goto out_unlock; + } + spin_lock(&dmabuf->name_lock); + kfree(dmabuf->name); + dmabuf->name = name; + spin_unlock(&dmabuf->name_lock); + +out_unlock: + dma_resv_unlock(dmabuf->resv); + return ret; +} + /** * dma_buf_set_name - Set a name to a specific dma_buf to track the usage. * The name of the dma-buf buffer can only be set when the dma-buf is not @@ -363,7 +382,23 @@ static __poll_t dma_buf_poll(struct file *file, poll_table *poll) * devices, return -EBUSY. * */ -static long dma_buf_set_name(struct dma_buf *dmabuf, const char __user *buf) +long dma_buf_set_name(struct dma_buf *dmabuf, const char *name) +{ + long ret = 0; + char *buf = kstrndup(name, DMA_BUF_NAME_LEN, GFP_KERNEL); + + if (!buf) + return -ENOMEM; + + ret = _dma_buf_set_name(dmabuf, buf); + if (ret) + kfree(buf); + + return ret; +} +EXPORT_SYMBOL_GPL(dma_buf_set_name); + +static long dma_buf_set_name_user(struct dma_buf *dmabuf, const char __user *buf) { char *name = strndup_user(buf, DMA_BUF_NAME_LEN); long ret = 0; @@ -371,19 +406,10 @@ static long dma_buf_set_name(struct dma_buf *dmabuf, const char __user *buf) if (IS_ERR(name)) return PTR_ERR(name); - dma_resv_lock(dmabuf->resv, NULL); - if (!list_empty(&dmabuf->attachments)) { - ret = -EBUSY; + ret = _dma_buf_set_name(dmabuf, name); + if (ret) kfree(name); - goto out_unlock; - } - spin_lock(&dmabuf->name_lock); - kfree(dmabuf->name); - dmabuf->name = name; - spin_unlock(&dmabuf->name_lock); -out_unlock: - dma_resv_unlock(dmabuf->resv); return ret; } @@ -428,7 +454,7 @@ static long dma_buf_ioctl(struct file *file, case DMA_BUF_SET_NAME_A: case DMA_BUF_SET_NAME_B: - return dma_buf_set_name(dmabuf, (const char __user *)arg); + return dma_buf_set_name_user(dmabuf, (const char __user *)arg); default: return -ENOTTY; diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h index 63ffe57a61d5..a9ad8cfdd8fd 100644 --- a/include/linux/dma-buf.h +++ b/include/linux/dma-buf.h @@ -623,6 +623,7 @@ int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *, unsigned long); void *dma_buf_vmap(struct dma_buf *); void dma_buf_vunmap(struct dma_buf *, void *vaddr); +long dma_buf_set_name(struct dma_buf *dmabuf, const char *name); int dma_buf_get_flags(struct dma_buf *dmabuf, unsigned long *flags); int dma_buf_get_uuid(struct dma_buf *dmabuf, uuid_t *uuid); From a9ac6ae90ea3c00ad5a92f9da3887c8f8b7dbd37 Mon Sep 17 00:00:00 2001 From: Minchan Kim Date: Fri, 24 Sep 2021 18:19:40 -0700 Subject: [PATCH 33/94] BACKPORT: UPSTREAM: mm: fs: invalidate bh_lrus for only cold path kernel test robot reported the regression of fio.write_iops[1] with [2]. Since lru_add_drain is called frequently, invalidate bh_lrus there could increase bh_lrus cache miss ratio, which needs more IO in the end. This patch moves the bh_lrus invalidation from the hot path( e.g., zap_page_range, pagevec_release) to cold path(i.e., lru_add_drain_all, lru_cache_disable). "Xing, Zhengjun" confirmed : I test the patch, the regression reduced to -2.9%. [1] https://lore.kernel.org/lkml/20210520083144.GD14190@xsang-OptiPlex-9020/ [2] 8cc621d2f45d, mm: fs: invalidate BH LRU during page migration Bug: 194673488 Link: https://lkml.kernel.org/r/20210907212347.1977686-1-minchan@kernel.org (cherry picked from commit 243418e3925d5b5b0657ae54c322d43035e97eed) [Chris: resolved conflicts due to Minchan's AOSP LRU commits] Signed-off-by: Minchan Kim Reported-by: kernel test robot Reviewed-by: Chris Goldsworthy Tested-by: "Xing, Zhengjun" Signed-off-by: Andrew Morton Signed-off-by: Chris Goldsworthy Change-Id: Icc5e456b058df516480b4378853464d6d7b43505 --- fs/buffer.c | 8 ++++++-- include/linux/buffer_head.h | 4 ++-- mm/swap.c | 19 ++++++++++++++++--- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/fs/buffer.c b/fs/buffer.c index 63afd6ddb85f..7b096c90ae53 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -1454,12 +1454,16 @@ void invalidate_bh_lrus(void) } EXPORT_SYMBOL_GPL(invalidate_bh_lrus); -void invalidate_bh_lrus_cpu(int cpu) +/* + * It's called from workqueue context so we need a bh_lru_lock to close + * the race with preemption/irq. + */ +void invalidate_bh_lrus_cpu(void) { struct bh_lru *b; bh_lru_lock(); - b = per_cpu_ptr(&bh_lrus, cpu); + b = this_cpu_ptr(&bh_lrus); __invalidate_bh_lrus(b); bh_lru_unlock(); } diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index e7e99da31349..b04d34bab124 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h @@ -194,7 +194,7 @@ void __breadahead_gfp(struct block_device *, sector_t block, unsigned int size, struct buffer_head *__bread_gfp(struct block_device *, sector_t block, unsigned size, gfp_t gfp); void invalidate_bh_lrus(void); -void invalidate_bh_lrus_cpu(int cpu); +void invalidate_bh_lrus_cpu(void); bool has_bh_in_lru(int cpu, void *dummy); struct buffer_head *alloc_buffer_head(gfp_t gfp_flags); void free_buffer_head(struct buffer_head * bh); @@ -408,7 +408,7 @@ static inline int inode_has_buffers(struct inode *inode) { return 0; } static inline void invalidate_inode_buffers(struct inode *inode) {} static inline int remove_inode_buffers(struct inode *inode) { return 1; } static inline int sync_mapping_buffers(struct address_space *mapping) { return 0; } -static inline void invalidate_bh_lrus_cpu(int cpu) {} +static inline void invalidate_bh_lrus_cpu(void) {} static inline bool has_bh_in_lru(int cpu, void *dummy) { return 0; } #define buffer_heads_over_limit 0 diff --git a/mm/swap.c b/mm/swap.c index 8d5c61de5a6e..abf445bd7721 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -691,7 +691,6 @@ void lru_add_drain_cpu(int cpu) pagevec_lru_move_fn(pvec, lru_lazyfree_movetail_fn, NULL); activate_page_drain(cpu); - invalidate_bh_lrus_cpu(cpu); } /** @@ -797,6 +796,20 @@ void lru_add_drain(void) local_unlock(&lru_pvecs.lock); } +/* + * It's called from per-cpu workqueue context in SMP case so + * lru_add_drain_cpu and invalidate_bh_lrus_cpu should run on + * the same cpu. It shouldn't be a problem in !SMP case since + * the core is only one and the locks will disable preemption. + */ +static void lru_add_and_bh_lrus_drain(void) +{ + local_lock(&lru_pvecs.lock); + lru_add_drain_cpu(smp_processor_id()); + local_unlock(&lru_pvecs.lock); + invalidate_bh_lrus_cpu(); +} + void lru_add_drain_cpu_zone(struct zone *zone) { local_lock(&lru_pvecs.lock); @@ -811,7 +824,7 @@ static DEFINE_PER_CPU(struct work_struct, lru_add_drain_work); static void lru_add_drain_per_cpu(struct work_struct *dummy) { - lru_add_drain(); + lru_add_and_bh_lrus_drain(); } /* @@ -969,7 +982,7 @@ void lru_cache_disable(void) */ __lru_add_drain_all(true); #else - lru_add_drain(); + lru_add_and_bh_lrus_drain(); #endif atomic_inc(&lru_disable_count); } From 384b2cdaf83e0a135ae2a7d5b54df334561c76c3 Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Mon, 22 Mar 2021 02:32:27 +0800 Subject: [PATCH 34/94] UPSTREAM: erofs: complete a missing case for inplace I/O Add a missing case which could cause unnecessary page allocation but not directly use inplace I/O instead, which increases runtime extra memory footprint. The detail is, considering an online file-backed page, the right half of the page is chosen to be cached (e.g. the end page of a readahead request) and some of its data doesn't exist in managed cache, so the pcluster will be definitely kept in the submission chain. (IOWs, it cannot be decompressed without I/O, e.g., due to the bypass queue). Currently, DELAYEDALLOC/TRYALLOC cases can be downgraded as NOINPLACE, and stop online pages from inplace I/O. After this patch, unneeded page allocations won't be observed in pickup_page_for_submission() then. Link: https://lore.kernel.org/r/20210321183227.5182-1-hsiangkao@aol.com Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: I639279e87b749b8625d2a8e77055a9fc52073542 (cherry picked from commit 0b964600d3aae56ff9d5bdd710a79f39a44c572c) Signed-off-by: Huang Jianan --- fs/erofs/zdata.c | 44 +++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index 59a969d7ed1f..d432f20b5ff0 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -104,6 +104,12 @@ enum z_erofs_collectmode { * |_______PRIMARY_FOLLOWED_______|________PRIMARY_HOOKED___________| */ COLLECT_PRIMARY_HOOKED, + /* + * a weak form of COLLECT_PRIMARY_FOLLOWED, the difference is that it + * could be dispatched into bypass queue later due to uptodated managed + * pages. All related online pages cannot be reused for inplace I/O (or + * pagevec) since it can be directly decoded without I/O submission. + */ COLLECT_PRIMARY_FOLLOWED_NOINPLACE, /* * The current collection has been linked with the owned chain, and @@ -186,21 +192,25 @@ static void preload_compressed_pages(struct z_erofs_collector *clt, if (page) { t = tag_compressed_page_justfound(page); - } else if (type == DELAYEDALLOC) { - t = tagptr_init(compressed_page_t, PAGE_UNALLOCATED); - } else if (type == TRYALLOC) { - newpage = erofs_allocpage(pagepool, gfp); - if (!newpage) - goto dontalloc; - - set_page_private(newpage, Z_EROFS_PREALLOCATED_PAGE); - t = tag_compressed_page_justfound(newpage); - } else { /* DONTALLOC */ -dontalloc: - if (standalone) - clt->compressedpages = pages; + } else { + /* I/O is needed, no possible to decompress directly */ standalone = false; - continue; + switch (type) { + case DELAYEDALLOC: + t = tagptr_init(compressed_page_t, + PAGE_UNALLOCATED); + break; + case TRYALLOC: + newpage = erofs_allocpage(pagepool, gfp); + if (!newpage) + continue; + set_page_private(newpage, + Z_EROFS_PREALLOCATED_PAGE); + t = tag_compressed_page_justfound(newpage); + break; + default: /* DONTALLOC */ + continue; + } } if (!cmpxchg_relaxed(pages, NULL, tagptr_cast_ptr(t))) @@ -214,7 +224,11 @@ static void preload_compressed_pages(struct z_erofs_collector *clt, } } - if (standalone) /* downgrade to PRIMARY_FOLLOWED_NOINPLACE */ + /* + * don't do inplace I/O if all compressed pages are available in + * managed cache since it can be moved to the bypass queue instead. + */ + if (standalone) clt->mode = COLLECT_PRIMARY_FOLLOWED_NOINPLACE; } From ba1a3d1fb2dba870485b6bb52057f8f58f3c173d Mon Sep 17 00:00:00 2001 From: Yue Hu Date: Thu, 25 Mar 2021 15:10:08 +0800 Subject: [PATCH 35/94] UPSTREAM: erofs: don't use erofs_map_blocks() any more Currently, erofs_map_blocks() will be called only from erofs_{bmap, read_raw_page} which are all for uncompressed files. So, the compression branch in erofs_map_blocks() is pointless. Let's remove it and use erofs_map_blocks_flatmode() directly. Also update related comments. Link: https://lore.kernel.org/r/20210325071008.573-1-zbestahu@gmail.com Reviewed-by: Chao Yu Signed-off-by: Yue Hu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: Ic3362c62d7c917f05f1cd11120ee6280a22221b8 (cherry picked from commit 8137824eddd2e790c61c70c20d70a087faca95fa) Signed-off-by: Huang Jianan --- fs/erofs/data.c | 19 ++----------------- fs/erofs/internal.h | 6 ++---- 2 files changed, 4 insertions(+), 21 deletions(-) diff --git a/fs/erofs/data.c b/fs/erofs/data.c index ea4f693bee22..76c47c34b09f 100644 --- a/fs/erofs/data.c +++ b/fs/erofs/data.c @@ -109,21 +109,6 @@ static int erofs_map_blocks_flatmode(struct inode *inode, return err; } -int erofs_map_blocks(struct inode *inode, - struct erofs_map_blocks *map, int flags) -{ - if (erofs_inode_is_data_compressed(EROFS_I(inode)->datalayout)) { - int err = z_erofs_map_blocks_iter(inode, map, flags); - - if (map->mpage) { - put_page(map->mpage); - map->mpage = NULL; - } - return err; - } - return erofs_map_blocks_flatmode(inode, map, flags); -} - static inline struct bio *erofs_read_raw_page(struct bio *bio, struct address_space *mapping, struct page *page, @@ -159,7 +144,7 @@ static inline struct bio *erofs_read_raw_page(struct bio *bio, erofs_blk_t blknr; unsigned int blkoff; - err = erofs_map_blocks(inode, &map, EROFS_GET_BLOCKS_RAW); + err = erofs_map_blocks_flatmode(inode, &map, EROFS_GET_BLOCKS_RAW); if (err) goto err_out; @@ -326,7 +311,7 @@ static sector_t erofs_bmap(struct address_space *mapping, sector_t block) return 0; } - if (!erofs_map_blocks(inode, &map, EROFS_GET_BLOCKS_RAW)) + if (!erofs_map_blocks_flatmode(inode, &map, EROFS_GET_BLOCKS_RAW)) return erofs_blknr(map.m_pa); return 0; diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 4758b3ceeee4..141433582470 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -297,7 +297,7 @@ extern const struct address_space_operations erofs_raw_access_aops; extern const struct address_space_operations z_erofs_aops; /* - * Logical to physical block mapping, used by erofs_map_blocks() + * Logical to physical block mapping * * Different with other file systems, it is used for 2 access modes: * @@ -344,7 +344,7 @@ struct erofs_map_blocks { struct page *mpage; }; -/* Flags used by erofs_map_blocks() */ +/* Flags used by erofs_map_blocks_flatmode() */ #define EROFS_GET_BLOCKS_RAW 0x0001 /* zmap.c */ @@ -366,8 +366,6 @@ static inline int z_erofs_map_blocks_iter(struct inode *inode, /* data.c */ struct page *erofs_get_meta_page(struct super_block *sb, erofs_blk_t blkaddr); -int erofs_map_blocks(struct inode *, struct erofs_map_blocks *, int); - /* inode.c */ static inline unsigned long erofs_inode_hash(erofs_nid_t nid) { From e17fd2ac9dfc78ce161507fd398bae0497ed0f2f Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Mon, 29 Mar 2021 09:23:05 +0800 Subject: [PATCH 36/94] UPSTREAM: erofs: introduce erofs_sb_has_xxx() helpers Introduce erofs_sb_has_xxx() to make long checks short, especially for later big pcluster & LZMA features. Link: https://lore.kernel.org/r/20210329012308.28743-2-hsiangkao@aol.com Reviewed-by: Chao Yu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: I145fa9c670284b609b59a246f918fb09dc562356 (cherry picked from commit de06a6a375414be03ce5b1054f2d836591923a1d) Signed-off-by: Huang Jianan --- fs/erofs/decompressor.c | 3 +-- fs/erofs/internal.h | 9 +++++++++ fs/erofs/super.c | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c index 04624954a119..93411e9df9b6 100644 --- a/fs/erofs/decompressor.c +++ b/fs/erofs/decompressor.c @@ -137,8 +137,7 @@ static int z_erofs_lz4_decompress(struct z_erofs_decompress_req *rq, u8 *out) support_0padding = false; /* decompression inplace is only safe when 0padding is enabled */ - if (EROFS_SB(rq->sb)->feature_incompat & - EROFS_FEATURE_INCOMPAT_LZ4_0PADDING) { + if (erofs_sb_has_lz4_0padding(EROFS_SB(rq->sb))) { support_0padding = true; while (!src[inputmargin & ~PAGE_MASK]) diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 141433582470..9b01edc938cb 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -226,6 +226,15 @@ static inline erofs_off_t iloc(struct erofs_sb_info *sbi, erofs_nid_t nid) return blknr_to_addr(sbi->meta_blkaddr) + (nid << sbi->islotbits); } +#define EROFS_FEATURE_FUNCS(name, compat, feature) \ +static inline bool erofs_sb_has_##name(struct erofs_sb_info *sbi) \ +{ \ + return sbi->feature_##compat & EROFS_FEATURE_##feature; \ +} + +EROFS_FEATURE_FUNCS(lz4_0padding, incompat, INCOMPAT_LZ4_0PADDING) +EROFS_FEATURE_FUNCS(sb_chksum, compat, COMPAT_SB_CHKSUM) + /* atomic flag definitions */ #define EROFS_I_EA_INITED_BIT 0 #define EROFS_I_Z_INITED_BIT 1 diff --git a/fs/erofs/super.c b/fs/erofs/super.c index 6ecb5d7b6e0f..3212e4f73f85 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -149,7 +149,7 @@ static int erofs_read_superblock(struct super_block *sb) } sbi->feature_compat = le32_to_cpu(dsb->feature_compat); - if (sbi->feature_compat & EROFS_FEATURE_COMPAT_SB_CHKSUM) { + if (erofs_sb_has_sb_chksum(sbi)) { ret = erofs_superblock_csum_verify(sb, data); if (ret) goto out; From cd21e62366bb8fa74bc8736cd68c96394b536967 Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Mon, 29 Mar 2021 09:23:07 +0800 Subject: [PATCH 37/94] UPSTREAM: erofs: introduce on-disk lz4 fs configurations Introduce z_erofs_lz4_cfgs to store all lz4 configurations. Currently it's only max_distance, but will be used for new features later. Link: https://lore.kernel.org/r/20210329012308.28743-4-hsiangkao@aol.com Reviewed-by: Chao Yu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: Ib9873b530bdc82f8cc5e79ac85ede737d883ff12 (cherry picked from commit 46249cded18ac0c4ffb7b177219510a133a51c00) Signed-off-by: Huang Jianan --- fs/erofs/decompressor.c | 15 +++++++++++++-- fs/erofs/erofs_fs.h | 6 ++++++ fs/erofs/internal.h | 8 +++++--- fs/erofs/super.c | 2 +- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c index 93411e9df9b6..97538ff24a19 100644 --- a/fs/erofs/decompressor.c +++ b/fs/erofs/decompressor.c @@ -29,9 +29,20 @@ struct z_erofs_decompressor { }; int z_erofs_load_lz4_config(struct super_block *sb, - struct erofs_super_block *dsb) + struct erofs_super_block *dsb, + struct z_erofs_lz4_cfgs *lz4, int size) { - u16 distance = le16_to_cpu(dsb->lz4_max_distance); + u16 distance; + + if (lz4) { + if (size < sizeof(struct z_erofs_lz4_cfgs)) { + erofs_err(sb, "invalid lz4 cfgs, size=%u", size); + return -EINVAL; + } + distance = le16_to_cpu(lz4->max_distance); + } else { + distance = le16_to_cpu(dsb->lz4_max_distance); + } EROFS_SB(sb)->lz4.max_distance_pages = distance ? DIV_ROUND_UP(distance, PAGE_SIZE) + 1 : diff --git a/fs/erofs/erofs_fs.h b/fs/erofs/erofs_fs.h index dc7cc79410df..700597e9c810 100644 --- a/fs/erofs/erofs_fs.h +++ b/fs/erofs/erofs_fs.h @@ -200,6 +200,12 @@ enum { Z_EROFS_COMPRESSION_MAX }; +/* 14 bytes (+ length field = 16 bytes) */ +struct z_erofs_lz4_cfgs { + __le16 max_distance; + u8 reserved[12]; +} __packed; + /* * bit 0 : COMPACTED_2B indexes (0 - off; 1 - on) * e.g. for 4k logical cluster size, 4B if compacted 2B is off; diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 9b01edc938cb..5ab4ffc2389e 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -438,7 +438,8 @@ int erofs_try_to_free_all_cached_pages(struct erofs_sb_info *sbi, int erofs_try_to_free_cached_page(struct address_space *mapping, struct page *page); int z_erofs_load_lz4_config(struct super_block *sb, - struct erofs_super_block *dsb); + struct erofs_super_block *dsb, + struct z_erofs_lz4_cfgs *lz4, int len); #else static inline void erofs_shrinker_register(struct super_block *sb) {} static inline void erofs_shrinker_unregister(struct super_block *sb) {} @@ -447,9 +448,10 @@ static inline void erofs_exit_shrinker(void) {} static inline int z_erofs_init_zip_subsystem(void) { return 0; } static inline void z_erofs_exit_zip_subsystem(void) {} static inline int z_erofs_load_lz4_config(struct super_block *sb, - struct erofs_super_block *dsb) + struct erofs_super_block *dsb, + struct z_erofs_lz4_cfgs *lz4, int len) { - if (dsb->lz4_max_distance) { + if (lz4 || dsb->lz4_max_distance) { erofs_err(sb, "lz4 algorithm isn't enabled"); return -EINVAL; } diff --git a/fs/erofs/super.c b/fs/erofs/super.c index 3212e4f73f85..1ca8da3f2125 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -189,7 +189,7 @@ static int erofs_read_superblock(struct super_block *sb) } /* parse on-disk compression configurations */ - ret = z_erofs_load_lz4_config(sb, dsb); + ret = z_erofs_load_lz4_config(sb, dsb, NULL, 0); out: kunmap(page); put_page(page); From ac1f14e9d5a81c1721e8b0b17a414a077602fd63 Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Mon, 29 Mar 2021 18:00:12 +0800 Subject: [PATCH 38/94] UPSTREAM: erofs: add on-disk compression configurations Add a bitmap for available compression algorithms and a variable-sized on-disk table for compression options in preparation for upcoming big pcluster and LZMA algorithm, which follows the end of super block. To parse the compression options, the bitmap is scanned one by one. For each available algorithm, there is data followed by 2-byte `length' correspondingly (it's enough for most cases, or entire fs blocks should be used.) With such available algorithm bitmap, kernel itself can also refuse to mount such filesystem if any unsupported compression algorithm exists. Note that COMPR_CFGS feature will be enabled with BIG_PCLUSTER. Link: https://lore.kernel.org/r/20210329100012.12980-1-hsiangkao@aol.com Reviewed-by: Chao Yu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: I9f9c69d5cd05da8c5f17e3650511e83c5f89200e (cherry picked from commit 14373711dd54be8a84e2f4f624bc58787f80cfbd) Signed-off-by: Huang Jianan --- fs/erofs/decompressor.c | 2 +- fs/erofs/erofs_fs.h | 16 +++-- fs/erofs/internal.h | 5 +- fs/erofs/super.c | 141 +++++++++++++++++++++++++++++++++++++++- 4 files changed, 157 insertions(+), 7 deletions(-) diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c index 97538ff24a19..27aa6a99b371 100644 --- a/fs/erofs/decompressor.c +++ b/fs/erofs/decompressor.c @@ -41,7 +41,7 @@ int z_erofs_load_lz4_config(struct super_block *sb, } distance = le16_to_cpu(lz4->max_distance); } else { - distance = le16_to_cpu(dsb->lz4_max_distance); + distance = le16_to_cpu(dsb->u1.lz4_max_distance); } EROFS_SB(sb)->lz4.max_distance_pages = distance ? diff --git a/fs/erofs/erofs_fs.h b/fs/erofs/erofs_fs.h index 700597e9c810..17bc0b5f117d 100644 --- a/fs/erofs/erofs_fs.h +++ b/fs/erofs/erofs_fs.h @@ -18,15 +18,18 @@ * be incompatible with this kernel version. */ #define EROFS_FEATURE_INCOMPAT_LZ4_0PADDING 0x00000001 +#define EROFS_FEATURE_INCOMPAT_COMPR_CFGS 0x00000002 #define EROFS_ALL_FEATURE_INCOMPAT EROFS_FEATURE_INCOMPAT_LZ4_0PADDING -/* 128-byte erofs on-disk super block */ +#define EROFS_SB_EXTSLOT_SIZE 16 + +/* erofs on-disk super block (currently 128 bytes) */ struct erofs_super_block { __le32 magic; /* file system magic number */ __le32 checksum; /* crc32c(super_block) */ __le32 feature_compat; __u8 blkszbits; /* support block_size == PAGE_SIZE only */ - __u8 reserved; + __u8 sb_extslots; /* superblock size = 128 + sb_extslots * 16 */ __le16 root_nid; /* nid of root directory */ __le64 inos; /* total valid ino # (== f_files - f_favail) */ @@ -39,8 +42,12 @@ struct erofs_super_block { __u8 uuid[16]; /* 128-bit uuid for volume */ __u8 volume_name[16]; /* volume name */ __le32 feature_incompat; - /* customized lz4 sliding window size instead of 64k by default */ - __le16 lz4_max_distance; + union { + /* bitmap for available compression algorithms */ + __le16 available_compr_algs; + /* customized sliding window size instead of 64k by default */ + __le16 lz4_max_distance; + } __packed u1; __u8 reserved2[42]; }; @@ -199,6 +206,7 @@ enum { Z_EROFS_COMPRESSION_LZ4 = 0, Z_EROFS_COMPRESSION_MAX }; +#define Z_EROFS_ALL_COMPR_ALGS (1 << (Z_EROFS_COMPRESSION_MAX - 1)) /* 14 bytes (+ length field = 16 bytes) */ struct z_erofs_lz4_cfgs { diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 5ab4ffc2389e..ad7fea371325 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -75,6 +75,7 @@ struct erofs_sb_info { struct xarray managed_pslots; unsigned int shrinker_run_no; + u16 available_compr_algs; /* pseudo inode to manage cached pages */ struct inode *managed_cache; @@ -90,6 +91,7 @@ struct erofs_sb_info { /* inode slot unit size in bit shift */ unsigned char islotbits; + u32 sb_size; /* total superblock size */ u32 build_time_nsec; u64 build_time; @@ -233,6 +235,7 @@ static inline bool erofs_sb_has_##name(struct erofs_sb_info *sbi) \ } EROFS_FEATURE_FUNCS(lz4_0padding, incompat, INCOMPAT_LZ4_0PADDING) +EROFS_FEATURE_FUNCS(compr_cfgs, incompat, INCOMPAT_COMPR_CFGS) EROFS_FEATURE_FUNCS(sb_chksum, compat, COMPAT_SB_CHKSUM) /* atomic flag definitions */ @@ -451,7 +454,7 @@ static inline int z_erofs_load_lz4_config(struct super_block *sb, struct erofs_super_block *dsb, struct z_erofs_lz4_cfgs *lz4, int len) { - if (lz4 || dsb->lz4_max_distance) { + if (lz4 || dsb->u1.lz4_max_distance) { erofs_err(sb, "lz4 algorithm isn't enabled"); return -EINVAL; } diff --git a/fs/erofs/super.c b/fs/erofs/super.c index 1ca8da3f2125..b641658e772f 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -122,6 +122,136 @@ static bool check_layout_compatibility(struct super_block *sb, return true; } +#ifdef CONFIG_EROFS_FS_ZIP +/* read variable-sized metadata, offset will be aligned by 4-byte */ +static void *erofs_read_metadata(struct super_block *sb, struct page **pagep, + erofs_off_t *offset, int *lengthp) +{ + struct page *page = *pagep; + u8 *buffer, *ptr; + int len, i, cnt; + erofs_blk_t blk; + + *offset = round_up(*offset, 4); + blk = erofs_blknr(*offset); + + if (!page || page->index != blk) { + if (page) { + unlock_page(page); + put_page(page); + } + page = erofs_get_meta_page(sb, blk); + if (IS_ERR(page)) + goto err_nullpage; + } + + ptr = kmap(page); + len = le16_to_cpu(*(__le16 *)&ptr[erofs_blkoff(*offset)]); + if (!len) + len = U16_MAX + 1; + buffer = kmalloc(len, GFP_KERNEL); + if (!buffer) { + buffer = ERR_PTR(-ENOMEM); + goto out; + } + *offset += sizeof(__le16); + *lengthp = len; + + for (i = 0; i < len; i += cnt) { + cnt = min(EROFS_BLKSIZ - (int)erofs_blkoff(*offset), len - i); + blk = erofs_blknr(*offset); + + if (!page || page->index != blk) { + if (page) { + kunmap(page); + unlock_page(page); + put_page(page); + } + page = erofs_get_meta_page(sb, blk); + if (IS_ERR(page)) { + kfree(buffer); + goto err_nullpage; + } + ptr = kmap(page); + } + memcpy(buffer + i, ptr + erofs_blkoff(*offset), cnt); + *offset += cnt; + } +out: + kunmap(page); + *pagep = page; + return buffer; +err_nullpage: + *pagep = NULL; + return page; +} + +static int erofs_load_compr_cfgs(struct super_block *sb, + struct erofs_super_block *dsb) +{ + struct erofs_sb_info *sbi; + struct page *page; + unsigned int algs, alg; + erofs_off_t offset; + int size, ret; + + sbi = EROFS_SB(sb); + sbi->available_compr_algs = le16_to_cpu(dsb->u1.available_compr_algs); + + if (sbi->available_compr_algs & ~Z_EROFS_ALL_COMPR_ALGS) { + erofs_err(sb, "try to load compressed fs with unsupported algorithms %x", + sbi->available_compr_algs & ~Z_EROFS_ALL_COMPR_ALGS); + return -EINVAL; + } + + offset = EROFS_SUPER_OFFSET + sbi->sb_size; + page = NULL; + alg = 0; + ret = 0; + + for (algs = sbi->available_compr_algs; algs; algs >>= 1, ++alg) { + void *data; + + if (!(algs & 1)) + continue; + + data = erofs_read_metadata(sb, &page, &offset, &size); + if (IS_ERR(data)) { + ret = PTR_ERR(data); + goto err; + } + + switch (alg) { + case Z_EROFS_COMPRESSION_LZ4: + ret = z_erofs_load_lz4_config(sb, dsb, data, size); + break; + default: + DBG_BUGON(1); + ret = -EFAULT; + } + kfree(data); + if (ret) + goto err; + } +err: + if (page) { + unlock_page(page); + put_page(page); + } + return ret; +} +#else +static int erofs_load_compr_cfgs(struct super_block *sb, + struct erofs_super_block *dsb) +{ + if (dsb->u1.available_compr_algs) { + erofs_err(sb, "try to load compressed fs when compression is disabled"); + return -EINVAL; + } + return 0; +} +#endif + static int erofs_read_superblock(struct super_block *sb) { struct erofs_sb_info *sbi; @@ -166,6 +296,12 @@ static int erofs_read_superblock(struct super_block *sb) if (!check_layout_compatibility(sb, dsb)) goto out; + sbi->sb_size = 128 + dsb->sb_extslots * EROFS_SB_EXTSLOT_SIZE; + if (sbi->sb_size > EROFS_BLKSIZ) { + erofs_err(sb, "invalid sb_extslots %u (more than a fs block)", + sbi->sb_size); + goto out; + } sbi->blocks = le32_to_cpu(dsb->blocks); sbi->meta_blkaddr = le32_to_cpu(dsb->meta_blkaddr); #ifdef CONFIG_EROFS_FS_XATTR @@ -189,7 +325,10 @@ static int erofs_read_superblock(struct super_block *sb) } /* parse on-disk compression configurations */ - ret = z_erofs_load_lz4_config(sb, dsb, NULL, 0); + if (erofs_sb_has_compr_cfgs(sbi)) + ret = erofs_load_compr_cfgs(sb, dsb); + else + ret = z_erofs_load_lz4_config(sb, dsb, NULL, 0); out: kunmap(page); put_page(page); From 89dbc6246a86a4383f4df6b15308abebb63bb69f Mon Sep 17 00:00:00 2001 From: Ruiqi Gong Date: Wed, 31 Mar 2021 05:39:20 -0400 Subject: [PATCH 39/94] UPSTREAM: erofs: Clean up spelling mistakes found in fs/erofs zmap.c: s/correspoinding/corresponding zdata.c: s/endding/ending Link: https://lore.kernel.org/r/20210331093920.31923-1-gongruiqi1@huawei.com Reported-by: Hulk Robot Signed-off-by: Ruiqi Gong Reviewed-by: Gao Xiang Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: Ie848ca314462a8093fe94405b260c12b23b663b9 (cherry picked from commit fe6adcce7e297fcb49f40c62df42334690c3f848) Signed-off-by: Huang Jianan --- fs/erofs/zdata.c | 2 +- fs/erofs/zmap.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index d432f20b5ff0..db81afeac676 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -936,7 +936,7 @@ static int z_erofs_decompress_pcluster(struct super_block *sb, }, pagepool); out: - /* must handle all compressed pages before endding pages */ + /* must handle all compressed pages before ending pages */ for (i = 0; i < clusterpages; ++i) { page = compressed_pages[i]; diff --git a/fs/erofs/zmap.c b/fs/erofs/zmap.c index 14d2de35110c..b384f546d368 100644 --- a/fs/erofs/zmap.c +++ b/fs/erofs/zmap.c @@ -443,7 +443,7 @@ int z_erofs_map_blocks_iter(struct inode *inode, m.delta[0] = 1; fallthrough; case Z_EROFS_VLE_CLUSTER_TYPE_NONHEAD: - /* get the correspoinding first chunk */ + /* get the corresponding first chunk */ err = z_erofs_extent_lookback(&m, m.delta[0]); if (err) goto unmap_out; From 431d73396dada35ced5d73542cc54e16140db3d1 Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Wed, 7 Apr 2021 12:39:18 +0800 Subject: [PATCH 40/94] UPSTREAM: erofs: reserve physical_clusterbits[] Formal big pcluster design is actually more powerful / flexable than the previous thought whose pclustersize was fixed as power-of-2 blocks, which was obviously inefficient and space-wasting. Instead, pclustersize can now be set independently for each pcluster, so various pcluster sizes can also be used together in one file if mkfs wants (for example, according to data type and/or compression ratio). Let's get rid of previous physical_clusterbits[] setting (also notice that corresponding on-disk fields are still 0 for now). Therefore, head1/2 can be used for at most 2 different algorithms in one file and again pclustersize is now independent of these. Link: https://lore.kernel.org/r/20210407043927.10623-2-xiang@kernel.org Acked-by: Chao Yu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: I7db236f06b202949b882a366b347f0c4e9dc0c3e (cherry picked from commit 54e0b6c873dcbd02b9b479c893f6fba8fcbc6a9c) Signed-off-by: Huang Jianan --- fs/erofs/erofs_fs.h | 4 +--- fs/erofs/internal.h | 1 - fs/erofs/zdata.c | 3 +-- fs/erofs/zmap.c | 15 --------------- 4 files changed, 2 insertions(+), 21 deletions(-) diff --git a/fs/erofs/erofs_fs.h b/fs/erofs/erofs_fs.h index 17bc0b5f117d..626b7d3e9ab7 100644 --- a/fs/erofs/erofs_fs.h +++ b/fs/erofs/erofs_fs.h @@ -233,9 +233,7 @@ struct z_erofs_map_header { __u8 h_algorithmtype; /* * bit 0-2 : logical cluster bits - 12, e.g. 0 for 4096; - * bit 3-4 : (physical - logical) cluster bits of head 1: - * For example, if logical clustersize = 4096, 1 for 8192. - * bit 5-7 : (physical - logical) cluster bits of head 2. + * bit 3-7 : reserved. */ __u8 h_clusterbits; }; diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index ad7fea371325..ad30fed6d52e 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -266,7 +266,6 @@ struct erofs_inode { unsigned short z_advise; unsigned char z_algorithmtype[2]; unsigned char z_logical_clusterbits; - unsigned char z_physical_clusterbits[2]; }; #endif /* CONFIG_EROFS_FS_ZIP */ }; diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index db81afeac676..78df4b02fdc4 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -433,8 +433,7 @@ static int z_erofs_register_collection(struct z_erofs_collector *clt, else pcl->algorithmformat = Z_EROFS_COMPRESSION_SHIFTED; - pcl->clusterbits = EROFS_I(inode)->z_physical_clusterbits[0]; - pcl->clusterbits -= PAGE_SHIFT; + pcl->clusterbits = 0; /* new pclusters should be claimed as type 1, primary and followed */ pcl->next = clt->owned_head; diff --git a/fs/erofs/zmap.c b/fs/erofs/zmap.c index b384f546d368..7fd6bd843471 100644 --- a/fs/erofs/zmap.c +++ b/fs/erofs/zmap.c @@ -17,11 +17,8 @@ int z_erofs_fill_inode(struct inode *inode) vi->z_algorithmtype[0] = 0; vi->z_algorithmtype[1] = 0; vi->z_logical_clusterbits = LOG_BLOCK_SIZE; - vi->z_physical_clusterbits[0] = vi->z_logical_clusterbits; - vi->z_physical_clusterbits[1] = vi->z_logical_clusterbits; set_bit(EROFS_I_Z_INITED_BIT, &vi->flags); } - inode->i_mapping->a_ops = &z_erofs_aops; return 0; } @@ -77,18 +74,6 @@ static int z_erofs_fill_inode_lazy(struct inode *inode) } vi->z_logical_clusterbits = LOG_BLOCK_SIZE + (h->h_clusterbits & 7); - vi->z_physical_clusterbits[0] = vi->z_logical_clusterbits + - ((h->h_clusterbits >> 3) & 3); - - if (vi->z_physical_clusterbits[0] != LOG_BLOCK_SIZE) { - erofs_err(sb, "unsupported physical clusterbits %u for nid %llu, please upgrade kernel", - vi->z_physical_clusterbits[0], vi->nid); - err = -EOPNOTSUPP; - goto unmap_done; - } - - vi->z_physical_clusterbits[1] = vi->z_logical_clusterbits + - ((h->h_clusterbits >> 5) & 7); /* paired with smp_mb() at the beginning of the function */ smp_mb(); set_bit(EROFS_I_Z_INITED_BIT, &vi->flags); From 571c9a0bd33465001a58cff84f4488b8994bf85a Mon Sep 17 00:00:00 2001 From: Vladimir Zapolskiy Date: Fri, 30 Oct 2020 14:28:39 +0200 Subject: [PATCH 41/94] UPSTREAM: erofs: remove a void EROFS_VERSION macro set in Makefile Since commit 4f761fa253b4 ("erofs: rename errln/infoln/debugln to erofs_{err, info, dbg}") the defined macro EROFS_VERSION has no affect, therefore removing it from the Makefile is a non-functional change. Link: https://lore.kernel.org/r/20201030122839.25431-1-vladimir@tuxera.com Reviewed-by: Gao Xiang Reviewed-by: Chao Yu Signed-off-by: Vladimir Zapolskiy Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: I06df2883e85d4bfdc08bccb7aa7c014570cd156b (cherry picked from commit a426ce9d6751cc8e709f031fa546900e4239f125) Signed-off-by: Huang Jianan --- fs/erofs/Makefile | 5 ----- 1 file changed, 5 deletions(-) diff --git a/fs/erofs/Makefile b/fs/erofs/Makefile index 46f2aa4ba46c..af159539fc1b 100644 --- a/fs/erofs/Makefile +++ b/fs/erofs/Makefile @@ -1,11 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-only -EROFS_VERSION = "1.0" - -ccflags-y += -DEROFS_VERSION=\"$(EROFS_VERSION)\" - obj-$(CONFIG_EROFS_FS) += erofs.o erofs-objs := super.o inode.o data.o namei.o dir.o utils.o erofs-$(CONFIG_EROFS_FS_XATTR) += xattr.o erofs-$(CONFIG_EROFS_FS_ZIP) += decompressor.o zmap.o zdata.o - From 432f58b100f08424d720053f501a652f16375602 Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Sat, 10 Apr 2021 03:06:30 +0800 Subject: [PATCH 42/94] UPSTREAM: erofs: introduce multipage per-CPU buffers To deal the with the cases which inplace decompression is infeasible for some inplace I/O. Per-CPU buffers was introduced to get rid of page allocation latency and thrash for low-latency decompression algorithms such as lz4. For the big pcluster feature, introduce multipage per-CPU buffers to keep such inplace I/O pclusters temporarily as well but note that per-CPU pages are just consecutive virtually. When a new big pcluster fs is mounted, its max pclustersize will be read and per-CPU buffers can be growed if needed. Shrinking adjustable per-CPU buffers is more complex (because we don't know if such size is still be used), so currently just release them all when unloading. Link: https://lore.kernel.org/r/20210409190630.19569-1-xiang@kernel.org Acked-by: Chao Yu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: I5b3ab69ef58aaea635911b0c08cceeb4b38122da (cherry picked from commit 524887347fcb67faa0a63dd3c4c02ab48d4968d4) Signed-off-by: Huang Jianan --- fs/erofs/Makefile | 2 +- fs/erofs/decompressor.c | 8 ++- fs/erofs/internal.h | 25 ++----- fs/erofs/pcpubuf.c | 148 ++++++++++++++++++++++++++++++++++++++++ fs/erofs/super.c | 2 + fs/erofs/utils.c | 12 ---- 6 files changed, 163 insertions(+), 34 deletions(-) create mode 100644 fs/erofs/pcpubuf.c diff --git a/fs/erofs/Makefile b/fs/erofs/Makefile index af159539fc1b..1f9aced49070 100644 --- a/fs/erofs/Makefile +++ b/fs/erofs/Makefile @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-only obj-$(CONFIG_EROFS_FS) += erofs.o -erofs-objs := super.o inode.o data.o namei.o dir.o utils.o +erofs-objs := super.o inode.o data.o namei.o dir.o utils.o pcpubuf.o erofs-$(CONFIG_EROFS_FS_XATTR) += xattr.o erofs-$(CONFIG_EROFS_FS_ZIP) += decompressor.o zmap.o zdata.o diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c index 27aa6a99b371..fb4838c0f0df 100644 --- a/fs/erofs/decompressor.c +++ b/fs/erofs/decompressor.c @@ -47,7 +47,9 @@ int z_erofs_load_lz4_config(struct super_block *sb, EROFS_SB(sb)->lz4.max_distance_pages = distance ? DIV_ROUND_UP(distance, PAGE_SIZE) + 1 : LZ4_MAX_DISTANCE_PAGES; - return 0; + + /* TODO: use max pclusterblks after bigpcluster is enabled */ + return erofs_pcpubuf_growsize(1); } static int z_erofs_lz4_prepare_destpages(struct z_erofs_decompress_req *rq, @@ -114,7 +116,7 @@ static void *generic_copy_inplace_data(struct z_erofs_decompress_req *rq, * pages should be copied in order to avoid being overlapped. */ struct page **in = rq->in; - u8 *const tmp = erofs_get_pcpubuf(0); + u8 *const tmp = erofs_get_pcpubuf(1); u8 *tmpp = tmp; unsigned int inlen = rq->inputsize - pageofs_in; unsigned int count = min_t(uint, inlen, PAGE_SIZE - pageofs_in); @@ -271,7 +273,7 @@ static int z_erofs_decompress_generic(struct z_erofs_decompress_req *rq, * compressed data is preferred. */ if (rq->outputsize <= PAGE_SIZE * 7 / 8) { - dst = erofs_get_pcpubuf(0); + dst = erofs_get_pcpubuf(1); if (IS_ERR(dst)) return PTR_ERR(dst); diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index ad30fed6d52e..6ba582ce957e 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -197,9 +197,6 @@ static inline int erofs_wait_on_workgroup_freezed(struct erofs_workgroup *grp) /* hard limit of pages per compressed cluster */ #define Z_EROFS_CLUSTER_MAX_PAGES (CONFIG_EROFS_FS_CLUSTER_PAGE_LIMIT) -#define EROFS_PCPUBUF_NR_PAGES Z_EROFS_CLUSTER_MAX_PAGES -#else -#define EROFS_PCPUBUF_NR_PAGES 0 #endif /* !CONFIG_EROFS_FS_ZIP */ /* we strictly follow PAGE_SIZE and no buffer head yet */ @@ -404,24 +401,16 @@ int erofs_namei(struct inode *dir, struct qstr *name, /* dir.c */ extern const struct file_operations erofs_dir_fops; +/* pcpubuf.c */ +void *erofs_get_pcpubuf(unsigned int requiredpages); +void erofs_put_pcpubuf(void *ptr); +int erofs_pcpubuf_growsize(unsigned int nrpages); +void erofs_pcpubuf_init(void); +void erofs_pcpubuf_exit(void); + /* utils.c / zdata.c */ struct page *erofs_allocpage(struct list_head *pool, gfp_t gfp); -#if (EROFS_PCPUBUF_NR_PAGES > 0) -void *erofs_get_pcpubuf(unsigned int pagenr); -#define erofs_put_pcpubuf(buf) do { \ - (void)&(buf); \ - preempt_enable(); \ -} while (0) -#else -static inline void *erofs_get_pcpubuf(unsigned int pagenr) -{ - return ERR_PTR(-EOPNOTSUPP); -} - -#define erofs_put_pcpubuf(buf) do {} while (0) -#endif - #ifdef CONFIG_EROFS_FS_ZIP int erofs_workgroup_put(struct erofs_workgroup *grp); struct erofs_workgroup *erofs_find_workgroup(struct super_block *sb, diff --git a/fs/erofs/pcpubuf.c b/fs/erofs/pcpubuf.c new file mode 100644 index 000000000000..6c885575128a --- /dev/null +++ b/fs/erofs/pcpubuf.c @@ -0,0 +1,148 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (C) Gao Xiang + * + * For low-latency decompression algorithms (e.g. lz4), reserve consecutive + * per-CPU virtual memory (in pages) in advance to store such inplace I/O + * data if inplace decompression is failed (due to unmet inplace margin for + * example). + */ +#include "internal.h" + +struct erofs_pcpubuf { + raw_spinlock_t lock; + void *ptr; + struct page **pages; + unsigned int nrpages; +}; + +static DEFINE_PER_CPU(struct erofs_pcpubuf, erofs_pcb); + +void *erofs_get_pcpubuf(unsigned int requiredpages) + __acquires(pcb->lock) +{ + struct erofs_pcpubuf *pcb = &get_cpu_var(erofs_pcb); + + raw_spin_lock(&pcb->lock); + /* check if the per-CPU buffer is too small */ + if (requiredpages > pcb->nrpages) { + raw_spin_unlock(&pcb->lock); + put_cpu_var(erofs_pcb); + /* (for sparse checker) pretend pcb->lock is still taken */ + __acquire(pcb->lock); + return NULL; + } + return pcb->ptr; +} + +void erofs_put_pcpubuf(void *ptr) __releases(pcb->lock) +{ + struct erofs_pcpubuf *pcb = &per_cpu(erofs_pcb, smp_processor_id()); + + DBG_BUGON(pcb->ptr != ptr); + raw_spin_unlock(&pcb->lock); + put_cpu_var(erofs_pcb); +} + +/* the next step: support per-CPU page buffers hotplug */ +int erofs_pcpubuf_growsize(unsigned int nrpages) +{ + static DEFINE_MUTEX(pcb_resize_mutex); + static unsigned int pcb_nrpages; + LIST_HEAD(pagepool); + int delta, cpu, ret, i; + + mutex_lock(&pcb_resize_mutex); + delta = nrpages - pcb_nrpages; + ret = 0; + /* avoid shrinking pcpubuf, since no idea how many fses rely on */ + if (delta <= 0) + goto out; + + for_each_possible_cpu(cpu) { + struct erofs_pcpubuf *pcb = &per_cpu(erofs_pcb, cpu); + struct page **pages, **oldpages; + void *ptr, *old_ptr; + + pages = kmalloc_array(nrpages, sizeof(*pages), GFP_KERNEL); + if (!pages) { + ret = -ENOMEM; + break; + } + + for (i = 0; i < nrpages; ++i) { + pages[i] = erofs_allocpage(&pagepool, GFP_KERNEL); + if (!pages[i]) { + ret = -ENOMEM; + oldpages = pages; + goto free_pagearray; + } + } + ptr = vmap(pages, nrpages, VM_MAP, PAGE_KERNEL); + if (!ptr) { + ret = -ENOMEM; + oldpages = pages; + goto free_pagearray; + } + raw_spin_lock(&pcb->lock); + old_ptr = pcb->ptr; + pcb->ptr = ptr; + oldpages = pcb->pages; + pcb->pages = pages; + i = pcb->nrpages; + pcb->nrpages = nrpages; + raw_spin_unlock(&pcb->lock); + + if (!oldpages) { + DBG_BUGON(old_ptr); + continue; + } + + if (old_ptr) + vunmap(old_ptr); +free_pagearray: + while (i) + list_add(&oldpages[--i]->lru, &pagepool); + kfree(oldpages); + if (ret) + break; + } + pcb_nrpages = nrpages; + put_pages_list(&pagepool); +out: + mutex_unlock(&pcb_resize_mutex); + return ret; +} + +void erofs_pcpubuf_init(void) +{ + int cpu; + + for_each_possible_cpu(cpu) { + struct erofs_pcpubuf *pcb = &per_cpu(erofs_pcb, cpu); + + raw_spin_lock_init(&pcb->lock); + } +} + +void erofs_pcpubuf_exit(void) +{ + int cpu, i; + + for_each_possible_cpu(cpu) { + struct erofs_pcpubuf *pcb = &per_cpu(erofs_pcb, cpu); + + if (pcb->ptr) { + vunmap(pcb->ptr); + pcb->ptr = NULL; + } + if (!pcb->pages) + continue; + + for (i = 0; i < pcb->nrpages; ++i) + if (pcb->pages[i]) + put_page(pcb->pages[i]); + kfree(pcb->pages); + pcb->pages = NULL; + } +} diff --git a/fs/erofs/super.c b/fs/erofs/super.c index b641658e772f..bbf3bbd908e0 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -655,6 +655,7 @@ static int __init erofs_module_init(void) if (err) goto shrinker_err; + erofs_pcpubuf_init(); err = z_erofs_init_zip_subsystem(); if (err) goto zip_err; @@ -684,6 +685,7 @@ static void __exit erofs_module_exit(void) /* Ensure all RCU free inodes are safe before cache is destroyed. */ rcu_barrier(); kmem_cache_destroy(erofs_inode_cachep); + erofs_pcpubuf_exit(); } /* get filesystem statistics */ diff --git a/fs/erofs/utils.c b/fs/erofs/utils.c index de9986d2f82f..6758c5b19f7c 100644 --- a/fs/erofs/utils.c +++ b/fs/erofs/utils.c @@ -21,18 +21,6 @@ struct page *erofs_allocpage(struct list_head *pool, gfp_t gfp) return page; } -#if (EROFS_PCPUBUF_NR_PAGES > 0) -static struct { - u8 data[PAGE_SIZE * EROFS_PCPUBUF_NR_PAGES]; -} ____cacheline_aligned_in_smp erofs_pcpubuf[NR_CPUS]; - -void *erofs_get_pcpubuf(unsigned int pagenr) -{ - preempt_disable(); - return &erofs_pcpubuf[smp_processor_id()].data[pagenr * PAGE_SIZE]; -} -#endif - #ifdef CONFIG_EROFS_FS_ZIP /* global shrink count (for all mounted EROFS instances) */ static atomic_long_t erofs_global_shrink_cnt; From 6ad2f8f1699c7f13514f0037397fec86e4151ccc Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Wed, 7 Apr 2021 12:39:20 +0800 Subject: [PATCH 43/94] UPSTREAM: erofs: introduce physical cluster slab pools Since multiple pcluster sizes could be used at once, the number of compressed pages will become a variable factor. It's necessary to introduce slab pools rather than a single slab cache now. This limits the pclustersize to 1M (Z_EROFS_PCLUSTER_MAX_SIZE), and get rid of the obsolete EROFS_FS_CLUSTER_PAGE_LIMIT, which has no use now. Link: https://lore.kernel.org/r/20210407043927.10623-4-xiang@kernel.org Acked-by: Chao Yu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: I821f3cf35820dbb320eeedc3ae934fd1d455dfd7 (cherry picked from commit 9f6cc76e6ff0631a99cd94eab8af137057633a52) Signed-off-by: Huang Jianan --- fs/erofs/Kconfig | 14 ---- fs/erofs/erofs_fs.h | 3 + fs/erofs/internal.h | 3 - fs/erofs/zdata.c | 170 ++++++++++++++++++++++++++++++-------------- fs/erofs/zdata.h | 14 ++-- 5 files changed, 125 insertions(+), 79 deletions(-) diff --git a/fs/erofs/Kconfig b/fs/erofs/Kconfig index 74b0aaa7114c..858b3339f381 100644 --- a/fs/erofs/Kconfig +++ b/fs/erofs/Kconfig @@ -76,17 +76,3 @@ config EROFS_FS_ZIP If you don't want to enable compression feature, say N. -config EROFS_FS_CLUSTER_PAGE_LIMIT - int "EROFS Cluster Pages Hard Limit" - depends on EROFS_FS_ZIP - range 1 256 - default "1" - help - Indicates maximum # of pages of a compressed - physical cluster. - - For example, if files in a image were compressed - into 8k-unit, hard limit should not be configured - less than 2. Otherwise, the image will be refused - to mount on this kernel. - diff --git a/fs/erofs/erofs_fs.h b/fs/erofs/erofs_fs.h index 626b7d3e9ab7..76777673eb63 100644 --- a/fs/erofs/erofs_fs.h +++ b/fs/erofs/erofs_fs.h @@ -201,6 +201,9 @@ static inline unsigned int erofs_xattr_entry_size(struct erofs_xattr_entry *e) e->e_name_len + le16_to_cpu(e->e_value_size)); } +/* maximum supported size of a physical compression cluster */ +#define Z_EROFS_PCLUSTER_MAX_SIZE (1024 * 1024) + /* available compression algorithm types (for h_algorithmtype) */ enum { Z_EROFS_COMPRESSION_LZ4 = 0, diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 6ba582ce957e..3a25f588b818 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -194,9 +194,6 @@ static inline int erofs_wait_on_workgroup_freezed(struct erofs_workgroup *grp) return v; } #endif /* !CONFIG_SMP */ - -/* hard limit of pages per compressed cluster */ -#define Z_EROFS_CLUSTER_MAX_PAGES (CONFIG_EROFS_FS_CLUSTER_PAGE_LIMIT) #endif /* !CONFIG_EROFS_FS_ZIP */ /* we strictly follow PAGE_SIZE and no buffer head yet */ diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index 78df4b02fdc4..8b74d3268cc9 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -10,6 +10,93 @@ #include +/* + * since pclustersize is variable for big pcluster feature, introduce slab + * pools implementation for different pcluster sizes. + */ +struct z_erofs_pcluster_slab { + struct kmem_cache *slab; + unsigned int maxpages; + char name[48]; +}; + +#define _PCLP(n) { .maxpages = n } + +static struct z_erofs_pcluster_slab pcluster_pool[] __read_mostly = { + _PCLP(1), _PCLP(4), _PCLP(16), _PCLP(64), _PCLP(128), + _PCLP(Z_EROFS_PCLUSTER_MAX_PAGES) +}; + +static void z_erofs_destroy_pcluster_pool(void) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(pcluster_pool); ++i) { + if (!pcluster_pool[i].slab) + continue; + kmem_cache_destroy(pcluster_pool[i].slab); + pcluster_pool[i].slab = NULL; + } +} + +static int z_erofs_create_pcluster_pool(void) +{ + struct z_erofs_pcluster_slab *pcs; + struct z_erofs_pcluster *a; + unsigned int size; + + for (pcs = pcluster_pool; + pcs < pcluster_pool + ARRAY_SIZE(pcluster_pool); ++pcs) { + size = struct_size(a, compressed_pages, pcs->maxpages); + + sprintf(pcs->name, "erofs_pcluster-%u", pcs->maxpages); + pcs->slab = kmem_cache_create(pcs->name, size, 0, + SLAB_RECLAIM_ACCOUNT, NULL); + if (pcs->slab) + continue; + + z_erofs_destroy_pcluster_pool(); + return -ENOMEM; + } + return 0; +} + +static struct z_erofs_pcluster *z_erofs_alloc_pcluster(unsigned int nrpages) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(pcluster_pool); ++i) { + struct z_erofs_pcluster_slab *pcs = pcluster_pool + i; + struct z_erofs_pcluster *pcl; + + if (nrpages > pcs->maxpages) + continue; + + pcl = kmem_cache_zalloc(pcs->slab, GFP_NOFS); + if (!pcl) + return ERR_PTR(-ENOMEM); + pcl->pclusterpages = nrpages; + return pcl; + } + return ERR_PTR(-EINVAL); +} + +static void z_erofs_free_pcluster(struct z_erofs_pcluster *pcl) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(pcluster_pool); ++i) { + struct z_erofs_pcluster_slab *pcs = pcluster_pool + i; + + if (pcl->pclusterpages > pcs->maxpages) + continue; + + kmem_cache_free(pcs->slab, pcl); + return; + } + DBG_BUGON(1); +} + /* * a compressed_pages[] placeholder in order to avoid * being filled with file pages for in-place decompression. @@ -37,12 +124,11 @@ typedef tagptr1_t compressed_page_t; tagptr_fold(compressed_page_t, page, 1) static struct workqueue_struct *z_erofs_workqueue __read_mostly; -static struct kmem_cache *pcluster_cachep __read_mostly; void z_erofs_exit_zip_subsystem(void) { destroy_workqueue(z_erofs_workqueue); - kmem_cache_destroy(pcluster_cachep); + z_erofs_destroy_pcluster_pool(); } static inline int z_erofs_init_workqueue(void) @@ -59,32 +145,16 @@ static inline int z_erofs_init_workqueue(void) return z_erofs_workqueue ? 0 : -ENOMEM; } -static void z_erofs_pcluster_init_once(void *ptr) -{ - struct z_erofs_pcluster *pcl = ptr; - struct z_erofs_collection *cl = z_erofs_primarycollection(pcl); - unsigned int i; - - mutex_init(&cl->lock); - cl->nr_pages = 0; - cl->vcnt = 0; - for (i = 0; i < Z_EROFS_CLUSTER_MAX_PAGES; ++i) - pcl->compressed_pages[i] = NULL; -} - int __init z_erofs_init_zip_subsystem(void) { - pcluster_cachep = kmem_cache_create("erofs_compress", - Z_EROFS_WORKGROUP_SIZE, 0, - SLAB_RECLAIM_ACCOUNT, - z_erofs_pcluster_init_once); - if (pcluster_cachep) { - if (!z_erofs_init_workqueue()) - return 0; + int err = z_erofs_create_pcluster_pool(); - kmem_cache_destroy(pcluster_cachep); - } - return -ENOMEM; + if (err) + return err; + err = z_erofs_init_workqueue(); + if (err) + z_erofs_destroy_pcluster_pool(); + return err; } enum z_erofs_collectmode { @@ -169,7 +239,6 @@ static void preload_compressed_pages(struct z_erofs_collector *clt, struct list_head *pagepool) { const struct z_erofs_pcluster *pcl = clt->pcl; - const unsigned int clusterpages = BIT(pcl->clusterbits); struct page **pages = clt->compressedpages; pgoff_t index = pcl->obj.index + (pages - pcl->compressed_pages); bool standalone = true; @@ -179,7 +248,7 @@ static void preload_compressed_pages(struct z_erofs_collector *clt, if (clt->mode < COLLECT_PRIMARY_FOLLOWED) return; - for (; pages < pcl->compressed_pages + clusterpages; ++pages) { + for (; pages < pcl->compressed_pages + pcl->pclusterpages; ++pages) { struct page *page; compressed_page_t t; struct page *newpage = NULL; @@ -239,14 +308,13 @@ int erofs_try_to_free_all_cached_pages(struct erofs_sb_info *sbi, struct z_erofs_pcluster *const pcl = container_of(grp, struct z_erofs_pcluster, obj); struct address_space *const mapping = MNGD_MAPPING(sbi); - const unsigned int clusterpages = BIT(pcl->clusterbits); int i; /* * refcount of workgroup is now freezed as 1, * therefore no need to worry about available decompression users. */ - for (i = 0; i < clusterpages; ++i) { + for (i = 0; i < pcl->pclusterpages; ++i) { struct page *page = pcl->compressed_pages[i]; if (!page) @@ -271,13 +339,12 @@ int erofs_try_to_free_cached_page(struct address_space *mapping, struct page *page) { struct z_erofs_pcluster *const pcl = (void *)page_private(page); - const unsigned int clusterpages = BIT(pcl->clusterbits); int ret = 0; /* 0 - busy */ if (erofs_workgroup_try_to_freeze(&pcl->obj, 1)) { unsigned int i; - for (i = 0; i < clusterpages; ++i) { + for (i = 0; i < pcl->pclusterpages; ++i) { if (pcl->compressed_pages[i] == page) { WRITE_ONCE(pcl->compressed_pages[i], NULL); ret = 1; @@ -297,9 +364,9 @@ static inline bool z_erofs_try_inplace_io(struct z_erofs_collector *clt, struct page *page) { struct z_erofs_pcluster *const pcl = clt->pcl; - const unsigned int clusterpages = BIT(pcl->clusterbits); - while (clt->compressedpages < pcl->compressed_pages + clusterpages) { + while (clt->compressedpages < + pcl->compressed_pages + pcl->pclusterpages) { if (!cmpxchg(clt->compressedpages++, NULL, page)) return true; } @@ -416,10 +483,10 @@ static int z_erofs_register_collection(struct z_erofs_collector *clt, struct erofs_workgroup *grp; int err; - /* no available workgroup, let's allocate one */ - pcl = kmem_cache_alloc(pcluster_cachep, GFP_NOFS); - if (!pcl) - return -ENOMEM; + /* no available pcluster, let's allocate one */ + pcl = z_erofs_alloc_pcluster(map->m_plen >> PAGE_SHIFT); + if (IS_ERR(pcl)) + return PTR_ERR(pcl); atomic_set(&pcl->obj.refcount, 1); pcl->obj.index = map->m_pa >> PAGE_SHIFT; @@ -433,24 +500,18 @@ static int z_erofs_register_collection(struct z_erofs_collector *clt, else pcl->algorithmformat = Z_EROFS_COMPRESSION_SHIFTED; - pcl->clusterbits = 0; - /* new pclusters should be claimed as type 1, primary and followed */ pcl->next = clt->owned_head; clt->mode = COLLECT_PRIMARY_FOLLOWED; cl = z_erofs_primarycollection(pcl); - - /* must be cleaned before freeing to slab */ - DBG_BUGON(cl->nr_pages); - DBG_BUGON(cl->vcnt); - cl->pageofs = map->m_la & ~PAGE_MASK; /* * lock all primary followed works before visible to others * and mutex_trylock *never* fails for a new pcluster. */ + mutex_init(&cl->lock); DBG_BUGON(!mutex_trylock(&cl->lock)); grp = erofs_insert_workgroup(inode->i_sb, &pcl->obj); @@ -474,7 +535,7 @@ static int z_erofs_register_collection(struct z_erofs_collector *clt, err_out: mutex_unlock(&cl->lock); - kmem_cache_free(pcluster_cachep, pcl); + z_erofs_free_pcluster(pcl); return err; } @@ -520,7 +581,7 @@ static int z_erofs_collector_begin(struct z_erofs_collector *clt, clt->compressedpages = clt->pcl->compressed_pages; if (clt->mode <= COLLECT_PRIMARY) /* cannot do in-place I/O */ - clt->compressedpages += Z_EROFS_CLUSTER_MAX_PAGES; + clt->compressedpages += clt->pcl->pclusterpages; return 0; } @@ -533,9 +594,8 @@ static void z_erofs_rcu_callback(struct rcu_head *head) struct z_erofs_collection *const cl = container_of(head, struct z_erofs_collection, rcu); - kmem_cache_free(pcluster_cachep, - container_of(cl, struct z_erofs_pcluster, - primary_collection)); + z_erofs_free_pcluster(container_of(cl, struct z_erofs_pcluster, + primary_collection)); } void erofs_workgroup_free_rcu(struct erofs_workgroup *grp) @@ -787,9 +847,8 @@ static int z_erofs_decompress_pcluster(struct super_block *sb, struct list_head *pagepool) { struct erofs_sb_info *const sbi = EROFS_SB(sb); - const unsigned int clusterpages = BIT(pcl->clusterbits); struct z_erofs_pagevec_ctor ctor; - unsigned int i, outputsize, llen, nr_pages; + unsigned int i, inputsize, outputsize, llen, nr_pages; struct page *pages_onstack[Z_EROFS_VMAP_ONSTACK_PAGES]; struct page **pages, **compressed_pages, *page; @@ -869,7 +928,7 @@ static int z_erofs_decompress_pcluster(struct super_block *sb, overlapped = false; compressed_pages = pcl->compressed_pages; - for (i = 0; i < clusterpages; ++i) { + for (i = 0; i < pcl->pclusterpages; ++i) { unsigned int pagenr; page = compressed_pages[i]; @@ -922,12 +981,13 @@ static int z_erofs_decompress_pcluster(struct super_block *sb, partial = true; } + inputsize = pcl->pclusterpages * PAGE_SIZE; err = z_erofs_decompress(&(struct z_erofs_decompress_req) { .sb = sb, .in = compressed_pages, .out = pages, .pageofs_out = cl->pageofs, - .inputsize = PAGE_SIZE, + .inputsize = inputsize, .outputsize = outputsize, .alg = pcl->algorithmformat, .inplace_io = overlapped, @@ -936,7 +996,7 @@ static int z_erofs_decompress_pcluster(struct super_block *sb, out: /* must handle all compressed pages before ending pages */ - for (i = 0; i < clusterpages; ++i) { + for (i = 0; i < pcl->pclusterpages; ++i) { page = compressed_pages[i]; if (erofs_page_is_managed(sbi, page)) @@ -1239,7 +1299,7 @@ static void z_erofs_submit_queue(struct super_block *sb, pcl = container_of(owned_head, struct z_erofs_pcluster, next); cur = pcl->obj.index; - end = cur + BIT(pcl->clusterbits); + end = cur + pcl->pclusterpages; /* close the main owned chain at first */ owned_head = cmpxchg(&pcl->next, Z_EROFS_PCLUSTER_TAIL, diff --git a/fs/erofs/zdata.h b/fs/erofs/zdata.h index b503b353d4ab..942ee69dff6a 100644 --- a/fs/erofs/zdata.h +++ b/fs/erofs/zdata.h @@ -10,6 +10,7 @@ #include "internal.h" #include "zpvec.h" +#define Z_EROFS_PCLUSTER_MAX_PAGES (Z_EROFS_PCLUSTER_MAX_SIZE / PAGE_SIZE) #define Z_EROFS_NR_INLINE_PAGEVECS 3 /* @@ -59,16 +60,17 @@ struct z_erofs_pcluster { /* A: point to next chained pcluster or TAILs */ z_erofs_next_pcluster_t next; - /* A: compressed pages (including multi-usage pages) */ - struct page *compressed_pages[Z_EROFS_CLUSTER_MAX_PAGES]; - /* A: lower limit of decompressed length and if full length or not */ unsigned int length; + /* I: physical cluster size in pages */ + unsigned short pclusterpages; + /* I: compression algorithm format */ unsigned char algorithmformat; - /* I: bit shift of physical cluster size */ - unsigned char clusterbits; + + /* A: compressed pages (can be cached or inplaced pages) */ + struct page *compressed_pages[]; }; #define z_erofs_primarycollection(pcluster) (&(pcluster)->primary_collection) @@ -82,8 +84,6 @@ struct z_erofs_pcluster { #define Z_EROFS_PCLUSTER_NIL (NULL) -#define Z_EROFS_WORKGROUP_SIZE sizeof(struct z_erofs_pcluster) - struct z_erofs_decompressqueue { struct super_block *sb; atomic_t pending_bios; From 8043aaed1dad952f4f3d3c7554e802b241eb92b0 Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Wed, 7 Apr 2021 12:39:21 +0800 Subject: [PATCH 44/94] UPSTREAM: erofs: fix up inplace I/O pointer for big pcluster When picking up inplace I/O pages, it should be traversed in reverse order in aligned with the traversal order of file-backed online pages. Also, index should be updated together when preloading compressed pages. Previously, only page-sized pclustersize was supported so no problem at all. Also rename `compressedpages' to `icpage_ptr' to reflect its functionality. Link: https://lore.kernel.org/r/20210407043927.10623-5-xiang@kernel.org Acked-by: Chao Yu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: I752769d004c18f74636bcfdea767572daa6f7072 (cherry picked from commit 81382f5f5cb0c9c5694c19d36460f757a8c96841) Signed-off-by: Huang Jianan --- fs/erofs/zdata.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index 8b74d3268cc9..a17bae1e7ad6 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -204,7 +204,8 @@ struct z_erofs_collector { struct z_erofs_pcluster *pcl, *tailpcl; struct z_erofs_collection *cl; - struct page **compressedpages; + /* a pointer used to pick up inplace I/O pages */ + struct page **icpage_ptr; z_erofs_next_pcluster_t owned_head; enum z_erofs_collectmode mode; @@ -238,17 +239,19 @@ static void preload_compressed_pages(struct z_erofs_collector *clt, enum z_erofs_cache_alloctype type, struct list_head *pagepool) { - const struct z_erofs_pcluster *pcl = clt->pcl; - struct page **pages = clt->compressedpages; - pgoff_t index = pcl->obj.index + (pages - pcl->compressed_pages); + struct z_erofs_pcluster *pcl = clt->pcl; bool standalone = true; gfp_t gfp = (mapping_gfp_mask(mc) & ~__GFP_DIRECT_RECLAIM) | __GFP_NOMEMALLOC | __GFP_NORETRY | __GFP_NOWARN; + struct page **pages; + pgoff_t index; if (clt->mode < COLLECT_PRIMARY_FOLLOWED) return; - for (; pages < pcl->compressed_pages + pcl->pclusterpages; ++pages) { + pages = pcl->compressed_pages; + index = pcl->obj.index; + for (; index < pcl->obj.index + pcl->pclusterpages; ++index, ++pages) { struct page *page; compressed_page_t t; struct page *newpage = NULL; @@ -360,16 +363,14 @@ int erofs_try_to_free_cached_page(struct address_space *mapping, } /* page_type must be Z_EROFS_PAGE_TYPE_EXCLUSIVE */ -static inline bool z_erofs_try_inplace_io(struct z_erofs_collector *clt, - struct page *page) +static bool z_erofs_try_inplace_io(struct z_erofs_collector *clt, + struct page *page) { struct z_erofs_pcluster *const pcl = clt->pcl; - while (clt->compressedpages < - pcl->compressed_pages + pcl->pclusterpages) { - if (!cmpxchg(clt->compressedpages++, NULL, page)) + while (clt->icpage_ptr > pcl->compressed_pages) + if (!cmpxchg(--clt->icpage_ptr, NULL, page)) return true; - } return false; } @@ -579,9 +580,8 @@ static int z_erofs_collector_begin(struct z_erofs_collector *clt, z_erofs_pagevec_ctor_init(&clt->vector, Z_EROFS_NR_INLINE_PAGEVECS, clt->cl->pagevec, clt->cl->vcnt); - clt->compressedpages = clt->pcl->compressed_pages; - if (clt->mode <= COLLECT_PRIMARY) /* cannot do in-place I/O */ - clt->compressedpages += clt->pcl->pclusterpages; + /* since file-backed online pages are traversed in reverse order */ + clt->icpage_ptr = clt->pcl->compressed_pages + clt->pcl->pclusterpages; return 0; } From 95a1d5df840a7a1d904e8418bd0ec98ba6519761 Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Wed, 7 Apr 2021 12:39:22 +0800 Subject: [PATCH 45/94] UPSTREAM: erofs: add big physical cluster definition Big pcluster indicates the size of compressed data for each physical pcluster is no longer fixed as block size, but could be more than 1 block (more accurately, 1 logical pcluster) When big pcluster feature is enabled for head0/1, delta0 of the 1st non-head lcluster index will keep block count of this pcluster in lcluster size instead of 1. Or, the compressed size of pcluster should be 1 lcluster if pcluster has no non-head lcluster index. Also note that BIG_PCLUSTER feature reuses COMPR_CFGS feature since it depends on COMPR_CFGS and will be released together. Link: https://lore.kernel.org/r/20210407043927.10623-6-xiang@kernel.org Acked-by: Chao Yu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: Ibd33f2764f4420f370f9293ed325efdba9ea70a7 (cherry picked from commit 5404c33010cb8ee063c05376d4a2eba129872281) Signed-off-by: Huang Jianan --- fs/erofs/erofs_fs.h | 19 +++++++++++++++---- fs/erofs/internal.h | 1 + 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/fs/erofs/erofs_fs.h b/fs/erofs/erofs_fs.h index 76777673eb63..ecc3a0ea0bc4 100644 --- a/fs/erofs/erofs_fs.h +++ b/fs/erofs/erofs_fs.h @@ -19,6 +19,7 @@ */ #define EROFS_FEATURE_INCOMPAT_LZ4_0PADDING 0x00000001 #define EROFS_FEATURE_INCOMPAT_COMPR_CFGS 0x00000002 +#define EROFS_FEATURE_INCOMPAT_BIG_PCLUSTER 0x00000002 #define EROFS_ALL_FEATURE_INCOMPAT EROFS_FEATURE_INCOMPAT_LZ4_0PADDING #define EROFS_SB_EXTSLOT_SIZE 16 @@ -214,17 +215,20 @@ enum { /* 14 bytes (+ length field = 16 bytes) */ struct z_erofs_lz4_cfgs { __le16 max_distance; - u8 reserved[12]; + __le16 max_pclusterblks; + u8 reserved[10]; } __packed; /* * bit 0 : COMPACTED_2B indexes (0 - off; 1 - on) * e.g. for 4k logical cluster size, 4B if compacted 2B is off; * (4B) + 2B + (4B) if compacted 2B is on. + * bit 1 : HEAD1 big pcluster (0 - off; 1 - on) + * bit 2 : HEAD2 big pcluster (0 - off; 1 - on) */ -#define Z_EROFS_ADVISE_COMPACTED_2B_BIT 0 - -#define Z_EROFS_ADVISE_COMPACTED_2B (1 << Z_EROFS_ADVISE_COMPACTED_2B_BIT) +#define Z_EROFS_ADVISE_COMPACTED_2B 0x0001 +#define Z_EROFS_ADVISE_BIG_PCLUSTER_1 0x0002 +#define Z_EROFS_ADVISE_BIG_PCLUSTER_2 0x0004 struct z_erofs_map_header { __le32 h_reserved1; @@ -279,6 +283,13 @@ enum { #define Z_EROFS_VLE_DI_CLUSTER_TYPE_BITS 2 #define Z_EROFS_VLE_DI_CLUSTER_TYPE_BIT 0 +/* + * D0_CBLKCNT will be marked _only_ at the 1st non-head lcluster to store the + * compressed block count of a compressed extent (in logical clusters, aka. + * block count of a pcluster). + */ +#define Z_EROFS_VLE_DI_D0_CBLKCNT (1 << 11) + struct z_erofs_vle_decompressed_index { __le16 di_advise; /* where to decompress in the head cluster */ diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 3a25f588b818..10370274e821 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -230,6 +230,7 @@ static inline bool erofs_sb_has_##name(struct erofs_sb_info *sbi) \ EROFS_FEATURE_FUNCS(lz4_0padding, incompat, INCOMPAT_LZ4_0PADDING) EROFS_FEATURE_FUNCS(compr_cfgs, incompat, INCOMPAT_COMPR_CFGS) +EROFS_FEATURE_FUNCS(big_pcluster, incompat, INCOMPAT_BIG_PCLUSTER) EROFS_FEATURE_FUNCS(sb_chksum, compat, COMPAT_SB_CHKSUM) /* atomic flag definitions */ From d14993160141a746395ba856187ddb546001e8b6 Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Wed, 7 Apr 2021 12:39:23 +0800 Subject: [PATCH 46/94] UPSTREAM: erofs: adjust per-CPU buffers according to max_pclusterblks Adjust per-CPU buffers on demand since big pcluster definition is available. Also, bail out unsupported pcluster size according to Z_EROFS_PCLUSTER_MAX_SIZE. Link: https://lore.kernel.org/r/20210407043927.10623-7-xiang@kernel.org Acked-by: Chao Yu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: I86665be0519f328614d93aa24cb06043655576b9 (cherry picked from commit 4fea63f7d76e425965033938bab6488e48579e3f) Signed-off-by: Huang Jianan --- fs/erofs/decompressor.c | 20 ++++++++++++++++---- fs/erofs/internal.h | 2 ++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c index fb4838c0f0df..900de4725d35 100644 --- a/fs/erofs/decompressor.c +++ b/fs/erofs/decompressor.c @@ -32,6 +32,7 @@ int z_erofs_load_lz4_config(struct super_block *sb, struct erofs_super_block *dsb, struct z_erofs_lz4_cfgs *lz4, int size) { + struct erofs_sb_info *sbi = EROFS_SB(sb); u16 distance; if (lz4) { @@ -40,16 +41,27 @@ int z_erofs_load_lz4_config(struct super_block *sb, return -EINVAL; } distance = le16_to_cpu(lz4->max_distance); + + sbi->lz4.max_pclusterblks = le16_to_cpu(lz4->max_pclusterblks); + if (!sbi->lz4.max_pclusterblks) { + sbi->lz4.max_pclusterblks = 1; /* reserved case */ + } else if (sbi->lz4.max_pclusterblks > + Z_EROFS_PCLUSTER_MAX_SIZE / EROFS_BLKSIZ) { + erofs_err(sb, "too large lz4 pclusterblks %u", + sbi->lz4.max_pclusterblks); + return -EINVAL; + } else if (sbi->lz4.max_pclusterblks >= 2) { + erofs_info(sb, "EXPERIMENTAL big pcluster feature in use. Use at your own risk!"); + } } else { distance = le16_to_cpu(dsb->u1.lz4_max_distance); + sbi->lz4.max_pclusterblks = 1; } - EROFS_SB(sb)->lz4.max_distance_pages = distance ? + sbi->lz4.max_distance_pages = distance ? DIV_ROUND_UP(distance, PAGE_SIZE) + 1 : LZ4_MAX_DISTANCE_PAGES; - - /* TODO: use max pclusterblks after bigpcluster is enabled */ - return erofs_pcpubuf_growsize(1); + return erofs_pcpubuf_growsize(sbi->lz4.max_pclusterblks); } static int z_erofs_lz4_prepare_destpages(struct z_erofs_decompress_req *rq, diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 10370274e821..d13f017c8659 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -63,6 +63,8 @@ struct erofs_fs_context { struct erofs_sb_lz4_info { /* # of pages needed for EROFS lz4 rolling decompression */ u16 max_distance_pages; + /* maximum possible blocks for pclusters in the filesystem */ + u16 max_pclusterblks; }; struct erofs_sb_info { From 051d76b899bd2705d07c3ffad7f89d0c96eefbfa Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Wed, 7 Apr 2021 12:39:24 +0800 Subject: [PATCH 47/94] UPSTREAM: erofs: support parsing big pcluster compress indexes When INCOMPAT_BIG_PCLUSTER sb feature is enabled, legacy compress indexes will also have the same on-disk header compact indexes to keep per-file configurations instead of leaving it zeroed. If ADVISE_BIG_PCLUSTER is set for a file, CBLKCNT will be loaded for each pcluster in this file by parsing 1st non-head lcluster. Link: https://lore.kernel.org/r/20210407043927.10623-8-xiang@kernel.org Acked-by: Chao Yu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: I97b8d1cc54e057789d22f1cdfafc21ed6a69b149 (cherry picked from commit cec6e93beadfd145758af2c0854fcc2abb8170cb) Signed-off-by: Huang Jianan --- fs/erofs/zmap.c | 79 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 73 insertions(+), 6 deletions(-) diff --git a/fs/erofs/zmap.c b/fs/erofs/zmap.c index 7fd6bd843471..6c0c47f68b75 100644 --- a/fs/erofs/zmap.c +++ b/fs/erofs/zmap.c @@ -11,8 +11,10 @@ int z_erofs_fill_inode(struct inode *inode) { struct erofs_inode *const vi = EROFS_I(inode); + struct erofs_sb_info *sbi = EROFS_SB(inode->i_sb); - if (vi->datalayout == EROFS_INODE_FLAT_COMPRESSION_LEGACY) { + if (!erofs_sb_has_big_pcluster(sbi) && + vi->datalayout == EROFS_INODE_FLAT_COMPRESSION_LEGACY) { vi->z_advise = 0; vi->z_algorithmtype[0] = 0; vi->z_algorithmtype[1] = 0; @@ -49,7 +51,8 @@ static int z_erofs_fill_inode_lazy(struct inode *inode) if (test_bit(EROFS_I_Z_INITED_BIT, &vi->flags)) goto out_unlock; - DBG_BUGON(vi->datalayout == EROFS_INODE_FLAT_COMPRESSION_LEGACY); + DBG_BUGON(!erofs_sb_has_big_pcluster(EROFS_SB(sb)) && + vi->datalayout == EROFS_INODE_FLAT_COMPRESSION_LEGACY); pos = ALIGN(iloc(EROFS_SB(sb), vi->nid) + vi->inode_isize + vi->xattr_isize, 8); @@ -96,7 +99,7 @@ struct z_erofs_maprecorder { u8 type; u16 clusterofs; u16 delta[2]; - erofs_blk_t pblk; + erofs_blk_t pblk, compressedlcs; }; static int z_erofs_reload_indexes(struct z_erofs_maprecorder *m, @@ -159,6 +162,15 @@ static int legacy_load_cluster_from_disk(struct z_erofs_maprecorder *m, case Z_EROFS_VLE_CLUSTER_TYPE_NONHEAD: m->clusterofs = 1 << vi->z_logical_clusterbits; m->delta[0] = le16_to_cpu(di->di_u.delta[0]); + if (m->delta[0] & Z_EROFS_VLE_DI_D0_CBLKCNT) { + if (!(vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_1)) { + DBG_BUGON(1); + return -EFSCORRUPTED; + } + m->compressedlcs = m->delta[0] & + ~Z_EROFS_VLE_DI_D0_CBLKCNT; + m->delta[0] = 1; + } m->delta[1] = le16_to_cpu(di->di_u.delta[1]); break; case Z_EROFS_VLE_CLUSTER_TYPE_PLAIN: @@ -366,6 +378,58 @@ static int z_erofs_extent_lookback(struct z_erofs_maprecorder *m, return 0; } +static int z_erofs_get_extent_compressedlen(struct z_erofs_maprecorder *m, + unsigned int initial_lcn) +{ + struct erofs_inode *const vi = EROFS_I(m->inode); + struct erofs_map_blocks *const map = m->map; + const unsigned int lclusterbits = vi->z_logical_clusterbits; + unsigned long lcn; + int err; + + DBG_BUGON(m->type != Z_EROFS_VLE_CLUSTER_TYPE_PLAIN && + m->type != Z_EROFS_VLE_CLUSTER_TYPE_HEAD); + if (!(map->m_flags & EROFS_MAP_ZIPPED) || + !(vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_1)) { + map->m_plen = 1 << lclusterbits; + return 0; + } + + lcn = m->lcn + 1; + if (m->compressedlcs) + goto out; + if (lcn == initial_lcn) + goto err_bonus_cblkcnt; + + err = z_erofs_load_cluster_from_disk(m, lcn); + if (err) + return err; + + switch (m->type) { + case Z_EROFS_VLE_CLUSTER_TYPE_NONHEAD: + if (m->delta[0] != 1) + goto err_bonus_cblkcnt; + if (m->compressedlcs) + break; + fallthrough; + default: + erofs_err(m->inode->i_sb, + "cannot found CBLKCNT @ lcn %lu of nid %llu", + lcn, vi->nid); + DBG_BUGON(1); + return -EFSCORRUPTED; + } +out: + map->m_plen = m->compressedlcs << lclusterbits; + return 0; +err_bonus_cblkcnt: + erofs_err(m->inode->i_sb, + "bogus CBLKCNT @ lcn %lu of nid %llu", + lcn, vi->nid); + DBG_BUGON(1); + return -EFSCORRUPTED; +} + int z_erofs_map_blocks_iter(struct inode *inode, struct erofs_map_blocks *map, int flags) @@ -377,6 +441,7 @@ int z_erofs_map_blocks_iter(struct inode *inode, }; int err = 0; unsigned int lclusterbits, endoff; + unsigned long initial_lcn; unsigned long long ofs, end; trace_z_erofs_map_blocks_iter_enter(inode, map, flags); @@ -395,10 +460,10 @@ int z_erofs_map_blocks_iter(struct inode *inode, lclusterbits = vi->z_logical_clusterbits; ofs = map->m_la; - m.lcn = ofs >> lclusterbits; + initial_lcn = ofs >> lclusterbits; endoff = ofs & ((1 << lclusterbits) - 1); - err = z_erofs_load_cluster_from_disk(&m, m.lcn); + err = z_erofs_load_cluster_from_disk(&m, initial_lcn); if (err) goto unmap_out; @@ -442,10 +507,12 @@ int z_erofs_map_blocks_iter(struct inode *inode, } map->m_llen = end - map->m_la; - map->m_plen = 1 << lclusterbits; map->m_pa = blknr_to_addr(m.pblk); map->m_flags |= EROFS_MAP_MAPPED; + err = z_erofs_get_extent_compressedlen(&m, initial_lcn); + if (err) + goto out; unmap_out: if (m.kaddr) kunmap_atomic(m.kaddr); From d34cb6cdc04443d41698299c5b5c2395b2fbbee2 Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Wed, 7 Apr 2021 12:39:25 +0800 Subject: [PATCH 48/94] UPSTREAM: erofs: support parsing big pcluster compact indexes Different from non-compact indexes, several lclusters are packed as the compact form at once and an unique base blkaddr is stored for each pack, so each lcluster index would take less space on avarage (e.g. 2 bytes for COMPACT_2B.) btw, that is also why BIG_PCLUSTER switch should be consistent for compact head0/1. Prior to big pcluster, the size of all pclusters was 1 lcluster. Therefore, when a new HEAD lcluster was scanned, blkaddr would be bumped by 1 lcluster. However, that way doesn't work anymore for big pcluster since we actually don't know the compressed size of pclusters in advance (before reading CBLKCNT lcluster). So, instead, let blkaddr of each pack be the first pcluster blkaddr with a valid CBLKCNT, in detail, 1) if CBLKCNT starts at the pack, this first valid pcluster is itself, e.g. _____________________________________________________________ |_CBLKCNT0_|_NONHEAD_| .. |_HEAD_|_CBLKCNT1_| ... |_HEAD_| ... ^ = blkaddr base ^ += CBLKCNT0 ^ += CBLKCNT1 2) if CBLKCNT doesn't start at the pack, the first valid pcluster is the next pcluster, e.g. _________________________________________________________ | NONHEAD_| .. |_HEAD_|_CBLKCNT0_| ... |_HEAD_|_HEAD_| ... ^ = blkaddr base ^ += CBLKCNT0 ^ += 1 When a CBLKCNT is found, blkaddr will be increased by CBLKCNT lclusters, or a new HEAD is found immediately, bump blkaddr by 1 instead (see the picture above.) Also noted if CBLKCNT is the end of the pack, instead of storing delta1 (distance of the next HEAD lcluster) as normal NONHEADs, it still uses the compressed block count (delta0) since delta1 can be calculated indirectly but the block count can't. Adjust decoding logic to fit big pcluster compact indexes as well. Link: https://lore.kernel.org/r/20210407043927.10623-9-xiang@kernel.org Acked-by: Chao Yu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: I09d6bb4c9d390dc6169cb9dd4efbc7fd6b3be5d0 (cherry picked from commit b86269f43892316ef5a177d7180d09d101a46f22) Signed-off-by: Huang Jianan --- fs/erofs/zmap.c | 70 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 61 insertions(+), 9 deletions(-) diff --git a/fs/erofs/zmap.c b/fs/erofs/zmap.c index 6c0c47f68b75..e62d813756f2 100644 --- a/fs/erofs/zmap.c +++ b/fs/erofs/zmap.c @@ -77,6 +77,22 @@ static int z_erofs_fill_inode_lazy(struct inode *inode) } vi->z_logical_clusterbits = LOG_BLOCK_SIZE + (h->h_clusterbits & 7); + if (!erofs_sb_has_big_pcluster(EROFS_SB(sb)) && + vi->z_advise & (Z_EROFS_ADVISE_BIG_PCLUSTER_1 | + Z_EROFS_ADVISE_BIG_PCLUSTER_2)) { + erofs_err(sb, "per-inode big pcluster without sb feature for nid %llu", + vi->nid); + err = -EFSCORRUPTED; + goto unmap_done; + } + if (vi->datalayout == EROFS_INODE_FLAT_COMPRESSION && + !(vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_1) ^ + !(vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_2)) { + erofs_err(sb, "big pcluster head1/2 of compact indexes should be consistent for nid %llu", + vi->nid); + err = -EFSCORRUPTED; + goto unmap_done; + } /* paired with smp_mb() at the beginning of the function */ smp_mb(); set_bit(EROFS_I_Z_INITED_BIT, &vi->flags); @@ -207,6 +223,7 @@ static int unpack_compacted_index(struct z_erofs_maprecorder *m, unsigned int vcnt, base, lo, encodebits, nblk; int i; u8 *in, type; + bool big_pcluster; if (1 << amortizedshift == 4) vcnt = 2; @@ -215,6 +232,7 @@ static int unpack_compacted_index(struct z_erofs_maprecorder *m, else return -EOPNOTSUPP; + big_pcluster = vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_1; encodebits = ((vcnt << amortizedshift) - sizeof(__le32)) * 8 / vcnt; base = round_down(eofs, vcnt << amortizedshift); in = m->kaddr + base; @@ -226,7 +244,15 @@ static int unpack_compacted_index(struct z_erofs_maprecorder *m, m->type = type; if (type == Z_EROFS_VLE_CLUSTER_TYPE_NONHEAD) { m->clusterofs = 1 << lclusterbits; - if (i + 1 != vcnt) { + if (lo & Z_EROFS_VLE_DI_D0_CBLKCNT) { + if (!big_pcluster) { + DBG_BUGON(1); + return -EFSCORRUPTED; + } + m->compressedlcs = lo & ~Z_EROFS_VLE_DI_D0_CBLKCNT; + m->delta[0] = 1; + return 0; + } else if (i + 1 != (int)vcnt) { m->delta[0] = lo; return 0; } @@ -239,22 +265,48 @@ static int unpack_compacted_index(struct z_erofs_maprecorder *m, in, encodebits * (i - 1), &type); if (type != Z_EROFS_VLE_CLUSTER_TYPE_NONHEAD) lo = 0; + else if (lo & Z_EROFS_VLE_DI_D0_CBLKCNT) + lo = 1; m->delta[0] = lo + 1; return 0; } m->clusterofs = lo; m->delta[0] = 0; /* figout out blkaddr (pblk) for HEAD lclusters */ - nblk = 1; - while (i > 0) { - --i; - lo = decode_compactedbits(lclusterbits, lomask, - in, encodebits * i, &type); - if (type == Z_EROFS_VLE_CLUSTER_TYPE_NONHEAD) - i -= lo; + if (!big_pcluster) { + nblk = 1; + while (i > 0) { + --i; + lo = decode_compactedbits(lclusterbits, lomask, + in, encodebits * i, &type); + if (type == Z_EROFS_VLE_CLUSTER_TYPE_NONHEAD) + i -= lo; - if (i >= 0) + if (i >= 0) + ++nblk; + } + } else { + nblk = 0; + while (i > 0) { + --i; + lo = decode_compactedbits(lclusterbits, lomask, + in, encodebits * i, &type); + if (type == Z_EROFS_VLE_CLUSTER_TYPE_NONHEAD) { + if (lo & Z_EROFS_VLE_DI_D0_CBLKCNT) { + --i; + nblk += lo & ~Z_EROFS_VLE_DI_D0_CBLKCNT; + continue; + } + /* bigpcluster shouldn't have plain d0 == 1 */ + if (lo <= 1) { + DBG_BUGON(1); + return -EFSCORRUPTED; + } + i -= lo - 2; + continue; + } ++nblk; + } } in += (vcnt << amortizedshift) - sizeof(__le32); m->pblk = le32_to_cpu(*(__le32 *)in) + nblk; From ed0607cc5256244e022933b1fcbd2d8afefdb8c7 Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Wed, 7 Apr 2021 12:39:26 +0800 Subject: [PATCH 49/94] UPSTREAM: erofs: support decompress big pcluster for lz4 backend Prior to big pcluster, there was only one compressed page so it'd easy to map this. However, when big pcluster is enabled, more work needs to be done to handle multiple compressed pages. In detail, - (maptype 0) if there is only one compressed page + no need to copy inplace I/O, just map it directly what we did before; - (maptype 1) if there are more compressed pages + no need to copy inplace I/O, vmap such compressed pages instead; - (maptype 2) if inplace I/O needs to be copied, use per-CPU buffers for decompression then. Another thing is how to detect inplace decompression is feasable or not (it's still quite easy for non big pclusters), apart from the inplace margin calculation, inplace I/O page reusing order is also needed to be considered for each compressed page. Currently, if the compressed page is the xth page, it shouldn't be reused as [0 ... nrpages_out - nrpages_in + x], otherwise a full copy will be triggered. Although there are some extra optimization ideas for this, I'd like to make big pcluster work correctly first and obviously it can be further optimized later since it has nothing with the on-disk format at all. Link: https://lore.kernel.org/r/20210407043927.10623-10-xiang@kernel.org Acked-by: Chao Yu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: I8e8b90bd0a401850ea81d895dc55e5d8a2772ed7 (cherry picked from commit 598162d050801e556750defff4ddab499e5d76ed) Signed-off-by: Huang Jianan --- fs/erofs/decompressor.c | 220 ++++++++++++++++++++++------------------ fs/erofs/internal.h | 15 +++ 2 files changed, 139 insertions(+), 96 deletions(-) diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c index 900de4725d35..88e33addf229 100644 --- a/fs/erofs/decompressor.c +++ b/fs/erofs/decompressor.c @@ -120,44 +120,85 @@ static int z_erofs_lz4_prepare_destpages(struct z_erofs_decompress_req *rq, return kaddr ? 1 : 0; } -static void *generic_copy_inplace_data(struct z_erofs_decompress_req *rq, - u8 *src, unsigned int pageofs_in) +static void *z_erofs_handle_inplace_io(struct z_erofs_decompress_req *rq, + void *inpage, unsigned int *inputmargin, int *maptype, + bool support_0padding) { - /* - * if in-place decompression is ongoing, those decompressed - * pages should be copied in order to avoid being overlapped. - */ - struct page **in = rq->in; - u8 *const tmp = erofs_get_pcpubuf(1); - u8 *tmpp = tmp; - unsigned int inlen = rq->inputsize - pageofs_in; - unsigned int count = min_t(uint, inlen, PAGE_SIZE - pageofs_in); + unsigned int nrpages_in, nrpages_out; + unsigned int ofull, oend, inputsize, total, i, j; + struct page **in; + void *src, *tmp; - while (tmpp < tmp + inlen) { - if (!src) - src = kmap_atomic(*in); - memcpy(tmpp, src + pageofs_in, count); - kunmap_atomic(src); - src = NULL; - tmpp += count; - pageofs_in = 0; - count = PAGE_SIZE; - ++in; + inputsize = rq->inputsize; + nrpages_in = PAGE_ALIGN(inputsize) >> PAGE_SHIFT; + oend = rq->pageofs_out + rq->outputsize; + ofull = PAGE_ALIGN(oend); + nrpages_out = ofull >> PAGE_SHIFT; + + if (rq->inplace_io) { + if (rq->partial_decoding || !support_0padding || + ofull - oend < LZ4_DECOMPRESS_INPLACE_MARGIN(inputsize)) + goto docopy; + + for (i = 0; i < nrpages_in; ++i) { + DBG_BUGON(rq->in[i] == NULL); + for (j = 0; j < nrpages_out - nrpages_in + i; ++j) + if (rq->out[j] == rq->in[i]) + goto docopy; + } } - return tmp; + + if (nrpages_in <= 1) { + *maptype = 0; + return inpage; + } + kunmap_atomic(inpage); + might_sleep(); + src = erofs_vm_map_ram(rq->in, nrpages_in); + if (!src) + return ERR_PTR(-ENOMEM); + *maptype = 1; + return src; + +docopy: + /* Or copy compressed data which can be overlapped to per-CPU buffer */ + in = rq->in; + src = erofs_get_pcpubuf(nrpages_in); + if (!src) { + DBG_BUGON(1); + kunmap_atomic(inpage); + return ERR_PTR(-EFAULT); + } + + tmp = src; + total = rq->inputsize; + while (total) { + unsigned int page_copycnt = + min_t(unsigned int, total, PAGE_SIZE - *inputmargin); + + if (!inpage) + inpage = kmap_atomic(*in); + memcpy(tmp, inpage + *inputmargin, page_copycnt); + kunmap_atomic(inpage); + inpage = NULL; + tmp += page_copycnt; + total -= page_copycnt; + ++in; + *inputmargin = 0; + } + *maptype = 2; + return src; } static int z_erofs_lz4_decompress(struct z_erofs_decompress_req *rq, u8 *out) { - unsigned int inputmargin, inlen; - u8 *src; - bool copied, support_0padding; - int ret; + unsigned int inputmargin; + u8 *headpage, *src; + bool support_0padding; + int ret, maptype; - if (rq->inputsize > PAGE_SIZE) - return -EOPNOTSUPP; - - src = kmap_atomic(*rq->in); + DBG_BUGON(*rq->in == NULL); + headpage = kmap_atomic(*rq->in); inputmargin = 0; support_0padding = false; @@ -165,50 +206,37 @@ static int z_erofs_lz4_decompress(struct z_erofs_decompress_req *rq, u8 *out) if (erofs_sb_has_lz4_0padding(EROFS_SB(rq->sb))) { support_0padding = true; - while (!src[inputmargin & ~PAGE_MASK]) + while (!headpage[inputmargin & ~PAGE_MASK]) if (!(++inputmargin & ~PAGE_MASK)) break; if (inputmargin >= rq->inputsize) { - kunmap_atomic(src); + kunmap_atomic(headpage); return -EIO; } } - copied = false; - inlen = rq->inputsize - inputmargin; - if (rq->inplace_io) { - const uint oend = (rq->pageofs_out + - rq->outputsize) & ~PAGE_MASK; - const uint nr = PAGE_ALIGN(rq->pageofs_out + - rq->outputsize) >> PAGE_SHIFT; - - if (rq->partial_decoding || !support_0padding || - rq->out[nr - 1] != rq->in[0] || - rq->inputsize - oend < - LZ4_DECOMPRESS_INPLACE_MARGIN(inlen)) { - src = generic_copy_inplace_data(rq, src, inputmargin); - inputmargin = 0; - copied = true; - } - } + rq->inputsize -= inputmargin; + src = z_erofs_handle_inplace_io(rq, headpage, &inputmargin, &maptype, + support_0padding); + if (IS_ERR(src)) + return PTR_ERR(src); /* legacy format could compress extra data in a pcluster. */ if (rq->partial_decoding || !support_0padding) ret = LZ4_decompress_safe_partial(src + inputmargin, out, - inlen, rq->outputsize, - rq->outputsize); + rq->inputsize, rq->outputsize, rq->outputsize); else ret = LZ4_decompress_safe(src + inputmargin, out, - inlen, rq->outputsize); + rq->inputsize, rq->outputsize); if (ret != rq->outputsize) { erofs_err(rq->sb, "failed to decompress %d in[%u, %u] out[%u]", - ret, inlen, inputmargin, rq->outputsize); + ret, rq->inputsize, inputmargin, rq->outputsize); WARN_ON(1); print_hex_dump(KERN_DEBUG, "[ in]: ", DUMP_PREFIX_OFFSET, - 16, 1, src + inputmargin, inlen, true); + 16, 1, src + inputmargin, rq->inputsize, true); print_hex_dump(KERN_DEBUG, "[out]: ", DUMP_PREFIX_OFFSET, 16, 1, out, rq->outputsize, true); @@ -217,10 +245,16 @@ static int z_erofs_lz4_decompress(struct z_erofs_decompress_req *rq, u8 *out) ret = -EIO; } - if (copied) - erofs_put_pcpubuf(src); - else + if (maptype == 0) { kunmap_atomic(src); + } else if (maptype == 1) { + vm_unmap_ram(src, PAGE_ALIGN(rq->inputsize) >> PAGE_SHIFT); + } else if (maptype == 2) { + erofs_put_pcpubuf(src); + } else { + DBG_BUGON(1); + return -EFAULT; + } return ret; } @@ -270,57 +304,51 @@ static int z_erofs_decompress_generic(struct z_erofs_decompress_req *rq, const struct z_erofs_decompressor *alg = decompressors + rq->alg; unsigned int dst_maptype; void *dst; - int ret, i; + int ret; - if (nrpages_out == 1 && !rq->inplace_io) { - DBG_BUGON(!*rq->out); - dst = kmap_atomic(*rq->out); - dst_maptype = 0; - goto dstmap_out; - } - - /* - * For the case of small output size (especially much less - * than PAGE_SIZE), memcpy the decompressed data rather than - * compressed data is preferred. - */ - if (rq->outputsize <= PAGE_SIZE * 7 / 8) { - dst = erofs_get_pcpubuf(1); - if (IS_ERR(dst)) - return PTR_ERR(dst); - - rq->inplace_io = false; - ret = alg->decompress(rq, dst); - if (!ret) - copy_from_pcpubuf(rq->out, dst, rq->pageofs_out, - rq->outputsize); - - erofs_put_pcpubuf(dst); - return ret; + /* two optimized fast paths only for non bigpcluster cases yet */ + if (rq->inputsize <= PAGE_SIZE) { + if (nrpages_out == 1 && !rq->inplace_io) { + DBG_BUGON(!*rq->out); + dst = kmap_atomic(*rq->out); + dst_maptype = 0; + goto dstmap_out; + } + + /* + * For the case of small output size (especially much less + * than PAGE_SIZE), memcpy the decompressed data rather than + * compressed data is preferred. + */ + if (rq->outputsize <= PAGE_SIZE * 7 / 8) { + dst = erofs_get_pcpubuf(1); + if (IS_ERR(dst)) + return PTR_ERR(dst); + + rq->inplace_io = false; + ret = alg->decompress(rq, dst); + if (!ret) + copy_from_pcpubuf(rq->out, dst, rq->pageofs_out, + rq->outputsize); + + erofs_put_pcpubuf(dst); + return ret; + } } + /* general decoding path which can be used for all cases */ ret = alg->prepare_destpages(rq, pagepool); - if (ret < 0) { + if (ret < 0) return ret; - } else if (ret) { + if (ret) { dst = page_address(*rq->out); dst_maptype = 1; goto dstmap_out; } - i = 0; - while (1) { - dst = vm_map_ram(rq->out, nrpages_out, -1); - - /* retry two more times (totally 3 times) */ - if (dst || ++i >= 3) - break; - vm_unmap_aliases(); - } - + dst = erofs_vm_map_ram(rq->out, nrpages_out); if (!dst) return -ENOMEM; - dst_maptype = 2; dstmap_out: diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index d13f017c8659..e2120c740be9 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -401,6 +401,21 @@ int erofs_namei(struct inode *dir, struct qstr *name, /* dir.c */ extern const struct file_operations erofs_dir_fops; +static inline void *erofs_vm_map_ram(struct page **pages, unsigned int count) +{ + int retried = 0; + + while (1) { + void *p = vm_map_ram(pages, count, -1); + + /* retry two more times (totally 3 times) */ + if (p || ++retried >= 3) + return p; + vm_unmap_aliases(); + } + return NULL; +} + /* pcpubuf.c */ void *erofs_get_pcpubuf(unsigned int requiredpages); void erofs_put_pcpubuf(void *ptr); From e085d3f0d0dc8d22ee5dc60f9a28e6de0a2523a9 Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Wed, 7 Apr 2021 12:39:27 +0800 Subject: [PATCH 50/94] UPSTREAM: erofs: enable big pcluster feature Enable COMPR_CFGS and BIG_PCLUSTER since the implementations are all settled properly. Link: https://lore.kernel.org/r/20210407043927.10623-11-xiang@kernel.org Acked-by: Chao Yu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: I85a9045c146b6877eb371904e82d0481e21bbb75 (cherry picked from commit 8e6c8fa9f2e95c88a642521a5da19a8e31748846) Signed-off-by: Huang Jianan --- fs/erofs/erofs_fs.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fs/erofs/erofs_fs.h b/fs/erofs/erofs_fs.h index ecc3a0ea0bc4..8739d3adf51f 100644 --- a/fs/erofs/erofs_fs.h +++ b/fs/erofs/erofs_fs.h @@ -20,7 +20,10 @@ #define EROFS_FEATURE_INCOMPAT_LZ4_0PADDING 0x00000001 #define EROFS_FEATURE_INCOMPAT_COMPR_CFGS 0x00000002 #define EROFS_FEATURE_INCOMPAT_BIG_PCLUSTER 0x00000002 -#define EROFS_ALL_FEATURE_INCOMPAT EROFS_FEATURE_INCOMPAT_LZ4_0PADDING +#define EROFS_ALL_FEATURE_INCOMPAT \ + (EROFS_FEATURE_INCOMPAT_LZ4_0PADDING | \ + EROFS_FEATURE_INCOMPAT_COMPR_CFGS | \ + EROFS_FEATURE_INCOMPAT_BIG_PCLUSTER) #define EROFS_SB_EXTSLOT_SIZE 16 From dcd77f0b74532557af58f7cb73f8f987060ef00c Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Mon, 10 May 2021 14:47:15 +0800 Subject: [PATCH 51/94] UPSTREAM: erofs: fix 1 lcluster-sized pcluster for big pcluster If the 1st NONHEAD lcluster of a pcluster isn't CBLKCNT lcluster type rather than a HEAD or PLAIN type instead, which means its pclustersize _must_ be 1 lcluster (since its uncompressed size < 2 lclusters), as illustrated below: HEAD HEAD / PLAIN lcluster type ____________ ____________ |_:__________|_________:__| file data (uncompressed) . . .____________. |____________| pcluster data (compressed) Such on-disk case was explained before [1] but missed to be handled properly in the runtime implementation. It can be observed if manually generating 1 lcluster-sized pcluster with 2 lclusters (thus CBLKCNT doesn't exist.) Let's fix it now. [1] https://lore.kernel.org/r/20210407043927.10623-1-xiang@kernel.org Link: https://lore.kernel.org/r/20210510064715.29123-1-xiang@kernel.org Fixes: cec6e93beadf ("erofs: support parsing big pcluster compress indexes") Reviewed-by: Chao Yu Signed-off-by: Gao Xiang Bug: 201372112 Change-Id: I7e46baa993790f8908287ac36e19d32e536116db (cherry picked from commit 0852b6ca941ef3ff75076e85738877bd3271e1cd) Signed-off-by: Huang Jianan --- fs/erofs/zmap.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/fs/erofs/zmap.c b/fs/erofs/zmap.c index e62d813756f2..efaf32596b97 100644 --- a/fs/erofs/zmap.c +++ b/fs/erofs/zmap.c @@ -450,14 +450,31 @@ static int z_erofs_get_extent_compressedlen(struct z_erofs_maprecorder *m, lcn = m->lcn + 1; if (m->compressedlcs) goto out; - if (lcn == initial_lcn) - goto err_bonus_cblkcnt; err = z_erofs_load_cluster_from_disk(m, lcn); if (err) return err; + /* + * If the 1st NONHEAD lcluster has already been handled initially w/o + * valid compressedlcs, which means at least it mustn't be CBLKCNT, or + * an internal implemenatation error is detected. + * + * The following code can also handle it properly anyway, but let's + * BUG_ON in the debugging mode only for developers to notice that. + */ + DBG_BUGON(lcn == initial_lcn && + m->type == Z_EROFS_VLE_CLUSTER_TYPE_NONHEAD); + switch (m->type) { + case Z_EROFS_VLE_CLUSTER_TYPE_PLAIN: + case Z_EROFS_VLE_CLUSTER_TYPE_HEAD: + /* + * if the 1st NONHEAD lcluster is actually PLAIN or HEAD type + * rather than CBLKCNT, it's a 1 lcluster-sized pcluster. + */ + m->compressedlcs = 1; + break; case Z_EROFS_VLE_CLUSTER_TYPE_NONHEAD: if (m->delta[0] != 1) goto err_bonus_cblkcnt; From 477cd8fd7843d32467e7e692af5982ec6af39071 Mon Sep 17 00:00:00 2001 From: huangqiujun Date: Mon, 27 Sep 2021 11:36:20 +0800 Subject: [PATCH 52/94] ANDROID: GKI: Update symbols to symbol list Update symbols to symbol list externed by oem modules. Leaf changes summary: 18 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 13 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 5 Added variables 13 Added functions: [A] 'function int __traceiter_android_vh_kmalloc_slab(void*, unsigned int, gfp_t, kmem_cache**)' [A] 'function int __traceiter_android_vh_save_track_hash(void*, bool, unsigned long int)' [A] 'function int __traceiter_android_vh_save_vmalloc_stack(void*, unsigned long int, vm_struct*)' [A] 'function int __traceiter_android_vh_show_stack_hash(void*, seq_file*, vm_struct*)' [A] 'function void cpufreq_update_limits(unsigned int)' [A] 'function bool inode_owner_or_capable(const inode*)' [A] 'function int inode_permission(inode*, int)' [A] 'function void on_each_cpu_cond(smp_cond_func_t, smp_call_func_t, void*, bool)' [A] 'function void pm_get_active_wakeup_sources(char*, size_t)' [A] 'function int rtc_read_alarm(rtc_device*, rtc_wkalrm*)' [A] 'function int rtc_set_alarm(rtc_device*, rtc_wkalrm*)' [A] 'function u8 sdio_writeb_readb(sdio_func*, u8, unsigned int, int*)' [A] 'function unsigned long int timespec64_to_jiffies(const timespec64*)' 5 Added variables: [A] 'tracepoint __tracepoint_android_vh_kmalloc_slab' [A] 'tracepoint __tracepoint_android_vh_save_track_hash' [A] 'tracepoint __tracepoint_android_vh_save_vmalloc_stack' [A] 'tracepoint __tracepoint_android_vh_show_stack_hash' [A] 'static_key_false memcg_kmem_enabled_key' Bug: 193384408 Change-Id: Iafe49d5a0ca39542d7f109e79f496346009ac7b7 Signed-off-by: huangqiujun --- android/abi_gki_aarch64.xml | 102 +++ android/abi_gki_aarch64_oplus | 1157 ++++++++++++++++++++++++++++++++- 2 files changed, 1258 insertions(+), 1 deletion(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index b4348c9d30b9..3717a976479a 100755 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -413,6 +413,7 @@ + @@ -439,6 +440,8 @@ + + @@ -460,6 +463,7 @@ + @@ -1046,6 +1050,7 @@ + @@ -2534,6 +2539,8 @@ + + @@ -3306,6 +3313,7 @@ + @@ -3601,6 +3609,7 @@ + @@ -3974,7 +3983,9 @@ + + @@ -4104,6 +4115,7 @@ + @@ -4647,6 +4659,7 @@ + @@ -5532,6 +5545,7 @@ + @@ -5561,6 +5575,8 @@ + + @@ -5583,6 +5599,7 @@ + @@ -5752,6 +5769,7 @@ + @@ -12085,6 +12103,11 @@ + + + + + @@ -20245,6 +20268,7 @@ + @@ -40180,6 +40204,7 @@ + @@ -56075,6 +56100,7 @@ + @@ -112861,6 +112887,13 @@ + + + + + + + @@ -113020,6 +113053,18 @@ + + + + + + + + + + + + @@ -113144,6 +113189,12 @@ + + + + + + @@ -113812,6 +113863,7 @@ + @@ -113841,6 +113893,8 @@ + + @@ -113863,6 +113917,7 @@ + @@ -116633,6 +116688,10 @@ + + + + @@ -124458,6 +124517,15 @@ + + + + + + + + + @@ -126397,6 +126465,7 @@ + @@ -128391,6 +128460,13 @@ + + + + + + + @@ -129903,6 +129979,11 @@ + + + + + @@ -131751,11 +131832,21 @@ + + + + + + + + + + @@ -132391,6 +132482,13 @@ + + + + + + + @@ -135273,6 +135371,10 @@ + + + + diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index 263aa6fcf46a..a0f221271a40 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -1,18 +1,30 @@ -[abi_symbol_list] +[abi_symbol_list] + access_process_vm activate_task add_cpu add_device_randomness add_memory add_memory_subsection + add_taint add_timer add_uevent_var add_wait_queue + adjust_managed_page_count + alarm_cancel + alarm_init + alarm_start + alarm_start_relative + alarm_try_to_cancel alloc_anon_inode alloc_chrdev_region __alloc_disk_node + alloc_etherdev_mqs alloc_io_pgtable_ops + alloc_netdev_mqs + alloc_pages_exact __alloc_pages_nodemask __alloc_percpu + __alloc_percpu_gfp __alloc_skb alloc_skb_with_frags alloc_workqueue @@ -22,7 +34,10 @@ android_debug_per_cpu_symbol android_debug_symbol android_rvh_probe_register + anon_inode_getfd anon_inode_getfile + arc4_crypt + arc4_setkey __arch_copy_from_user __arch_copy_in_user __arch_copy_to_user @@ -32,29 +47,47 @@ argv_split arm64_const_caps_ready arm64_use_ng_mappings + __arm_smccc_hvc __arm_smccc_smc + arp_tbl + async_schedule_node atomic_notifier_call_chain atomic_notifier_chain_register atomic_notifier_chain_unregister autoremove_wake_function available_idle_cpu + bcmp bdget_disk bdput + bio_add_pc_page + bio_alloc_bioset bio_endio + bio_put + bio_reset bitmap_allocate_region __bitmap_andnot __bitmap_clear + bitmap_find_free_region bitmap_find_next_zero_area_off + bitmap_free + bitmap_from_arr32 __bitmap_or bitmap_parselist_user bitmap_print_to_pagebuf bitmap_release_region __bitmap_set + bitmap_to_arr32 + __bitmap_weight + bitmap_zalloc blk_alloc_queue blk_cleanup_queue + blk_execute_rq blk_execute_rq_nowait blk_get_request + blk_mq_free_request blk_mq_rq_cpu + blk_mq_sched_mark_restart_hctx + blk_mq_start_request blk_put_request blk_queue_flag_clear blk_queue_flag_set @@ -64,6 +97,8 @@ blk_queue_max_discard_sectors blk_queue_max_write_zeroes_sectors blk_queue_physical_block_size + blk_rq_append_bio + blk_rq_map_kern blk_rq_map_user blk_rq_map_user_iov blk_rq_unmap_user @@ -87,6 +122,7 @@ bus_register bus_set_iommu bus_unregister + call_rcu cancel_delayed_work cancel_delayed_work_sync cancel_work_sync @@ -121,9 +157,11 @@ clk_bulk_unprepare __clk_determine_rate clk_disable + clk_divider_ops clk_enable clk_fixed_factor_ops clk_fixed_rate_ops + clk_gate_ops clk_get __clk_get_hw __clk_get_name @@ -142,15 +180,23 @@ clk_hw_unregister __clk_is_enabled __clk_mux_determine_rate_closest + clk_mux_ops clk_notifier_register clk_notifier_unregister clk_prepare clk_put + clk_register + clk_register_composite + clk_register_divider_table + clk_register_fixed_factor + clk_register_fixed_rate clk_round_rate clk_set_parent clk_set_rate clk_sync_state clk_unprepare + clocks_calc_mult_shift + __close_fd cma_alloc cma_get_name cma_release @@ -160,11 +206,13 @@ complete_all completion_done component_add + component_add_typed component_bind_all component_del component_master_add_with_match component_master_del component_match_add_release + component_match_add_typed component_unbind_all config_ep_by_speed configfs_register_subsystem @@ -173,16 +221,22 @@ config_group_init_type_name config_item_get config_item_put + console_drivers console_printk console_stop console_suspend_enabled + console_unlock __const_udelay consume_skb contig_page_data _copy_from_iter _copy_from_iter_full + copy_from_kernel_nofault + _copy_to_iter __cpu_active_mask + cpu_all_bits cpu_bit_bitmap + cpufreq_add_update_util_hook cpufreq_cooling_unregister cpufreq_cpu_get cpufreq_cpu_get_raw @@ -194,15 +248,24 @@ cpufreq_enable_fast_switch cpufreq_freq_attr_scaling_available_freqs cpufreq_freq_attr_scaling_boost_freqs + cpufreq_frequency_table_get_index + cpufreq_generic_attr cpufreq_generic_frequency_table_verify cpufreq_get_policy + cpufreq_policy_transition_delay_us cpufreq_quick_get cpufreq_register_driver cpufreq_register_governor cpufreq_register_notifier + cpufreq_remove_update_util_hook cpufreq_table_index_unsorted + cpufreq_this_cpu_can_update cpufreq_unregister_driver + cpufreq_unregister_governor cpufreq_unregister_notifier + cpufreq_update_limits + cpu_hotplug_disable + cpu_hotplug_enable __cpuhp_remove_state __cpuhp_setup_state __cpuhp_setup_state_cpuslocked @@ -210,8 +273,12 @@ __cpuhp_state_remove_instance cpu_hwcap_keys cpu_hwcaps + cpuidle_driver_state_disabled + cpuidle_get_driver cpuidle_governor_latency_req + cpuidle_pause_and_lock cpuidle_register_governor + cpuidle_resume_and_unlock cpu_irqtime cpu_latency_qos_add_request cpu_latency_qos_remove_request @@ -219,6 +286,7 @@ cpu_latency_qos_update_request cpu_maps_update_begin cpu_maps_update_done + cpumask_any_but cpumask_next cpumask_next_and cpu_number @@ -233,33 +301,57 @@ cpus_read_unlock cpu_subsys cpu_topology + crc32_be crc32_le crc8 crc8_populate_msb + crypto_aead_decrypt + crypto_aead_encrypt + crypto_aead_setauthsize + crypto_aead_setkey + crypto_alloc_aead crypto_alloc_base crypto_alloc_shash + crypto_alloc_skcipher crypto_comp_compress crypto_comp_decompress crypto_destroy_tfm crypto_has_alg + __crypto_memneq crypto_register_alg crypto_register_rngs crypto_register_scomp crypto_shash_digest + crypto_shash_final + crypto_shash_finup + crypto_shash_setkey + crypto_shash_update + crypto_skcipher_decrypt + crypto_skcipher_encrypt + crypto_skcipher_setkey crypto_unregister_alg crypto_unregister_rngs crypto_unregister_scomp + __crypto_xor css_next_child _ctype + dapm_clock_event + dapm_kcontrol_get_value + dapm_regulator_event datagram_poll deactivate_task debugfs_attr_read debugfs_attr_write + debugfs_create_blob debugfs_create_bool + debugfs_create_devm_seqfile debugfs_create_dir debugfs_create_file debugfs_create_file_unsafe + debugfs_create_regset32 + debugfs_create_symlink debugfs_create_u32 + debugfs_create_u64 debugfs_create_u8 debugfs_create_x32 debugfs_create_x8 @@ -267,6 +359,7 @@ debugfs_file_put debugfs_lookup debugfs_remove + debugfs_rename dec_zone_page_state default_llseek deferred_free @@ -276,35 +369,56 @@ del_timer_sync desc_to_gpio destroy_workqueue + dev_alloc_name + dev_base_lock + dev_change_net_namespace + dev_close dev_coredumpv _dev_crit dev_driver_string + _dev_emerg _dev_err dev_err_probe + dev_fetch_sw_netstats devfreq_add_device devfreq_add_governor devfreq_cooling_unregister devfreq_get_devfreq_by_node + devfreq_get_devfreq_by_phandle + devfreq_monitor_resume + devfreq_monitor_start + devfreq_monitor_stop + devfreq_monitor_suspend + devfreq_recommended_opp devfreq_remove_device devfreq_remove_governor devfreq_resume_device devfreq_suspend_device + devfreq_update_interval dev_fwnode + __dev_get_by_index + dev_get_by_index dev_get_by_name dev_get_regmap + dev_get_stats device_add device_add_disk device_add_groups device_create + device_create_bin_file device_create_file + device_create_with_groups device_del device_destroy device_find_child device_for_each_child + device_get_child_node_count device_get_match_data + device_get_next_child_node device_initialize device_init_wakeup device_link_add + device_link_remove device_match_fwnode device_match_name device_property_present @@ -312,32 +426,56 @@ device_property_read_u16_array device_property_read_u32_array device_register + device_remove_bin_file device_remove_file + device_rename + device_set_of_node_from_dev + device_set_wakeup_capable + device_show_bool device_show_int + device_store_bool device_store_int device_unregister device_wakeup_disable device_wakeup_enable _dev_info + __dev_kfree_skb_any devm_add_action + __devm_alloc_percpu devm_blk_ksm_init + devm_clk_bulk_get devm_clk_bulk_get_all + devm_clk_bulk_get_optional devm_clk_get + devm_clk_get_optional devm_clk_hw_register devm_clk_put devm_clk_register + devm_devfreq_add_device + devm_devfreq_register_notifier + devm_devfreq_remove_device + devm_devfreq_unregister_notifier devm_device_add_group devm_device_remove_group devm_extcon_dev_allocate devm_extcon_dev_register devm_extcon_dev_unregister + devm_extcon_register_notifier devm_free_irq + devm_fwnode_pwm_get + devm_gpiochip_add_data_with_key + devm_gpiod_get + devm_gpiod_get_index devm_gpiod_get_optional + devm_gpiod_put devm_gpio_free devm_gpio_request devm_gpio_request_one + devm_hwrng_register devm_hwspin_lock_register + devm_i2c_new_dummy_device devm_iio_channel_get + devm_iio_channel_get_all devm_iio_device_alloc __devm_iio_device_register devm_input_allocate_device @@ -351,11 +489,16 @@ devm_kmemdup devm_kstrdup devm_led_classdev_register_ext + devm_led_classdev_unregister + devm_mbox_controller_register + devm_memremap + devm_mfd_add_devices devm_nvmem_cell_get devm_nvmem_device_get devm_nvmem_register devm_of_clk_add_hw_provider devm_of_icc_get + devm_of_phy_get_by_index __devm_of_phy_provider_register devm_of_platform_populate devm_of_pwm_get @@ -365,29 +508,40 @@ devm_pinctrl_get devm_pinctrl_put devm_pinctrl_register + devm_pinctrl_register_and_init + devm_platform_get_and_ioremap_resource devm_platform_ioremap_resource devm_platform_ioremap_resource_byname + devm_power_supply_get_by_phandle devm_power_supply_register + devm_regmap_add_irq_chip devm_regmap_field_alloc __devm_regmap_init __devm_regmap_init_i2c __devm_regmap_init_mmio_clk devm_regulator_bulk_get devm_regulator_get + devm_regulator_get_exclusive devm_regulator_get_optional devm_regulator_put devm_regulator_register devm_regulator_register_notifier + devm_regulator_unregister_notifier devm_request_any_context_irq devm_request_threaded_irq __devm_reset_control_get devm_reset_controller_register devm_rtc_allocate_device + devm_snd_soc_register_card + devm_snd_soc_register_component + devm_spi_register_controller devm_thermal_of_cooling_device_register devm_thermal_zone_of_sensor_register devm_usb_get_phy_by_node + devm_watchdog_register_device _dev_notice dev_pm_domain_attach + dev_pm_domain_attach_by_id dev_pm_domain_attach_by_name dev_pm_domain_detach dev_pm_genpd_add_notifier @@ -396,16 +550,22 @@ dev_pm_genpd_set_performance_state dev_pm_opp_add dev_pm_opp_find_freq_ceil + dev_pm_opp_find_freq_ceil_by_volt dev_pm_opp_find_freq_exact dev_pm_opp_find_freq_floor + dev_pm_opp_get_freq + dev_pm_opp_get_level dev_pm_opp_get_opp_count + dev_pm_opp_get_opp_table dev_pm_opp_get_voltage dev_pm_opp_of_add_table + dev_pm_opp_of_add_table_indexed dev_pm_opp_of_find_icc_paths dev_pm_opp_of_register_em dev_pm_opp_of_remove_table dev_pm_opp_put dev_pm_opp_put_clkname + dev_pm_opp_put_opp_table dev_pm_opp_remove_all_dynamic dev_pm_opp_set_clkname dev_pm_opp_set_rate @@ -416,6 +576,8 @@ dev_pm_qos_remove_notifier dev_pm_qos_remove_request dev_pm_qos_update_request + dev_printk + dev_queue_xmit devres_add devres_alloc_node devres_destroy @@ -446,6 +608,10 @@ dma_buf_fd dma_buf_get dma_buf_map_attachment + dmabuf_page_pool_alloc + dmabuf_page_pool_create + dmabuf_page_pool_destroy + dmabuf_page_pool_free dma_buf_put dma_buf_unmap_attachment dma_buf_vmap @@ -464,23 +630,33 @@ dma_fence_remove_callback dma_fence_signal dma_fence_signal_locked + dma_fence_signal_timestamp_locked dma_fence_wait_timeout dma_free_attrs dma_get_sgtable_attrs dma_get_slave_channel dma_heap_add dma_heap_buffer_alloc + dma_heap_bufferfd_alloc dma_heap_find dma_heap_get_dev dma_heap_get_drvdata dma_heap_get_name + dma_heap_put dmam_alloc_attrs dma_map_page_attrs dma_map_resource dma_map_sg_attrs dmam_free_coherent + dma_mmap_attrs + dma_pool_alloc + dma_pool_create + dma_pool_destroy + dma_pool_free dma_release_channel dma_request_chan + dma_resv_wait_timeout_rcu + dma_run_dependencies dma_set_coherent_mask dma_set_mask dma_sync_sg_for_cpu @@ -491,15 +667,156 @@ dma_unmap_resource dma_unmap_sg_attrs do_exit + do_wait_intr_irq + down + down_interruptible down_read + down_timeout + down_trylock down_write d_path dput drain_workqueue + driver_create_file driver_find_device driver_register + driver_remove_file driver_unregister + drm_add_edid_modes + drm_add_modes_noedid + drm_atomic_add_affected_connectors + drm_atomic_get_crtc_state + drm_atomic_helper_check + drm_atomic_helper_check_plane_state + drm_atomic_helper_cleanup_planes + drm_atomic_helper_commit_modeset_disables + drm_atomic_helper_commit_modeset_enables + drm_atomic_helper_commit_planes + drm_atomic_helper_connector_destroy_state + drm_atomic_helper_connector_duplicate_state + drm_atomic_helper_connector_reset + __drm_atomic_helper_crtc_destroy_state + __drm_atomic_helper_crtc_duplicate_state + drm_atomic_helper_disable_plane + drm_atomic_helper_legacy_gamma_set + drm_atomic_helper_page_flip + __drm_atomic_helper_plane_destroy_state + __drm_atomic_helper_plane_duplicate_state + drm_atomic_helper_prepare_planes + drm_atomic_helper_resume + drm_atomic_helper_set_config + drm_atomic_helper_shutdown + drm_atomic_helper_suspend + drm_atomic_helper_swap_state + drm_atomic_helper_update_plane + drm_atomic_helper_wait_for_vblanks + drm_atomic_state_clear + drm_atomic_state_default_release + __drm_atomic_state_free + drm_atomic_state_init + drm_bridge_attach + drm_calc_timestamping_constants + drm_compat_ioctl + drm_connector_attach_encoder + drm_connector_cleanup + drm_connector_init + drm_connector_update_edid_property + drm_crtc_cleanup + drm_crtc_handle_vblank + drm_crtc_init_with_planes + drm_crtc_send_vblank_event + drm_crtc_vblank_get + drm_crtc_vblank_off + drm_crtc_vblank_on + drm_crtc_vblank_put + drm_crtc_vblank_waitqueue + __drm_dbg + drm_dev_alloc + drm_dev_put + drm_dev_register + drm_dev_unregister + drm_display_mode_to_videomode + drm_dp_aux_init + drm_dp_aux_register + drm_dp_channel_eq_ok + drm_dp_clock_recovery_ok + drm_dp_dpcd_read + drm_dp_dpcd_write + drm_dp_link_train_channel_eq_delay + drm_dp_link_train_clock_recovery_delay + drm_edid_duplicate + drm_edid_to_sad + drm_encoder_cleanup + drm_encoder_init + __drm_err + drm_format_info + drm_framebuffer_cleanup + drm_framebuffer_init + drm_framebuffer_lookup + drm_framebuffer_remove + drm_gem_cma_vm_ops + drm_gem_create_mmap_offset + drm_gem_dumb_destroy + drm_gem_handle_create + drm_gem_mmap + drm_gem_mmap_obj + drm_gem_object_free + drm_gem_object_init + drm_gem_object_lookup + drm_gem_object_release + drm_gem_prime_export + drm_gem_prime_fd_to_handle + drm_gem_prime_handle_to_fd + drm_gem_prime_import + drm_gem_vm_close + drm_get_edid + drm_helper_hpd_irq_event + drm_helper_mode_fill_fb_struct + drm_helper_probe_single_connector_modes + drm_ioctl + drm_is_current_master + drm_kms_helper_poll_disable + drm_kms_helper_poll_enable + drm_kms_helper_poll_fini + drm_kms_helper_poll_init + drmm_mode_config_init + drm_mode_config_cleanup + drm_mode_config_reset + drm_mode_copy + drm_mode_crtc_set_gamma_size + drm_mode_duplicate + drm_mode_object_find + drm_mode_object_put + drm_mode_probed_add + drm_mode_set_crtcinfo + drm_mode_set_name + drm_mode_vrefresh + drm_object_attach_property + drm_open + drm_panel_add + drm_panel_disable + drm_panel_enable + drm_panel_get_modes + drm_panel_init + drm_panel_prepare + drm_panel_remove + drm_panel_unprepare + drm_plane_cleanup + drm_poll + drm_prime_gem_destroy + drm_property_blob_put + drm_property_create_blob + drm_property_create_range + drm_property_lookup_blob + drm_read + drm_release + drm_universal_plane_init + drm_vblank_init + drm_writeback_connector_init + drm_writeback_queue_job + drm_writeback_signal_completion dump_stack + __dynamic_pr_debug edac_device_add_device edac_device_alloc_ctl_info edac_device_alloc_index @@ -508,8 +825,20 @@ edac_device_handle_ce_count edac_device_handle_ue_count em_cpu_get + em_dev_register_perf_domain enable_irq enable_percpu_irq + ether_setup + eth_header + eth_header_cache + eth_header_cache_update + eth_header_parse + eth_mac_addr + eth_platform_get_mac_address + ethtool_op_get_link + ethtool_op_get_ts_info + eth_type_trans + eth_validate_addr eventfd_ctx_fdget eventfd_ctx_fileget eventfd_ctx_put @@ -529,6 +858,7 @@ fget filp_close filp_open_block + find_get_pid find_last_bit find_next_bit find_next_zero_bit @@ -543,32 +873,62 @@ flush_delayed_work flush_work flush_workqueue + follow_pfn + font_vga_8x16 + for_each_kernel_tracepoint fput + frame_vector_create + frame_vector_destroy + frame_vector_to_pages + frame_vector_to_pfns free_io_pgtable_ops free_irq + free_netdev __free_pages free_pages + free_pages_exact free_percpu free_percpu_irq freezing_slow_path + freq_qos_add_notifier freq_qos_add_request freq_qos_remove_request freq_qos_update_request freq_scale + fs_bio_set + fsg_common_create_luns + fsg_common_set_cdev + fsg_common_set_inquiry_string + fsg_common_set_sysfs + fsg_config_from_params fsync_bdev + fwnode_device_is_available fwnode_find_reference + fwnode_get_name fwnode_get_next_child_node + fwnode_graph_get_next_endpoint + fwnode_graph_get_port_parent + fwnode_graph_get_remote_endpoint + fwnode_graph_get_remote_port_parent + fwnode_graph_parse_endpoint fwnode_handle_get fwnode_handle_put + fwnode_property_get_reference_args fwnode_property_present fwnode_property_read_string fwnode_property_read_u32_array + fwnode_property_read_u64_array + gcd generic_device_group + generic_file_llseek generic_handle_irq generic_iommu_put_resv_regions + generic_mii_ioctl + genlmsg_multicast_allns genlmsg_put genl_register_family genl_unregister_family + genphy_resume gen_pool_add_owner gen_pool_alloc_algo_owner gen_pool_avail @@ -583,13 +943,18 @@ gen_pool_virt_to_phys getboottime64 get_cpu_device + get_cpu_idle_time get_cpu_idle_time_us get_cpu_iowait_time_us get_device get_each_dmabuf get_each_object_track + get_freelist_nr_pages __get_free_pages get_governor_parent_kobj + get_kernel_pages + get_net_ns_by_fd + get_net_ns_by_pid get_option get_page_owner_handle get_pfnblock_flags_mask @@ -600,13 +965,17 @@ get_sg_io_hdr get_slabinfo __get_task_comm + get_task_exe_file get_task_mm get_task_pid get_unmapped_area get_unused_fd_flags get_user_pages get_user_pages_remote + get_vaddr_frames + get_zeroed_page gic_nonsecure_priorities + gov_attr_set_get gov_attr_set_init gov_attr_set_put governor_sysfs_ops @@ -625,12 +994,16 @@ gpiod_get_optional gpiod_get_raw_value gpiod_get_value + gpiod_get_value_cansleep + gpiod_set_debounce gpiod_set_raw_value + gpiod_set_raw_value_cansleep gpiod_set_value gpiod_set_value_cansleep gpiod_to_irq gpio_free gpio_request + gpio_request_one gpio_to_desc handle_bad_irq handle_edge_irq @@ -641,6 +1014,8 @@ handle_simple_irq handle_sysrq hashlen_string + have_governor_per_policy + hex_asc hex_dump_to_buffer hrtimer_active hrtimer_cancel @@ -653,6 +1028,9 @@ hvc_kick hvc_poll hvc_remove + __hw_addr_init + __hw_addr_sync + __hw_addr_unsync hwrng_register hwrng_unregister hwspin_lock_free @@ -663,6 +1041,7 @@ i2c_add_adapter i2c_del_adapter i2c_del_driver + i2c_get_adapter i2c_get_dma_safe_msg_buf i2c_put_dma_safe_msg_buf i2c_register_driver @@ -674,6 +1053,7 @@ i2c_smbus_write_word_data i2c_transfer i2c_transfer_buffer_flags + i2c_unregister_device icc_get icc_link_create icc_node_add @@ -685,7 +1065,9 @@ icc_put icc_set_bw icc_set_tag + icc_sync_state ida_alloc_range + ida_destroy ida_free idr_alloc idr_alloc_cyclic @@ -696,14 +1078,28 @@ idr_preload idr_remove idr_replace + iio_alloc_pollfunc + iio_buffer_init + iio_buffer_put iio_channel_get iio_channel_get_all iio_channel_release + iio_dealloc_pollfunc + iio_device_attach_buffer + __iio_device_register + iio_device_unregister + iio_get_channel_type + iio_get_time_ns + iio_push_to_buffers + iio_read_channel_attribute iio_read_channel_processed + iio_read_channel_raw + iio_trigger_notify_done import_iovec inc_node_page_state inc_zone_page_state in_egroup_p + inet_csk_get_port init_iova_domain init_net init_pseudo @@ -715,6 +1111,8 @@ init_uts_ns init_wait_entry __init_waitqueue_head + inode_permission + inode_owner_or_capable input_alloc_absinfo input_allocate_device input_close_device @@ -756,6 +1154,7 @@ iommu_get_dma_cookie iommu_get_domain_for_dev iommu_get_msi_cookie + iommu_group_alloc iommu_group_for_each_dev iommu_group_get iommu_group_get_iommudata @@ -771,12 +1170,14 @@ iommu_unmap __ioread32_copy __ioremap + ioremap_cache iounmap __iowrite32_copy ipi_desc_get ip_route_me_harder iput ipv6_find_hdr + ipv6_skip_exthdr irq_chip_ack_parent irq_chip_disable_parent irq_chip_enable_parent @@ -791,6 +1192,8 @@ irq_chip_set_wake_parent irq_chip_unmask_parent irq_create_fwspec_mapping + irq_create_mapping_affinity + irq_create_of_mapping irq_dispose_mapping __irq_domain_add irq_domain_alloc_irqs_parent @@ -801,7 +1204,9 @@ irq_domain_remove irq_domain_set_hwirq_and_chip irq_domain_set_info + irq_domain_simple_ops irq_domain_update_bus_token + irq_domain_xlate_onetwocell irq_domain_xlate_twocell irq_do_set_affinity irq_find_mapping @@ -813,6 +1218,7 @@ irq_set_affinity_hint irq_set_affinity_notifier irq_set_chained_handler_and_data + irq_set_chip irq_set_chip_and_handler_name irq_set_chip_data irq_set_irqchip_state @@ -838,19 +1244,29 @@ kernel_cpustat kernel_getsockname kernel_kobj + kernel_param_lock + kernel_param_unlock kernel_power_off kernel_recvmsg kernel_restart kernel_sendmsg + kernel_sigaction + kernfs_path_from_node kern_mount kern_unmount + key_create_or_update + key_put + keyring_alloc __kfifo_alloc + __kfifo_free __kfifo_in __kfifo_out + __kfifo_to_user kfree kfree_const kfree_sensitive kfree_skb + kfree_skb_list kill_anon_super kill_fasync kimage_vaddr @@ -870,6 +1286,7 @@ kobject_add kobject_create_and_add kobject_del + kobject_get kobject_init kobject_init_and_add kobject_put @@ -888,7 +1305,10 @@ kstrdup_const kstrndup kstrtobool + kstrtobool_from_user kstrtoint + kstrtoint_from_user + kstrtol_from_user kstrtoll kstrtou16 kstrtou16_from_user @@ -899,45 +1319,71 @@ kstrtoul_from_user kstrtoull kstrtoull_from_user + ksys_sync_helper + kthread_bind kthread_bind_mask + kthread_cancel_delayed_work_sync kthread_cancel_work_sync kthread_create_on_node kthread_create_worker + kthread_delayed_work_timer_fn kthread_destroy_worker + kthread_flush_work kthread_flush_worker __kthread_init_worker + kthread_queue_delayed_work kthread_queue_work kthread_should_stop kthread_stop kthread_worker_fn ktime_get ktime_get_coarse_real_ts64 + ktime_get_coarse_with_offset ktime_get_mono_fast_ns + ktime_get_raw + ktime_get_raw_ts64 ktime_get_real_seconds ktime_get_real_ts64 + ktime_get_seconds + ktime_get_ts64 ktime_get_with_offset kvfree + kvfree_call_rcu kvmalloc_node led_classdev_flash_register_ext led_classdev_flash_unregister led_classdev_unregister + led_get_flash_fault + led_set_brightness_sync + led_set_flash_brightness + led_set_flash_timeout + led_sysfs_disable + led_sysfs_enable + led_trigger_remove + led_update_brightness + led_update_flash_brightness __list_add_valid __list_del_entry_valid list_sort llist_add_batch llist_reverse_order + __local_bh_enable_ip __lock_page lock_sock_nested log_buf_addr_get log_buf_len_get __log_post_read_mmio __log_read_mmio + log_threaded_irq_wakeup_reason __log_write_mmio lookup_page_ext lzo1x_1_compress lzo1x_decompress_safe lzorle1x_1_compress + match_hex + match_int match_string + match_token mbox_chan_received_data mbox_chan_txdone mbox_client_txdone @@ -946,9 +1392,35 @@ mbox_free_channel mbox_request_channel mbox_send_message + mdiobus_alloc_size + mdiobus_free + __mdiobus_register + mdiobus_unregister + media_create_intf_link + media_create_pad_link + media_device_cleanup + media_device_init + __media_device_register + media_device_unregister + media_devnode_create + media_devnode_remove + media_entity_pads_init + media_entity_remote_pad + media_entity_remove_links + __media_entity_setup_link + media_graph_walk_next + media_graph_walk_start + media_pipeline_start + media_pipeline_stop + media_request_get_by_fd + media_request_object_complete + media_request_put memblock_end_of_DRAM __memcat_p + memcg_kmem_enabled_key memchr + memchr_inv + memcmp memcpy __memcpy_fromio __memcpy_toio @@ -971,18 +1443,46 @@ memunmap migrate_pages migrate_swap + mii_check_media + mii_ethtool_get_link_ksettings + mii_ethtool_gset + mii_ethtool_set_link_ksettings + mii_link_ok + mii_nway_restart + mipi_dsi_attach + mipi_dsi_dcs_read + mipi_dsi_dcs_write + mipi_dsi_dcs_write_buffer + mipi_dsi_detach + mipi_dsi_driver_register_full + mipi_dsi_driver_unregister + mipi_dsi_generic_write + mipi_dsi_host_register + mipi_dsi_host_unregister misc_deregister misc_register + mktime64 + mmc_add_host + mmc_alloc_host + mmc_can_gpio_cd mmc_cqe_request_done + mmc_detect_change + mmc_free_host + mmc_gpio_get_cd + mmc_gpio_get_ro + mmc_hw_reset mmc_of_parse mmc_regulator_get_supply mmc_regulator_set_ocr mmc_regulator_set_vqmmc + mmc_remove_host + mmc_request_done mmc_send_tuning mmput mod_delayed_work_on mod_node_page_state mod_timer + mod_timer_pending __module_get module_layout module_put @@ -993,18 +1493,47 @@ mutex_is_locked mutex_lock mutex_lock_interruptible + mutex_lock_killable mutex_trylock mutex_unlock + napi_disable + napi_gro_flush + napi_gro_receive + __napi_schedule + napi_schedule_prep + nd_tbl + netdev_alloc_frag + __netdev_alloc_skb + netdev_err + netdev_info + netdev_set_default_ethtool_ops + netdev_warn + netif_carrier_off + netif_carrier_on + netif_napi_add + netif_receive_skb + netif_receive_skb_list + netif_rx + netif_rx_ni + netif_tx_stop_all_queues + netif_tx_wake_queue netlink_broadcast __netlink_kernel_create netlink_kernel_release + netlink_register_notifier netlink_unicast + netlink_unregister_notifier net_namespace_list + net_ns_type_operations + net_ratelimit nf_ct_delete nf_register_net_hooks nf_unregister_net_hooks nla_find + nla_memcpy + __nla_parse nla_put + nla_put_64bit nla_reserve nla_reserve_64bit __nla_validate @@ -1024,6 +1553,8 @@ nvmem_cell_read nvmem_cell_read_u32 nvmem_cell_write + nvmem_device_get + nvmem_device_put nvmem_device_read nvmem_device_write of_address_to_resource @@ -1031,7 +1562,11 @@ of_clk_add_hw_provider of_clk_add_provider of_clk_del_provider + of_clk_get + of_clk_get_by_name + of_clk_get_from_provider of_clk_hw_simple_get + of_clk_src_onecell_get of_clk_src_simple_get of_count_phandle_with_args of_cpufreq_cooling_register @@ -1044,7 +1579,10 @@ of_dma_controller_free of_dma_controller_register of_dma_is_coherent + of_dma_xlate_by_chan_id + of_drm_find_bridge of_drm_find_panel + of_find_backlight_by_node of_find_compatible_node of_find_device_by_node of_find_i2c_device_by_node @@ -1055,6 +1593,7 @@ of_find_node_with_property of_find_property of_fwnode_ops + of_genpd_add_device of_genpd_add_provider_onecell of_genpd_del_provider of_get_address @@ -1064,11 +1603,14 @@ of_get_next_available_child of_get_next_child of_get_next_parent + of_get_parent of_get_property of_get_regulator_init_data of_graph_get_next_endpoint of_graph_get_port_parent of_graph_get_remote_endpoint + of_graph_get_remote_node + of_graph_get_remote_port_parent of_graph_is_present of_graph_parse_endpoint of_hwspin_lock_get_id @@ -1079,6 +1621,8 @@ of_irq_get of_irq_get_byname of_irq_parse_one + of_irq_to_resource_table + of_machine_is_compatible of_match_device of_match_node of_n_addr_cells @@ -1099,11 +1643,15 @@ of_property_read_string of_property_read_string_helper of_property_read_u32_index + of_property_read_u64 of_property_read_u64_index + of_property_read_variable_u16_array of_property_read_variable_u32_array + of_property_read_variable_u64_array of_property_read_variable_u8_array of_prop_next_string of_prop_next_u32 + of_remove_property of_reserved_mem_device_init_by_idx of_reserved_mem_device_release of_reserved_mem_lookup @@ -1113,6 +1661,7 @@ of_thermal_is_trip_valid of_translate_address on_each_cpu + on_each_cpu_cond oops_in_progress overflowuid page_endio @@ -1121,12 +1670,21 @@ panic panic_notifier_list panic_timeout + param_array_ops + param_get_bool + param_get_charp param_get_int + param_get_uint + param_get_ulong param_ops_bool + param_ops_charp param_ops_int param_ops_string param_ops_uint param_set_bool + param_set_charp + param_set_uint + param_set_ulong pause_cpus pci_alloc_irq_vectors_affinity pci_assign_resource @@ -1169,36 +1727,60 @@ perf_aux_output_end perf_aux_output_flag perf_event_create_kernel_counter + perf_event_disable perf_event_enable perf_event_read_local perf_event_read_value perf_event_release_kernel + perf_event_update_userpage perf_get_aux + perf_pmu_migrate_context perf_pmu_register perf_pmu_unregister perf_trace_buf_alloc perf_trace_run_bpf_submit pfn_valid phy_calibrate + phy_connect + phy_disconnect + phy_do_ioctl_running + phy_ethtool_get_link_ksettings + phy_ethtool_nway_reset + phy_ethtool_set_link_ksettings phy_exit + phy_get phy_init phy_power_off phy_power_on + phy_print_status + phy_put phy_set_mode_ext + phy_start + phy_stop pick_highest_pushable_task pid_nr_ns pid_task pinconf_generic_dt_node_to_map + pinconf_generic_parse_dt_config pinctrl_dev_get_drvdata + pinctrl_enable pinctrl_force_default pinctrl_force_sleep + pinctrl_gpio_direction_input + pinctrl_gpio_direction_output pinctrl_lookup_state pinctrl_pm_select_default_state pinctrl_pm_select_sleep_state + pinctrl_put pinctrl_select_state + pinctrl_utils_add_map_configs pinctrl_utils_free_map + pinctrl_utils_reserve_map + pin_user_pages + pin_user_pages_fast platform_bus_type platform_device_add + platform_device_add_data platform_device_alloc platform_device_del platform_device_put @@ -1207,20 +1789,28 @@ platform_device_unregister __platform_driver_register platform_driver_unregister + platform_find_device_by_driver platform_get_irq platform_get_irq_byname + platform_get_irq_byname_optional + platform_get_irq_optional platform_get_resource platform_get_resource_byname platform_irq_count + __platform_register_drivers + platform_unregister_drivers pm_clk_add pm_clk_create pm_clk_destroy pm_clk_resume pm_clk_suspend + pm_genpd_add_device pm_genpd_add_subdomain pm_genpd_init pm_genpd_remove + pm_genpd_remove_device pm_genpd_remove_subdomain + pm_get_active_wakeup_sources pm_power_off __pm_relax pm_relax @@ -1231,6 +1821,7 @@ pm_runtime_forbid pm_runtime_force_resume pm_runtime_force_suspend + pm_runtime_get_if_active __pm_runtime_idle pm_runtime_irq_safe pm_runtime_no_callbacks @@ -1241,18 +1832,22 @@ __pm_runtime_use_autosuspend __pm_stay_awake pm_stay_awake + pm_suspend_default_s2idle pm_system_wakeup pm_wakeup_dev_event pm_wakeup_ws_event + pm_wq power_supply_changed power_supply_get_by_name power_supply_get_drvdata power_supply_get_property power_supply_put + power_supply_register power_supply_reg_notifier power_supply_set_property power_supply_unregister power_supply_unreg_notifier + prandom_bytes prandom_u32 preempt_schedule preempt_schedule_notrace @@ -1263,26 +1858,33 @@ printk_deferred proc_create proc_create_data + proc_create_single_data proc_dointvec proc_dointvec_minmax proc_dostring proc_douintvec_minmax proc_mkdir proc_remove + proc_set_user proc_symlink proto_register proto_unregister + pskb_expand_head __pskb_pull_tail + ___pskb_trim public_key_verify_signature putback_movable_pages put_device put_disk put_iova_domain + __put_net __put_page put_pid put_sg_io_hdr + put_task_stack __put_task_struct put_unused_fd + put_vaddr_frames pwm_apply_state pwmchip_add pwmchip_remove @@ -1305,6 +1907,7 @@ _raw_read_lock_bh _raw_read_lock_irq _raw_read_lock_irqsave + _raw_read_trylock _raw_read_unlock _raw_read_unlock_bh _raw_read_unlock_irq @@ -1333,23 +1936,43 @@ rb_last rb_next rb_prev + rcu_barrier + rcu_idle_enter + rcu_idle_exit + rcu_is_watching __rcu_read_lock __rcu_read_unlock + rdev_get_dev rdev_get_drvdata + rdev_get_id + rdev_get_regmap reboot_mode refcount_dec_and_lock refcount_dec_not_one refcount_warn_saturate + __refrigerator + regcache_cache_only + regcache_mark_dirty + regcache_sync register_blkdev __register_chrdev register_chrdev_region register_console register_die_notifier register_ftrace_export + register_inet6addr_notifier + register_inetaddr_notifier + register_kprobe register_kretprobe register_memory_notifier register_module_notifier + register_netdev + register_netdevice + register_netdevice_notifier register_net_sysctl + register_oom_notifier + register_pernet_device + register_pernet_subsys register_pm_notifier register_reboot_notifier register_restart_handler @@ -1357,13 +1980,18 @@ register_shrinker register_syscore_ops register_sysctl_table + register_virtio_device + register_virtio_driver regmap_bulk_read regmap_bulk_write regmap_check_range_table regmap_field_read regmap_field_update_bits_base __regmap_init + regmap_irq_get_domain regmap_mmio_detach_clk + regmap_raw_read + regmap_raw_write regmap_read regmap_update_bits_base regmap_write @@ -1371,31 +1999,52 @@ regulator_bulk_disable regulator_count_voltages regulator_disable + regulator_disable_regmap regulator_enable + regulator_enable_regmap regulator_force_disable regulator_get + regulator_get_current_limit_regmap regulator_get_drvdata regulator_get_mode + regulator_get_optional regulator_get_voltage regulator_get_voltage_rdev + regulator_get_voltage_sel_regmap regulator_is_enabled + regulator_is_enabled_regmap regulator_is_supported_voltage + regulator_list_voltage regulator_list_voltage_linear + regulator_list_voltage_linear_range + regulator_list_voltage_table + regulator_map_voltage_iterate + regulator_map_voltage_linear + regulator_map_voltage_linear_range regulator_notifier_call_chain regulator_put regulator_register_notifier + regulator_set_active_discharge_regmap regulator_set_current_limit + regulator_set_current_limit_regmap regulator_set_load regulator_set_mode regulator_set_voltage + regulator_set_voltage_sel_regmap + regulator_set_voltage_time + regulator_set_voltage_time_sel + regulator_sync_voltage regulator_unregister_notifier release_firmware + release_pages release_sock remap_pfn_range + remap_vmalloc_range remove_cpu remove_memory_subsection remove_proc_entry remove_proc_subtree + remove_wait_queue report_iommu_fault request_any_context_irq request_firmware @@ -1407,13 +2056,25 @@ resched_curr reset_control_assert reset_control_deassert + reset_controller_register + reset_control_reset resume_cpus revalidate_disk_size rfkill_alloc + rfkill_blocked rfkill_destroy rfkill_init_sw_state + rfkill_pause_polling rfkill_register + rfkill_resume_polling + rfkill_set_hw_state rfkill_unregister + rhashtable_free_and_destroy + rhashtable_insert_slow + rhltable_init + __rht_bucket_nested + rht_bucket_nested + rht_bucket_nested_insert rndis_deregister rndis_free_response rndis_get_next_response @@ -1426,7 +2087,12 @@ rndis_signal_connect rndis_uninit root_task_group + round_jiffies round_jiffies_relative + round_jiffies_up + rpmsg_create_ept + rpmsg_destroy_ept + rpmsg_find_device rpmsg_get_signals rpmsg_poll rpmsg_register_device @@ -1450,45 +2116,63 @@ rproc_remove_subdev rproc_report_crash rproc_shutdown + rps_needed rtc_class_close rtc_class_open + rtc_ktime_to_tm + rtc_nvmem_register + rtc_read_alarm rtc_read_time __rtc_register_device + rtc_set_alarm rtc_time64_to_tm + rtc_tm_to_ktime rtc_tm_to_time64 rtc_update_irq rtc_valid_tm + rtnl_is_locked rtnl_lock rtnl_unlock runqueues + __sbitmap_queue_get sched_clock sched_feat_keys sched_feat_names + sched_setattr_nocheck sched_set_fifo sched_set_normal sched_setscheduler sched_setscheduler_nocheck + sched_show_task sched_trace_rd_span sched_uclamp_used schedule schedule_timeout schedule_timeout_interruptible + schedutil_cpu_util + scmi_driver_register + scmi_driver_unregister + scmi_protocol_register scnprintf scsi_autopm_get_device scsi_autopm_put_device + scsi_block_requests scsi_block_when_processing_errors scsi_command_size_tbl scsi_compat_ioctl scsi_device_get scsi_device_put scsi_device_quiesce + __scsi_execute scsi_ioctl scsi_ioctl_block_when_processing_errors __scsi_iterate_devices scsi_normalize_sense __scsi_print_sense + scsi_print_sense_hdr scsi_register_interface scsi_remove_device + scsi_unblock_requests sdev_prefix_printk __sdhci_add_host sdhci_add_host @@ -1506,11 +2190,16 @@ sdhci_set_bus_width sdhci_set_power_noreg sdhci_setup_host + sdio_signal_irq + sdio_writeb_readb + send_sig send_sig_info seq_buf_printf + seq_hex_dump seq_lseek seq_open __seq_open_private + seq_open_private seq_printf seq_putc seq_puts @@ -1518,6 +2207,16 @@ seq_release seq_release_private seq_write + serial8250_do_set_termios + serial8250_do_shutdown + serial8250_do_startup + serial8250_get_port + serial8250_register_8250_port + serial8250_resume_port + serial8250_rpm_get + serial8250_rpm_put + serial8250_suspend_port + serial8250_unregister_port set_cpus_allowed_ptr set_normalized_timespec64 set_page_dirty_lock @@ -1542,7 +2241,9 @@ si_mem_available si_meminfo simple_attr_open + simple_attr_read simple_attr_release + simple_attr_write simple_open simple_read_from_buffer simple_strtol @@ -1552,14 +2253,25 @@ single_release si_swapinfo sk_alloc + skb_add_rx_frag + skb_checksum_help skb_clone + skb_clone_sk + skb_complete_wifi_ack + skb_copy skb_copy_bits skb_copy_datagram_iter + skb_copy_expand skb_dequeue + skb_ensure_writable skb_free_datagram + __skb_get_hash + __skb_gso_segment __skb_pad + skb_pull skb_push skb_put + skb_queue_head skb_queue_purge skb_queue_tail skb_recv_datagram @@ -1568,17 +2280,63 @@ skb_trim sk_free skip_spaces + smp_call_function smp_call_function_single + smp_call_on_cpu + snd_card_add_dev_attr + snd_ctl_boolean_mono_info + snd_jack_set_key + snd_pcm_format_physical_width snd_pcm_format_width + snd_pcm_hw_constraint_integer + snd_pcm_hw_constraint_list + snd_pcm_hw_constraint_mask64 + snd_pcm_hw_constraint_minmax + snd_pcm_hw_constraint_step + snd_pcm_lib_free_pages + snd_pcm_lib_malloc_pages + snd_pcm_lib_preallocate_free_for_all + snd_pcm_lib_preallocate_pages_for_all + snd_pcm_period_elapsed + snd_pcm_set_ops snd_soc_add_component_controls + snd_soc_bytes_info_ext + snd_soc_bytes_tlv_callback + snd_soc_card_jack_new + snd_soc_component_exit_regmap + snd_soc_component_init_regmap + snd_soc_dai_set_sysclk + snd_soc_dapm_add_routes + snd_soc_dapm_disable_pin + snd_soc_dapm_get_enum_double + snd_soc_dapm_get_pin_switch + snd_soc_dapm_get_volsw + snd_soc_dapm_info_pin_switch + snd_soc_dapm_new_controls + snd_soc_dapm_new_widgets + snd_soc_dapm_put_enum_double + snd_soc_dapm_put_pin_switch + snd_soc_dapm_put_volsw + snd_soc_find_dai + snd_soc_get_volsw + snd_soc_info_enum_double snd_soc_info_volsw + snd_soc_jack_report + snd_soc_new_compress + snd_soc_of_get_dai_link_codecs + snd_soc_poweroff + snd_soc_put_volsw snd_soc_register_component + snd_soc_resume + snd_soc_rtdcom_lookup + snd_soc_set_runtime_hwparams snd_soc_unregister_component snd_usb_enable_audio_stream snprintf soc_device_register soc_device_unregister sock_alloc_send_skb + __sock_create sock_create_kern sock_gettstamp sock_init_data @@ -1595,6 +2353,8 @@ sock_unregister sort __spi_alloc_controller + spi_bus_type + spi_finalize_current_transfer spi_register_controller __spi_register_driver spi_setup @@ -1623,7 +2383,10 @@ __stack_chk_fail __stack_chk_guard stack_depot_fetch + stack_trace_save static_key_disable + static_key_slow_dec + static_key_slow_inc stop_machine stop_one_cpu_nowait stpcpy @@ -1632,11 +2395,13 @@ strchr strcmp strcpy + strcspn strim strlcat strlcpy strlen strncasecmp + strncat strnchr strncmp strncpy @@ -1645,18 +2410,23 @@ strnstr strpbrk strrchr + strreplace strscpy strsep strstr + suspend_set_ops + __sw_hweight16 __sw_hweight32 __sw_hweight64 __sw_hweight8 sync_file_create sync_file_get_fence synchronize_irq + synchronize_net synchronize_rcu synchronize_srcu syscon_node_to_regmap + syscon_regmap_lookup_by_compatible syscon_regmap_lookup_by_phandle sysctl_sched_features sysctl_sched_latency @@ -1680,12 +2450,15 @@ sysfs_remove_link_from_group sysfs_streq sysrq_mask + system_freezable_power_efficient_wq system_freezable_wq system_freezing_cnt system_highpri_wq system_power_efficient_wq + system_state system_unbound_wq system_wq + sys_tz task_active_pid_ns __tasklet_hi_schedule tasklet_init @@ -1711,8 +2484,13 @@ thermal_zone_get_zone_by_name thermal_zone_of_sensor_register thermal_zone_of_sensor_unregister + tick_nohz_get_idle_calls_cpu tick_nohz_get_sleep_length time64_to_tm + timecounter_init + timecounter_read + timer_unstable_counter_workaround + timespec64_to_jiffies topology_set_thermal_pressure topology_update_done _totalram_pages @@ -1720,6 +2498,8 @@ trace_array_get_by_name trace_array_put trace_array_set_clr_event + __trace_bprintk + __trace_bputs trace_event_buffer_commit trace_event_buffer_reserve trace_event_ignore_this_pid @@ -1727,25 +2507,35 @@ trace_event_reg trace_handle_return __traceiter_android_rvh_account_irq + __traceiter_android_rvh_after_enqueue_task __traceiter_android_rvh_build_perf_domains __traceiter_android_rvh_can_migrate_task __traceiter_android_rvh_check_preempt_wakeup __traceiter_android_rvh_cpu_cgroup_attach __traceiter_android_rvh_cpu_cgroup_online + __traceiter_android_rvh_cpu_overutilized __traceiter_android_rvh_dequeue_task + __traceiter_android_rvh_dequeue_task_fair __traceiter_android_rvh_enqueue_task + __traceiter_android_rvh_enqueue_task_fair + __traceiter_android_rvh_find_busiest_group __traceiter_android_rvh_find_busiest_queue + __traceiter_android_rvh_find_energy_efficient_cpu __traceiter_android_rvh_find_lowest_rq + __traceiter_android_rvh_finish_prio_fork __traceiter_android_rvh_flush_task __traceiter_android_rvh_force_compatible_post __traceiter_android_rvh_force_compatible_pre __traceiter_android_rvh_gic_v3_set_affinity + __traceiter_android_rvh_media_device_setup_link __traceiter_android_rvh_migrate_queued_task __traceiter_android_rvh_new_task_stats __traceiter_android_rvh_pick_next_entity __traceiter_android_rvh_place_entity + __traceiter_android_rvh_prepare_prio_fork __traceiter_android_rvh_replace_next_task_fair __traceiter_android_rvh_resume_cpus + __traceiter_android_rvh_rtmutex_prepare_setprio __traceiter_android_rvh_sched_cpu_dying __traceiter_android_rvh_sched_cpu_starting __traceiter_android_rvh_sched_exec @@ -1759,21 +2549,29 @@ __traceiter_android_rvh_select_task_rq_rt __traceiter_android_rvh_set_gfp_zone_flags __traceiter_android_rvh_set_readahead_gfp_mask + __traceiter_android_rvh_setscheduler __traceiter_android_rvh_set_skip_swapcache_flags __traceiter_android_rvh_set_task_cpu + __traceiter_android_rvh_set_user_nice __traceiter_android_rvh_show_max_freq __traceiter_android_rvh_tick_entry __traceiter_android_rvh_try_to_wake_up __traceiter_android_rvh_try_to_wake_up_success __traceiter_android_rvh_ttwu_cond + __traceiter_android_rvh_uclamp_eff_get __traceiter_android_rvh_update_cpu_capacity __traceiter_android_rvh_update_cpus_allowed __traceiter_android_rvh_update_misfit_status + __traceiter_android_rvh_v4l2subdev_set_fmt + __traceiter_android_rvh_v4l2subdev_set_frame_interval + __traceiter_android_rvh_v4l2subdev_set_selection __traceiter_android_rvh_wake_up_new_task __traceiter_android_vh_account_task_time __traceiter_android_vh_allow_domain_state + __traceiter_android_vh_alter_futex_plist_add __traceiter_android_vh_alter_mutex_list_add __traceiter_android_vh_alter_rwsem_list_add + __traceiter_android_vh_arch_set_freq_scale __traceiter_android_vh_binder_alloc_new_buf_locked __traceiter_android_vh_binder_preset __traceiter_android_vh_binder_priority_skip @@ -1781,16 +2579,28 @@ __traceiter_android_vh_binder_restore_priority __traceiter_android_vh_binder_set_priority __traceiter_android_vh_binder_trans + __traceiter_android_vh_binder_transaction_init __traceiter_android_vh_binder_wait_for_work __traceiter_android_vh_binder_wakeup_ilocked __traceiter_android_vh_build_sched_domains + __traceiter_android_vh_cgroup_set_task + __traceiter_android_vh_check_bpf_syscall + __traceiter_android_vh_check_file_open + __traceiter_android_vh_check_mmap_file __traceiter_android_vh_check_uninterruptible_tasks __traceiter_android_vh_check_uninterruptible_tasks_dn + __traceiter_android_vh_clear_mask_adjust + __traceiter_android_vh_clear_reserved_fmt_fields + __traceiter_android_vh_commit_creds __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit __traceiter_android_vh_do_send_sig_info + __traceiter_android_vh_em_cpu_energy __traceiter_android_vh_exclude_reserved_zone + __traceiter_android_vh_exit_creds __traceiter_android_vh_exit_mm + __traceiter_android_vh_fill_ext_fmtdesc + __traceiter_android_vh_finish_update_load_avg_se __traceiter_android_vh_ftrace_dump_buffer __traceiter_android_vh_ftrace_format_check __traceiter_android_vh_ftrace_oops_enter @@ -1799,35 +2609,64 @@ __traceiter_android_vh_get_from_fragment_pool __traceiter_android_vh_gpio_block_read __traceiter_android_vh_include_reserved_zone + __traceiter_android_vh_iommu_alloc_iova + __traceiter_android_vh_iommu_free_iova __traceiter_android_vh_iommu_setup_dma_ops __traceiter_android_vh_ipi_stop + __traceiter_android_vh_ipv6_gen_linklocal_addr __traceiter_android_vh_jiffies_update + __traceiter_android_vh_kmalloc_slab __traceiter_android_vh_logbuf __traceiter_android_vh_mutex_unlock_slowpath __traceiter_android_vh_mutex_wait_finish __traceiter_android_vh_mutex_wait_start + __traceiter_android_vh_override_creds + __traceiter_android_vh_prepare_update_load_avg_se __traceiter_android_vh_printk_hotplug __traceiter_android_vh_process_killed + __traceiter_android_vh_revert_creds + __traceiter_android_vh_rwsem_init __traceiter_android_vh_rwsem_wake __traceiter_android_vh_rwsem_wake_finish + __traceiter_android_vh_rwsem_write_finished + __traceiter_android_vh_save_track_hash + __traceiter_android_vh_save_vmalloc_stack __traceiter_android_vh_scheduler_tick + __traceiter_android_vh_selinux_avc_insert + __traceiter_android_vh_selinux_avc_lookup + __traceiter_android_vh_selinux_avc_node_delete + __traceiter_android_vh_selinux_avc_node_replace + __traceiter_android_vh_selinux_is_initialized + __traceiter_android_vh_set_memory_nx + __traceiter_android_vh_set_memory_ro + __traceiter_android_vh_set_memory_rw + __traceiter_android_vh_set_memory_x + __traceiter_android_vh_set_module_permit_after_init + __traceiter_android_vh_set_module_permit_before_init + __traceiter_android_vh_setscheduler_uclamp + __traceiter_android_vh_set_wake_flags __traceiter_android_vh_show_max_freq __traceiter_android_vh_show_resume_epoch_val + __traceiter_android_vh_show_stack_hash __traceiter_android_vh_show_suspend_epoch_val __traceiter_android_vh_sync_txn_recvd + __traceiter_android_vh_syscall_prctl_finished __traceiter_android_vh_timer_calc_index __traceiter_android_vh_tune_inactive_ratio __traceiter_android_vh_tune_swappiness __traceiter_android_vh_ufs_compl_command __traceiter_android_vh_ufs_send_command + __traceiter_android_vh_ufs_send_tm_command __traceiter_android_vh_update_topology_flags_workfn __traceiter_binder_transaction_received + __traceiter_cpu_frequency __traceiter_cpu_frequency_limits __traceiter_dma_fence_emit __traceiter_gpu_mem_total __traceiter_ipi_entry __traceiter_ipi_raise __traceiter_irq_handler_entry + __traceiter_pelt_se_tp __traceiter_rwmmio_post_read __traceiter_rwmmio_read __traceiter_rwmmio_write @@ -1836,28 +2675,41 @@ __traceiter_sched_stat_iowait __traceiter_sched_stat_wait __traceiter_sched_switch + __traceiter_sched_update_nr_running_tp __traceiter_suspend_resume + __traceiter_task_newtask __traceiter_task_rename + __traceiter_xhci_urb_giveback __tracepoint_android_rvh_account_irq + __tracepoint_android_rvh_after_enqueue_task __tracepoint_android_rvh_build_perf_domains __tracepoint_android_rvh_can_migrate_task __tracepoint_android_rvh_check_preempt_wakeup __tracepoint_android_rvh_cpu_cgroup_attach __tracepoint_android_rvh_cpu_cgroup_online + __tracepoint_android_rvh_cpu_overutilized __tracepoint_android_rvh_dequeue_task + __tracepoint_android_rvh_dequeue_task_fair __tracepoint_android_rvh_enqueue_task + __tracepoint_android_rvh_enqueue_task_fair + __tracepoint_android_rvh_find_busiest_group __tracepoint_android_rvh_find_busiest_queue + __tracepoint_android_rvh_find_energy_efficient_cpu __tracepoint_android_rvh_find_lowest_rq + __tracepoint_android_rvh_finish_prio_fork __tracepoint_android_rvh_flush_task __tracepoint_android_rvh_force_compatible_post __tracepoint_android_rvh_force_compatible_pre __tracepoint_android_rvh_gic_v3_set_affinity + __tracepoint_android_rvh_media_device_setup_link __tracepoint_android_rvh_migrate_queued_task __tracepoint_android_rvh_new_task_stats __tracepoint_android_rvh_pick_next_entity __tracepoint_android_rvh_place_entity + __tracepoint_android_rvh_prepare_prio_fork __tracepoint_android_rvh_replace_next_task_fair __tracepoint_android_rvh_resume_cpus + __tracepoint_android_rvh_rtmutex_prepare_setprio __tracepoint_android_rvh_sched_cpu_dying __tracepoint_android_rvh_sched_cpu_starting __tracepoint_android_rvh_sched_exec @@ -1871,21 +2723,29 @@ __tracepoint_android_rvh_select_task_rq_rt __tracepoint_android_rvh_set_gfp_zone_flags __tracepoint_android_rvh_set_readahead_gfp_mask + __tracepoint_android_rvh_setscheduler __tracepoint_android_rvh_set_skip_swapcache_flags __tracepoint_android_rvh_set_task_cpu + __tracepoint_android_rvh_set_user_nice __tracepoint_android_rvh_show_max_freq __tracepoint_android_rvh_tick_entry __tracepoint_android_rvh_try_to_wake_up __tracepoint_android_rvh_try_to_wake_up_success __tracepoint_android_rvh_ttwu_cond + __tracepoint_android_rvh_uclamp_eff_get __tracepoint_android_rvh_update_cpu_capacity __tracepoint_android_rvh_update_cpus_allowed __tracepoint_android_rvh_update_misfit_status + __tracepoint_android_rvh_v4l2subdev_set_fmt + __tracepoint_android_rvh_v4l2subdev_set_frame_interval + __tracepoint_android_rvh_v4l2subdev_set_selection __tracepoint_android_rvh_wake_up_new_task __tracepoint_android_vh_account_task_time __tracepoint_android_vh_allow_domain_state + __tracepoint_android_vh_alter_futex_plist_add __tracepoint_android_vh_alter_mutex_list_add __tracepoint_android_vh_alter_rwsem_list_add + __tracepoint_android_vh_arch_set_freq_scale __tracepoint_android_vh_binder_alloc_new_buf_locked __tracepoint_android_vh_binder_preset __tracepoint_android_vh_binder_priority_skip @@ -1893,16 +2753,28 @@ __tracepoint_android_vh_binder_restore_priority __tracepoint_android_vh_binder_set_priority __tracepoint_android_vh_binder_trans + __tracepoint_android_vh_binder_transaction_init __tracepoint_android_vh_binder_wait_for_work __tracepoint_android_vh_binder_wakeup_ilocked __tracepoint_android_vh_build_sched_domains + __tracepoint_android_vh_cgroup_set_task + __tracepoint_android_vh_check_bpf_syscall + __tracepoint_android_vh_check_file_open + __tracepoint_android_vh_check_mmap_file __tracepoint_android_vh_check_uninterruptible_tasks __tracepoint_android_vh_check_uninterruptible_tasks_dn + __tracepoint_android_vh_clear_mask_adjust + __tracepoint_android_vh_clear_reserved_fmt_fields + __tracepoint_android_vh_commit_creds __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit __tracepoint_android_vh_do_send_sig_info + __tracepoint_android_vh_em_cpu_energy __tracepoint_android_vh_exclude_reserved_zone + __tracepoint_android_vh_exit_creds __tracepoint_android_vh_exit_mm + __tracepoint_android_vh_fill_ext_fmtdesc + __tracepoint_android_vh_finish_update_load_avg_se __tracepoint_android_vh_ftrace_dump_buffer __tracepoint_android_vh_ftrace_format_check __tracepoint_android_vh_ftrace_oops_enter @@ -1911,35 +2783,64 @@ __tracepoint_android_vh_get_from_fragment_pool __tracepoint_android_vh_gpio_block_read __tracepoint_android_vh_include_reserved_zone + __tracepoint_android_vh_iommu_alloc_iova + __tracepoint_android_vh_iommu_free_iova __tracepoint_android_vh_iommu_setup_dma_ops __tracepoint_android_vh_ipi_stop + __tracepoint_android_vh_ipv6_gen_linklocal_addr __tracepoint_android_vh_jiffies_update + __tracepoint_android_vh_kmalloc_slab __tracepoint_android_vh_logbuf __tracepoint_android_vh_mutex_unlock_slowpath __tracepoint_android_vh_mutex_wait_finish __tracepoint_android_vh_mutex_wait_start + __tracepoint_android_vh_override_creds + __tracepoint_android_vh_prepare_update_load_avg_se __tracepoint_android_vh_printk_hotplug __tracepoint_android_vh_process_killed + __tracepoint_android_vh_revert_creds + __tracepoint_android_vh_rwsem_init __tracepoint_android_vh_rwsem_wake __tracepoint_android_vh_rwsem_wake_finish + __tracepoint_android_vh_rwsem_write_finished + __tracepoint_android_vh_save_track_hash + __tracepoint_android_vh_save_vmalloc_stack __tracepoint_android_vh_scheduler_tick + __tracepoint_android_vh_selinux_avc_insert + __tracepoint_android_vh_selinux_avc_lookup + __tracepoint_android_vh_selinux_avc_node_delete + __tracepoint_android_vh_selinux_avc_node_replace + __tracepoint_android_vh_selinux_is_initialized + __tracepoint_android_vh_set_memory_nx + __tracepoint_android_vh_set_memory_ro + __tracepoint_android_vh_set_memory_rw + __tracepoint_android_vh_set_memory_x + __tracepoint_android_vh_set_module_permit_after_init + __tracepoint_android_vh_set_module_permit_before_init + __tracepoint_android_vh_setscheduler_uclamp + __tracepoint_android_vh_set_wake_flags __tracepoint_android_vh_show_max_freq __tracepoint_android_vh_show_resume_epoch_val + __tracepoint_android_vh_show_stack_hash __tracepoint_android_vh_show_suspend_epoch_val __tracepoint_android_vh_sync_txn_recvd + __tracepoint_android_vh_syscall_prctl_finished __tracepoint_android_vh_timer_calc_index __tracepoint_android_vh_tune_inactive_ratio __tracepoint_android_vh_tune_swappiness __tracepoint_android_vh_ufs_compl_command __tracepoint_android_vh_ufs_send_command + __tracepoint_android_vh_ufs_send_tm_command __tracepoint_android_vh_update_topology_flags_workfn __tracepoint_binder_transaction_received + __tracepoint_cpu_frequency __tracepoint_cpu_frequency_limits __tracepoint_dma_fence_emit __tracepoint_gpu_mem_total __tracepoint_ipi_entry __tracepoint_ipi_raise __tracepoint_irq_handler_entry + __tracepoint_pelt_se_tp tracepoint_probe_register tracepoint_probe_register_prio tracepoint_probe_unregister @@ -1951,23 +2852,50 @@ __tracepoint_sched_stat_iowait __tracepoint_sched_stat_wait __tracepoint_sched_switch + __tracepoint_sched_update_nr_running_tp + tracepoint_srcu __tracepoint_suspend_resume + __tracepoint_task_newtask __tracepoint_task_rename + __tracepoint_xhci_urb_giveback trace_print_array_seq trace_print_flags_seq + trace_print_hex_seq trace_print_symbols_seq + __trace_puts trace_raw_output_prep trace_seq_printf trace_seq_putc + tracing_off try_module_get try_wait_for_completion tty_flip_buffer_push __tty_insert_flip_char tty_insert_flip_string_fixed_flag + tty_termios_baud_rate + tty_termios_encode_baud_rate + typec_get_drvdata + typec_mux_get_drvdata + typec_mux_register + typec_mux_set + typec_mux_unregister + typec_partner_set_identity + typec_register_partner + typec_register_port + typec_set_data_role + typec_set_orientation + typec_set_pwr_opmode + typec_set_pwr_role + typec_set_vconn_role + typec_switch_get_drvdata + typec_switch_register + typec_switch_unregister + typec_unregister_partner uart_add_one_port uart_console_device uart_console_write uart_get_baud_rate + uart_get_divisor uart_insert_char uart_parse_options uart_register_driver @@ -1989,21 +2917,30 @@ ucsi_unregister __udelay ufshcd_auto_hibern8_update + ufshcd_delay_us ufshcd_dme_get_attr ufshcd_dme_set_attr ufshcd_dump_regs ufshcd_fixup_dev_quirks ufshcd_get_local_unipro_ver + ufshcd_get_pwr_dev_param + ufshcd_hba_enable + ufshcd_hba_stop ufshcd_hold + ufshcd_link_recovery + ufshcd_make_hba_operational ufshcd_pltfrm_init ufshcd_pltfrm_resume ufshcd_pltfrm_runtime_idle ufshcd_pltfrm_runtime_resume ufshcd_pltfrm_runtime_suspend + ufshcd_pltfrm_shutdown ufshcd_pltfrm_suspend ufshcd_query_attr + ufshcd_query_attr_retry ufshcd_query_descriptor_retry ufshcd_query_flag + ufshcd_read_desc_param ufshcd_release ufshcd_remove ufshcd_shutdown @@ -2012,15 +2949,27 @@ __uio_register_device uio_unregister_device unlock_page + unpin_user_page + unpin_user_pages unregister_blkdev __unregister_chrdev unregister_chrdev_region unregister_console unregister_die_notifier unregister_ftrace_export + unregister_inet6addr_notifier + unregister_inetaddr_notifier + unregister_kprobe unregister_kretprobe unregister_module_notifier + unregister_netdev + unregister_netdevice_many + unregister_netdevice_notifier + unregister_netdevice_queue unregister_net_sysctl_table + unregister_oom_notifier + unregister_pernet_device + unregister_pernet_subsys unregister_pm_notifier unregister_reboot_notifier unregister_restart_handler @@ -2028,18 +2977,33 @@ unregister_shrinker unregister_syscore_ops unregister_sysctl_table + unregister_virtio_device + unregister_virtio_driver + up update_devfreq update_rq_clock up_read up_write + usb_add_config + usb_add_function + usb_add_gadget_udc + usb_add_hcd usb_add_phy_dev usb_alloc_coherent usb_alloc_dev usb_alloc_urb usb_assign_descriptors + usb_composite_probe usb_composite_setup_continue + usb_composite_unregister usb_control_msg + usb_copy_descriptors + usb_create_hcd + usb_create_shared_hcd + usb_debug_root + usb_del_gadget_udc usb_deregister + usb_disabled usb_ep_alloc_request usb_ep_autoconfig usb_ep_dequeue @@ -2048,23 +3012,70 @@ usb_ep_free_request usb_ep_queue usb_ep_set_halt + usb_ep_set_maxpacket_limit usb_find_common_endpoints usb_free_all_descriptors usb_free_coherent usb_free_urb usb_function_register usb_function_unregister + usb_gadget_connect + usb_gadget_disconnect + usb_gadget_giveback_request + usb_gadget_map_request + usb_gadget_probe_driver + usb_gadget_set_selfpowered + usb_gadget_set_state + usb_gadget_unmap_request usb_gadget_wakeup + usb_get_dr_mode + usb_get_function + usb_get_function_instance + usb_get_maximum_speed + usb_hcd_is_primary_hcd + usb_hcd_poll_rh_status usb_ifnum_to_if usb_interface_id + usbnet_change_mtu + usbnet_disconnect + usbnet_get_drvinfo + usbnet_get_endpoints + usbnet_get_link + usbnet_get_link_ksettings + usbnet_get_msglevel + usbnet_get_stats64 + usbnet_link_change + usbnet_nway_reset + usbnet_open + usbnet_probe + usbnet_read_cmd + usbnet_read_cmd_nopm + usbnet_resume + usbnet_set_link_ksettings + usbnet_set_msglevel + usbnet_skb_return + usbnet_start_xmit + usbnet_stop + usbnet_suspend + usbnet_tx_timeout + usbnet_unlink_rx_urbs + usbnet_update_max_qlen + usbnet_write_cmd + usbnet_write_cmd_async + usbnet_write_cmd_nopm usb_phy_set_charger_current usb_poison_urb usb_put_dev + usb_put_function usb_put_function_instance + usb_put_hcd usb_register_driver usb_register_notify + usb_remove_function + usb_remove_hcd usb_remove_phy usb_role_switch_find_by_fwnode + usb_role_switch_get usb_role_switch_get_drvdata usb_role_switch_register usb_role_switch_set_role @@ -2076,53 +3087,190 @@ usb_unregister_notify __usecs_to_jiffies usleep_range + uuid_null + v4l2_async_notifier_add_fwnode_subdev + v4l2_async_notifier_add_subdev + v4l2_async_notifier_cleanup + v4l2_async_notifier_init + v4l2_async_notifier_register + v4l2_async_notifier_unregister + v4l2_async_register_subdev + v4l2_async_subdev_notifier_register + v4l2_async_unregister_subdev v4l2_compat_ioctl32 + v4l2_ctrl_find + v4l2_ctrl_g_ctrl + v4l2_ctrl_g_ctrl_int64 v4l2_ctrl_handler_free + v4l2_ctrl_handler_init_class + v4l2_ctrl_handler_setup + __v4l2_ctrl_modify_range + v4l2_ctrl_new_custom + v4l2_ctrl_new_std + v4l2_ctrl_new_std_menu + v4l2_ctrl_new_std_menu_items + v4l2_ctrl_request_complete + v4l2_ctrl_request_setup + __v4l2_ctrl_s_ctrl + v4l2_ctrl_subdev_subscribe_event + v4l2_ctrl_subscribe_event v4l2_device_register + v4l2_device_register_subdev + __v4l2_device_register_subdev_nodes v4l2_device_unregister + v4l2_device_unregister_subdev + v4l2_event_queue + v4l2_event_queue_fh + v4l2_event_subdev_unsubscribe + v4l2_event_subscribe + v4l2_event_unsubscribe + v4l2_fh_add + v4l2_fh_del + v4l2_fh_exit + v4l2_fh_init + v4l2_fh_is_singular + v4l2_fh_open + __v4l2_find_nearest_size + v4l2_format_info + v4l2_i2c_subdev_init + v4l2_m2m_buf_copy_metadata + v4l2_m2m_buf_queue + v4l2_m2m_buf_remove + v4l2_m2m_ctx_init + v4l2_m2m_ctx_release + v4l2_m2m_dqbuf + v4l2_m2m_fop_mmap + v4l2_m2m_fop_poll + v4l2_m2m_get_curr_priv + v4l2_m2m_get_vq + v4l2_m2m_init + v4l2_m2m_ioctl_create_bufs + v4l2_m2m_ioctl_dqbuf + v4l2_m2m_ioctl_expbuf + v4l2_m2m_ioctl_prepare_buf + v4l2_m2m_ioctl_qbuf + v4l2_m2m_ioctl_querybuf + v4l2_m2m_ioctl_reqbufs + v4l2_m2m_ioctl_streamoff + v4l2_m2m_ioctl_streamon + v4l2_m2m_job_finish + v4l2_m2m_next_buf + v4l2_m2m_qbuf + v4l2_m2m_register_media_controller + v4l2_m2m_release + v4l2_m2m_request_queue + v4l2_m2m_resume + v4l2_m2m_streamoff + v4l2_m2m_suspend + v4l2_m2m_try_schedule + v4l2_m2m_unregister_media_controller + v4l2_pipeline_link_notify + v4l2_src_change_event_subscribe + v4l2_subdev_call_wrappers + v4l2_subdev_init + v4l2_subdev_link_validate + v4l2_subdev_link_validate_default + v4l_bound_align_image vabits_actual + vb2_buffer_done + vb2_common_vm_ops + vb2_create_framevec + vb2_destroy_framevec + vb2_dma_contig_memops + vb2_fop_mmap + vb2_fop_poll + vb2_fop_release + vb2_ioctl_create_bufs + vb2_ioctl_dqbuf + vb2_ioctl_expbuf + vb2_ioctl_prepare_buf + vb2_ioctl_qbuf + vb2_ioctl_querybuf + vb2_ioctl_reqbufs + vb2_ioctl_streamoff + vb2_ioctl_streamon + vb2_ops_wait_finish + vb2_ops_wait_prepare + vb2_plane_cookie + vb2_plane_vaddr + vb2_queue_init + vb2_queue_release + vb2_request_object_is_buffer + vb2_request_queue + vb2_request_validate vchan_dma_desc_free_list vchan_find_desc vchan_init vchan_tx_desc_free vchan_tx_submit + verify_pkcs7_signature vfree vfs_fsync video_devdata + video_device_alloc + video_device_release video_device_release_empty video_ioctl2 __video_register_device video_unregister_device + virtqueue_add_inbuf + virtqueue_add_outbuf + virtqueue_detach_unused_buf + virtqueue_get_buf + virtqueue_get_vring_size + virtqueue_kick + virtqueue_kick_prepare + virtqueue_notify vmalloc vmalloc_nr_pages vmalloc_to_page vmalloc_to_pfn + vmalloc_user vmap + vm_event_states vmf_insert_pfn + vm_get_page_prot vm_insert_page vm_iomap_memory vm_map_pages + vm_map_ram vm_node_stat vm_unmapped_area + vm_unmap_ram vm_zone_stat + vring_del_virtqueue + vring_interrupt + vring_new_virtqueue vscnprintf vsnprintf + vsprintf vunmap vzalloc wait_for_completion wait_for_completion_interruptible wait_for_completion_interruptible_timeout + wait_for_completion_io_timeout wait_for_completion_killable wait_for_completion_killable_timeout wait_for_completion_timeout + wait_woken __wake_up wake_up_if_idle + __wake_up_locked wake_up_process wakeup_source_add + wakeup_source_create + wakeup_source_destroy wakeup_source_register wakeup_source_remove wakeup_source_unregister __warn_printk + watchdog_init_timeout + watchdog_set_restart_priority + wireless_nlevent_flush + woken_wake_function + work_busy + work_on_cpu ww_mutex_lock ww_mutex_unlock __xa_alloc @@ -2132,11 +3280,18 @@ xa_find_after xa_load xa_store + xhci_add_endpoint xhci_alloc_command xhci_alloc_erst + xhci_check_bandwidth + xhci_drop_endpoint xhci_free_command + xhci_gen_setup xhci_get_endpoint_index + xhci_get_ep_ctx + xhci_init_driver xhci_queue_stop_endpoint + xhci_reset_bandwidth xhci_ring_alloc xhci_ring_cmd_db xhci_ring_free From cb7a5d58a9936f2a93648988cbaff2a34bd37c8d Mon Sep 17 00:00:00 2001 From: Sudarshan Rajagopalan Date: Wed, 22 Sep 2021 15:56:36 -0700 Subject: [PATCH 53/94] FROMLIST: arm64: mm: update max_pfn after memory hotplug After new memory blocks have been hotplugged, max_pfn and max_low_pfn needs updating to reflect on new PFNs being hot added to system. Without this patch, debug-related functions that use max_pfn such as get_max_dump_pfn() or read_page_owner() will not work with any page in memory that is hot-added after boot. Link: https://lore.kernel.org/lkml/cover.1632853776.git.quic_cgoldswo@quicinc.com/T/#md084740c6377eb12369bfe6eb8786f4689dc8498 Bug: 200171991 Fixes: 4ab215061554 ("arm64: Add memory hotplug support") Signed-off-by: Sudarshan Rajagopalan Signed-off-by: Chris Goldsworthy Acked-by: David Hildenbrand Cc: Florian Fainelli Cc: Georgi Djakov Change-Id: I1cb50889299957c871c498e19aa05778c7583c9d --- arch/arm64/mm/mmu.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index 91a21d36d38c..c42c53e9e10c 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -1506,6 +1506,11 @@ int arch_add_memory(int nid, u64 start, u64 size, if (ret) __remove_pgd_mapping(swapper_pg_dir, __phys_to_virt(start), size); + else { + max_pfn = PFN_UP(start + size); + max_low_pfn = max_pfn; + } + return ret; } From 18d90d0300323cb30c8160b162d431241c0023c7 Mon Sep 17 00:00:00 2001 From: fengmingli Date: Thu, 30 Sep 2021 04:35:10 +0800 Subject: [PATCH 54/94] ANDROID: GKI: Add a symbol to symbol list Leaf changes summary: 1 artifact changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 1 Added function: [A] 'function int ucsi_send_command(ucsi*, u64, void*, size_t)' Bug: 194373509 Change-Id: I93707355c2e37aef92d243e5ad324bac5487a804 Signed-off-by: fengmingli --- android/abi_gki_aarch64.xml | 530 ++++++++++++----------------------- android/abi_gki_aarch64_vivo | 1 + 2 files changed, 181 insertions(+), 350 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 3717a976479a..6740b508fa70 100755 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -4791,6 +4791,7 @@ + @@ -5989,81 +5990,81 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6994,36 +6995,36 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -11625,7 +11626,6 @@ - @@ -13792,7 +13792,6 @@ - @@ -20418,11 +20417,6 @@ - - - - - @@ -22205,17 +22199,6 @@ - - - - - - - - - - - @@ -23619,7 +23602,6 @@ - @@ -31352,32 +31334,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -33780,9 +33737,6 @@ - - - @@ -42181,11 +42135,7 @@ - - - - - + @@ -43590,9 +43540,6 @@ - - - @@ -45801,32 +45748,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -47319,7 +47240,6 @@ - @@ -50700,11 +50620,6 @@ - - - - - @@ -62348,14 +62263,6 @@ - - - - - - - - @@ -64665,11 +64572,6 @@ - - - - - @@ -68565,7 +68467,6 @@ - @@ -69221,11 +69122,7 @@ - - - - - + @@ -73855,11 +73752,6 @@ - - - - - @@ -77690,7 +77582,6 @@ - @@ -78255,7 +78146,6 @@ - @@ -80305,12 +80195,6 @@ - - - - - - @@ -81990,7 +81874,6 @@ - @@ -84489,53 +84372,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -85978,7 +85814,6 @@ - @@ -87163,7 +86998,6 @@ - @@ -90881,17 +90715,6 @@ - - - - - - - - - - - @@ -111791,9 +111614,9 @@ - - - + + + @@ -119188,105 +119011,105 @@ - - - + + + - - - + + + - - - - - + + + + + - - - + + + - - - - - + + + + + - - - + + + - - - - - + + + + + - - + + - - - + + + - - + + - - - + + + - - - + + + - - - - + + + + - - + + - - + + - - + + - - - - + + + + - - + + - - + + - - - + + + @@ -122661,8 +122484,8 @@ - - + + @@ -125317,8 +125140,8 @@ - - + + @@ -126192,10 +126015,10 @@ - + - + @@ -131284,9 +131107,9 @@ - - - + + + @@ -134134,18 +133957,18 @@ - - - + + + - - - + + + @@ -134183,9 +134006,9 @@ - - - + + + @@ -134240,61 +134063,61 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - - + + + + + + - - + + @@ -134339,11 +134162,11 @@ - - - - - + + + + + @@ -134390,12 +134213,12 @@ - - + + - - + + @@ -134903,10 +134726,10 @@ - - - - + + + + @@ -136064,6 +135887,13 @@ + + + + + + + diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo index d77ac86a2619..464ac490992d 100644 --- a/android/abi_gki_aarch64_vivo +++ b/android/abi_gki_aarch64_vivo @@ -1876,6 +1876,7 @@ ucsi_destroy ucsi_get_drvdata ucsi_register + ucsi_send_command ucsi_set_drvdata ucsi_unregister __udelay From f1a5448fa72a43c7704112a11c01b7a7347e5315 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 12:36:36 +0800 Subject: [PATCH 55/94] ANDROID: GKI: rockchip: Convert symbol to order by module This patch does not add any new symbol, but make the symbol list order by the module. Bug: 194515348 Signed-off-by: Kever Yang Change-Id: I0bec2f90a46ec92d7e391ab9e9c49180c4d87ae9 --- android/abi_gki_aarch64_rockchip | 2057 +++++++++++++----------------- 1 file changed, 905 insertions(+), 1152 deletions(-) diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 6c4b0be95bf0..8acf86496782 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -1,286 +1,46 @@ [abi_symbol_list] - __ClearPageMovable - __SetPageMovable - ___ratelimit +# commonly used symbols + add_uevent_var + aes_encrypt + alloc_chrdev_region __alloc_disk_node __alloc_pages_nodemask - __alloc_percpu - __alloc_percpu_gfp - __alloc_skb + alloc_workqueue __arch_copy_from_user __arch_copy_to_user - __arm_smccc_hvc - __arm_smccc_smc - __bitmap_and - __bitmap_andnot - __bitmap_clear - __bitmap_set - __bitmap_weight - __blk_rq_map_sg - __cfi_slowpath - __check_object_size - __class_create - __class_register - __clk_get_name - __const_udelay - __cpu_online_mask - __cpu_possible_mask - __cpufreq_driver_target - __cpuhp_remove_state - __cpuhp_setup_state - __cpuhp_state_add_instance - __cpuhp_state_remove_instance - __crypto_memneq - __crypto_xor - __dev_kfree_skb_any - __devm_iio_device_register - __devm_of_phy_provider_register - __devm_regmap_init - __devm_regmap_init_i2c - __devm_regmap_init_mmio_clk - __devm_reset_control_get - __do_once_done - __do_once_start - __drm_err - __fdget - __free_pages - __get_free_pages - __getblk_gfp - __i2c_smbus_xfer - __i2c_transfer - __init_rwsem - __init_swait_queue_head - __init_waitqueue_head - __ioremap - __ipv6_addr_type - __kfifo_alloc - __kfifo_free - __kfifo_in - __kfifo_out - __kfifo_to_user - __kmalloc - __list_add_valid - __list_del_entry_valid - __lock_buffer - __lock_page - __log_post_read_mmio - __log_read_mmio - __log_write_mmio - __mdiobus_register - __memcpy_fromio - __memcpy_toio - __memset_io - __module_get - __msecs_to_jiffies - __mutex_init - __napi_alloc_skb - __napi_schedule - __netdev_alloc_skb - __netif_napi_del - __num_online_cpus - __of_reset_control_get - __page_pinner_migration_failed - __pci_register_driver - __per_cpu_offset - __platform_driver_register - __pm_runtime_disable - __pm_runtime_idle - __pm_runtime_resume - __pm_runtime_set_status - __pm_runtime_suspend - __pm_runtime_use_autosuspend - __printk_ratelimit - __pskb_pull_tail - __put_net - __put_page - __put_task_struct - __rcu_read_lock - __rcu_read_unlock - __refrigerator - __register_chrdev - __rtc_register_device - __scsi_add_device - __scsi_execute - __scsi_print_sense - __sdhci_add_host - __sg_page_iter_next - __sg_page_iter_start - __sock_create - __spi_alloc_controller - __spi_register_driver - __srcu_read_unlock - __stack_chk_fail - __stack_chk_guard - __sw_hweight64 - __sysfs_match_string - __task_pid_nr_ns - __tasklet_hi_schedule - __tasklet_schedule - __traceiter_rwmmio_post_read - __traceiter_rwmmio_read - __traceiter_rwmmio_write - __tracepoint_rwmmio_post_read - __tracepoint_rwmmio_read - __tracepoint_rwmmio_write - __tty_insert_flip_char - __unregister_chrdev - __usecs_to_jiffies - __v4l2_ctrl_modify_range - __v4l2_find_nearest_size - __wait_on_buffer - __wake_up - __warn_printk - _copy_from_iter_full - _copy_to_iter - _ctype - _dev_crit - _dev_err - _dev_info - _dev_warn - _raw_read_lock - _raw_read_lock_bh - _raw_read_lock_irqsave - _raw_read_unlock - _raw_read_unlock_bh - _raw_read_unlock_irqrestore - _raw_spin_lock - _raw_spin_lock_bh - _raw_spin_lock_irq - _raw_spin_lock_irqsave - _raw_spin_trylock - _raw_spin_trylock_bh - _raw_spin_unlock - _raw_spin_unlock_bh - _raw_spin_unlock_irq - _raw_spin_unlock_irqrestore - _raw_write_lock - _raw_write_lock_bh - _raw_write_lock_irq - _raw_write_lock_irqsave - _raw_write_unlock - _raw_write_unlock_bh - _raw_write_unlock_irq - _raw_write_unlock_irqrestore - add_timer - add_uevent_var - add_wait_queue - aes_encrypt - aes_expandkey - alloc_anon_inode - alloc_chrdev_region - alloc_etherdev_mqs - alloc_netdev_mqs - alloc_pages_exact - alloc_workqueue - amba_driver_register - amba_driver_unregister - arc4_crypt - arc4_setkey arm64_const_caps_ready arm64_use_ng_mappings - async_schedule_node atomic_notifier_chain_register - atomic_notifier_chain_unregister - autoremove_wake_function - backlight_device_register - backlight_device_unregister - bcmp - bd_set_nr_sectors bdget_disk bdput - bio_endio - bitmap_find_next_zero_area_off - bitmap_free - bitmap_zalloc - blk_alloc_queue blk_cleanup_queue - blk_execute_rq blk_execute_rq_nowait - blk_freeze_queue_start - blk_get_queue - blk_get_request - blk_mq_alloc_request - blk_mq_alloc_request_hctx - blk_mq_alloc_tag_set - blk_mq_complete_request - blk_mq_complete_request_remote - blk_mq_delay_kick_requeue_list - blk_mq_end_request blk_mq_free_request - blk_mq_free_tag_set - blk_mq_freeze_queue - blk_mq_freeze_queue_wait - blk_mq_freeze_queue_wait_timeout blk_mq_init_queue - blk_mq_map_queues - blk_mq_pci_map_queues blk_mq_quiesce_queue - blk_mq_requeue_request - blk_mq_start_request - blk_mq_tag_to_rq blk_mq_tagset_busy_iter blk_mq_tagset_wait_completed_request - blk_mq_unfreeze_queue - blk_mq_unique_tag blk_mq_unquiesce_queue - blk_mq_update_nr_hw_queues - blk_poll - blk_put_queue - blk_put_request - blk_queue_chunk_sectors - blk_queue_dma_alignment blk_queue_flag_clear blk_queue_flag_set - blk_queue_flag_test_and_set blk_queue_io_min blk_queue_io_opt blk_queue_logical_block_size blk_queue_max_discard_sectors - blk_queue_max_discard_segments - blk_queue_max_hw_sectors - blk_queue_max_segments blk_queue_max_write_zeroes_sectors blk_queue_physical_block_size - blk_queue_virt_boundary - blk_queue_write_cache - blk_rq_map_kern blk_rq_map_user - blk_rq_map_user_iov blk_rq_unmap_user - blk_set_queue_dying - blk_status_to_errno - blk_sync_queue - blk_verify_command - bpf_trace_run1 - bpf_trace_run2 - bpf_trace_run3 - bpf_trace_run4 - bpf_trace_run5 - bpf_trace_run6 - bpf_trace_run7 - bt_err - bus_register - bus_register_notifier - bus_unregister - bus_unregister_notifier - call_netdevice_notifiers - call_rcu - cancel_delayed_work cancel_delayed_work_sync cancel_work_sync capable - cdev_add - cdev_alloc - cdev_del cdev_device_add cdev_device_del cdev_init - ce_aes_expandkey + __cfi_slowpath + __check_object_size + __class_create class_destroy - class_find_device - class_interface_unregister - class_unregister - cleanup_srcu_struct clk_bulk_disable clk_bulk_enable clk_bulk_prepare @@ -288,372 +48,145 @@ clk_disable clk_enable clk_get + __clk_get_name clk_get_rate - clk_hw_get_name - clk_hw_set_rate_range - clk_notifier_register - clk_notifier_unregister clk_prepare clk_put clk_register - clk_round_rate clk_set_rate clk_unprepare clk_unregister - cma_alloc - cma_get_name - cma_release compat_ptr_ioctl complete completion_done - consume_skb - contig_page_data + __const_udelay + __cpufreq_driver_target + cpufreq_register_governor + cpufreq_unregister_governor cpu_have_feature + __cpuhp_remove_state + __cpuhp_setup_state cpu_hwcap_keys cpu_hwcaps - cpu_number - cpufreq_cpu_get_raw - cpufreq_enable_boost_support - cpufreq_freq_attr_scaling_available_freqs - cpufreq_freq_attr_scaling_boost_freqs - cpufreq_generic_frequency_table_verify - cpufreq_generic_get - cpufreq_generic_suspend - cpufreq_register_driver - cpufreq_register_governor - cpufreq_table_index_unsorted - cpufreq_unregister_driver - cpufreq_unregister_governor cpumask_next - cpus_read_lock - cpus_read_unlock - crc32_be - crc32_le - crypto_aead_decrypt - crypto_aead_encrypt - crypto_aead_setauthsize - crypto_aead_setkey - crypto_ahash_digest - crypto_ahash_setkey - crypto_alloc_aead - crypto_alloc_ahash - crypto_alloc_base - crypto_alloc_shash - crypto_comp_compress - crypto_comp_decompress - crypto_dequeue_request + cpu_number + __cpu_online_mask + __cpu_possible_mask crypto_destroy_tfm - crypto_enqueue_request - crypto_has_alg crypto_inc - crypto_init_queue + __crypto_memneq crypto_register_aead - crypto_register_ahash crypto_register_alg crypto_register_scomp crypto_register_shash - crypto_register_skcipher - crypto_req_done - crypto_sha1_finup - crypto_sha1_update - crypto_shash_final - crypto_shash_setkey - crypto_shash_update crypto_unregister_aead - crypto_unregister_ahash crypto_unregister_alg crypto_unregister_scomp crypto_unregister_shash - crypto_unregister_skcipher - csum_partial - current_time - d_add - d_make_root - datagram_poll - deactivate_locked_super - debugfs_create_dir + __crypto_xor debugfs_create_file - debugfs_create_regset32 - debugfs_create_u32 - debugfs_create_x64 - debugfs_remove - debugfs_rename - dec_zone_page_state - default_llseek - default_wake_function - deferred_free - del_gendisk - del_timer - del_timer_sync delayed_work_timer_fn - desc_to_gpio + del_gendisk + del_timer_sync destroy_workqueue - dev_close - dev_driver_string + _dev_err dev_err_probe - dev_fetch_sw_netstats dev_fwnode - dev_get_by_name - dev_get_by_name_rcu - dev_get_regmap - dev_open - dev_pm_opp_free_cpufreq_table - dev_pm_opp_get_max_transition_latency - dev_pm_opp_get_opp_count - dev_pm_opp_get_opp_table - dev_pm_opp_get_sharing_cpus - dev_pm_opp_get_suspend_opp_freq - dev_pm_opp_init_cpufreq_table - dev_pm_opp_of_cpumask_add_table - dev_pm_opp_of_cpumask_remove_table - dev_pm_opp_of_get_sharing_cpus - dev_pm_opp_of_register_em - dev_pm_opp_put_opp_table - dev_pm_opp_put_regulators - dev_pm_opp_set_rate - dev_pm_opp_set_regulators - dev_pm_opp_set_sharing_cpus - dev_pm_qos_expose_latency_tolerance - dev_pm_qos_hide_latency_tolerance - dev_pm_qos_update_user_latency_tolerance - dev_printk - dev_queue_xmit - dev_set_name - device_add device_add_disk device_create - device_del device_destroy - device_for_each_child device_get_child_node_count device_get_next_child_node - device_get_phy_mode - device_init_wakeup device_initialize + device_init_wakeup device_property_present - device_property_read_string - device_property_read_string_array device_property_read_u32_array - device_property_read_u8_array - device_register - device_release_driver - device_remove_file_self - device_set_wakeup_capable - device_set_wakeup_enable - device_wakeup_enable + _dev_info devm_add_action - devm_blk_ksm_init devm_clk_bulk_get + devm_clk_bulk_get_all devm_clk_get devm_clk_get_optional devm_clk_hw_register - devm_clk_register devm_extcon_dev_allocate devm_extcon_dev_register - devm_extcon_register_notifier - devm_free_irq - devm_get_clk_from_child - devm_gpio_request_one - devm_gpiochip_add_data_with_key + devm_fwnode_gpiod_get_index devm_gpiod_get devm_gpiod_get_index devm_gpiod_get_optional - devm_iio_channel_get - devm_iio_device_alloc devm_input_allocate_device devm_ioremap devm_ioremap_resource - devm_kasprintf devm_kfree devm_kmalloc devm_kmemdup - devm_kstrdup - devm_kvasprintf devm_led_classdev_register_ext - devm_mfd_add_devices devm_nvmem_register devm_of_clk_add_hw_provider + __devm_of_phy_provider_register devm_phy_create - devm_phy_get - devm_pinctrl_register + devm_pinctrl_get devm_platform_get_and_ioremap_resource devm_platform_ioremap_resource devm_power_supply_register devm_pwm_get - devm_regmap_field_alloc + __devm_regmap_init_i2c + __devm_regmap_init_mmio_clk devm_regulator_bulk_get devm_regulator_get devm_regulator_get_optional devm_regulator_register - devm_request_any_context_irq devm_request_threaded_irq devm_reset_control_array_get - devm_rtc_allocate_device + __devm_reset_control_get devm_snd_dmaengine_pcm_register - devm_snd_soc_register_card devm_snd_soc_register_component - devm_spi_register_controller - devm_thermal_zone_of_sensor_register - devm_usb_get_phy devres_add devres_alloc_node devres_free - devres_release + dev_set_name + _dev_warn disable_irq - disk_end_io_acct - disk_start_io_acct dma_alloc_attrs - dma_async_device_register - dma_async_device_unregister - dma_async_tx_descriptor_init dma_buf_export - dma_buf_fd - dma_buf_put - dma_contiguous_default_area dma_free_attrs - dma_get_required_mask - dma_get_slave_channel dma_heap_add - dma_heap_get_dev - dma_heap_get_drvdata dma_heap_get_name - dma_map_page_attrs - dma_map_resource dma_map_sg_attrs - dma_max_mapping_size - dma_pool_alloc - dma_pool_create - dma_pool_destroy - dma_pool_free dma_release_channel dma_request_chan dma_set_coherent_mask dma_set_mask dma_sync_sg_for_cpu dma_sync_sg_for_device - dma_sync_single_for_cpu - dma_sync_single_for_device - dma_unmap_page_attrs - dma_unmap_resource dma_unmap_sg_attrs - dmabuf_page_pool_alloc - dmabuf_page_pool_create - dmabuf_page_pool_destroy - dmabuf_page_pool_free - dmaengine_unmap_put - dmam_alloc_attrs - dmam_free_coherent - down down_read down_write - dput - dql_completed - dql_reset - driver_register driver_unregister drm_add_edid_modes - drm_atomic_helper_connector_destroy_state - drm_atomic_helper_connector_duplicate_state - drm_atomic_helper_connector_reset - drm_bridge_add - drm_bridge_remove - drm_connector_attach_encoder - drm_connector_cleanup - drm_connector_init drm_connector_update_edid_property - drm_detect_hdmi_monitor - drm_display_mode_from_videomode + drm_display_info_set_bus_formats drm_get_edid - drm_hdmi_avi_infoframe_from_display_mode - drm_helper_hpd_irq_event - drm_helper_probe_single_connector_modes - drm_mode_create - drm_mode_duplicate - drm_mode_probed_add - drm_mode_set_name drm_mode_vrefresh - drm_panel_add - drm_panel_disable - drm_panel_init - drm_panel_remove - drm_panel_unprepare - dump_stack enable_irq - eth_commit_mac_addr_change - eth_mac_addr - eth_platform_get_mac_address - eth_prepare_mac_addr_change - eth_type_trans - eth_validate_addr - ether_setup - ethtool_op_get_ts_info - event_triggers_call extcon_get_edev_by_phandle - extcon_get_property extcon_get_state extcon_set_state_sync failure_tracking - fasync_helper - find_next_bit find_next_zero_bit - find_vma finish_wait - flush_dcache_page + flush_delayed_work flush_work - flush_workqueue fpsimd_context_busy - fput - free_irq - free_netdev + __free_pages free_pages - free_pages_exact - free_percpu - freezing_slow_path - fsync_bdev - full_name_hash - fwnode_device_is_available - fwnode_get_name - fwnode_graph_get_next_endpoint - fwnode_graph_get_port_parent - fwnode_graph_get_remote_endpoint - fwnode_graph_get_remote_port_parent - fwnode_graph_parse_endpoint fwnode_handle_put - fwnode_property_get_reference_args fwnode_property_present fwnode_property_read_string fwnode_property_read_u32_array - fwnode_property_read_u64_array - gcd - gen_pool_add_owner - gen_pool_alloc_algo_owner - gen_pool_best_fit - gen_pool_create - gen_pool_destroy - gen_pool_dma_alloc_align - gen_pool_dma_zalloc_align - gen_pool_free_owner - gen_pool_set_algo - gen_pool_virt_to_phys - generic_mii_ioctl - genphy_resume - get_cpu_device - get_cpu_idle_time_us get_device - get_kernel_pages - get_random_bytes - get_random_u32 - get_sg_io_hdr - get_zeroed_page - gf128mul_lle gic_nonsecure_priorities - glob_match - gpio_to_desc - gpiochip_add_pin_range - gpiochip_generic_free - gpiochip_generic_request - gpiochip_get_data - gpiod_count + gpiod_cansleep gpiod_direction_output gpiod_get_optional gpiod_get_value @@ -661,454 +194,158 @@ gpiod_set_consumer_name gpiod_set_value gpiod_set_value_cansleep - hdmi_audio_infoframe_init - hdmi_audio_infoframe_pack - hdmi_avi_infoframe_pack - hex_asc_upper - hid_add_device - hid_allocate_device hid_debug - hid_destroy_device - hid_input_report - hid_parse_report - hrtimer_cancel - hrtimer_init - hrtimer_start_range_ns - hwrng_register - hwrng_unregister i2c_adapter_type i2c_add_adapter - i2c_add_numbered_adapter - i2c_bus_type i2c_del_adapter i2c_del_driver - i2c_for_each_dev i2c_get_adapter - i2c_parse_fw_timings i2c_put_adapter i2c_register_driver - i2c_smbus_read_byte - i2c_smbus_read_byte_data + __i2c_smbus_xfer i2c_smbus_xfer i2c_transfer i2c_transfer_buffer_flags - i2c_verify_client - ida_alloc_range - ida_destroy - ida_free idr_alloc idr_destroy idr_find - idr_for_each - idr_get_next idr_preload idr_remove - iio_alloc_pollfunc iio_buffer_init iio_buffer_put - iio_channel_get_all - iio_dealloc_pollfunc - iio_device_attach_buffer - iio_get_channel_type - iio_get_time_ns - iio_push_to_buffers - iio_read_channel_processed - iio_trigger_notify_done - import_iovec - in4_pton - in6_pton - in_egroup_p - inc_zone_page_state - init_net - init_pseudo - init_srcu_struct + __init_rwsem + __init_swait_queue_head init_timer_key - init_uts_ns init_wait_entry - input_alloc_absinfo - input_allocate_device + __init_waitqueue_head input_event - input_free_device - input_mt_init_slots - input_mt_report_slot_state - input_mt_sync_frame input_register_device input_set_abs_params - input_set_capability - input_unregister_device - iounmap - iput - ipv6_stub - irq_get_irq_data irq_set_irq_wake - irq_stat - is_vmalloc_addr jiffies - jiffies_to_msecs kasan_flag_enabled - kasprintf - kern_mount - kern_unmount kernel_neon_begin kernel_neon_end - kernel_sendmsg - kernel_sigaction - key_put - keyring_alloc kfree kfree_const - kfree_sensitive - kfree_skb - kill_anon_super - kill_fasync - kimage_voffset + __kmalloc kmalloc_caches - kmalloc_order_trace - kmem_cache_alloc kmem_cache_alloc_trace - kmem_cache_create - kmem_cache_create_usercopy - kmem_cache_destroy - kmem_cache_free - kmemdup - kobject_get - kobject_put - kobject_uevent_env - kstrdup kstrdup_const - kstrndup - kstrtobool - kstrtobool_from_user kstrtoint - kstrtoll - kstrtou16 - kstrtou8 kstrtouint kstrtoull - kthread_cancel_delayed_work_sync - kthread_create_on_node - kthread_create_worker - kthread_delayed_work_timer_fn - kthread_destroy_worker - kthread_mod_delayed_work - kthread_queue_delayed_work ktime_get - ktime_get_coarse_real_ts64 ktime_get_mono_fast_ns - ktime_get_real_ts64 - ktime_get_snapshot - ktime_get_with_offset kvfree kvmalloc_node led_classdev_register_ext led_classdev_unregister - list_sort - lock_sock_nested - lockref_get - loops_per_jiffy - lzo1x_1_compress + __list_add_valid + __list_del_entry_valid + __log_post_read_mmio + __log_read_mmio + __log_write_mmio lzo1x_decompress_safe - lzorle1x_1_compress - match_int - match_token - mdiobus_alloc_size - mdiobus_free - mdiobus_get_phy - mdiobus_read - mdiobus_unregister - mdiobus_write media_entity_pads_init - memchr - memchr_inv memcpy memdup_user - memmove - memparse - mempool_alloc - mempool_alloc_slab - mempool_create - mempool_create_node - mempool_destroy - mempool_free - mempool_free_slab - mempool_kfree - mempool_kmalloc - memremap memset - memset64 memstart_addr - memunmap - mii_check_media - mii_ethtool_get_link_ksettings - mii_ethtool_gset - mii_ethtool_set_link_ksettings - mii_link_ok - mii_nway_restart - mipi_dsi_attach - mipi_dsi_detach - mipi_dsi_driver_register_full - mipi_dsi_driver_unregister - mktime64 - mmc_add_host - mmc_alloc_host - mmc_can_gpio_cd - mmc_cqe_request_done - mmc_detect_change - mmc_free_host - mmc_gpio_get_cd - mmc_gpio_get_ro mmc_of_parse - mmc_regulator_get_supply - mmc_regulator_set_ocr - mmc_regulator_set_vqmmc - mmc_remove_host - mmc_request_done - mmc_send_tuning - mod_delayed_work_on mod_timer module_layout module_put + __msecs_to_jiffies msleep msleep_interruptible - mutex_is_locked + __mutex_init mutex_lock - mutex_lock_interruptible mutex_unlock - n_tty_ioctl_helper - napi_complete_done - napi_disable - napi_gro_receive - napi_schedule_prep - net_ratelimit - netdev_alert - netdev_err - netdev_info - netdev_pick_tx - netdev_update_features - netdev_upper_dev_link - netdev_upper_dev_unlink - netdev_warn - netif_carrier_off - netif_carrier_on - netif_device_attach - netif_device_detach - netif_napi_add - netif_rx - netif_rx_ni - netif_schedule_queue - netif_set_real_num_rx_queues - netif_set_real_num_tx_queues - netif_stacked_transfer_operstate - netif_tx_stop_all_queues - netif_tx_wake_queue - new_inode no_llseek - nonseekable_open - noop_llseek nr_cpu_ids - ns_to_timespec64 of_alias_get_id - of_clk_add_hw_provider of_clk_add_provider of_clk_del_provider - of_clk_get of_clk_get_by_name - of_clk_hw_onecell_get - of_clk_hw_simple_get of_clk_src_simple_get of_count_phandle_with_args of_device_get_match_data of_device_is_available of_device_is_compatible - of_dma_controller_free - of_dma_controller_register - of_find_device_by_node - of_find_i2c_adapter_by_node + of_find_node_by_name of_find_property of_get_child_by_name - of_get_compatible_child - of_get_mac_address - of_get_named_gpio_flags of_get_next_available_child of_get_next_child - of_get_parent of_get_property of_get_regulator_init_data - of_graph_parse_endpoint of_irq_get_byname - of_machine_is_compatible of_match_device of_match_node - of_mdiobus_register of_node_name_eq - of_parse_phandle - of_parse_phandle_with_args - of_phy_is_fixed_link of_phy_simple_xlate - of_platform_device_create - of_property_count_elems_of_size of_property_read_string of_property_read_string_helper of_property_read_u32_index - of_property_read_variable_u16_array of_property_read_variable_u32_array - of_property_read_variable_u8_array - of_pwm_xlate_with_flags - page_endio - page_mapping + of_regulator_match + __page_pinner_migration_failed panic_notifier_list - param_array_ops - param_get_int - param_get_uint param_ops_bool - param_ops_byte - param_ops_charp param_ops_int - param_ops_string param_ops_uint - param_ops_ulong - param_ops_ushort - param_set_uint - pci_alloc_irq_vectors_affinity - pci_device_is_present - pci_disable_device - pci_disable_pcie_error_reporting - pci_enable_device_mem - pci_enable_pcie_error_reporting - pci_free_irq - pci_free_irq_vectors - pci_intx - pci_irq_vector - pci_load_saved_state - pci_match_id - pci_read_config_byte - pci_read_config_dword - pci_read_config_word - pci_release_selected_regions - pci_request_irq - pci_request_selected_regions - pci_restore_state - pci_save_state - pci_select_bars - pci_set_master - pci_set_power_state - pci_unregister_driver - pci_write_config_dword - pci_write_config_word - pcibios_resource_to_bus - pcie_aspm_enabled - pcim_enable_device - perf_trace_buf_alloc - perf_trace_run_bpf_submit - pfn_valid - phy_attached_info - phy_disconnect - phy_ethtool_get_link_ksettings - phy_ethtool_nway_reset - phy_ethtool_set_link_ksettings - phy_exit - phy_init - phy_init_eee - phy_mii_ioctl - phy_power_off - phy_power_on - phy_print_status - phy_reset - phy_set_mode_ext - phy_start - phy_stop - phylink_connect_phy - phylink_create - phylink_destroy - phylink_of_phy_connect - phylink_set_port_modes - pin_user_pages_fast - pinconf_generic_dt_node_to_map - pinctrl_dev_get_drvdata - pinctrl_gpio_direction_input - pinctrl_gpio_direction_output - pinctrl_pm_select_default_state - pinctrl_pm_select_sleep_state - pinctrl_utils_free_map - platform_device_put - platform_device_register_full + __per_cpu_offset + pinctrl_lookup_state + pinctrl_select_state + __platform_driver_register platform_driver_unregister platform_get_irq - platform_get_irq_byname - platform_get_irq_byname_optional - platform_get_irq_optional platform_get_resource - platform_get_resource_byname pm_power_off + __pm_relax + __pm_runtime_disable pm_runtime_enable - pm_runtime_forbid pm_runtime_force_resume pm_runtime_force_suspend - pm_runtime_get_if_active - pm_runtime_irq_safe + __pm_runtime_idle + __pm_runtime_resume pm_runtime_set_autosuspend_delay - pm_suspend_global_flags - pm_wakeup_dev_event - policy_has_boost_freq - posix_clock_register - posix_clock_unregister + __pm_runtime_set_status + __pm_runtime_suspend + __pm_runtime_use_autosuspend + __pm_stay_awake power_supply_changed power_supply_get_drvdata - power_supply_register - power_supply_unregister preempt_schedule preempt_schedule_notrace - prepare_to_wait prepare_to_wait_event - print_hex_dump printk - proc_create - proc_create_single_data - proc_mkdir - proto_register - proto_unregister - pskb_expand_head put_device put_disk - put_sg_io_hdr + __put_page + __put_task_struct pwm_apply_state - pwmchip_add - pwmchip_remove queue_delayed_work_on queue_work_on - rational_best_approximation - rb_erase - rb_first - rb_insert_color - rb_next - rcu_barrier + ___ratelimit + _raw_spin_lock + _raw_spin_lock_bh + _raw_spin_lock_irqsave + _raw_spin_unlock + _raw_spin_unlock_bh + _raw_spin_unlock_irqrestore rdev_get_drvdata rdev_get_id - read_cache_page refcount_warn_saturate regcache_cache_only regcache_mark_dirty regcache_sync - register_blkdev + __register_chrdev register_chrdev_region - register_filesystem - register_netdev - register_netdevice - register_netdevice_notifier - register_pernet_device - register_pernet_subsys register_reboot_notifier - register_shrinker - regmap_add_irq_chip regmap_bulk_read regmap_bulk_write - regmap_del_irq_chip - regmap_field_read - regmap_field_update_bits_base - regmap_irq_get_domain - regmap_multi_reg_write - regmap_raw_read - regmap_raw_write regmap_read regmap_update_bits_base regmap_write @@ -1118,244 +355,377 @@ regulator_disable_regmap regulator_enable regulator_enable_regmap - regulator_get regulator_get_voltage regulator_get_voltage_sel_regmap regulator_is_enabled regulator_is_enabled_regmap regulator_list_voltage_linear regulator_list_voltage_linear_range - regulator_map_voltage_iterate regulator_map_voltage_linear regulator_map_voltage_linear_range - regulator_put - regulator_register_notifier - regulator_set_active_discharge_regmap regulator_set_voltage_sel_regmap regulator_set_voltage_time_sel - regulator_unregister_notifier - release_firmware - release_sock remap_pfn_range - remove_proc_entry - remove_wait_queue - request_firmware - request_threaded_irq reset_control_assert reset_control_deassert - reset_control_put - reset_control_reset revalidate_disk_size - rfkill_alloc - rfkill_destroy - rfkill_register - rfkill_unregister - round_jiffies_relative - rt_mutex_lock - rt_mutex_trylock - rt_mutex_unlock - rtc_time64_to_tm - rtc_tm_to_time64 - rtc_update_irq - rtnl_lock - rtnl_trylock - rtnl_unlock - sb800_prefetch scatterwalk_map_and_copy schedule schedule_timeout - schedule_timeout_interruptible - schedule_timeout_uninterruptible - scmi_driver_register - scmi_driver_unregister scnprintf - scsi_add_host_with_dma - scsi_autopm_get_device - scsi_autopm_put_device - scsi_block_when_processing_errors - scsi_command_size_tbl scsi_compat_ioctl scsi_device_get - scsi_device_lookup scsi_device_put - scsi_host_put scsi_ioctl scsi_ioctl_block_when_processing_errors - scsi_normalize_sense - scsi_print_sense_hdr - scsi_remove_device - scsi_remove_host sdev_prefix_printk - sdhci_add_host - sdhci_cleanup_host - sdhci_cqe_disable - sdhci_cqe_enable - sdhci_cqe_irq - sdhci_enable_clk - sdhci_get_property - sdhci_pltfm_free - sdhci_pltfm_init - sdhci_remove_host - sdhci_reset - sdhci_set_bus_width - sdhci_setup_host - sdio_signal_irq - send_sig seq_lseek seq_printf - seq_putc - seq_puts seq_read - set_capacity_revalidate_and_notify - set_disk_ro - set_freezable - set_page_dirty - set_user_nice - sg_alloc_table - sg_alloc_table_from_pages - sg_copy_from_buffer - sg_copy_to_buffer sg_free_table - sg_init_one - sg_init_table - sg_miter_next - sg_miter_start - sg_miter_stop sg_next - sg_pcopy_from_buffer - sg_pcopy_to_buffer - sg_scsi_ioctl - sigprocmask - simple_dir_operations - simple_read_from_buffer - simple_strtoul + simple_strtol single_open single_release - sk_alloc - sk_free - skb_add_rx_frag - skb_clone - skb_copy_bits - skb_copy_datagram_iter - skb_copy_expand - skb_dequeue - skb_pull - skb_pull_rcsum - skb_push - skb_put - skb_queue_purge - skb_queue_tail - skb_recv_datagram - skb_trim - skb_tstamp_tx skcipher_walk_aead_decrypt skcipher_walk_aead_encrypt skcipher_walk_done - snd_ctl_add - snd_ctl_new1 - snd_pcm_add_chmap_ctls - snd_pcm_create_iec958_consumer_hw_params snd_pcm_format_width - snd_pcm_hw_constraint_eld - snd_pcm_hw_constraint_list - snd_soc_card_jack_new + snd_soc_component_read snd_soc_component_update_bits snd_soc_component_write - snd_soc_dai_link_set_capabilities - snd_soc_dai_set_sysclk - snd_soc_dai_set_tdm_slot - snd_soc_dapm_add_routes - snd_soc_dapm_disable_pin_unlocked snd_soc_dapm_force_enable_pin_unlocked snd_soc_dapm_get_enum_double - snd_soc_dapm_get_pin_switch snd_soc_dapm_get_volsw - snd_soc_dapm_info_pin_switch snd_soc_dapm_put_enum_double - snd_soc_dapm_put_pin_switch snd_soc_dapm_put_volsw - snd_soc_dapm_sync_unlocked snd_soc_get_enum_double snd_soc_get_volsw snd_soc_info_enum_double snd_soc_info_volsw snd_soc_jack_add_gpios snd_soc_jack_report - snd_soc_of_get_dai_name - snd_soc_of_parse_audio_routing - snd_soc_of_parse_audio_simple_widgets - snd_soc_of_parse_aux_devs - snd_soc_of_parse_card_name - snd_soc_of_parse_daifmt - snd_soc_of_parse_node_prefix - snd_soc_of_parse_tdm_slot - snd_soc_params_to_frame_size - snd_soc_pm_ops snd_soc_put_enum_double snd_soc_put_volsw - snd_soc_runtime_calc_hw snprintf - sock_init_data - sock_no_accept - sock_no_listen - sock_no_mmap - sock_no_shutdown - sock_no_socketpair - sock_queue_rcv_skb - sock_release - sort - spi_controller_resume - spi_controller_suspend - spi_finalize_current_transfer - spi_setup - spi_sync sprintf sscanf - stpcpy - strcasecmp - strchr + __stack_chk_fail + __stack_chk_guard strcmp - strcpy - strcspn - stream_open - strim - strlcat strlcpy strlen - strncasecmp - strnchr strncmp - strncpy strnlen - strpbrk - strscpy - strsep - strspn - synchronize_irq - synchronize_net synchronize_rcu - synchronize_srcu - sys_tz syscon_node_to_regmap syscon_regmap_lookup_by_phandle - sysfs_add_file_to_group + sysfs_create_file_ns sysfs_create_group sysfs_create_link - sysfs_remove_file_from_group sysfs_remove_group sysfs_remove_link - sysfs_streq - system_freezing_cnt - system_long_wq - system_state system_wq + __tasklet_schedule + __traceiter_rwmmio_post_read + __traceiter_rwmmio_read + __traceiter_rwmmio_write + __tracepoint_rwmmio_post_read + __tracepoint_rwmmio_read + __tracepoint_rwmmio_write + __unregister_chrdev + unregister_chrdev_region + unregister_reboot_notifier + up_read + up_write + usleep_range + uuid_null + v4l2_async_register_subdev + v4l2_async_unregister_subdev + v4l2_ctrl_handler_free + v4l2_ctrl_handler_init_class + v4l2_ctrl_handler_setup + v4l2_ctrl_new_std + v4l2_ctrl_new_std_menu_items + v4l2_i2c_subdev_init + vabits_actual + vfree + vmap + vunmap + wait_for_completion + __wake_up + wakeup_source_add + __warn_printk + +# required by adc-keys.ko + devm_iio_channel_get + iio_get_channel_type + iio_read_channel_processed + +# required by aes-ce-ccm.ko + ce_aes_expandkey + +# required by ch.ko + noop_llseek + param_array_ops + scsi_device_lookup + __scsi_execute + scsi_print_sense_hdr + +# required by clk-pwm.ko + of_clk_add_hw_provider + of_clk_hw_simple_get + +# required by clk-scmi.ko + clk_hw_set_rate_range + of_clk_hw_onecell_get + scmi_driver_register + scmi_driver_unregister + +# required by cma_heap.ko + cma_alloc + cma_get_name + cma_release + dma_contiguous_default_area + dma_heap_get_drvdata + sg_alloc_table_from_pages + +# required by cpufreq-dt.ko + cpufreq_enable_boost_support + cpufreq_freq_attr_scaling_available_freqs + cpufreq_freq_attr_scaling_boost_freqs + cpufreq_generic_frequency_table_verify + cpufreq_generic_get + cpufreq_generic_suspend + cpufreq_register_driver + cpufreq_unregister_driver + dev_pm_opp_free_cpufreq_table + dev_pm_opp_get_max_transition_latency + dev_pm_opp_get_opp_count + dev_pm_opp_get_sharing_cpus + dev_pm_opp_get_suspend_opp_freq + dev_pm_opp_init_cpufreq_table + dev_pm_opp_of_cpumask_add_table + dev_pm_opp_of_cpumask_remove_table + dev_pm_opp_of_get_sharing_cpus + dev_pm_opp_of_register_em + dev_pm_opp_put_regulators + dev_pm_opp_set_rate + dev_pm_opp_set_regulators + dev_pm_opp_set_sharing_cpus + get_cpu_device + policy_has_boost_freq + +# required by cpufreq_ondemand.ko + cpufreq_cpu_get_raw + cpufreq_table_index_unsorted + cpus_read_lock + cpus_read_unlock + get_cpu_idle_time_us + +# required by cw2015_battery.ko + device_property_read_u8_array + power_supply_get_battery_info + power_supply_put_battery_info + regmap_raw_read + regmap_raw_write + +# required by dw_mmc-rockchip.ko + mmc_send_tuning + +# required by dw_mmc.ko + debugfs_create_u32 + debugfs_create_x64 + del_timer + device_property_read_string_array + dmam_alloc_attrs + mmc_add_host + mmc_alloc_host + mmc_can_gpio_cd + mmc_detect_change + mmc_free_host + mmc_gpio_get_cd + mmc_gpio_get_ro + mmc_regulator_get_supply + mmc_regulator_set_ocr + mmc_regulator_set_vqmmc + mmc_remove_host + mmc_request_done + sdio_signal_irq + sg_miter_next + sg_miter_start + sg_miter_stop tasklet_init - tasklet_kill - tasklet_setup - thermal_zone_device_disable - thermal_zone_device_enable - thermal_zone_device_update - time64_to_tm + +# required by dw_wdt.ko + debugfs_create_dir + debugfs_create_regset32 + debugfs_remove + platform_get_irq_optional + watchdog_init_timeout + watchdog_register_device + watchdog_set_restart_priority + watchdog_unregister_device + +# required by fan53555.ko + gpiod_get_raw_value + gpiod_set_raw_value + +# required by ghash-ce.ko + aes_expandkey + gf128mul_lle + +# required by gpio-regulator.ko + devm_kstrdup + gpiod_count + of_property_count_elems_of_size + +# required by grf.ko + of_find_matching_node_and_match + +# required by hid-alps.ko + down + input_alloc_absinfo + input_allocate_device + input_free_device + input_mt_init_slots + input_mt_report_slot_state + input_mt_sync_frame + up + +# required by hid-holtek-kbd.ko + usb_ifnum_to_if + +# required by hid-ntrig.ko + usb_control_msg + +# required by i2c-dev.ko + bus_register_notifier + bus_unregister_notifier + device_for_each_child + i2c_bus_type + i2c_for_each_dev + i2c_verify_client + +# required by i2c-gpio.ko + desc_to_gpio + i2c_bit_add_numbered_bus + +# required by i2c-hid.ko + dev_printk + free_irq + hid_add_device + hid_allocate_device + hid_destroy_device + hid_input_report + hid_parse_report + i2c_smbus_read_byte + irq_get_irq_data + request_threaded_irq + +# required by i2c-mux.ko + i2c_add_numbered_adapter + __i2c_transfer + rt_mutex_lock + rt_mutex_trylock + rt_mutex_unlock + +# required by i2c-rk3x.ko + clk_notifier_register + clk_notifier_unregister + i2c_parse_fw_timings + +# required by industrialio-buffer-cb.ko + bitmap_free + bitmap_zalloc + iio_channel_get_all + +# required by industrialio-triggered-buffer.ko + iio_alloc_pollfunc + iio_dealloc_pollfunc + iio_device_attach_buffer + +# required by io-domain.ko + _dev_crit + regulator_register_notifier + regulator_unregister_notifier + +# required by kfifo_buf.ko + __kfifo_alloc + __kfifo_free + __kfifo_in + __kfifo_to_user + mutex_lock_interruptible + +# required by leds-gpio.ko + devm_gpio_request_one + gpio_to_desc + +# required by ledtrig-heartbeat.ko + atomic_notifier_chain_unregister + +# required by lzo-rle.ko + lzorle1x_1_compress + +# required by lzo.ko + lzo1x_1_compress + +# required by nvme-core.ko + bd_set_nr_sectors + blk_execute_rq + blk_freeze_queue_start + blk_mq_alloc_request + blk_mq_alloc_request_hctx + blk_mq_complete_request + blk_mq_delay_kick_requeue_list + blk_mq_end_request + blk_mq_freeze_queue + blk_mq_freeze_queue_wait + blk_mq_freeze_queue_wait_timeout + blk_mq_requeue_request + blk_mq_unfreeze_queue + blk_mq_unique_tag + blk_poll + blk_queue_chunk_sectors + blk_queue_dma_alignment + blk_queue_flag_test_and_set + blk_queue_max_discard_segments + blk_queue_max_hw_sectors + blk_queue_max_segments + blk_queue_virt_boundary + blk_queue_write_cache + blk_rq_map_kern + blk_set_queue_dying + blk_status_to_errno + blk_sync_queue + bpf_trace_run1 + bpf_trace_run2 + bpf_trace_run3 + cleanup_srcu_struct + device_add + device_del + device_remove_file_self + dev_pm_qos_expose_latency_tolerance + dev_pm_qos_hide_latency_tolerance + dev_pm_qos_update_user_latency_tolerance + event_triggers_call + ida_alloc_range + ida_destroy + ida_free + init_srcu_struct + kasprintf + kobject_uevent_env + ktime_get_with_offset + list_sort + memchr_inv + param_ops_byte + param_ops_ulong + perf_trace_buf_alloc + perf_trace_run_bpf_submit + set_capacity_revalidate_and_notify + set_disk_ro + __srcu_read_unlock + synchronize_srcu trace_event_buffer_commit trace_event_buffer_reserve trace_event_ignore_this_pid @@ -1367,152 +737,535 @@ trace_seq_printf trace_seq_putc try_module_get - try_wait_for_completion - tty_flip_buffer_push - tty_hangup - tty_insert_flip_string_fixed_flag - tty_kref_put - tty_mode_ioctl - tty_port_tty_get - tty_register_ldisc - tty_termios_baud_rate - tty_termios_encode_baud_rate - tty_unregister_ldisc - unlock_page - unpin_user_pages - unregister_blkdev - unregister_chrdev_region - unregister_filesystem - unregister_netdev - unregister_netdevice_many - unregister_netdevice_notifier - unregister_netdevice_queue - unregister_pernet_device - unregister_pernet_subsys - unregister_reboot_notifier - unregister_shrinker - up - up_read - up_write - usb_add_gadget_udc - usb_add_hcd - usb_alloc_coherent - usb_alloc_urb - usb_amd_dev_put - usb_amd_quirk_pll_disable - usb_amd_quirk_pll_enable - usb_anchor_urb - usb_bulk_msg - usb_calc_bus_time - usb_control_msg - usb_create_hcd - usb_debug_root - usb_del_gadget_udc - usb_deregister - usb_disabled - usb_ep_set_maxpacket_limit - usb_find_common_endpoints - usb_free_coherent - usb_free_urb - usb_gadget_giveback_request - usb_gadget_map_request - usb_gadget_set_state - usb_gadget_unmap_request - usb_get_dr_mode - usb_hc_died - usb_hcd_check_unlink_urb - usb_hcd_giveback_urb - usb_hcd_link_urb_to_ep - usb_hcd_map_urb_for_dma - usb_hcd_platform_shutdown - usb_hcd_poll_rh_status - usb_hcd_resume_root_hub - usb_hcd_unlink_urb_from_ep - usb_hcds_loaded - usb_hub_clear_tt_buffer - usb_ifnum_to_if - usb_kill_anchored_urbs - usb_kill_urb - usb_phy_set_charger_current - usb_poison_urb - usb_put_dev - usb_put_hcd - usb_register_driver - usb_remove_hcd - usb_role_switch_get_drvdata - usb_role_switch_register - usb_role_switch_unregister - usb_root_hub_lost_power - usb_speed_string - usb_submit_urb - usb_unanchor_urb - usbnet_change_mtu - usbnet_disconnect - usbnet_get_drvinfo - usbnet_get_endpoints - usbnet_get_link - usbnet_get_link_ksettings - usbnet_get_msglevel - usbnet_get_stats64 - usbnet_link_change - usbnet_nway_reset - usbnet_open - usbnet_probe - usbnet_read_cmd - usbnet_read_cmd_nopm - usbnet_resume - usbnet_set_link_ksettings - usbnet_set_msglevel - usbnet_skb_return - usbnet_start_xmit - usbnet_stop - usbnet_suspend - usbnet_tx_timeout - usbnet_write_cmd - usbnet_write_cmd_async - usbnet_write_cmd_nopm - usleep_range - utf16s_to_utf8s - uuid_null - v4l2_async_notifier_add_fwnode_subdev - v4l2_async_notifier_add_subdev - v4l2_async_notifier_cleanup - v4l2_async_notifier_init - v4l2_async_notifier_unregister - v4l2_async_register_subdev - v4l2_async_subdev_notifier_register - v4l2_async_unregister_subdev - v4l2_ctrl_auto_cluster - v4l2_ctrl_handler_free - v4l2_ctrl_handler_init_class - v4l2_ctrl_handler_setup - v4l2_ctrl_new_std - v4l2_ctrl_new_std_menu - v4l2_ctrl_new_std_menu_items - v4l2_i2c_subdev_init - vabits_actual - vfree - vmalloc - vmalloc_to_page - vmap - vscnprintf - vunmap - vzalloc - wait_for_completion - wait_for_completion_interruptible - wait_for_completion_io_timeout - wait_for_completion_killable - wait_for_completion_timeout - wait_woken - wake_up_process - watchdog_init_timeout - watchdog_register_device - watchdog_set_restart_priority - watchdog_unregister_device - woken_wake_function xa_destroy xa_erase xa_find xa_find_after xa_load xa_store + +# required by nvme.ko + async_schedule_node + blk_get_queue + blk_mq_alloc_tag_set + blk_mq_complete_request_remote + blk_mq_free_tag_set + blk_mq_map_queues + blk_mq_pci_map_queues + blk_mq_start_request + blk_mq_tag_to_rq + blk_mq_update_nr_hw_queues + blk_put_queue + __blk_rq_map_sg + device_release_driver + dma_map_page_attrs + dma_max_mapping_size + dma_pool_alloc + dma_pool_create + dma_pool_destroy + dma_pool_free + dma_unmap_page_attrs + __do_once_done + __do_once_start + flush_workqueue + __ioremap + iounmap + mempool_alloc + mempool_create_node + mempool_destroy + mempool_free + mempool_kfree + mempool_kmalloc + param_get_uint + param_set_uint + pci_alloc_irq_vectors_affinity + pcibios_resource_to_bus + pci_device_is_present + pci_disable_device + pci_disable_pcie_error_reporting + pcie_aspm_enabled + pci_enable_device_mem + pci_enable_pcie_error_reporting + pci_free_irq + pci_free_irq_vectors + pci_irq_vector + pci_load_saved_state + pci_read_config_word + __pci_register_driver + pci_release_selected_regions + pci_request_irq + pci_request_selected_regions + pci_restore_state + pci_save_state + pci_select_bars + pci_set_master + pci_unregister_driver + pm_suspend_global_flags + sg_init_table + __sw_hweight64 + sysfs_remove_file_from_group + wait_for_completion_io_timeout + +# required by nvmem-rockchip-otp.ko + __bitmap_set + +# required by optee-rng.ko + driver_register + hwrng_register + hwrng_unregister + +# required by optee.ko + alloc_pages_exact + __arm_smccc_hvc + __arm_smccc_smc + device_property_read_string + device_register + find_vma + free_pages_exact + idr_get_next + kimage_voffset + ktime_get_real_ts64 + memremap + memunmap + pfn_valid + wait_for_completion_interruptible + +# required by ov2680.ko + v4l2_ctrl_auto_cluster + v4l2_ctrl_new_std_menu + __v4l2_find_nearest_size + +# required by ov5695.ko + pm_runtime_get_if_active + strscpy + __v4l2_ctrl_modify_range + +# required by panel-simple.ko + drm_bus_flags_from_videomode + drm_connector_set_panel_orientation + drm_display_mode_from_videomode + drm_mode_create + drm_mode_duplicate + drm_mode_probed_add + drm_mode_set_name + drm_panel_add + drm_panel_disable + drm_panel_init + drm_panel_of_backlight + drm_panel_remove + drm_panel_unprepare + mipi_dsi_attach + mipi_dsi_dcs_write_buffer + mipi_dsi_detach + mipi_dsi_driver_register_full + mipi_dsi_driver_unregister + mipi_dsi_generic_write + of_drm_get_panel_orientation + of_find_i2c_adapter_by_node + of_get_display_timing + of_parse_phandle + videomode_from_timing + +# required by phy-rockchip-inno-dsidphy.ko + devm_platform_ioremap_resource_byname + platform_get_resource_byname + +# required by phy-rockchip-inno-usb2.ko + devm_extcon_register_notifier + wakeup_source_remove + +# required by phy-rockchip-typec.ko + extcon_get_property + +# required by phy-rockchip-usb.ko + __of_reset_control_get + +# required by pinctrl-rk805.ko + devm_gpiochip_add_data_with_key + devm_pinctrl_register + gpiochip_add_pin_range + gpiochip_generic_free + gpiochip_generic_request + gpiochip_get_data + pinconf_generic_dt_node_to_map + pinctrl_dev_get_drvdata + pinctrl_gpio_direction_input + pinctrl_gpio_direction_output + pinctrl_utils_free_map + +# required by pl330.ko + amba_driver_register + amba_driver_unregister + devm_free_irq + dma_async_device_register + dma_async_device_unregister + dma_async_tx_descriptor_init + dmaengine_unmap_put + dma_get_slave_channel + dma_map_resource + dma_unmap_resource + loops_per_jiffy + of_dma_controller_free + of_dma_controller_register + pm_runtime_irq_safe + seq_puts + tasklet_kill + tasklet_setup + +# required by pwm-regulator.ko + regulator_map_voltage_iterate + +# required by pwm-rockchip.ko + of_pwm_xlate_with_flags + pwmchip_add + pwmchip_remove + +# required by pwm_bl.ko + backlight_device_register + backlight_device_unregister + gpiod_get_direction + pwm_free + pwm_request + +# required by reboot-mode.ko + devres_release + kernel_kobj + +# required by rk805-pwrkey.ko + devm_request_any_context_irq + input_set_capability + +# required by rk808.ko + devm_mfd_add_devices + i2c_smbus_read_byte_data + kobject_create_and_add + platform_device_add + platform_device_alloc + platform_device_put + regmap_add_irq_chip + regmap_del_irq_chip + regmap_irq_get_domain + +# required by rockchip-rng.ko + devm_hwrng_register + devm_of_iomap + +# required by rockchip.ko + __genphy_config_aneg + genphy_resume + genphy_soft_reset + genphy_suspend + mdiobus_read + mdiobus_write + phy_drivers_register + phy_drivers_unregister + +# required by rockchip_saradc.ko + devm_iio_device_alloc + __devm_iio_device_register + find_next_bit + iio_get_time_ns + iio_push_to_buffers + iio_trigger_notify_done + wait_for_completion_timeout + +# required by rockchip_thermal.ko + devm_thermal_zone_of_sensor_register + nvmem_cell_put + nvmem_cell_read + of_nvmem_cell_get + print_hex_dump + thermal_zone_device_disable + thermal_zone_device_enable + thermal_zone_device_update + +# required by rtc-rk808.ko + devm_rtc_allocate_device + __rtc_register_device + rtc_time64_to_tm + rtc_tm_to_time64 + rtc_update_irq + +# required by sdhci-of-dwcmshc.ko + devm_clk_bulk_get_optional + dma_get_required_mask + sdhci_add_host + sdhci_get_property + sdhci_pltfm_free + sdhci_pltfm_init + sdhci_remove_host + sdhci_request + sdhci_reset + sdhci_resume_host + sdhci_set_bus_width + sdhci_suspend_host + +# required by sg.ko + blk_get_request + blk_put_request + blk_rq_map_user_iov + blk_verify_command + cdev_add + cdev_alloc + cdev_del + class_interface_unregister + fasync_helper + get_sg_io_hdr + import_iovec + jiffies_to_msecs + kill_fasync + __module_get + nonseekable_open + put_sg_io_hdr + _raw_read_lock_irqsave + _raw_read_unlock_irqrestore + _raw_write_lock_irq + _raw_write_lock_irqsave + _raw_write_unlock_irq + _raw_write_unlock_irqrestore + scsi_autopm_get_device + scsi_autopm_put_device + scsi_block_when_processing_errors + scsi_command_size_tbl + scsi_normalize_sense + __scsi_print_sense + scsi_register_interface + sg_scsi_ioctl + __task_pid_nr_ns + +# required by sha1-ce.ko + crypto_sha1_finup + crypto_sha1_update + irq_stat + +# required by sii902x.ko + drm_atomic_helper_connector_destroy_state + drm_atomic_helper_connector_duplicate_state + drm_atomic_helper_connector_reset + drm_bridge_add + drm_bridge_remove + drm_connector_attach_encoder + drm_connector_cleanup + drm_connector_init + drm_detect_hdmi_monitor + __drm_err + drm_hdmi_avi_infoframe_from_display_mode + drm_helper_hpd_irq_event + drm_helper_probe_single_connector_modes + hdmi_audio_infoframe_pack + hdmi_avi_infoframe_pack + of_graph_parse_endpoint + of_property_read_variable_u8_array + platform_device_register_full + +# required by slip.ko + alloc_netdev_mqs + consume_skb + dev_close + free_netdev + __netdev_alloc_skb + netif_rx_ni + netif_tx_wake_queue + __rcu_read_lock + __rcu_read_unlock + register_netdevice + rtnl_lock + rtnl_unlock + skb_put + tty_hangup + tty_mode_ioctl + tty_register_ldisc + tty_unregister_ldisc + unregister_netdev + +# required by snd-soc-cx2072x.ko + __devm_regmap_init + regmap_multi_reg_write + snd_soc_params_to_frame_size + +# required by snd-soc-es8316.ko + snd_pcm_hw_constraint_list + snd_soc_dapm_disable_pin_unlocked + snd_soc_dapm_sync_unlocked + +# required by snd-soc-hdmi-codec.ko + hdmi_audio_infoframe_init + snd_ctl_add + snd_ctl_new1 + snd_pcm_add_chmap_ctls + snd_pcm_create_iec958_consumer_hw_params + snd_pcm_hw_constraint_eld + snd_soc_dapm_add_routes + +# required by snd-soc-rk3328.ko + of_machine_is_compatible + +# required by snd-soc-rockchip-pdm.ko + clk_round_rate + rational_best_approximation + +# required by snd-soc-simple-card-utils.ko + devm_get_clk_from_child + devm_kasprintf + devm_kvasprintf + of_get_named_gpio_flags + snd_soc_card_jack_new + snd_soc_dai_set_sysclk + snd_soc_dai_set_tdm_slot + snd_soc_dapm_get_pin_switch + snd_soc_dapm_info_pin_switch + snd_soc_dapm_put_pin_switch + snd_soc_of_parse_audio_routing + snd_soc_of_parse_audio_simple_widgets + snd_soc_of_parse_card_name + snd_soc_of_parse_daifmt + snd_soc_runtime_calc_hw + +# required by snd-soc-simple-card.ko + devm_snd_soc_register_card + of_get_parent + of_parse_phandle_with_args + snd_soc_dai_link_set_capabilities + snd_soc_of_get_dai_name + snd_soc_of_parse_aux_devs + snd_soc_of_parse_node_prefix + snd_soc_of_parse_tdm_slot + snd_soc_pm_ops + +# required by spi-rockchip.ko + devm_spi_register_controller + of_property_read_variable_u16_array + pinctrl_pm_select_default_state + pinctrl_pm_select_sleep_state + __spi_alloc_controller + spi_controller_resume + spi_controller_suspend + spi_finalize_current_transfer + +# required by spidev.ko + _raw_spin_lock_irq + _raw_spin_unlock_irq + __spi_register_driver + spi_setup + spi_sync + stream_open + +# required by system_heap.ko + deferred_free + dmabuf_page_pool_alloc + dmabuf_page_pool_create + dmabuf_page_pool_destroy + dmabuf_page_pool_free + dma_heap_get_dev + sg_alloc_table + __sg_page_iter_next + __sg_page_iter_start + vmalloc + +# required by tee.ko + bus_register + bus_unregister + class_find_device + crypto_alloc_shash + crypto_shash_final + crypto_shash_update + dma_buf_fd + dma_buf_put + gen_pool_add_owner + gen_pool_alloc_algo_owner + gen_pool_best_fit + gen_pool_create + gen_pool_destroy + gen_pool_free_owner + gen_pool_set_algo + gen_pool_virt_to_phys + get_kernel_pages + in_egroup_p + pin_user_pages_fast + unpin_user_pages + +# required by test_power.ko + param_get_int + power_supply_register + power_supply_unregister + strncasecmp + strncpy + +# required by tps65132-regulator.ko + regulator_set_active_discharge_regmap + +# required by v4l2-fwnode.ko + fwnode_device_is_available + fwnode_get_name + fwnode_graph_get_next_endpoint + fwnode_graph_get_port_parent + fwnode_graph_get_remote_endpoint + fwnode_graph_get_remote_port_parent + fwnode_graph_parse_endpoint + fwnode_property_get_reference_args + fwnode_property_read_u64_array + v4l2_async_notifier_add_fwnode_subdev + v4l2_async_notifier_add_subdev + v4l2_async_notifier_cleanup + v4l2_async_notifier_init + v4l2_async_notifier_unregister + v4l2_async_subdev_notifier_register + +# required by zram.ko + __alloc_percpu + bio_endio + blk_alloc_queue + __class_register + class_unregister + __cpuhp_state_add_instance + __cpuhp_state_remove_instance + crypto_alloc_base + crypto_comp_compress + crypto_comp_decompress + crypto_has_alg + disk_end_io_acct + disk_start_io_acct + flush_dcache_page + free_percpu + fsync_bdev + __get_free_pages + idr_for_each + kstrtou16 + memparse + memset64 + mutex_is_locked + __num_online_cpus + page_endio + register_blkdev + strcpy + __sysfs_match_string + sysfs_streq + unregister_blkdev + vzalloc + +# required by zsmalloc.ko + alloc_anon_inode + __ClearPageMovable + contig_page_data + dec_zone_page_state + inc_zone_page_state + init_pseudo + iput + kern_mount + kern_unmount + kill_anon_super + kmem_cache_alloc + kmem_cache_create + kmem_cache_destroy + kmem_cache_free + kstrdup + __lock_page + page_mapping + _raw_read_lock + _raw_read_unlock + _raw_write_lock + _raw_write_unlock + register_shrinker + __SetPageMovable + unlock_page + unregister_shrinker From 62ad82b86bd6d182c046c56f650b068d675969b0 Mon Sep 17 00:00:00 2001 From: Woogeun Lee Date: Thu, 30 Sep 2021 13:33:33 +0900 Subject: [PATCH 56/94] ANDROID: ABI: update allowed list for galaxy Leaf changes summary: 84 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 67 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 17 Added variables 67 Added functions: [A] 'function int __hid_register_driver(hid_driver*, module*, const char*)' [A] 'function int __hid_request(hid_device*, hid_report*, int)' [A] 'function tty_driver* __tty_alloc_driver(unsigned int, module*, unsigned long int)' [A] 'function int __usb_get_extra_descriptor(char*, unsigned int, unsigned char, void**, size_t)' [A] 'function int cdc_ncm_bind_common(usbnet*, usb_interface*, u8, int)' [A] 'function int cdc_ncm_change_mtu(net_device*, int)' [A] 'function sk_buff* cdc_ncm_fill_tx_frame(usbnet*, sk_buff*, __le32)' [A] 'function int cdc_ncm_rx_verify_ndp16(sk_buff*, int)' [A] 'function int cdc_ncm_rx_verify_nth16(cdc_ncm_ctx*, sk_buff*)' [A] 'function u8 cdc_ncm_select_altsetting(usb_interface*)' [A] 'function void cdc_ncm_unbind(usbnet*, usb_interface*)' [A] 'function int cdc_parse_cdc_header(usb_cdc_parsed_header*, usb_interface*, u8*, int)' [A] 'function u16 crc16(u16, const u8*, size_t)' [A] 'function int driver_attach(device_driver*)' [A] 'function void drm_mode_sort(list_head*)' [A] 'function void hid_hw_close(hid_device*)' [A] 'function int hid_hw_open(hid_device*)' [A] 'function int hid_hw_start(hid_device*, unsigned int)' [A] 'function void hid_hw_stop(hid_device*)' [A] 'function int hid_open_report(hid_device*)' [A] 'function int hid_report_raw_event(hid_device*, int, u8*, u32, int)' [A] 'function void hid_unregister_driver(hid_driver*)' [A] 'function void in6_dev_finish_destroy(inet6_dev*)' [A] 'function int input_ff_create_memless(input_dev*, void*, int (input_dev*, void*, ff_effect*)*)' [A] 'function int phy_connect_direct(net_device*, phy_device*, void (net_device*)*, phy_interface_t)' [A] 'function phy_device* phy_find_first(mii_bus*)' [A] 'function void phy_get_pause(phy_device*, bool*, bool*)' [A] 'function void put_tty_driver(tty_driver*)' [A] 'function int smp_call_function_single_async(int, __call_single_data*)' [A] 'function unsigned int stack_trace_save_regs(pt_regs*, unsigned long int*, unsigned int, unsigned int)' [A] 'function int tcp_register_congestion_control(tcp_congestion_ops*)' [A] 'function void tcp_reno_cong_avoid(sock*, u32, u32)' [A] 'function u32 tcp_reno_ssthresh(sock*)' [A] 'function u32 tcp_reno_undo_cwnd(sock*)' [A] 'function u32 tcp_slow_start(tcp_sock*, u32)' [A] 'function void tcp_unregister_congestion_control(tcp_congestion_ops*)' [A] 'function void tty_ldisc_deref(tty_ldisc*)' [A] 'function tty_ldisc* tty_ldisc_ref(tty_struct*)' [A] 'function void tty_port_close(tty_port*, tty_struct*, file*)' [A] 'function void tty_port_destroy(tty_port*)' [A] 'function void tty_port_hangup(tty_port*)' [A] 'function void tty_port_init(tty_port*)' [A] 'function int tty_port_open(tty_port*, tty_struct*, file*)' [A] 'function device* tty_port_register_device(tty_port*, tty_driver*, unsigned int, device*)' [A] 'function void tty_port_tty_wakeup(tty_port*)' [A] 'function int tty_register_driver(tty_driver*)' [A] 'function void tty_set_operations(tty_driver*, const tty_operations*)' [A] 'function int tty_standard_install(tty_driver*, tty_struct*)' [A] 'function void tty_termios_copy_hw(ktermios*, ktermios*)' [A] 'function void tty_unregister_device(tty_driver*, unsigned int)' [A] 'function int tty_unregister_driver(tty_driver*)' [A] 'function void tty_vhangup(tty_struct*)' [A] 'function void usb_autopm_get_interface_no_resume(usb_interface*)' [A] 'function void usb_deregister_dev(usb_interface*, usb_class_driver*)' [A] 'function usb_interface* usb_find_interface(usb_driver*, int)' [A] 'function usb_device* usb_get_dev(usb_device*)' [A] 'function usb_interface* usb_get_intf(usb_interface*)' [A] 'function const usb_device_id* usb_match_id(usb_interface*, const usb_device_id*)' [A] 'function int usb_match_one_id(usb_interface*, const usb_device_id*)' [A] 'function void usb_poison_anchored_urbs(usb_anchor*)' [A] 'function void usb_put_intf(usb_interface*)' [A] 'function int usb_register_dev(usb_interface*, usb_class_driver*)' [A] 'function int usb_set_interface(usb_device*, int, int)' [A] 'function ssize_t usb_show_dynids(usb_dynids*, char*)' [A] 'function ssize_t usb_store_new_id(usb_dynids*, const usb_device_id*, device_driver*, const char*, size_t)' [A] 'function void usb_unpoison_urb(urb*)' [A] 'function void usbnet_defer_kevent(usbnet*, int)' 17 Added variables: [A] 'tracepoint __tracepoint_android_rvh_arm64_serror_panic' [A] 'tracepoint __tracepoint_android_rvh_bad_mode' [A] 'tracepoint __tracepoint_android_rvh_dequeue_task_idle' [A] 'tracepoint __tracepoint_android_rvh_do_sea' [A] 'tracepoint __tracepoint_android_rvh_do_undefinstr' [A] 'tracepoint __tracepoint_android_vh_rtmutex_wait_finish' [A] 'tracepoint __tracepoint_android_vh_rtmutex_wait_start' [A] 'tracepoint __tracepoint_android_vh_rwsem_read_wait_finish' [A] 'tracepoint __tracepoint_android_vh_rwsem_read_wait_start' [A] 'tracepoint __tracepoint_android_vh_rwsem_write_wait_finish' [A] 'tracepoint __tracepoint_android_vh_rwsem_write_wait_start' [A] 'tracepoint __tracepoint_android_vh_sched_show_task' [A] 'tracepoint __tracepoint_android_vh_try_to_freeze_todo' [A] 'tracepoint __tracepoint_android_vh_try_to_freeze_todo_unfrozen' [A] 'tracepoint __tracepoint_android_vh_watchdog_timer_softlockup' [A] 'tracepoint __tracepoint_android_vh_wq_lockup_pool' [A] 'ktermios tty_std_termios' Bug: 201598560 Change-Id: I74e725575a435865af714d5cad17dd6c7c600692 Signed-off-by: Woogeun Lee --- android/abi_gki_aarch64.xml | 2731 +++++++++++++++++++++++++++++++- android/abi_gki_aarch64_galaxy | 103 ++ 2 files changed, 2827 insertions(+), 7 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 6740b508fa70..b4d6be9b9db2 100755 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -107,6 +107,8 @@ + + @@ -546,12 +548,14 @@ + + @@ -878,6 +882,14 @@ + + + + + + + + @@ -1067,6 +1079,7 @@ + @@ -1621,6 +1634,7 @@ + @@ -1966,6 +1980,7 @@ + @@ -2388,8 +2403,15 @@ + + + + + + + @@ -2526,6 +2548,7 @@ + @@ -2546,6 +2569,7 @@ + @@ -3472,6 +3496,7 @@ + @@ -3484,8 +3509,10 @@ + + @@ -3696,6 +3723,7 @@ + @@ -4274,6 +4302,7 @@ + @@ -4529,6 +4558,7 @@ + @@ -4621,6 +4651,12 @@ + + + + + + @@ -4737,12 +4773,28 @@ + + + + + + + + + + + + + + + + @@ -4894,6 +4946,7 @@ + @@ -4908,6 +4961,7 @@ + @@ -4925,6 +4979,7 @@ + @@ -4946,10 +5001,12 @@ + + @@ -4976,17 +5033,22 @@ + + + + + @@ -5001,14 +5063,19 @@ + + + + + @@ -5386,6 +5453,8 @@ + + @@ -5400,9 +5469,12 @@ + + + @@ -5572,13 +5644,20 @@ + + + + + + + @@ -5609,6 +5688,8 @@ + + @@ -5634,6 +5715,8 @@ + + @@ -5842,6 +5925,7 @@ + @@ -5856,6 +5940,14 @@ + + + + + + + + @@ -6186,6 +6278,7 @@ + @@ -6975,6 +7068,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7227,6 +7349,17 @@ + + + + + + + + + + + @@ -7358,6 +7491,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -8136,6 +8298,14 @@ + + + + + + + + @@ -8379,6 +8549,10 @@ + + + + @@ -9919,6 +10093,7 @@ + @@ -10274,6 +10449,7 @@ + @@ -10558,6 +10734,11 @@ + + + + + @@ -10674,6 +10855,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -10739,6 +10946,20 @@ + + + + + + + + + + + + + + @@ -10817,6 +11038,20 @@ + + + + + + + + + + + + + + @@ -11169,6 +11404,9 @@ + + + @@ -11413,6 +11651,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -11626,6 +11911,7 @@ + @@ -12074,6 +12360,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -12676,6 +13000,12 @@ + + + + + + @@ -13672,6 +14002,7 @@ + @@ -13792,6 +14123,7 @@ + @@ -13997,6 +14329,7 @@ + @@ -14870,6 +15203,11 @@ + + + + + @@ -15005,6 +15343,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -16242,8 +16603,8 @@ - - + + @@ -16904,6 +17265,7 @@ + @@ -18694,6 +19056,14 @@ + + + + + + + + @@ -19103,6 +19473,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -20226,6 +20727,7 @@ + @@ -20417,6 +20919,11 @@ + + + + + @@ -21507,6 +22014,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -22199,6 +22807,17 @@ + + + + + + + + + + + @@ -22724,6 +23343,7 @@ + @@ -23534,6 +24154,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -23602,6 +24242,7 @@ + @@ -23924,6 +24565,23 @@ + + + + + + + + + + + + + + + + + @@ -23931,6 +24589,7 @@ + @@ -24263,6 +24922,7 @@ + @@ -24577,6 +25237,14 @@ + + + + + + + + @@ -24636,7 +25304,14 @@ + + + + + + + @@ -24907,6 +25582,15 @@ + + + + + + + + + @@ -26653,6 +27337,7 @@ + @@ -28157,6 +28842,7 @@ + @@ -28254,6 +28940,17 @@ + + + + + + + + + + + @@ -28609,6 +29306,14 @@ + + + + + + + + @@ -29268,6 +29973,11 @@ + + + + + @@ -29296,6 +30006,7 @@ + @@ -29692,6 +30403,7 @@ + @@ -30156,6 +30868,23 @@ + + + + + + + + + + + + + + + + + @@ -30236,6 +30965,7 @@ + @@ -31334,7 +32064,32 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -32071,6 +32826,7 @@ + @@ -32927,7 +33683,7 @@ - + @@ -33737,6 +34493,9 @@ + + + @@ -36228,6 +36987,7 @@ + @@ -37278,6 +38038,14 @@ + + + + + + + + @@ -37785,6 +38553,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -38163,6 +38969,7 @@ + @@ -38214,6 +39021,7 @@ + @@ -38463,6 +39271,7 @@ + @@ -41059,10 +41868,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -42135,7 +42978,11 @@ - + + + + + @@ -42961,6 +43808,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -42984,6 +43851,7 @@ + @@ -43272,6 +44140,23 @@ + + + + + + + + + + + + + + + + + @@ -43540,6 +44425,9 @@ + + + @@ -43695,8 +44583,10 @@ + + @@ -43890,6 +44780,7 @@ + @@ -45389,6 +46280,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -45400,6 +46317,7 @@ + @@ -45748,6 +46666,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -47240,6 +48184,7 @@ + @@ -47401,6 +48346,7 @@ + @@ -48124,6 +49070,7 @@ + @@ -48230,6 +49177,7 @@ + @@ -48260,6 +49208,7 @@ + @@ -49955,6 +50904,7 @@ + @@ -50620,6 +51570,11 @@ + + + + + @@ -50778,6 +51733,7 @@ + @@ -52027,6 +52983,17 @@ + + + + + + + + + + + @@ -57187,6 +58154,14 @@ + + + + + + + + @@ -57832,6 +58807,7 @@ + @@ -58908,6 +59884,14 @@ + + + + + + + + @@ -59407,6 +60391,23 @@ + + + + + + + + + + + + + + + + + @@ -59487,6 +60488,7 @@ + @@ -59569,6 +60571,7 @@ + @@ -61103,6 +62106,20 @@ + + + + + + + + + + + + + + @@ -61276,6 +62293,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -62263,6 +63303,14 @@ + + + + + + + + @@ -62607,6 +63655,14 @@ + + + + + + + + @@ -63268,6 +64324,7 @@ + @@ -63674,6 +64731,7 @@ + @@ -63965,6 +65023,7 @@ + @@ -64572,6 +65631,11 @@ + + + + + @@ -65385,6 +66449,14 @@ + + + + + + + + @@ -67114,6 +68186,23 @@ + + + + + + + + + + + + + + + + + @@ -67519,6 +68608,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -67606,6 +68724,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -68467,6 +69632,7 @@ + @@ -69076,6 +70242,14 @@ + + + + + + + + @@ -69122,7 +70296,11 @@ - + + + + + @@ -69139,6 +70317,7 @@ + @@ -70372,6 +71551,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -70674,6 +71873,9 @@ + + + @@ -70687,6 +71889,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -72373,6 +73601,7 @@ + @@ -73752,6 +74981,11 @@ + + + + + @@ -74403,6 +75637,7 @@ + @@ -75304,6 +76539,7 @@ + @@ -75614,6 +76850,14 @@ + + + + + + + + @@ -75963,6 +77207,7 @@ + @@ -76849,6 +78094,7 @@ + @@ -77582,6 +78828,7 @@ + @@ -77752,6 +78999,7 @@ + @@ -77840,6 +79088,7 @@ + @@ -78146,6 +79395,7 @@ + @@ -78290,11 +79540,20 @@ + + + + + + + + + @@ -79794,6 +81053,12 @@ + + + + + + @@ -79965,7 +81230,7 @@ - + @@ -80195,6 +81460,12 @@ + + + + + + @@ -80229,6 +81500,20 @@ + + + + + + + + + + + + + + @@ -81790,6 +83075,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -81874,6 +83272,7 @@ + @@ -82398,6 +83797,23 @@ + + + + + + + + + + + + + + + + + @@ -82598,6 +84014,17 @@ + + + + + + + + + + + @@ -84136,6 +85563,7 @@ + @@ -84372,6 +85800,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -84904,6 +86379,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -85814,6 +87330,7 @@ + @@ -86539,6 +88056,7 @@ + @@ -86998,6 +88516,7 @@ + @@ -87987,6 +89506,7 @@ + @@ -89079,6 +90599,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -90486,6 +92101,12 @@ + + + + + + @@ -90538,6 +92159,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -90553,6 +92212,20 @@ + + + + + + + + + + + + + + @@ -90715,6 +92388,17 @@ + + + + + + + + + + + @@ -90756,6 +92440,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -90966,6 +92694,23 @@ + + + + + + + + + + + + + + + + + @@ -91112,6 +92857,7 @@ + @@ -91629,6 +93375,7 @@ + @@ -91854,6 +93601,7 @@ + @@ -93274,6 +95022,7 @@ + @@ -93815,6 +95564,14 @@ + + + + + + + + @@ -93923,6 +95680,11 @@ + + + + + @@ -95443,6 +97205,17 @@ + + + + + + + + + + + @@ -96063,6 +97836,9 @@ + + + @@ -96084,6 +97860,17 @@ + + + + + + + + + + + @@ -96158,6 +97945,25 @@ + + + + + + + + + + + + + + + + + + + @@ -96223,6 +98029,8 @@ + + @@ -97006,6 +98814,9 @@ + + + @@ -98282,6 +100093,9 @@ + + + @@ -98681,6 +100495,419 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -100714,6 +102941,7 @@ + @@ -101124,6 +103352,7 @@ + @@ -103128,9 +105357,24 @@ + + + + + + + + + + + + + + + @@ -103494,6 +105738,7 @@ + @@ -103770,8 +106015,25 @@ + + + + + + + + + + + + + + + + + @@ -105282,6 +107544,14 @@ + + + + + + + + @@ -106277,6 +108547,10 @@ + + + + @@ -106329,6 +108603,11 @@ + + + + + @@ -107627,6 +109906,12 @@ + + + + + + @@ -107690,6 +109975,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -108568,6 +110903,7 @@ + @@ -108708,6 +111044,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -110831,6 +113196,18 @@ + + + + + + + + + + + + @@ -113526,6 +115903,8 @@ + + @@ -113540,9 +115919,12 @@ + + + @@ -113712,13 +116094,20 @@ + + + + + + + @@ -113749,6 +116138,8 @@ + + @@ -113774,6 +116165,8 @@ + + @@ -113824,6 +116217,12 @@ + + + + + + @@ -113860,6 +116259,14 @@ + + + + + + + + @@ -115631,6 +118038,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -116589,6 +119040,12 @@ + + + + + + @@ -119601,6 +122058,10 @@ + + + + @@ -121352,6 +123813,10 @@ + + + + @@ -123559,6 +126024,23 @@ + + + + + + + + + + + + + + + + + @@ -123567,12 +126049,28 @@ + + + + + + + + + + + + + + + + @@ -124264,6 +126762,10 @@ + + + + @@ -124372,6 +126874,12 @@ + + + + + + @@ -129105,6 +131613,13 @@ + + + + + + + @@ -129164,6 +131679,10 @@ + + + + @@ -129173,6 +131692,12 @@ + + + + + + @@ -130248,6 +132773,10 @@ + + + + @@ -133175,6 +135704,11 @@ + + + + + @@ -134558,6 +137092,13 @@ + + + + + + + @@ -135002,6 +137543,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -135618,6 +138186,14 @@ + + + + + + + + @@ -135625,29 +138201,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -136378,6 +139022,10 @@ + + + + @@ -136461,6 +139109,11 @@ + + + + + @@ -136539,6 +139192,11 @@ + + + + + @@ -136638,6 +139296,10 @@ + + + + @@ -136653,6 +139315,10 @@ + + + + @@ -136779,6 +139445,16 @@ + + + + + + + + + + @@ -136812,6 +139488,10 @@ + + + + @@ -136832,6 +139512,15 @@ + + + + + + + + + @@ -136894,10 +139583,29 @@ + + + + + + + + + + + + + + + + + + + @@ -136916,6 +139624,10 @@ + + + + @@ -136930,6 +139642,11 @@ + + + + + diff --git a/android/abi_gki_aarch64_galaxy b/android/abi_gki_aarch64_galaxy index a6d6c37a2f7a..6370941fad5e 100644 --- a/android/abi_gki_aarch64_galaxy +++ b/android/abi_gki_aarch64_galaxy @@ -94,8 +94,11 @@ __ethtool_get_link_ksettings __fdget __flush_icache_range __free_pages +__genphy_config_aneg __get_free_pages __get_task_comm +__hid_register_driver +__hid_request __hrtimer_get_remaining __hvc_resize __hwspin_lock_timeout @@ -343,6 +346,8 @@ __traceiter_gpu_mem_total __traceiter_sched_util_est_se_tp __traceiter_xdp_exception __tracepoint_android_rvh_account_irq +__tracepoint_android_rvh_arm64_serror_panic +__tracepoint_android_rvh_bad_mode __tracepoint_android_rvh_build_perf_domains __tracepoint_android_rvh_can_migrate_task __tracepoint_android_rvh_check_preempt_wakeup @@ -352,9 +357,12 @@ __tracepoint_android_rvh_cpu_cgroup_online __tracepoint_android_rvh_cpu_overutilized __tracepoint_android_rvh_cpufreq_transition __tracepoint_android_rvh_dequeue_task +__tracepoint_android_rvh_dequeue_task_idle __tracepoint_android_rvh_die_kernel_fault __tracepoint_android_rvh_do_mem_abort +__tracepoint_android_rvh_do_sea __tracepoint_android_rvh_do_sp_pc_abort +__tracepoint_android_rvh_do_undefinstr __tracepoint_android_rvh_enqueue_task __tracepoint_android_rvh_find_busiest_queue __tracepoint_android_rvh_find_energy_efficient_cpu @@ -408,6 +416,7 @@ __tracepoint_android_vh_binder_restore_priority __tracepoint_android_vh_binder_set_priority __tracepoint_android_vh_binder_transaction_init __tracepoint_android_vh_binder_wakeup_ilocked +__tracepoint_android_vh_cgroup_attach __tracepoint_android_vh_cma_alloc_finish __tracepoint_android_vh_cma_alloc_start __tracepoint_android_vh_cpu_idle_enter @@ -429,10 +438,19 @@ __tracepoint_android_vh_kfree_skb __tracepoint_android_vh_logbuf __tracepoint_android_vh_logbuf_pr_cont __tracepoint_android_vh_meminfo_proc_show +__tracepoint_android_vh_mutex_wait_finish +__tracepoint_android_vh_mutex_wait_start __tracepoint_android_vh_pagecache_get_page __tracepoint_android_vh_printk_hotplug __tracepoint_android_vh_ptype_head __tracepoint_android_vh_rmqueue +__tracepoint_android_vh_rtmutex_wait_finish +__tracepoint_android_vh_rtmutex_wait_start +__tracepoint_android_vh_rwsem_read_wait_finish +__tracepoint_android_vh_rwsem_read_wait_start +__tracepoint_android_vh_rwsem_write_wait_finish +__tracepoint_android_vh_rwsem_write_wait_start +__tracepoint_android_vh_sched_show_task __tracepoint_android_vh_scheduler_tick __tracepoint_android_vh_show_max_freq __tracepoint_android_vh_show_mem @@ -440,6 +458,8 @@ __tracepoint_android_vh_show_resume_epoch_val __tracepoint_android_vh_show_suspend_epoch_val __tracepoint_android_vh_timer_calc_index __tracepoint_android_vh_timerfd_create +__tracepoint_android_vh_try_to_freeze_todo +__tracepoint_android_vh_try_to_freeze_todo_unfrozen __tracepoint_android_vh_typec_store_partner_src_caps __tracepoint_android_vh_typec_tcpci_override_toggling __tracepoint_android_vh_typec_tcpm_adj_current_limit @@ -453,6 +473,8 @@ __tracepoint_android_vh_ufs_send_tm_command __tracepoint_android_vh_ufs_send_uic_command __tracepoint_android_vh_ufs_update_sdev __tracepoint_android_vh_ufs_update_sysfs +__tracepoint_android_vh_watchdog_timer_softlockup +__tracepoint_android_vh_wq_lockup_pool __tracepoint_binder_transaction_received __tracepoint_clock_set_rate __tracepoint_cpu_frequency @@ -489,12 +511,14 @@ __tracepoint_suspend_resume __tracepoint_workqueue_execute_end __tracepoint_workqueue_execute_start __tracepoint_xdp_exception +__tty_alloc_driver __tty_insert_flip_char __udelay __uio_register_device __unregister_chrdev __update_load_avg_blocked_se __usb_create_hcd +__usb_get_extra_descriptor __usecs_to_jiffies __v4l2_device_register_subdev_nodes __video_register_device @@ -774,6 +798,14 @@ cancel_delayed_work cancel_delayed_work_sync cancel_work_sync capable +cdc_ncm_bind_common +cdc_ncm_change_mtu +cdc_ncm_fill_tx_frame +cdc_ncm_rx_verify_ndp16 +cdc_ncm_rx_verify_nth16 +cdc_ncm_select_altsetting +cdc_ncm_unbind +cdc_parse_cdc_header cdev_add cdev_alloc cdev_del @@ -946,6 +978,7 @@ cpumask_next_wrap cpupri_find_fitness cpus_read_lock cpus_read_unlock +crc16 crc32_le crc8 crc8_populate_msb @@ -1051,6 +1084,7 @@ dev_pm_opp_adjust_voltage dev_pm_opp_disable dev_pm_opp_enable dev_pm_opp_find_freq_ceil +dev_pm_opp_find_freq_ceil_by_volt dev_pm_opp_find_freq_exact dev_pm_opp_find_freq_floor dev_pm_opp_free_cpufreq_table @@ -1389,6 +1423,7 @@ down_write downgrade_write dput drain_workqueue +driver_attach driver_create_file driver_find_device driver_register @@ -1691,6 +1726,7 @@ drm_mode_object_put drm_mode_probed_add drm_mode_set_crtcinfo drm_mode_set_name +drm_mode_sort drm_mode_vrefresh drm_modeset_acquire_fini drm_modeset_acquire_init @@ -1919,7 +1955,10 @@ genl_notify genl_register_family genl_unregister_family genlmsg_put +genphy_read_status genphy_resume +genphy_soft_reset +genphy_suspend get_cpu_device get_cpu_idle_time get_cpu_idle_time_us @@ -2028,6 +2067,13 @@ hdmi_infoframe_pack hex2bin hex_dump_to_buffer hex_to_bin +hid_hw_close +hid_hw_open +hid_hw_start +hid_hw_stop +hid_open_report +hid_report_raw_event +hid_unregister_driver hmm_range_fault hrtimer_active hrtimer_cancel @@ -2135,6 +2181,7 @@ iio_read_channel_processed iio_read_channel_raw import_iovec in4_pton +in6_dev_finish_destroy in6_pton in_aton in_egroup_p @@ -2156,6 +2203,7 @@ input_allocate_device input_close_device input_event input_ff_create +input_ff_create_memless input_ff_destroy input_free_device input_mt_assign_slots @@ -2315,6 +2363,7 @@ kernel_sendmsg kernel_sigaction kernfs_find_and_get_ns kernfs_notify +kernfs_path_from_node kernfs_put kfree kfree_const @@ -2353,6 +2402,7 @@ kobject_uevent kobject_uevent_env krealloc kset_create_and_add +kset_unregister ksize ksoftirqd kstat @@ -2448,7 +2498,9 @@ mbox_request_channel mbox_send_message mdiobus_alloc_size mdiobus_free +mdiobus_read mdiobus_unregister +mdiobus_write media_device_cleanup media_device_init media_device_unregister @@ -2930,16 +2982,24 @@ perf_pmu_unregister perf_trace_buf_alloc perf_trace_run_bpf_submit pfn_valid +phy_attached_info phy_calibrate phy_configure phy_connect +phy_connect_direct phy_disconnect phy_do_ioctl_running +phy_drivers_register +phy_drivers_unregister phy_ethtool_get_link_ksettings phy_ethtool_nway_reset phy_ethtool_set_link_ksettings phy_exit +phy_find_first +phy_get_pause phy_init +phy_init_hw +phy_mii_ioctl phy_pm_runtime_get_sync phy_pm_runtime_put_sync phy_power_off @@ -3078,11 +3138,13 @@ ps2_sliced_command pskb_expand_head pstore_register pstore_unregister +public_key_verify_signature put_device put_disk put_iova_domain put_pid put_sg_io_hdr +put_tty_driver put_unused_fd put_vaddr_frames pwm_apply_state @@ -3539,6 +3601,7 @@ smp_call_function smp_call_function_any smp_call_function_many smp_call_function_single +smp_call_function_single_async smp_call_on_cpu smpboot_register_percpu_thread smpboot_unregister_percpu_thread @@ -3755,6 +3818,7 @@ spmi_register_read spmi_register_write spmi_register_zero_write sprint_symbol +sprint_symbol_no_offset sprintf srcu_barrier srcu_batches_completed @@ -3767,6 +3831,7 @@ srcutorture_get_gp_data sscanf stack_trace_print stack_trace_save +stack_trace_save_regs stack_trace_save_tsk static_key_disable static_key_disable_cpuslocked @@ -3864,6 +3929,12 @@ tasklet_init tasklet_kill tasklet_setup tasklist_lock +tcp_register_congestion_control +tcp_reno_cong_avoid +tcp_reno_ssthresh +tcp_reno_undo_cwnd +tcp_slow_start +tcp_unregister_congestion_control tcpci_get_tcpm_port tcpci_irq tcpci_register_port @@ -3967,9 +4038,26 @@ ttm_unmap_and_unpopulate_pages tty_flip_buffer_push tty_insert_flip_string_fixed_flag tty_kref_put +tty_ldisc_deref +tty_ldisc_ref +tty_port_close +tty_port_destroy +tty_port_hangup +tty_port_init +tty_port_open +tty_port_register_device tty_port_tty_get +tty_port_tty_wakeup +tty_register_driver +tty_set_operations +tty_standard_install +tty_std_termios tty_termios_baud_rate +tty_termios_copy_hw tty_termios_encode_baud_rate +tty_unregister_device +tty_unregister_driver +tty_vhangup typec_altmode_get_partner typec_altmode_update_active typec_get_drvdata @@ -4095,6 +4183,7 @@ usb_amd_quirk_pll_enable usb_asmedia_modifyflowcontrol usb_assign_descriptors usb_autopm_get_interface +usb_autopm_get_interface_no_resume usb_autopm_put_interface usb_bulk_msg usb_calc_bus_time @@ -4107,6 +4196,7 @@ usb_debug_root usb_decode_ctrl usb_del_gadget_udc usb_deregister +usb_deregister_dev usb_disable_xhci_ports usb_disabled usb_enable_autosuspend @@ -4124,6 +4214,7 @@ usb_ep_queue usb_ep_set_halt usb_ep_set_maxpacket_limit usb_find_common_endpoints +usb_find_interface usb_free_all_descriptors usb_free_coherent usb_free_urb @@ -4140,8 +4231,10 @@ usb_gadget_vbus_connect usb_gadget_vbus_disconnect usb_gadget_vbus_draw usb_gadget_wakeup +usb_get_dev usb_get_dr_mode usb_get_gadget_udc_name +usb_get_intf usb_get_maximum_speed usb_get_urb usb_gstrings_attach @@ -4169,12 +4262,17 @@ usb_ifnum_to_if usb_initialize_gadget usb_interface_id usb_kill_urb +usb_match_id +usb_match_one_id usb_otg_state_string usb_phy_set_charger_current +usb_poison_anchored_urbs usb_poison_urb usb_put_dev usb_put_function_instance usb_put_hcd +usb_put_intf +usb_register_dev usb_register_driver usb_register_notify usb_remove_hcd @@ -4188,12 +4286,17 @@ usb_role_switch_set_role usb_role_switch_unregister usb_root_hub_lost_power usb_set_device_state +usb_set_interface +usb_show_dynids usb_speed_string +usb_store_new_id usb_string_id usb_submit_urb +usb_unpoison_urb usb_unregister_notify usb_wakeup_notification usbnet_change_mtu +usbnet_defer_kevent usbnet_disconnect usbnet_get_drvinfo usbnet_get_endpoints From eb02ea0e352f673079f0d50f2732e297aee1592a Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 30 Sep 2021 15:36:14 +0200 Subject: [PATCH 57/94] ANDROID: GKI: fix mode of android/abi_gki_aarch64.xml file Somehow the android/abi_gki_aarch64.xml file became executable in a previous commit. Fix this up by setting the mode properly. Bug: 149040612 Cc: Chun-Hung Wu Cc: Sandeep Patil Fixes: 55d7c4eca691 ("ANDROID: Update symbol list for mtk") Signed-off-by: Greg Kroah-Hartman Change-Id: Iecb61df3481cf2a257d2f999297a98cdbcb38295 --- android/abi_gki_aarch64.xml | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 android/abi_gki_aarch64.xml diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml old mode 100755 new mode 100644 From f746714fe46242f133f0c94088546d29b8329040 Mon Sep 17 00:00:00 2001 From: Mark Rutland Date: Wed, 14 Jul 2021 15:38:42 +0100 Subject: [PATCH 58/94] UPSTREAM: arm64: kasan: mte: use a constant kernel GCR_EL1 value When KASAN_HW_TAGS is selected, KASAN is enabled at boot time, and the hardware supports MTE, we'll initialize `kernel_gcr_excl` with a value dependent on KASAN_TAG_MAX. While the resulting value is a constant which depends on KASAN_TAG_MAX, we have to perform some runtime work to generate the value, and have to read the value from memory during the exception entry path. It would be better if we could generate this as a constant at compile-time, and use it as such directly. Early in boot within __cpu_setup(), we initialize GCR_EL1 to a safe value, and later override this with the value required by KASAN. If CONFIG_KASAN_HW_TAGS is not selected, or if KASAN is disabeld at boot time, the kernel will not use IRG instructions, and so the initial value of GCR_EL1 is does not matter to the kernel. Thus, we can instead have __cpu_setup() initialize GCR_EL1 to a value consistent with KASAN_TAG_MAX, and avoid the need to re-initialize it during hotplug and resume form suspend. This patch makes arem64 use a compile-time constant KERNEL_GCR_EL1 value, which is compatible with KASAN_HW_TAGS when this is selected. This removes the need to re-initialize GCR_EL1 dynamically, and acts as an optimization to the entry assembly, which no longer needs to load this value from memory. The redundant initialization hooks are removed. In order to do this, KASAN_TAG_MAX needs to be visible outside of the core KASAN code. To do this, I've moved the KASAN_TAG_* values into . There should be no functional change as a result of this patch. Signed-off-by: Mark Rutland Cc: Alexander Potapenko Cc: Andrey Konovalov Cc: Andrey Ryabinin Cc: Dmitry Vyukov Cc: Peter Collingbourne Cc: Vincenzo Frascino Cc: Will Deacon Reviewed-by: Catalin Marinas Reviewed-by: Andrey Konovalov Tested-by: Andrey Konovalov Link: https://lore.kernel.org/r/20210714143843.56537-3-mark.rutland@arm.com Signed-off-by: Catalin Marinas (cherry picked from commit 82868247897bea2d69a83dca9a6a557e2c96dac4) Change-Id: I397025af7051bedcdd35987af5deec46c228f8e2 Signed-off-by: Peter Collingbourne Bug: 192536783 --- arch/arm64/include/asm/memory.h | 1 - arch/arm64/include/asm/mte-kasan.h | 5 ----- arch/arm64/include/asm/mte.h | 6 ------ arch/arm64/include/asm/sysreg.h | 16 +++++++++++++++ arch/arm64/kernel/entry.S | 5 ++--- arch/arm64/kernel/mte.c | 31 ------------------------------ arch/arm64/kernel/suspend.c | 1 - arch/arm64/mm/proc.S | 3 +-- include/linux/kasan-tags.h | 15 +++++++++++++++ mm/kasan/hw_tags.c | 2 -- mm/kasan/kasan.h | 15 +-------------- 11 files changed, 35 insertions(+), 65 deletions(-) create mode 100644 include/linux/kasan-tags.h diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h index f50e752d31f9..b864fdb79df0 100644 --- a/arch/arm64/include/asm/memory.h +++ b/arch/arm64/include/asm/memory.h @@ -236,7 +236,6 @@ static inline const void *__tag_set(const void *addr, u8 tag) #define arch_enable_tagging_async() mte_enable_kernel_async() #define arch_set_tagging_report_once(state) mte_set_report_once(state) #define arch_force_async_tag_fault() mte_check_tfsr_exit() -#define arch_init_tags(max_tag) mte_init_tags(max_tag) #define arch_get_random_tag() mte_get_random_tag() #define arch_get_mem_tag(addr) mte_get_mem_tag(addr) #define arch_set_mem_tag_range(addr, size, tag, init) \ diff --git a/arch/arm64/include/asm/mte-kasan.h b/arch/arm64/include/asm/mte-kasan.h index d952352bd008..82fa4ac4ad4e 100644 --- a/arch/arm64/include/asm/mte-kasan.h +++ b/arch/arm64/include/asm/mte-kasan.h @@ -130,7 +130,6 @@ static inline void mte_set_mem_tag_range(void *addr, size_t size, u8 tag, void mte_enable_kernel_sync(void); void mte_enable_kernel_async(void); -void mte_init_tags(u64 max_tag); void mte_set_report_once(bool state); bool mte_report_once(void); @@ -165,10 +164,6 @@ static inline void mte_enable_kernel_async(void) { } -static inline void mte_init_tags(u64 max_tag) -{ -} - static inline void mte_set_report_once(bool state) { } diff --git a/arch/arm64/include/asm/mte.h b/arch/arm64/include/asm/mte.h index 67bf259ae768..8703dcb1da20 100644 --- a/arch/arm64/include/asm/mte.h +++ b/arch/arm64/include/asm/mte.h @@ -16,8 +16,6 @@ #include -extern u64 gcr_kernel_excl; - void mte_clear_page_tags(void *addr); unsigned long mte_copy_tags_from_user(void *to, const void __user *from, unsigned long n); @@ -43,7 +41,6 @@ void mte_copy_page_tags(void *kto, const void *kfrom); void mte_thread_init_user(void); void mte_thread_switch(struct task_struct *next); void mte_suspend_enter(void); -void mte_suspend_exit(void); long set_mte_ctrl(struct task_struct *task, unsigned long arg); long get_mte_ctrl(struct task_struct *task); int mte_ptrace_copy_tags(struct task_struct *child, long request, @@ -72,9 +69,6 @@ static inline void mte_thread_switch(struct task_struct *next) static inline void mte_suspend_enter(void) { } -static inline void mte_suspend_exit(void) -{ -} static inline long set_mte_ctrl(struct task_struct *task, unsigned long arg) { return 0; diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h index 2f09c856b6bc..c41e6f7fcab2 100644 --- a/arch/arm64/include/asm/sysreg.h +++ b/arch/arm64/include/asm/sysreg.h @@ -11,6 +11,7 @@ #include #include +#include /* * ARMv8 ARM reserves the following encoding for system registers: @@ -1044,6 +1045,21 @@ #define SYS_GCR_EL1_RRND (BIT(16)) #define SYS_GCR_EL1_EXCL_MASK 0xffffUL +#ifdef CONFIG_KASAN_HW_TAGS +/* + * KASAN always uses a whole byte for its tags. With CONFIG_KASAN_HW_TAGS it + * only uses tags in the range 0xF0-0xFF, which we map to MTE tags 0x0-0xF. + */ +#define __MTE_TAG_MIN (KASAN_TAG_MIN & 0xf) +#define __MTE_TAG_MAX (KASAN_TAG_MAX & 0xf) +#define __MTE_TAG_INCL GENMASK(__MTE_TAG_MAX, __MTE_TAG_MIN) +#define KERNEL_GCR_EL1_EXCL (SYS_GCR_EL1_EXCL_MASK & ~__MTE_TAG_INCL) +#else +#define KERNEL_GCR_EL1_EXCL SYS_GCR_EL1_EXCL_MASK +#endif + +#define KERNEL_GCR_EL1 (SYS_GCR_EL1_RRND | KERNEL_GCR_EL1_EXCL) + /* RGSR_EL1 Definitions */ #define SYS_RGSR_EL1_TAG_MASK 0xfUL #define SYS_RGSR_EL1_SEED_SHIFT 8 diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S index 29c423933e99..ae1ded4ab618 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -196,9 +196,8 @@ alternative_else_nop_endif alternative_if_not ARM64_MTE b 1f alternative_else_nop_endif - ldr_l \tmp, gcr_kernel_excl - - mte_set_gcr \tmp, \tmp2 + mov \tmp, KERNEL_GCR_EL1 + msr_s SYS_GCR_EL1, \tmp 1: #endif .endm diff --git a/arch/arm64/kernel/mte.c b/arch/arm64/kernel/mte.c index 859c1fcefdf4..b17bf7cc6304 100644 --- a/arch/arm64/kernel/mte.c +++ b/arch/arm64/kernel/mte.c @@ -23,8 +23,6 @@ #include #include -u64 gcr_kernel_excl __ro_after_init; - static bool report_fault_once = true; static DEFINE_PER_CPU_READ_MOSTLY(u64, mte_tcf_preferred); @@ -96,26 +94,6 @@ int memcmp_pages(struct page *page1, struct page *page2) return ret; } -void mte_init_tags(u64 max_tag) -{ - static bool gcr_kernel_excl_initialized; - - if (!gcr_kernel_excl_initialized) { - /* - * The format of the tags in KASAN is 0xFF and in MTE is 0xF. - * This conversion extracts an MTE tag from a KASAN tag. - */ - u64 incl = GENMASK(FIELD_GET(MTE_TAG_MASK >> MTE_TAG_SHIFT, - max_tag), 0); - - gcr_kernel_excl = ~incl & SYS_GCR_EL1_EXCL_MASK; - gcr_kernel_excl_initialized = true; - } - - /* Enable the kernel exclude mask for random tags generation. */ - write_sysreg_s(SYS_GCR_EL1_RRND | gcr_kernel_excl, SYS_GCR_EL1); -} - static inline void __mte_enable_kernel(const char *mode, unsigned long tcf) { /* Enable MTE Sync Mode for EL1. */ @@ -254,15 +232,6 @@ void mte_suspend_enter(void) mte_check_tfsr_el1(); } -void mte_suspend_exit(void) -{ - if (!system_supports_mte()) - return; - - sysreg_clear_set_s(SYS_GCR_EL1, SYS_GCR_EL1_EXCL_MASK, gcr_kernel_excl); - isb(); -} - long set_mte_ctrl(struct task_struct *task, unsigned long arg) { u64 mte_ctrl = (~((arg & PR_MTE_TAG_MASK) >> PR_MTE_TAG_SHIFT) & diff --git a/arch/arm64/kernel/suspend.c b/arch/arm64/kernel/suspend.c index 1e8dc6f7d178..ea019a852adc 100644 --- a/arch/arm64/kernel/suspend.c +++ b/arch/arm64/kernel/suspend.c @@ -76,7 +76,6 @@ void notrace __cpu_suspend_exit(void) spectre_v4_enable_mitigation(NULL); /* Restore additional feature-specific configuration */ - mte_suspend_exit(); ptrauth_suspend_exit(); } diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S index 715c0f9b54b5..d05db4ea45bb 100644 --- a/arch/arm64/mm/proc.S +++ b/arch/arm64/mm/proc.S @@ -445,8 +445,7 @@ SYM_FUNC_START(__cpu_setup) mov x10, #MAIR_ATTR_NORMAL_TAGGED bfi x5, x10, #(8 * MT_NORMAL_TAGGED), #8 - /* initialize GCR_EL1: all non-zero tags excluded by default */ - mov x10, #(SYS_GCR_EL1_RRND | SYS_GCR_EL1_EXCL_MASK) + mov x10, #KERNEL_GCR_EL1 msr_s SYS_GCR_EL1, x10 /* diff --git a/include/linux/kasan-tags.h b/include/linux/kasan-tags.h new file mode 100644 index 000000000000..4f85f562512c --- /dev/null +++ b/include/linux/kasan-tags.h @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_KASAN_TAGS_H +#define _LINUX_KASAN_TAGS_H + +#define KASAN_TAG_KERNEL 0xFF /* native kernel pointers tag */ +#define KASAN_TAG_INVALID 0xFE /* inaccessible memory tag */ +#define KASAN_TAG_MAX 0xFD /* maximum value for random tags */ + +#ifdef CONFIG_KASAN_HW_TAGS +#define KASAN_TAG_MIN 0xF0 /* minimum value for random tags */ +#else +#define KASAN_TAG_MIN 0x00 /* minimum value for random tags */ +#endif + +#endif /* LINUX_KASAN_TAGS_H */ diff --git a/mm/kasan/hw_tags.c b/mm/kasan/hw_tags.c index ed5e5b833d61..d91e98c48dc7 100644 --- a/mm/kasan/hw_tags.c +++ b/mm/kasan/hw_tags.c @@ -142,8 +142,6 @@ void kasan_init_hw_tags_cpu(void) if (kasan_arg == KASAN_ARG_OFF) return; - hw_init_tags(KASAN_TAG_MAX); - /* * Enable async mode only when explicitly requested through * the command line. diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h index ed9c45a63f9a..ac88595d6211 100644 --- a/mm/kasan/kasan.h +++ b/mm/kasan/kasan.h @@ -3,6 +3,7 @@ #define __MM_KASAN_KASAN_H #include +#include #include #include @@ -51,16 +52,6 @@ extern bool kasan_flag_async __ro_after_init; #define KASAN_MEMORY_PER_SHADOW_PAGE (KASAN_GRANULE_SIZE << PAGE_SHIFT) -#define KASAN_TAG_KERNEL 0xFF /* native kernel pointers tag */ -#define KASAN_TAG_INVALID 0xFE /* inaccessible memory tag */ -#define KASAN_TAG_MAX 0xFD /* maximum value for random tags */ - -#ifdef CONFIG_KASAN_HW_TAGS -#define KASAN_TAG_MIN 0xF0 /* mimimum value for random tags */ -#else -#define KASAN_TAG_MIN 0x00 /* mimimum value for random tags */ -#endif - #ifdef CONFIG_KASAN_GENERIC #define KASAN_FREE_PAGE 0xFF /* page was freed */ #define KASAN_PAGE_REDZONE 0xFE /* redzone for kmalloc_large allocations */ @@ -299,9 +290,6 @@ static inline const void *arch_kasan_set_tag(const void *addr, u8 tag) #ifndef arch_enable_tagging_async #define arch_enable_tagging_async() #endif -#ifndef arch_init_tags -#define arch_init_tags(max_tag) -#endif #ifndef arch_set_tagging_report_once #define arch_set_tagging_report_once(state) #endif @@ -320,7 +308,6 @@ static inline const void *arch_kasan_set_tag(const void *addr, u8 tag) #define hw_enable_tagging_sync() arch_enable_tagging_sync() #define hw_enable_tagging_async() arch_enable_tagging_async() -#define hw_init_tags(max_tag) arch_init_tags(max_tag) #define hw_set_tagging_report_once(state) arch_set_tagging_report_once(state) #define hw_force_async_tag_fault() arch_force_async_tag_fault() #define hw_get_random_tag() arch_get_random_tag() From 6c6d1d7e42670b8a8bac5e7fe30067578cc3fe04 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Wed, 15 Sep 2021 12:03:35 -0700 Subject: [PATCH 59/94] UPSTREAM: arm64: add MTE supported check to thread switching and syscall entry/exit This lets us avoid doing unnecessary work on hardware that does not support MTE, and will allow us to freely use MTE instructions in the code called by mte_thread_switch(). Since this would mean that we do a redundant check in mte_check_tfsr_el1(), remove it and add two checks now required in its callers. This also avoids an unnecessary DSB+ISB sequence on the syscall exit path for hardware not supporting MTE. Fixes: 65812c6921cc ("arm64: mte: Enable async tag check fault") Cc: # 5.13.x Signed-off-by: Peter Collingbourne Link: https://linux-review.googlesource.com/id/I02fd000d1ef2c86c7d2952a7f099b254ec227a5d Link: https://lore.kernel.org/r/20210915190336.398390-1-pcc@google.com [catalin.marinas@arm.com: adjust the commit log slightly] Signed-off-by: Catalin Marinas (cherry picked from commit 8c8a3b5bd960cd88f7655b5251dc28741e11f139) Change-Id: I131933b18581a40cea9abf556625c80b12e4e974 Bug: 192536783 --- arch/arm64/include/asm/mte.h | 6 ++++++ arch/arm64/kernel/mte.c | 10 ++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/arch/arm64/include/asm/mte.h b/arch/arm64/include/asm/mte.h index 8703dcb1da20..c0857e61e9e8 100644 --- a/arch/arm64/include/asm/mte.h +++ b/arch/arm64/include/asm/mte.h @@ -99,11 +99,17 @@ void mte_check_tfsr_el1(void); static inline void mte_check_tfsr_entry(void) { + if (!system_supports_mte()) + return; + mte_check_tfsr_el1(); } static inline void mte_check_tfsr_exit(void) { + if (!system_supports_mte()) + return; + /* * The asynchronous faults are sync'ed automatically with * TFSR_EL1 on kernel entry but for exit an explicit dsb() diff --git a/arch/arm64/kernel/mte.c b/arch/arm64/kernel/mte.c index b17bf7cc6304..66ae6698c5e1 100644 --- a/arch/arm64/kernel/mte.c +++ b/arch/arm64/kernel/mte.c @@ -146,12 +146,7 @@ bool mte_report_once(void) #ifdef CONFIG_KASAN_HW_TAGS void mte_check_tfsr_el1(void) { - u64 tfsr_el1; - - if (!system_supports_mte()) - return; - - tfsr_el1 = read_sysreg_s(SYS_TFSR_EL1); + u64 tfsr_el1 = read_sysreg_s(SYS_TFSR_EL1); if (unlikely(tfsr_el1 & SYS_TFSR_EL1_TF1)) { /* @@ -203,6 +198,9 @@ void mte_thread_init_user(void) void mte_thread_switch(struct task_struct *next) { + if (!system_supports_mte()) + return; + mte_update_sctlr_user(next); /* From 55b0b347918b1f9e8c7e8ae8cd057a9fddfffb0a Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Thu, 23 Sep 2021 18:06:55 -0700 Subject: [PATCH 60/94] FROMGIT: arm64: kasan: mte: move GCR_EL1 switch to task switch when KASAN disabled It is not necessary to write to GCR_EL1 on every kernel entry and exit when HW tag-based KASAN is disabled because the kernel will not execute any IRG instructions in that mode. Since accessing GCR_EL1 can be expensive on some microarchitectures, avoid doing so by moving the access to task switch when HW tag-based KASAN is disabled. Signed-off-by: Peter Collingbourne Acked-by: Andrey Konovalov Link: https://linux-review.googlesource.com/id/I78e90d60612a94c24344526f476ac4ff216e10d2 Reviewed-by: Catalin Marinas Link: https://lore.kernel.org/r/20210924010655.2886918-1-pcc@google.com Signed-off-by: Will Deacon (cherry picked from commit e5af50a5df571c1d0268b02f924de49b742c990f https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/mte) Change-Id: I0f06de2fce4dea2967c0fee608d1900915493d23 Bug: 192536783 --- arch/arm64/kernel/entry.S | 10 +++++----- arch/arm64/kernel/mte.c | 26 ++++++++++++++++++++++++++ include/linux/kasan.h | 9 +++++++-- 3 files changed, 38 insertions(+), 7 deletions(-) diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S index ae1ded4ab618..42c404d508ca 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -193,9 +193,9 @@ alternative_else_nop_endif .macro mte_set_kernel_gcr, tmp, tmp2 #ifdef CONFIG_KASAN_HW_TAGS -alternative_if_not ARM64_MTE +alternative_cb kasan_hw_tags_enable b 1f -alternative_else_nop_endif +alternative_cb_end mov \tmp, KERNEL_GCR_EL1 msr_s SYS_GCR_EL1, \tmp 1: @@ -203,10 +203,10 @@ alternative_else_nop_endif .endm .macro mte_set_user_gcr, tsk, tmp, tmp2 -#ifdef CONFIG_ARM64_MTE -alternative_if_not ARM64_MTE +#ifdef CONFIG_KASAN_HW_TAGS +alternative_cb kasan_hw_tags_enable b 1f -alternative_else_nop_endif +alternative_cb_end ldr \tmp, [\tsk, #THREAD_MTE_CTRL] mte_set_gcr \tmp, \tmp2 diff --git a/arch/arm64/kernel/mte.c b/arch/arm64/kernel/mte.c index 66ae6698c5e1..acd43c57d9a0 100644 --- a/arch/arm64/kernel/mte.c +++ b/arch/arm64/kernel/mte.c @@ -183,6 +183,30 @@ static void mte_update_sctlr_user(struct task_struct *task) task->thread.sctlr_user = sctlr; } +static void mte_update_gcr_excl(struct task_struct *task) +{ + /* + * SYS_GCR_EL1 will be set to current->thread.mte_ctrl value by + * mte_set_user_gcr() in kernel_exit, but only if KASAN is enabled. + */ + if (kasan_hw_tags_enabled()) + return; + + write_sysreg_s( + ((task->thread.mte_ctrl >> MTE_CTRL_GCR_USER_EXCL_SHIFT) & + SYS_GCR_EL1_EXCL_MASK) | SYS_GCR_EL1_RRND, + SYS_GCR_EL1); +} + +void __init kasan_hw_tags_enable(struct alt_instr *alt, __le32 *origptr, + __le32 *updptr, int nr_inst) +{ + BUG_ON(nr_inst != 1); /* Branch -> NOP */ + + if (kasan_hw_tags_enabled()) + *updptr = cpu_to_le32(aarch64_insn_gen_nop()); +} + void mte_thread_init_user(void) { if (!system_supports_mte()) @@ -202,6 +226,7 @@ void mte_thread_switch(struct task_struct *next) return; mte_update_sctlr_user(next); + mte_update_gcr_excl(next); /* * Check if an async tag exception occurred at EL1. @@ -247,6 +272,7 @@ long set_mte_ctrl(struct task_struct *task, unsigned long arg) if (task == current) { preempt_disable(); mte_update_sctlr_user(task); + mte_update_gcr_excl(task); update_sctlr_el1(task->thread.sctlr_user); preempt_enable(); } diff --git a/include/linux/kasan.h b/include/linux/kasan.h index a1c7ce5f3e4f..b59675cc19b7 100644 --- a/include/linux/kasan.h +++ b/include/linux/kasan.h @@ -89,7 +89,7 @@ static __always_inline bool kasan_enabled(void) return static_branch_likely(&kasan_flag_enabled); } -static inline bool kasan_has_integrated_init(void) +static inline bool kasan_hw_tags_enabled(void) { return kasan_enabled(); } @@ -104,7 +104,7 @@ static inline bool kasan_enabled(void) return IS_ENABLED(CONFIG_KASAN); } -static inline bool kasan_has_integrated_init(void) +static inline bool kasan_hw_tags_enabled(void) { return false; } @@ -125,6 +125,11 @@ static __always_inline void kasan_free_pages(struct page *page, #endif /* CONFIG_KASAN_HW_TAGS */ +static inline bool kasan_has_integrated_init(void) +{ + return kasan_hw_tags_enabled(); +} + #ifdef CONFIG_KASAN struct kasan_cache { From 9a8a15b8bd839ec71b44a3e46f6de2e604910c08 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 14:59:21 +0800 Subject: [PATCH 61/94] ANDROID: GKI: rockchip: Enable symbols for hid Functions changes summary: 0 Removed, 0 Changed (1546 filtered out), 1 Added functions Variables changes summary: 0 Removed, 0 Changed (11 filtered out), 0 Added variables 1 Added function: [A] 'function hid_report* hid_validate_values(hid_device*, unsigned int, unsigned int, unsigned int, unsigned int)' Leaf changes summary: 11 artifacts changed Changed leaf types summary: 0 leaf type changed Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I941c191d5c0fb5a01a6b9269f0afa7ea77db327a --- android/abi_gki_aarch64.xml | 131 ++++--------------------------- android/abi_gki_aarch64_rockchip | 13 +++ 2 files changed, 28 insertions(+), 116 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index b4d6be9b9db2..3a8dffebeda3 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -2412,6 +2412,7 @@ + @@ -14035,89 +14036,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -65513,14 +65431,7 @@ - - - - - - - - + @@ -80729,9 +80640,6 @@ - - - @@ -84681,15 +84589,15 @@ - + - + - + - + @@ -89511,9 +89419,6 @@ - - - @@ -90459,7 +90364,6 @@ - @@ -102558,20 +102462,7 @@ - - - - - - - - - - - - - - + @@ -126071,6 +125962,14 @@ + + + + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 8acf86496782..7892904894cd 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -195,6 +195,15 @@ gpiod_set_value gpiod_set_value_cansleep hid_debug + hid_hw_close + hid_hw_open + hid_hw_start + hid_hw_stop + hid_open_report + __hid_register_driver + __hid_request + hid_unregister_driver + hid_validate_values i2c_adapter_type i2c_add_adapter i2c_del_adapter @@ -219,6 +228,7 @@ init_wait_entry __init_waitqueue_head input_event + input_ff_create_memless input_register_device input_set_abs_params irq_set_irq_wake @@ -599,6 +609,9 @@ # required by hid-ntrig.ko usb_control_msg +# required by hid-primax.ko + hid_report_raw_event + # required by i2c-dev.ko bus_register_notifier bus_unregister_notifier From 935b5c3bdd8673f4f2890dcefb46bacf3923ee42 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 15:12:03 +0800 Subject: [PATCH 62/94] ANDROID: GKI: rockchip: Enable symbols for rk808-regulator Functions changes summary: 0 Removed, 0 Changed (1546 filtered out), 2 Added functions Variables changes summary: 0 Removed, 0 Changed (11 filtered out), 0 Added variables 2 Added functions: [A] 'function gpio_desc* devm_gpiod_get_index_optional(device*, const char*, unsigned int, gpiod_flags)' [A] 'function int gpiod_is_active_low(const gpio_desc*)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: Ie06fa99d6616cb389bccc1d9167f084c7cafbe89 --- android/abi_gki_aarch64.xml | 127 ++++++++++++++++++++++++++++++- android/abi_gki_aarch64_rockchip | 4 + 2 files changed, 129 insertions(+), 2 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 3a8dffebeda3..cd584494d25b 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -1415,6 +1415,7 @@ + @@ -2357,6 +2358,7 @@ + @@ -14036,6 +14038,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -65431,7 +65516,14 @@ - + + + + + + + + @@ -80640,6 +80732,9 @@ + + + @@ -89419,6 +89514,9 @@ + + + @@ -90364,6 +90462,7 @@ + @@ -102462,7 +102561,20 @@ - + + + + + + + + + + + + + + @@ -120723,6 +120835,13 @@ + + + + + + + @@ -125696,6 +125815,10 @@ + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 7892904894cd..23c121c46172 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -113,6 +113,7 @@ devm_fwnode_gpiod_get_index devm_gpiod_get devm_gpiod_get_index + devm_gpiod_get_index_optional devm_gpiod_get_optional devm_input_allocate_device devm_ioremap @@ -948,6 +949,9 @@ devm_request_any_context_irq input_set_capability +# required by rk808-regulator.ko + gpiod_is_active_low + # required by rk808.ko devm_mfd_add_devices i2c_smbus_read_byte_data From 4d91b1f6ee79c00ac5c304e7cdea521a3c11751d Mon Sep 17 00:00:00 2001 From: Lecopzer Chen Date: Wed, 24 Mar 2021 12:05:18 +0800 Subject: [PATCH 63/94] UPSTREAM: arm64: kasan: don't populate vmalloc area for CONFIG_KASAN_VMALLOC Linux support KAsan for VMALLOC since commit 3c5c3cfb9ef4da9 ("kasan: support backing vmalloc space with real shadow memory") Like how the MODULES_VADDR does now, just not to early populate the VMALLOC_START between VMALLOC_END. Before: MODULE_VADDR: no mapping, no zero shadow at init VMALLOC_VADDR: backed with zero shadow at init After: MODULE_VADDR: no mapping, no zero shadow at init VMALLOC_VADDR: no mapping, no zero shadow at init Thus the mapping will get allocated on demand by the core function of KASAN_VMALLOC. ----------- vmalloc_shadow_start | | | | | | <= non-mapping | | | | |-----------| |///////////|<- kimage shadow with page table mapping. |-----------| | | | | <= non-mapping | | ------------- vmalloc_shadow_end |00000000000| |00000000000| <= Zero shadow |00000000000| ------------- KASAN_SHADOW_END Signed-off-by: Lecopzer Chen Acked-by: Andrey Konovalov Tested-by: Andrey Konovalov Tested-by: Ard Biesheuvel Link: https://lore.kernel.org/r/20210324040522.15548-2-lecopzer.chen@mediatek.com [catalin.marinas@arm.com: add a build check on VMALLOC_START != MODULES_END] Signed-off-by: Catalin Marinas Bug: 201711661 (cherry picked from commit 9a0732efa77418fc85b1bdc5ddee619e62f59545) Signed-off-by: Yee Lee Change-Id: I82c4b624685cc9e083d720904787df2326cb9cc0 --- arch/arm64/mm/kasan_init.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/arch/arm64/mm/kasan_init.c b/arch/arm64/mm/kasan_init.c index d8e66c78440e..7598b0a96b64 100644 --- a/arch/arm64/mm/kasan_init.c +++ b/arch/arm64/mm/kasan_init.c @@ -214,6 +214,7 @@ static void __init kasan_init_shadow(void) { u64 kimg_shadow_start, kimg_shadow_end; u64 mod_shadow_start, mod_shadow_end; + u64 vmalloc_shadow_end; phys_addr_t pa_start, pa_end; u64 i; @@ -223,6 +224,8 @@ static void __init kasan_init_shadow(void) mod_shadow_start = (u64)kasan_mem_to_shadow((void *)MODULES_VADDR); mod_shadow_end = (u64)kasan_mem_to_shadow((void *)MODULES_END); + vmalloc_shadow_end = (u64)kasan_mem_to_shadow((void *)VMALLOC_END); + /* * We are going to perform proper setup of shadow memory. * At first we should unmap early shadow (clear_pgds() call below). @@ -241,12 +244,18 @@ static void __init kasan_init_shadow(void) kasan_populate_early_shadow(kasan_mem_to_shadow((void *)PAGE_END), (void *)mod_shadow_start); - kasan_populate_early_shadow((void *)kimg_shadow_end, - (void *)KASAN_SHADOW_END); - if (kimg_shadow_start > mod_shadow_end) - kasan_populate_early_shadow((void *)mod_shadow_end, - (void *)kimg_shadow_start); + if (IS_ENABLED(CONFIG_KASAN_VMALLOC)) { + BUILD_BUG_ON(VMALLOC_START != MODULES_END); + kasan_populate_early_shadow((void *)vmalloc_shadow_end, + (void *)KASAN_SHADOW_END); + } else { + kasan_populate_early_shadow((void *)kimg_shadow_end, + (void *)KASAN_SHADOW_END); + if (kimg_shadow_start > mod_shadow_end) + kasan_populate_early_shadow((void *)mod_shadow_end, + (void *)kimg_shadow_start); + } for_each_mem_range(i, &pa_start, &pa_end) { void *start = (void *)__phys_to_virt(pa_start); From d0f4b61ae65cd881546ea776b436ba526e5bd407 Mon Sep 17 00:00:00 2001 From: Lecopzer Chen Date: Wed, 24 Mar 2021 12:05:19 +0800 Subject: [PATCH 64/94] UPSTREAM: arm64: kasan: abstract _text and _end to KERNEL_START/END Arm64 provides defined macro for KERNEL_START and KERNEL_END, thus replace them by the abstration instead of using _text and _end. Signed-off-by: Lecopzer Chen Acked-by: Andrey Konovalov Tested-by: Andrey Konovalov Tested-by: Ard Biesheuvel Link: https://lore.kernel.org/r/20210324040522.15548-3-lecopzer.chen@mediatek.com Signed-off-by: Catalin Marinas Bug: 201711661 (cherry picked from commit 7d7b88ff5f8fd79a72baacc521407a3101f0ffae) Signed-off-by: Yee Lee Change-Id: I806cb3d57e2064c272f3c87f0eb212ceea80c424 --- arch/arm64/mm/kasan_init.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm64/mm/kasan_init.c b/arch/arm64/mm/kasan_init.c index 7598b0a96b64..1cc2cde94e94 100644 --- a/arch/arm64/mm/kasan_init.c +++ b/arch/arm64/mm/kasan_init.c @@ -218,8 +218,8 @@ static void __init kasan_init_shadow(void) phys_addr_t pa_start, pa_end; u64 i; - kimg_shadow_start = (u64)kasan_mem_to_shadow(_text) & PAGE_MASK; - kimg_shadow_end = PAGE_ALIGN((u64)kasan_mem_to_shadow(_end)); + kimg_shadow_start = (u64)kasan_mem_to_shadow(KERNEL_START) & PAGE_MASK; + kimg_shadow_end = PAGE_ALIGN((u64)kasan_mem_to_shadow(KERNEL_END)); mod_shadow_start = (u64)kasan_mem_to_shadow((void *)MODULES_VADDR); mod_shadow_end = (u64)kasan_mem_to_shadow((void *)MODULES_END); @@ -240,7 +240,7 @@ static void __init kasan_init_shadow(void) clear_pgds(KASAN_SHADOW_START, KASAN_SHADOW_END); kasan_map_populate(kimg_shadow_start, kimg_shadow_end, - early_pfn_to_nid(virt_to_pfn(lm_alias(_text)))); + early_pfn_to_nid(virt_to_pfn(lm_alias(KERNEL_START)))); kasan_populate_early_shadow(kasan_mem_to_shadow((void *)PAGE_END), (void *)mod_shadow_start); From ef61240f622653eeb565f3d221745209e6154c59 Mon Sep 17 00:00:00 2001 From: Lecopzer Chen Date: Wed, 24 Mar 2021 12:05:20 +0800 Subject: [PATCH 65/94] UPSTREAM: arm64: Kconfig: support CONFIG_KASAN_VMALLOC We can backed shadow memory in vmalloc area after vmalloc area isn't populated at kasan_init(), thus make KASAN_VMALLOC selectable. Signed-off-by: Lecopzer Chen Acked-by: Andrey Konovalov Tested-by: Andrey Konovalov Tested-by: Ard Biesheuvel Link: https://lore.kernel.org/r/20210324040522.15548-4-lecopzer.chen@mediatek.com Signed-off-by: Catalin Marinas Bug: 201711661 (cherry picked from commit 71b613fc0c69080262f4ebe810c3d909d7ff8132) Signed-off-by: Yee Lee Change-Id: I48d473cadd54ec2c8d3f92fa3d88ff456b70afdc --- arch/arm64/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index cf21e80963b5..a5cf0681e353 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -139,6 +139,7 @@ config ARM64 select HAVE_ARCH_JUMP_LABEL select HAVE_ARCH_JUMP_LABEL_RELATIVE select HAVE_ARCH_KASAN if !(ARM64_16K_PAGES && ARM64_VA_BITS_48) + select HAVE_ARCH_KASAN_VMALLOC if HAVE_ARCH_KASAN select HAVE_ARCH_KASAN_SW_TAGS if HAVE_ARCH_KASAN select HAVE_ARCH_KASAN_HW_TAGS if (HAVE_ARCH_KASAN && ARM64_MTE) select HAVE_ARCH_KFENCE From 23232f84c823c140e8bc2861908b0863b64eefef Mon Sep 17 00:00:00 2001 From: Lecopzer Chen Date: Wed, 24 Mar 2021 12:05:21 +0800 Subject: [PATCH 66/94] UPSTREAM: arm64: kaslr: support randomized module area with KASAN_VMALLOC After KASAN_VMALLOC works in arm64, we can randomize module region into vmalloc area now. Test: VMALLOC area ffffffc010000000 fffffffdf0000000 before the patch: module_alloc_base/end ffffffc008b80000 ffffffc010000000 after the patch: module_alloc_base/end ffffffdcf4bed000 ffffffc010000000 And the function that insmod some modules is fine. Suggested-by: Ard Biesheuvel Signed-off-by: Lecopzer Chen Link: https://lore.kernel.org/r/20210324040522.15548-5-lecopzer.chen@mediatek.com Signed-off-by: Catalin Marinas Bug: 201711661 (cherry picked from commit 31d02e7ab00873befd2cfb6e44581490d947c38b) Signed-off-by: Yee Lee Change-Id: I513f205113752b396245e9e8d64b973fcd7ffcb1 --- arch/arm64/kernel/kaslr.c | 18 ++++++++++-------- arch/arm64/kernel/module.c | 16 +++++++++------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/arch/arm64/kernel/kaslr.c b/arch/arm64/kernel/kaslr.c index 27f8939deb1b..341342b207f6 100644 --- a/arch/arm64/kernel/kaslr.c +++ b/arch/arm64/kernel/kaslr.c @@ -128,15 +128,17 @@ u64 __init kaslr_early_init(void) /* use the top 16 bits to randomize the linear region */ memstart_offset_seed = seed >> 48; - if (IS_ENABLED(CONFIG_KASAN_GENERIC) || - IS_ENABLED(CONFIG_KASAN_SW_TAGS)) + if (!IS_ENABLED(CONFIG_KASAN_VMALLOC) && + (IS_ENABLED(CONFIG_KASAN_GENERIC) || + IS_ENABLED(CONFIG_KASAN_SW_TAGS))) /* - * KASAN does not expect the module region to intersect the - * vmalloc region, since shadow memory is allocated for each - * module at load time, whereas the vmalloc region is shadowed - * by KASAN zero pages. So keep modules out of the vmalloc - * region if KASAN is enabled, and put the kernel well within - * 4 GB of the module region. + * KASAN without KASAN_VMALLOC does not expect the module region + * to intersect the vmalloc region, since shadow memory is + * allocated for each module at load time, whereas the vmalloc + * region is shadowed by KASAN zero pages. So keep modules + * out of the vmalloc region if KASAN is enabled without + * KASAN_VMALLOC, and put the kernel well within 4 GB of the + * module region. */ return offset % SZ_2G; diff --git a/arch/arm64/kernel/module.c b/arch/arm64/kernel/module.c index fe21e0f06492..b5ec010c481f 100644 --- a/arch/arm64/kernel/module.c +++ b/arch/arm64/kernel/module.c @@ -40,14 +40,16 @@ void *module_alloc(unsigned long size) NUMA_NO_NODE, __builtin_return_address(0)); if (!p && IS_ENABLED(CONFIG_ARM64_MODULE_PLTS) && - !IS_ENABLED(CONFIG_KASAN_GENERIC) && - !IS_ENABLED(CONFIG_KASAN_SW_TAGS)) + (IS_ENABLED(CONFIG_KASAN_VMALLOC) || + (!IS_ENABLED(CONFIG_KASAN_GENERIC) && + !IS_ENABLED(CONFIG_KASAN_SW_TAGS)))) /* - * KASAN can only deal with module allocations being served - * from the reserved module region, since the remainder of - * the vmalloc region is already backed by zero shadow pages, - * and punching holes into it is non-trivial. Since the module - * region is not randomized when KASAN is enabled, it is even + * KASAN without KASAN_VMALLOC can only deal with module + * allocations being served from the reserved module region, + * since the remainder of the vmalloc region is already + * backed by zero shadow pages, and punching holes into it + * is non-trivial. Since the module region is not randomized + * when KASAN is enabled without KASAN_VMALLOC, it is even * less likely that the module region gets exhausted, so we * can simply omit this fallback in that case. */ From 2659f14d9349088be9836b2052273129512221cd Mon Sep 17 00:00:00 2001 From: Lecopzer Chen Date: Wed, 24 Mar 2021 12:05:22 +0800 Subject: [PATCH 67/94] UPSTREAM: arm64: Kconfig: select KASAN_VMALLOC if KANSAN_GENERIC is enabled Before this patch, someone who wants to use VMAP_STACK when KASAN_GENERIC enabled must explicitly select KASAN_VMALLOC. >From Will's suggestion [1]: > I would _really_ like to move to VMAP stack unconditionally, and > that would effectively force KASAN_VMALLOC to be set if KASAN is in use Because VMAP_STACK now depends on either HW_TAGS or KASAN_VMALLOC if KASAN enabled, in order to make VMAP_STACK selected unconditionally, we bind KANSAN_GENERIC and KASAN_VMALLOC together. Note that SW_TAGS supports neither VMAP_STACK nor KASAN_VMALLOC now, so this is the first step to make VMAP_STACK selected unconditionally. Bind KANSAN_GENERIC and KASAN_VMALLOC together is supposed to cost more memory at runtime, thus the alternative is using SW_TAGS KASAN instead. [1]: https://lore.kernel.org/lkml/20210204150100.GE20815@willie-the-truck/ Suggested-by: Will Deacon Signed-off-by: Lecopzer Chen Link: https://lore.kernel.org/r/20210324040522.15548-6-lecopzer.chen@mediatek.com Signed-off-by: Catalin Marinas Bug: 201711661 (cherry picked from commit acc3042d62cb92c3776767f09f665511c903ef2d) Signed-off-by: Yee Lee Change-Id: Ic7884e3acafa02361c8a250028ceebdb1780a49e --- arch/arm64/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index a5cf0681e353..3007e975270c 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -195,6 +195,7 @@ config ARM64 select IOMMU_DMA if IOMMU_SUPPORT select IRQ_DOMAIN select IRQ_FORCED_THREADING + select KASAN_VMALLOC if KASAN_GENERIC select MODULES_USE_ELF_RELA select NEED_DMA_MAP_STATE select NEED_SG_DMA_LENGTH From d788d16fed246c3db44132a31485463a47ad9b59 Mon Sep 17 00:00:00 2001 From: Yee Lee Date: Wed, 22 Sep 2021 14:10:11 +0800 Subject: [PATCH 68/94] FROMGIT: scs: Release kasan vmalloc poison in scs_free process Since scs allocation is moved to vmalloc region, the shadow stack is protected by kasan_posion_vmalloc. However, the vfree_atomic operation needs to access its context for scs_free process and causes kasan error as the dump info below. This patch Adds kasan_unpoison_vmalloc() before vfree_atomic, which aligns to the prior flow as using kmem_cache. The vmalloc region will go back posioned in the following vumap() operations. ================================================================== BUG: KASAN: vmalloc-out-of-bounds in llist_add_batch+0x60/0xd4 Write of size 8 at addr ffff8000100b9000 by task kthreadd/2 CPU: 0 PID: 2 Comm: kthreadd Not tainted 5.15.0-rc2-11681-g92477dd1faa6-dirty #1 Hardware name: linux,dummy-virt (DT) Call trace: dump_backtrace+0x0/0x43c show_stack+0x1c/0x2c dump_stack_lvl+0x68/0x84 print_address_description+0x80/0x394 kasan_report+0x180/0x1dc __asan_report_store8_noabort+0x48/0x58 llist_add_batch+0x60/0xd4 vfree_atomic+0x60/0xe0 scs_free+0x1dc/0x1fc scs_release+0xa4/0xd4 free_task+0x30/0xe4 __put_task_struct+0x1ec/0x2e0 delayed_put_task_struct+0x5c/0xa0 rcu_do_batch+0x62c/0x8a0 rcu_core+0x60c/0xc14 rcu_core_si+0x14/0x24 __do_softirq+0x19c/0x68c irq_exit+0x118/0x2dc handle_domain_irq+0xcc/0x134 gic_handle_irq+0x7c/0x1bc call_on_irq_stack+0x40/0x70 do_interrupt_handler+0x78/0x9c el1_interrupt+0x34/0x60 el1h_64_irq_handler+0x1c/0x2c el1h_64_irq+0x78/0x7c _raw_spin_unlock_irqrestore+0x40/0xcc sched_fork+0x4f0/0xb00 copy_process+0xacc/0x3648 kernel_clone+0x168/0x534 kernel_thread+0x13c/0x1b0 kthreadd+0x2bc/0x400 ret_from_fork+0x10/0x20 Memory state around the buggy address: ffff8000100b8f00: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ffff8000100b8f80: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 >ffff8000100b9000: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ^ ffff8000100b9080: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ffff8000100b9100: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ================================================================== Bug: 201711661 (cherry picked from commit 528a4ab45300fa6283556d9b48e26b45a8aa15c4 https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git/ for-next/scs) Change-Id: I0980e9df3fdff37ebfb9f873174d60f30c00230a Suggested-by: Kuan-Ying Lee Acked-by: Will Deacon Tested-by: Will Deacon Reviewed-by: Sami Tolvanen Signed-off-by: Yee Lee Fixes: a2abe7cbd8fe ("scs: switch to vmapped shadow stacks") Link: https://lore.kernel.org/r/20210930081619.30091-1-yee.lee@mediatek.com Signed-off-by: Will Deacon --- kernel/scs.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/scs.c b/kernel/scs.c index e2a71fc82fa0..579841be8864 100644 --- a/kernel/scs.c +++ b/kernel/scs.c @@ -78,6 +78,7 @@ void scs_free(void *s) if (this_cpu_cmpxchg(scs_cache[i], 0, s) == NULL) return; + kasan_unpoison_vmalloc(s, SCS_SIZE); vfree_atomic(s); } From 7050ead5709cf43488bd1407cf0515b0e2788fc3 Mon Sep 17 00:00:00 2001 From: Subash Abhinov Kasiviswanathan Date: Thu, 30 Sep 2021 12:02:49 -0600 Subject: [PATCH 69/94] ANDROID: qcom: Add qdisc related symbols Add register_qdisc and unregister_qdisc which are needed by rmnet modules. Leaf changes summary: 2 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 2 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 2 Added functions: [A] 'function int register_qdisc(Qdisc_ops*)' [A] 'function int unregister_qdisc(Qdisc_ops*)' Bug: 201660525 Change-Id: Ifc6c36ffada9046f8f23d3e87059a5d631b5cf8c Signed-off-by: Subash Abhinov Kasiviswanathan --- android/abi_gki_aarch64.xml | 10 ++++++++++ android/abi_gki_aarch64_qcom | 2 ++ 2 files changed, 12 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index cd584494d25b..1f9559e3682c 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -3827,6 +3827,7 @@ + @@ -4916,6 +4917,7 @@ + @@ -133243,6 +133245,10 @@ + + + + @@ -138899,6 +138905,10 @@ + + + + diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index f7a087b9a33f..7877587eee69 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -1960,6 +1960,7 @@ register_kretprobe register_memory_notifier register_module_notifier + register_qdisc register_netdev register_netdevice register_netdevice_notifier @@ -2814,6 +2815,7 @@ unregister_oom_notifier unregister_pernet_device unregister_pm_notifier + unregister_qdisc unregister_reboot_notifier unregister_restart_handler unregister_rpmsg_driver From e774e4eca69ce8ab60df04b27f524b586ab74f17 Mon Sep 17 00:00:00 2001 From: Konstantin Vyshetsky Date: Wed, 25 Aug 2021 15:42:09 -0700 Subject: [PATCH 70/94] ANDROID: scsi: ufs: add complete init vendor hook Currently the core UFS driver does not have a vops to notify when the device is operational. This commit introduces a hook, which serves to notify device completing initialization and is ready to accept I/O. This is required by the FIPS140-2 [1] self integrity test of inline encryption engine, which must run whenever the host controller is reset. The code requires sleeping while waiting for I/O to complete and allocating some memory dynamically, which requires the vendor hook to be restricted. [1] https://csrc.nist.gov/publications/detail/fips/140/2/final Bug: 185809932 Signed-off-by: Konstantin Vyshetsky Change-Id: I6f476f9c2e2b50574d2898c3f1ef6b648d92df24 --- drivers/android/vendor_hooks.c | 1 + drivers/scsi/ufs/ufshcd.c | 2 ++ include/trace/hooks/ufshcd.h | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index f0ca247d88df..b7f23ab2dec7 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -214,6 +214,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_fault_cache_page); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_enable_thermal_genl_check); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_pm_notify_suspend); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_fill_prdt); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_ufs_complete_init); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_ufs_reprogram_all_keys); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_prepare_command); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sysfs); diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 9f848fa73eb3..a69e9558337b 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -8042,6 +8042,8 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool async) ufshcd_auto_hibern8_enable(hba); ufshpb_reset(hba); + + trace_android_rvh_ufs_complete_init(hba); out: spin_lock_irqsave(hba->host->host_lock, flags); if (ret) diff --git a/include/trace/hooks/ufshcd.h b/include/trace/hooks/ufshcd.h index ec8845a55076..744a1db41631 100644 --- a/include/trace/hooks/ufshcd.h +++ b/include/trace/hooks/ufshcd.h @@ -19,6 +19,10 @@ DECLARE_HOOK(android_vh_ufs_fill_prdt, unsigned int segments, int *err), TP_ARGS(hba, lrbp, segments, err)); +DECLARE_RESTRICTED_HOOK(android_rvh_ufs_complete_init, + TP_PROTO(struct ufs_hba *hba), + TP_ARGS(hba), 1); + DECLARE_RESTRICTED_HOOK(android_rvh_ufs_reprogram_all_keys, TP_PROTO(struct ufs_hba *hba, int *err), TP_ARGS(hba, err), 1); From 5adc3c4124ee5066365c2b1721a4921bac65d229 Mon Sep 17 00:00:00 2001 From: Konstantin Vyshetsky Date: Fri, 1 Oct 2021 07:52:20 -0700 Subject: [PATCH 71/94] ANDROID: Update the ABI representation Leaf changes summary: 2 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable 1 Added function: [A] 'function int __traceiter_android_rvh_ufs_complete_init(void*, ufs_hba*)' 1 Added variable: [A] 'tracepoint __tracepoint_android_rvh_ufs_complete_init' Bug: 185809932 Signed-off-by: Konstantin Vyshetsky Change-Id: I48a831d2059901276b1a510d8af186c00ca2f9db --- android/abi_gki_aarch64.xml | 159 +++++++++++++++++--------------- android/abi_gki_aarch64_generic | 3 + 2 files changed, 90 insertions(+), 72 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 1f9559e3682c..b82260175b4e 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -336,6 +336,7 @@ + @@ -5542,6 +5543,7 @@ + @@ -70177,7 +70179,14 @@ - + + + + + + + + @@ -114578,10 +114587,15 @@ - + - + + + + + + @@ -115502,24 +115516,24 @@ - - - - + + + + - - - - - - + + + + + + - - - - + + + + @@ -115530,42 +115544,42 @@ - - - - - - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - @@ -115992,7 +116006,8 @@ - + + @@ -116153,16 +116168,16 @@ - - - + + + - - - - - - + + + + + + @@ -138581,9 +138596,9 @@ - - - + + + @@ -138601,8 +138616,8 @@ - - + + @@ -138760,20 +138775,20 @@ - - + + - - + + - - + + - - + + diff --git a/android/abi_gki_aarch64_generic b/android/abi_gki_aarch64_generic index b7113819db01..f19b3266a8cf 100644 --- a/android/abi_gki_aarch64_generic +++ b/android/abi_gki_aarch64_generic @@ -1284,6 +1284,7 @@ of_root of_thermal_get_ntrips of_thermal_get_trip_points + of_thermal_is_trip_valid of_translate_address of_usb_host_tpl_support page_endio @@ -1931,6 +1932,7 @@ __traceiter_android_rvh_typec_tcpci_chk_contaminant __traceiter_android_rvh_typec_tcpci_get_vbus __traceiter_android_rvh_uclamp_eff_get + __traceiter_android_rvh_ufs_complete_init __traceiter_android_rvh_ufs_reprogram_all_keys __traceiter_android_rvh_util_est_update __traceiter_android_vh_arch_set_freq_scale @@ -2008,6 +2010,7 @@ __tracepoint_android_rvh_typec_tcpci_chk_contaminant __tracepoint_android_rvh_typec_tcpci_get_vbus __tracepoint_android_rvh_uclamp_eff_get + __tracepoint_android_rvh_ufs_complete_init __tracepoint_android_rvh_ufs_reprogram_all_keys __tracepoint_android_rvh_util_est_update __tracepoint_android_vh_arch_set_freq_scale From 7b6860d2a41ce4ab44a795b35f4a849a53b4d6c3 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Fri, 1 Oct 2021 11:37:25 -0700 Subject: [PATCH 72/94] ANDROID: scsi: ufs: Rename struct ufs_hba_with_hpb into ufs_hba_add_info Before adding more data members in struct ufs_hba_with_hpb, rename this data structure. This patch does not change any functionality. Bug: 200291871 Change-Id: I6b0365ebcf8adf6cfa009218d8c4dc96fa629bde Signed-off-by: Bart Van Assche --- drivers/scsi/ufs/ufshcd-add-info.h | 24 ++++++++++++++++++++++++ drivers/scsi/ufs/ufshcd.c | 3 ++- drivers/scsi/ufs/ufshcd.h | 13 +------------ drivers/scsi/ufs/ufshpb.c | 3 ++- 4 files changed, 29 insertions(+), 14 deletions(-) create mode 100644 drivers/scsi/ufs/ufshcd-add-info.h diff --git a/drivers/scsi/ufs/ufshcd-add-info.h b/drivers/scsi/ufs/ufshcd-add-info.h new file mode 100644 index 000000000000..8abe67ee8b7d --- /dev/null +++ b/drivers/scsi/ufs/ufshcd-add-info.h @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef _UFSHCD_ADD_INFO_H_ +#define _UFSHCD_ADD_INFO_H_ + +/* + * Compared to the upstream equivalent, @hpb_dev has been moved from struct + * ufs_hba into struct ufs_hba_add_info to satisfy the Android ABI checks. + * Do NOT use this data structure in any out-of-tree driver since it is not + * covered by the GKI. + */ +struct ufs_hba_add_info { + struct ufs_hba hba; +#ifdef CONFIG_SCSI_UFS_HPB + struct ufshpb_dev_info hpb_dev; +#endif +}; + +static inline struct ufs_hba_add_info *ufs_hba_add_info(struct ufs_hba *hba) +{ + return container_of(hba, struct ufs_hba_add_info, hba); +} + +#endif /* _UFSHCD_ADD_INFO_H_ */ diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index a69e9558337b..42f32b18e3d6 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -17,6 +17,7 @@ #include #include #include "ufshcd.h" +#include "ufshcd-add-info.h" #include "ufs_quirks.h" #include "unipro.h" #include "ufs-sysfs.h" @@ -9325,7 +9326,7 @@ int ufshcd_alloc_host(struct device *dev, struct ufs_hba **hba_handle) } host = scsi_host_alloc(&ufshcd_driver_template, - sizeof(struct ufs_hba_with_hpb)); + sizeof(struct ufs_hba_add_info)); if (!host) { dev_err(dev, "scsi_host_alloc failed\n"); err = -ENOMEM; diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h index c75c5cd7b973..26274dad5e75 100644 --- a/drivers/scsi/ufs/ufshcd.h +++ b/drivers/scsi/ufs/ufshcd.h @@ -913,7 +913,7 @@ struct ufs_hba { struct delayed_work rpm_dev_flush_recheck_work; #if 0 - /* This has been moved into struct ufs_hba_with_hpb. */ + /* This has been moved into struct ufs_hba_add_info. */ struct ufshpb_dev_info ufshpb_dev; #endif @@ -935,17 +935,6 @@ struct ufs_hba { ANDROID_KABI_RESERVE(4); }; -/* - * Compared to the upstream equivalent, @hpb_dev has been moved from struct - * ufs_hba into struct ufs_hba_with_hpb to satisfy the Android ABI checks. - */ -struct ufs_hba_with_hpb { - struct ufs_hba hba; -#ifdef CONFIG_SCSI_UFS_HPB - struct ufshpb_dev_info hpb_dev; -#endif -}; - /* Returns true if clocks can be gated. Otherwise false */ static inline bool ufshcd_is_clkgating_allowed(struct ufs_hba *hba) { diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/scsi/ufs/ufshpb.c index 9755317c3301..10d8b3dde976 100644 --- a/drivers/scsi/ufs/ufshpb.c +++ b/drivers/scsi/ufs/ufshpb.c @@ -13,6 +13,7 @@ #include #include "ufshcd.h" +#include "ufshcd-add-info.h" #include "ufshpb.h" #include "../sd.h" @@ -37,7 +38,7 @@ static void ufshpb_update_active_info(struct ufshpb_lu *hpb, int rgn_idx, static inline struct ufshpb_dev_info *ufs_hba_to_hpb(struct ufs_hba *hba) { - return &container_of(hba, struct ufs_hba_with_hpb, hba)->hpb_dev; + return &ufs_hba_add_info(hba)->hpb_dev; } bool ufshpb_is_allowed(struct ufs_hba *hba) From f4b3d35dfa4fb190d73d16934847365ad1b362ba Mon Sep 17 00:00:00 2001 From: Adrian Hunter Date: Wed, 22 Sep 2021 12:10:59 +0300 Subject: [PATCH 73/94] FROMLIST: scsi: ufs: Fix task management completion The UFS driver uses blk_mq_tagset_busy_iter() when identifying task management requests to complete, however blk_mq_tagset_busy_iter() doesn't work. blk_mq_tagset_busy_iter() only iterates requests dispatched by the block layer. That appears as if it might have started since commit 37f4a24c2469a1 ("blk-mq: centralise related handling into blk_mq_get_driver_tag") which removed 'data->hctx->tags->rqs[rq->tag] = rq' from blk_mq_rq_ctx_init() which gets called: blk_get_request blk_mq_alloc_request __blk_mq_alloc_request blk_mq_rq_ctx_init Since UFS task management requests are not dispatched by the block layer, hctx->tags->rqs[rq->tag] remains NULL, and since blk_mq_tagset_busy_iter() relies on finding requests using hctx->tags->rqs[rq->tag], UFS task management requests are never found by blk_mq_tagset_busy_iter(). By using blk_mq_tagset_busy_iter(), the UFS driver was relying on internal details of the block layer, which was fragile and subsequently got broken. Fix by removing the use of blk_mq_tagset_busy_iter() and having the driver keep track of task management requests. Fixes: 1235fc569e0bf5 ("scsi: ufs: core: Fix task management request completion timeout") Fixes: 69a6c269c097d7 ("scsi: ufs: Use blk_{get,put}_request() to allocate and free TMFs") Cc: stable@vger.kernel.org Signed-off-by: Adrian Hunter Bug: 200291871 Link: https://lore.kernel.org/linux-scsi/20210922091059.4040-1-adrian.hunter@intel.com/ Change-Id: I4e11f40c7371fd66b3a6b570d06c956b113df142 Signed-off-by: Bart Van Assche --- drivers/scsi/ufs/ufshcd-add-info.h | 1 + drivers/scsi/ufs/ufshcd.c | 55 ++++++++++++++---------------- drivers/scsi/ufs/ufshcd.h | 6 ++++ 3 files changed, 32 insertions(+), 30 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd-add-info.h b/drivers/scsi/ufs/ufshcd-add-info.h index 8abe67ee8b7d..72ed34de6a61 100644 --- a/drivers/scsi/ufs/ufshcd-add-info.h +++ b/drivers/scsi/ufs/ufshcd-add-info.h @@ -11,6 +11,7 @@ */ struct ufs_hba_add_info { struct ufs_hba hba; + struct request **tmf_rqs; #ifdef CONFIG_SCSI_UFS_HPB struct ufshpb_dev_info hpb_dev; #endif diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 42f32b18e3d6..f160d0fcdc59 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -6364,27 +6364,6 @@ static irqreturn_t ufshcd_check_errors(struct ufs_hba *hba, u32 intr_status) return retval; } -struct ctm_info { - struct ufs_hba *hba; - unsigned long pending; - unsigned int ncpl; -}; - -static bool ufshcd_compl_tm(struct request *req, void *priv, bool reserved) -{ - struct ctm_info *const ci = priv; - struct completion *c; - - WARN_ON_ONCE(reserved); - if (test_bit(req->tag, &ci->pending)) - return true; - ci->ncpl++; - c = req->end_io_data; - if (c) - complete(c); - return true; -} - /** * ufshcd_tmc_handler - handle task management function completion * @hba: per adapter instance @@ -6395,18 +6374,25 @@ static bool ufshcd_compl_tm(struct request *req, void *priv, bool reserved) */ static irqreturn_t ufshcd_tmc_handler(struct ufs_hba *hba) { - unsigned long flags; - struct request_queue *q = hba->tmf_queue; - struct ctm_info ci = { - .hba = hba, - }; + struct request **tmf_rqs = ufs_hba_add_info(hba)->tmf_rqs; + unsigned long flags, pending, issued; + irqreturn_t ret = IRQ_NONE; + int tag; + + pending = ufshcd_readl(hba, REG_UTP_TASK_REQ_DOOR_BELL); spin_lock_irqsave(hba->host->host_lock, flags); - ci.pending = ufshcd_readl(hba, REG_UTP_TASK_REQ_DOOR_BELL); - blk_mq_tagset_busy_iter(q->tag_set, ufshcd_compl_tm, &ci); + issued = hba->outstanding_tasks & ~pending; + for_each_set_bit(tag, &issued, hba->nutmrs) { + struct request *req = tmf_rqs[tag]; + struct completion *c = req->end_io_data; + + complete(c); + ret = IRQ_HANDLED; + } spin_unlock_irqrestore(hba->host->host_lock, flags); - return ci.ncpl ? IRQ_HANDLED : IRQ_NONE; + return ret; } /** @@ -6511,6 +6497,7 @@ static int ufshcd_clear_tm_cmd(struct ufs_hba *hba, int tag) static int __ufshcd_issue_tm_cmd(struct ufs_hba *hba, struct utp_task_req_desc *treq, u8 tm_function) { + struct request **tmf_rqs = ufs_hba_add_info(hba)->tmf_rqs; struct request_queue *q = hba->tmf_queue; struct Scsi_Host *host = hba->host; DECLARE_COMPLETION_ONSTACK(wait); @@ -6529,9 +6516,9 @@ static int __ufshcd_issue_tm_cmd(struct ufs_hba *hba, ufshcd_hold(hba, false); spin_lock_irqsave(host->host_lock, flags); - blk_mq_start_request(req); task_tag = req->tag; + tmf_rqs[req->tag] = req; treq->req_header.dword_0 |= cpu_to_be32(task_tag); memcpy(hba->utmrdl_base_addr + task_tag, treq, sizeof(*treq)); @@ -6575,6 +6562,7 @@ static int __ufshcd_issue_tm_cmd(struct ufs_hba *hba, } spin_lock_irqsave(hba->host->host_lock, flags); + tmf_rqs[req->tag] = NULL; __clear_bit(task_tag, &hba->outstanding_tasks); spin_unlock_irqrestore(hba->host->host_lock, flags); @@ -9367,6 +9355,7 @@ static const struct blk_mq_ops ufshcd_tmf_ops = { */ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq) { + struct request ***tmf_rqs = &ufs_hba_add_info(hba)->tmf_rqs; int err; struct Scsi_Host *host = hba->host; struct device *dev = hba->dev; @@ -9504,6 +9493,12 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq) err = PTR_ERR(hba->tmf_queue); goto free_tmf_tag_set; } + *tmf_rqs = devm_kcalloc(hba->dev, hba->nutmrs, sizeof(**tmf_rqs), + GFP_KERNEL); + if (!*tmf_rqs) { + err = -ENOMEM; + goto free_tmf_queue; + } /* Reset the attached device */ ufshcd_vops_device_reset(hba); diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h index 26274dad5e75..7150c886283e 100644 --- a/drivers/scsi/ufs/ufshcd.h +++ b/drivers/scsi/ufs/ufshcd.h @@ -843,6 +843,12 @@ struct ufs_hba { struct blk_mq_tag_set tmf_tag_set; struct request_queue *tmf_queue; +#if 0 + /* + * This has been moved into struct ufs_hba_add_info because of the GKI. + */ + struct request **tmf_rqs; +#endif struct uic_command *active_uic_cmd; struct mutex uic_cmd_mutex; From fc1e452fa3a63aac2cae256af4dd0620e6b5fc4f Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 15:24:56 +0800 Subject: [PATCH 74/94] ANDROID: GKI: rockchip: Enable symbols for LED hardbeat Functions changes summary: 0 Removed, 0 Changed, 3 Added functions Variables changes summary: 0 Removed, 0 Changed, 1 Added variable 3 Added functions: [A] 'function void led_set_brightness_nosleep(led_classdev*, led_brightness)' [A] 'function int led_trigger_register(led_trigger*)' [A] 'function void led_trigger_unregister(led_trigger*)' 1 Added variable: [A] 'unsigned long int avenrun[3]' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I078368f6e330581f3bd3233b5086730be3db4033 --- android/abi_gki_aarch64.xml | 18 ++++++++++++++++++ android/abi_gki_aarch64_rockchip | 4 ++++ 2 files changed, 22 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index b82260175b4e..e785609402d3 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -2867,14 +2867,17 @@ + + + @@ -5781,6 +5784,7 @@ + @@ -116946,6 +116950,7 @@ + @@ -128455,6 +128460,11 @@ + + + + + @@ -128483,6 +128493,10 @@ + + + + @@ -128492,6 +128506,10 @@ + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 23c121c46172..fe67e3569c4f 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -252,6 +252,9 @@ kvmalloc_node led_classdev_register_ext led_classdev_unregister + led_set_brightness_nosleep + led_trigger_register + led_trigger_unregister __list_add_valid __list_del_entry_valid __log_post_read_mmio @@ -677,6 +680,7 @@ # required by ledtrig-heartbeat.ko atomic_notifier_chain_unregister + avenrun # required by lzo-rle.ko lzorle1x_1_compress From 576c7a6297723e3d8be2668bd347b27c2a98d854 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 15:34:58 +0800 Subject: [PATCH 75/94] ANDROID: GKI: rockchip: Enable symbols for phy Functions changes summary: 0 Removed, 0 Changed, 4 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 4 Added functions: [A] 'function int extcon_set_state(extcon_dev*, unsigned int, bool)' [A] 'function int extcon_sync(extcon_dev*, unsigned int)' [A] 'function usb_dr_mode of_usb_get_dr_mode_by_phy(device_node*, int)' [A] 'function int phy_mipi_dphy_config_validate(phy_configure_opts_mipi_dphy*)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: Ifb68fb8726d7d179a212853abd0be6f5460358ef --- android/abi_gki_aarch64.xml | 24 ++++++++++++++++++++++++ android/abi_gki_aarch64_rockchip | 4 ++++ 2 files changed, 28 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index e785609402d3..203e308ed6d5 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -2160,7 +2160,9 @@ + + @@ -3340,6 +3342,7 @@ + @@ -3525,6 +3528,7 @@ + @@ -124802,12 +124806,23 @@ + + + + + + + + + + + @@ -130829,6 +130844,11 @@ + + + + + @@ -131778,6 +131798,10 @@ + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index fe67e3569c4f..567dd80f09f9 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -304,6 +304,7 @@ of_property_read_u32_index of_property_read_variable_u32_array of_regulator_match + of_usb_get_dr_mode_by_phy __page_pinner_migration_failed panic_notifier_list param_ops_bool @@ -886,10 +887,13 @@ # required by phy-rockchip-inno-dsidphy.ko devm_platform_ioremap_resource_byname + phy_mipi_dphy_config_validate platform_get_resource_byname # required by phy-rockchip-inno-usb2.ko devm_extcon_register_notifier + extcon_set_state + extcon_sync wakeup_source_remove # required by phy-rockchip-typec.ko From 21034d71fc1ebfe6c8f2931af4d42c668b041a8b Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 15:39:58 +0800 Subject: [PATCH 76/94] ANDROID: GKI: rockchip: Enable symbols for pwm_bl Functions changes summary: 0 Removed, 0 Changed, 1 Added function Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 1 Added function: [A] 'function int pwm_adjust_config(pwm_device*)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: Ic944cb67431d2da199a12f926f6e9248235a3abf --- android/abi_gki_aarch64.xml | 5 +++++ android/abi_gki_aarch64_rockchip | 1 + 2 files changed, 6 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 203e308ed6d5..14c0746de025 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -3738,6 +3738,7 @@ + @@ -132870,6 +132871,10 @@ + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 567dd80f09f9..0fa0dd481e70 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -340,6 +340,7 @@ put_disk __put_page __put_task_struct + pwm_adjust_config pwm_apply_state queue_delayed_work_on queue_work_on From b37b3c9eaa26249e105e9bd9769e1c862c3f0d0c Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 15:42:43 +0800 Subject: [PATCH 77/94] ANDROID: GKI: rockchip: Enable symbol for act8865 Leaf changes summary: 1 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 1 Added functions: [A] 'function int regulator_set_pull_down_regmap(regulator_dev*)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I7c8668ad05c11b27d92892a1e4075ef7c87155bd --- android/abi_gki_aarch64.xml | 5 +++++ android/abi_gki_aarch64_rockchip | 3 +++ 2 files changed, 8 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 14c0746de025..7c8e3f5aaab0 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -3910,6 +3910,7 @@ + @@ -133686,6 +133687,10 @@ + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 0fa0dd481e70..a120b309dd16 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -473,6 +473,9 @@ wakeup_source_add __warn_printk +# required by act8865-regulator.ko + regulator_set_pull_down_regmap + # required by adc-keys.ko devm_iio_channel_get iio_get_channel_type From 64665afcb33157d894eaf596369a593e1ff0fb93 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 15:44:55 +0800 Subject: [PATCH 78/94] ANDROID: GKI: rockchip: Enable symbols for adc-keys Leaf changes summary: 2 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 2 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 2 Added functions: [A] 'function void input_set_poll_interval(input_dev*, unsigned int)' [A] 'function int input_setup_polling(input_dev*, void (input_dev*)*)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I0e5c2b10ded49faa890aa37d157e7ddf6797e432 --- android/abi_gki_aarch64.xml | 12 ++++++++++++ android/abi_gki_aarch64_rockchip | 2 ++ 2 files changed, 14 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 7c8e3f5aaab0..a4bca551a1b9 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -2592,7 +2592,9 @@ + + @@ -127022,11 +127024,21 @@ + + + + + + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index a120b309dd16..581512217aae 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -480,6 +480,8 @@ devm_iio_channel_get iio_get_channel_type iio_read_channel_processed + input_set_poll_interval + input_setup_polling # required by aes-ce-ccm.ko ce_aes_expandkey From 5f020167d0d8880f096fe3d5c73f4dd44dbd851f Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 15:51:07 +0800 Subject: [PATCH 79/94] ANDROID: GKI: rockchip: Enable symbols for scsi ch Leaf changes summary: 1 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 1 Added functions: [A] 'function int scsi_register_driver(device_driver*)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I7540204d69feec24f0e7f49b08def874c0c072cf --- android/abi_gki_aarch64.xml | 5 +++++ android/abi_gki_aarch64_rockchip | 1 + 2 files changed, 6 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index a4bca551a1b9..05f631fd930f 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -4109,6 +4109,7 @@ + @@ -134696,6 +134697,10 @@ + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 581512217aae..d1acfaae11bd 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -492,6 +492,7 @@ scsi_device_lookup __scsi_execute scsi_print_sense_hdr + scsi_register_driver # required by clk-pwm.ko of_clk_add_hw_provider From f1e23eee853aa722ed39e66ee78649a561b82b25 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 15:55:49 +0800 Subject: [PATCH 80/94] ANDROID: GKI: rockchip: Enable symbols for cpufreq governor Functions changes summary: 0 Removed, 0 Changed (147 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 8 Added functions: [A] 'function void cpufreq_dbs_governor_exit(cpufreq_policy*)' [A] 'function int cpufreq_dbs_governor_init(cpufreq_policy*)' [A] 'function void cpufreq_dbs_governor_limits(cpufreq_policy*)' [A] 'function int cpufreq_dbs_governor_start(cpufreq_policy*)' [A] 'function void cpufreq_dbs_governor_stop(cpufreq_policy*)' [A] 'function unsigned int dbs_update(cpufreq_policy*)' [A] 'function void gov_update_cpu_data(dbs_data*)' [A] 'function ssize_t store_sampling_rate(gov_attr_set*, const char*, size_t)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: Ia03c3afb864e5b875ac24898e8b818d986d50ec6 --- android/abi_gki_aarch64.xml | 87 +++++++++++++++++++++++++++++++- android/abi_gki_aarch64_rockchip | 8 +++ 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 05f631fd930f..f017b98c6b47 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -1035,6 +1035,11 @@ + + + + + @@ -1180,6 +1185,7 @@ + @@ -2332,6 +2338,7 @@ + @@ -4583,6 +4590,7 @@ + @@ -21038,6 +21046,7 @@ + @@ -41133,7 +41142,26 @@ - + + + + + + + + + + + + + + + + + + + + @@ -64665,6 +64693,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -118869,6 +118920,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -119601,6 +119672,10 @@ + + + + @@ -125713,6 +125788,10 @@ + + + + @@ -137247,6 +137326,12 @@ + + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index d1acfaae11bd..c24a5111eafa 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -540,10 +540,18 @@ # required by cpufreq_ondemand.ko cpufreq_cpu_get_raw + cpufreq_dbs_governor_exit + cpufreq_dbs_governor_init + cpufreq_dbs_governor_limits + cpufreq_dbs_governor_start + cpufreq_dbs_governor_stop cpufreq_table_index_unsorted cpus_read_lock cpus_read_unlock + dbs_update get_cpu_idle_time_us + gov_update_cpu_data + store_sampling_rate # required by cw2015_battery.ko device_property_read_u8_array From a90c09dd41d3d11d99c24f39721a7f5b854e9c5a Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 15:59:52 +0800 Subject: [PATCH 81/94] ANDROID: GKI: rockchip: Enable symbols for mmc driver Functions changes summary: 0 Removed, 0 Changed, 5 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 5 Added functions: [A] 'function int clk_get_phase(clk*)' [A] 'function int clk_set_phase(clk*, int)' [A] 'function void sdhci_adma_write_desc(sdhci_host*, void**, dma_addr_t, int, unsigned int)' [A] 'function unsigned int sdhci_pltfm_clk_get_max_clock(sdhci_host*)' [A] 'function void sdhci_set_clock(sdhci_host*, unsigned int)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I2eaf765788b782d397a9291d2351f033a9e5c05f --- android/abi_gki_aarch64.xml | 31 +++++++++++++++++++++++++++++++ android/abi_gki_aarch64_rockchip | 5 +++++ 2 files changed, 36 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index f017b98c6b47..d27594402fb0 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -942,6 +942,7 @@ + @@ -976,6 +977,7 @@ + @@ -4125,6 +4127,7 @@ + @@ -4134,6 +4137,7 @@ + @@ -4144,6 +4148,7 @@ + @@ -118434,6 +118439,10 @@ + + + + @@ -118636,6 +118645,11 @@ + + + + + @@ -134817,6 +134831,14 @@ + + + + + + + + @@ -134859,6 +134881,10 @@ + + + + @@ -134907,6 +134933,11 @@ + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index c24a5111eafa..0c8ded03c08d 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -561,6 +561,8 @@ regmap_raw_write # required by dw_mmc-rockchip.ko + clk_get_phase + clk_set_phase mmc_send_tuning # required by dw_mmc.ko @@ -1030,7 +1032,9 @@ devm_clk_bulk_get_optional dma_get_required_mask sdhci_add_host + sdhci_adma_write_desc sdhci_get_property + sdhci_pltfm_clk_get_max_clock sdhci_pltfm_free sdhci_pltfm_init sdhci_remove_host @@ -1038,6 +1042,7 @@ sdhci_reset sdhci_resume_host sdhci_set_bus_width + sdhci_set_clock sdhci_suspend_host # required by sg.ko From be153f6250005a69d0c4aaff514b9838735bca1d Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 16:09:25 +0800 Subject: [PATCH 82/94] ANDROID: GKI: rockchip: Enable symbol for cw2015_battery Functions changes summary: 0 Removed, 0 Changed (2328 filtered out), 1 Added functions Variables changes summary: 0 Removed, 0 Changed (22 filtered out), 0 Added variables 1 Added function: [A] 'function int power_supply_am_i_supplied(power_supply*)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I7b313c10eb3bed84f4b4194c63d8dcfd4b5273c5 --- android/abi_gki_aarch64.xml | 536 ++++++++++--------------------- android/abi_gki_aarch64_rockchip | 1 + 2 files changed, 179 insertions(+), 358 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index d27594402fb0..49a924b99de0 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -3679,6 +3679,7 @@ + @@ -11944,7 +11945,6 @@ - @@ -14156,7 +14156,6 @@ - @@ -20952,11 +20951,6 @@ - - - - - @@ -22841,17 +22835,6 @@ - - - - - - - - - - - @@ -24276,7 +24259,6 @@ - @@ -32098,32 +32080,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -34527,9 +34484,6 @@ - - - @@ -43031,11 +42985,7 @@ - - - - - + @@ -44478,9 +44428,6 @@ - - - @@ -46719,32 +46666,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -48237,7 +48158,6 @@ - @@ -51623,11 +51543,6 @@ - - - - - @@ -63356,14 +63271,6 @@ - - - - - - - - @@ -65707,11 +65614,6 @@ - - - - - @@ -69708,7 +69610,6 @@ - @@ -70248,14 +70149,7 @@ - - - - - - - - + @@ -70379,11 +70273,7 @@ - - - - - + @@ -75064,11 +74954,6 @@ - - - - - @@ -78911,7 +78796,6 @@ - @@ -79478,7 +79362,6 @@ - @@ -81543,12 +81426,6 @@ - - - - - - @@ -82778,175 +82655,175 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -83355,7 +83232,6 @@ - @@ -85883,53 +85759,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -87413,7 +87242,6 @@ - @@ -88599,7 +88427,6 @@ - @@ -92471,17 +92298,6 @@ - - - - - - - - - - - @@ -132610,6 +132426,10 @@ + + + + @@ -138781,64 +138601,64 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - + + + - - + + @@ -138847,31 +138667,31 @@ - - + + - - + + - - - + + + - - + + - - + + - - - - + + + + @@ -138903,91 +138723,91 @@ - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 0c8ded03c08d..8fad0eb16eda 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -555,6 +555,7 @@ # required by cw2015_battery.ko device_property_read_u8_array + power_supply_am_i_supplied power_supply_get_battery_info power_supply_put_battery_info regmap_raw_read From 4275c37d4e5e2f90ebe6297b2a92396a73bd24d8 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 16:11:01 +0800 Subject: [PATCH 83/94] ANDROID: GKI: rockchip: Enable symbols for iio Functions changes summary: 0 Removed, 0 Changed (424 filtered out), 2 Added functions Variables changes summary: 0 Removed, 0 Changed (3 filtered out), 0 Added variables 2 Added functions: [A] 'function void iio_channel_release_all(iio_channel*)' [A] 'function int iio_update_buffers(iio_dev*, iio_buffer*, iio_buffer*)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: Ifaaade732fa2372e9d8c31483f52188c227eac13 --- android/abi_gki_aarch64.xml | 196 ++++++++++++++++++++++++++++++- android/abi_gki_aarch64_rockchip | 2 + 2 files changed, 195 insertions(+), 3 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 49a924b99de0..e3a984384d48 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -2548,6 +2548,7 @@ + @@ -2561,6 +2562,7 @@ + @@ -11945,6 +11947,7 @@ + @@ -14156,6 +14159,7 @@ + @@ -20951,6 +20955,11 @@ + + + + + @@ -22835,6 +22844,17 @@ + + + + + + + + + + + @@ -24259,6 +24279,7 @@ + @@ -32080,7 +32101,32 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -34484,6 +34530,9 @@ + + + @@ -42985,7 +43034,11 @@ - + + + + + @@ -44428,6 +44481,9 @@ + + + @@ -46666,6 +46722,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -48158,6 +48240,7 @@ + @@ -51543,6 +51626,11 @@ + + + + + @@ -63271,6 +63359,14 @@ + + + + + + + + @@ -65614,6 +65710,11 @@ + + + + + @@ -69610,6 +69711,7 @@ + @@ -70273,7 +70375,11 @@ - + + + + + @@ -74954,6 +75060,11 @@ + + + + + @@ -78796,6 +78907,7 @@ + @@ -79362,6 +79474,7 @@ + @@ -81426,6 +81539,12 @@ + + + + + + @@ -83232,6 +83351,7 @@ + @@ -85759,6 +85879,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -87242,6 +87409,7 @@ + @@ -88427,6 +88595,7 @@ + @@ -92298,6 +92467,17 @@ + + + + + + + + + + + @@ -126654,6 +126834,10 @@ + + + + @@ -126718,6 +126902,12 @@ + + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 8fad0eb16eda..6118dd35febe 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -675,6 +675,8 @@ bitmap_free bitmap_zalloc iio_channel_get_all + iio_channel_release_all + iio_update_buffers # required by industrialio-triggered-buffer.ko iio_alloc_pollfunc From 94f76a7779c7d042ac51924e9a62cdf873cdbb88 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 16:13:18 +0800 Subject: [PATCH 84/94] ANDROID: GKI: rockchip: Enable symbol for nvme Functions changes summary: 0 Removed, 0 Changed, 1 Added function Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 1 Added function: [A] 'function int pci_sriov_configure_simple(pci_dev*, int)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: Icacfeeb8f11ba26a030408a9378068ba1a4eb00e --- android/abi_gki_aarch64.xml | 6 ++++++ android/abi_gki_aarch64_rockchip | 1 + 2 files changed, 7 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index e3a984384d48..e489cbf6ef99 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -3465,6 +3465,7 @@ + @@ -131533,6 +131534,11 @@ + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 6118dd35febe..adfb10f658ad 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -838,6 +838,7 @@ pci_save_state pci_select_bars pci_set_master + pci_sriov_configure_simple pci_unregister_driver pm_suspend_global_flags sg_init_table From 229f9c2fafe3fe853d9f023170044d8642ffaa56 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 16:15:48 +0800 Subject: [PATCH 85/94] ANDROID: GKI: rockchip: Enable symbol for ov5695 Functions changes summary: 0 Removed, 0 Changed, 1 Added function Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 1 Added function: [A] 'function v4l2_ctrl* v4l2_ctrl_new_int_menu(v4l2_ctrl_handler*, const v4l2_ctrl_ops*, u32, u8, u8, const s64*)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I0742f3772612c8a35d8a3ff94700668b2b302f4a --- android/abi_gki_aarch64.xml | 10 ++++++++++ android/abi_gki_aarch64_rockchip | 1 + 2 files changed, 11 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index e489cbf6ef99..9f7f3e747785 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -5161,6 +5161,7 @@ + @@ -140164,6 +140165,15 @@ + + + + + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index adfb10f658ad..85ded24fe97c 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -879,6 +879,7 @@ pm_runtime_get_if_active strscpy __v4l2_ctrl_modify_range + v4l2_ctrl_new_int_menu # required by panel-simple.ko drm_bus_flags_from_videomode From 7827c05b0032a32f6354ae9a1b202757bc82b826 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 16:17:16 +0800 Subject: [PATCH 86/94] ANDROID: GKI: rockchip: Enable symbol for panel-simple Functions changes summary: 0 Removed, 0 Changed (4065 filtered out), 1 Added functions Variables changes summary: 0 Removed, 0 Changed (397 filtered out), 0 Added variables 1 Added function: [A] 'function int of_get_drm_display_mode(device_node*, drm_display_mode*, u32*, int)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I0a6ae2f80c21c40396b2a1b163765f1101180ac9 --- android/abi_gki_aarch64.xml | 35 +++++++++++++++++++++++++++++++- android/abi_gki_aarch64_rockchip | 1 + 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 9f7f3e747785..90a35c4bc7cf 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -3274,6 +3274,7 @@ + @@ -66858,7 +66859,20 @@ - + + + + + + + + + + + + + + @@ -67736,6 +67750,7 @@ + @@ -109978,6 +109993,17 @@ + + + + + + + + + + + @@ -130522,6 +130548,13 @@ + + + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 85ded24fe97c..4254415178cc 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -904,6 +904,7 @@ of_drm_get_panel_orientation of_find_i2c_adapter_by_node of_get_display_timing + of_get_drm_display_mode of_parse_phandle videomode_from_timing From fd41ec3b9409593742b431905765cb9c8864ea76 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Sun, 26 Sep 2021 16:18:38 +0800 Subject: [PATCH 87/94] ANDROID: GKI: rockchip: Enable symbols for rtc-rk808 Functions changes summary: 0 Removed, 0 Changed (4066 filtered out), 2 Added functions Variables changes summary: 0 Removed, 0 Changed (397 filtered out), 0 Added variables 2 Added functions: [A] 'function unsigned int _bcd2bin(unsigned char)' [A] 'function unsigned char _bin2bcd(unsigned int)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: If6b62156f3b6e23e1347e3c2c3279d626f732080 --- android/abi_gki_aarch64.xml | 37 ++++++++++---------------------- android/abi_gki_aarch64_rockchip | 2 ++ 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 90a35c4bc7cf..724b420fecb6 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -579,6 +579,8 @@ + + @@ -66859,20 +66861,7 @@ - - - - - - - - - - - - - - + @@ -67750,7 +67739,6 @@ - @@ -109993,17 +109981,6 @@ - - - - - - - - - - - @@ -116514,6 +116491,14 @@ + + + + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 4254415178cc..99e4492f8021 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -1028,6 +1028,8 @@ thermal_zone_device_update # required by rtc-rk808.ko + _bcd2bin + _bin2bcd devm_rtc_allocate_device __rtc_register_device rtc_time64_to_tm From 6cef9b295255da56ba165322bdcda03de5b0d130 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Mon, 27 Sep 2021 09:59:48 +0800 Subject: [PATCH 88/94] ANDROID: GKI: rockchip: Enable symbols for common clk Functions changes summary: 0 Removed, 0 Changed, 1 Added function Variables changes summary: 0 Removed, 0 Changed, 2 Added variables 1 Added function: [A] 'function clk* clk_register_mux_table(device*, const char*, const char* const*, u8, unsigned long int, void*, u8, u32, u8, u32*, spinlock_t*)' 2 Added variables: [A] 'const clk_ops clk_divider_ro_ops' [A] 'const clk_ops clk_mux_ro_ops' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I2b8d0f19b3069d3d6beea9b54241e0c6cfd4ab12 --- android/abi_gki_aarch64.xml | 19 ++++++++++++ android/abi_gki_aarch64_rockchip | 52 ++++++++++++++++++++++++++------ 2 files changed, 61 insertions(+), 10 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 724b420fecb6..faabab4c3634 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -977,6 +977,7 @@ + @@ -5818,11 +5819,13 @@ + + @@ -118431,6 +118434,7 @@ + @@ -118560,6 +118564,7 @@ + @@ -118644,6 +118649,20 @@ + + + + + + + + + + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 99e4492f8021..c6ef62b0e367 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -10,6 +10,7 @@ __arch_copy_to_user arm64_const_caps_ready arm64_use_ng_mappings + __arm_smccc_smc atomic_notifier_chain_register bdget_disk bdput @@ -50,6 +51,8 @@ clk_get __clk_get_name clk_get_rate + clk_notifier_register + clk_notifier_unregister clk_prepare clk_put clk_register @@ -232,6 +235,7 @@ input_ff_create_memless input_register_device input_set_abs_params + iounmap irq_set_irq_wake jiffies kasan_flag_enabled @@ -294,10 +298,13 @@ of_get_next_child of_get_property of_get_regulator_init_data + of_iomap of_irq_get_byname + of_machine_is_compatible of_match_device of_match_node of_node_name_eq + of_parse_phandle of_phy_simple_xlate of_property_read_string of_property_read_string_helper @@ -313,6 +320,7 @@ __per_cpu_offset pinctrl_lookup_state pinctrl_select_state + __platform_driver_probe __platform_driver_register platform_driver_unregister platform_get_irq @@ -335,6 +343,7 @@ preempt_schedule preempt_schedule_notrace prepare_to_wait_event + print_hex_dump printk put_device put_disk @@ -345,6 +354,7 @@ queue_delayed_work_on queue_work_on ___ratelimit + rational_best_approximation _raw_spin_lock _raw_spin_lock_bh _raw_spin_lock_irqsave @@ -498,6 +508,38 @@ of_clk_add_hw_provider of_clk_hw_simple_get +# required by clk-rockchip.ko + clk_divider_ops + clk_divider_ro_ops + clk_fixed_factor_ops + clk_fractional_divider_ops + clk_gate_ops + __clk_get_hw + clk_get_parent + clk_hw_get_flags + clk_hw_get_name + clk_hw_get_parent + clk_hw_get_rate + clk_hw_register_composite + clk_hw_round_rate + __clk_mux_determine_rate + clk_mux_ops + clk_mux_ro_ops + clk_register_composite + clk_register_divider_table + clk_register_fixed_factor + clk_register_gate + clk_register_mux_table + devm_clk_register + divider_get_val + gcd + kmemdup + match_string + of_clk_src_onecell_get + register_restart_handler + reset_controller_register + __udelay + # required by clk-scmi.ko clk_hw_set_rate_range of_clk_hw_onecell_get @@ -667,8 +709,6 @@ rt_mutex_unlock # required by i2c-rk3x.ko - clk_notifier_register - clk_notifier_unregister i2c_parse_fw_timings # required by industrialio-buffer-cb.ko @@ -808,7 +848,6 @@ __do_once_start flush_workqueue __ioremap - iounmap mempool_alloc mempool_create_node mempool_destroy @@ -857,7 +896,6 @@ # required by optee.ko alloc_pages_exact __arm_smccc_hvc - __arm_smccc_smc device_property_read_string device_register find_vma @@ -905,7 +943,6 @@ of_find_i2c_adapter_by_node of_get_display_timing of_get_drm_display_mode - of_parse_phandle videomode_from_timing # required by phy-rockchip-inno-dsidphy.ko @@ -1022,7 +1059,6 @@ nvmem_cell_put nvmem_cell_read of_nvmem_cell_get - print_hex_dump thermal_zone_device_disable thermal_zone_device_enable thermal_zone_device_update @@ -1150,12 +1186,8 @@ snd_pcm_hw_constraint_eld snd_soc_dapm_add_routes -# required by snd-soc-rk3328.ko - of_machine_is_compatible - # required by snd-soc-rockchip-pdm.ko clk_round_rate - rational_best_approximation # required by snd-soc-simple-card-utils.ko devm_get_clk_from_child From 068f20142a5857f2a41e049ace6b4958f208a0e2 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Mon, 27 Sep 2021 10:24:29 +0800 Subject: [PATCH 89/94] ANDROID: GKI: rockchip: Enable symbol for pm-domain Functions changes summary: 0 Removed, 0 Changed, 1 Added function Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 1 Added function: [A] 'function int pm_clk_add_clk(device*, clk*)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I503f715b2cf8f641a7b435dc7be1508c88489b76 --- android/abi_gki_aarch64.xml | 6 ++++++ android/abi_gki_aarch64_rockchip | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index faabab4c3634..593c372e40de 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -3651,6 +3651,7 @@ + @@ -132505,6 +132506,11 @@ + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index c6ef62b0e367..384414b28cf4 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -994,6 +994,20 @@ tasklet_kill tasklet_setup +# required by pm_domains.ko + clk_bulk_put + of_clk_get + of_clk_get_parent_count + of_genpd_add_provider_onecell + panic + pm_clk_add_clk + pm_clk_create + pm_clk_destroy + pm_genpd_add_subdomain + pm_genpd_init + pm_genpd_remove + strrchr + # required by pwm-regulator.ko regulator_map_voltage_iterate From a195017de88f7887f8ec16aaa2ade4d54023db34 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Mon, 27 Sep 2021 10:48:23 +0800 Subject: [PATCH 90/94] ANDROID: GKI: rockchip: Enable symbols for gpio-rockchip Functions changes summary: 0 Removed, 0 Changed, 4 Added functions Variables changes summary: 0 Removed, 0 Changed, 1 Added variable 4 Added functions: [A] 'function int __irq_alloc_domain_generic_chips(irq_domain*, int, int, const char*, irq_flow_handler_t, unsigned int, unsigned int, irq_gc_flags)' [A] 'function int irq_gc_set_wake(irq_data*, unsigned int)' [A] 'function irq_chip_generic* irq_get_domain_generic_chip(irq_domain*, unsigned int)' [A] 'function pinctrl_dev* of_pinctrl_get(device_node*)' 1 Added variable: [A] 'irq_domain_ops irq_generic_chip_ops' Bug: 194515348 Signed-off-by: Kever Yang Change-Id: Ie572e071070d1949a105ea84fb906ba0b36bd140 --- android/abi_gki_aarch64.xml | 37 +++++++++++++++++++++++++++++--- android/abi_gki_aarch64_rockchip | 36 +++++++++++++++++++++++++------ 2 files changed, 63 insertions(+), 10 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 593c372e40de..f82582a7da8d 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -127,6 +127,7 @@ + @@ -2718,6 +2719,8 @@ + + @@ -3331,6 +3334,7 @@ + @@ -5885,6 +5889,7 @@ + @@ -25425,7 +25430,7 @@ - + @@ -58052,8 +58057,8 @@ - - + + @@ -113405,6 +113410,17 @@ + + + + + + + + + + + @@ -127750,6 +127766,17 @@ + + + + + + + + + + + @@ -130830,6 +130857,10 @@ + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 384414b28cf4..c55d1de489b9 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -190,6 +190,10 @@ fwnode_property_read_u32_array get_device gic_nonsecure_priorities + gpiochip_add_pin_range + gpiochip_generic_free + gpiochip_generic_request + gpiochip_get_data gpiod_cansleep gpiod_direction_output gpiod_get_optional @@ -285,6 +289,7 @@ of_alias_get_id of_clk_add_provider of_clk_del_provider + of_clk_get of_clk_get_by_name of_clk_src_simple_get of_count_phandle_with_args @@ -296,6 +301,7 @@ of_get_child_by_name of_get_next_available_child of_get_next_child + of_get_parent of_get_property of_get_regulator_init_data of_iomap @@ -318,6 +324,7 @@ param_ops_int param_ops_uint __per_cpu_offset + pinctrl_dev_get_drvdata pinctrl_lookup_state pinctrl_select_state __platform_driver_probe @@ -655,6 +662,28 @@ gpiod_count of_property_count_elems_of_size +# required by gpio-rockchip.ko + generic_handle_irq + gpiochip_add_data_with_key + gpiochip_remove + handle_edge_irq + handle_level_irq + __irq_alloc_domain_generic_chips + irq_create_mapping_affinity + __irq_domain_add + irq_domain_remove + irq_find_mapping + irq_gc_ack_set_bit + irq_gc_mask_clr_bit + irq_gc_mask_set_bit + irq_gc_set_wake + irq_generic_chip_ops + irq_get_domain_generic_chip + irq_of_parse_and_map + irq_set_chained_handler_and_data + of_address_to_resource + of_pinctrl_get + # required by grf.ko of_find_matching_node_and_match @@ -965,12 +994,7 @@ # required by pinctrl-rk805.ko devm_gpiochip_add_data_with_key devm_pinctrl_register - gpiochip_add_pin_range - gpiochip_generic_free - gpiochip_generic_request - gpiochip_get_data pinconf_generic_dt_node_to_map - pinctrl_dev_get_drvdata pinctrl_gpio_direction_input pinctrl_gpio_direction_output pinctrl_utils_free_map @@ -996,7 +1020,6 @@ # required by pm_domains.ko clk_bulk_put - of_clk_get of_clk_get_parent_count of_genpd_add_provider_onecell panic @@ -1222,7 +1245,6 @@ # required by snd-soc-simple-card.ko devm_snd_soc_register_card - of_get_parent of_parse_phandle_with_args snd_soc_dai_link_set_capabilities snd_soc_of_get_dai_name From 6276cc398261ec06032f33cee0a84f302f09d033 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Mon, 27 Sep 2021 11:44:03 +0800 Subject: [PATCH 91/94] ANDROID: GKI: rockchip: Enable symbols for devfreq Functions changes summary: 0 Removed, 0 Changed, 6 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 6 Added functions: [A] 'function int devfreq_event_disable_edev(devfreq_event_dev*)' [A] 'function int devfreq_event_enable_edev(devfreq_event_dev*)' [A] 'function devfreq_event_dev* devfreq_event_get_edev_by_phandle(device*, const char*, int)' [A] 'function int devfreq_event_get_edev_count(device*, const char*)' [A] 'function devfreq_event_dev* devm_devfreq_event_add_edev(device*, devfreq_event_desc*)' [A] 'function int down_write_trylock(rw_semaphore*)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: If4ca65ee44b961827f289a02a7458370a81e9154 --- android/abi_gki_aarch64.xml | 114 ++++++++++++++++++++++++++++++- android/abi_gki_aarch64_rockchip | 39 +++++++++-- 2 files changed, 146 insertions(+), 7 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index f82582a7da8d..601ca536c7ce 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -1322,6 +1322,10 @@ + + + + @@ -1402,6 +1406,7 @@ + @@ -1643,6 +1648,7 @@ + @@ -11628,6 +11634,11 @@ + + + + + @@ -11915,6 +11926,23 @@ + + + + + + + + + + + + + + + + + @@ -14854,6 +14882,7 @@ + @@ -16683,6 +16712,7 @@ + @@ -25430,7 +25460,7 @@ - + @@ -29173,6 +29203,23 @@ + + + + + + + + + + + + + + + + + @@ -44810,6 +44857,14 @@ + + + + + + + + @@ -50347,6 +50402,7 @@ + @@ -58057,8 +58113,8 @@ - - + + @@ -59402,6 +59458,7 @@ + @@ -71076,6 +71133,7 @@ + @@ -75258,6 +75316,7 @@ + @@ -91221,6 +91280,10 @@ + + + + @@ -94004,6 +94067,7 @@ + @@ -97298,6 +97362,7 @@ + @@ -103349,6 +103414,7 @@ + @@ -105934,6 +106000,20 @@ + + + + + + + + + + + + + + @@ -120425,6 +120505,25 @@ + + + + + + + + + + + + + + + + + + + @@ -120843,6 +120942,11 @@ + + + + + @@ -122212,6 +122316,10 @@ + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index c55d1de489b9..3db5dae0e7ea 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -111,6 +111,7 @@ devm_clk_get devm_clk_get_optional devm_clk_hw_register + devm_devfreq_event_add_edev devm_extcon_dev_allocate devm_extcon_dev_register devm_fwnode_gpiod_get_index @@ -145,6 +146,9 @@ __devm_reset_control_get devm_snd_dmaengine_pcm_register devm_snd_soc_register_component + dev_pm_opp_get_opp_count + dev_pm_opp_get_voltage + dev_pm_opp_put devres_add devres_alloc_node devres_free @@ -239,7 +243,9 @@ input_ff_create_memless input_register_device input_set_abs_params + __ioremap iounmap + irq_get_irq_data irq_set_irq_wake jiffies kasan_flag_enabled @@ -324,6 +330,7 @@ param_ops_int param_ops_uint __per_cpu_offset + pfn_valid pinctrl_dev_get_drvdata pinctrl_lookup_state pinctrl_select_state @@ -572,7 +579,6 @@ cpufreq_unregister_driver dev_pm_opp_free_cpufreq_table dev_pm_opp_get_max_transition_latency - dev_pm_opp_get_opp_count dev_pm_opp_get_sharing_cpus dev_pm_opp_get_suspend_opp_freq dev_pm_opp_init_cpufreq_table @@ -727,7 +733,6 @@ hid_input_report hid_parse_report i2c_smbus_read_byte - irq_get_irq_data request_threaded_irq # required by i2c-mux.ko @@ -876,7 +881,6 @@ __do_once_done __do_once_start flush_workqueue - __ioremap mempool_alloc mempool_create_node mempool_destroy @@ -934,7 +938,6 @@ ktime_get_real_ts64 memremap memunmap - pfn_valid wait_for_completion_interruptible # required by ov2680.ko @@ -1082,6 +1085,31 @@ phy_drivers_register phy_drivers_unregister +# required by rockchip_bus.ko + cpufreq_register_notifier + cpu_topology + devfreq_recommended_opp + regulator_set_voltage + +# required by rockchip_dmc.ko + cpu_latency_qos_update_request + devfreq_event_disable_edev + devfreq_event_enable_edev + devfreq_event_get_edev_by_phandle + devfreq_event_get_edev_count + devfreq_resume_device + devfreq_suspend_device + _dev_notice + dev_pm_opp_add + dev_pm_opp_find_freq_ceil + dev_pm_opp_remove + __memset_io + platform_get_irq_byname + +# required by rockchip_dmc_common.ko + down_write_trylock + update_devfreq + # required by rockchip_saradc.ko devm_iio_device_alloc __devm_iio_device_register @@ -1091,6 +1119,9 @@ iio_trigger_notify_done wait_for_completion_timeout +# required by rockchip_sip.ko + sched_clock + # required by rockchip_thermal.ko devm_thermal_zone_of_sensor_register nvmem_cell_put From 54a33334dec96c5ae70b1f49edbe4495bee6571b Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Mon, 27 Sep 2021 12:52:26 +0800 Subject: [PATCH 92/94] ANDROID: GKI: rockchip: Enable symbols for sdhci-arasan Functions changes summary: 0 Removed, 0 Changed, 3 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 3 Added functions: [A] 'function int sdhci_pltfm_unregister(platform_device*)' [A] 'function void sdhci_set_power_and_bus_voltage(sdhci_host*, unsigned char, unsigned short int)' [A] 'function void sdhci_set_uhs_signaling(sdhci_host*, unsigned int)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I1bdf263f03312a80e26e175106b9f244d4e4007a --- android/abi_gki_aarch64.xml | 18 ++++++++++ android/abi_gki_aarch64_rockchip | 56 +++++++++++++++++++++++--------- 2 files changed, 58 insertions(+), 16 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 601ca536c7ce..d510bf4fed5d 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -4159,6 +4159,7 @@ + @@ -4168,7 +4169,9 @@ + + @@ -135094,6 +135097,10 @@ + + + + @@ -135137,12 +135144,23 @@ + + + + + + + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 3db5dae0e7ea..35e00367f944 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -51,11 +51,13 @@ clk_get __clk_get_name clk_get_rate + clk_hw_get_name clk_notifier_register clk_notifier_unregister clk_prepare clk_put clk_register + clk_set_phase clk_set_rate clk_unprepare clk_unregister @@ -111,6 +113,7 @@ devm_clk_get devm_clk_get_optional devm_clk_hw_register + devm_clk_register devm_devfreq_event_add_edev devm_extcon_dev_allocate devm_extcon_dev_register @@ -160,6 +163,7 @@ dma_free_attrs dma_heap_add dma_heap_get_name + dmam_alloc_attrs dma_map_sg_attrs dma_release_channel dma_request_chan @@ -181,6 +185,7 @@ extcon_get_state extcon_set_state_sync failure_tracking + find_next_bit find_next_zero_bit finish_wait flush_delayed_work @@ -339,6 +344,7 @@ platform_driver_unregister platform_get_irq platform_get_resource + platform_get_resource_byname pm_power_off __pm_relax __pm_runtime_disable @@ -419,6 +425,16 @@ scsi_ioctl scsi_ioctl_block_when_processing_errors sdev_prefix_printk + sdhci_add_host + sdhci_get_property + sdhci_pltfm_clk_get_max_clock + sdhci_pltfm_free + sdhci_pltfm_init + sdhci_reset + sdhci_resume_host + sdhci_set_bus_width + sdhci_set_clock + sdhci_suspend_host seq_lseek seq_printf seq_read @@ -531,7 +547,6 @@ __clk_get_hw clk_get_parent clk_hw_get_flags - clk_hw_get_name clk_hw_get_parent clk_hw_get_rate clk_hw_register_composite @@ -544,7 +559,6 @@ clk_register_fixed_factor clk_register_gate clk_register_mux_table - devm_clk_register divider_get_val gcd kmemdup @@ -608,6 +622,11 @@ gov_update_cpu_data store_sampling_rate +# required by cqhci.ko + devm_blk_ksm_init + dmam_free_coherent + mmc_cqe_request_done + # required by cw2015_battery.ko device_property_read_u8_array power_supply_am_i_supplied @@ -618,7 +637,6 @@ # required by dw_mmc-rockchip.ko clk_get_phase - clk_set_phase mmc_send_tuning # required by dw_mmc.ko @@ -626,7 +644,6 @@ debugfs_create_x64 del_timer device_property_read_string_array - dmam_alloc_attrs mmc_add_host mmc_alloc_host mmc_can_gpio_cd @@ -980,7 +997,6 @@ # required by phy-rockchip-inno-dsidphy.ko devm_platform_ioremap_resource_byname phy_mipi_dphy_config_validate - platform_get_resource_byname # required by phy-rockchip-inno-usb2.ko devm_extcon_register_notifier @@ -1113,7 +1129,6 @@ # required by rockchip_saradc.ko devm_iio_device_alloc __devm_iio_device_register - find_next_bit iio_get_time_ns iio_push_to_buffers iio_trigger_notify_done @@ -1140,22 +1155,31 @@ rtc_tm_to_time64 rtc_update_irq +# required by sdhci-of-arasan.ko + devm_phy_get + phy_exit + phy_init + phy_power_off + phy_power_on + __sdhci_add_host + sdhci_cleanup_host + sdhci_cqe_disable + sdhci_cqe_enable + sdhci_cqe_irq + sdhci_dumpregs + sdhci_enable_clk + sdhci_execute_tuning + sdhci_pltfm_unregister + sdhci_set_power_and_bus_voltage + sdhci_set_uhs_signaling + sdhci_setup_host + # required by sdhci-of-dwcmshc.ko devm_clk_bulk_get_optional dma_get_required_mask - sdhci_add_host sdhci_adma_write_desc - sdhci_get_property - sdhci_pltfm_clk_get_max_clock - sdhci_pltfm_free - sdhci_pltfm_init sdhci_remove_host sdhci_request - sdhci_reset - sdhci_resume_host - sdhci_set_bus_width - sdhci_set_clock - sdhci_suspend_host # required by sg.ko blk_get_request From c10e63b794ebbff7ae125edd788c7041469b889f Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Mon, 27 Sep 2021 12:29:22 +0800 Subject: [PATCH 93/94] ANDROID: GKI: rockchip: Enable symbols for rockchip-opp Functions changes summary: 0 Removed, 0 Changed, 3 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 3 Added functions: [A] 'function opp_table* dev_pm_opp_set_prop_name(device*, const char*)' [A] 'function int devfreq_event_get_event(devfreq_event_dev*, devfreq_event_data*)' [A] 'function int devm_devfreq_register_opp_notifier(device*, devfreq*)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: Id9576d47e09e887a9df4f94a485c8ac4c35ea39e --- android/abi_gki_aarch64.xml | 18 +++++++++++ android/abi_gki_aarch64_rockchip | 55 ++++++++++++++++++++++++-------- 2 files changed, 59 insertions(+), 14 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index d510bf4fed5d..578fcc3736a8 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -1294,6 +1294,7 @@ + @@ -1326,6 +1327,7 @@ + @@ -1408,6 +1410,7 @@ + @@ -120358,6 +120361,11 @@ + + + + + @@ -120527,6 +120535,11 @@ + + + + + @@ -120957,6 +120970,11 @@ + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 35e00367f944..22214f52813e 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -57,6 +57,7 @@ clk_prepare clk_put clk_register + clk_round_rate clk_set_phase clk_set_rate clk_unprepare @@ -77,6 +78,8 @@ cpu_number __cpu_online_mask __cpu_possible_mask + cpus_read_lock + cpus_read_unlock crypto_destroy_tfm crypto_inc __crypto_memneq @@ -96,6 +99,7 @@ destroy_workqueue _dev_err dev_err_probe + devfreq_recommended_opp dev_fwnode device_add_disk device_create @@ -149,9 +153,11 @@ __devm_reset_control_get devm_snd_dmaengine_pcm_register devm_snd_soc_register_component + dev_pm_opp_find_freq_ceil dev_pm_opp_get_opp_count dev_pm_opp_get_voltage dev_pm_opp_put + dev_pm_opp_remove devres_add devres_alloc_node devres_free @@ -297,6 +303,8 @@ mutex_unlock no_llseek nr_cpu_ids + nvmem_cell_put + nvmem_cell_read of_alias_get_id of_clk_add_provider of_clk_del_provider @@ -321,8 +329,10 @@ of_match_device of_match_node of_node_name_eq + of_nvmem_cell_get of_parse_phandle of_phy_simple_xlate + of_property_count_elems_of_size of_property_read_string of_property_read_string_helper of_property_read_u32_index @@ -409,6 +419,7 @@ regulator_list_voltage_linear_range regulator_map_voltage_linear regulator_map_voltage_linear_range + regulator_set_voltage regulator_set_voltage_sel_regmap regulator_set_voltage_time_sel remap_pfn_range @@ -483,6 +494,7 @@ sysfs_remove_link system_wq __tasklet_schedule + thermal_zone_get_zone_by_name __traceiter_rwmmio_post_read __traceiter_rwmmio_read __traceiter_rwmmio_write @@ -492,6 +504,7 @@ __unregister_chrdev unregister_chrdev_region unregister_reboot_notifier + update_devfreq up_read up_write usleep_range @@ -615,8 +628,6 @@ cpufreq_dbs_governor_start cpufreq_dbs_governor_stop cpufreq_table_index_unsorted - cpus_read_lock - cpus_read_unlock dbs_update get_cpu_idle_time_us gov_update_cpu_data @@ -683,7 +694,6 @@ # required by gpio-regulator.ko devm_kstrdup gpiod_count - of_property_count_elems_of_size # required by gpio-rockchip.ko generic_handle_irq @@ -1104,27 +1114,50 @@ # required by rockchip_bus.ko cpufreq_register_notifier cpu_topology - devfreq_recommended_opp - regulator_set_voltage # required by rockchip_dmc.ko + cpufreq_cpu_get + cpufreq_cpu_put + cpufreq_quick_get + cpu_latency_qos_add_request cpu_latency_qos_update_request + devfreq_add_governor devfreq_event_disable_edev devfreq_event_enable_edev devfreq_event_get_edev_by_phandle devfreq_event_get_edev_count + devfreq_event_get_event + devfreq_monitor_resume + devfreq_monitor_start + devfreq_monitor_stop + devfreq_monitor_suspend devfreq_resume_device devfreq_suspend_device + devfreq_update_interval + devm_devfreq_add_device + devm_devfreq_register_opp_notifier _dev_notice dev_pm_opp_add - dev_pm_opp_find_freq_ceil - dev_pm_opp_remove + input_close_device + input_open_device + input_register_handle + input_register_handler + input_unregister_handle __memset_io + of_devfreq_cooling_register_power platform_get_irq_byname # required by rockchip_dmc_common.ko down_write_trylock - update_devfreq + +# required by rockchip_opp_select.ko + dev_pm_opp_get_opp_table + dev_pm_opp_of_add_table + dev_pm_opp_put_opp_table + dev_pm_opp_set_prop_name + of_find_node_opts_by_path + regulator_get_optional + regulator_put # required by rockchip_saradc.ko devm_iio_device_alloc @@ -1139,9 +1172,6 @@ # required by rockchip_thermal.ko devm_thermal_zone_of_sensor_register - nvmem_cell_put - nvmem_cell_read - of_nvmem_cell_get thermal_zone_device_disable thermal_zone_device_enable thermal_zone_device_update @@ -1278,9 +1308,6 @@ snd_pcm_hw_constraint_eld snd_soc_dapm_add_routes -# required by snd-soc-rockchip-pdm.ko - clk_round_rate - # required by snd-soc-simple-card-utils.ko devm_get_clk_from_child devm_kasprintf From c82b315c4bfcb9d5632d1ad3cf508c9a4a208381 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Mon, 27 Sep 2021 15:01:30 +0800 Subject: [PATCH 94/94] ANDROID: GKI: rockchip: Enable symbols for phy Functions changes summary: 0 Removed, 0 Changed, 6 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 6 Added functions: [A] 'function void* devm_pci_remap_cfg_resource(device*, resource*)' [A] 'function int of_pci_get_max_link_speed(device_node*)' [A] 'function void pci_remove_root_bus(pci_bus*)' [A] 'function void pci_stop_root_bus(pci_bus*)' [A] 'function int usb_add_phy(usb_phy*, usb_phy_type)' [A] 'function int v4l2_querymenu(v4l2_ctrl_handler*, v4l2_querymenu*)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I3a1461aa27120b2062289c303899d2ac0195139e --- android/abi_gki_aarch64.xml | 33 ++++++++++++++++++++ android/abi_gki_aarch64_rockchip | 52 +++++++++++++++++++++++++++++--- 2 files changed, 80 insertions(+), 5 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 578fcc3736a8..60b1b19bdeea 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -1478,6 +1478,7 @@ + @@ -3335,6 +3336,7 @@ + @@ -3468,6 +3470,7 @@ + @@ -3483,6 +3486,7 @@ + @@ -4988,6 +4992,7 @@ + @@ -5253,6 +5258,7 @@ + @@ -121374,6 +121380,11 @@ + + + + + @@ -130945,6 +130956,10 @@ + + + + @@ -131662,6 +131677,10 @@ + + + + @@ -131738,6 +131757,10 @@ + + + + @@ -139426,6 +139449,11 @@ + + + + + @@ -140765,6 +140793,11 @@ + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 22214f52813e..5981963cf68d 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -92,7 +92,9 @@ crypto_unregister_scomp crypto_unregister_shash __crypto_xor + debugfs_create_dir debugfs_create_file + debugfs_remove delayed_work_timer_fn del_gendisk del_timer_sync @@ -287,6 +289,7 @@ __log_write_mmio lzo1x_decompress_safe media_entity_pads_init + media_entity_remote_pad memcpy memdup_user memset @@ -509,7 +512,10 @@ up_write usleep_range uuid_null + v4l2_async_notifier_cleanup + v4l2_async_notifier_init v4l2_async_register_subdev + v4l2_async_subdev_notifier_register v4l2_async_unregister_subdev v4l2_ctrl_handler_free v4l2_ctrl_handler_init_class @@ -674,9 +680,7 @@ tasklet_init # required by dw_wdt.ko - debugfs_create_dir debugfs_create_regset32 - debugfs_remove platform_get_irq_optional watchdog_init_timeout watchdog_register_device @@ -1004,16 +1008,57 @@ of_get_drm_display_mode videomode_from_timing +# required by pcie-dw-rockchip.ko + dw_pcie_host_init + dw_pcie_link_up + dw_pcie_read + dw_pcie_read_dbi + dw_pcie_setup_rc + dw_pcie_write + dw_pcie_write_dbi + kthread_create_on_node + of_prop_next_string + phy_set_mode_ext + wake_up_process + +# required by pcierockchiphost.ko + devm_of_phy_get + devm_pci_alloc_host_bridge + devm_pci_remap_cfg_resource + jiffies_to_usecs + of_pci_get_max_link_speed + pci_host_probe + pci_remove_root_bus + pci_stop_root_bus + regulator_get_current_limit + +# required by phy-rockchip-csi2-dphy.ko + media_create_pad_link + of_find_device_by_node + v4l2_ctrl_find + v4l2_ctrl_g_ctrl + v4l2_querymenu + v4l2_subdev_call_wrappers + v4l2_subdev_init + # required by phy-rockchip-inno-dsidphy.ko devm_platform_ioremap_resource_byname phy_mipi_dphy_config_validate +# required by phy-rockchip-inno-hdmi-phy.ko + nvmem_cell_get + # required by phy-rockchip-inno-usb2.ko devm_extcon_register_notifier extcon_set_state extcon_sync wakeup_source_remove +# required by phy-rockchip-inno-usb3.ko + atomic_notifier_call_chain + strcasecmp + usb_add_phy + # required by phy-rockchip-typec.ko extcon_get_property @@ -1409,10 +1454,7 @@ fwnode_property_read_u64_array v4l2_async_notifier_add_fwnode_subdev v4l2_async_notifier_add_subdev - v4l2_async_notifier_cleanup - v4l2_async_notifier_init v4l2_async_notifier_unregister - v4l2_async_subdev_notifier_register # required by zram.ko __alloc_percpu