From 39ed42405e4bffee48fefd61e7385ee1e09f4b9e Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Fri, 24 Feb 2023 13:36:57 +0100 Subject: [PATCH 001/269] UPSTREAM: wifi: nl80211: fix puncturing bitmap policy This was meant to be a u32, and while applying the patch I tried to use policy validation for it. However, not only did I copy/paste it to u8 instead of u32, but also used the policy range erroneously. Fix both of these issues. Fixes: d7c1a9a0ed18 ("wifi: nl80211: validate and configure puncturing bitmap") Signed-offi-by: Johannes Berg Bug: 276824951 Change-Id: I1c91e034845615d15f9b1004c7bef16dd3eb5d2c (cherry picked from commit b27f07c50a73e34eefb6b1030b235192b7ded850) Signed-off-by: Shivani Baranwal --- net/wireless/nl80211.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 4528e11d2051..1475b5349874 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -462,6 +462,11 @@ nl80211_sta_wme_policy[NL80211_STA_WME_MAX + 1] = { [NL80211_STA_WME_MAX_SP] = { .type = NLA_U8 }, }; +static struct netlink_range_validation nl80211_punct_bitmap_range = { + .min = 0, + .max = 0xffff, +}; + static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = { [0] = { .strict_start_type = NL80211_ATTR_HE_OBSS_PD }, [NL80211_ATTR_WIPHY] = { .type = NLA_U32 }, @@ -805,7 +810,8 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = { [NL80211_ATTR_MLD_ADDR] = NLA_POLICY_EXACT_LEN(ETH_ALEN), [NL80211_ATTR_MLO_SUPPORT] = { .type = NLA_FLAG }, [NL80211_ATTR_MAX_NUM_AKM_SUITES] = { .type = NLA_REJECT }, - [NL80211_ATTR_PUNCT_BITMAP] = NLA_POLICY_RANGE(NLA_U8, 0, 0xffff), + [NL80211_ATTR_PUNCT_BITMAP] = + NLA_POLICY_FULL_RANGE(NLA_U32, &nl80211_punct_bitmap_range), }; /* policy for the key attributes */ From 4754c5690b9ca321655a0c20c878ee719266d735 Mon Sep 17 00:00:00 2001 From: Junki Min Date: Wed, 29 Mar 2023 19:18:01 +0900 Subject: [PATCH 002/269] ANDROID: GKI: Add a filegroup instead of _aarch64_additional_kmi symbol list _aarch64_additional_kmi_symbol_list has all vendor's kmi symbol list file, but it is inaccessible from outside. Added a filegroup for it. Bug: 275670969 Signed-off-by: Junki Min Change-Id: I65ad4008ae2135fae88c8eaf1c09d141ea562294 --- BUILD.bazel | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index 995f4caa18cc..2d2f2cd842a4 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -12,22 +12,26 @@ package( ], ) -_aarch64_additional_kmi_symbol_lists = [ - # keep sorted - "android/abi_gki_aarch64_db845c", - "android/abi_gki_aarch64_galaxy", - "android/abi_gki_aarch64_oplus", - "android/abi_gki_aarch64_pixel", - "android/abi_gki_aarch64_qcom", - "android/abi_gki_aarch64_virtual_device", -] +filegroup( + name = "aarch64_additional_kmi_symbol_lists", + srcs = [ + # keep sorted + "android/abi_gki_aarch64_db845c", + "android/abi_gki_aarch64_galaxy", + "android/abi_gki_aarch64_oplus", + "android/abi_gki_aarch64_pixel", + "android/abi_gki_aarch64_qcom", + "android/abi_gki_aarch64_virtual_device", + ], + visibility = ["//visibility:public"], +) define_common_kernels(target_configs = { "kernel_aarch64": { "kmi_symbol_list_strict_mode": True, "module_implicit_outs": COMMON_GKI_MODULES_LIST, "kmi_symbol_list": "android/abi_gki_aarch64", - "additional_kmi_symbol_lists": _aarch64_additional_kmi_symbol_lists, + "additional_kmi_symbol_lists": [":aarch64_additional_kmi_symbol_lists"], "protected_exports_list": "android/abi_gki_protected_exports_aarch64", "protected_modules_list": "android/gki_aarch64_protected_modules", }, @@ -39,7 +43,7 @@ define_common_kernels(target_configs = { "kmi_symbol_list_strict_mode": False, "module_implicit_outs": COMMON_GKI_MODULES_LIST, "kmi_symbol_list": "android/abi_gki_aarch64", - "additional_kmi_symbol_lists": _aarch64_additional_kmi_symbol_lists, + "additional_kmi_symbol_lists": [":aarch64_additional_kmi_symbol_lists"], "protected_exports_list": "android/abi_gki_protected_exports_aarch64", "protected_modules_list": "android/gki_aarch64_protected_modules", }, From 24a4b7855f569ee36b63798c0ca2da4581dec105 Mon Sep 17 00:00:00 2001 From: Srinivas Kandagatla Date: Thu, 23 Mar 2023 11:01:25 +0000 Subject: [PATCH 003/269] FROMGIT: ASoC: codecs: lpass: fix the order or clks turn off during suspend The order in which clocks are stopped matters as some of the clock like NPL are derived from MCLK. Without this patch, Dragonboard RB5 DSP would crash with below error: qcom_q6v5_pas 17300000.remoteproc: fatal error received: ABT_dal.c:278:ABTimeout: AHB Bus hang is detected, Number of bus hang detected := 2 , addr0 = 0x3370000 , addr1 = 0x0!!! Turn off fsgen first, followed by npl and then finally mclk, which is exactly the opposite order of enable sequence. Fixes: 1dc3459009c3 ("ASoC: codecs: lpass: register mclk after runtime pm") Reported-by: Amit Pundir Signed-off-by: Srinivas Kandagatla Tested-by: Amit Pundir Link: https://lore.kernel.org/r/20230323110125.23790-1-srinivas.kandagatla@linaro.org Signed-off-by: Mark Brown Bug: 146449535 (cherry picked from commit a4a3203426f4b67535d6442ddc5dca8878a0678f https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git/log/?h=for-next) Change-Id: I73a42a21898195c98dfbb3e5c38b7c160866dd7b Signed-off-by: Amit Pundir --- sound/soc/codecs/lpass-rx-macro.c | 4 ++-- sound/soc/codecs/lpass-tx-macro.c | 4 ++-- sound/soc/codecs/lpass-wsa-macro.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sound/soc/codecs/lpass-rx-macro.c b/sound/soc/codecs/lpass-rx-macro.c index 8621cfabcf5b..1639f3b66fac 100644 --- a/sound/soc/codecs/lpass-rx-macro.c +++ b/sound/soc/codecs/lpass-rx-macro.c @@ -3667,9 +3667,9 @@ static int __maybe_unused rx_macro_runtime_suspend(struct device *dev) regcache_cache_only(rx->regmap, true); regcache_mark_dirty(rx->regmap); - clk_disable_unprepare(rx->mclk); - clk_disable_unprepare(rx->npl); clk_disable_unprepare(rx->fsgen); + clk_disable_unprepare(rx->npl); + clk_disable_unprepare(rx->mclk); return 0; } diff --git a/sound/soc/codecs/lpass-tx-macro.c b/sound/soc/codecs/lpass-tx-macro.c index 5d1c58df081a..d3caf5a4a4fa 100644 --- a/sound/soc/codecs/lpass-tx-macro.c +++ b/sound/soc/codecs/lpass-tx-macro.c @@ -1945,9 +1945,9 @@ static int __maybe_unused tx_macro_runtime_suspend(struct device *dev) regcache_cache_only(tx->regmap, true); regcache_mark_dirty(tx->regmap); - clk_disable_unprepare(tx->mclk); - clk_disable_unprepare(tx->npl); clk_disable_unprepare(tx->fsgen); + clk_disable_unprepare(tx->npl); + clk_disable_unprepare(tx->mclk); return 0; } diff --git a/sound/soc/codecs/lpass-wsa-macro.c b/sound/soc/codecs/lpass-wsa-macro.c index c012033fb69e..8ed48c86ccb3 100644 --- a/sound/soc/codecs/lpass-wsa-macro.c +++ b/sound/soc/codecs/lpass-wsa-macro.c @@ -2502,9 +2502,9 @@ static int __maybe_unused wsa_macro_runtime_suspend(struct device *dev) regcache_cache_only(wsa->regmap, true); regcache_mark_dirty(wsa->regmap); - clk_disable_unprepare(wsa->mclk); - clk_disable_unprepare(wsa->npl); clk_disable_unprepare(wsa->fsgen); + clk_disable_unprepare(wsa->npl); + clk_disable_unprepare(wsa->mclk); return 0; } From 17e313abe9e03753ffaefd01686c931a9a0f7e91 Mon Sep 17 00:00:00 2001 From: Paul Lawrence Date: Fri, 10 Feb 2023 11:11:33 -0800 Subject: [PATCH 004/269] ANDROID: fuse-bpf: Do not change bpf program in lookups If a lookup finds an existing inode, it must not change the existing bpf program since it may be in use. Bug: 267095363 Test: fuse_test, atest CtsScopedStorageHostTest Change-Id: Icb00681fbcd51fdd4b0764906509093d98caeec4 Signed-off-by: Paul Lawrence (cherry picked from commit 14a5cd6ae334890b66307dec1c19e03085bdeb2d) --- fs/fuse/backing.c | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/fs/fuse/backing.c b/fs/fuse/backing.c index e5289c0c00fd..63e41be780ff 100644 --- a/fs/fuse/backing.c +++ b/fs/fuse/backing.c @@ -1186,27 +1186,26 @@ int fuse_handle_backing(struct fuse_entry_bpf *feb, struct inode **backing_inode int fuse_handle_bpf_prog(struct fuse_entry_bpf *feb, struct inode *parent, struct bpf_prog **bpf) { - struct fuse_inode *pi; + struct bpf_prog *new_bpf; - // Parent isn't presented, but we want to keep - // Don't touch bpf program at all in this case + /* Parent isn't presented, but we want to keep + * Don't touch bpf program at all in this case + */ if (feb->out.bpf_action == FUSE_ACTION_KEEP && !parent) - goto out; - - if (*bpf) { - bpf_prog_put(*bpf); - *bpf = NULL; - } + return 0; switch (feb->out.bpf_action) { - case FUSE_ACTION_KEEP: - pi = get_fuse_inode(parent); - *bpf = pi->bpf; - if (*bpf) - bpf_prog_inc(*bpf); + case FUSE_ACTION_KEEP: { + struct fuse_inode *pi = get_fuse_inode(parent); + + new_bpf = pi->bpf; + if (new_bpf) + bpf_prog_inc(new_bpf); break; + } case FUSE_ACTION_REMOVE: + new_bpf = NULL; break; case FUSE_ACTION_REPLACE: { @@ -1219,7 +1218,7 @@ int fuse_handle_bpf_prog(struct fuse_entry_bpf *feb, struct inode *parent, if (IS_ERR(bpf_prog)) return PTR_ERR(bpf_prog); - *bpf = bpf_prog; + new_bpf = bpf_prog; break; } @@ -1227,7 +1226,13 @@ int fuse_handle_bpf_prog(struct fuse_entry_bpf *feb, struct inode *parent, return -EINVAL; } -out: + /* Cannot change existing program */ + if (*bpf) { + bpf_prog_put(new_bpf); + return new_bpf == *bpf ? 0 : -EINVAL; + } + + *bpf = new_bpf; return 0; } From 3355e398f35ae44c91aa4143bdef98cfbdff98d8 Mon Sep 17 00:00:00 2001 From: Paul Lawrence Date: Thu, 30 Mar 2023 13:47:33 -0700 Subject: [PATCH 005/269] ANDROID: fuse-bpf: Run bpf with migration disabled To avoid a BUG_ON, we must disable migration before running any bpf program. Bug: 273620140 Test: fuse-test passes, no bug with CONFIG_DEBUG_ATOMIC_SLEEP Change-Id: I9ed69ae93fc4b922782fccde293cb02b3eae3f06 Signed-off-by: Paul Lawrence (cherry picked from commit 0411f8d9dfa88e441456b5bcf684c5ec28ef08a7) --- fs/fuse/fuse_i.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index 3e2131faa5ed..a659c89cc685 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -1917,6 +1917,16 @@ void __exit fuse_bpf_cleanup(void); ssize_t fuse_bpf_simple_request(struct fuse_mount *fm, struct fuse_bpf_args *args); +static inline int fuse_bpf_run(struct bpf_prog *prog, struct fuse_bpf_args *fba) +{ + int ret; + + migrate_disable(); + ret = bpf_prog_run(prog, fba); + migrate_enable(); + return ret; +} + /* * expression statement to wrap the backing filter logic * struct inode *inode: inode with bpf and backing inode @@ -1968,7 +1978,7 @@ ssize_t fuse_bpf_simple_request(struct fuse_mount *fm, struct fuse_bpf_args *arg fa.out_numargs = fa.in_numargs; \ \ ext_flags = fuse_inode->bpf ? \ - bpf_prog_run(fuse_inode->bpf, &fa) : \ + fuse_bpf_run(fuse_inode->bpf, &fa) : \ FUSE_BPF_BACKING; \ if (ext_flags < 0) { \ fer = (struct fuse_err_ret) { \ @@ -2023,7 +2033,7 @@ ssize_t fuse_bpf_simple_request(struct fuse_mount *fm, struct fuse_bpf_args *arg .size = fa.out_args[i].size, \ .value = fa.out_args[i].value, \ }; \ - ext_flags = bpf_prog_run(fuse_inode->bpf, &fa); \ + ext_flags = fuse_bpf_run(fuse_inode->bpf, &fa); \ if (ext_flags < 0) { \ fer = (struct fuse_err_ret) { \ ERR_PTR(ext_flags), \ From c0b8bfdecfa32e394df30c8ad8dab4ac894d1b0b Mon Sep 17 00:00:00 2001 From: Daniel Rosenberg Date: Thu, 19 May 2022 17:04:23 -0700 Subject: [PATCH 006/269] ANDROID: fsnotify: Notify lower fs of open If the filesystem being watched supports d_canonical_path, notify the lower filesystem of the open as well. Fixes: f37e05049bf8 ("ANDROID: vfs: d_canonical_path for stacked FS") Test: atest CtsOsTestCases:android.os.cts.FileObserverTest Bug: 70706497 Signed-off-by: Daniel Rosenberg Signed-off-by: Paul Lawrence Signed-off-by: Alessio Balsini Change-Id: I7c9d210e8e6ee99928ad9db0b41ffc3ac3371dc0 (cherry picked from commit b289d1706b672f064bbe04c3a8bfb1a5e8ac0923) --- include/linux/fsnotify.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h index bb8467cd11ae..bcf53bf68487 100644 --- a/include/linux/fsnotify.h +++ b/include/linux/fsnotify.h @@ -96,6 +96,25 @@ static inline int fsnotify_file(struct file *file, __u32 mask) if (file->f_mode & FMODE_NONOTIFY) return 0; + /* + * Open calls notify early on, so lower file system must be notified + */ + if (mask & FS_OPEN) { + if (path->dentry->d_op && + path->dentry->d_op->d_canonical_path) { + struct path lower_path; + int ret; + + path->dentry->d_op->d_canonical_path(path, &lower_path); + ret = fsnotify_parent(lower_path.dentry, mask, + &lower_path, FSNOTIFY_EVENT_PATH); + path_put(&lower_path); + + if (ret) + return ret; + } + } + return fsnotify_parent(path->dentry, mask, path, FSNOTIFY_EVENT_PATH); } From 8ff940b3513cbfc569843a6e51bdf3cd2caa6601 Mon Sep 17 00:00:00 2001 From: Paul Lawrence Date: Thu, 23 Feb 2023 08:59:38 -0800 Subject: [PATCH 007/269] ANDROID: incremental fs: Evict inodes before freeing mount data Since evicting inodes triggers writes to the backing file, which uses the mi_owner field from the mount_info struct, make sure inodes are evicted before we free the mount_info data Test: incfs_test Bug: 270117845 Change-Id: I673b2e0e04b5adc3998caf6f22443598a30338af Signed-off-by: Paul Lawrence (cherry picked from commit 7899985277527b29c47929a6d6a89c5c89b406ad) --- fs/incfs/sysfs.c | 2 ++ fs/incfs/vfs.c | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/fs/incfs/sysfs.c b/fs/incfs/sysfs.c index 5c7e0fd4496c..ba91c07d2887 100644 --- a/fs/incfs/sysfs.c +++ b/fs/incfs/sysfs.c @@ -34,12 +34,14 @@ DECLARE_FEATURE_FLAG(corefs); DECLARE_FEATURE_FLAG(zstd); DECLARE_FEATURE_FLAG(v2); DECLARE_FEATURE_FLAG(bugfix_throttling); +DECLARE_FEATURE_FLAG(bugfix_inode_eviction); static struct attribute *attributes[] = { &corefs_attr.attr, &zstd_attr.attr, &v2_attr.attr, &bugfix_throttling_attr.attr, + &bugfix_inode_eviction_attr.attr, NULL, }; diff --git a/fs/incfs/vfs.c b/fs/incfs/vfs.c index 36ae96b6db68..0c80779e99e9 100644 --- a/fs/incfs/vfs.c +++ b/fs/incfs/vfs.c @@ -1946,6 +1946,13 @@ void incfs_kill_sb(struct super_block *sb) pr_debug("incfs: unmount\n"); + /* + * We must kill the super before freeing mi, since killing the super + * triggers inode eviction, which triggers the final update of the + * backing file, which uses certain information for mi + */ + kill_anon_super(sb); + if (mi) { if (mi->mi_backing_dir_path.dentry) dinode = d_inode(mi->mi_backing_dir_path.dentry); @@ -1963,7 +1970,6 @@ void incfs_kill_sb(struct super_block *sb) incfs_free_mount_info(mi); sb->s_fs_info = NULL; } - kill_anon_super(sb); } static int show_options(struct seq_file *m, struct dentry *root) From 46c8cb782a97cb1bd3407a75b3c5108d61239ea1 Mon Sep 17 00:00:00 2001 From: Jaegeuk Kim Date: Mon, 3 Apr 2023 09:37:24 -0700 Subject: [PATCH 008/269] FROMGIT: f2fs: fix null pointer panic in tracepoint in __replace_atomic_write_block We got a kernel panic if old_addr is NULL. https://bugzilla.kernel.org/show_bug.cgi?id=217266 BUG: kernel NULL pointer dereference, address: 0000000000000000 Call Trace: f2fs_commit_atomic_write+0x619/0x990 [f2fs a1b985b80f5babd6f3ea778384908880812bfa43] __f2fs_ioctl+0xd8e/0x4080 [f2fs a1b985b80f5babd6f3ea778384908880812bfa43] ? vfs_write+0x2ae/0x3f0 ? vfs_write+0x2ae/0x3f0 __x64_sys_ioctl+0x91/0xd0 do_syscall_64+0x5c/0x90 entry_SYSCALL_64_after_hwframe+0x72/0xdc RIP: 0033:0x7f69095fe53f Bug: 276570882 Fixes: 2f3a9ae990a7 ("f2fs: introduce trace_f2fs_replace_atomic_write_block") Cc: Reviewed-by: Chao Yu Signed-off-by: Jaegeuk Kim (cherry picked from commit da6ea0b050fa720302b56fbb59307e7c7531a342 https: //git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git dev) Change-Id: I872227fbdda6a7ce1144617550417f5ce9bb6fc7 --- fs/f2fs/segment.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index 6aa1bf075b17..c3d415db5855 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c @@ -257,7 +257,7 @@ retry: f2fs_put_dnode(&dn); trace_f2fs_replace_atomic_write_block(inode, F2FS_I(inode)->cow_inode, - index, *old_addr, new_addr, recover); + index, old_addr ? *old_addr : 0, new_addr, recover); return 0; } From ae678a47ee843746e259d2cda0b23b8b175466af Mon Sep 17 00:00:00 2001 From: Kalesh Singh Date: Mon, 3 Apr 2023 15:28:17 -0700 Subject: [PATCH 009/269] ANDROID: MGLRU: Avoid reactivation of anon pages on swap full Avoid anon reclaim if swapping full since this reactivates the pages. Bug: 261619133 Bug: 276521916 Change-Id: Ia3af7fe8d5b29405830a812e73f95d11a0f8ee3a Signed-off-by: Kalesh Singh --- mm/vmscan.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index 219ad7e0e911..8a18e37843d2 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3186,7 +3186,8 @@ static int get_swappiness(struct lruvec *lruvec, struct scan_control *sc) if (!sc->may_swap) return 0; - if (!can_demote(pgdat->node_id, sc)) + if (!can_demote(pgdat->node_id, sc) && + mem_cgroup_get_nr_swap_pages(memcg) <= 0) return 0; return mem_cgroup_swappiness(memcg); From 1f6f0571ac7254e785f47058ad1df75ce7b0d0e5 Mon Sep 17 00:00:00 2001 From: Lee Jones Date: Wed, 18 Jan 2023 15:49:24 +0000 Subject: [PATCH 010/269] ANDROID: usb: f_accessory: Check buffer size when initialised via composite When communicating with accessory devices via USBFS, the initialisation call-stack looks like: ConfigFS > Gadget ConfigFS > UDC > Gadget ConfigFS > Composite Eventually ending up in composite_dev_prepare() where memory for the data buffer is allocated and initialised. The default size used for the allocation is USB_COMP_EP0_BUFSIZ (4k). When handling bulk transfers, acc_ctrlrequest() needs to be able to handle buffers up to BULK_BUFFER_SIZE (16k). Instead of adding new generic attributes to 'struct usb_request' to track the size of the allocated buffer, we can simply split off the affected thread of execution to travel via a knowledgeable abstracted function acc_ctrlrequest_composite() where we can complete the necessary specific checks. Bug: 264029575 Signed-off-by: Lee Jones Change-Id: Ia1280f85499621d3fa57f7262b4a2c80f4be7773 --- drivers/usb/gadget/configfs.c | 4 ++-- drivers/usb/gadget/function/f_accessory.c | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c index 5ea8dbaa203a..275ca4aa9739 100644 --- a/drivers/usb/gadget/configfs.c +++ b/drivers/usb/gadget/configfs.c @@ -16,7 +16,7 @@ #include #ifdef CONFIG_USB_CONFIGFS_F_ACC -extern int acc_ctrlrequest(struct usb_composite_dev *cdev, +extern int acc_ctrlrequest_composite(struct usb_composite_dev *cdev, const struct usb_ctrlrequest *ctrl); void acc_disconnect(void); #endif @@ -1560,7 +1560,7 @@ static int android_setup(struct usb_gadget *gadget, #ifdef CONFIG_USB_CONFIGFS_F_ACC if (value < 0) - value = acc_ctrlrequest(cdev, c); + value = acc_ctrlrequest_composite(cdev, c); #endif if (value < 0) diff --git a/drivers/usb/gadget/function/f_accessory.c b/drivers/usb/gadget/function/f_accessory.c index c228088a4485..ce7814c22057 100644 --- a/drivers/usb/gadget/function/f_accessory.c +++ b/drivers/usb/gadget/function/f_accessory.c @@ -1086,6 +1086,26 @@ err: } EXPORT_SYMBOL_GPL(acc_ctrlrequest); +int acc_ctrlrequest_composite(struct usb_composite_dev *cdev, + const struct usb_ctrlrequest *ctrl) +{ + u16 w_length = le16_to_cpu(ctrl->wLength); + + if (w_length > USB_COMP_EP0_BUFSIZ) { + if (ctrl->bRequestType & USB_DIR_IN) { + /* Cast away the const, we are going to overwrite on purpose. */ + __le16 *temp = (__le16 *)&ctrl->wLength; + + *temp = cpu_to_le16(USB_COMP_EP0_BUFSIZ); + w_length = USB_COMP_EP0_BUFSIZ; + } else { + return -EINVAL; + } + } + return acc_ctrlrequest(cdev, ctrl); +} +EXPORT_SYMBOL_GPL(acc_ctrlrequest_composite); + static int __acc_function_bind(struct usb_configuration *c, struct usb_function *f, bool configfs) From eddee1c229c21ad1686547d50ebd0c835a20cd30 Mon Sep 17 00:00:00 2001 From: Gil Fine Date: Tue, 31 Jan 2023 13:04:52 +0200 Subject: [PATCH 011/269] thunderbolt: Limit USB3 bandwidth of certain Intel USB4 host routers [ Upstream commit f0a57dd33b3eadf540912cd130db727ea824d174 ] Current Intel USB4 host routers have hardware limitation that the USB3 bandwidth cannot go higher than 16376 Mb/s. Work this around by adding a new quirk that limits the bandwidth for the affected host routers. Cc: stable@vger.kernel.org Signed-off-by: Gil Fine Signed-off-by: Mika Westerberg Signed-off-by: Sasha Levin --- drivers/thunderbolt/quirks.c | 31 +++++++++++++++++++++++++++++++ drivers/thunderbolt/tb.h | 3 +++ drivers/thunderbolt/usb4.c | 17 +++++++++++++++-- 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/drivers/thunderbolt/quirks.c b/drivers/thunderbolt/quirks.c index ae28a03fa890..1157b8869bcc 100644 --- a/drivers/thunderbolt/quirks.c +++ b/drivers/thunderbolt/quirks.c @@ -26,6 +26,19 @@ static void quirk_clx_disable(struct tb_switch *sw) tb_sw_dbg(sw, "disabling CL states\n"); } +static void quirk_usb3_maximum_bandwidth(struct tb_switch *sw) +{ + struct tb_port *port; + + tb_switch_for_each_port(sw, port) { + if (!tb_port_is_usb3_down(port)) + continue; + port->max_bw = 16376; + tb_port_dbg(port, "USB3 maximum bandwidth limited to %u Mb/s\n", + port->max_bw); + } +} + struct tb_quirk { u16 hw_vendor_id; u16 hw_device_id; @@ -43,6 +56,24 @@ static const struct tb_quirk tb_quirks[] = { * DP buffers. */ { 0x8087, 0x0b26, 0x0000, 0x0000, quirk_dp_credit_allocation }, + /* + * Limit the maximum USB3 bandwidth for the following Intel USB4 + * host routers due to a hardware issue. + */ + { 0x8087, PCI_DEVICE_ID_INTEL_ADL_NHI0, 0x0000, 0x0000, + quirk_usb3_maximum_bandwidth }, + { 0x8087, PCI_DEVICE_ID_INTEL_ADL_NHI1, 0x0000, 0x0000, + quirk_usb3_maximum_bandwidth }, + { 0x8087, PCI_DEVICE_ID_INTEL_RPL_NHI0, 0x0000, 0x0000, + quirk_usb3_maximum_bandwidth }, + { 0x8087, PCI_DEVICE_ID_INTEL_RPL_NHI1, 0x0000, 0x0000, + quirk_usb3_maximum_bandwidth }, + { 0x8087, PCI_DEVICE_ID_INTEL_MTL_M_NHI0, 0x0000, 0x0000, + quirk_usb3_maximum_bandwidth }, + { 0x8087, PCI_DEVICE_ID_INTEL_MTL_P_NHI0, 0x0000, 0x0000, + quirk_usb3_maximum_bandwidth }, + { 0x8087, PCI_DEVICE_ID_INTEL_MTL_P_NHI1, 0x0000, 0x0000, + quirk_usb3_maximum_bandwidth }, /* * CLx is not supported on AMD USB4 Yellow Carp and Pink Sardine platforms. */ diff --git a/drivers/thunderbolt/tb.h b/drivers/thunderbolt/tb.h index e11d973a8f9b..f034723b1b40 100644 --- a/drivers/thunderbolt/tb.h +++ b/drivers/thunderbolt/tb.h @@ -252,6 +252,8 @@ struct tb_switch { * @ctl_credits: Buffers reserved for control path * @dma_credits: Number of credits allocated for DMA tunneling for all * DMA paths through this port. + * @max_bw: Maximum possible bandwidth through this adapter if set to + * non-zero. * * In USB4 terminology this structure represents an adapter (protocol or * lane adapter). @@ -277,6 +279,7 @@ struct tb_port { unsigned int total_credits; unsigned int ctl_credits; unsigned int dma_credits; + unsigned int max_bw; }; /** diff --git a/drivers/thunderbolt/usb4.c b/drivers/thunderbolt/usb4.c index cf8d4f769579..3c821f5e4481 100644 --- a/drivers/thunderbolt/usb4.c +++ b/drivers/thunderbolt/usb4.c @@ -1865,6 +1865,15 @@ int usb4_port_retimer_nvm_read(struct tb_port *port, u8 index, usb4_port_retimer_nvm_read_block, &info); } +static inline unsigned int +usb4_usb3_port_max_bandwidth(const struct tb_port *port, unsigned int bw) +{ + /* Take the possible bandwidth limitation into account */ + if (port->max_bw) + return min(bw, port->max_bw); + return bw; +} + /** * usb4_usb3_port_max_link_rate() - Maximum support USB3 link rate * @port: USB3 adapter port @@ -1886,7 +1895,9 @@ int usb4_usb3_port_max_link_rate(struct tb_port *port) return ret; lr = (val & ADP_USB3_CS_4_MSLR_MASK) >> ADP_USB3_CS_4_MSLR_SHIFT; - return lr == ADP_USB3_CS_4_MSLR_20G ? 20000 : 10000; + ret = lr == ADP_USB3_CS_4_MSLR_20G ? 20000 : 10000; + + return usb4_usb3_port_max_bandwidth(port, ret); } /** @@ -1913,7 +1924,9 @@ int usb4_usb3_port_actual_link_rate(struct tb_port *port) return 0; lr = val & ADP_USB3_CS_4_ALR_MASK; - return lr == ADP_USB3_CS_4_ALR_20G ? 20000 : 10000; + ret = lr == ADP_USB3_CS_4_ALR_20G ? 20000 : 10000; + + return usb4_usb3_port_max_bandwidth(port, ret); } static int usb4_usb3_port_cm_request(struct tb_port *port, bool request) From f60cdd319b2c35df32934802ce2bfb6810cac048 Mon Sep 17 00:00:00 2001 From: Shyam Prasad N Date: Fri, 10 Feb 2023 17:41:17 +0000 Subject: [PATCH 012/269] cifs: update ip_addr for ses only for primary chan setup [ Upstream commit e77978de4765229e09c8fabcf4f8419ff367317f ] We update ses->ip_addr whenever we do a session setup. But this should happen only for primary channel in mchan scenario. Signed-off-by: Shyam Prasad N Reviewed-by: Paulo Alcantara (SUSE) Signed-off-by: Steve French Stable-dep-of: bc962159e8e3 ("cifs: avoid race conditions with parallel reconnects") Signed-off-by: Sasha Levin --- fs/cifs/connect.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 7aecb1646b6f..43637c128374 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -4082,16 +4082,12 @@ cifs_setup_session(const unsigned int xid, struct cifs_ses *ses, struct nls_table *nls_info) { int rc = -ENOSYS; - struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&server->dstaddr; - struct sockaddr_in *addr = (struct sockaddr_in *)&server->dstaddr; + struct TCP_Server_Info *pserver = CIFS_SERVER_IS_CHAN(server) ? server->primary_server : server; + struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&pserver->dstaddr; + struct sockaddr_in *addr = (struct sockaddr_in *)&pserver->dstaddr; bool is_binding = false; spin_lock(&ses->ses_lock); - if (server->dstaddr.ss_family == AF_INET6) - scnprintf(ses->ip_addr, sizeof(ses->ip_addr), "%pI6", &addr6->sin6_addr); - else - scnprintf(ses->ip_addr, sizeof(ses->ip_addr), "%pI4", &addr->sin_addr); - if (ses->ses_status != SES_GOOD && ses->ses_status != SES_NEW && ses->ses_status != SES_NEED_RECON) { @@ -4115,6 +4111,14 @@ cifs_setup_session(const unsigned int xid, struct cifs_ses *ses, ses->ses_status = SES_IN_SETUP; spin_unlock(&ses->ses_lock); + /* update ses ip_addr only for primary chan */ + if (server == pserver) { + if (server->dstaddr.ss_family == AF_INET6) + scnprintf(ses->ip_addr, sizeof(ses->ip_addr), "%pI6", &addr6->sin6_addr); + else + scnprintf(ses->ip_addr, sizeof(ses->ip_addr), "%pI4", &addr->sin_addr); + } + if (!is_binding) { ses->capabilities = server->capabilities; if (!linuxExtEnabled) From a5698f3ebb785aeb73e38497a1f029c9a4b93966 Mon Sep 17 00:00:00 2001 From: Paulo Alcantara Date: Tue, 28 Feb 2023 19:01:55 -0300 Subject: [PATCH 013/269] cifs: prevent data race in cifs_reconnect_tcon() [ Upstream commit 1bcd548d935a33c6fc58331405eb1b82fd6150de ] Make sure to get an up-to-date TCP_Server_Info::nr_targets value prior to waiting the server to be reconnected in cifs_reconnect_tcon(). It is set in cifs_tcp_ses_needs_reconnect() and protected by TCP_Server_Info::srv_lock. Create a new cifs_wait_for_server_reconnect() helper that can be used by both SMB2+ and CIFS reconnect code. Signed-off-by: Paulo Alcantara (SUSE) Signed-off-by: Steve French Stable-dep-of: bc962159e8e3 ("cifs: avoid race conditions with parallel reconnects") Signed-off-by: Sasha Levin --- fs/cifs/cifsproto.h | 1 + fs/cifs/cifssmb.c | 43 ++---------------------- fs/cifs/misc.c | 44 ++++++++++++++++++++++++ fs/cifs/smb2pdu.c | 82 ++++++++++++--------------------------------- 4 files changed, 69 insertions(+), 101 deletions(-) diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h index bc4475f6c082..98513f5af3f9 100644 --- a/fs/cifs/cifsproto.h +++ b/fs/cifs/cifsproto.h @@ -691,5 +691,6 @@ static inline int cifs_create_options(struct cifs_sb_info *cifs_sb, int options) struct super_block *cifs_get_tcon_super(struct cifs_tcon *tcon); void cifs_put_tcon_super(struct super_block *sb); +int cifs_wait_for_server_reconnect(struct TCP_Server_Info *server, bool retry); #endif /* _CIFSPROTO_H */ diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c index 6c6a7fc47f3e..4bc6ba87baf4 100644 --- a/fs/cifs/cifssmb.c +++ b/fs/cifs/cifssmb.c @@ -70,7 +70,6 @@ cifs_reconnect_tcon(struct cifs_tcon *tcon, int smb_command) struct cifs_ses *ses; struct TCP_Server_Info *server; struct nls_table *nls_codepage; - int retries; /* * SMBs NegProt, SessSetup, uLogoff do not have tcon yet so check for @@ -98,45 +97,9 @@ cifs_reconnect_tcon(struct cifs_tcon *tcon, int smb_command) } spin_unlock(&tcon->tc_lock); - retries = server->nr_targets; - - /* - * Give demultiplex thread up to 10 seconds to each target available for - * reconnect -- should be greater than cifs socket timeout which is 7 - * seconds. - */ - while (server->tcpStatus == CifsNeedReconnect) { - rc = wait_event_interruptible_timeout(server->response_q, - (server->tcpStatus != CifsNeedReconnect), - 10 * HZ); - if (rc < 0) { - cifs_dbg(FYI, "%s: aborting reconnect due to a received signal by the process\n", - __func__); - return -ERESTARTSYS; - } - - /* are we still trying to reconnect? */ - spin_lock(&server->srv_lock); - if (server->tcpStatus != CifsNeedReconnect) { - spin_unlock(&server->srv_lock); - break; - } - spin_unlock(&server->srv_lock); - - if (retries && --retries) - continue; - - /* - * on "soft" mounts we wait once. Hard mounts keep - * retrying until process is killed or server comes - * back on-line - */ - if (!tcon->retry) { - cifs_dbg(FYI, "gave up waiting on reconnect in smb_init\n"); - return -EHOSTDOWN; - } - retries = server->nr_targets; - } + rc = cifs_wait_for_server_reconnect(server, tcon->retry); + if (rc) + return rc; spin_lock(&ses->chan_lock); if (!cifs_chan_needs_reconnect(ses, server) && !tcon->need_reconnect) { diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c index 4e54736a0699..832856aef4b7 100644 --- a/fs/cifs/misc.c +++ b/fs/cifs/misc.c @@ -1382,3 +1382,47 @@ int cifs_inval_name_dfs_link_error(const unsigned int xid, return 0; } #endif + +int cifs_wait_for_server_reconnect(struct TCP_Server_Info *server, bool retry) +{ + int timeout = 10; + int rc; + + spin_lock(&server->srv_lock); + if (server->tcpStatus != CifsNeedReconnect) { + spin_unlock(&server->srv_lock); + return 0; + } + timeout *= server->nr_targets; + spin_unlock(&server->srv_lock); + + /* + * Give demultiplex thread up to 10 seconds to each target available for + * reconnect -- should be greater than cifs socket timeout which is 7 + * seconds. + * + * On "soft" mounts we wait once. Hard mounts keep retrying until + * process is killed or server comes back on-line. + */ + do { + rc = wait_event_interruptible_timeout(server->response_q, + (server->tcpStatus != CifsNeedReconnect), + timeout * HZ); + if (rc < 0) { + cifs_dbg(FYI, "%s: aborting reconnect due to received signal\n", + __func__); + return -ERESTARTSYS; + } + + /* are we still trying to reconnect? */ + spin_lock(&server->srv_lock); + if (server->tcpStatus != CifsNeedReconnect) { + spin_unlock(&server->srv_lock); + return 0; + } + spin_unlock(&server->srv_lock); + } while (retry); + + cifs_dbg(FYI, "%s: gave up waiting on reconnect\n", __func__); + return -EHOSTDOWN; +} diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c index 6e6e44d8b4c7..83d04cd2f9df 100644 --- a/fs/cifs/smb2pdu.c +++ b/fs/cifs/smb2pdu.c @@ -139,66 +139,6 @@ out: return; } -static int wait_for_server_reconnect(struct TCP_Server_Info *server, - __le16 smb2_command, bool retry) -{ - int timeout = 10; - int rc; - - spin_lock(&server->srv_lock); - if (server->tcpStatus != CifsNeedReconnect) { - spin_unlock(&server->srv_lock); - return 0; - } - timeout *= server->nr_targets; - spin_unlock(&server->srv_lock); - - /* - * Return to caller for TREE_DISCONNECT and LOGOFF and CLOSE - * here since they are implicitly done when session drops. - */ - switch (smb2_command) { - /* - * BB Should we keep oplock break and add flush to exceptions? - */ - case SMB2_TREE_DISCONNECT: - case SMB2_CANCEL: - case SMB2_CLOSE: - case SMB2_OPLOCK_BREAK: - return -EAGAIN; - } - - /* - * Give demultiplex thread up to 10 seconds to each target available for - * reconnect -- should be greater than cifs socket timeout which is 7 - * seconds. - * - * On "soft" mounts we wait once. Hard mounts keep retrying until - * process is killed or server comes back on-line. - */ - do { - rc = wait_event_interruptible_timeout(server->response_q, - (server->tcpStatus != CifsNeedReconnect), - timeout * HZ); - if (rc < 0) { - cifs_dbg(FYI, "%s: aborting reconnect due to received signal\n", - __func__); - return -ERESTARTSYS; - } - - /* are we still trying to reconnect? */ - spin_lock(&server->srv_lock); - if (server->tcpStatus != CifsNeedReconnect) { - spin_unlock(&server->srv_lock); - return 0; - } - spin_unlock(&server->srv_lock); - } while (retry); - - cifs_dbg(FYI, "%s: gave up waiting on reconnect\n", __func__); - return -EHOSTDOWN; -} - static int smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon, struct TCP_Server_Info *server) @@ -239,7 +179,27 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon, (!tcon->ses->server) || !server) return -EIO; - rc = wait_for_server_reconnect(server, smb2_command, tcon->retry); + spin_lock(&server->srv_lock); + if (server->tcpStatus == CifsNeedReconnect) { + /* + * Return to caller for TREE_DISCONNECT and LOGOFF and CLOSE + * here since they are implicitly done when session drops. + */ + switch (smb2_command) { + /* + * BB Should we keep oplock break and add flush to exceptions? + */ + case SMB2_TREE_DISCONNECT: + case SMB2_CANCEL: + case SMB2_CLOSE: + case SMB2_OPLOCK_BREAK: + spin_unlock(&server->srv_lock); + return -EAGAIN; + } + } + spin_unlock(&server->srv_lock); + + rc = cifs_wait_for_server_reconnect(server, tcon->retry); if (rc) return rc; From 9dad2690b1269a75cb8e7de87ecdcc2d2550aed2 Mon Sep 17 00:00:00 2001 From: Shyam Prasad N Date: Mon, 20 Mar 2023 06:08:19 +0000 Subject: [PATCH 014/269] cifs: avoid race conditions with parallel reconnects [ Upstream commit bc962159e8e326af634a506508034a375bf2b858 ] When multiple processes/channels do reconnects in parallel we used to return success immediately negotiate/session-setup/tree-connect, causing race conditions between processes that enter the function in parallel. This caused several errors related to session not found to show up during parallel reconnects. Signed-off-by: Shyam Prasad N Reviewed-by: Paulo Alcantara (SUSE) Cc: stable@vger.kernel.org Signed-off-by: Steve French Signed-off-by: Sasha Levin --- fs/cifs/connect.c | 50 ++++++++++++++++++++++++++++++----------- fs/cifs/smb2pdu.c | 44 +++++++++++++++++++++--------------- fs/cifs/smb2transport.c | 17 +++++++++++--- 3 files changed, 77 insertions(+), 34 deletions(-) diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 43637c128374..077c88c49dfd 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -261,31 +261,42 @@ cifs_mark_tcp_ses_conns_for_reconnect(struct TCP_Server_Info *server, cifs_chan_update_iface(ses, server); spin_lock(&ses->chan_lock); - if (!mark_smb_session && cifs_chan_needs_reconnect(ses, server)) - goto next_session; + if (!mark_smb_session && cifs_chan_needs_reconnect(ses, server)) { + spin_unlock(&ses->chan_lock); + continue; + } if (mark_smb_session) CIFS_SET_ALL_CHANS_NEED_RECONNECT(ses); else cifs_chan_set_need_reconnect(ses, server); - /* If all channels need reconnect, then tcon needs reconnect */ - if (!mark_smb_session && !CIFS_ALL_CHANS_NEED_RECONNECT(ses)) - goto next_session; + cifs_dbg(FYI, "%s: channel connect bitmap: 0x%lx\n", + __func__, ses->chans_need_reconnect); + /* If all channels need reconnect, then tcon needs reconnect */ + if (!mark_smb_session && !CIFS_ALL_CHANS_NEED_RECONNECT(ses)) { + spin_unlock(&ses->chan_lock); + continue; + } + spin_unlock(&ses->chan_lock); + + spin_lock(&ses->ses_lock); ses->ses_status = SES_NEED_RECON; + spin_unlock(&ses->ses_lock); list_for_each_entry(tcon, &ses->tcon_list, tcon_list) { tcon->need_reconnect = true; + spin_lock(&tcon->tc_lock); tcon->status = TID_NEED_RECON; + spin_unlock(&tcon->tc_lock); } if (ses->tcon_ipc) { ses->tcon_ipc->need_reconnect = true; + spin_lock(&ses->tcon_ipc->tc_lock); ses->tcon_ipc->status = TID_NEED_RECON; + spin_unlock(&ses->tcon_ipc->tc_lock); } - -next_session: - spin_unlock(&ses->chan_lock); } spin_unlock(&cifs_tcp_ses_lock); } @@ -4050,11 +4061,19 @@ cifs_negotiate_protocol(const unsigned int xid, struct cifs_ses *ses, /* only send once per connect */ spin_lock(&server->srv_lock); - if (!server->ops->need_neg(server) || + if (server->tcpStatus != CifsGood && + server->tcpStatus != CifsNew && server->tcpStatus != CifsNeedNegotiate) { + spin_unlock(&server->srv_lock); + return -EHOSTDOWN; + } + + if (!server->ops->need_neg(server) && + server->tcpStatus == CifsGood) { spin_unlock(&server->srv_lock); return 0; } + server->tcpStatus = CifsInNegotiate; spin_unlock(&server->srv_lock); @@ -4088,23 +4107,28 @@ cifs_setup_session(const unsigned int xid, struct cifs_ses *ses, bool is_binding = false; spin_lock(&ses->ses_lock); + cifs_dbg(FYI, "%s: channel connect bitmap: 0x%lx\n", + __func__, ses->chans_need_reconnect); + if (ses->ses_status != SES_GOOD && ses->ses_status != SES_NEW && ses->ses_status != SES_NEED_RECON) { spin_unlock(&ses->ses_lock); - return 0; + return -EHOSTDOWN; } /* only send once per connect */ spin_lock(&ses->chan_lock); - if (CIFS_ALL_CHANS_GOOD(ses) || - cifs_chan_in_reconnect(ses, server)) { + if (CIFS_ALL_CHANS_GOOD(ses)) { + if (ses->ses_status == SES_NEED_RECON) + ses->ses_status = SES_GOOD; spin_unlock(&ses->chan_lock); spin_unlock(&ses->ses_lock); return 0; } - is_binding = !CIFS_ALL_CHANS_NEED_RECONNECT(ses); + cifs_chan_set_in_reconnect(ses, server); + is_binding = !CIFS_ALL_CHANS_NEED_RECONNECT(ses); spin_unlock(&ses->chan_lock); if (!is_binding) diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c index 83d04cd2f9df..f0b1ae0835d7 100644 --- a/fs/cifs/smb2pdu.c +++ b/fs/cifs/smb2pdu.c @@ -199,6 +199,7 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon, } spin_unlock(&server->srv_lock); +again: rc = cifs_wait_for_server_reconnect(server, tcon->retry); if (rc) return rc; @@ -217,6 +218,7 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon, nls_codepage = load_nls_default(); + mutex_lock(&ses->session_mutex); /* * Recheck after acquire mutex. If another thread is negotiating * and the server never sends an answer the socket will be closed @@ -225,6 +227,11 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon, spin_lock(&server->srv_lock); if (server->tcpStatus == CifsNeedReconnect) { spin_unlock(&server->srv_lock); + mutex_unlock(&ses->session_mutex); + + if (tcon->retry) + goto again; + rc = -EHOSTDOWN; goto out; } @@ -234,19 +241,22 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon, * need to prevent multiple threads trying to simultaneously * reconnect the same SMB session */ + spin_lock(&ses->ses_lock); spin_lock(&ses->chan_lock); - if (!cifs_chan_needs_reconnect(ses, server)) { + if (!cifs_chan_needs_reconnect(ses, server) && + ses->ses_status == SES_GOOD) { spin_unlock(&ses->chan_lock); - + spin_unlock(&ses->ses_lock); /* this means that we only need to tree connect */ if (tcon->need_reconnect) goto skip_sess_setup; + mutex_unlock(&ses->session_mutex); goto out; } spin_unlock(&ses->chan_lock); + spin_unlock(&ses->ses_lock); - mutex_lock(&ses->session_mutex); rc = cifs_negotiate_protocol(0, ses, server); if (!rc) { rc = cifs_setup_session(0, ses, server, nls_codepage); @@ -262,10 +272,8 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon, mutex_unlock(&ses->session_mutex); goto out; } - mutex_unlock(&ses->session_mutex); skip_sess_setup: - mutex_lock(&ses->session_mutex); if (!tcon->need_reconnect) { mutex_unlock(&ses->session_mutex); goto out; @@ -280,7 +288,7 @@ skip_sess_setup: cifs_dbg(FYI, "reconnect tcon rc = %d\n", rc); if (rc) { /* If sess reconnected but tcon didn't, something strange ... */ - pr_warn_once("reconnect tcon failed rc = %d\n", rc); + cifs_dbg(VFS, "reconnect tcon failed rc = %d\n", rc); goto out; } @@ -1252,9 +1260,9 @@ SMB2_sess_alloc_buffer(struct SMB2_sess_data *sess_data) if (rc) return rc; - spin_lock(&ses->chan_lock); - is_binding = !CIFS_ALL_CHANS_NEED_RECONNECT(ses); - spin_unlock(&ses->chan_lock); + spin_lock(&ses->ses_lock); + is_binding = (ses->ses_status == SES_GOOD); + spin_unlock(&ses->ses_lock); if (is_binding) { req->hdr.SessionId = cpu_to_le64(ses->Suid); @@ -1412,9 +1420,9 @@ SMB2_auth_kerberos(struct SMB2_sess_data *sess_data) goto out_put_spnego_key; } - spin_lock(&ses->chan_lock); - is_binding = !CIFS_ALL_CHANS_NEED_RECONNECT(ses); - spin_unlock(&ses->chan_lock); + spin_lock(&ses->ses_lock); + is_binding = (ses->ses_status == SES_GOOD); + spin_unlock(&ses->ses_lock); /* keep session key if binding */ if (!is_binding) { @@ -1538,9 +1546,9 @@ SMB2_sess_auth_rawntlmssp_negotiate(struct SMB2_sess_data *sess_data) cifs_dbg(FYI, "rawntlmssp session setup challenge phase\n"); - spin_lock(&ses->chan_lock); - is_binding = !CIFS_ALL_CHANS_NEED_RECONNECT(ses); - spin_unlock(&ses->chan_lock); + spin_lock(&ses->ses_lock); + is_binding = (ses->ses_status == SES_GOOD); + spin_unlock(&ses->ses_lock); /* keep existing ses id and flags if binding */ if (!is_binding) { @@ -1606,9 +1614,9 @@ SMB2_sess_auth_rawntlmssp_authenticate(struct SMB2_sess_data *sess_data) rsp = (struct smb2_sess_setup_rsp *)sess_data->iov[0].iov_base; - spin_lock(&ses->chan_lock); - is_binding = !CIFS_ALL_CHANS_NEED_RECONNECT(ses); - spin_unlock(&ses->chan_lock); + spin_lock(&ses->ses_lock); + is_binding = (ses->ses_status == SES_GOOD); + spin_unlock(&ses->ses_lock); /* keep existing ses id and flags if binding */ if (!is_binding) { diff --git a/fs/cifs/smb2transport.c b/fs/cifs/smb2transport.c index d827b7547ffa..790acf65a092 100644 --- a/fs/cifs/smb2transport.c +++ b/fs/cifs/smb2transport.c @@ -81,6 +81,7 @@ int smb2_get_sign_key(__u64 ses_id, struct TCP_Server_Info *server, u8 *key) struct cifs_ses *ses = NULL; int i; int rc = 0; + bool is_binding = false; spin_lock(&cifs_tcp_ses_lock); @@ -97,9 +98,12 @@ int smb2_get_sign_key(__u64 ses_id, struct TCP_Server_Info *server, u8 *key) goto out; found: + spin_lock(&ses->ses_lock); spin_lock(&ses->chan_lock); - if (cifs_chan_needs_reconnect(ses, server) && - !CIFS_ALL_CHANS_NEED_RECONNECT(ses)) { + + is_binding = (cifs_chan_needs_reconnect(ses, server) && + ses->ses_status == SES_GOOD); + if (is_binding) { /* * If we are in the process of binding a new channel * to an existing session, use the master connection @@ -107,6 +111,7 @@ found: */ memcpy(key, ses->smb3signingkey, SMB3_SIGN_KEY_SIZE); spin_unlock(&ses->chan_lock); + spin_unlock(&ses->ses_lock); goto out; } @@ -119,10 +124,12 @@ found: if (chan->server == server) { memcpy(key, chan->signkey, SMB3_SIGN_KEY_SIZE); spin_unlock(&ses->chan_lock); + spin_unlock(&ses->ses_lock); goto out; } } spin_unlock(&ses->chan_lock); + spin_unlock(&ses->ses_lock); cifs_dbg(VFS, "%s: Could not find channel signing key for session 0x%llx\n", @@ -392,11 +399,15 @@ generate_smb3signingkey(struct cifs_ses *ses, bool is_binding = false; int chan_index = 0; + spin_lock(&ses->ses_lock); spin_lock(&ses->chan_lock); - is_binding = !CIFS_ALL_CHANS_NEED_RECONNECT(ses); + is_binding = (cifs_chan_needs_reconnect(ses, server) && + ses->ses_status == SES_GOOD); + chan_index = cifs_ses_get_chan_index(ses, server); /* TODO: introduce ref counting for channels when the can be freed */ spin_unlock(&ses->chan_lock); + spin_unlock(&ses->ses_lock); /* * All channels use the same encryption/decryption keys but From a624b4796f38b0859043249f02bcf09f43d35dd4 Mon Sep 17 00:00:00 2001 From: Damien Le Moal Date: Fri, 25 Nov 2022 09:39:33 +0900 Subject: [PATCH 015/269] zonefs: Reorganize code [ Upstream commit 4008e2a0b01aba982356fd15b128a47bf11bd9c7 ] Move all code related to zone file operations from super.c to the new file.c file. Inode and zone management code remains in super.c. Signed-off-by: Damien Le Moal Reviewed-by: Johannes Thumshirn Stable-dep-of: 88b170088ad2 ("zonefs: Fix error message in zonefs_file_dio_append()") Signed-off-by: Sasha Levin --- fs/zonefs/Makefile | 2 +- fs/zonefs/file.c | 874 ++++++++++++++++++++++++++++++++++++++++ fs/zonefs/super.c | 973 +++------------------------------------------ fs/zonefs/zonefs.h | 22 + 4 files changed, 955 insertions(+), 916 deletions(-) create mode 100644 fs/zonefs/file.c diff --git a/fs/zonefs/Makefile b/fs/zonefs/Makefile index 9fe54f5319f2..645f7229de4a 100644 --- a/fs/zonefs/Makefile +++ b/fs/zonefs/Makefile @@ -3,4 +3,4 @@ ccflags-y += -I$(src) obj-$(CONFIG_ZONEFS_FS) += zonefs.o -zonefs-y := super.o sysfs.o +zonefs-y := super.o file.o sysfs.o diff --git a/fs/zonefs/file.c b/fs/zonefs/file.c new file mode 100644 index 000000000000..ece0f3959b6d --- /dev/null +++ b/fs/zonefs/file.c @@ -0,0 +1,874 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Simple file system for zoned block devices exposing zones as files. + * + * Copyright (C) 2022 Western Digital Corporation or its affiliates. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "zonefs.h" + +#include "trace.h" + +static int zonefs_read_iomap_begin(struct inode *inode, loff_t offset, + loff_t length, unsigned int flags, + struct iomap *iomap, struct iomap *srcmap) +{ + struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct super_block *sb = inode->i_sb; + loff_t isize; + + /* + * All blocks are always mapped below EOF. If reading past EOF, + * act as if there is a hole up to the file maximum size. + */ + mutex_lock(&zi->i_truncate_mutex); + iomap->bdev = inode->i_sb->s_bdev; + iomap->offset = ALIGN_DOWN(offset, sb->s_blocksize); + isize = i_size_read(inode); + if (iomap->offset >= isize) { + iomap->type = IOMAP_HOLE; + iomap->addr = IOMAP_NULL_ADDR; + iomap->length = length; + } else { + iomap->type = IOMAP_MAPPED; + iomap->addr = (zi->i_zsector << SECTOR_SHIFT) + iomap->offset; + iomap->length = isize - iomap->offset; + } + mutex_unlock(&zi->i_truncate_mutex); + + trace_zonefs_iomap_begin(inode, iomap); + + return 0; +} + +static const struct iomap_ops zonefs_read_iomap_ops = { + .iomap_begin = zonefs_read_iomap_begin, +}; + +static int zonefs_write_iomap_begin(struct inode *inode, loff_t offset, + loff_t length, unsigned int flags, + struct iomap *iomap, struct iomap *srcmap) +{ + struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct super_block *sb = inode->i_sb; + loff_t isize; + + /* All write I/Os should always be within the file maximum size */ + if (WARN_ON_ONCE(offset + length > zi->i_max_size)) + return -EIO; + + /* + * Sequential zones can only accept direct writes. This is already + * checked when writes are issued, so warn if we see a page writeback + * operation. + */ + if (WARN_ON_ONCE(zi->i_ztype == ZONEFS_ZTYPE_SEQ && + !(flags & IOMAP_DIRECT))) + return -EIO; + + /* + * For conventional zones, all blocks are always mapped. For sequential + * zones, all blocks after always mapped below the inode size (zone + * write pointer) and unwriten beyond. + */ + mutex_lock(&zi->i_truncate_mutex); + iomap->bdev = inode->i_sb->s_bdev; + iomap->offset = ALIGN_DOWN(offset, sb->s_blocksize); + iomap->addr = (zi->i_zsector << SECTOR_SHIFT) + iomap->offset; + isize = i_size_read(inode); + if (iomap->offset >= isize) { + iomap->type = IOMAP_UNWRITTEN; + iomap->length = zi->i_max_size - iomap->offset; + } else { + iomap->type = IOMAP_MAPPED; + iomap->length = isize - iomap->offset; + } + mutex_unlock(&zi->i_truncate_mutex); + + trace_zonefs_iomap_begin(inode, iomap); + + return 0; +} + +static const struct iomap_ops zonefs_write_iomap_ops = { + .iomap_begin = zonefs_write_iomap_begin, +}; + +static int zonefs_read_folio(struct file *unused, struct folio *folio) +{ + return iomap_read_folio(folio, &zonefs_read_iomap_ops); +} + +static void zonefs_readahead(struct readahead_control *rac) +{ + iomap_readahead(rac, &zonefs_read_iomap_ops); +} + +/* + * Map blocks for page writeback. This is used only on conventional zone files, + * which implies that the page range can only be within the fixed inode size. + */ +static int zonefs_write_map_blocks(struct iomap_writepage_ctx *wpc, + struct inode *inode, loff_t offset) +{ + struct zonefs_inode_info *zi = ZONEFS_I(inode); + + if (WARN_ON_ONCE(zi->i_ztype != ZONEFS_ZTYPE_CNV)) + return -EIO; + if (WARN_ON_ONCE(offset >= i_size_read(inode))) + return -EIO; + + /* If the mapping is already OK, nothing needs to be done */ + if (offset >= wpc->iomap.offset && + offset < wpc->iomap.offset + wpc->iomap.length) + return 0; + + return zonefs_write_iomap_begin(inode, offset, zi->i_max_size - offset, + IOMAP_WRITE, &wpc->iomap, NULL); +} + +static const struct iomap_writeback_ops zonefs_writeback_ops = { + .map_blocks = zonefs_write_map_blocks, +}; + +static int zonefs_writepages(struct address_space *mapping, + struct writeback_control *wbc) +{ + struct iomap_writepage_ctx wpc = { }; + + return iomap_writepages(mapping, wbc, &wpc, &zonefs_writeback_ops); +} + +static int zonefs_swap_activate(struct swap_info_struct *sis, + struct file *swap_file, sector_t *span) +{ + struct inode *inode = file_inode(swap_file); + struct zonefs_inode_info *zi = ZONEFS_I(inode); + + if (zi->i_ztype != ZONEFS_ZTYPE_CNV) { + zonefs_err(inode->i_sb, + "swap file: not a conventional zone file\n"); + return -EINVAL; + } + + return iomap_swapfile_activate(sis, swap_file, span, + &zonefs_read_iomap_ops); +} + +const struct address_space_operations zonefs_file_aops = { + .read_folio = zonefs_read_folio, + .readahead = zonefs_readahead, + .writepages = zonefs_writepages, + .dirty_folio = filemap_dirty_folio, + .release_folio = iomap_release_folio, + .invalidate_folio = iomap_invalidate_folio, + .migrate_folio = filemap_migrate_folio, + .is_partially_uptodate = iomap_is_partially_uptodate, + .error_remove_page = generic_error_remove_page, + .direct_IO = noop_direct_IO, + .swap_activate = zonefs_swap_activate, +}; + +int zonefs_file_truncate(struct inode *inode, loff_t isize) +{ + struct zonefs_inode_info *zi = ZONEFS_I(inode); + loff_t old_isize; + enum req_op op; + int ret = 0; + + /* + * Only sequential zone files can be truncated and truncation is allowed + * only down to a 0 size, which is equivalent to a zone reset, and to + * the maximum file size, which is equivalent to a zone finish. + */ + if (zi->i_ztype != ZONEFS_ZTYPE_SEQ) + return -EPERM; + + if (!isize) + op = REQ_OP_ZONE_RESET; + else if (isize == zi->i_max_size) + op = REQ_OP_ZONE_FINISH; + else + return -EPERM; + + inode_dio_wait(inode); + + /* Serialize against page faults */ + filemap_invalidate_lock(inode->i_mapping); + + /* Serialize against zonefs_iomap_begin() */ + mutex_lock(&zi->i_truncate_mutex); + + old_isize = i_size_read(inode); + if (isize == old_isize) + goto unlock; + + ret = zonefs_zone_mgmt(inode, op); + if (ret) + goto unlock; + + /* + * If the mount option ZONEFS_MNTOPT_EXPLICIT_OPEN is set, + * take care of open zones. + */ + if (zi->i_flags & ZONEFS_ZONE_OPEN) { + /* + * Truncating a zone to EMPTY or FULL is the equivalent of + * closing the zone. For a truncation to 0, we need to + * re-open the zone to ensure new writes can be processed. + * For a truncation to the maximum file size, the zone is + * closed and writes cannot be accepted anymore, so clear + * the open flag. + */ + if (!isize) + ret = zonefs_zone_mgmt(inode, REQ_OP_ZONE_OPEN); + else + zi->i_flags &= ~ZONEFS_ZONE_OPEN; + } + + zonefs_update_stats(inode, isize); + truncate_setsize(inode, isize); + zi->i_wpoffset = isize; + zonefs_account_active(inode); + +unlock: + mutex_unlock(&zi->i_truncate_mutex); + filemap_invalidate_unlock(inode->i_mapping); + + return ret; +} + +static int zonefs_file_fsync(struct file *file, loff_t start, loff_t end, + int datasync) +{ + struct inode *inode = file_inode(file); + int ret = 0; + + if (unlikely(IS_IMMUTABLE(inode))) + return -EPERM; + + /* + * Since only direct writes are allowed in sequential files, page cache + * flush is needed only for conventional zone files. + */ + if (ZONEFS_I(inode)->i_ztype == ZONEFS_ZTYPE_CNV) + ret = file_write_and_wait_range(file, start, end); + if (!ret) + ret = blkdev_issue_flush(inode->i_sb->s_bdev); + + if (ret) + zonefs_io_error(inode, true); + + return ret; +} + +static vm_fault_t zonefs_filemap_page_mkwrite(struct vm_fault *vmf) +{ + struct inode *inode = file_inode(vmf->vma->vm_file); + struct zonefs_inode_info *zi = ZONEFS_I(inode); + vm_fault_t ret; + + if (unlikely(IS_IMMUTABLE(inode))) + return VM_FAULT_SIGBUS; + + /* + * Sanity check: only conventional zone files can have shared + * writeable mappings. + */ + if (WARN_ON_ONCE(zi->i_ztype != ZONEFS_ZTYPE_CNV)) + return VM_FAULT_NOPAGE; + + sb_start_pagefault(inode->i_sb); + file_update_time(vmf->vma->vm_file); + + /* Serialize against truncates */ + filemap_invalidate_lock_shared(inode->i_mapping); + ret = iomap_page_mkwrite(vmf, &zonefs_write_iomap_ops); + filemap_invalidate_unlock_shared(inode->i_mapping); + + sb_end_pagefault(inode->i_sb); + return ret; +} + +static const struct vm_operations_struct zonefs_file_vm_ops = { + .fault = filemap_fault, + .map_pages = filemap_map_pages, + .page_mkwrite = zonefs_filemap_page_mkwrite, +}; + +static int zonefs_file_mmap(struct file *file, struct vm_area_struct *vma) +{ + /* + * Conventional zones accept random writes, so their files can support + * shared writable mappings. For sequential zone files, only read + * mappings are possible since there are no guarantees for write + * ordering between msync() and page cache writeback. + */ + if (ZONEFS_I(file_inode(file))->i_ztype == ZONEFS_ZTYPE_SEQ && + (vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_MAYWRITE)) + return -EINVAL; + + file_accessed(file); + vma->vm_ops = &zonefs_file_vm_ops; + + return 0; +} + +static loff_t zonefs_file_llseek(struct file *file, loff_t offset, int whence) +{ + loff_t isize = i_size_read(file_inode(file)); + + /* + * Seeks are limited to below the zone size for conventional zones + * and below the zone write pointer for sequential zones. In both + * cases, this limit is the inode size. + */ + return generic_file_llseek_size(file, offset, whence, isize, isize); +} + +static int zonefs_file_write_dio_end_io(struct kiocb *iocb, ssize_t size, + int error, unsigned int flags) +{ + struct inode *inode = file_inode(iocb->ki_filp); + struct zonefs_inode_info *zi = ZONEFS_I(inode); + + if (error) { + zonefs_io_error(inode, true); + return error; + } + + if (size && zi->i_ztype != ZONEFS_ZTYPE_CNV) { + /* + * Note that we may be seeing completions out of order, + * but that is not a problem since a write completed + * successfully necessarily means that all preceding writes + * were also successful. So we can safely increase the inode + * size to the write end location. + */ + mutex_lock(&zi->i_truncate_mutex); + if (i_size_read(inode) < iocb->ki_pos + size) { + zonefs_update_stats(inode, iocb->ki_pos + size); + zonefs_i_size_write(inode, iocb->ki_pos + size); + } + mutex_unlock(&zi->i_truncate_mutex); + } + + return 0; +} + +static const struct iomap_dio_ops zonefs_write_dio_ops = { + .end_io = zonefs_file_write_dio_end_io, +}; + +static ssize_t zonefs_file_dio_append(struct kiocb *iocb, struct iov_iter *from) +{ + struct inode *inode = file_inode(iocb->ki_filp); + struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct block_device *bdev = inode->i_sb->s_bdev; + unsigned int max = bdev_max_zone_append_sectors(bdev); + struct bio *bio; + ssize_t size; + int nr_pages; + ssize_t ret; + + max = ALIGN_DOWN(max << SECTOR_SHIFT, inode->i_sb->s_blocksize); + iov_iter_truncate(from, max); + + nr_pages = iov_iter_npages(from, BIO_MAX_VECS); + if (!nr_pages) + return 0; + + bio = bio_alloc(bdev, nr_pages, + REQ_OP_ZONE_APPEND | REQ_SYNC | REQ_IDLE, GFP_NOFS); + bio->bi_iter.bi_sector = zi->i_zsector; + bio->bi_ioprio = iocb->ki_ioprio; + if (iocb_is_dsync(iocb)) + bio->bi_opf |= REQ_FUA; + + ret = bio_iov_iter_get_pages(bio, from); + if (unlikely(ret)) + goto out_release; + + size = bio->bi_iter.bi_size; + task_io_account_write(size); + + if (iocb->ki_flags & IOCB_HIPRI) + bio_set_polled(bio, iocb); + + ret = submit_bio_wait(bio); + + /* + * If the file zone was written underneath the file system, the zone + * write pointer may not be where we expect it to be, but the zone + * append write can still succeed. So check manually that we wrote where + * we intended to, that is, at zi->i_wpoffset. + */ + if (!ret) { + sector_t wpsector = + zi->i_zsector + (zi->i_wpoffset >> SECTOR_SHIFT); + + if (bio->bi_iter.bi_sector != wpsector) { + zonefs_warn(inode->i_sb, + "Corrupted write pointer %llu for zone at %llu\n", + wpsector, zi->i_zsector); + ret = -EIO; + } + } + + zonefs_file_write_dio_end_io(iocb, size, ret, 0); + trace_zonefs_file_dio_append(inode, size, ret); + +out_release: + bio_release_pages(bio, false); + bio_put(bio); + + if (ret >= 0) { + iocb->ki_pos += size; + return size; + } + + return ret; +} + +/* + * Do not exceed the LFS limits nor the file zone size. If pos is under the + * limit it becomes a short access. If it exceeds the limit, return -EFBIG. + */ +static loff_t zonefs_write_check_limits(struct file *file, loff_t pos, + loff_t count) +{ + struct inode *inode = file_inode(file); + struct zonefs_inode_info *zi = ZONEFS_I(inode); + loff_t limit = rlimit(RLIMIT_FSIZE); + loff_t max_size = zi->i_max_size; + + if (limit != RLIM_INFINITY) { + if (pos >= limit) { + send_sig(SIGXFSZ, current, 0); + return -EFBIG; + } + count = min(count, limit - pos); + } + + if (!(file->f_flags & O_LARGEFILE)) + max_size = min_t(loff_t, MAX_NON_LFS, max_size); + + if (unlikely(pos >= max_size)) + return -EFBIG; + + return min(count, max_size - pos); +} + +static ssize_t zonefs_write_checks(struct kiocb *iocb, struct iov_iter *from) +{ + struct file *file = iocb->ki_filp; + struct inode *inode = file_inode(file); + struct zonefs_inode_info *zi = ZONEFS_I(inode); + loff_t count; + + if (IS_SWAPFILE(inode)) + return -ETXTBSY; + + if (!iov_iter_count(from)) + return 0; + + if ((iocb->ki_flags & IOCB_NOWAIT) && !(iocb->ki_flags & IOCB_DIRECT)) + return -EINVAL; + + if (iocb->ki_flags & IOCB_APPEND) { + if (zi->i_ztype != ZONEFS_ZTYPE_SEQ) + return -EINVAL; + mutex_lock(&zi->i_truncate_mutex); + iocb->ki_pos = zi->i_wpoffset; + mutex_unlock(&zi->i_truncate_mutex); + } + + count = zonefs_write_check_limits(file, iocb->ki_pos, + iov_iter_count(from)); + if (count < 0) + return count; + + iov_iter_truncate(from, count); + return iov_iter_count(from); +} + +/* + * Handle direct writes. For sequential zone files, this is the only possible + * write path. For these files, check that the user is issuing writes + * sequentially from the end of the file. This code assumes that the block layer + * delivers write requests to the device in sequential order. This is always the + * case if a block IO scheduler implementing the ELEVATOR_F_ZBD_SEQ_WRITE + * elevator feature is being used (e.g. mq-deadline). The block layer always + * automatically select such an elevator for zoned block devices during the + * device initialization. + */ +static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from) +{ + struct inode *inode = file_inode(iocb->ki_filp); + struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct super_block *sb = inode->i_sb; + bool sync = is_sync_kiocb(iocb); + bool append = false; + ssize_t ret, count; + + /* + * For async direct IOs to sequential zone files, refuse IOCB_NOWAIT + * as this can cause write reordering (e.g. the first aio gets EAGAIN + * on the inode lock but the second goes through but is now unaligned). + */ + if (zi->i_ztype == ZONEFS_ZTYPE_SEQ && !sync && + (iocb->ki_flags & IOCB_NOWAIT)) + return -EOPNOTSUPP; + + if (iocb->ki_flags & IOCB_NOWAIT) { + if (!inode_trylock(inode)) + return -EAGAIN; + } else { + inode_lock(inode); + } + + count = zonefs_write_checks(iocb, from); + if (count <= 0) { + ret = count; + goto inode_unlock; + } + + if ((iocb->ki_pos | count) & (sb->s_blocksize - 1)) { + ret = -EINVAL; + goto inode_unlock; + } + + /* Enforce sequential writes (append only) in sequential zones */ + if (zi->i_ztype == ZONEFS_ZTYPE_SEQ) { + mutex_lock(&zi->i_truncate_mutex); + if (iocb->ki_pos != zi->i_wpoffset) { + mutex_unlock(&zi->i_truncate_mutex); + ret = -EINVAL; + goto inode_unlock; + } + mutex_unlock(&zi->i_truncate_mutex); + append = sync; + } + + if (append) + ret = zonefs_file_dio_append(iocb, from); + else + ret = iomap_dio_rw(iocb, from, &zonefs_write_iomap_ops, + &zonefs_write_dio_ops, 0, NULL, 0); + if (zi->i_ztype == ZONEFS_ZTYPE_SEQ && + (ret > 0 || ret == -EIOCBQUEUED)) { + if (ret > 0) + count = ret; + + /* + * Update the zone write pointer offset assuming the write + * operation succeeded. If it did not, the error recovery path + * will correct it. Also do active seq file accounting. + */ + mutex_lock(&zi->i_truncate_mutex); + zi->i_wpoffset += count; + zonefs_account_active(inode); + mutex_unlock(&zi->i_truncate_mutex); + } + +inode_unlock: + inode_unlock(inode); + + return ret; +} + +static ssize_t zonefs_file_buffered_write(struct kiocb *iocb, + struct iov_iter *from) +{ + struct inode *inode = file_inode(iocb->ki_filp); + struct zonefs_inode_info *zi = ZONEFS_I(inode); + ssize_t ret; + + /* + * Direct IO writes are mandatory for sequential zone files so that the + * write IO issuing order is preserved. + */ + if (zi->i_ztype != ZONEFS_ZTYPE_CNV) + return -EIO; + + if (iocb->ki_flags & IOCB_NOWAIT) { + if (!inode_trylock(inode)) + return -EAGAIN; + } else { + inode_lock(inode); + } + + ret = zonefs_write_checks(iocb, from); + if (ret <= 0) + goto inode_unlock; + + ret = iomap_file_buffered_write(iocb, from, &zonefs_write_iomap_ops); + if (ret > 0) + iocb->ki_pos += ret; + else if (ret == -EIO) + zonefs_io_error(inode, true); + +inode_unlock: + inode_unlock(inode); + if (ret > 0) + ret = generic_write_sync(iocb, ret); + + return ret; +} + +static ssize_t zonefs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) +{ + struct inode *inode = file_inode(iocb->ki_filp); + + if (unlikely(IS_IMMUTABLE(inode))) + return -EPERM; + + if (sb_rdonly(inode->i_sb)) + return -EROFS; + + /* Write operations beyond the zone size are not allowed */ + if (iocb->ki_pos >= ZONEFS_I(inode)->i_max_size) + return -EFBIG; + + if (iocb->ki_flags & IOCB_DIRECT) { + ssize_t ret = zonefs_file_dio_write(iocb, from); + + if (ret != -ENOTBLK) + return ret; + } + + return zonefs_file_buffered_write(iocb, from); +} + +static int zonefs_file_read_dio_end_io(struct kiocb *iocb, ssize_t size, + int error, unsigned int flags) +{ + if (error) { + zonefs_io_error(file_inode(iocb->ki_filp), false); + return error; + } + + return 0; +} + +static const struct iomap_dio_ops zonefs_read_dio_ops = { + .end_io = zonefs_file_read_dio_end_io, +}; + +static ssize_t zonefs_file_read_iter(struct kiocb *iocb, struct iov_iter *to) +{ + struct inode *inode = file_inode(iocb->ki_filp); + struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct super_block *sb = inode->i_sb; + loff_t isize; + ssize_t ret; + + /* Offline zones cannot be read */ + if (unlikely(IS_IMMUTABLE(inode) && !(inode->i_mode & 0777))) + return -EPERM; + + if (iocb->ki_pos >= zi->i_max_size) + return 0; + + if (iocb->ki_flags & IOCB_NOWAIT) { + if (!inode_trylock_shared(inode)) + return -EAGAIN; + } else { + inode_lock_shared(inode); + } + + /* Limit read operations to written data */ + mutex_lock(&zi->i_truncate_mutex); + isize = i_size_read(inode); + if (iocb->ki_pos >= isize) { + mutex_unlock(&zi->i_truncate_mutex); + ret = 0; + goto inode_unlock; + } + iov_iter_truncate(to, isize - iocb->ki_pos); + mutex_unlock(&zi->i_truncate_mutex); + + if (iocb->ki_flags & IOCB_DIRECT) { + size_t count = iov_iter_count(to); + + if ((iocb->ki_pos | count) & (sb->s_blocksize - 1)) { + ret = -EINVAL; + goto inode_unlock; + } + file_accessed(iocb->ki_filp); + ret = iomap_dio_rw(iocb, to, &zonefs_read_iomap_ops, + &zonefs_read_dio_ops, 0, NULL, 0); + } else { + ret = generic_file_read_iter(iocb, to); + if (ret == -EIO) + zonefs_io_error(inode, false); + } + +inode_unlock: + inode_unlock_shared(inode); + + return ret; +} + +/* + * Write open accounting is done only for sequential files. + */ +static inline bool zonefs_seq_file_need_wro(struct inode *inode, + struct file *file) +{ + struct zonefs_inode_info *zi = ZONEFS_I(inode); + + if (zi->i_ztype != ZONEFS_ZTYPE_SEQ) + return false; + + if (!(file->f_mode & FMODE_WRITE)) + return false; + + return true; +} + +static int zonefs_seq_file_write_open(struct inode *inode) +{ + struct zonefs_inode_info *zi = ZONEFS_I(inode); + int ret = 0; + + mutex_lock(&zi->i_truncate_mutex); + + if (!zi->i_wr_refcnt) { + struct zonefs_sb_info *sbi = ZONEFS_SB(inode->i_sb); + unsigned int wro = atomic_inc_return(&sbi->s_wro_seq_files); + + if (sbi->s_mount_opts & ZONEFS_MNTOPT_EXPLICIT_OPEN) { + + if (sbi->s_max_wro_seq_files + && wro > sbi->s_max_wro_seq_files) { + atomic_dec(&sbi->s_wro_seq_files); + ret = -EBUSY; + goto unlock; + } + + if (i_size_read(inode) < zi->i_max_size) { + ret = zonefs_zone_mgmt(inode, REQ_OP_ZONE_OPEN); + if (ret) { + atomic_dec(&sbi->s_wro_seq_files); + goto unlock; + } + zi->i_flags |= ZONEFS_ZONE_OPEN; + zonefs_account_active(inode); + } + } + } + + zi->i_wr_refcnt++; + +unlock: + mutex_unlock(&zi->i_truncate_mutex); + + return ret; +} + +static int zonefs_file_open(struct inode *inode, struct file *file) +{ + int ret; + + ret = generic_file_open(inode, file); + if (ret) + return ret; + + if (zonefs_seq_file_need_wro(inode, file)) + return zonefs_seq_file_write_open(inode); + + return 0; +} + +static void zonefs_seq_file_write_close(struct inode *inode) +{ + struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct super_block *sb = inode->i_sb; + struct zonefs_sb_info *sbi = ZONEFS_SB(sb); + int ret = 0; + + mutex_lock(&zi->i_truncate_mutex); + + zi->i_wr_refcnt--; + if (zi->i_wr_refcnt) + goto unlock; + + /* + * The file zone may not be open anymore (e.g. the file was truncated to + * its maximum size or it was fully written). For this case, we only + * need to decrement the write open count. + */ + if (zi->i_flags & ZONEFS_ZONE_OPEN) { + ret = zonefs_zone_mgmt(inode, REQ_OP_ZONE_CLOSE); + if (ret) { + __zonefs_io_error(inode, false); + /* + * Leaving zones explicitly open may lead to a state + * where most zones cannot be written (zone resources + * exhausted). So take preventive action by remounting + * read-only. + */ + if (zi->i_flags & ZONEFS_ZONE_OPEN && + !(sb->s_flags & SB_RDONLY)) { + zonefs_warn(sb, + "closing zone at %llu failed %d\n", + zi->i_zsector, ret); + zonefs_warn(sb, + "remounting filesystem read-only\n"); + sb->s_flags |= SB_RDONLY; + } + goto unlock; + } + + zi->i_flags &= ~ZONEFS_ZONE_OPEN; + zonefs_account_active(inode); + } + + atomic_dec(&sbi->s_wro_seq_files); + +unlock: + mutex_unlock(&zi->i_truncate_mutex); +} + +static int zonefs_file_release(struct inode *inode, struct file *file) +{ + /* + * If we explicitly open a zone we must close it again as well, but the + * zone management operation can fail (either due to an IO error or as + * the zone has gone offline or read-only). Make sure we don't fail the + * close(2) for user-space. + */ + if (zonefs_seq_file_need_wro(inode, file)) + zonefs_seq_file_write_close(inode); + + return 0; +} + +const struct file_operations zonefs_file_operations = { + .open = zonefs_file_open, + .release = zonefs_file_release, + .fsync = zonefs_file_fsync, + .mmap = zonefs_file_mmap, + .llseek = zonefs_file_llseek, + .read_iter = zonefs_file_read_iter, + .write_iter = zonefs_file_write_iter, + .splice_read = generic_file_splice_read, + .splice_write = iter_file_splice_write, + .iopoll = iocb_bio_iopoll, +}; diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c index a9c5c3f720ad..e808276b8801 100644 --- a/fs/zonefs/super.c +++ b/fs/zonefs/super.c @@ -30,7 +30,7 @@ /* * Manage the active zone count. Called with zi->i_truncate_mutex held. */ -static void zonefs_account_active(struct inode *inode) +void zonefs_account_active(struct inode *inode) { struct zonefs_sb_info *sbi = ZONEFS_SB(inode->i_sb); struct zonefs_inode_info *zi = ZONEFS_I(inode); @@ -68,7 +68,7 @@ out: } } -static inline int zonefs_zone_mgmt(struct inode *inode, enum req_op op) +int zonefs_zone_mgmt(struct inode *inode, enum req_op op) { struct zonefs_inode_info *zi = ZONEFS_I(inode); int ret; @@ -99,7 +99,7 @@ static inline int zonefs_zone_mgmt(struct inode *inode, enum req_op op) return 0; } -static inline void zonefs_i_size_write(struct inode *inode, loff_t isize) +void zonefs_i_size_write(struct inode *inode, loff_t isize) { struct zonefs_inode_info *zi = ZONEFS_I(inode); @@ -117,167 +117,7 @@ static inline void zonefs_i_size_write(struct inode *inode, loff_t isize) } } -static int zonefs_read_iomap_begin(struct inode *inode, loff_t offset, - loff_t length, unsigned int flags, - struct iomap *iomap, struct iomap *srcmap) -{ - struct zonefs_inode_info *zi = ZONEFS_I(inode); - struct super_block *sb = inode->i_sb; - loff_t isize; - - /* - * All blocks are always mapped below EOF. If reading past EOF, - * act as if there is a hole up to the file maximum size. - */ - mutex_lock(&zi->i_truncate_mutex); - iomap->bdev = inode->i_sb->s_bdev; - iomap->offset = ALIGN_DOWN(offset, sb->s_blocksize); - isize = i_size_read(inode); - if (iomap->offset >= isize) { - iomap->type = IOMAP_HOLE; - iomap->addr = IOMAP_NULL_ADDR; - iomap->length = length; - } else { - iomap->type = IOMAP_MAPPED; - iomap->addr = (zi->i_zsector << SECTOR_SHIFT) + iomap->offset; - iomap->length = isize - iomap->offset; - } - mutex_unlock(&zi->i_truncate_mutex); - - trace_zonefs_iomap_begin(inode, iomap); - - return 0; -} - -static const struct iomap_ops zonefs_read_iomap_ops = { - .iomap_begin = zonefs_read_iomap_begin, -}; - -static int zonefs_write_iomap_begin(struct inode *inode, loff_t offset, - loff_t length, unsigned int flags, - struct iomap *iomap, struct iomap *srcmap) -{ - struct zonefs_inode_info *zi = ZONEFS_I(inode); - struct super_block *sb = inode->i_sb; - loff_t isize; - - /* All write I/Os should always be within the file maximum size */ - if (WARN_ON_ONCE(offset + length > zi->i_max_size)) - return -EIO; - - /* - * Sequential zones can only accept direct writes. This is already - * checked when writes are issued, so warn if we see a page writeback - * operation. - */ - if (WARN_ON_ONCE(zi->i_ztype == ZONEFS_ZTYPE_SEQ && - !(flags & IOMAP_DIRECT))) - return -EIO; - - /* - * For conventional zones, all blocks are always mapped. For sequential - * zones, all blocks after always mapped below the inode size (zone - * write pointer) and unwriten beyond. - */ - mutex_lock(&zi->i_truncate_mutex); - iomap->bdev = inode->i_sb->s_bdev; - iomap->offset = ALIGN_DOWN(offset, sb->s_blocksize); - iomap->addr = (zi->i_zsector << SECTOR_SHIFT) + iomap->offset; - isize = i_size_read(inode); - if (iomap->offset >= isize) { - iomap->type = IOMAP_UNWRITTEN; - iomap->length = zi->i_max_size - iomap->offset; - } else { - iomap->type = IOMAP_MAPPED; - iomap->length = isize - iomap->offset; - } - mutex_unlock(&zi->i_truncate_mutex); - - trace_zonefs_iomap_begin(inode, iomap); - - return 0; -} - -static const struct iomap_ops zonefs_write_iomap_ops = { - .iomap_begin = zonefs_write_iomap_begin, -}; - -static int zonefs_read_folio(struct file *unused, struct folio *folio) -{ - return iomap_read_folio(folio, &zonefs_read_iomap_ops); -} - -static void zonefs_readahead(struct readahead_control *rac) -{ - iomap_readahead(rac, &zonefs_read_iomap_ops); -} - -/* - * Map blocks for page writeback. This is used only on conventional zone files, - * which implies that the page range can only be within the fixed inode size. - */ -static int zonefs_write_map_blocks(struct iomap_writepage_ctx *wpc, - struct inode *inode, loff_t offset) -{ - struct zonefs_inode_info *zi = ZONEFS_I(inode); - - if (WARN_ON_ONCE(zi->i_ztype != ZONEFS_ZTYPE_CNV)) - return -EIO; - if (WARN_ON_ONCE(offset >= i_size_read(inode))) - return -EIO; - - /* If the mapping is already OK, nothing needs to be done */ - if (offset >= wpc->iomap.offset && - offset < wpc->iomap.offset + wpc->iomap.length) - return 0; - - return zonefs_write_iomap_begin(inode, offset, zi->i_max_size - offset, - IOMAP_WRITE, &wpc->iomap, NULL); -} - -static const struct iomap_writeback_ops zonefs_writeback_ops = { - .map_blocks = zonefs_write_map_blocks, -}; - -static int zonefs_writepages(struct address_space *mapping, - struct writeback_control *wbc) -{ - struct iomap_writepage_ctx wpc = { }; - - return iomap_writepages(mapping, wbc, &wpc, &zonefs_writeback_ops); -} - -static int zonefs_swap_activate(struct swap_info_struct *sis, - struct file *swap_file, sector_t *span) -{ - struct inode *inode = file_inode(swap_file); - struct zonefs_inode_info *zi = ZONEFS_I(inode); - - if (zi->i_ztype != ZONEFS_ZTYPE_CNV) { - zonefs_err(inode->i_sb, - "swap file: not a conventional zone file\n"); - return -EINVAL; - } - - return iomap_swapfile_activate(sis, swap_file, span, - &zonefs_read_iomap_ops); -} - -static const struct address_space_operations zonefs_file_aops = { - .read_folio = zonefs_read_folio, - .readahead = zonefs_readahead, - .writepages = zonefs_writepages, - .dirty_folio = filemap_dirty_folio, - .release_folio = iomap_release_folio, - .invalidate_folio = iomap_invalidate_folio, - .migrate_folio = filemap_migrate_folio, - .is_partially_uptodate = iomap_is_partially_uptodate, - .error_remove_page = generic_error_remove_page, - .direct_IO = noop_direct_IO, - .swap_activate = zonefs_swap_activate, -}; - -static void zonefs_update_stats(struct inode *inode, loff_t new_isize) +void zonefs_update_stats(struct inode *inode, loff_t new_isize) { struct super_block *sb = inode->i_sb; struct zonefs_sb_info *sbi = ZONEFS_SB(sb); @@ -487,7 +327,7 @@ static int zonefs_io_error_cb(struct blk_zone *zone, unsigned int idx, * eventually correct the file size and zonefs inode write pointer offset * (which can be out of sync with the drive due to partial write failures). */ -static void __zonefs_io_error(struct inode *inode, bool write) +void __zonefs_io_error(struct inode *inode, bool write) { struct zonefs_inode_info *zi = ZONEFS_I(inode); struct super_block *sb = inode->i_sb; @@ -526,749 +366,6 @@ static void __zonefs_io_error(struct inode *inode, bool write) memalloc_noio_restore(noio_flag); } -static void zonefs_io_error(struct inode *inode, bool write) -{ - struct zonefs_inode_info *zi = ZONEFS_I(inode); - - mutex_lock(&zi->i_truncate_mutex); - __zonefs_io_error(inode, write); - mutex_unlock(&zi->i_truncate_mutex); -} - -static int zonefs_file_truncate(struct inode *inode, loff_t isize) -{ - struct zonefs_inode_info *zi = ZONEFS_I(inode); - loff_t old_isize; - enum req_op op; - int ret = 0; - - /* - * Only sequential zone files can be truncated and truncation is allowed - * only down to a 0 size, which is equivalent to a zone reset, and to - * the maximum file size, which is equivalent to a zone finish. - */ - if (zi->i_ztype != ZONEFS_ZTYPE_SEQ) - return -EPERM; - - if (!isize) - op = REQ_OP_ZONE_RESET; - else if (isize == zi->i_max_size) - op = REQ_OP_ZONE_FINISH; - else - return -EPERM; - - inode_dio_wait(inode); - - /* Serialize against page faults */ - filemap_invalidate_lock(inode->i_mapping); - - /* Serialize against zonefs_iomap_begin() */ - mutex_lock(&zi->i_truncate_mutex); - - old_isize = i_size_read(inode); - if (isize == old_isize) - goto unlock; - - ret = zonefs_zone_mgmt(inode, op); - if (ret) - goto unlock; - - /* - * If the mount option ZONEFS_MNTOPT_EXPLICIT_OPEN is set, - * take care of open zones. - */ - if (zi->i_flags & ZONEFS_ZONE_OPEN) { - /* - * Truncating a zone to EMPTY or FULL is the equivalent of - * closing the zone. For a truncation to 0, we need to - * re-open the zone to ensure new writes can be processed. - * For a truncation to the maximum file size, the zone is - * closed and writes cannot be accepted anymore, so clear - * the open flag. - */ - if (!isize) - ret = zonefs_zone_mgmt(inode, REQ_OP_ZONE_OPEN); - else - zi->i_flags &= ~ZONEFS_ZONE_OPEN; - } - - zonefs_update_stats(inode, isize); - truncate_setsize(inode, isize); - zi->i_wpoffset = isize; - zonefs_account_active(inode); - -unlock: - mutex_unlock(&zi->i_truncate_mutex); - filemap_invalidate_unlock(inode->i_mapping); - - return ret; -} - -static int zonefs_inode_setattr(struct user_namespace *mnt_userns, - struct dentry *dentry, struct iattr *iattr) -{ - struct inode *inode = d_inode(dentry); - int ret; - - if (unlikely(IS_IMMUTABLE(inode))) - return -EPERM; - - ret = setattr_prepare(&init_user_ns, dentry, iattr); - if (ret) - return ret; - - /* - * Since files and directories cannot be created nor deleted, do not - * allow setting any write attributes on the sub-directories grouping - * files by zone type. - */ - if ((iattr->ia_valid & ATTR_MODE) && S_ISDIR(inode->i_mode) && - (iattr->ia_mode & 0222)) - return -EPERM; - - if (((iattr->ia_valid & ATTR_UID) && - !uid_eq(iattr->ia_uid, inode->i_uid)) || - ((iattr->ia_valid & ATTR_GID) && - !gid_eq(iattr->ia_gid, inode->i_gid))) { - ret = dquot_transfer(mnt_userns, inode, iattr); - if (ret) - return ret; - } - - if (iattr->ia_valid & ATTR_SIZE) { - ret = zonefs_file_truncate(inode, iattr->ia_size); - if (ret) - return ret; - } - - setattr_copy(&init_user_ns, inode, iattr); - - return 0; -} - -static const struct inode_operations zonefs_file_inode_operations = { - .setattr = zonefs_inode_setattr, -}; - -static int zonefs_file_fsync(struct file *file, loff_t start, loff_t end, - int datasync) -{ - struct inode *inode = file_inode(file); - int ret = 0; - - if (unlikely(IS_IMMUTABLE(inode))) - return -EPERM; - - /* - * Since only direct writes are allowed in sequential files, page cache - * flush is needed only for conventional zone files. - */ - if (ZONEFS_I(inode)->i_ztype == ZONEFS_ZTYPE_CNV) - ret = file_write_and_wait_range(file, start, end); - if (!ret) - ret = blkdev_issue_flush(inode->i_sb->s_bdev); - - if (ret) - zonefs_io_error(inode, true); - - return ret; -} - -static vm_fault_t zonefs_filemap_page_mkwrite(struct vm_fault *vmf) -{ - struct inode *inode = file_inode(vmf->vma->vm_file); - struct zonefs_inode_info *zi = ZONEFS_I(inode); - vm_fault_t ret; - - if (unlikely(IS_IMMUTABLE(inode))) - return VM_FAULT_SIGBUS; - - /* - * Sanity check: only conventional zone files can have shared - * writeable mappings. - */ - if (WARN_ON_ONCE(zi->i_ztype != ZONEFS_ZTYPE_CNV)) - return VM_FAULT_NOPAGE; - - sb_start_pagefault(inode->i_sb); - file_update_time(vmf->vma->vm_file); - - /* Serialize against truncates */ - filemap_invalidate_lock_shared(inode->i_mapping); - ret = iomap_page_mkwrite(vmf, &zonefs_write_iomap_ops); - filemap_invalidate_unlock_shared(inode->i_mapping); - - sb_end_pagefault(inode->i_sb); - return ret; -} - -static const struct vm_operations_struct zonefs_file_vm_ops = { - .fault = filemap_fault, - .map_pages = filemap_map_pages, - .page_mkwrite = zonefs_filemap_page_mkwrite, -}; - -static int zonefs_file_mmap(struct file *file, struct vm_area_struct *vma) -{ - /* - * Conventional zones accept random writes, so their files can support - * shared writable mappings. For sequential zone files, only read - * mappings are possible since there are no guarantees for write - * ordering between msync() and page cache writeback. - */ - if (ZONEFS_I(file_inode(file))->i_ztype == ZONEFS_ZTYPE_SEQ && - (vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_MAYWRITE)) - return -EINVAL; - - file_accessed(file); - vma->vm_ops = &zonefs_file_vm_ops; - - return 0; -} - -static loff_t zonefs_file_llseek(struct file *file, loff_t offset, int whence) -{ - loff_t isize = i_size_read(file_inode(file)); - - /* - * Seeks are limited to below the zone size for conventional zones - * and below the zone write pointer for sequential zones. In both - * cases, this limit is the inode size. - */ - return generic_file_llseek_size(file, offset, whence, isize, isize); -} - -static int zonefs_file_write_dio_end_io(struct kiocb *iocb, ssize_t size, - int error, unsigned int flags) -{ - struct inode *inode = file_inode(iocb->ki_filp); - struct zonefs_inode_info *zi = ZONEFS_I(inode); - - if (error) { - zonefs_io_error(inode, true); - return error; - } - - if (size && zi->i_ztype != ZONEFS_ZTYPE_CNV) { - /* - * Note that we may be seeing completions out of order, - * but that is not a problem since a write completed - * successfully necessarily means that all preceding writes - * were also successful. So we can safely increase the inode - * size to the write end location. - */ - mutex_lock(&zi->i_truncate_mutex); - if (i_size_read(inode) < iocb->ki_pos + size) { - zonefs_update_stats(inode, iocb->ki_pos + size); - zonefs_i_size_write(inode, iocb->ki_pos + size); - } - mutex_unlock(&zi->i_truncate_mutex); - } - - return 0; -} - -static const struct iomap_dio_ops zonefs_write_dio_ops = { - .end_io = zonefs_file_write_dio_end_io, -}; - -static ssize_t zonefs_file_dio_append(struct kiocb *iocb, struct iov_iter *from) -{ - struct inode *inode = file_inode(iocb->ki_filp); - struct zonefs_inode_info *zi = ZONEFS_I(inode); - struct block_device *bdev = inode->i_sb->s_bdev; - unsigned int max = bdev_max_zone_append_sectors(bdev); - struct bio *bio; - ssize_t size; - int nr_pages; - ssize_t ret; - - max = ALIGN_DOWN(max << SECTOR_SHIFT, inode->i_sb->s_blocksize); - iov_iter_truncate(from, max); - - nr_pages = iov_iter_npages(from, BIO_MAX_VECS); - if (!nr_pages) - return 0; - - bio = bio_alloc(bdev, nr_pages, - REQ_OP_ZONE_APPEND | REQ_SYNC | REQ_IDLE, GFP_NOFS); - bio->bi_iter.bi_sector = zi->i_zsector; - bio->bi_ioprio = iocb->ki_ioprio; - if (iocb_is_dsync(iocb)) - bio->bi_opf |= REQ_FUA; - - ret = bio_iov_iter_get_pages(bio, from); - if (unlikely(ret)) - goto out_release; - - size = bio->bi_iter.bi_size; - task_io_account_write(size); - - if (iocb->ki_flags & IOCB_HIPRI) - bio_set_polled(bio, iocb); - - ret = submit_bio_wait(bio); - - /* - * If the file zone was written underneath the file system, the zone - * write pointer may not be where we expect it to be, but the zone - * append write can still succeed. So check manually that we wrote where - * we intended to, that is, at zi->i_wpoffset. - */ - if (!ret) { - sector_t wpsector = - zi->i_zsector + (zi->i_wpoffset >> SECTOR_SHIFT); - - if (bio->bi_iter.bi_sector != wpsector) { - zonefs_warn(inode->i_sb, - "Corrupted write pointer %llu for zone at %llu\n", - wpsector, zi->i_zsector); - ret = -EIO; - } - } - - zonefs_file_write_dio_end_io(iocb, size, ret, 0); - trace_zonefs_file_dio_append(inode, size, ret); - -out_release: - bio_release_pages(bio, false); - bio_put(bio); - - if (ret >= 0) { - iocb->ki_pos += size; - return size; - } - - return ret; -} - -/* - * Do not exceed the LFS limits nor the file zone size. If pos is under the - * limit it becomes a short access. If it exceeds the limit, return -EFBIG. - */ -static loff_t zonefs_write_check_limits(struct file *file, loff_t pos, - loff_t count) -{ - struct inode *inode = file_inode(file); - struct zonefs_inode_info *zi = ZONEFS_I(inode); - loff_t limit = rlimit(RLIMIT_FSIZE); - loff_t max_size = zi->i_max_size; - - if (limit != RLIM_INFINITY) { - if (pos >= limit) { - send_sig(SIGXFSZ, current, 0); - return -EFBIG; - } - count = min(count, limit - pos); - } - - if (!(file->f_flags & O_LARGEFILE)) - max_size = min_t(loff_t, MAX_NON_LFS, max_size); - - if (unlikely(pos >= max_size)) - return -EFBIG; - - return min(count, max_size - pos); -} - -static ssize_t zonefs_write_checks(struct kiocb *iocb, struct iov_iter *from) -{ - struct file *file = iocb->ki_filp; - struct inode *inode = file_inode(file); - struct zonefs_inode_info *zi = ZONEFS_I(inode); - loff_t count; - - if (IS_SWAPFILE(inode)) - return -ETXTBSY; - - if (!iov_iter_count(from)) - return 0; - - if ((iocb->ki_flags & IOCB_NOWAIT) && !(iocb->ki_flags & IOCB_DIRECT)) - return -EINVAL; - - if (iocb->ki_flags & IOCB_APPEND) { - if (zi->i_ztype != ZONEFS_ZTYPE_SEQ) - return -EINVAL; - mutex_lock(&zi->i_truncate_mutex); - iocb->ki_pos = zi->i_wpoffset; - mutex_unlock(&zi->i_truncate_mutex); - } - - count = zonefs_write_check_limits(file, iocb->ki_pos, - iov_iter_count(from)); - if (count < 0) - return count; - - iov_iter_truncate(from, count); - return iov_iter_count(from); -} - -/* - * Handle direct writes. For sequential zone files, this is the only possible - * write path. For these files, check that the user is issuing writes - * sequentially from the end of the file. This code assumes that the block layer - * delivers write requests to the device in sequential order. This is always the - * case if a block IO scheduler implementing the ELEVATOR_F_ZBD_SEQ_WRITE - * elevator feature is being used (e.g. mq-deadline). The block layer always - * automatically select such an elevator for zoned block devices during the - * device initialization. - */ -static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from) -{ - struct inode *inode = file_inode(iocb->ki_filp); - struct zonefs_inode_info *zi = ZONEFS_I(inode); - struct super_block *sb = inode->i_sb; - bool sync = is_sync_kiocb(iocb); - bool append = false; - ssize_t ret, count; - - /* - * For async direct IOs to sequential zone files, refuse IOCB_NOWAIT - * as this can cause write reordering (e.g. the first aio gets EAGAIN - * on the inode lock but the second goes through but is now unaligned). - */ - if (zi->i_ztype == ZONEFS_ZTYPE_SEQ && !sync && - (iocb->ki_flags & IOCB_NOWAIT)) - return -EOPNOTSUPP; - - if (iocb->ki_flags & IOCB_NOWAIT) { - if (!inode_trylock(inode)) - return -EAGAIN; - } else { - inode_lock(inode); - } - - count = zonefs_write_checks(iocb, from); - if (count <= 0) { - ret = count; - goto inode_unlock; - } - - if ((iocb->ki_pos | count) & (sb->s_blocksize - 1)) { - ret = -EINVAL; - goto inode_unlock; - } - - /* Enforce sequential writes (append only) in sequential zones */ - if (zi->i_ztype == ZONEFS_ZTYPE_SEQ) { - mutex_lock(&zi->i_truncate_mutex); - if (iocb->ki_pos != zi->i_wpoffset) { - mutex_unlock(&zi->i_truncate_mutex); - ret = -EINVAL; - goto inode_unlock; - } - mutex_unlock(&zi->i_truncate_mutex); - append = sync; - } - - if (append) - ret = zonefs_file_dio_append(iocb, from); - else - ret = iomap_dio_rw(iocb, from, &zonefs_write_iomap_ops, - &zonefs_write_dio_ops, 0, NULL, 0); - if (zi->i_ztype == ZONEFS_ZTYPE_SEQ && - (ret > 0 || ret == -EIOCBQUEUED)) { - if (ret > 0) - count = ret; - - /* - * Update the zone write pointer offset assuming the write - * operation succeeded. If it did not, the error recovery path - * will correct it. Also do active seq file accounting. - */ - mutex_lock(&zi->i_truncate_mutex); - zi->i_wpoffset += count; - zonefs_account_active(inode); - mutex_unlock(&zi->i_truncate_mutex); - } - -inode_unlock: - inode_unlock(inode); - - return ret; -} - -static ssize_t zonefs_file_buffered_write(struct kiocb *iocb, - struct iov_iter *from) -{ - struct inode *inode = file_inode(iocb->ki_filp); - struct zonefs_inode_info *zi = ZONEFS_I(inode); - ssize_t ret; - - /* - * Direct IO writes are mandatory for sequential zone files so that the - * write IO issuing order is preserved. - */ - if (zi->i_ztype != ZONEFS_ZTYPE_CNV) - return -EIO; - - if (iocb->ki_flags & IOCB_NOWAIT) { - if (!inode_trylock(inode)) - return -EAGAIN; - } else { - inode_lock(inode); - } - - ret = zonefs_write_checks(iocb, from); - if (ret <= 0) - goto inode_unlock; - - ret = iomap_file_buffered_write(iocb, from, &zonefs_write_iomap_ops); - if (ret > 0) - iocb->ki_pos += ret; - else if (ret == -EIO) - zonefs_io_error(inode, true); - -inode_unlock: - inode_unlock(inode); - if (ret > 0) - ret = generic_write_sync(iocb, ret); - - return ret; -} - -static ssize_t zonefs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) -{ - struct inode *inode = file_inode(iocb->ki_filp); - - if (unlikely(IS_IMMUTABLE(inode))) - return -EPERM; - - if (sb_rdonly(inode->i_sb)) - return -EROFS; - - /* Write operations beyond the zone size are not allowed */ - if (iocb->ki_pos >= ZONEFS_I(inode)->i_max_size) - return -EFBIG; - - if (iocb->ki_flags & IOCB_DIRECT) { - ssize_t ret = zonefs_file_dio_write(iocb, from); - if (ret != -ENOTBLK) - return ret; - } - - return zonefs_file_buffered_write(iocb, from); -} - -static int zonefs_file_read_dio_end_io(struct kiocb *iocb, ssize_t size, - int error, unsigned int flags) -{ - if (error) { - zonefs_io_error(file_inode(iocb->ki_filp), false); - return error; - } - - return 0; -} - -static const struct iomap_dio_ops zonefs_read_dio_ops = { - .end_io = zonefs_file_read_dio_end_io, -}; - -static ssize_t zonefs_file_read_iter(struct kiocb *iocb, struct iov_iter *to) -{ - struct inode *inode = file_inode(iocb->ki_filp); - struct zonefs_inode_info *zi = ZONEFS_I(inode); - struct super_block *sb = inode->i_sb; - loff_t isize; - ssize_t ret; - - /* Offline zones cannot be read */ - if (unlikely(IS_IMMUTABLE(inode) && !(inode->i_mode & 0777))) - return -EPERM; - - if (iocb->ki_pos >= zi->i_max_size) - return 0; - - if (iocb->ki_flags & IOCB_NOWAIT) { - if (!inode_trylock_shared(inode)) - return -EAGAIN; - } else { - inode_lock_shared(inode); - } - - /* Limit read operations to written data */ - mutex_lock(&zi->i_truncate_mutex); - isize = i_size_read(inode); - if (iocb->ki_pos >= isize) { - mutex_unlock(&zi->i_truncate_mutex); - ret = 0; - goto inode_unlock; - } - iov_iter_truncate(to, isize - iocb->ki_pos); - mutex_unlock(&zi->i_truncate_mutex); - - if (iocb->ki_flags & IOCB_DIRECT) { - size_t count = iov_iter_count(to); - - if ((iocb->ki_pos | count) & (sb->s_blocksize - 1)) { - ret = -EINVAL; - goto inode_unlock; - } - file_accessed(iocb->ki_filp); - ret = iomap_dio_rw(iocb, to, &zonefs_read_iomap_ops, - &zonefs_read_dio_ops, 0, NULL, 0); - } else { - ret = generic_file_read_iter(iocb, to); - if (ret == -EIO) - zonefs_io_error(inode, false); - } - -inode_unlock: - inode_unlock_shared(inode); - - return ret; -} - -/* - * Write open accounting is done only for sequential files. - */ -static inline bool zonefs_seq_file_need_wro(struct inode *inode, - struct file *file) -{ - struct zonefs_inode_info *zi = ZONEFS_I(inode); - - if (zi->i_ztype != ZONEFS_ZTYPE_SEQ) - return false; - - if (!(file->f_mode & FMODE_WRITE)) - return false; - - return true; -} - -static int zonefs_seq_file_write_open(struct inode *inode) -{ - struct zonefs_inode_info *zi = ZONEFS_I(inode); - int ret = 0; - - mutex_lock(&zi->i_truncate_mutex); - - if (!zi->i_wr_refcnt) { - struct zonefs_sb_info *sbi = ZONEFS_SB(inode->i_sb); - unsigned int wro = atomic_inc_return(&sbi->s_wro_seq_files); - - if (sbi->s_mount_opts & ZONEFS_MNTOPT_EXPLICIT_OPEN) { - - if (sbi->s_max_wro_seq_files - && wro > sbi->s_max_wro_seq_files) { - atomic_dec(&sbi->s_wro_seq_files); - ret = -EBUSY; - goto unlock; - } - - if (i_size_read(inode) < zi->i_max_size) { - ret = zonefs_zone_mgmt(inode, REQ_OP_ZONE_OPEN); - if (ret) { - atomic_dec(&sbi->s_wro_seq_files); - goto unlock; - } - zi->i_flags |= ZONEFS_ZONE_OPEN; - zonefs_account_active(inode); - } - } - } - - zi->i_wr_refcnt++; - -unlock: - mutex_unlock(&zi->i_truncate_mutex); - - return ret; -} - -static int zonefs_file_open(struct inode *inode, struct file *file) -{ - int ret; - - ret = generic_file_open(inode, file); - if (ret) - return ret; - - if (zonefs_seq_file_need_wro(inode, file)) - return zonefs_seq_file_write_open(inode); - - return 0; -} - -static void zonefs_seq_file_write_close(struct inode *inode) -{ - struct zonefs_inode_info *zi = ZONEFS_I(inode); - struct super_block *sb = inode->i_sb; - struct zonefs_sb_info *sbi = ZONEFS_SB(sb); - int ret = 0; - - mutex_lock(&zi->i_truncate_mutex); - - zi->i_wr_refcnt--; - if (zi->i_wr_refcnt) - goto unlock; - - /* - * The file zone may not be open anymore (e.g. the file was truncated to - * its maximum size or it was fully written). For this case, we only - * need to decrement the write open count. - */ - if (zi->i_flags & ZONEFS_ZONE_OPEN) { - ret = zonefs_zone_mgmt(inode, REQ_OP_ZONE_CLOSE); - if (ret) { - __zonefs_io_error(inode, false); - /* - * Leaving zones explicitly open may lead to a state - * where most zones cannot be written (zone resources - * exhausted). So take preventive action by remounting - * read-only. - */ - if (zi->i_flags & ZONEFS_ZONE_OPEN && - !(sb->s_flags & SB_RDONLY)) { - zonefs_warn(sb, - "closing zone at %llu failed %d\n", - zi->i_zsector, ret); - zonefs_warn(sb, - "remounting filesystem read-only\n"); - sb->s_flags |= SB_RDONLY; - } - goto unlock; - } - - zi->i_flags &= ~ZONEFS_ZONE_OPEN; - zonefs_account_active(inode); - } - - atomic_dec(&sbi->s_wro_seq_files); - -unlock: - mutex_unlock(&zi->i_truncate_mutex); -} - -static int zonefs_file_release(struct inode *inode, struct file *file) -{ - /* - * If we explicitly open a zone we must close it again as well, but the - * zone management operation can fail (either due to an IO error or as - * the zone has gone offline or read-only). Make sure we don't fail the - * close(2) for user-space. - */ - if (zonefs_seq_file_need_wro(inode, file)) - zonefs_seq_file_write_close(inode); - - return 0; -} - -static const struct file_operations zonefs_file_operations = { - .open = zonefs_file_open, - .release = zonefs_file_release, - .fsync = zonefs_file_fsync, - .mmap = zonefs_file_mmap, - .llseek = zonefs_file_llseek, - .read_iter = zonefs_file_read_iter, - .write_iter = zonefs_file_write_iter, - .splice_read = generic_file_splice_read, - .splice_write = iter_file_splice_write, - .iopoll = iocb_bio_iopoll, -}; - static struct kmem_cache *zonefs_inode_cachep; static struct inode *zonefs_alloc_inode(struct super_block *sb) @@ -1408,13 +505,47 @@ static int zonefs_remount(struct super_block *sb, int *flags, char *data) return zonefs_parse_options(sb, data); } -static const struct super_operations zonefs_sops = { - .alloc_inode = zonefs_alloc_inode, - .free_inode = zonefs_free_inode, - .statfs = zonefs_statfs, - .remount_fs = zonefs_remount, - .show_options = zonefs_show_options, -}; +static int zonefs_inode_setattr(struct user_namespace *mnt_userns, + struct dentry *dentry, struct iattr *iattr) +{ + struct inode *inode = d_inode(dentry); + int ret; + + if (unlikely(IS_IMMUTABLE(inode))) + return -EPERM; + + ret = setattr_prepare(&init_user_ns, dentry, iattr); + if (ret) + return ret; + + /* + * Since files and directories cannot be created nor deleted, do not + * allow setting any write attributes on the sub-directories grouping + * files by zone type. + */ + if ((iattr->ia_valid & ATTR_MODE) && S_ISDIR(inode->i_mode) && + (iattr->ia_mode & 0222)) + return -EPERM; + + if (((iattr->ia_valid & ATTR_UID) && + !uid_eq(iattr->ia_uid, inode->i_uid)) || + ((iattr->ia_valid & ATTR_GID) && + !gid_eq(iattr->ia_gid, inode->i_gid))) { + ret = dquot_transfer(mnt_userns, inode, iattr); + if (ret) + return ret; + } + + if (iattr->ia_valid & ATTR_SIZE) { + ret = zonefs_file_truncate(inode, iattr->ia_size); + if (ret) + return ret; + } + + setattr_copy(&init_user_ns, inode, iattr); + + return 0; +} static const struct inode_operations zonefs_dir_inode_operations = { .lookup = simple_lookup, @@ -1434,6 +565,10 @@ static void zonefs_init_dir_inode(struct inode *parent, struct inode *inode, inc_nlink(parent); } +static const struct inode_operations zonefs_file_inode_operations = { + .setattr = zonefs_inode_setattr, +}; + static int zonefs_init_file_inode(struct inode *inode, struct blk_zone *zone, enum zonefs_ztype type) { @@ -1785,6 +920,14 @@ free_page: return ret; } +static const struct super_operations zonefs_sops = { + .alloc_inode = zonefs_alloc_inode, + .free_inode = zonefs_free_inode, + .statfs = zonefs_statfs, + .remount_fs = zonefs_remount, + .show_options = zonefs_show_options, +}; + /* * Check that the device is zoned. If it is, get the list of zones and create * sub-directories and files according to the device zone configuration and diff --git a/fs/zonefs/zonefs.h b/fs/zonefs/zonefs.h index 1dbe78119ff1..839ebe9afb6c 100644 --- a/fs/zonefs/zonefs.h +++ b/fs/zonefs/zonefs.h @@ -209,6 +209,28 @@ static inline struct zonefs_sb_info *ZONEFS_SB(struct super_block *sb) #define zonefs_warn(sb, format, args...) \ pr_warn("zonefs (%s) WARNING: " format, sb->s_id, ## args) +/* In super.c */ +void zonefs_account_active(struct inode *inode); +int zonefs_zone_mgmt(struct inode *inode, enum req_op op); +void zonefs_i_size_write(struct inode *inode, loff_t isize); +void zonefs_update_stats(struct inode *inode, loff_t new_isize); +void __zonefs_io_error(struct inode *inode, bool write); + +static inline void zonefs_io_error(struct inode *inode, bool write) +{ + struct zonefs_inode_info *zi = ZONEFS_I(inode); + + mutex_lock(&zi->i_truncate_mutex); + __zonefs_io_error(inode, write); + mutex_unlock(&zi->i_truncate_mutex); +} + +/* In file.c */ +extern const struct address_space_operations zonefs_file_aops; +extern const struct file_operations zonefs_file_operations; +int zonefs_file_truncate(struct inode *inode, loff_t isize); + +/* In sysfs.c */ int zonefs_sysfs_register(struct super_block *sb); void zonefs_sysfs_unregister(struct super_block *sb); int zonefs_sysfs_init(void); From 3741898b169476c17ece7962e5acf415c7041265 Mon Sep 17 00:00:00 2001 From: Damien Le Moal Date: Fri, 25 Nov 2022 11:06:20 +0900 Subject: [PATCH 016/269] zonefs: Simplify IO error handling [ Upstream commit 46a9c526eef7fb68a00321e2a9591ce5276ae92b ] Simplify zonefs_check_zone_condition() by moving the code that changes an inode access rights to the new function zonefs_inode_update_mode(). Furthermore, since on mount an inode wpoffset is always zero when zonefs_check_zone_condition() is called during an inode initialization, the "mount" boolean argument is not necessary for the readonly zone case. This argument is thus removed. zonefs_io_error_cb() is also modified to use the inode offline and zone state flags instead of checking the device zone condition. The multiple calls to zonefs_check_zone_condition() are reduced to the first call on entry, which allows removing the "warn" argument. zonefs_inode_update_mode() is also used to update an inode access rights as zonefs_io_error_cb() modifies the inode flags depending on the volume error handling mode (defined with a mount option). Since an inode mode change differs for read-only zones between mount time and IO error time, the flag ZONEFS_ZONE_INIT_MODE is used to differentiate both cases. Signed-off-by: Damien Le Moal Reviewed-by: Johannes Thumshirn Stable-dep-of: 88b170088ad2 ("zonefs: Fix error message in zonefs_file_dio_append()") Signed-off-by: Sasha Levin --- fs/zonefs/super.c | 110 ++++++++++++++++++++++++--------------------- fs/zonefs/zonefs.h | 9 ++-- 2 files changed, 64 insertions(+), 55 deletions(-) diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c index e808276b8801..6307cc95be06 100644 --- a/fs/zonefs/super.c +++ b/fs/zonefs/super.c @@ -155,48 +155,31 @@ void zonefs_update_stats(struct inode *inode, loff_t new_isize) * amount of readable data in the zone. */ static loff_t zonefs_check_zone_condition(struct inode *inode, - struct blk_zone *zone, bool warn, - bool mount) + struct blk_zone *zone) { struct zonefs_inode_info *zi = ZONEFS_I(inode); switch (zone->cond) { case BLK_ZONE_COND_OFFLINE: - /* - * Dead zone: make the inode immutable, disable all accesses - * and set the file size to 0 (zone wp set to zone start). - */ - if (warn) - zonefs_warn(inode->i_sb, "inode %lu: offline zone\n", - inode->i_ino); - inode->i_flags |= S_IMMUTABLE; - inode->i_mode &= ~0777; - zone->wp = zone->start; + zonefs_warn(inode->i_sb, "inode %lu: offline zone\n", + inode->i_ino); zi->i_flags |= ZONEFS_ZONE_OFFLINE; return 0; case BLK_ZONE_COND_READONLY: /* - * The write pointer of read-only zones is invalid. If such a - * zone is found during mount, the file size cannot be retrieved - * so we treat the zone as offline (mount == true case). - * Otherwise, keep the file size as it was when last updated - * so that the user can recover data. In both cases, writes are - * always disabled for the zone. + * The write pointer of read-only zones is invalid, so we cannot + * determine the zone wpoffset (inode size). We thus keep the + * zone wpoffset as is, which leads to an empty file + * (wpoffset == 0) on mount. For a runtime error, this keeps + * the inode size as it was when last updated so that the user + * can recover data. */ - if (warn) - zonefs_warn(inode->i_sb, "inode %lu: read-only zone\n", - inode->i_ino); - inode->i_flags |= S_IMMUTABLE; - if (mount) { - zone->cond = BLK_ZONE_COND_OFFLINE; - inode->i_mode &= ~0777; - zone->wp = zone->start; - zi->i_flags |= ZONEFS_ZONE_OFFLINE; - return 0; - } + zonefs_warn(inode->i_sb, "inode %lu: read-only zone\n", + inode->i_ino); zi->i_flags |= ZONEFS_ZONE_READONLY; - inode->i_mode &= ~0222; - return i_size_read(inode); + if (zi->i_ztype == ZONEFS_ZTYPE_CNV) + return zi->i_max_size; + return zi->i_wpoffset; case BLK_ZONE_COND_FULL: /* The write pointer of full zones is invalid. */ return zi->i_max_size; @@ -207,6 +190,30 @@ static loff_t zonefs_check_zone_condition(struct inode *inode, } } +/* + * Check a zone condition and adjust its inode access permissions for + * offline and readonly zones. + */ +static void zonefs_inode_update_mode(struct inode *inode) +{ + struct zonefs_inode_info *zi = ZONEFS_I(inode); + + if (zi->i_flags & ZONEFS_ZONE_OFFLINE) { + /* Offline zones cannot be read nor written */ + inode->i_flags |= S_IMMUTABLE; + inode->i_mode &= ~0777; + } else if (zi->i_flags & ZONEFS_ZONE_READONLY) { + /* Readonly zones cannot be written */ + inode->i_flags |= S_IMMUTABLE; + if (zi->i_flags & ZONEFS_ZONE_INIT_MODE) + inode->i_mode &= ~0777; + else + inode->i_mode &= ~0222; + } + + zi->i_flags &= ~ZONEFS_ZONE_INIT_MODE; +} + struct zonefs_ioerr_data { struct inode *inode; bool write; @@ -228,10 +235,9 @@ static int zonefs_io_error_cb(struct blk_zone *zone, unsigned int idx, * as there is no inconsistency between the inode size and the amount of * data writen in the zone (data_size). */ - data_size = zonefs_check_zone_condition(inode, zone, true, false); + data_size = zonefs_check_zone_condition(inode, zone); isize = i_size_read(inode); - if (zone->cond != BLK_ZONE_COND_OFFLINE && - zone->cond != BLK_ZONE_COND_READONLY && + if (!(zi->i_flags & (ZONEFS_ZONE_READONLY | ZONEFS_ZONE_OFFLINE)) && !err->write && isize == data_size) return 0; @@ -264,24 +270,22 @@ static int zonefs_io_error_cb(struct blk_zone *zone, unsigned int idx, * zone condition to read-only and offline respectively, as if the * condition was signaled by the hardware. */ - if (zone->cond == BLK_ZONE_COND_OFFLINE || - sbi->s_mount_opts & ZONEFS_MNTOPT_ERRORS_ZOL) { + if ((zi->i_flags & ZONEFS_ZONE_OFFLINE) || + (sbi->s_mount_opts & ZONEFS_MNTOPT_ERRORS_ZOL)) { zonefs_warn(sb, "inode %lu: read/write access disabled\n", inode->i_ino); - if (zone->cond != BLK_ZONE_COND_OFFLINE) { - zone->cond = BLK_ZONE_COND_OFFLINE; - data_size = zonefs_check_zone_condition(inode, zone, - false, false); - } - } else if (zone->cond == BLK_ZONE_COND_READONLY || - sbi->s_mount_opts & ZONEFS_MNTOPT_ERRORS_ZRO) { + if (!(zi->i_flags & ZONEFS_ZONE_OFFLINE)) + zi->i_flags |= ZONEFS_ZONE_OFFLINE; + zonefs_inode_update_mode(inode); + data_size = 0; + } else if ((zi->i_flags & ZONEFS_ZONE_READONLY) || + (sbi->s_mount_opts & ZONEFS_MNTOPT_ERRORS_ZRO)) { zonefs_warn(sb, "inode %lu: write access disabled\n", inode->i_ino); - if (zone->cond != BLK_ZONE_COND_READONLY) { - zone->cond = BLK_ZONE_COND_READONLY; - data_size = zonefs_check_zone_condition(inode, zone, - false, false); - } + if (!(zi->i_flags & ZONEFS_ZONE_READONLY)) + zi->i_flags |= ZONEFS_ZONE_READONLY; + zonefs_inode_update_mode(inode); + data_size = isize; } else if (sbi->s_mount_opts & ZONEFS_MNTOPT_ERRORS_RO && data_size > isize) { /* Do not expose garbage data */ @@ -295,8 +299,7 @@ static int zonefs_io_error_cb(struct blk_zone *zone, unsigned int idx, * close of the zone when the inode file is closed. */ if ((sbi->s_mount_opts & ZONEFS_MNTOPT_EXPLICIT_OPEN) && - (zone->cond == BLK_ZONE_COND_OFFLINE || - zone->cond == BLK_ZONE_COND_READONLY)) + (zi->i_flags & (ZONEFS_ZONE_READONLY | ZONEFS_ZONE_OFFLINE))) zi->i_flags &= ~ZONEFS_ZONE_OPEN; /* @@ -378,6 +381,7 @@ static struct inode *zonefs_alloc_inode(struct super_block *sb) inode_init_once(&zi->i_vnode); mutex_init(&zi->i_truncate_mutex); + zi->i_wpoffset = 0; zi->i_wr_refcnt = 0; zi->i_flags = 0; @@ -594,7 +598,7 @@ static int zonefs_init_file_inode(struct inode *inode, struct blk_zone *zone, zi->i_max_size = min_t(loff_t, MAX_LFS_FILESIZE, zone->capacity << SECTOR_SHIFT); - zi->i_wpoffset = zonefs_check_zone_condition(inode, zone, true, true); + zi->i_wpoffset = zonefs_check_zone_condition(inode, zone); inode->i_uid = sbi->s_uid; inode->i_gid = sbi->s_gid; @@ -605,6 +609,10 @@ static int zonefs_init_file_inode(struct inode *inode, struct blk_zone *zone, inode->i_fop = &zonefs_file_operations; inode->i_mapping->a_ops = &zonefs_file_aops; + /* Update the inode access rights depending on the zone condition */ + zi->i_flags |= ZONEFS_ZONE_INIT_MODE; + zonefs_inode_update_mode(inode); + sb->s_maxbytes = max(zi->i_max_size, sb->s_maxbytes); sbi->s_blocks += zi->i_max_size >> sb->s_blocksize_bits; sbi->s_used_blocks += zi->i_wpoffset >> sb->s_blocksize_bits; diff --git a/fs/zonefs/zonefs.h b/fs/zonefs/zonefs.h index 839ebe9afb6c..439096445ee5 100644 --- a/fs/zonefs/zonefs.h +++ b/fs/zonefs/zonefs.h @@ -39,10 +39,11 @@ static inline enum zonefs_ztype zonefs_zone_type(struct blk_zone *zone) return ZONEFS_ZTYPE_SEQ; } -#define ZONEFS_ZONE_OPEN (1U << 0) -#define ZONEFS_ZONE_ACTIVE (1U << 1) -#define ZONEFS_ZONE_OFFLINE (1U << 2) -#define ZONEFS_ZONE_READONLY (1U << 3) +#define ZONEFS_ZONE_INIT_MODE (1U << 0) +#define ZONEFS_ZONE_OPEN (1U << 1) +#define ZONEFS_ZONE_ACTIVE (1U << 2) +#define ZONEFS_ZONE_OFFLINE (1U << 3) +#define ZONEFS_ZONE_READONLY (1U << 4) /* * In-memory inode data. From 7558b249cb4e77b2cf58725895e05bbe0fd1a80e Mon Sep 17 00:00:00 2001 From: Damien Le Moal Date: Thu, 24 Nov 2022 19:43:30 +0900 Subject: [PATCH 017/269] zonefs: Reduce struct zonefs_inode_info size [ Upstream commit 34422914dc00b291d1c47dbdabe93b154c2f2b25 ] Instead of using the i_ztype field in struct zonefs_inode_info to indicate the zone type of an inode, introduce the new inode flag ZONEFS_ZONE_CNV to be set in the i_flags field of struct zonefs_inode_info to identify conventional zones. If this flag is not set, the zone of an inode is considered to be a sequential zone. The helpers zonefs_zone_is_cnv(), zonefs_zone_is_seq(), zonefs_inode_is_cnv() and zonefs_inode_is_seq() are introduced to simplify testing the zone type of a struct zonefs_inode_info and of a struct inode. Signed-off-by: Damien Le Moal Reviewed-by: Johannes Thumshirn Stable-dep-of: 88b170088ad2 ("zonefs: Fix error message in zonefs_file_dio_append()") Signed-off-by: Sasha Levin --- fs/zonefs/file.c | 35 ++++++++++++++--------------------- fs/zonefs/super.c | 12 +++++++----- fs/zonefs/zonefs.h | 24 +++++++++++++++++++++--- 3 files changed, 42 insertions(+), 29 deletions(-) diff --git a/fs/zonefs/file.c b/fs/zonefs/file.c index ece0f3959b6d..64873d31d75d 100644 --- a/fs/zonefs/file.c +++ b/fs/zonefs/file.c @@ -77,8 +77,7 @@ static int zonefs_write_iomap_begin(struct inode *inode, loff_t offset, * checked when writes are issued, so warn if we see a page writeback * operation. */ - if (WARN_ON_ONCE(zi->i_ztype == ZONEFS_ZTYPE_SEQ && - !(flags & IOMAP_DIRECT))) + if (WARN_ON_ONCE(zonefs_zone_is_seq(zi) && !(flags & IOMAP_DIRECT))) return -EIO; /* @@ -128,7 +127,7 @@ static int zonefs_write_map_blocks(struct iomap_writepage_ctx *wpc, { struct zonefs_inode_info *zi = ZONEFS_I(inode); - if (WARN_ON_ONCE(zi->i_ztype != ZONEFS_ZTYPE_CNV)) + if (WARN_ON_ONCE(zonefs_zone_is_seq(zi))) return -EIO; if (WARN_ON_ONCE(offset >= i_size_read(inode))) return -EIO; @@ -158,9 +157,8 @@ static int zonefs_swap_activate(struct swap_info_struct *sis, struct file *swap_file, sector_t *span) { struct inode *inode = file_inode(swap_file); - struct zonefs_inode_info *zi = ZONEFS_I(inode); - if (zi->i_ztype != ZONEFS_ZTYPE_CNV) { + if (zonefs_inode_is_seq(inode)) { zonefs_err(inode->i_sb, "swap file: not a conventional zone file\n"); return -EINVAL; @@ -196,7 +194,7 @@ int zonefs_file_truncate(struct inode *inode, loff_t isize) * only down to a 0 size, which is equivalent to a zone reset, and to * the maximum file size, which is equivalent to a zone finish. */ - if (zi->i_ztype != ZONEFS_ZTYPE_SEQ) + if (!zonefs_zone_is_seq(zi)) return -EPERM; if (!isize) @@ -266,7 +264,7 @@ static int zonefs_file_fsync(struct file *file, loff_t start, loff_t end, * Since only direct writes are allowed in sequential files, page cache * flush is needed only for conventional zone files. */ - if (ZONEFS_I(inode)->i_ztype == ZONEFS_ZTYPE_CNV) + if (zonefs_inode_is_cnv(inode)) ret = file_write_and_wait_range(file, start, end); if (!ret) ret = blkdev_issue_flush(inode->i_sb->s_bdev); @@ -280,7 +278,6 @@ static int zonefs_file_fsync(struct file *file, loff_t start, loff_t end, static vm_fault_t zonefs_filemap_page_mkwrite(struct vm_fault *vmf) { struct inode *inode = file_inode(vmf->vma->vm_file); - struct zonefs_inode_info *zi = ZONEFS_I(inode); vm_fault_t ret; if (unlikely(IS_IMMUTABLE(inode))) @@ -290,7 +287,7 @@ static vm_fault_t zonefs_filemap_page_mkwrite(struct vm_fault *vmf) * Sanity check: only conventional zone files can have shared * writeable mappings. */ - if (WARN_ON_ONCE(zi->i_ztype != ZONEFS_ZTYPE_CNV)) + if (zonefs_inode_is_seq(inode)) return VM_FAULT_NOPAGE; sb_start_pagefault(inode->i_sb); @@ -319,7 +316,7 @@ static int zonefs_file_mmap(struct file *file, struct vm_area_struct *vma) * mappings are possible since there are no guarantees for write * ordering between msync() and page cache writeback. */ - if (ZONEFS_I(file_inode(file))->i_ztype == ZONEFS_ZTYPE_SEQ && + if (zonefs_inode_is_seq(file_inode(file)) && (vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_MAYWRITE)) return -EINVAL; @@ -352,7 +349,7 @@ static int zonefs_file_write_dio_end_io(struct kiocb *iocb, ssize_t size, return error; } - if (size && zi->i_ztype != ZONEFS_ZTYPE_CNV) { + if (size && zonefs_zone_is_seq(zi)) { /* * Note that we may be seeing completions out of order, * but that is not a problem since a write completed @@ -491,7 +488,7 @@ static ssize_t zonefs_write_checks(struct kiocb *iocb, struct iov_iter *from) return -EINVAL; if (iocb->ki_flags & IOCB_APPEND) { - if (zi->i_ztype != ZONEFS_ZTYPE_SEQ) + if (zonefs_zone_is_cnv(zi)) return -EINVAL; mutex_lock(&zi->i_truncate_mutex); iocb->ki_pos = zi->i_wpoffset; @@ -531,8 +528,7 @@ static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from) * as this can cause write reordering (e.g. the first aio gets EAGAIN * on the inode lock but the second goes through but is now unaligned). */ - if (zi->i_ztype == ZONEFS_ZTYPE_SEQ && !sync && - (iocb->ki_flags & IOCB_NOWAIT)) + if (zonefs_zone_is_seq(zi) && !sync && (iocb->ki_flags & IOCB_NOWAIT)) return -EOPNOTSUPP; if (iocb->ki_flags & IOCB_NOWAIT) { @@ -554,7 +550,7 @@ static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from) } /* Enforce sequential writes (append only) in sequential zones */ - if (zi->i_ztype == ZONEFS_ZTYPE_SEQ) { + if (zonefs_zone_is_seq(zi)) { mutex_lock(&zi->i_truncate_mutex); if (iocb->ki_pos != zi->i_wpoffset) { mutex_unlock(&zi->i_truncate_mutex); @@ -570,7 +566,7 @@ static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from) else ret = iomap_dio_rw(iocb, from, &zonefs_write_iomap_ops, &zonefs_write_dio_ops, 0, NULL, 0); - if (zi->i_ztype == ZONEFS_ZTYPE_SEQ && + if (zonefs_zone_is_seq(zi) && (ret > 0 || ret == -EIOCBQUEUED)) { if (ret > 0) count = ret; @@ -596,14 +592,13 @@ static ssize_t zonefs_file_buffered_write(struct kiocb *iocb, struct iov_iter *from) { struct inode *inode = file_inode(iocb->ki_filp); - struct zonefs_inode_info *zi = ZONEFS_I(inode); ssize_t ret; /* * Direct IO writes are mandatory for sequential zone files so that the * write IO issuing order is preserved. */ - if (zi->i_ztype != ZONEFS_ZTYPE_CNV) + if (zonefs_inode_is_seq(inode)) return -EIO; if (iocb->ki_flags & IOCB_NOWAIT) { @@ -731,9 +726,7 @@ inode_unlock: static inline bool zonefs_seq_file_need_wro(struct inode *inode, struct file *file) { - struct zonefs_inode_info *zi = ZONEFS_I(inode); - - if (zi->i_ztype != ZONEFS_ZTYPE_SEQ) + if (zonefs_inode_is_cnv(inode)) return false; if (!(file->f_mode & FMODE_WRITE)) diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c index 6307cc95be06..a4af29dc32e7 100644 --- a/fs/zonefs/super.c +++ b/fs/zonefs/super.c @@ -37,7 +37,7 @@ void zonefs_account_active(struct inode *inode) lockdep_assert_held(&zi->i_truncate_mutex); - if (zi->i_ztype != ZONEFS_ZTYPE_SEQ) + if (zonefs_zone_is_cnv(zi)) return; /* @@ -177,14 +177,14 @@ static loff_t zonefs_check_zone_condition(struct inode *inode, zonefs_warn(inode->i_sb, "inode %lu: read-only zone\n", inode->i_ino); zi->i_flags |= ZONEFS_ZONE_READONLY; - if (zi->i_ztype == ZONEFS_ZTYPE_CNV) + if (zonefs_zone_is_cnv(zi)) return zi->i_max_size; return zi->i_wpoffset; case BLK_ZONE_COND_FULL: /* The write pointer of full zones is invalid. */ return zi->i_max_size; default: - if (zi->i_ztype == ZONEFS_ZTYPE_CNV) + if (zonefs_zone_is_cnv(zi)) return zi->i_max_size; return (zone->wp - zone->start) << SECTOR_SHIFT; } @@ -260,7 +260,7 @@ static int zonefs_io_error_cb(struct blk_zone *zone, unsigned int idx, * In all cases, warn about inode size inconsistency and handle the * IO error according to the zone condition and to the mount options. */ - if (zi->i_ztype == ZONEFS_ZTYPE_SEQ && isize != data_size) + if (zonefs_zone_is_seq(zi) && isize != data_size) zonefs_warn(sb, "inode %lu: invalid size %lld (should be %lld)\n", inode->i_ino, isize, data_size); @@ -584,7 +584,9 @@ static int zonefs_init_file_inode(struct inode *inode, struct blk_zone *zone, inode->i_ino = zone->start >> sbi->s_zone_sectors_shift; inode->i_mode = S_IFREG | sbi->s_perm; - zi->i_ztype = type; + if (type == ZONEFS_ZTYPE_CNV) + zi->i_flags |= ZONEFS_ZONE_CNV; + zi->i_zsector = zone->start; zi->i_zone_size = zone->len << SECTOR_SHIFT; if (zi->i_zone_size > bdev_zone_sectors(sb->s_bdev) << SECTOR_SHIFT && diff --git a/fs/zonefs/zonefs.h b/fs/zonefs/zonefs.h index 439096445ee5..1a225f74015a 100644 --- a/fs/zonefs/zonefs.h +++ b/fs/zonefs/zonefs.h @@ -44,6 +44,7 @@ static inline enum zonefs_ztype zonefs_zone_type(struct blk_zone *zone) #define ZONEFS_ZONE_ACTIVE (1U << 2) #define ZONEFS_ZONE_OFFLINE (1U << 3) #define ZONEFS_ZONE_READONLY (1U << 4) +#define ZONEFS_ZONE_CNV (1U << 31) /* * In-memory inode data. @@ -51,9 +52,6 @@ static inline enum zonefs_ztype zonefs_zone_type(struct blk_zone *zone) struct zonefs_inode_info { struct inode i_vnode; - /* File zone type */ - enum zonefs_ztype i_ztype; - /* File zone start sector (512B unit) */ sector_t i_zsector; @@ -91,6 +89,26 @@ static inline struct zonefs_inode_info *ZONEFS_I(struct inode *inode) return container_of(inode, struct zonefs_inode_info, i_vnode); } +static inline bool zonefs_zone_is_cnv(struct zonefs_inode_info *zi) +{ + return zi->i_flags & ZONEFS_ZONE_CNV; +} + +static inline bool zonefs_zone_is_seq(struct zonefs_inode_info *zi) +{ + return !zonefs_zone_is_cnv(zi); +} + +static inline bool zonefs_inode_is_cnv(struct inode *inode) +{ + return zonefs_zone_is_cnv(ZONEFS_I(inode)); +} + +static inline bool zonefs_inode_is_seq(struct inode *inode) +{ + return zonefs_zone_is_seq(ZONEFS_I(inode)); +} + /* * On-disk super block (block 0). */ From 81cf745f110557673c8c7f0263bd8c30165bd07b Mon Sep 17 00:00:00 2001 From: Damien Le Moal Date: Wed, 16 Nov 2022 18:15:40 +0900 Subject: [PATCH 018/269] zonefs: Separate zone information from inode information [ Upstream commit aa7f243f32e1d18036ee00d71d3ccfad70ae2121 ] In preparation for adding dynamic inode allocation, separate an inode zone information from the zonefs inode structure. The new data structure zonefs_zone is introduced to store in memory information about a zone that must be kept throughout the lifetime of the device mount. Linking between a zone file inode and its zone information is done by setting the inode i_private field to point to a struct zonefs_zone. Using the i_private pointer avoids the need for adding a pointer in struct zonefs_inode_info. Beside the vfs inode, this structure is reduced to a mutex and a write open counter. One struct zonefs_zone is created per file inode on mount. These structures are organized in an array using the new struct zonefs_zone_group data structure to represent zone groups. The zonefs_zone arrays are indexed per file number (the index of a struct zonefs_zone in its array directly gives the file number/name for that zone file inode). Signed-off-by: Damien Le Moal Reviewed-by: Johannes Thumshirn Stable-dep-of: 88b170088ad2 ("zonefs: Fix error message in zonefs_file_dio_append()") Signed-off-by: Sasha Levin --- fs/zonefs/file.c | 99 ++++---- fs/zonefs/super.c | 571 +++++++++++++++++++++++++++------------------ fs/zonefs/trace.h | 20 +- fs/zonefs/zonefs.h | 65 ++++-- 4 files changed, 450 insertions(+), 305 deletions(-) diff --git a/fs/zonefs/file.c b/fs/zonefs/file.c index 64873d31d75d..738b0e28d74b 100644 --- a/fs/zonefs/file.c +++ b/fs/zonefs/file.c @@ -29,6 +29,7 @@ static int zonefs_read_iomap_begin(struct inode *inode, loff_t offset, struct iomap *iomap, struct iomap *srcmap) { struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); struct super_block *sb = inode->i_sb; loff_t isize; @@ -46,7 +47,7 @@ static int zonefs_read_iomap_begin(struct inode *inode, loff_t offset, iomap->length = length; } else { iomap->type = IOMAP_MAPPED; - iomap->addr = (zi->i_zsector << SECTOR_SHIFT) + iomap->offset; + iomap->addr = (z->z_sector << SECTOR_SHIFT) + iomap->offset; iomap->length = isize - iomap->offset; } mutex_unlock(&zi->i_truncate_mutex); @@ -65,11 +66,12 @@ static int zonefs_write_iomap_begin(struct inode *inode, loff_t offset, struct iomap *iomap, struct iomap *srcmap) { struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); struct super_block *sb = inode->i_sb; loff_t isize; /* All write I/Os should always be within the file maximum size */ - if (WARN_ON_ONCE(offset + length > zi->i_max_size)) + if (WARN_ON_ONCE(offset + length > z->z_capacity)) return -EIO; /* @@ -77,7 +79,7 @@ static int zonefs_write_iomap_begin(struct inode *inode, loff_t offset, * checked when writes are issued, so warn if we see a page writeback * operation. */ - if (WARN_ON_ONCE(zonefs_zone_is_seq(zi) && !(flags & IOMAP_DIRECT))) + if (WARN_ON_ONCE(zonefs_zone_is_seq(z) && !(flags & IOMAP_DIRECT))) return -EIO; /* @@ -88,11 +90,11 @@ static int zonefs_write_iomap_begin(struct inode *inode, loff_t offset, mutex_lock(&zi->i_truncate_mutex); iomap->bdev = inode->i_sb->s_bdev; iomap->offset = ALIGN_DOWN(offset, sb->s_blocksize); - iomap->addr = (zi->i_zsector << SECTOR_SHIFT) + iomap->offset; + iomap->addr = (z->z_sector << SECTOR_SHIFT) + iomap->offset; isize = i_size_read(inode); if (iomap->offset >= isize) { iomap->type = IOMAP_UNWRITTEN; - iomap->length = zi->i_max_size - iomap->offset; + iomap->length = z->z_capacity - iomap->offset; } else { iomap->type = IOMAP_MAPPED; iomap->length = isize - iomap->offset; @@ -125,9 +127,9 @@ static void zonefs_readahead(struct readahead_control *rac) static int zonefs_write_map_blocks(struct iomap_writepage_ctx *wpc, struct inode *inode, loff_t offset) { - struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); - if (WARN_ON_ONCE(zonefs_zone_is_seq(zi))) + if (WARN_ON_ONCE(zonefs_zone_is_seq(z))) return -EIO; if (WARN_ON_ONCE(offset >= i_size_read(inode))) return -EIO; @@ -137,7 +139,8 @@ static int zonefs_write_map_blocks(struct iomap_writepage_ctx *wpc, offset < wpc->iomap.offset + wpc->iomap.length) return 0; - return zonefs_write_iomap_begin(inode, offset, zi->i_max_size - offset, + return zonefs_write_iomap_begin(inode, offset, + z->z_capacity - offset, IOMAP_WRITE, &wpc->iomap, NULL); } @@ -185,6 +188,7 @@ const struct address_space_operations zonefs_file_aops = { int zonefs_file_truncate(struct inode *inode, loff_t isize) { struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); loff_t old_isize; enum req_op op; int ret = 0; @@ -194,12 +198,12 @@ int zonefs_file_truncate(struct inode *inode, loff_t isize) * only down to a 0 size, which is equivalent to a zone reset, and to * the maximum file size, which is equivalent to a zone finish. */ - if (!zonefs_zone_is_seq(zi)) + if (!zonefs_zone_is_seq(z)) return -EPERM; if (!isize) op = REQ_OP_ZONE_RESET; - else if (isize == zi->i_max_size) + else if (isize == z->z_capacity) op = REQ_OP_ZONE_FINISH; else return -EPERM; @@ -216,7 +220,7 @@ int zonefs_file_truncate(struct inode *inode, loff_t isize) if (isize == old_isize) goto unlock; - ret = zonefs_zone_mgmt(inode, op); + ret = zonefs_inode_zone_mgmt(inode, op); if (ret) goto unlock; @@ -224,7 +228,7 @@ int zonefs_file_truncate(struct inode *inode, loff_t isize) * If the mount option ZONEFS_MNTOPT_EXPLICIT_OPEN is set, * take care of open zones. */ - if (zi->i_flags & ZONEFS_ZONE_OPEN) { + if (z->z_flags & ZONEFS_ZONE_OPEN) { /* * Truncating a zone to EMPTY or FULL is the equivalent of * closing the zone. For a truncation to 0, we need to @@ -234,15 +238,15 @@ int zonefs_file_truncate(struct inode *inode, loff_t isize) * the open flag. */ if (!isize) - ret = zonefs_zone_mgmt(inode, REQ_OP_ZONE_OPEN); + ret = zonefs_inode_zone_mgmt(inode, REQ_OP_ZONE_OPEN); else - zi->i_flags &= ~ZONEFS_ZONE_OPEN; + z->z_flags &= ~ZONEFS_ZONE_OPEN; } zonefs_update_stats(inode, isize); truncate_setsize(inode, isize); - zi->i_wpoffset = isize; - zonefs_account_active(inode); + z->z_wpoffset = isize; + zonefs_inode_account_active(inode); unlock: mutex_unlock(&zi->i_truncate_mutex); @@ -349,7 +353,7 @@ static int zonefs_file_write_dio_end_io(struct kiocb *iocb, ssize_t size, return error; } - if (size && zonefs_zone_is_seq(zi)) { + if (size && zonefs_inode_is_seq(inode)) { /* * Note that we may be seeing completions out of order, * but that is not a problem since a write completed @@ -375,7 +379,7 @@ static const struct iomap_dio_ops zonefs_write_dio_ops = { static ssize_t zonefs_file_dio_append(struct kiocb *iocb, struct iov_iter *from) { struct inode *inode = file_inode(iocb->ki_filp); - struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); struct block_device *bdev = inode->i_sb->s_bdev; unsigned int max = bdev_max_zone_append_sectors(bdev); struct bio *bio; @@ -392,7 +396,7 @@ static ssize_t zonefs_file_dio_append(struct kiocb *iocb, struct iov_iter *from) bio = bio_alloc(bdev, nr_pages, REQ_OP_ZONE_APPEND | REQ_SYNC | REQ_IDLE, GFP_NOFS); - bio->bi_iter.bi_sector = zi->i_zsector; + bio->bi_iter.bi_sector = z->z_sector; bio->bi_ioprio = iocb->ki_ioprio; if (iocb_is_dsync(iocb)) bio->bi_opf |= REQ_FUA; @@ -417,12 +421,12 @@ static ssize_t zonefs_file_dio_append(struct kiocb *iocb, struct iov_iter *from) */ if (!ret) { sector_t wpsector = - zi->i_zsector + (zi->i_wpoffset >> SECTOR_SHIFT); + z->z_sector + (z->z_wpoffset >> SECTOR_SHIFT); if (bio->bi_iter.bi_sector != wpsector) { zonefs_warn(inode->i_sb, "Corrupted write pointer %llu for zone at %llu\n", - wpsector, zi->i_zsector); + wpsector, z->z_sector); ret = -EIO; } } @@ -450,9 +454,9 @@ static loff_t zonefs_write_check_limits(struct file *file, loff_t pos, loff_t count) { struct inode *inode = file_inode(file); - struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); loff_t limit = rlimit(RLIMIT_FSIZE); - loff_t max_size = zi->i_max_size; + loff_t max_size = z->z_capacity; if (limit != RLIM_INFINITY) { if (pos >= limit) { @@ -476,6 +480,7 @@ static ssize_t zonefs_write_checks(struct kiocb *iocb, struct iov_iter *from) struct file *file = iocb->ki_filp; struct inode *inode = file_inode(file); struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); loff_t count; if (IS_SWAPFILE(inode)) @@ -488,10 +493,10 @@ static ssize_t zonefs_write_checks(struct kiocb *iocb, struct iov_iter *from) return -EINVAL; if (iocb->ki_flags & IOCB_APPEND) { - if (zonefs_zone_is_cnv(zi)) + if (zonefs_zone_is_cnv(z)) return -EINVAL; mutex_lock(&zi->i_truncate_mutex); - iocb->ki_pos = zi->i_wpoffset; + iocb->ki_pos = z->z_wpoffset; mutex_unlock(&zi->i_truncate_mutex); } @@ -518,6 +523,7 @@ static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from) { struct inode *inode = file_inode(iocb->ki_filp); struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); struct super_block *sb = inode->i_sb; bool sync = is_sync_kiocb(iocb); bool append = false; @@ -528,7 +534,7 @@ static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from) * as this can cause write reordering (e.g. the first aio gets EAGAIN * on the inode lock but the second goes through but is now unaligned). */ - if (zonefs_zone_is_seq(zi) && !sync && (iocb->ki_flags & IOCB_NOWAIT)) + if (zonefs_zone_is_seq(z) && !sync && (iocb->ki_flags & IOCB_NOWAIT)) return -EOPNOTSUPP; if (iocb->ki_flags & IOCB_NOWAIT) { @@ -550,9 +556,9 @@ static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from) } /* Enforce sequential writes (append only) in sequential zones */ - if (zonefs_zone_is_seq(zi)) { + if (zonefs_zone_is_seq(z)) { mutex_lock(&zi->i_truncate_mutex); - if (iocb->ki_pos != zi->i_wpoffset) { + if (iocb->ki_pos != z->z_wpoffset) { mutex_unlock(&zi->i_truncate_mutex); ret = -EINVAL; goto inode_unlock; @@ -566,7 +572,7 @@ static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from) else ret = iomap_dio_rw(iocb, from, &zonefs_write_iomap_ops, &zonefs_write_dio_ops, 0, NULL, 0); - if (zonefs_zone_is_seq(zi) && + if (zonefs_zone_is_seq(z) && (ret > 0 || ret == -EIOCBQUEUED)) { if (ret > 0) count = ret; @@ -577,8 +583,8 @@ static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from) * will correct it. Also do active seq file accounting. */ mutex_lock(&zi->i_truncate_mutex); - zi->i_wpoffset += count; - zonefs_account_active(inode); + z->z_wpoffset += count; + zonefs_inode_account_active(inode); mutex_unlock(&zi->i_truncate_mutex); } @@ -629,6 +635,7 @@ inode_unlock: static ssize_t zonefs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) { struct inode *inode = file_inode(iocb->ki_filp); + struct zonefs_zone *z = zonefs_inode_zone(inode); if (unlikely(IS_IMMUTABLE(inode))) return -EPERM; @@ -636,8 +643,8 @@ static ssize_t zonefs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) if (sb_rdonly(inode->i_sb)) return -EROFS; - /* Write operations beyond the zone size are not allowed */ - if (iocb->ki_pos >= ZONEFS_I(inode)->i_max_size) + /* Write operations beyond the zone capacity are not allowed */ + if (iocb->ki_pos >= z->z_capacity) return -EFBIG; if (iocb->ki_flags & IOCB_DIRECT) { @@ -669,6 +676,7 @@ static ssize_t zonefs_file_read_iter(struct kiocb *iocb, struct iov_iter *to) { struct inode *inode = file_inode(iocb->ki_filp); struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); struct super_block *sb = inode->i_sb; loff_t isize; ssize_t ret; @@ -677,7 +685,7 @@ static ssize_t zonefs_file_read_iter(struct kiocb *iocb, struct iov_iter *to) if (unlikely(IS_IMMUTABLE(inode) && !(inode->i_mode & 0777))) return -EPERM; - if (iocb->ki_pos >= zi->i_max_size) + if (iocb->ki_pos >= z->z_capacity) return 0; if (iocb->ki_flags & IOCB_NOWAIT) { @@ -738,6 +746,7 @@ static inline bool zonefs_seq_file_need_wro(struct inode *inode, static int zonefs_seq_file_write_open(struct inode *inode) { struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); int ret = 0; mutex_lock(&zi->i_truncate_mutex); @@ -755,14 +764,15 @@ static int zonefs_seq_file_write_open(struct inode *inode) goto unlock; } - if (i_size_read(inode) < zi->i_max_size) { - ret = zonefs_zone_mgmt(inode, REQ_OP_ZONE_OPEN); + if (i_size_read(inode) < z->z_capacity) { + ret = zonefs_inode_zone_mgmt(inode, + REQ_OP_ZONE_OPEN); if (ret) { atomic_dec(&sbi->s_wro_seq_files); goto unlock; } - zi->i_flags |= ZONEFS_ZONE_OPEN; - zonefs_account_active(inode); + z->z_flags |= ZONEFS_ZONE_OPEN; + zonefs_inode_account_active(inode); } } } @@ -792,6 +802,7 @@ static int zonefs_file_open(struct inode *inode, struct file *file) static void zonefs_seq_file_write_close(struct inode *inode) { struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); struct super_block *sb = inode->i_sb; struct zonefs_sb_info *sbi = ZONEFS_SB(sb); int ret = 0; @@ -807,8 +818,8 @@ static void zonefs_seq_file_write_close(struct inode *inode) * its maximum size or it was fully written). For this case, we only * need to decrement the write open count. */ - if (zi->i_flags & ZONEFS_ZONE_OPEN) { - ret = zonefs_zone_mgmt(inode, REQ_OP_ZONE_CLOSE); + if (z->z_flags & ZONEFS_ZONE_OPEN) { + ret = zonefs_inode_zone_mgmt(inode, REQ_OP_ZONE_CLOSE); if (ret) { __zonefs_io_error(inode, false); /* @@ -817,11 +828,11 @@ static void zonefs_seq_file_write_close(struct inode *inode) * exhausted). So take preventive action by remounting * read-only. */ - if (zi->i_flags & ZONEFS_ZONE_OPEN && + if (z->z_flags & ZONEFS_ZONE_OPEN && !(sb->s_flags & SB_RDONLY)) { zonefs_warn(sb, "closing zone at %llu failed %d\n", - zi->i_zsector, ret); + z->z_sector, ret); zonefs_warn(sb, "remounting filesystem read-only\n"); sb->s_flags |= SB_RDONLY; @@ -829,8 +840,8 @@ static void zonefs_seq_file_write_close(struct inode *inode) goto unlock; } - zi->i_flags &= ~ZONEFS_ZONE_OPEN; - zonefs_account_active(inode); + z->z_flags &= ~ZONEFS_ZONE_OPEN; + zonefs_inode_account_active(inode); } atomic_dec(&sbi->s_wro_seq_files); diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c index a4af29dc32e7..270ded209dde 100644 --- a/fs/zonefs/super.c +++ b/fs/zonefs/super.c @@ -28,33 +28,47 @@ #include "trace.h" /* - * Manage the active zone count. Called with zi->i_truncate_mutex held. + * Get the name of a zone group directory. */ -void zonefs_account_active(struct inode *inode) +static const char *zonefs_zgroup_name(enum zonefs_ztype ztype) { - struct zonefs_sb_info *sbi = ZONEFS_SB(inode->i_sb); - struct zonefs_inode_info *zi = ZONEFS_I(inode); + switch (ztype) { + case ZONEFS_ZTYPE_CNV: + return "cnv"; + case ZONEFS_ZTYPE_SEQ: + return "seq"; + default: + WARN_ON_ONCE(1); + return "???"; + } +} - lockdep_assert_held(&zi->i_truncate_mutex); +/* + * Manage the active zone count. + */ +static void zonefs_account_active(struct super_block *sb, + struct zonefs_zone *z) +{ + struct zonefs_sb_info *sbi = ZONEFS_SB(sb); - if (zonefs_zone_is_cnv(zi)) + if (zonefs_zone_is_cnv(z)) return; /* * For zones that transitioned to the offline or readonly condition, * we only need to clear the active state. */ - if (zi->i_flags & (ZONEFS_ZONE_OFFLINE | ZONEFS_ZONE_READONLY)) + if (z->z_flags & (ZONEFS_ZONE_OFFLINE | ZONEFS_ZONE_READONLY)) goto out; /* * If the zone is active, that is, if it is explicitly open or * partially written, check if it was already accounted as active. */ - if ((zi->i_flags & ZONEFS_ZONE_OPEN) || - (zi->i_wpoffset > 0 && zi->i_wpoffset < zi->i_max_size)) { - if (!(zi->i_flags & ZONEFS_ZONE_ACTIVE)) { - zi->i_flags |= ZONEFS_ZONE_ACTIVE; + if ((z->z_flags & ZONEFS_ZONE_OPEN) || + (z->z_wpoffset > 0 && z->z_wpoffset < z->z_capacity)) { + if (!(z->z_flags & ZONEFS_ZONE_ACTIVE)) { + z->z_flags |= ZONEFS_ZONE_ACTIVE; atomic_inc(&sbi->s_active_seq_files); } return; @@ -62,18 +76,29 @@ void zonefs_account_active(struct inode *inode) out: /* The zone is not active. If it was, update the active count */ - if (zi->i_flags & ZONEFS_ZONE_ACTIVE) { - zi->i_flags &= ~ZONEFS_ZONE_ACTIVE; + if (z->z_flags & ZONEFS_ZONE_ACTIVE) { + z->z_flags &= ~ZONEFS_ZONE_ACTIVE; atomic_dec(&sbi->s_active_seq_files); } } -int zonefs_zone_mgmt(struct inode *inode, enum req_op op) +/* + * Manage the active zone count. Called with zi->i_truncate_mutex held. + */ +void zonefs_inode_account_active(struct inode *inode) { - struct zonefs_inode_info *zi = ZONEFS_I(inode); - int ret; + lockdep_assert_held(&ZONEFS_I(inode)->i_truncate_mutex); - lockdep_assert_held(&zi->i_truncate_mutex); + return zonefs_account_active(inode->i_sb, zonefs_inode_zone(inode)); +} + +/* + * Execute a zone management operation. + */ +static int zonefs_zone_mgmt(struct super_block *sb, + struct zonefs_zone *z, enum req_op op) +{ + int ret; /* * With ZNS drives, closing an explicitly open zone that has not been @@ -83,37 +108,45 @@ int zonefs_zone_mgmt(struct inode *inode, enum req_op op) * are exceeded, make sure that the zone does not remain active by * resetting it. */ - if (op == REQ_OP_ZONE_CLOSE && !zi->i_wpoffset) + if (op == REQ_OP_ZONE_CLOSE && !z->z_wpoffset) op = REQ_OP_ZONE_RESET; - trace_zonefs_zone_mgmt(inode, op); - ret = blkdev_zone_mgmt(inode->i_sb->s_bdev, op, zi->i_zsector, - zi->i_zone_size >> SECTOR_SHIFT, GFP_NOFS); + trace_zonefs_zone_mgmt(sb, z, op); + ret = blkdev_zone_mgmt(sb->s_bdev, op, z->z_sector, + z->z_size >> SECTOR_SHIFT, GFP_NOFS); if (ret) { - zonefs_err(inode->i_sb, + zonefs_err(sb, "Zone management operation %s at %llu failed %d\n", - blk_op_str(op), zi->i_zsector, ret); + blk_op_str(op), z->z_sector, ret); return ret; } return 0; } +int zonefs_inode_zone_mgmt(struct inode *inode, enum req_op op) +{ + lockdep_assert_held(&ZONEFS_I(inode)->i_truncate_mutex); + + return zonefs_zone_mgmt(inode->i_sb, zonefs_inode_zone(inode), op); +} + void zonefs_i_size_write(struct inode *inode, loff_t isize) { - struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); i_size_write(inode, isize); + /* * A full zone is no longer open/active and does not need * explicit closing. */ - if (isize >= zi->i_max_size) { + if (isize >= z->z_capacity) { struct zonefs_sb_info *sbi = ZONEFS_SB(inode->i_sb); - if (zi->i_flags & ZONEFS_ZONE_ACTIVE) + if (z->z_flags & ZONEFS_ZONE_ACTIVE) atomic_dec(&sbi->s_active_seq_files); - zi->i_flags &= ~(ZONEFS_ZONE_OPEN | ZONEFS_ZONE_ACTIVE); + z->z_flags &= ~(ZONEFS_ZONE_OPEN | ZONEFS_ZONE_ACTIVE); } } @@ -150,20 +183,18 @@ void zonefs_update_stats(struct inode *inode, loff_t new_isize) } /* - * Check a zone condition and adjust its file inode access permissions for - * offline and readonly zones. Return the inode size corresponding to the - * amount of readable data in the zone. + * Check a zone condition. Return the amount of written (and still readable) + * data in the zone. */ -static loff_t zonefs_check_zone_condition(struct inode *inode, +static loff_t zonefs_check_zone_condition(struct super_block *sb, + struct zonefs_zone *z, struct blk_zone *zone) { - struct zonefs_inode_info *zi = ZONEFS_I(inode); - switch (zone->cond) { case BLK_ZONE_COND_OFFLINE: - zonefs_warn(inode->i_sb, "inode %lu: offline zone\n", - inode->i_ino); - zi->i_flags |= ZONEFS_ZONE_OFFLINE; + zonefs_warn(sb, "Zone %llu: offline zone\n", + z->z_sector); + z->z_flags |= ZONEFS_ZONE_OFFLINE; return 0; case BLK_ZONE_COND_READONLY: /* @@ -174,18 +205,18 @@ static loff_t zonefs_check_zone_condition(struct inode *inode, * the inode size as it was when last updated so that the user * can recover data. */ - zonefs_warn(inode->i_sb, "inode %lu: read-only zone\n", - inode->i_ino); - zi->i_flags |= ZONEFS_ZONE_READONLY; - if (zonefs_zone_is_cnv(zi)) - return zi->i_max_size; - return zi->i_wpoffset; + zonefs_warn(sb, "Zone %llu: read-only zone\n", + z->z_sector); + z->z_flags |= ZONEFS_ZONE_READONLY; + if (zonefs_zone_is_cnv(z)) + return z->z_capacity; + return z->z_wpoffset; case BLK_ZONE_COND_FULL: /* The write pointer of full zones is invalid. */ - return zi->i_max_size; + return z->z_capacity; default: - if (zonefs_zone_is_cnv(zi)) - return zi->i_max_size; + if (zonefs_zone_is_cnv(z)) + return z->z_capacity; return (zone->wp - zone->start) << SECTOR_SHIFT; } } @@ -196,22 +227,22 @@ static loff_t zonefs_check_zone_condition(struct inode *inode, */ static void zonefs_inode_update_mode(struct inode *inode) { - struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); - if (zi->i_flags & ZONEFS_ZONE_OFFLINE) { + if (z->z_flags & ZONEFS_ZONE_OFFLINE) { /* Offline zones cannot be read nor written */ inode->i_flags |= S_IMMUTABLE; inode->i_mode &= ~0777; - } else if (zi->i_flags & ZONEFS_ZONE_READONLY) { + } else if (z->z_flags & ZONEFS_ZONE_READONLY) { /* Readonly zones cannot be written */ inode->i_flags |= S_IMMUTABLE; - if (zi->i_flags & ZONEFS_ZONE_INIT_MODE) + if (z->z_flags & ZONEFS_ZONE_INIT_MODE) inode->i_mode &= ~0777; else inode->i_mode &= ~0222; } - zi->i_flags &= ~ZONEFS_ZONE_INIT_MODE; + z->z_flags &= ~ZONEFS_ZONE_INIT_MODE; } struct zonefs_ioerr_data { @@ -224,7 +255,7 @@ static int zonefs_io_error_cb(struct blk_zone *zone, unsigned int idx, { struct zonefs_ioerr_data *err = data; struct inode *inode = err->inode; - struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); struct super_block *sb = inode->i_sb; struct zonefs_sb_info *sbi = ZONEFS_SB(sb); loff_t isize, data_size; @@ -235,9 +266,9 @@ static int zonefs_io_error_cb(struct blk_zone *zone, unsigned int idx, * as there is no inconsistency between the inode size and the amount of * data writen in the zone (data_size). */ - data_size = zonefs_check_zone_condition(inode, zone); + data_size = zonefs_check_zone_condition(sb, z, zone); isize = i_size_read(inode); - if (!(zi->i_flags & (ZONEFS_ZONE_READONLY | ZONEFS_ZONE_OFFLINE)) && + if (!(z->z_flags & (ZONEFS_ZONE_READONLY | ZONEFS_ZONE_OFFLINE)) && !err->write && isize == data_size) return 0; @@ -260,8 +291,9 @@ static int zonefs_io_error_cb(struct blk_zone *zone, unsigned int idx, * In all cases, warn about inode size inconsistency and handle the * IO error according to the zone condition and to the mount options. */ - if (zonefs_zone_is_seq(zi) && isize != data_size) - zonefs_warn(sb, "inode %lu: invalid size %lld (should be %lld)\n", + if (zonefs_zone_is_seq(z) && isize != data_size) + zonefs_warn(sb, + "inode %lu: invalid size %lld (should be %lld)\n", inode->i_ino, isize, data_size); /* @@ -270,20 +302,20 @@ static int zonefs_io_error_cb(struct blk_zone *zone, unsigned int idx, * zone condition to read-only and offline respectively, as if the * condition was signaled by the hardware. */ - if ((zi->i_flags & ZONEFS_ZONE_OFFLINE) || + if ((z->z_flags & ZONEFS_ZONE_OFFLINE) || (sbi->s_mount_opts & ZONEFS_MNTOPT_ERRORS_ZOL)) { zonefs_warn(sb, "inode %lu: read/write access disabled\n", inode->i_ino); - if (!(zi->i_flags & ZONEFS_ZONE_OFFLINE)) - zi->i_flags |= ZONEFS_ZONE_OFFLINE; + if (!(z->z_flags & ZONEFS_ZONE_OFFLINE)) + z->z_flags |= ZONEFS_ZONE_OFFLINE; zonefs_inode_update_mode(inode); data_size = 0; - } else if ((zi->i_flags & ZONEFS_ZONE_READONLY) || + } else if ((z->z_flags & ZONEFS_ZONE_READONLY) || (sbi->s_mount_opts & ZONEFS_MNTOPT_ERRORS_ZRO)) { zonefs_warn(sb, "inode %lu: write access disabled\n", inode->i_ino); - if (!(zi->i_flags & ZONEFS_ZONE_READONLY)) - zi->i_flags |= ZONEFS_ZONE_READONLY; + if (!(z->z_flags & ZONEFS_ZONE_READONLY)) + z->z_flags |= ZONEFS_ZONE_READONLY; zonefs_inode_update_mode(inode); data_size = isize; } else if (sbi->s_mount_opts & ZONEFS_MNTOPT_ERRORS_RO && @@ -299,8 +331,8 @@ static int zonefs_io_error_cb(struct blk_zone *zone, unsigned int idx, * close of the zone when the inode file is closed. */ if ((sbi->s_mount_opts & ZONEFS_MNTOPT_EXPLICIT_OPEN) && - (zi->i_flags & (ZONEFS_ZONE_READONLY | ZONEFS_ZONE_OFFLINE))) - zi->i_flags &= ~ZONEFS_ZONE_OPEN; + (z->z_flags & (ZONEFS_ZONE_READONLY | ZONEFS_ZONE_OFFLINE))) + z->z_flags &= ~ZONEFS_ZONE_OPEN; /* * If error=remount-ro was specified, any error result in remounting @@ -317,8 +349,8 @@ static int zonefs_io_error_cb(struct blk_zone *zone, unsigned int idx, */ zonefs_update_stats(inode, data_size); zonefs_i_size_write(inode, data_size); - zi->i_wpoffset = data_size; - zonefs_account_active(inode); + z->z_wpoffset = data_size; + zonefs_inode_account_active(inode); return 0; } @@ -332,7 +364,7 @@ static int zonefs_io_error_cb(struct blk_zone *zone, unsigned int idx, */ void __zonefs_io_error(struct inode *inode, bool write) { - struct zonefs_inode_info *zi = ZONEFS_I(inode); + struct zonefs_zone *z = zonefs_inode_zone(inode); struct super_block *sb = inode->i_sb; struct zonefs_sb_info *sbi = ZONEFS_SB(sb); unsigned int noio_flag; @@ -348,8 +380,8 @@ void __zonefs_io_error(struct inode *inode, bool write) * files with aggregated conventional zones, for which the inode zone * size is always larger than the device zone size. */ - if (zi->i_zone_size > bdev_zone_sectors(sb->s_bdev)) - nr_zones = zi->i_zone_size >> + if (z->z_size > bdev_zone_sectors(sb->s_bdev)) + nr_zones = z->z_size >> (sbi->s_zone_sectors_shift + SECTOR_SHIFT); /* @@ -361,7 +393,7 @@ void __zonefs_io_error(struct inode *inode, bool write) * the GFP_NOIO context avoids both problems. */ noio_flag = memalloc_noio_save(); - ret = blkdev_report_zones(sb->s_bdev, zi->i_zsector, nr_zones, + ret = blkdev_report_zones(sb->s_bdev, z->z_sector, nr_zones, zonefs_io_error_cb, &err); if (ret != nr_zones) zonefs_err(sb, "Get inode %lu zone information failed %d\n", @@ -381,9 +413,7 @@ static struct inode *zonefs_alloc_inode(struct super_block *sb) inode_init_once(&zi->i_vnode); mutex_init(&zi->i_truncate_mutex); - zi->i_wpoffset = 0; zi->i_wr_refcnt = 0; - zi->i_flags = 0; return &zi->i_vnode; } @@ -416,8 +446,8 @@ static int zonefs_statfs(struct dentry *dentry, struct kstatfs *buf) buf->f_bavail = buf->f_bfree; for (t = 0; t < ZONEFS_ZTYPE_MAX; t++) { - if (sbi->s_nr_files[t]) - buf->f_files += sbi->s_nr_files[t] + 1; + if (sbi->s_zgroup[t].g_nr_zones) + buf->f_files += sbi->s_zgroup[t].g_nr_zones + 1; } buf->f_ffree = 0; @@ -557,11 +587,11 @@ static const struct inode_operations zonefs_dir_inode_operations = { }; static void zonefs_init_dir_inode(struct inode *parent, struct inode *inode, - enum zonefs_ztype type) + enum zonefs_ztype ztype) { struct super_block *sb = parent->i_sb; - inode->i_ino = bdev_nr_zones(sb->s_bdev) + type + 1; + inode->i_ino = bdev_nr_zones(sb->s_bdev) + ztype + 1; inode_init_owner(&init_user_ns, inode, parent, S_IFDIR | 0555); inode->i_op = &zonefs_dir_inode_operations; inode->i_fop = &simple_dir_operations; @@ -573,79 +603,34 @@ static const struct inode_operations zonefs_file_inode_operations = { .setattr = zonefs_inode_setattr, }; -static int zonefs_init_file_inode(struct inode *inode, struct blk_zone *zone, - enum zonefs_ztype type) +static void zonefs_init_file_inode(struct inode *inode, + struct zonefs_zone *z) { struct super_block *sb = inode->i_sb; struct zonefs_sb_info *sbi = ZONEFS_SB(sb); - struct zonefs_inode_info *zi = ZONEFS_I(inode); - int ret = 0; - inode->i_ino = zone->start >> sbi->s_zone_sectors_shift; + inode->i_private = z; + + inode->i_ino = z->z_sector >> sbi->s_zone_sectors_shift; inode->i_mode = S_IFREG | sbi->s_perm; - - if (type == ZONEFS_ZTYPE_CNV) - zi->i_flags |= ZONEFS_ZONE_CNV; - - zi->i_zsector = zone->start; - zi->i_zone_size = zone->len << SECTOR_SHIFT; - if (zi->i_zone_size > bdev_zone_sectors(sb->s_bdev) << SECTOR_SHIFT && - !(sbi->s_features & ZONEFS_F_AGGRCNV)) { - zonefs_err(sb, - "zone size %llu doesn't match device's zone sectors %llu\n", - zi->i_zone_size, - bdev_zone_sectors(sb->s_bdev) << SECTOR_SHIFT); - return -EINVAL; - } - - zi->i_max_size = min_t(loff_t, MAX_LFS_FILESIZE, - zone->capacity << SECTOR_SHIFT); - zi->i_wpoffset = zonefs_check_zone_condition(inode, zone); - inode->i_uid = sbi->s_uid; inode->i_gid = sbi->s_gid; - inode->i_size = zi->i_wpoffset; - inode->i_blocks = zi->i_max_size >> SECTOR_SHIFT; + inode->i_size = z->z_wpoffset; + inode->i_blocks = z->z_capacity >> SECTOR_SHIFT; inode->i_op = &zonefs_file_inode_operations; inode->i_fop = &zonefs_file_operations; inode->i_mapping->a_ops = &zonefs_file_aops; /* Update the inode access rights depending on the zone condition */ - zi->i_flags |= ZONEFS_ZONE_INIT_MODE; + z->z_flags |= ZONEFS_ZONE_INIT_MODE; zonefs_inode_update_mode(inode); - - sb->s_maxbytes = max(zi->i_max_size, sb->s_maxbytes); - sbi->s_blocks += zi->i_max_size >> sb->s_blocksize_bits; - sbi->s_used_blocks += zi->i_wpoffset >> sb->s_blocksize_bits; - - mutex_lock(&zi->i_truncate_mutex); - - /* - * For sequential zones, make sure that any open zone is closed first - * to ensure that the initial number of open zones is 0, in sync with - * the open zone accounting done when the mount option - * ZONEFS_MNTOPT_EXPLICIT_OPEN is used. - */ - if (type == ZONEFS_ZTYPE_SEQ && - (zone->cond == BLK_ZONE_COND_IMP_OPEN || - zone->cond == BLK_ZONE_COND_EXP_OPEN)) { - ret = zonefs_zone_mgmt(inode, REQ_OP_ZONE_CLOSE); - if (ret) - goto unlock; - } - - zonefs_account_active(inode); - -unlock: - mutex_unlock(&zi->i_truncate_mutex); - - return ret; } static struct dentry *zonefs_create_inode(struct dentry *parent, - const char *name, struct blk_zone *zone, - enum zonefs_ztype type) + const char *name, + struct zonefs_zone *z, + enum zonefs_ztype ztype) { struct inode *dir = d_inode(parent); struct dentry *dentry; @@ -661,15 +646,10 @@ static struct dentry *zonefs_create_inode(struct dentry *parent, goto dput; inode->i_ctime = inode->i_mtime = inode->i_atime = dir->i_ctime; - if (zone) { - ret = zonefs_init_file_inode(inode, zone, type); - if (ret) { - iput(inode); - goto dput; - } - } else { - zonefs_init_dir_inode(dir, inode, type); - } + if (z) + zonefs_init_file_inode(inode, z); + else + zonefs_init_dir_inode(dir, inode, ztype); d_add(dentry, inode); dir->i_size++; @@ -685,100 +665,51 @@ dput: struct zonefs_zone_data { struct super_block *sb; unsigned int nr_zones[ZONEFS_ZTYPE_MAX]; + sector_t cnv_zone_start; struct blk_zone *zones; }; /* - * Create a zone group and populate it with zone files. + * Create the inodes for a zone group. */ -static int zonefs_create_zgroup(struct zonefs_zone_data *zd, - enum zonefs_ztype type) +static int zonefs_create_zgroup_inodes(struct super_block *sb, + enum zonefs_ztype ztype) { - struct super_block *sb = zd->sb; struct zonefs_sb_info *sbi = ZONEFS_SB(sb); - struct blk_zone *zone, *next, *end; - const char *zgroup_name; - char *file_name; + struct zonefs_zone_group *zgroup = &sbi->s_zgroup[ztype]; struct dentry *dir, *dent; - unsigned int n = 0; - int ret; + char *file_name; + int i, ret = 0; + + if (!zgroup) + return -ENOMEM; /* If the group is empty, there is nothing to do */ - if (!zd->nr_zones[type]) + if (!zgroup->g_nr_zones) return 0; file_name = kmalloc(ZONEFS_NAME_MAX, GFP_KERNEL); if (!file_name) return -ENOMEM; - if (type == ZONEFS_ZTYPE_CNV) - zgroup_name = "cnv"; - else - zgroup_name = "seq"; - - dir = zonefs_create_inode(sb->s_root, zgroup_name, NULL, type); + dir = zonefs_create_inode(sb->s_root, zonefs_zgroup_name(ztype), + NULL, ztype); if (IS_ERR(dir)) { ret = PTR_ERR(dir); goto free; } - /* - * The first zone contains the super block: skip it. - */ - end = zd->zones + bdev_nr_zones(sb->s_bdev); - for (zone = &zd->zones[1]; zone < end; zone = next) { - - next = zone + 1; - if (zonefs_zone_type(zone) != type) - continue; - - /* - * For conventional zones, contiguous zones can be aggregated - * together to form larger files. Note that this overwrites the - * length of the first zone of the set of contiguous zones - * aggregated together. If one offline or read-only zone is - * found, assume that all zones aggregated have the same - * condition. - */ - if (type == ZONEFS_ZTYPE_CNV && - (sbi->s_features & ZONEFS_F_AGGRCNV)) { - for (; next < end; next++) { - if (zonefs_zone_type(next) != type) - break; - zone->len += next->len; - zone->capacity += next->capacity; - if (next->cond == BLK_ZONE_COND_READONLY && - zone->cond != BLK_ZONE_COND_OFFLINE) - zone->cond = BLK_ZONE_COND_READONLY; - else if (next->cond == BLK_ZONE_COND_OFFLINE) - zone->cond = BLK_ZONE_COND_OFFLINE; - } - if (zone->capacity != zone->len) { - zonefs_err(sb, "Invalid conventional zone capacity\n"); - ret = -EINVAL; - goto free; - } - } - - /* - * Use the file number within its group as file name. - */ - snprintf(file_name, ZONEFS_NAME_MAX - 1, "%u", n); - dent = zonefs_create_inode(dir, file_name, zone, type); + for (i = 0; i < zgroup->g_nr_zones; i++) { + /* Use the zone number within its group as the file name */ + snprintf(file_name, ZONEFS_NAME_MAX - 1, "%u", i); + dent = zonefs_create_inode(dir, file_name, + &zgroup->g_zones[i], ztype); if (IS_ERR(dent)) { ret = PTR_ERR(dent); - goto free; + break; } - - n++; } - zonefs_info(sb, "Zone group \"%s\" has %u file%s\n", - zgroup_name, n, n > 1 ? "s" : ""); - - sbi->s_nr_files[type] = n; - ret = 0; - free: kfree(file_name); @@ -789,21 +720,38 @@ static int zonefs_get_zone_info_cb(struct blk_zone *zone, unsigned int idx, void *data) { struct zonefs_zone_data *zd = data; + struct super_block *sb = zd->sb; + struct zonefs_sb_info *sbi = ZONEFS_SB(sb); /* - * Count the number of usable zones: the first zone at index 0 contains - * the super block and is ignored. + * We do not care about the first zone: it contains the super block + * and not exposed as a file. + */ + if (!idx) + return 0; + + /* + * Count the number of zones that will be exposed as files. + * For sequential zones, we always have as many files as zones. + * FOr conventional zones, the number of files depends on if we have + * conventional zones aggregation enabled. */ switch (zone->type) { case BLK_ZONE_TYPE_CONVENTIONAL: - zone->wp = zone->start + zone->len; - if (idx) - zd->nr_zones[ZONEFS_ZTYPE_CNV]++; + if (sbi->s_features & ZONEFS_F_AGGRCNV) { + /* One file per set of contiguous conventional zones */ + if (!(sbi->s_zgroup[ZONEFS_ZTYPE_CNV].g_nr_zones) || + zone->start != zd->cnv_zone_start) + sbi->s_zgroup[ZONEFS_ZTYPE_CNV].g_nr_zones++; + zd->cnv_zone_start = zone->start + zone->len; + } else { + /* One file per zone */ + sbi->s_zgroup[ZONEFS_ZTYPE_CNV].g_nr_zones++; + } break; case BLK_ZONE_TYPE_SEQWRITE_REQ: case BLK_ZONE_TYPE_SEQWRITE_PREF: - if (idx) - zd->nr_zones[ZONEFS_ZTYPE_SEQ]++; + sbi->s_zgroup[ZONEFS_ZTYPE_SEQ].g_nr_zones++; break; default: zonefs_err(zd->sb, "Unsupported zone type 0x%x\n", @@ -843,11 +791,173 @@ static int zonefs_get_zone_info(struct zonefs_zone_data *zd) return 0; } -static inline void zonefs_cleanup_zone_info(struct zonefs_zone_data *zd) +static inline void zonefs_free_zone_info(struct zonefs_zone_data *zd) { kvfree(zd->zones); } +/* + * Create a zone group and populate it with zone files. + */ +static int zonefs_init_zgroup(struct super_block *sb, + struct zonefs_zone_data *zd, + enum zonefs_ztype ztype) +{ + struct zonefs_sb_info *sbi = ZONEFS_SB(sb); + struct zonefs_zone_group *zgroup = &sbi->s_zgroup[ztype]; + struct blk_zone *zone, *next, *end; + struct zonefs_zone *z; + unsigned int n = 0; + int ret; + + /* Allocate the zone group. If it is empty, we have nothing to do. */ + if (!zgroup->g_nr_zones) + return 0; + + zgroup->g_zones = kvcalloc(zgroup->g_nr_zones, + sizeof(struct zonefs_zone), GFP_KERNEL); + if (!zgroup->g_zones) + return -ENOMEM; + + /* + * Initialize the zone groups using the device zone information. + * We always skip the first zone as it contains the super block + * and is not use to back a file. + */ + end = zd->zones + bdev_nr_zones(sb->s_bdev); + for (zone = &zd->zones[1]; zone < end; zone = next) { + + next = zone + 1; + if (zonefs_zone_type(zone) != ztype) + continue; + + if (WARN_ON_ONCE(n >= zgroup->g_nr_zones)) + return -EINVAL; + + /* + * For conventional zones, contiguous zones can be aggregated + * together to form larger files. Note that this overwrites the + * length of the first zone of the set of contiguous zones + * aggregated together. If one offline or read-only zone is + * found, assume that all zones aggregated have the same + * condition. + */ + if (ztype == ZONEFS_ZTYPE_CNV && + (sbi->s_features & ZONEFS_F_AGGRCNV)) { + for (; next < end; next++) { + if (zonefs_zone_type(next) != ztype) + break; + zone->len += next->len; + zone->capacity += next->capacity; + if (next->cond == BLK_ZONE_COND_READONLY && + zone->cond != BLK_ZONE_COND_OFFLINE) + zone->cond = BLK_ZONE_COND_READONLY; + else if (next->cond == BLK_ZONE_COND_OFFLINE) + zone->cond = BLK_ZONE_COND_OFFLINE; + } + } + + z = &zgroup->g_zones[n]; + if (ztype == ZONEFS_ZTYPE_CNV) + z->z_flags |= ZONEFS_ZONE_CNV; + z->z_sector = zone->start; + z->z_size = zone->len << SECTOR_SHIFT; + if (z->z_size > bdev_zone_sectors(sb->s_bdev) << SECTOR_SHIFT && + !(sbi->s_features & ZONEFS_F_AGGRCNV)) { + zonefs_err(sb, + "Invalid zone size %llu (device zone sectors %llu)\n", + z->z_size, + bdev_zone_sectors(sb->s_bdev) << SECTOR_SHIFT); + return -EINVAL; + } + + z->z_capacity = min_t(loff_t, MAX_LFS_FILESIZE, + zone->capacity << SECTOR_SHIFT); + z->z_wpoffset = zonefs_check_zone_condition(sb, z, zone); + + sb->s_maxbytes = max(z->z_capacity, sb->s_maxbytes); + sbi->s_blocks += z->z_capacity >> sb->s_blocksize_bits; + sbi->s_used_blocks += z->z_wpoffset >> sb->s_blocksize_bits; + + /* + * For sequential zones, make sure that any open zone is closed + * first to ensure that the initial number of open zones is 0, + * in sync with the open zone accounting done when the mount + * option ZONEFS_MNTOPT_EXPLICIT_OPEN is used. + */ + if (ztype == ZONEFS_ZTYPE_SEQ && + (zone->cond == BLK_ZONE_COND_IMP_OPEN || + zone->cond == BLK_ZONE_COND_EXP_OPEN)) { + ret = zonefs_zone_mgmt(sb, z, REQ_OP_ZONE_CLOSE); + if (ret) + return ret; + } + + zonefs_account_active(sb, z); + + n++; + } + + if (WARN_ON_ONCE(n != zgroup->g_nr_zones)) + return -EINVAL; + + zonefs_info(sb, "Zone group \"%s\" has %u file%s\n", + zonefs_zgroup_name(ztype), + zgroup->g_nr_zones, + zgroup->g_nr_zones > 1 ? "s" : ""); + + return 0; +} + +static void zonefs_free_zgroups(struct super_block *sb) +{ + struct zonefs_sb_info *sbi = ZONEFS_SB(sb); + enum zonefs_ztype ztype; + + if (!sbi) + return; + + for (ztype = 0; ztype < ZONEFS_ZTYPE_MAX; ztype++) { + kvfree(sbi->s_zgroup[ztype].g_zones); + sbi->s_zgroup[ztype].g_zones = NULL; + } +} + +/* + * Create a zone group and populate it with zone files. + */ +static int zonefs_init_zgroups(struct super_block *sb) +{ + struct zonefs_zone_data zd; + enum zonefs_ztype ztype; + int ret; + + /* First get the device zone information */ + memset(&zd, 0, sizeof(struct zonefs_zone_data)); + zd.sb = sb; + ret = zonefs_get_zone_info(&zd); + if (ret) + goto cleanup; + + /* Allocate and initialize the zone groups */ + for (ztype = 0; ztype < ZONEFS_ZTYPE_MAX; ztype++) { + ret = zonefs_init_zgroup(sb, &zd, ztype); + if (ret) { + zonefs_info(sb, + "Zone group \"%s\" initialization failed\n", + zonefs_zgroup_name(ztype)); + break; + } + } + +cleanup: + zonefs_free_zone_info(&zd); + if (ret) + zonefs_free_zgroups(sb); + + return ret; +} + /* * Read super block information from the device. */ @@ -945,7 +1055,6 @@ static const struct super_operations zonefs_sops = { */ static int zonefs_fill_super(struct super_block *sb, void *data, int silent) { - struct zonefs_zone_data zd; struct zonefs_sb_info *sbi; struct inode *inode; enum zonefs_ztype t; @@ -998,16 +1107,6 @@ static int zonefs_fill_super(struct super_block *sb, void *data, int silent) if (ret) return ret; - memset(&zd, 0, sizeof(struct zonefs_zone_data)); - zd.sb = sb; - ret = zonefs_get_zone_info(&zd); - if (ret) - goto cleanup; - - ret = zonefs_sysfs_register(sb); - if (ret) - goto cleanup; - zonefs_info(sb, "Mounting %u zones", bdev_nr_zones(sb->s_bdev)); if (!sbi->s_max_wro_seq_files && @@ -1018,6 +1117,11 @@ static int zonefs_fill_super(struct super_block *sb, void *data, int silent) sbi->s_mount_opts &= ~ZONEFS_MNTOPT_EXPLICIT_OPEN; } + /* Initialize the zone groups */ + ret = zonefs_init_zgroups(sb); + if (ret) + goto cleanup; + /* Create root directory inode */ ret = -ENOMEM; inode = new_inode(sb); @@ -1037,13 +1141,19 @@ static int zonefs_fill_super(struct super_block *sb, void *data, int silent) /* Create and populate files in zone groups directories */ for (t = 0; t < ZONEFS_ZTYPE_MAX; t++) { - ret = zonefs_create_zgroup(&zd, t); + ret = zonefs_create_zgroup_inodes(sb, t); if (ret) - break; + goto cleanup; } + ret = zonefs_sysfs_register(sb); + if (ret) + goto cleanup; + + return 0; + cleanup: - zonefs_cleanup_zone_info(&zd); + zonefs_free_zgroups(sb); return ret; } @@ -1062,6 +1172,7 @@ static void zonefs_kill_super(struct super_block *sb) d_genocide(sb->s_root); zonefs_sysfs_unregister(sb); + zonefs_free_zgroups(sb); kill_block_super(sb); kfree(sbi); } diff --git a/fs/zonefs/trace.h b/fs/zonefs/trace.h index 42edcfd393ed..9969db3a9c7d 100644 --- a/fs/zonefs/trace.h +++ b/fs/zonefs/trace.h @@ -20,8 +20,9 @@ #define show_dev(dev) MAJOR(dev), MINOR(dev) TRACE_EVENT(zonefs_zone_mgmt, - TP_PROTO(struct inode *inode, enum req_op op), - TP_ARGS(inode, op), + TP_PROTO(struct super_block *sb, struct zonefs_zone *z, + enum req_op op), + TP_ARGS(sb, z, op), TP_STRUCT__entry( __field(dev_t, dev) __field(ino_t, ino) @@ -30,12 +31,12 @@ TRACE_EVENT(zonefs_zone_mgmt, __field(sector_t, nr_sectors) ), TP_fast_assign( - __entry->dev = inode->i_sb->s_dev; - __entry->ino = inode->i_ino; + __entry->dev = sb->s_dev; + __entry->ino = + z->z_sector >> ZONEFS_SB(sb)->s_zone_sectors_shift; __entry->op = op; - __entry->sector = ZONEFS_I(inode)->i_zsector; - __entry->nr_sectors = - ZONEFS_I(inode)->i_zone_size >> SECTOR_SHIFT; + __entry->sector = z->z_sector; + __entry->nr_sectors = z->z_size >> SECTOR_SHIFT; ), TP_printk("bdev=(%d,%d), ino=%lu op=%s, sector=%llu, nr_sectors=%llu", show_dev(__entry->dev), (unsigned long)__entry->ino, @@ -58,9 +59,10 @@ TRACE_EVENT(zonefs_file_dio_append, TP_fast_assign( __entry->dev = inode->i_sb->s_dev; __entry->ino = inode->i_ino; - __entry->sector = ZONEFS_I(inode)->i_zsector; + __entry->sector = zonefs_inode_zone(inode)->z_sector; __entry->size = size; - __entry->wpoffset = ZONEFS_I(inode)->i_wpoffset; + __entry->wpoffset = + zonefs_inode_zone(inode)->z_wpoffset; __entry->ret = ret; ), TP_printk("bdev=(%d, %d), ino=%lu, sector=%llu, size=%zu, wpoffset=%llu, ret=%zu", diff --git a/fs/zonefs/zonefs.h b/fs/zonefs/zonefs.h index 1a225f74015a..2d626e18b141 100644 --- a/fs/zonefs/zonefs.h +++ b/fs/zonefs/zonefs.h @@ -46,24 +46,41 @@ static inline enum zonefs_ztype zonefs_zone_type(struct blk_zone *zone) #define ZONEFS_ZONE_READONLY (1U << 4) #define ZONEFS_ZONE_CNV (1U << 31) +/* + * In-memory per-file inode zone data. + */ +struct zonefs_zone { + /* Zone state flags */ + unsigned int z_flags; + + /* Zone start sector (512B unit) */ + sector_t z_sector; + + /* Zone size (bytes) */ + loff_t z_size; + + /* Zone capacity (file maximum size, bytes) */ + loff_t z_capacity; + + /* Write pointer offset in the zone (sequential zones only, bytes) */ + loff_t z_wpoffset; +}; + +/* + * In memory zone group information: all zones of a group are exposed + * as files, one file per zone. + */ +struct zonefs_zone_group { + unsigned int g_nr_zones; + struct zonefs_zone *g_zones; +}; + /* * In-memory inode data. */ struct zonefs_inode_info { struct inode i_vnode; - /* File zone start sector (512B unit) */ - sector_t i_zsector; - - /* File zone write pointer position (sequential zones only) */ - loff_t i_wpoffset; - - /* File maximum size */ - loff_t i_max_size; - - /* File zone size */ - loff_t i_zone_size; - /* * To serialise fully against both syscall and mmap based IO and * sequential file truncation, two locks are used. For serializing @@ -81,7 +98,6 @@ struct zonefs_inode_info { /* guarded by i_truncate_mutex */ unsigned int i_wr_refcnt; - unsigned int i_flags; }; static inline struct zonefs_inode_info *ZONEFS_I(struct inode *inode) @@ -89,24 +105,29 @@ static inline struct zonefs_inode_info *ZONEFS_I(struct inode *inode) return container_of(inode, struct zonefs_inode_info, i_vnode); } -static inline bool zonefs_zone_is_cnv(struct zonefs_inode_info *zi) +static inline bool zonefs_zone_is_cnv(struct zonefs_zone *z) { - return zi->i_flags & ZONEFS_ZONE_CNV; + return z->z_flags & ZONEFS_ZONE_CNV; } -static inline bool zonefs_zone_is_seq(struct zonefs_inode_info *zi) +static inline bool zonefs_zone_is_seq(struct zonefs_zone *z) { - return !zonefs_zone_is_cnv(zi); + return !zonefs_zone_is_cnv(z); +} + +static inline struct zonefs_zone *zonefs_inode_zone(struct inode *inode) +{ + return inode->i_private; } static inline bool zonefs_inode_is_cnv(struct inode *inode) { - return zonefs_zone_is_cnv(ZONEFS_I(inode)); + return zonefs_zone_is_cnv(zonefs_inode_zone(inode)); } static inline bool zonefs_inode_is_seq(struct inode *inode) { - return zonefs_zone_is_seq(ZONEFS_I(inode)); + return zonefs_zone_is_seq(zonefs_inode_zone(inode)); } /* @@ -200,7 +221,7 @@ struct zonefs_sb_info { uuid_t s_uuid; unsigned int s_zone_sectors_shift; - unsigned int s_nr_files[ZONEFS_ZTYPE_MAX]; + struct zonefs_zone_group s_zgroup[ZONEFS_ZTYPE_MAX]; loff_t s_blocks; loff_t s_used_blocks; @@ -229,8 +250,8 @@ static inline struct zonefs_sb_info *ZONEFS_SB(struct super_block *sb) pr_warn("zonefs (%s) WARNING: " format, sb->s_id, ## args) /* In super.c */ -void zonefs_account_active(struct inode *inode); -int zonefs_zone_mgmt(struct inode *inode, enum req_op op); +void zonefs_inode_account_active(struct inode *inode); +int zonefs_inode_zone_mgmt(struct inode *inode, enum req_op op); void zonefs_i_size_write(struct inode *inode, loff_t isize); void zonefs_update_stats(struct inode *inode, loff_t new_isize); void __zonefs_io_error(struct inode *inode, bool write); From fc426026c3a3bd939f1ebae31f880ecf2724cc74 Mon Sep 17 00:00:00 2001 From: Damien Le Moal Date: Mon, 20 Mar 2023 22:49:15 +0900 Subject: [PATCH 019/269] zonefs: Fix error message in zonefs_file_dio_append() [ Upstream commit 88b170088ad2c3e27086fe35769aa49f8a512564 ] Since the expected write location in a sequential file is always at the end of the file (append write), when an invalid write append location is detected in zonefs_file_dio_append(), print the invalid written location instead of the expected write location. Fixes: a608da3bd730 ("zonefs: Detect append writes at invalid locations") Cc: stable@vger.kernel.org Signed-off-by: Damien Le Moal Reviewed-by: Christoph Hellwig Reviewed-by: Johannes Thumshirn Reviewed-by: Himanshu Madhani Signed-off-by: Sasha Levin --- fs/zonefs/file.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/zonefs/file.c b/fs/zonefs/file.c index 738b0e28d74b..c71cc0fcb3ec 100644 --- a/fs/zonefs/file.c +++ b/fs/zonefs/file.c @@ -426,7 +426,7 @@ static ssize_t zonefs_file_dio_append(struct kiocb *iocb, struct iov_iter *from) if (bio->bi_iter.bi_sector != wpsector) { zonefs_warn(inode->i_sb, "Corrupted write pointer %llu for zone at %llu\n", - wpsector, z->z_sector); + bio->bi_iter.bi_sector, z->z_sector); ret = -EIO; } } From 0b0e1551ba9a8e523d9a5ef2f400cb621d997d79 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Tue, 14 Mar 2023 16:31:32 -0700 Subject: [PATCH 020/269] fsverity: don't drop pagecache at end of FS_IOC_ENABLE_VERITY [ Upstream commit a075bacde257f755bea0e53400c9f1cdd1b8e8e6 ] The full pagecache drop at the end of FS_IOC_ENABLE_VERITY is causing performance problems and is hindering adoption of fsverity. It was intended to solve a race condition where unverified pages might be left in the pagecache. But actually it doesn't solve it fully. Since the incomplete solution for this race condition has too much performance impact for it to be worth it, let's remove it for now. Fixes: 3fda4c617e84 ("fs-verity: implement FS_IOC_ENABLE_VERITY ioctl") Cc: stable@vger.kernel.org Reviewed-by: Victor Hsieh Link: https://lore.kernel.org/r/20230314235332.50270-1-ebiggers@kernel.org Signed-off-by: Eric Biggers Signed-off-by: Sasha Levin --- fs/verity/enable.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/fs/verity/enable.c b/fs/verity/enable.c index df6b499bf6a1..400c264bf893 100644 --- a/fs/verity/enable.c +++ b/fs/verity/enable.c @@ -390,25 +390,27 @@ int fsverity_ioctl_enable(struct file *filp, const void __user *uarg) goto out_drop_write; err = enable_verity(filp, &arg); - if (err) - goto out_allow_write_access; /* - * Some pages of the file may have been evicted from pagecache after - * being used in the Merkle tree construction, then read into pagecache - * again by another process reading from the file concurrently. Since - * these pages didn't undergo verification against the file digest which - * fs-verity now claims to be enforcing, we have to wipe the pagecache - * to ensure that all future reads are verified. + * We no longer drop the inode's pagecache after enabling verity. This + * used to be done to try to avoid a race condition where pages could be + * evicted after being used in the Merkle tree construction, then + * re-instantiated by a concurrent read. Such pages are unverified, and + * the backing storage could have filled them with different content, so + * they shouldn't be used to fulfill reads once verity is enabled. + * + * But, dropping the pagecache has a big performance impact, and it + * doesn't fully solve the race condition anyway. So for those reasons, + * and also because this race condition isn't very important relatively + * speaking (especially for small-ish files, where the chance of a page + * being used, evicted, *and* re-instantiated all while enabling verity + * is quite small), we no longer drop the inode's pagecache. */ - filemap_write_and_wait(inode->i_mapping); - invalidate_inode_pages2(inode->i_mapping); /* * allow_write_access() is needed to pair with deny_write_access(). * Regardless, the filesystem won't allow writing to verity files. */ -out_allow_write_access: allow_write_access(filp); out_drop_write: mnt_drop_write_file(filp); From 01f3150cc7a78cdab61796bfd76e32041ba0e629 Mon Sep 17 00:00:00 2001 From: Anders Roxell Date: Mon, 28 Nov 2022 11:43:58 +0100 Subject: [PATCH 021/269] kernel: kcsan: kcsan_test: build without structleak plugin [ Upstream commit 6fcd4267a840d0536b8e5334ad5f31e4105fce85 ] Building kcsan_test with structleak plugin enabled makes the stack frame size to grow. kernel/kcsan/kcsan_test.c:704:1: error: the frame size of 3296 bytes is larger than 2048 bytes [-Werror=frame-larger-than=] Turn off the structleak plugin checks for kcsan_test. Link: https://lkml.kernel.org/r/20221128104358.2660634-1-anders.roxell@linaro.org Signed-off-by: Anders Roxell Suggested-by: Arnd Bergmann Acked-by: Marco Elver Cc: Arnd Bergmann Cc: David Gow Cc: Jason A. Donenfeld Cc: Kees Cook Signed-off-by: Andrew Morton Stable-dep-of: 5eb39cde1e24 ("kcsan: avoid passing -g for test") Signed-off-by: Sasha Levin --- kernel/kcsan/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/kcsan/Makefile b/kernel/kcsan/Makefile index 4f35d1bced6a..8cf70f068d92 100644 --- a/kernel/kcsan/Makefile +++ b/kernel/kcsan/Makefile @@ -17,4 +17,5 @@ KCSAN_INSTRUMENT_BARRIERS_selftest.o := y obj-$(CONFIG_KCSAN_SELFTEST) += selftest.o CFLAGS_kcsan_test.o := $(CFLAGS_KCSAN) -g -fno-omit-frame-pointer +CFLAGS_kcsan_test.o += $(DISABLE_STRUCTLEAK_PLUGIN) obj-$(CONFIG_KCSAN_KUNIT_TEST) += kcsan_test.o From bae092f587592f3472f2d4ee66f1dc0ae3de3546 Mon Sep 17 00:00:00 2001 From: Marco Elver Date: Thu, 16 Mar 2023 23:47:05 +0100 Subject: [PATCH 022/269] kcsan: avoid passing -g for test [ Upstream commit 5eb39cde1e2487ba5ec1802dc5e58a77e700d99e ] Nathan reported that when building with GNU as and a version of clang that defaults to DWARF5, the assembler will complain with: Error: non-constant .uleb128 is not supported This is because `-g` defaults to the compiler debug info default. If the assembler does not support some of the directives used, the above errors occur. To fix, remove the explicit passing of `-g`. All the test wants is that stack traces print valid function names, and debug info is not required for that. (I currently cannot recall why I added the explicit `-g`.) Link: https://lkml.kernel.org/r/20230316224705.709984-2-elver@google.com Fixes: 1fe84fd4a402 ("kcsan: Add test suite") Signed-off-by: Marco Elver Reported-by: Nathan Chancellor Cc: Alexander Potapenko Cc: Dmitry Vyukov Cc: Signed-off-by: Andrew Morton Signed-off-by: Sasha Levin --- kernel/kcsan/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/kcsan/Makefile b/kernel/kcsan/Makefile index 8cf70f068d92..a45f3dfc8d14 100644 --- a/kernel/kcsan/Makefile +++ b/kernel/kcsan/Makefile @@ -16,6 +16,6 @@ obj-y := core.o debugfs.o report.o KCSAN_INSTRUMENT_BARRIERS_selftest.o := y obj-$(CONFIG_KCSAN_SELFTEST) += selftest.o -CFLAGS_kcsan_test.o := $(CFLAGS_KCSAN) -g -fno-omit-frame-pointer +CFLAGS_kcsan_test.o := $(CFLAGS_KCSAN) -fno-omit-frame-pointer CFLAGS_kcsan_test.o += $(DISABLE_STRUCTLEAK_PLUGIN) obj-$(CONFIG_KCSAN_KUNIT_TEST) += kcsan_test.o From ea34b8bcc7aec261d2bb163a80c3ff9d368fa7eb Mon Sep 17 00:00:00 2001 From: Josef Bacik Date: Wed, 1 Mar 2023 16:14:42 -0500 Subject: [PATCH 023/269] btrfs: rename BTRFS_FS_NO_OVERCOMMIT to BTRFS_FS_ACTIVE_ZONE_TRACKING [ Upstream commit bf1f1fec2724a33b67ec12032402ea75f2a83622 ] This flag only gets set when we're doing active zone tracking, and we're going to need to use this flag for things related to this behavior. Rename the flag to represent what it actually means for the file system so it can be used in other ways and still make sense. Reviewed-by: Naohiro Aota Reviewed-by: Johannes Thumshirn Reviewed-by: Anand Jain Signed-off-by: Josef Bacik Reviewed-by: David Sterba Signed-off-by: David Sterba Signed-off-by: Sasha Levin --- fs/btrfs/ctree.h | 7 ++----- fs/btrfs/space-info.c | 2 +- fs/btrfs/zoned.c | 3 +-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index a3febabacec0..3bcef0c4d6fc 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h @@ -590,11 +590,8 @@ enum { /* Indicate we have to finish a zone to do next allocation. */ BTRFS_FS_NEED_ZONE_FINISH, - /* - * Indicate metadata over-commit is disabled. This is set when active - * zone tracking is needed. - */ - BTRFS_FS_NO_OVERCOMMIT, + /* This is set when active zone tracking is needed. */ + BTRFS_FS_ACTIVE_ZONE_TRACKING, #if BITS_PER_LONG == 32 /* Indicate if we have error/warn message printed on 32bit systems */ diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c index 65c010159fb5..c7642c00a65d 100644 --- a/fs/btrfs/space-info.c +++ b/fs/btrfs/space-info.c @@ -404,7 +404,7 @@ int btrfs_can_overcommit(struct btrfs_fs_info *fs_info, return 0; used = btrfs_space_info_used(space_info, true); - if (test_bit(BTRFS_FS_NO_OVERCOMMIT, &fs_info->flags) && + if (test_bit(BTRFS_FS_ACTIVE_ZONE_TRACKING, &fs_info->flags) && (space_info->flags & BTRFS_BLOCK_GROUP_METADATA)) avail = 0; else diff --git a/fs/btrfs/zoned.c b/fs/btrfs/zoned.c index 1b72004136ef..0d88cc46ac5d 100644 --- a/fs/btrfs/zoned.c +++ b/fs/btrfs/zoned.c @@ -538,8 +538,7 @@ int btrfs_get_dev_zone_info(struct btrfs_device *device, bool populate_cache) } atomic_set(&zone_info->active_zones_left, max_active_zones - nactive); - /* Overcommit does not work well with active zone tacking. */ - set_bit(BTRFS_FS_NO_OVERCOMMIT, &fs_info->flags); + set_bit(BTRFS_FS_ACTIVE_ZONE_TRACKING, &fs_info->flags); } /* Validate superblock log */ From 64621e4607f48254c27b9a0caa62ee4ada243466 Mon Sep 17 00:00:00 2001 From: Naohiro Aota Date: Mon, 13 Mar 2023 16:06:13 +0900 Subject: [PATCH 024/269] btrfs: zoned: count fresh BG region as zone unusable [ Upstream commit fa2068d7e922b434eba5bfb0131e6d39febfdb48 ] The naming of space_info->active_total_bytes is misleading. It counts not only active block groups but also full ones which are previously active but now inactive. That confusion results in a bug not counting the full BGs into active_total_bytes on mount time. For a background, there are three kinds of block groups in terms of activation. 1. Block groups never activated 2. Block groups currently active 3. Block groups previously active and currently inactive (due to fully written or zone finish) What we really wanted to exclude from "total_bytes" is the total size of BGs #1. They seem empty and allocatable but since they are not activated, we cannot rely on them to do the space reservation. And, since BGs #1 never get activated, they should have no "used", "reserved" and "pinned" bytes. OTOH, BGs #3 can be counted in the "total", since they are already full we cannot allocate from them anyway. For them, "total_bytes == used + reserved + pinned + zone_unusable" should hold. Tracking #2 and #3 as "active_total_bytes" (current implementation) is confusing. And, tracking #1 and subtract that properly from "total_bytes" every time you need space reservation is cumbersome. Instead, we can count the whole region of a newly allocated block group as zone_unusable. Then, once that block group is activated, release [0 .. zone_capacity] from the zone_unusable counters. With this, we can eliminate the confusing ->active_total_bytes and the code will be common among regular and the zoned mode. Also, no additional counter is needed with this approach. Fixes: 6a921de58992 ("btrfs: zoned: introduce space_info->active_total_bytes") CC: stable@vger.kernel.org # 6.1+ Signed-off-by: Naohiro Aota Signed-off-by: David Sterba Signed-off-by: Sasha Levin --- fs/btrfs/free-space-cache.c | 8 +++++++- fs/btrfs/zoned.c | 24 +++++++++++++++++++----- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c index f4023651dd68..6a8f2bd350f4 100644 --- a/fs/btrfs/free-space-cache.c +++ b/fs/btrfs/free-space-cache.c @@ -2684,8 +2684,13 @@ static int __btrfs_add_free_space_zoned(struct btrfs_block_group *block_group, bg_reclaim_threshold = READ_ONCE(sinfo->bg_reclaim_threshold); spin_lock(&ctl->tree_lock); + /* Count initial region as zone_unusable until it gets activated. */ if (!used) to_free = size; + else if (initial && + test_bit(BTRFS_FS_ACTIVE_ZONE_TRACKING, &block_group->fs_info->flags) && + (block_group->flags & (BTRFS_BLOCK_GROUP_METADATA | BTRFS_BLOCK_GROUP_SYSTEM))) + to_free = 0; else if (initial) to_free = block_group->zone_capacity; else if (offset >= block_group->alloc_offset) @@ -2713,7 +2718,8 @@ static int __btrfs_add_free_space_zoned(struct btrfs_block_group *block_group, reclaimable_unusable = block_group->zone_unusable - (block_group->length - block_group->zone_capacity); /* All the region is now unusable. Mark it as unused and reclaim */ - if (block_group->zone_unusable == block_group->length) { + if (block_group->zone_unusable == block_group->length && + block_group->alloc_offset) { btrfs_mark_bg_unused(block_group); } else if (bg_reclaim_threshold && reclaimable_unusable >= diff --git a/fs/btrfs/zoned.c b/fs/btrfs/zoned.c index 0d88cc46ac5d..e97c5a1ac95d 100644 --- a/fs/btrfs/zoned.c +++ b/fs/btrfs/zoned.c @@ -1575,9 +1575,19 @@ void btrfs_calc_zone_unusable(struct btrfs_block_group *cache) return; WARN_ON(cache->bytes_super != 0); - unusable = (cache->alloc_offset - cache->used) + - (cache->length - cache->zone_capacity); - free = cache->zone_capacity - cache->alloc_offset; + + /* Check for block groups never get activated */ + if (test_bit(BTRFS_FS_ACTIVE_ZONE_TRACKING, &cache->fs_info->flags) && + cache->flags & (BTRFS_BLOCK_GROUP_METADATA | BTRFS_BLOCK_GROUP_SYSTEM) && + !test_bit(BLOCK_GROUP_FLAG_ZONE_IS_ACTIVE, &cache->runtime_flags) && + cache->alloc_offset == 0) { + unusable = cache->length; + free = 0; + } else { + unusable = (cache->alloc_offset - cache->used) + + (cache->length - cache->zone_capacity); + free = cache->zone_capacity - cache->alloc_offset; + } /* We only need ->free_space in ALLOC_SEQ block groups */ cache->cached = BTRFS_CACHE_FINISHED; @@ -1914,7 +1924,11 @@ bool btrfs_zone_activate(struct btrfs_block_group *block_group) /* Successfully activated all the zones */ set_bit(BLOCK_GROUP_FLAG_ZONE_IS_ACTIVE, &block_group->runtime_flags); - space_info->active_total_bytes += block_group->length; + WARN_ON(block_group->alloc_offset != 0); + if (block_group->zone_unusable == block_group->length) { + block_group->zone_unusable = block_group->length - block_group->zone_capacity; + space_info->bytes_zone_unusable -= block_group->zone_capacity; + } spin_unlock(&block_group->lock); btrfs_try_granting_tickets(fs_info, space_info); spin_unlock(&space_info->lock); @@ -2277,7 +2291,7 @@ int btrfs_zone_finish_one_bg(struct btrfs_fs_info *fs_info) u64 avail; spin_lock(&block_group->lock); - if (block_group->reserved || + if (block_group->reserved || block_group->alloc_offset == 0 || (block_group->flags & BTRFS_BLOCK_GROUP_SYSTEM)) { spin_unlock(&block_group->lock); continue; From a35f863210e8025bfd51280ad63285c70ff66a1a Mon Sep 17 00:00:00 2001 From: Siddharth Vadapalli Date: Fri, 20 Jan 2023 12:37:31 +0530 Subject: [PATCH 025/269] net: ethernet: ti: am65-cpsw/cpts: Fix CPTS release action [ Upstream commit 4ad8766cd3982744e53f107f378d2c65b76ff9a8 ] The am65_cpts_release() function is registered as a devm_action in the am65_cpts_create() function in am65-cpts driver. When the am65-cpsw driver invokes am65_cpts_create(), am65_cpts_release() is added in the set of devm actions associated with the am65-cpsw driver's device. In the event of probe failure or probe deferral, the platform_drv_probe() function invokes dev_pm_domain_detach() which powers off the CPSW and the CPSW's CPTS hardware, both of which share the same power domain. Since the am65_cpts_disable() function invoked by the am65_cpts_release() function attempts to reset the CPTS hardware by writing to its registers, the CPTS hardware is assumed to be powered on at this point. However, the hardware is powered off before the devm actions are executed. Fix this by getting rid of the devm action for am65_cpts_release() and invoking it directly on the cleanup and exit paths. Fixes: f6bd59526ca5 ("net: ethernet: ti: introduce am654 common platform time sync driver") Signed-off-by: Siddharth Vadapalli Reviewed-by: Leon Romanovsky Reviewed-by: Tony Nguyen Reviewed-by: Roger Quadros Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin --- drivers/net/ethernet/ti/am65-cpsw-nuss.c | 2 ++ drivers/net/ethernet/ti/am65-cpts.c | 15 +++++---------- drivers/net/ethernet/ti/am65-cpts.h | 5 +++++ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c index 00911e936052..8ff1c84a23ce 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c @@ -2817,6 +2817,7 @@ static int am65_cpsw_nuss_probe(struct platform_device *pdev) err_free_phylink: am65_cpsw_nuss_phylink_cleanup(common); + am65_cpts_release(common->cpts); err_of_clear: of_platform_device_destroy(common->mdio_dev, NULL); err_pm_clear: @@ -2845,6 +2846,7 @@ static int am65_cpsw_nuss_remove(struct platform_device *pdev) */ am65_cpsw_nuss_cleanup_ndev(common); am65_cpsw_nuss_phylink_cleanup(common); + am65_cpts_release(common->cpts); of_platform_device_destroy(common->mdio_dev, NULL); diff --git a/drivers/net/ethernet/ti/am65-cpts.c b/drivers/net/ethernet/ti/am65-cpts.c index e2f0fb286143..9948ac14e68d 100644 --- a/drivers/net/ethernet/ti/am65-cpts.c +++ b/drivers/net/ethernet/ti/am65-cpts.c @@ -918,14 +918,13 @@ static int am65_cpts_of_parse(struct am65_cpts *cpts, struct device_node *node) return cpts_of_mux_clk_setup(cpts, node); } -static void am65_cpts_release(void *data) +void am65_cpts_release(struct am65_cpts *cpts) { - struct am65_cpts *cpts = data; - ptp_clock_unregister(cpts->ptp_clock); am65_cpts_disable(cpts); clk_disable_unprepare(cpts->refclk); } +EXPORT_SYMBOL_GPL(am65_cpts_release); struct am65_cpts *am65_cpts_create(struct device *dev, void __iomem *regs, struct device_node *node) @@ -1003,18 +1002,12 @@ struct am65_cpts *am65_cpts_create(struct device *dev, void __iomem *regs, } cpts->phc_index = ptp_clock_index(cpts->ptp_clock); - ret = devm_add_action_or_reset(dev, am65_cpts_release, cpts); - if (ret) { - dev_err(dev, "failed to add ptpclk reset action %d", ret); - return ERR_PTR(ret); - } - ret = devm_request_threaded_irq(dev, cpts->irq, NULL, am65_cpts_interrupt, IRQF_ONESHOT, dev_name(dev), cpts); if (ret < 0) { dev_err(cpts->dev, "error attaching irq %d\n", ret); - return ERR_PTR(ret); + goto reset_ptpclk; } dev_info(dev, "CPTS ver 0x%08x, freq:%u, add_val:%u\n", @@ -1023,6 +1016,8 @@ struct am65_cpts *am65_cpts_create(struct device *dev, void __iomem *regs, return cpts; +reset_ptpclk: + am65_cpts_release(cpts); refclk_disable: clk_disable_unprepare(cpts->refclk); return ERR_PTR(ret); diff --git a/drivers/net/ethernet/ti/am65-cpts.h b/drivers/net/ethernet/ti/am65-cpts.h index cf9fbc28fd03..c0ae0117e573 100644 --- a/drivers/net/ethernet/ti/am65-cpts.h +++ b/drivers/net/ethernet/ti/am65-cpts.h @@ -18,6 +18,7 @@ struct am65_cpts_estf_cfg { }; #if IS_ENABLED(CONFIG_TI_K3_AM65_CPTS) +void am65_cpts_release(struct am65_cpts *cpts); struct am65_cpts *am65_cpts_create(struct device *dev, void __iomem *regs, struct device_node *node); int am65_cpts_phc_index(struct am65_cpts *cpts); @@ -29,6 +30,10 @@ int am65_cpts_estf_enable(struct am65_cpts *cpts, int idx, struct am65_cpts_estf_cfg *cfg); void am65_cpts_estf_disable(struct am65_cpts *cpts, int idx); #else +static inline void am65_cpts_release(struct am65_cpts *cpts) +{ +} + static inline struct am65_cpts *am65_cpts_create(struct device *dev, void __iomem *regs, struct device_node *node) From 84cfcf240f4a577733b1d98fcd2611a611612b03 Mon Sep 17 00:00:00 2001 From: Andy Chiu Date: Thu, 12 Jan 2023 04:05:57 -0500 Subject: [PATCH 026/269] riscv: ftrace: Fixup panic by disabling preemption [ Upstream commit 8547649981e6631328cd64f583667501ae385531 ] In RISCV, we must use an AUIPC + JALR pair to encode an immediate, forming a jump that jumps to an address over 4K. This may cause errors if we want to enable kernel preemption and remove dependency from patching code with stop_machine(). For example, if a task was switched out on auipc. And, if we changed the ftrace function before it was switched back, then it would jump to an address that has updated 11:0 bits mixing with previous XLEN:12 part. p: patched area performed by dynamic ftrace ftrace_prologue: p| REG_S ra, -SZREG(sp) p| auipc ra, 0x? ------------> preempted ... change ftrace function ... p| jalr -?(ra) <------------- switched back p| REG_L ra, -SZREG(sp) func: xxx ret Fixes: afc76b8b8011 ("riscv: Using PATCHABLE_FUNCTION_ENTRY instead of MCOUNT") Signed-off-by: Andy Chiu Signed-off-by: Guo Ren Link: https://lore.kernel.org/r/20230112090603.1295340-2-guoren@kernel.org Cc: stable@vger.kernel.org Signed-off-by: Palmer Dabbelt Signed-off-by: Sasha Levin --- arch/riscv/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index ae11d5647f9d..06b9b2f60b9f 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -278,7 +278,7 @@ config ARCH_RV64I select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL select HAVE_FUNCTION_GRAPH_TRACER - select HAVE_FUNCTION_TRACER if !XIP_KERNEL + select HAVE_FUNCTION_TRACER if !XIP_KERNEL && !PREEMPTION select SWIOTLB if MMU endchoice From 942100ec928cd292afc5d5cb341236d9a10f2778 Mon Sep 17 00:00:00 2001 From: Eddie James Date: Tue, 21 Feb 2023 11:03:52 +1030 Subject: [PATCH 027/269] ARM: dts: aspeed: p10bmc: Update battery node name [ Upstream commit a8cef541dd5ef9445130660008c029205c4c5aa5 ] The ADC sensor for the battery needs to be named "iio-hwmon" for compatibility with user space applications. Signed-off-by: Eddie James Link: https://lore.kernel.org/r/20230202152759.67069-1-eajames@linux.ibm.com Fixes: bf1914e2cfed ("ARM: dts: aspeed: p10bmc: Fix ADC iio-hwmon battery node name") Signed-off-by: Joel Stanley Link: https://lore.kernel.org/r/20230221003352.1218797-1-joel@jms.id.au Signed-off-by: Arnd Bergmann Signed-off-by: Sasha Levin --- arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts | 2 +- arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts b/arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts index fcc890e3ad73..f11feb98fde3 100644 --- a/arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts +++ b/arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts @@ -244,7 +244,7 @@ }; }; - iio-hwmon-battery { + iio-hwmon { compatible = "iio-hwmon"; io-channels = <&adc1 7>; }; diff --git a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts index 4879da4cdbd2..77a3a27b04e2 100644 --- a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts +++ b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts @@ -220,7 +220,7 @@ }; }; - iio-hwmon-battery { + iio-hwmon { compatible = "iio-hwmon"; io-channels = <&adc1 7>; }; From 30fff49ea686d1367ee2de0c45b436ae67a24c55 Mon Sep 17 00:00:00 2001 From: Robert Foss Date: Fri, 28 Oct 2022 14:08:05 +0200 Subject: [PATCH 028/269] drm/msm/dpu: Refactor sc7280_pp location [ Upstream commit 1a5b5372e3b0a4cc65a0cbb724b1b0859f4ac63c ] The sc7280_pp declaration is not located by the other _pp declarations, but rather hidden around the _merge_3d declarations. Let's fix this to avoid confusion. Signed-off-by: Robert Foss Reviewed-by: Dmitry Baryshkov Patchwork: https://patchwork.freedesktop.org/patch/509153/ Link: https://lore.kernel.org/r/20221028120812.339100-3-robert.foss@linaro.org Signed-off-by: Dmitry Baryshkov Stable-dep-of: 03c0c3cb22a4 ("drm/msm/dpu: correct sm8250 and sm8350 scaler") Signed-off-by: Sasha Levin --- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c index 41c93a18d5cb..bbd884c8e0cb 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c @@ -1180,6 +1180,13 @@ static const struct dpu_pingpong_cfg sm8150_pp[] = { -1), }; +static const struct dpu_pingpong_cfg sc7280_pp[] = { + PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1), + PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1), + PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1), + PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1), +}; + static struct dpu_pingpong_cfg qcm2290_pp[] = { PP_BLK("pingpong_0", PINGPONG_0, 0x70000, 0, sdm845_pp_sblk, DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), @@ -1203,13 +1210,6 @@ static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = { MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200), }; -static const struct dpu_pingpong_cfg sc7280_pp[] = { - PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1), - PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1), - PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1), - PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1), -}; - /************************************************************* * DSC sub blocks config *************************************************************/ From 3f7c4839fc041a9a4839ec40e3edccda74280d34 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Sun, 12 Feb 2023 01:12:18 +0200 Subject: [PATCH 029/269] drm/msm/dpu: correct sm8250 and sm8350 scaler [ Upstream commit 03c0c3cb22a4ff29afba1b43f0330289ea80433f ] QSEED4 is a newer variant of QSEED3LITE, which should be used on sm8250 and sm8350. Fix the DPU caps structure and used feature masks. Fixes: d21fc5dfc3df ("drm/msm/dpu1: add support for qseed3lite used on sm8250") Fixes: 0e91bcbb0016 ("drm/msm/dpu: Add SM8350 to hw catalog") Signed-off-by: Dmitry Baryshkov Reviewed-by: Abhinav Kumar Patchwork: https://patchwork.freedesktop.org/patch/522229/ Link: https://lore.kernel.org/r/20230211231259.1308718-10-dmitry.baryshkov@linaro.org Signed-off-by: Abhinav Kumar Signed-off-by: Sasha Levin --- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c index bbd884c8e0cb..b1131860ada1 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c @@ -356,7 +356,7 @@ static const struct dpu_caps sc8180x_dpu_caps = { static const struct dpu_caps sm8250_dpu_caps = { .max_mixer_width = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .max_mixer_blendstages = 0xb, - .qseed_type = DPU_SSPP_SCALER_QSEED3LITE, + .qseed_type = DPU_SSPP_SCALER_QSEED4, .smart_dma_rev = DPU_SSPP_SMART_DMA_V2, /* TODO: v2.5 */ .ubwc_version = DPU_HW_UBWC_VER_40, .has_src_split = true, @@ -855,22 +855,22 @@ static const struct dpu_sspp_cfg sc7180_sspp[] = { }; static const struct dpu_sspp_sub_blks sm8250_vig_sblk_0 = - _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED3LITE); + _VIG_SBLK("0", 5, DPU_SSPP_SCALER_QSEED4); static const struct dpu_sspp_sub_blks sm8250_vig_sblk_1 = - _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED3LITE); + _VIG_SBLK("1", 6, DPU_SSPP_SCALER_QSEED4); static const struct dpu_sspp_sub_blks sm8250_vig_sblk_2 = - _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED3LITE); + _VIG_SBLK("2", 7, DPU_SSPP_SCALER_QSEED4); static const struct dpu_sspp_sub_blks sm8250_vig_sblk_3 = - _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED3LITE); + _VIG_SBLK("3", 8, DPU_SSPP_SCALER_QSEED4); static const struct dpu_sspp_cfg sm8250_sspp[] = { - SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SM8250_MASK, + SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SC7180_MASK, sm8250_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), - SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SM8250_MASK, + SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SC7180_MASK, sm8250_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), - SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SM8250_MASK, + SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SC7180_MASK, sm8250_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), - SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SM8250_MASK, + SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SC7180_MASK, sm8250_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK, sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), From 33123ad902f312de32bc149bf0d2613ce1fbb041 Mon Sep 17 00:00:00 2001 From: Kuogee Hsieh Date: Mon, 27 Feb 2023 13:36:40 -0800 Subject: [PATCH 030/269] drm/msm/disp/dpu: fix sc7280_pp base offset [ Upstream commit ce68153edb5b36ddf87a19ed5a85131498690bbf ] At sc7280, pingpong block is used to management the dither effects to reduce distortion at panel. Currently pingpong-0 base offset is wrongly set at 0x59000. This mistake will not cause system to crash. However it will make dither not work. This patch correct sc7280 ping pong-0 block base offset. Changes in v2: -- add more details info n regrading of pingpong block at commit text Fixes: 591e34a091d1 ("drm/msm/disp/dpu1: add support for display for SC7280 target") Signed-off-by: Kuogee Hsieh Reviewed-by: Abhinav Kumar Reviewed-by: Dmitry Baryshkov Patchwork: https://patchwork.freedesktop.org/patch/524332/ Link: https://lore.kernel.org/r/1677533800-3125-1-git-send-email-quic_khsieh@quicinc.com Signed-off-by: Abhinav Kumar Signed-off-by: Sasha Levin --- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c index b1131860ada1..32a3c42ec45b 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c @@ -1181,7 +1181,7 @@ static const struct dpu_pingpong_cfg sm8150_pp[] = { }; static const struct dpu_pingpong_cfg sc7280_pp[] = { - PP_BLK("pingpong_0", PINGPONG_0, 0x59000, 0, sc7280_pp_sblk, -1, -1), + PP_BLK("pingpong_0", PINGPONG_0, 0x69000, 0, sc7280_pp_sblk, -1, -1), PP_BLK("pingpong_1", PINGPONG_1, 0x6a000, 0, sc7280_pp_sblk, -1, -1), PP_BLK("pingpong_2", PINGPONG_2, 0x6b000, 0, sc7280_pp_sblk, -1, -1), PP_BLK("pingpong_3", PINGPONG_3, 0x6c000, 0, sc7280_pp_sblk, -1, -1), From 3a4d6f959caaf5bc24779fe5846a191482df524c Mon Sep 17 00:00:00 2001 From: Sherry Sun Date: Wed, 23 Nov 2022 10:36:19 +0800 Subject: [PATCH 031/269] tty: serial: fsl_lpuart: switch to new dmaengine_terminate_* API [ Upstream commit 8682ab0eea89c300ebb120c02ead3999ca5560a8 ] Convert dmaengine_terminate_all() calls to synchronous and asynchronous versions where appropriate. Signed-off-by: Sherry Sun Link: https://lore.kernel.org/r/20221123023619.30173-1-sherry.sun@nxp.com Signed-off-by: Greg Kroah-Hartman Stable-dep-of: 1be6f2b15f90 ("tty: serial: fsl_lpuart: fix race on RX DMA shutdown") Signed-off-by: Sasha Levin --- drivers/tty/serial/fsl_lpuart.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c index c51883f34ac2..86e96696ab26 100644 --- a/drivers/tty/serial/fsl_lpuart.c +++ b/drivers/tty/serial/fsl_lpuart.c @@ -582,7 +582,7 @@ static void lpuart_flush_buffer(struct uart_port *port) sport->dma_tx_nents, DMA_TO_DEVICE); sport->dma_tx_in_progress = false; } - dmaengine_terminate_all(chan); + dmaengine_terminate_async(chan); } if (lpuart_is_32(sport)) { @@ -1333,7 +1333,7 @@ static void lpuart_dma_rx_free(struct uart_port *port) struct lpuart_port, port); struct dma_chan *chan = sport->dma_rx_chan; - dmaengine_terminate_all(chan); + dmaengine_terminate_sync(chan); dma_unmap_sg(chan->device->dev, &sport->rx_sgl, 1, DMA_FROM_DEVICE); kfree(sport->rx_ring.buf); sport->rx_ring.tail = 0; @@ -1766,7 +1766,7 @@ static void lpuart_dma_shutdown(struct lpuart_port *sport) if (wait_event_interruptible_timeout(sport->dma_wait, !sport->dma_tx_in_progress, msecs_to_jiffies(300)) <= 0) { sport->dma_tx_in_progress = false; - dmaengine_terminate_all(sport->dma_tx_chan); + dmaengine_terminate_sync(sport->dma_tx_chan); } sport->lpuart_dma_tx_use = false; } @@ -2867,7 +2867,7 @@ static int __maybe_unused lpuart_suspend(struct device *dev) if (sport->lpuart_dma_tx_use) { sport->dma_tx_in_progress = false; - dmaengine_terminate_all(sport->dma_tx_chan); + dmaengine_terminate_sync(sport->dma_tx_chan); } if (sport->port.suspended && !irq_wake) From 954fc9931f0aabf272b5674cf468affdd88d3a36 Mon Sep 17 00:00:00 2001 From: Alexander Sverdlin Date: Thu, 9 Mar 2023 14:43:02 +0100 Subject: [PATCH 032/269] tty: serial: fsl_lpuart: fix race on RX DMA shutdown [ Upstream commit 1be6f2b15f902c02e055ae0b419ca789200473c9 ] From time to time DMA completion can come in the middle of DMA shutdown: : : lpuart32_shutdown() lpuart_dma_shutdown() del_timer_sync() lpuart_dma_rx_complete() lpuart_copy_rx_to_tty() mod_timer() lpuart_dma_rx_free() When the timer fires a bit later, sport->dma_rx_desc is NULL: Unable to handle kernel NULL pointer dereference at virtual address 0000000000000004 pc : lpuart_copy_rx_to_tty+0xcc/0x5bc lr : lpuart_timer_func+0x1c/0x2c Call trace: lpuart_copy_rx_to_tty lpuart_timer_func call_timer_fn __run_timers.part.0 run_timer_softirq __do_softirq __irq_exit_rcu irq_exit handle_domain_irq gic_handle_irq call_on_irq_stack do_interrupt_handler ... To fix this fold del_timer_sync() into lpuart_dma_rx_free() after dmaengine_terminate_sync() to make sure timer will not be re-started in lpuart_copy_rx_to_tty() <= lpuart_dma_rx_complete(). Fixes: 4a8588a1cf86 ("serial: fsl_lpuart: delete timer on shutdown") Cc: stable Signed-off-by: Alexander Sverdlin Link: https://lore.kernel.org/r/20230309134302.74940-2-alexander.sverdlin@siemens.com Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/tty/serial/fsl_lpuart.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c index 86e96696ab26..cd98c04de033 100644 --- a/drivers/tty/serial/fsl_lpuart.c +++ b/drivers/tty/serial/fsl_lpuart.c @@ -1334,6 +1334,7 @@ static void lpuart_dma_rx_free(struct uart_port *port) struct dma_chan *chan = sport->dma_rx_chan; dmaengine_terminate_sync(chan); + del_timer_sync(&sport->lpuart_timer); dma_unmap_sg(chan->device->dev, &sport->rx_sgl, 1, DMA_FROM_DEVICE); kfree(sport->rx_ring.buf); sport->rx_ring.tail = 0; @@ -1757,7 +1758,6 @@ static int lpuart32_startup(struct uart_port *port) static void lpuart_dma_shutdown(struct lpuart_port *sport) { if (sport->lpuart_dma_rx_use) { - del_timer_sync(&sport->lpuart_timer); lpuart_dma_rx_free(&sport->port); sport->lpuart_dma_rx_use = false; } @@ -1917,10 +1917,8 @@ lpuart_set_termios(struct uart_port *port, struct ktermios *termios, * Since timer function acqures sport->port.lock, need to stop before * acquring same lock because otherwise del_timer_sync() can deadlock. */ - if (old && sport->lpuart_dma_rx_use) { - del_timer_sync(&sport->lpuart_timer); + if (old && sport->lpuart_dma_rx_use) lpuart_dma_rx_free(&sport->port); - } spin_lock_irqsave(&sport->port.lock, flags); @@ -2154,10 +2152,8 @@ lpuart32_set_termios(struct uart_port *port, struct ktermios *termios, * Since timer function acqures sport->port.lock, need to stop before * acquring same lock because otherwise del_timer_sync() can deadlock. */ - if (old && sport->lpuart_dma_rx_use) { - del_timer_sync(&sport->lpuart_timer); + if (old && sport->lpuart_dma_rx_use) lpuart_dma_rx_free(&sport->port); - } spin_lock_irqsave(&sport->port.lock, flags); @@ -2850,7 +2846,6 @@ static int __maybe_unused lpuart_suspend(struct device *dev) * Rx DMA path before suspend and start Rx DMA path on resume. */ if (irq_wake) { - del_timer_sync(&sport->lpuart_timer); lpuart_dma_rx_free(&sport->port); } From 93454d1a306ea975294b861d32ffa1e44b20c733 Mon Sep 17 00:00:00 2001 From: "Masami Hiramatsu (Google)" Date: Thu, 20 Oct 2022 00:31:55 +0900 Subject: [PATCH 033/269] tracing: Add .percent suffix option to histogram values [ Upstream commit abaa5258ce5e5887a9de049f50a85dc023391a1c ] Add .percent suffix option to show the histogram values in percentage. This feature is useful when we need yo undersntand the overall trend for the histograms of large values. E.g. this shows the runtime percentage for each tasks. ------ # cd /sys/kernel/debug/tracing/ # echo hist:keys=pid:vals=hitcount,runtime.percent:sort=pid > \ events/sched/sched_stat_runtime/trigger # sleep 10 # cat events/sched/sched_stat_runtime/hist # event histogram # # trigger info: hist:keys=pid:vals=hitcount,runtime.percent:sort=pid:size=2048 [active] # { pid: 8 } hitcount: 7 runtime (%): 4.14 { pid: 14 } hitcount: 5 runtime (%): 3.69 { pid: 16 } hitcount: 11 runtime (%): 3.41 { pid: 61 } hitcount: 41 runtime (%): 19.75 { pid: 65 } hitcount: 4 runtime (%): 1.48 { pid: 70 } hitcount: 6 runtime (%): 3.60 { pid: 72 } hitcount: 2 runtime (%): 1.10 { pid: 144 } hitcount: 10 runtime (%): 32.01 { pid: 151 } hitcount: 8 runtime (%): 22.66 { pid: 152 } hitcount: 2 runtime (%): 8.10 Totals: Hits: 96 Entries: 10 Dropped: 0 ----- Link: https://lore.kernel.org/linux-trace-kernel/166610813077.56030.4238090506973562347.stgit@devnote2 Signed-off-by: Masami Hiramatsu (Google) Reviewed-by: Tom Zanussi Tested-by: Tom Zanussi Stable-dep-of: e0213434fe3e ("tracing: Do not let histogram values have some modifiers") Signed-off-by: Sasha Levin --- kernel/trace/trace.c | 3 +- kernel/trace/trace_events_hist.c | 90 +++++++++++++++++++++++++++----- 2 files changed, 78 insertions(+), 15 deletions(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 888980257340..f714ed1f1c67 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -5727,7 +5727,8 @@ static const char readme_msg[] = "\t .syscall display a syscall id as a syscall name\n" "\t .log2 display log2 value rather than raw number\n" "\t .buckets=size display values in groups of size rather than raw number\n" - "\t .usecs display a common_timestamp in microseconds\n\n" + "\t .usecs display a common_timestamp in microseconds\n" + "\t .percent display a number of percentage value\n\n" "\t The 'pause' parameter can be used to pause an existing hist\n" "\t trigger or to start a hist trigger but not log any events\n" "\t until told to do so. 'continue' can be used to start or\n" diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c index e3df03cdecbc..1c207fbf5634 100644 --- a/kernel/trace/trace_events_hist.c +++ b/kernel/trace/trace_events_hist.c @@ -506,6 +506,7 @@ enum hist_field_flags { HIST_FIELD_FL_ALIAS = 1 << 16, HIST_FIELD_FL_BUCKET = 1 << 17, HIST_FIELD_FL_CONST = 1 << 18, + HIST_FIELD_FL_PERCENT = 1 << 19, }; struct var_defs { @@ -1708,6 +1709,8 @@ static const char *get_hist_field_flags(struct hist_field *hist_field) flags_str = "buckets"; else if (hist_field->flags & HIST_FIELD_FL_TIMESTAMP_USECS) flags_str = "usecs"; + else if (hist_field->flags & HIST_FIELD_FL_PERCENT) + flags_str = "percent"; return flags_str; } @@ -2320,6 +2323,10 @@ parse_field(struct hist_trigger_data *hist_data, struct trace_event_file *file, if (ret || !(*buckets)) goto error; *flags |= HIST_FIELD_FL_BUCKET; + } else if (strncmp(modifier, "percent", 7) == 0) { + if (*flags & (HIST_FIELD_FL_VAR | HIST_FIELD_FL_KEY)) + goto error; + *flags |= HIST_FIELD_FL_PERCENT; } else { error: hist_err(tr, HIST_ERR_BAD_FIELD_MODIFIER, errpos(modifier)); @@ -5297,33 +5304,69 @@ static void hist_trigger_print_key(struct seq_file *m, seq_puts(m, "}"); } +/* Get the 100 times of the percentage of @val in @total */ +static inline unsigned int __get_percentage(u64 val, u64 total) +{ + if (!total) + goto div0; + + if (val < (U64_MAX / 10000)) + return (unsigned int)div64_ul(val * 10000, total); + + total = div64_u64(total, 10000); + if (!total) + goto div0; + + return (unsigned int)div64_ul(val, total); +div0: + return val ? UINT_MAX : 0; +} + +static void hist_trigger_print_val(struct seq_file *m, unsigned int idx, + const char *field_name, unsigned long flags, + u64 *totals, struct tracing_map_elt *elt) +{ + u64 val = tracing_map_read_sum(elt, idx); + unsigned int pc; + + if (flags & HIST_FIELD_FL_PERCENT) { + pc = __get_percentage(val, totals[idx]); + if (pc == UINT_MAX) + seq_printf(m, " %s (%%):[ERROR]", field_name); + else + seq_printf(m, " %s (%%): %3u.%02u", field_name, + pc / 100, pc % 100); + } else if (flags & HIST_FIELD_FL_HEX) { + seq_printf(m, " %s: %10llx", field_name, val); + } else { + seq_printf(m, " %s: %10llu", field_name, val); + } +} + static void hist_trigger_entry_print(struct seq_file *m, struct hist_trigger_data *hist_data, + u64 *totals, void *key, struct tracing_map_elt *elt) { const char *field_name; - unsigned int i; + unsigned int i = HITCOUNT_IDX; + unsigned long flags; hist_trigger_print_key(m, hist_data, key, elt); - seq_printf(m, " hitcount: %10llu", - tracing_map_read_sum(elt, HITCOUNT_IDX)); + /* At first, show the raw hitcount always */ + hist_trigger_print_val(m, i, "hitcount", 0, totals, elt); for (i = 1; i < hist_data->n_vals; i++) { field_name = hist_field_name(hist_data->fields[i], 0); + flags = hist_data->fields[i]->flags; - if (hist_data->fields[i]->flags & HIST_FIELD_FL_VAR || - hist_data->fields[i]->flags & HIST_FIELD_FL_EXPR) + if (flags & HIST_FIELD_FL_VAR || flags & HIST_FIELD_FL_EXPR) continue; - if (hist_data->fields[i]->flags & HIST_FIELD_FL_HEX) { - seq_printf(m, " %s: %10llx", field_name, - tracing_map_read_sum(elt, i)); - } else { - seq_printf(m, " %s: %10llu", field_name, - tracing_map_read_sum(elt, i)); - } + seq_puts(m, " "); + hist_trigger_print_val(m, i, field_name, flags, totals, elt); } print_actions(m, hist_data, elt); @@ -5336,7 +5379,8 @@ static int print_entries(struct seq_file *m, { struct tracing_map_sort_entry **sort_entries = NULL; struct tracing_map *map = hist_data->map; - int i, n_entries; + int i, j, n_entries; + u64 *totals = NULL; n_entries = tracing_map_sort_entries(map, hist_data->sort_keys, hist_data->n_sort_keys, @@ -5344,11 +5388,29 @@ static int print_entries(struct seq_file *m, if (n_entries < 0) return n_entries; + for (j = 0; j < hist_data->n_vals; j++) { + if (!(hist_data->fields[j]->flags & HIST_FIELD_FL_PERCENT)) + continue; + if (!totals) { + totals = kcalloc(hist_data->n_vals, sizeof(u64), + GFP_KERNEL); + if (!totals) { + n_entries = -ENOMEM; + goto out; + } + } + for (i = 0; i < n_entries; i++) + totals[j] += tracing_map_read_sum( + sort_entries[i]->elt, j); + } + for (i = 0; i < n_entries; i++) - hist_trigger_entry_print(m, hist_data, + hist_trigger_entry_print(m, hist_data, totals, sort_entries[i]->key, sort_entries[i]->elt); + kfree(totals); +out: tracing_map_destroy_sort_entries(sort_entries, n_entries); return n_entries; From 8ebeea1052f6d02b5eb5fad32f4e3cb58246fe0b Mon Sep 17 00:00:00 2001 From: "Masami Hiramatsu (Google)" Date: Thu, 20 Oct 2022 00:31:55 +0900 Subject: [PATCH 034/269] tracing: Add .graph suffix option to histogram value [ Upstream commit a2c54256dec7510477e2b4f4db187e638f7cac37 ] Add the .graph suffix which shows the bar graph of the histogram value. For example, the below example shows that the bar graph of the histogram of the runtime for each tasks. ------ # cd /sys/kernel/debug/tracing/ # echo hist:keys=pid:vals=runtime.graph:sort=pid > \ events/sched/sched_stat_runtime/trigger # sleep 10 # cat events/sched/sched_stat_runtime/hist # event histogram # # trigger info: hist:keys=pid:vals=hitcount,runtime.graph:sort=pid:size=2048 [active] # { pid: 14 } hitcount: 2 runtime: { pid: 16 } hitcount: 8 runtime: { pid: 26 } hitcount: 1 runtime: { pid: 57 } hitcount: 3 runtime: { pid: 61 } hitcount: 20 runtime: ### { pid: 66 } hitcount: 2 runtime: { pid: 70 } hitcount: 3 runtime: { pid: 72 } hitcount: 2 runtime: { pid: 145 } hitcount: 14 runtime: #################### { pid: 152 } hitcount: 5 runtime: ####### { pid: 153 } hitcount: 2 runtime: #### Totals: Hits: 62 Entries: 11 Dropped: 0 ------- Link: https://lore.kernel.org/linux-trace-kernel/166610813953.56030.10944148382315789485.stgit@devnote2 Signed-off-by: Masami Hiramatsu (Google) Reviewed-by: Tom Zanussi Tested-by: Tom Zanussi Stable-dep-of: e0213434fe3e ("tracing: Do not let histogram values have some modifiers") Signed-off-by: Sasha Levin --- kernel/trace/trace.c | 3 +- kernel/trace/trace_events_hist.c | 77 +++++++++++++++++++++++++------- 2 files changed, 63 insertions(+), 17 deletions(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index f714ed1f1c67..78d69b9488e4 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -5728,7 +5728,8 @@ static const char readme_msg[] = "\t .log2 display log2 value rather than raw number\n" "\t .buckets=size display values in groups of size rather than raw number\n" "\t .usecs display a common_timestamp in microseconds\n" - "\t .percent display a number of percentage value\n\n" + "\t .percent display a number of percentage value\n" + "\t .graph display a bar-graph of a value\n\n" "\t The 'pause' parameter can be used to pause an existing hist\n" "\t trigger or to start a hist trigger but not log any events\n" "\t until told to do so. 'continue' can be used to start or\n" diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c index 1c207fbf5634..8e0acf8009bd 100644 --- a/kernel/trace/trace_events_hist.c +++ b/kernel/trace/trace_events_hist.c @@ -507,6 +507,7 @@ enum hist_field_flags { HIST_FIELD_FL_BUCKET = 1 << 17, HIST_FIELD_FL_CONST = 1 << 18, HIST_FIELD_FL_PERCENT = 1 << 19, + HIST_FIELD_FL_GRAPH = 1 << 20, }; struct var_defs { @@ -1711,6 +1712,8 @@ static const char *get_hist_field_flags(struct hist_field *hist_field) flags_str = "usecs"; else if (hist_field->flags & HIST_FIELD_FL_PERCENT) flags_str = "percent"; + else if (hist_field->flags & HIST_FIELD_FL_GRAPH) + flags_str = "graph"; return flags_str; } @@ -2327,6 +2330,10 @@ parse_field(struct hist_trigger_data *hist_data, struct trace_event_file *file, if (*flags & (HIST_FIELD_FL_VAR | HIST_FIELD_FL_KEY)) goto error; *flags |= HIST_FIELD_FL_PERCENT; + } else if (strncmp(modifier, "graph", 5) == 0) { + if (*flags & (HIST_FIELD_FL_VAR | HIST_FIELD_FL_KEY)) + goto error; + *flags |= HIST_FIELD_FL_GRAPH; } else { error: hist_err(tr, HIST_ERR_BAD_FIELD_MODIFIER, errpos(modifier)); @@ -5322,20 +5329,52 @@ div0: return val ? UINT_MAX : 0; } +#define BAR_CHAR '#' + +static inline const char *__fill_bar_str(char *buf, int size, u64 val, u64 max) +{ + unsigned int len = __get_percentage(val, max); + int i; + + if (len == UINT_MAX) { + snprintf(buf, size, "[ERROR]"); + return buf; + } + + len = len * size / 10000; + for (i = 0; i < len && i < size; i++) + buf[i] = BAR_CHAR; + while (i < size) + buf[i++] = ' '; + buf[size] = '\0'; + + return buf; +} + +struct hist_val_stat { + u64 max; + u64 total; +}; + static void hist_trigger_print_val(struct seq_file *m, unsigned int idx, const char *field_name, unsigned long flags, - u64 *totals, struct tracing_map_elt *elt) + struct hist_val_stat *stats, + struct tracing_map_elt *elt) { u64 val = tracing_map_read_sum(elt, idx); unsigned int pc; + char bar[21]; if (flags & HIST_FIELD_FL_PERCENT) { - pc = __get_percentage(val, totals[idx]); + pc = __get_percentage(val, stats[idx].total); if (pc == UINT_MAX) seq_printf(m, " %s (%%):[ERROR]", field_name); else seq_printf(m, " %s (%%): %3u.%02u", field_name, pc / 100, pc % 100); + } else if (flags & HIST_FIELD_FL_GRAPH) { + seq_printf(m, " %s: %20s", field_name, + __fill_bar_str(bar, 20, val, stats[idx].max)); } else if (flags & HIST_FIELD_FL_HEX) { seq_printf(m, " %s: %10llx", field_name, val); } else { @@ -5345,7 +5384,7 @@ static void hist_trigger_print_val(struct seq_file *m, unsigned int idx, static void hist_trigger_entry_print(struct seq_file *m, struct hist_trigger_data *hist_data, - u64 *totals, + struct hist_val_stat *stats, void *key, struct tracing_map_elt *elt) { @@ -5356,7 +5395,7 @@ static void hist_trigger_entry_print(struct seq_file *m, hist_trigger_print_key(m, hist_data, key, elt); /* At first, show the raw hitcount always */ - hist_trigger_print_val(m, i, "hitcount", 0, totals, elt); + hist_trigger_print_val(m, i, "hitcount", 0, stats, elt); for (i = 1; i < hist_data->n_vals; i++) { field_name = hist_field_name(hist_data->fields[i], 0); @@ -5366,7 +5405,7 @@ static void hist_trigger_entry_print(struct seq_file *m, continue; seq_puts(m, " "); - hist_trigger_print_val(m, i, field_name, flags, totals, elt); + hist_trigger_print_val(m, i, field_name, flags, stats, elt); } print_actions(m, hist_data, elt); @@ -5380,7 +5419,8 @@ static int print_entries(struct seq_file *m, struct tracing_map_sort_entry **sort_entries = NULL; struct tracing_map *map = hist_data->map; int i, j, n_entries; - u64 *totals = NULL; + struct hist_val_stat *stats = NULL; + u64 val; n_entries = tracing_map_sort_entries(map, hist_data->sort_keys, hist_data->n_sort_keys, @@ -5388,28 +5428,33 @@ static int print_entries(struct seq_file *m, if (n_entries < 0) return n_entries; + /* Calculate the max and the total for each field if needed. */ for (j = 0; j < hist_data->n_vals; j++) { - if (!(hist_data->fields[j]->flags & HIST_FIELD_FL_PERCENT)) + if (!(hist_data->fields[j]->flags & + (HIST_FIELD_FL_PERCENT | HIST_FIELD_FL_GRAPH))) continue; - if (!totals) { - totals = kcalloc(hist_data->n_vals, sizeof(u64), - GFP_KERNEL); - if (!totals) { + if (!stats) { + stats = kcalloc(hist_data->n_vals, sizeof(*stats), + GFP_KERNEL); + if (!stats) { n_entries = -ENOMEM; goto out; } } - for (i = 0; i < n_entries; i++) - totals[j] += tracing_map_read_sum( - sort_entries[i]->elt, j); + for (i = 0; i < n_entries; i++) { + val = tracing_map_read_sum(sort_entries[i]->elt, j); + stats[j].total += val; + if (stats[j].max < val) + stats[j].max = val; + } } for (i = 0; i < n_entries; i++) - hist_trigger_entry_print(m, hist_data, totals, + hist_trigger_entry_print(m, hist_data, stats, sort_entries[i]->key, sort_entries[i]->elt); - kfree(totals); + kfree(stats); out: tracing_map_destroy_sort_entries(sort_entries, n_entries); From 39cd75f2f3a43c0e2f95749eb6dd6420c553f87d Mon Sep 17 00:00:00 2001 From: "Steven Rostedt (Google)" Date: Wed, 1 Mar 2023 20:00:52 -0500 Subject: [PATCH 035/269] tracing: Do not let histogram values have some modifiers [ Upstream commit e0213434fe3e4a0d118923dc98d31e7ff1cd9e45 ] Histogram values can not be strings, stacktraces, graphs, symbols, syscalls, or grouped in buckets or log. Give an error if a value is set to do so. Note, the histogram code was not prepared to handle these modifiers for histograms and caused a bug. Mark Rutland reported: # echo 'p:copy_to_user __arch_copy_to_user n=$arg2' >> /sys/kernel/tracing/kprobe_events # echo 'hist:keys=n:vals=hitcount.buckets=8:sort=hitcount' > /sys/kernel/tracing/events/kprobes/copy_to_user/trigger # cat /sys/kernel/tracing/events/kprobes/copy_to_user/hist [ 143.694628] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000 [ 143.695190] Mem abort info: [ 143.695362] ESR = 0x0000000096000004 [ 143.695604] EC = 0x25: DABT (current EL), IL = 32 bits [ 143.695889] SET = 0, FnV = 0 [ 143.696077] EA = 0, S1PTW = 0 [ 143.696302] FSC = 0x04: level 0 translation fault [ 143.702381] Data abort info: [ 143.702614] ISV = 0, ISS = 0x00000004 [ 143.702832] CM = 0, WnR = 0 [ 143.703087] user pgtable: 4k pages, 48-bit VAs, pgdp=00000000448f9000 [ 143.703407] [0000000000000000] pgd=0000000000000000, p4d=0000000000000000 [ 143.704137] Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP [ 143.704714] Modules linked in: [ 143.705273] CPU: 0 PID: 133 Comm: cat Not tainted 6.2.0-00003-g6fc512c10a7c #3 [ 143.706138] Hardware name: linux,dummy-virt (DT) [ 143.706723] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 143.707120] pc : hist_field_name.part.0+0x14/0x140 [ 143.707504] lr : hist_field_name.part.0+0x104/0x140 [ 143.707774] sp : ffff800008333a30 [ 143.707952] x29: ffff800008333a30 x28: 0000000000000001 x27: 0000000000400cc0 [ 143.708429] x26: ffffd7a653b20260 x25: 0000000000000000 x24: ffff10d303ee5800 [ 143.708776] x23: ffffd7a6539b27b0 x22: ffff10d303fb8c00 x21: 0000000000000001 [ 143.709127] x20: ffff10d303ec2000 x19: 0000000000000000 x18: 0000000000000000 [ 143.709478] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000 [ 143.709824] x14: 0000000000000000 x13: 203a6f666e692072 x12: 6567676972742023 [ 143.710179] x11: 0a230a6d6172676f x10: 000000000000002c x9 : ffffd7a6521e018c [ 143.710584] x8 : 000000000000002c x7 : 7f7f7f7f7f7f7f7f x6 : 000000000000002c [ 143.710915] x5 : ffff10d303b0103e x4 : ffffd7a653b20261 x3 : 000000000000003d [ 143.711239] x2 : 0000000000020001 x1 : 0000000000000001 x0 : 0000000000000000 [ 143.711746] Call trace: [ 143.712115] hist_field_name.part.0+0x14/0x140 [ 143.712642] hist_field_name.part.0+0x104/0x140 [ 143.712925] hist_field_print+0x28/0x140 [ 143.713125] event_hist_trigger_print+0x174/0x4d0 [ 143.713348] hist_show+0xf8/0x980 [ 143.713521] seq_read_iter+0x1bc/0x4b0 [ 143.713711] seq_read+0x8c/0xc4 [ 143.713876] vfs_read+0xc8/0x2a4 [ 143.714043] ksys_read+0x70/0xfc [ 143.714218] __arm64_sys_read+0x24/0x30 [ 143.714400] invoke_syscall+0x50/0x120 [ 143.714587] el0_svc_common.constprop.0+0x4c/0x100 [ 143.714807] do_el0_svc+0x44/0xd0 [ 143.714970] el0_svc+0x2c/0x84 [ 143.715134] el0t_64_sync_handler+0xbc/0x140 [ 143.715334] el0t_64_sync+0x190/0x194 [ 143.715742] Code: a9bd7bfd 910003fd a90153f3 aa0003f3 (f9400000) [ 143.716510] ---[ end trace 0000000000000000 ]--- Segmentation fault Link: https://lkml.kernel.org/r/20230302020810.559462599@goodmis.org Cc: stable@vger.kernel.org Cc: Masami Hiramatsu Cc: Andrew Morton Fixes: c6afad49d127f ("tracing: Add hist trigger 'sym' and 'sym-offset' modifiers") Reported-by: Mark Rutland Tested-by: Mark Rutland Signed-off-by: Steven Rostedt (Google) Signed-off-by: Sasha Levin --- kernel/trace/trace_events_hist.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c index 8e0acf8009bd..2b2120ed2460 100644 --- a/kernel/trace/trace_events_hist.c +++ b/kernel/trace/trace_events_hist.c @@ -4193,6 +4193,15 @@ static int __create_val_field(struct hist_trigger_data *hist_data, goto out; } + /* Some types cannot be a value */ + if (hist_field->flags & (HIST_FIELD_FL_GRAPH | HIST_FIELD_FL_PERCENT | + HIST_FIELD_FL_BUCKET | HIST_FIELD_FL_LOG2 | + HIST_FIELD_FL_SYM | HIST_FIELD_FL_SYM_OFFSET | + HIST_FIELD_FL_SYSCALL | HIST_FIELD_FL_STACKTRACE)) { + hist_err(file->tr, HIST_ERR_BAD_FIELD_MODIFIER, errpos(field_str)); + ret = -EINVAL; + } + hist_data->fields[val_idx] = hist_field; ++hist_data->n_vals; From ec6cd79c4e54a2a5867e0497d269ad4f008216ba Mon Sep 17 00:00:00 2001 From: Vladimir Oltean Date: Tue, 21 Mar 2023 03:03:23 +0200 Subject: [PATCH 036/269] net: mscc: ocelot: fix stats region batching [ Upstream commit 6acc72a43eac78a309160d0a7512bbc59bcdd757 ] The blamed commit changed struct ocelot_stat_layout :: "u32 offset" to "u32 reg". However, "u32 reg" is not quite a register address, but an enum ocelot_reg, which in itself encodes an enum ocelot_target target in the upper bits, and an index into the ocelot->map[target][] array in the lower bits. So, whereas the previous code comparison between stats_layout[i].offset and last + 1 was correct (because those "offsets" at the time were 32-bit relative addresses), the new code, comparing layout[i].reg to last + 4 is not correct, because the "reg" here is an enum/index, not an actual register address. What we want to compare are indeed register addresses, but to do that, we need to actually go through the same motions as __ocelot_bulk_read_ix() itself. With this bug, all statistics counters are deemed by ocelot_prepare_stats_regions() as constituting their own region. (Truncated) log on VSC9959 (Felix) below (prints added by me): Before: region of 1 contiguous counters starting with SYS:STAT:CNT[0x000] region of 1 contiguous counters starting with SYS:STAT:CNT[0x001] region of 1 contiguous counters starting with SYS:STAT:CNT[0x002] ... region of 1 contiguous counters starting with SYS:STAT:CNT[0x041] region of 1 contiguous counters starting with SYS:STAT:CNT[0x042] region of 1 contiguous counters starting with SYS:STAT:CNT[0x080] region of 1 contiguous counters starting with SYS:STAT:CNT[0x081] ... region of 1 contiguous counters starting with SYS:STAT:CNT[0x0ac] region of 1 contiguous counters starting with SYS:STAT:CNT[0x100] region of 1 contiguous counters starting with SYS:STAT:CNT[0x101] ... region of 1 contiguous counters starting with SYS:STAT:CNT[0x111] After: region of 67 contiguous counters starting with SYS:STAT:CNT[0x000] region of 45 contiguous counters starting with SYS:STAT:CNT[0x080] region of 18 contiguous counters starting with SYS:STAT:CNT[0x100] Since commit d87b1c08f38a ("net: mscc: ocelot: use bulk reads for stats") intended bulking as a performance improvement, and since now, with trivial-sized regions, performance is even worse than without bulking at all, this could easily qualify as a performance regression. Fixes: d4c367650704 ("net: mscc: ocelot: keep ocelot_stat_layout by reg address, not offset") Signed-off-by: Vladimir Oltean Acked-by: Colin Foster Tested-by: Colin Foster Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ethernet/mscc/ocelot_stats.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mscc/ocelot_stats.c b/drivers/net/ethernet/mscc/ocelot_stats.c index dbd20b125cea..0066219bb0e8 100644 --- a/drivers/net/ethernet/mscc/ocelot_stats.c +++ b/drivers/net/ethernet/mscc/ocelot_stats.c @@ -392,7 +392,8 @@ static int ocelot_prepare_stats_regions(struct ocelot *ocelot) if (!ocelot->stats_layout[i].reg) continue; - if (region && ocelot->stats_layout[i].reg == last + 4) { + if (region && ocelot->map[SYS][ocelot->stats_layout[i].reg & REG_MASK] == + ocelot->map[SYS][last & REG_MASK] + 4) { region->count++; } else { region = devm_kzalloc(ocelot->dev, sizeof(*region), From e0169d62efce979eb7dbda3101eea180b69ca793 Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Fri, 10 Mar 2023 13:30:05 +0100 Subject: [PATCH 037/269] arm64: efi: Set NX compat flag in PE/COFF header [ Upstream commit 3c66bb1918c262dd52fb4221a8d372619c5da70a ] The PE/COFF header has a NX compat flag which informs the firmware that the application does not rely on memory regions being mapped with both executable and writable permissions at the same time. This is typically used by the firmware to decide whether it can set the NX attribute on all allocations it returns, but going forward, it may be used to enforce a policy that only permits applications with the NX flag set to be loaded to begin wiht in some configurations, e.g., when Secure Boot is in effect. Even though the arm64 version of the EFI stub may relocate the kernel before executing it, it always did so after disabling the MMU, and so we were always in line with what the NX compat flag conveys, we just never bothered to set it. So let's set the flag now. Cc: Signed-off-by: Ard Biesheuvel Signed-off-by: Sasha Levin --- arch/arm64/kernel/efi-header.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/kernel/efi-header.S b/arch/arm64/kernel/efi-header.S index 28d8a5dca5f1..d731b4655df8 100644 --- a/arch/arm64/kernel/efi-header.S +++ b/arch/arm64/kernel/efi-header.S @@ -66,7 +66,7 @@ .long .Lefi_header_end - .L_head // SizeOfHeaders .long 0 // CheckSum .short IMAGE_SUBSYSTEM_EFI_APPLICATION // Subsystem - .short 0 // DllCharacteristics + .short IMAGE_DLL_CHARACTERISTICS_NX_COMPAT // DllCharacteristics .quad 0 // SizeOfStackReserve .quad 0 // SizeOfStackCommit .quad 0 // SizeOfHeapReserve From 2b4830eefc41b06d4943ae860abf24ec3901d89f Mon Sep 17 00:00:00 2001 From: Paulo Alcantara Date: Fri, 24 Mar 2023 16:05:19 -0300 Subject: [PATCH 038/269] cifs: fix missing unload_nls() in smb2_reconnect() [ Upstream commit c24bb1a87dc3f2d77d410eaac2c6a295961bf50e ] Make sure to unload_nls() @nls_codepage if we no longer need it. Fixes: bc962159e8e3 ("cifs: avoid race conditions with parallel reconnects") Signed-off-by: Paulo Alcantara (SUSE) Cc: Shyam Prasad N Signed-off-by: Steve French Signed-off-by: Sasha Levin --- fs/cifs/smb2pdu.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c index f0b1ae0835d7..b37379b62cc7 100644 --- a/fs/cifs/smb2pdu.c +++ b/fs/cifs/smb2pdu.c @@ -144,7 +144,7 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon, struct TCP_Server_Info *server) { int rc = 0; - struct nls_table *nls_codepage; + struct nls_table *nls_codepage = NULL; struct cifs_ses *ses; /* @@ -216,8 +216,6 @@ again: tcon->ses->chans_need_reconnect, tcon->need_reconnect); - nls_codepage = load_nls_default(); - mutex_lock(&ses->session_mutex); /* * Recheck after acquire mutex. If another thread is negotiating @@ -237,6 +235,8 @@ again: } spin_unlock(&server->srv_lock); + nls_codepage = load_nls_default(); + /* * need to prevent multiple threads trying to simultaneously * reconnect the same SMB session From 5218af4ad5d8948faac19f71583bcd786c3852df Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Thu, 9 Feb 2023 09:09:52 +0800 Subject: [PATCH 039/269] xfrm: Zero padding when dumping algos and encap [ Upstream commit 8222d5910dae08213b6d9d4bc9a7f8502855e624 ] When copying data to user-space we should ensure that only valid data is copied over. Padding in structures may be filled with random (possibly sensitve) data and should never be given directly to user-space. This patch fixes the copying of xfrm algorithms and the encap template in xfrm_user so that padding is zeroed. Reported-by: syzbot+fa5414772d5c445dac3c@syzkaller.appspotmail.com Reported-by: Hyunwoo Kim Signed-off-by: Herbert Xu Reviewed-by: Sabrina Dubroca Signed-off-by: Steffen Klassert Signed-off-by: Sasha Levin --- net/xfrm/xfrm_user.c | 45 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c index e73f9efc54c1..83f35ecacf24 100644 --- a/net/xfrm/xfrm_user.c +++ b/net/xfrm/xfrm_user.c @@ -997,7 +997,9 @@ static int copy_to_user_aead(struct xfrm_algo_aead *aead, struct sk_buff *skb) return -EMSGSIZE; ap = nla_data(nla); - memcpy(ap, aead, sizeof(*aead)); + strscpy_pad(ap->alg_name, aead->alg_name, sizeof(ap->alg_name)); + ap->alg_key_len = aead->alg_key_len; + ap->alg_icv_len = aead->alg_icv_len; if (redact_secret && aead->alg_key_len) memset(ap->alg_key, 0, (aead->alg_key_len + 7) / 8); @@ -1017,7 +1019,8 @@ static int copy_to_user_ealg(struct xfrm_algo *ealg, struct sk_buff *skb) return -EMSGSIZE; ap = nla_data(nla); - memcpy(ap, ealg, sizeof(*ealg)); + strscpy_pad(ap->alg_name, ealg->alg_name, sizeof(ap->alg_name)); + ap->alg_key_len = ealg->alg_key_len; if (redact_secret && ealg->alg_key_len) memset(ap->alg_key, 0, (ealg->alg_key_len + 7) / 8); @@ -1028,6 +1031,40 @@ static int copy_to_user_ealg(struct xfrm_algo *ealg, struct sk_buff *skb) return 0; } +static int copy_to_user_calg(struct xfrm_algo *calg, struct sk_buff *skb) +{ + struct nlattr *nla = nla_reserve(skb, XFRMA_ALG_COMP, sizeof(*calg)); + struct xfrm_algo *ap; + + if (!nla) + return -EMSGSIZE; + + ap = nla_data(nla); + strscpy_pad(ap->alg_name, calg->alg_name, sizeof(ap->alg_name)); + ap->alg_key_len = 0; + + return 0; +} + +static int copy_to_user_encap(struct xfrm_encap_tmpl *ep, struct sk_buff *skb) +{ + struct nlattr *nla = nla_reserve(skb, XFRMA_ENCAP, sizeof(*ep)); + struct xfrm_encap_tmpl *uep; + + if (!nla) + return -EMSGSIZE; + + uep = nla_data(nla); + memset(uep, 0, sizeof(*uep)); + + uep->encap_type = ep->encap_type; + uep->encap_sport = ep->encap_sport; + uep->encap_dport = ep->encap_dport; + uep->encap_oa = ep->encap_oa; + + return 0; +} + static int xfrm_smark_put(struct sk_buff *skb, struct xfrm_mark *m) { int ret = 0; @@ -1083,12 +1120,12 @@ static int copy_to_user_state_extra(struct xfrm_state *x, goto out; } if (x->calg) { - ret = nla_put(skb, XFRMA_ALG_COMP, sizeof(*(x->calg)), x->calg); + ret = copy_to_user_calg(x->calg, skb); if (ret) goto out; } if (x->encap) { - ret = nla_put(skb, XFRMA_ENCAP, sizeof(*x->encap), x->encap); + ret = copy_to_user_encap(x->encap, skb); if (ret) goto out; } From 57f9a9a232bde7abfe49c3072b29a255da9ba891 Mon Sep 17 00:00:00 2001 From: Ravulapati Vishnu Vardhan Rao Date: Sat, 4 Mar 2023 13:37:02 +0530 Subject: [PATCH 040/269] ASoC: codecs: tx-macro: Fix for KASAN: slab-out-of-bounds [ Upstream commit e5e7e398f6bb7918dab0612eb6991f7bae95520d ] When we run syzkaller we get below Out of Bound. "KASAN: slab-out-of-bounds Read in regcache_flat_read" Below is the backtrace of the issue: dump_backtrace+0x0/0x4c8 show_stack+0x34/0x44 dump_stack_lvl+0xd8/0x118 print_address_description+0x30/0x2d8 kasan_report+0x158/0x198 __asan_report_load4_noabort+0x44/0x50 regcache_flat_read+0x10c/0x110 regcache_read+0xf4/0x180 _regmap_read+0xc4/0x278 _regmap_update_bits+0x130/0x290 regmap_update_bits_base+0xc0/0x15c snd_soc_component_update_bits+0xa8/0x22c snd_soc_component_write_field+0x68/0xd4 tx_macro_digital_mute+0xec/0x140 Actually There is no need to have decimator with 32 bits. By limiting the variable with short type u8 issue is resolved. Signed-off-by: Ravulapati Vishnu Vardhan Rao Link: https://lore.kernel.org/r/20230304080702.609-1-quic_visr@quicinc.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/codecs/lpass-tx-macro.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/sound/soc/codecs/lpass-tx-macro.c b/sound/soc/codecs/lpass-tx-macro.c index 5d1c58df081a..e5611f655bed 100644 --- a/sound/soc/codecs/lpass-tx-macro.c +++ b/sound/soc/codecs/lpass-tx-macro.c @@ -241,7 +241,7 @@ enum { struct tx_mute_work { struct tx_macro *tx; - u32 decimator; + u8 decimator; struct delayed_work dwork; }; @@ -634,7 +634,7 @@ exit: return 0; } -static bool is_amic_enabled(struct snd_soc_component *component, int decimator) +static bool is_amic_enabled(struct snd_soc_component *component, u8 decimator) { u16 adc_mux_reg, adc_reg, adc_n; @@ -845,7 +845,7 @@ static int tx_macro_enable_dec(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); - unsigned int decimator; + u8 decimator; u16 tx_vol_ctl_reg, dec_cfg_reg, hpf_gate_reg, tx_gain_ctl_reg; u8 hpf_cut_off_freq; int hpf_delay = TX_MACRO_DMIC_HPF_DELAY_MS; @@ -1060,7 +1060,8 @@ static int tx_macro_hw_params(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { struct snd_soc_component *component = dai->component; - u32 decimator, sample_rate; + u32 sample_rate; + u8 decimator; int tx_fs_rate; struct tx_macro *tx = snd_soc_component_get_drvdata(component); @@ -1124,7 +1125,7 @@ static int tx_macro_digital_mute(struct snd_soc_dai *dai, int mute, int stream) { struct snd_soc_component *component = dai->component; struct tx_macro *tx = snd_soc_component_get_drvdata(component); - u16 decimator; + u8 decimator; /* active decimator not set yet */ if (tx->active_decimator[dai->id] == -1) From d0652061c3b85e498d9b666e63c49070b4c1caf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amadeusz=20S=C5=82awi=C5=84ski?= Date: Fri, 3 Mar 2023 14:48:50 +0100 Subject: [PATCH 041/269] ASoC: Intel: avs: max98357a: Explicitly define codec format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit d16c893425d07ada1fdd817ec06d322efcf69480 ] max98357a is speaker codec configured in 48000/2/S16_LE format regardless of front end format, so force it to be so. Reviewed-by: Cezary Rojewski Signed-off-by: Amadeusz Sławiński Link: https://lore.kernel.org/r/20230303134854.2277146-2-amadeuszx.slawinski@linux.intel.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/intel/avs/boards/max98357a.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/sound/soc/intel/avs/boards/max98357a.c b/sound/soc/intel/avs/boards/max98357a.c index 921f42caf7e0..183123d08c5a 100644 --- a/sound/soc/intel/avs/boards/max98357a.c +++ b/sound/soc/intel/avs/boards/max98357a.c @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -24,6 +25,26 @@ static const struct snd_soc_dapm_route card_base_routes[] = { { "Spk", NULL, "Speaker" }, }; +static int +avs_max98357a_be_fixup(struct snd_soc_pcm_runtime *runrime, struct snd_pcm_hw_params *params) +{ + struct snd_interval *rate, *channels; + struct snd_mask *fmt; + + rate = hw_param_interval(params, SNDRV_PCM_HW_PARAM_RATE); + channels = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS); + fmt = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT); + + /* The ADSP will convert the FE rate to 48k, stereo */ + rate->min = rate->max = 48000; + channels->min = channels->max = 2; + + /* set SSP0 to 16 bit */ + snd_mask_none(fmt); + snd_mask_set_format(fmt, SNDRV_PCM_FORMAT_S16_LE); + return 0; +} + static int avs_create_dai_link(struct device *dev, const char *platform_name, int ssp_port, struct snd_soc_dai_link **dai_link) { @@ -55,6 +76,7 @@ static int avs_create_dai_link(struct device *dev, const char *platform_name, in dl->num_platforms = 1; dl->id = 0; dl->dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS; + dl->be_hw_params_fixup = avs_max98357a_be_fixup; dl->nonatomic = 1; dl->no_pcm = 1; dl->dpcm_playback = 1; From ea7950db76506cf3d0a20898b2de82c29340bccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amadeusz=20S=C5=82awi=C5=84ski?= Date: Fri, 3 Mar 2023 14:48:51 +0100 Subject: [PATCH 042/269] ASoC: Intel: avs: da7219: Explicitly define codec format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit 61f368624fe4d0c25c6e9c917574b8ace51d776e ] da7219 is headset codec configured in 48000/2/S24_LE format regardless of front end format, so force it to be so. Reviewed-by: Cezary Rojewski Signed-off-by: Amadeusz Sławiński Link: https://lore.kernel.org/r/20230303134854.2277146-3-amadeuszx.slawinski@linux.intel.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/intel/avs/boards/da7219.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/sound/soc/intel/avs/boards/da7219.c b/sound/soc/intel/avs/boards/da7219.c index 02ae542ad779..a63563594b4c 100644 --- a/sound/soc/intel/avs/boards/da7219.c +++ b/sound/soc/intel/avs/boards/da7219.c @@ -111,6 +111,26 @@ static int avs_da7219_codec_init(struct snd_soc_pcm_runtime *runtime) return 0; } +static int +avs_da7219_be_fixup(struct snd_soc_pcm_runtime *runrime, struct snd_pcm_hw_params *params) +{ + struct snd_interval *rate, *channels; + struct snd_mask *fmt; + + rate = hw_param_interval(params, SNDRV_PCM_HW_PARAM_RATE); + channels = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS); + fmt = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT); + + /* The ADSP will convert the FE rate to 48k, stereo */ + rate->min = rate->max = 48000; + channels->min = channels->max = 2; + + /* set SSP0 to 24 bit */ + snd_mask_none(fmt); + snd_mask_set_format(fmt, SNDRV_PCM_FORMAT_S24_LE); + return 0; +} + static int avs_create_dai_link(struct device *dev, const char *platform_name, int ssp_port, struct snd_soc_dai_link **dai_link) { @@ -142,6 +162,7 @@ static int avs_create_dai_link(struct device *dev, const char *platform_name, in dl->num_platforms = 1; dl->id = 0; dl->dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS; + dl->be_hw_params_fixup = avs_da7219_be_fixup; dl->init = avs_da7219_codec_init; dl->nonatomic = 1; dl->no_pcm = 1; From 30878a7eec00d78be07cd94ea8dac98d1fb8203f Mon Sep 17 00:00:00 2001 From: Cezary Rojewski Date: Fri, 3 Mar 2023 14:48:53 +0100 Subject: [PATCH 043/269] ASoC: Intel: avs: ssm4567: Remove nau8825 bits MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit 933de2d127281731166cf2880fa1e23c5a0f7faa ] Some of the nau8825 clock control got into the ssm4567, remove it. Signed-off-by: Cezary Rojewski Signed-off-by: Amadeusz Sławiński Link: https://lore.kernel.org/r/20230303134854.2277146-5-amadeuszx.slawinski@linux.intel.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/intel/avs/boards/ssm4567.c | 31 ---------------------------- 1 file changed, 31 deletions(-) diff --git a/sound/soc/intel/avs/boards/ssm4567.c b/sound/soc/intel/avs/boards/ssm4567.c index 9f84c8ab3447..51a8867326b4 100644 --- a/sound/soc/intel/avs/boards/ssm4567.c +++ b/sound/soc/intel/avs/boards/ssm4567.c @@ -15,7 +15,6 @@ #include #include "../../../codecs/nau8825.h" -#define SKL_NUVOTON_CODEC_DAI "nau8825-hifi" #define SKL_SSM_CODEC_DAI "ssm4567-hifi" static struct snd_soc_codec_conf card_codec_conf[] = { @@ -34,41 +33,11 @@ static const struct snd_kcontrol_new card_controls[] = { SOC_DAPM_PIN_SWITCH("Right Speaker"), }; -static int -platform_clock_control(struct snd_soc_dapm_widget *w, struct snd_kcontrol *control, int event) -{ - struct snd_soc_dapm_context *dapm = w->dapm; - struct snd_soc_card *card = dapm->card; - struct snd_soc_dai *codec_dai; - int ret; - - codec_dai = snd_soc_card_get_codec_dai(card, SKL_NUVOTON_CODEC_DAI); - if (!codec_dai) { - dev_err(card->dev, "Codec dai not found\n"); - return -EINVAL; - } - - if (SND_SOC_DAPM_EVENT_ON(event)) { - ret = snd_soc_dai_set_sysclk(codec_dai, NAU8825_CLK_MCLK, 24000000, - SND_SOC_CLOCK_IN); - if (ret < 0) - dev_err(card->dev, "set sysclk err = %d\n", ret); - } else { - ret = snd_soc_dai_set_sysclk(codec_dai, NAU8825_CLK_INTERNAL, 0, SND_SOC_CLOCK_IN); - if (ret < 0) - dev_err(card->dev, "set sysclk err = %d\n", ret); - } - - return ret; -} - static const struct snd_soc_dapm_widget card_widgets[] = { SND_SOC_DAPM_SPK("Left Speaker", NULL), SND_SOC_DAPM_SPK("Right Speaker", NULL), SND_SOC_DAPM_SPK("DP1", NULL), SND_SOC_DAPM_SPK("DP2", NULL), - SND_SOC_DAPM_SUPPLY("Platform Clock", SND_SOC_NOPM, 0, 0, platform_clock_control, - SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), }; static const struct snd_soc_dapm_route card_base_routes[] = { From 6beb32105eeafc399e684822d07674811e8da40c Mon Sep 17 00:00:00 2001 From: Cezary Rojewski Date: Fri, 3 Mar 2023 14:48:54 +0100 Subject: [PATCH 044/269] ASoC: Intel: avs: nau8825: Adjust clock control MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit 6206b2e787da2ed567922c37bb588a44f6fb6705 ] Internal clock shall be adjusted also in cases when DAPM event other than 'ON' is triggered. Signed-off-by: Cezary Rojewski Signed-off-by: Amadeusz Sławiński Link: https://lore.kernel.org/r/20230303134854.2277146-6-amadeuszx.slawinski@linux.intel.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/intel/avs/boards/nau8825.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sound/soc/intel/avs/boards/nau8825.c b/sound/soc/intel/avs/boards/nau8825.c index f76909e9f990..8392d8fac8f9 100644 --- a/sound/soc/intel/avs/boards/nau8825.c +++ b/sound/soc/intel/avs/boards/nau8825.c @@ -33,15 +33,15 @@ avs_nau8825_clock_control(struct snd_soc_dapm_widget *w, struct snd_kcontrol *co return -EINVAL; } - if (!SND_SOC_DAPM_EVENT_ON(event)) { + if (SND_SOC_DAPM_EVENT_ON(event)) + ret = snd_soc_dai_set_sysclk(codec_dai, NAU8825_CLK_MCLK, 24000000, + SND_SOC_CLOCK_IN); + else ret = snd_soc_dai_set_sysclk(codec_dai, NAU8825_CLK_INTERNAL, 0, SND_SOC_CLOCK_IN); - if (ret < 0) { - dev_err(card->dev, "set sysclk err = %d\n", ret); - return ret; - } - } + if (ret < 0) + dev_err(card->dev, "Set sysclk failed: %d\n", ret); - return 0; + return ret; } static const struct snd_kcontrol_new card_controls[] = { From 78b342f0cda74f20cea51f0f1e1e9565e3054ffc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20Neusch=C3=A4fer?= Date: Sun, 29 Jan 2023 14:14:36 +0100 Subject: [PATCH 045/269] zstd: Fix definition of assert() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit 6906598f1ce93761716d780b6e3f171e13f0f4ce ] assert(x) should emit a warning if x is false. WARN_ON(x) emits a warning if x is true. Thus, assert(x) should be defined as WARN_ON(!x) rather than WARN_ON(x). Signed-off-by: Jonathan Neuschäfer Signed-off-by: Nick Terrell Signed-off-by: Sasha Levin --- lib/zstd/common/zstd_deps.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/zstd/common/zstd_deps.h b/lib/zstd/common/zstd_deps.h index 7a5bf44839c9..f06df065dec0 100644 --- a/lib/zstd/common/zstd_deps.h +++ b/lib/zstd/common/zstd_deps.h @@ -84,7 +84,7 @@ static uint64_t ZSTD_div64(uint64_t dividend, uint32_t divisor) { #include -#define assert(x) WARN_ON((x)) +#define assert(x) WARN_ON(!(x)) #endif /* ZSTD_DEPS_ASSERT */ #endif /* ZSTD_DEPS_NEED_ASSERT */ From ab7a700fec4053412ca7dd4ae70c31d781219544 Mon Sep 17 00:00:00 2001 From: "Chia-Lin Kao (AceLan)" Date: Thu, 2 Mar 2023 17:33:00 +0800 Subject: [PATCH 046/269] ACPI: video: Add backlight=native DMI quirk for Dell Vostro 15 3535 [ Upstream commit 89b0411481967a2e8c91190a211a359966cfcf4b ] Sometimes the system boots up with a acpi_video0 backlight interface which doesn't work. So add Dell Vostro 15 3535 into the video_detect_dmi_table to set it to native explicitly. Signed-off-by: Chia-Lin Kao (AceLan) Signed-off-by: Rafael J. Wysocki Signed-off-by: Sasha Levin --- drivers/acpi/video_detect.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c index 7f0ed845cd6a..f06b3d355671 100644 --- a/drivers/acpi/video_detect.c +++ b/drivers/acpi/video_detect.c @@ -714,6 +714,13 @@ static const struct dmi_system_id video_detect_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5515"), }, }, + { + .callback = video_detect_force_native, + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Vostro 15 3535"), + }, + }, /* * Desktops which falsely report a backlight and which our heuristics From a56be07a8c0c5229274c0d1d9efd9fbde2d1c84e Mon Sep 17 00:00:00 2001 From: Peter Ujfalusi Date: Tue, 7 Mar 2023 13:49:17 +0200 Subject: [PATCH 047/269] ASoC: SOF: ipc3: Check for upper size limit for the received message [ Upstream commit 989a3e4479177d0f4afab8be1960731bc0ffbbd0 ] The sof_ipc3_rx_msg() checks for minimum size of a new rx message but it is missing the check for upper limit. Corrupted or compromised firmware might be able to take advantage of this to cause out of bounds reads outside of the message area. Reported-by: Curtis Malainey Signed-off-by: Peter Ujfalusi Reviewed-by: Pierre-Louis Bossart Reviewed-by: Curtis Malainey Signed-off-by: Peter Ujfalusi Link: https://lore.kernel.org/r/20230307114917.5124-1-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/sof/ipc3.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sound/soc/sof/ipc3.c b/sound/soc/sof/ipc3.c index b28af3a48b70..60b96b0c2412 100644 --- a/sound/soc/sof/ipc3.c +++ b/sound/soc/sof/ipc3.c @@ -970,8 +970,9 @@ static void sof_ipc3_rx_msg(struct snd_sof_dev *sdev) return; } - if (hdr.size < sizeof(hdr)) { - dev_err(sdev->dev, "The received message size is invalid\n"); + if (hdr.size < sizeof(hdr) || hdr.size > SOF_IPC_MSG_MAX_SIZE) { + dev_err(sdev->dev, "The received message size is invalid: %u\n", + hdr.size); return; } From 6290404aa14287f343bbffe287709e05e0cf09a0 Mon Sep 17 00:00:00 2001 From: Seppo Ingalsuo Date: Tue, 7 Mar 2023 13:07:51 +0200 Subject: [PATCH 048/269] ASoC: SOF: ipc4-topology: Fix incorrect sample rate print unit [ Upstream commit 9e269e3aa9006440de639597079ee7140ef5b5f3 ] This patch fixes the sample rate print unit from KHz to Hz. E.g. 48000KHz becomes 48000Hz. Signed-off-by: Seppo Ingalsuo Reviewed-by: Pierre-Louis Bossart Reviewed-by: Ranjani Sridharan Signed-off-by: Peter Ujfalusi Link: https://lore.kernel.org/r/20230307110751.2053-1-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/sof/ipc4-topology.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/sof/ipc4-topology.c b/sound/soc/sof/ipc4-topology.c index a81af5f73a4b..41617569f50f 100644 --- a/sound/soc/sof/ipc4-topology.c +++ b/sound/soc/sof/ipc4-topology.c @@ -154,7 +154,7 @@ static void sof_ipc4_dbg_audio_format(struct device *dev, for (i = 0; i < num_format; i++, ptr = (u8 *)ptr + object_size) { fmt = ptr; dev_dbg(dev, - " #%d: %uKHz, %ubit (ch_map %#x ch_cfg %u interleaving_style %u fmt_cfg %#x)\n", + " #%d: %uHz, %ubit (ch_map %#x ch_cfg %u interleaving_style %u fmt_cfg %#x)\n", i, fmt->sampling_frequency, fmt->bit_depth, fmt->ch_map, fmt->ch_cfg, fmt->interleaving_style, fmt->fmt_cfg); } From 6d0ab3efb282191025d2583b4a5734cb54abc94f Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Tue, 7 Mar 2023 11:53:41 +0200 Subject: [PATCH 049/269] ASoC: SOF: Intel: pci-tng: revert invalid bar size setting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit ca09e2a351fbc7836ba9418304ff0c3e72addfe0 ] The logic for the ioremap is to find the resource index 3 (IRAM) and infer the BAR address by subtracting the IRAM offset. The BAR size defined in hardware specifications is 2MB. The commit 5947b2726beb6 ("ASoC: SOF: Intel: Check the bar size before remapping") tried to find the BAR size by querying the resource length instead of a pre-canned value, but by requesting the size for index 3 it only gets the size of the IRAM. That's obviously wrong and prevents the probe from proceeding. This commit attempted to fix an issue in a fuzzing/simulated environment but created another on actual devices, so the best course of action is to revert that change. Reported-by: Ferry Toth Tested-by: Ferry Toth (Intel Edison-Arduino) Link: https://github.com/thesofproject/linux/issues/3901 Signed-off-by: Pierre-Louis Bossart Reviewed-by: Péter Ujfalusi Reviewed-by: Ranjani Sridharan Signed-off-by: Peter Ujfalusi Link: https://lore.kernel.org/r/20230307095341.3222-1-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/sof/intel/pci-tng.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/sound/soc/sof/intel/pci-tng.c b/sound/soc/sof/intel/pci-tng.c index f0f6d9ba8803..0b17d1bb225e 100644 --- a/sound/soc/sof/intel/pci-tng.c +++ b/sound/soc/sof/intel/pci-tng.c @@ -75,11 +75,7 @@ static int tangier_pci_probe(struct snd_sof_dev *sdev) /* LPE base */ base = pci_resource_start(pci, desc->resindex_lpe_base) - IRAM_OFFSET; - size = pci_resource_len(pci, desc->resindex_lpe_base); - if (size < PCI_BAR_SIZE) { - dev_err(sdev->dev, "error: I/O region is too small.\n"); - return -ENODEV; - } + size = PCI_BAR_SIZE; dev_dbg(sdev->dev, "LPE PHY base at 0x%x size 0x%x", base, size); sdev->bar[DSP_BAR] = devm_ioremap(sdev->dev, base, size); From 50f6507aadf81b1bef255ab7e794b8e4758ebb70 Mon Sep 17 00:00:00 2001 From: Rander Wang Date: Tue, 7 Mar 2023 13:06:56 +0200 Subject: [PATCH 050/269] ASoC: SOF: IPC4: update gain ipc msg definition to align with fw MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit e45cd86c3a78bfb9875a5eb8ab5dab459b59bbe2 ] Recent firmware changes modified the curve duration from 32 to 64 bits, which breaks volume ramps. A simple solution would be to change the definition, but unfortunately the ASoC topology framework only supports up to 32 bit tokens. This patch suggests breaking the 64 bit value in low and high parts, with only the low-part extracted from topology and high-part only zeroes. Since the curve duration is represented in hundred of nanoseconds, we can still represent a 400s ramp, which is just fine. The defacto ABI change has no effect on existing users since the IPC4 firmware has not been released just yet. Link: https://github.com/thesofproject/linux/issues/4026 Signed-off-by: Rander Wang Reviewed-by: Ranjani Sridharan Reviewed-by: Pierre-Louis Bossart Reviewed-by: Bard Liao Reviewed-by: Péter Ujfalusi Signed-off-by: Peter Ujfalusi Link: https://lore.kernel.org/r/20230307110656.1816-1-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/sof/ipc4-control.c | 3 ++- sound/soc/sof/ipc4-topology.c | 4 ++-- sound/soc/sof/ipc4-topology.h | 6 ++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/sound/soc/sof/ipc4-control.c b/sound/soc/sof/ipc4-control.c index 0d5a578c3496..7442ec1c5a4d 100644 --- a/sound/soc/sof/ipc4-control.c +++ b/sound/soc/sof/ipc4-control.c @@ -84,7 +84,8 @@ sof_ipc4_set_volume_data(struct snd_sof_dev *sdev, struct snd_sof_widget *swidge } /* set curve type and duration from topology */ - data.curve_duration = gain->data.curve_duration; + data.curve_duration_l = gain->data.curve_duration_l; + data.curve_duration_h = gain->data.curve_duration_h; data.curve_type = gain->data.curve_type; msg->data_ptr = &data; diff --git a/sound/soc/sof/ipc4-topology.c b/sound/soc/sof/ipc4-topology.c index 41617569f50f..49289932ba7e 100644 --- a/sound/soc/sof/ipc4-topology.c +++ b/sound/soc/sof/ipc4-topology.c @@ -106,7 +106,7 @@ static const struct sof_topology_token gain_tokens[] = { get_token_u32, offsetof(struct sof_ipc4_gain_data, curve_type)}, {SOF_TKN_GAIN_RAMP_DURATION, SND_SOC_TPLG_TUPLE_TYPE_WORD, get_token_u32, - offsetof(struct sof_ipc4_gain_data, curve_duration)}, + offsetof(struct sof_ipc4_gain_data, curve_duration_l)}, {SOF_TKN_GAIN_VAL, SND_SOC_TPLG_TUPLE_TYPE_WORD, get_token_u32, offsetof(struct sof_ipc4_gain_data, init_val)}, }; @@ -682,7 +682,7 @@ static int sof_ipc4_widget_setup_comp_pga(struct snd_sof_widget *swidget) dev_dbg(scomp->dev, "pga widget %s: ramp type: %d, ramp duration %d, initial gain value: %#x, cpc %d\n", - swidget->widget->name, gain->data.curve_type, gain->data.curve_duration, + swidget->widget->name, gain->data.curve_type, gain->data.curve_duration_l, gain->data.init_val, gain->base_config.cpc); ret = sof_ipc4_widget_setup_msg(swidget, &gain->msg); diff --git a/sound/soc/sof/ipc4-topology.h b/sound/soc/sof/ipc4-topology.h index 2363a7cc0b57..cf9d27852457 100644 --- a/sound/soc/sof/ipc4-topology.h +++ b/sound/soc/sof/ipc4-topology.h @@ -217,14 +217,16 @@ struct sof_ipc4_control_data { * @init_val: Initial value * @curve_type: Curve type * @reserved: reserved for future use - * @curve_duration: Curve duration + * @curve_duration_l: Curve duration low part + * @curve_duration_h: Curve duration high part */ struct sof_ipc4_gain_data { uint32_t channels; uint32_t init_val; uint32_t curve_type; uint32_t reserved; - uint32_t curve_duration; + uint32_t curve_duration_l; + uint32_t curve_duration_h; } __aligned(8); /** From df0833da4bfac69739b849b3dff4838e590542e5 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Mon, 6 Mar 2023 09:36:25 +1100 Subject: [PATCH 051/269] md: avoid signed overflow in slot_store() [ Upstream commit 3bc57292278a0b6ac4656cad94c14f2453344b57 ] slot_store() uses kstrtouint() to get a slot number, but stores the result in an "int" variable (by casting a pointer). This can result in a negative slot number if the unsigned int value is very large. A negative number means that the slot is empty, but setting a negative slot number this way will not remove the device from the array. I don't think this is a serious problem, but it could cause confusion and it is best to fix it. Reported-by: Dan Carpenter Signed-off-by: NeilBrown Signed-off-by: Song Liu Signed-off-by: Sasha Levin --- drivers/md/md.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/md/md.c b/drivers/md/md.c index 0368b3c51c7f..d5c362b1602b 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -3152,6 +3152,9 @@ slot_store(struct md_rdev *rdev, const char *buf, size_t len) err = kstrtouint(buf, 10, (unsigned int *)&slot); if (err < 0) return err; + if (slot < 0) + /* overflow */ + return -ENOSPC; } if (rdev->mddev->pers && slot == -1) { /* Setting 'slot' on an active array requires also From 3e48f7b53de41f5be2fe7d92b50f33d0f7ec7f91 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Mon, 13 Mar 2023 15:45:48 +0100 Subject: [PATCH 052/269] x86/PVH: obtain VGA console info in Dom0 [ Upstream commit 934ef33ee75c3846f605f18b65048acd147e3918 ] A new platform-op was added to Xen to allow obtaining the same VGA console information PV Dom0 is handed. Invoke the new function and have the output data processed by xen_init_vga(). Signed-off-by: Jan Beulich Reviewed-by: Juergen Gross Link: https://lore.kernel.org/r/8f315e92-7bda-c124-71cc-478ab9c5e610@suse.com Signed-off-by: Juergen Gross Signed-off-by: Sasha Levin --- arch/x86/xen/Makefile | 2 +- arch/x86/xen/enlighten_pv.c | 3 ++- arch/x86/xen/enlighten_pvh.c | 13 +++++++++++++ arch/x86/xen/vga.c | 5 ++--- arch/x86/xen/xen-ops.h | 7 ++++--- include/xen/interface/platform.h | 3 +++ 6 files changed, 25 insertions(+), 8 deletions(-) diff --git a/arch/x86/xen/Makefile b/arch/x86/xen/Makefile index 3c5b52fbe4a7..a9ec8c9f5c5d 100644 --- a/arch/x86/xen/Makefile +++ b/arch/x86/xen/Makefile @@ -45,6 +45,6 @@ obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= spinlock.o obj-$(CONFIG_XEN_DEBUG_FS) += debugfs.o -obj-$(CONFIG_XEN_PV_DOM0) += vga.o +obj-$(CONFIG_XEN_DOM0) += vga.o obj-$(CONFIG_XEN_EFI) += efi.o diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c index 8944726255c9..333539bdbdaa 100644 --- a/arch/x86/xen/enlighten_pv.c +++ b/arch/x86/xen/enlighten_pv.c @@ -1389,7 +1389,8 @@ asmlinkage __visible void __init xen_start_kernel(struct start_info *si) x86_platform.set_legacy_features = xen_dom0_set_legacy_features; - xen_init_vga(info, xen_start_info->console.dom0.info_size); + xen_init_vga(info, xen_start_info->console.dom0.info_size, + &boot_params.screen_info); xen_start_info->console.domU.mfn = 0; xen_start_info->console.domU.evtchn = 0; diff --git a/arch/x86/xen/enlighten_pvh.c b/arch/x86/xen/enlighten_pvh.c index bcae606bbc5c..1da44aca896c 100644 --- a/arch/x86/xen/enlighten_pvh.c +++ b/arch/x86/xen/enlighten_pvh.c @@ -43,6 +43,19 @@ void __init xen_pvh_init(struct boot_params *boot_params) x86_init.oem.banner = xen_banner; xen_efi_init(boot_params); + + if (xen_initial_domain()) { + struct xen_platform_op op = { + .cmd = XENPF_get_dom0_console, + }; + long ret = HYPERVISOR_platform_op(&op); + + if (ret > 0) + xen_init_vga(&op.u.dom0_console, + min(ret * sizeof(char), + sizeof(op.u.dom0_console)), + &boot_params->screen_info); + } } void __init mem_map_via_hcall(struct boot_params *boot_params_p) diff --git a/arch/x86/xen/vga.c b/arch/x86/xen/vga.c index 14ea32e734d5..d97adab8420f 100644 --- a/arch/x86/xen/vga.c +++ b/arch/x86/xen/vga.c @@ -9,10 +9,9 @@ #include "xen-ops.h" -void __init xen_init_vga(const struct dom0_vga_console_info *info, size_t size) +void __init xen_init_vga(const struct dom0_vga_console_info *info, size_t size, + struct screen_info *screen_info) { - struct screen_info *screen_info = &boot_params.screen_info; - /* This is drawn from a dump from vgacon:startup in * standard Linux. */ screen_info->orig_video_mode = 3; diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h index 9a8bb972193d..a10903785a33 100644 --- a/arch/x86/xen/xen-ops.h +++ b/arch/x86/xen/xen-ops.h @@ -108,11 +108,12 @@ static inline void xen_uninit_lock_cpu(int cpu) struct dom0_vga_console_info; -#ifdef CONFIG_XEN_PV_DOM0 -void __init xen_init_vga(const struct dom0_vga_console_info *, size_t size); +#ifdef CONFIG_XEN_DOM0 +void __init xen_init_vga(const struct dom0_vga_console_info *, size_t size, + struct screen_info *); #else static inline void __init xen_init_vga(const struct dom0_vga_console_info *info, - size_t size) + size_t size, struct screen_info *si) { } #endif diff --git a/include/xen/interface/platform.h b/include/xen/interface/platform.h index 655d92e803e1..79a443c65ea9 100644 --- a/include/xen/interface/platform.h +++ b/include/xen/interface/platform.h @@ -483,6 +483,8 @@ struct xenpf_symdata { }; DEFINE_GUEST_HANDLE_STRUCT(xenpf_symdata); +#define XENPF_get_dom0_console 64 + struct xen_platform_op { uint32_t cmd; uint32_t interface_version; /* XENPF_INTERFACE_VERSION */ @@ -506,6 +508,7 @@ struct xen_platform_op { struct xenpf_mem_hotadd mem_add; struct xenpf_core_parking core_parking; struct xenpf_symdata symdata; + struct dom0_vga_console_info dom0_console; uint8_t pad[128]; } u; }; From b61b21bcbb8a379269de7d2e3e9ceb42e5368ec4 Mon Sep 17 00:00:00 2001 From: Xiaogang Chen Date: Wed, 1 Mar 2023 10:21:06 -0600 Subject: [PATCH 053/269] drm/amdkfd: Fix BO offset for multi-VMA page migration [ Upstream commit b4ee9606378bb9520c94d8b96f0305c3696f5c29 ] svm_migrate_ram_to_vram migrates a prange from sys ram to vram. The prange may cross multiple vma. Need remember current dst vram offset in the TTM resource for each migration. v2: squash in warning fix (Alex) Signed-off-by: Xiaogang Chen Reviewed-by: Felix Kuehling Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/amd/amdkfd/kfd_migrate.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c index 22b077ac9a19..fad500dd224d 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c @@ -295,7 +295,7 @@ static unsigned long svm_migrate_unsuccessful_pages(struct migrate_vma *migrate) static int svm_migrate_copy_to_vram(struct amdgpu_device *adev, struct svm_range *prange, struct migrate_vma *migrate, struct dma_fence **mfence, - dma_addr_t *scratch) + dma_addr_t *scratch, uint64_t ttm_res_offset) { uint64_t npages = migrate->npages; struct device *dev = adev->dev; @@ -305,8 +305,8 @@ svm_migrate_copy_to_vram(struct amdgpu_device *adev, struct svm_range *prange, uint64_t i, j; int r; - pr_debug("svms 0x%p [0x%lx 0x%lx]\n", prange->svms, prange->start, - prange->last); + pr_debug("svms 0x%p [0x%lx 0x%lx 0x%llx]\n", prange->svms, prange->start, + prange->last, ttm_res_offset); src = scratch; dst = (uint64_t *)(scratch + npages); @@ -317,7 +317,7 @@ svm_migrate_copy_to_vram(struct amdgpu_device *adev, struct svm_range *prange, goto out; } - amdgpu_res_first(prange->ttm_res, prange->offset << PAGE_SHIFT, + amdgpu_res_first(prange->ttm_res, ttm_res_offset, npages << PAGE_SHIFT, &cursor); for (i = j = 0; i < npages; i++) { struct page *spage; @@ -404,7 +404,7 @@ out: static long svm_migrate_vma_to_vram(struct amdgpu_device *adev, struct svm_range *prange, struct vm_area_struct *vma, uint64_t start, - uint64_t end, uint32_t trigger) + uint64_t end, uint32_t trigger, uint64_t ttm_res_offset) { struct kfd_process *p = container_of(prange->svms, struct kfd_process, svms); uint64_t npages = (end - start) >> PAGE_SHIFT; @@ -457,7 +457,7 @@ svm_migrate_vma_to_vram(struct amdgpu_device *adev, struct svm_range *prange, else pr_debug("0x%lx pages migrated\n", cpages); - r = svm_migrate_copy_to_vram(adev, prange, &migrate, &mfence, scratch); + r = svm_migrate_copy_to_vram(adev, prange, &migrate, &mfence, scratch, ttm_res_offset); migrate_vma_pages(&migrate); pr_debug("successful/cpages/npages 0x%lx/0x%lx/0x%lx\n", @@ -505,6 +505,7 @@ svm_migrate_ram_to_vram(struct svm_range *prange, uint32_t best_loc, unsigned long addr, start, end; struct vm_area_struct *vma; struct amdgpu_device *adev; + uint64_t ttm_res_offset; unsigned long cpages = 0; long r = 0; @@ -525,6 +526,7 @@ svm_migrate_ram_to_vram(struct svm_range *prange, uint32_t best_loc, start = prange->start << PAGE_SHIFT; end = (prange->last + 1) << PAGE_SHIFT; + ttm_res_offset = prange->offset << PAGE_SHIFT; for (addr = start; addr < end;) { unsigned long next; @@ -534,13 +536,14 @@ svm_migrate_ram_to_vram(struct svm_range *prange, uint32_t best_loc, break; next = min(vma->vm_end, end); - r = svm_migrate_vma_to_vram(adev, prange, vma, addr, next, trigger); + r = svm_migrate_vma_to_vram(adev, prange, vma, addr, next, trigger, ttm_res_offset); if (r < 0) { pr_debug("failed %ld to migrate\n", r); break; } else { cpages += r; } + ttm_res_offset += next - addr; addr = next; } From b861f0e62ae148eb5f0a48c4d6fcd5dc03b4e252 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Tue, 7 Mar 2023 16:19:02 -0800 Subject: [PATCH 054/269] drm/amdkfd: fix a potential double free in pqm_create_queue [ Upstream commit b2ca5c5d416b4e72d1e9d0293fc720e2d525fd42 ] Set *q to NULL on errors, otherwise pqm_create_queue would free it again. Signed-off-by: Chia-I Wu Signed-off-by: Felix Kuehling Reviewed-by: Felix Kuehling Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c index 5137476ec18e..4236539d9f93 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c @@ -218,8 +218,8 @@ static int init_user_queue(struct process_queue_manager *pqm, return 0; cleanup: - if (dev->shared_resources.enable_mes) - uninit_queue(*q); + uninit_queue(*q); + *q = NULL; return retval; } From 5045360f3bb62ccd4f87202e33489f71f8bbc3fc Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Wed, 8 Mar 2023 13:37:24 -0800 Subject: [PATCH 055/269] drm/amdkfd: fix potential kgd_mem UAFs [ Upstream commit 9da050b0d9e04439d225a2ec3044af70cdfb3933 ] kgd_mem pointers returned by kfd_process_device_translate_handle are only guaranteed to be valid while p->mutex is held. As soon as the mutex is unlocked, another thread can free the BO. Signed-off-by: Chia-I Wu Signed-off-by: Felix Kuehling Reviewed-by: Felix Kuehling Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index f79b8e964140..e191d38f3da6 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c @@ -1298,14 +1298,14 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep, args->n_success = i+1; } - mutex_unlock(&p->mutex); - err = amdgpu_amdkfd_gpuvm_sync_memory(dev->adev, (struct kgd_mem *) mem, true); if (err) { pr_debug("Sync memory failed, wait interrupted by user signal\n"); goto sync_memory_failed; } + mutex_unlock(&p->mutex); + /* Flush TLBs after waiting for the page table updates to complete */ for (i = 0; i < args->n_devices; i++) { peer_pdd = kfd_process_device_data_by_id(p, devices_arr[i]); @@ -1321,9 +1321,9 @@ get_process_device_data_failed: bind_process_to_device_failed: get_mem_obj_from_handle_failed: map_memory_to_gpu_failed: +sync_memory_failed: mutex_unlock(&p->mutex); copy_from_user_failed: -sync_memory_failed: kfree(devices_arr); return err; @@ -1337,6 +1337,7 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep, void *mem; long err = 0; uint32_t *devices_arr = NULL, i; + bool flush_tlb; if (!args->n_devices) { pr_debug("Device IDs array empty\n"); @@ -1389,16 +1390,19 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep, } args->n_success = i+1; } - mutex_unlock(&p->mutex); - if (kfd_flush_tlb_after_unmap(pdd->dev)) { + flush_tlb = kfd_flush_tlb_after_unmap(pdd->dev); + if (flush_tlb) { err = amdgpu_amdkfd_gpuvm_sync_memory(pdd->dev->adev, (struct kgd_mem *) mem, true); if (err) { pr_debug("Sync memory failed, wait interrupted by user signal\n"); goto sync_memory_failed; } + } + mutex_unlock(&p->mutex); + if (flush_tlb) { /* Flush TLBs after waiting for the page table updates to complete */ for (i = 0; i < args->n_devices; i++) { peer_pdd = kfd_process_device_data_by_id(p, devices_arr[i]); @@ -1414,9 +1418,9 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep, bind_process_to_device_failed: get_mem_obj_from_handle_failed: unmap_memory_from_gpu_failed: +sync_memory_failed: mutex_unlock(&p->mutex); copy_from_user_failed: -sync_memory_failed: kfree(devices_arr); return err; } From 8b4dc07eb938d682717acfad1b9d2448c5a11a83 Mon Sep 17 00:00:00 2001 From: Kristian Overskeid Date: Tue, 7 Mar 2023 14:32:29 +0100 Subject: [PATCH 056/269] net: hsr: Don't log netdev_err message on unknown prp dst node [ Upstream commit 28e8cabe80f3e6e3c98121576eda898eeb20f1b1 ] If no frames has been exchanged with a node for HSR_NODE_FORGET_TIME, the node will be deleted from the node_db list. If a frame is sent to the node after it is deleted, a netdev_err message for each slave interface is produced. This should not happen with dan nodes because of supervision frames, but can happen often with san nodes, which clutters the kernel log. Since the hsr protocol does not support sans, this is only relevant for the prp protocol. Signed-off-by: Kristian Overskeid Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- net/hsr/hsr_framereg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/hsr/hsr_framereg.c b/net/hsr/hsr_framereg.c index 39a6088080e9..bd0afb899117 100644 --- a/net/hsr/hsr_framereg.c +++ b/net/hsr/hsr_framereg.c @@ -422,7 +422,7 @@ void hsr_addr_subst_dest(struct hsr_node *node_src, struct sk_buff *skb, node_dst = find_node_by_addr_A(&port->hsr->node_db, eth_hdr(skb)->h_dest); if (!node_dst) { - if (net_ratelimit()) + if (net_ratelimit() && port->hsr->prot_version != PRP_V1) netdev_err(skb->dev, "%s: Unknown node\n", __func__); return; } From 69280e8e669c79700346c1aa02bbb5f895b55208 Mon Sep 17 00:00:00 2001 From: Kuninori Morimoto Date: Mon, 13 Mar 2023 00:49:24 +0000 Subject: [PATCH 057/269] ALSA: asihpi: check pao in control_message() [ Upstream commit 9026c0bf233db53b86f74f4c620715e94eb32a09 ] control_message() might be called with pao = NULL. Here indicates control_message() as sample. (B) static void control_message(struct hpi_adapter_obj *pao, ...) { ^^^ struct hpi_hw_obj *phw = pao->priv; ... ^^^ } (A) void _HPI_6205(struct hpi_adapter_obj *pao, ...) { ^^^ ... case HPI_OBJ_CONTROL: (B) control_message(pao, phm, phr); break; ^^^ ... } void HPI_6205(...) { ... (A) _HPI_6205(NULL, phm, phr); ... ^^^^ } Therefore, We will get too many warning via cppcheck, like below sound/pci/asihpi/hpi6205.c:238:27: warning: Possible null pointer dereference: pao [nullPointer] struct hpi_hw_obj *phw = pao->priv; ^ sound/pci/asihpi/hpi6205.c:433:13: note: Calling function '_HPI_6205', 1st argument 'NULL' value is 0 _HPI_6205(NULL, phm, phr); ^ sound/pci/asihpi/hpi6205.c:401:20: note: Calling function 'control_message', 1st argument 'pao' value is 0 control_message(pao, phm, phr); ^ Set phr->error like many functions doing, and don't call _HPI_6205() with NULL. Signed-off-by: Kuninori Morimoto Link: https://lore.kernel.org/r/87ttypeaqz.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Takashi Iwai Signed-off-by: Sasha Levin --- sound/pci/asihpi/hpi6205.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/pci/asihpi/hpi6205.c b/sound/pci/asihpi/hpi6205.c index 27e11b5f70b9..c7d7eff86727 100644 --- a/sound/pci/asihpi/hpi6205.c +++ b/sound/pci/asihpi/hpi6205.c @@ -430,7 +430,7 @@ void HPI_6205(struct hpi_message *phm, struct hpi_response *phr) pao = hpi_find_adapter(phm->adapter_index); } else { /* subsys messages don't address an adapter */ - _HPI_6205(NULL, phm, phr); + phr->error = HPI_ERROR_INVALID_OBJ_INDEX; return; } From 32854bc91ae7debcdefdc7ae881ed83385a04792 Mon Sep 17 00:00:00 2001 From: Kuninori Morimoto Date: Mon, 13 Mar 2023 00:50:28 +0000 Subject: [PATCH 058/269] ALSA: hda/ca0132: fixup buffer overrun at tuning_ctl_set() [ Upstream commit 98e5eb110095ec77cb6d775051d181edbf9cd3cf ] tuning_ctl_set() might have buffer overrun at (X) if it didn't break from loop by matching (A). static int tuning_ctl_set(...) { for (i = 0; i < TUNING_CTLS_COUNT; i++) (A) if (nid == ca0132_tuning_ctls[i].nid) break; snd_hda_power_up(...); (X) dspio_set_param(..., ca0132_tuning_ctls[i].mid, ...); snd_hda_power_down(...); ^ return 1; } We will get below error by cppcheck sound/pci/hda/patch_ca0132.c:4229:2: note: After for loop, i has value 12 for (i = 0; i < TUNING_CTLS_COUNT; i++) ^ sound/pci/hda/patch_ca0132.c:4234:43: note: Array index out of bounds dspio_set_param(codec, ca0132_tuning_ctls[i].mid, 0x20, ^ This patch cares non match case. Signed-off-by: Kuninori Morimoto Link: https://lore.kernel.org/r/87sfe9eap7.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Takashi Iwai Signed-off-by: Sasha Levin --- sound/pci/hda/patch_ca0132.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c index acde4cd58785..099722ebaed8 100644 --- a/sound/pci/hda/patch_ca0132.c +++ b/sound/pci/hda/patch_ca0132.c @@ -4228,8 +4228,10 @@ static int tuning_ctl_set(struct hda_codec *codec, hda_nid_t nid, for (i = 0; i < TUNING_CTLS_COUNT; i++) if (nid == ca0132_tuning_ctls[i].nid) - break; + goto found; + return -EINVAL; +found: snd_hda_power_up(codec); dspio_set_param(codec, ca0132_tuning_ctls[i].mid, 0x20, ca0132_tuning_ctls[i].req, From b8b7d5eac5ee984e42424de776ec1e04d1cc2f89 Mon Sep 17 00:00:00 2001 From: Wei Chen Date: Tue, 7 Mar 2023 13:08:56 +0000 Subject: [PATCH 059/269] fbdev: tgafb: Fix potential divide by zero [ Upstream commit f90bd245de82c095187d8c2cabb8b488a39eaecc ] fb_set_var would by called when user invokes ioctl with cmd FBIOPUT_VSCREENINFO. User-provided data would finally reach tgafb_check_var. In case var->pixclock is assigned to zero, divide by zero would occur when checking whether reciprocal of var->pixclock is too high. Similar crashes have happened in other fbdev drivers. There is no check and modification on var->pixclock along the call chain to tgafb_check_var. We believe it could also be triggered in driver tgafb from user site. Signed-off-by: Wei Chen Signed-off-by: Helge Deller Signed-off-by: Sasha Levin --- drivers/video/fbdev/tgafb.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/video/fbdev/tgafb.c b/drivers/video/fbdev/tgafb.c index 251dbd282f5e..84d5daef9766 100644 --- a/drivers/video/fbdev/tgafb.c +++ b/drivers/video/fbdev/tgafb.c @@ -173,6 +173,9 @@ tgafb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) { struct tga_par *par = (struct tga_par *)info->par; + if (!var->pixclock) + return -EINVAL; + if (par->tga_type == TGA_TYPE_8PLANE) { if (var->bits_per_pixel != 8) return -EINVAL; From 2961b331b0745bdd856a0ef18e26913ee641ff86 Mon Sep 17 00:00:00 2001 From: Chen Yu Date: Wed, 8 Mar 2023 21:23:09 +0800 Subject: [PATCH 060/269] ACPI: tools: pfrut: Check if the input of level and type is in the right numeric range MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit 0bc23d8b2237a104d7f8379d687aa4cb82e2968b ] The user provides arbitrary non-numeic value to level and type, which could bring unexpected behavior. In this case the expected behavior would be to throw an error. pfrut -h usage: pfrut [OPTIONS] code injection: -l, --load -s, --stage -a, --activate -u, --update [stage and activate] -q, --query -d, --revid update telemetry: -G, --getloginfo -T, --type(0:execution, 1:history) -L, --level(0, 1, 2, 4) -R, --read -D, --revid log pfrut -T A pfrut -G log_level:0 log_type:0 log_revid:2 max_data_size:65536 chunk1_size:0 chunk2_size:1530 rollover_cnt:0 reset_cnt:17 Fix this by restricting the input to be in the expected range. Reported-by: Hariganesh Govindarajulu Suggested-by: "Rafael J. Wysocki" Signed-off-by: Chen Yu Signed-off-by: Rafael J. Wysocki Signed-off-by: Sasha Levin --- tools/power/acpi/tools/pfrut/pfrut.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tools/power/acpi/tools/pfrut/pfrut.c b/tools/power/acpi/tools/pfrut/pfrut.c index 52aa0351533c..388c9e3ad040 100644 --- a/tools/power/acpi/tools/pfrut/pfrut.c +++ b/tools/power/acpi/tools/pfrut/pfrut.c @@ -97,7 +97,7 @@ static struct option long_options[] = { static void parse_options(int argc, char **argv) { int option_index = 0; - char *pathname; + char *pathname, *endptr; int opt; pathname = strdup(argv[0]); @@ -125,11 +125,23 @@ static void parse_options(int argc, char **argv) log_getinfo = 1; break; case 'T': - log_type = atoi(optarg); + log_type = strtol(optarg, &endptr, 0); + if (*endptr || (log_type != 0 && log_type != 1)) { + printf("Number expected: type(0:execution, 1:history) - Quit.\n"); + exit(1); + } + set_log_type = 1; break; case 'L': - log_level = atoi(optarg); + log_level = strtol(optarg, &endptr, 0); + if (*endptr || + (log_level != 0 && log_level != 1 && + log_level != 2 && log_level != 4)) { + printf("Number expected: level(0, 1, 2, 4) - Quit.\n"); + exit(1); + } + set_log_level = 1; break; case 'R': From c8943cf3ab9b83c4cdc448279dfdbd03b7beeb93 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Tue, 14 Mar 2023 19:32:38 -0700 Subject: [PATCH 061/269] sched_getaffinity: don't assume 'cpumask_size()' is fully initialized [ Upstream commit 6015b1aca1a233379625385feb01dd014aca60b5 ] The getaffinity() system call uses 'cpumask_size()' to decide how big the CPU mask is - so far so good. It is indeed the allocation size of a cpumask. But the code also assumes that the whole allocation is initialized without actually doing so itself. That's wrong, because we might have fixed-size allocations (making copying and clearing more efficient), but not all of it is then necessarily used if 'nr_cpu_ids' is smaller. Having checked other users of 'cpumask_size()', they all seem to be ok, either using it purely for the allocation size, or explicitly zeroing the cpumask before using the size in bytes to copy it. See for example the ublk_ctrl_get_queue_affinity() function that uses the proper 'zalloc_cpumask_var()' to make sure that the whole mask is cleared, whether the storage is on the stack or if it was an external allocation. Fix this by just zeroing the allocation before using it. Do the same for the compat version of sched_getaffinity(), which had the same logic. Also, for consistency, make sched_getaffinity() use 'cpumask_bits()' to access the bits. For a cpumask_var_t, it ends up being a pointer to the same data either way, but it's just a good idea to treat it like you would a 'cpumask_t'. The compat case already did that. Reported-by: Ryan Roberts Link: https://lore.kernel.org/lkml/7d026744-6bd6-6827-0471-b5e8eae0be3f@arm.com/ Cc: Yury Norov Signed-off-by: Linus Torvalds Signed-off-by: Sasha Levin --- kernel/compat.c | 2 +- kernel/sched/core.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/compat.c b/kernel/compat.c index 55551989d9da..fb50f29d9b36 100644 --- a/kernel/compat.c +++ b/kernel/compat.c @@ -152,7 +152,7 @@ COMPAT_SYSCALL_DEFINE3(sched_getaffinity, compat_pid_t, pid, unsigned int, len, if (len & (sizeof(compat_ulong_t)-1)) return -EINVAL; - if (!alloc_cpumask_var(&mask, GFP_KERNEL)) + if (!zalloc_cpumask_var(&mask, GFP_KERNEL)) return -ENOMEM; ret = sched_getaffinity(pid, mask); diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 9ebfd484189b..b23dcbeacdf3 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -8304,14 +8304,14 @@ SYSCALL_DEFINE3(sched_getaffinity, pid_t, pid, unsigned int, len, if (len & (sizeof(unsigned long)-1)) return -EINVAL; - if (!alloc_cpumask_var(&mask, GFP_KERNEL)) + if (!zalloc_cpumask_var(&mask, GFP_KERNEL)) return -ENOMEM; ret = sched_getaffinity(pid, mask); if (ret == 0) { unsigned int retlen = min(len, cpumask_size()); - if (copy_to_user(user_mask_ptr, mask, retlen)) + if (copy_to_user(user_mask_ptr, cpumask_bits(mask), retlen)) ret = -EFAULT; else ret = retlen; From e437554b145296fef09a52d7111b137566e434ba Mon Sep 17 00:00:00 2001 From: Philipp Geulen Date: Mon, 13 Mar 2023 11:11:50 +0100 Subject: [PATCH 062/269] nvme-pci: add NVME_QUIRK_BOGUS_NID for Lexar NM620 [ Upstream commit b65d44fa0fe072c91bf41cd8756baa2b4c77eff2 ] Added a quirk to fix Lexar NM620 1TB SSD reporting duplicate NGUIDs. Signed-off-by: Philipp Geulen Reviewed-by: Chaitanya Kulkarni Signed-off-by: Christoph Hellwig Signed-off-by: Sasha Levin --- drivers/nvme/host/pci.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 100f774bc97f..60452f6a9f71 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -3547,6 +3547,8 @@ static const struct pci_device_id nvme_id_table[] = { .driver_data = NVME_QUIRK_BOGUS_NID, }, { PCI_DEVICE(0x1d97, 0x2263), /* Lexar NM610 */ .driver_data = NVME_QUIRK_BOGUS_NID, }, + { PCI_DEVICE(0x1d97, 0x1d97), /* Lexar NM620 */ + .driver_data = NVME_QUIRK_BOGUS_NID, }, { PCI_DEVICE(0x1d97, 0x2269), /* Lexar NM760 */ .driver_data = NVME_QUIRK_BOGUS_NID, }, { PCI_DEVICE(PCI_VENDOR_ID_AMAZON, 0x0061), From b969838c9554a0e9aab3c3cadfcd23d246bc2abe Mon Sep 17 00:00:00 2001 From: David Belanger Date: Tue, 28 Feb 2023 14:11:24 -0500 Subject: [PATCH 063/269] drm/amdkfd: Fixed kfd_process cleanup on module exit. [ Upstream commit 20bc9f76b6a2455c6b54b91ae7634f147f64987f ] Handle case when module is unloaded (kfd_exit) before a process space (mm_struct) is released. v2: Fixed potential race conditions by removing all kfd_process from the process table first, then working on releasing the resources. v3: Fixed loop element access / synchronization. Fixed extra empty lines. Signed-off-by: David Belanger Reviewed-by: Felix Kuehling Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/amd/amdkfd/kfd_module.c | 1 + drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 1 + drivers/gpu/drm/amd/amdkfd/kfd_process.c | 67 +++++++++++++++++++++--- 3 files changed, 62 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_module.c b/drivers/gpu/drm/amd/amdkfd/kfd_module.c index 09b966dc3768..aee2212e52f6 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_module.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_module.c @@ -77,6 +77,7 @@ err_ioctl: static void kfd_exit(void) { + kfd_cleanup_processes(); kfd_debugfs_fini(); kfd_process_destroy_wq(); kfd_procfs_shutdown(); diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h index bf610e3b683b..6d6588b9beed 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h @@ -928,6 +928,7 @@ bool kfd_dev_is_large_bar(struct kfd_dev *dev); int kfd_process_create_wq(void); void kfd_process_destroy_wq(void); +void kfd_cleanup_processes(void); struct kfd_process *kfd_create_process(struct file *filep); struct kfd_process *kfd_get_process(const struct task_struct *task); struct kfd_process *kfd_lookup_process_by_pasid(u32 pasid); diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c index dd351105c1bc..7f68d51541e8 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c @@ -1167,6 +1167,17 @@ static void kfd_process_free_notifier(struct mmu_notifier *mn) kfd_unref_process(container_of(mn, struct kfd_process, mmu_notifier)); } +static void kfd_process_notifier_release_internal(struct kfd_process *p) +{ + cancel_delayed_work_sync(&p->eviction_work); + cancel_delayed_work_sync(&p->restore_work); + + /* Indicate to other users that MM is no longer valid */ + p->mm = NULL; + + mmu_notifier_put(&p->mmu_notifier); +} + static void kfd_process_notifier_release(struct mmu_notifier *mn, struct mm_struct *mm) { @@ -1181,17 +1192,22 @@ static void kfd_process_notifier_release(struct mmu_notifier *mn, return; mutex_lock(&kfd_processes_mutex); + /* + * Do early return if table is empty. + * + * This could potentially happen if this function is called concurrently + * by mmu_notifier and by kfd_cleanup_pocesses. + * + */ + if (hash_empty(kfd_processes_table)) { + mutex_unlock(&kfd_processes_mutex); + return; + } hash_del_rcu(&p->kfd_processes); mutex_unlock(&kfd_processes_mutex); synchronize_srcu(&kfd_processes_srcu); - cancel_delayed_work_sync(&p->eviction_work); - cancel_delayed_work_sync(&p->restore_work); - - /* Indicate to other users that MM is no longer valid */ - p->mm = NULL; - - mmu_notifier_put(&p->mmu_notifier); + kfd_process_notifier_release_internal(p); } static const struct mmu_notifier_ops kfd_process_mmu_notifier_ops = { @@ -1200,6 +1216,43 @@ static const struct mmu_notifier_ops kfd_process_mmu_notifier_ops = { .free_notifier = kfd_process_free_notifier, }; +/* + * This code handles the case when driver is being unloaded before all + * mm_struct are released. We need to safely free the kfd_process and + * avoid race conditions with mmu_notifier that might try to free them. + * + */ +void kfd_cleanup_processes(void) +{ + struct kfd_process *p; + struct hlist_node *p_temp; + unsigned int temp; + HLIST_HEAD(cleanup_list); + + /* + * Move all remaining kfd_process from the process table to a + * temp list for processing. Once done, callback from mmu_notifier + * release will not see the kfd_process in the table and do early return, + * avoiding double free issues. + */ + mutex_lock(&kfd_processes_mutex); + hash_for_each_safe(kfd_processes_table, temp, p_temp, p, kfd_processes) { + hash_del_rcu(&p->kfd_processes); + synchronize_srcu(&kfd_processes_srcu); + hlist_add_head(&p->kfd_processes, &cleanup_list); + } + mutex_unlock(&kfd_processes_mutex); + + hlist_for_each_entry_safe(p, p_temp, &cleanup_list, kfd_processes) + kfd_process_notifier_release_internal(p); + + /* + * Ensures that all outstanding free_notifier get called, triggering + * the release of the kfd_process struct. + */ + mmu_notifier_synchronize(); +} + static int kfd_process_init_cwsr_apu(struct kfd_process *p, struct file *filep) { unsigned long offset; From 35a32a50dc8f36dd3a0f4c7510997ecc029be586 Mon Sep 17 00:00:00 2001 From: Adham Faris Date: Mon, 23 Jan 2023 10:09:01 +0200 Subject: [PATCH 064/269] net/mlx5e: Lower maximum allowed MTU in XSK to match XDP prerequisites [ Upstream commit 78dee7befd56987283c13877b834c0aa97ad51b9 ] XSK redirecting XDP programs require linearity, hence applies restrictions on the MTU. For PAGE_SIZE=4K, MTU shouldn't exceed 3498. Features that contradict with XDP such HW-LRO and HW-GRO are enforced by the driver in advance, during XSK params validation, except for MTU, which was not enforced before this patch. This has been spotted during test scenario described below: Attaching xdpsock program (PAGE_SIZE=4K), with MTU < 3498, detaching XDP program, changing the MTU to arbitrary value in the range [3499, 3754], attaching XDP program again, which ended up with failure since MTU is > 3498. This commit lowers the XSK MTU limitation to be aligned with XDP MTU limitation, since XSK socket is meaningless without XDP program. Signed-off-by: Adham Faris Reviewed-by: Tariq Toukan Signed-off-by: Saeed Mahameed Signed-off-by: Sasha Levin --- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c index 3b5c5064cfaf..5e01de4c3203 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -4104,13 +4104,17 @@ static bool mlx5e_xsk_validate_mtu(struct net_device *netdev, struct xsk_buff_pool *xsk_pool = mlx5e_xsk_get_pool(&chs->params, chs->params.xsk, ix); struct mlx5e_xsk_param xsk; + int max_xdp_mtu; if (!xsk_pool) continue; mlx5e_build_xsk_param(xsk_pool, &xsk); + max_xdp_mtu = mlx5e_xdp_max_mtu(new_params, &xsk); - if (!mlx5e_validate_xsk_param(new_params, &xsk, mdev)) { + /* Validate XSK params and XDP MTU in advance */ + if (!mlx5e_validate_xsk_param(new_params, &xsk, mdev) || + new_params->sw_mtu > max_xdp_mtu) { u32 hr = mlx5e_get_linear_rq_headroom(new_params, &xsk); int max_mtu_frame, max_mtu_page, max_mtu; @@ -4120,9 +4124,9 @@ static bool mlx5e_xsk_validate_mtu(struct net_device *netdev, */ max_mtu_frame = MLX5E_HW2SW_MTU(new_params, xsk.chunk_size - hr); max_mtu_page = MLX5E_HW2SW_MTU(new_params, SKB_MAX_HEAD(0)); - max_mtu = min(max_mtu_frame, max_mtu_page); + max_mtu = min3(max_mtu_frame, max_mtu_page, max_xdp_mtu); - netdev_err(netdev, "MTU %d is too big for an XSK running on channel %u. Try MTU <= %d\n", + netdev_err(netdev, "MTU %d is too big for an XSK running on channel %u or its redirection XDP program. Try MTU <= %d\n", new_params->sw_mtu, ix, max_mtu); return false; } From c8d88107971e13e65575885e42ce1908b0d6799e Mon Sep 17 00:00:00 2001 From: Wei Chen Date: Wed, 15 Mar 2023 07:18:31 +0000 Subject: [PATCH 065/269] fbdev: nvidia: Fix potential divide by zero [ Upstream commit 92e2a00f2987483e1f9253625828622edd442e61 ] variable var->pixclock can be set by user. In case it equals to zero, divide by zero would occur in nvidiafb_set_par. Similar crashes have happened in other fbdev drivers. There is no check and modification on var->pixclock along the call chain to nvidia_check_var and nvidiafb_set_par. We believe it could also be triggered in driver nvidia from user site. Signed-off-by: Wei Chen Signed-off-by: Helge Deller Signed-off-by: Sasha Levin --- drivers/video/fbdev/nvidia/nvidia.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/video/fbdev/nvidia/nvidia.c b/drivers/video/fbdev/nvidia/nvidia.c index a6c3bc222246..1b8904824ad8 100644 --- a/drivers/video/fbdev/nvidia/nvidia.c +++ b/drivers/video/fbdev/nvidia/nvidia.c @@ -764,6 +764,8 @@ static int nvidiafb_check_var(struct fb_var_screeninfo *var, int pitch, err = 0; NVTRACE_ENTER(); + if (!var->pixclock) + return -EINVAL; var->transp.offset = 0; var->transp.length = 0; From 8ab9eada22d93fa501072161ceedbd6d61bc8df7 Mon Sep 17 00:00:00 2001 From: Wei Chen Date: Wed, 15 Mar 2023 08:33:47 +0000 Subject: [PATCH 066/269] fbdev: intelfb: Fix potential divide by zero [ Upstream commit d823685486a3446d061fed7c7d2f80af984f119a ] Variable var->pixclock is controlled by user and can be assigned to zero. Without proper check, divide by zero would occur in intelfbhw_validate_mode and intelfbhw_mode_to_hw. Error out if var->pixclock is zero. Signed-off-by: Wei Chen Signed-off-by: Helge Deller Signed-off-by: Sasha Levin --- drivers/video/fbdev/intelfb/intelfbdrv.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/video/fbdev/intelfb/intelfbdrv.c b/drivers/video/fbdev/intelfb/intelfbdrv.c index d4a2891a9a7a..a93dd531d00d 100644 --- a/drivers/video/fbdev/intelfb/intelfbdrv.c +++ b/drivers/video/fbdev/intelfb/intelfbdrv.c @@ -1219,6 +1219,9 @@ static int intelfb_check_var(struct fb_var_screeninfo *var, dinfo = GET_DINFO(info); + if (!var->pixclock) + return -EINVAL; + /* update the pitch */ if (intelfbhw_validate_mode(dinfo, var) != 0) return -EINVAL; From 9f2a69d5e6770a064a7ae9bdab7e9907a8d292ff Mon Sep 17 00:00:00 2001 From: Wei Chen Date: Wed, 15 Mar 2023 09:05:18 +0000 Subject: [PATCH 067/269] fbdev: lxfb: Fix potential divide by zero [ Upstream commit 61ac4b86a4c047c20d5cb423ddd87496f14d9868 ] var->pixclock can be assigned to zero by user. Without proper check, divide by zero would occur in lx_set_clock. Error out if var->pixclock is zero. Signed-off-by: Wei Chen Signed-off-by: Helge Deller Signed-off-by: Sasha Levin --- drivers/video/fbdev/geode/lxfb_core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/video/fbdev/geode/lxfb_core.c b/drivers/video/fbdev/geode/lxfb_core.c index 9d26592dbfce..41fda498406c 100644 --- a/drivers/video/fbdev/geode/lxfb_core.c +++ b/drivers/video/fbdev/geode/lxfb_core.c @@ -235,6 +235,9 @@ static void get_modedb(struct fb_videomode **modedb, unsigned int *size) static int lxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) { + if (!var->pixclock) + return -EINVAL; + if (var->xres > 1920 || var->yres > 1440) return -EINVAL; From 2a3562ea9d726675e3e38094a508f8dd56726bdc Mon Sep 17 00:00:00 2001 From: Wei Chen Date: Wed, 15 Mar 2023 09:22:54 +0000 Subject: [PATCH 068/269] fbdev: au1200fb: Fix potential divide by zero [ Upstream commit 44a3b36b42acfc433aaaf526191dd12fbb919fdb ] var->pixclock can be assigned to zero by user. Without proper check, divide by zero would occur when invoking macro PICOS2KHZ in au1200fb_fb_check_var. Error out if var->pixclock is zero. Signed-off-by: Wei Chen Signed-off-by: Helge Deller Signed-off-by: Sasha Levin --- drivers/video/fbdev/au1200fb.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/video/fbdev/au1200fb.c b/drivers/video/fbdev/au1200fb.c index 81c315454428..b6b22fa4a8a0 100644 --- a/drivers/video/fbdev/au1200fb.c +++ b/drivers/video/fbdev/au1200fb.c @@ -1040,6 +1040,9 @@ static int au1200fb_fb_check_var(struct fb_var_screeninfo *var, u32 pixclock; int screen_size, plane; + if (!var->pixclock) + return -EINVAL; + plane = fbdev->plane; /* Make sure that the mode respect all LCD controller and From 6ecdea91ef95989bc55bc70e1ee2e2b98e46e93f Mon Sep 17 00:00:00 2001 From: Prarit Bhargava Date: Thu, 15 Dec 2022 10:18:16 -0500 Subject: [PATCH 069/269] tools/power turbostat: Fix /dev/cpu_dma_latency warnings [ Upstream commit 40aafc7d58d3544f152a863a0e9863014b6d5d8c ] When running as non-root the following error is seen in turbostat: turbostat: fopen /dev/cpu_dma_latency : Permission denied turbostat and the man page have information on how to avoid other permission errors, so these can be fixed the same way. Provide better /dev/cpu_dma_latency warnings that provide instructions on how to avoid the error, and update the man page. Signed-off-by: Prarit Bhargava Cc: linux-pm@vger.kernel.org Signed-off-by: Len Brown Signed-off-by: Sasha Levin --- tools/power/x86/turbostat/turbostat.8 | 2 ++ tools/power/x86/turbostat/turbostat.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/power/x86/turbostat/turbostat.8 b/tools/power/x86/turbostat/turbostat.8 index c7b26a3603af..3e1a4c4be001 100644 --- a/tools/power/x86/turbostat/turbostat.8 +++ b/tools/power/x86/turbostat/turbostat.8 @@ -344,6 +344,8 @@ Alternatively, non-root users can be enabled to run turbostat this way: # chmod +r /dev/cpu/*/msr +# chmod +r /dev/cpu_dma_latency + .B "turbostat " reads hardware counters, but doesn't write them. So it will not interfere with the OS or other programs, including diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c index aba460410dbd..c24054e3ef7a 100644 --- a/tools/power/x86/turbostat/turbostat.c +++ b/tools/power/x86/turbostat/turbostat.c @@ -5482,7 +5482,7 @@ void print_dev_latency(void) retval = read(fd, (void *)&value, sizeof(int)); if (retval != sizeof(int)) { - warn("read %s\n", path); + warn("read failed %s\n", path); close(fd); return; } From 88cdf1d8a522bad9b87b04e21b65d1d148232034 Mon Sep 17 00:00:00 2001 From: Antti Laakso Date: Wed, 25 Jan 2023 15:17:50 +0200 Subject: [PATCH 070/269] tools/power turbostat: fix decoding of HWP_STATUS [ Upstream commit 92c25393586ac799b9b7d9e50434f3c44a7622c4 ] The "excursion to minimum" information is in bit2 in HWP_STATUS MSR. Fix the bitmask used for decoding the register. Signed-off-by: Antti Laakso Reviewed-by: Artem Bityutskiy Signed-off-by: Len Brown Signed-off-by: Sasha Levin --- tools/power/x86/turbostat/turbostat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c index c24054e3ef7a..c61c6c704fbe 100644 --- a/tools/power/x86/turbostat/turbostat.c +++ b/tools/power/x86/turbostat/turbostat.c @@ -4426,7 +4426,7 @@ int print_hwp(struct thread_data *t, struct core_data *c, struct pkg_data *p) fprintf(outf, "cpu%d: MSR_HWP_STATUS: 0x%08llx " "(%sGuaranteed_Perf_Change, %sExcursion_Min)\n", - cpu, msr, ((msr) & 0x1) ? "" : "No-", ((msr) & 0x2) ? "" : "No-"); + cpu, msr, ((msr) & 0x1) ? "" : "No-", ((msr) & 0x4) ? "" : "No-"); return 0; } From 089d656992c0f5cfdd1ea3f86860d0b67d211a20 Mon Sep 17 00:00:00 2001 From: Anton Gusev Date: Tue, 31 Jan 2023 10:58:18 +0300 Subject: [PATCH 071/269] tracing: Fix wrong return in kprobe_event_gen_test.c [ Upstream commit bc4f359b3b607daac0290d0038561237a86b38cb ] Overwriting the error code with the deletion result may cause the function to return 0 despite encountering an error. Commit b111545d26c0 ("tracing: Remove the useless value assignment in test_create_synth_event()") solves a similar issue by returning the original error code, so this patch does the same. Found by Linux Verification Center (linuxtesting.org) with SVACE. Link: https://lore.kernel.org/linux-trace-kernel/20230131075818.5322-1-aagusev@ispras.ru Signed-off-by: Anton Gusev Reviewed-by: Steven Rostedt (Google) Acked-by: Masami Hiramatsu (Google) Signed-off-by: Steven Rostedt (Google) Signed-off-by: Sasha Levin --- kernel/trace/kprobe_event_gen_test.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/trace/kprobe_event_gen_test.c b/kernel/trace/kprobe_event_gen_test.c index c736487fc0e4..e0c420eb0b2b 100644 --- a/kernel/trace/kprobe_event_gen_test.c +++ b/kernel/trace/kprobe_event_gen_test.c @@ -146,7 +146,7 @@ static int __init test_gen_kprobe_cmd(void) if (trace_event_file_is_valid(gen_kprobe_test)) gen_kprobe_test = NULL; /* We got an error after creating the event, delete it */ - ret = kprobe_event_delete("gen_kprobe_test"); + kprobe_event_delete("gen_kprobe_test"); goto out; } @@ -211,7 +211,7 @@ static int __init test_gen_kretprobe_cmd(void) if (trace_event_file_is_valid(gen_kretprobe_test)) gen_kretprobe_test = NULL; /* We got an error after creating the event, delete it */ - ret = kprobe_event_delete("gen_kretprobe_test"); + kprobe_event_delete("gen_kretprobe_test"); goto out; } From bd265f2061aa9d902f605942a3cb3920729c933f Mon Sep 17 00:00:00 2001 From: Josef Bacik Date: Fri, 16 Dec 2022 15:15:54 -0500 Subject: [PATCH 072/269] btrfs: fix uninitialized variable warning in btrfs_update_block_group [ Upstream commit efbf35a102b20246cfe4409c6ae92e72ecb67ab8 ] reclaim isn't set in the alloc case, however we only care about reclaim in the !alloc case. This isn't an actual problem, however -Wmaybe-uninitialized will complain, so initialize reclaim to quiet the compiler. Reviewed-by: Qu Wenruo Reviewed-by: Johannes Thumshirn Signed-off-by: Josef Bacik Reviewed-by: David Sterba Signed-off-by: David Sterba Stable-dep-of: df384da5a49c ("btrfs: use temporary variable for space_info in btrfs_update_block_group") Signed-off-by: Sasha Levin --- fs/btrfs/block-group.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c index 4b69945755e4..380cb10f0d37 100644 --- a/fs/btrfs/block-group.c +++ b/fs/btrfs/block-group.c @@ -3259,7 +3259,7 @@ int btrfs_update_block_group(struct btrfs_trans_handle *trans, spin_unlock(&info->delalloc_root_lock); while (total) { - bool reclaim; + bool reclaim = false; cache = btrfs_lookup_block_group(info, bytenr); if (!cache) { From f5527b3b4d3dde57b15209694207f5e6d5b542e7 Mon Sep 17 00:00:00 2001 From: Josef Bacik Date: Wed, 1 Mar 2023 16:14:43 -0500 Subject: [PATCH 073/269] btrfs: use temporary variable for space_info in btrfs_update_block_group [ Upstream commit df384da5a49cace5c5e3100803dfd563fd982f93 ] We do cache->space_info->counter += num_bytes; everywhere in here. This is makes the lines longer than they need to be, and will be especially noticeable when we add the active tracking in, so add a temp variable for the space_info so this is cleaner. Reviewed-by: Naohiro Aota Reviewed-by: Johannes Thumshirn Reviewed-by: Anand Jain Signed-off-by: Josef Bacik Reviewed-by: David Sterba Signed-off-by: David Sterba Signed-off-by: Sasha Levin --- fs/btrfs/block-group.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c index 380cb10f0d37..f33ddd5922b8 100644 --- a/fs/btrfs/block-group.c +++ b/fs/btrfs/block-group.c @@ -3259,6 +3259,7 @@ int btrfs_update_block_group(struct btrfs_trans_handle *trans, spin_unlock(&info->delalloc_root_lock); while (total) { + struct btrfs_space_info *space_info; bool reclaim = false; cache = btrfs_lookup_block_group(info, bytenr); @@ -3266,6 +3267,7 @@ int btrfs_update_block_group(struct btrfs_trans_handle *trans, ret = -ENOENT; break; } + space_info = cache->space_info; factor = btrfs_bg_type_to_factor(cache->flags); /* @@ -3280,7 +3282,7 @@ int btrfs_update_block_group(struct btrfs_trans_handle *trans, byte_in_group = bytenr - cache->start; WARN_ON(byte_in_group > cache->length); - spin_lock(&cache->space_info->lock); + spin_lock(&space_info->lock); spin_lock(&cache->lock); if (btrfs_test_opt(info, SPACE_CACHE) && @@ -3293,23 +3295,23 @@ int btrfs_update_block_group(struct btrfs_trans_handle *trans, old_val += num_bytes; cache->used = old_val; cache->reserved -= num_bytes; - cache->space_info->bytes_reserved -= num_bytes; - cache->space_info->bytes_used += num_bytes; - cache->space_info->disk_used += num_bytes * factor; + space_info->bytes_reserved -= num_bytes; + space_info->bytes_used += num_bytes; + space_info->disk_used += num_bytes * factor; spin_unlock(&cache->lock); - spin_unlock(&cache->space_info->lock); + spin_unlock(&space_info->lock); } else { old_val -= num_bytes; cache->used = old_val; cache->pinned += num_bytes; - btrfs_space_info_update_bytes_pinned(info, - cache->space_info, num_bytes); - cache->space_info->bytes_used -= num_bytes; - cache->space_info->disk_used -= num_bytes * factor; + btrfs_space_info_update_bytes_pinned(info, space_info, + num_bytes); + space_info->bytes_used -= num_bytes; + space_info->disk_used -= num_bytes * factor; reclaim = should_reclaim_block_group(cache, num_bytes); spin_unlock(&cache->lock); - spin_unlock(&cache->space_info->lock); + spin_unlock(&space_info->lock); set_extent_dirty(&trans->transaction->pinned_extents, bytenr, bytenr + num_bytes - 1, From c84d28b3223655f6b83c85789d1cd024b9bedf40 Mon Sep 17 00:00:00 2001 From: Arseniy Krasnov Date: Mon, 27 Feb 2023 13:24:25 +0300 Subject: [PATCH 074/269] mtd: rawnand: meson: initialize struct with zeroes [ Upstream commit 4ce341de6c02d02aba7c78a6447ccfcaa9eeb328 ] This structure must be zeroed, because it's field 'hw->core' is used as 'parent' in 'clk_core_fill_parent_index()', but it will be uninitialized. This happens, because when this struct is not zeroed, pointer 'hw' is "initialized" by garbage, which is valid pointer, but points to some garbage. So 'hw' will be dereferenced, but 'core' contains some random data which will be interpreted as a pointer. The following backtrace is result of dereference of such pointer: [ 1.081319] __clk_register+0x414/0x820 [ 1.085113] devm_clk_register+0x64/0xd0 [ 1.088995] meson_nfc_probe+0x258/0x6ec [ 1.092875] platform_probe+0x70/0xf0 [ 1.096498] really_probe+0xc8/0x3e0 [ 1.100034] __driver_probe_device+0x84/0x190 [ 1.104346] driver_probe_device+0x44/0x120 [ 1.108487] __driver_attach+0xb4/0x220 [ 1.112282] bus_for_each_dev+0x78/0xd0 [ 1.116077] driver_attach+0x2c/0x40 [ 1.119613] bus_add_driver+0x184/0x240 [ 1.123408] driver_register+0x80/0x140 [ 1.127203] __platform_driver_register+0x30/0x40 [ 1.131860] meson_nfc_driver_init+0x24/0x30 Fixes: 1e4d3ba66888 ("mtd: rawnand: meson: fix the clock") Signed-off-by: Arseniy Krasnov Acked-by: Martin Blumenstingl Reviewed-by: Neil Armstrong Signed-off-by: Miquel Raynal Link: https://lore.kernel.org/linux-mtd/20230227102425.793841-1-AVKrasnov@sberdevices.ru Signed-off-by: Sasha Levin --- drivers/mtd/nand/raw/meson_nand.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mtd/nand/raw/meson_nand.c b/drivers/mtd/nand/raw/meson_nand.c index 5ee01231ac4c..30e326adabfc 100644 --- a/drivers/mtd/nand/raw/meson_nand.c +++ b/drivers/mtd/nand/raw/meson_nand.c @@ -991,7 +991,7 @@ static const struct mtd_ooblayout_ops meson_ooblayout_ops = { static int meson_nfc_clk_init(struct meson_nfc *nfc) { - struct clk_parent_data nfc_divider_parent_data[1]; + struct clk_parent_data nfc_divider_parent_data[1] = {0}; struct clk_init_data init = {0}; int ret; From 8b46440d1a6350fba0cda1be163e36235226e1d0 Mon Sep 17 00:00:00 2001 From: Christophe JAILLET Date: Wed, 15 Feb 2023 12:08:45 +0100 Subject: [PATCH 075/269] mtd: nand: mxic-ecc: Fix mxic_ecc_data_xfer_wait_for_completion() when irq is used [ Upstream commit 75dce6a941e3f16c3b4878c8b2f46d5d07c619ce ] wait_for_completion_timeout() and readl_poll_timeout() don't handle their return value the same way. wait_for_completion_timeout() returns 0 on time out (and >0 in all other cases) readl_poll_timeout() returns 0 on success and -ETIMEDOUT upon a timeout. In order for the error handling path to work in both cases, the logic against wait_for_completion_timeout() needs to be inverted. Fixes: 48e6633a9fa2 ("mtd: nand: mxic-ecc: Add Macronix external ECC engine support") Signed-off-by: Christophe JAILLET Signed-off-by: Miquel Raynal Link: https://lore.kernel.org/linux-mtd/beddbc374557e44ceec897e68c4a5d12764ddbb9.1676459308.git.christophe.jaillet@wanadoo.fr Signed-off-by: Sasha Levin --- drivers/mtd/nand/ecc-mxic.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/mtd/nand/ecc-mxic.c b/drivers/mtd/nand/ecc-mxic.c index 8afdca731b87..6b487ffe2f2d 100644 --- a/drivers/mtd/nand/ecc-mxic.c +++ b/drivers/mtd/nand/ecc-mxic.c @@ -429,6 +429,7 @@ static int mxic_ecc_data_xfer_wait_for_completion(struct mxic_ecc_engine *mxic) mxic_ecc_enable_int(mxic); ret = wait_for_completion_timeout(&mxic->complete, msecs_to_jiffies(1000)); + ret = ret ? 0 : -ETIMEDOUT; mxic_ecc_disable_int(mxic); } else { ret = readl_poll_timeout(mxic->regs + INTRPT_STS, val, From 60b2027077ea664016cf43f77d77e843eff582c9 Mon Sep 17 00:00:00 2001 From: Harshit Mogalapalli Date: Mon, 6 Mar 2023 11:18:24 -0800 Subject: [PATCH 076/269] ca8210: Fix unsigned mac_len comparison with zero in ca8210_skb_tx() [ Upstream commit 748b2f5e82d17480404b3e2895388fc2925f7caf ] mac_len is of type unsigned, which can never be less than zero. mac_len = ieee802154_hdr_peek_addrs(skb, &header); if (mac_len < 0) return mac_len; Change this to type int as ieee802154_hdr_peek_addrs() can return negative integers, this is found by static analysis with smatch. Fixes: 6c993779ea1d ("ca8210: fix mac_len negative array access") Signed-off-by: Harshit Mogalapalli Acked-by: Alexander Aring Reviewed-by: Simon Horman Link: https://lore.kernel.org/r/20230306191824.4115839-1-harshit.m.mogalapalli@oracle.com Signed-off-by: Stefan Schmidt Signed-off-by: Sasha Levin --- drivers/net/ieee802154/ca8210.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/ieee802154/ca8210.c b/drivers/net/ieee802154/ca8210.c index 0b0c6c0764fe..d0b5129439ed 100644 --- a/drivers/net/ieee802154/ca8210.c +++ b/drivers/net/ieee802154/ca8210.c @@ -1902,10 +1902,9 @@ static int ca8210_skb_tx( struct ca8210_priv *priv ) { - int status; struct ieee802154_hdr header = { }; struct secspec secspec; - unsigned int mac_len; + int mac_len, status; dev_dbg(&priv->spi->dev, "%s called\n", __func__); From a07cf4fd610ed4adab2eb86c56ddfed8a287c45b Mon Sep 17 00:00:00 2001 From: Rajnesh Kanwal Date: Fri, 10 Feb 2023 14:27:11 +0000 Subject: [PATCH 077/269] riscv/kvm: Fix VM hang in case of timer delta being zero. [ Upstream commit 6eff38048944cadc3cddcf117acfa5199ec32490 ] In case when VCPU is blocked due to WFI, we schedule the timer from `kvm_riscv_vcpu_timer_blocking()` to keep timer interrupt ticking. But in case when delta_ns comes to be zero, we never schedule the timer and VCPU keeps sleeping indefinitely until any activity is done with VM console. This is easily reproduce-able using kvmtool. ./lkvm-static run -c1 --console virtio -p "earlycon root=/dev/vda" \ -k ./Image -d rootfs.ext4 Also, just add a print in kvm_riscv_vcpu_vstimer_expired() to check the interrupt delivery and run `top` or similar auto-upating cmd from guest. Within sometime one can notice that print from timer expiry routine stops and the `top` cmd output will stop updating. This change fixes this by making sure we schedule the timer even with delta_ns being zero to bring the VCPU out of sleep immediately. Fixes: 8f5cb44b1bae ("RISC-V: KVM: Support sstc extension") Signed-off-by: Rajnesh Kanwal Reviewed-by: Atish Patra Signed-off-by: Anup Patel Signed-off-by: Sasha Levin --- arch/riscv/kvm/vcpu_timer.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/arch/riscv/kvm/vcpu_timer.c b/arch/riscv/kvm/vcpu_timer.c index ad34519c8a13..3ac2ff6a65da 100644 --- a/arch/riscv/kvm/vcpu_timer.c +++ b/arch/riscv/kvm/vcpu_timer.c @@ -147,10 +147,8 @@ static void kvm_riscv_vcpu_timer_blocking(struct kvm_vcpu *vcpu) return; delta_ns = kvm_riscv_delta_cycles2ns(t->next_cycles, gt, t); - if (delta_ns) { - hrtimer_start(&t->hrt, ktime_set(0, delta_ns), HRTIMER_MODE_REL); - t->next_set = true; - } + hrtimer_start(&t->hrt, ktime_set(0, delta_ns), HRTIMER_MODE_REL); + t->next_set = true; } static void kvm_riscv_vcpu_timer_unblocking(struct kvm_vcpu *vcpu) From 2cdbcff99f15db86a10672fb220379a1ae46ccae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Fri, 17 Mar 2023 11:20:04 +0100 Subject: [PATCH 078/269] mips: bmips: BCM6358: disable RAC flush for TP1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit ab327f8acdf8d06601fbf058859a539a9422afff ] RAC flush causes kernel panics on BCM6358 with EHCI/OHCI when booting from TP1: [ 3.881739] usb 1-1: new high-speed USB device number 2 using ehci-platform [ 3.895011] Reserved instruction in kernel code[#1]: [ 3.900113] CPU: 0 PID: 1 Comm: init Not tainted 5.10.16 #0 [ 3.905829] $ 0 : 00000000 10008700 00000000 77d94060 [ 3.911238] $ 4 : 7fd1f088 00000000 81431cac 81431ca0 [ 3.916641] $ 8 : 00000000 ffffefff 8075cd34 00000000 [ 3.922043] $12 : 806f8d40 f3e812b7 00000000 000d9aaa [ 3.927446] $16 : 7fd1f068 7fd1f080 7ff559b8 81428470 [ 3.932848] $20 : 00000000 00000000 55590000 77d70000 [ 3.938251] $24 : 00000018 00000010 [ 3.943655] $28 : 81430000 81431e60 81431f28 800157fc [ 3.949058] Hi : 00000000 [ 3.952013] Lo : 00000000 [ 3.955019] epc : 80015808 setup_sigcontext+0x54/0x24c [ 3.960464] ra : 800157fc setup_sigcontext+0x48/0x24c [ 3.965913] Status: 10008703 KERNEL EXL IE [ 3.970216] Cause : 00800028 (ExcCode 0a) [ 3.974340] PrId : 0002a010 (Broadcom BMIPS4350) [ 3.979170] Modules linked in: ohci_platform ohci_hcd fsl_mph_dr_of ehci_platform ehci_fsl ehci_hcd gpio_button_hotplug usbcore nls_base usb_common [ 3.992907] Process init (pid: 1, threadinfo=(ptrval), task=(ptrval), tls=77e22ec8) [ 4.000776] Stack : 81431ef4 7fd1f080 81431f28 81428470 7fd1f068 81431edc 7ff559b8 81428470 [ 4.009467] 81431f28 7fd1f080 55590000 77d70000 77d5498c 80015c70 806f0000 8063ae74 [ 4.018149] 08100002 81431f28 0000000a 08100002 81431f28 0000000a 77d6b418 00000003 [ 4.026831] ffffffff 80016414 80080734 81431ecc 81431ecc 00000001 00000000 04000000 [ 4.035512] 77d54874 00000000 00000000 00000000 00000000 00000012 00000002 00000000 [ 4.044196] ... [ 4.046706] Call Trace: [ 4.049238] [<80015808>] setup_sigcontext+0x54/0x24c [ 4.054356] [<80015c70>] setup_frame+0xdc/0x124 [ 4.059015] [<80016414>] do_notify_resume+0x1dc/0x288 [ 4.064207] [<80011b50>] work_notifysig+0x10/0x18 [ 4.069036] [ 4.070538] Code: 8fc300b4 00001025 26240008 ac830004 3c048063 0c0228aa 24846a00 26240010 [ 4.080686] [ 4.082517] ---[ end trace 22a8edb41f5f983b ]--- [ 4.087374] Kernel panic - not syncing: Fatal exception [ 4.092753] Rebooting in 1 seconds.. Because the bootloader (CFE) is not initializing the Read-ahead cache properly on the second thread (TP1). Since the RAC was not initialized properly, we should avoid flushing it at the risk of corrupting the instruction stream as seen in the trace above. Fixes: d59098a0e9cb ("MIPS: bmips: use generic dma noncoherent ops") Signed-off-by: Álvaro Fernández Rojas Signed-off-by: Thomas Bogendoerfer Signed-off-by: Sasha Levin --- arch/mips/bmips/dma.c | 5 +++++ arch/mips/bmips/setup.c | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/arch/mips/bmips/dma.c b/arch/mips/bmips/dma.c index 33788668cbdb..3779e7855bd7 100644 --- a/arch/mips/bmips/dma.c +++ b/arch/mips/bmips/dma.c @@ -5,6 +5,8 @@ #include #include +bool bmips_rac_flush_disable; + void arch_sync_dma_for_cpu_all(void) { void __iomem *cbr = BMIPS_GET_CBR(); @@ -15,6 +17,9 @@ void arch_sync_dma_for_cpu_all(void) boot_cpu_type() != CPU_BMIPS4380) return; + if (unlikely(bmips_rac_flush_disable)) + return; + /* Flush stale data out of the readahead cache */ cfg = __raw_readl(cbr + BMIPS_RAC_CONFIG); __raw_writel(cfg | 0x100, cbr + BMIPS_RAC_CONFIG); diff --git a/arch/mips/bmips/setup.c b/arch/mips/bmips/setup.c index e95b3f78e7cd..549a6392a3d2 100644 --- a/arch/mips/bmips/setup.c +++ b/arch/mips/bmips/setup.c @@ -35,6 +35,8 @@ #define REG_BCM6328_OTP ((void __iomem *)CKSEG1ADDR(0x1000062c)) #define BCM6328_TP1_DISABLED BIT(9) +extern bool bmips_rac_flush_disable; + static const unsigned long kbase = VMLINUX_LOAD_ADDRESS & 0xfff00000; struct bmips_quirk { @@ -104,6 +106,12 @@ static void bcm6358_quirks(void) * disable SMP for now */ bmips_smp_enabled = 0; + + /* + * RAC flush causes kernel panics on BCM6358 when booting from TP1 + * because the bootloader is not initializing it properly. + */ + bmips_rac_flush_disable = !!(read_c0_brcm_cmt_local() & (1 << 31)); } static void bcm6368_quirks(void) From e39afd6095a59ddecfd44422241db7605c8846e7 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Mon, 20 Mar 2023 15:28:38 +0100 Subject: [PATCH 079/269] ALSA: usb-audio: Fix recursive locking at XRUN during syncing [ Upstream commit 8c721c53dda512fdd48eb24d6d99e56deee57898 ] The recent support of low latency playback in USB-audio driver made the snd_usb_queue_pending_output_urbs() function to be called via PCM ack ops. In the new code path, the function is performed already in the PCM stream lock. The problem is that, when an XRUN is detected, the function calls snd_pcm_xrun() to notify, but snd_pcm_xrun() is supposed to be called only outside the stream lock. As a result, it leads to a deadlock of PCM stream locking. For avoiding such a recursive locking, this patch adds an additional check to the code paths in PCM core that call the ack callback; now it checks the error code from the callback, and if it's -EPIPE, the XRUN is handled in the PCM core side gracefully. Along with it, the USB-audio driver code is changed to follow that, i.e. -EPIPE is returned instead of the explicit snd_pcm_xrun() call when the function is performed already in the stream lock. Fixes: d5f871f89e21 ("ALSA: usb-audio: Improved lowlatency playback support") Reported-and-tested-by: John Keeping Link: https://lore.kernel.org/r/20230317195128.3911155-1-john@metanate.com Reviewed-by: Jaroslav Kysela Reviewed-by; Takashi Sakamoto Link: https://lore.kernel.org/r/20230320142838.494-1-tiwai@suse.de Signed-off-by: Takashi Iwai Signed-off-by: Sasha Levin --- sound/core/pcm_lib.c | 2 ++ sound/usb/endpoint.c | 22 ++++++++++++++-------- sound/usb/endpoint.h | 4 ++-- sound/usb/pcm.c | 2 +- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c index 8b6aeb8a78f7..02fd65993e7e 100644 --- a/sound/core/pcm_lib.c +++ b/sound/core/pcm_lib.c @@ -2155,6 +2155,8 @@ int pcm_lib_apply_appl_ptr(struct snd_pcm_substream *substream, ret = substream->ops->ack(substream); if (ret < 0) { runtime->control->appl_ptr = old_appl_ptr; + if (ret == -EPIPE) + __snd_pcm_xrun(substream); return ret; } } diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c index 419302e2057e..647fa054d8b1 100644 --- a/sound/usb/endpoint.c +++ b/sound/usb/endpoint.c @@ -455,8 +455,8 @@ static void push_back_to_ready_list(struct snd_usb_endpoint *ep, * This function is used both for implicit feedback endpoints and in low- * latency playback mode. */ -void snd_usb_queue_pending_output_urbs(struct snd_usb_endpoint *ep, - bool in_stream_lock) +int snd_usb_queue_pending_output_urbs(struct snd_usb_endpoint *ep, + bool in_stream_lock) { bool implicit_fb = snd_usb_endpoint_implicit_feedback_sink(ep); @@ -480,7 +480,7 @@ void snd_usb_queue_pending_output_urbs(struct snd_usb_endpoint *ep, spin_unlock_irqrestore(&ep->lock, flags); if (ctx == NULL) - return; + break; /* copy over the length information */ if (implicit_fb) { @@ -495,11 +495,14 @@ void snd_usb_queue_pending_output_urbs(struct snd_usb_endpoint *ep, break; if (err < 0) { /* push back to ready list again for -EAGAIN */ - if (err == -EAGAIN) + if (err == -EAGAIN) { push_back_to_ready_list(ep, ctx); - else + break; + } + + if (!in_stream_lock) notify_xrun(ep); - return; + return -EPIPE; } err = usb_submit_urb(ctx->urb, GFP_ATOMIC); @@ -507,13 +510,16 @@ void snd_usb_queue_pending_output_urbs(struct snd_usb_endpoint *ep, usb_audio_err(ep->chip, "Unable to submit urb #%d: %d at %s\n", ctx->index, err, __func__); - notify_xrun(ep); - return; + if (!in_stream_lock) + notify_xrun(ep); + return -EPIPE; } set_bit(ctx->index, &ep->active_mask); atomic_inc(&ep->submitted_urbs); } + + return 0; } /* diff --git a/sound/usb/endpoint.h b/sound/usb/endpoint.h index 924f4351588c..c09f68ce08b1 100644 --- a/sound/usb/endpoint.h +++ b/sound/usb/endpoint.h @@ -52,7 +52,7 @@ int snd_usb_endpoint_implicit_feedback_sink(struct snd_usb_endpoint *ep); int snd_usb_endpoint_next_packet_size(struct snd_usb_endpoint *ep, struct snd_urb_ctx *ctx, int idx, unsigned int avail); -void snd_usb_queue_pending_output_urbs(struct snd_usb_endpoint *ep, - bool in_stream_lock); +int snd_usb_queue_pending_output_urbs(struct snd_usb_endpoint *ep, + bool in_stream_lock); #endif /* __USBAUDIO_ENDPOINT_H */ diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index 2c5765cbed2d..1e1d7458bce1 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -1595,7 +1595,7 @@ static int snd_usb_pcm_playback_ack(struct snd_pcm_substream *substream) * outputs here */ if (!ep->active_mask) - snd_usb_queue_pending_output_urbs(ep, true); + return snd_usb_queue_pending_output_urbs(ep, true); return 0; } From ba85e83f9330b73db7d3f8ea0bf6fc41e65a8633 Mon Sep 17 00:00:00 2001 From: Yoshihiro Shimoda Date: Fri, 10 Mar 2023 21:34:58 +0900 Subject: [PATCH 080/269] PCI: dwc: Fix PORT_LINK_CONTROL update when CDM check enabled [ Upstream commit cdce67099117ece371582f706c6eff7d3a65326d ] If CDM_CHECK is enabled (by the DT "snps,enable-cdm-check" property), 'val' is overwritten by PCIE_PL_CHK_REG_CONTROL_STATUS initialization. Commit ec7b952f453c ("PCI: dwc: Always enable CDM check if "snps,enable-cdm-check" exists") did not account for further usage of 'val', so we wrote improper values to PCIE_PORT_LINK_CONTROL when the CDM check is enabled. Move the PCIE_PORT_LINK_CONTROL update to be completely after the PCIE_PL_CHK_REG_CONTROL_STATUS register initialization. [bhelgaas: commit log adapted from Serge's version] Fixes: ec7b952f453c ("PCI: dwc: Always enable CDM check if "snps,enable-cdm-check" exists") Link: https://lore.kernel.org/r/20230310123510.675685-2-yoshihiro.shimoda.uh@renesas.com Signed-off-by: Yoshihiro Shimoda Signed-off-by: Bjorn Helgaas Reviewed-by: Serge Semin Signed-off-by: Sasha Levin --- drivers/pci/controller/dwc/pcie-designware.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/controller/dwc/pcie-designware.c index 9e4d96e5a3f5..575834cae3b9 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -645,11 +645,6 @@ void dw_pcie_setup(struct dw_pcie *pci) dw_pcie_writel_dbi(pci, PCIE_LINK_WIDTH_SPEED_CONTROL, val); } - val = dw_pcie_readl_dbi(pci, PCIE_PORT_LINK_CONTROL); - val &= ~PORT_LINK_FAST_LINK_MODE; - val |= PORT_LINK_DLL_LINK_EN; - dw_pcie_writel_dbi(pci, PCIE_PORT_LINK_CONTROL, val); - if (of_property_read_bool(np, "snps,enable-cdm-check")) { val = dw_pcie_readl_dbi(pci, PCIE_PL_CHK_REG_CONTROL_STATUS); val |= PCIE_PL_CHK_REG_CHK_REG_CONTINUOUS | @@ -657,6 +652,11 @@ void dw_pcie_setup(struct dw_pcie *pci) dw_pcie_writel_dbi(pci, PCIE_PL_CHK_REG_CONTROL_STATUS, val); } + val = dw_pcie_readl_dbi(pci, PCIE_PORT_LINK_CONTROL); + val &= ~PORT_LINK_FAST_LINK_MODE; + val |= PORT_LINK_DLL_LINK_EN; + dw_pcie_writel_dbi(pci, PCIE_PORT_LINK_CONTROL, val); + of_property_read_u32(np, "num-lanes", &pci->num_lanes); if (!pci->num_lanes) { dev_dbg(pci->dev, "Using h/w default number of lanes\n"); From 6c69f1ab7bdc97b2df37a9d3f7bbdb45ddbeab17 Mon Sep 17 00:00:00 2001 From: Mark Pearson Date: Sun, 19 Mar 2023 20:32:18 -0400 Subject: [PATCH 081/269] platform/x86: think-lmi: add missing type attribute MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit 583329dcf22e568a328a944f20427ccfc95dce01 ] This driver was missing the mandatory type attribute...oops. Add it in along with logic to determine whether the attribute is an enumeration type or a string by parsing the possible_values attribute. Upstream bug https://bugzilla.kernel.org/show_bug.cgi?id=216460 Fixes: a40cd7ef22fb ("platform/x86: think-lmi: Add WMI interface support on Lenovo platforms") Signed-off-by: Mark Pearson Link: https://lore.kernel.org/r/20230320003221.561750-1-mpearson-lenovo@squebb.ca Reviewed-by: Thomas Weißschuh Reviewed-by: Hans de Goede Signed-off-by: Hans de Goede Signed-off-by: Sasha Levin --- drivers/platform/x86/think-lmi.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c index a01a92769c1a..07c9dc21eff5 100644 --- a/drivers/platform/x86/think-lmi.c +++ b/drivers/platform/x86/think-lmi.c @@ -947,6 +947,20 @@ static ssize_t possible_values_show(struct kobject *kobj, struct kobj_attribute return sysfs_emit(buf, "%s\n", setting->possible_values); } +static ssize_t type_show(struct kobject *kobj, struct kobj_attribute *attr, + char *buf) +{ + struct tlmi_attr_setting *setting = to_tlmi_attr_setting(kobj); + + if (setting->possible_values) { + /* Figure out what setting type is as BIOS does not return this */ + if (strchr(setting->possible_values, ',')) + return sysfs_emit(buf, "enumeration\n"); + } + /* Anything else is going to be a string */ + return sysfs_emit(buf, "string\n"); +} + static ssize_t current_value_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count) @@ -1036,10 +1050,13 @@ static struct kobj_attribute attr_possible_values = __ATTR_RO(possible_values); static struct kobj_attribute attr_current_val = __ATTR_RW_MODE(current_value, 0600); +static struct kobj_attribute attr_type = __ATTR_RO(type); + static struct attribute *tlmi_attrs[] = { &attr_displ_name.attr, &attr_current_val.attr, &attr_possible_values.attr, + &attr_type.attr, NULL }; From 3991efd0c1aa989a23c4b922c7d36a31b6aab83c Mon Sep 17 00:00:00 2001 From: Mark Pearson Date: Sun, 19 Mar 2023 20:32:19 -0400 Subject: [PATCH 082/269] platform/x86: think-lmi: use correct possible_values delimiters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit 45e21289bfc6e257885514790a8a8887da822d40 ] firmware-attributes class requires that possible values are delimited using ';' but the Lenovo firmware uses ',' instead. Parse string and replace where appropriate. Suggested-by: Thomas Weißschuh Fixes: a40cd7ef22fb ("platform/x86: think-lmi: Add WMI interface support on Lenovo platforms") Signed-off-by: Mark Pearson Link: https://lore.kernel.org/r/20230320003221.561750-2-mpearson-lenovo@squebb.ca Reviewed-by: Thomas Weißschuh Reviewed-by: Hans de Goede Signed-off-by: Hans de Goede Signed-off-by: Sasha Levin --- drivers/platform/x86/think-lmi.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c index 07c9dc21eff5..62241680c8a9 100644 --- a/drivers/platform/x86/think-lmi.c +++ b/drivers/platform/x86/think-lmi.c @@ -954,7 +954,7 @@ static ssize_t type_show(struct kobject *kobj, struct kobj_attribute *attr, if (setting->possible_values) { /* Figure out what setting type is as BIOS does not return this */ - if (strchr(setting->possible_values, ',')) + if (strchr(setting->possible_values, ';')) return sysfs_emit(buf, "enumeration\n"); } /* Anything else is going to be a string */ @@ -1441,6 +1441,13 @@ static int tlmi_analyze(void) pr_info("Error retrieving possible values for %d : %s\n", i, setting->display_name); } + /* + * firmware-attributes requires that possible_values are separated by ';' but + * Lenovo FW uses ','. Replace appropriately. + */ + if (setting->possible_values) + strreplace(setting->possible_values, ',', ';'); + kobject_init(&setting->kobj, &tlmi_attr_setting_ktype); tlmi_priv.setting[i] = setting; kfree(item); From 5b2e50d837f2c55a1101e26c4250f4462eb16f75 Mon Sep 17 00:00:00 2001 From: Mark Pearson Date: Sun, 19 Mar 2023 20:32:20 -0400 Subject: [PATCH 083/269] platform/x86: think-lmi: only display possible_values if available MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit cf337f27f3bfc4aeab4954c468239fd6233c7638 ] Some attributes don't have any values available. In those cases don't make the possible_values entry visible. Fixes: a40cd7ef22fb ("platform/x86: think-lmi: Add WMI interface support on Lenovo platforms") Signed-off-by: Mark Pearson Link: https://lore.kernel.org/r/20230320003221.561750-3-mpearson-lenovo@squebb.ca Reviewed-by: Thomas Weißschuh Reviewed-by: Hans de Goede Signed-off-by: Hans de Goede Signed-off-by: Sasha Levin --- drivers/platform/x86/think-lmi.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c index 62241680c8a9..ccd085bacf29 100644 --- a/drivers/platform/x86/think-lmi.c +++ b/drivers/platform/x86/think-lmi.c @@ -941,9 +941,6 @@ static ssize_t possible_values_show(struct kobject *kobj, struct kobj_attribute { struct tlmi_attr_setting *setting = to_tlmi_attr_setting(kobj); - if (!tlmi_priv.can_get_bios_selections) - return -EOPNOTSUPP; - return sysfs_emit(buf, "%s\n", setting->possible_values); } @@ -1052,6 +1049,18 @@ static struct kobj_attribute attr_current_val = __ATTR_RW_MODE(current_value, 06 static struct kobj_attribute attr_type = __ATTR_RO(type); +static umode_t attr_is_visible(struct kobject *kobj, + struct attribute *attr, int n) +{ + struct tlmi_attr_setting *setting = to_tlmi_attr_setting(kobj); + + /* We don't want to display possible_values attributes if not available */ + if ((attr == &attr_possible_values.attr) && (!setting->possible_values)) + return 0; + + return attr->mode; +} + static struct attribute *tlmi_attrs[] = { &attr_displ_name.attr, &attr_current_val.attr, @@ -1061,6 +1070,7 @@ static struct attribute *tlmi_attrs[] = { }; static const struct attribute_group tlmi_attr_group = { + .is_visible = attr_is_visible, .attrs = tlmi_attrs, }; From f0a67ad7dce49d93570edc795e0312bb787f19bb Mon Sep 17 00:00:00 2001 From: Mark Pearson Date: Sun, 19 Mar 2023 20:32:21 -0400 Subject: [PATCH 084/269] platform/x86: think-lmi: Add possible_values for ThinkStation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit 8a02d70679fc1c434401863333c8ea7dbf201494 ] ThinkStation platforms don't support the API to return possible_values but instead embed it in the settings string. Try and extract this information and set the possible_values attribute appropriately. Fixes: a40cd7ef22fb ("platform/x86: think-lmi: Add WMI interface support on Lenovo platforms") Signed-off-by: Mark Pearson Link: https://lore.kernel.org/r/20230320003221.561750-4-mpearson-lenovo@squebb.ca Reviewed-by: Thomas Weißschuh Reviewed-by: Hans de Goede Signed-off-by: Hans de Goede Signed-off-by: Sasha Levin --- drivers/platform/x86/think-lmi.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c index ccd085bacf29..74af3e593b2c 100644 --- a/drivers/platform/x86/think-lmi.c +++ b/drivers/platform/x86/think-lmi.c @@ -1450,6 +1450,26 @@ static int tlmi_analyze(void) if (ret || !setting->possible_values) pr_info("Error retrieving possible values for %d : %s\n", i, setting->display_name); + } else { + /* + * Older Thinkstations don't support the bios_selections API. + * Instead they store this as a [Optional:Option1,Option2] section of the + * name string. + * Try and pull that out if it's available. + */ + char *item, *optstart, *optend; + + if (!tlmi_setting(setting->index, &item, LENOVO_BIOS_SETTING_GUID)) { + optstart = strstr(item, "[Optional:"); + if (optstart) { + optstart += strlen("[Optional:"); + optend = strstr(optstart, "]"); + if (optend) + setting->possible_values = + kstrndup(optstart, optend - optstart, + GFP_KERNEL); + } + } } /* * firmware-attributes requires that possible_values are separated by ';' but From 53dc0b69fbac82ab6b2286728e100a77a862fa83 Mon Sep 17 00:00:00 2001 From: Liang He Date: Wed, 22 Mar 2023 11:30:57 +0800 Subject: [PATCH 085/269] platform/surface: aggregator: Add missing fwnode_handle_put() [ Upstream commit acd0acb802b90f88d19ad4337183e44fd0f77c50 ] In fwnode_for_each_child_node(), we should add fwnode_handle_put() when break out of the iteration fwnode_for_each_child_node() as it will automatically increase and decrease the refcounter. Fixes: fc622b3d36e6 ("platform/surface: Set up Surface Aggregator device registry") Signed-off-by: Liang He Reviewed-by: Maximilian Luz Link: https://lore.kernel.org/r/20230322033057.1855741-1-windhl@126.com Reviewed-by: Hans de Goede Signed-off-by: Hans de Goede Signed-off-by: Sasha Levin --- drivers/platform/surface/aggregator/bus.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/platform/surface/aggregator/bus.c b/drivers/platform/surface/aggregator/bus.c index de539938896e..b501a79f2a08 100644 --- a/drivers/platform/surface/aggregator/bus.c +++ b/drivers/platform/surface/aggregator/bus.c @@ -485,8 +485,10 @@ int __ssam_register_clients(struct device *parent, struct ssam_controller *ctrl, * device, so ignore it and continue with the next one. */ status = ssam_add_client_device(parent, ctrl, child); - if (status && status != -ENODEV) + if (status && status != -ENODEV) { + fwnode_handle_put(child); goto err; + } } return 0; From 43b70c9c4c903ec400de32604f298b3147a1ab0a Mon Sep 17 00:00:00 2001 From: Arseniy Krasnov Date: Mon, 13 Mar 2023 10:32:44 +0300 Subject: [PATCH 086/269] mtd: rawnand: meson: invalidate cache on polling ECC bit [ Upstream commit e732e39ed9929c05fd219035bc9653ba4100d4fa ] 'info_buf' memory is cached and driver polls ECC bit in it. This bit is set by the NAND controller. If 'usleep_range()' returns before device sets this bit, 'info_buf' will be cached and driver won't see update of this bit and will loop forever. Fixes: 8fae856c5350 ("mtd: rawnand: meson: add support for Amlogic NAND flash controller") Signed-off-by: Arseniy Krasnov Reviewed-by: Neil Armstrong Signed-off-by: Miquel Raynal Link: https://lore.kernel.org/linux-mtd/d4ef0bd6-816e-f6fa-9385-f05f775f0ae2@sberdevices.ru Signed-off-by: Sasha Levin --- drivers/mtd/nand/raw/meson_nand.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/mtd/nand/raw/meson_nand.c b/drivers/mtd/nand/raw/meson_nand.c index 30e326adabfc..a28574c00900 100644 --- a/drivers/mtd/nand/raw/meson_nand.c +++ b/drivers/mtd/nand/raw/meson_nand.c @@ -176,6 +176,7 @@ struct meson_nfc { dma_addr_t daddr; dma_addr_t iaddr; + u32 info_bytes; unsigned long assigned_cs; }; @@ -503,6 +504,7 @@ static int meson_nfc_dma_buffer_setup(struct nand_chip *nand, void *databuf, nfc->daddr, datalen, dir); return ret; } + nfc->info_bytes = infolen; cmd = GENCMDIADDRL(NFC_CMD_AIL, nfc->iaddr); writel(cmd, nfc->reg_base + NFC_REG_CMD); @@ -520,8 +522,10 @@ static void meson_nfc_dma_buffer_release(struct nand_chip *nand, struct meson_nfc *nfc = nand_get_controller_data(nand); dma_unmap_single(nfc->dev, nfc->daddr, datalen, dir); - if (infolen) + if (infolen) { dma_unmap_single(nfc->dev, nfc->iaddr, infolen, dir); + nfc->info_bytes = 0; + } } static int meson_nfc_read_buf(struct nand_chip *nand, u8 *buf, int len) @@ -710,6 +714,8 @@ static void meson_nfc_check_ecc_pages_valid(struct meson_nfc *nfc, usleep_range(10, 15); /* info is updated by nfc dma engine*/ smp_rmb(); + dma_sync_single_for_cpu(nfc->dev, nfc->iaddr, nfc->info_bytes, + DMA_FROM_DEVICE); ret = *info & ECC_COMPLETE; } while (!ret); } From c5a159d5e5591bc9336048db05752d018f3cd9fe Mon Sep 17 00:00:00 2001 From: Siddharth Kawar Date: Mon, 20 Mar 2023 20:37:40 +0000 Subject: [PATCH 087/269] SUNRPC: fix shutdown of NFS TCP client socket [ Upstream commit 943d045a6d796175e5d08f9973953b1d2c07d797 ] NFS server Duplicate Request Cache (DRC) algorithms rely on NFS clients reconnecting using the same local TCP port. Unique NFS operations are identified by the per-TCP connection set of XIDs. This prevents file corruption when non-idempotent NFS operations are retried. Currently, NFS client TCP connections are using different local TCP ports when reconnecting to NFS servers. After an NFS server initiates shutdown of the TCP connection, the NFS client's TCP socket is set to NULL after the socket state has reached TCP_LAST_ACK(9). When reconnecting, the new socket attempts to reuse the same local port but fails with EADDRNOTAVAIL (99). This forces the socket to use a different local TCP port to reconnect to the remote NFS server. State Transition and Events: TCP_CLOSE_WAIT(8) TCP_LAST_ACK(9) connect(fail EADDRNOTAVAIL(99)) TCP_CLOSE(7) bind on new port connect success dmesg excerpts showing reconnect switching from TCP local port of 926 to 763 after commit 7c81e6a9d75b: [13354.947854] NFS call mkdir testW ... [13405.654781] RPC: xs_tcp_state_change client 00000000037d0f03... [13405.654813] RPC: state 8 conn 1 dead 0 zapped 1 sk_shutdown 1 [13405.654826] RPC: xs_data_ready... [13405.654892] RPC: xs_tcp_state_change client 00000000037d0f03... [13405.654895] RPC: state 9 conn 0 dead 0 zapped 1 sk_shutdown 3 [13405.654899] RPC: xs_tcp_state_change client 00000000037d0f03... [13405.654900] RPC: state 9 conn 0 dead 0 zapped 1 sk_shutdown 3 [13405.654950] RPC: xs_connect scheduled xprt 00000000037d0f03 [13405.654975] RPC: xs_bind 0.0.0.0:926: ok (0) [13405.654980] RPC: worker connecting xprt 00000000037d0f03 via tcp to 10.101.6.228 (port 2049) [13405.654991] RPC: 00000000037d0f03 connect status 99 connected 0 sock state 7 [13405.655001] RPC: xs_tcp_state_change client 00000000037d0f03... [13405.655002] RPC: state 7 conn 0 dead 0 zapped 1 sk_shutdown 3 [13405.655024] RPC: xs_connect scheduled xprt 00000000037d0f03 [13405.655038] RPC: xs_bind 0.0.0.0:763: ok (0) [13405.655041] RPC: worker connecting xprt 00000000037d0f03 via tcp to 10.101.6.228 (port 2049) [13405.655065] RPC: 00000000037d0f03 connect status 115 connected 0 sock state 2 State Transition and Events with patch applied: TCP_CLOSE_WAIT(8) TCP_LAST_ACK(9) TCP_CLOSE(7) connect(reuse of port succeeds) dmesg excerpts showing reconnect on same TCP local port of 936 with patch applied: [ 257.139935] NFS: mkdir(0:59/560857152), testQ [ 257.139937] NFS call mkdir testQ ... [ 307.822702] RPC: state 8 conn 1 dead 0 zapped 1 sk_shutdown 1 [ 307.822714] RPC: xs_data_ready... [ 307.822817] RPC: xs_tcp_state_change client 00000000ce702f14... [ 307.822821] RPC: state 9 conn 0 dead 0 zapped 1 sk_shutdown 3 [ 307.822825] RPC: xs_tcp_state_change client 00000000ce702f14... [ 307.822826] RPC: state 9 conn 0 dead 0 zapped 1 sk_shutdown 3 [ 307.823606] RPC: xs_tcp_state_change client 00000000ce702f14... [ 307.823609] RPC: state 7 conn 0 dead 0 zapped 1 sk_shutdown 3 [ 307.823629] RPC: xs_tcp_state_change client 00000000ce702f14... [ 307.823632] RPC: state 7 conn 0 dead 0 zapped 1 sk_shutdown 3 [ 307.823676] RPC: xs_connect scheduled xprt 00000000ce702f14 [ 307.823704] RPC: xs_bind 0.0.0.0:936: ok (0) [ 307.823709] RPC: worker connecting xprt 00000000ce702f14 via tcp to 10.101.1.30 (port 2049) [ 307.823748] RPC: 00000000ce702f14 connect status 115 connected 0 sock state 2 ... [ 314.916193] RPC: state 7 conn 0 dead 0 zapped 1 sk_shutdown 3 [ 314.916251] RPC: xs_connect scheduled xprt 00000000ce702f14 [ 314.916282] RPC: xs_bind 0.0.0.0:936: ok (0) [ 314.916292] RPC: worker connecting xprt 00000000ce702f14 via tcp to 10.101.1.30 (port 2049) [ 314.916342] RPC: 00000000ce702f14 connect status 115 connected 0 sock state 2 Fixes: 7c81e6a9d75b ("SUNRPC: Tweak TCP socket shutdown in the RPC client") Signed-off-by: Siddharth Rajendra Kawar Signed-off-by: Anna Schumaker Signed-off-by: Sasha Levin --- net/sunrpc/xprtsock.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index b3ab6d9d752e..05aa32696e7c 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -2153,6 +2153,7 @@ static void xs_tcp_shutdown(struct rpc_xprt *xprt) switch (skst) { case TCP_FIN_WAIT1: case TCP_FIN_WAIT2: + case TCP_LAST_ACK: break; case TCP_ESTABLISHED: case TCP_CLOSE_WAIT: From 1da26860a348e898120deade0ee4813039caee7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Thu, 23 Mar 2023 09:34:17 +0100 Subject: [PATCH 088/269] sfc: ef10: don't overwrite offload features at NIC reset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit ca4a80e4bb7e87daf33b27d2ab9e4f5311018a89 ] At NIC reset, some offload features related to encapsulated traffic might have changed (this mainly happens if the firmware-variant is changed with the sfboot userspace tool). Because of this, features are checked and set again at reset time. However, this was not done right, and some features were improperly overwritten at NIC reset: - Tunneled IPv6 segmentation was always disabled - Features disabled with ethtool were reenabled - Features that becomes unsupported after the reset were not disabled Also, checking if the device supports IPV6_CSUM to enable TSO6 is no longer necessary because all currently supported devices support it. Additionally, move the assignment of some other features to the EF10_OFFLOAD_FEATURES macro, like it is done in ef100, leaving the selection of features in efx_pci_probe_post_io a bit cleaner. Fixes: ffffd2454a7a ("sfc: correctly advertise tunneled IPv6 segmentation") Fixes: 24b2c3751aa3 ("sfc: advertise encapsulated offloads on EF10") Reported-by: Tianhao Zhao Suggested-by: Jonathan Cooper Tested-by: Jonathan Cooper Signed-off-by: Íñigo Huguet Acked-by: Edward Cree Link: https://lore.kernel.org/r/20230323083417.7345-1-ihuguet@redhat.com Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ethernet/sfc/ef10.c | 40 ++++++++++++++++++++++----------- drivers/net/ethernet/sfc/efx.c | 17 ++++++-------- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c index 7022fb2005a2..d30459dbfe8f 100644 --- a/drivers/net/ethernet/sfc/ef10.c +++ b/drivers/net/ethernet/sfc/ef10.c @@ -1304,7 +1304,8 @@ static void efx_ef10_fini_nic(struct efx_nic *efx) static int efx_ef10_init_nic(struct efx_nic *efx) { struct efx_ef10_nic_data *nic_data = efx->nic_data; - netdev_features_t hw_enc_features = 0; + struct net_device *net_dev = efx->net_dev; + netdev_features_t tun_feats, tso_feats; int rc; if (nic_data->must_check_datapath_caps) { @@ -1349,20 +1350,30 @@ static int efx_ef10_init_nic(struct efx_nic *efx) nic_data->must_restore_piobufs = false; } - /* add encapsulated checksum offload features */ + /* encap features might change during reset if fw variant changed */ if (efx_has_cap(efx, VXLAN_NVGRE) && !efx_ef10_is_vf(efx)) - hw_enc_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; - /* add encapsulated TSO features */ + net_dev->hw_enc_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; + else + net_dev->hw_enc_features &= ~(NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM); + + tun_feats = NETIF_F_GSO_UDP_TUNNEL | NETIF_F_GSO_GRE | + NETIF_F_GSO_UDP_TUNNEL_CSUM | NETIF_F_GSO_GRE_CSUM; + tso_feats = NETIF_F_TSO | NETIF_F_TSO6; + if (efx_has_cap(efx, TX_TSO_V2_ENCAP)) { - netdev_features_t encap_tso_features; - - encap_tso_features = NETIF_F_GSO_UDP_TUNNEL | NETIF_F_GSO_GRE | - NETIF_F_GSO_UDP_TUNNEL_CSUM | NETIF_F_GSO_GRE_CSUM; - - hw_enc_features |= encap_tso_features | NETIF_F_TSO; - efx->net_dev->features |= encap_tso_features; + /* If this is first nic_init, or if it is a reset and a new fw + * variant has added new features, enable them by default. + * If the features are not new, maintain their current value. + */ + if (!(net_dev->hw_features & tun_feats)) + net_dev->features |= tun_feats; + net_dev->hw_enc_features |= tun_feats | tso_feats; + net_dev->hw_features |= tun_feats; + } else { + net_dev->hw_enc_features &= ~(tun_feats | tso_feats); + net_dev->hw_features &= ~tun_feats; + net_dev->features &= ~tun_feats; } - efx->net_dev->hw_enc_features = hw_enc_features; /* don't fail init if RSS setup doesn't work */ rc = efx->type->rx_push_rss_config(efx, false, @@ -4021,7 +4032,10 @@ static unsigned int efx_ef10_recycle_ring_size(const struct efx_nic *efx) NETIF_F_HW_VLAN_CTAG_FILTER | \ NETIF_F_IPV6_CSUM | \ NETIF_F_RXHASH | \ - NETIF_F_NTUPLE) + NETIF_F_NTUPLE | \ + NETIF_F_SG | \ + NETIF_F_RXCSUM | \ + NETIF_F_RXALL) const struct efx_nic_type efx_hunt_a0_vf_nic_type = { .is_vf = true, diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c index 3a86f1213a05..6a1bff54bc6c 100644 --- a/drivers/net/ethernet/sfc/efx.c +++ b/drivers/net/ethernet/sfc/efx.c @@ -1001,21 +1001,18 @@ static int efx_pci_probe_post_io(struct efx_nic *efx) } /* Determine netdevice features */ - net_dev->features |= (efx->type->offload_features | NETIF_F_SG | - NETIF_F_TSO | NETIF_F_RXCSUM | NETIF_F_RXALL); - if (efx->type->offload_features & (NETIF_F_IPV6_CSUM | NETIF_F_HW_CSUM)) { - net_dev->features |= NETIF_F_TSO6; - if (efx_has_cap(efx, TX_TSO_V2_ENCAP)) - net_dev->hw_enc_features |= NETIF_F_TSO6; - } - /* Check whether device supports TSO */ - if (!efx->type->tso_versions || !efx->type->tso_versions(efx)) - net_dev->features &= ~NETIF_F_ALL_TSO; + net_dev->features |= efx->type->offload_features; + + /* Add TSO features */ + if (efx->type->tso_versions && efx->type->tso_versions(efx)) + net_dev->features |= NETIF_F_TSO | NETIF_F_TSO6; + /* Mask for features that also apply to VLAN devices */ net_dev->vlan_features |= (NETIF_F_HW_CSUM | NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_ALL_TSO | NETIF_F_RXCSUM); + /* Determine user configurable features */ net_dev->hw_features |= net_dev->features & ~efx->fixed_features; /* Disable receiving frames with bad FCS, by default. */ From 9526222c1a11a18a0e038a28c5597edde394dc8a Mon Sep 17 00:00:00 2001 From: Tomas Henzl Date: Fri, 24 Mar 2023 16:01:34 +0100 Subject: [PATCH 089/269] scsi: megaraid_sas: Fix crash after a double completion [ Upstream commit 2309df27111a51734cb9240b4d3c25f2f3c6ab06 ] When a physical disk is attached directly "without JBOD MAP support" (see megasas_get_tm_devhandle()) then there is no real error handling in the driver. Return FAILED instead of SUCCESS. Fixes: 18365b138508 ("megaraid_sas: Task management support") Signed-off-by: Tomas Henzl Link: https://lore.kernel.org/r/20230324150134.14696-1-thenzl@redhat.com Signed-off-by: Martin K. Petersen Signed-off-by: Sasha Levin --- drivers/scsi/megaraid/megaraid_sas_fusion.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c index 6650f8c8e9b0..af22ffa8f6a2 100644 --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c @@ -4768,7 +4768,7 @@ int megasas_task_abort_fusion(struct scsi_cmnd *scmd) devhandle = megasas_get_tm_devhandle(scmd->device); if (devhandle == (u16)ULONG_MAX) { - ret = SUCCESS; + ret = FAILED; sdev_printk(KERN_INFO, scmd->device, "task abort issued for invalid devhandle\n"); mutex_unlock(&instance->reset_mutex); @@ -4838,7 +4838,7 @@ int megasas_reset_target_fusion(struct scsi_cmnd *scmd) devhandle = megasas_get_tm_devhandle(scmd->device); if (devhandle == (u16)ULONG_MAX) { - ret = SUCCESS; + ret = FAILED; sdev_printk(KERN_INFO, scmd->device, "target reset issued for invalid devhandle\n"); mutex_unlock(&instance->reset_mutex); From 089e6318e1de220ec85f55bcc66d69cecd49bae3 Mon Sep 17 00:00:00 2001 From: Jerry Snitselaar Date: Fri, 24 Mar 2023 12:32:04 -0700 Subject: [PATCH 090/269] scsi: mpt3sas: Don't print sense pool info twice [ Upstream commit d684a7a26f7d2c7122a4581ac966ed64e88fb29c ] _base_allocate_sense_dma_pool() already prints out the sense pool information, so don't print it a second time after calling it in _base_allocate_memory_pools(). In addition the version in _base_allocate_memory_pools() was using the wrong size value, sz, which was last assigned when doing some nvme calculations instead of sense_sz to determine the pool size in kilobytes. Cc: Sathya Prakash Cc: Sreekanth Reddy Cc: Suganath Prabu Subramani Cc: MPT-FusionLinux.pdl@broadcom.com Cc: "Martin K. Petersen" Cc: "James E.J. Bottomley" Fixes: 970ac2bb70e7 ("scsi: mpt3sas: Force sense buffer allocations to be within same 4 GB region") Signed-off-by: Jerry Snitselaar Link: https://lore.kernel.org/r/20230324193204.567932-1-jsnitsel@redhat.com Signed-off-by: Martin K. Petersen Signed-off-by: Sasha Levin --- drivers/scsi/mpt3sas/mpt3sas_base.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c index 2ee9ea57554d..14ae0a9c5d3d 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_base.c +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c @@ -6616,11 +6616,6 @@ _base_allocate_memory_pools(struct MPT3SAS_ADAPTER *ioc) else if (rc == -EAGAIN) goto try_32bit_dma; total_sz += sense_sz; - ioc_info(ioc, - "sense pool(0x%p)- dma(0x%llx): depth(%d)," - "element_size(%d), pool_size(%d kB)\n", - ioc->sense, (unsigned long long)ioc->sense_dma, ioc->scsiio_depth, - SCSI_SENSE_BUFFERSIZE, sz / 1024); /* reply pool, 4 byte align */ sz = ioc->reply_free_queue_depth * ioc->reply_sz; rc = _base_allocate_reply_pool(ioc, sz); From cc0f9bb99735d2b68fac68f37b585d615728ce5b Mon Sep 17 00:00:00 2001 From: Ahmad Fatoum Date: Thu, 23 Mar 2023 11:37:35 +0100 Subject: [PATCH 091/269] net: dsa: realtek: fix out-of-bounds access MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit b93eb564869321d0dffaf23fcc5c88112ed62466 ] The probe function sets priv->chip_data to (void *)priv + sizeof(*priv) with the expectation that priv has enough trailing space. However, only realtek-smi actually allocated this chip_data space. Do likewise in realtek-mdio to fix out-of-bounds accesses. These accesses likely went unnoticed so far, because of an (unused) buf[4096] member in struct realtek_priv, which caused kmalloc to round up the allocated buffer to a big enough size, so nothing of value was overwritten. With a different allocator (like in the barebox bootloader port of the driver) or with KASAN, the memory corruption becomes quickly apparent. Fixes: aac94001067d ("net: dsa: realtek: add new mdio interface for drivers") Reviewed-by: Florian Fainelli Reviewed-by: Luiz Angelo Daros de Luca Reviewed-by: Alvin Šipraga Reviewed-by: Linus Walleij Signed-off-by: Ahmad Fatoum Link: https://lore.kernel.org/r/20230323103735.2331786-1-a.fatoum@pengutronix.de Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/dsa/realtek/realtek-mdio.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/dsa/realtek/realtek-mdio.c b/drivers/net/dsa/realtek/realtek-mdio.c index 3e54fac5f902..5a8fe707ca25 100644 --- a/drivers/net/dsa/realtek/realtek-mdio.c +++ b/drivers/net/dsa/realtek/realtek-mdio.c @@ -21,6 +21,7 @@ #include #include +#include #include #include "realtek.h" @@ -152,7 +153,9 @@ static int realtek_mdio_probe(struct mdio_device *mdiodev) if (!var) return -EINVAL; - priv = devm_kzalloc(&mdiodev->dev, sizeof(*priv), GFP_KERNEL); + priv = devm_kzalloc(&mdiodev->dev, + size_add(sizeof(*priv), var->chip_data_sz), + GFP_KERNEL); if (!priv) return -ENOMEM; From 43b4331ce0cd88ccba425e0702ba35c1a52daccf Mon Sep 17 00:00:00 2001 From: SongJingyi Date: Fri, 24 Mar 2023 11:14:06 +0800 Subject: [PATCH 092/269] ptp_qoriq: fix memory leak in probe() [ Upstream commit f33642224e38d7e0d59336e10e7b4e370b1c4506 ] Smatch complains that: drivers/ptp/ptp_qoriq.c ptp_qoriq_probe() warn: 'base' from ioremap() not released. Fix this by revising the parameter from 'ptp_qoriq->base' to 'base'. This is only a bug if ptp_qoriq_init() returns on the first -ENODEV error path. For other error paths ptp_qoriq->base and base are the same. And this change makes the code more readable. Fixes: 7f4399ba405b ("ptp_qoriq: fix NULL access if ptp dt node missing") Signed-off-by: SongJingyi Reviewed-by: Dan Carpenter Reviewed-by: Dongliang Mu Link: https://lore.kernel.org/r/20230324031406.1895159-1-u201912584@hust.edu.cn Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/ptp/ptp_qoriq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/ptp/ptp_qoriq.c b/drivers/ptp/ptp_qoriq.c index 08f4cf0ad9e3..8fa9772acf79 100644 --- a/drivers/ptp/ptp_qoriq.c +++ b/drivers/ptp/ptp_qoriq.c @@ -601,7 +601,7 @@ static int ptp_qoriq_probe(struct platform_device *dev) return 0; no_clock: - iounmap(ptp_qoriq->base); + iounmap(base); no_ioremap: release_resource(ptp_qoriq->rsrc); no_resource: From 9524c2ea47ccac230693135014880417102bddf7 Mon Sep 17 00:00:00 2001 From: Oleksij Rempel Date: Fri, 24 Mar 2023 09:06:03 +0100 Subject: [PATCH 093/269] net: dsa: microchip: ksz8: fix ksz8_fdb_dump() [ Upstream commit 88e943e83827a349f70c3464b3eba7260be7461d ] Before this patch, the ksz8_fdb_dump() function had several issues, such as uninitialized variables and incorrect usage of source port as a bit mask. These problems caused inaccurate reporting of vid information and port assignment in the bridge fdb. Fixes: e587be759e6e ("net: dsa: microchip: update fdb add/del/dump in ksz_common") Signed-off-by: Oleksij Rempel Acked-by: Arun Ramadoss Reviewed-by: Florian Fainelli Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/dsa/microchip/ksz8795.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c index bd3b133e7085..22250ae222b5 100644 --- a/drivers/net/dsa/microchip/ksz8795.c +++ b/drivers/net/dsa/microchip/ksz8795.c @@ -907,15 +907,14 @@ int ksz8_fdb_dump(struct ksz_device *dev, int port, u16 entries = 0; u8 timestamp = 0; u8 fid; - u8 member; - struct alu_struct alu; + u8 src_port; + u8 mac[ETH_ALEN]; do { - alu.is_static = false; - ret = ksz8_r_dyn_mac_table(dev, i, alu.mac, &fid, &member, + ret = ksz8_r_dyn_mac_table(dev, i, mac, &fid, &src_port, ×tamp, &entries); - if (!ret && (member & BIT(port))) { - ret = cb(alu.mac, alu.fid, alu.is_static, data); + if (!ret && port == src_port) { + ret = cb(mac, fid, false, data); if (ret) break; } From 91840597869daf7faa35e6387f5b9636678b9e9c Mon Sep 17 00:00:00 2001 From: Oleksij Rempel Date: Fri, 24 Mar 2023 09:06:04 +0100 Subject: [PATCH 094/269] net: dsa: microchip: ksz8: fix ksz8_fdb_dump() to extract all 1024 entries [ Upstream commit 5d90492dd4ff50ad65c582c76c345d0b90001728 ] Current ksz8_fdb_dump() is able to extract only max 249 entries on the ksz8863/ksz8873 series of switches. This happened due to wrong bit mask and offset calculation. This commit corrects the issue and allows for the complete extraction of all 1024 entries. Fixes: 4b20a07e103f ("net: dsa: microchip: ksz8795: add support for ksz88xx chips") Signed-off-by: Oleksij Rempel Acked-by: Arun Ramadoss Reviewed-by: Florian Fainelli Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/dsa/microchip/ksz_common.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index 07f6776bba12..b15a0b844c34 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -360,10 +360,10 @@ static const u32 ksz8863_masks[] = { [STATIC_MAC_TABLE_FID] = GENMASK(29, 26), [STATIC_MAC_TABLE_OVERRIDE] = BIT(20), [STATIC_MAC_TABLE_FWD_PORTS] = GENMASK(18, 16), - [DYNAMIC_MAC_TABLE_ENTRIES_H] = GENMASK(5, 0), + [DYNAMIC_MAC_TABLE_ENTRIES_H] = GENMASK(1, 0), [DYNAMIC_MAC_TABLE_MAC_EMPTY] = BIT(7), [DYNAMIC_MAC_TABLE_NOT_READY] = BIT(7), - [DYNAMIC_MAC_TABLE_ENTRIES] = GENMASK(31, 28), + [DYNAMIC_MAC_TABLE_ENTRIES] = GENMASK(31, 24), [DYNAMIC_MAC_TABLE_FID] = GENMASK(19, 16), [DYNAMIC_MAC_TABLE_SRC_PORT] = GENMASK(21, 20), [DYNAMIC_MAC_TABLE_TIMESTAMP] = GENMASK(23, 22), @@ -373,7 +373,7 @@ static u8 ksz8863_shifts[] = { [VLAN_TABLE_MEMBERSHIP_S] = 16, [STATIC_MAC_FWD_PORTS] = 16, [STATIC_MAC_FID] = 22, - [DYNAMIC_MAC_ENTRIES_H] = 3, + [DYNAMIC_MAC_ENTRIES_H] = 8, [DYNAMIC_MAC_ENTRIES] = 24, [DYNAMIC_MAC_FID] = 16, [DYNAMIC_MAC_TIMESTAMP] = 24, From 628f76b8ae7b8d63f41b5fa9086b2060390a6096 Mon Sep 17 00:00:00 2001 From: Oleksij Rempel Date: Fri, 24 Mar 2023 09:06:05 +0100 Subject: [PATCH 095/269] net: dsa: microchip: ksz8: fix offset for the timestamp filed [ Upstream commit b3177aab89be540dc50d2328427b073361093e38 ] We are using wrong offset, so we will get not a timestamp. Fixes: 4b20a07e103f ("net: dsa: microchip: ksz8795: add support for ksz88xx chips") Signed-off-by: Oleksij Rempel Acked-by: Arun Ramadoss Reviewed-by: Florian Fainelli Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/dsa/microchip/ksz_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index b15a0b844c34..160d7ad26ca0 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -376,7 +376,7 @@ static u8 ksz8863_shifts[] = { [DYNAMIC_MAC_ENTRIES_H] = 8, [DYNAMIC_MAC_ENTRIES] = 24, [DYNAMIC_MAC_FID] = 16, - [DYNAMIC_MAC_TIMESTAMP] = 24, + [DYNAMIC_MAC_TIMESTAMP] = 22, [DYNAMIC_MAC_SRC_PORT] = 20, }; From 8d86ea65e0f19d978d8b359d081f45b7684301cc Mon Sep 17 00:00:00 2001 From: Oleksij Rempel Date: Fri, 24 Mar 2023 09:06:06 +0100 Subject: [PATCH 096/269] net: dsa: microchip: ksz8: ksz8_fdb_dump: avoid extracting ghost entry from empty dynamic MAC table. [ Upstream commit 492606cdc74804d372ab1bdb8f3ef4a6fb6f9f59 ] If the dynamic MAC table is empty, we will still extract one outdated entry. Fix it by using correct bit offset. Fixes: 4b20a07e103f ("net: dsa: microchip: ksz8795: add support for ksz88xx chips") Signed-off-by: Oleksij Rempel Acked-by: Arun Ramadoss Reviewed-by: Florian Fainelli Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/dsa/microchip/ksz_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index 160d7ad26ca0..286e081830e7 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -361,7 +361,7 @@ static const u32 ksz8863_masks[] = { [STATIC_MAC_TABLE_OVERRIDE] = BIT(20), [STATIC_MAC_TABLE_FWD_PORTS] = GENMASK(18, 16), [DYNAMIC_MAC_TABLE_ENTRIES_H] = GENMASK(1, 0), - [DYNAMIC_MAC_TABLE_MAC_EMPTY] = BIT(7), + [DYNAMIC_MAC_TABLE_MAC_EMPTY] = BIT(2), [DYNAMIC_MAC_TABLE_NOT_READY] = BIT(7), [DYNAMIC_MAC_TABLE_ENTRIES] = GENMASK(31, 24), [DYNAMIC_MAC_TABLE_FID] = GENMASK(19, 16), From adfe556652033b6f878edb760992965aba730537 Mon Sep 17 00:00:00 2001 From: Oleksij Rempel Date: Fri, 24 Mar 2023 09:06:07 +0100 Subject: [PATCH 097/269] net: dsa: microchip: ksz8863_smi: fix bulk access [ Upstream commit 392ff7a84cbca34118ca286dfbfe8aee24605897 ] Current regmap bulk access is broken, resulting to wrong reads/writes if ksz_read64/ksz_write64 functions are used. Mostly this issue was visible by using ksz8_fdb_dump(), which returned corrupt MAC address. The reason is that regmap was configured to have max_raw_read/write, even if ksz8863_mdio_read/write functions are able to handle unlimited read/write accesses. On ksz_read64 function we are using multiple 32bit accesses by incrementing each access by 1 instead of 4. Resulting buffer had 01234567.12345678 instead of 01234567.89abcdef. We have multiple ways to fix it: - enable 4 byte alignment for 32bit accesses. Since the HW do not have this requirement. It will break driver. - disable max_raw_* limit. This patch is removing max_raw_* limit for regmap accesses in ksz8863_smi. Fixes: 60a364760002 ("net: dsa: microchip: Add Microchip KSZ8863 SMI based driver support") Signed-off-by: Oleksij Rempel Reviewed-by: Florian Fainelli Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/dsa/microchip/ksz8863_smi.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/net/dsa/microchip/ksz8863_smi.c b/drivers/net/dsa/microchip/ksz8863_smi.c index ddb40838181e..ed77ac222895 100644 --- a/drivers/net/dsa/microchip/ksz8863_smi.c +++ b/drivers/net/dsa/microchip/ksz8863_smi.c @@ -82,22 +82,16 @@ static const struct regmap_bus regmap_smi[] = { { .read = ksz8863_mdio_read, .write = ksz8863_mdio_write, - .max_raw_read = 1, - .max_raw_write = 1, }, { .read = ksz8863_mdio_read, .write = ksz8863_mdio_write, .val_format_endian_default = REGMAP_ENDIAN_BIG, - .max_raw_read = 2, - .max_raw_write = 2, }, { .read = ksz8863_mdio_read, .write = ksz8863_mdio_write, .val_format_endian_default = REGMAP_ENDIAN_BIG, - .max_raw_read = 4, - .max_raw_write = 4, } }; @@ -108,7 +102,6 @@ static const struct regmap_config ksz8863_regmap_config[] = { .pad_bits = 24, .val_bits = 8, .cache_type = REGCACHE_NONE, - .use_single_read = 1, .lock = ksz_regmap_lock, .unlock = ksz_regmap_unlock, }, @@ -118,7 +111,6 @@ static const struct regmap_config ksz8863_regmap_config[] = { .pad_bits = 24, .val_bits = 16, .cache_type = REGCACHE_NONE, - .use_single_read = 1, .lock = ksz_regmap_lock, .unlock = ksz_regmap_unlock, }, @@ -128,7 +120,6 @@ static const struct regmap_config ksz8863_regmap_config[] = { .pad_bits = 24, .val_bits = 32, .cache_type = REGCACHE_NONE, - .use_single_read = 1, .lock = ksz_regmap_lock, .unlock = ksz_regmap_unlock, } From 4ffa3fec1c3496c317eb54749b432f21cae77d32 Mon Sep 17 00:00:00 2001 From: Oleksij Rempel Date: Fri, 24 Mar 2023 09:06:08 +0100 Subject: [PATCH 098/269] net: dsa: microchip: ksz8: fix MDB configuration with non-zero VID [ Upstream commit 9aa5757e1f71d85facdc3c98028762cbab8d15c7 ] FID is directly mapped to VID. However, configuring a MAC address with a VID != 0 resulted in incorrect configuration due to an incorrect bit mask. This kernel commit fixed the issue by correcting the bit mask and ensuring proper configuration of MAC addresses with non-zero VID. Fixes: 4b20a07e103f ("net: dsa: microchip: ksz8795: add support for ksz88xx chips") Signed-off-by: Oleksij Rempel Acked-by: Arun Ramadoss Reviewed-by: Florian Fainelli Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/dsa/microchip/ksz_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index 286e081830e7..3d59298eaa5c 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -357,7 +357,7 @@ static const u32 ksz8863_masks[] = { [VLAN_TABLE_VALID] = BIT(19), [STATIC_MAC_TABLE_VALID] = BIT(19), [STATIC_MAC_TABLE_USE_FID] = BIT(21), - [STATIC_MAC_TABLE_FID] = GENMASK(29, 26), + [STATIC_MAC_TABLE_FID] = GENMASK(25, 22), [STATIC_MAC_TABLE_OVERRIDE] = BIT(20), [STATIC_MAC_TABLE_FWD_PORTS] = GENMASK(18, 16), [DYNAMIC_MAC_TABLE_ENTRIES_H] = GENMASK(1, 0), From 1b808f5d844953a2208dbb56aa2003503edc8d7a Mon Sep 17 00:00:00 2001 From: ChunHao Lin Date: Thu, 23 Mar 2023 22:33:09 +0800 Subject: [PATCH 099/269] r8169: fix RTL8168H and RTL8107E rx crc error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit 33189f0a94b9639c058781fcf82e4ea3803b1682 ] When link speed is 10 Mbps and temperature is under -20°C, RTL8168H and RTL8107E may have rx crc error. Disable phy 10 Mbps pll off to fix this issue. Fixes: 6e1d0b898818 ("r8169:add support for RTL8168H and RTL8107E") Signed-off-by: ChunHao Lin Reviewed-by: Heiner Kallweit Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/realtek/r8169_phy_config.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c index 930496cd34ed..b50f16786c24 100644 --- a/drivers/net/ethernet/realtek/r8169_phy_config.c +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c @@ -826,6 +826,9 @@ static void rtl8168h_2_hw_phy_config(struct rtl8169_private *tp, /* disable phy pfm mode */ phy_modify_paged(phydev, 0x0a44, 0x11, BIT(7), 0); + /* disable 10m pll off */ + phy_modify_paged(phydev, 0x0a43, 0x10, BIT(0), 0); + rtl8168g_disable_aldps(phydev); rtl8168g_config_eee_phy(phydev); } From f70328a0bfb2e3dea05682638c9c0e0d7b8ce2f2 Mon Sep 17 00:00:00 2001 From: Christophe JAILLET Date: Sun, 26 Mar 2023 10:29:33 +0200 Subject: [PATCH 100/269] regulator: Handle deferred clk [ Upstream commit 02bcba0b9f9da706d5bd1e8cbeb83493863e17b5 ] devm_clk_get() can return -EPROBE_DEFER. So it is better to return the error code from devm_clk_get(), instead of a hard coded -ENOENT. This gives more opportunities to successfully probe the driver. Fixes: 8959e5324485 ("regulator: fixed: add possibility to enable by clock") Signed-off-by: Christophe JAILLET Link: https://lore.kernel.org/r/18459fae3d017a66313699c7c8456b28158b2dd0.1679819354.git.christophe.jaillet@wanadoo.fr Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- drivers/regulator/fixed.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c index 2a9867abba20..e6724a229d23 100644 --- a/drivers/regulator/fixed.c +++ b/drivers/regulator/fixed.c @@ -215,7 +215,7 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev) drvdata->enable_clock = devm_clk_get(dev, NULL); if (IS_ERR(drvdata->enable_clock)) { dev_err(dev, "Can't get enable-clock from devicetree\n"); - return -ENOENT; + return PTR_ERR(drvdata->enable_clock); } } else if (drvtype && drvtype->has_performance_state) { drvdata->desc.ops = &fixed_voltage_domain_ops; From c942f5cd63b7c2e73fe06744185a34b03267595b Mon Sep 17 00:00:00 2001 From: Faicker Mo Date: Fri, 24 Mar 2023 17:19:54 +0800 Subject: [PATCH 101/269] net/net_failover: fix txq exceeding warning [ Upstream commit e3cbdcb0fbb61045ef3ce0e072927cc41737f787 ] The failover txq is inited as 16 queues. when a packet is transmitted from the failover device firstly, the failover device will select the queue which is returned from the primary device if the primary device is UP and running. If the primary device txq is bigger than the default 16, it can lead to the following warning: eth0 selects TX queue 18, but real number of TX queues is 16 The warning backtrace is: [ 32.146376] CPU: 18 PID: 9134 Comm: chronyd Tainted: G E 6.2.8-1.el7.centos.x86_64 #1 [ 32.147175] Hardware name: Red Hat KVM, BIOS 1.10.2-3.el7_4.1 04/01/2014 [ 32.147730] Call Trace: [ 32.147971] [ 32.148183] dump_stack_lvl+0x48/0x70 [ 32.148514] dump_stack+0x10/0x20 [ 32.148820] netdev_core_pick_tx+0xb1/0xe0 [ 32.149180] __dev_queue_xmit+0x529/0xcf0 [ 32.149533] ? __check_object_size.part.0+0x21c/0x2c0 [ 32.149967] ip_finish_output2+0x278/0x560 [ 32.150327] __ip_finish_output+0x1fe/0x2f0 [ 32.150690] ip_finish_output+0x2a/0xd0 [ 32.151032] ip_output+0x7a/0x110 [ 32.151337] ? __pfx_ip_finish_output+0x10/0x10 [ 32.151733] ip_local_out+0x5e/0x70 [ 32.152054] ip_send_skb+0x19/0x50 [ 32.152366] udp_send_skb.isra.0+0x163/0x3a0 [ 32.152736] udp_sendmsg+0xba8/0xec0 [ 32.153060] ? __folio_memcg_unlock+0x25/0x60 [ 32.153445] ? __pfx_ip_generic_getfrag+0x10/0x10 [ 32.153854] ? sock_has_perm+0x85/0xa0 [ 32.154190] inet_sendmsg+0x6d/0x80 [ 32.154508] ? inet_sendmsg+0x6d/0x80 [ 32.154838] sock_sendmsg+0x62/0x70 [ 32.155152] ____sys_sendmsg+0x134/0x290 [ 32.155499] ___sys_sendmsg+0x81/0xc0 [ 32.155828] ? _get_random_bytes.part.0+0x79/0x1a0 [ 32.156240] ? ip4_datagram_release_cb+0x5f/0x1e0 [ 32.156649] ? get_random_u16+0x69/0xf0 [ 32.156989] ? __fget_light+0xcf/0x110 [ 32.157326] __sys_sendmmsg+0xc4/0x210 [ 32.157657] ? __sys_connect+0xb7/0xe0 [ 32.157995] ? __audit_syscall_entry+0xce/0x140 [ 32.158388] ? syscall_trace_enter.isra.0+0x12c/0x1a0 [ 32.158820] __x64_sys_sendmmsg+0x24/0x30 [ 32.159171] do_syscall_64+0x38/0x90 [ 32.159493] entry_SYSCALL_64_after_hwframe+0x72/0xdc Fix that by reducing txq number as the non-existent primary-dev does. Fixes: cfc80d9a1163 ("net: Introduce net_failover driver") Signed-off-by: Faicker Mo Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/net_failover.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/net_failover.c b/drivers/net/net_failover.c index 7a28e082436e..d0c916a53d7c 100644 --- a/drivers/net/net_failover.c +++ b/drivers/net/net_failover.c @@ -130,14 +130,10 @@ static u16 net_failover_select_queue(struct net_device *dev, txq = ops->ndo_select_queue(primary_dev, skb, sb_dev); else txq = netdev_pick_tx(primary_dev, skb, NULL); - - qdisc_skb_cb(skb)->slave_dev_queue_mapping = skb->queue_mapping; - - return txq; + } else { + txq = skb_rx_queue_recorded(skb) ? skb_get_rx_queue(skb) : 0; } - txq = skb_rx_queue_recorded(skb) ? skb_get_rx_queue(skb) : 0; - /* Save the original txq to restore before passing to the driver */ qdisc_skb_cb(skb)->slave_dev_queue_mapping = skb->queue_mapping; From ce1b88dd4013fa87bf80d3e675460f399daa508a Mon Sep 17 00:00:00 2001 From: Vladimir Oltean Date: Sat, 25 Mar 2023 13:28:15 +0200 Subject: [PATCH 102/269] net: stmmac: don't reject VLANs when IFF_PROMISC is set [ Upstream commit a7602e7332b97cfbec7bacb0f1ade99a575fe104 ] The blamed commit has introduced the following tests to dwmac4_add_hw_vlan_rx_fltr(), called from stmmac_vlan_rx_add_vid(): if (hw->promisc) { netdev_err(dev, "Adding VLAN in promisc mode not supported\n"); return -EPERM; } "VLAN promiscuous" mode is keyed in this driver to IFF_PROMISC, and so, vlan_vid_add() and vlan_vid_del() calls cannot take place in IFF_PROMISC mode. I have the following 2 arguments that this restriction is.... hm, how shall I put it nicely... unproductive :) First, take the case of a Linux bridge. If the kernel is compiled with CONFIG_BRIDGE_VLAN_FILTERING=y, then this bridge shall have a VLAN database. The bridge shall try to call vlan_add_vid() on its bridge ports for each VLAN in the VLAN table. It will do this irrespectively of whether that port is *currently* VLAN-aware or not. So it will do this even when the bridge was created with vlan_filtering 0. But the Linux bridge, in VLAN-unaware mode, configures its ports in promiscuous (IFF_PROMISC) mode, so that they accept packets with any MAC DA (a switch must do this in order to forward those packets which are not directly targeted to its MAC address). As a result, the stmmac driver does not work as a bridge port, when the kernel is compiled with CONFIG_BRIDGE_VLAN_FILTERING=y. $ ip link add br0 type bridge && ip link set br0 up $ ip link set eth0 master br0 && ip link set eth0 up [ 2333.943296] br0: port 1(eth0) entered blocking state [ 2333.943381] br0: port 1(eth0) entered disabled state [ 2333.943782] device eth0 entered promiscuous mode [ 2333.944080] 4033c000.ethernet eth0: Adding VLAN in promisc mode not supported [ 2333.976509] 4033c000.ethernet eth0: failed to initialize vlan filtering on this port RTNETLINK answers: Operation not permitted Secondly, take the case of stmmac as DSA master. Some switch tagging protocols are based on 802.1Q VLANs (tag_sja1105.c), and as such, tag_8021q.c uses vlan_vid_add() to work with VLAN-filtering DSA masters. But also, when a DSA port becomes promiscuous (for example when it joins a bridge), the DSA framework also makes the DSA master promiscuous. Moreover, for every VLAN that a DSA switch sends to the CPU, DSA also programs a VLAN filter on the DSA master, because if the the DSA switch uses a tail tag, then the hardware frame parser of the DSA master will see VLAN as VLAN, and might filter them out, for being unknown. Due to the above 2 reasons, my belief is that the stmmac driver does not get to choose to not accept vlan_vid_add() calls while IFF_PROMISC is enabled, because the 2 are completely independent and there are code paths in the network stack which directly lead to this situation occurring, without the user's direct input. In fact, my belief is that "VLAN promiscuous" mode should have never been keyed on IFF_PROMISC in the first place, but rather, on the NETIF_F_HW_VLAN_CTAG_FILTER feature flag which can be toggled by the user through ethtool -k, when present in netdev->hw_features. In the stmmac driver, NETIF_F_HW_VLAN_CTAG_FILTER is only present in "features", making this feature "on [fixed]". I have this belief because I am unaware of any definition of promiscuity which implies having an effect on anything other than MAC DA (therefore not VLAN). However, I seem to be rather alone in having this opinion, looking back at the disagreements from this discussion: https://lore.kernel.org/netdev/20201110153958.ci5ekor3o2ekg3ky@ipetronik.com/ In any case, to remove the vlan_vid_add() dependency on !IFF_PROMISC, one would need to remove the check and see what fails. I guess the test was there because of the way in which dwmac4_vlan_promisc_enable() is implemented. For context, the dwmac4 supports Perfect Filtering for a limited number of VLANs - dwmac4_get_num_vlan(), priv->hw->num_vlan, with a fallback on Hash Filtering - priv->dma_cap.vlhash - see stmmac_vlan_update(), also visible in cat /sys/kernel/debug/stmmaceth/eth0/dma_cap | grep 'VLAN Hash Filtering'. The perfect filtering is based on MAC_VLAN_Tag_Filter/MAC_VLAN_Tag_Data registers, accessed in the driver through dwmac4_write_vlan_filter(). The hash filtering is based on the MAC_VLAN_Hash_Table register, named GMAC_VLAN_HASH_TABLE in the driver and accessed by dwmac4_update_vlan_hash(). The control bit for enabling hash filtering is GMAC_VLAN_VTHM (MAC_VLAN_Tag_Ctrl bit VTHM: VLAN Tag Hash Table Match Enable). Now, the description of dwmac4_vlan_promisc_enable() is that it iterates through the driver's cache of perfect filter entries (hw->vlan_filter[i], added by dwmac4_add_hw_vlan_rx_fltr()), and evicts them from hardware by unsetting their GMAC_VLAN_TAG_DATA_VEN (MAC_VLAN_Tag_Data bit VEN - VLAN Tag Enable) bit. Then it unsets the GMAC_VLAN_VTHM bit, which disables hash matching. This leaves the MAC, according to table "VLAN Match Status" from the documentation, to always enter these data paths: VID |VLAN Perfect Filter |VTHM Bit |VLAN Hash Filter |Final VLAN Match |Match Result | |Match Result |Status -------|--------------------|---------|-----------------|---------------- VID!=0 |Fail |0 |don't care |Pass So, dwmac4_vlan_promisc_enable() does its job, but by unsetting GMAC_VLAN_VTHM, it conflicts with the other code path which controls this bit: dwmac4_update_vlan_hash(), called through stmmac_update_vlan_hash() from stmmac_vlan_rx_add_vid() and from stmmac_vlan_rx_kill_vid(). This is, I guess, why dwmac4_add_hw_vlan_rx_fltr() is not allowed to run after dwmac4_vlan_promisc_enable() has unset GMAC_VLAN_VTHM: because if it did, then dwmac4_update_vlan_hash() would set GMAC_VLAN_VTHM again, breaking the "VLAN promiscuity". It turns out that dwmac4_vlan_promisc_enable() is way too complicated for what needs to be done. The MAC_Packet_Filter register also has the VTFE bit (VLAN Tag Filter Enable), which simply controls whether VLAN tagged packets which don't match the filtering tables (either perfect or hash) are dropped or not. At the moment, this driver unconditionally sets GMAC_PACKET_FILTER_VTFE if NETIF_F_HW_VLAN_CTAG_FILTER was detected through the priv->dma_cap.vlhash capability bits of the device, in stmmac_dvr_probe(). I would suggest deleting the unnecessarily complex logic from dwmac4_vlan_promisc_enable(), and simply unsetting GMAC_PACKET_FILTER_VTFE when becoming IFF_PROMISC, which has the same effect of allowing packets with any VLAN tags, but has the additional benefit of being able to run concurrently with stmmac_vlan_rx_add_vid() and stmmac_vlan_rx_kill_vid(). As much as I believe that the VTFE bit should have been exclusively controlled by NETIF_F_HW_VLAN_CTAG_FILTER through ethtool, and not by IFF_PROMISC, changing that is not a punctual fix to the problem, and it would probably break the VFFQ feature added by the later commit e0f9956a3862 ("net: stmmac: Add option for VLAN filter fail queue enable"). From the commit description, VFFQ needs IFF_PROMISC=on and VTFE=off in order to work (and this change respects that). But if VTFE was changed to be controlled through ethtool -k, then a user-visible change would have been introduced in Intel's scripts (a need to run "ethtool -k eth0 rx-vlan-filter off" which did not exist before). The patch was tested with this set of commands: ip link set eth0 up ip link add link eth0 name eth0.100 type vlan id 100 ip addr add 192.168.100.2/24 dev eth0.100 && ip link set eth0.100 up ip link set eth0 promisc on ip link add link eth0 name eth0.101 type vlan id 101 ip addr add 192.168.101.2/24 dev eth0.101 && ip link set eth0.101 up ip link set eth0 promisc off ping -c 5 192.168.100.1 ping -c 5 192.168.101.1 ip link set eth0 promisc on ping -c 5 192.168.100.1 ping -c 5 192.168.101.1 ip link del eth0.100 ip link del eth0.101 # Wait for VLAN-tagged pings from the other end... # Check with "tcpdump -i eth0 -e -n -p" and we should see them ip link set eth0 promisc off # Wait for VLAN-tagged pings from the other end... # Check with "tcpdump -i eth0 -e -n -p" and we shouldn't see them # anymore, but remove the "-p" argument from tcpdump and they're there. Fixes: c89f44ff10fd ("net: stmmac: Add support for VLAN promiscuous mode") Signed-off-by: Vladimir Oltean Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/stmicro/stmmac/common.h | 1 - .../net/ethernet/stmicro/stmmac/dwmac4_core.c | 61 +------------------ 2 files changed, 3 insertions(+), 59 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/common.h b/drivers/net/ethernet/stmicro/stmmac/common.h index ec9c130276d8..54bb072aeb2d 100644 --- a/drivers/net/ethernet/stmicro/stmmac/common.h +++ b/drivers/net/ethernet/stmicro/stmmac/common.h @@ -532,7 +532,6 @@ struct mac_device_info { unsigned int xlgmac; unsigned int num_vlan; u32 vlan_filter[32]; - unsigned int promisc; bool vlan_fail_q_en; u8 vlan_fail_q; }; diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c index e5cfde1cbd5c..188a00065f66 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c @@ -481,12 +481,6 @@ static int dwmac4_add_hw_vlan_rx_fltr(struct net_device *dev, if (vid > 4095) return -EINVAL; - if (hw->promisc) { - netdev_err(dev, - "Adding VLAN in promisc mode not supported\n"); - return -EPERM; - } - /* Single Rx VLAN Filter */ if (hw->num_vlan == 1) { /* For single VLAN filter, VID 0 means VLAN promiscuous */ @@ -536,12 +530,6 @@ static int dwmac4_del_hw_vlan_rx_fltr(struct net_device *dev, { int i, ret = 0; - if (hw->promisc) { - netdev_err(dev, - "Deleting VLAN in promisc mode not supported\n"); - return -EPERM; - } - /* Single Rx VLAN Filter */ if (hw->num_vlan == 1) { if ((hw->vlan_filter[0] & GMAC_VLAN_TAG_VID) == vid) { @@ -566,39 +554,6 @@ static int dwmac4_del_hw_vlan_rx_fltr(struct net_device *dev, return ret; } -static void dwmac4_vlan_promisc_enable(struct net_device *dev, - struct mac_device_info *hw) -{ - void __iomem *ioaddr = hw->pcsr; - u32 value; - u32 hash; - u32 val; - int i; - - /* Single Rx VLAN Filter */ - if (hw->num_vlan == 1) { - dwmac4_write_single_vlan(dev, 0); - return; - } - - /* Extended Rx VLAN Filter Enable */ - for (i = 0; i < hw->num_vlan; i++) { - if (hw->vlan_filter[i] & GMAC_VLAN_TAG_DATA_VEN) { - val = hw->vlan_filter[i] & ~GMAC_VLAN_TAG_DATA_VEN; - dwmac4_write_vlan_filter(dev, hw, i, val); - } - } - - hash = readl(ioaddr + GMAC_VLAN_HASH_TABLE); - if (hash & GMAC_VLAN_VLHT) { - value = readl(ioaddr + GMAC_VLAN_TAG); - if (value & GMAC_VLAN_VTHM) { - value &= ~GMAC_VLAN_VTHM; - writel(value, ioaddr + GMAC_VLAN_TAG); - } - } -} - static void dwmac4_restore_hw_vlan_rx_fltr(struct net_device *dev, struct mac_device_info *hw) { @@ -718,22 +673,12 @@ static void dwmac4_set_filter(struct mac_device_info *hw, } /* VLAN filtering */ - if (dev->features & NETIF_F_HW_VLAN_CTAG_FILTER) + if (dev->flags & IFF_PROMISC && !hw->vlan_fail_q_en) + value &= ~GMAC_PACKET_FILTER_VTFE; + else if (dev->features & NETIF_F_HW_VLAN_CTAG_FILTER) value |= GMAC_PACKET_FILTER_VTFE; writel(value, ioaddr + GMAC_PACKET_FILTER); - - if (dev->flags & IFF_PROMISC && !hw->vlan_fail_q_en) { - if (!hw->promisc) { - hw->promisc = 1; - dwmac4_vlan_promisc_enable(dev, hw); - } - } else { - if (hw->promisc) { - hw->promisc = 0; - dwmac4_restore_hw_vlan_rx_fltr(dev, hw); - } - } } static void dwmac4_flow_ctrl(struct mac_device_info *hw, unsigned int duplex, From 75084659969f5cd0287a86e7faae3ef0a5651d1e Mon Sep 17 00:00:00 2001 From: Imre Deak Date: Thu, 16 Mar 2023 15:17:13 +0200 Subject: [PATCH 103/269] drm/i915/tc: Fix the ICL PHY ownership check in TC-cold state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit 38c583019484f190d5b33f59b8ae810e6b1763c6 ] The commit renaming icl_tc_phy_is_in_safe_mode() to icl_tc_phy_take_ownership() didn't flip the function's return value accordingly, fix this up. This didn't cause an actual problem besides state check errors, since the function is only used during HW readout. Cc: José Roberto de Souza Fixes: f53979d68a77 ("drm/i915/display/tc: Rename safe_mode functions ownership") Reviewed-by: José Roberto de Souza Reviewed-by: Ville Syrjälä Signed-off-by: Imre Deak Link: https://patchwork.freedesktop.org/patch/msgid/20230316131724.359612-4-imre.deak@intel.com (cherry picked from commit f2c7959dda614d9b7c6a41510492de39d31705ec) Signed-off-by: Jani Nikula Signed-off-by: Sasha Levin --- drivers/gpu/drm/i915/display/intel_tc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_tc.c b/drivers/gpu/drm/i915/display/intel_tc.c index e5af955b5600..8d6dac32c896 100644 --- a/drivers/gpu/drm/i915/display/intel_tc.c +++ b/drivers/gpu/drm/i915/display/intel_tc.c @@ -440,9 +440,9 @@ static bool icl_tc_phy_is_owned(struct intel_digital_port *dig_port) PORT_TX_DFLEXDPCSSS(dig_port->tc_phy_fia)); if (val == 0xffffffff) { drm_dbg_kms(&i915->drm, - "Port %s: PHY in TCCOLD, assume safe mode\n", + "Port %s: PHY in TCCOLD, assume not owned\n", dig_port->tc_port_name); - return true; + return false; } return val & DP_PHY_MODE_STATUS_NOT_SAFE(dig_port->tc_phy_fia_idx); From 7ffdf7e6fc92d636fb0871ecbfabf710f0ba36a9 Mon Sep 17 00:00:00 2001 From: Rajvi Jingar Date: Mon, 20 Mar 2023 14:20:29 -0700 Subject: [PATCH 104/269] platform/x86/intel/pmc: Alder Lake PCH slp_s0_residency fix [ Upstream commit fb5755100a0a5aa5957bdb204fd1e249684557fc ] For platforms with Alder Lake PCH (Alder Lake S and Raptor Lake S) the slp_s0_residency attribute has been reporting the wrong value. Unlike other platforms, ADL PCH does not have a counter for the time that the SLP_S0 signal was asserted. Instead, firmware uses the aggregate of the Low Power Mode (LPM) substate counters as the S0ix value. Since the LPM counters run at a different frequency, this lead to misreporting of the S0ix time. Add a check for Alder Lake PCH and adjust the frequency accordingly when display slp_s0_residency. Fixes: bbab31101f44 ("platform/x86/intel: pmc/core: Add Alderlake support to pmc core driver") Signed-off-by: Rajvi Jingar Signed-off-by: David E. Box Reviewed-by: Rajneesh Bhardwaj Reviewed-by: Andy Shevchenko Link: https://lore.kernel.org/r/20230320212029.3154407-1-david.e.box@linux.intel.com Reviewed-by: Hans de Goede Signed-off-by: Hans de Goede Signed-off-by: Sasha Levin --- drivers/platform/x86/intel/pmc/core.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/platform/x86/intel/pmc/core.c b/drivers/platform/x86/intel/pmc/core.c index 17ec5825d13d..be0fb9401202 100644 --- a/drivers/platform/x86/intel/pmc/core.c +++ b/drivers/platform/x86/intel/pmc/core.c @@ -958,7 +958,18 @@ static inline void pmc_core_reg_write(struct pmc_dev *pmcdev, int reg_offset, static inline u64 pmc_core_adjust_slp_s0_step(struct pmc_dev *pmcdev, u32 value) { - return (u64)value * pmcdev->map->slp_s0_res_counter_step; + /* + * ADL PCH does not have the SLP_S0 counter and LPM Residency counters are + * used as a workaround which uses 30.5 usec tick. All other client + * programs have the legacy SLP_S0 residency counter that is using the 122 + * usec tick. + */ + const int lpm_adj_x2 = pmcdev->map->lpm_res_counter_step_x2; + + if (pmcdev->map == &adl_reg_map) + return (u64)value * GET_X2_COUNTER((u64)lpm_adj_x2); + else + return (u64)value * pmcdev->map->slp_s0_res_counter_step; } static int set_etr3(struct pmc_dev *pmcdev) From c11dbc7705b3739974ac31a13f4ab81e61a5fb07 Mon Sep 17 00:00:00 2001 From: Ivan Orlov Date: Tue, 14 Mar 2023 16:04:45 +0400 Subject: [PATCH 105/269] can: bcm: bcm_tx_setup(): fix KMSAN uninit-value in vfs_write [ Upstream commit 2b4c99f7d9a57ecd644eda9b1fb0a1072414959f ] Syzkaller reported the following issue: ===================================================== BUG: KMSAN: uninit-value in aio_rw_done fs/aio.c:1520 [inline] BUG: KMSAN: uninit-value in aio_write+0x899/0x950 fs/aio.c:1600 aio_rw_done fs/aio.c:1520 [inline] aio_write+0x899/0x950 fs/aio.c:1600 io_submit_one+0x1d1c/0x3bf0 fs/aio.c:2019 __do_sys_io_submit fs/aio.c:2078 [inline] __se_sys_io_submit+0x293/0x770 fs/aio.c:2048 __x64_sys_io_submit+0x92/0xd0 fs/aio.c:2048 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd Uninit was created at: slab_post_alloc_hook mm/slab.h:766 [inline] slab_alloc_node mm/slub.c:3452 [inline] __kmem_cache_alloc_node+0x71f/0xce0 mm/slub.c:3491 __do_kmalloc_node mm/slab_common.c:967 [inline] __kmalloc+0x11d/0x3b0 mm/slab_common.c:981 kmalloc_array include/linux/slab.h:636 [inline] bcm_tx_setup+0x80e/0x29d0 net/can/bcm.c:930 bcm_sendmsg+0x3a2/0xce0 net/can/bcm.c:1351 sock_sendmsg_nosec net/socket.c:714 [inline] sock_sendmsg net/socket.c:734 [inline] sock_write_iter+0x495/0x5e0 net/socket.c:1108 call_write_iter include/linux/fs.h:2189 [inline] aio_write+0x63a/0x950 fs/aio.c:1600 io_submit_one+0x1d1c/0x3bf0 fs/aio.c:2019 __do_sys_io_submit fs/aio.c:2078 [inline] __se_sys_io_submit+0x293/0x770 fs/aio.c:2048 __x64_sys_io_submit+0x92/0xd0 fs/aio.c:2048 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd CPU: 1 PID: 5034 Comm: syz-executor350 Not tainted 6.2.0-rc6-syzkaller-80422-geda666ff2276 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/12/2023 ===================================================== We can follow the call chain and find that 'bcm_tx_setup' function calls 'memcpy_from_msg' to copy some content to the newly allocated frame of 'op->frames'. After that the 'len' field of copied structure being compared with some constant value (64 or 8). However, if 'memcpy_from_msg' returns an error, we will compare some uninitialized memory. This triggers 'uninit-value' issue. This patch will add 'memcpy_from_msg' possible errors processing to avoid uninit-value issue. Tested via syzkaller Reported-by: syzbot+c9bfd85eca611ebf5db1@syzkaller.appspotmail.com Link: https://syzkaller.appspot.com/bug?id=47f897f8ad958bbde5790ebf389b5e7e0a345089 Signed-off-by: Ivan Orlov Fixes: 6f3b911d5f29b ("can: bcm: add support for CAN FD frames") Acked-by: Oliver Hartkopp Link: https://lore.kernel.org/all/20230314120445.12407-1-ivan.orlov0322@gmail.com Signed-off-by: Marc Kleine-Budde Signed-off-by: Sasha Levin --- net/can/bcm.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/net/can/bcm.c b/net/can/bcm.c index 27706f6ace34..a962ec2b8ba5 100644 --- a/net/can/bcm.c +++ b/net/can/bcm.c @@ -941,6 +941,8 @@ static int bcm_tx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg, cf = op->frames + op->cfsiz * i; err = memcpy_from_msg((u8 *)cf, msg, op->cfsiz); + if (err < 0) + goto free_op; if (op->flags & CAN_FD_FRAME) { if (cf->len > 64) @@ -950,12 +952,8 @@ static int bcm_tx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg, err = -EINVAL; } - if (err < 0) { - if (op->frames != &op->sframe) - kfree(op->frames); - kfree(op); - return err; - } + if (err < 0) + goto free_op; if (msg_head->flags & TX_CP_CAN_ID) { /* copy can_id into frame */ @@ -1026,6 +1024,12 @@ static int bcm_tx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg, bcm_tx_start_timer(op); return msg_head->nframes * op->cfsiz + MHSIZ; + +free_op: + if (op->frames != &op->sframe) + kfree(op->frames); + kfree(op); + return err; } /* From 6a40fda14b4be3e38f03cc42ffd4efbc64fb3e67 Mon Sep 17 00:00:00 2001 From: Tony Krowiak Date: Mon, 20 Mar 2023 11:04:47 -0400 Subject: [PATCH 106/269] s390/vfio-ap: fix memory leak in vfio_ap device driver [ Upstream commit 8f8cf767589f2131ae5d40f3758429095c701c84 ] The device release callback function invoked to release the matrix device uses the dev_get_drvdata(device *dev) function to retrieve the pointer to the vfio_matrix_dev object in order to free its storage. The problem is, this object is not stored as drvdata with the device; since the kfree function will accept a NULL pointer, the memory for the vfio_matrix_dev object is never freed. Since the device being released is contained within the vfio_matrix_dev object, the container_of macro will be used to retrieve its pointer. Fixes: 1fde573413b5 ("s390: vfio-ap: base implementation of VFIO AP device driver") Signed-off-by: Tony Krowiak Reviewed-by: Harald Freudenberger Link: https://lore.kernel.org/r/20230320150447.34557-1-akrowiak@linux.ibm.com Signed-off-by: Heiko Carstens Signed-off-by: Vasily Gorbik Signed-off-by: Sasha Levin --- drivers/s390/crypto/vfio_ap_drv.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/s390/crypto/vfio_ap_drv.c b/drivers/s390/crypto/vfio_ap_drv.c index f43cfeabd2cc..0afceb63ac43 100644 --- a/drivers/s390/crypto/vfio_ap_drv.c +++ b/drivers/s390/crypto/vfio_ap_drv.c @@ -54,8 +54,9 @@ static struct ap_driver vfio_ap_drv = { static void vfio_ap_matrix_dev_release(struct device *dev) { - struct ap_matrix_dev *matrix_dev = dev_get_drvdata(dev); + struct ap_matrix_dev *matrix_dev; + matrix_dev = container_of(dev, struct ap_matrix_dev, device); kfree(matrix_dev); } From b7707176f858a4361566ba5bdef2d3a7f519fb93 Mon Sep 17 00:00:00 2001 From: "Rafael J. Wysocki" Date: Fri, 24 Mar 2023 14:33:42 +0100 Subject: [PATCH 107/269] ACPI: bus: Rework system-level device notification handling [ Upstream commit c56610a869bce03490faf4f157076370c71b8ae3 ] For ACPI drivers that provide a ->notify() callback and set ACPI_DRIVER_ALL_NOTIFY_EVENTS in their flags, that callback can be invoked while either the ->add() or the ->remove() callback is running without any synchronization at the bus type level which is counter to the common-sense expectation that notification handling should only be enabled when the driver is actually bound to the device. As a result, if the driver is not careful enough, it's ->notify() callback may crash when it is invoked too early or too late [1]. This issue has been amplified by commit d6fb6ee1820c ("ACPI: bus: Drop driver member of struct acpi_device") that made acpi_bus_notify() check for the presence of the driver and its ->notify() callback directly instead of using an extra driver pointer that was only set and cleared by the bus type code, but it was present before that commit although it was harder to reproduce then. It can be addressed by using the observation that acpi_device_install_notify_handler() can be modified to install the handler for all types of events when ACPI_DRIVER_ALL_NOTIFY_EVENTS is set in the driver flags, in which case acpi_bus_notify() will not need to invoke the driver's ->notify() callback any more and that callback will only be invoked after acpi_device_install_notify_handler() has run and before acpi_device_remove_notify_handler() runs, which implies the correct ordering with respect to the other ACPI driver callbacks. Modify the code accordingly and while at it, drop two redundant local variables from acpi_bus_notify() and turn its description comment into a proper kerneldoc one. Fixes: d6fb6ee1820c ("ACPI: bus: Drop driver member of struct acpi_device") Link: https://lore.kernel.org/linux-acpi/9f6cba7a8a57e5a687c934e8e406e28c.squirrel@mail.panix.com # [1] Reported-by: Pierre Asselin Signed-off-by: Rafael J. Wysocki Tested-by: Pierre Asselin Signed-off-by: Sasha Levin --- drivers/acpi/bus.c | 85 +++++++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 47 deletions(-) diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index d466c8195314..3b6146b1e25c 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -456,85 +456,67 @@ out_free: Notification Handling -------------------------------------------------------------------------- */ -/* - * acpi_bus_notify - * --------------- - * Callback for all 'system-level' device notifications (values 0x00-0x7F). +/** + * acpi_bus_notify - Global system-level (0x00-0x7F) notifications handler + * @handle: Target ACPI object. + * @type: Notification type. + * @data: Ignored. + * + * This only handles notifications related to device hotplug. */ static void acpi_bus_notify(acpi_handle handle, u32 type, void *data) { struct acpi_device *adev; - u32 ost_code = ACPI_OST_SC_NON_SPECIFIC_FAILURE; - bool hotplug_event = false; switch (type) { case ACPI_NOTIFY_BUS_CHECK: acpi_handle_debug(handle, "ACPI_NOTIFY_BUS_CHECK event\n"); - hotplug_event = true; break; case ACPI_NOTIFY_DEVICE_CHECK: acpi_handle_debug(handle, "ACPI_NOTIFY_DEVICE_CHECK event\n"); - hotplug_event = true; break; case ACPI_NOTIFY_DEVICE_WAKE: acpi_handle_debug(handle, "ACPI_NOTIFY_DEVICE_WAKE event\n"); - break; + return; case ACPI_NOTIFY_EJECT_REQUEST: acpi_handle_debug(handle, "ACPI_NOTIFY_EJECT_REQUEST event\n"); - hotplug_event = true; break; case ACPI_NOTIFY_DEVICE_CHECK_LIGHT: acpi_handle_debug(handle, "ACPI_NOTIFY_DEVICE_CHECK_LIGHT event\n"); /* TBD: Exactly what does 'light' mean? */ - break; + return; case ACPI_NOTIFY_FREQUENCY_MISMATCH: acpi_handle_err(handle, "Device cannot be configured due " "to a frequency mismatch\n"); - break; + return; case ACPI_NOTIFY_BUS_MODE_MISMATCH: acpi_handle_err(handle, "Device cannot be configured due " "to a bus mode mismatch\n"); - break; + return; case ACPI_NOTIFY_POWER_FAULT: acpi_handle_err(handle, "Device has suffered a power fault\n"); - break; + return; default: acpi_handle_debug(handle, "Unknown event type 0x%x\n", type); - break; - } - - adev = acpi_get_acpi_dev(handle); - if (!adev) - goto err; - - if (adev->dev.driver) { - struct acpi_driver *driver = to_acpi_driver(adev->dev.driver); - - if (driver && driver->ops.notify && - (driver->flags & ACPI_DRIVER_ALL_NOTIFY_EVENTS)) - driver->ops.notify(adev, type); - } - - if (!hotplug_event) { - acpi_put_acpi_dev(adev); return; } - if (ACPI_SUCCESS(acpi_hotplug_schedule(adev, type))) + adev = acpi_get_acpi_dev(handle); + + if (adev && ACPI_SUCCESS(acpi_hotplug_schedule(adev, type))) return; acpi_put_acpi_dev(adev); - err: - acpi_evaluate_ost(handle, type, ost_code, NULL); + acpi_evaluate_ost(handle, type, ACPI_OST_SC_NON_SPECIFIC_FAILURE, NULL); } static void acpi_notify_device(acpi_handle handle, u32 event, void *data) @@ -559,42 +541,51 @@ static u32 acpi_device_fixed_event(void *data) return ACPI_INTERRUPT_HANDLED; } -static int acpi_device_install_notify_handler(struct acpi_device *device) +static int acpi_device_install_notify_handler(struct acpi_device *device, + struct acpi_driver *acpi_drv) { acpi_status status; - if (device->device_type == ACPI_BUS_TYPE_POWER_BUTTON) + if (device->device_type == ACPI_BUS_TYPE_POWER_BUTTON) { status = acpi_install_fixed_event_handler(ACPI_EVENT_POWER_BUTTON, acpi_device_fixed_event, device); - else if (device->device_type == ACPI_BUS_TYPE_SLEEP_BUTTON) + } else if (device->device_type == ACPI_BUS_TYPE_SLEEP_BUTTON) { status = acpi_install_fixed_event_handler(ACPI_EVENT_SLEEP_BUTTON, acpi_device_fixed_event, device); - else - status = acpi_install_notify_handler(device->handle, - ACPI_DEVICE_NOTIFY, + } else { + u32 type = acpi_drv->flags & ACPI_DRIVER_ALL_NOTIFY_EVENTS ? + ACPI_ALL_NOTIFY : ACPI_DEVICE_NOTIFY; + + status = acpi_install_notify_handler(device->handle, type, acpi_notify_device, device); + } if (ACPI_FAILURE(status)) return -EINVAL; return 0; } -static void acpi_device_remove_notify_handler(struct acpi_device *device) +static void acpi_device_remove_notify_handler(struct acpi_device *device, + struct acpi_driver *acpi_drv) { - if (device->device_type == ACPI_BUS_TYPE_POWER_BUTTON) + if (device->device_type == ACPI_BUS_TYPE_POWER_BUTTON) { acpi_remove_fixed_event_handler(ACPI_EVENT_POWER_BUTTON, acpi_device_fixed_event); - else if (device->device_type == ACPI_BUS_TYPE_SLEEP_BUTTON) + } else if (device->device_type == ACPI_BUS_TYPE_SLEEP_BUTTON) { acpi_remove_fixed_event_handler(ACPI_EVENT_SLEEP_BUTTON, acpi_device_fixed_event); - else - acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY, + } else { + u32 type = acpi_drv->flags & ACPI_DRIVER_ALL_NOTIFY_EVENTS ? + ACPI_ALL_NOTIFY : ACPI_DEVICE_NOTIFY; + + acpi_remove_notify_handler(device->handle, type, acpi_notify_device); + } } /* Handle events targeting \_SB device (at present only graceful shutdown) */ @@ -1036,7 +1027,7 @@ static int acpi_device_probe(struct device *dev) acpi_drv->name, acpi_dev->pnp.bus_id); if (acpi_drv->ops.notify) { - ret = acpi_device_install_notify_handler(acpi_dev); + ret = acpi_device_install_notify_handler(acpi_dev, acpi_drv); if (ret) { if (acpi_drv->ops.remove) acpi_drv->ops.remove(acpi_dev); @@ -1059,7 +1050,7 @@ static void acpi_device_remove(struct device *dev) struct acpi_driver *acpi_drv = to_acpi_driver(dev->driver); if (acpi_drv->ops.notify) - acpi_device_remove_notify_handler(acpi_dev); + acpi_device_remove_notify_handler(acpi_dev, acpi_drv); if (acpi_drv->ops.remove) acpi_drv->ops.remove(acpi_dev); From bee9ca40b839e9b2ca1fdb37ffcce429e7899d79 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Mon, 20 Mar 2023 13:54:30 +0100 Subject: [PATCH 108/269] loop: LOOP_CONFIGURE: send uevents for partitions [ Upstream commit bb430b69422640891b0b8db762885730579a4145 ] LOOP_CONFIGURE is, as far as I understand it, supposed to be a way to combine LOOP_SET_FD and LOOP_SET_STATUS64 into a single syscall. When using LOOP_SET_FD+LOOP_SET_STATUS64, a single uevent would be sent for each partition found on the loop device after the second ioctl(), but when using LOOP_CONFIGURE, no such uevent was being sent. In the old setup, uevents are disabled for LOOP_SET_FD, but not for LOOP_SET_STATUS64. This makes sense, as it prevents uevents being sent for a partially configured device during LOOP_SET_FD - they're only sent at the end of LOOP_SET_STATUS64. But for LOOP_CONFIGURE, uevents were disabled for the entire operation, so that final notification was never issued. To fix this, reduce the critical section to exclude the loop_reread_partitions() call, which causes the uevents to be issued, to after uevents are re-enabled, matching the behaviour of the LOOP_SET_FD+LOOP_SET_STATUS64 combination. I noticed this because Busybox's losetup program recently changed from using LOOP_SET_FD+LOOP_SET_STATUS64 to LOOP_CONFIGURE, and this broke my setup, for which I want a notification from the kernel any time a new partition becomes available. Signed-off-by: Alyssa Ross [hch: reduced the critical section] Signed-off-by: Christoph Hellwig Fixes: 3448914e8cc5 ("loop: Add LOOP_CONFIGURE ioctl") Link: https://lore.kernel.org/r/20230320125430.55367-1-hch@lst.de Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- drivers/block/loop.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 793ae876918c..426d0b42685a 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -1010,9 +1010,6 @@ static int loop_configure(struct loop_device *lo, fmode_t mode, /* This is safe, since we have a reference from open(). */ __module_get(THIS_MODULE); - /* suppress uevents while reconfiguring the device */ - dev_set_uevent_suppress(disk_to_dev(lo->lo_disk), 1); - /* * If we don't hold exclusive handle for the device, upgrade to it * here to avoid changing device under exclusive owner. @@ -1067,6 +1064,9 @@ static int loop_configure(struct loop_device *lo, fmode_t mode, } } + /* suppress uevents while reconfiguring the device */ + dev_set_uevent_suppress(disk_to_dev(lo->lo_disk), 1); + disk_force_media_change(lo->lo_disk, DISK_EVENT_MEDIA_CHANGE); set_disk_ro(lo->lo_disk, (lo->lo_flags & LO_FLAGS_READ_ONLY) != 0); @@ -1109,17 +1109,17 @@ static int loop_configure(struct loop_device *lo, fmode_t mode, if (partscan) clear_bit(GD_SUPPRESS_PART_SCAN, &lo->lo_disk->state); + /* enable and uncork uevent now that we are done */ + dev_set_uevent_suppress(disk_to_dev(lo->lo_disk), 0); + loop_global_unlock(lo, is_loop); if (partscan) loop_reread_partitions(lo); + if (!(mode & FMODE_EXCL)) bd_abort_claiming(bdev, loop_configure); - error = 0; -done: - /* enable and uncork uevent now that we are done */ - dev_set_uevent_suppress(disk_to_dev(lo->lo_disk), 0); - return error; + return 0; out_unlock: loop_global_unlock(lo, is_loop); @@ -1130,7 +1130,7 @@ out_putf: fput(file); /* This is safe: open() is still holding a reference. */ module_put(THIS_MODULE); - goto done; + return error; } static void __loop_clr_fd(struct loop_device *lo, bool release) From 5718b58ca0ec3aee1badb33021c35da1883aa9e4 Mon Sep 17 00:00:00 2001 From: Sven Auhagen Date: Sat, 25 Mar 2023 17:40:29 +0100 Subject: [PATCH 109/269] net: mvpp2: classifier flow fix fragmentation flags [ Upstream commit 9a251cae51d57289908222e6c322ca61fccc25fd ] Add missing IP Fragmentation Flag. Fixes: f9358e12a0af ("net: mvpp2: split ingress traffic into multiple flows") Signed-off-by: Sven Auhagen Reviewed-by: Marcin Wojtas Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin --- .../net/ethernet/marvell/mvpp2/mvpp2_cls.c | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c index 41d935d1aaf6..40aeaa7bd739 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c @@ -62,35 +62,38 @@ static const struct mvpp2_cls_flow cls_flows[MVPP2_N_PRS_FLOWS] = { MVPP2_DEF_FLOW(MVPP22_FLOW_TCP4, MVPP2_FL_IP4_TCP_FRAG_UNTAG, MVPP22_CLS_HEK_IP4_2T, MVPP2_PRS_RI_VLAN_NONE | MVPP2_PRS_RI_L3_IP4 | - MVPP2_PRS_RI_L4_TCP, + MVPP2_PRS_RI_IP_FRAG_TRUE | MVPP2_PRS_RI_L4_TCP, MVPP2_PRS_IP_MASK | MVPP2_PRS_RI_VLAN_MASK), MVPP2_DEF_FLOW(MVPP22_FLOW_TCP4, MVPP2_FL_IP4_TCP_FRAG_UNTAG, MVPP22_CLS_HEK_IP4_2T, MVPP2_PRS_RI_VLAN_NONE | MVPP2_PRS_RI_L3_IP4_OPT | - MVPP2_PRS_RI_L4_TCP, + MVPP2_PRS_RI_IP_FRAG_TRUE | MVPP2_PRS_RI_L4_TCP, MVPP2_PRS_IP_MASK | MVPP2_PRS_RI_VLAN_MASK), MVPP2_DEF_FLOW(MVPP22_FLOW_TCP4, MVPP2_FL_IP4_TCP_FRAG_UNTAG, MVPP22_CLS_HEK_IP4_2T, MVPP2_PRS_RI_VLAN_NONE | MVPP2_PRS_RI_L3_IP4_OTHER | - MVPP2_PRS_RI_L4_TCP, + MVPP2_PRS_RI_IP_FRAG_TRUE | MVPP2_PRS_RI_L4_TCP, MVPP2_PRS_IP_MASK | MVPP2_PRS_RI_VLAN_MASK), /* TCP over IPv4 flows, fragmented, with vlan tag */ MVPP2_DEF_FLOW(MVPP22_FLOW_TCP4, MVPP2_FL_IP4_TCP_FRAG_TAG, MVPP22_CLS_HEK_IP4_2T | MVPP22_CLS_HEK_TAGGED, - MVPP2_PRS_RI_L3_IP4 | MVPP2_PRS_RI_L4_TCP, + MVPP2_PRS_RI_L3_IP4 | MVPP2_PRS_RI_IP_FRAG_TRUE | + MVPP2_PRS_RI_L4_TCP, MVPP2_PRS_IP_MASK), MVPP2_DEF_FLOW(MVPP22_FLOW_TCP4, MVPP2_FL_IP4_TCP_FRAG_TAG, MVPP22_CLS_HEK_IP4_2T | MVPP22_CLS_HEK_TAGGED, - MVPP2_PRS_RI_L3_IP4_OPT | MVPP2_PRS_RI_L4_TCP, + MVPP2_PRS_RI_L3_IP4_OPT | MVPP2_PRS_RI_IP_FRAG_TRUE | + MVPP2_PRS_RI_L4_TCP, MVPP2_PRS_IP_MASK), MVPP2_DEF_FLOW(MVPP22_FLOW_TCP4, MVPP2_FL_IP4_TCP_FRAG_TAG, MVPP22_CLS_HEK_IP4_2T | MVPP22_CLS_HEK_TAGGED, - MVPP2_PRS_RI_L3_IP4_OTHER | MVPP2_PRS_RI_L4_TCP, + MVPP2_PRS_RI_L3_IP4_OTHER | MVPP2_PRS_RI_IP_FRAG_TRUE | + MVPP2_PRS_RI_L4_TCP, MVPP2_PRS_IP_MASK), /* UDP over IPv4 flows, Not fragmented, no vlan tag */ @@ -132,35 +135,38 @@ static const struct mvpp2_cls_flow cls_flows[MVPP2_N_PRS_FLOWS] = { MVPP2_DEF_FLOW(MVPP22_FLOW_UDP4, MVPP2_FL_IP4_UDP_FRAG_UNTAG, MVPP22_CLS_HEK_IP4_2T, MVPP2_PRS_RI_VLAN_NONE | MVPP2_PRS_RI_L3_IP4 | - MVPP2_PRS_RI_L4_UDP, + MVPP2_PRS_RI_IP_FRAG_TRUE | MVPP2_PRS_RI_L4_UDP, MVPP2_PRS_IP_MASK | MVPP2_PRS_RI_VLAN_MASK), MVPP2_DEF_FLOW(MVPP22_FLOW_UDP4, MVPP2_FL_IP4_UDP_FRAG_UNTAG, MVPP22_CLS_HEK_IP4_2T, MVPP2_PRS_RI_VLAN_NONE | MVPP2_PRS_RI_L3_IP4_OPT | - MVPP2_PRS_RI_L4_UDP, + MVPP2_PRS_RI_IP_FRAG_TRUE | MVPP2_PRS_RI_L4_UDP, MVPP2_PRS_IP_MASK | MVPP2_PRS_RI_VLAN_MASK), MVPP2_DEF_FLOW(MVPP22_FLOW_UDP4, MVPP2_FL_IP4_UDP_FRAG_UNTAG, MVPP22_CLS_HEK_IP4_2T, MVPP2_PRS_RI_VLAN_NONE | MVPP2_PRS_RI_L3_IP4_OTHER | - MVPP2_PRS_RI_L4_UDP, + MVPP2_PRS_RI_IP_FRAG_TRUE | MVPP2_PRS_RI_L4_UDP, MVPP2_PRS_IP_MASK | MVPP2_PRS_RI_VLAN_MASK), /* UDP over IPv4 flows, fragmented, with vlan tag */ MVPP2_DEF_FLOW(MVPP22_FLOW_UDP4, MVPP2_FL_IP4_UDP_FRAG_TAG, MVPP22_CLS_HEK_IP4_2T | MVPP22_CLS_HEK_TAGGED, - MVPP2_PRS_RI_L3_IP4 | MVPP2_PRS_RI_L4_UDP, + MVPP2_PRS_RI_L3_IP4 | MVPP2_PRS_RI_IP_FRAG_TRUE | + MVPP2_PRS_RI_L4_UDP, MVPP2_PRS_IP_MASK), MVPP2_DEF_FLOW(MVPP22_FLOW_UDP4, MVPP2_FL_IP4_UDP_FRAG_TAG, MVPP22_CLS_HEK_IP4_2T | MVPP22_CLS_HEK_TAGGED, - MVPP2_PRS_RI_L3_IP4_OPT | MVPP2_PRS_RI_L4_UDP, + MVPP2_PRS_RI_L3_IP4_OPT | MVPP2_PRS_RI_IP_FRAG_TRUE | + MVPP2_PRS_RI_L4_UDP, MVPP2_PRS_IP_MASK), MVPP2_DEF_FLOW(MVPP22_FLOW_UDP4, MVPP2_FL_IP4_UDP_FRAG_TAG, MVPP22_CLS_HEK_IP4_2T | MVPP22_CLS_HEK_TAGGED, - MVPP2_PRS_RI_L3_IP4_OTHER | MVPP2_PRS_RI_L4_UDP, + MVPP2_PRS_RI_L3_IP4_OTHER | MVPP2_PRS_RI_IP_FRAG_TRUE | + MVPP2_PRS_RI_L4_UDP, MVPP2_PRS_IP_MASK), /* TCP over IPv6 flows, not fragmented, no vlan tag */ From 2a4f74420538c53b443ee35e5ce95ffc0ecf4510 Mon Sep 17 00:00:00 2001 From: Sven Auhagen Date: Sat, 25 Mar 2023 17:40:53 +0100 Subject: [PATCH 110/269] net: mvpp2: parser fix QinQ [ Upstream commit a587a84813b90372cb0a7565e201a4075da67919 ] The mvpp2 parser entry for QinQ has the inner and outer VLAN in the wrong order. Fix the problem by swapping them. Fixes: 3f518509dedc ("ethernet: Add new driver for Marvell Armada 375 network unit") Signed-off-by: Sven Auhagen Reviewed-by: Marcin Wojtas Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin --- drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c index 75ba57bd1d46..ed8be396428b 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c @@ -1539,8 +1539,8 @@ static int mvpp2_prs_vlan_init(struct platform_device *pdev, struct mvpp2 *priv) if (!priv->prs_double_vlans) return -ENOMEM; - /* Double VLAN: 0x8100, 0x88A8 */ - err = mvpp2_prs_double_vlan_add(priv, ETH_P_8021Q, ETH_P_8021AD, + /* Double VLAN: 0x88A8, 0x8100 */ + err = mvpp2_prs_double_vlan_add(priv, ETH_P_8021AD, ETH_P_8021Q, MVPP2_PRS_PORT_MASK); if (err) return err; From a921dbbc04e3e4edfaa6245e905207030c1a14bd Mon Sep 17 00:00:00 2001 From: Sven Auhagen Date: Sat, 25 Mar 2023 17:41:05 +0100 Subject: [PATCH 111/269] net: mvpp2: parser fix PPPoE [ Upstream commit 031a416c2170866be5132ae42e14453d669b0cb1 ] In PPPoE add all IPv4 header option length to the parser and adjust the L3 and L4 offset accordingly. Currently the L4 match does not work with PPPoE and all packets are matched as L3 IP4 OPT. Fixes: 3f518509dedc ("ethernet: Add new driver for Marvell Armada 375 network unit") Signed-off-by: Sven Auhagen Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin --- .../net/ethernet/marvell/mvpp2/mvpp2_prs.c | 82 ++++++++----------- 1 file changed, 34 insertions(+), 48 deletions(-) diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c index ed8be396428b..9af22f497a40 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c @@ -1607,59 +1607,45 @@ static int mvpp2_prs_vlan_init(struct platform_device *pdev, struct mvpp2 *priv) static int mvpp2_prs_pppoe_init(struct mvpp2 *priv) { struct mvpp2_prs_entry pe; - int tid; + int tid, ihl; - /* IPv4 over PPPoE with options */ - tid = mvpp2_prs_tcam_first_free(priv, MVPP2_PE_FIRST_FREE_TID, - MVPP2_PE_LAST_FREE_TID); - if (tid < 0) - return tid; + /* IPv4 over PPPoE with header length >= 5 */ + for (ihl = MVPP2_PRS_IPV4_IHL_MIN; ihl <= MVPP2_PRS_IPV4_IHL_MAX; ihl++) { + tid = mvpp2_prs_tcam_first_free(priv, MVPP2_PE_FIRST_FREE_TID, + MVPP2_PE_LAST_FREE_TID); + if (tid < 0) + return tid; - memset(&pe, 0, sizeof(pe)); - mvpp2_prs_tcam_lu_set(&pe, MVPP2_PRS_LU_PPPOE); - pe.index = tid; + memset(&pe, 0, sizeof(pe)); + mvpp2_prs_tcam_lu_set(&pe, MVPP2_PRS_LU_PPPOE); + pe.index = tid; - mvpp2_prs_match_etype(&pe, 0, PPP_IP); + mvpp2_prs_match_etype(&pe, 0, PPP_IP); + mvpp2_prs_tcam_data_byte_set(&pe, MVPP2_ETH_TYPE_LEN, + MVPP2_PRS_IPV4_HEAD | ihl, + MVPP2_PRS_IPV4_HEAD_MASK | + MVPP2_PRS_IPV4_IHL_MASK); - mvpp2_prs_sram_next_lu_set(&pe, MVPP2_PRS_LU_IP4); - mvpp2_prs_sram_ri_update(&pe, MVPP2_PRS_RI_L3_IP4_OPT, - MVPP2_PRS_RI_L3_PROTO_MASK); - /* goto ipv4 dest-address (skip eth_type + IP-header-size - 4) */ - mvpp2_prs_sram_shift_set(&pe, MVPP2_ETH_TYPE_LEN + - sizeof(struct iphdr) - 4, - MVPP2_PRS_SRAM_OP_SEL_SHIFT_ADD); - /* Set L3 offset */ - mvpp2_prs_sram_offset_set(&pe, MVPP2_PRS_SRAM_UDF_TYPE_L3, - MVPP2_ETH_TYPE_LEN, - MVPP2_PRS_SRAM_OP_SEL_UDF_ADD); + mvpp2_prs_sram_next_lu_set(&pe, MVPP2_PRS_LU_IP4); + mvpp2_prs_sram_ri_update(&pe, MVPP2_PRS_RI_L3_IP4, + MVPP2_PRS_RI_L3_PROTO_MASK); + /* goto ipv4 dst-address (skip eth_type + IP-header-size - 4) */ + mvpp2_prs_sram_shift_set(&pe, MVPP2_ETH_TYPE_LEN + + sizeof(struct iphdr) - 4, + MVPP2_PRS_SRAM_OP_SEL_SHIFT_ADD); + /* Set L3 offset */ + mvpp2_prs_sram_offset_set(&pe, MVPP2_PRS_SRAM_UDF_TYPE_L3, + MVPP2_ETH_TYPE_LEN, + MVPP2_PRS_SRAM_OP_SEL_UDF_ADD); + /* Set L4 offset */ + mvpp2_prs_sram_offset_set(&pe, MVPP2_PRS_SRAM_UDF_TYPE_L4, + MVPP2_ETH_TYPE_LEN + (ihl * 4), + MVPP2_PRS_SRAM_OP_SEL_UDF_ADD); - /* Update shadow table and hw entry */ - mvpp2_prs_shadow_set(priv, pe.index, MVPP2_PRS_LU_PPPOE); - mvpp2_prs_hw_write(priv, &pe); - - /* IPv4 over PPPoE without options */ - tid = mvpp2_prs_tcam_first_free(priv, MVPP2_PE_FIRST_FREE_TID, - MVPP2_PE_LAST_FREE_TID); - if (tid < 0) - return tid; - - pe.index = tid; - - mvpp2_prs_tcam_data_byte_set(&pe, MVPP2_ETH_TYPE_LEN, - MVPP2_PRS_IPV4_HEAD | - MVPP2_PRS_IPV4_IHL_MIN, - MVPP2_PRS_IPV4_HEAD_MASK | - MVPP2_PRS_IPV4_IHL_MASK); - - /* Clear ri before updating */ - pe.sram[MVPP2_PRS_SRAM_RI_WORD] = 0x0; - pe.sram[MVPP2_PRS_SRAM_RI_CTRL_WORD] = 0x0; - mvpp2_prs_sram_ri_update(&pe, MVPP2_PRS_RI_L3_IP4, - MVPP2_PRS_RI_L3_PROTO_MASK); - - /* Update shadow table and hw entry */ - mvpp2_prs_shadow_set(priv, pe.index, MVPP2_PRS_LU_PPPOE); - mvpp2_prs_hw_write(priv, &pe); + /* Update shadow table and hw entry */ + mvpp2_prs_shadow_set(priv, pe.index, MVPP2_PRS_LU_PPPOE); + mvpp2_prs_hw_write(priv, &pe); + } /* IPv6 over PPPoE */ tid = mvpp2_prs_tcam_first_free(priv, MVPP2_PE_FIRST_FREE_TID, From 0b9541ae1dd1a7436af697e12ca76ff6a507b3cb Mon Sep 17 00:00:00 2001 From: Wolfram Sang Date: Mon, 27 Mar 2023 10:31:38 +0200 Subject: [PATCH 112/269] smsc911x: avoid PHY being resumed when interface is not up [ Upstream commit f22c993f31fa9615df46e49cd768b713d39a852f ] SMSC911x doesn't need mdiobus suspend/resume, that's why it sets 'mac_managed_pm'. However, setting it needs to be moved from init to probe, so mdiobus PM functions will really never be called (e.g. when the interface is not up yet during suspend/resume). Fixes: 3ce9f2bef755 ("net: smsc911x: Stop and start PHY during suspend and resume") Suggested-by: Heiner Kallweit Signed-off-by: Wolfram Sang Reviewed-by: Simon Horman Link: https://lore.kernel.org/r/20230327083138.6044-1-wsa+renesas@sang-engineering.com Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin --- drivers/net/ethernet/smsc/smsc911x.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c index a2e511912e6a..a690d139e177 100644 --- a/drivers/net/ethernet/smsc/smsc911x.c +++ b/drivers/net/ethernet/smsc/smsc911x.c @@ -1037,8 +1037,6 @@ static int smsc911x_mii_probe(struct net_device *dev) return ret; } - /* Indicate that the MAC is responsible for managing PHY PM */ - phydev->mac_managed_pm = true; phy_attached_info(phydev); phy_set_max_speed(phydev, SPEED_100); @@ -1066,6 +1064,7 @@ static int smsc911x_mii_init(struct platform_device *pdev, struct net_device *dev) { struct smsc911x_data *pdata = netdev_priv(dev); + struct phy_device *phydev; int err = -ENXIO; pdata->mii_bus = mdiobus_alloc(); @@ -1108,6 +1107,10 @@ static int smsc911x_mii_init(struct platform_device *pdev, goto err_out_free_bus_2; } + phydev = phy_find_first(pdata->mii_bus); + if (phydev) + phydev->mac_managed_pm = true; + return 0; err_out_free_bus_2: From 088573884165806248e15b69277c582c31c5f361 Mon Sep 17 00:00:00 2001 From: Brett Creeley Date: Mon, 13 Mar 2023 13:36:08 -0700 Subject: [PATCH 113/269] ice: Fix ice_cfg_rdma_fltr() to only update relevant fields [ Upstream commit d94dbdc4e0209b5e7d736ab696f8d635b034e3ee ] The current implementation causes ice_vsi_update() to update all VSI fields based on the cached VSI context. This also assumes that the ICE_AQ_VSI_PROP_Q_OPT_VALID bit is set. This can cause problems if the VSI context is not correctly synced by the driver. Fix this by only updating the fields that correspond to ICE_AQ_VSI_PROP_Q_OPT_VALID. Also, make sure to save the updated result in the cached VSI context on success. Fixes: 348048e724a0 ("ice: Implement iidc operations") Co-developed-by: Robert Malz Signed-off-by: Robert Malz Signed-off-by: Brett Creeley Signed-off-by: Jesse Brandeburg Reviewed-by: Piotr Raczynski Tested-by: Jakub Andrysiak Signed-off-by: Tony Nguyen Signed-off-by: Sasha Levin --- drivers/net/ethernet/intel/ice/ice_switch.c | 26 +++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_switch.c b/drivers/net/ethernet/intel/ice/ice_switch.c index 61f844d22512..46b36851af46 100644 --- a/drivers/net/ethernet/intel/ice/ice_switch.c +++ b/drivers/net/ethernet/intel/ice/ice_switch.c @@ -1780,18 +1780,36 @@ ice_update_vsi(struct ice_hw *hw, u16 vsi_handle, struct ice_vsi_ctx *vsi_ctx, int ice_cfg_rdma_fltr(struct ice_hw *hw, u16 vsi_handle, bool enable) { - struct ice_vsi_ctx *ctx; + struct ice_vsi_ctx *ctx, *cached_ctx; + int status; - ctx = ice_get_vsi_ctx(hw, vsi_handle); + cached_ctx = ice_get_vsi_ctx(hw, vsi_handle); + if (!cached_ctx) + return -ENOENT; + + ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); if (!ctx) - return -EIO; + return -ENOMEM; + + ctx->info.q_opt_rss = cached_ctx->info.q_opt_rss; + ctx->info.q_opt_tc = cached_ctx->info.q_opt_tc; + ctx->info.q_opt_flags = cached_ctx->info.q_opt_flags; + + ctx->info.valid_sections = cpu_to_le16(ICE_AQ_VSI_PROP_Q_OPT_VALID); if (enable) ctx->info.q_opt_flags |= ICE_AQ_VSI_Q_OPT_PE_FLTR_EN; else ctx->info.q_opt_flags &= ~ICE_AQ_VSI_Q_OPT_PE_FLTR_EN; - return ice_update_vsi(hw, vsi_handle, ctx, NULL); + status = ice_update_vsi(hw, vsi_handle, ctx, NULL); + if (!status) { + cached_ctx->info.q_opt_flags = ctx->info.q_opt_flags; + cached_ctx->info.valid_sections |= ctx->info.valid_sections; + } + + kfree(ctx); + return status; } /** From d10900058fa6d6c0a4ec6f6967a9b4c607e303ce Mon Sep 17 00:00:00 2001 From: Junfeng Guo Date: Tue, 14 Mar 2023 10:03:15 +0800 Subject: [PATCH 114/269] ice: add profile conflict check for AVF FDIR [ Upstream commit 29486b6df3e6a63b57d1ed1dce06051267282ff4 ] Add profile conflict check while adding some FDIR rules to avoid unexpected flow behavior, rules may have conflict including: IPv4 <---> {IPv4_UDP, IPv4_TCP, IPv4_SCTP} IPv6 <---> {IPv6_UDP, IPv6_TCP, IPv6_SCTP} For example, when we create an FDIR rule for IPv4, this rule will work on packets including IPv4, IPv4_UDP, IPv4_TCP and IPv4_SCTP. But if we then create an FDIR rule for IPv4_UDP and then destroy it, the first FDIR rule for IPv4 cannot work on pkt IPv4_UDP then. To prevent this unexpected behavior, we add restriction in software when creating FDIR rules by adding necessary profile conflict check. Fixes: 1f7ea1cd6a37 ("ice: Enable FDIR Configure for AVF") Signed-off-by: Junfeng Guo Tested-by: Rafal Romanowski Signed-off-by: Tony Nguyen Signed-off-by: Sasha Levin --- .../ethernet/intel/ice/ice_virtchnl_fdir.c | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c b/drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c index c6a58343d81d..a2645ff3100e 100644 --- a/drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c +++ b/drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c @@ -541,6 +541,72 @@ static void ice_vc_fdir_rem_prof_all(struct ice_vf *vf) } } +/** + * ice_vc_fdir_has_prof_conflict + * @vf: pointer to the VF structure + * @conf: FDIR configuration for each filter + * + * Check if @conf has conflicting profile with existing profiles + * + * Return: true on success, and false on error. + */ +static bool +ice_vc_fdir_has_prof_conflict(struct ice_vf *vf, + struct virtchnl_fdir_fltr_conf *conf) +{ + struct ice_fdir_fltr *desc; + + list_for_each_entry(desc, &vf->fdir.fdir_rule_list, fltr_node) { + struct virtchnl_fdir_fltr_conf *existing_conf; + enum ice_fltr_ptype flow_type_a, flow_type_b; + struct ice_fdir_fltr *a, *b; + + existing_conf = to_fltr_conf_from_desc(desc); + a = &existing_conf->input; + b = &conf->input; + flow_type_a = a->flow_type; + flow_type_b = b->flow_type; + + /* No need to compare two rules with different tunnel types or + * with the same protocol type. + */ + if (existing_conf->ttype != conf->ttype || + flow_type_a == flow_type_b) + continue; + + switch (flow_type_a) { + case ICE_FLTR_PTYPE_NONF_IPV4_UDP: + case ICE_FLTR_PTYPE_NONF_IPV4_TCP: + case ICE_FLTR_PTYPE_NONF_IPV4_SCTP: + if (flow_type_b == ICE_FLTR_PTYPE_NONF_IPV4_OTHER) + return true; + break; + case ICE_FLTR_PTYPE_NONF_IPV4_OTHER: + if (flow_type_b == ICE_FLTR_PTYPE_NONF_IPV4_UDP || + flow_type_b == ICE_FLTR_PTYPE_NONF_IPV4_TCP || + flow_type_b == ICE_FLTR_PTYPE_NONF_IPV4_SCTP) + return true; + break; + case ICE_FLTR_PTYPE_NONF_IPV6_UDP: + case ICE_FLTR_PTYPE_NONF_IPV6_TCP: + case ICE_FLTR_PTYPE_NONF_IPV6_SCTP: + if (flow_type_b == ICE_FLTR_PTYPE_NONF_IPV6_OTHER) + return true; + break; + case ICE_FLTR_PTYPE_NONF_IPV6_OTHER: + if (flow_type_b == ICE_FLTR_PTYPE_NONF_IPV6_UDP || + flow_type_b == ICE_FLTR_PTYPE_NONF_IPV6_TCP || + flow_type_b == ICE_FLTR_PTYPE_NONF_IPV6_SCTP) + return true; + break; + default: + break; + } + } + + return false; +} + /** * ice_vc_fdir_write_flow_prof * @vf: pointer to the VF structure @@ -677,6 +743,13 @@ ice_vc_fdir_config_input_set(struct ice_vf *vf, struct virtchnl_fdir_add *fltr, enum ice_fltr_ptype flow; int ret; + ret = ice_vc_fdir_has_prof_conflict(vf, conf); + if (ret) { + dev_dbg(dev, "Found flow profile conflict for VF %d\n", + vf->vf_id); + return ret; + } + flow = input->flow_type; ret = ice_vc_fdir_alloc_prof(vf, flow); if (ret) { From 9bc9e4442fe3aee93269b5c6031c025257d98758 Mon Sep 17 00:00:00 2001 From: Jakob Koschel Date: Mon, 20 Mar 2023 13:48:15 +0100 Subject: [PATCH 115/269] ice: fix invalid check for empty list in ice_sched_assoc_vsi_to_agg() [ Upstream commit e9a1cc2e4c4ee7c7e60fb26345618c2522a2a10f ] The code implicitly assumes that the list iterator finds a correct handle. If 'vsi_handle' is not found the 'old_agg_vsi_info' was pointing to an bogus memory location. For safety a separate list iterator variable should be used to make the != NULL check on 'old_agg_vsi_info' correct under any circumstances. Additionally Linus proposed to avoid any use of the list iterator variable after the loop, in the attempt to move the list iterator variable declaration into the macro to avoid any potential misuse after the loop. Using it in a pointer comparison after the loop is undefined behavior and should be omitted if possible [1]. Fixes: 37c592062b16 ("ice: remove the VSI info from previous agg") Link: https://lore.kernel.org/all/CAHk-=wgRr_D8CB-D9Kg-c=EHreAsk5SqXPwr9Y7k9sA6cWXJ6w@mail.gmail.com/ [1] Signed-off-by: Jakob Koschel Tested-by: Arpana Arland (A Contingent worker at Intel) Signed-off-by: Tony Nguyen Signed-off-by: Sasha Levin --- drivers/net/ethernet/intel/ice/ice_sched.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_sched.c b/drivers/net/ethernet/intel/ice/ice_sched.c index 118595763bba..2c62c1763ee0 100644 --- a/drivers/net/ethernet/intel/ice/ice_sched.c +++ b/drivers/net/ethernet/intel/ice/ice_sched.c @@ -2756,7 +2756,7 @@ static int ice_sched_assoc_vsi_to_agg(struct ice_port_info *pi, u32 agg_id, u16 vsi_handle, unsigned long *tc_bitmap) { - struct ice_sched_agg_vsi_info *agg_vsi_info, *old_agg_vsi_info = NULL; + struct ice_sched_agg_vsi_info *agg_vsi_info, *iter, *old_agg_vsi_info = NULL; struct ice_sched_agg_info *agg_info, *old_agg_info; struct ice_hw *hw = pi->hw; int status = 0; @@ -2774,11 +2774,13 @@ ice_sched_assoc_vsi_to_agg(struct ice_port_info *pi, u32 agg_id, if (old_agg_info && old_agg_info != agg_info) { struct ice_sched_agg_vsi_info *vtmp; - list_for_each_entry_safe(old_agg_vsi_info, vtmp, + list_for_each_entry_safe(iter, vtmp, &old_agg_info->agg_vsi_list, list_entry) - if (old_agg_vsi_info->vsi_handle == vsi_handle) + if (iter->vsi_handle == vsi_handle) { + old_agg_vsi_info = iter; break; + } } /* check if entry already exist */ From db7d7782677ff998c06997903d5400a0ba91cebb Mon Sep 17 00:00:00 2001 From: Tasos Sahanidis Date: Wed, 29 Mar 2023 06:24:22 +0300 Subject: [PATCH 116/269] ALSA: ymfpci: Create card with device-managed snd_devm_card_new() [ Upstream commit f33fc1576757741479452255132d6e3aaf558ffe ] snd_card_ymfpci_remove() was removed in commit c6e6bb5eab74 ("ALSA: ymfpci: Allocate resources with device-managed APIs"), but the call to snd_card_new() was not replaced with snd_devm_card_new(). Since there was no longer a call to snd_card_free, unloading the module would eventually result in Oops: [697561.532887] BUG: unable to handle page fault for address: ffffffffc0924480 [697561.532893] #PF: supervisor read access in kernel mode [697561.532896] #PF: error_code(0x0000) - not-present page [697561.532899] PGD ae1e15067 P4D ae1e15067 PUD ae1e17067 PMD 11a8f5067 PTE 0 [697561.532905] Oops: 0000 [#1] PREEMPT SMP NOPTI [697561.532909] CPU: 21 PID: 5080 Comm: wireplumber Tainted: G W OE 6.2.7 #1 [697561.532914] Hardware name: System manufacturer System Product Name/TUF GAMING X570-PLUS, BIOS 4408 10/28/2022 [697561.532916] RIP: 0010:try_module_get.part.0+0x1a/0xe0 [697561.532924] Code: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 55 48 89 e5 41 55 41 54 49 89 fc bf 01 00 00 00 e8 56 3c f8 ff <41> 83 3c 24 02 0f 84 96 00 00 00 41 8b 84 24 30 03 00 00 85 c0 0f [697561.532927] RSP: 0018:ffffbe9b858c3bd8 EFLAGS: 00010246 [697561.532930] RAX: ffff9815d14f1900 RBX: ffff9815c14e6000 RCX: 0000000000000000 [697561.532933] RDX: 0000000000000000 RSI: ffffffffc055092c RDI: ffffffffb3778c1a [697561.532935] RBP: ffffbe9b858c3be8 R08: 0000000000000040 R09: ffff981a1a741380 [697561.532937] R10: ffffbe9b858c3c80 R11: 00000009d56533a6 R12: ffffffffc0924480 [697561.532939] R13: ffff9823439d8500 R14: 0000000000000025 R15: ffff9815cd109f80 [697561.532942] FS: 00007f13084f1f80(0000) GS:ffff9824aef40000(0000) knlGS:0000000000000000 [697561.532945] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [697561.532947] CR2: ffffffffc0924480 CR3: 0000000145344000 CR4: 0000000000350ee0 [697561.532949] Call Trace: [697561.532951] [697561.532955] try_module_get+0x13/0x30 [697561.532960] snd_ctl_open+0x61/0x1c0 [snd] [697561.532976] snd_open+0xb4/0x1e0 [snd] [697561.532989] chrdev_open+0xc7/0x240 [697561.532995] ? fsnotify_perm.part.0+0x6e/0x160 [697561.533000] ? __pfx_chrdev_open+0x10/0x10 [697561.533005] do_dentry_open+0x169/0x440 [697561.533009] vfs_open+0x2d/0x40 [697561.533012] path_openat+0xa9d/0x10d0 [697561.533017] ? debug_smp_processor_id+0x17/0x20 [697561.533022] ? trigger_load_balance+0x65/0x370 [697561.533026] do_filp_open+0xb2/0x160 [697561.533032] ? _raw_spin_unlock+0x19/0x40 [697561.533036] ? alloc_fd+0xa9/0x190 [697561.533040] do_sys_openat2+0x9f/0x160 [697561.533044] __x64_sys_openat+0x55/0x90 [697561.533048] do_syscall_64+0x3b/0x90 [697561.533052] entry_SYSCALL_64_after_hwframe+0x72/0xdc [697561.533056] RIP: 0033:0x7f1308a40db4 [697561.533059] Code: 24 20 eb 8f 66 90 44 89 54 24 0c e8 46 68 f8 ff 44 8b 54 24 0c 44 89 e2 48 89 ee 41 89 c0 bf 9c ff ff ff b8 01 01 00 00 0f 05 <48> 3d 00 f0 ff ff 77 32 44 89 c7 89 44 24 0c e8 78 68 f8 ff 8b 44 [697561.533062] RSP: 002b:00007ffcce664450 EFLAGS: 00000293 ORIG_RAX: 0000000000000101 [697561.533066] RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007f1308a40db4 [697561.533068] RDX: 0000000000080000 RSI: 00007ffcce664690 RDI: 00000000ffffff9c [697561.533070] RBP: 00007ffcce664690 R08: 0000000000000000 R09: 0000000000000012 [697561.533072] R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000080000 [697561.533074] R13: 00007f13054b069b R14: 0000565209f83200 R15: 0000000000000000 [697561.533078] Fixes: c6e6bb5eab74 ("ALSA: ymfpci: Allocate resources with device-managed APIs") Signed-off-by: Tasos Sahanidis Link: https://lore.kernel.org/r/20230329032422.170024-1-tasos@tasossah.com Signed-off-by: Takashi Iwai Signed-off-by: Sasha Levin --- sound/pci/ymfpci/ymfpci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/pci/ymfpci/ymfpci.c b/sound/pci/ymfpci/ymfpci.c index 1e198e4d57b8..82d4e0fda91b 100644 --- a/sound/pci/ymfpci/ymfpci.c +++ b/sound/pci/ymfpci/ymfpci.c @@ -170,7 +170,7 @@ static int snd_card_ymfpci_probe(struct pci_dev *pci, return -ENOENT; } - err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE, + err = snd_devm_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE, sizeof(*chip), &card); if (err < 0) return err; From 32b9bd7cfc2e2d92d595386add4e111b232b351f Mon Sep 17 00:00:00 2001 From: Tasos Sahanidis Date: Wed, 29 Mar 2023 06:28:08 +0300 Subject: [PATCH 117/269] ALSA: ymfpci: Fix BUG_ON in probe function [ Upstream commit 6be2e7522eb529b41c16d459f33bbdbcddbf5c15 ] The snd_dma_buffer.bytes field now contains the aligned size, which this snd_BUG_ON() did not account for, resulting in the following: [ 9.625915] ------------[ cut here ]------------ [ 9.633440] WARNING: CPU: 0 PID: 126 at sound/pci/ymfpci/ymfpci_main.c:2168 snd_ymfpci_create+0x681/0x698 [snd_ymfpci] [ 9.648926] Modules linked in: snd_ymfpci(+) snd_intel_dspcfg kvm(+) snd_intel_sdw_acpi snd_ac97_codec snd_mpu401_uart snd_opl3_lib irqbypass snd_hda_codec gameport snd_rawmidi crct10dif_pclmul crc32_pclmul cfg80211 snd_hda_core polyval_clmulni polyval_generic gf128mul snd_seq_device ghash_clmulni_intel snd_hwdep ac97_bus sha512_ssse3 rfkill snd_pcm aesni_intel tg3 snd_timer crypto_simd snd mxm_wmi libphy cryptd k10temp fam15h_power pcspkr soundcore sp5100_tco wmi acpi_cpufreq mac_hid dm_multipath sg loop fuse dm_mod bpf_preload ip_tables x_tables ext4 crc32c_generic crc16 mbcache jbd2 sr_mod cdrom ata_generic pata_acpi firewire_ohci crc32c_intel firewire_core xhci_pci crc_itu_t pata_via xhci_pci_renesas floppy [ 9.711849] CPU: 0 PID: 126 Comm: kworker/0:2 Not tainted 6.1.21-1-lts #1 08d2e5ece03136efa7c6aeea9a9c40916b1bd8da [ 9.722200] Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./990FX Extreme4, BIOS P2.70 06/05/2014 [ 9.732204] Workqueue: events work_for_cpu_fn [ 9.736580] RIP: 0010:snd_ymfpci_create+0x681/0x698 [snd_ymfpci] [ 9.742594] Code: 8c c0 4c 89 e2 48 89 df 48 c7 c6 92 c6 8c c0 e8 15 d0 e9 ff 48 83 c4 08 44 89 e8 5b 5d 41 5c 41 5d 41 5e 41 5f e9 d3 7a 33 e3 <0f> 0b e9 cb fd ff ff 41 bd fb ff ff ff eb db 41 bd f4 ff ff ff eb [ 9.761358] RSP: 0018:ffffab64804e7da0 EFLAGS: 00010287 [ 9.766594] RAX: ffff8fa2df06c400 RBX: ffff8fa3073a8000 RCX: ffff8fa303fbc4a8 [ 9.773734] RDX: ffff8fa2df06d000 RSI: 0000000000000010 RDI: 0000000000000020 [ 9.780876] RBP: ffff8fa300b5d0d0 R08: ffff8fa3073a8e50 R09: 00000000df06bf00 [ 9.788018] R10: ffff8fa2df06bf00 R11: 00000000df068200 R12: ffff8fa3073a8918 [ 9.795159] R13: 0000000000000000 R14: 0000000000000080 R15: ffff8fa2df068200 [ 9.802317] FS: 0000000000000000(0000) GS:ffff8fa9fec00000(0000) knlGS:0000000000000000 [ 9.810414] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 9.816158] CR2: 000055febaf66500 CR3: 0000000101a2e000 CR4: 00000000000406f0 [ 9.823301] Call Trace: [ 9.825747] [ 9.827889] snd_card_ymfpci_probe+0x194/0x950 [snd_ymfpci b78a5fe64b5663a6390a909c67808567e3e73615] [ 9.837030] ? finish_task_switch.isra.0+0x90/0x2d0 [ 9.841918] local_pci_probe+0x45/0x80 [ 9.845680] work_for_cpu_fn+0x1a/0x30 [ 9.849431] process_one_work+0x1c7/0x380 [ 9.853464] worker_thread+0x1af/0x390 [ 9.857225] ? rescuer_thread+0x3b0/0x3b0 [ 9.861254] kthread+0xde/0x110 [ 9.864414] ? kthread_complete_and_exit+0x20/0x20 [ 9.869210] ret_from_fork+0x22/0x30 [ 9.872792] [ 9.874985] ---[ end trace 0000000000000000 ]--- Fixes: 5c1733e33c88 ("ALSA: memalloc: Align buffer allocations in page size") Signed-off-by: Tasos Sahanidis Link: https://lore.kernel.org/r/20230329032808.170403-1-tasos@tasossah.com Signed-off-by: Takashi Iwai Signed-off-by: Sasha Levin --- sound/pci/ymfpci/ymfpci_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/pci/ymfpci/ymfpci_main.c b/sound/pci/ymfpci/ymfpci_main.c index c80114c0ad7b..b492c32ce070 100644 --- a/sound/pci/ymfpci/ymfpci_main.c +++ b/sound/pci/ymfpci/ymfpci_main.c @@ -2165,7 +2165,7 @@ static int snd_ymfpci_memalloc(struct snd_ymfpci *chip) chip->work_base = ptr; chip->work_base_addr = ptr_addr; - snd_BUG_ON(ptr + chip->work_size != + snd_BUG_ON(ptr + PAGE_ALIGN(chip->work_size) != chip->work_ptr->area + chip->work_ptr->bytes); snd_ymfpci_writel(chip, YDSXGR_PLAYCTRLBASE, chip->bank_base_playback_addr); From 6e43dc9dcf22ebbe8ad54e3f2109f129dccd09cc Mon Sep 17 00:00:00 2001 From: Alex Elder Date: Tue, 28 Mar 2023 11:27:51 -0500 Subject: [PATCH 118/269] net: ipa: compute DMA pool size properly [ Upstream commit 6c75dc94f2b27fff57b305af9236eea181a00b6c ] In gsi_trans_pool_init_dma(), the total size of a pool of memory used for DMA transactions is calculated. However the calculation is done incorrectly. For 4KB pages, this total size is currently always more than one page, and as a result, the calculation produces a positive (though incorrect) total size. The code still works in this case; we just end up with fewer DMA pool entries than we intended. Bjorn Andersson tested booting a kernel with 16KB pages, and hit a null pointer derereference in sg_alloc_append_table_from_pages(), descending from gsi_trans_pool_init_dma(). The cause of this was that a 16KB total size was going to be allocated, and with 16KB pages the order of that allocation is 0. The total_size calculation yielded 0, which eventually led to the crash. Correcting the total_size calculation fixes the problem. Reported-by: Bjorn Andersson Tested-by: Bjorn Andersson Fixes: 9dd441e4ed57 ("soc: qcom: ipa: GSI transactions") Reviewed-by: Mark Bloch Signed-off-by: Alex Elder Reviewed-by: Leon Romanovsky Link: https://lore.kernel.org/r/20230328162751.2861791-1-elder@linaro.org Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ipa/gsi_trans.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ipa/gsi_trans.c b/drivers/net/ipa/gsi_trans.c index 26b7f683a3e1..fa6863c265eb 100644 --- a/drivers/net/ipa/gsi_trans.c +++ b/drivers/net/ipa/gsi_trans.c @@ -153,7 +153,7 @@ int gsi_trans_pool_init_dma(struct device *dev, struct gsi_trans_pool *pool, * gsi_trans_pool_exit_dma() can assume the total allocated * size is exactly (count * size). */ - total_size = get_order(total_size) << PAGE_SHIFT; + total_size = PAGE_SIZE << get_order(total_size); virt = dma_alloc_coherent(dev, total_size, &addr, GFP_KERNEL); if (!virt) From 37f9fe34482ef5e19cf8fb9dfb43a26e01f101f1 Mon Sep 17 00:00:00 2001 From: Radoslaw Tyl Date: Tue, 28 Mar 2023 10:26:59 -0700 Subject: [PATCH 119/269] i40e: fix registers dump after run ethtool adapter self test [ Upstream commit c5cff16f461a4a434a9915a7be7ac9ced861a8a4 ] Fix invalid registers dump from ethtool -d ethX after adapter self test by ethtool -t ethY. It causes invalid data display. The problem was caused by overwriting i40e_reg_list[].elements which is common for ethtool self test and dump. Fixes: 22dd9ae8afcc ("i40e: Rework register diagnostic") Signed-off-by: Radoslaw Tyl Reviewed-by: Michal Swiatkowski Tested-by: Arpana Arland (A Contingent worker at Intel) Signed-off-by: Tony Nguyen Reviewed-by: Leon Romanovsky Link: https://lore.kernel.org/r/20230328172659.3906413-1-anthony.l.nguyen@intel.com Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ethernet/intel/i40e/i40e_diag.c | 11 ++++++----- drivers/net/ethernet/intel/i40e/i40e_diag.h | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_diag.c b/drivers/net/ethernet/intel/i40e/i40e_diag.c index ef4d3762bf37..ca229b0efeb6 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_diag.c +++ b/drivers/net/ethernet/intel/i40e/i40e_diag.c @@ -44,7 +44,7 @@ static i40e_status i40e_diag_reg_pattern_test(struct i40e_hw *hw, return 0; } -struct i40e_diag_reg_test_info i40e_reg_list[] = { +const struct i40e_diag_reg_test_info i40e_reg_list[] = { /* offset mask elements stride */ {I40E_QTX_CTL(0), 0x0000FFBF, 1, I40E_QTX_CTL(1) - I40E_QTX_CTL(0)}, @@ -78,27 +78,28 @@ i40e_status i40e_diag_reg_test(struct i40e_hw *hw) { i40e_status ret_code = 0; u32 reg, mask; + u32 elements; u32 i, j; for (i = 0; i40e_reg_list[i].offset != 0 && !ret_code; i++) { + elements = i40e_reg_list[i].elements; /* set actual reg range for dynamically allocated resources */ if (i40e_reg_list[i].offset == I40E_QTX_CTL(0) && hw->func_caps.num_tx_qp != 0) - i40e_reg_list[i].elements = hw->func_caps.num_tx_qp; + elements = hw->func_caps.num_tx_qp; if ((i40e_reg_list[i].offset == I40E_PFINT_ITRN(0, 0) || i40e_reg_list[i].offset == I40E_PFINT_ITRN(1, 0) || i40e_reg_list[i].offset == I40E_PFINT_ITRN(2, 0) || i40e_reg_list[i].offset == I40E_QINT_TQCTL(0) || i40e_reg_list[i].offset == I40E_QINT_RQCTL(0)) && hw->func_caps.num_msix_vectors != 0) - i40e_reg_list[i].elements = - hw->func_caps.num_msix_vectors - 1; + elements = hw->func_caps.num_msix_vectors - 1; /* test register access */ mask = i40e_reg_list[i].mask; - for (j = 0; j < i40e_reg_list[i].elements && !ret_code; j++) { + for (j = 0; j < elements && !ret_code; j++) { reg = i40e_reg_list[i].offset + (j * i40e_reg_list[i].stride); ret_code = i40e_diag_reg_pattern_test(hw, reg, mask); diff --git a/drivers/net/ethernet/intel/i40e/i40e_diag.h b/drivers/net/ethernet/intel/i40e/i40e_diag.h index c3340f320a18..1db7c6d57231 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_diag.h +++ b/drivers/net/ethernet/intel/i40e/i40e_diag.h @@ -20,7 +20,7 @@ struct i40e_diag_reg_test_info { u32 stride; /* bytes between each element */ }; -extern struct i40e_diag_reg_test_info i40e_reg_list[]; +extern const struct i40e_diag_reg_test_info i40e_reg_list[]; i40e_status i40e_diag_reg_test(struct i40e_hw *hw); i40e_status i40e_diag_eeprom_test(struct i40e_hw *hw); From a4dd9f756973dae340c8daaae6e1d992f2553c11 Mon Sep 17 00:00:00 2001 From: Kalesh AP Date: Tue, 28 Mar 2023 18:30:19 -0700 Subject: [PATCH 120/269] bnxt_en: Fix reporting of test result in ethtool selftest [ Upstream commit 83714dc3db0e4a088673601bc8099b079bc1a077 ] When the selftest command fails, driver is not reporting the failure by updating the "test->flags" when bnxt_close_nic() fails. Fixes: eb51365846bc ("bnxt_en: Add basic ethtool -t selftest support.") Reviewed-by: Pavan Chebbi Reviewed-by: Somnath Kotur Signed-off-by: Kalesh AP Signed-off-by: Michael Chan Reviewed-by: Simon Horman Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c index 703fc163235f..cdbc62ad659c 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c @@ -3634,6 +3634,7 @@ static void bnxt_self_test(struct net_device *dev, struct ethtool_test *etest, bnxt_ulp_stop(bp); rc = bnxt_close_nic(bp, true, false); if (rc) { + etest->flags |= ETH_TEST_FL_FAILED; bnxt_ulp_start(bp, rc); return; } From f06ae13e995ad5cc0e871d19dee919fd00c92700 Mon Sep 17 00:00:00 2001 From: Kalesh AP Date: Tue, 28 Mar 2023 18:30:20 -0700 Subject: [PATCH 121/269] bnxt_en: Fix typo in PCI id to device description string mapping [ Upstream commit 62aad36ed31abc80f35db11e187e690448a79f7d ] Fix 57502 and 57508 NPAR description string entries. The typos caused these devices to not match up with lspci output. Fixes: 49c98421e6ab ("bnxt_en: Add PCI IDs for 57500 series NPAR devices.") Reviewed-by: Pavan Chebbi Signed-off-by: Kalesh AP Signed-off-by: Michael Chan Reviewed-by: Simon Horman Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 251b102d2792..c6e36603bd2d 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -175,12 +175,12 @@ static const struct pci_device_id bnxt_pci_tbl[] = { { PCI_VDEVICE(BROADCOM, 0x1750), .driver_data = BCM57508 }, { PCI_VDEVICE(BROADCOM, 0x1751), .driver_data = BCM57504 }, { PCI_VDEVICE(BROADCOM, 0x1752), .driver_data = BCM57502 }, - { PCI_VDEVICE(BROADCOM, 0x1800), .driver_data = BCM57508_NPAR }, + { PCI_VDEVICE(BROADCOM, 0x1800), .driver_data = BCM57502_NPAR }, { PCI_VDEVICE(BROADCOM, 0x1801), .driver_data = BCM57504_NPAR }, - { PCI_VDEVICE(BROADCOM, 0x1802), .driver_data = BCM57502_NPAR }, - { PCI_VDEVICE(BROADCOM, 0x1803), .driver_data = BCM57508_NPAR }, + { PCI_VDEVICE(BROADCOM, 0x1802), .driver_data = BCM57508_NPAR }, + { PCI_VDEVICE(BROADCOM, 0x1803), .driver_data = BCM57502_NPAR }, { PCI_VDEVICE(BROADCOM, 0x1804), .driver_data = BCM57504_NPAR }, - { PCI_VDEVICE(BROADCOM, 0x1805), .driver_data = BCM57502_NPAR }, + { PCI_VDEVICE(BROADCOM, 0x1805), .driver_data = BCM57508_NPAR }, { PCI_VDEVICE(BROADCOM, 0xd802), .driver_data = BCM58802 }, { PCI_VDEVICE(BROADCOM, 0xd804), .driver_data = BCM58804 }, #ifdef CONFIG_BNXT_SRIOV From b055e322907e4b83d366633fa761d25f7319c509 Mon Sep 17 00:00:00 2001 From: Michael Chan Date: Tue, 28 Mar 2023 18:30:21 -0700 Subject: [PATCH 122/269] bnxt_en: Add missing 200G link speed reporting [ Upstream commit 581bce7bcb7e7f100908728e7b292e266c76895b ] bnxt_fw_to_ethtool_speed() is missing the case statement for 200G link speed reported by firmware. As a result, ethtool will report unknown speed when the firmware reports 200G link speed. Fixes: 532262ba3b84 ("bnxt_en: ethtool: support PAM4 link speeds up to 200G") Signed-off-by: Michael Chan Reviewed-by: Simon Horman Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ethernet/broadcom/bnxt/bnxt.h | 1 + drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h index 02741d499bf4..1d2588c92977 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h @@ -1225,6 +1225,7 @@ struct bnxt_link_info { #define BNXT_LINK_SPEED_40GB PORT_PHY_QCFG_RESP_LINK_SPEED_40GB #define BNXT_LINK_SPEED_50GB PORT_PHY_QCFG_RESP_LINK_SPEED_50GB #define BNXT_LINK_SPEED_100GB PORT_PHY_QCFG_RESP_LINK_SPEED_100GB +#define BNXT_LINK_SPEED_200GB PORT_PHY_QCFG_RESP_LINK_SPEED_200GB u16 support_speeds; u16 support_pam4_speeds; u16 auto_link_speeds; /* fw adv setting */ diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c index cdbc62ad659c..01b973bc509f 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c @@ -1712,6 +1712,8 @@ u32 bnxt_fw_to_ethtool_speed(u16 fw_link_speed) return SPEED_50000; case BNXT_LINK_SPEED_100GB: return SPEED_100000; + case BNXT_LINK_SPEED_200GB: + return SPEED_200000; default: return SPEED_UNKNOWN; } From 1b0e8aba451031fa031bfb96711af12c4b902fdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20B=C3=A4tz?= Date: Wed, 29 Mar 2023 12:01:40 -0300 Subject: [PATCH 123/269] net: dsa: mv88e6xxx: Enable IGMP snooping on user ports only MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit 7bcad0f0e6fbc1d613e49e0ee35c8e5f2e685bb0 ] Do not set the MV88E6XXX_PORT_CTL0_IGMP_MLD_SNOOP bit on CPU or DSA ports. This allows the host CPU port to be a regular IGMP listener by sending out IGMP Membership Reports, which would otherwise not be forwarded by the mv88exxx chip, but directly looped back to the CPU port itself. Fixes: 54d792f257c6 ("net: dsa: Centralise global and port setup code into mv88e6xxx.") Signed-off-by: Steffen Bätz Signed-off-by: Fabio Estevam Reviewed-by: Andrew Lunn Reviewed-by: Vladimir Oltean Reviewed-by: Florian Fainelli Link: https://lore.kernel.org/r/20230329150140.701559-1-festevam@gmail.com Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/dsa/mv88e6xxx/chip.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c index 3a6db36574ad..8cf27e2654fc 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -3354,9 +3354,14 @@ static int mv88e6xxx_setup_port(struct mv88e6xxx_chip *chip, int port) * If this is the upstream port for this switch, enable * forwarding of unknown unicasts and multicasts. */ - reg = MV88E6XXX_PORT_CTL0_IGMP_MLD_SNOOP | - MV88E6185_PORT_CTL0_USE_TAG | MV88E6185_PORT_CTL0_USE_IP | + reg = MV88E6185_PORT_CTL0_USE_TAG | MV88E6185_PORT_CTL0_USE_IP | MV88E6XXX_PORT_CTL0_STATE_FORWARDING; + /* Forward any IPv4 IGMP or IPv6 MLD frames received + * by a USER port to the CPU port to allow snooping. + */ + if (dsa_is_user_port(ds, port)) + reg |= MV88E6XXX_PORT_CTL0_IGMP_MLD_SNOOP; + err = mv88e6xxx_port_write(chip, port, MV88E6XXX_PORT_CTL0, reg); if (err) return err; From a7bd974edf12185341f85e1a2197b7065e2322d9 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Thu, 30 Mar 2023 14:08:38 +0200 Subject: [PATCH 124/269] net: ethernet: mtk_eth_soc: fix flow block refcounting logic [ Upstream commit 8c1cb87c2a5c29da416848451a687473f379611c ] Since we call flow_block_cb_decref on FLOW_BLOCK_UNBIND, we also need to call flow_block_cb_incref for a newly allocated cb. Also fix the accidentally inverted refcount check on unbind. Fixes: 502e84e2382d ("net: ethernet: mtk_eth_soc: add flow offloading support") Reviewed-by: Simon Horman Signed-off-by: Felix Fietkau Reviewed-by: Leon Romanovsky Link: https://lore.kernel.org/r/20230330120840.52079-1-nbd@nbd.name Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ethernet/mediatek/mtk_ppe_offload.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c index 28bbd1df3e30..6a72687d5b83 100644 --- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c +++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c @@ -570,6 +570,7 @@ mtk_eth_setup_tc_block(struct net_device *dev, struct flow_block_offload *f) if (IS_ERR(block_cb)) return PTR_ERR(block_cb); + flow_block_cb_incref(block_cb); flow_block_cb_add(block_cb, f); list_add_tail(&block_cb->driver_list, &block_cb_list); return 0; @@ -578,7 +579,7 @@ mtk_eth_setup_tc_block(struct net_device *dev, struct flow_block_offload *f) if (!block_cb) return -ENOENT; - if (flow_block_cb_decref(block_cb)) { + if (!flow_block_cb_decref(block_cb)) { flow_block_cb_remove(block_cb, f); list_del(&block_cb->driver_list); } From 106fb49b14af1eeb064616090f8cc9afc27516be Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Thu, 30 Mar 2023 14:08:40 +0200 Subject: [PATCH 125/269] net: ethernet: mtk_eth_soc: add missing ppe cache flush when deleting a flow [ Upstream commit 924531326e2dd4ceabe7240f2b55a88e7d894ec2 ] The cache needs to be flushed to ensure that the hardware stops offloading the flow immediately. Fixes: 33fc42de3327 ("net: ethernet: mtk_eth_soc: support creating mac address based offload entries") Reviewed-by: Simon Horman Signed-off-by: Felix Fietkau Reviewed-by: Leon Romanovsky Link: https://lore.kernel.org/r/20230330120840.52079-3-nbd@nbd.name Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- drivers/net/ethernet/mediatek/mtk_ppe.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/mediatek/mtk_ppe.c b/drivers/net/ethernet/mediatek/mtk_ppe.c index 34ea8af48c3d..d6eed204574a 100644 --- a/drivers/net/ethernet/mediatek/mtk_ppe.c +++ b/drivers/net/ethernet/mediatek/mtk_ppe.c @@ -438,6 +438,7 @@ __mtk_foe_entry_clear(struct mtk_ppe *ppe, struct mtk_flow_entry *entry) hwe->ib1 &= ~MTK_FOE_IB1_STATE; hwe->ib1 |= FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_INVALID); dma_wmb(); + mtk_ppe_cache_clear(ppe); } entry->hash = 0xffff; From 2a858f3f804ce62a57ed5660bf9068afe7fd6377 Mon Sep 17 00:00:00 2001 From: Horatiu Vultur Date: Mon, 6 Feb 2023 21:37:20 +0100 Subject: [PATCH 126/269] pinctrl: ocelot: Fix alt mode for ocelot [ Upstream commit 657fd9da2d4b4aa0a384105b236baa22fa0233bf ] In case the driver was trying to set an alternate mode for gpio 0 or 32 then the mode was not set correctly. The reason is that there is computation error inside the function ocelot_pinmux_set_mux because in this case it was trying to shift to left by -1. Fix this by actually shifting the function bits and not the position. Fixes: 4b36082e2e09 ("pinctrl: ocelot: fix pinmuxing for pins after 31") Signed-off-by: Horatiu Vultur Link: https://lore.kernel.org/r/20230206203720.1177718-1-horatiu.vultur@microchip.com Signed-off-by: Linus Walleij Signed-off-by: Sasha Levin --- drivers/pinctrl/pinctrl-ocelot.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pinctrl/pinctrl-ocelot.c b/drivers/pinctrl/pinctrl-ocelot.c index 3d5995cbcb78..c1d58939dd89 100644 --- a/drivers/pinctrl/pinctrl-ocelot.c +++ b/drivers/pinctrl/pinctrl-ocelot.c @@ -1202,7 +1202,7 @@ static int ocelot_pinmux_set_mux(struct pinctrl_dev *pctldev, regmap_update_bits(info->map, REG_ALT(0, info, pin->pin), BIT(p), f << p); regmap_update_bits(info->map, REG_ALT(1, info, pin->pin), - BIT(p), f << (p - 1)); + BIT(p), (f >> 1) << p); return 0; } From db0ac14908af0bb9bf66d1e79804f52a262679f4 Mon Sep 17 00:00:00 2001 From: Matthias Benkmann Date: Sun, 19 Mar 2023 21:30:15 -0700 Subject: [PATCH 127/269] Input: xpad - fix incorrectly applied patch for MAP_PROFILE_BUTTON [ Upstream commit ffa6206ebf8d39e83d87ac226df68dbbe155819a ] When commit commit fff1011a26d6 ("Input: xpad - add X-Box Adaptive Profile button") was applied, one hunk ended up in the wrong function; move it to where it belongs. Fixes: fff1011a26d6 ("Input: xpad - add X-Box Adaptive Profile button") Signed-off-by: Matthias Benkmann Link: https://lore.kernel.org/r/20230318162106.0aef4ba5@ninja Signed-off-by: Dmitry Torokhov Signed-off-by: Sasha Levin --- drivers/input/joystick/xpad.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index 2959d80f7fdb..cd36cf716542 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -779,9 +779,6 @@ static void xpad_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char *d input_report_key(dev, BTN_C, data[8]); input_report_key(dev, BTN_Z, data[9]); - /* Profile button has a value of 0-3, so it is reported as an axis */ - if (xpad->mapping & MAP_PROFILE_BUTTON) - input_report_abs(dev, ABS_PROFILE, data[34]); input_sync(dev); } @@ -1059,6 +1056,10 @@ static void xpadone_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char (__u16) le16_to_cpup((__le16 *)(data + 8))); } + /* Profile button has a value of 0-3, so it is reported as an axis */ + if (xpad->mapping & MAP_PROFILE_BUTTON) + input_report_abs(dev, ABS_PROFILE, data[34]); + /* paddle handling */ /* based on SDL's SDL_hidapi_xboxone.c */ if (xpad->mapping & MAP_PADDLES) { From 973043d6bdea219b74b3a51442d5c77c11242c71 Mon Sep 17 00:00:00 2001 From: Lu Baolu Date: Wed, 29 Mar 2023 21:47:20 +0800 Subject: [PATCH 128/269] iommu/vt-d: Allow zero SAGAW if second-stage not supported [ Upstream commit bfd3c6b9fa4a1dc78139dd1621d5bea321ffa69d ] The VT-d spec states (in section 11.4.2) that hardware implementations reporting second-stage translation support (SSTS) field as Clear also report the SAGAW field as 0. Fix an inappropriate check in alloc_iommu(). Fixes: 792fb43ce2c9 ("iommu/vt-d: Enable Intel IOMMU scalable mode by default") Suggested-by: Raghunathan Srinivasan Reviewed-by: Kevin Tian Signed-off-by: Jacob Pan Signed-off-by: Lu Baolu Link: https://lore.kernel.org/r/20230318024824.124542-1-baolu.lu@linux.intel.com Link: https://lore.kernel.org/r/20230329134721.469447-3-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel Signed-off-by: Sasha Levin --- drivers/iommu/intel/dmar.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/intel/dmar.c b/drivers/iommu/intel/dmar.c index bc94059a5b87..f800989ea046 100644 --- a/drivers/iommu/intel/dmar.c +++ b/drivers/iommu/intel/dmar.c @@ -1057,7 +1057,8 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd) } err = -EINVAL; - if (cap_sagaw(iommu->cap) == 0) { + if (!cap_sagaw(iommu->cap) && + (!ecap_smts(iommu->ecap) || ecap_slts(iommu->ecap))) { pr_info("%s: No supported address widths. Not attempting DMA translation.\n", iommu->name); drhd->ignored = 1; From 30a8863f21ec8451142241a77cade1b8b8ab17f7 Mon Sep 17 00:00:00 2001 From: Werner Sembach Date: Thu, 23 Mar 2023 18:13:11 -0700 Subject: [PATCH 129/269] Input: i8042 - add TUXEDO devices to i8042 quirk tables for partial fix commit cbedf1a33970c9b825ae75b81fbd3e88e224a418 upstream. A lot of modern Clevo barebones have touchpad and/or keyboard issues after suspend fixable with nomux + reset + noloop + nopnp. Luckily, none of them have an external PS/2 port so this can safely be set for all of them. I'm not entirely sure if every device listed really needs all four quirks, but after testing and production use, no negative effects could be observed when setting all four. Setting SERIO_QUIRK_NOMUX or SERIO_QUIRK_RESET_ALWAYS on the Clevo N150CU and the Clevo NHxxRZQ makes the keyboard very laggy for ~5 seconds after boot and sometimes also after resume. However both are required for the keyboard to not fail completely sometimes after boot or resume. Signed-off-by: Werner Sembach Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20230321191619.647911-1-wse@tuxedocomputers.com Signed-off-by: Dmitry Torokhov Signed-off-by: Greg Kroah-Hartman --- drivers/input/serio/i8042-acpipnpio.h | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/input/serio/i8042-acpipnpio.h b/drivers/input/serio/i8042-acpipnpio.h index efc61736099b..371406f85ab3 100644 --- a/drivers/input/serio/i8042-acpipnpio.h +++ b/drivers/input/serio/i8042-acpipnpio.h @@ -1116,6 +1116,20 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = { .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS | SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP) }, + { + /* + * Setting SERIO_QUIRK_NOMUX or SERIO_QUIRK_RESET_ALWAYS makes + * the keyboard very laggy for ~5 seconds after boot and + * sometimes also after resume. + * However both are required for the keyboard to not fail + * completely sometimes after boot or resume. + */ + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "N150CU"), + }, + .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS | + SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP) + }, { .matches = { DMI_MATCH(DMI_BOARD_NAME, "NH5xAx"), @@ -1123,6 +1137,20 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = { .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS | SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP) }, + { + /* + * Setting SERIO_QUIRK_NOMUX or SERIO_QUIRK_RESET_ALWAYS makes + * the keyboard very laggy for ~5 seconds after boot and + * sometimes also after resume. + * However both are required for the keyboard to not fail + * completely sometimes after boot or resume. + */ + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "NHxxRZQ"), + }, + .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS | + SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP) + }, { .matches = { DMI_MATCH(DMI_BOARD_NAME, "NL5xRU"), From 5ee6df525715002649ba8138f59d77f5d7a1e3c2 Mon Sep 17 00:00:00 2001 From: msizanoen Date: Sun, 19 Mar 2023 23:02:56 -0700 Subject: [PATCH 130/269] Input: alps - fix compatibility with -funsigned-char commit 754ff5060daf5a1cf4474eff9b4edeb6c17ef7ab upstream. The AlpsPS/2 code previously relied on the assumption that `char` is a signed type, which was true on x86 platforms (the only place where this driver is used) before kernel 6.2. However, on 6.2 and later, this assumption is broken due to the introduction of -funsigned-char as a new global compiler flag. Fix this by explicitly specifying the signedness of `char` when sign extending the values received from the device. Fixes: f3f33c677699 ("Input: alps - Rushmore and v7 resolution support") Signed-off-by: msizanoen Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20230320045228.182259-1-msizanoen@qtmlabs.xyz Signed-off-by: Dmitry Torokhov Signed-off-by: Greg Kroah-Hartman --- drivers/input/mouse/alps.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c index 4a6b33bbe7ea..dd08ce97e7c9 100644 --- a/drivers/input/mouse/alps.c +++ b/drivers/input/mouse/alps.c @@ -852,8 +852,8 @@ static void alps_process_packet_v6(struct psmouse *psmouse) x = y = z = 0; /* Divide 4 since trackpoint's speed is too fast */ - input_report_rel(dev2, REL_X, (char)x / 4); - input_report_rel(dev2, REL_Y, -((char)y / 4)); + input_report_rel(dev2, REL_X, (s8)x / 4); + input_report_rel(dev2, REL_Y, -((s8)y / 4)); psmouse_report_standard_buttons(dev2, packet[3]); @@ -1104,8 +1104,8 @@ static void alps_process_trackstick_packet_v7(struct psmouse *psmouse) ((packet[3] & 0x20) << 1); z = (packet[5] & 0x3f) | ((packet[3] & 0x80) >> 1); - input_report_rel(dev2, REL_X, (char)x); - input_report_rel(dev2, REL_Y, -((char)y)); + input_report_rel(dev2, REL_X, (s8)x); + input_report_rel(dev2, REL_Y, -((s8)y)); input_report_abs(dev2, ABS_PRESSURE, z); psmouse_report_standard_buttons(dev2, packet[1]); @@ -2294,20 +2294,20 @@ static int alps_get_v3_v7_resolution(struct psmouse *psmouse, int reg_pitch) if (reg < 0) return reg; - x_pitch = (char)(reg << 4) >> 4; /* sign extend lower 4 bits */ + x_pitch = (s8)(reg << 4) >> 4; /* sign extend lower 4 bits */ x_pitch = 50 + 2 * x_pitch; /* In 0.1 mm units */ - y_pitch = (char)reg >> 4; /* sign extend upper 4 bits */ + y_pitch = (s8)reg >> 4; /* sign extend upper 4 bits */ y_pitch = 36 + 2 * y_pitch; /* In 0.1 mm units */ reg = alps_command_mode_read_reg(psmouse, reg_pitch + 1); if (reg < 0) return reg; - x_electrode = (char)(reg << 4) >> 4; /* sign extend lower 4 bits */ + x_electrode = (s8)(reg << 4) >> 4; /* sign extend lower 4 bits */ x_electrode = 17 + x_electrode; - y_electrode = (char)reg >> 4; /* sign extend upper 4 bits */ + y_electrode = (s8)reg >> 4; /* sign extend upper 4 bits */ y_electrode = 13 + y_electrode; x_phys = x_pitch * (x_electrode - 1); /* In 0.1 mm units */ From f8bdc959cefee58a1a17712f031bfcf3ea3e6ba1 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Sun, 19 Mar 2023 21:36:36 -0700 Subject: [PATCH 131/269] Input: focaltech - use explicitly signed char type commit 8980f190947ba29f23110408e712444884b74251 upstream. The recent change of -funsigned-char causes additions of negative numbers to become additions of large positive numbers, leading to wrong calculations of mouse movement. Change these casts to be explicitly signed, to take into account negative offsets. Fixes: 3bc753c06dd0 ("kbuild: treat char as always unsigned") Signed-off-by: Jason A. Donenfeld Reviewed-by: Hans de Goede Cc: stable@vger.kernel.org Link: https://bugzilla.kernel.org/show_bug.cgi?id=217211 Link: https://lore.kernel.org/r/20230318133010.1285202-1-Jason@zx2c4.com Signed-off-by: Dmitry Torokhov Signed-off-by: Greg Kroah-Hartman --- drivers/input/mouse/focaltech.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/input/mouse/focaltech.c b/drivers/input/mouse/focaltech.c index 6fd5fff0cbff..c74b99077d16 100644 --- a/drivers/input/mouse/focaltech.c +++ b/drivers/input/mouse/focaltech.c @@ -202,8 +202,8 @@ static void focaltech_process_rel_packet(struct psmouse *psmouse, state->pressed = packet[0] >> 7; finger1 = ((packet[0] >> 4) & 0x7) - 1; if (finger1 < FOC_MAX_FINGERS) { - state->fingers[finger1].x += (char)packet[1]; - state->fingers[finger1].y += (char)packet[2]; + state->fingers[finger1].x += (s8)packet[1]; + state->fingers[finger1].y += (s8)packet[2]; } else { psmouse_err(psmouse, "First finger in rel packet invalid: %d\n", finger1); @@ -218,8 +218,8 @@ static void focaltech_process_rel_packet(struct psmouse *psmouse, */ finger2 = ((packet[3] >> 4) & 0x7) - 1; if (finger2 < FOC_MAX_FINGERS) { - state->fingers[finger2].x += (char)packet[4]; - state->fingers[finger2].y += (char)packet[5]; + state->fingers[finger2].x += (s8)packet[4]; + state->fingers[finger2].y += (s8)packet[5]; } } From eb94ea52afff7f0d4dfcb200ba45855fcf7986a3 Mon Sep 17 00:00:00 2001 From: Paulo Alcantara Date: Wed, 29 Mar 2023 17:14:22 -0300 Subject: [PATCH 132/269] cifs: prevent infinite recursion in CIFSGetDFSRefer() commit 09ba47b44d26b475bbdf9c80db9e0193d2b58956 upstream. We can't call smb_init() in CIFSGetDFSRefer() as cifs_reconnect_tcon() may end up calling CIFSGetDFSRefer() again to get new DFS referrals and thus causing an infinite recursion. Signed-off-by: Paulo Alcantara (SUSE) Reviewed-by: Ronnie Sahlberg Cc: stable@vger.kernel.org # 6.2 Signed-off-by: Steve French Signed-off-by: Greg Kroah-Hartman --- fs/cifs/cifssmb.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c index 4bc6ba87baf4..c90d4ec9292c 100644 --- a/fs/cifs/cifssmb.c +++ b/fs/cifs/cifssmb.c @@ -4319,8 +4319,13 @@ CIFSGetDFSRefer(const unsigned int xid, struct cifs_ses *ses, return -ENODEV; getDFSRetry: - rc = smb_init(SMB_COM_TRANSACTION2, 15, ses->tcon_ipc, (void **) &pSMB, - (void **) &pSMBr); + /* + * Use smb_init_no_reconnect() instead of smb_init() as + * CIFSGetDFSRefer() may be called from cifs_reconnect_tcon() and thus + * causing an infinite recursion. + */ + rc = smb_init_no_reconnect(SMB_COM_TRANSACTION2, 15, ses->tcon_ipc, + (void **)&pSMB, (void **)&pSMBr); if (rc) return rc; From b7d854c33ab48e55fc233699bbefe39ec9bb5c05 Mon Sep 17 00:00:00 2001 From: David Disseldorp Date: Wed, 29 Mar 2023 22:24:06 +0200 Subject: [PATCH 133/269] cifs: fix DFS traversal oops without CONFIG_CIFS_DFS_UPCALL commit 179a88a8558bbf42991d361595281f3e45d7edfc upstream. When compiled with CONFIG_CIFS_DFS_UPCALL disabled, cifs_dfs_d_automount is NULL. cifs.ko logic for mapping CIFS_FATTR_DFS_REFERRAL attributes to S_AUTOMOUNT and corresponding dentry flags is retained regardless of CONFIG_CIFS_DFS_UPCALL, leading to a NULL pointer dereference in VFS follow_automount() when traversing a DFS referral link: BUG: kernel NULL pointer dereference, address: 0000000000000000 ... Call Trace: __traverse_mounts+0xb5/0x220 ? cifs_revalidate_mapping+0x65/0xc0 [cifs] step_into+0x195/0x610 ? lookup_fast+0xe2/0xf0 path_lookupat+0x64/0x140 filename_lookup+0xc2/0x140 ? __create_object+0x299/0x380 ? kmem_cache_alloc+0x119/0x220 ? user_path_at_empty+0x31/0x50 user_path_at_empty+0x31/0x50 __x64_sys_chdir+0x2a/0xd0 ? exit_to_user_mode_prepare+0xca/0x100 do_syscall_64+0x42/0x90 entry_SYSCALL_64_after_hwframe+0x72/0xdc This fix adds an inline cifs_dfs_d_automount() {return -EREMOTE} handler when CONFIG_CIFS_DFS_UPCALL is disabled. An alternative would be to avoid flagging S_AUTOMOUNT, etc. without CONFIG_CIFS_DFS_UPCALL. This approach was chosen as it provides more control over the error path. Signed-off-by: David Disseldorp Cc: stable@vger.kernel.org Reviewed-by: Paulo Alcantara (SUSE) Reviewed-by: Ronnie Sahlberg Signed-off-by: Steve French Signed-off-by: Greg Kroah-Hartman --- fs/cifs/cifsfs.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fs/cifs/cifsfs.h b/fs/cifs/cifsfs.h index 388b745a978e..b6c38896fb2d 100644 --- a/fs/cifs/cifsfs.h +++ b/fs/cifs/cifsfs.h @@ -118,7 +118,10 @@ extern const struct dentry_operations cifs_ci_dentry_ops; #ifdef CONFIG_CIFS_DFS_UPCALL extern struct vfsmount *cifs_dfs_d_automount(struct path *path); #else -#define cifs_dfs_d_automount NULL +static inline struct vfsmount *cifs_dfs_d_automount(struct path *path) +{ + return ERR_PTR(-EREMOTE); +} #endif /* Functions related to symlinks */ From 89c4b695431d33811d9b0103d5a2f059b75c10d3 Mon Sep 17 00:00:00 2001 From: Jonathan Denose Date: Fri, 17 Mar 2023 03:19:51 -0700 Subject: [PATCH 134/269] Input: i8042 - add quirk for Fujitsu Lifebook A574/H commit f5bad62f9107b701a6def7cac1f5f65862219b83 upstream. Fujitsu Lifebook A574/H requires the nomux option to properly probe the touchpad, especially when waking from sleep. Signed-off-by: Jonathan Denose Reviewed-by: Hans de Goede Link: https://lore.kernel.org/r/20230303152623.45859-1-jdenose@google.com Signed-off-by: Dmitry Torokhov Signed-off-by: Greg Kroah-Hartman --- drivers/input/serio/i8042-acpipnpio.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/input/serio/i8042-acpipnpio.h b/drivers/input/serio/i8042-acpipnpio.h index 371406f85ab3..028e45bd050b 100644 --- a/drivers/input/serio/i8042-acpipnpio.h +++ b/drivers/input/serio/i8042-acpipnpio.h @@ -610,6 +610,14 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = { }, .driver_data = (void *)(SERIO_QUIRK_NOMUX) }, + { + /* Fujitsu Lifebook A574/H */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), + DMI_MATCH(DMI_PRODUCT_NAME, "FMVA0501PZ"), + }, + .driver_data = (void *)(SERIO_QUIRK_NOMUX) + }, { /* Gigabyte M912 */ .matches = { From 85ec44199b5a4408f40109d960919cde45c22c89 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Fri, 17 Mar 2023 03:13:12 -0700 Subject: [PATCH 135/269] Input: goodix - add Lenovo Yoga Book X90F to nine_bytes_report DMI table commit 8a0432bab6ea3203d220785da7ab3c7677f70ecb upstream. The Android Lenovo Yoga Book X90F / X90L uses the same goodix touchscreen with 9 bytes touch reports for its touch keyboard as the already supported Windows Lenovo Yoga Book X91F/L, add a DMI match for this to the nine_bytes_report DMI table. When the quirk for the X91F/L was initially added it was written to also apply to the X90F/L but this does not work because the Android version of the Yoga Book uses completely different DMI strings. Also adjust the X91F/L quirk to reflect that it only applies to the X91F/L models. Signed-off-by: Hans de Goede Reviewed-by: Bastien Nocera Link: https://lore.kernel.org/r/20230315134442.71787-1-hdegoede@redhat.com Signed-off-by: Dmitry Torokhov Signed-off-by: Greg Kroah-Hartman --- drivers/input/touchscreen/goodix.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c index c281e49826c2..25e575183dd1 100644 --- a/drivers/input/touchscreen/goodix.c +++ b/drivers/input/touchscreen/goodix.c @@ -124,10 +124,18 @@ static const unsigned long goodix_irq_flags[] = { static const struct dmi_system_id nine_bytes_report[] = { #if defined(CONFIG_DMI) && defined(CONFIG_X86) { - .ident = "Lenovo YogaBook", - /* YB1-X91L/F and YB1-X90L/F */ + /* Lenovo Yoga Book X90F / X90L */ .matches = { - DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X9") + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"), + DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "YETI-11"), + } + }, + { + /* Lenovo Yoga Book X91F / X91L */ + .matches = { + /* Non exact match to match F + L versions */ + DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X91"), } }, #endif From 6134a4bb6b1c411a244edee041ac89266c78d45c Mon Sep 17 00:00:00 2001 From: Filipe Manana Date: Wed, 22 Mar 2023 09:46:34 +0000 Subject: [PATCH 136/269] btrfs: fix deadlock when aborting transaction during relocation with scrub commit 2d82a40aa7d6fcae0250ec68b8566cdee7bfd44c upstream. Before relocating a block group we pause scrub, then do the relocation and then unpause scrub. The relocation process requires starting and committing a transaction, and if we have a failure in the critical section of the transaction commit path (transaction state >= TRANS_STATE_COMMIT_START), we will deadlock if there is a paused scrub. That results in stack traces like the following: [42.479] BTRFS info (device sdc): relocating block group 53876686848 flags metadata|raid6 [42.936] BTRFS warning (device sdc): Skipping commit of aborted transaction. [42.936] ------------[ cut here ]------------ [42.936] BTRFS: Transaction aborted (error -28) [42.936] WARNING: CPU: 11 PID: 346822 at fs/btrfs/transaction.c:1977 btrfs_commit_transaction+0xcc8/0xeb0 [btrfs] [42.936] Modules linked in: dm_flakey dm_mod loop btrfs (...) [42.936] CPU: 11 PID: 346822 Comm: btrfs Tainted: G W 6.3.0-rc2-btrfs-next-127+ #1 [42.936] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014 [42.936] RIP: 0010:btrfs_commit_transaction+0xcc8/0xeb0 [btrfs] [42.936] Code: ff ff 45 8b (...) [42.936] RSP: 0018:ffffb58649633b48 EFLAGS: 00010282 [42.936] RAX: 0000000000000000 RBX: ffff8be6ef4d5bd8 RCX: 0000000000000000 [42.936] RDX: 0000000000000002 RSI: ffffffffb35e7782 RDI: 00000000ffffffff [42.936] RBP: ffff8be6ef4d5c98 R08: 0000000000000000 R09: ffffb586496339e8 [42.936] R10: 0000000000000001 R11: 0000000000000001 R12: ffff8be6d38c7c00 [42.936] R13: 00000000ffffffe4 R14: ffff8be6c268c000 R15: ffff8be6ef4d5cf0 [42.936] FS: 00007f381a82b340(0000) GS:ffff8beddfcc0000(0000) knlGS:0000000000000000 [42.936] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [42.936] CR2: 00007f1e35fb7638 CR3: 0000000117680006 CR4: 0000000000370ee0 [42.936] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [42.936] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [42.936] Call Trace: [42.936] [42.936] ? start_transaction+0xcb/0x610 [btrfs] [42.936] prepare_to_relocate+0x111/0x1a0 [btrfs] [42.936] relocate_block_group+0x57/0x5d0 [btrfs] [42.936] ? btrfs_wait_nocow_writers+0x25/0xb0 [btrfs] [42.936] btrfs_relocate_block_group+0x248/0x3c0 [btrfs] [42.936] ? __pfx_autoremove_wake_function+0x10/0x10 [42.936] btrfs_relocate_chunk+0x3b/0x150 [btrfs] [42.936] btrfs_balance+0x8ff/0x11d0 [btrfs] [42.936] ? __kmem_cache_alloc_node+0x14a/0x410 [42.936] btrfs_ioctl+0x2334/0x32c0 [btrfs] [42.937] ? mod_objcg_state+0xd2/0x360 [42.937] ? refill_obj_stock+0xb0/0x160 [42.937] ? seq_release+0x25/0x30 [42.937] ? __rseq_handle_notify_resume+0x3b5/0x4b0 [42.937] ? percpu_counter_add_batch+0x2e/0xa0 [42.937] ? __x64_sys_ioctl+0x88/0xc0 [42.937] __x64_sys_ioctl+0x88/0xc0 [42.937] do_syscall_64+0x38/0x90 [42.937] entry_SYSCALL_64_after_hwframe+0x72/0xdc [42.937] RIP: 0033:0x7f381a6ffe9b [42.937] Code: 00 48 89 44 24 (...) [42.937] RSP: 002b:00007ffd45ecf060 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 [42.937] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f381a6ffe9b [42.937] RDX: 00007ffd45ecf150 RSI: 00000000c4009420 RDI: 0000000000000003 [42.937] RBP: 0000000000000003 R08: 0000000000000013 R09: 0000000000000000 [42.937] R10: 00007f381a60c878 R11: 0000000000000246 R12: 00007ffd45ed0423 [42.937] R13: 00007ffd45ecf150 R14: 0000000000000000 R15: 00007ffd45ecf148 [42.937] [42.937] ---[ end trace 0000000000000000 ]--- [42.937] BTRFS: error (device sdc: state A) in cleanup_transaction:1977: errno=-28 No space left [59.196] INFO: task btrfs:346772 blocked for more than 120 seconds. [59.196] Tainted: G W 6.3.0-rc2-btrfs-next-127+ #1 [59.196] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [59.196] task:btrfs state:D stack:0 pid:346772 ppid:1 flags:0x00004002 [59.196] Call Trace: [59.196] [59.196] __schedule+0x392/0xa70 [59.196] ? __pv_queued_spin_lock_slowpath+0x165/0x370 [59.196] schedule+0x5d/0xd0 [59.196] __scrub_blocked_if_needed+0x74/0xc0 [btrfs] [59.197] ? __pfx_autoremove_wake_function+0x10/0x10 [59.197] scrub_pause_off+0x21/0x50 [btrfs] [59.197] scrub_simple_mirror+0x1c7/0x950 [btrfs] [59.197] ? scrub_parity_put+0x1a5/0x1d0 [btrfs] [59.198] ? __pfx_autoremove_wake_function+0x10/0x10 [59.198] scrub_stripe+0x20d/0x740 [btrfs] [59.198] scrub_chunk+0xc4/0x130 [btrfs] [59.198] scrub_enumerate_chunks+0x3e4/0x7a0 [btrfs] [59.198] ? __pfx_autoremove_wake_function+0x10/0x10 [59.198] btrfs_scrub_dev+0x236/0x6a0 [btrfs] [59.199] ? btrfs_ioctl+0xd97/0x32c0 [btrfs] [59.199] ? _copy_from_user+0x7b/0x80 [59.199] btrfs_ioctl+0xde1/0x32c0 [btrfs] [59.199] ? refill_stock+0x33/0x50 [59.199] ? should_failslab+0xa/0x20 [59.199] ? kmem_cache_alloc_node+0x151/0x460 [59.199] ? alloc_io_context+0x1b/0x80 [59.199] ? preempt_count_add+0x70/0xa0 [59.199] ? __x64_sys_ioctl+0x88/0xc0 [59.199] __x64_sys_ioctl+0x88/0xc0 [59.199] do_syscall_64+0x38/0x90 [59.199] entry_SYSCALL_64_after_hwframe+0x72/0xdc [59.199] RIP: 0033:0x7f82ffaffe9b [59.199] RSP: 002b:00007f82ff9fcc50 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 [59.199] RAX: ffffffffffffffda RBX: 000055b191e36310 RCX: 00007f82ffaffe9b [59.199] RDX: 000055b191e36310 RSI: 00000000c400941b RDI: 0000000000000003 [59.199] RBP: 0000000000000000 R08: 00007fff1575016f R09: 0000000000000000 [59.199] R10: 0000000000000000 R11: 0000000000000246 R12: 00007f82ff9fd640 [59.199] R13: 000000000000006b R14: 00007f82ffa87580 R15: 0000000000000000 [59.199] [59.199] INFO: task btrfs:346773 blocked for more than 120 seconds. [59.200] Tainted: G W 6.3.0-rc2-btrfs-next-127+ #1 [59.200] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [59.201] task:btrfs state:D stack:0 pid:346773 ppid:1 flags:0x00004002 [59.201] Call Trace: [59.201] [59.201] __schedule+0x392/0xa70 [59.201] ? __pv_queued_spin_lock_slowpath+0x165/0x370 [59.201] schedule+0x5d/0xd0 [59.201] __scrub_blocked_if_needed+0x74/0xc0 [btrfs] [59.201] ? __pfx_autoremove_wake_function+0x10/0x10 [59.201] scrub_pause_off+0x21/0x50 [btrfs] [59.202] scrub_simple_mirror+0x1c7/0x950 [btrfs] [59.202] ? scrub_parity_put+0x1a5/0x1d0 [btrfs] [59.202] ? __pfx_autoremove_wake_function+0x10/0x10 [59.202] scrub_stripe+0x20d/0x740 [btrfs] [59.202] scrub_chunk+0xc4/0x130 [btrfs] [59.203] scrub_enumerate_chunks+0x3e4/0x7a0 [btrfs] [59.203] ? __pfx_autoremove_wake_function+0x10/0x10 [59.203] btrfs_scrub_dev+0x236/0x6a0 [btrfs] [59.203] ? btrfs_ioctl+0xd97/0x32c0 [btrfs] [59.203] ? _copy_from_user+0x7b/0x80 [59.203] btrfs_ioctl+0xde1/0x32c0 [btrfs] [59.204] ? should_failslab+0xa/0x20 [59.204] ? kmem_cache_alloc_node+0x151/0x460 [59.204] ? alloc_io_context+0x1b/0x80 [59.204] ? preempt_count_add+0x70/0xa0 [59.204] ? __x64_sys_ioctl+0x88/0xc0 [59.204] __x64_sys_ioctl+0x88/0xc0 [59.204] do_syscall_64+0x38/0x90 [59.204] entry_SYSCALL_64_after_hwframe+0x72/0xdc [59.204] RIP: 0033:0x7f82ffaffe9b [59.204] RSP: 002b:00007f82ff1fbc50 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 [59.204] RAX: ffffffffffffffda RBX: 000055b191e36790 RCX: 00007f82ffaffe9b [59.204] RDX: 000055b191e36790 RSI: 00000000c400941b RDI: 0000000000000003 [59.204] RBP: 0000000000000000 R08: 00007fff1575016f R09: 0000000000000000 [59.204] R10: 0000000000000000 R11: 0000000000000246 R12: 00007f82ff1fc640 [59.204] R13: 000000000000006b R14: 00007f82ffa87580 R15: 0000000000000000 [59.204] [59.204] INFO: task btrfs:346774 blocked for more than 120 seconds. [59.205] Tainted: G W 6.3.0-rc2-btrfs-next-127+ #1 [59.205] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [59.206] task:btrfs state:D stack:0 pid:346774 ppid:1 flags:0x00004002 [59.206] Call Trace: [59.206] [59.206] __schedule+0x392/0xa70 [59.206] schedule+0x5d/0xd0 [59.206] __scrub_blocked_if_needed+0x74/0xc0 [btrfs] [59.206] ? __pfx_autoremove_wake_function+0x10/0x10 [59.206] scrub_pause_off+0x21/0x50 [btrfs] [59.207] scrub_simple_mirror+0x1c7/0x950 [btrfs] [59.207] ? scrub_parity_put+0x1a5/0x1d0 [btrfs] [59.207] ? __pfx_autoremove_wake_function+0x10/0x10 [59.207] scrub_stripe+0x20d/0x740 [btrfs] [59.208] scrub_chunk+0xc4/0x130 [btrfs] [59.208] scrub_enumerate_chunks+0x3e4/0x7a0 [btrfs] [59.208] ? __mutex_unlock_slowpath.isra.0+0x9a/0x120 [59.208] btrfs_scrub_dev+0x236/0x6a0 [btrfs] [59.208] ? btrfs_ioctl+0xd97/0x32c0 [btrfs] [59.209] ? _copy_from_user+0x7b/0x80 [59.209] btrfs_ioctl+0xde1/0x32c0 [btrfs] [59.209] ? should_failslab+0xa/0x20 [59.209] ? kmem_cache_alloc_node+0x151/0x460 [59.209] ? alloc_io_context+0x1b/0x80 [59.209] ? preempt_count_add+0x70/0xa0 [59.209] ? __x64_sys_ioctl+0x88/0xc0 [59.209] __x64_sys_ioctl+0x88/0xc0 [59.209] do_syscall_64+0x38/0x90 [59.209] entry_SYSCALL_64_after_hwframe+0x72/0xdc [59.209] RIP: 0033:0x7f82ffaffe9b [59.209] RSP: 002b:00007f82fe9fac50 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 [59.209] RAX: ffffffffffffffda RBX: 000055b191e36c10 RCX: 00007f82ffaffe9b [59.209] RDX: 000055b191e36c10 RSI: 00000000c400941b RDI: 0000000000000003 [59.209] RBP: 0000000000000000 R08: 00007fff1575016f R09: 0000000000000000 [59.209] R10: 0000000000000000 R11: 0000000000000246 R12: 00007f82fe9fb640 [59.209] R13: 000000000000006b R14: 00007f82ffa87580 R15: 0000000000000000 [59.209] [59.209] INFO: task btrfs:346775 blocked for more than 120 seconds. [59.210] Tainted: G W 6.3.0-rc2-btrfs-next-127+ #1 [59.210] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [59.211] task:btrfs state:D stack:0 pid:346775 ppid:1 flags:0x00004002 [59.211] Call Trace: [59.211] [59.211] __schedule+0x392/0xa70 [59.211] schedule+0x5d/0xd0 [59.211] __scrub_blocked_if_needed+0x74/0xc0 [btrfs] [59.211] ? __pfx_autoremove_wake_function+0x10/0x10 [59.211] scrub_pause_off+0x21/0x50 [btrfs] [59.212] scrub_simple_mirror+0x1c7/0x950 [btrfs] [59.212] ? scrub_parity_put+0x1a5/0x1d0 [btrfs] [59.212] ? __pfx_autoremove_wake_function+0x10/0x10 [59.212] scrub_stripe+0x20d/0x740 [btrfs] [59.213] scrub_chunk+0xc4/0x130 [btrfs] [59.213] scrub_enumerate_chunks+0x3e4/0x7a0 [btrfs] [59.213] ? __mutex_unlock_slowpath.isra.0+0x9a/0x120 [59.213] btrfs_scrub_dev+0x236/0x6a0 [btrfs] [59.213] ? btrfs_ioctl+0xd97/0x32c0 [btrfs] [59.214] ? _copy_from_user+0x7b/0x80 [59.214] btrfs_ioctl+0xde1/0x32c0 [btrfs] [59.214] ? should_failslab+0xa/0x20 [59.214] ? kmem_cache_alloc_node+0x151/0x460 [59.214] ? alloc_io_context+0x1b/0x80 [59.214] ? preempt_count_add+0x70/0xa0 [59.214] ? __x64_sys_ioctl+0x88/0xc0 [59.214] __x64_sys_ioctl+0x88/0xc0 [59.214] do_syscall_64+0x38/0x90 [59.214] entry_SYSCALL_64_after_hwframe+0x72/0xdc [59.214] RIP: 0033:0x7f82ffaffe9b [59.214] RSP: 002b:00007f82fe1f9c50 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 [59.214] RAX: ffffffffffffffda RBX: 000055b191e37090 RCX: 00007f82ffaffe9b [59.214] RDX: 000055b191e37090 RSI: 00000000c400941b RDI: 0000000000000003 [59.214] RBP: 0000000000000000 R08: 00007fff1575016f R09: 0000000000000000 [59.214] R10: 0000000000000000 R11: 0000000000000246 R12: 00007f82fe1fa640 [59.214] R13: 000000000000006b R14: 00007f82ffa87580 R15: 0000000000000000 [59.214] [59.214] INFO: task btrfs:346776 blocked for more than 120 seconds. [59.215] Tainted: G W 6.3.0-rc2-btrfs-next-127+ #1 [59.216] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [59.217] task:btrfs state:D stack:0 pid:346776 ppid:1 flags:0x00004002 [59.217] Call Trace: [59.217] [59.217] __schedule+0x392/0xa70 [59.217] ? __pv_queued_spin_lock_slowpath+0x165/0x370 [59.217] schedule+0x5d/0xd0 [59.217] __scrub_blocked_if_needed+0x74/0xc0 [btrfs] [59.217] ? __pfx_autoremove_wake_function+0x10/0x10 [59.217] scrub_pause_off+0x21/0x50 [btrfs] [59.217] scrub_simple_mirror+0x1c7/0x950 [btrfs] [59.217] ? scrub_parity_put+0x1a5/0x1d0 [btrfs] [59.218] ? __pfx_autoremove_wake_function+0x10/0x10 [59.218] scrub_stripe+0x20d/0x740 [btrfs] [59.218] scrub_chunk+0xc4/0x130 [btrfs] [59.218] scrub_enumerate_chunks+0x3e4/0x7a0 [btrfs] [59.219] ? __pfx_autoremove_wake_function+0x10/0x10 [59.219] btrfs_scrub_dev+0x236/0x6a0 [btrfs] [59.219] ? btrfs_ioctl+0xd97/0x32c0 [btrfs] [59.219] ? _copy_from_user+0x7b/0x80 [59.219] btrfs_ioctl+0xde1/0x32c0 [btrfs] [59.219] ? should_failslab+0xa/0x20 [59.219] ? kmem_cache_alloc_node+0x151/0x460 [59.219] ? alloc_io_context+0x1b/0x80 [59.219] ? preempt_count_add+0x70/0xa0 [59.219] ? __x64_sys_ioctl+0x88/0xc0 [59.219] __x64_sys_ioctl+0x88/0xc0 [59.219] do_syscall_64+0x38/0x90 [59.219] entry_SYSCALL_64_after_hwframe+0x72/0xdc [59.219] RIP: 0033:0x7f82ffaffe9b [59.219] RSP: 002b:00007f82fd9f8c50 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 [59.219] RAX: ffffffffffffffda RBX: 000055b191e37510 RCX: 00007f82ffaffe9b [59.219] RDX: 000055b191e37510 RSI: 00000000c400941b RDI: 0000000000000003 [59.219] RBP: 0000000000000000 R08: 00007fff1575016f R09: 0000000000000000 [59.219] R10: 0000000000000000 R11: 0000000000000246 R12: 00007f82fd9f9640 [59.219] R13: 000000000000006b R14: 00007f82ffa87580 R15: 0000000000000000 [59.219] [59.219] INFO: task btrfs:346822 blocked for more than 120 seconds. [59.220] Tainted: G W 6.3.0-rc2-btrfs-next-127+ #1 [59.221] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [59.222] task:btrfs state:D stack:0 pid:346822 ppid:1 flags:0x00004002 [59.222] Call Trace: [59.222] [59.222] __schedule+0x392/0xa70 [59.222] schedule+0x5d/0xd0 [59.222] btrfs_scrub_cancel+0x91/0x100 [btrfs] [59.222] ? __pfx_autoremove_wake_function+0x10/0x10 [59.222] btrfs_commit_transaction+0x572/0xeb0 [btrfs] [59.223] ? start_transaction+0xcb/0x610 [btrfs] [59.223] prepare_to_relocate+0x111/0x1a0 [btrfs] [59.223] relocate_block_group+0x57/0x5d0 [btrfs] [59.223] ? btrfs_wait_nocow_writers+0x25/0xb0 [btrfs] [59.223] btrfs_relocate_block_group+0x248/0x3c0 [btrfs] [59.224] ? __pfx_autoremove_wake_function+0x10/0x10 [59.224] btrfs_relocate_chunk+0x3b/0x150 [btrfs] [59.224] btrfs_balance+0x8ff/0x11d0 [btrfs] [59.224] ? __kmem_cache_alloc_node+0x14a/0x410 [59.224] btrfs_ioctl+0x2334/0x32c0 [btrfs] [59.225] ? mod_objcg_state+0xd2/0x360 [59.225] ? refill_obj_stock+0xb0/0x160 [59.225] ? seq_release+0x25/0x30 [59.225] ? __rseq_handle_notify_resume+0x3b5/0x4b0 [59.225] ? percpu_counter_add_batch+0x2e/0xa0 [59.225] ? __x64_sys_ioctl+0x88/0xc0 [59.225] __x64_sys_ioctl+0x88/0xc0 [59.225] do_syscall_64+0x38/0x90 [59.225] entry_SYSCALL_64_after_hwframe+0x72/0xdc [59.225] RIP: 0033:0x7f381a6ffe9b [59.225] RSP: 002b:00007ffd45ecf060 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 [59.225] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007f381a6ffe9b [59.225] RDX: 00007ffd45ecf150 RSI: 00000000c4009420 RDI: 0000000000000003 [59.225] RBP: 0000000000000003 R08: 0000000000000013 R09: 0000000000000000 [59.225] R10: 00007f381a60c878 R11: 0000000000000246 R12: 00007ffd45ed0423 [59.225] R13: 00007ffd45ecf150 R14: 0000000000000000 R15: 00007ffd45ecf148 [59.225] What happens is the following: 1) A scrub is running, so fs_info->scrubs_running is 1; 2) Task A starts block group relocation, and at btrfs_relocate_chunk() it pauses scrub by calling btrfs_scrub_pause(). That increments fs_info->scrub_pause_req from 0 to 1 and waits for the scrub task to pause (for fs_info->scrubs_paused to be == to fs_info->scrubs_running); 3) The scrub task pauses at scrub_pause_off(), waiting for fs_info->scrub_pause_req to decrease to 0; 4) Task A then enters btrfs_relocate_block_group(), and down that call chain we start a transaction and then attempt to commit it; 5) When task A calls btrfs_commit_transaction(), it either will do the commit itself or wait for some other task that already started the commit of the transaction - it doesn't matter which case; 6) The transaction commit enters state TRANS_STATE_COMMIT_START; 7) An error happens during the transaction commit, like -ENOSPC when running delayed refs or delayed items for example; 8) This results in calling transaction.c:cleanup_transaction(), where we call btrfs_scrub_cancel(), incrementing fs_info->scrub_cancel_req from 0 to 1, and blocking this task waiting for fs_info->scrubs_running to decrease to 0; 9) From this point on, both the transaction commit and the scrub task hang forever: 1) The transaction commit is waiting for fs_info->scrubs_running to be decreased to 0; 2) The scrub task is at scrub_pause_off() waiting for fs_info->scrub_pause_req to decrease to 0 - so it can not proceed to stop the scrub and decrement fs_info->scrubs_running from 0 to 1. Therefore resulting in a deadlock. Fix this by having cleanup_transaction(), called if a transaction commit fails, not call btrfs_scrub_cancel() if relocation is in progress, and having btrfs_relocate_block_group() call btrfs_scrub_cancel() instead if the relocation failed and a transaction abort happened. This was triggered with btrfs/061 from fstests. Fixes: 55e3a601c81c ("btrfs: Fix data checksum error cause by replace with io-load.") CC: stable@vger.kernel.org # 4.14+ Reviewed-by: Josef Bacik Signed-off-by: Filipe Manana Signed-off-by: David Sterba Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/transaction.c | 15 ++++++++++++++- fs/btrfs/volumes.c | 9 ++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index d1f1da6820fb..682b463a7633 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c @@ -2009,7 +2009,20 @@ static void cleanup_transaction(struct btrfs_trans_handle *trans, int err) if (current->journal_info == trans) current->journal_info = NULL; - btrfs_scrub_cancel(fs_info); + + /* + * If relocation is running, we can't cancel scrub because that will + * result in a deadlock. Before relocating a block group, relocation + * pauses scrub, then starts and commits a transaction before unpausing + * scrub. If the transaction commit is being done by the relocation + * task or triggered by another task and the relocation task is waiting + * for the commit, and we end up here due to an error in the commit + * path, then calling btrfs_scrub_cancel() will deadlock, as we are + * asking for scrub to stop while having it asked to be paused higher + * above in relocation code. + */ + if (!test_bit(BTRFS_FS_RELOC_RUNNING, &fs_info->flags)) + btrfs_scrub_cancel(fs_info); kmem_cache_free(btrfs_trans_handle_cachep, trans); } diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index f02b8cbd6ec4..6a2b6042845c 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -3286,8 +3286,15 @@ int btrfs_relocate_chunk(struct btrfs_fs_info *fs_info, u64 chunk_offset) btrfs_scrub_pause(fs_info); ret = btrfs_relocate_block_group(fs_info, chunk_offset); btrfs_scrub_continue(fs_info); - if (ret) + if (ret) { + /* + * If we had a transaction abort, stop all running scrubs. + * See transaction.c:cleanup_transaction() why we do it here. + */ + if (BTRFS_FS_ERROR(fs_info)) + btrfs_scrub_cancel(fs_info); return ret; + } block_group = btrfs_lookup_block_group(fs_info, chunk_offset); if (!block_group) From a38ff2024805a30d9b96f52557c6ea0bbc31252a Mon Sep 17 00:00:00 2001 From: Filipe Manana Date: Wed, 22 Mar 2023 10:33:28 +0000 Subject: [PATCH 137/269] btrfs: fix race between quota disable and quota assign ioctls commit 2f1a6be12ab6c8470d5776e68644726c94257c54 upstream. The quota assign ioctl can currently run in parallel with a quota disable ioctl call. The assign ioctl uses the quota root, while the disable ioctl frees that root, and therefore we can have a use-after-free triggered in the assign ioctl, leading to a trace like the following when KASAN is enabled: [672.723][T736] BUG: KASAN: slab-use-after-free in btrfs_search_slot+0x2962/0x2db0 [672.723][T736] Read of size 8 at addr ffff888022ec0208 by task btrfs_search_sl/27736 [672.724][T736] [672.725][T736] CPU: 1 PID: 27736 Comm: btrfs_search_sl Not tainted 6.3.0-rc3 #37 [672.723][T736] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014 [672.727][T736] Call Trace: [672.728][T736] [672.728][T736] dump_stack_lvl+0xd9/0x150 [672.725][T736] print_report+0xc1/0x5e0 [672.720][T736] ? __virt_addr_valid+0x61/0x2e0 [672.727][T736] ? __phys_addr+0xc9/0x150 [672.725][T736] ? btrfs_search_slot+0x2962/0x2db0 [672.722][T736] kasan_report+0xc0/0xf0 [672.729][T736] ? btrfs_search_slot+0x2962/0x2db0 [672.724][T736] btrfs_search_slot+0x2962/0x2db0 [672.723][T736] ? fs_reclaim_acquire+0xba/0x160 [672.722][T736] ? split_leaf+0x13d0/0x13d0 [672.726][T736] ? rcu_is_watching+0x12/0xb0 [672.723][T736] ? kmem_cache_alloc+0x338/0x3c0 [672.722][T736] update_qgroup_status_item+0xf7/0x320 [672.724][T736] ? add_qgroup_rb+0x3d0/0x3d0 [672.739][T736] ? do_raw_spin_lock+0x12d/0x2b0 [672.730][T736] ? spin_bug+0x1d0/0x1d0 [672.737][T736] btrfs_run_qgroups+0x5de/0x840 [672.730][T736] ? btrfs_qgroup_rescan_worker+0xa70/0xa70 [672.738][T736] ? __del_qgroup_relation+0x4ba/0xe00 [672.738][T736] btrfs_ioctl+0x3d58/0x5d80 [672.735][T736] ? tomoyo_path_number_perm+0x16a/0x550 [672.737][T736] ? tomoyo_execute_permission+0x4a0/0x4a0 [672.731][T736] ? btrfs_ioctl_get_supported_features+0x50/0x50 [672.737][T736] ? __sanitizer_cov_trace_switch+0x54/0x90 [672.734][T736] ? do_vfs_ioctl+0x132/0x1660 [672.730][T736] ? vfs_fileattr_set+0xc40/0xc40 [672.730][T736] ? _raw_spin_unlock_irq+0x2e/0x50 [672.732][T736] ? sigprocmask+0xf2/0x340 [672.737][T736] ? __fget_files+0x26a/0x480 [672.732][T736] ? bpf_lsm_file_ioctl+0x9/0x10 [672.738][T736] ? btrfs_ioctl_get_supported_features+0x50/0x50 [672.736][T736] __x64_sys_ioctl+0x198/0x210 [672.736][T736] do_syscall_64+0x39/0xb0 [672.731][T736] entry_SYSCALL_64_after_hwframe+0x63/0xcd [672.739][T736] RIP: 0033:0x4556ad [672.742][T736] [672.743][T736] [672.748][T736] Allocated by task 27677: [672.743][T736] kasan_save_stack+0x22/0x40 [672.741][T736] kasan_set_track+0x25/0x30 [672.741][T736] __kasan_kmalloc+0xa4/0xb0 [672.749][T736] btrfs_alloc_root+0x48/0x90 [672.746][T736] btrfs_create_tree+0x146/0xa20 [672.744][T736] btrfs_quota_enable+0x461/0x1d20 [672.743][T736] btrfs_ioctl+0x4a1c/0x5d80 [672.747][T736] __x64_sys_ioctl+0x198/0x210 [672.749][T736] do_syscall_64+0x39/0xb0 [672.744][T736] entry_SYSCALL_64_after_hwframe+0x63/0xcd [672.756][T736] [672.757][T736] Freed by task 27677: [672.759][T736] kasan_save_stack+0x22/0x40 [672.759][T736] kasan_set_track+0x25/0x30 [672.756][T736] kasan_save_free_info+0x2e/0x50 [672.751][T736] ____kasan_slab_free+0x162/0x1c0 [672.758][T736] slab_free_freelist_hook+0x89/0x1c0 [672.752][T736] __kmem_cache_free+0xaf/0x2e0 [672.752][T736] btrfs_put_root+0x1ff/0x2b0 [672.759][T736] btrfs_quota_disable+0x80a/0xbc0 [672.752][T736] btrfs_ioctl+0x3e5f/0x5d80 [672.756][T736] __x64_sys_ioctl+0x198/0x210 [672.753][T736] do_syscall_64+0x39/0xb0 [672.765][T736] entry_SYSCALL_64_after_hwframe+0x63/0xcd [672.769][T736] [672.768][T736] The buggy address belongs to the object at ffff888022ec0000 [672.768][T736] which belongs to the cache kmalloc-4k of size 4096 [672.769][T736] The buggy address is located 520 bytes inside of [672.769][T736] freed 4096-byte region [ffff888022ec0000, ffff888022ec1000) [672.760][T736] [672.764][T736] The buggy address belongs to the physical page: [672.761][T736] page:ffffea00008bb000 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x22ec0 [672.766][T736] head:ffffea00008bb000 order:3 entire_mapcount:0 nr_pages_mapped:0 pincount:0 [672.779][T736] flags: 0xfff00000010200(slab|head|node=0|zone=1|lastcpupid=0x7ff) [672.770][T736] raw: 00fff00000010200 ffff888012842140 ffffea000054ba00 dead000000000002 [672.770][T736] raw: 0000000000000000 0000000000040004 00000001ffffffff 0000000000000000 [672.771][T736] page dumped because: kasan: bad access detected [672.778][T736] page_owner tracks the page as allocated [672.777][T736] page last allocated via order 3, migratetype Unmovable, gfp_mask 0xd2040(__GFP_IO|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC), pid 88 [672.779][T736] get_page_from_freelist+0x119c/0x2d50 [672.779][T736] __alloc_pages+0x1cb/0x4a0 [672.776][T736] alloc_pages+0x1aa/0x270 [672.773][T736] allocate_slab+0x260/0x390 [672.771][T736] ___slab_alloc+0xa9a/0x13e0 [672.778][T736] __slab_alloc.constprop.0+0x56/0xb0 [672.771][T736] __kmem_cache_alloc_node+0x136/0x320 [672.789][T736] __kmalloc+0x4e/0x1a0 [672.783][T736] tomoyo_realpath_from_path+0xc3/0x600 [672.781][T736] tomoyo_path_perm+0x22f/0x420 [672.782][T736] tomoyo_path_unlink+0x92/0xd0 [672.780][T736] security_path_unlink+0xdb/0x150 [672.788][T736] do_unlinkat+0x377/0x680 [672.788][T736] __x64_sys_unlink+0xca/0x110 [672.789][T736] do_syscall_64+0x39/0xb0 [672.783][T736] entry_SYSCALL_64_after_hwframe+0x63/0xcd [672.784][T736] page last free stack trace: [672.787][T736] free_pcp_prepare+0x4e5/0x920 [672.787][T736] free_unref_page+0x1d/0x4e0 [672.784][T736] __unfreeze_partials+0x17c/0x1a0 [672.797][T736] qlist_free_all+0x6a/0x180 [672.796][T736] kasan_quarantine_reduce+0x189/0x1d0 [672.797][T736] __kasan_slab_alloc+0x64/0x90 [672.793][T736] kmem_cache_alloc+0x17c/0x3c0 [672.799][T736] getname_flags.part.0+0x50/0x4e0 [672.799][T736] getname_flags+0x9e/0xe0 [672.792][T736] vfs_fstatat+0x77/0xb0 [672.791][T736] __do_sys_newlstat+0x84/0x100 [672.798][T736] do_syscall_64+0x39/0xb0 [672.796][T736] entry_SYSCALL_64_after_hwframe+0x63/0xcd [672.790][T736] [672.791][T736] Memory state around the buggy address: [672.799][T736] ffff888022ec0100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb [672.805][T736] ffff888022ec0180: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb [672.802][T736] >ffff888022ec0200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb [672.809][T736] ^ [672.809][T736] ffff888022ec0280: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb [672.809][T736] ffff888022ec0300: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb Fix this by having the qgroup assign ioctl take the qgroup ioctl mutex before calling btrfs_run_qgroups(), which is what all qgroup ioctls should call. Reported-by: butt3rflyh4ck Link: https://lore.kernel.org/linux-btrfs/CAFcO6XN3VD8ogmHwqRk4kbiwtpUSNySu2VAxN8waEPciCHJvMA@mail.gmail.com/ CC: stable@vger.kernel.org # 5.10+ Reviewed-by: Qu Wenruo Signed-off-by: Filipe Manana Reviewed-by: David Sterba Signed-off-by: David Sterba Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/ioctl.c | 2 ++ fs/btrfs/qgroup.c | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index c05f16a35bca..fe2fb81da46b 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -4621,7 +4621,9 @@ static long btrfs_ioctl_qgroup_assign(struct file *file, void __user *arg) } /* update qgroup status and info */ + mutex_lock(&fs_info->qgroup_ioctl_lock); err = btrfs_run_qgroups(trans); + mutex_unlock(&fs_info->qgroup_ioctl_lock); if (err < 0) btrfs_handle_fs_error(fs_info, err, "failed to update qgroup status and info"); diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c index 5ac65384c947..f8b054898885 100644 --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c @@ -2812,13 +2812,22 @@ cleanup: } /* - * called from commit_transaction. Writes all changed qgroups to disk. + * Writes all changed qgroups to disk. + * Called by the transaction commit path and the qgroup assign ioctl. */ int btrfs_run_qgroups(struct btrfs_trans_handle *trans) { struct btrfs_fs_info *fs_info = trans->fs_info; int ret = 0; + /* + * In case we are called from the qgroup assign ioctl, assert that we + * are holding the qgroup_ioctl_lock, otherwise we can race with a quota + * disable operation (ioctl) and access a freed quota root. + */ + if (trans->transaction->state != TRANS_STATE_COMMIT_DOING) + lockdep_assert_held(&fs_info->qgroup_ioctl_lock); + if (!fs_info->quota_root) return ret; From 8a6539ea362eb2cae3148012dbc9c6bc943c1b6a Mon Sep 17 00:00:00 2001 From: Anand Jain Date: Thu, 23 Mar 2023 15:56:48 +0800 Subject: [PATCH 138/269] btrfs: scan device in non-exclusive mode commit 50d281fc434cb8e2497f5e70a309ccca6b1a09f0 upstream. This fixes mkfs/mount/check failures due to race with systemd-udevd scan. During the device scan initiated by systemd-udevd, other user space EXCL operations such as mkfs, mount, or check may get blocked and result in a "Device or resource busy" error. This is because the device scan process opens the device with the EXCL flag in the kernel. Two reports were received: - btrfs/179 test case, where the fsck command failed with the -EBUSY error - LTP pwritev03 test case, where mkfs.vfs failed with the -EBUSY error, when mkfs.vfs tried to overwrite old btrfs filesystem on the device. In both cases, fsck and mkfs (respectively) were racing with a systemd-udevd device scan, and systemd-udevd won, resulting in the -EBUSY error for fsck and mkfs. Reproducing the problem has been difficult because there is a very small window during which these userspace threads can race to acquire the exclusive device open. Even on the system where the problem was observed, the problem occurrences were anywhere between 10 to 400 iterations and chances of reproducing decreases with debug printk()s. However, an exclusive device open is unnecessary for the scan process, as there are no write operations on the device during scan. Furthermore, during the mount process, the superblock is re-read in the below function call chain: btrfs_mount_root btrfs_open_devices open_fs_devices btrfs_open_one_device btrfs_get_bdev_and_sb So, to fix this issue, removes the FMODE_EXCL flag from the scan operation, and add a comment. The case where mkfs may still write to the device and a scan is running, the btrfs signature is not written at that time so scan will not recognize such device. Reported-by: Sherry Yang Reported-by: kernel test robot Link: https://lore.kernel.org/oe-lkp/202303170839.fdf23068-oliver.sang@intel.com CC: stable@vger.kernel.org # 5.4+ Signed-off-by: Anand Jain Reviewed-by: David Sterba Signed-off-by: David Sterba Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/volumes.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 6a2b6042845c..67b2aa552d22 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -1379,8 +1379,17 @@ struct btrfs_device *btrfs_scan_one_device(const char *path, fmode_t flags, * So, we need to add a special mount option to scan for * later supers, using BTRFS_SUPER_MIRROR_MAX instead */ - flags |= FMODE_EXCL; + /* + * Avoid using flag |= FMODE_EXCL here, as the systemd-udev may + * initiate the device scan which may race with the user's mount + * or mkfs command, resulting in failure. + * Since the device scan is solely for reading purposes, there is + * no need for FMODE_EXCL. Additionally, the devices are read again + * during the mount process. It is ok to get some inconsistent + * values temporarily, as the device paths of the fsid are the only + * required information for assembling the volume. + */ bdev = blkdev_get_by_path(path, flags, holder); if (IS_ERR(bdev)) return ERR_CAST(bdev); From 4a8f1f5122667b1e54327ddbab7cfd096ac7dc00 Mon Sep 17 00:00:00 2001 From: Damien Le Moal Date: Thu, 30 Mar 2023 09:47:58 +0900 Subject: [PATCH 139/269] zonefs: Do not propagate iomap_dio_rw() ENOTBLK error to user space commit 77af13ba3c7f91d91c377c7e2d122849bbc17128 upstream. The call to invalidate_inode_pages2_range() in __iomap_dio_rw() may fail, in which case -ENOTBLK is returned and this error code is propagated back to user space trhough iomap_dio_rw() -> zonefs_file_dio_write() return chain. This error code is fairly obscure and may confuse the user. Avoid this and be consistent with the behavior of zonefs_file_dio_append() for similar invalidate_inode_pages2_range() errors by returning -EBUSY to user space when iomap_dio_rw() returns -ENOTBLK. Suggested-by: Christoph Hellwig Fixes: 8dcc1a9d90c1 ("fs: New zonefs file system") Cc: stable@vger.kernel.org Signed-off-by: Damien Le Moal Reviewed-by: Christoph Hellwig Reviewed-by: Johannes Thumshirn Tested-by: Hans Holmberg Signed-off-by: Greg Kroah-Hartman --- fs/zonefs/file.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/fs/zonefs/file.c b/fs/zonefs/file.c index c71cc0fcb3ec..763f10a61999 100644 --- a/fs/zonefs/file.c +++ b/fs/zonefs/file.c @@ -567,11 +567,21 @@ static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from) append = sync; } - if (append) + if (append) { ret = zonefs_file_dio_append(iocb, from); - else + } else { + /* + * iomap_dio_rw() may return ENOTBLK if there was an issue with + * page invalidation. Overwrite that error code with EBUSY to + * be consistent with zonefs_file_dio_append() return value for + * similar issues. + */ ret = iomap_dio_rw(iocb, from, &zonefs_write_iomap_ops, &zonefs_write_dio_ops, 0, NULL, 0); + if (ret == -ENOTBLK) + ret = -EBUSY; + } + if (zonefs_zone_is_seq(z) && (ret > 0 || ret == -EIOCBQUEUED)) { if (ret > 0) From e5da11825ef7c3f4760b235e04e225e7c8746279 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Mon, 20 Mar 2023 20:01:25 -0600 Subject: [PATCH 140/269] block/io_uring: pass in issue_flags for uring_cmd task_work handling commit 9d2789ac9d60c049d26ef6d3005d9c94c5a559e9 upstream. io_uring_cmd_done() currently assumes that the uring_lock is held when invoked, and while it generally is, this is not guaranteed. Pass in the issue_flags associated with it, so that we have IO_URING_F_UNLOCKED available to be able to lock the CQ ring appropriately when completing events. Cc: stable@vger.kernel.org Fixes: ee692a21e9bf ("fs,io_uring: add infrastructure for uring-cmd") Signed-off-by: Jens Axboe Signed-off-by: Greg Kroah-Hartman --- drivers/block/ublk_drv.c | 31 ++++++++++++++++++------------- drivers/nvme/host/ioctl.c | 14 ++++++++------ include/linux/io_uring.h | 11 ++++++----- io_uring/uring_cmd.c | 10 ++++++---- 4 files changed, 38 insertions(+), 28 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 4aec9be0ab77..22a790d51284 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -656,7 +656,8 @@ static void __ublk_fail_req(struct ublk_queue *ubq, struct ublk_io *io, } } -static void ubq_complete_io_cmd(struct ublk_io *io, int res) +static void ubq_complete_io_cmd(struct ublk_io *io, int res, + unsigned issue_flags) { /* mark this cmd owned by ublksrv */ io->flags |= UBLK_IO_FLAG_OWNED_BY_SRV; @@ -668,7 +669,7 @@ static void ubq_complete_io_cmd(struct ublk_io *io, int res) io->flags &= ~UBLK_IO_FLAG_ACTIVE; /* tell ublksrv one io request is coming */ - io_uring_cmd_done(io->cmd, res, 0); + io_uring_cmd_done(io->cmd, res, 0, issue_flags); } #define UBLK_REQUEUE_DELAY_MS 3 @@ -685,7 +686,8 @@ static inline void __ublk_abort_rq(struct ublk_queue *ubq, mod_delayed_work(system_wq, &ubq->dev->monitor_work, 0); } -static inline void __ublk_rq_task_work(struct request *req) +static inline void __ublk_rq_task_work(struct request *req, + unsigned issue_flags) { struct ublk_queue *ubq = req->mq_hctx->driver_data; int tag = req->tag; @@ -723,7 +725,7 @@ static inline void __ublk_rq_task_work(struct request *req) pr_devel("%s: need get data. op %d, qid %d tag %d io_flags %x\n", __func__, io->cmd->cmd_op, ubq->q_id, req->tag, io->flags); - ubq_complete_io_cmd(io, UBLK_IO_RES_NEED_GET_DATA); + ubq_complete_io_cmd(io, UBLK_IO_RES_NEED_GET_DATA, issue_flags); return; } /* @@ -761,17 +763,18 @@ static inline void __ublk_rq_task_work(struct request *req) mapped_bytes >> 9; } - ubq_complete_io_cmd(io, UBLK_IO_RES_OK); + ubq_complete_io_cmd(io, UBLK_IO_RES_OK, issue_flags); } -static inline void ublk_forward_io_cmds(struct ublk_queue *ubq) +static inline void ublk_forward_io_cmds(struct ublk_queue *ubq, + unsigned issue_flags) { struct llist_node *io_cmds = llist_del_all(&ubq->io_cmds); struct ublk_rq_data *data, *tmp; io_cmds = llist_reverse_order(io_cmds); llist_for_each_entry_safe(data, tmp, io_cmds, node) - __ublk_rq_task_work(blk_mq_rq_from_pdu(data)); + __ublk_rq_task_work(blk_mq_rq_from_pdu(data), issue_flags); } static inline void ublk_abort_io_cmds(struct ublk_queue *ubq) @@ -783,12 +786,12 @@ static inline void ublk_abort_io_cmds(struct ublk_queue *ubq) __ublk_abort_rq(ubq, blk_mq_rq_from_pdu(data)); } -static void ublk_rq_task_work_cb(struct io_uring_cmd *cmd) +static void ublk_rq_task_work_cb(struct io_uring_cmd *cmd, unsigned issue_flags) { struct ublk_uring_cmd_pdu *pdu = ublk_get_uring_cmd_pdu(cmd); struct ublk_queue *ubq = pdu->ubq; - ublk_forward_io_cmds(ubq); + ublk_forward_io_cmds(ubq, issue_flags); } static void ublk_rq_task_work_fn(struct callback_head *work) @@ -797,8 +800,9 @@ static void ublk_rq_task_work_fn(struct callback_head *work) struct ublk_rq_data, work); struct request *req = blk_mq_rq_from_pdu(data); struct ublk_queue *ubq = req->mq_hctx->driver_data; + unsigned issue_flags = IO_URING_F_UNLOCKED; - ublk_forward_io_cmds(ubq); + ublk_forward_io_cmds(ubq, issue_flags); } static void ublk_queue_cmd(struct ublk_queue *ubq, struct request *rq) @@ -1052,7 +1056,8 @@ static void ublk_cancel_queue(struct ublk_queue *ubq) struct ublk_io *io = &ubq->ios[i]; if (io->flags & UBLK_IO_FLAG_ACTIVE) - io_uring_cmd_done(io->cmd, UBLK_IO_RES_ABORT, 0); + io_uring_cmd_done(io->cmd, UBLK_IO_RES_ABORT, 0, + IO_URING_F_UNLOCKED); } /* all io commands are canceled */ @@ -1295,7 +1300,7 @@ static int ublk_ch_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags) return -EIOCBQUEUED; out: - io_uring_cmd_done(cmd, ret, 0); + io_uring_cmd_done(cmd, ret, 0, issue_flags); pr_devel("%s: complete: cmd op %d, tag %d ret %x io_flags %x\n", __func__, cmd_op, tag, ret, io->flags); return -EIOCBQUEUED; @@ -2053,7 +2058,7 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd, break; } out: - io_uring_cmd_done(cmd, ret, 0); + io_uring_cmd_done(cmd, ret, 0, issue_flags); pr_devel("%s: cmd done ret %d cmd_op %x, dev id %d qid %d\n", __func__, ret, cmd->cmd_op, header->dev_id, header->queue_id); return -EIOCBQUEUED; diff --git a/drivers/nvme/host/ioctl.c b/drivers/nvme/host/ioctl.c index 81f5550b670d..8224675f8de2 100644 --- a/drivers/nvme/host/ioctl.c +++ b/drivers/nvme/host/ioctl.c @@ -387,7 +387,8 @@ static inline struct nvme_uring_cmd_pdu *nvme_uring_cmd_pdu( return (struct nvme_uring_cmd_pdu *)&ioucmd->pdu; } -static void nvme_uring_task_meta_cb(struct io_uring_cmd *ioucmd) +static void nvme_uring_task_meta_cb(struct io_uring_cmd *ioucmd, + unsigned issue_flags) { struct nvme_uring_cmd_pdu *pdu = nvme_uring_cmd_pdu(ioucmd); struct request *req = pdu->req; @@ -408,17 +409,18 @@ static void nvme_uring_task_meta_cb(struct io_uring_cmd *ioucmd) blk_rq_unmap_user(req->bio); blk_mq_free_request(req); - io_uring_cmd_done(ioucmd, status, result); + io_uring_cmd_done(ioucmd, status, result, issue_flags); } -static void nvme_uring_task_cb(struct io_uring_cmd *ioucmd) +static void nvme_uring_task_cb(struct io_uring_cmd *ioucmd, + unsigned issue_flags) { struct nvme_uring_cmd_pdu *pdu = nvme_uring_cmd_pdu(ioucmd); if (pdu->bio) blk_rq_unmap_user(pdu->bio); - io_uring_cmd_done(ioucmd, pdu->nvme_status, pdu->u.result); + io_uring_cmd_done(ioucmd, pdu->nvme_status, pdu->u.result, issue_flags); } static enum rq_end_io_ret nvme_uring_cmd_end_io(struct request *req, @@ -440,7 +442,7 @@ static enum rq_end_io_ret nvme_uring_cmd_end_io(struct request *req, * Otherwise, move the completion to task work. */ if (cookie != NULL && blk_rq_is_poll(req)) - nvme_uring_task_cb(ioucmd); + nvme_uring_task_cb(ioucmd, IO_URING_F_UNLOCKED); else io_uring_cmd_complete_in_task(ioucmd, nvme_uring_task_cb); @@ -462,7 +464,7 @@ static enum rq_end_io_ret nvme_uring_cmd_end_io_meta(struct request *req, * Otherwise, move the completion to task work. */ if (cookie != NULL && blk_rq_is_poll(req)) - nvme_uring_task_meta_cb(ioucmd); + nvme_uring_task_meta_cb(ioucmd, IO_URING_F_UNLOCKED); else io_uring_cmd_complete_in_task(ioucmd, nvme_uring_task_meta_cb); diff --git a/include/linux/io_uring.h b/include/linux/io_uring.h index 0ded9e271523..a1484cdb3158 100644 --- a/include/linux/io_uring.h +++ b/include/linux/io_uring.h @@ -26,7 +26,7 @@ struct io_uring_cmd { const void *cmd; union { /* callback to defer completions to task context */ - void (*task_work_cb)(struct io_uring_cmd *cmd); + void (*task_work_cb)(struct io_uring_cmd *cmd, unsigned); /* used for polled completion */ void *cookie; }; @@ -38,9 +38,10 @@ struct io_uring_cmd { #if defined(CONFIG_IO_URING) int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw, struct iov_iter *iter, void *ioucmd); -void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, ssize_t res2); +void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, ssize_t res2, + unsigned issue_flags); void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd, - void (*task_work_cb)(struct io_uring_cmd *)); + void (*task_work_cb)(struct io_uring_cmd *, unsigned)); struct sock *io_uring_get_socket(struct file *file); void __io_uring_cancel(bool cancel_all); void __io_uring_free(struct task_struct *tsk); @@ -71,11 +72,11 @@ static inline int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw, return -EOPNOTSUPP; } static inline void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, - ssize_t ret2) + ssize_t ret2, unsigned issue_flags) { } static inline void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd, - void (*task_work_cb)(struct io_uring_cmd *)) + void (*task_work_cb)(struct io_uring_cmd *, unsigned)) { } static inline struct sock *io_uring_get_socket(struct file *file) diff --git a/io_uring/uring_cmd.c b/io_uring/uring_cmd.c index 18dfc5f6a8b7..92f310dfb9fd 100644 --- a/io_uring/uring_cmd.c +++ b/io_uring/uring_cmd.c @@ -15,12 +15,13 @@ static void io_uring_cmd_work(struct io_kiocb *req, bool *locked) { struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd); + unsigned issue_flags = *locked ? 0 : IO_URING_F_UNLOCKED; - ioucmd->task_work_cb(ioucmd); + ioucmd->task_work_cb(ioucmd, issue_flags); } void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd, - void (*task_work_cb)(struct io_uring_cmd *)) + void (*task_work_cb)(struct io_uring_cmd *, unsigned)) { struct io_kiocb *req = cmd_to_io_kiocb(ioucmd); @@ -42,7 +43,8 @@ static inline void io_req_set_cqe32_extra(struct io_kiocb *req, * Called by consumers of io_uring_cmd, if they originally returned * -EIOCBQUEUED upon receiving the command. */ -void io_uring_cmd_done(struct io_uring_cmd *ioucmd, ssize_t ret, ssize_t res2) +void io_uring_cmd_done(struct io_uring_cmd *ioucmd, ssize_t ret, ssize_t res2, + unsigned issue_flags) { struct io_kiocb *req = cmd_to_io_kiocb(ioucmd); @@ -56,7 +58,7 @@ void io_uring_cmd_done(struct io_uring_cmd *ioucmd, ssize_t ret, ssize_t res2) /* order with io_iopoll_req_issued() checking ->iopoll_complete */ smp_store_release(&req->iopoll_completed, 1); else - __io_req_complete(req, 0); + __io_req_complete(req, issue_flags); } EXPORT_SYMBOL_GPL(io_uring_cmd_done); From 3eb2138d4693d81aa6e5514f439be255117cae63 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Mon, 27 Mar 2023 19:56:18 -0600 Subject: [PATCH 141/269] io_uring/poll: clear single/double poll flags on poll arming commit 005308f7bdacf5685ed1a431244a183dbbb9e0e8 upstream. Unless we have at least one entry queued, then don't call into io_poll_remove_entries(). Normally this isn't possible, but if we retry poll then we can have ->nr_entries cleared again as we're setting it up. If this happens for a poll retry, then we'll still have at least REQ_F_SINGLE_POLL set. io_poll_remove_entries() then thinks it has entries to remove. Clear REQ_F_SINGLE_POLL and REQ_F_DOUBLE_POLL unconditionally when arming a poll request. Fixes: c16bda37594f ("io_uring/poll: allow some retries for poll triggering spuriously") Cc: stable@vger.kernel.org Reported-by: Pengfei Xu Signed-off-by: Jens Axboe Signed-off-by: Greg Kroah-Hartman --- io_uring/poll.c | 1 + 1 file changed, 1 insertion(+) diff --git a/io_uring/poll.c b/io_uring/poll.c index 56dbd1863c78..4788073ec45d 100644 --- a/io_uring/poll.c +++ b/io_uring/poll.c @@ -742,6 +742,7 @@ int io_arm_poll_handler(struct io_kiocb *req, unsigned issue_flags) apoll = io_req_alloc_apoll(req, issue_flags); if (!apoll) return IO_APOLL_ABORTED; + req->flags &= ~(REQ_F_SINGLE_POLL | REQ_F_DOUBLE_POLL); req->flags |= REQ_F_POLLED; ipt.pt._qproc = io_async_queue_proc; From ef329fa764c3c27f43db0f7c57adbe84e9a07f00 Mon Sep 17 00:00:00 2001 From: Pavel Begunkov Date: Wed, 29 Mar 2023 15:03:43 +0100 Subject: [PATCH 142/269] io_uring/rsrc: fix rogue rsrc node grabbing commit 4ff0b50de8cabba055efe50bbcb7506c41a69835 upstream. We should not be looking at ctx->rsrc_node and anyhow modifying the node without holding uring_lock, grabbing references in such a way is not safe either. Cc: stable@vger.kernel.org Fixes: 5106dd6e74ab6 ("io_uring: propagate issue_flags state down to file assignment") Signed-off-by: Pavel Begunkov Link: https://lore.kernel.org/r/1202ede2d7bb90136e3482b2b84aad9ed483e5d6.1680098433.git.asml.silence@gmail.com Signed-off-by: Jens Axboe Signed-off-by: Greg Kroah-Hartman --- io_uring/rsrc.h | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/io_uring/rsrc.h b/io_uring/rsrc.h index 81445a477622..d60c758326b4 100644 --- a/io_uring/rsrc.h +++ b/io_uring/rsrc.h @@ -143,15 +143,13 @@ static inline void io_req_set_rsrc_node(struct io_kiocb *req, unsigned int issue_flags) { if (!req->rsrc_node) { + io_ring_submit_lock(ctx, issue_flags); + + lockdep_assert_held(&ctx->uring_lock); + req->rsrc_node = ctx->rsrc_node; - - if (!(issue_flags & IO_URING_F_UNLOCKED)) { - lockdep_assert_held(&ctx->uring_lock); - - io_charge_rsrc_node(ctx); - } else { - percpu_ref_get(&req->rsrc_node->refs); - } + io_charge_rsrc_node(ctx); + io_ring_submit_unlock(ctx, issue_flags); } } From d67b3cdacac911958c6353f043fe98d42c84f5ad Mon Sep 17 00:00:00 2001 From: Pavel Begunkov Date: Thu, 30 Mar 2023 06:52:38 -0600 Subject: [PATCH 143/269] io_uring: fix poll/netmsg alloc caches commit fd30d1cdcc4ff405fc54765edf2e11b03f2ed4f3 upstream. We increase cache->nr_cached when we free into the cache but don't decrease when we take from it, so in some time we'll get an empty cache with cache->nr_cached larger than IO_ALLOC_CACHE_MAX, that fails io_alloc_cache_put() and effectively disables caching. Fixes: 9b797a37c4bd8 ("io_uring: add abstraction around apoll cache") Cc: stable@vger.kernel.org Signed-off-by: Pavel Begunkov Signed-off-by: Jens Axboe Signed-off-by: Greg Kroah-Hartman --- io_uring/alloc_cache.h | 1 + 1 file changed, 1 insertion(+) diff --git a/io_uring/alloc_cache.h b/io_uring/alloc_cache.h index 729793ae9712..c2cde88aeed5 100644 --- a/io_uring/alloc_cache.h +++ b/io_uring/alloc_cache.h @@ -27,6 +27,7 @@ static inline struct io_cache_entry *io_alloc_cache_get(struct io_alloc_cache *c struct hlist_node *node = cache->list.first; hlist_del(node); + cache->nr_cached--; return container_of(node, struct io_cache_entry, node); } From 4d35d375efedce73bdc3c66472bad740c5ced9de Mon Sep 17 00:00:00 2001 From: Ronak Doshi Date: Thu, 23 Mar 2023 13:07:21 -0700 Subject: [PATCH 144/269] vmxnet3: use gro callback when UPT is enabled commit 3bced313b9a5a237c347e0f079c8c2fe4b3935aa upstream. Currently, vmxnet3 uses GRO callback only if LRO is disabled. However, on smartNic based setups where UPT is supported, LRO can be enabled from guest VM but UPT devicve does not support LRO as of now. In such cases, there can be performance degradation as GRO is not being done. This patch fixes this issue by calling GRO API when UPT is enabled. We use updateRxProd to determine if UPT mode is active or not. To clarify few things discussed over the thread: The patch is not neglecting any feature bits nor disabling GRO. It uses GRO callback when UPT is active as LRO is not available in UPT. GRO callback cannot be used as default for all cases as it degrades performance for non-UPT cases or for cases when LRO is already done in ESXi. Cc: stable@vger.kernel.org Fixes: 6f91f4ba046e ("vmxnet3: add support for capability registers") Signed-off-by: Ronak Doshi Reviewed-by: Simon Horman Link: https://lore.kernel.org/r/20230323200721.27622-1-doshir@vmware.com Signed-off-by: Jakub Kicinski Signed-off-by: Greg Kroah-Hartman --- drivers/net/vmxnet3/vmxnet3_drv.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c index 682987040ea8..da488cbb0542 100644 --- a/drivers/net/vmxnet3/vmxnet3_drv.c +++ b/drivers/net/vmxnet3/vmxnet3_drv.c @@ -1688,7 +1688,9 @@ not_lro: if (unlikely(rcd->ts)) __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), rcd->tci); - if (adapter->netdev->features & NETIF_F_LRO) + /* Use GRO callback if UPT is enabled */ + if ((adapter->netdev->features & NETIF_F_LRO) && + !rq->shared->updateRxProd) netif_receive_skb(skb); else napi_gro_receive(&rq->napi, skb); From d7c67be755ccc488c7c2ae9b98bbd8b6409be4f6 Mon Sep 17 00:00:00 2001 From: Damien Le Moal Date: Wed, 29 Mar 2023 13:16:01 +0900 Subject: [PATCH 145/269] zonefs: Always invalidate last cached page on append write commit c1976bd8f23016d8706973908f2bb0ac0d852a8f upstream. When a direct append write is executed, the append offset may correspond to the last page of a sequential file inode which might have been cached already by buffered reads, page faults with mmap-read or non-direct readahead. To ensure that the on-disk and cached data is consistant for such last cached page, make sure to always invalidate it in zonefs_file_dio_append(). If the invalidation fails, return -EBUSY to userspace to differentiate from IO errors. This invalidation will always be a no-op when the FS block size (device zone write granularity) is equal to the page size (e.g. 4K). Reported-by: Hans Holmberg Fixes: 02ef12a663c7 ("zonefs: use REQ_OP_ZONE_APPEND for sync DIO") Cc: stable@vger.kernel.org Signed-off-by: Damien Le Moal Reviewed-by: Christoph Hellwig Reviewed-by: Johannes Thumshirn Tested-by: Hans Holmberg Signed-off-by: Greg Kroah-Hartman --- fs/zonefs/file.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/fs/zonefs/file.c b/fs/zonefs/file.c index 763f10a61999..63cd50840419 100644 --- a/fs/zonefs/file.c +++ b/fs/zonefs/file.c @@ -382,6 +382,7 @@ static ssize_t zonefs_file_dio_append(struct kiocb *iocb, struct iov_iter *from) struct zonefs_zone *z = zonefs_inode_zone(inode); struct block_device *bdev = inode->i_sb->s_bdev; unsigned int max = bdev_max_zone_append_sectors(bdev); + pgoff_t start, end; struct bio *bio; ssize_t size; int nr_pages; @@ -390,6 +391,19 @@ static ssize_t zonefs_file_dio_append(struct kiocb *iocb, struct iov_iter *from) max = ALIGN_DOWN(max << SECTOR_SHIFT, inode->i_sb->s_blocksize); iov_iter_truncate(from, max); + /* + * If the inode block size (zone write granularity) is smaller than the + * page size, we may be appending data belonging to the last page of the + * inode straddling inode->i_size, with that page already cached due to + * a buffered read or readahead. So make sure to invalidate that page. + * This will always be a no-op for the case where the block size is + * equal to the page size. + */ + start = iocb->ki_pos >> PAGE_SHIFT; + end = (iocb->ki_pos + iov_iter_count(from) - 1) >> PAGE_SHIFT; + if (invalidate_inode_pages2_range(inode->i_mapping, start, end)) + return -EBUSY; + nr_pages = iov_iter_npages(from, BIO_MAX_VECS); if (!nr_pages) return 0; From 8b7c731e5444efbab518c3acf9a4d1b62d18920e Mon Sep 17 00:00:00 2001 From: Mike Snitzer Date: Thu, 30 Mar 2023 15:09:29 -0400 Subject: [PATCH 146/269] dm: fix __send_duplicate_bios() to always allow for splitting IO commit 666eed46769d929c3e13636134ecfc67d75ef548 upstream. Commit 7dd76d1feec70 ("dm: improve bio splitting and associated IO accounting") only called setup_split_accounting() from __send_duplicate_bios() if a single bio were being issued. But the case where duplicate bios are issued must call it too. Otherwise the bio won't be split and resubmitted (via recursion through block core back to DM) to submit the later portions of a bio (which may map to an entirely different target). For example, when discarding an entire DM striped device with the following DM table: vg-lvol0: 0 159744 striped 2 128 7:0 2048 7:1 2048 vg-lvol0: 159744 45056 striped 2 128 7:2 2048 7:3 2048 Before (broken, discards the first striped target's devices twice): device-mapper: striped: target_stripe=0, bdev=7:0, start=2048 len=79872 device-mapper: striped: target_stripe=1, bdev=7:1, start=2048 len=79872 device-mapper: striped: target_stripe=0, bdev=7:0, start=2049 len=22528 device-mapper: striped: target_stripe=1, bdev=7:1, start=2048 len=22528 After (works as expected): device-mapper: striped: target_stripe=0, bdev=7:0, start=2048 len=79872 device-mapper: striped: target_stripe=1, bdev=7:1, start=2048 len=79872 device-mapper: striped: target_stripe=0, bdev=7:2, start=2048 len=22528 device-mapper: striped: target_stripe=1, bdev=7:3, start=2048 len=22528 Fixes: 7dd76d1feec70 ("dm: improve bio splitting and associated IO accounting") Cc: stable@vger.kernel.org Reported-by: Orange Kao Signed-off-by: Mike Snitzer Signed-off-by: Greg Kroah-Hartman --- drivers/md/dm.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 89bf28ed874c..38d8aa21ef7a 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -1522,6 +1522,8 @@ static int __send_duplicate_bios(struct clone_info *ci, struct dm_target *ti, ret = 1; break; default: + if (len) + setup_split_accounting(ci, *len); /* dm_accept_partial_bio() is not supported with shared tio->len_ptr */ alloc_multiple_bios(&blist, ci, ti, num_bios); while ((clone = bio_list_pop(&blist))) { From ace6aa2ab5ba5869563ca689bbd912100514ae7b Mon Sep 17 00:00:00 2001 From: Oleksij Rempel Date: Fri, 24 Mar 2023 14:01:41 +0100 Subject: [PATCH 147/269] can: j1939: prevent deadlock by moving j1939_sk_errqueue() commit d1366b283d94ac4537a4b3a1e8668da4df7ce7e9 upstream. This commit addresses a deadlock situation that can occur in certain scenarios, such as when running data TP/ETP transfer and subscribing to the error queue while receiving a net down event. The deadlock involves locks in the following order: 3 j1939_session_list_lock -> active_session_list_lock j1939_session_activate ... j1939_sk_queue_activate_next -> sk_session_queue_lock ... j1939_xtp_rx_eoma_one 2 j1939_sk_queue_drop_all -> sk_session_queue_lock ... j1939_sk_netdev_event_netdown -> j1939_socks_lock j1939_netdev_notify 1 j1939_sk_errqueue -> j1939_socks_lock __j1939_session_cancel -> active_session_list_lock j1939_tp_rxtimer CPU0 CPU1 ---- ---- lock(&priv->active_session_list_lock); lock(&jsk->sk_session_queue_lock); lock(&priv->active_session_list_lock); lock(&priv->j1939_socks_lock); The solution implemented in this commit is to move the j1939_sk_errqueue() call out of the active_session_list_lock context, thus preventing the deadlock situation. Reported-by: syzbot+ee1cd780f69483a8616b@syzkaller.appspotmail.com Fixes: 5b9272e93f2e ("can: j1939: extend UAPI to notify about RX status") Co-developed-by: Hillf Danton Signed-off-by: Hillf Danton Signed-off-by: Oleksij Rempel Link: https://lore.kernel.org/all/20230324130141.2132787-1-o.rempel@pengutronix.de Cc: stable@vger.kernel.org Signed-off-by: Marc Kleine-Budde Signed-off-by: Greg Kroah-Hartman --- net/can/j1939/transport.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/net/can/j1939/transport.c b/net/can/j1939/transport.c index 4177e9617070..848b60c9ef79 100644 --- a/net/can/j1939/transport.c +++ b/net/can/j1939/transport.c @@ -1124,8 +1124,6 @@ static void __j1939_session_cancel(struct j1939_session *session, if (session->sk) j1939_sk_send_loop_abort(session->sk, session->err); - else - j1939_sk_errqueue(session, J1939_ERRQUEUE_RX_ABORT); } static void j1939_session_cancel(struct j1939_session *session, @@ -1140,6 +1138,9 @@ static void j1939_session_cancel(struct j1939_session *session, } j1939_session_list_unlock(session->priv); + + if (!session->sk) + j1939_sk_errqueue(session, J1939_ERRQUEUE_RX_ABORT); } static enum hrtimer_restart j1939_tp_txtimer(struct hrtimer *hrtimer) @@ -1253,6 +1254,9 @@ static enum hrtimer_restart j1939_tp_rxtimer(struct hrtimer *hrtimer) __j1939_session_cancel(session, J1939_XTP_ABORT_TIMEOUT); } j1939_session_list_unlock(session->priv); + + if (!session->sk) + j1939_sk_errqueue(session, J1939_ERRQUEUE_RX_ABORT); } j1939_session_put(session); From cdfac0a5064187219c88ddcc9283fbeb80abf522 Mon Sep 17 00:00:00 2001 From: Juergen Gross Date: Mon, 27 Mar 2023 10:36:45 +0200 Subject: [PATCH 148/269] xen/netback: don't do grant copy across page boundary commit 05310f31ca74673a96567fb14637b7d5d6c82ea5 upstream. Fix xenvif_get_requests() not to do grant copy operations across local page boundaries. This requires to double the maximum number of copy operations per queue, as each copy could now be split into 2. Make sure that struct xenvif_tx_cb doesn't grow too large. Cc: stable@vger.kernel.org Fixes: ad7f402ae4f4 ("xen/netback: Ensure protocol headers don't fall in the non-linear area") Signed-off-by: Juergen Gross Reviewed-by: Paul Durrant Signed-off-by: Paolo Abeni Signed-off-by: Greg Kroah-Hartman --- drivers/net/xen-netback/common.h | 2 +- drivers/net/xen-netback/netback.c | 25 +++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/drivers/net/xen-netback/common.h b/drivers/net/xen-netback/common.h index 3dbfc8a6924e..1fcbd83f7ff2 100644 --- a/drivers/net/xen-netback/common.h +++ b/drivers/net/xen-netback/common.h @@ -166,7 +166,7 @@ struct xenvif_queue { /* Per-queue data for xenvif */ struct pending_tx_info pending_tx_info[MAX_PENDING_REQS]; grant_handle_t grant_tx_handle[MAX_PENDING_REQS]; - struct gnttab_copy tx_copy_ops[MAX_PENDING_REQS]; + struct gnttab_copy tx_copy_ops[2 * MAX_PENDING_REQS]; struct gnttab_map_grant_ref tx_map_ops[MAX_PENDING_REQS]; struct gnttab_unmap_grant_ref tx_unmap_ops[MAX_PENDING_REQS]; /* passed to gnttab_[un]map_refs with pages under (un)mapping */ diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c index bf627af723bf..5c266062c08f 100644 --- a/drivers/net/xen-netback/netback.c +++ b/drivers/net/xen-netback/netback.c @@ -334,6 +334,7 @@ static int xenvif_count_requests(struct xenvif_queue *queue, struct xenvif_tx_cb { u16 copy_pending_idx[XEN_NETBK_LEGACY_SLOTS_MAX + 1]; u8 copy_count; + u32 split_mask; }; #define XENVIF_TX_CB(skb) ((struct xenvif_tx_cb *)(skb)->cb) @@ -361,6 +362,8 @@ static inline struct sk_buff *xenvif_alloc_skb(unsigned int size) struct sk_buff *skb = alloc_skb(size + NET_SKB_PAD + NET_IP_ALIGN, GFP_ATOMIC | __GFP_NOWARN); + + BUILD_BUG_ON(sizeof(*XENVIF_TX_CB(skb)) > sizeof(skb->cb)); if (unlikely(skb == NULL)) return NULL; @@ -396,11 +399,13 @@ static void xenvif_get_requests(struct xenvif_queue *queue, nr_slots = shinfo->nr_frags + 1; copy_count(skb) = 0; + XENVIF_TX_CB(skb)->split_mask = 0; /* Create copy ops for exactly data_len bytes into the skb head. */ __skb_put(skb, data_len); while (data_len > 0) { int amount = data_len > txp->size ? txp->size : data_len; + bool split = false; cop->source.u.ref = txp->gref; cop->source.domid = queue->vif->domid; @@ -413,6 +418,13 @@ static void xenvif_get_requests(struct xenvif_queue *queue, cop->dest.u.gmfn = virt_to_gfn(skb->data + skb_headlen(skb) - data_len); + /* Don't cross local page boundary! */ + if (cop->dest.offset + amount > XEN_PAGE_SIZE) { + amount = XEN_PAGE_SIZE - cop->dest.offset; + XENVIF_TX_CB(skb)->split_mask |= 1U << copy_count(skb); + split = true; + } + cop->len = amount; cop->flags = GNTCOPY_source_gref; @@ -420,7 +432,8 @@ static void xenvif_get_requests(struct xenvif_queue *queue, pending_idx = queue->pending_ring[index]; callback_param(queue, pending_idx).ctx = NULL; copy_pending_idx(skb, copy_count(skb)) = pending_idx; - copy_count(skb)++; + if (!split) + copy_count(skb)++; cop++; data_len -= amount; @@ -441,7 +454,8 @@ static void xenvif_get_requests(struct xenvif_queue *queue, nr_slots--; } else { /* The copy op partially covered the tx_request. - * The remainder will be mapped. + * The remainder will be mapped or copied in the next + * iteration. */ txp->offset += amount; txp->size -= amount; @@ -539,6 +553,13 @@ static int xenvif_tx_check_gop(struct xenvif_queue *queue, pending_idx = copy_pending_idx(skb, i); newerr = (*gopp_copy)->status; + + /* Split copies need to be handled together. */ + if (XENVIF_TX_CB(skb)->split_mask & (1U << i)) { + (*gopp_copy)++; + if (!newerr) + newerr = (*gopp_copy)->status; + } if (likely(!newerr)) { /* The first frag might still have this slot mapped */ if (i < copy_count(skb) - 1 || !sharedslot) From 2269be4951420af24896dd43987333ab35a72fc8 Mon Sep 17 00:00:00 2001 From: Josua Mayer Date: Thu, 23 Mar 2023 12:25:36 +0200 Subject: [PATCH 149/269] net: phy: dp83869: fix default value for tx-/rx-internal-delay commit 82e2c39f9ef78896e9b634dfd82dc042e6956bb7 upstream. dp83869 internally uses a look-up table for mapping supported delays in nanoseconds to register values. When specific delays are defined in device-tree, phy_get_internal_delay does the lookup automatically returning an index. The default case wrongly assigns the nanoseconds value from the lookup table, resulting in numeric value 2000 applied to delay configuration register, rather than the expected index values 0-7 (7 for 2000). Ultimately this issue broke RX for 1Gbps links. Fix default delay configuration by assigning the intended index value directly. Cc: stable@vger.kernel.org Fixes: 736b25afe284 ("net: dp83869: Add RGMII internal delay configuration") Co-developed-by: Yazan Shhady Signed-off-by: Yazan Shhady Signed-off-by: Josua Mayer Reviewed-by: Simon Horman Link: https://lore.kernel.org/r/20230323102536.31988-1-josua@solid-run.com Signed-off-by: Jakub Kicinski Signed-off-by: Greg Kroah-Hartman --- drivers/net/phy/dp83869.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/net/phy/dp83869.c b/drivers/net/phy/dp83869.c index b4ff9c5073a3..9ab5eff502b7 100644 --- a/drivers/net/phy/dp83869.c +++ b/drivers/net/phy/dp83869.c @@ -588,15 +588,13 @@ static int dp83869_of_init(struct phy_device *phydev) &dp83869_internal_delay[0], delay_size, true); if (dp83869->rx_int_delay < 0) - dp83869->rx_int_delay = - dp83869_internal_delay[DP83869_CLK_DELAY_DEF]; + dp83869->rx_int_delay = DP83869_CLK_DELAY_DEF; dp83869->tx_int_delay = phy_get_internal_delay(phydev, dev, &dp83869_internal_delay[0], delay_size, false); if (dp83869->tx_int_delay < 0) - dp83869->tx_int_delay = - dp83869_internal_delay[DP83869_CLK_DELAY_DEF]; + dp83869->tx_int_delay = DP83869_CLK_DELAY_DEF; return ret; } From 0e7ac17634d2254e0fc65307a5f430e4f1fdb7e9 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Wed, 22 Mar 2023 19:11:45 +0100 Subject: [PATCH 150/269] modpost: Fix processing of CRCs on 32-bit build machines commit fb27e70f6e408dee5d22b083e7a38a59e6118253 upstream. modpost now reads CRCs from .*.cmd files, parsing them using strtol(). This is inconsistent with its parsing of Module.symvers and with their definition as *unsigned* 32-bit values. strtol() clamps values to [LONG_MIN, LONG_MAX], and when building on a 32-bit system this changes all CRCs >= 0x80000000 to be 0x7fffffff. Change extract_crcs_for_object() to use strtoul() instead. Cc: stable@vger.kernel.org Fixes: f292d875d0dc ("modpost: extract symbol versions from *.cmd files") Signed-off-by: Ben Hutchings Signed-off-by: Masahiro Yamada Signed-off-by: Greg Kroah-Hartman --- scripts/mod/modpost.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 2c80da0220c3..1dfa80c6b471 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -1722,7 +1722,7 @@ static void extract_crcs_for_object(const char *object, struct module *mod) if (!isdigit(*p)) continue; /* skip this line */ - crc = strtol(p, &p, 0); + crc = strtoul(p, &p, 0); if (*p != '\n') continue; /* skip this line */ From d9c63daa576b24486c66024414f63d224897c796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kornel=20Dul=C4=99ba?= Date: Mon, 20 Mar 2023 09:32:59 +0000 Subject: [PATCH 151/269] pinctrl: amd: Disable and mask interrupts on resume MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit b26cd9325be4c1fcd331b77f10acb627c560d4d7 upstream. This fixes a similar problem to the one observed in: commit 4e5a04be88fe ("pinctrl: amd: disable and mask interrupts on probe"). On some systems, during suspend/resume cycle firmware leaves an interrupt enabled on a pin that is not used by the kernel. This confuses the AMD pinctrl driver and causes spurious interrupts. The driver already has logic to detect if a pin is used by the kernel. Leverage it to re-initialize interrupt fields of a pin only if it's not used by us. Cc: stable@vger.kernel.org Fixes: dbad75dd1f25 ("pinctrl: add AMD GPIO driver support.") Signed-off-by: Kornel Dulęba Link: https://lore.kernel.org/r/20230320093259.845178-1-korneld@chromium.org Signed-off-by: Linus Walleij Signed-off-by: Greg Kroah-Hartman --- drivers/pinctrl/pinctrl-amd.c | 36 +++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/drivers/pinctrl/pinctrl-amd.c b/drivers/pinctrl/pinctrl-amd.c index 32c3edaf9038..5e7b82a2b13d 100644 --- a/drivers/pinctrl/pinctrl-amd.c +++ b/drivers/pinctrl/pinctrl-amd.c @@ -865,32 +865,34 @@ static const struct pinconf_ops amd_pinconf_ops = { .pin_config_group_set = amd_pinconf_group_set, }; -static void amd_gpio_irq_init(struct amd_gpio *gpio_dev) +static void amd_gpio_irq_init_pin(struct amd_gpio *gpio_dev, int pin) { - struct pinctrl_desc *desc = gpio_dev->pctrl->desc; + const struct pin_desc *pd; unsigned long flags; u32 pin_reg, mask; - int i; mask = BIT(WAKE_CNTRL_OFF_S0I3) | BIT(WAKE_CNTRL_OFF_S3) | BIT(INTERRUPT_MASK_OFF) | BIT(INTERRUPT_ENABLE_OFF) | BIT(WAKE_CNTRL_OFF_S4); - for (i = 0; i < desc->npins; i++) { - int pin = desc->pins[i].number; - const struct pin_desc *pd = pin_desc_get(gpio_dev->pctrl, pin); + pd = pin_desc_get(gpio_dev->pctrl, pin); + if (!pd) + return; - if (!pd) - continue; + raw_spin_lock_irqsave(&gpio_dev->lock, flags); + pin_reg = readl(gpio_dev->base + pin * 4); + pin_reg &= ~mask; + writel(pin_reg, gpio_dev->base + pin * 4); + raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); +} - raw_spin_lock_irqsave(&gpio_dev->lock, flags); +static void amd_gpio_irq_init(struct amd_gpio *gpio_dev) +{ + struct pinctrl_desc *desc = gpio_dev->pctrl->desc; + int i; - pin_reg = readl(gpio_dev->base + i * 4); - pin_reg &= ~mask; - writel(pin_reg, gpio_dev->base + i * 4); - - raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); - } + for (i = 0; i < desc->npins; i++) + amd_gpio_irq_init_pin(gpio_dev, i); } #ifdef CONFIG_PM_SLEEP @@ -943,8 +945,10 @@ static int amd_gpio_resume(struct device *dev) for (i = 0; i < desc->npins; i++) { int pin = desc->pins[i].number; - if (!amd_gpio_should_save(gpio_dev, pin)) + if (!amd_gpio_should_save(gpio_dev, pin)) { + amd_gpio_irq_init_pin(gpio_dev, pin); continue; + } raw_spin_lock_irqsave(&gpio_dev->lock, flags); gpio_dev->saved_regs[i] |= readl(gpio_dev->base + pin * 4) & PIN_IRQ_PENDING; From 61c1f420bb01f33707a15894b26c0ae9906e913e Mon Sep 17 00:00:00 2001 From: Johan Hovold Date: Fri, 24 Feb 2023 14:08:28 +0100 Subject: [PATCH 152/269] pinctrl: at91-pio4: fix domain name assignment commit 7bb97e360acdd38b68ad0a1defb89c6e89c85596 upstream. Since commit d59f6617eef0 ("genirq: Allow fwnode to carry name information only") an IRQ domain is always given a name during allocation (e.g. used for the debugfs entry). Drop the no longer valid name assignment, which would lead to an attempt to free a string constant when removing the domain on late probe failures (e.g. probe deferral). Fixes: d59f6617eef0 ("genirq: Allow fwnode to carry name information only") Cc: stable@vger.kernel.org # 4.13 Signed-off-by: Johan Hovold Reviewed-by: Claudiu Beznea Tested-by: Claudiu Beznea # on SAMA7G5 Link: https://lore.kernel.org/r/20230224130828.27985-1-johan+linaro@kernel.org Signed-off-by: Linus Walleij Signed-off-by: Greg Kroah-Hartman --- drivers/pinctrl/pinctrl-at91-pio4.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/pinctrl/pinctrl-at91-pio4.c b/drivers/pinctrl/pinctrl-at91-pio4.c index 7f193f2b1566..0b7cc6f063e0 100644 --- a/drivers/pinctrl/pinctrl-at91-pio4.c +++ b/drivers/pinctrl/pinctrl-at91-pio4.c @@ -1176,7 +1176,6 @@ static int atmel_pinctrl_probe(struct platform_device *pdev) dev_err(dev, "can't add the irq domain\n"); return -ENODEV; } - atmel_pioctrl->irq_domain->name = "atmel gpio"; for (i = 0; i < atmel_pioctrl->npins; i++) { int irq = irq_create_mapping(atmel_pioctrl->irq_domain, i); From 44917e8c38d89abd4a7e9a1694e868b83713c743 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Thu, 30 Mar 2023 21:46:44 +0200 Subject: [PATCH 153/269] platform/x86: ideapad-laptop: Stop sending KEY_TOUCHPAD_TOGGLE commit e3271a5917d1501089b1a224d702aa053e2877f4 upstream. Commit 5829f8a897e4 ("platform/x86: ideapad-laptop: Send KEY_TOUCHPAD_TOGGLE on some models") made ideapad-laptop send KEY_TOUCHPAD_TOGGLE when we receive an ACPI notify with VPC event bit 5 set and the touchpad-state has not been changed by the EC itself already. This was done under the assumption that this would be good to do to make the touchpad-toggle hotkey work on newer models where the EC does not toggle the touchpad on/off itself (because it is not routed through the PS/2 controller, but uses I2C). But it turns out that at least some models, e.g. the Yoga 7-15ITL5 the EC triggers an ACPI notify with VPC event bit 5 set on resume, which would now cause a spurious KEY_TOUCHPAD_TOGGLE on resume to which the desktop environment responds by disabling the touchpad in software, breaking the touchpad (until manually re-enabled) on resume. It was never confirmed that sending KEY_TOUCHPAD_TOGGLE actually improves things on new models and at least some new models like the Yoga 7-15ITL5 don't have a touchpad on/off toggle hotkey at all, while still sending ACPI notify events with VPC event bit 5 set. So it seems best to revert the change to send KEY_TOUCHPAD_TOGGLE when receiving an ACPI notify events with VPC event bit 5 and the touchpad state as reported by the EC has not changed. Note this is not a full revert the code to cache the last EC touchpad state is kept to avoid sending spurious KEY_TOUCHPAD_ON / _OFF events on resume. Fixes: 5829f8a897e4 ("platform/x86: ideapad-laptop: Send KEY_TOUCHPAD_TOGGLE on some models") Link: https://bugzilla.kernel.org/show_bug.cgi?id=217234 Cc: stable@vger.kernel.org Signed-off-by: Hans de Goede Link: https://lore.kernel.org/r/20230330194644.64628-1-hdegoede@redhat.com Signed-off-by: Greg Kroah-Hartman --- drivers/platform/x86/ideapad-laptop.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c index 4e28c55f0ea5..bd38c7dcae34 100644 --- a/drivers/platform/x86/ideapad-laptop.c +++ b/drivers/platform/x86/ideapad-laptop.c @@ -1164,7 +1164,6 @@ static const struct key_entry ideapad_keymap[] = { { KE_KEY, 65, { KEY_PROG4 } }, { KE_KEY, 66, { KEY_TOUCHPAD_OFF } }, { KE_KEY, 67, { KEY_TOUCHPAD_ON } }, - { KE_KEY, 68, { KEY_TOUCHPAD_TOGGLE } }, { KE_KEY, 128, { KEY_ESC } }, /* @@ -1520,18 +1519,16 @@ static void ideapad_sync_touchpad_state(struct ideapad_private *priv, bool send_ if (priv->features.ctrl_ps2_aux_port) i8042_command(¶m, value ? I8042_CMD_AUX_ENABLE : I8042_CMD_AUX_DISABLE); - if (send_events) { - /* - * On older models the EC controls the touchpad and toggles it - * on/off itself, in this case we report KEY_TOUCHPAD_ON/_OFF. - * If the EC did not toggle, report KEY_TOUCHPAD_TOGGLE. - */ - if (value != priv->r_touchpad_val) { - ideapad_input_report(priv, value ? 67 : 66); - sysfs_notify(&priv->platform_device->dev.kobj, NULL, "touchpad"); - } else { - ideapad_input_report(priv, 68); - } + /* + * On older models the EC controls the touchpad and toggles it on/off + * itself, in this case we report KEY_TOUCHPAD_ON/_OFF. Some models do + * an acpi-notify with VPC bit 5 set on resume, so this function get + * called with send_events=true on every resume. Therefor if the EC did + * not toggle, do nothing to avoid sending spurious KEY_TOUCHPAD_TOGGLE. + */ + if (send_events && value != priv->r_touchpad_val) { + ideapad_input_report(priv, value ? 67 : 66); + sysfs_notify(&priv->platform_device->dev.kobj, NULL, "touchpad"); } priv->r_touchpad_val = value; From 064a1c7b0f8403260d77627e62424a72ca26cee2 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Sun, 26 Mar 2023 16:15:57 -0600 Subject: [PATCH 154/269] powerpc: Don't try to copy PPR for task with NULL pt_regs commit fd7276189450110ed835eb0a334e62d2f1c4e3be upstream. powerpc sets up PF_KTHREAD and PF_IO_WORKER with a NULL pt_regs, which from my (arguably very short) checking is not commonly done for other archs. This is fine, except when PF_IO_WORKER's have been created and the task does something that causes a coredump to be generated. Then we get this crash: Kernel attempted to read user page (160) - exploit attempt? (uid: 1000) BUG: Kernel NULL pointer dereference on read at 0x00000160 Faulting instruction address: 0xc0000000000c3a60 Oops: Kernel access of bad area, sig: 11 [#1] LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=32 NUMA pSeries Modules linked in: bochs drm_vram_helper drm_kms_helper xts binfmt_misc ecb ctr syscopyarea sysfillrect cbc sysimgblt drm_ttm_helper aes_generic ttm sg libaes evdev joydev virtio_balloon vmx_crypto gf128mul drm dm_mod fuse loop configfs drm_panel_orientation_quirks ip_tables x_tables autofs4 hid_generic usbhid hid xhci_pci xhci_hcd usbcore usb_common sd_mod CPU: 1 PID: 1982 Comm: ppc-crash Not tainted 6.3.0-rc2+ #88 Hardware name: IBM pSeries (emulated by qemu) POWER9 (raw) 0x4e1202 0xf000005 of:SLOF,HEAD hv:linux,kvm pSeries NIP: c0000000000c3a60 LR: c000000000039944 CTR: c0000000000398e0 REGS: c0000000041833b0 TRAP: 0300 Not tainted (6.3.0-rc2+) MSR: 800000000280b033 CR: 88082828 XER: 200400f8 ... NIP memcpy_power7+0x200/0x7d0 LR ppr_get+0x64/0xb0 Call Trace: ppr_get+0x40/0xb0 (unreliable) __regset_get+0x180/0x1f0 regset_get_alloc+0x64/0x90 elf_core_dump+0xb98/0x1b60 do_coredump+0x1c34/0x24a0 get_signal+0x71c/0x1410 do_notify_resume+0x140/0x6f0 interrupt_exit_user_prepare_main+0x29c/0x320 interrupt_exit_user_prepare+0x6c/0xa0 interrupt_return_srr_user+0x8/0x138 Because ppr_get() is trying to copy from a PF_IO_WORKER with a NULL pt_regs. Check for a valid pt_regs in both ppc_get/ppr_set, and return an error if not set. The actual error value doesn't seem to be important here, so just pick -EINVAL. Fixes: fa439810cc1b ("powerpc/ptrace: Enable support for NT_PPPC_TAR, NT_PPC_PPR, NT_PPC_DSCR") Cc: stable@vger.kernel.org # v4.8+ Signed-off-by: Jens Axboe [mpe: Trim oops in change log, add Fixes & Cc stable] Signed-off-by: Michael Ellerman Link: https://msgid.link/d9f63344-fe7c-56ae-b420-4a1a04a2ae4c@kernel.dk Signed-off-by: Greg Kroah-Hartman --- arch/powerpc/kernel/ptrace/ptrace-view.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/powerpc/kernel/ptrace/ptrace-view.c b/arch/powerpc/kernel/ptrace/ptrace-view.c index 076d867412c7..31876db8e996 100644 --- a/arch/powerpc/kernel/ptrace/ptrace-view.c +++ b/arch/powerpc/kernel/ptrace/ptrace-view.c @@ -290,6 +290,9 @@ static int gpr_set(struct task_struct *target, const struct user_regset *regset, static int ppr_get(struct task_struct *target, const struct user_regset *regset, struct membuf to) { + if (!target->thread.regs) + return -EINVAL; + return membuf_write(&to, &target->thread.regs->ppr, sizeof(u64)); } @@ -297,6 +300,9 @@ static int ppr_set(struct task_struct *target, const struct user_regset *regset, unsigned int pos, unsigned int count, const void *kbuf, const void __user *ubuf) { + if (!target->thread.regs) + return -EINVAL; + return user_regset_copyin(&pos, &count, &kbuf, &ubuf, &target->thread.regs->ppr, 0, sizeof(u64)); } From 0bb88976bdd2936caf8a2b35746f43c2d7cb6c27 Mon Sep 17 00:00:00 2001 From: Haren Myneni Date: Mon, 20 Mar 2023 19:50:08 -0700 Subject: [PATCH 155/269] powerpc/pseries/vas: Ignore VAS update for DLPAR if copy/paste is not enabled commit eca9f6e6f83b6725b84e1c76fdde19b003cff0eb upstream. The hypervisor supports user-mode NX from Power10. pseries_vas_dlpar_cpu() is called from lparcfg_write() to update VAS windows for DLPAR event in shared processor mode and the kernel gets -ENOTSUPP for HCALLs if the user-mode NX is not supported. The current VAS implementation also supports only with Radix page tables. Whereas in dedicated processor mode, pseries_vas_notifier() is registered only if the copy/paste feature is enabled. So instead of displaying HCALL error messages, update VAS capabilities if the copy/paste feature is available. This patch ignores updating VAS capabilities in pseries_vas_dlpar_cpu() and returns success if the copy/paste feature is not enabled. Then lparcfg_write() completes the processor DLPAR operations without any failures. Fixes: 2147783d6bf0 ("powerpc/pseries: Use lparcfg to reconfig VAS windows for DLPAR CPU") Cc: stable@vger.kernel.org # v6.1+ Signed-off-by: Haren Myneni Reviewed-by: Nathan Lynch Signed-off-by: Michael Ellerman Link: https://msgid.link/1d0e727e7dbd9a28627ef08ca9df9c86a50175e2.camel@linux.ibm.com Signed-off-by: Greg Kroah-Hartman --- arch/powerpc/platforms/pseries/vas.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/powerpc/platforms/pseries/vas.c b/arch/powerpc/platforms/pseries/vas.c index 4ad6e510d405..94c023bb13e0 100644 --- a/arch/powerpc/platforms/pseries/vas.c +++ b/arch/powerpc/platforms/pseries/vas.c @@ -857,6 +857,13 @@ int pseries_vas_dlpar_cpu(void) { int new_nr_creds, rc; + /* + * NX-GZIP is not enabled. Nothing to do for DLPAR event + */ + if (!copypaste_feat) + return 0; + + rc = h_query_vas_capabilities(H_QUERY_VAS_CAPABILITIES, vascaps[VAS_GZIP_DEF_FEAT_TYPE].feat, (u64)virt_to_phys(&hv_cop_caps)); @@ -1013,6 +1020,7 @@ static int __init pseries_vas_init(void) * Linux supports user space COPY/PASTE only with Radix */ if (!radix_enabled()) { + copypaste_feat = false; pr_err("API is supported only with radix page tables\n"); return -ENOTSUPP; } From 3f5ded246953dd41608444a61b5ae1cfda3ef61e Mon Sep 17 00:00:00 2001 From: Benjamin Gray Date: Fri, 3 Mar 2023 09:59:47 +1100 Subject: [PATCH 156/269] powerpc/64s: Fix __pte_needs_flush() false positive warning commit 1abce0580b89464546ae06abd5891ebec43c9470 upstream. Userspace PROT_NONE ptes set _PAGE_PRIVILEGED, triggering a false positive debug assertion that __pte_flags_need_flush() is not called on a kernel mapping. Detect when it is a userspace PROT_NONE page by checking the required bits of PAGE_NONE are set, and none of the RWX bits are set. pte_protnone() is insufficient here because it always returns 0 when CONFIG_NUMA_BALANCING=n. Fixes: b11931e9adc1 ("powerpc/64s: add pte_needs_flush and huge_pmd_needs_flush") Cc: stable@vger.kernel.org # v6.1+ Reported-by: Russell Currey Signed-off-by: Benjamin Gray Signed-off-by: Michael Ellerman Link: https://msgid.link/20230302225947.81083-1-bgray@linux.ibm.com Signed-off-by: Greg Kroah-Hartman --- arch/powerpc/include/asm/book3s/64/tlbflush.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/include/asm/book3s/64/tlbflush.h b/arch/powerpc/include/asm/book3s/64/tlbflush.h index 67655cd60545..985bd8e69bdc 100644 --- a/arch/powerpc/include/asm/book3s/64/tlbflush.h +++ b/arch/powerpc/include/asm/book3s/64/tlbflush.h @@ -163,6 +163,11 @@ static inline void flush_tlb_fix_spurious_fault(struct vm_area_struct *vma, */ } +static inline bool __pte_protnone(unsigned long pte) +{ + return (pte & (pgprot_val(PAGE_NONE) | _PAGE_RWX)) == pgprot_val(PAGE_NONE); +} + static inline bool __pte_flags_need_flush(unsigned long oldval, unsigned long newval) { @@ -179,8 +184,8 @@ static inline bool __pte_flags_need_flush(unsigned long oldval, /* * We do not expect kernel mappings or non-PTEs or not-present PTEs. */ - VM_WARN_ON_ONCE(oldval & _PAGE_PRIVILEGED); - VM_WARN_ON_ONCE(newval & _PAGE_PRIVILEGED); + VM_WARN_ON_ONCE(!__pte_protnone(oldval) && oldval & _PAGE_PRIVILEGED); + VM_WARN_ON_ONCE(!__pte_protnone(newval) && newval & _PAGE_PRIVILEGED); VM_WARN_ON_ONCE(!(oldval & _PAGE_PTE)); VM_WARN_ON_ONCE(!(newval & _PAGE_PTE)); VM_WARN_ON_ONCE(!(oldval & _PAGE_PRESENT)); From f6bcbd556978edb98ad96bb2038995221f58fa58 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Tue, 21 Mar 2023 00:17:36 -0400 Subject: [PATCH 157/269] NFSv4: Fix hangs when recovering open state after a server reboot commit 6165a16a5ad9b237bb3131cff4d3c601ccb8f9a3 upstream. When we're using a cached open stateid or a delegation in order to avoid sending a CLAIM_PREVIOUS open RPC call to the server, we don't have a new open stateid to present to update_open_stateid(). Instead rely on nfs4_try_open_cached(), just as if we were doing a normal open. Fixes: d2bfda2e7aa0 ("NFSv4: don't reprocess cached open CLAIM_PREVIOUS") Cc: stable@vger.kernel.org Signed-off-by: Trond Myklebust Signed-off-by: Anna Schumaker Signed-off-by: Greg Kroah-Hartman --- fs/nfs/nfs4proc.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index d70da78e698d..70e76359909c 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -1980,8 +1980,7 @@ _nfs4_opendata_reclaim_to_nfs4_state(struct nfs4_opendata *data) if (!data->rpc_done) { if (data->rpc_status) return ERR_PTR(data->rpc_status); - /* cached opens have already been processed */ - goto update; + return nfs4_try_open_cached(data); } ret = nfs_refresh_inode(inode, &data->f_attr); @@ -1990,7 +1989,7 @@ _nfs4_opendata_reclaim_to_nfs4_state(struct nfs4_opendata *data) if (data->o_res.delegation_type != 0) nfs4_opendata_check_deleg(data, state); -update: + if (!update_open_stateid(state, &data->o_res.stateid, NULL, data->o_arg.fmode)) return ERR_PTR(-EAGAIN); From 0c60b9c0b77479eda2e3ab05f0e804722ec2f8b1 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Mon, 20 Mar 2023 15:09:54 +0100 Subject: [PATCH 158/269] ALSA: hda/conexant: Partial revert of a quirk for Lenovo commit b871cb971c683f7f212e7ca3c9a6709a75785116 upstream. The recent commit f83bb2592482 ("ALSA: hda/conexant: Add quirk for LENOVO 20149 Notebook model") introduced a quirk for the device with 17aa:3977, but this caused a regression on another model (Lenovo Ideadpad U31) with the very same PCI SSID. And, through skimming over the net, it seems that this PCI SSID is used for multiple different models, so it's no good idea to apply the quirk with the SSID. Although we may take a different ID check (e.g. the codec SSID instead of the PCI SSID), unfortunately, the original patch author couldn't identify the hardware details any longer as the machine was returned, and we can't develop the further proper fix. In this patch, instead, we partially revert the change so that the quirk won't be applied as default for addressing the regression. Meanwhile, the quirk function itself is kept, and it's now made to be applicable via the explicit model=lenovo-20149 option. Fixes: f83bb2592482 ("ALSA: hda/conexant: Add quirk for LENOVO 20149 Notebook model") Reported-by: Jetro Jormalainen Link: https://lore.kernel.org/r/20230308215009.4d3e58a6@mopti Cc: Link: https://lore.kernel.org/r/20230320140954.31154-1-tiwai@suse.de Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- sound/pci/hda/patch_conexant.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index 75e1d00074b9..a889cccdd607 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c @@ -980,7 +980,10 @@ static const struct snd_pci_quirk cxt5066_fixups[] = { SND_PCI_QUIRK(0x17aa, 0x3905, "Lenovo G50-30", CXT_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x17aa, 0x390b, "Lenovo G50-80", CXT_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x17aa, 0x3975, "Lenovo U300s", CXT_FIXUP_STEREO_DMIC), - SND_PCI_QUIRK(0x17aa, 0x3977, "Lenovo IdeaPad U310", CXT_PINCFG_LENOVO_NOTEBOOK), + /* NOTE: we'd need to extend the quirk for 17aa:3977 as the same + * PCI SSID is used on multiple Lenovo models + */ + SND_PCI_QUIRK(0x17aa, 0x3977, "Lenovo IdeaPad U310", CXT_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x17aa, 0x3978, "Lenovo G50-70", CXT_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x17aa, 0x397b, "Lenovo S205", CXT_FIXUP_STEREO_DMIC), SND_PCI_QUIRK_VENDOR(0x17aa, "Thinkpad", CXT_FIXUP_THINKPAD_ACPI), @@ -1003,6 +1006,7 @@ static const struct hda_model_fixup cxt5066_fixup_models[] = { { .id = CXT_FIXUP_MUTE_LED_GPIO, .name = "mute-led-gpio" }, { .id = CXT_FIXUP_HP_ZBOOK_MUTE_LED, .name = "hp-zbook-mute-led" }, { .id = CXT_FIXUP_HP_MIC_NO_PRESENCE, .name = "hp-mic-fix" }, + { .id = CXT_PINCFG_LENOVO_NOTEBOOK, .name = "lenovo-20149" }, {} }; From 3e120e9200160e177298db4d1ffc363942b8fcfb Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Fri, 24 Mar 2023 08:50:05 +0100 Subject: [PATCH 159/269] ALSA: usb-audio: Fix regression on detection of Roland VS-100 commit fa4e7a6fa12b1132340785e14bd439cbe95b7a5a upstream. It's been reported that the recent kernel can't probe the PCM devices on Roland VS-100 properly, and it turned out to be a regression by the recent addition of the bit shift range check for the format bits. In the old code, we just did bit-shift and it resulted in zero, which is then corrected to the standard PCM format, while the new code explicitly returns an error in such a case. For addressing the regression, relax the check and fallback to the standard PCM type (with the info output). Fixes: 43d5ca88dfcd ("ALSA: usb-audio: Fix potential out-of-bounds shift") Cc: Link: https://bugzilla.kernel.org/show_bug.cgi?id=217084 Link: https://lore.kernel.org/r/20230324075005.19403-1-tiwai@suse.de Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- sound/usb/format.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sound/usb/format.c b/sound/usb/format.c index 405dc0bf6678..4b1c5ba121f3 100644 --- a/sound/usb/format.c +++ b/sound/usb/format.c @@ -39,8 +39,12 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip, case UAC_VERSION_1: default: { struct uac_format_type_i_discrete_descriptor *fmt = _fmt; - if (format >= 64) - return 0; /* invalid format */ + if (format >= 64) { + usb_audio_info(chip, + "%u:%d: invalid format type 0x%llx is detected, processed as PCM\n", + fp->iface, fp->altsetting, format); + format = UAC_FORMAT_TYPE_I_PCM; + } sample_width = fmt->bBitResolution; sample_bytes = fmt->bSubframeSize; format = 1ULL << format; From 036d5ae0a7cf0e80617bb467e7d1fd8c8abf882f Mon Sep 17 00:00:00 2001 From: Tim Crawford Date: Fri, 17 Mar 2023 08:18:25 -0600 Subject: [PATCH 160/269] ALSA: hda/realtek: Add quirks for some Clevo laptops commit b7a5822810c4398515300d614d988cf638adecad upstream. Add the audio quirk for some of Clevo's latest RPL laptops: - NP50RNJS (ALC256) - NP70SNE (ALC256) - PD50SNE (ALC1220) - PE60RNE (ALC1220) Co-authored-by: Jeremy Soller Signed-off-by: Tim Crawford Cc: Link: https://lore.kernel.org/r/20230317141825.11807-1-tcrawford@system76.com Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- sound/pci/hda/patch_realtek.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 28ac6c159b2a..62c5486d3af6 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -2631,6 +2631,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = { SND_PCI_QUIRK(0x1558, 0x65e5, "Clevo PC50D[PRS](?:-D|-G)?", ALC1220_FIXUP_CLEVO_PB51ED_PINS), SND_PCI_QUIRK(0x1558, 0x65f1, "Clevo PC50HS", ALC1220_FIXUP_CLEVO_PB51ED_PINS), SND_PCI_QUIRK(0x1558, 0x65f5, "Clevo PD50PN[NRT]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), + SND_PCI_QUIRK(0x1558, 0x66a2, "Clevo PE60RNE", ALC1220_FIXUP_CLEVO_PB51ED_PINS), SND_PCI_QUIRK(0x1558, 0x67d1, "Clevo PB71[ER][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), SND_PCI_QUIRK(0x1558, 0x67e1, "Clevo PB71[DE][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS), SND_PCI_QUIRK(0x1558, 0x67e5, "Clevo PC70D[PRS](?:-D|-G)?", ALC1220_FIXUP_CLEVO_PB51ED_PINS), @@ -2651,6 +2652,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = { SND_PCI_QUIRK(0x1558, 0x96e1, "Clevo P960[ER][CDFN]-K", ALC1220_FIXUP_CLEVO_P950), SND_PCI_QUIRK(0x1558, 0x97e1, "Clevo P970[ER][CDFN]", ALC1220_FIXUP_CLEVO_P950), SND_PCI_QUIRK(0x1558, 0x97e2, "Clevo P970RC-M", ALC1220_FIXUP_CLEVO_P950), + SND_PCI_QUIRK(0x1558, 0xd502, "Clevo PD50SNE", ALC1220_FIXUP_CLEVO_PB51ED_PINS), SND_PCI_QUIRK_VENDOR(0x1558, "Clevo laptop", ALC882_FIXUP_EAPD), SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_FIXUP_EAPD), SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", ALC882_FIXUP_LENOVO_Y530), @@ -9574,6 +9576,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x1558, 0x5101, "Clevo S510WU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1558, 0x5157, "Clevo W517GU1", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1558, 0x51a1, "Clevo NS50MU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0x5630, "Clevo NP50RNJS", ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1558, 0x70a1, "Clevo NB70T[HJK]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1558, 0x70b3, "Clevo NK70SB", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1558, 0x70f2, "Clevo NH79EPY", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), @@ -9608,6 +9611,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x1558, 0x971d, "Clevo N970T[CDF]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1558, 0xa500, "Clevo NL5[03]RU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1558, 0xa600, "Clevo NL50NU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0xa671, "Clevo NP70SN[CDE]", ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1558, 0xb018, "Clevo NP50D[BE]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1558, 0xb019, "Clevo NH77D[BE]Q", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1558, 0xb022, "Clevo NH77D[DC][QW]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), From 3a0e34af6bffee89c5344e00f15844806b9d44b1 Mon Sep 17 00:00:00 2001 From: huangwenhui Date: Tue, 28 Mar 2023 15:46:44 +0800 Subject: [PATCH 161/269] ALSA: hda/realtek: Add quirk for Lenovo ZhaoYang CF4620Z commit 52aad39385e1bfdb34a1b405f699a8ef302c58b0 upstream. Fix headset microphone detection on Lenovo ZhaoYang CF4620Z. [ adjusted to be applicable to the latest tree -- tiwai ] Signed-off-by: huangwenhui Cc: Link: https://lore.kernel.org/r/20230328074644.30142-1-huangwenhuia@uniontech.com Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- sound/pci/hda/patch_realtek.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 62c5486d3af6..070150bbd355 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -9712,6 +9712,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x17aa, 0x511e, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), SND_PCI_QUIRK(0x17aa, 0x511f, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), + SND_PCI_QUIRK(0x17aa, 0x9e56, "Lenovo ZhaoYang CF4620Z", ALC286_FIXUP_SONY_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1849, 0x1233, "ASRock NUC Box 1100", ALC233_FIXUP_NO_AUDIO_JACK), SND_PCI_QUIRK(0x1849, 0xa233, "Positivo Master C6300", ALC269_FIXUP_HEADSET_MIC), SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MACH-WX9", ALC256_FIXUP_HUAWEI_MACH_WX9_PINS), From 75289cdbe125e62036a72369206ce661e3e4cff2 Mon Sep 17 00:00:00 2001 From: Max Filippov Date: Thu, 16 Mar 2023 23:00:21 -0700 Subject: [PATCH 162/269] xtensa: fix KASAN report for show_stack commit 1d3b7a788ca7435156809a6bd5b20c95b2370d45 upstream. show_stack dumps raw stack contents which may trigger an unnecessary KASAN report. Fix it by copying stack contents to a temporary buffer with __memcpy and then printing that buffer instead of passing stack pointer directly to the print_hex_dump. Cc: stable@vger.kernel.org Signed-off-by: Max Filippov Signed-off-by: Greg Kroah-Hartman --- arch/xtensa/kernel/traps.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/arch/xtensa/kernel/traps.c b/arch/xtensa/kernel/traps.c index 0c25e035ff10..9e9ade20a7ce 100644 --- a/arch/xtensa/kernel/traps.c +++ b/arch/xtensa/kernel/traps.c @@ -541,7 +541,7 @@ static size_t kstack_depth_to_print = CONFIG_PRINT_STACK_DEPTH; void show_stack(struct task_struct *task, unsigned long *sp, const char *loglvl) { - size_t len; + size_t len, off = 0; if (!sp) sp = stack_pointer(task); @@ -550,9 +550,17 @@ void show_stack(struct task_struct *task, unsigned long *sp, const char *loglvl) kstack_depth_to_print * STACK_DUMP_ENTRY_SIZE); printk("%sStack:\n", loglvl); - print_hex_dump(loglvl, " ", DUMP_PREFIX_NONE, - STACK_DUMP_LINE_SIZE, STACK_DUMP_ENTRY_SIZE, - sp, len, false); + while (off < len) { + u8 line[STACK_DUMP_LINE_SIZE]; + size_t line_len = len - off > STACK_DUMP_LINE_SIZE ? + STACK_DUMP_LINE_SIZE : len - off; + + __memcpy(line, (u8 *)sp + off, line_len); + print_hex_dump(loglvl, " ", DUMP_PREFIX_NONE, + STACK_DUMP_LINE_SIZE, STACK_DUMP_ENTRY_SIZE, + line, line_len, false); + off += STACK_DUMP_LINE_SIZE; + } show_trace(task, sp, loglvl); } From 69bec5ac6ea078c6df9018ac3c26c37cb3b0b6c0 Mon Sep 17 00:00:00 2001 From: Douglas Raillard Date: Mon, 6 Mar 2023 12:27:43 +0000 Subject: [PATCH 163/269] rcu: Fix rcu_torture_read ftrace event commit d18a04157fc171fd48075e3dc96471bd3b87f0dd upstream. Fix the rcutorturename field so that its size is correctly reported in the text format embedded in trace.dat files. As it stands, it is reported as being of size 1: field:char rcutorturename[8]; offset:8; size:1; signed:0; Signed-off-by: Douglas Raillard Reviewed-by: Mukesh Ojha Cc: stable@vger.kernel.org Fixes: 04ae87a52074e ("ftrace: Rework event_create_dir()") Reviewed-by: Steven Rostedt (Google) [ boqun: Add "Cc" and "Fixes" tags per Steven ] Signed-off-by: Boqun Feng Signed-off-by: Paul E. McKenney Signed-off-by: Greg Kroah-Hartman --- include/trace/events/rcu.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/trace/events/rcu.h b/include/trace/events/rcu.h index 90b2fb0292cb..012fa0d171b2 100644 --- a/include/trace/events/rcu.h +++ b/include/trace/events/rcu.h @@ -768,7 +768,7 @@ TRACE_EVENT_RCU(rcu_torture_read, TP_ARGS(rcutorturename, rhp, secs, c_old, c), TP_STRUCT__entry( - __field(char, rcutorturename[RCUTORTURENAME_LEN]) + __array(char, rcutorturename, RCUTORTURENAME_LEN) __field(struct rcu_head *, rhp) __field(unsigned long, secs) __field(unsigned long, c_old) From bc2f8b56217b50ef95498dc56736b955c002aade Mon Sep 17 00:00:00 2001 From: Geert Uytterhoeven Date: Tue, 14 Feb 2023 15:26:43 +0100 Subject: [PATCH 164/269] dt-bindings: mtd: jedec,spi-nor: Document CPOL/CPHA support commit a56cde41340ac4049fa6edac9e6cfbcd2804074e upstream. SPI EEPROMs typically support both SPI Mode 0 (CPOL=CPHA=0) and Mode 3 (CPOL=CPHA=1). However, using the latter is currently flagged as an error by "make dtbs_check", e.g.: arch/arm/boot/dts/r8a7791-koelsch.dtb: flash@0: Unevaluated properties are not allowed ('spi-cpha', 'spi-cpol' were unexpected) From schema: Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml Fix this by documenting support for CPOL=CPHA=1. Fixes: 233363aba72ac638 ("spi/panel: dt-bindings: drop CPHA and CPOL from common properties") Cc: stable@vger.kernel.org Signed-off-by: Geert Uytterhoeven Reviewed-by: Miquel Raynal Reviewed-by: Krzysztof Kozlowski Reviewed-by: Tudor Ambarus Signed-off-by: Miquel Raynal Link: https://lore.kernel.org/linux-mtd/afe470603028db9374930b0c57464b1f6d52bdd3.1676384304.git.geert+renesas@glider.be Signed-off-by: Greg Kroah-Hartman --- Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml b/Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml index 7149784a36ac..3ee77af5a74c 100644 --- a/Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml +++ b/Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml @@ -84,6 +84,13 @@ patternProperties: "^otp(-[0-9]+)?$": type: object + spi-cpol: true + spi-cpha: true + +dependencies: + spi-cpol: [ spi-cpha ] + spi-cpha: [ spi-cpol ] + unevaluatedProperties: false examples: From a028d92967bba61b4909ea26044d98260db1eaed Mon Sep 17 00:00:00 2001 From: Heiko Carstens Date: Thu, 23 Mar 2023 13:09:16 +0100 Subject: [PATCH 165/269] s390/uaccess: add missing earlyclobber annotations to __clear_user() commit 89aba4c26fae4e459f755a18912845c348ee48f3 upstream. Add missing earlyclobber annotation to size, to, and tmp2 operands of the __clear_user() inline assembly since they are modified or written to before the last usage of all input operands. This can lead to incorrect register allocation for the inline assembly. Fixes: 6c2a9e6df604 ("[S390] Use alternative user-copy operations for new hardware.") Reported-by: Mark Rutland Link: https://lore.kernel.org/all/20230321122514.1743889-3-mark.rutland@arm.com/ Cc: stable@vger.kernel.org Reviewed-by: Gerald Schaefer Signed-off-by: Heiko Carstens Signed-off-by: Vasily Gorbik Signed-off-by: Greg Kroah-Hartman --- arch/s390/lib/uaccess.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/s390/lib/uaccess.c b/arch/s390/lib/uaccess.c index 720036fb1924..d44214072779 100644 --- a/arch/s390/lib/uaccess.c +++ b/arch/s390/lib/uaccess.c @@ -172,7 +172,7 @@ unsigned long __clear_user(void __user *to, unsigned long size) "4: slgr %0,%0\n" "5:\n" EX_TABLE(0b,2b) EX_TABLE(6b,2b) EX_TABLE(3b,5b) EX_TABLE(7b,5b) - : "+a" (size), "+a" (to), "+a" (tmp1), "=a" (tmp2) + : "+&a" (size), "+&a" (to), "+a" (tmp1), "=&a" (tmp2) : "a" (empty_zero_page), [spec] "d" (spec.val) : "cc", "memory", "0"); return size; From 3f878da42862ca0a75051846bf992ff2c370bea6 Mon Sep 17 00:00:00 2001 From: "Jiri Slaby (SUSE)" Date: Thu, 16 Mar 2023 12:28:09 +0100 Subject: [PATCH 166/269] s390: reintroduce expoline dependence to scripts commit 7bb2107e63d8a4a13bbb6fe0e1cbd68784a2e9ac upstream. Expolines depend on scripts/basic/fixdep. And build of expolines can now race with the fixdep build: make[1]: *** Deleting file 'arch/s390/lib/expoline/expoline.o' /bin/sh: line 1: scripts/basic/fixdep: Permission denied make[1]: *** [../scripts/Makefile.build:385: arch/s390/lib/expoline/expoline.o] Error 126 make: *** [../arch/s390/Makefile:166: expoline_prepare] Error 2 The dependence was removed in the below Fixes: commit. So reintroduce the dependence on scripts. Fixes: a0b0987a7811 ("s390/nospec: remove unneeded header includes") Cc: Joe Lawrence Cc: stable@vger.kernel.org Cc: Heiko Carstens Cc: Vasily Gorbik Cc: Alexander Gordeev Cc: Christian Borntraeger Cc: Sven Schnelle Cc: linux-s390@vger.kernel.org Signed-off-by: Jiri Slaby (SUSE) Link: https://lore.kernel.org/r/20230316112809.7903-1-jirislaby@kernel.org Signed-off-by: Vasily Gorbik Signed-off-by: Greg Kroah-Hartman --- arch/s390/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/s390/Makefile b/arch/s390/Makefile index b3235ab0ace8..ed646c583e4f 100644 --- a/arch/s390/Makefile +++ b/arch/s390/Makefile @@ -162,7 +162,7 @@ vdso_prepare: prepare0 ifdef CONFIG_EXPOLINE_EXTERN modules_prepare: expoline_prepare -expoline_prepare: +expoline_prepare: scripts $(Q)$(MAKE) $(build)=arch/s390/lib/expoline arch/s390/lib/expoline/expoline.o endif endif From f931ca46773a4f02040f63b4cdd1b14abcc130c1 Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Fri, 24 Feb 2023 18:21:54 +0100 Subject: [PATCH 167/269] drm/etnaviv: fix reference leak when mmaping imported buffer commit 963b2e8c428f79489ceeb058e8314554ec9cbe6f upstream. drm_gem_prime_mmap() takes a reference on the GEM object, but before that drm_gem_mmap_obj() already takes a reference, which will be leaked as only one reference is dropped when the mapping is closed. Drop the extra reference when dma_buf_mmap() succeeds. Cc: stable@vger.kernel.org Signed-off-by: Lucas Stach Reviewed-by: Christian Gmeiner Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c index 3fa2da149639..fc594ea5bbc1 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c @@ -91,7 +91,15 @@ static void *etnaviv_gem_prime_vmap_impl(struct etnaviv_gem_object *etnaviv_obj) static int etnaviv_gem_prime_mmap_obj(struct etnaviv_gem_object *etnaviv_obj, struct vm_area_struct *vma) { - return dma_buf_mmap(etnaviv_obj->base.dma_buf, vma, 0); + int ret; + + ret = dma_buf_mmap(etnaviv_obj->base.dma_buf, vma, 0); + if (!ret) { + /* Drop the reference acquired by drm_gem_mmap_obj(). */ + drm_gem_object_put(&etnaviv_obj->base); + } + + return ret; } static const struct etnaviv_gem_ops etnaviv_gem_prime_ops = { From febacc33298f8d72d5bfd4d23a556cc21b5cd6c2 Mon Sep 17 00:00:00 2001 From: Tim Huang Date: Thu, 30 Mar 2023 10:33:02 +0800 Subject: [PATCH 168/269] drm/amdgpu: allow more APUs to do mode2 reset when go to S4 commit 2fec9dc8e0acc3dfb56d1389151bcf405f087b10 upstream. Skip mode2 reset only for IMU enabled APUs when do S4. This patch is to fix the regression issue https://gitlab.freedesktop.org/drm/amd/-/issues/2483 It is generated by commit b589626674de ("drm/amdgpu: skip ASIC reset for APUs when go to S4"). Fixes: b589626674de ("drm/amdgpu: skip ASIC reset for APUs when go to S4") Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2483 Tested-by: Yuan Perry Signed-off-by: Tim Huang Signed-off-by: Alex Deucher Cc: stable@vger.kernel.org # 6.1.x Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c index 435d81d6ffd9..a78e80f9f65c 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c @@ -981,7 +981,12 @@ static bool amdgpu_atcs_pci_probe_handle(struct pci_dev *pdev) */ bool amdgpu_acpi_should_gpu_reset(struct amdgpu_device *adev) { - if (adev->flags & AMD_IS_APU) + if ((adev->flags & AMD_IS_APU) && + adev->gfx.imu.funcs) /* Not need to do mode2 reset for IMU enabled APUs */ + return false; + + if ((adev->flags & AMD_IS_APU) && + amdgpu_acpi_is_s3_active(adev)) return false; if (amdgpu_sriov_vf(adev)) From 41abe8828c83e8f73940790a3861b498a8b5ee3f Mon Sep 17 00:00:00 2001 From: Fangzhi Zuo Date: Fri, 24 Feb 2023 13:45:21 -0500 Subject: [PATCH 169/269] drm/amd/display: Add DSC Support for Synaptics Cascaded MST Hub commit f4f3b7dedbe849e780c779ba67365bb1db0d8637 upstream. Traditional synaptics hub has one MST branch device without virtual dpcd. Synaptics cascaded hub has two chained MST branch devices. DSC decoding is performed via root MST branch device, instead of the second MST branch device. Reviewed-by: Hersen Wu Acked-by: Qingqing Zhuo Signed-off-by: Fangzhi Zuo Tested-by: Daniel Wheeler Signed-off-by: Alex Deucher Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman --- .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 19 +++++++++++++++++++ .../display/amdgpu_dm/amdgpu_dm_mst_types.h | 12 ++++++++++++ 2 files changed, 31 insertions(+) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c index 8561e9b017a2..36c19579f2d1 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c @@ -208,6 +208,21 @@ bool needs_dsc_aux_workaround(struct dc_link *link) return false; } +bool is_synaptics_cascaded_panamera(struct dc_link *link, struct drm_dp_mst_port *port) +{ + u8 branch_vendor_data[4] = { 0 }; // Vendor data 0x50C ~ 0x50F + + if (drm_dp_dpcd_read(port->mgr->aux, DP_BRANCH_VENDOR_SPECIFIC_START, &branch_vendor_data, 4) == 4) { + if (link->dpcd_caps.branch_dev_id == DP_BRANCH_DEVICE_ID_90CC24 && + IS_SYNAPTICS_CASCADED_PANAMERA(link->dpcd_caps.branch_dev_name, branch_vendor_data)) { + DRM_INFO("Synaptics Cascaded MST hub\n"); + return true; + } + } + + return false; +} + static bool validate_dsc_caps_on_connector(struct amdgpu_dm_connector *aconnector) { struct dc_sink *dc_sink = aconnector->dc_sink; @@ -231,6 +246,10 @@ static bool validate_dsc_caps_on_connector(struct amdgpu_dm_connector *aconnecto needs_dsc_aux_workaround(aconnector->dc_link)) aconnector->dsc_aux = &aconnector->mst_port->dm_dp_aux.aux; + /* synaptics cascaded MST hub case */ + if (!aconnector->dsc_aux && is_synaptics_cascaded_panamera(aconnector->dc_link, port)) + aconnector->dsc_aux = port->mgr->aux; + if (!aconnector->dsc_aux) return false; diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h index 97fd70df531b..0b5750202e73 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h @@ -34,6 +34,18 @@ #define SYNAPTICS_RC_OFFSET 0x4BC #define SYNAPTICS_RC_DATA 0x4C0 +#define DP_BRANCH_VENDOR_SPECIFIC_START 0x50C + +/** + * Panamera MST Hub detection + * Offset DPCD 050Eh == 0x5A indicates cascaded MST hub case + * Check from beginning of branch device vendor specific field (050Ch) + */ +#define IS_SYNAPTICS_PANAMERA(branchDevName) (((int)branchDevName[4] & 0xF0) == 0x50 ? 1 : 0) +#define BRANCH_HW_REVISION_PANAMERA_A2 0x10 +#define SYNAPTICS_CASCADED_HUB_ID 0x5A +#define IS_SYNAPTICS_CASCADED_PANAMERA(devName, data) ((IS_SYNAPTICS_PANAMERA(devName) && ((int)data[2] == SYNAPTICS_CASCADED_HUB_ID)) ? 1 : 0) + struct amdgpu_display_manager; struct amdgpu_dm_connector; From fd71f4c9e3fa7454f9797c539abd5fcfc8b92b41 Mon Sep 17 00:00:00 2001 From: Fangzhi Zuo Date: Tue, 28 Feb 2023 21:34:58 -0500 Subject: [PATCH 170/269] drm/amd/display: Take FEC Overhead into Timeslot Calculation commit 68dc1846c3a44d5e633be145c169ce2fd5420695 upstream. 8b/10b encoding needs to add 3% fec overhead into the pbn. In the Synapcis Cascaded MST hub, the first stage MST branch device needs the information to determine the timeslot count for the second stage MST branch device. Missing this overhead will leads to insufficient timeslot allocation. Cc: stable@vger.kernel.org Cc: Mario Limonciello Reviewed-by: Hersen Wu Acked-by: Qingqing Zhuo Signed-off-by: Fangzhi Zuo Tested-by: Daniel Wheeler Signed-off-by: Alex Deucher Signed-off-by: Greg Kroah-Hartman --- .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 32 ++++++++++++++----- .../display/amdgpu_dm/amdgpu_dm_mst_types.h | 3 ++ 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c index 36c19579f2d1..df74bc88e460 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c @@ -646,12 +646,25 @@ struct dsc_mst_fairness_params { struct amdgpu_dm_connector *aconnector; }; -static int kbps_to_peak_pbn(int kbps) +static uint16_t get_fec_overhead_multiplier(struct dc_link *dc_link) +{ + u8 link_coding_cap; + uint16_t fec_overhead_multiplier_x1000 = PBN_FEC_OVERHEAD_MULTIPLIER_8B_10B; + + link_coding_cap = dc_link_dp_mst_decide_link_encoding_format(dc_link); + if (link_coding_cap == DP_128b_132b_ENCODING) + fec_overhead_multiplier_x1000 = PBN_FEC_OVERHEAD_MULTIPLIER_128B_132B; + + return fec_overhead_multiplier_x1000; +} + +static int kbps_to_peak_pbn(int kbps, uint16_t fec_overhead_multiplier_x1000) { u64 peak_kbps = kbps; peak_kbps *= 1006; - peak_kbps = div_u64(peak_kbps, 1000); + peak_kbps *= fec_overhead_multiplier_x1000; + peak_kbps = div_u64(peak_kbps, 1000 * 1000); return (int) DIV64_U64_ROUND_UP(peak_kbps * 64, (54 * 8 * 1000)); } @@ -738,11 +751,12 @@ static int increase_dsc_bpp(struct drm_atomic_state *state, int link_timeslots_used; int fair_pbn_alloc; int ret = 0; + uint16_t fec_overhead_multiplier_x1000 = get_fec_overhead_multiplier(dc_link); for (i = 0; i < count; i++) { if (vars[i + k].dsc_enabled) { initial_slack[i] = - kbps_to_peak_pbn(params[i].bw_range.max_kbps) - vars[i + k].pbn; + kbps_to_peak_pbn(params[i].bw_range.max_kbps, fec_overhead_multiplier_x1000) - vars[i + k].pbn; bpp_increased[i] = false; remaining_to_increase += 1; } else { @@ -838,6 +852,7 @@ static int try_disable_dsc(struct drm_atomic_state *state, int next_index; int remaining_to_try = 0; int ret; + uint16_t fec_overhead_multiplier_x1000 = get_fec_overhead_multiplier(dc_link); for (i = 0; i < count; i++) { if (vars[i + k].dsc_enabled @@ -867,7 +882,7 @@ static int try_disable_dsc(struct drm_atomic_state *state, if (next_index == -1) break; - vars[next_index].pbn = kbps_to_peak_pbn(params[next_index].bw_range.stream_kbps); + vars[next_index].pbn = kbps_to_peak_pbn(params[next_index].bw_range.stream_kbps, fec_overhead_multiplier_x1000); ret = drm_dp_atomic_find_time_slots(state, params[next_index].port->mgr, params[next_index].port, @@ -880,7 +895,7 @@ static int try_disable_dsc(struct drm_atomic_state *state, vars[next_index].dsc_enabled = false; vars[next_index].bpp_x16 = 0; } else { - vars[next_index].pbn = kbps_to_peak_pbn(params[next_index].bw_range.max_kbps); + vars[next_index].pbn = kbps_to_peak_pbn(params[next_index].bw_range.max_kbps, fec_overhead_multiplier_x1000); ret = drm_dp_atomic_find_time_slots(state, params[next_index].port->mgr, params[next_index].port, @@ -909,6 +924,7 @@ static int compute_mst_dsc_configs_for_link(struct drm_atomic_state *state, int count = 0; int i, k, ret; bool debugfs_overwrite = false; + uint16_t fec_overhead_multiplier_x1000 = get_fec_overhead_multiplier(dc_link); memset(params, 0, sizeof(params)); @@ -970,7 +986,7 @@ static int compute_mst_dsc_configs_for_link(struct drm_atomic_state *state, /* Try no compression */ for (i = 0; i < count; i++) { vars[i + k].aconnector = params[i].aconnector; - vars[i + k].pbn = kbps_to_peak_pbn(params[i].bw_range.stream_kbps); + vars[i + k].pbn = kbps_to_peak_pbn(params[i].bw_range.stream_kbps, fec_overhead_multiplier_x1000); vars[i + k].dsc_enabled = false; vars[i + k].bpp_x16 = 0; ret = drm_dp_atomic_find_time_slots(state, params[i].port->mgr, params[i].port, @@ -989,7 +1005,7 @@ static int compute_mst_dsc_configs_for_link(struct drm_atomic_state *state, /* Try max compression */ for (i = 0; i < count; i++) { if (params[i].compression_possible && params[i].clock_force_enable != DSC_CLK_FORCE_DISABLE) { - vars[i + k].pbn = kbps_to_peak_pbn(params[i].bw_range.min_kbps); + vars[i + k].pbn = kbps_to_peak_pbn(params[i].bw_range.min_kbps, fec_overhead_multiplier_x1000); vars[i + k].dsc_enabled = true; vars[i + k].bpp_x16 = params[i].bw_range.min_target_bpp_x16; ret = drm_dp_atomic_find_time_slots(state, params[i].port->mgr, @@ -997,7 +1013,7 @@ static int compute_mst_dsc_configs_for_link(struct drm_atomic_state *state, if (ret < 0) return ret; } else { - vars[i + k].pbn = kbps_to_peak_pbn(params[i].bw_range.stream_kbps); + vars[i + k].pbn = kbps_to_peak_pbn(params[i].bw_range.stream_kbps, fec_overhead_multiplier_x1000); vars[i + k].dsc_enabled = false; vars[i + k].bpp_x16 = 0; ret = drm_dp_atomic_find_time_slots(state, params[i].port->mgr, diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h index 0b5750202e73..1e4ede1e57ab 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h @@ -46,6 +46,9 @@ #define SYNAPTICS_CASCADED_HUB_ID 0x5A #define IS_SYNAPTICS_CASCADED_PANAMERA(devName, data) ((IS_SYNAPTICS_PANAMERA(devName) && ((int)data[2] == SYNAPTICS_CASCADED_HUB_ID)) ? 1 : 0) +#define PBN_FEC_OVERHEAD_MULTIPLIER_8B_10B 1031 +#define PBN_FEC_OVERHEAD_MULTIPLIER_128B_132B 1000 + struct amdgpu_display_manager; struct amdgpu_dm_connector; From 21ee19974b19edcda7a8e4f9bd5b02c3a750a69e Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Thu, 16 Mar 2023 17:59:18 +0100 Subject: [PATCH 171/269] drm/i915/gem: Flush lmem contents after construction commit d032ca43f2c80049ce5aabd3f208dc3849359497 upstream. i915_gem_object_create_lmem_from_data() lacks the flush of the data written to lmem to ensure the object is marked as dirty and the writes flushed to the backing store. Once created, we can immediately release the obj->mm.mapping caching of the vmap. Fixes: 7acbbc7cf485 ("drm/i915/guc: put all guc objects in lmem when available") Cc: Matthew Auld Cc: Daniele Ceraolo Spurio Cc: Andi Shyti Cc: Matthew Brost Cc: John Harrison Signed-off-by: Chris Wilson Cc: # v5.16+ Signed-off-by: Nirmoy Das Reviewed-by: Andi Shyti Reviewed-by: Nirmoy Das Link: https://patchwork.freedesktop.org/patch/msgid/20230316165918.13074-1-nirmoy.das@intel.com (cherry picked from commit e2ee10474ce766686e7a7496585cdfaf79e3a1bf) Signed-off-by: Jani Nikula Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/i915/gem/i915_gem_lmem.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_lmem.c b/drivers/gpu/drm/i915/gem/i915_gem_lmem.c index 8949fb0a944f..3198b64ad7db 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_lmem.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_lmem.c @@ -127,7 +127,8 @@ i915_gem_object_create_lmem_from_data(struct drm_i915_private *i915, memcpy(map, data, size); - i915_gem_object_unpin_map(obj); + i915_gem_object_flush_map(obj); + __i915_gem_object_release_map(obj); return obj; } From c781c107731fc09ce4330c8c636b8446d0f72aa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= Date: Mon, 20 Mar 2023 11:05:17 +0200 Subject: [PATCH 172/269] drm/i915/dpt: Treat the DPT BO as a framebuffer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 3413881e1ecc3cba722a2e87ec099692eed5be28 upstream. Currently i915_gem_object_is_framebuffer() doesn't treat the BO containing the framebuffer's DPT as a framebuffer itself. This means eg. that the shrinker can evict the DPT BO while leaving the actual FB BO bound, when the DPT is allocated from regular shmem. That causes an immediate oops during hibernate as we try to rewrite the PTEs inside the already evicted DPT obj. TODO: presumably this might also be the reason for the DPT related display faults under heavy memory pressure, but I'm still not sure how that would happen as the object should be pinned by intel_dpt_pin() while in active use by the display engine... Cc: stable@vger.kernel.org Cc: Juha-Pekka Heikkila Cc: Matthew Auld Cc: Imre Deak Fixes: 0dc987b699ce ("drm/i915/display: Add smem fallback allocation for dpt") Signed-off-by: Ville Syrjälä Link: https://patchwork.freedesktop.org/patch/msgid/20230320090522.9909-2-ville.syrjala@linux.intel.com Reviewed-by: Juha-Pekka Heikkila (cherry picked from commit 779cb5ba64ec7df80675a956c9022929514f517a) Signed-off-by: Jani Nikula Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/i915/display/intel_dpt.c | 2 ++ drivers/gpu/drm/i915/gem/i915_gem_object.h | 2 +- drivers/gpu/drm/i915/gem/i915_gem_object_types.h | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/display/intel_dpt.c b/drivers/gpu/drm/i915/display/intel_dpt.c index ac587647e1f5..a3893aff3861 100644 --- a/drivers/gpu/drm/i915/display/intel_dpt.c +++ b/drivers/gpu/drm/i915/display/intel_dpt.c @@ -300,6 +300,7 @@ intel_dpt_create(struct intel_framebuffer *fb) vm->pte_encode = gen8_ggtt_pte_encode; dpt->obj = dpt_obj; + dpt->obj->is_dpt = true; return &dpt->vm; } @@ -308,5 +309,6 @@ void intel_dpt_destroy(struct i915_address_space *vm) { struct i915_dpt *dpt = i915_vm_to_dpt(vm); + dpt->obj->is_dpt = false; i915_vm_put(&dpt->vm); } diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.h b/drivers/gpu/drm/i915/gem/i915_gem_object.h index 1723af9b0f6a..ea951e2f55b1 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_object.h +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.h @@ -319,7 +319,7 @@ i915_gem_object_never_mmap(const struct drm_i915_gem_object *obj) static inline bool i915_gem_object_is_framebuffer(const struct drm_i915_gem_object *obj) { - return READ_ONCE(obj->frontbuffer); + return READ_ONCE(obj->frontbuffer) || obj->is_dpt; } static inline unsigned int diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h index ab4c2f90a564..1d0d8ee9d707 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h +++ b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h @@ -491,6 +491,9 @@ struct drm_i915_gem_object { */ unsigned int cache_dirty:1; + /* @is_dpt: Object houses a display page table (DPT) */ + unsigned int is_dpt:1; + /** * @read_domains: Read memory domains. * From 0fc6fea41c7122aa5f2088117f50144b507e13d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= Date: Mon, 20 Mar 2023 20:35:32 +0200 Subject: [PATCH 173/269] drm/i915: Disable DC states for all commits MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit a2b6e99d8a623544f3bdccd28ee35b9c1b00daa5 upstream. Keeping DC states enabled is incompatible with the _noarm()/_arm() split we use for writing pipe/plane registers. When DC5 and PSR are enabled, all pipe/plane registers effectively become self-arming on account of DC5 exit arming the update, and PSR exit latching it. What probably saves us most of the time is that (with PIPE_MISC[21]=0) all pipe register writes themselves trigger PSR exit, and then we don't re-enter PSR until the idle frame count has elapsed. So it may be that the PSR exit happens already before we've updated the state too much. Also the PSR1 panel (at least on this KBL) seems to discard the first frame we trasmit, presumably still scanning out from its internal framebuffer at that point. So only the second frame we transmit is actually visible. But I suppose that could also be panel specific behaviour. I haven't checked out how other PSR panels behave, nor did I bother to check what the eDP spec has to say about this. And since this really is all about DC states, let's switch from the MODESET domain to the DC_OFF domain. Functionally they are 100% identical. We should probably remove the MODESET domain... And for good measure let's toss in an assert to the place where we do the _noarm() register writes to make sure DC states are in fact off. v2: Just use intel_display_power_is_enabled() (Imre) Cc: #v5.17+ Cc: Manasi Navare Cc: Drew Davenport Cc: Jouni Högander Reviewed-by: Imre Deak Fixes: d13dde449580 ("drm/i915: Split pipe+output CSC programming to noarm+arm pair") Fixes: f8a005eb8972 ("drm/i915: Optimize icl+ universal plane programming") Fixes: 890b6ec4a522 ("drm/i915: Split skl+ plane update into noarm+arm pair") Signed-off-by: Ville Syrjälä Link: https://patchwork.freedesktop.org/patch/msgid/20230320183532.17727-1-ville.syrjala@linux.intel.com (cherry picked from commit 41b4c7fe72b6105a4b49395eea9aa40cef94288d) Signed-off-by: Jani Nikula Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/i915/display/intel_display.c | 28 +++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index e0d36edd1e3f..3f3982ae9974 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -7124,6 +7124,8 @@ static void intel_update_crtc(struct intel_atomic_state *state, intel_fbc_update(state, crtc); + drm_WARN_ON(&i915->drm, !intel_display_power_is_enabled(i915, POWER_DOMAIN_DC_OFF)); + if (!modeset && (new_crtc_state->uapi.color_mgmt_changed || new_crtc_state->update_pipe)) @@ -7500,8 +7502,28 @@ static void intel_atomic_commit_tail(struct intel_atomic_state *state) drm_atomic_helper_wait_for_dependencies(&state->base); drm_dp_mst_atomic_wait_for_dependencies(&state->base); - if (state->modeset) - wakeref = intel_display_power_get(dev_priv, POWER_DOMAIN_MODESET); + /* + * During full modesets we write a lot of registers, wait + * for PLLs, etc. Doing that while DC states are enabled + * is not a good idea. + * + * During fastsets and other updates we also need to + * disable DC states due to the following scenario: + * 1. DC5 exit and PSR exit happen + * 2. Some or all _noarm() registers are written + * 3. Due to some long delay PSR is re-entered + * 4. DC5 entry -> DMC saves the already written new + * _noarm() registers and the old not yet written + * _arm() registers + * 5. DC5 exit -> DMC restores a mixture of old and + * new register values and arms the update + * 6. PSR exit -> hardware latches a mixture of old and + * new register values -> corrupted frame, or worse + * 7. New _arm() registers are finally written + * 8. Hardware finally latches a complete set of new + * register values, and subsequent frames will be OK again + */ + wakeref = intel_display_power_get(dev_priv, POWER_DOMAIN_DC_OFF); intel_atomic_prepare_plane_clear_colors(state); @@ -7640,8 +7662,8 @@ static void intel_atomic_commit_tail(struct intel_atomic_state *state) * the culprit. */ intel_uncore_arm_unclaimed_mmio_detection(&dev_priv->uncore); - intel_display_power_put(dev_priv, POWER_DOMAIN_MODESET, wakeref); } + intel_display_power_put(dev_priv, POWER_DOMAIN_DC_OFF, wakeref); intel_runtime_pm_put(&dev_priv->runtime_pm, state->wakeref); /* From fcf712b4e5d0aacbc193e71962bdaa4d4afe3335 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= Date: Mon, 20 Mar 2023 11:54:34 +0200 Subject: [PATCH 174/269] drm/i915: Move CSC load back into .color_commit_arm() when PSR is enabled on skl/glk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit a8e03e00b62073b494886dbff32f8b5338066c8b upstream. SKL/GLK CSC unit suffers from a nasty issue where a CSC coeff/offset register read or write between DC5 exit and PSR exit will undo the CSC arming performed by DMC, and then during PSR exit the hardware will latch zeroes into the active CSC registers. This causes any plane going through the CSC to output all black. We can sidestep the issue by making sure the PSR exit has already actually happened before we touch the CSC coeff/offset registers. Easiest way to guarantee that is to just move the CSC programming back into the .color_commir_arm() as we force a PSR exit (and crucially wait for it to actually happen) prior to touching the arming registers. When PSR (and thus also DC states) are disabled we don't have anything to worry about, so we can keep using the more optional _noarm() hook for writing the CSC registers. Cc: #v5.19+ Cc: Manasi Navare Cc: Drew Davenport Cc: Imre Deak Cc: Jouni Högander Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/8283 Fixes: d13dde449580 ("drm/i915: Split pipe+output CSC programming to noarm+arm pair") Signed-off-by: Ville Syrjälä Link: https://patchwork.freedesktop.org/patch/msgid/20230320095438.17328-3-ville.syrjala@linux.intel.com Reviewed-by: Imre Deak (cherry picked from commit 80a892a4c2428b65366721599fc5fe50eaed35fd) Signed-off-by: Jani Nikula Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/i915/display/intel_color.c | 23 ++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_color.c b/drivers/gpu/drm/i915/display/intel_color.c index 6bda4274eae9..c85757f55112 100644 --- a/drivers/gpu/drm/i915/display/intel_color.c +++ b/drivers/gpu/drm/i915/display/intel_color.c @@ -499,6 +499,22 @@ static void icl_color_commit_noarm(const struct intel_crtc_state *crtc_state) icl_load_csc_matrix(crtc_state); } +static void skl_color_commit_noarm(const struct intel_crtc_state *crtc_state) +{ + /* + * Possibly related to display WA #1184, SKL CSC loses the latched + * CSC coeff/offset register values if the CSC registers are disarmed + * between DC5 exit and PSR exit. This will cause the plane(s) to + * output all black (until CSC_MODE is rearmed and properly latched). + * Once PSR exit (and proper register latching) has occurred the + * danger is over. Thus when PSR is enabled the CSC coeff/offset + * register programming will be peformed from skl_color_commit_arm() + * which is called after PSR exit. + */ + if (!crtc_state->has_psr) + ilk_load_csc_matrix(crtc_state); +} + static void ilk_color_commit_noarm(const struct intel_crtc_state *crtc_state) { ilk_load_csc_matrix(crtc_state); @@ -541,6 +557,9 @@ static void skl_color_commit_arm(const struct intel_crtc_state *crtc_state) enum pipe pipe = crtc->pipe; u32 val = 0; + if (crtc_state->has_psr) + ilk_load_csc_matrix(crtc_state); + /* * We don't (yet) allow userspace to control the pipe background color, * so force it to black, but apply pipe gamma and CSC appropriately @@ -2171,7 +2190,7 @@ static const struct intel_color_funcs icl_color_funcs = { static const struct intel_color_funcs glk_color_funcs = { .color_check = glk_color_check, - .color_commit_noarm = ilk_color_commit_noarm, + .color_commit_noarm = skl_color_commit_noarm, .color_commit_arm = skl_color_commit_arm, .load_luts = glk_load_luts, .read_luts = glk_read_luts, @@ -2179,7 +2198,7 @@ static const struct intel_color_funcs glk_color_funcs = { static const struct intel_color_funcs skl_color_funcs = { .color_check = ivb_color_check, - .color_commit_noarm = ilk_color_commit_noarm, + .color_commit_noarm = skl_color_commit_noarm, .color_commit_arm = skl_color_commit_arm, .load_luts = bdw_load_luts, .read_luts = NULL, From 051e660c8185e4c4bee6fb30d796cfe4ae2c345f Mon Sep 17 00:00:00 2001 From: Reiji Watanabe Date: Sun, 12 Mar 2023 20:32:08 -0700 Subject: [PATCH 175/269] KVM: arm64: PMU: Fix GET_ONE_REG for vPMC regs to return the current value commit 9228b26194d1cc00449f12f306f53ef2e234a55b upstream. Have KVM_GET_ONE_REG for vPMU counter (vPMC) registers (PMCCNTR_EL0 and PMEVCNTR_EL0) return the sum of the register value in the sysreg file and the current perf event counter value. Values of vPMC registers are saved in sysreg files on certain occasions. These saved values don't represent the current values of the vPMC registers if the perf events for the vPMCs count events after the save. The current values of those registers are the sum of the sysreg file value and the current perf event counter value. But, when userspace reads those registers (using KVM_GET_ONE_REG), KVM returns the sysreg file value to userspace (not the sum value). Fix this to return the sum value for KVM_GET_ONE_REG. Fixes: 051ff581ce70 ("arm64: KVM: Add access handler for event counter register") Cc: stable@vger.kernel.org Reviewed-by: Marc Zyngier Signed-off-by: Reiji Watanabe Link: https://lore.kernel.org/r/20230313033208.1475499-1-reijiw@google.com Signed-off-by: Oliver Upton Signed-off-by: Greg Kroah-Hartman --- arch/arm64/kvm/sys_regs.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c index f4a7c5abcbca..bfe4f17232b3 100644 --- a/arch/arm64/kvm/sys_regs.c +++ b/arch/arm64/kvm/sys_regs.c @@ -767,6 +767,22 @@ static bool pmu_counter_idx_valid(struct kvm_vcpu *vcpu, u64 idx) return true; } +static int get_pmu_evcntr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r, + u64 *val) +{ + u64 idx; + + if (r->CRn == 9 && r->CRm == 13 && r->Op2 == 0) + /* PMCCNTR_EL0 */ + idx = ARMV8_PMU_CYCLE_IDX; + else + /* PMEVCNTRn_EL0 */ + idx = ((r->CRm & 3) << 3) | (r->Op2 & 7); + + *val = kvm_pmu_get_counter_value(vcpu, idx); + return 0; +} + static bool access_pmu_evcntr(struct kvm_vcpu *vcpu, struct sys_reg_params *p, const struct sys_reg_desc *r) @@ -983,7 +999,7 @@ static bool access_pmuserenr(struct kvm_vcpu *vcpu, struct sys_reg_params *p, /* Macro to expand the PMEVCNTRn_EL0 register */ #define PMU_PMEVCNTR_EL0(n) \ { PMU_SYS_REG(SYS_PMEVCNTRn_EL0(n)), \ - .reset = reset_pmevcntr, \ + .reset = reset_pmevcntr, .get_user = get_pmu_evcntr, \ .access = access_pmu_evcntr, .reg = (PMEVCNTR0_EL0 + n), } /* Macro to expand the PMEVTYPERn_EL0 register */ @@ -1632,7 +1648,8 @@ static const struct sys_reg_desc sys_reg_descs[] = { { PMU_SYS_REG(SYS_PMCEID1_EL0), .access = access_pmceid, .reset = NULL }, { PMU_SYS_REG(SYS_PMCCNTR_EL0), - .access = access_pmu_evcntr, .reset = reset_unknown, .reg = PMCCNTR_EL0 }, + .access = access_pmu_evcntr, .reset = reset_unknown, + .reg = PMCCNTR_EL0, .get_user = get_pmu_evcntr}, { PMU_SYS_REG(SYS_PMXEVTYPER_EL0), .access = access_pmu_evtyper, .reset = NULL }, { PMU_SYS_REG(SYS_PMXEVCNTR_EL0), From e4ca4572de06013c6aeedb44c7fadbeec63fa4e7 Mon Sep 17 00:00:00 2001 From: Marc Zyngier Date: Thu, 16 Mar 2023 17:45:45 +0000 Subject: [PATCH 176/269] KVM: arm64: Disable interrupts while walking userspace PTs commit e86fc1a3a3e9b4850fe74d738e3cfcf4297d8bba upstream. We walk the userspace PTs to discover what mapping size was used there. However, this can race against the userspace tables being freed, and we end-up in the weeds. Thankfully, the mm code is being generous and will IPI us when doing so. So let's implement our part of the bargain and disable interrupts around the walk. This ensures that nothing terrible happens during that time. We still need to handle the removal of the page tables before the walk. For that, allow get_user_mapping_size() to return an error, and make sure this error can be propagated all the way to the the exit handler. Signed-off-by: Marc Zyngier Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20230316174546.3777507-2-maz@kernel.org Signed-off-by: Oliver Upton Signed-off-by: Greg Kroah-Hartman --- arch/arm64/kvm/mmu.c | 45 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c index 2c3759f1f2c5..019472dd98ff 100644 --- a/arch/arm64/kvm/mmu.c +++ b/arch/arm64/kvm/mmu.c @@ -646,14 +646,33 @@ static int get_user_mapping_size(struct kvm *kvm, u64 addr) CONFIG_PGTABLE_LEVELS), .mm_ops = &kvm_user_mm_ops, }; + unsigned long flags; kvm_pte_t pte = 0; /* Keep GCC quiet... */ u32 level = ~0; int ret; + /* + * Disable IRQs so that we hazard against a concurrent + * teardown of the userspace page tables (which relies on + * IPI-ing threads). + */ + local_irq_save(flags); ret = kvm_pgtable_get_leaf(&pgt, addr, &pte, &level); - VM_BUG_ON(ret); - VM_BUG_ON(level >= KVM_PGTABLE_MAX_LEVELS); - VM_BUG_ON(!(pte & PTE_VALID)); + local_irq_restore(flags); + + if (ret) + return ret; + + /* + * Not seeing an error, but not updating level? Something went + * deeply wrong... + */ + if (WARN_ON(level >= KVM_PGTABLE_MAX_LEVELS)) + return -EFAULT; + + /* Oops, the userspace PTs are gone... Replay the fault */ + if (!kvm_pte_valid(pte)) + return -EAGAIN; return BIT(ARM64_HW_PGTABLE_LEVEL_SHIFT(level)); } @@ -1006,7 +1025,7 @@ static bool fault_supports_stage2_huge_mapping(struct kvm_memory_slot *memslot, * * Returns the size of the mapping. */ -static unsigned long +static long transparent_hugepage_adjust(struct kvm *kvm, struct kvm_memory_slot *memslot, unsigned long hva, kvm_pfn_t *pfnp, phys_addr_t *ipap) @@ -1018,8 +1037,15 @@ transparent_hugepage_adjust(struct kvm *kvm, struct kvm_memory_slot *memslot, * sure that the HVA and IPA are sufficiently aligned and that the * block map is contained within the memslot. */ - if (fault_supports_stage2_huge_mapping(memslot, hva, PMD_SIZE) && - get_user_mapping_size(kvm, hva) >= PMD_SIZE) { + if (fault_supports_stage2_huge_mapping(memslot, hva, PMD_SIZE)) { + int sz = get_user_mapping_size(kvm, hva); + + if (sz < 0) + return sz; + + if (sz < PMD_SIZE) + return PAGE_SIZE; + /* * The address we faulted on is backed by a transparent huge * page. However, because we map the compound huge page and @@ -1138,7 +1164,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, bool logging_active = memslot_is_logging(memslot); bool use_read_lock = false; unsigned long fault_level = kvm_vcpu_trap_get_fault_level(vcpu); - unsigned long vma_pagesize, fault_granule; + long vma_pagesize, fault_granule; enum kvm_pgtable_prot prot = KVM_PGTABLE_PROT_R; struct kvm_pgtable *pgt; @@ -1295,6 +1321,11 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, vma_pagesize = transparent_hugepage_adjust(kvm, memslot, hva, &pfn, &fault_ipa); + + if (vma_pagesize < 0) { + ret = vma_pagesize; + goto out_unlock; + } } if (fault_status != FSC_PERM && !device && kvm_has_mte(kvm)) { From 8f872c781f6476665c0b09260a429ab03139339e Mon Sep 17 00:00:00 2001 From: "Hans J. Schultz" Date: Fri, 9 Dec 2022 19:28:15 +0200 Subject: [PATCH 177/269] net: dsa: mv88e6xxx: read FID when handling ATU violations commit 4bf24ad09bc0b05e97fb48b962b2c9246fc76727 upstream. When an ATU violation occurs, the switch uses the ATU FID register to report the FID of the MAC address that incurred the violation. It would be good for the driver to know the FID value for purposes such as logging and CPU-based authentication. Up until now, the driver has been calling the mv88e6xxx_g1_atu_op() function to read ATU violations, but that doesn't do exactly what we want, namely it calls mv88e6xxx_g1_atu_fid_write() with FID 0. (side note, the documentation for the ATU Get/Clear Violation command says that writes to the ATU FID register have no effect before the operation starts, it's only that we disregard the value that this register provides once the operation completes) So mv88e6xxx_g1_atu_fid_write() is not what we want, but rather mv88e6xxx_g1_atu_fid_read(). However, the latter doesn't exist, we need to write it. The remainder of mv88e6xxx_g1_atu_op() except for mv88e6xxx_g1_atu_fid_write() is still needed, namely to send a GET_CLR_VIOLATION command to the ATU. In principle we could have still kept calling mv88e6xxx_g1_atu_op(), but the MDIO writes to the ATU FID register are pointless, but in the interest of doing less CPU work per interrupt, write a new function called mv88e6xxx_g1_read_atu_violation() and call it. The FID will be the port default FID as set by mv88e6xxx_port_set_fid() if the VID from the packet cannot be found in the VTU. Otherwise it is the FID derived from the VTU entry associated with that VID. Signed-off-by: Hans J. Schultz Signed-off-by: Vladimir Oltean Reviewed-by: Florian Fainelli Signed-off-by: Jakub Kicinski Cc: Fabio Estevam Signed-off-by: Greg Kroah-Hartman --- drivers/net/dsa/mv88e6xxx/global1_atu.c | 72 +++++++++++++++++++++---- 1 file changed, 61 insertions(+), 11 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/global1_atu.c b/drivers/net/dsa/mv88e6xxx/global1_atu.c index 40bd67a5c8e9..4f689396fc40 100644 --- a/drivers/net/dsa/mv88e6xxx/global1_atu.c +++ b/drivers/net/dsa/mv88e6xxx/global1_atu.c @@ -114,6 +114,19 @@ static int mv88e6xxx_g1_atu_op_wait(struct mv88e6xxx_chip *chip) return mv88e6xxx_g1_wait_bit(chip, MV88E6XXX_G1_ATU_OP, bit, 0); } +static int mv88e6xxx_g1_read_atu_violation(struct mv88e6xxx_chip *chip) +{ + int err; + + err = mv88e6xxx_g1_write(chip, MV88E6XXX_G1_ATU_OP, + MV88E6XXX_G1_ATU_OP_BUSY | + MV88E6XXX_G1_ATU_OP_GET_CLR_VIOLATION); + if (err) + return err; + + return mv88e6xxx_g1_atu_op_wait(chip); +} + static int mv88e6xxx_g1_atu_op(struct mv88e6xxx_chip *chip, u16 fid, u16 op) { u16 val; @@ -159,6 +172,41 @@ int mv88e6xxx_g1_atu_get_next(struct mv88e6xxx_chip *chip, u16 fid) return mv88e6xxx_g1_atu_op(chip, fid, MV88E6XXX_G1_ATU_OP_GET_NEXT_DB); } +static int mv88e6xxx_g1_atu_fid_read(struct mv88e6xxx_chip *chip, u16 *fid) +{ + u16 val = 0, upper = 0, op = 0; + int err = -EOPNOTSUPP; + + if (mv88e6xxx_num_databases(chip) > 256) { + err = mv88e6xxx_g1_read(chip, MV88E6352_G1_ATU_FID, &val); + val &= 0xfff; + if (err) + return err; + } else { + err = mv88e6xxx_g1_read(chip, MV88E6XXX_G1_ATU_OP, &op); + if (err) + return err; + if (mv88e6xxx_num_databases(chip) > 64) { + /* ATU DBNum[7:4] are located in ATU Control 15:12 */ + err = mv88e6xxx_g1_read(chip, MV88E6XXX_G1_ATU_CTL, + &upper); + if (err) + return err; + + upper = (upper >> 8) & 0x00f0; + } else if (mv88e6xxx_num_databases(chip) > 16) { + /* ATU DBNum[5:4] are located in ATU Operation 9:8 */ + upper = (op >> 4) & 0x30; + } + + /* ATU DBNum[3:0] are located in ATU Operation 3:0 */ + val = (op & 0xf) | upper; + } + *fid = val; + + return err; +} + /* Offset 0x0C: ATU Data Register */ static int mv88e6xxx_g1_atu_data_read(struct mv88e6xxx_chip *chip, @@ -353,14 +401,12 @@ static irqreturn_t mv88e6xxx_g1_atu_prob_irq_thread_fn(int irq, void *dev_id) { struct mv88e6xxx_chip *chip = dev_id; struct mv88e6xxx_atu_entry entry; - int spid; - int err; - u16 val; + int err, spid; + u16 val, fid; mv88e6xxx_reg_lock(chip); - err = mv88e6xxx_g1_atu_op(chip, 0, - MV88E6XXX_G1_ATU_OP_GET_CLR_VIOLATION); + err = mv88e6xxx_g1_read_atu_violation(chip); if (err) goto out; @@ -368,6 +414,10 @@ static irqreturn_t mv88e6xxx_g1_atu_prob_irq_thread_fn(int irq, void *dev_id) if (err) goto out; + err = mv88e6xxx_g1_atu_fid_read(chip, &fid); + if (err) + goto out; + err = mv88e6xxx_g1_atu_data_read(chip, &entry); if (err) goto out; @@ -386,22 +436,22 @@ static irqreturn_t mv88e6xxx_g1_atu_prob_irq_thread_fn(int irq, void *dev_id) if (val & MV88E6XXX_G1_ATU_OP_MEMBER_VIOLATION) { dev_err_ratelimited(chip->dev, - "ATU member violation for %pM portvec %x spid %d\n", - entry.mac, entry.portvec, spid); + "ATU member violation for %pM fid %u portvec %x spid %d\n", + entry.mac, fid, entry.portvec, spid); chip->ports[spid].atu_member_violation++; } if (val & MV88E6XXX_G1_ATU_OP_MISS_VIOLATION) { dev_err_ratelimited(chip->dev, - "ATU miss violation for %pM portvec %x spid %d\n", - entry.mac, entry.portvec, spid); + "ATU miss violation for %pM fid %u portvec %x spid %d\n", + entry.mac, fid, entry.portvec, spid); chip->ports[spid].atu_miss_violation++; } if (val & MV88E6XXX_G1_ATU_OP_FULL_VIOLATION) { dev_err_ratelimited(chip->dev, - "ATU full violation for %pM portvec %x spid %d\n", - entry.mac, entry.portvec, spid); + "ATU full violation for %pM fid %u portvec %x spid %d\n", + entry.mac, fid, entry.portvec, spid); chip->ports[spid].atu_full_violation++; } mv88e6xxx_reg_unlock(chip); From be831b5c696334e8ee6cfce2cf9b92923f07aae9 Mon Sep 17 00:00:00 2001 From: Vladimir Oltean Date: Fri, 9 Dec 2022 19:28:16 +0200 Subject: [PATCH 178/269] net: dsa: mv88e6xxx: replace ATU violation prints with trace points commit 8646384d80f3d3b4a66b3284dbbd8232d1b8799e upstream. In applications where the switch ports must perform 802.1X based authentication and are therefore locked, ATU violation interrupts are quite to be expected as part of normal operation. The problem is that they currently spam the kernel log, even if rate limited. Create a series of trace points, all derived from the same event class, which log these violations to the kernel's trace buffer, which is both much faster and much easier to ignore than printing to a serial console. New usage model: $ trace-cmd list | grep mv88e6xxx mv88e6xxx mv88e6xxx:mv88e6xxx_atu_full_violation mv88e6xxx:mv88e6xxx_atu_miss_violation mv88e6xxx:mv88e6xxx_atu_member_violation $ trace-cmd record -e mv88e6xxx sleep 10 Signed-off-by: Vladimir Oltean Reviewed-by: Saeed Mahameed Reviewed-by: Florian Fainelli Signed-off-by: Jakub Kicinski Cc: Fabio Estevam Signed-off-by: Greg Kroah-Hartman --- drivers/net/dsa/mv88e6xxx/Makefile | 4 ++ drivers/net/dsa/mv88e6xxx/global1_atu.c | 19 +++---- drivers/net/dsa/mv88e6xxx/trace.c | 6 +++ drivers/net/dsa/mv88e6xxx/trace.h | 66 +++++++++++++++++++++++++ 4 files changed, 86 insertions(+), 9 deletions(-) create mode 100644 drivers/net/dsa/mv88e6xxx/trace.c create mode 100644 drivers/net/dsa/mv88e6xxx/trace.h diff --git a/drivers/net/dsa/mv88e6xxx/Makefile b/drivers/net/dsa/mv88e6xxx/Makefile index c8eca2b6f959..49bf358b9c4f 100644 --- a/drivers/net/dsa/mv88e6xxx/Makefile +++ b/drivers/net/dsa/mv88e6xxx/Makefile @@ -15,3 +15,7 @@ mv88e6xxx-objs += port_hidden.o mv88e6xxx-$(CONFIG_NET_DSA_MV88E6XXX_PTP) += ptp.o mv88e6xxx-objs += serdes.o mv88e6xxx-objs += smi.o +mv88e6xxx-objs += trace.o + +# for tracing framework to find trace.h +CFLAGS_trace.o := -I$(src) diff --git a/drivers/net/dsa/mv88e6xxx/global1_atu.c b/drivers/net/dsa/mv88e6xxx/global1_atu.c index 4f689396fc40..7c513a03789c 100644 --- a/drivers/net/dsa/mv88e6xxx/global1_atu.c +++ b/drivers/net/dsa/mv88e6xxx/global1_atu.c @@ -12,6 +12,7 @@ #include "chip.h" #include "global1.h" +#include "trace.h" /* Offset 0x01: ATU FID Register */ @@ -435,23 +436,23 @@ static irqreturn_t mv88e6xxx_g1_atu_prob_irq_thread_fn(int irq, void *dev_id) } if (val & MV88E6XXX_G1_ATU_OP_MEMBER_VIOLATION) { - dev_err_ratelimited(chip->dev, - "ATU member violation for %pM fid %u portvec %x spid %d\n", - entry.mac, fid, entry.portvec, spid); + trace_mv88e6xxx_atu_member_violation(chip->dev, spid, + entry.portvec, entry.mac, + fid); chip->ports[spid].atu_member_violation++; } if (val & MV88E6XXX_G1_ATU_OP_MISS_VIOLATION) { - dev_err_ratelimited(chip->dev, - "ATU miss violation for %pM fid %u portvec %x spid %d\n", - entry.mac, fid, entry.portvec, spid); + trace_mv88e6xxx_atu_miss_violation(chip->dev, spid, + entry.portvec, entry.mac, + fid); chip->ports[spid].atu_miss_violation++; } if (val & MV88E6XXX_G1_ATU_OP_FULL_VIOLATION) { - dev_err_ratelimited(chip->dev, - "ATU full violation for %pM fid %u portvec %x spid %d\n", - entry.mac, fid, entry.portvec, spid); + trace_mv88e6xxx_atu_full_violation(chip->dev, spid, + entry.portvec, entry.mac, + fid); chip->ports[spid].atu_full_violation++; } mv88e6xxx_reg_unlock(chip); diff --git a/drivers/net/dsa/mv88e6xxx/trace.c b/drivers/net/dsa/mv88e6xxx/trace.c new file mode 100644 index 000000000000..7833cb50ca5d --- /dev/null +++ b/drivers/net/dsa/mv88e6xxx/trace.c @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* Copyright 2022 NXP + */ + +#define CREATE_TRACE_POINTS +#include "trace.h" diff --git a/drivers/net/dsa/mv88e6xxx/trace.h b/drivers/net/dsa/mv88e6xxx/trace.h new file mode 100644 index 000000000000..d9ab5c8dee55 --- /dev/null +++ b/drivers/net/dsa/mv88e6xxx/trace.h @@ -0,0 +1,66 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* Copyright 2022 NXP + */ + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM mv88e6xxx + +#if !defined(_MV88E6XXX_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) +#define _MV88E6XXX_TRACE_H + +#include +#include +#include + +DECLARE_EVENT_CLASS(mv88e6xxx_atu_violation, + + TP_PROTO(const struct device *dev, int spid, u16 portvec, + const unsigned char *addr, u16 fid), + + TP_ARGS(dev, spid, portvec, addr, fid), + + TP_STRUCT__entry( + __string(name, dev_name(dev)) + __field(int, spid) + __field(u16, portvec) + __array(unsigned char, addr, ETH_ALEN) + __field(u16, fid) + ), + + TP_fast_assign( + __assign_str(name, dev_name(dev)); + __entry->spid = spid; + __entry->portvec = portvec; + memcpy(__entry->addr, addr, ETH_ALEN); + __entry->fid = fid; + ), + + TP_printk("dev %s spid %d portvec 0x%x addr %pM fid %u", + __get_str(name), __entry->spid, __entry->portvec, + __entry->addr, __entry->fid) +); + +DEFINE_EVENT(mv88e6xxx_atu_violation, mv88e6xxx_atu_member_violation, + TP_PROTO(const struct device *dev, int spid, u16 portvec, + const unsigned char *addr, u16 fid), + TP_ARGS(dev, spid, portvec, addr, fid)); + +DEFINE_EVENT(mv88e6xxx_atu_violation, mv88e6xxx_atu_miss_violation, + TP_PROTO(const struct device *dev, int spid, u16 portvec, + const unsigned char *addr, u16 fid), + TP_ARGS(dev, spid, portvec, addr, fid)); + +DEFINE_EVENT(mv88e6xxx_atu_violation, mv88e6xxx_atu_full_violation, + TP_PROTO(const struct device *dev, int spid, u16 portvec, + const unsigned char *addr, u16 fid), + TP_ARGS(dev, spid, portvec, addr, fid)); + +#endif /* _MV88E6XXX_TRACE_H */ + +/* We don't want to use include/trace/events */ +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH . +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_FILE trace +/* This part must be outside protection */ +#include From 0f9e728e1a6c83dfebb367f9dec6fc6ef1dc6cbb Mon Sep 17 00:00:00 2001 From: Vladimir Oltean Date: Fri, 9 Dec 2022 19:28:17 +0200 Subject: [PATCH 179/269] net: dsa: mv88e6xxx: replace VTU violation prints with trace points commit 9e3d9ae52b5657399a7b61258cc7482434a911bb upstream. It is possible to trigger these VTU violation messages very easily, it's only necessary to send packets with an unknown VLAN ID to a port that belongs to a VLAN-aware bridge. Do a similar thing as for ATU violation messages, and hide them in the kernel's trace buffer. New usage model: $ trace-cmd list | grep mv88e6xxx mv88e6xxx mv88e6xxx:mv88e6xxx_vtu_miss_violation mv88e6xxx:mv88e6xxx_vtu_member_violation $ trace-cmd report Signed-off-by: Vladimir Oltean Reviewed-by: Saeed Mahameed Reviewed-by: Florian Fainelli Signed-off-by: Jakub Kicinski Cc: Fabio Estevam Signed-off-by: Greg Kroah-Hartman --- drivers/net/dsa/mv88e6xxx/global1_vtu.c | 7 +++--- drivers/net/dsa/mv88e6xxx/trace.h | 30 +++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/global1_vtu.c b/drivers/net/dsa/mv88e6xxx/global1_vtu.c index 38e18f5811bf..bcfb4a812055 100644 --- a/drivers/net/dsa/mv88e6xxx/global1_vtu.c +++ b/drivers/net/dsa/mv88e6xxx/global1_vtu.c @@ -13,6 +13,7 @@ #include "chip.h" #include "global1.h" +#include "trace.h" /* Offset 0x02: VTU FID Register */ @@ -628,14 +629,12 @@ static irqreturn_t mv88e6xxx_g1_vtu_prob_irq_thread_fn(int irq, void *dev_id) spid = val & MV88E6XXX_G1_VTU_OP_SPID_MASK; if (val & MV88E6XXX_G1_VTU_OP_MEMBER_VIOLATION) { - dev_err_ratelimited(chip->dev, "VTU member violation for vid %d, source port %d\n", - vid, spid); + trace_mv88e6xxx_vtu_member_violation(chip->dev, spid, vid); chip->ports[spid].vtu_member_violation++; } if (val & MV88E6XXX_G1_VTU_OP_MISS_VIOLATION) { - dev_dbg_ratelimited(chip->dev, "VTU miss violation for vid %d, source port %d\n", - vid, spid); + trace_mv88e6xxx_vtu_miss_violation(chip->dev, spid, vid); chip->ports[spid].vtu_miss_violation++; } diff --git a/drivers/net/dsa/mv88e6xxx/trace.h b/drivers/net/dsa/mv88e6xxx/trace.h index d9ab5c8dee55..f59ca04768e7 100644 --- a/drivers/net/dsa/mv88e6xxx/trace.h +++ b/drivers/net/dsa/mv88e6xxx/trace.h @@ -55,6 +55,36 @@ DEFINE_EVENT(mv88e6xxx_atu_violation, mv88e6xxx_atu_full_violation, const unsigned char *addr, u16 fid), TP_ARGS(dev, spid, portvec, addr, fid)); +DECLARE_EVENT_CLASS(mv88e6xxx_vtu_violation, + + TP_PROTO(const struct device *dev, int spid, u16 vid), + + TP_ARGS(dev, spid, vid), + + TP_STRUCT__entry( + __string(name, dev_name(dev)) + __field(int, spid) + __field(u16, vid) + ), + + TP_fast_assign( + __assign_str(name, dev_name(dev)); + __entry->spid = spid; + __entry->vid = vid; + ), + + TP_printk("dev %s spid %d vid %u", + __get_str(name), __entry->spid, __entry->vid) +); + +DEFINE_EVENT(mv88e6xxx_vtu_violation, mv88e6xxx_vtu_member_violation, + TP_PROTO(const struct device *dev, int spid, u16 vid), + TP_ARGS(dev, spid, vid)); + +DEFINE_EVENT(mv88e6xxx_vtu_violation, mv88e6xxx_vtu_miss_violation, + TP_PROTO(const struct device *dev, int spid, u16 vid), + TP_ARGS(dev, spid, vid)); + #endif /* _MV88E6XXX_TRACE_H */ /* We don't want to use include/trace/events */ From 2e35b08b66b0b2558216b3764df729d9fe2012ed Mon Sep 17 00:00:00 2001 From: Eduard Zingerman Date: Sat, 1 Oct 2022 13:44:25 +0300 Subject: [PATCH 180/269] selftests/bpf: Test btf dump for struct with padding only fields [ Upstream commit d503f1176b14f722a40ea5110312614982f9a80b ] Structures with zero regular fields but some padding constitute a special case in btf_dump.c:btf_dump_emit_struct_def with regards to newline before closing '}'. Signed-off-by: Eduard Zingerman Signed-off-by: Andrii Nakryiko Link: https://lore.kernel.org/bpf/20221001104425.415768-2-eddyz87@gmail.com Stable-dep-of: ea2ce1ba99aa ("libbpf: Fix BTF-to-C converter's padding logic") Signed-off-by: Sasha Levin --- .../selftests/bpf/progs/btf_dump_test_case_padding.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/testing/selftests/bpf/progs/btf_dump_test_case_padding.c b/tools/testing/selftests/bpf/progs/btf_dump_test_case_padding.c index f2661c8d2d90..7cb522d22a66 100644 --- a/tools/testing/selftests/bpf/progs/btf_dump_test_case_padding.c +++ b/tools/testing/selftests/bpf/progs/btf_dump_test_case_padding.c @@ -102,12 +102,21 @@ struct zone { struct zone_padding __pad__; }; +/* ----- START-EXPECTED-OUTPUT ----- */ +struct padding_wo_named_members { + long: 64; + long: 64; +}; + +/* ------ END-EXPECTED-OUTPUT ------ */ + int f(struct { struct padded_implicitly _1; struct padded_explicitly _2; struct padded_a_lot _3; struct padded_cache_line _4; struct zone _5; + struct padding_wo_named_members _6; } *_) { return 0; From 524617e553bc33f881ec3d4d5233fa1bb1e119de Mon Sep 17 00:00:00 2001 From: Andrii Nakryiko Date: Mon, 12 Dec 2022 13:15:04 -0800 Subject: [PATCH 181/269] libbpf: Fix BTF-to-C converter's padding logic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ Upstream commit ea2ce1ba99aa6a60c8d8a706e3abadf3de372163 ] Turns out that btf_dump API doesn't handle a bunch of tricky corner cases, as reported by Per, and further discovered using his testing Python script ([0]). This patch revamps btf_dump's padding logic significantly, making it more correct and also avoiding unnecessary explicit padding, where compiler would pad naturally. This overall topic turned out to be very tricky and subtle, there are lots of subtle corner cases. The comments in the code tries to give some clues, but comments themselves are supposed to be paired with good understanding of C alignment and padding rules. Plus some experimentation to figure out subtle things like whether `long :0;` means that struct is now forced to be long-aligned (no, it's not, turns out). Anyways, Per's script, while not completely correct in some known situations, doesn't show any obvious cases where this logic breaks, so this is a nice improvement over the previous state of this logic. Some selftests had to be adjusted to accommodate better use of natural alignment rules, eliminating some unnecessary padding, or changing it to `type: 0;` alignment markers. Note also that for when we are in between bitfields, we emit explicit bit size, while otherwise we use `: 0`, this feels much more natural in practice. Next patch will add few more test cases, found through randomized Per's script. [0] https://lore.kernel.org/bpf/85f83c333f5355c8ac026f835b18d15060725fcb.camel@ericsson.com/ Reported-by: Per Sundström XP Signed-off-by: Andrii Nakryiko Signed-off-by: Daniel Borkmann Link: https://lore.kernel.org/bpf/20221212211505.558851-6-andrii@kernel.org Signed-off-by: Sasha Levin --- tools/lib/bpf/btf_dump.c | 167 +++++++++++++----- .../bpf/progs/btf_dump_test_case_bitfields.c | 2 +- .../bpf/progs/btf_dump_test_case_padding.c | 58 ++++-- 3 files changed, 163 insertions(+), 64 deletions(-) diff --git a/tools/lib/bpf/btf_dump.c b/tools/lib/bpf/btf_dump.c index 0b470169729e..09c78a797518 100644 --- a/tools/lib/bpf/btf_dump.c +++ b/tools/lib/bpf/btf_dump.c @@ -829,6 +829,25 @@ static void btf_dump_emit_type(struct btf_dump *d, __u32 id, __u32 cont_id) } } +static int btf_natural_align_of(const struct btf *btf, __u32 id) +{ + const struct btf_type *t = btf__type_by_id(btf, id); + int i, align, vlen; + const struct btf_member *m; + + if (!btf_is_composite(t)) + return btf__align_of(btf, id); + + align = 1; + m = btf_members(t); + vlen = btf_vlen(t); + for (i = 0; i < vlen; i++, m++) { + align = max(align, btf__align_of(btf, m->type)); + } + + return align; +} + static bool btf_is_struct_packed(const struct btf *btf, __u32 id, const struct btf_type *t) { @@ -836,16 +855,16 @@ static bool btf_is_struct_packed(const struct btf *btf, __u32 id, int align, i, bit_sz; __u16 vlen; - align = btf__align_of(btf, id); - /* size of a non-packed struct has to be a multiple of its alignment*/ - if (align && t->size % align) + align = btf_natural_align_of(btf, id); + /* size of a non-packed struct has to be a multiple of its alignment */ + if (align && (t->size % align) != 0) return true; m = btf_members(t); vlen = btf_vlen(t); /* all non-bitfield fields have to be naturally aligned */ for (i = 0; i < vlen; i++, m++) { - align = btf__align_of(btf, m->type); + align = btf_natural_align_of(btf, m->type); bit_sz = btf_member_bitfield_size(t, i); if (align && bit_sz == 0 && m->offset % (8 * align) != 0) return true; @@ -858,44 +877,97 @@ static bool btf_is_struct_packed(const struct btf *btf, __u32 id, return false; } -static int chip_away_bits(int total, int at_most) -{ - return total % at_most ? : at_most; -} - static void btf_dump_emit_bit_padding(const struct btf_dump *d, - int cur_off, int m_off, int m_bit_sz, - int align, int lvl) + int cur_off, int next_off, int next_align, + bool in_bitfield, int lvl) { - int off_diff = m_off - cur_off; - int ptr_bits = d->ptr_sz * 8; + const struct { + const char *name; + int bits; + } pads[] = { + {"long", d->ptr_sz * 8}, {"int", 32}, {"short", 16}, {"char", 8} + }; + int new_off, pad_bits, bits, i; + const char *pad_type; - if (off_diff <= 0) - /* no gap */ - return; - if (m_bit_sz == 0 && off_diff < align * 8) - /* natural padding will take care of a gap */ - return; + if (cur_off >= next_off) + return; /* no gap */ - while (off_diff > 0) { - const char *pad_type; - int pad_bits; + /* For filling out padding we want to take advantage of + * natural alignment rules to minimize unnecessary explicit + * padding. First, we find the largest type (among long, int, + * short, or char) that can be used to force naturally aligned + * boundary. Once determined, we'll use such type to fill in + * the remaining padding gap. In some cases we can rely on + * compiler filling some gaps, but sometimes we need to force + * alignment to close natural alignment with markers like + * `long: 0` (this is always the case for bitfields). Note + * that even if struct itself has, let's say 4-byte alignment + * (i.e., it only uses up to int-aligned types), using `long: + * X;` explicit padding doesn't actually change struct's + * overall alignment requirements, but compiler does take into + * account that type's (long, in this example) natural + * alignment requirements when adding implicit padding. We use + * this fact heavily and don't worry about ruining correct + * struct alignment requirement. + */ + for (i = 0; i < ARRAY_SIZE(pads); i++) { + pad_bits = pads[i].bits; + pad_type = pads[i].name; - if (ptr_bits > 32 && off_diff > 32) { - pad_type = "long"; - pad_bits = chip_away_bits(off_diff, ptr_bits); - } else if (off_diff > 16) { - pad_type = "int"; - pad_bits = chip_away_bits(off_diff, 32); - } else if (off_diff > 8) { - pad_type = "short"; - pad_bits = chip_away_bits(off_diff, 16); - } else { - pad_type = "char"; - pad_bits = chip_away_bits(off_diff, 8); + new_off = roundup(cur_off, pad_bits); + if (new_off <= next_off) + break; + } + + if (new_off > cur_off && new_off <= next_off) { + /* We need explicit `: 0` aligning mark if next + * field is right on alignment offset and its + * alignment requirement is less strict than 's + * alignment (so compiler won't naturally align to the + * offset we expect), or if subsequent `: X`, + * will actually completely fit in the remaining hole, + * making compiler basically ignore `: X` + * completely. + */ + if (in_bitfield || + (new_off == next_off && roundup(cur_off, next_align * 8) != new_off) || + (new_off != next_off && next_off - new_off <= new_off - cur_off)) + /* but for bitfields we'll emit explicit bit count */ + btf_dump_printf(d, "\n%s%s: %d;", pfx(lvl), pad_type, + in_bitfield ? new_off - cur_off : 0); + cur_off = new_off; + } + + /* Now we know we start at naturally aligned offset for a chosen + * padding type (long, int, short, or char), and so the rest is just + * a straightforward filling of remaining padding gap with full + * `: sizeof();` markers, except for the last one, which + * might need smaller than sizeof() padding. + */ + while (cur_off != next_off) { + bits = min(next_off - cur_off, pad_bits); + if (bits == pad_bits) { + btf_dump_printf(d, "\n%s%s: %d;", pfx(lvl), pad_type, pad_bits); + cur_off += bits; + continue; + } + /* For the remainder padding that doesn't cover entire + * pad_type bit length, we pick the smallest necessary type. + * This is pure aesthetics, we could have just used `long`, + * but having smallest necessary one communicates better the + * scale of the padding gap. + */ + for (i = ARRAY_SIZE(pads) - 1; i >= 0; i--) { + pad_type = pads[i].name; + pad_bits = pads[i].bits; + if (pad_bits < bits) + continue; + + btf_dump_printf(d, "\n%s%s: %d;", pfx(lvl), pad_type, bits); + cur_off += bits; + break; } - btf_dump_printf(d, "\n%s%s: %d;", pfx(lvl), pad_type, pad_bits); - off_diff -= pad_bits; } } @@ -915,9 +987,11 @@ static void btf_dump_emit_struct_def(struct btf_dump *d, { const struct btf_member *m = btf_members(t); bool is_struct = btf_is_struct(t); - int align, i, packed, off = 0; + bool packed, prev_bitfield = false; + int align, i, off = 0; __u16 vlen = btf_vlen(t); + align = btf__align_of(d->btf, id); packed = is_struct ? btf_is_struct_packed(d->btf, id, t) : 0; btf_dump_printf(d, "%s%s%s {", @@ -927,33 +1001,36 @@ static void btf_dump_emit_struct_def(struct btf_dump *d, for (i = 0; i < vlen; i++, m++) { const char *fname; - int m_off, m_sz; + int m_off, m_sz, m_align; + bool in_bitfield; fname = btf_name_of(d, m->name_off); m_sz = btf_member_bitfield_size(t, i); m_off = btf_member_bit_offset(t, i); - align = packed ? 1 : btf__align_of(d->btf, m->type); + m_align = packed ? 1 : btf__align_of(d->btf, m->type); - btf_dump_emit_bit_padding(d, off, m_off, m_sz, align, lvl + 1); + in_bitfield = prev_bitfield && m_sz != 0; + + btf_dump_emit_bit_padding(d, off, m_off, m_align, in_bitfield, lvl + 1); btf_dump_printf(d, "\n%s", pfx(lvl + 1)); btf_dump_emit_type_decl(d, m->type, fname, lvl + 1); if (m_sz) { btf_dump_printf(d, ": %d", m_sz); off = m_off + m_sz; + prev_bitfield = true; } else { m_sz = max((__s64)0, btf__resolve_size(d->btf, m->type)); off = m_off + m_sz * 8; + prev_bitfield = false; } + btf_dump_printf(d, ";"); } /* pad at the end, if necessary */ - if (is_struct) { - align = packed ? 1 : btf__align_of(d->btf, id); - btf_dump_emit_bit_padding(d, off, t->size * 8, 0, align, - lvl + 1); - } + if (is_struct) + btf_dump_emit_bit_padding(d, off, t->size * 8, align, false, lvl + 1); if (vlen) btf_dump_printf(d, "\n"); diff --git a/tools/testing/selftests/bpf/progs/btf_dump_test_case_bitfields.c b/tools/testing/selftests/bpf/progs/btf_dump_test_case_bitfields.c index e5560a656030..e01690618e1e 100644 --- a/tools/testing/selftests/bpf/progs/btf_dump_test_case_bitfields.c +++ b/tools/testing/selftests/bpf/progs/btf_dump_test_case_bitfields.c @@ -53,7 +53,7 @@ struct bitfields_only_mixed_types { */ /* ------ END-EXPECTED-OUTPUT ------ */ struct bitfield_mixed_with_others { - long: 4; /* char is enough as a backing field */ + char: 4; /* char is enough as a backing field */ int a: 4; /* 8-bit implicit padding */ short b; /* combined with previous bitfield */ diff --git a/tools/testing/selftests/bpf/progs/btf_dump_test_case_padding.c b/tools/testing/selftests/bpf/progs/btf_dump_test_case_padding.c index 7cb522d22a66..6f963d34c45b 100644 --- a/tools/testing/selftests/bpf/progs/btf_dump_test_case_padding.c +++ b/tools/testing/selftests/bpf/progs/btf_dump_test_case_padding.c @@ -19,7 +19,7 @@ struct padded_implicitly { /* *struct padded_explicitly { * int a; - * int: 32; + * long: 0; * int b; *}; * @@ -28,41 +28,28 @@ struct padded_implicitly { struct padded_explicitly { int a; - int: 1; /* algo will explicitly pad with full 32 bits here */ + int: 1; /* algo will emit aligning `long: 0;` here */ int b; }; /* ----- START-EXPECTED-OUTPUT ----- */ -/* - *struct padded_a_lot { - * int a; - * long: 32; - * long: 64; - * long: 64; - * int b; - *}; - * - */ -/* ------ END-EXPECTED-OUTPUT ------ */ - struct padded_a_lot { int a; - /* 32 bit of implicit padding here, which algo will make explicit */ long: 64; long: 64; int b; }; +/* ------ END-EXPECTED-OUTPUT ------ */ + /* ----- START-EXPECTED-OUTPUT ----- */ /* *struct padded_cache_line { * int a; - * long: 32; * long: 64; * long: 64; * long: 64; * int b; - * long: 32; * long: 64; * long: 64; * long: 64; @@ -85,7 +72,7 @@ struct padded_cache_line { *struct zone { * int a; * short b; - * short: 16; + * long: 0; * struct zone_padding __pad__; *}; * @@ -108,6 +95,39 @@ struct padding_wo_named_members { long: 64; }; +struct padding_weird_1 { + int a; + long: 64; + short: 16; + short b; +}; + +/* ------ END-EXPECTED-OUTPUT ------ */ + +/* ----- START-EXPECTED-OUTPUT ----- */ +/* + *struct padding_weird_2 { + * long: 56; + * char a; + * long: 56; + * char b; + * char: 8; + *}; + * + */ +/* ------ END-EXPECTED-OUTPUT ------ */ +struct padding_weird_2 { + int: 32; /* these paddings will be collapsed into `long: 56;` */ + short: 16; + char: 8; + char a; + int: 32; /* these paddings will be collapsed into `long: 56;` */ + short: 16; + char: 8; + char b; + char: 8; +}; + /* ------ END-EXPECTED-OUTPUT ------ */ int f(struct { @@ -117,6 +137,8 @@ int f(struct { struct padded_cache_line _4; struct zone _5; struct padding_wo_named_members _6; + struct padding_weird_1 _7; + struct padding_weird_2 _8; } *_) { return 0; From 6c8afd54f8e99508148099e17cfec21b9fbadb6a Mon Sep 17 00:00:00 2001 From: Andrii Nakryiko Date: Mon, 12 Dec 2022 13:15:05 -0800 Subject: [PATCH 182/269] selftests/bpf: Add few corner cases to test padding handling of btf_dump [ Upstream commit b148c8b9b926e257a59c8eb2cd6fa3adfd443254 ] Add few hand-crafted cases and few randomized cases found using script from [0] that tests btf_dump's padding logic. [0] https://lore.kernel.org/bpf/85f83c333f5355c8ac026f835b18d15060725fcb.camel@ericsson.com/ Signed-off-by: Andrii Nakryiko Signed-off-by: Daniel Borkmann Link: https://lore.kernel.org/bpf/20221212211505.558851-7-andrii@kernel.org Stable-dep-of: 4fb877aaa179 ("libbpf: Fix btf_dump's packed struct determination") Signed-off-by: Sasha Levin --- .../bpf/progs/btf_dump_test_case_packing.c | 61 +++++++++- .../bpf/progs/btf_dump_test_case_padding.c | 104 ++++++++++++++++++ 2 files changed, 164 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/bpf/progs/btf_dump_test_case_packing.c b/tools/testing/selftests/bpf/progs/btf_dump_test_case_packing.c index e304b6204bd9..5c6c62f7ed32 100644 --- a/tools/testing/selftests/bpf/progs/btf_dump_test_case_packing.c +++ b/tools/testing/selftests/bpf/progs/btf_dump_test_case_packing.c @@ -58,7 +58,64 @@ union jump_code_union { } __attribute__((packed)); }; -/*------ END-EXPECTED-OUTPUT ------ */ +/* ----- START-EXPECTED-OUTPUT ----- */ +/* + *struct nested_packed_but_aligned_struct { + * int x1; + * int x2; + *}; + * + *struct outer_implicitly_packed_struct { + * char y1; + * struct nested_packed_but_aligned_struct y2; + *} __attribute__((packed)); + * + */ +/* ------ END-EXPECTED-OUTPUT ------ */ + +struct nested_packed_but_aligned_struct { + int x1; + int x2; +} __attribute__((packed)); + +struct outer_implicitly_packed_struct { + char y1; + struct nested_packed_but_aligned_struct y2; +}; +/* ----- START-EXPECTED-OUTPUT ----- */ +/* + *struct usb_ss_ep_comp_descriptor { + * char: 8; + * char bDescriptorType; + * char bMaxBurst; + * short wBytesPerInterval; + *}; + * + *struct usb_host_endpoint { + * long: 64; + * char: 8; + * struct usb_ss_ep_comp_descriptor ss_ep_comp; + * long: 0; + *} __attribute__((packed)); + * + */ +/* ------ END-EXPECTED-OUTPUT ------ */ + +struct usb_ss_ep_comp_descriptor { + char: 8; + char bDescriptorType; + char bMaxBurst; + int: 0; + short wBytesPerInterval; +} __attribute__((packed)); + +struct usb_host_endpoint { + long: 64; + char: 8; + struct usb_ss_ep_comp_descriptor ss_ep_comp; + long: 0; +}; + int f(struct { struct packed_trailing_space _1; @@ -69,6 +126,8 @@ int f(struct { union union_is_never_packed _6; union union_does_not_need_packing _7; union jump_code_union _8; + struct outer_implicitly_packed_struct _9; + struct usb_host_endpoint _10; } *_) { return 0; diff --git a/tools/testing/selftests/bpf/progs/btf_dump_test_case_padding.c b/tools/testing/selftests/bpf/progs/btf_dump_test_case_padding.c index 6f963d34c45b..79276fbe454a 100644 --- a/tools/testing/selftests/bpf/progs/btf_dump_test_case_padding.c +++ b/tools/testing/selftests/bpf/progs/btf_dump_test_case_padding.c @@ -128,6 +128,98 @@ struct padding_weird_2 { char: 8; }; +/* ----- START-EXPECTED-OUTPUT ----- */ +struct exact_1byte { + char x; +}; + +struct padded_1byte { + char: 8; +}; + +struct exact_2bytes { + short x; +}; + +struct padded_2bytes { + short: 16; +}; + +struct exact_4bytes { + int x; +}; + +struct padded_4bytes { + int: 32; +}; + +struct exact_8bytes { + long x; +}; + +struct padded_8bytes { + long: 64; +}; + +struct ff_periodic_effect { + int: 32; + short magnitude; + long: 0; + short phase; + long: 0; + int: 32; + int custom_len; + short *custom_data; +}; + +struct ib_wc { + long: 64; + long: 64; + int: 32; + int byte_len; + void *qp; + union {} ex; + long: 64; + int slid; + int wc_flags; + long: 64; + char smac[6]; + long: 0; + char network_hdr_type; +}; + +struct acpi_object_method { + long: 64; + char: 8; + char type; + short reference_count; + char flags; + short: 0; + char: 8; + char sync_level; + long: 64; + void *node; + void *aml_start; + union {} dispatch; + long: 64; + int aml_length; +}; + +struct nested_unpacked { + int x; +}; + +struct nested_packed { + struct nested_unpacked a; + char c; +} __attribute__((packed)); + +struct outer_mixed_but_unpacked { + struct nested_packed b1; + short a1; + struct nested_packed b2; +}; + /* ------ END-EXPECTED-OUTPUT ------ */ int f(struct { @@ -139,6 +231,18 @@ int f(struct { struct padding_wo_named_members _6; struct padding_weird_1 _7; struct padding_weird_2 _8; + struct exact_1byte _100; + struct padded_1byte _101; + struct exact_2bytes _102; + struct padded_2bytes _103; + struct exact_4bytes _104; + struct padded_4bytes _105; + struct exact_8bytes _106; + struct padded_8bytes _107; + struct ff_periodic_effect _200; + struct ib_wc _201; + struct acpi_object_method _202; + struct outer_mixed_but_unpacked _203; } *_) { return 0; From e5c5cb47a9ebbcfda9ba10df94c5241072ab773b Mon Sep 17 00:00:00 2001 From: Andrii Nakryiko Date: Thu, 15 Dec 2022 10:36:05 -0800 Subject: [PATCH 183/269] libbpf: Fix btf_dump's packed struct determination [ Upstream commit 4fb877aaa179dcdb1676d55216482febaada457e ] Fix bug in btf_dump's logic of determining if a given struct type is packed or not. The notion of "natural alignment" is not needed and is even harmful in this case, so drop it altogether. The biggest difference in btf_is_struct_packed() compared to its original implementation is that we don't really use btf__align_of() to determine overall alignment of a struct type (because it could be 1 for both packed and non-packed struct, depending on specifci field definitions), and just use field's actual alignment to calculate whether any field is requiring packing or struct's size overall necessitates packing. Add two simple test cases that demonstrate the difference this change would make. Fixes: ea2ce1ba99aa ("libbpf: Fix BTF-to-C converter's padding logic") Reported-by: Eduard Zingerman Signed-off-by: Andrii Nakryiko Signed-off-by: Daniel Borkmann Acked-by: Eduard Zingerman Link: https://lore.kernel.org/bpf/20221215183605.4149488-1-andrii@kernel.org Signed-off-by: Sasha Levin --- tools/lib/bpf/btf_dump.c | 33 ++++--------------- .../bpf/progs/btf_dump_test_case_packing.c | 19 +++++++++++ 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/tools/lib/bpf/btf_dump.c b/tools/lib/bpf/btf_dump.c index 09c78a797518..56102711f395 100644 --- a/tools/lib/bpf/btf_dump.c +++ b/tools/lib/bpf/btf_dump.c @@ -829,47 +829,26 @@ static void btf_dump_emit_type(struct btf_dump *d, __u32 id, __u32 cont_id) } } -static int btf_natural_align_of(const struct btf *btf, __u32 id) -{ - const struct btf_type *t = btf__type_by_id(btf, id); - int i, align, vlen; - const struct btf_member *m; - - if (!btf_is_composite(t)) - return btf__align_of(btf, id); - - align = 1; - m = btf_members(t); - vlen = btf_vlen(t); - for (i = 0; i < vlen; i++, m++) { - align = max(align, btf__align_of(btf, m->type)); - } - - return align; -} - static bool btf_is_struct_packed(const struct btf *btf, __u32 id, const struct btf_type *t) { const struct btf_member *m; - int align, i, bit_sz; + int max_align = 1, align, i, bit_sz; __u16 vlen; - align = btf_natural_align_of(btf, id); - /* size of a non-packed struct has to be a multiple of its alignment */ - if (align && (t->size % align) != 0) - return true; - m = btf_members(t); vlen = btf_vlen(t); /* all non-bitfield fields have to be naturally aligned */ for (i = 0; i < vlen; i++, m++) { - align = btf_natural_align_of(btf, m->type); + align = btf__align_of(btf, m->type); bit_sz = btf_member_bitfield_size(t, i); if (align && bit_sz == 0 && m->offset % (8 * align) != 0) return true; + max_align = max(align, max_align); } - + /* size of a non-packed struct has to be a multiple of its alignment */ + if (t->size % max_align != 0) + return true; /* * if original struct was marked as packed, but its layout is * naturally aligned, we'll detect that it's not packed diff --git a/tools/testing/selftests/bpf/progs/btf_dump_test_case_packing.c b/tools/testing/selftests/bpf/progs/btf_dump_test_case_packing.c index 5c6c62f7ed32..7998f27df7dd 100644 --- a/tools/testing/selftests/bpf/progs/btf_dump_test_case_packing.c +++ b/tools/testing/selftests/bpf/progs/btf_dump_test_case_packing.c @@ -116,6 +116,23 @@ struct usb_host_endpoint { long: 0; }; +/* ----- START-EXPECTED-OUTPUT ----- */ +struct nested_packed_struct { + int a; + char b; +} __attribute__((packed)); + +struct outer_nonpacked_struct { + short a; + struct nested_packed_struct b; +}; + +struct outer_packed_struct { + short a; + struct nested_packed_struct b; +} __attribute__((packed)); + +/* ------ END-EXPECTED-OUTPUT ------ */ int f(struct { struct packed_trailing_space _1; @@ -128,6 +145,8 @@ int f(struct { union jump_code_union _8; struct outer_implicitly_packed_struct _9; struct usb_host_endpoint _10; + struct outer_nonpacked_struct _11; + struct outer_packed_struct _12; } *_) { return 0; From fbfe493874e98970071b15c6753116fba054487f Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Wed, 8 Mar 2023 16:42:43 +0100 Subject: [PATCH 184/269] usb: ucsi: Fix ucsi->connector race commit 0482c34ec6f8557e06cd0f8e2d0e20e8ede6a22c upstream. ucsi_init() which runs from a workqueue sets ucsi->connector and on an error will clear it again. ucsi->connector gets dereferenced by ucsi_resume(), this checks for ucsi->connector being NULL in case ucsi_init() has not finished yet; or in case ucsi_init() has failed. ucsi_init() setting ucsi->connector and then clearing it again on an error creates a race where the check in ucsi_resume() may pass, only to have ucsi->connector free-ed underneath it when ucsi_init() hits an error. Fix this race by making ucsi_init() store the connector array in a local variable and only assign it to ucsi->connector on success. Fixes: bdc62f2bae8f ("usb: typec: ucsi: Simplified registration and I/O API") Cc: stable@vger.kernel.org Reviewed-by: Heikki Krogerus Signed-off-by: Hans de Goede Link: https://lore.kernel.org/r/20230308154244.722337-3-hdegoede@redhat.com Signed-off-by: Joakim Tjernlund Signed-off-by: Greg Kroah-Hartman --- drivers/usb/typec/ucsi/ucsi.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c index 8cbbb002fefe..086b50968983 100644 --- a/drivers/usb/typec/ucsi/ucsi.c +++ b/drivers/usb/typec/ucsi/ucsi.c @@ -1039,9 +1039,8 @@ static struct fwnode_handle *ucsi_find_fwnode(struct ucsi_connector *con) return NULL; } -static int ucsi_register_port(struct ucsi *ucsi, int index) +static int ucsi_register_port(struct ucsi *ucsi, struct ucsi_connector *con) { - struct ucsi_connector *con = &ucsi->connector[index]; struct typec_capability *cap = &con->typec_cap; enum typec_accessory *accessory = cap->accessory; enum usb_role u_role = USB_ROLE_NONE; @@ -1062,7 +1061,6 @@ static int ucsi_register_port(struct ucsi *ucsi, int index) init_completion(&con->complete); mutex_init(&con->lock); INIT_LIST_HEAD(&con->partner_tasks); - con->num = index + 1; con->ucsi = ucsi; cap->fwnode = ucsi_find_fwnode(con); @@ -1204,7 +1202,7 @@ out_unlock: */ static int ucsi_init(struct ucsi *ucsi) { - struct ucsi_connector *con; + struct ucsi_connector *con, *connector; u64 command, ntfy; int ret; int i; @@ -1235,16 +1233,16 @@ static int ucsi_init(struct ucsi *ucsi) } /* Allocate the connectors. Released in ucsi_unregister() */ - ucsi->connector = kcalloc(ucsi->cap.num_connectors + 1, - sizeof(*ucsi->connector), GFP_KERNEL); - if (!ucsi->connector) { + connector = kcalloc(ucsi->cap.num_connectors + 1, sizeof(*connector), GFP_KERNEL); + if (!connector) { ret = -ENOMEM; goto err_reset; } /* Register all connectors */ for (i = 0; i < ucsi->cap.num_connectors; i++) { - ret = ucsi_register_port(ucsi, i); + connector[i].num = i + 1; + ret = ucsi_register_port(ucsi, &connector[i]); if (ret) goto err_unregister; } @@ -1256,11 +1254,12 @@ static int ucsi_init(struct ucsi *ucsi) if (ret < 0) goto err_unregister; + ucsi->connector = connector; ucsi->ntfy = ntfy; return 0; err_unregister: - for (con = ucsi->connector; con->port; con++) { + for (con = connector; con->port; con++) { ucsi_unregister_partner(con); ucsi_unregister_altmodes(con, UCSI_RECIPIENT_CON); ucsi_unregister_port_psy(con); @@ -1269,10 +1268,7 @@ err_unregister: typec_unregister_port(con->port); con->port = NULL; } - - kfree(ucsi->connector); - ucsi->connector = NULL; - + kfree(connector); err_reset: memset(&ucsi->cap, 0, sizeof(ucsi->cap)); ucsi_reset_ppm(ucsi); From d0386bd84e6d81990ef22e10657d5a5d9c209763 Mon Sep 17 00:00:00 2001 From: Xiaogang Chen Date: Thu, 9 Mar 2023 17:44:55 -0600 Subject: [PATCH 185/269] drm/amdkfd: Get prange->offset after svm_range_vram_node_new commit 8eeddc0d4200762063e1c66b9cc63afa7b24ebf0 upstream. During miration to vram prange->offset is valid after vram buffer is located, either use old one or allocate a new one. Move svm_range_vram_node_new before migrate for each vma to get valid prange->offset. v2: squash in warning fix Fixes: b4ee9606378b ("drm/amdkfd: Fix BO offset for multi-VMA page migration") Signed-off-by: Xiaogang Chen Reviewed-by: Felix Kuehling Signed-off-by: Alex Deucher Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/amd/amdkfd/kfd_migrate.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c index fad500dd224d..88bf6221d4be 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c @@ -311,12 +311,6 @@ svm_migrate_copy_to_vram(struct amdgpu_device *adev, struct svm_range *prange, src = scratch; dst = (uint64_t *)(scratch + npages); - r = svm_range_vram_node_new(adev, prange, true); - if (r) { - dev_dbg(adev->dev, "fail %d to alloc vram\n", r); - goto out; - } - amdgpu_res_first(prange->ttm_res, ttm_res_offset, npages << PAGE_SHIFT, &cursor); for (i = j = 0; i < npages; i++) { @@ -397,7 +391,7 @@ out_free_vram_pages: migrate->dst[i + 3] = 0; } #endif -out: + return r; } @@ -526,6 +520,12 @@ svm_migrate_ram_to_vram(struct svm_range *prange, uint32_t best_loc, start = prange->start << PAGE_SHIFT; end = (prange->last + 1) << PAGE_SHIFT; + + r = svm_range_vram_node_new(adev, prange, true); + if (r) { + dev_dbg(adev->dev, "fail %ld to alloc vram\n", r); + return r; + } ttm_res_offset = prange->offset << PAGE_SHIFT; for (addr = start; addr < end;) { @@ -549,6 +549,8 @@ svm_migrate_ram_to_vram(struct svm_range *prange, uint32_t best_loc, if (cpages) prange->actual_loc = best_loc; + else + svm_range_vram_node_free(prange); return r < 0 ? r : 0; } From 9f291f2348ed65eef879da461acc732e505b389f Mon Sep 17 00:00:00 2001 From: Matthieu Baerts Date: Wed, 15 Mar 2023 21:25:17 +0100 Subject: [PATCH 186/269] hsr: ratelimit only when errors are printed commit 1b0120e4db0bf2838d1ce741195ce4b7cc100b91 upstream. Recently, when automatically merging -net and net-next in MPTCP devel tree, our CI reported [1] a conflict in hsr, the same as the one reported by Stephen in netdev [2]. When looking at the conflict, I noticed it is in fact the v1 [3] that has been applied in -net and the v2 [4] in net-next. Maybe the v1 was applied by accident. As mentioned by Jakub Kicinski [5], the new condition makes more sense before the net_ratelimit(), not to update net_ratelimit's state which is unnecessary if we're not going to print either way. Here, this modification applies the v2 but in -net. Link: https://github.com/multipath-tcp/mptcp_net-next/actions/runs/4423171069 [1] Link: https://lore.kernel.org/netdev/20230315100914.53fc1760@canb.auug.org.au/ [2] Link: https://lore.kernel.org/netdev/20230307133229.127442-1-koverskeid@gmail.com/ [3] Link: https://lore.kernel.org/netdev/20230309092302.179586-1-koverskeid@gmail.com/ [4] Link: https://lore.kernel.org/netdev/20230308232001.2fb62013@kernel.org/ [5] Fixes: 28e8cabe80f3 ("net: hsr: Don't log netdev_err message on unknown prp dst node") Signed-off-by: Matthieu Baerts Reviewed-by: Steen Hegelund Link: https://lore.kernel.org/r/20230315-net-20230315-hsr_framereg-ratelimit-v1-1-61d2ef176d11@tessares.net Signed-off-by: Jakub Kicinski Signed-off-by: Greg Kroah-Hartman --- net/hsr/hsr_framereg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/hsr/hsr_framereg.c b/net/hsr/hsr_framereg.c index bd0afb899117..a16f0445023a 100644 --- a/net/hsr/hsr_framereg.c +++ b/net/hsr/hsr_framereg.c @@ -422,7 +422,7 @@ void hsr_addr_subst_dest(struct hsr_node *node_src, struct sk_buff *skb, node_dst = find_node_by_addr_A(&port->hsr->node_db, eth_hdr(skb)->h_dest); if (!node_dst) { - if (net_ratelimit() && port->hsr->prot_version != PRP_V1) + if (port->hsr->prot_version != PRP_V1 && net_ratelimit()) netdev_err(skb->dev, "%s: Unknown node\n", __func__); return; } From cafb47f5f59bf372f93ebfaab129a0e712137345 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Tue, 21 Mar 2023 09:03:26 +0100 Subject: [PATCH 187/269] x86/PVH: avoid 32-bit build warning when obtaining VGA console info commit aadbd07ff8a75ed342388846da78dfaddb8b106a upstream. In the commit referenced below I failed to pay attention to this code also being buildable as 32-bit. Adjust the type of "ret" - there's no real need for it to be wider than 32 bits. Fixes: 934ef33ee75c ("x86/PVH: obtain VGA console info in Dom0") Reported-by: kernel test robot Signed-off-by: Jan Beulich Reviewed-by: Juergen Gross Signed-off-by: Greg Kroah-Hartman Link: https://lore.kernel.org/r/2d2193ff-670b-0a27-e12d-2c5c4c121c79@suse.com Signed-off-by: Juergen Gross --- arch/x86/xen/enlighten_pvh.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/xen/enlighten_pvh.c b/arch/x86/xen/enlighten_pvh.c index 1da44aca896c..ada3868c02c2 100644 --- a/arch/x86/xen/enlighten_pvh.c +++ b/arch/x86/xen/enlighten_pvh.c @@ -48,7 +48,7 @@ void __init xen_pvh_init(struct boot_params *boot_params) struct xen_platform_op op = { .cmd = XENPF_get_dom0_console, }; - long ret = HYPERVISOR_platform_op(&op); + int ret = HYPERVISOR_platform_op(&op); if (ret > 0) xen_init_vga(&op.u.dom0_console, From 9c5aa3c8619fe9c1668bcb8eccc63ff9302666e4 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Wed, 5 Apr 2023 07:31:15 -0400 Subject: [PATCH 188/269] Revert "cpuidle, intel_idle: Fix CPUIDLE_FLAG_IRQ_ENABLE *again*" This reverts commit 07fc78d8f0c960f7ca241de98bc8c6bfe7d200f3 which was upstream commit 6d9c7f51b1d9179bf7c3542267c656a934e8af23. Lockdep warnings on boot that are not seen with Linus's tree. Signed-off-by: Sasha Levin --- drivers/idle/intel_idle.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c index f060ac7376e6..cfeb24d40d37 100644 --- a/drivers/idle/intel_idle.c +++ b/drivers/idle/intel_idle.c @@ -168,7 +168,13 @@ static __cpuidle int intel_idle_irq(struct cpuidle_device *dev, raw_local_irq_enable(); ret = __intel_idle(dev, drv, index); - raw_local_irq_disable(); + + /* + * The lockdep hardirqs state may be changed to 'on' with timer + * tick interrupt followed by __do_softirq(). Use local_irq_disable() + * to keep the hardirqs state correct. + */ + local_irq_disable(); return ret; } From 543aff194ab6286af7791c5a138978ee7da4c93f Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 6 Apr 2023 12:10:58 +0200 Subject: [PATCH 189/269] Linux 6.1.23 Link: https://lore.kernel.org/r/20230403140415.090615502@linuxfoundation.org Tested-by: Markus Reichelt Tested-by: Shuah Khan Tested-by: Takeshi Ogasawara Tested-by: Florian Fainelli Tested-by: Bagas Sanjaya Tested-by: Jon Hunter Tested-by: Chris Paterson (CIP) Tested-by: Conor Dooley Tested-by: Linux Kernel Functional Testing Link: https://lore.kernel.org/r/20230404183150.381314754@linuxfoundation.org Tested-by: Florian Fainelli Tested-by: Ron Economos Tested-by: Bagas Sanjaya Tested-by: Linux Kernel Functional Testing Tested-by: Salvatore Bonaccorso Link: https://lore.kernel.org/r/20230405100302.540890806@linuxfoundation.org Tested-by: Takeshi Ogasawara Tested-by: Florian Fainelli Tested-by: Rudi Heitbaum Tested-by: Jon Hunter Tested-by: Markus Reichelt Tested-by: Linux Kernel Functional Testing Tested-by: Guenter Roeck Tested-by: Kelsey Steele Tested-by: Bagas Sanjaya Tested-by: Allen Pais Signed-off-by: Greg Kroah-Hartman --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c3d44de8850c..a162f6cdf77c 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 1 -SUBLEVEL = 22 +SUBLEVEL = 23 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth From 586316589b4945ad54c198750aff803a39a36303 Mon Sep 17 00:00:00 2001 From: Vincent Donnefort Date: Thu, 6 Apr 2023 10:41:18 +0100 Subject: [PATCH 190/269] ANDROID: KVM: arm64: Handle permission issue while loading pKVM module pKVM module loading is disabled by rejecting the HVCs. This is a problem for kvm_call_hyp_nvhe(__pkvm_alloc_module_va). First a WARN will be trigger, then the res.a1 being very much likely non 0 the error will not be caught. The loading would then proceed (even though no EL2 code will be actually loaded). Fix this behaviour by catching when the HVC is blocked, so the user gets a meaningful error returned and the driver is not half-loaded. Bug: 254835242 Change-Id: Ieeca6eebb083d99f8d6b79ebbc486a7c9f7d334e Signed-off-by: Vincent Donnefort --- arch/arm64/kvm/pkvm.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/arch/arm64/kvm/pkvm.c b/arch/arm64/kvm/pkvm.c index ec613347f116..3ec32f19b4a9 100644 --- a/arch/arm64/kvm/pkvm.c +++ b/arch/arm64/kvm/pkvm.c @@ -773,6 +773,7 @@ int __pkvm_load_el2_module(struct module *this, unsigned long *token) { &mod->data, KVM_PGTABLE_PROT_R | KVM_PGTABLE_PROT_W }, }; void *start, *end, *hyp_va; + struct arm_smccc_res res; kvm_nvhe_reloc_t *endrel; int ret, i, secs_first; size_t offset, size; @@ -802,12 +803,14 @@ int __pkvm_load_el2_module(struct module *this, unsigned long *token) end = secs_map[ARRAY_SIZE(secs_map) - 1].sec->end; size = end - start; - hyp_va = (void *)kvm_call_hyp_nvhe(__pkvm_alloc_module_va, size >> PAGE_SHIFT); - if (!hyp_va) { + arm_smccc_1_1_hvc(KVM_HOST_SMCCC_FUNC(__pkvm_alloc_module_va), + size >> PAGE_SHIFT, &res); + if (res.a0 != SMCCC_RET_SUCCESS || !res.a1) { kvm_err("Failed to allocate hypervisor VA space for EL2 module\n"); module_put(this); - return -ENOMEM; + return res.a0 == SMCCC_RET_SUCCESS ? -ENOMEM : -EPERM; } + hyp_va = (void *)res.a1; /* * The token can be used for other calls related to this module. From cbe59d40a2f3b64e0e91835dc8d2c4ee0896f458 Mon Sep 17 00:00:00 2001 From: Vincent Donnefort Date: Thu, 6 Apr 2023 10:48:57 +0100 Subject: [PATCH 191/269] ANDROID: KVM: arm64: Fix pKVM module loading close The HVC number limit must be the id inside the enum, not the fully encoded version. Without this fix, all HVC would be rejected after closing the pKVM modules door. Bug: 254835242 Change-Id: Ia338859e07412ea1c2377b90ddee2c29c6fb0755 Signed-off-by: Vincent Donnefort --- arch/arm64/kvm/hyp/nvhe/hyp-main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c index 4fce0949b0f4..4c5ff40ccdc9 100644 --- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c +++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c @@ -1328,7 +1328,7 @@ int reset_pkvm_priv_hcall_limit(void) return -EACCES; addr = hyp_fixmap_map(__hyp_pa(&pkvm_priv_hcall_limit)); - *addr = KVM_HOST_SMCCC_FUNC(__pkvm_prot_finalize); + *addr = __KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize; hyp_fixmap_unmap(); return 0; From 3e3a126ea3cffc1ce5c1caa3774f90317405bf70 Mon Sep 17 00:00:00 2001 From: Fuad Tabba Date: Thu, 6 Apr 2023 12:46:33 +0100 Subject: [PATCH 192/269] ANDROID: KVM: arm64: Factor out logic for setting SVE vector length at hyp Factor out the logic for setting the SVE vector length at the hypervisor in pKVM to the maximum hardware supported value when saving and restoring host SVE state. This shares common code, and elides an unused variable warning when SVE is not configured. Change-Id: Ibaa58e5bb44e4f85b9548a6abb498f0a769f6a4b Signed-off-by: Fuad Tabba Bug: 267291591 --- arch/arm64/kvm/hyp/include/nvhe/pkvm.h | 6 ++++++ arch/arm64/kvm/hyp/nvhe/hyp-main.c | 3 +-- arch/arm64/kvm/hyp/nvhe/switch.c | 3 +-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/arch/arm64/kvm/hyp/include/nvhe/pkvm.h b/arch/arm64/kvm/hyp/include/nvhe/pkvm.h index c56db3d918ab..9eba06503704 100644 --- a/arch/arm64/kvm/hyp/include/nvhe/pkvm.h +++ b/arch/arm64/kvm/hyp/include/nvhe/pkvm.h @@ -152,6 +152,12 @@ static inline bool pkvm_ipa_range_has_pvmfw(struct pkvm_hyp_vm *vm, return ipa_end > pkvm->pvmfw_load_addr && ipa_start < pvmfw_load_end; } +static inline void pkvm_set_max_sve_vq(void) +{ + sve_cond_update_zcr_vq(sve_vq_from_vl(kvm_host_sve_max_vl) - 1, + SYS_ZCR_EL2); +} + int pkvm_load_pvmfw_pages(struct pkvm_hyp_vm *vm, u64 ipa, phys_addr_t phys, u64 size); void pkvm_poison_pvmfw_pages(void); diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c index 4c5ff40ccdc9..c854d1f674e5 100644 --- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c +++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c @@ -688,10 +688,9 @@ static void fpsimd_host_restore(void) if (system_supports_sve()) { struct kvm_host_sve_state *sve_state = get_host_sve_state(vcpu); - u64 vq_len = sve_vq_from_vl(kvm_host_sve_max_vl) - 1; write_sysreg_el1(sve_state->zcr_el1, SYS_ZCR); - sve_cond_update_zcr_vq(vq_len, SYS_ZCR_EL2); + pkvm_set_max_sve_vq(); __sve_restore_state(sve_state->sve_regs + sve_ffr_offset(kvm_host_sve_max_vl), &sve_state->fpsr); diff --git a/arch/arm64/kvm/hyp/nvhe/switch.c b/arch/arm64/kvm/hyp/nvhe/switch.c index c98dcd1b05d6..553fa769ea35 100644 --- a/arch/arm64/kvm/hyp/nvhe/switch.c +++ b/arch/arm64/kvm/hyp/nvhe/switch.c @@ -199,10 +199,9 @@ static void kvm_hyp_handle_fpsimd_host(struct kvm_vcpu *vcpu) */ if (unlikely(is_protected_kvm_enabled() && system_supports_sve())) { struct kvm_host_sve_state *sve_state = get_host_sve_state(vcpu); - u64 vq_len = sve_vq_from_vl(kvm_host_sve_max_vl) - 1; sve_state->zcr_el1 = read_sysreg_el1(SYS_ZCR); - sve_cond_update_zcr_vq(vq_len, SYS_ZCR_EL2); + pkvm_set_max_sve_vq(); __sve_save_state(sve_state->sve_regs + sve_ffr_offset(kvm_host_sve_max_vl), &sve_state->fpsr); From 0ec2539fbc12946b4a6a4c693f819c4ec9daf3b2 Mon Sep 17 00:00:00 2001 From: Vincent Donnefort Date: Thu, 6 Apr 2023 10:50:50 +0100 Subject: [PATCH 193/269] ANDROID: KVM: arm64: Prevent pKVM module loading after IOMMU init As a fail-safe mechanism, disable pKVM module loading after the IOMMU init is complete. This intends to make sure nothing can be loaded after the IOMMU driver is ready, in case a vendor would forget to call __pkvm_close_module_registration Bug: 254835242 Change-Id: I32a9752e145a8ef9787dae6319e37ba38544739b Signed-off-by: Vincent Donnefort --- arch/arm64/kvm/hyp/nvhe/iommu.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/arm64/kvm/hyp/nvhe/iommu.c b/arch/arm64/kvm/hyp/nvhe/iommu.c index f9431dca570e..6c90b32491f0 100644 --- a/arch/arm64/kvm/hyp/nvhe/iommu.c +++ b/arch/arm64/kvm/hyp/nvhe/iommu.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #define DRV_ID(drv_addr) ((unsigned long)drv_addr) @@ -469,6 +470,8 @@ int __pkvm_iommu_finalize(int err) if (!ret && err) pkvm_handle_system_misconfiguration(NO_DMA_ISOLATION); + __pkvm_close_late_module_registration(); + return ret; } From 0cd79cae16cde00e2d949a2ac2f00c9072441c03 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 6 Apr 2023 10:18:16 +0200 Subject: [PATCH 194/269] FROMLIST: staging: greybus: drop loopback test files The greybus loopback test tool does not belong burried down in a driver-specific directory. If it is needed, it should be somewhere else, like in the testing directory. But as the loopback driver is probably never going to be merged out of the staging directory, let's just delete the test alltogether for now. If it's needed in the future, it can be brought back with a revert. Also, having an Android.mk file in the kernel source tree breaks some Android build systems when trying to build from a read-only source tree, the report of which prompted this being a good reason to remove it as well. Cc: Johan Hovold Cc: Alex Elder Cc: Jack Schofield Cc: Vaibhav Nagare Cc: greybus-dev@lists.linaro.org Change-Id: Ie19bcd87d0062d8453ff0d3d998224a7e478f3d0 Signed-off-by: Greg Kroah-Hartman Bug: 275824813 Link: https://lore.kernel.org/r/2023040613-huntsman-goldsmith-4a41@gregkh Signed-off-by: Greg Kroah-Hartman --- drivers/staging/greybus/tools/.gitignore | 2 - drivers/staging/greybus/tools/Android.mk | 10 - drivers/staging/greybus/tools/Makefile | 33 - drivers/staging/greybus/tools/README.loopback | 198 ---- drivers/staging/greybus/tools/lbtest | 169 --- drivers/staging/greybus/tools/loopback_test.c | 992 ------------------ 6 files changed, 1404 deletions(-) delete mode 100644 drivers/staging/greybus/tools/.gitignore delete mode 100644 drivers/staging/greybus/tools/Android.mk delete mode 100644 drivers/staging/greybus/tools/Makefile delete mode 100644 drivers/staging/greybus/tools/README.loopback delete mode 100755 drivers/staging/greybus/tools/lbtest delete mode 100644 drivers/staging/greybus/tools/loopback_test.c diff --git a/drivers/staging/greybus/tools/.gitignore b/drivers/staging/greybus/tools/.gitignore deleted file mode 100644 index 1fd364aba774..000000000000 --- a/drivers/staging/greybus/tools/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-only -loopback_test diff --git a/drivers/staging/greybus/tools/Android.mk b/drivers/staging/greybus/tools/Android.mk deleted file mode 100644 index fdadbf611757..000000000000 --- a/drivers/staging/greybus/tools/Android.mk +++ /dev/null @@ -1,10 +0,0 @@ -LOCAL_PATH:= $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_SRC_FILES:= loopback_test.c -LOCAL_MODULE_TAGS := optional -LOCAL_MODULE := gb_loopback_test - -include $(BUILD_EXECUTABLE) - diff --git a/drivers/staging/greybus/tools/Makefile b/drivers/staging/greybus/tools/Makefile deleted file mode 100644 index a3bbd73171f2..000000000000 --- a/drivers/staging/greybus/tools/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -ifeq ($(strip $(V)), 1) - Q = -else - Q = @ -endif - -CFLAGS += -std=gnu99 -Wall -Wextra -g \ - -D_GNU_SOURCE \ - -Wno-unused-parameter \ - -Wmaybe-uninitialized \ - -Wredundant-decls \ - -Wcast-align \ - -Wsign-compare \ - -Wno-missing-field-initializers \ - -Wno-shift-negative-value - -CC := $(CROSS_COMPILE)gcc - -TOOLS = loopback_test - -all: $(TOOLS) - -%.o: %.c ../greybus_protocols.h - @echo ' TARGET_CC $@' - $(Q)$(CC) $(CFLAGS) -c $< -o $@ - -loopback_%: loopback_%.o - @echo ' TARGET_LD $@' - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ - -clean:: - rm -f *.o $(TOOLS) diff --git a/drivers/staging/greybus/tools/README.loopback b/drivers/staging/greybus/tools/README.loopback deleted file mode 100644 index 070a510cbe7c..000000000000 --- a/drivers/staging/greybus/tools/README.loopback +++ /dev/null @@ -1,198 +0,0 @@ - - - 1 - LOOPBACK DRIVER - -The driver implements the main logic of the loopback test and provides -sysfs files to configure the test and retrieve the results. -A user could run a test without the need of the test application given -that he understands the sysfs interface of the loopback driver. - -The loopback kernel driver needs to be loaded and at least one module -with the loopback feature enabled must be present for the sysfs files to be -created and for the loopback test application to be able to run. - -To load the module: -# modprobe gb-loopback - - -When the module is probed, New files are available on the sysfs -directory of the detected loopback device. -(typically under "/sys/bus/graybus/devices"). - -Here is a short summary of the sysfs interface files that should be visible: - -* Loopback Configuration Files: - async - Use asynchronous operations. - iteration_max - Number of tests iterations to perform. - size - payload size of the transfer. - timeout - The number of microseconds to give an individual - asynchronous request before timing out. - us_wait - Time to wait between 2 messages - type - By writing the test type to this file, the test starts. - Valid tests are: - 0 stop the test - 2 - ping - 3 - transfer - 4 - sink - -* Loopback feedback files: - error - number of errors that have occurred. - iteration_count - Number of iterations performed. - requests_completed - Number of requests successfully completed. - requests_timedout - Number of requests that have timed out. - timeout_max - Max allowed timeout - timeout_min - Min allowed timeout. - -* Loopback result files: - apbridge_unipro_latency_avg - apbridge_unipro_latency_max - apbridge_unipro_latency_min - gpbridge_firmware_latency_avg - gpbridge_firmware_latency_max - gpbridge_firmware_latency_min - requests_per_second_avg - requests_per_second_max - requests_per_second_min - latency_avg - latency_max - latency_min - throughput_avg - throughput_max - throughput_min - - - - 2 - LOOPBACK TEST APPLICATION - -The loopback test application manages and formats the results provided by -the loopback kernel module. The purpose of this application -is to: - - Start and manage multiple loopback device tests concurrently. - - Calculate the aggregate results for multiple devices. - - Gather and format test results (csv or human readable). - -The best way to get up to date usage information for the application is -usually to pass the "-h" parameter. -Here is the summary of the available options: - - Mandatory arguments - -t must be one of the test names - sink, transfer or ping - -i iteration count - the number of iterations to run the test over - Optional arguments - -S sysfs location - location for greybus 'endo' entries default /sys/bus/greybus/devices/ - -D debugfs location - location for loopback debugfs entries default /sys/kernel/debug/gb_loopback/ - -s size of data packet to send during test - defaults to zero - -m mask - a bit mask of connections to include example: -m 8 = 4th connection -m 9 = 1st and 4th connection etc - default is zero which means broadcast to all connections - -v verbose output - -d debug output - -r raw data output - when specified the full list of latency values are included in the output CSV - -p porcelain - when specified printout is in a user-friendly non-CSV format. This option suppresses writing to CSV file - -a aggregate - show aggregation of all enabled devies - -l list found loopback devices and exit. - -x Async - Enable async transfers. - -o Timeout - Timeout in microseconds for async operations. - - - - 3 - REAL WORLD EXAMPLE USAGES - - 3.1 - Using the driver sysfs files to run a test on a single device: - -* Run a 1000 transfers of a 100 byte packet. Each transfer is started only -after the previous one finished successfully: - echo 0 > /sys/bus/greybus/devices/1-2.17/type - echo 0 > /sys/bus/greybus/devices/1-2.17/async - echo 2000 > /sys/bus/greybus/devices/1-2.17/us_wait - echo 100 > /sys/bus/greybus/devices/1-2.17/size - echo 1000 > /sys/bus/greybus/devices/1-2.17/iteration_max - echo 0 > /sys/bus/greybus/devices/1-2.17/mask - echo 200000 > /sys/bus/greybus/devices/1-2.17/timeout - echo 3 > /sys/bus/greybus/devices/1-2.17/type - -* Run a 1000 transfers of a 100 byte packet. Transfers are started without -waiting for the previous one to finish: - echo 0 > /sys/bus/greybus/devices/1-2.17/type - echo 3 > /sys/bus/greybus/devices/1-2.17/async - echo 0 > /sys/bus/greybus/devices/1-2.17/us_wait - echo 100 > /sys/bus/greybus/devices/1-2.17/size - echo 1000 > /sys/bus/greybus/devices/1-2.17/iteration_max - echo 0 > /sys/bus/greybus/devices/1-2.17/mask - echo 200000 > /sys/bus/greybus/devices/1-2.17/timeout - echo 3 > /sys/bus/greybus/devices/1-2.17/type - -* Read the results from sysfs: - cat /sys/bus/greybus/devices/1-2.17/requests_per_second_min - cat /sys/bus/greybus/devices/1-2.17/requests_per_second_max - cat /sys/bus/greybus/devices/1-2.17/requests_per_second_avg - - cat /sys/bus/greybus/devices/1-2.17/latency_min - cat /sys/bus/greybus/devices/1-2.17/latency_max - cat /sys/bus/greybus/devices/1-2.17/latency_avg - - cat /sys/bus/greybus/devices/1-2.17/apbridge_unipro_latency_min - cat /sys/bus/greybus/devices/1-2.17/apbridge_unipro_latency_max - cat /sys/bus/greybus/devices/1-2.17/apbridge_unipro_latency_avg - - cat /sys/bus/greybus/devices/1-2.17/gpbridge_firmware_latency_min - cat /sys/bus/greybus/devices/1-2.17/gpbridge_firmware_latency_max - cat /sys/bus/greybus/devices/1-2.17/gpbridge_firmware_latency_avg - - cat /sys/bus/greybus/devices/1-2.17/error - cat /sys/bus/greybus/devices/1-2.17/requests_completed - cat /sys/bus/greybus/devices/1-2.17/requests_timedout - - -3.2 - using the test application: - -* Run a transfer test 10 iterations of size 100 bytes on all available devices - #/loopback_test -t transfer -i 10 -s 100 - 1970-1-1 0:10:7,transfer,1-4.17,100,10,0,443,509,471.700012,66,1963,2256,2124.600098,293,102776,118088,109318.898438,15312,1620,1998,1894.099976,378,56,57,56.799999,1 - 1970-1-1 0:10:7,transfer,1-5.17,100,10,0,399,542,463.399994,143,1845,2505,2175.800049,660,92568,125744,107393.296875,33176,1469,2305,1806.500000,836,56,57,56.799999,1 - - -* Show the aggregate results of both devices. ("-a") - #/loopback_test -t transfer -i 10 -s 100 -a - 1970-1-1 0:10:35,transfer,1-4.17,100,10,0,448,580,494.100006,132,1722,2230,2039.400024,508,103936,134560,114515.703125,30624,1513,1980,1806.900024,467,56,57,57.299999,1 - 1970-1-1 0:10:35,transfer,1-5.17,100,10,0,383,558,478.600006,175,1791,2606,2115.199951,815,88856,129456,110919.703125,40600,1457,2246,1773.599976,789,56,57,57.099998,1 - 1970-1-1 0:10:35,transfer,aggregate,100,10,0,383,580,486.000000,197,1722,2606,2077.000000,884,88856,134560,112717.000000,45704,1457,2246,1789.000000,789,56,57,57.000000,1 - -* Example usage of the mask option to select which devices will - run the test (1st, 2nd, or both devices): - # /loopback_test -t transfer -i 10 -s 100 -m 1 - 1970-1-1 0:11:56,transfer,1-4.17,100,10,0,514,558,544.900024,44,1791,1943,1836.599976,152,119248,129456,126301.296875,10208,1600,1001609,101613.601562,1000009,56,57,56.900002,1 - # /loopback_test -t transfer -i 10 -s 100 -m 2 - 1970-1-1 0:12:0,transfer,1-5.17,100,10,0,468,554,539.000000,86,1804,2134,1859.500000,330,108576,128528,124932.500000,19952,1606,1626,1619.300049,20,56,57,57.400002,1 - # /loopback_test -t transfer -i 10 -s 100 -m 3 - 1970-1-1 0:12:3,transfer,1-4.17,100,10,0,432,510,469.399994,78,1959,2313,2135.800049,354,100224,118320,108785.296875,18096,1610,2024,1893.500000,414,56,57,57.200001,1 - 1970-1-1 0:12:3,transfer,1-5.17,100,10,0,404,542,468.799988,138,1843,2472,2152.500000,629,93728,125744,108646.101562,32016,1504,2247,1853.099976,743,56,57,57.099998,1 - -* Show output in human readable format ("-p") - # /loopback_test -t transfer -i 10 -s 100 -m 3 -p - - 1970-1-1 0:12:37 - test: transfer - path: 1-4.17 - size: 100 - iterations: 10 - errors: 0 - async: Disabled - requests per-sec: min=390, max=547, average=469.299988, jitter=157 - ap-throughput B/s: min=90480 max=126904 average=108762.101562 jitter=36424 - ap-latency usec: min=1826 max=2560 average=2146.000000 jitter=734 - apbridge-latency usec: min=1620 max=1982 average=1882.099976 jitter=362 - gpbridge-latency usec: min=56 max=57 average=57.099998 jitter=1 - - - 1970-1-1 0:12:37 - test: transfer - path: 1-5.17 - size: 100 - iterations: 10 - errors: 0 - async: Disabled - requests per-sec: min=397, max=538, average=461.700012, jitter=141 - ap-throughput B/s: min=92104 max=124816 average=106998.898438 jitter=32712 - ap-latency usec: min=1856 max=2514 average=2185.699951 jitter=658 - apbridge-latency usec: min=1460 max=2296 average=1828.599976 jitter=836 - gpbridge-latency usec: min=56 max=57 average=57.099998 jitter=1 diff --git a/drivers/staging/greybus/tools/lbtest b/drivers/staging/greybus/tools/lbtest deleted file mode 100755 index 47c481239e98..000000000000 --- a/drivers/staging/greybus/tools/lbtest +++ /dev/null @@ -1,169 +0,0 @@ -#!/usr/bin/env python -# SPDX-License-Identifier: BSD-3-Clause - -# Copyright (c) 2015 Google, Inc. -# Copyright (c) 2015 Linaro, Ltd. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# 3. Neither the name of the copyright holder nor the names of its -# contributors may be used to endorse or promote products derived from this -# software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -from __future__ import print_function -import csv -import datetime -import sys -import time - -dict = {'ping': '2', 'transfer': '3', 'sink': '4'} -verbose = 1 - -def abort(): - sys.exit(1) - -def usage(): - print('Usage: looptest TEST SIZE ITERATIONS PATH\n\n' - ' Run TEST for a number of ITERATIONS with operation data SIZE bytes\n' - ' TEST may be \'ping\' \'transfer\' or \'sink\'\n' - ' SIZE indicates the size of transfer <= greybus max payload bytes\n' - ' ITERATIONS indicates the number of times to execute TEST at SIZE bytes\n' - ' Note if ITERATIONS is set to zero then this utility will\n' - ' initiate an infinite (non terminating) test and exit\n' - ' without logging any metrics data\n' - ' PATH indicates the sysfs path for the loopback greybus entries e.g.\n' - ' /sys/bus/greybus/devices/endo0:1:1:1:1/\n' - 'Examples:\n' - ' looptest transfer 128 10000\n' - ' looptest ping 0 128\n' - ' looptest sink 2030 32768\n' - .format(sys.argv[0]), file=sys.stderr) - - abort() - -def read_sysfs_int(path): - try: - f = open(path, "r"); - val = f.read(); - f.close() - return int(val) - except IOError as e: - print("I/O error({0}): {1}".format(e.errno, e.strerror)) - print("Invalid path %s" % path) - -def write_sysfs_val(path, val): - try: - f = open(path, "r+") - f.write(val) - f.close() - except IOError as e: - print("I/O error({0}): {1}".format(e.errno, e.strerror)) - print("Invalid path %s" % path) - -def log_csv(test_name, size, iteration_max, sys_pfx): - # file name will test_name_size_iteration_max.csv - # every time the same test with the same parameters is run we will then - # append to the same CSV with datestamp - representing each test dataset - fname = test_name + '_' + size + '_' + str(iteration_max) + '.csv' - - try: - # gather data set - date = str(datetime.datetime.now()) - error = read_sysfs_int(sys_pfx + 'error') - request_min = read_sysfs_int(sys_pfx + 'requests_per_second_min') - request_max = read_sysfs_int(sys_pfx + 'requests_per_second_max') - request_avg = read_sysfs_int(sys_pfx + 'requests_per_second_avg') - latency_min = read_sysfs_int(sys_pfx + 'latency_min') - latency_max = read_sysfs_int(sys_pfx + 'latency_max') - latency_avg = read_sysfs_int(sys_pfx + 'latency_avg') - throughput_min = read_sysfs_int(sys_pfx + 'throughput_min') - throughput_max = read_sysfs_int(sys_pfx + 'throughput_max') - throughput_avg = read_sysfs_int(sys_pfx + 'throughput_avg') - - # derive jitter - request_jitter = request_max - request_min - latency_jitter = latency_max - latency_min - throughput_jitter = throughput_max - throughput_min - - # append data set to file - with open(fname, 'a') as csvf: - row = csv.writer(csvf, delimiter=",", quotechar="'", - quoting=csv.QUOTE_MINIMAL) - row.writerow([date, test_name, size, iteration_max, error, - request_min, request_max, request_avg, request_jitter, - latency_min, latency_max, latency_avg, latency_jitter, - throughput_min, throughput_max, throughput_avg, throughput_jitter]) - except IOError as e: - print("I/O error({0}): {1}".format(e.errno, e.strerror)) - -def loopback_run(test_name, size, iteration_max, sys_pfx): - test_id = dict[test_name] - try: - # Terminate any currently running test - write_sysfs_val(sys_pfx + 'type', '0') - # Set parameter for no wait between messages - write_sysfs_val(sys_pfx + 'ms_wait', '0') - # Set operation size - write_sysfs_val(sys_pfx + 'size', size) - # Set iterations - write_sysfs_val(sys_pfx + 'iteration_max', str(iteration_max)) - # Initiate by setting loopback operation type - write_sysfs_val(sys_pfx + 'type', test_id) - time.sleep(1) - - if iteration_max == 0: - print ("Infinite test initiated CSV won't be logged\n") - return - - previous = 0 - err = 0 - while True: - # get current count bail out if it hasn't changed - iteration_count = read_sysfs_int(sys_pfx + 'iteration_count') - if previous == iteration_count: - err = 1 - break - elif iteration_count == iteration_max: - break - previous = iteration_count - if verbose: - print('%02d%% complete %d of %d ' % - (100 * iteration_count / iteration_max, - iteration_count, iteration_max)) - time.sleep(1) - if err: - print ('\nError executing test\n') - else: - log_csv(test_name, size, iteration_max, sys_pfx) - except ValueError as ve: - print("Error: %s " % format(e.strerror), file=sys.stderr) - abort() - -def main(): - if len(sys.argv) < 5: - usage() - - if sys.argv[1] in dict.keys(): - loopback_run(sys.argv[1], sys.argv[2], int(sys.argv[3]), sys.argv[4]) - else: - usage() -if __name__ == '__main__': - main() diff --git a/drivers/staging/greybus/tools/loopback_test.c b/drivers/staging/greybus/tools/loopback_test.c deleted file mode 100644 index 4c42e393cd3d..000000000000 --- a/drivers/staging/greybus/tools/loopback_test.c +++ /dev/null @@ -1,992 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause -/* - * Loopback test application - * - * Copyright 2015 Google Inc. - * Copyright 2015 Linaro Ltd. - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define MAX_NUM_DEVICES 10 -#define MAX_SYSFS_PREFIX 0x80 -#define MAX_SYSFS_PATH 0x200 -#define CSV_MAX_LINE 0x1000 -#define SYSFS_MAX_INT 0x20 -#define MAX_STR_LEN 255 -#define DEFAULT_ASYNC_TIMEOUT 200000 - -struct dict { - char *name; - int type; -}; - -static struct dict dict[] = { - {"ping", 2}, - {"transfer", 3}, - {"sink", 4}, - {NULL,} /* list termination */ -}; - -struct loopback_results { - float latency_avg; - uint32_t latency_max; - uint32_t latency_min; - uint32_t latency_jitter; - - float request_avg; - uint32_t request_max; - uint32_t request_min; - uint32_t request_jitter; - - float throughput_avg; - uint32_t throughput_max; - uint32_t throughput_min; - uint32_t throughput_jitter; - - float apbridge_unipro_latency_avg; - uint32_t apbridge_unipro_latency_max; - uint32_t apbridge_unipro_latency_min; - uint32_t apbridge_unipro_latency_jitter; - - float gbphy_firmware_latency_avg; - uint32_t gbphy_firmware_latency_max; - uint32_t gbphy_firmware_latency_min; - uint32_t gbphy_firmware_latency_jitter; - - uint32_t error; -}; - -struct loopback_device { - char name[MAX_STR_LEN]; - char sysfs_entry[MAX_SYSFS_PATH]; - char debugfs_entry[MAX_SYSFS_PATH]; - struct loopback_results results; -}; - -struct loopback_test { - int verbose; - int debug; - int raw_data_dump; - int porcelain; - int mask; - int size; - int iteration_max; - int aggregate_output; - int test_id; - int device_count; - int list_devices; - int use_async; - int async_timeout; - int async_outstanding_operations; - int us_wait; - int file_output; - int stop_all; - int poll_count; - char test_name[MAX_STR_LEN]; - char sysfs_prefix[MAX_SYSFS_PREFIX]; - char debugfs_prefix[MAX_SYSFS_PREFIX]; - struct timespec poll_timeout; - struct loopback_device devices[MAX_NUM_DEVICES]; - struct loopback_results aggregate_results; - struct pollfd fds[MAX_NUM_DEVICES]; -}; - -struct loopback_test t; - -/* Helper macros to calculate the aggregate results for all devices */ -static inline int device_enabled(struct loopback_test *t, int dev_idx); - -#define GET_MAX(field) \ -static int get_##field##_aggregate(struct loopback_test *t) \ -{ \ - uint32_t max = 0; \ - int i; \ - for (i = 0; i < t->device_count; i++) { \ - if (!device_enabled(t, i)) \ - continue; \ - if (t->devices[i].results.field > max) \ - max = t->devices[i].results.field; \ - } \ - return max; \ -} \ - -#define GET_MIN(field) \ -static int get_##field##_aggregate(struct loopback_test *t) \ -{ \ - uint32_t min = ~0; \ - int i; \ - for (i = 0; i < t->device_count; i++) { \ - if (!device_enabled(t, i)) \ - continue; \ - if (t->devices[i].results.field < min) \ - min = t->devices[i].results.field; \ - } \ - return min; \ -} \ - -#define GET_AVG(field) \ -static int get_##field##_aggregate(struct loopback_test *t) \ -{ \ - uint32_t val = 0; \ - uint32_t count = 0; \ - int i; \ - for (i = 0; i < t->device_count; i++) { \ - if (!device_enabled(t, i)) \ - continue; \ - count++; \ - val += t->devices[i].results.field; \ - } \ - if (count) \ - val /= count; \ - return val; \ -} \ - -GET_MAX(throughput_max); -GET_MAX(request_max); -GET_MAX(latency_max); -GET_MAX(apbridge_unipro_latency_max); -GET_MAX(gbphy_firmware_latency_max); -GET_MIN(throughput_min); -GET_MIN(request_min); -GET_MIN(latency_min); -GET_MIN(apbridge_unipro_latency_min); -GET_MIN(gbphy_firmware_latency_min); -GET_AVG(throughput_avg); -GET_AVG(request_avg); -GET_AVG(latency_avg); -GET_AVG(apbridge_unipro_latency_avg); -GET_AVG(gbphy_firmware_latency_avg); - -void abort(void) -{ - _exit(1); -} - -void usage(void) -{ - fprintf(stderr, "Usage: loopback_test TEST [SIZE] ITERATIONS [SYSPATH] [DBGPATH]\n\n" - " Run TEST for a number of ITERATIONS with operation data SIZE bytes\n" - " TEST may be \'ping\' \'transfer\' or \'sink\'\n" - " SIZE indicates the size of transfer <= greybus max payload bytes\n" - " ITERATIONS indicates the number of times to execute TEST at SIZE bytes\n" - " Note if ITERATIONS is set to zero then this utility will\n" - " initiate an infinite (non terminating) test and exit\n" - " without logging any metrics data\n" - " SYSPATH indicates the sysfs path for the loopback greybus entries e.g.\n" - " /sys/bus/greybus/devices\n" - " DBGPATH indicates the debugfs path for the loopback greybus entries e.g.\n" - " /sys/kernel/debug/gb_loopback/\n" - " Mandatory arguments\n" - " -t must be one of the test names - sink, transfer or ping\n" - " -i iteration count - the number of iterations to run the test over\n" - " Optional arguments\n" - " -S sysfs location - location for greybus 'endo' entries default /sys/bus/greybus/devices/\n" - " -D debugfs location - location for loopback debugfs entries default /sys/kernel/debug/gb_loopback/\n" - " -s size of data packet to send during test - defaults to zero\n" - " -m mask - a bit mask of connections to include example: -m 8 = 4th connection -m 9 = 1st and 4th connection etc\n" - " default is zero which means broadcast to all connections\n" - " -v verbose output\n" - " -d debug output\n" - " -r raw data output - when specified the full list of latency values are included in the output CSV\n" - " -p porcelain - when specified printout is in a user-friendly non-CSV format. This option suppresses writing to CSV file\n" - " -a aggregate - show aggregation of all enabled devices\n" - " -l list found loopback devices and exit\n" - " -x Async - Enable async transfers\n" - " -o Async Timeout - Timeout in uSec for async operations\n" - " -O Poll loop time out in seconds(max time a test is expected to last, default: 30sec)\n" - " -c Max number of outstanding operations for async operations\n" - " -w Wait in uSec between operations\n" - " -z Enable output to a CSV file (incompatible with -p)\n" - " -f When starting new loopback test, stop currently running tests on all devices\n" - "Examples:\n" - " Send 10000 transfers with a packet size of 128 bytes to all active connections\n" - " loopback_test -t transfer -s 128 -i 10000 -S /sys/bus/greybus/devices/ -D /sys/kernel/debug/gb_loopback/\n" - " loopback_test -t transfer -s 128 -i 10000 -m 0\n" - " Send 10000 transfers with a packet size of 128 bytes to connection 1 and 4\n" - " loopback_test -t transfer -s 128 -i 10000 -m 9\n" - " loopback_test -t ping -s 0 128 -i -S /sys/bus/greybus/devices/ -D /sys/kernel/debug/gb_loopback/\n" - " loopback_test -t sink -s 2030 -i 32768 -S /sys/bus/greybus/devices/ -D /sys/kernel/debug/gb_loopback/\n"); - abort(); -} - -static inline int device_enabled(struct loopback_test *t, int dev_idx) -{ - if (!t->mask || (t->mask & (1 << dev_idx))) - return 1; - - return 0; -} - -static void show_loopback_devices(struct loopback_test *t) -{ - int i; - - if (t->device_count == 0) { - printf("No loopback devices.\n"); - return; - } - - for (i = 0; i < t->device_count; i++) - printf("device[%d] = %s\n", i, t->devices[i].name); - -} - -int open_sysfs(const char *sys_pfx, const char *node, int flags) -{ - int fd; - char path[MAX_SYSFS_PATH]; - - snprintf(path, sizeof(path), "%s%s", sys_pfx, node); - fd = open(path, flags); - if (fd < 0) { - fprintf(stderr, "unable to open %s\n", path); - abort(); - } - return fd; -} - -int read_sysfs_int_fd(int fd, const char *sys_pfx, const char *node) -{ - char buf[SYSFS_MAX_INT]; - - if (read(fd, buf, sizeof(buf)) < 0) { - fprintf(stderr, "unable to read from %s%s %s\n", sys_pfx, node, - strerror(errno)); - close(fd); - abort(); - } - return atoi(buf); -} - -float read_sysfs_float_fd(int fd, const char *sys_pfx, const char *node) -{ - char buf[SYSFS_MAX_INT]; - - if (read(fd, buf, sizeof(buf)) < 0) { - - fprintf(stderr, "unable to read from %s%s %s\n", sys_pfx, node, - strerror(errno)); - close(fd); - abort(); - } - return atof(buf); -} - -int read_sysfs_int(const char *sys_pfx, const char *node) -{ - int fd, val; - - fd = open_sysfs(sys_pfx, node, O_RDONLY); - val = read_sysfs_int_fd(fd, sys_pfx, node); - close(fd); - return val; -} - -float read_sysfs_float(const char *sys_pfx, const char *node) -{ - int fd; - float val; - - fd = open_sysfs(sys_pfx, node, O_RDONLY); - val = read_sysfs_float_fd(fd, sys_pfx, node); - close(fd); - return val; -} - -void write_sysfs_val(const char *sys_pfx, const char *node, int val) -{ - int fd, len; - char buf[SYSFS_MAX_INT]; - - fd = open_sysfs(sys_pfx, node, O_RDWR); - len = snprintf(buf, sizeof(buf), "%d", val); - if (write(fd, buf, len) < 0) { - fprintf(stderr, "unable to write to %s%s %s\n", sys_pfx, node, - strerror(errno)); - close(fd); - abort(); - } - close(fd); -} - -static int get_results(struct loopback_test *t) -{ - struct loopback_device *d; - struct loopback_results *r; - int i; - - for (i = 0; i < t->device_count; i++) { - if (!device_enabled(t, i)) - continue; - - d = &t->devices[i]; - r = &d->results; - - r->error = read_sysfs_int(d->sysfs_entry, "error"); - r->request_min = read_sysfs_int(d->sysfs_entry, "requests_per_second_min"); - r->request_max = read_sysfs_int(d->sysfs_entry, "requests_per_second_max"); - r->request_avg = read_sysfs_float(d->sysfs_entry, "requests_per_second_avg"); - - r->latency_min = read_sysfs_int(d->sysfs_entry, "latency_min"); - r->latency_max = read_sysfs_int(d->sysfs_entry, "latency_max"); - r->latency_avg = read_sysfs_float(d->sysfs_entry, "latency_avg"); - - r->throughput_min = read_sysfs_int(d->sysfs_entry, "throughput_min"); - r->throughput_max = read_sysfs_int(d->sysfs_entry, "throughput_max"); - r->throughput_avg = read_sysfs_float(d->sysfs_entry, "throughput_avg"); - - r->apbridge_unipro_latency_min = - read_sysfs_int(d->sysfs_entry, "apbridge_unipro_latency_min"); - r->apbridge_unipro_latency_max = - read_sysfs_int(d->sysfs_entry, "apbridge_unipro_latency_max"); - r->apbridge_unipro_latency_avg = - read_sysfs_float(d->sysfs_entry, "apbridge_unipro_latency_avg"); - - r->gbphy_firmware_latency_min = - read_sysfs_int(d->sysfs_entry, "gbphy_firmware_latency_min"); - r->gbphy_firmware_latency_max = - read_sysfs_int(d->sysfs_entry, "gbphy_firmware_latency_max"); - r->gbphy_firmware_latency_avg = - read_sysfs_float(d->sysfs_entry, "gbphy_firmware_latency_avg"); - - r->request_jitter = r->request_max - r->request_min; - r->latency_jitter = r->latency_max - r->latency_min; - r->throughput_jitter = r->throughput_max - r->throughput_min; - r->apbridge_unipro_latency_jitter = - r->apbridge_unipro_latency_max - r->apbridge_unipro_latency_min; - r->gbphy_firmware_latency_jitter = - r->gbphy_firmware_latency_max - r->gbphy_firmware_latency_min; - - } - - /*calculate the aggregate results of all enabled devices */ - if (t->aggregate_output) { - r = &t->aggregate_results; - - r->request_min = get_request_min_aggregate(t); - r->request_max = get_request_max_aggregate(t); - r->request_avg = get_request_avg_aggregate(t); - - r->latency_min = get_latency_min_aggregate(t); - r->latency_max = get_latency_max_aggregate(t); - r->latency_avg = get_latency_avg_aggregate(t); - - r->throughput_min = get_throughput_min_aggregate(t); - r->throughput_max = get_throughput_max_aggregate(t); - r->throughput_avg = get_throughput_avg_aggregate(t); - - r->apbridge_unipro_latency_min = - get_apbridge_unipro_latency_min_aggregate(t); - r->apbridge_unipro_latency_max = - get_apbridge_unipro_latency_max_aggregate(t); - r->apbridge_unipro_latency_avg = - get_apbridge_unipro_latency_avg_aggregate(t); - - r->gbphy_firmware_latency_min = - get_gbphy_firmware_latency_min_aggregate(t); - r->gbphy_firmware_latency_max = - get_gbphy_firmware_latency_max_aggregate(t); - r->gbphy_firmware_latency_avg = - get_gbphy_firmware_latency_avg_aggregate(t); - - r->request_jitter = r->request_max - r->request_min; - r->latency_jitter = r->latency_max - r->latency_min; - r->throughput_jitter = r->throughput_max - r->throughput_min; - r->apbridge_unipro_latency_jitter = - r->apbridge_unipro_latency_max - r->apbridge_unipro_latency_min; - r->gbphy_firmware_latency_jitter = - r->gbphy_firmware_latency_max - r->gbphy_firmware_latency_min; - - } - - return 0; -} - -int format_output(struct loopback_test *t, - struct loopback_results *r, - const char *dev_name, - char *buf, int buf_len, - struct tm *tm) -{ - int len = 0; - - memset(buf, 0x00, buf_len); - len = snprintf(buf, buf_len, "%u-%u-%u %u:%u:%u", - tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, - tm->tm_hour, tm->tm_min, tm->tm_sec); - - if (t->porcelain) { - len += snprintf(&buf[len], buf_len - len, - "\n test:\t\t\t%s\n path:\t\t\t%s\n size:\t\t\t%u\n iterations:\t\t%u\n errors:\t\t%u\n async:\t\t\t%s\n", - t->test_name, - dev_name, - t->size, - t->iteration_max, - r->error, - t->use_async ? "Enabled" : "Disabled"); - - len += snprintf(&buf[len], buf_len - len, - " requests per-sec:\tmin=%u, max=%u, average=%f, jitter=%u\n", - r->request_min, - r->request_max, - r->request_avg, - r->request_jitter); - - len += snprintf(&buf[len], buf_len - len, - " ap-throughput B/s:\tmin=%u max=%u average=%f jitter=%u\n", - r->throughput_min, - r->throughput_max, - r->throughput_avg, - r->throughput_jitter); - len += snprintf(&buf[len], buf_len - len, - " ap-latency usec:\tmin=%u max=%u average=%f jitter=%u\n", - r->latency_min, - r->latency_max, - r->latency_avg, - r->latency_jitter); - len += snprintf(&buf[len], buf_len - len, - " apbridge-latency usec:\tmin=%u max=%u average=%f jitter=%u\n", - r->apbridge_unipro_latency_min, - r->apbridge_unipro_latency_max, - r->apbridge_unipro_latency_avg, - r->apbridge_unipro_latency_jitter); - - len += snprintf(&buf[len], buf_len - len, - " gbphy-latency usec:\tmin=%u max=%u average=%f jitter=%u\n", - r->gbphy_firmware_latency_min, - r->gbphy_firmware_latency_max, - r->gbphy_firmware_latency_avg, - r->gbphy_firmware_latency_jitter); - - } else { - len += snprintf(&buf[len], buf_len - len, ",%s,%s,%u,%u,%u", - t->test_name, dev_name, t->size, t->iteration_max, - r->error); - - len += snprintf(&buf[len], buf_len - len, ",%u,%u,%f,%u", - r->request_min, - r->request_max, - r->request_avg, - r->request_jitter); - - len += snprintf(&buf[len], buf_len - len, ",%u,%u,%f,%u", - r->latency_min, - r->latency_max, - r->latency_avg, - r->latency_jitter); - - len += snprintf(&buf[len], buf_len - len, ",%u,%u,%f,%u", - r->throughput_min, - r->throughput_max, - r->throughput_avg, - r->throughput_jitter); - - len += snprintf(&buf[len], buf_len - len, ",%u,%u,%f,%u", - r->apbridge_unipro_latency_min, - r->apbridge_unipro_latency_max, - r->apbridge_unipro_latency_avg, - r->apbridge_unipro_latency_jitter); - - len += snprintf(&buf[len], buf_len - len, ",%u,%u,%f,%u", - r->gbphy_firmware_latency_min, - r->gbphy_firmware_latency_max, - r->gbphy_firmware_latency_avg, - r->gbphy_firmware_latency_jitter); - } - - printf("\n%s\n", buf); - - return len; -} - -static int log_results(struct loopback_test *t) -{ - int fd, i, len, ret; - struct tm tm; - time_t local_time; - char file_name[MAX_SYSFS_PATH]; - char data[CSV_MAX_LINE]; - - local_time = time(NULL); - tm = *localtime(&local_time); - - /* - * file name will test_name_size_iteration_max.csv - * every time the same test with the same parameters is run we will then - * append to the same CSV with datestamp - representing each test - * dataset. - */ - if (t->file_output && !t->porcelain) { - snprintf(file_name, sizeof(file_name), "%s_%d_%d.csv", - t->test_name, t->size, t->iteration_max); - - fd = open(file_name, O_WRONLY | O_CREAT | O_APPEND, 0644); - if (fd < 0) { - fprintf(stderr, "unable to open %s for appending\n", file_name); - abort(); - } - - } - for (i = 0; i < t->device_count; i++) { - if (!device_enabled(t, i)) - continue; - - len = format_output(t, &t->devices[i].results, - t->devices[i].name, - data, sizeof(data), &tm); - if (t->file_output && !t->porcelain) { - ret = write(fd, data, len); - if (ret == -1) - fprintf(stderr, "unable to write %d bytes to csv.\n", len); - } - - } - - - if (t->aggregate_output) { - len = format_output(t, &t->aggregate_results, "aggregate", - data, sizeof(data), &tm); - if (t->file_output && !t->porcelain) { - ret = write(fd, data, len); - if (ret == -1) - fprintf(stderr, "unable to write %d bytes to csv.\n", len); - } - } - - if (t->file_output && !t->porcelain) - close(fd); - - return 0; -} - -int is_loopback_device(const char *path, const char *node) -{ - char file[MAX_SYSFS_PATH]; - - snprintf(file, MAX_SYSFS_PATH, "%s%s/iteration_count", path, node); - if (access(file, F_OK) == 0) - return 1; - return 0; -} - -int find_loopback_devices(struct loopback_test *t) -{ - struct dirent **namelist; - int i, n, ret; - unsigned int dev_id; - struct loopback_device *d; - - n = scandir(t->sysfs_prefix, &namelist, NULL, alphasort); - if (n < 0) { - perror("scandir"); - ret = -ENODEV; - goto baddir; - } - - /* Don't include '.' and '..' */ - if (n <= 2) { - ret = -ENOMEM; - goto done; - } - - for (i = 0; i < n; i++) { - ret = sscanf(namelist[i]->d_name, "gb_loopback%u", &dev_id); - if (ret != 1) - continue; - - if (!is_loopback_device(t->sysfs_prefix, namelist[i]->d_name)) - continue; - - if (t->device_count == MAX_NUM_DEVICES) { - fprintf(stderr, "max number of devices reached!\n"); - break; - } - - d = &t->devices[t->device_count++]; - snprintf(d->name, MAX_STR_LEN, "gb_loopback%u", dev_id); - - snprintf(d->sysfs_entry, MAX_SYSFS_PATH, "%s%s/", - t->sysfs_prefix, d->name); - - snprintf(d->debugfs_entry, MAX_SYSFS_PATH, "%sraw_latency_%s", - t->debugfs_prefix, d->name); - - if (t->debug) - printf("add %s %s\n", d->sysfs_entry, d->debugfs_entry); - } - - ret = 0; -done: - for (i = 0; i < n; i++) - free(namelist[i]); - free(namelist); -baddir: - return ret; -} - -static int open_poll_files(struct loopback_test *t) -{ - struct loopback_device *dev; - char buf[MAX_SYSFS_PATH + MAX_STR_LEN]; - char dummy; - int fds_idx = 0; - int i; - - for (i = 0; i < t->device_count; i++) { - dev = &t->devices[i]; - - if (!device_enabled(t, i)) - continue; - - snprintf(buf, sizeof(buf), "%s%s", dev->sysfs_entry, "iteration_count"); - t->fds[fds_idx].fd = open(buf, O_RDONLY); - if (t->fds[fds_idx].fd < 0) { - fprintf(stderr, "Error opening poll file!\n"); - goto err; - } - read(t->fds[fds_idx].fd, &dummy, 1); - t->fds[fds_idx].events = POLLERR | POLLPRI; - t->fds[fds_idx].revents = 0; - fds_idx++; - } - - t->poll_count = fds_idx; - - return 0; - -err: - for (i = 0; i < fds_idx; i++) - close(t->fds[i].fd); - - return -1; -} - -static int close_poll_files(struct loopback_test *t) -{ - int i; - for (i = 0; i < t->poll_count; i++) - close(t->fds[i].fd); - - return 0; -} -static int is_complete(struct loopback_test *t) -{ - int iteration_count; - int i; - - for (i = 0; i < t->device_count; i++) { - if (!device_enabled(t, i)) - continue; - - iteration_count = read_sysfs_int(t->devices[i].sysfs_entry, - "iteration_count"); - - /* at least one device did not finish yet */ - if (iteration_count != t->iteration_max) - return 0; - } - - return 1; -} - -static void stop_tests(struct loopback_test *t) -{ - int i; - - for (i = 0; i < t->device_count; i++) { - if (!device_enabled(t, i)) - continue; - write_sysfs_val(t->devices[i].sysfs_entry, "type", 0); - } -} - -static void handler(int sig) { /* do nothing */ } - -static int wait_for_complete(struct loopback_test *t) -{ - int number_of_events = 0; - char dummy; - int ret; - int i; - struct timespec *ts = NULL; - struct sigaction sa; - sigset_t mask_old, mask; - - sigemptyset(&mask); - sigemptyset(&mask_old); - sigaddset(&mask, SIGINT); - sigprocmask(SIG_BLOCK, &mask, &mask_old); - - sa.sa_handler = handler; - sa.sa_flags = 0; - sigemptyset(&sa.sa_mask); - if (sigaction(SIGINT, &sa, NULL) == -1) { - fprintf(stderr, "sigaction error\n"); - return -1; - } - - if (t->poll_timeout.tv_sec != 0) - ts = &t->poll_timeout; - - while (1) { - - ret = ppoll(t->fds, t->poll_count, ts, &mask_old); - if (ret <= 0) { - stop_tests(t); - fprintf(stderr, "Poll exit with errno %d\n", errno); - return -1; - } - - for (i = 0; i < t->poll_count; i++) { - if (t->fds[i].revents & POLLPRI) { - /* Dummy read to clear the event */ - read(t->fds[i].fd, &dummy, 1); - number_of_events++; - } - } - - if (number_of_events == t->poll_count) - break; - } - - if (!is_complete(t)) { - fprintf(stderr, "Iteration count did not finish!\n"); - return -1; - } - - return 0; -} - -static void prepare_devices(struct loopback_test *t) -{ - int i; - - /* - * Cancel any running tests on enabled devices. If - * stop_all option is given, stop test on all devices. - */ - for (i = 0; i < t->device_count; i++) - if (t->stop_all || device_enabled(t, i)) - write_sysfs_val(t->devices[i].sysfs_entry, "type", 0); - - - for (i = 0; i < t->device_count; i++) { - if (!device_enabled(t, i)) - continue; - - write_sysfs_val(t->devices[i].sysfs_entry, "us_wait", - t->us_wait); - - /* Set operation size */ - write_sysfs_val(t->devices[i].sysfs_entry, "size", t->size); - - /* Set iterations */ - write_sysfs_val(t->devices[i].sysfs_entry, "iteration_max", - t->iteration_max); - - if (t->use_async) { - write_sysfs_val(t->devices[i].sysfs_entry, "async", 1); - write_sysfs_val(t->devices[i].sysfs_entry, - "timeout", t->async_timeout); - write_sysfs_val(t->devices[i].sysfs_entry, - "outstanding_operations_max", - t->async_outstanding_operations); - } else { - write_sysfs_val(t->devices[i].sysfs_entry, "async", 0); - } - } -} - -static int start(struct loopback_test *t) -{ - int i; - - /* the test starts by writing test_id to the type file. */ - for (i = 0; i < t->device_count; i++) { - if (!device_enabled(t, i)) - continue; - - write_sysfs_val(t->devices[i].sysfs_entry, "type", t->test_id); - } - - return 0; -} - - -void loopback_run(struct loopback_test *t) -{ - int i; - int ret; - - for (i = 0; dict[i].name != NULL; i++) { - if (strstr(dict[i].name, t->test_name)) - t->test_id = dict[i].type; - } - if (!t->test_id) { - fprintf(stderr, "invalid test %s\n", t->test_name); - usage(); - return; - } - - prepare_devices(t); - - ret = open_poll_files(t); - if (ret) - goto err; - - start(t); - - ret = wait_for_complete(t); - close_poll_files(t); - if (ret) - goto err; - - - get_results(t); - - log_results(t); - - return; - -err: - printf("Error running test\n"); - return; -} - -static int sanity_check(struct loopback_test *t) -{ - int i; - - if (t->device_count == 0) { - fprintf(stderr, "No loopback devices found\n"); - return -1; - } - - for (i = 0; i < MAX_NUM_DEVICES; i++) { - if (!device_enabled(t, i)) - continue; - - if (t->mask && !strcmp(t->devices[i].name, "")) { - fprintf(stderr, "Bad device mask %x\n", (1 << i)); - return -1; - } - - } - - - return 0; -} - -int main(int argc, char *argv[]) -{ - int o, ret; - char *sysfs_prefix = "/sys/class/gb_loopback/"; - char *debugfs_prefix = "/sys/kernel/debug/gb_loopback/"; - - memset(&t, 0, sizeof(t)); - - while ((o = getopt(argc, argv, - "t:s:i:S:D:m:v::d::r::p::a::l::x::o:O:c:w:z::f::")) != -1) { - switch (o) { - case 't': - snprintf(t.test_name, MAX_STR_LEN, "%s", optarg); - break; - case 's': - t.size = atoi(optarg); - break; - case 'i': - t.iteration_max = atoi(optarg); - break; - case 'S': - snprintf(t.sysfs_prefix, MAX_SYSFS_PREFIX, "%s", optarg); - break; - case 'D': - snprintf(t.debugfs_prefix, MAX_SYSFS_PREFIX, "%s", optarg); - break; - case 'm': - t.mask = atol(optarg); - break; - case 'v': - t.verbose = 1; - break; - case 'd': - t.debug = 1; - break; - case 'r': - t.raw_data_dump = 1; - break; - case 'p': - t.porcelain = 1; - break; - case 'a': - t.aggregate_output = 1; - break; - case 'l': - t.list_devices = 1; - break; - case 'x': - t.use_async = 1; - break; - case 'o': - t.async_timeout = atoi(optarg); - break; - case 'O': - t.poll_timeout.tv_sec = atoi(optarg); - break; - case 'c': - t.async_outstanding_operations = atoi(optarg); - break; - case 'w': - t.us_wait = atoi(optarg); - break; - case 'z': - t.file_output = 1; - break; - case 'f': - t.stop_all = 1; - break; - default: - usage(); - return -EINVAL; - } - } - - if (!strcmp(t.sysfs_prefix, "")) - snprintf(t.sysfs_prefix, MAX_SYSFS_PREFIX, "%s", sysfs_prefix); - - if (!strcmp(t.debugfs_prefix, "")) - snprintf(t.debugfs_prefix, MAX_SYSFS_PREFIX, "%s", debugfs_prefix); - - ret = find_loopback_devices(&t); - if (ret) - return ret; - ret = sanity_check(&t); - if (ret) - return ret; - - if (t.list_devices) { - show_loopback_devices(&t); - return 0; - } - - if (t.test_name[0] == '\0' || t.iteration_max == 0) - usage(); - - if (t.async_timeout == 0) - t.async_timeout = DEFAULT_ASYNC_TIMEOUT; - - loopback_run(&t); - - return 0; -} From 93e4fc4c9adb1cf95a61981c7e0cb211fd9b2774 Mon Sep 17 00:00:00 2001 From: Vivek Aknurwar Date: Wed, 5 Apr 2023 11:49:50 -0700 Subject: [PATCH 195/269] ANDROID: abi_gki_aarch64_qcom: Add of_icc_get_from_provider of_icc_get_from_provider symbol is required for interconnect providers so they can make use of this API provided by interconnect framework. Hence add it to the symbol list. Bug: 277044127 Change-Id: I5eb65d24aee8f13e4d32d81236d165a6df6fbc28 Signed-off-by: Vivek Aknurwar --- android/abi_gki_aarch64.stg | 22 ++++++++++++++++++++-- android/abi_gki_aarch64_qcom | 1 + 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index daa0486b180c..c641c92a3e4c 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -1,4 +1,4 @@ -root_id: 0x25a8b173 +root_id: 0x84ea5130 void { id: 0x48b5725f } @@ -292961,6 +292961,11 @@ function { return_type_id: 0x04537b8c parameter_id: 0x1fa7df7c } +function { + id: 0x2d456d1f + return_type_id: 0x37cc86e2 + parameter_id: 0x0cc78943 +} function { id: 0x2d5eecc4 return_type_id: 0x18456730 @@ -349970,6 +349975,15 @@ elf_symbol { type_id: 0x2bcaa9c8 full_name: "of_icc_get" } +elf_symbol { + id: 0x08284f40 + name: "of_icc_get_from_provider" + is_defined: true + symbol_type: FUNCTION + crc: 0x091669bc + type_id: 0x2d456d1f + full_name: "of_icc_get_from_provider" +} elf_symbol { id: 0xbd1c7f26 name: "of_icc_xlate_onecell" @@ -367573,7 +367587,7 @@ elf_symbol { full_name: "zs_unmap_object" } symbols { - id: 0x25a8b173 + id: 0x84ea5130 symbol { key: "I_BDEV" value: 0x2dddbe52 @@ -380930,6 +380944,10 @@ symbols { key: "of_icc_get" value: 0x453bec03 } + symbol { + key: "of_icc_get_from_provider" + value: 0x08284f40 + } symbol { key: "of_icc_xlate_onecell" value: 0xbd1c7f26 diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index 30eb7d65141f..a82802a8d2d2 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -2330,6 +2330,7 @@ of_graph_parse_endpoint of_hwspin_lock_get_id of_icc_get + of_icc_get_from_provider of_icc_xlate_onecell of_iomap of_irq_find_parent From d6085639254bf9b09eb0066c3af8c7bc8fcf3c29 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 6 Apr 2023 14:41:06 +0000 Subject: [PATCH 196/269] Revert "block/io_uring: pass in issue_flags for uring_cmd task_work handling" This reverts commit e5da11825ef7c3f4760b235e04e225e7c8746279. It breaks the current Android kernel abi. It will be brought back at the next KABI break update. Bug: 161946584 Change-Id: Ifdde1037d7dd305c6165c44263ae4b20e11c0c02 Signed-off-by: Greg Kroah-Hartman --- drivers/block/ublk_drv.c | 31 +++++++++++++------------------ drivers/nvme/host/ioctl.c | 14 ++++++-------- include/linux/io_uring.h | 11 +++++------ io_uring/uring_cmd.c | 10 ++++------ 4 files changed, 28 insertions(+), 38 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 22a790d51284..4aec9be0ab77 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -656,8 +656,7 @@ static void __ublk_fail_req(struct ublk_queue *ubq, struct ublk_io *io, } } -static void ubq_complete_io_cmd(struct ublk_io *io, int res, - unsigned issue_flags) +static void ubq_complete_io_cmd(struct ublk_io *io, int res) { /* mark this cmd owned by ublksrv */ io->flags |= UBLK_IO_FLAG_OWNED_BY_SRV; @@ -669,7 +668,7 @@ static void ubq_complete_io_cmd(struct ublk_io *io, int res, io->flags &= ~UBLK_IO_FLAG_ACTIVE; /* tell ublksrv one io request is coming */ - io_uring_cmd_done(io->cmd, res, 0, issue_flags); + io_uring_cmd_done(io->cmd, res, 0); } #define UBLK_REQUEUE_DELAY_MS 3 @@ -686,8 +685,7 @@ static inline void __ublk_abort_rq(struct ublk_queue *ubq, mod_delayed_work(system_wq, &ubq->dev->monitor_work, 0); } -static inline void __ublk_rq_task_work(struct request *req, - unsigned issue_flags) +static inline void __ublk_rq_task_work(struct request *req) { struct ublk_queue *ubq = req->mq_hctx->driver_data; int tag = req->tag; @@ -725,7 +723,7 @@ static inline void __ublk_rq_task_work(struct request *req, pr_devel("%s: need get data. op %d, qid %d tag %d io_flags %x\n", __func__, io->cmd->cmd_op, ubq->q_id, req->tag, io->flags); - ubq_complete_io_cmd(io, UBLK_IO_RES_NEED_GET_DATA, issue_flags); + ubq_complete_io_cmd(io, UBLK_IO_RES_NEED_GET_DATA); return; } /* @@ -763,18 +761,17 @@ static inline void __ublk_rq_task_work(struct request *req, mapped_bytes >> 9; } - ubq_complete_io_cmd(io, UBLK_IO_RES_OK, issue_flags); + ubq_complete_io_cmd(io, UBLK_IO_RES_OK); } -static inline void ublk_forward_io_cmds(struct ublk_queue *ubq, - unsigned issue_flags) +static inline void ublk_forward_io_cmds(struct ublk_queue *ubq) { struct llist_node *io_cmds = llist_del_all(&ubq->io_cmds); struct ublk_rq_data *data, *tmp; io_cmds = llist_reverse_order(io_cmds); llist_for_each_entry_safe(data, tmp, io_cmds, node) - __ublk_rq_task_work(blk_mq_rq_from_pdu(data), issue_flags); + __ublk_rq_task_work(blk_mq_rq_from_pdu(data)); } static inline void ublk_abort_io_cmds(struct ublk_queue *ubq) @@ -786,12 +783,12 @@ static inline void ublk_abort_io_cmds(struct ublk_queue *ubq) __ublk_abort_rq(ubq, blk_mq_rq_from_pdu(data)); } -static void ublk_rq_task_work_cb(struct io_uring_cmd *cmd, unsigned issue_flags) +static void ublk_rq_task_work_cb(struct io_uring_cmd *cmd) { struct ublk_uring_cmd_pdu *pdu = ublk_get_uring_cmd_pdu(cmd); struct ublk_queue *ubq = pdu->ubq; - ublk_forward_io_cmds(ubq, issue_flags); + ublk_forward_io_cmds(ubq); } static void ublk_rq_task_work_fn(struct callback_head *work) @@ -800,9 +797,8 @@ static void ublk_rq_task_work_fn(struct callback_head *work) struct ublk_rq_data, work); struct request *req = blk_mq_rq_from_pdu(data); struct ublk_queue *ubq = req->mq_hctx->driver_data; - unsigned issue_flags = IO_URING_F_UNLOCKED; - ublk_forward_io_cmds(ubq, issue_flags); + ublk_forward_io_cmds(ubq); } static void ublk_queue_cmd(struct ublk_queue *ubq, struct request *rq) @@ -1056,8 +1052,7 @@ static void ublk_cancel_queue(struct ublk_queue *ubq) struct ublk_io *io = &ubq->ios[i]; if (io->flags & UBLK_IO_FLAG_ACTIVE) - io_uring_cmd_done(io->cmd, UBLK_IO_RES_ABORT, 0, - IO_URING_F_UNLOCKED); + io_uring_cmd_done(io->cmd, UBLK_IO_RES_ABORT, 0); } /* all io commands are canceled */ @@ -1300,7 +1295,7 @@ static int ublk_ch_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags) return -EIOCBQUEUED; out: - io_uring_cmd_done(cmd, ret, 0, issue_flags); + io_uring_cmd_done(cmd, ret, 0); pr_devel("%s: complete: cmd op %d, tag %d ret %x io_flags %x\n", __func__, cmd_op, tag, ret, io->flags); return -EIOCBQUEUED; @@ -2058,7 +2053,7 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd, break; } out: - io_uring_cmd_done(cmd, ret, 0, issue_flags); + io_uring_cmd_done(cmd, ret, 0); pr_devel("%s: cmd done ret %d cmd_op %x, dev id %d qid %d\n", __func__, ret, cmd->cmd_op, header->dev_id, header->queue_id); return -EIOCBQUEUED; diff --git a/drivers/nvme/host/ioctl.c b/drivers/nvme/host/ioctl.c index 8224675f8de2..81f5550b670d 100644 --- a/drivers/nvme/host/ioctl.c +++ b/drivers/nvme/host/ioctl.c @@ -387,8 +387,7 @@ static inline struct nvme_uring_cmd_pdu *nvme_uring_cmd_pdu( return (struct nvme_uring_cmd_pdu *)&ioucmd->pdu; } -static void nvme_uring_task_meta_cb(struct io_uring_cmd *ioucmd, - unsigned issue_flags) +static void nvme_uring_task_meta_cb(struct io_uring_cmd *ioucmd) { struct nvme_uring_cmd_pdu *pdu = nvme_uring_cmd_pdu(ioucmd); struct request *req = pdu->req; @@ -409,18 +408,17 @@ static void nvme_uring_task_meta_cb(struct io_uring_cmd *ioucmd, blk_rq_unmap_user(req->bio); blk_mq_free_request(req); - io_uring_cmd_done(ioucmd, status, result, issue_flags); + io_uring_cmd_done(ioucmd, status, result); } -static void nvme_uring_task_cb(struct io_uring_cmd *ioucmd, - unsigned issue_flags) +static void nvme_uring_task_cb(struct io_uring_cmd *ioucmd) { struct nvme_uring_cmd_pdu *pdu = nvme_uring_cmd_pdu(ioucmd); if (pdu->bio) blk_rq_unmap_user(pdu->bio); - io_uring_cmd_done(ioucmd, pdu->nvme_status, pdu->u.result, issue_flags); + io_uring_cmd_done(ioucmd, pdu->nvme_status, pdu->u.result); } static enum rq_end_io_ret nvme_uring_cmd_end_io(struct request *req, @@ -442,7 +440,7 @@ static enum rq_end_io_ret nvme_uring_cmd_end_io(struct request *req, * Otherwise, move the completion to task work. */ if (cookie != NULL && blk_rq_is_poll(req)) - nvme_uring_task_cb(ioucmd, IO_URING_F_UNLOCKED); + nvme_uring_task_cb(ioucmd); else io_uring_cmd_complete_in_task(ioucmd, nvme_uring_task_cb); @@ -464,7 +462,7 @@ static enum rq_end_io_ret nvme_uring_cmd_end_io_meta(struct request *req, * Otherwise, move the completion to task work. */ if (cookie != NULL && blk_rq_is_poll(req)) - nvme_uring_task_meta_cb(ioucmd, IO_URING_F_UNLOCKED); + nvme_uring_task_meta_cb(ioucmd); else io_uring_cmd_complete_in_task(ioucmd, nvme_uring_task_meta_cb); diff --git a/include/linux/io_uring.h b/include/linux/io_uring.h index a1484cdb3158..0ded9e271523 100644 --- a/include/linux/io_uring.h +++ b/include/linux/io_uring.h @@ -26,7 +26,7 @@ struct io_uring_cmd { const void *cmd; union { /* callback to defer completions to task context */ - void (*task_work_cb)(struct io_uring_cmd *cmd, unsigned); + void (*task_work_cb)(struct io_uring_cmd *cmd); /* used for polled completion */ void *cookie; }; @@ -38,10 +38,9 @@ struct io_uring_cmd { #if defined(CONFIG_IO_URING) int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw, struct iov_iter *iter, void *ioucmd); -void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, ssize_t res2, - unsigned issue_flags); +void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, ssize_t res2); void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd, - void (*task_work_cb)(struct io_uring_cmd *, unsigned)); + void (*task_work_cb)(struct io_uring_cmd *)); struct sock *io_uring_get_socket(struct file *file); void __io_uring_cancel(bool cancel_all); void __io_uring_free(struct task_struct *tsk); @@ -72,11 +71,11 @@ static inline int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw, return -EOPNOTSUPP; } static inline void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, - ssize_t ret2, unsigned issue_flags) + ssize_t ret2) { } static inline void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd, - void (*task_work_cb)(struct io_uring_cmd *, unsigned)) + void (*task_work_cb)(struct io_uring_cmd *)) { } static inline struct sock *io_uring_get_socket(struct file *file) diff --git a/io_uring/uring_cmd.c b/io_uring/uring_cmd.c index 92f310dfb9fd..18dfc5f6a8b7 100644 --- a/io_uring/uring_cmd.c +++ b/io_uring/uring_cmd.c @@ -15,13 +15,12 @@ static void io_uring_cmd_work(struct io_kiocb *req, bool *locked) { struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd); - unsigned issue_flags = *locked ? 0 : IO_URING_F_UNLOCKED; - ioucmd->task_work_cb(ioucmd, issue_flags); + ioucmd->task_work_cb(ioucmd); } void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd, - void (*task_work_cb)(struct io_uring_cmd *, unsigned)) + void (*task_work_cb)(struct io_uring_cmd *)) { struct io_kiocb *req = cmd_to_io_kiocb(ioucmd); @@ -43,8 +42,7 @@ static inline void io_req_set_cqe32_extra(struct io_kiocb *req, * Called by consumers of io_uring_cmd, if they originally returned * -EIOCBQUEUED upon receiving the command. */ -void io_uring_cmd_done(struct io_uring_cmd *ioucmd, ssize_t ret, ssize_t res2, - unsigned issue_flags) +void io_uring_cmd_done(struct io_uring_cmd *ioucmd, ssize_t ret, ssize_t res2) { struct io_kiocb *req = cmd_to_io_kiocb(ioucmd); @@ -58,7 +56,7 @@ void io_uring_cmd_done(struct io_uring_cmd *ioucmd, ssize_t ret, ssize_t res2, /* order with io_iopoll_req_issued() checking ->iopoll_complete */ smp_store_release(&req->iopoll_completed, 1); else - __io_req_complete(req, issue_flags); + __io_req_complete(req, 0); } EXPORT_SYMBOL_GPL(io_uring_cmd_done); From 78ba77a98a21254ab549ddc519cb3167124766d8 Mon Sep 17 00:00:00 2001 From: Amit Pundir Date: Thu, 6 Apr 2023 23:08:15 +0530 Subject: [PATCH 197/269] Revert "FROMGIT: scsi: ufs: ufs-qcom: Add support for finding max gear on new platforms" This reverts commit 15afcce5903c82dc79371f9d44711bc6ab0f43bb. UFS G4 patchseries broke RB5 (sm8250). Reverting a minimal set of patches to get the device booting again. Bug: 146449535 Change-Id: Ibf942e8c0151b52f8e6d48c9da510fdaca5fd38b Signed-off-by: Amit Pundir --- drivers/ufs/host/ufs-qcom.c | 2 -- drivers/ufs/host/ufs-qcom.h | 4 ---- 2 files changed, 6 deletions(-) diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c index 34fc453f3eb1..dae35e52b1e1 100644 --- a/drivers/ufs/host/ufs-qcom.c +++ b/drivers/ufs/host/ufs-qcom.c @@ -292,8 +292,6 @@ static u32 ufs_qcom_get_hs_gear(struct ufs_hba *hba) * Hence downgrade the maximum supported gear to HS-G2. */ return UFS_HS_G2; - } else if (host->hw_ver.major >= 0x4) { - return UFS_QCOM_MAX_GEAR(ufshcd_readl(hba, REG_UFS_PARAM0)); } /* Default is HS-G3 */ diff --git a/drivers/ufs/host/ufs-qcom.h b/drivers/ufs/host/ufs-qcom.h index 39e774254fb2..13219bf74779 100644 --- a/drivers/ufs/host/ufs-qcom.h +++ b/drivers/ufs/host/ufs-qcom.h @@ -105,10 +105,6 @@ enum { #define TMRLUT_HW_CGC_EN BIT(6) #define OCSC_HW_CGC_EN BIT(7) -/* bit definitions for REG_UFS_PARAM0 */ -#define MAX_HS_GEAR_MASK GENMASK(6, 4) -#define UFS_QCOM_MAX_GEAR(x) FIELD_GET(MAX_HS_GEAR_MASK, (x)) - /* bit definition for UFS_UFS_TEST_BUS_CTRL_n */ #define TEST_BUS_SUB_SEL_MASK GENMASK(4, 0) /* All XXX_SEL fields are 5 bits wide */ From 5160e718d269a5b74283ce565455c863de42ebcd Mon Sep 17 00:00:00 2001 From: Amit Pundir Date: Thu, 6 Apr 2023 23:23:51 +0530 Subject: [PATCH 198/269] Revert "FROMGIT: scsi: ufs: ufs-qcom: Add support for reinitializing the UFS device" This reverts commit e2379e8f901e85495b6320d64d4650c05bf53909. UFS G4 patchseries broke RB5 (sm8250). Reverting a minimal set of patches to get the device booting again. Bug: 146449535 Change-Id: If5ff418a051e9b22ab945723bc49705d7d682980 Signed-off-by: Amit Pundir --- drivers/ufs/host/ufs-qcom.c | 26 ++++---------------------- drivers/ufs/host/ufs-qcom.h | 2 -- include/ufs/ufshcd.h | 6 ------ 3 files changed, 4 insertions(+), 30 deletions(-) diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c index dae35e52b1e1..5fe1e02b1ffe 100644 --- a/drivers/ufs/host/ufs-qcom.c +++ b/drivers/ufs/host/ufs-qcom.c @@ -303,6 +303,7 @@ static int ufs_qcom_power_up_sequence(struct ufs_hba *hba) struct ufs_qcom_host *host = ufshcd_get_variant(hba); struct phy *phy = host->generic_phy; int ret; + bool is_rate_B = UFS_QCOM_LIMIT_HS_RATE == PA_HS_MODE_B; /* Reset UFS Host Controller and PHY */ ret = ufs_qcom_host_reset(hba); @@ -310,6 +311,9 @@ static int ufs_qcom_power_up_sequence(struct ufs_hba *hba) dev_warn(hba->dev, "%s: host reset returned %d\n", __func__, ret); + if (is_rate_B) + phy_set_mode(phy, PHY_MODE_UFS_HS_B); + /* phy initialization - calibrate the phy */ ret = phy_init(phy); if (ret) { @@ -318,8 +322,6 @@ static int ufs_qcom_power_up_sequence(struct ufs_hba *hba) return ret; } - phy_set_mode_ext(phy, PHY_MODE_UFS_HS_B, host->hs_gear); - /* power on phy - start serdes and phy's power and clocks */ ret = phy_power_on(phy); if (ret) { @@ -722,9 +724,6 @@ static int ufs_qcom_pwr_change_notify(struct ufs_hba *hba, return ret; } - /* Use the agreed gear */ - host->hs_gear = dev_req_params->gear_tx; - /* enable the device ref clock before changing to HS mode */ if (!ufshcd_is_hs_mode(&hba->pwr_info) && ufshcd_is_hs_mode(dev_req_params)) @@ -838,9 +837,6 @@ static void ufs_qcom_advertise_quirks(struct ufs_hba *hba) | UFSHCD_QUIRK_DME_PEER_ACCESS_AUTO_MODE | UFSHCD_QUIRK_BROKEN_PA_RXHSUNTERMCAP); } - - if (host->hw_ver.major > 0x3) - hba->quirks |= UFSHCD_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH; } static void ufs_qcom_set_caps(struct ufs_hba *hba) @@ -1048,12 +1044,6 @@ static int ufs_qcom_init(struct ufs_hba *hba) dev_warn(dev, "%s: failed to configure the testbus %d\n", __func__, err); - /* - * Power up the PHY using the minimum supported gear (UFS_HS_G2). - * Switching to max gear will be performed during reinit if supported. - */ - host->hs_gear = UFS_HS_G2; - return 0; out_variant_clear: @@ -1397,13 +1387,6 @@ static void ufs_qcom_config_scaling_param(struct ufs_hba *hba, } #endif -static void ufs_qcom_reinit_notify(struct ufs_hba *hba) -{ - struct ufs_qcom_host *host = ufshcd_get_variant(hba); - - phy_power_off(host->generic_phy); -} - /* Resources */ static const struct ufshcd_res_info ufs_res_info[RES_MAX] = { {.name = "ufs_mem",}, @@ -1650,7 +1633,6 @@ static const struct ufs_hba_variant_ops ufs_hba_qcom_vops = { .device_reset = ufs_qcom_device_reset, .config_scaling_param = ufs_qcom_config_scaling_param, .program_key = ufs_qcom_ice_program_key, - .reinit_notify = ufs_qcom_reinit_notify, .mcq_config_resource = ufs_qcom_mcq_config_resource, .get_hba_mac = ufs_qcom_get_hba_mac, .op_runtime_config = ufs_qcom_op_runtime_config, diff --git a/drivers/ufs/host/ufs-qcom.h b/drivers/ufs/host/ufs-qcom.h index 13219bf74779..078b7074169e 100644 --- a/drivers/ufs/host/ufs-qcom.h +++ b/drivers/ufs/host/ufs-qcom.h @@ -218,8 +218,6 @@ struct ufs_qcom_host { struct gpio_desc *device_reset; - u32 hs_gear; - int esi_base; bool esi_enabled; }; diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h index 643d5a4d051a..f6d12bab2fc2 100644 --- a/include/ufs/ufshcd.h +++ b/include/ufs/ufshcd.h @@ -610,12 +610,6 @@ enum ufshcd_quirks { * auto-hibernate capability but it's FASTAUTO only. */ UFSHCD_QUIRK_HIBERN_FASTAUTO = 1 << 18, - - /* - * This quirk needs to be enabled if the host controller needs - * to reinit the device after switching to maximum gear. - */ - UFSHCD_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH = 1 << 19, }; enum ufshcd_android_quirks { From f36e63725b7994eb671964cf256559564dcde082 Mon Sep 17 00:00:00 2001 From: Venkata Rao Kakani Date: Thu, 6 Apr 2023 17:48:10 +0530 Subject: [PATCH 199/269] ANDROID: ABI: Update QCOM symbol list following symbols are added to abi symbol list. snd_ctl_remove snd_pcm_stop snd_pcm_set_managed_buffer snd_hwdep_new snd_pcm_std_chmaps vm_map_ram vm_unmap_ram v4l2_fh_is_singular Bug: 273849241 Change-Id: I07062605ad2f82c4bd4e06610cd07aced1360f2e Signed-off-by: Venkata Rao Kakani --- android/abi_gki_aarch64.stg | 545 +++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_qcom | 8 + 2 files changed, 553 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index c641c92a3e4c..a5bdcb76a4fe 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -125,6 +125,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x2b2a4cd4 } +pointer_reference { + id: 0x006b8dfd + kind: POINTER + pointee_type_id: 0x2beed169 +} pointer_reference { id: 0x006cda7e kind: POINTER @@ -590,6 +595,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x2235eb47 } +pointer_reference { + id: 0x022383b2 + kind: POINTER + pointee_type_id: 0x22cee855 +} pointer_reference { id: 0x02268d94 kind: POINTER @@ -3850,6 +3860,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x182284a8 } +pointer_reference { + id: 0x0c9ac346 + kind: POINTER + pointee_type_id: 0x182beb86 +} pointer_reference { id: 0x0c9af3aa kind: POINTER @@ -9315,6 +9330,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x4910a95a } +pointer_reference { + id: 0x18d82e82 + kind: POINTER + pointee_type_id: 0x49205c94 +} pointer_reference { id: 0x18ded2d3 kind: POINTER @@ -9450,6 +9470,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x4c4281ed } +pointer_reference { + id: 0x1992ce85 + kind: POINTER + pointee_type_id: 0x4c0bdc8a +} pointer_reference { id: 0x1997473c kind: POINTER @@ -11155,6 +11180,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xaea51fc6 } +pointer_reference { + id: 0x21450ae9 + kind: POINTER + pointee_type_id: 0xaf54cd38 +} pointer_reference { id: 0x2145f7aa kind: POINTER @@ -11205,6 +11235,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xafb7c58e } +pointer_reference { + id: 0x217f99ba + kind: POINTER + pointee_type_id: 0xafbe8077 +} pointer_reference { id: 0x219262d4 kind: POINTER @@ -11425,6 +11460,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xa179a8c5 } +pointer_reference { + id: 0x22cee855 + kind: POINTER + pointee_type_id: 0xa17b47ca +} pointer_reference { id: 0x22d082e5 kind: POINTER @@ -21535,6 +21575,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x94b946cc } +pointer_reference { + id: 0x2fc06ea0 + kind: POINTER + pointee_type_id: 0x95415c1d +} pointer_reference { id: 0x2fc09bbf kind: POINTER @@ -21570,6 +21615,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9550eada } +pointer_reference { + id: 0x2fc40583 + kind: POINTER + pointee_type_id: 0x9550f091 +} +pointer_reference { + id: 0x2fc4a4b7 + kind: POINTER + pointee_type_id: 0x95527441 +} pointer_reference { id: 0x2fc4c761 kind: POINTER @@ -21580,6 +21635,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x955347a9 } +pointer_reference { + id: 0x2fc57d27 + kind: POINTER + pointee_type_id: 0x95551200 +} pointer_reference { id: 0x2fc6747c kind: POINTER @@ -21720,6 +21780,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x95dcd734 } +pointer_reference { + id: 0x2fe9613c + kind: POINTER + pointee_type_id: 0x95e5626e +} pointer_reference { id: 0x2fe9a253 kind: POINTER @@ -24220,6 +24285,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xfc71cff8 } +pointer_reference { + id: 0x358ed535 + kind: POINTER + pointee_type_id: 0xfc7bb24b +} pointer_reference { id: 0x358ff5b7 kind: POINTER @@ -35674,6 +35744,11 @@ array { number_of_elements: 4 element_type_id: 0x5e8dc7f4 } +array { + id: 0x9c404df6 + number_of_elements: 6 + element_type_id: 0xf784797b +} array { id: 0x9c59388e number_of_elements: 4 @@ -57373,6 +57448,12 @@ member { type_id: 0x18bd6530 offset: 192 } +member { + id: 0xb681e609 + name: "chip_ready" + type_id: 0x4585663f + offset: 352 +} member { id: 0x951e95bc name: "chip_select" @@ -70653,6 +70734,12 @@ member { type_id: 0x23230326 offset: 1984 } +member { + id: 0xce1ac4d6 + name: "dev" + type_id: 0x23230326 + offset: 2176 +} member { id: 0xce1ac5a8 name: "dev" @@ -75618,6 +75705,12 @@ member { type_id: 0x391f15ea offset: 1536 } +member { + id: 0x6d79728e + name: "driver_data" + type_id: 0x33756485 + offset: 704 +} member { id: 0x6da5d6a0 name: "driver_data" @@ -76162,6 +76255,30 @@ member { type_id: 0x74d29cf1 offset: 608 } +member { + id: 0xbf3c7083 + name: "dsp_load" + type_id: 0x2fe9613c + offset: 640 +} +member { + id: 0x7d8eb938 + name: "dsp_loaded" + type_id: 0x4585663f + offset: 8544 +} +member { + id: 0x7d8eb982 + name: "dsp_loaded" + type_id: 0x4585663f + offset: 320 +} +member { + id: 0x51fefdf1 + name: "dsp_status" + type_id: 0x2fc57d27 + offset: 576 +} member { id: 0x3913e589 name: "dsr" @@ -80935,6 +81052,13 @@ member { offset: 324 bitsize: 1 } +member { + id: 0x1520e961 + name: "exclusive" + type_id: 0x4585663f + offset: 8576 + bitsize: 1 +} member { id: 0x15889228 name: "exclusive" @@ -99414,6 +99538,12 @@ member { name: "id" type_id: 0x43acdd98 } +member { + id: 0xcc6c8d77 + name: "id" + type_id: 0x43acdd98 + offset: 32 +} member { id: 0xcc6d01b7 name: "id" @@ -99442,6 +99572,12 @@ member { name: "id" type_id: 0x5b5397f8 } +member { + id: 0xcc75f0e2 + name: "id" + type_id: 0x5adf57ae + offset: 224 +} member { id: 0xcc8634a1 name: "id" @@ -100625,6 +100761,12 @@ member { type_id: 0x5d8155a5 offset: 320 } +member { + id: 0x817b9489 + name: "iface" + type_id: 0x6720d32f + offset: 1120 +} member { id: 0x81e47045 name: "iface" @@ -101070,6 +101212,12 @@ member { name: "image" type_id: 0x18bd6530 } +member { + id: 0x7717c666 + name: "image" + type_id: 0x1df06cce + offset: 576 +} member { id: 0x77e682c9 name: "image" @@ -104671,6 +104819,12 @@ member { type_id: 0x2f595b5a offset: 768 } +member { + id: 0x4d4b9f7f + name: "ioctl" + type_id: 0x2fc06ea0 + offset: 384 +} member { id: 0x4d4bbccf name: "ioctl" @@ -104689,6 +104843,12 @@ member { type_id: 0x74d29cf1 offset: 6528 } +member { + id: 0x7f374859 + name: "ioctl_compat" + type_id: 0x2fc06ea0 + offset: 448 +} member { id: 0x71d5bbe1 name: "ioctl_ops" @@ -111584,6 +111744,12 @@ member { type_id: 0xe62ebf07 offset: 576 } +member { + id: 0xb5995149 + name: "length" + type_id: 0xf435685e + offset: 640 +} member { id: 0xb59953d1 name: "length" @@ -113233,6 +113399,11 @@ member { type_id: 0x01c91228 offset: 64 } +member { + id: 0x839f19f1 + name: "llseek" + type_id: 0x18d82e82 +} member { id: 0xb57cc749 name: "lm_break" @@ -122938,6 +123109,12 @@ member { name: "mmap" type_id: 0x07ba491c } +member { + id: 0x87fca00b + name: "mmap" + type_id: 0x2fc4a4b7 + offset: 512 +} member { id: 0x87fd15d3 name: "mmap" @@ -126634,6 +126811,12 @@ member { type_id: 0x0121d57c offset: 64 } +member { + id: 0x0dda82b2 + name: "name" + type_id: 0x01ef5f77 + offset: 480 +} member { id: 0x0dda8bac name: "name" @@ -126893,6 +127076,12 @@ member { type_id: 0x20fd6195 offset: 58176 } +member { + id: 0x0dffaa34 + name: "name" + type_id: 0x24cb52fe + offset: 32 +} member { id: 0xba9d0a41 name: "name_assign_type" @@ -133229,6 +133418,12 @@ member { type_id: 0x4585663f offset: 64 } +member { + id: 0xe0dce54c + name: "num_dsps" + type_id: 0x4585663f + offset: 288 +} member { id: 0x20cdc315 name: "num_elems" @@ -136220,6 +136415,12 @@ member { type_id: 0x2fc4c761 offset: 256 } +member { + id: 0xad9b4d09 + name: "open" + type_id: 0x2fc40583 + offset: 192 +} member { id: 0xad9b8e0f name: "open" @@ -136320,6 +136521,12 @@ member { type_id: 0xa7c362b0 offset: 2880 } +member { + id: 0x485159b3 + name: "open_mutex" + type_id: 0xa7c362b0 + offset: 8256 +} member { id: 0x48515a2b name: "open_mutex" @@ -136338,6 +136545,12 @@ member { type_id: 0x03913382 offset: 1472 } +member { + id: 0x60e6fc7c + name: "open_wait" + type_id: 0x03913382 + offset: 1856 +} member { id: 0x60e6ff81 name: "open_wait" @@ -136482,6 +136695,12 @@ member { name: "ops" type_id: 0xbf311330 } +member { + id: 0xaf67dd7d + name: "ops" + type_id: 0xecd302d8 + offset: 1152 +} member { id: 0xaf890e76 name: "ops" @@ -144936,6 +145155,12 @@ member { type_id: 0x01b63d17 offset: 320 } +member { + id: 0x5e152199 + name: "poll" + type_id: 0x006b8dfd + offset: 320 +} member { id: 0x5e15e341 name: "poll" @@ -148370,6 +148595,12 @@ member { type_id: 0x18bd6530 offset: 6208 } +member { + id: 0xf21ad0be + name: "private_data" + type_id: 0x18bd6530 + offset: 2048 +} member { id: 0xf21ad0fb name: "private_data" @@ -148484,6 +148715,12 @@ member { type_id: 0x0c0edcf8 offset: 1088 } +member { + id: 0x567ed7ab + name: "private_free" + type_id: 0x0c9ac346 + offset: 2112 +} member { id: 0x567f0e57 name: "private_free" @@ -154088,6 +154325,12 @@ member { type_id: 0x2ecc02be offset: 704 } +member { + id: 0x487c24fc + name: "read" + type_id: 0x217f99ba + offset: 64 +} member { id: 0x487dfa57 name: "read" @@ -156947,6 +157190,12 @@ member { type_id: 0x2eca967d offset: 64 } +member { + id: 0xaeb73635 + name: "release" + type_id: 0x2fc40583 + offset: 256 +} member { id: 0xe8e1b50a name: "release_agent_path" @@ -158842,6 +159091,12 @@ member { type_id: 0x5434eb98 offset: 96 } +member { + id: 0xd438fe7f + name: "reserved" + type_id: 0x5b5397f8 + offset: 384 +} member { id: 0xd43d43d1 name: "reserved" @@ -193968,6 +194223,12 @@ member { type_id: 0x33756485 offset: 256 } +member { + id: 0x8bd936f8 + name: "used" + type_id: 0x6720d32f + offset: 8512 +} member { id: 0x8bd93b07 name: "used" @@ -200794,6 +201055,12 @@ member { name: "write" type_id: 0x0e24c2f6 } +member { + id: 0x3421983a + name: "write" + type_id: 0x21450ae9 + offset: 128 +} member { id: 0x34294171 name: "write" @@ -248854,6 +249121,75 @@ struct_union { member_id: 0x7c00e79b } } +struct_union { + id: 0xa17b47ca + kind: STRUCT + name: "snd_hwdep" + definition { + bytesize: 1080 + member_id: 0x6c9f8205 + member_id: 0x7c00ebb3 + member_id: 0xea5500df + member_id: 0xcc75f0e2 + member_id: 0x0dda82b2 + member_id: 0x817b9489 + member_id: 0xaf67dd7d + member_id: 0x60e6fc7c + member_id: 0xf21ad0be + member_id: 0x567ed7ab + member_id: 0xce1ac4d6 + member_id: 0x485159b3 + member_id: 0x8bd936f8 + member_id: 0x7d8eb938 + member_id: 0x1520e961 + } +} +struct_union { + id: 0xfc7bb24b + kind: STRUCT + name: "snd_hwdep_dsp_image" + definition { + bytesize: 96 + member_id: 0xad7c8dd9 + member_id: 0x0dffaa34 + member_id: 0x7717c666 + member_id: 0xb5995149 + member_id: 0x6d79728e + } +} +struct_union { + id: 0x4c0bdc8a + kind: STRUCT + name: "snd_hwdep_dsp_status" + definition { + bytesize: 64 + member_id: 0xa624b11c + member_id: 0xcc6c8d77 + member_id: 0xe0dce54c + member_id: 0x7d8eb982 + member_id: 0xb681e609 + member_id: 0xd438fe7f + } +} +struct_union { + id: 0xecd302d8 + kind: STRUCT + name: "snd_hwdep_ops" + definition { + bytesize: 88 + member_id: 0x839f19f1 + member_id: 0x487c24fc + member_id: 0x3421983a + member_id: 0xad9b4d09 + member_id: 0xaeb73635 + member_id: 0x5e152199 + member_id: 0x4d4b9f7f + member_id: 0x7f374859 + member_id: 0x87fca00b + member_id: 0x51fefdf1 + member_id: 0xbf3c7083 + } +} struct_union { id: 0x7c95d721 kind: STRUCT @@ -287138,6 +287474,11 @@ function { parameter_id: 0x2668e644 parameter_id: 0x4a500dc8 } +function { + id: 0x182beb86 + return_type_id: 0x48b5725f + parameter_id: 0x22cee855 +} function { id: 0x184069d1 return_type_id: 0x48b5725f @@ -292432,6 +292773,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x3d435d11 } +function { + id: 0x1fc98171 + return_type_id: 0x48b5725f + parameter_id: 0x391f15ea + parameter_id: 0x4585663f +} function { id: 0x1fca95d0 return_type_id: 0x48b5725f @@ -292890,6 +293237,13 @@ function { parameter_id: 0x0258f96e parameter_id: 0x3e10b518 } +function { + id: 0x2beed169 + return_type_id: 0xb94e10c7 + parameter_id: 0x22cee855 + parameter_id: 0x18ea6ae3 + parameter_id: 0x28ddd932 +} function { id: 0x2c0dbc38 return_type_id: 0xb94e10c7 @@ -294212,6 +294566,14 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x3f54a013 } +function { + id: 0x49205c94 + return_type_id: 0x39470e64 + parameter_id: 0x22cee855 + parameter_id: 0x18ea6ae3 + parameter_id: 0x39470e64 + parameter_id: 0x6720d32f +} function { id: 0x4951a397 return_type_id: 0xc9082b19 @@ -294736,6 +295098,13 @@ function { return_type_id: 0x18bd6530 parameter_id: 0x0f78474f } +function { + id: 0x555557dd + return_type_id: 0x18bd6530 + parameter_id: 0x0b30ee00 + parameter_id: 0x4585663f + parameter_id: 0x6720d32f +} function { id: 0x558481fc return_type_id: 0x18bd6530 @@ -298919,6 +299288,14 @@ function { parameter_id: 0x6720d32f parameter_id: 0x914dbfdc } +function { + id: 0x9175015c + return_type_id: 0x6720d32f + parameter_id: 0x33f8b54b + parameter_id: 0x0483e6f8 + parameter_id: 0x6720d32f + parameter_id: 0x022383b2 +} function { id: 0x91761011 return_type_id: 0x6720d32f @@ -302570,6 +302947,14 @@ function { parameter_id: 0x2060db23 parameter_id: 0x295c7202 } +function { + id: 0x95415c1d + return_type_id: 0x6720d32f + parameter_id: 0x22cee855 + parameter_id: 0x18ea6ae3 + parameter_id: 0x4585663f + parameter_id: 0x33756485 +} function { id: 0x954268bb return_type_id: 0x6720d32f @@ -302644,6 +303029,19 @@ function { parameter_id: 0x064d6086 parameter_id: 0x30474302 } +function { + id: 0x9550f091 + return_type_id: 0x6720d32f + parameter_id: 0x22cee855 + parameter_id: 0x18ea6ae3 +} +function { + id: 0x95527441 + return_type_id: 0x6720d32f + parameter_id: 0x22cee855 + parameter_id: 0x18ea6ae3 + parameter_id: 0x0a134144 +} function { id: 0x955347a9 return_type_id: 0x6720d32f @@ -302655,6 +303053,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x234c60dd } +function { + id: 0x95551200 + return_type_id: 0x6720d32f + parameter_id: 0x22cee855 + parameter_id: 0x1992ce85 +} function { id: 0x95587b1f return_type_id: 0x6720d32f @@ -303067,6 +303471,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x2170d06d } +function { + id: 0x95e5626e + return_type_id: 0x6720d32f + parameter_id: 0x22cee855 + parameter_id: 0x358ed535 +} function { id: 0x95e66878 return_type_id: 0x6720d32f @@ -305440,6 +305850,12 @@ function { parameter_id: 0x17047654 parameter_id: 0x295c7202 } +function { + id: 0x98e6a470 + return_type_id: 0x6720d32f + parameter_id: 0x14b9453b + parameter_id: 0x1205844a +} function { id: 0x98e78094 return_type_id: 0x6720d32f @@ -306239,6 +306655,15 @@ function { return_type_id: 0x6720d32f parameter_id: 0x12c0ba43 } +function { + id: 0x99314acb + return_type_id: 0x6720d32f + parameter_id: 0x14b9453b + parameter_id: 0x6720d32f + parameter_id: 0x0258f96e + parameter_id: 0xf435685e + parameter_id: 0xf435685e +} function { id: 0x9932312d return_type_id: 0x6720d32f @@ -316676,6 +317101,14 @@ function { return_type_id: 0x0258f96e parameter_id: 0x09a83f1c } +function { + id: 0xaf54cd38 + return_type_id: 0xfc0e1dbd + parameter_id: 0x22cee855 + parameter_id: 0x3e10b518 + parameter_id: 0xfc0e1dbd + parameter_id: 0x0379c823 +} function { id: 0xaf57be52 return_type_id: 0x2584a3b9 @@ -316689,6 +317122,14 @@ function { parameter_id: 0x015f6fbc parameter_id: 0x13580d6c } +function { + id: 0xafbe8077 + return_type_id: 0xfc0e1dbd + parameter_id: 0x22cee855 + parameter_id: 0x0483e6f8 + parameter_id: 0xfc0e1dbd + parameter_id: 0x0379c823 +} function { id: 0xafc2e9e9 return_type_id: 0x6720d32f @@ -358313,6 +358754,15 @@ elf_symbol { type_id: 0x1d729530 full_name: "snd_ctl_notify" } +elf_symbol { + id: 0x20fc506b + name: "snd_ctl_remove" + is_defined: true + symbol_type: FUNCTION + crc: 0x2e7d048b + type_id: 0x91d0f233 + full_name: "snd_ctl_remove" +} elf_symbol { id: 0x74d92df1 name: "snd_dma_alloc_dir_pages" @@ -358331,6 +358781,15 @@ elf_symbol { type_id: 0x1c27266a full_name: "snd_dma_free_pages" } +elf_symbol { + id: 0xf8dd0a45 + name: "snd_hwdep_new" + is_defined: true + symbol_type: FUNCTION + crc: 0xe29d968e + type_id: 0x9175015c + full_name: "snd_hwdep_new" +} elf_symbol { id: 0x8a143ba0 name: "snd_info_create_card_entry" @@ -358565,6 +359024,15 @@ elf_symbol { type_id: 0x15b600dd full_name: "snd_pcm_period_elapsed" } +elf_symbol { + id: 0xba998ee2 + name: "snd_pcm_set_managed_buffer" + is_defined: true + symbol_type: FUNCTION + crc: 0x1fed70a4 + type_id: 0x99314acb + full_name: "snd_pcm_set_managed_buffer" +} elf_symbol { id: 0x74420600 name: "snd_pcm_set_managed_buffer_all" @@ -358583,6 +359051,24 @@ elf_symbol { type_id: 0x15694c5f full_name: "snd_pcm_set_ops" } +elf_symbol { + id: 0xb2f7eb17 + name: "snd_pcm_std_chmaps" + is_defined: true + symbol_type: OBJECT + crc: 0x04e1b99f + type_id: 0x9c404df6 + full_name: "snd_pcm_std_chmaps" +} +elf_symbol { + id: 0x8eb5b50d + name: "snd_pcm_stop" + is_defined: true + symbol_type: FUNCTION + crc: 0xe9c585ef + type_id: 0x98e6a470 + full_name: "snd_pcm_stop" +} elf_symbol { id: 0x0af8ff72 name: "snd_soc_add_component_controls" @@ -364697,6 +365183,15 @@ elf_symbol { type_id: 0x1cfc31a2 full_name: "v4l2_fh_init" } +elf_symbol { + id: 0x592a4678 + name: "v4l2_fh_is_singular" + is_defined: true + symbol_type: FUNCTION + crc: 0x07cd4162 + type_id: 0x91e301dd + full_name: "v4l2_fh_is_singular" +} elf_symbol { id: 0xff77e1ca name: "v4l2_fh_open" @@ -366263,6 +366758,15 @@ elf_symbol { type_id: 0x9f242d9f full_name: "vm_map_pages" } +elf_symbol { + id: 0xee1009c9 + name: "vm_map_ram" + is_defined: true + symbol_type: FUNCTION + crc: 0x59d0b54d + type_id: 0x555557dd + full_name: "vm_map_ram" +} elf_symbol { id: 0xdc09fb10 name: "vm_mmap" @@ -366290,6 +366794,15 @@ elf_symbol { type_id: 0xfc37fa4b full_name: "vm_node_stat" } +elf_symbol { + id: 0xef2c49d1 + name: "vm_unmap_ram" + is_defined: true + symbol_type: FUNCTION + crc: 0x03fd2571 + type_id: 0x1fc98171 + full_name: "vm_unmap_ram" +} elf_symbol { id: 0xca7f93d5 name: "vm_zone_stat" @@ -384648,6 +385161,10 @@ symbols { key: "snd_ctl_notify" value: 0x6b08a95c } + symbol { + key: "snd_ctl_remove" + value: 0x20fc506b + } symbol { key: "snd_dma_alloc_dir_pages" value: 0x74d92df1 @@ -384656,6 +385173,10 @@ symbols { key: "snd_dma_free_pages" value: 0xafa6f89a } + symbol { + key: "snd_hwdep_new" + value: 0xf8dd0a45 + } symbol { key: "snd_info_create_card_entry" value: 0x8a143ba0 @@ -384760,6 +385281,10 @@ symbols { key: "snd_pcm_period_elapsed" value: 0xf21d6619 } + symbol { + key: "snd_pcm_set_managed_buffer" + value: 0xba998ee2 + } symbol { key: "snd_pcm_set_managed_buffer_all" value: 0x74420600 @@ -384768,6 +385293,14 @@ symbols { key: "snd_pcm_set_ops" value: 0x92edca7e } + symbol { + key: "snd_pcm_std_chmaps" + value: 0xb2f7eb17 + } + symbol { + key: "snd_pcm_stop" + value: 0x8eb5b50d + } symbol { key: "snd_soc_add_component_controls" value: 0x0af8ff72 @@ -387488,6 +388021,10 @@ symbols { key: "v4l2_fh_init" value: 0x9499bc08 } + symbol { + key: "v4l2_fh_is_singular" + value: 0x592a4678 + } symbol { key: "v4l2_fh_open" value: 0xff77e1ca @@ -388184,6 +388721,10 @@ symbols { key: "vm_map_pages" value: 0x1c065008 } + symbol { + key: "vm_map_ram" + value: 0xee1009c9 + } symbol { key: "vm_mmap" value: 0xdc09fb10 @@ -388196,6 +388737,10 @@ symbols { key: "vm_node_stat" value: 0xaf85c216 } + symbol { + key: "vm_unmap_ram" + value: 0xef2c49d1 + } symbol { key: "vm_zone_stat" value: 0xca7f93d5 diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index a82802a8d2d2..8ef390a47d4a 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -3163,6 +3163,8 @@ smp_call_function smp_call_function_single smp_call_function_single_async + snd_ctl_remove + snd_hwdep_new snd_info_create_card_entry snd_info_create_module_entry snd_info_free_entry @@ -3171,6 +3173,9 @@ snd_jack_set_key snd_pcm_format_width _snd_pcm_hw_params_any + snd_pcm_set_managed_buffer + snd_pcm_std_chmaps + snd_pcm_stop snd_soc_add_component_controls snd_soc_card_get_kcontrol snd_soc_card_jack_new @@ -3966,6 +3971,7 @@ v4l2_fh_del v4l2_fh_exit v4l2_fh_init + v4l2_fh_is_singular v4l2_fh_open v4l2_fh_release v4l2_m2m_ctx_init @@ -4068,9 +4074,11 @@ vm_insert_page vm_iomap_memory vm_map_pages + vm_map_ram vm_mmap vm_munmap vm_node_stat + vm_unmap_ram vm_zone_stat vprintk vring_create_virtqueue From f65b52f60de9682195af99d9cf1e25cc53003756 Mon Sep 17 00:00:00 2001 From: Ramji Jiyani Date: Thu, 6 Apr 2023 18:46:58 +0000 Subject: [PATCH 200/269] ANDROID: GKI: Convert 80211 modules as unprotected Convert cfg80211 & mac80211 GKI modules as unprotected. This allows vendors to override these modules with unsigned vendor versions. Bug: 274416891 Test: TH Change-Id: I2d064c968f304b62d3b704611aaa11de1eb2762b Signed-off-by: Ramji Jiyani --- android/abi_gki_protected_exports_aarch64 | 268 ---------------------- android/gki_aarch64_protected_modules | 2 - 2 files changed, 270 deletions(-) diff --git a/android/abi_gki_protected_exports_aarch64 b/android/abi_gki_protected_exports_aarch64 index cc1bef8b6c0f..9fb9385e392c 100644 --- a/android/abi_gki_protected_exports_aarch64 +++ b/android/abi_gki_protected_exports_aarch64 @@ -1,14 +1,9 @@ -__cfg80211_alloc_event_skb -__cfg80211_alloc_reply_skb -__cfg80211_radar_event -__cfg80211_send_event_skb __hci_cmd_send __hci_cmd_sync __hci_cmd_sync_ev __hci_cmd_sync_sk __hci_cmd_sync_status __hci_cmd_sync_status_sk -__ieee80211_schedule_txq __nfc_alloc_vendor_cmd_reply_skb alloc_can_err_skb alloc_can_skb @@ -18,7 +13,6 @@ alloc_canxl_skb arc4_crypt arc4_setkey baswap -bridge_tunnel_header bt_accept_dequeue bt_accept_enqueue bt_accept_unlink @@ -83,105 +77,8 @@ can_rx_unregister can_send can_skb_get_frame_len can_sock_destruct -cfg80211_any_usable_channels -cfg80211_assoc_comeback -cfg80211_assoc_failure -cfg80211_auth_timeout -cfg80211_background_cac_abort -cfg80211_bss_color_notify -cfg80211_bss_flush -cfg80211_bss_iter -cfg80211_cac_event -cfg80211_calculate_bitrate -cfg80211_ch_switch_notify -cfg80211_ch_switch_started_notify -cfg80211_chandef_compatible -cfg80211_chandef_create -cfg80211_chandef_dfs_required -cfg80211_chandef_usable -cfg80211_chandef_valid -cfg80211_check_combinations -cfg80211_check_station_change -cfg80211_classify8021d -cfg80211_conn_failed -cfg80211_connect_done -cfg80211_control_port_tx_status -cfg80211_cqm_beacon_loss_notify -cfg80211_cqm_pktloss_notify -cfg80211_cqm_rssi_notify -cfg80211_cqm_txe_notify -cfg80211_crit_proto_stopped -cfg80211_del_sta_sinfo -cfg80211_disconnected -cfg80211_external_auth_request -cfg80211_find_elem_match -cfg80211_find_vendor_elem -cfg80211_free_nan_func -cfg80211_ft_event -cfg80211_get_bss -cfg80211_get_drvinfo -cfg80211_get_ies_channel_number -cfg80211_get_iftype_ext_capa -cfg80211_get_p2p_attr -cfg80211_get_station -cfg80211_gtk_rekey_notify -cfg80211_ibss_joined -cfg80211_iftype_allowed -cfg80211_inform_bss_data -cfg80211_inform_bss_frame_data -cfg80211_is_element_inherited -cfg80211_iter_combinations -cfg80211_merge_profile -cfg80211_mgmt_tx_status_ext -cfg80211_michael_mic_failure -cfg80211_nan_func_terminated -cfg80211_nan_match -cfg80211_new_sta -cfg80211_notify_new_peer_candidate -cfg80211_pmksa_candidate_notify -cfg80211_pmsr_complete -cfg80211_pmsr_report -cfg80211_port_authorized -cfg80211_probe_status -cfg80211_put_bss -cfg80211_ready_on_channel -cfg80211_ref_bss -cfg80211_reg_can_beacon -cfg80211_reg_can_beacon_relax -cfg80211_register_netdevice -cfg80211_remain_on_channel_expired -cfg80211_report_obss_beacon_khz -cfg80211_report_wowlan_wakeup -cfg80211_roamed -cfg80211_rx_assoc_resp -cfg80211_rx_control_port -cfg80211_rx_mgmt_ext -cfg80211_rx_mlme_mgmt -cfg80211_rx_spurious_frame -cfg80211_rx_unexpected_4addr_frame -cfg80211_rx_unprot_mlme_mgmt -cfg80211_scan_done -cfg80211_sched_scan_results -cfg80211_sched_scan_stopped -cfg80211_sched_scan_stopped_locked -cfg80211_send_layer2_update -cfg80211_shutdown_all_interfaces -cfg80211_sinfo_alloc_tid_stats -cfg80211_sta_opmode_change_notify -cfg80211_stop_iface -cfg80211_tdls_oper_request -cfg80211_tx_mgmt_expired -cfg80211_tx_mlme_mgmt -cfg80211_unlink_bss -cfg80211_unregister_wdev -cfg80211_update_owe_info_event -cfg80211_valid_disable_subchannel_bitmap -cfg80211_vendor_cmd_get_sender -cfg80211_vendor_cmd_reply close_candev free_candev -freq_reg_info -get_wiphy_regdom h4_recv_buf hci_alloc_dev_priv hci_cmd_sync @@ -210,151 +107,6 @@ hci_uart_unregister_device hci_unregister_cb hci_unregister_dev hidp_hid_driver -ieee80211_alloc_hw_nm -ieee80211_amsdu_to_8023s -ieee80211_ap_probereq_get -ieee80211_ave_rssi -ieee80211_beacon_cntdwn_is_complete -ieee80211_beacon_get_template -ieee80211_beacon_get_tim -ieee80211_beacon_loss -ieee80211_beacon_set_cntdwn -ieee80211_beacon_update_cntdwn -ieee80211_bss_get_elem -ieee80211_calc_rx_airtime -ieee80211_calc_tx_airtime -ieee80211_chandef_to_operating_class -ieee80211_channel_switch_disconnect -ieee80211_channel_to_freq_khz -ieee80211_chswitch_done -ieee80211_color_change_finish -ieee80211_connection_loss -ieee80211_cqm_beacon_loss_notify -ieee80211_cqm_rssi_notify -ieee80211_csa_finish -ieee80211_ctstoself_duration -ieee80211_ctstoself_get -ieee80211_data_to_8023_exthdr -ieee80211_disable_rssi_reports -ieee80211_disconnect -ieee80211_enable_rssi_reports -ieee80211_find_sta -ieee80211_find_sta_by_ifaddr -ieee80211_find_sta_by_link_addrs -ieee80211_free_hw -ieee80211_free_txskb -ieee80211_freq_khz_to_channel -ieee80211_generic_frame_duration -ieee80211_get_bssid -ieee80211_get_buffered_bc -ieee80211_get_channel_khz -ieee80211_get_fils_discovery_tmpl -ieee80211_get_hdrlen_from_skb -ieee80211_get_key_rx_seq -ieee80211_get_mesh_hdrlen -ieee80211_get_num_supported_channels -ieee80211_get_response_rate -ieee80211_get_tkip_p1k_iv -ieee80211_get_tkip_p2k -ieee80211_get_tkip_rx_p1k -ieee80211_get_tx_rates -ieee80211_get_unsol_bcast_probe_resp_tmpl -ieee80211_get_vht_max_nss -ieee80211_gtk_rekey_add -ieee80211_gtk_rekey_notify -ieee80211_hdrlen -ieee80211_hw_restart_disconnect -ieee80211_ie_split_ric -ieee80211_iter_chan_contexts_atomic -ieee80211_iter_keys -ieee80211_iter_keys_rcu -ieee80211_iterate_active_interfaces_atomic -ieee80211_iterate_active_interfaces_mtx -ieee80211_iterate_interfaces -ieee80211_iterate_stations -ieee80211_iterate_stations_atomic -ieee80211_key_mic_failure -ieee80211_key_replay -ieee80211_manage_rx_ba_offl -ieee80211_mandatory_rates -ieee80211_mark_rx_ba_filtered_frames -ieee80211_nan_func_match -ieee80211_nan_func_terminated -ieee80211_next_txq -ieee80211_nullfunc_get -ieee80211_operating_class_to_band -ieee80211_parse_p2p_noa -ieee80211_probereq_get -ieee80211_proberesp_get -ieee80211_pspoll_get -ieee80211_queue_delayed_work -ieee80211_queue_stopped -ieee80211_queue_work -ieee80211_radar_detected -ieee80211_radiotap_iterator_init -ieee80211_radiotap_iterator_next -ieee80211_rate_control_register -ieee80211_rate_control_unregister -ieee80211_ready_on_channel -ieee80211_register_hw -ieee80211_remain_on_channel_expired -ieee80211_remove_key -ieee80211_report_low_ack -ieee80211_report_wowlan_wakeup -ieee80211_request_smps -ieee80211_reserve_tid -ieee80211_restart_hw -ieee80211_resume_disconnect -ieee80211_rts_duration -ieee80211_rts_get -ieee80211_rx_ba_timer_expired -ieee80211_rx_irqsafe -ieee80211_rx_list -ieee80211_rx_napi -ieee80211_s1g_channel_width -ieee80211_scan_completed -ieee80211_sched_scan_results -ieee80211_sched_scan_stopped -ieee80211_send_bar -ieee80211_send_eosp_nullfunc -ieee80211_set_active_links -ieee80211_set_active_links_async -ieee80211_set_key_rx_seq -ieee80211_sta_block_awake -ieee80211_sta_eosp -ieee80211_sta_ps_transition -ieee80211_sta_pspoll -ieee80211_sta_recalc_aggregates -ieee80211_sta_register_airtime -ieee80211_sta_set_buffered -ieee80211_sta_uapsd_trigger -ieee80211_start_tx_ba_cb_irqsafe -ieee80211_start_tx_ba_session -ieee80211_stop_queue -ieee80211_stop_queues -ieee80211_stop_rx_ba_session -ieee80211_stop_tx_ba_cb_irqsafe -ieee80211_stop_tx_ba_session -ieee80211_tdls_oper_request -ieee80211_tkip_add_iv -ieee80211_tx_dequeue -ieee80211_tx_prepare_skb -ieee80211_tx_rate_update -ieee80211_tx_status -ieee80211_tx_status_8023 -ieee80211_tx_status_ext -ieee80211_tx_status_irqsafe -ieee80211_txq_airtime_check -ieee80211_txq_get_depth -ieee80211_txq_may_transmit -ieee80211_txq_schedule_start -ieee80211_unregister_hw -ieee80211_unreserve_tid -ieee80211_update_mu_groups -ieee80211_update_p2p_noa -ieee80211_vif_to_wdev -ieee80211_wake_queue -ieee80211_wake_queues ieee802154_alloc_hw ieee802154_configure_durations ieee802154_free_hw @@ -371,7 +123,6 @@ ieee802154_wake_queue ieee802154_xmit_complete ieee802154_xmit_error ieee802154_xmit_hw_error -ieeee80211_obss_color_collision_notify l2cap_add_psm l2cap_chan_close l2cap_chan_connect @@ -460,16 +211,8 @@ qca_send_pre_shutdown_cmd qca_set_bdaddr qca_set_bdaddr_rome qca_uart_setup -rate_control_set_rates -reg_initiator_name -reg_query_regdb_wmm register_candev register_pppox_proto -regulatory_hint -regulatory_pre_cac_allowed -regulatory_set_wiphy_regd -regulatory_set_wiphy_regd_sync -rfc1042_header rfkill_alloc rfkill_blocked rfkill_destroy @@ -520,17 +263,6 @@ usb_serial_port_softint usb_serial_register_drivers usb_serial_resume usb_serial_suspend -wdev_chandef -wdev_to_ieee80211_vif -wiphy_apply_custom_regulatory -wiphy_free -wiphy_new_nm -wiphy_read_of_freq_limits -wiphy_register -wiphy_rfkill_set_hw_state_reason -wiphy_rfkill_start_polling -wiphy_to_ieee80211_hw -wiphy_unregister wpan_phy_find wpan_phy_for_each wpan_phy_free diff --git a/android/gki_aarch64_protected_modules b/android/gki_aarch64_protected_modules index fa169fc3f527..aaa5647ef51d 100644 --- a/android/gki_aarch64_protected_modules +++ b/android/gki_aarch64_protected_modules @@ -37,11 +37,9 @@ net/ieee802154/ieee802154.ko net/ieee802154/ieee802154_socket.ko net/l2tp/l2tp_core.ko net/l2tp/l2tp_ppp.ko -net/mac80211/mac80211.ko net/mac802154/mac802154.ko net/nfc/nfc.ko net/rfkill/rfkill.ko net/tipc/diag.ko net/tipc/tipc.ko -net/wireless/cfg80211.ko From 86136fdb8d5ebfb2c7ad9957ab47678195a0c3da Mon Sep 17 00:00:00 2001 From: Guru Das Srinagesh Date: Wed, 5 Apr 2023 15:09:59 -0700 Subject: [PATCH 201/269] ANDROID: abi_gki_aarch64_qcom: Further update symbol list Add the following symbols to sync device list with ACK. Symbols added: drm_atomic_get_old_private_obj_state insert_resource msi_first_desc msi_next_desc remove_resource ufshcd_mcq_config_esi ufshcd_mcq_enable_esi ufshcd_mcq_poll_cqe_nolock ufshcd_mcq_write_cqis ufshcd_system_freeze ufshcd_system_restore ufshcd_system_thaw Some symbols have merely been sorted correctly: blkdev_get_by_dev power_supply_reg_notifier power_supply_unreg_notifier si_swapinfo __traceiter_android_rvh_shmem_get_folio __tracepoint_android_rvh_shmem_get_folio Some symbols were added in duplicate. Remove them: sync_file_create sync_file_get_fence drm_mode_prune_invalid drm_connector_list_update Bug: 277087114 Change-Id: Iddf4ea6e9a7f7d9fdd36099bd00d3b36ad6593b0 Signed-off-by: Guru Das Srinagesh --- android/abi_gki_aarch64_qcom | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index 8ef390a47d4a..190128b84d11 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -91,6 +91,7 @@ bit_wait bit_wait_timeout __blk_alloc_disk + blkdev_get_by_dev blk_execute_rq blk_execute_rq_nowait __blk_mq_alloc_disk @@ -130,7 +131,6 @@ blk_rq_map_user_io blk_rq_unmap_user blk_status_to_errno - blkdev_get_by_dev blocking_notifier_call_chain blocking_notifier_chain_register blocking_notifier_chain_unregister @@ -924,6 +924,7 @@ drm_atomic_get_crtc_state drm_atomic_get_new_connector_for_encoder drm_atomic_get_new_private_obj_state + drm_atomic_get_old_private_obj_state drm_atomic_get_plane_state drm_atomic_get_private_obj_state drm_atomic_helper_bridge_destroy_state @@ -1093,8 +1094,6 @@ drm_modeset_unlock_all drm_mode_sort drm_mode_vrefresh - drm_mode_prune_invalid - drm_connector_list_update drm_object_attach_property drm_object_property_set_value drm_of_component_match_add @@ -1739,6 +1738,7 @@ input_unregister_device input_unregister_handle input_unregister_handler + insert_resource interval_tree_insert interval_tree_iter_first interval_tree_iter_next @@ -2136,7 +2136,9 @@ module_put __module_put_and_kthread_exit __msecs_to_jiffies + msi_first_desc msi_get_virq + msi_next_desc msleep msleep_interruptible mtree_load @@ -2603,11 +2605,11 @@ power_supply_get_drvdata power_supply_get_property power_supply_put - power_supply_reg_notifier power_supply_register + power_supply_reg_notifier power_supply_set_property - power_supply_unreg_notifier power_supply_unregister + power_supply_unreg_notifier ppp_channel_index ppp_dev_name ppp_input @@ -2864,6 +2866,7 @@ remove_cpu remove_memory remove_proc_entry + remove_resource remove_wait_queue report_iommu_fault request_any_context_irq @@ -3090,7 +3093,6 @@ show_regs si_mem_available si_meminfo - si_swapinfo simple_attr_open simple_attr_read simple_attr_release @@ -3101,6 +3103,7 @@ single_open single_open_size single_release + si_swapinfo sk_alloc skb_add_rx_frag skb_append_pagefrags @@ -3357,8 +3360,6 @@ synchronize_rcu_tasks_trace synchronize_srcu synchronize_srcu_expedited - sync_file_create - sync_file_get_fence synth_event_create synth_event_delete syscon_node_to_regmap @@ -3498,12 +3499,12 @@ __traceiter_android_rvh_select_fallback_rq __traceiter_android_rvh_select_task_rq_fair __traceiter_android_rvh_select_task_rq_rt - __traceiter_android_rvh_shmem_get_folio __traceiter_android_rvh_set_balance_anon_file_reclaim __traceiter_android_rvh_set_cpus_allowed_by_task __traceiter_android_rvh_setscheduler __traceiter_android_rvh_set_task_cpu __traceiter_android_rvh_set_user_nice + __traceiter_android_rvh_shmem_get_folio __traceiter_android_rvh_show_max_freq __traceiter_android_rvh_tick_entry __traceiter_android_rvh_try_to_wake_up @@ -3627,12 +3628,12 @@ __tracepoint_android_rvh_select_fallback_rq __tracepoint_android_rvh_select_task_rq_fair __tracepoint_android_rvh_select_task_rq_rt - __tracepoint_android_rvh_shmem_get_folio __tracepoint_android_rvh_set_balance_anon_file_reclaim __tracepoint_android_rvh_set_cpus_allowed_by_task __tracepoint_android_rvh_setscheduler __tracepoint_android_rvh_set_task_cpu __tracepoint_android_rvh_set_user_nice + __tracepoint_android_rvh_shmem_get_folio __tracepoint_android_rvh_show_max_freq __tracepoint_android_rvh_tick_entry __tracepoint_android_rvh_try_to_wake_up @@ -3796,6 +3797,10 @@ ufshcd_get_local_unipro_ver ufshcd_hba_stop ufshcd_hold + ufshcd_mcq_config_esi + ufshcd_mcq_enable_esi + ufshcd_mcq_poll_cqe_nolock + ufshcd_mcq_write_cqis ufshcd_pltfrm_init ufshcd_pltfrm_shutdown ufshcd_query_attr @@ -3807,8 +3812,11 @@ ufshcd_runtime_resume ufshcd_runtime_suspend ufshcd_suspend_prepare + ufshcd_system_freeze + ufshcd_system_restore ufshcd_system_resume ufshcd_system_suspend + ufshcd_system_thaw ufshcd_uic_hibern8_enter ufshcd_uic_hibern8_exit __uio_register_device From 0bcb2dc28cc2aff3edc534fb6e23efc6a24afee6 Mon Sep 17 00:00:00 2001 From: Stephen Dickey Date: Thu, 6 Apr 2023 16:12:40 -0700 Subject: [PATCH 202/269] ANDROID: abi_gki_aarch64_qcom: update abi Update the qcom symbol list for task_rq_lock Symbols added: task_rq_lock Bug: 277199661 Change-Id: I53163927610bbe110af1e02b8f91fa5af3a1f742 Signed-off-by: Stephen Dickey --- android/abi_gki_aarch64_qcom | 1 + 1 file changed, 1 insertion(+) diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index 190128b84d11..3758e8c2f125 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -3408,6 +3408,7 @@ tasklist_lock __task_pid_nr_ns __task_rq_lock + task_rq_lock tcp_hashinfo thermal_cdev_update thermal_cooling_device_register From 702d62d94308dcf2bda908a1211bfcbd429f62a5 Mon Sep 17 00:00:00 2001 From: Adrien Thierry Date: Wed, 29 Mar 2023 16:54:25 -0400 Subject: [PATCH 203/269] BACKPORT: FROMLIST: Revert "scsi: ufs: core: Initialize devfreq synchronously" This reverts commit 7dafc3e007918384c8693ff8d70381b5c1e9c247. This patch introduced a regression [1] where hba->pwr_info is used before being initialized, which could create issues in ufshcd_scale_gear(). Revert it until a better solution is found. [1] https://lore.kernel.org/all/CAGaU9a_PMZhqv+YJ0r3w-hJMsR922oxW6Kg59vw+oen-NZ6Otw@mail.gmail.com Fixes: 7dafc3e00791 ("scsi: ufs: core: Initialize devfreq synchronously") Change-Id: I83fcf15852f51ca24aa14700ea3d5a9c1bd721ec Signed-off-by: Adrien Thierry [ bvanassche: left out the struct ufs_hba changes because of the GKI ] Link: https://lore.kernel.org/linux-scsi/20230329205426.46393-1-athierry@redhat.com/ Signed-off-by: Bart Van Assche --- drivers/ufs/core/ufshcd.c | 47 +++++++++++++-------------------------- 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 8ea1da64a263..d1a228e1f6bf 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -1416,13 +1416,6 @@ static int ufshcd_devfreq_target(struct device *dev, struct ufs_clk_info *clki; unsigned long irq_flags; - /* - * Skip devfreq if UFS initialization is not finished. - * Otherwise ufs could be in a inconsistent state. - */ - if (!smp_load_acquire(&hba->logical_unit_scan_finished)) - return 0; - if (!ufshcd_is_clkscaling_supported(hba)) return -EINVAL; @@ -8435,6 +8428,22 @@ static int ufshcd_add_lus(struct ufs_hba *hba) if (ret) goto out; + /* Initialize devfreq after UFS device is detected */ + if (ufshcd_is_clkscaling_supported(hba)) { + memcpy(&hba->clk_scaling.saved_pwr_info.info, + &hba->pwr_info, + sizeof(struct ufs_pa_layer_attr)); + hba->clk_scaling.saved_pwr_info.is_valid = true; + hba->clk_scaling.is_allowed = true; + + ret = ufshcd_devfreq_init(hba); + if (ret) + goto out; + + hba->clk_scaling.is_enabled = true; + ufshcd_init_clk_scaling_sysfs(hba); + } + ufs_bsg_probe(hba); ufshpb_init(hba); scsi_scan_host(hba->host); @@ -8675,12 +8684,6 @@ out: if (ret) { pm_runtime_put_sync(hba->dev); ufshcd_hba_exit(hba); - } else { - /* - * Make sure that when reader code sees UFS initialization has finished, - * all initialization steps have really been executed. - */ - smp_store_release(&hba->logical_unit_scan_finished, true); } } @@ -10321,22 +10324,6 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq) */ ufshcd_set_ufs_dev_active(hba); - /* Initialize devfreq */ - if (ufshcd_is_clkscaling_supported(hba)) { - memcpy(&hba->clk_scaling.saved_pwr_info.info, - &hba->pwr_info, - sizeof(struct ufs_pa_layer_attr)); - hba->clk_scaling.saved_pwr_info.is_valid = true; - hba->clk_scaling.is_allowed = true; - - err = ufshcd_devfreq_init(hba); - if (err) - goto rpm_put_sync; - - hba->clk_scaling.is_enabled = true; - ufshcd_init_clk_scaling_sysfs(hba); - } - async_schedule(ufshcd_async_scan, hba); ufs_sysfs_add_nodes(dev); trace_android_vh_ufs_update_sysfs(hba); @@ -10344,8 +10331,6 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq) device_enable_async_suspend(dev); return 0; -rpm_put_sync: - pm_runtime_put_sync(dev); free_tmf_queue: blk_mq_destroy_queue(hba->tmf_queue); blk_put_queue(hba->tmf_queue); From cdecdc14f51ea536791568aaeb469e8dd64af7f6 Mon Sep 17 00:00:00 2001 From: Will McVicker Date: Thu, 6 Apr 2023 16:17:52 -0700 Subject: [PATCH 204/269] ANDROID: Update the pixel symbol list Add suspend_set_ops and vprintk_emit. Bug: 277396090 Change-Id: I25cdc4a5c45530fefc5f7ca31aa098285f6bc5d1 Signed-off-by: Will McVicker --- android/abi_gki_aarch64.stg | 168 ++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_pixel | 2 + 2 files changed, 170 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index a5bdcb76a4fe..7b6a2f1da798 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -12075,6 +12075,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xb30471a8 } +pointer_reference { + id: 0x26554526 + kind: POINTER + pointee_type_id: 0xb315f206 +} pointer_reference { id: 0x2658f937 kind: POINTER @@ -24870,6 +24875,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf1329f23 } +pointer_reference { + id: 0x36e2aac5 + kind: POINTER + pointee_type_id: 0xf1ca4d88 +} pointer_reference { id: 0x36e4aebb kind: POINTER @@ -25520,6 +25530,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xca88c599 } +pointer_reference { + id: 0x38323bdd + kind: POINTER + pointee_type_id: 0xca8809e9 +} pointer_reference { id: 0x38342a1b kind: POINTER @@ -30865,6 +30880,11 @@ qualified { qualifier: CONST qualified_type_id: 0x5a4da184 } +qualified { + id: 0xca8809e9 + qualifier: CONST + qualified_type_id: 0x5a67912c +} qualified { id: 0xca904ef0 qualifier: CONST @@ -32850,6 +32870,11 @@ qualified { qualifier: CONST qualified_type_id: 0xb6fd4c56 } +qualified { + id: 0xf1ca4d88 + qualifier: CONST + qualified_type_id: 0xb76e80ab +} qualified { id: 0xf1ddb61f qualifier: CONST @@ -49643,6 +49668,12 @@ member { type_id: 0x33756485 offset: 192 } +member { + id: 0x38340c3f + name: "begin" + type_id: 0x26554526 + offset: 64 +} member { id: 0x383c84d4 name: "begin" @@ -71743,6 +71774,12 @@ member { name: "device" type_id: 0x11c404ba } +member { + id: 0xea2f40e7 + name: "device" + type_id: 0x1d61e0cf + offset: 128 +} member { id: 0xea307154 name: "device" @@ -78966,6 +79003,12 @@ member { type_id: 0x6d7f5ff6 offset: 16 } +member { + id: 0x8201e649 + name: "end" + type_id: 0x0eb62dc3 + offset: 512 +} member { id: 0x8217e2f8 name: "end" @@ -79284,6 +79327,12 @@ member { type_id: 0x6720d32f offset: 67488 } +member { + id: 0x05e44400 + name: "enter" + type_id: 0x26554526 + offset: 256 +} member { id: 0x05ecb6a4 name: "enter" @@ -85220,6 +85269,12 @@ member { type_id: 0x6bf170af offset: 128 } +member { + id: 0x7a288181 + name: "finish" + type_id: 0x0eb62dc3 + offset: 384 +} member { id: 0x7a290a57 name: "finish" @@ -147326,6 +147381,12 @@ member { name: "prepare" type_id: 0x2cf616a6 } +member { + id: 0x3d5750d1 + name: "prepare" + type_id: 0x2df0016c + offset: 128 +} member { id: 0x3d577c9c name: "prepare" @@ -147383,6 +147444,12 @@ member { type_id: 0x2ea6d809 offset: 832 } +member { + id: 0x25513c26 + name: "prepare_late" + type_id: 0x2df0016c + offset: 192 +} member { id: 0x751e0b52 name: "prepare_message" @@ -155200,6 +155267,12 @@ member { type_id: 0x0e6ab35b offset: 768 } +member { + id: 0x8a6bb60c + name: "recover" + type_id: 0x0eb62dc3 + offset: 576 +} member { id: 0x26de94f4 name: "recover_bus" @@ -179716,6 +179789,11 @@ member { type_id: 0x13e7e035 offset: 128 } +member { + id: 0x11c73d13 + name: "subsystem" + type_id: 0x42201dce +} member { id: 0x5d8f77ce name: "subsystem_device" @@ -180479,6 +180557,12 @@ member { type_id: 0x6d7f5ff6 offset: 184 } +member { + id: 0xcc3d72ff + name: "suspend_again" + type_id: 0x35392f66 + offset: 448 +} member { id: 0x490ad16b name: "suspend_bias_off" @@ -195387,6 +195471,11 @@ member { type_id: 0x6d7f5ff6 offset: 64 } +member { + id: 0xe9de33a2 + name: "valid" + type_id: 0x26554526 +} member { id: 0xa6274b5a name: "valid_ioctls" @@ -199166,6 +199255,12 @@ member { type_id: 0x0a747547 offset: 64 } +member { + id: 0x26f3b7c4 + name: "wake" + type_id: 0x0eb62dc3 + offset: 320 +} member { id: 0xcf212908 name: "wake_active" @@ -218764,6 +218859,16 @@ struct_union { member_id: 0xe2d495b2 } } +struct_union { + id: 0x5a67912c + kind: STRUCT + name: "dev_printk_info" + definition { + bytesize: 64 + member_id: 0x11c73d13 + member_id: 0xea2f40e7 + } +} struct_union { id: 0xb7e8bb7b kind: STRUCT @@ -242262,6 +242367,24 @@ struct_union { member_id: 0x3363027c } } +struct_union { + id: 0xb76e80ab + kind: STRUCT + name: "platform_suspend_ops" + definition { + bytesize: 80 + member_id: 0xe9de33a2 + member_id: 0x38340c3f + member_id: 0x3d5750d1 + member_id: 0x25513c26 + member_id: 0x05e44400 + member_id: 0x26f3b7c4 + member_id: 0x7a288181 + member_id: 0xcc3d72ff + member_id: 0x8201e649 + member_id: 0x8a6bb60c + } +} struct_union { id: 0xae1656c9 kind: STRUCT @@ -290859,6 +290982,11 @@ function { parameter_id: 0x01222f7d parameter_id: 0x33756485 } +function { + id: 0x1d20fb22 + return_type_id: 0x48b5725f + parameter_id: 0x36e2aac5 +} function { id: 0x1d2130a6 return_type_id: 0x48b5725f @@ -297378,6 +297506,15 @@ function { parameter_id: 0x6720d32f parameter_id: 0x6720d32f } +function { + id: 0x85da991d + return_type_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0x38323bdd + parameter_id: 0x3e10b518 + parameter_id: 0xe5e56f65 +} function { id: 0x85e53152 return_type_id: 0x6720d32f @@ -317178,6 +317315,11 @@ function { parameter_id: 0x11281698 parameter_id: 0x38d23361 } +function { + id: 0xb315f206 + return_type_id: 0x6720d32f + parameter_id: 0xba5444a6 +} function { id: 0xb367c064 return_type_id: 0xe02e14d6 @@ -360998,6 +361140,15 @@ elf_symbol { type_id: 0x9d6a72fd full_name: "subsys_system_register" } +elf_symbol { + id: 0x44e002a2 + name: "suspend_set_ops" + is_defined: true + symbol_type: FUNCTION + crc: 0x9ac11b74 + type_id: 0x1d20fb22 + full_name: "suspend_set_ops" +} elf_symbol { id: 0x1fe11014 name: "sync_blockdev" @@ -366911,6 +367062,15 @@ elf_symbol { type_id: 0x91935bd4 full_name: "vprintk" } +elf_symbol { + id: 0xd0fa04e7 + name: "vprintk_emit" + is_defined: true + symbol_type: FUNCTION + crc: 0xee8c02e9 + type_id: 0x85da991d + full_name: "vprintk_emit" +} elf_symbol { id: 0x5c9f3e0e name: "vring_create_virtqueue" @@ -386161,6 +386321,10 @@ symbols { key: "subsys_system_register" value: 0xfb52ace2 } + symbol { + key: "suspend_set_ops" + value: 0x44e002a2 + } symbol { key: "sync_blockdev" value: 0x1fe11014 @@ -388789,6 +388953,10 @@ symbols { key: "vprintk" value: 0x61b986b8 } + symbol { + key: "vprintk_emit" + value: 0xd0fa04e7 + } symbol { key: "vring_create_virtqueue" value: 0x5c9f3e0e diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index 92f4f0be2ee2..04cbd20f521c 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -1682,6 +1682,7 @@ strspn strstr subsys_system_register + suspend_set_ops __sw_hweight32 __sw_hweight64 sync_blockdev @@ -1967,6 +1968,7 @@ vmap vmf_insert_pfn_prot vprintk + vprintk_emit vring_del_virtqueue vring_interrupt vring_new_virtqueue From a8277bfc875f2249721ed63ff257029f5a511a30 Mon Sep 17 00:00:00 2001 From: Neill Kapron Date: Thu, 6 Apr 2023 23:06:52 +0000 Subject: [PATCH 205/269] ANDROID: GKI: Enable CONFIG_USB_CONFIGFS_F_UAC2 Enable UAC2 function driver in x86 gki_defconfig for feature parity with arm64 gki_defconfig. Bug: 277271545 Change-Id: I4c602a2e791ecc03dc7d63c131dbe0982f1998c8 Signed-off-by: Neill Kapron (cherry picked from commit a6ef8539c18177fbd541cc577ddd6562c9c343a1) --- arch/x86/configs/gki_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index 61fd094192b0..ffcf040d0bf6 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -466,6 +466,7 @@ CONFIG_USB_CONFIGFS_MASS_STORAGE=y CONFIG_USB_CONFIGFS_F_FS=y CONFIG_USB_CONFIGFS_F_ACC=y CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y +CONFIG_USB_CONFIGFS_F_UAC2=y CONFIG_USB_CONFIGFS_F_MIDI=y CONFIG_USB_CONFIGFS_F_HID=y CONFIG_USB_CONFIGFS_F_UVC=y From a4d96d91dad869b7b9a4ea197f57068b05a05565 Mon Sep 17 00:00:00 2001 From: Elliot Berman Date: Thu, 6 Apr 2023 11:20:36 -0700 Subject: [PATCH 206/269] ANDROID: virt: gunyah: Move arch_is_gh_guest under RM probe Some Qualcomm firmwares may crash on the "Call UID" query to hypervisor. This call is made to check which hypervisor implmenetation Linux may be a guest under. Move this check under the Gunyah RM driver probe so that it is only made when Gunyah is definitely present. This patch is destined for version 12 of the Gunyah patches posted to kernel.org. https://lore.kernel.org/all/20230304010632.2127470-1-quic_eberman@quicinc.com/ Bug: 268234781 Reported-by: Amit Pundir Change-Id: I17499344b3b3f992cf93d99da9a0b9d16434602c Signed-off-by: Elliot Berman --- drivers/mailbox/gunyah-msgq.c | 3 -- drivers/virt/gunyah/Makefile | 1 - drivers/virt/gunyah/gunyah.c | 57 ------------------------------- drivers/virt/gunyah/gunyah_vcpu.c | 3 -- drivers/virt/gunyah/rsc_mgr.c | 26 ++++++++++++++ drivers/virt/gunyah/vm_mgr.c | 3 -- include/linux/gunyah.h | 8 +++-- 7 files changed, 31 insertions(+), 70 deletions(-) delete mode 100644 drivers/virt/gunyah/gunyah.c diff --git a/drivers/mailbox/gunyah-msgq.c b/drivers/mailbox/gunyah-msgq.c index 1989298653f9..d16c523901ac 100644 --- a/drivers/mailbox/gunyah-msgq.c +++ b/drivers/mailbox/gunyah-msgq.c @@ -139,9 +139,6 @@ int gh_msgq_init(struct device *parent, struct gh_msgq *msgq, struct mbox_client (rx_ghrsc && rx_ghrsc->type != GH_RESOURCE_TYPE_MSGQ_RX)) return -EINVAL; - if (!gh_api_has_feature(GH_FEATURE_MSGQUEUE)) - return -EOPNOTSUPP; - msgq->tx_ghrsc = tx_ghrsc; msgq->rx_ghrsc = rx_ghrsc; diff --git a/drivers/virt/gunyah/Makefile b/drivers/virt/gunyah/Makefile index 7347b1470491..c9fb17d3a5b0 100644 --- a/drivers/virt/gunyah/Makefile +++ b/drivers/virt/gunyah/Makefile @@ -1,6 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 -obj-$(CONFIG_GUNYAH) += gunyah.o obj-$(CONFIG_GUNYAH_PLATFORM_HOOKS) += gunyah_platform_hooks.o gunyah_rsc_mgr-y += rsc_mgr.o rsc_mgr_rpc.o vm_mgr.o vm_mgr_mm.o diff --git a/drivers/virt/gunyah/gunyah.c b/drivers/virt/gunyah/gunyah.c deleted file mode 100644 index 4b7e6f3edaff..000000000000 --- a/drivers/virt/gunyah/gunyah.c +++ /dev/null @@ -1,57 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. - */ - -#define pr_fmt(fmt) "gunyah: " fmt - -#include -#include -#include -#include - -static struct gh_hypercall_hyp_identify_resp gh_api; - -u16 gh_api_version(void) -{ - return FIELD_GET(GH_API_INFO_API_VERSION_MASK, gh_api.api_info); -} -EXPORT_SYMBOL_GPL(gh_api_version); - -bool gh_api_has_feature(enum gh_api_feature feature) -{ - switch (feature) { - case GH_FEATURE_DOORBELL: - case GH_FEATURE_MSGQUEUE: - case GH_FEATURE_VCPU: - case GH_FEATURE_MEMEXTENT: - return !!(gh_api.flags[0] & BIT_ULL(feature)); - default: - return false; - } -} -EXPORT_SYMBOL_GPL(gh_api_has_feature); - -static int __init gh_init(void) -{ - if (!arch_is_gh_guest()) - return -ENODEV; - - gh_hypercall_hyp_identify(&gh_api); - - pr_info("Running under Gunyah hypervisor %llx/v%u\n", - FIELD_GET(GH_API_INFO_VARIANT_MASK, gh_api.api_info), - gh_api_version()); - - /* We might move this out to individual drivers if there's ever an API version bump */ - if (gh_api_version() != GH_API_V1) { - pr_info("Unsupported Gunyah version: %u\n", gh_api_version()); - return -ENODEV; - } - - return 0; -} -arch_initcall(gh_init); - -MODULE_LICENSE("GPL"); -MODULE_DESCRIPTION("Gunyah Hypervisor Driver"); diff --git a/drivers/virt/gunyah/gunyah_vcpu.c b/drivers/virt/gunyah/gunyah_vcpu.c index 870e471a11df..f8925b77851a 100644 --- a/drivers/virt/gunyah/gunyah_vcpu.c +++ b/drivers/virt/gunyah/gunyah_vcpu.c @@ -370,9 +370,6 @@ static long gh_vcpu_bind(struct gh_vm_function_instance *f) int fd; long r; - if (!gh_api_has_feature(GH_FEATURE_VCPU)) - return -EOPNOTSUPP; - if (f->arg_size != sizeof(*arg)) return -EINVAL; diff --git a/drivers/virt/gunyah/rsc_mgr.c b/drivers/virt/gunyah/rsc_mgr.c index cddf249faf79..ae84af21bc3c 100644 --- a/drivers/virt/gunyah/rsc_mgr.c +++ b/drivers/virt/gunyah/rsc_mgr.c @@ -798,6 +798,28 @@ static int gh_msgq_platform_probe_direction(struct platform_device *pdev, bool t return 0; } +static int gh_identify(void) +{ + struct gh_hypercall_hyp_identify_resp gh_api; + + if (!arch_is_gh_guest()) + return -ENODEV; + + gh_hypercall_hyp_identify(&gh_api); + + pr_info("Running under Gunyah hypervisor %llx/v%u\n", + FIELD_GET(GH_API_INFO_VARIANT_MASK, gh_api.api_info), + gh_api_version(&gh_api)); + + /* We might move this out to individual drivers if there's ever an API version bump */ + if (gh_api_version(&gh_api) != GH_API_V1) { + pr_info("Unsupported Gunyah version: %u\n", gh_api_version(&gh_api)); + return -ENODEV; + } + + return 0; +} + static int gh_rm_drv_probe(struct platform_device *pdev) { struct irq_domain *parent_irq_domain; @@ -806,6 +828,10 @@ static int gh_rm_drv_probe(struct platform_device *pdev) struct gh_rm *rm; int ret; + ret = gh_identify(); + if (ret) + return ret; + rm = devm_kzalloc(&pdev->dev, sizeof(*rm), GFP_KERNEL); if (!rm) return -ENOMEM; diff --git a/drivers/virt/gunyah/vm_mgr.c b/drivers/virt/gunyah/vm_mgr.c index f4c14872aa4d..a6f2d5ee68e2 100644 --- a/drivers/virt/gunyah/vm_mgr.c +++ b/drivers/virt/gunyah/vm_mgr.c @@ -684,9 +684,6 @@ static long gh_vm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) case GH_VM_SET_USER_MEM_REGION: { struct gh_userspace_memory_region region; - if (!gh_api_has_feature(GH_FEATURE_MEMEXTENT)) - return -EOPNOTSUPP; - if (copy_from_user(®ion, argp, sizeof(region))) return -EFAULT; diff --git a/include/linux/gunyah.h b/include/linux/gunyah.h index 0344b6988cfa..e4de51381041 100644 --- a/include/linux/gunyah.h +++ b/include/linux/gunyah.h @@ -157,9 +157,6 @@ enum gh_api_feature { bool arch_is_gh_guest(void); -u16 gh_api_version(void); -bool gh_api_has_feature(enum gh_api_feature feature); - #define GH_API_V1 1 #define GH_API_INFO_API_VERSION_MASK GENMASK_ULL(13, 0) @@ -172,6 +169,11 @@ struct gh_hypercall_hyp_identify_resp { u64 flags[3]; }; +static inline u16 gh_api_version(const struct gh_hypercall_hyp_identify_resp *gh_api) +{ + return FIELD_GET(GH_API_INFO_API_VERSION_MASK, gh_api->api_info); +} + void gh_hypercall_hyp_identify(struct gh_hypercall_hyp_identify_resp *hyp_identity); enum gh_error gh_hypercall_bell_send(u64 capid, u64 new_flags, u64 *old_flags); From 24c39824c81dc554c31000988f72bb1d32ef685c Mon Sep 17 00:00:00 2001 From: Chun-Hung Wu Date: Fri, 7 Apr 2023 15:48:38 +0800 Subject: [PATCH 207/269] ANDROID: Add initial symbol list for mtk Add initial MTK symbol list and add to the build system. Bug: 277305001 Change-Id: I3944eb4517c5040dac4fb8769907800af3b5495e Signed-off-by: Chun-Hung Wu Signed-off-by: Greg Kroah-Hartman --- BUILD.bazel | 1 + android/abi_gki_aarch64_mtk | 2334 +++++++++++++++++++++++++++++++++++ 2 files changed, 2335 insertions(+) create mode 100644 android/abi_gki_aarch64_mtk diff --git a/BUILD.bazel b/BUILD.bazel index 2d2f2cd842a4..981346944b87 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -18,6 +18,7 @@ filegroup( # keep sorted "android/abi_gki_aarch64_db845c", "android/abi_gki_aarch64_galaxy", + "android/abi_gki_aarch64_mtk", "android/abi_gki_aarch64_oplus", "android/abi_gki_aarch64_pixel", "android/abi_gki_aarch64_qcom", diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk new file mode 100644 index 000000000000..5b3afac1f080 --- /dev/null +++ b/android/abi_gki_aarch64_mtk @@ -0,0 +1,2334 @@ +[abi_symbol_list] + access_process_vm + activate_task + addrconf_add_linklocal + addrconf_prefix_rcv_add_addr + add_timer + add_uevent_var + add_wait_queue + add_wait_queue_exclusive + adjust_managed_page_count + aes_encrypt + aes_expandkey + alarm_cancel + alarm_init + alarm_start + alarm_start_relative + alarm_try_to_cancel + alloc_chrdev_region + alloc_etherdev_mqs + alloc_io_pgtable_ops + alloc_netdev_mqs + __alloc_pages + alloc_pages_exact + __alloc_percpu + __alloc_percpu_gfp + __alloc_skb + alloc_workqueue + all_vm_events + alt_cb_patch_nops + anon_inode_getfd + anon_inode_getfile + __arch_clear_user + __arch_copy_from_user + __arch_copy_to_user + arch_freq_scale + arch_timer_read_counter + arm64_use_ng_mappings + async_schedule_node + atomic_notifier_call_chain + atomic_notifier_chain_register + atomic_notifier_chain_unregister + autoremove_wake_function + available_idle_cpu + balance_push_callback + bcmp + bdev_end_io_acct + bdev_start_io_acct + bin2hex + bio_endio + bio_end_io_acct_remapped + bio_start_io_acct + __bitmap_and + __bitmap_andnot + __bitmap_clear + __bitmap_complement + __bitmap_equal + bitmap_find_next_zero_area_off + bitmap_free + bitmap_from_arr32 + __bitmap_intersects + __bitmap_or + bitmap_print_to_pagebuf + bitmap_release_region + __bitmap_set + __bitmap_subset + __bitmap_weight + __bitmap_xor + bitmap_zalloc + bit_wait + bit_wait_timeout + __blk_alloc_disk + blk_queue_flag_clear + blk_queue_flag_set + blk_queue_io_min + blk_queue_io_opt + blk_queue_logical_block_size + blk_queue_max_discard_sectors + blk_queue_max_write_zeroes_sectors + blk_queue_physical_block_size + blocking_notifier_call_chain + blocking_notifier_chain_register + blocking_notifier_chain_unregister + bpf_trace_run10 + bpf_trace_run12 + bpf_trace_run1 + bpf_trace_run2 + bpf_trace_run3 + bpf_trace_run4 + bpf_trace_run5 + bpf_trace_run6 + bpf_trace_run7 + bpf_trace_run8 + bpf_trace_run9 + build_skb + bus_find_device + bus_for_each_dev + bus_register + bus_unregister + cache_line_size + call_netdevice_notifiers + call_rcu + cancel_delayed_work + cancel_delayed_work_sync + cancel_work_sync + capable + cdc_parse_cdc_header + cdev_add + cdev_alloc + cdev_del + cdev_device_add + cdev_device_del + cdev_init + cgroup_taskset_first + cgroup_taskset_next + __check_object_size + check_preempt_curr + __class_create + class_destroy + class_dev_iter_exit + class_dev_iter_init + class_dev_iter_next + class_find_device + class_for_each_device + __class_register + class_unregister + clear_page + __ClearPageMovable + clk_bulk_disable + clk_bulk_enable + clk_bulk_prepare + clk_bulk_unprepare + clk_disable + clk_enable + clk_get + __clk_get_hw + __clk_get_name + clk_get_parent + clk_get_rate + clk_hw_get_name + clk_hw_get_num_parents + clk_hw_get_parent + clk_hw_get_parent_by_index + clk_hw_get_rate + clk_hw_is_enabled + clk_hw_is_prepared + clk_hw_round_rate + __clk_is_enabled + clk_is_match + clk_notifier_register + clk_prepare + clk_put + clk_register + clk_register_fixed_factor + clk_register_fixed_rate + clk_set_parent + clk_set_rate + clk_unprepare + clockevents_config_and_register + clocks_calc_mult_shift + cma_alloc + cma_release + compat_ptr_ioctl + complete + complete_all + completion_done + component_add + component_bind_all + component_del + component_master_add_with_match + component_master_del + component_match_add_release + component_unbind_all + config_ep_by_speed + config_group_init_type_name + console_suspend_enabled + __const_udelay + consume_skb + contig_page_data + _copy_from_iter + copy_from_kernel_nofault + __copy_overflow + _copy_to_iter + __cpu_active_mask + cpu_all_bits + cpu_bit_bitmap + cpufreq_cpu_get + cpufreq_cpu_put + cpufreq_disable_fast_switch + cpufreq_driver_fast_switch + cpufreq_driver_resolve_freq + __cpufreq_driver_target + cpufreq_enable_fast_switch + 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_table_index_unsorted + cpufreq_unregister_driver + cpufreq_unregister_governor + __cpuhp_remove_state + __cpuhp_setup_state + __cpuhp_state_add_instance + __cpuhp_state_remove_instance + cpu_hwcaps + cpu_latency_qos_add_request + cpu_latency_qos_remove_request + cpu_latency_qos_update_request + cpumask_any_and_distribute + cpu_number + __cpu_online_mask + cpu_pm_register_notifier + cpu_pm_unregister_notifier + __cpu_possible_mask + __cpu_present_mask + cpupri_find_fitness + cpu_scale + cpus_read_lock + cpus_read_unlock + cpu_subsys + cpu_topology + crc16 + crc32_be + crc32_le + crc8 + crc8_populate_msb + crc_ccitt + crypto_aead_decrypt + crypto_aead_encrypt + crypto_aead_setauthsize + crypto_aead_setkey + crypto_alloc_aead + crypto_alloc_base + crypto_alloc_kpp + crypto_alloc_shash + crypto_alloc_skcipher + crypto_alloc_sync_skcipher + crypto_comp_compress + crypto_comp_decompress + crypto_default_rng + crypto_destroy_tfm + crypto_ecdh_encode_key + crypto_ecdh_key_len + crypto_get_default_rng + crypto_has_ahash + crypto_has_alg + __crypto_memneq + crypto_put_default_rng + crypto_shash_digest + crypto_shash_final + crypto_shash_finup + crypto_shash_setkey + crypto_shash_tfm_digest + crypto_shash_update + crypto_skcipher_decrypt + crypto_skcipher_encrypt + crypto_skcipher_setkey + __crypto_xor + css_next_child + csum_partial + _ctype + 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_symlink + debugfs_create_u16 + debugfs_create_u32 + debugfs_create_u64 + debugfs_create_u8 + debugfs_create_x32 + debugfs_lookup + debugfs_remove + debugfs_rename + dec_zone_page_state + default_llseek + default_wake_function + delayed_work_timer_fn + del_gendisk + del_timer + del_timer_sync + desc_to_gpio + destroy_workqueue + dev_add_pack + dev_addr_mod + dev_alloc_name + dev_change_flags + __dev_change_net_namespace + dev_close + dev_close_many + dev_coredumpv + dev_driver_string + _dev_err + dev_err_probe + dev_fetch_sw_netstats + devfreq_add_device + devfreq_add_governor + devfreq_cooling_unregister + devfreq_monitor_resume + devfreq_monitor_start + devfreq_monitor_stop + devfreq_monitor_suspend + devfreq_recommended_opp + devfreq_register_opp_notifier + devfreq_remove_device + devfreq_remove_governor + devfreq_resume_device + devfreq_suspend_device + devfreq_unregister_opp_notifier + devfreq_update_interval + dev_fwnode + dev_getbyhwaddr_rcu + __dev_get_by_index + dev_get_by_index + dev_get_by_index_rcu + __dev_get_by_name + dev_get_by_name + dev_getfirstbyhwtype + dev_get_flags + dev_get_regmap + dev_get_stats + device_add + device_add_disk + device_create + device_create_bin_file + device_create_file + device_create_managed_software_node + 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_link_add + device_link_remove + device_match_fwnode + device_match_name + device_move + device_property_present + device_property_read_string + device_property_read_u32_array + device_property_read_u8_array + device_register + device_release_driver + device_remove_bin_file + device_remove_file + device_rename + device_set_wakeup_capable + device_unregister + device_wakeup_disable + device_wakeup_enable + _dev_info + __dev_kfree_skb_any + __dev_kfree_skb_irq + dev_load + devm_add_action + __devm_alloc_percpu + devm_backlight_device_register + devm_bitmap_zalloc + devm_blk_crypto_profile_init + devm_clk_bulk_get + devm_clk_bulk_get_all + devm_clk_bulk_get_optional + devm_clk_get + devm_clk_get_optional + devm_clk_put + devm_clk_register + dev_mc_sync + dev_mc_unsync + 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_request + devm_gpio_request_one + devm_i2c_new_dummy_device + devm_iio_channel_get + devm_iio_device_alloc + __devm_iio_device_register + devm_input_allocate_device + devm_ioremap + devm_ioremap_resource + devm_ioremap_wc + devm_iounmap + devm_kasprintf + devm_kfree + devm_kmalloc + devm_kstrdup + devm_led_classdev_register_ext + devm_mbox_controller_register + devm_memremap + devm_mfd_add_devices + devm_nvmem_cell_get + devm_nvmem_device_get + devm_nvmem_register + devm_of_icc_get + __devm_of_phy_provider_register + devm_of_platform_populate + devm_pci_alloc_host_bridge + devm_phy_create + devm_phy_get + devm_pinctrl_get + devm_pinctrl_put + devm_pinctrl_register_and_init + devm_platform_get_and_ioremap_resource + devm_platform_ioremap_resource + devm_platform_ioremap_resource_byname + 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_regmap_init_spmi_ext + 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_request_threaded_irq + __devm_reset_control_get + devm_reset_controller_register + devm_rtc_allocate_device + __devm_rtc_register_device + devm_snd_soc_register_card + devm_snd_soc_register_component + devm_spi_register_controller + devm_watchdog_register_device + dev_nit_active + _dev_notice + dev_pm_clear_wake_irq + dev_pm_domain_attach_by_name + dev_pm_domain_detach + dev_pm_genpd_add_notifier + dev_pm_genpd_set_performance_state + dev_pm_opp_add + dev_pm_opp_clear_config + dev_pm_opp_find_freq_ceil + 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_voltage + dev_pm_opp_of_add_table + dev_pm_opp_of_remove_table + dev_pm_opp_put + dev_pm_opp_remove_all_dynamic + dev_pm_opp_set_config + dev_pm_qos_update_request + _dev_printk + __dev_queue_xmit + dev_remove_pack + devres_add + __devres_alloc_node + devres_free + devres_release + dev_set_allmulti + dev_set_mac_address + dev_set_mtu + dev_set_name + dev_set_promiscuity + dev_uc_add + dev_uc_del + dev_uc_sync + dev_uc_unsync + _dev_warn + disable_irq + disable_irq_nosync + disable_percpu_irq + dma_alloc_attrs + dma_alloc_pages + dma_async_device_register + dma_async_device_unregister + dma_async_tx_descriptor_init + dma_buf_attach + dma_buf_begin_cpu_access + dma_buf_detach + dma_buf_end_cpu_access + dma_buf_export + dma_buf_fd + dma_buf_get + dma_buf_map_attachment + dma_buf_mmap + dma_buf_put + dma_buf_unmap_attachment + dma_buf_vmap + dma_buf_vunmap + dma_fence_add_callback + dma_fence_array_create + dma_fence_array_ops + dma_fence_context_alloc + dma_fence_default_wait + dma_fence_free + dma_fence_get_status + dma_fence_init + dma_fence_release + dma_fence_remove_callback + dma_fence_signal + dma_fence_signal_locked + dma_fence_signal_timestamp_locked + dma_fence_wait_timeout + dma_free_attrs + dma_free_pages + dma_get_sgtable_attrs + dma_heap_add + dma_heap_buffer_alloc + dma_heap_buffer_free + 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 + dma_map_sgtable + dmam_free_coherent + dma_mmap_attrs + dma_mmap_pages + dma_pool_alloc + dma_pool_create + dma_pool_destroy + dma_pool_free + dma_resv_add_fence + dma_resv_reserve_fences + 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 + do_trace_netlink_extack + double_rq_lock + do_wait_intr_irq + down + downgrade_write + down_interruptible + down_read + down_read_trylock + down_timeout + down_trylock + down_write + drain_workqueue + driver_attach + driver_find_device + driver_register + driver_unregister + drm_add_edid_modes + drm_add_modes_noedid + drm_atomic_add_affected_connectors + drm_atomic_get_connector_state + drm_atomic_get_crtc_state + drm_atomic_get_new_private_obj_state + drm_atomic_get_private_obj_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_damage_iter_init + drm_atomic_helper_damage_iter_next + drm_atomic_helper_disable_plane + 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_private_obj_duplicate_state + drm_atomic_helper_set_config + drm_atomic_helper_shutdown + drm_atomic_helper_swap_state + drm_atomic_helper_update_plane + drm_atomic_helper_wait_for_vblanks + drm_atomic_private_obj_fini + drm_atomic_private_obj_init + 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_register + drm_connector_unregister + drm_connector_update_edid_property + drm_crtc_add_crc_entry + drm_crtc_cleanup + __drm_crtc_commit_free + drm_crtc_commit_wait + 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_wait_one_vblank + ___drm_dbg + __drm_debug + drm_detect_monitor_audio + drm_dev_alloc + __drm_dev_dbg + drm_dev_printk + drm_dev_put + drm_dev_register + drm_dev_unregister + drm_display_mode_from_cea_vic + drm_display_mode_to_videomode + drm_edid_duplicate + drm_edid_get_monitor_name + drm_encoder_cleanup + drm_encoder_init + __drm_err + drm_format_info + drm_format_info_block_height + drm_format_info_block_width + drm_framebuffer_init + drm_framebuffer_lookup + drm_framebuffer_remove + drm_gem_create_mmap_offset + drm_gem_fb_get_obj + 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_fd_to_handle + drm_gem_prime_handle_to_fd + drm_gem_prime_import + drm_gem_private_object_init + drm_gem_vm_close + drm_gem_vm_open + 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_hotplug_event + drm_kms_helper_poll_disable + drm_kms_helper_poll_enable + drm_kms_helper_poll_fini + drmm_mode_config_init + drm_mode_config_cleanup + drm_mode_config_reset + drm_mode_copy + drm_mode_duplicate + drm_mode_equal + drm_mode_object_find + drm_mode_object_put + drm_mode_probed_add + drm_mode_set_crtcinfo + drm_modeset_lock + drm_modeset_lock_single_interruptible + drm_mode_set_name + drm_modeset_unlock + drm_mode_vrefresh + drm_object_attach_property + drm_object_property_set_value + 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_plane_create_alpha_property + drm_plane_create_blend_mode_property + drm_poll + drm_prime_gem_destroy + drm_prime_get_contiguous_size + drm_printf + __drm_printfn_debug + 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 + dst_cache_destroy + dst_cache_get + dst_cache_init + dst_cache_set_ip4 + dst_cache_set_ip6 + dst_release + dump_stack + em_cpu_get + enable_irq + enable_percpu_irq + ether_setup + eth_mac_addr + __ethtool_get_link_ksettings + ethtool_op_get_link + ethtool_op_get_ts_info + eth_type_trans + eth_validate_addr + eventfd_ctx_fdget + eventfd_ctx_fileget + eventfd_ctx_put + eventfd_ctx_remove_wait_queue + eventfd_signal + extcon_get_edev_by_phandle + extcon_get_state + extcon_set_state_sync + __fdget + fd_install + fget + _find_first_bit + _find_first_zero_bit + find_get_pid + _find_last_bit + _find_next_and_bit + _find_next_bit + _find_next_zero_bit + find_pid_ns + find_task_by_vpid + find_vma_intersection + find_vpid + finish_wait + firmware_request_nowarn + flush_dcache_page + flush_delayed_work + flush_work + __flush_workqueue + __folio_put + folio_wait_bit + for_each_kernel_tracepoint + fortify_panic + fput + fqdir_exit + fqdir_init + free_io_pgtable_ops + free_irq + free_netdev + __free_pages + free_pages + free_pages_exact + free_percpu + free_percpu_irq + freezer_active + freezing_slow_path + freq_qos_add_notifier + freq_qos_add_request + freq_qos_remove_notifier + freq_qos_remove_request + freq_qos_update_request + gcd + generic_device_group + generic_file_llseek + generic_handle_domain_irq + generic_handle_irq + genlmsg_multicast_allns + genlmsg_put + genl_register_family + genl_unregister_family + gen_pool_add_owner + gen_pool_alloc_algo_owner + gen_pool_avail + gen_pool_best_fit + gen_pool_create + gen_pool_destroy + gen_pool_dma_alloc_align + gen_pool_dma_zalloc_align + gen_pool_first_fit_align + gen_pool_free_owner + gen_pool_has_addr + gen_pool_set_algo + gen_pool_size + gen_pool_virt_to_phys + get_cpu_device + get_cpu_idle_time + get_cpu_idle_time_us + get_cpu_iowait_time_us + get_device + __get_free_pages + get_governor_parent_kobj + get_net_ns_by_fd + get_net_ns_by_pid + get_pid_task + get_random_bytes + get_random_u16 + get_random_u32 + __get_random_u32_below + __get_task_comm + get_task_mm + get_unused_fd_flags + get_user_ifreq + get_user_pages + get_user_pages_fast + get_vaddr_frames + get_zeroed_page + gic_nonsecure_priorities + gov_attr_set_get + gov_attr_set_init + gov_attr_set_put + governor_sysfs_ops + gpiochip_add_data_with_key + gpiochip_generic_free + gpiochip_generic_request + gpiochip_get_data + gpiochip_lock_as_irq + gpiochip_remove + gpiochip_unlock_as_irq + gpiod_direction_input + gpiod_direction_output + gpiod_direction_output_raw + gpiod_get_raw_value + gpiod_get_value + gpiod_get_value_cansleep + gpiod_set_debounce + gpiod_set_raw_value + gpiod_set_value + gpiod_set_value_cansleep + gpiod_to_irq + gpio_free + gpio_request + gpio_request_one + gpio_to_desc + gre_add_protocol + gre_del_protocol + handle_edge_irq + handle_fasteoi_irq + handle_level_irq + handle_nested_irq + handle_simple_irq + handle_sysrq + have_governor_per_policy + hex_dump_to_buffer + hex_to_bin + hid_add_device + hid_allocate_device + hid_destroy_device + hid_ignore + hid_input_report + hid_parse_report + housekeeping_cpumask + housekeeping_overridden + housekeeping_test_cpu + hrtimer_active + hrtimer_cancel + hrtimer_forward + hrtimer_init + hrtimer_start_range_ns + hrtimer_try_to_cancel + __hw_addr_init + __hw_addr_sync + __hw_addr_unsync + i2c_add_adapter + i2c_del_adapter + i2c_del_driver + i2c_get_dma_safe_msg_buf + i2c_put_dma_safe_msg_buf + i2c_register_driver + i2c_smbus_read_byte_data + i2c_smbus_read_i2c_block_data + i2c_smbus_read_word_data + i2c_smbus_write_byte_data + i2c_smbus_write_i2c_block_data + i2c_smbus_write_word_data + i2c_transfer + i2c_transfer_buffer_flags + i2c_unregister_device + i2c_verify_client + I_BDEV + icc_link_create + icc_node_add + icc_node_create + icc_provider_add + icc_provider_del + icc_put + icc_set_bw + icc_sync_state + ida_alloc_range + ida_destroy + ida_free + idr_alloc + idr_destroy + idr_find + idr_for_each + idr_get_next + idr_remove + idr_replace + iio_buffer_init + iio_buffer_put + iio_channel_get + iio_channel_release + iio_device_attach_buffer + iio_device_unregister + iio_get_channel_type + iio_push_to_buffers + iio_read_channel_processed + in6addr_any + inc_zone_page_state + in_egroup_p + inet6_csk_xmit + inet_csk_get_port + inet_frag_destroy + inet_frag_find + inet_frag_kill + inet_frag_queue_insert + inet_frag_reasm_finish + inet_frag_reasm_prepare + inet_frags_fini + inet_frags_init + init_dummy_netdev + init_net + __init_rwsem + init_srcu_struct + __init_swait_queue_head + init_task + init_timer_key + init_user_ns + init_uts_ns + init_wait_entry + __init_waitqueue_head + input_allocate_device + input_close_device + input_event + input_free_device + input_mt_destroy_slots + input_mt_init_slots + input_mt_report_slot_state + input_mt_sync_frame + input_open_device + input_register_device + input_register_handle + input_register_handler + input_set_abs_params + input_set_capability + input_set_timestamp + input_unregister_device + input_unregister_handle + iomem_resource + iommu_alloc_resv_region + iommu_device_register + iommu_device_sysfs_add + iommu_device_sysfs_remove + iommu_device_unregister + iommu_dma_get_resv_regions + iommu_fwspec_add_ids + iommu_fwspec_free + iommu_get_domain_for_dev + iommu_group_alloc + iommu_group_ref_get + iommu_iova_to_phys + iommu_map + iommu_map_sg + iommu_present + iommu_put_resv_regions + iommu_register_device_fault_handler + iommu_report_device_fault + iommu_unmap + ioremap_prot + iounmap + iov_iter_init + iov_iter_kvec + iov_iter_revert + ip6_dst_hoplimit + __ip_dev_find + ipi_desc_get + ip_local_out + ip_mc_join_group + ip_queue_xmit + ip_route_output_flow + __ip_select_ident + ip_send_check + __ipv6_addr_type + ipv6_dev_find + ipv6_skip_exthdr + ipv6_stub + __irq_apply_affinity_hint + irq_chip_ack_parent + irq_chip_mask_parent + irq_chip_unmask_parent + irq_create_mapping_affinity + irq_create_of_mapping + irq_dispose_mapping + __irq_domain_add + irq_domain_free_irqs_common + irq_domain_get_irq_data + irq_domain_remove + irq_domain_set_info + irq_domain_simple_ops + irq_get_irqchip_state + irq_get_irq_data + irq_modify_status + irq_of_parse_and_map + __irq_resolve_mapping + irq_set_affinity + irq_set_chained_handler_and_data + irq_set_chip_and_handler_name + irq_set_chip_data + irq_set_irqchip_state + irq_set_irq_type + irq_set_irq_wake + irq_set_parent + irq_to_desc + irq_work_queue + irq_work_sync + is_vmalloc_addr + jiffies_64_to_clock_t + jiffies + jiffies_to_msecs + jiffies_to_usecs + kasan_flag_enabled + kasprintf + kernel_accept + kernel_bind + kernel_connect + kernel_cpustat + kernel_kobj + kernel_listen + kernel_param_lock + kernel_param_unlock + kernel_power_off + kernel_restart + kernel_sendmsg + kernel_sock_shutdown + key_create_or_update + key_put + keyring_alloc + __kfifo_alloc + __kfifo_free + __kfifo_from_user + __kfifo_in + __kfifo_init + __kfifo_out + __kfifo_to_user + kfree + kfree_const + kfree_sensitive + kfree_skb_list_reason + kfree_skb_partial + kfree_skb_reason + kimage_vaddr + kimage_voffset + __kmalloc + kmalloc_caches + kmalloc_large + kmalloc_node_trace + __kmalloc_node_track_caller + kmalloc_trace + kmem_cache_alloc + kmem_cache_create + kmem_cache_create_usercopy + kmem_cache_destroy + kmem_cache_free + kmemdup + kobject_add + kobject_create_and_add + kobject_del + kobject_get + kobject_init + kobject_init_and_add + kobject_put + kobject_uevent + kobject_uevent_env + krealloc + kstrdup + kstrdup_const + kstrndup + kstrtobool + kstrtobool_from_user + kstrtoint + kstrtoint_from_user + kstrtol_from_user + kstrtoll + kstrtou16 + kstrtou16_from_user + kstrtou8 + kstrtouint + kstrtouint_from_user + kstrtoul_from_user + kstrtoull + kstrtoull_from_user + 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_with_offset + ktime_get_mono_fast_ns + ktime_get_raw + ktime_get_raw_ts64 + ktime_get_real_ts64 + ktime_get_seconds + ktime_get_ts64 + ktime_get_with_offset + kvasprintf_const + kvfree + kvfree_call_rcu + kvmalloc_node + linkwatch_fire_event + __list_add_valid + __list_del_entry_valid + list_sort + __local_bh_enable_ip + lock_sock_nested + log_post_read_mmio + log_post_write_mmio + log_read_mmio + log_threaded_irq_wakeup_reason + log_write_mmio + loops_per_jiffy + mas_empty_area_rev + mas_find + mbox_chan_received_data + mbox_client_txdone + mbox_controller_register + mbox_controller_unregister + mbox_free_channel + mbox_request_channel + mbox_send_message + memblock_end_of_DRAM + memchr + memchr_inv + memcmp + memcpy + __memcpy_fromio + __memcpy_toio + memdup_user + memmove + memory_read_from_buffer + memparse + memremap + memscan + mem_section + memset64 + memset + __memset_io + memstart_addr + memunmap + migrate_swap + __migrate_task + misc_deregister + misc_register + __mmap_lock_do_trace_acquire_returned + __mmap_lock_do_trace_released + __mmap_lock_do_trace_start_locking + __mmdrop + mmput + mod_delayed_work_on + mod_node_page_state + mod_timer + __module_get + module_layout + module_put + __module_put_and_kthread_exit + __msecs_to_jiffies + msi_get_virq + msleep + msleep_interruptible + mtree_load + __mutex_init + mutex_is_locked + mutex_lock + mutex_trylock + mutex_unlock + napi_complete_done + napi_disable + napi_enable + napi_gro_flush + napi_gro_receive + __napi_schedule + napi_schedule_prep + __ndisc_fill_addr_option + nd_tbl + neigh_destroy + neigh_lookup + __netdev_alloc_skb + netdev_err + netdev_info + netdev_name_in_use + netdev_printk + netdev_set_default_ethtool_ops + 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_inherit_tso_max + netif_napi_add_weight + __netif_napi_del + netif_receive_skb + netif_receive_skb_list + netif_rx + netif_stacked_transfer_operstate + netif_tx_stop_all_queues + netif_tx_wake_queue + netlink_broadcast + netlink_capable + __netlink_dump_start + __netlink_kernel_create + netlink_kernel_release + netlink_net_capable + netlink_register_notifier + netlink_unicast + netlink_unregister_notifier + net_namespace_list + net_ns_type_operations + net_ratelimit + nf_conntrack_destroy + nf_register_net_hooks + nf_unregister_net_hooks + nla_find + nla_memcpy + __nla_parse + nla_put_64bit + nla_put + nla_put_nohdr + nla_reserve + nla_strscpy + __nla_validate + __nlmsg_put + nonseekable_open + noop_llseek + nr_cpu_ids + nr_ipi_get + nr_irqs + nr_swap_pages + ns_capable + nsecs_to_jiffies + ns_to_kernel_old_timeval + ns_to_timespec64 + n_tty_ioctl_helper + __num_online_cpus + nvmem_cell_get + nvmem_cell_put + nvmem_cell_read + nvmem_cell_read_u32 + nvmem_cell_read_variable_le_u32 + nvmem_cell_write + nvmem_device_put + nvmem_device_read + of_address_to_resource + of_alias_get_id + of_clk_add_provider + of_clk_del_provider + of_clk_get + of_clk_get_by_name + of_clk_get_from_provider + of_clk_src_onecell_get + of_clk_src_simple_get + of_count_phandle_with_args + of_cpu_node_to_id + of_device_get_match_data + of_device_is_available + of_device_is_compatible + of_dma_configure_id + of_dma_controller_free + of_dma_controller_register + of_dma_is_coherent + of_drm_find_bridge + of_drm_find_panel + of_find_backlight_by_node + of_find_compatible_node + of_find_device_by_node + of_find_matching_node_and_match + of_find_node_by_name + of_find_node_by_phandle + of_find_node_opts_by_path + of_find_node_with_property + of_find_property + of_fwnode_ops + of_genpd_add_provider_onecell + __of_get_address + of_get_child_by_name + of_get_cpu_node + of_get_named_gpio_flags + 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_remote_node + of_graph_get_remote_port_parent + of_icc_get + of_icc_xlate_onecell + of_iomap + of_irq_find_parent + of_irq_get + of_irq_get_byname + of_irq_parse_one + of_machine_is_compatible + of_match_device + of_match_node + of_n_addr_cells + of_n_size_cells + __of_parse_phandle_with_args + of_phandle_iterator_init + of_phandle_iterator_next + of_phy_simple_xlate + of_platform_depopulate + of_platform_device_create + of_platform_populate + of_property_count_elems_of_size + of_property_match_string + 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_reserved_mem_device_init_by_idx + of_reserved_mem_lookup + of_root + of_thermal_get_trip_points + of_translate_address + on_each_cpu_cond_mask + oops_in_progress + out_of_line_wait_on_bit + out_of_line_wait_on_bit_timeout + overflowuid + page_endio + page_pool_alloc_pages + page_pool_create + page_pool_destroy + page_pool_put_defragged_page + panic + panic_notifier_list + pci_alloc_irq_vectors_affinity + pci_bus_type + pci_device_group + pci_disable_device + pci_find_ext_capability + pci_free_irq_vectors + pci_host_probe + pci_irq_vector + pci_msi_create_irq_domain + pci_msi_mask_irq + pci_msi_unmask_irq + pci_read_config_dword + pci_read_config_word + __pci_register_driver + pci_set_master + pci_unregister_driver + pci_write_config_dword + pci_write_config_word + __percpu_down_read + percpu_down_write + percpu_free_rwsem + __percpu_init_rwsem + __per_cpu_offset + percpu_up_write + perf_event_create_kernel_counter + perf_event_disable + perf_event_enable + perf_event_release_kernel + perf_event_update_userpage + perf_pmu_migrate_context + perf_pmu_register + perf_pmu_unregister + perf_trace_buf_alloc + perf_trace_run_bpf_submit + pfn_is_map_memory + phy_exit + phy_init + phy_power_off + phy_power_on + phy_set_mode_ext + pick_migrate_task + pid_task + pinctrl_dev_get_drvdata + pinctrl_enable + pinctrl_lookup_state + pinctrl_pm_select_default_state + pinctrl_pm_select_sleep_state + pinctrl_put + pinctrl_select_state + pin_user_pages + pin_user_pages_fast + pin_user_pages_remote + platform_bus_type + platform_device_add + platform_device_add_data + platform_device_add_resources + platform_device_alloc + platform_device_del + platform_device_put + platform_device_register + platform_device_register_full + platform_device_unregister + __platform_driver_probe + __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_msi_domain_alloc_irqs + platform_msi_domain_free_irqs + pm_genpd_add_subdomain + pm_genpd_init + pm_genpd_remove + pm_get_active_wakeup_sources + __pm_relax + pm_relax + pm_runtime_allow + __pm_runtime_disable + pm_runtime_enable + pm_runtime_forbid + pm_runtime_force_resume + pm_runtime_force_suspend + __pm_runtime_idle + __pm_runtime_resume + pm_runtime_set_autosuspend_delay + __pm_runtime_set_status + __pm_runtime_suspend + __pm_runtime_use_autosuspend + __pm_stay_awake + pm_stay_awake + pm_system_wakeup + pm_wakeup_dev_event + pm_wakeup_ws_event + 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_unreg_notifier + preempt_schedule + preempt_schedule_notrace + prepare_to_wait_event + print_hex_dump + _printk + _printk_deferred + proc_create + proc_create_data + proc_create_net_data + proc_create_net_single + proc_create_seq_private + proc_create_single_data + proc_dointvec_jiffies + proc_dointvec_minmax + proc_doulongvec_minmax + _proc_mkdir + proc_mkdir + proc_mkdir_data + proc_remove + proc_set_user + proto_register + proto_unregister + __pskb_copy_fclone + pskb_expand_head + __pskb_pull_tail + pskb_put + ___pskb_trim + pstore_register + pstore_unregister + put_cmsg + put_device + put_disk + __put_net + put_pid + __put_task_struct + put_unused_fd + put_user_ifreq + put_vaddr_frames + pwm_apply_state + pwmchip_add + pwmchip_remove + queue_delayed_work_on + queue_work_on + radix_tree_delete + radix_tree_insert + radix_tree_lookup + radix_tree_tagged + ___ratelimit + raw_notifier_call_chain + raw_notifier_chain_register + raw_notifier_chain_unregister + _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_rq_lock_nested + raw_spin_rq_unlock + _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_irqsave + _raw_write_unlock + _raw_write_unlock_bh + _raw_write_unlock_irqrestore + rb_erase + __rb_erase_color + rb_first + rb_first_postorder + __rb_insert_augmented + rb_insert_color + rb_next + rb_next_postorder + rb_prev + rb_replace_node + rcu_barrier + __rcu_read_lock + __rcu_read_unlock + rcuwait_wake_up + refcount_dec_if_one + refcount_warn_saturate + __refrigerator + regcache_cache_only + regcache_mark_dirty + regcache_sync + __register_blkdev + __register_chrdev + register_chrdev_region + register_die_notifier + register_inet6addr_notifier + register_inetaddr_notifier + register_kprobe + 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_rpmsg_driver + register_shrinker + register_syscore_ops + register_sysctl_table + register_virtio_device + register_virtio_driver + regmap_bulk_read + regmap_bulk_write + regmap_field_read + regmap_field_update_bits_base + regmap_raw_read + regmap_raw_write + regmap_read + regmap_update_bits_base + regmap_write + regulator_bulk_disable + regulator_bulk_enable + regulator_count_voltages + regulator_disable + regulator_disable_regmap + regulator_enable + regulator_enable_regmap + regulator_get + regulator_get_current_limit_regmap + regulator_get_mode + regulator_get_optional + 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_linear_range + regulator_notifier_call_chain + regulator_put + 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 + release_firmware + __release_region + release_sock + remap_pfn_range + remap_vmalloc_range + remove_proc_entry + remove_proc_subtree + remove_wait_queue + request_firmware + request_firmware_nowait + __request_module + __request_percpu_irq + __request_region + request_threaded_irq + resched_curr + reset_control_assert + reset_control_deassert + reset_control_reset + rhashtable_destroy + rhashtable_free_and_destroy + rhashtable_init + rhashtable_insert_slow + rhashtable_walk_enter + rhashtable_walk_exit + rhashtable_walk_next + rhashtable_walk_start_check + rhashtable_walk_stop + rhltable_init + __rht_bucket_nested + rht_bucket_nested + rht_bucket_nested_insert + root_task_group + round_jiffies + round_jiffies_relative + round_jiffies_up + rproc_add + rproc_add_subdev + rproc_alloc + rproc_boot + rproc_del + rproc_free + rproc_get_by_phandle + rproc_put + rproc_remove_subdev + rproc_report_crash + rproc_shutdown + rps_needed + rtc_time64_to_tm + rtc_tm_to_time64 + rtc_update_irq + rtc_valid_tm + rtnl_is_locked + rtnl_link_register + rtnl_link_unregister + rtnl_lock + rtnl_register_module + rtnl_unlock + rtnl_unregister + rtnl_unregister_all + runqueues + sched_clock + sched_feat_keys + sched_setattr + sched_setattr_nocheck + sched_set_fifo + sched_set_fifo_low + sched_set_normal + sched_setscheduler + sched_setscheduler_nocheck + sched_show_task + sched_uclamp_used + schedule + schedule_timeout + schedule_timeout_interruptible + schedule_timeout_uninterruptible + scmi_driver_register + scmi_driver_unregister + scmi_protocol_register + scnprintf + scsi_autopm_get_device + scsi_autopm_put_device + scsi_device_get + scsi_device_put + sdio_claim_host + sdio_claim_irq + sdio_disable_func + sdio_enable_func + sdio_readb + sdio_readsb + sdio_register_driver + sdio_release_host + sdio_release_irq + sdio_set_block_size + sdio_unregister_driver + sdio_writeb + sdio_writesb + security_sk_classify_flow + security_sk_clone + security_sock_graft + select_fallback_rq + send_sig + seq_hex_dump + seq_hlist_next + seq_hlist_start_head + seq_lseek + seq_open + seq_printf + seq_putc + seq_puts + seq_read + seq_release + seq_release_private + seq_write + serdev_device_close + __serdev_device_driver_register + serdev_device_get_tiocm + serdev_device_open + serdev_device_set_baudrate + serdev_device_set_flow_control + serdev_device_set_tiocm + serdev_device_wait_until_sent + serdev_device_write_buf + serdev_device_write_flush + set_capacity + set_capacity_and_notify + set_cpus_allowed_ptr + set_normalized_timespec64 + set_page_dirty_lock + __SetPageMovable + set_task_cpu + setup_udp_tunnel_sock + set_user_nice + sg_alloc_table + sg_alloc_table_from_pages_segment + 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_nents + sg_next + __sg_page_iter_next + __sg_page_iter_start + shmem_file_setup + si_mem_available + si_meminfo + simple_attr_open + simple_attr_read + simple_attr_release + simple_attr_write + simple_open + simple_read_from_buffer + simple_write_to_buffer + single_open + single_open_size + single_release + 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_cow_data + skb_dequeue + skb_ensure_writable + skb_free_datagram + __skb_get_hash + __skb_gso_segment + skb_pull + skb_pull_data + skb_pull_rcsum + skb_push + skb_put + skb_queue_head + skb_queue_purge + skb_queue_tail + skb_realloc_headroom + skb_recv_datagram + skb_scrub_packet + skb_set_owner_w + skb_to_sgvec + skb_trim + skb_try_coalesce + skb_tstamp_tx + skb_unlink + sk_common_release + sk_error_report + sk_filter_trim_cap + sk_free + __sk_receive_skb + sk_reset_timer + sk_setup_caps + sk_stop_timer + smp_call_function + smp_call_function_single + smp_call_function_single_async + 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_minmax + snd_pcm_hw_constraint_step + snd_pcm_lib_free_pages + snd_pcm_lib_malloc_pages + snd_pcm_period_elapsed + snd_pcm_set_ops + snd_soc_add_component_controls + snd_soc_bytes_tlv_callback + snd_soc_card_jack_new + snd_soc_component_exit_regmap + snd_soc_component_init_regmap + snd_soc_component_read + snd_soc_component_set_jack + snd_soc_component_update_bits + snd_soc_component_write + 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_volsw + snd_soc_dapm_new_controls + snd_soc_dapm_new_widgets + snd_soc_dapm_put_enum_double + snd_soc_dapm_put_volsw + snd_soc_dapm_sync + 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_put_volsw + snd_soc_register_component + snd_soc_rtdcom_lookup + snd_soc_set_runtime_hwparams + snd_soc_unregister_component + snprintf + soc_device_register + soc_device_unregister + sock_alloc_send_pskb + sock_cmsg_send + sock_common_getsockopt + sock_common_recvmsg + sock_common_setsockopt + __sock_create + sock_create_kern + sock_diag_register + sock_diag_save_cookie + sock_diag_unregister + sock_efree + sockfd_lookup + sock_gettstamp + sock_i_ino + sock_init_data + sock_i_uid + sock_no_accept + sock_no_bind + sock_no_connect + sock_no_getname + sock_no_ioctl + sock_no_listen + sock_no_mmap + sock_no_recvmsg + sock_no_sendmsg + sock_no_sendpage + sock_no_shutdown + sock_no_socketpair + __sock_queue_rcv_skb + sock_queue_rcv_skb_reason + __sock_recv_cmsgs + sock_recv_errqueue + sock_recvmsg + __sock_recv_timestamp + __sock_recv_wifi_status + sock_register + sock_release + sock_rfree + __sock_tx_timestamp + sock_unregister + sock_wmalloc + sort + __spi_alloc_controller + spi_bus_type + spi_controller_resume + spi_controller_suspend + spi_finalize_current_transfer + __spi_register_driver + spi_setup + spi_sync + spmi_controller_add + spmi_controller_alloc + spmi_controller_remove + __spmi_driver_register + sprintf + sprint_symbol + srcu_init_notifier_head + srcu_notifier_call_chain + srcu_notifier_chain_register + srcu_notifier_chain_unregister + __srcu_read_lock + __srcu_read_unlock + sscanf + __stack_chk_fail + stack_trace_print + stack_trace_save + static_key_slow_dec + static_key_slow_inc + stop_one_cpu + stop_one_cpu_nowait + stpcpy + strcasecmp + strchr + strcmp + strcpy + strcspn + stream_open + strim + strlcat + strlcpy + strlen + strncasecmp + strncat + strncmp + strncpy + strncpy_from_user + strnlen + strnstr + strpbrk + strrchr + strscpy + strscpy_pad + strsep + strspn + strstr + suspend_set_ops + __sw_hweight16 + __sw_hweight32 + __sw_hweight64 + __sw_hweight8 + sync_blockdev + sync_file_create + sync_file_get_fence + synchronize_irq + synchronize_net + synchronize_rcu + synchronize_srcu + syscon_node_to_regmap + sysctl_vals + sysfs_create_bin_file + sysfs_create_file_ns + sysfs_create_group + sysfs_create_link + sysfs_emit + sysfs_notify + sysfs_remove_bin_file + sysfs_remove_file_ns + sysfs_remove_group + sysfs_remove_link + sysfs_streq + sysrq_mask + system_freezable_power_efficient_wq + system_freezable_wq + system_highpri_wq + system_long_wq + system_power_efficient_wq + system_unbound_wq + system_wq + sys_tz + task_active_pid_ns + __tasklet_hi_schedule + tasklet_init + tasklet_kill + __tasklet_schedule + tasklet_setup + tasklet_unlock_wait + tasklist_lock + __task_pid_nr_ns + __task_rq_lock + thermal_cooling_device_unregister + thermal_of_cooling_device_register + thermal_pressure + thermal_zone_device_update + thermal_zone_get_temp + thermal_zone_get_zone_by_name + timecounter_init + timecounter_read + timer_unstable_counter_workaround + topology_clear_scale_freq_source + topology_update_thermal_pressure + _totalram_pages + __trace_bprintk + trace_event_buffer_commit + trace_event_buffer_reserve + trace_event_printf + trace_event_raw_init + trace_event_reg + trace_handle_return + __traceiter_gpu_mem_total + __traceiter_mmap_lock_acquire_returned + __traceiter_mmap_lock_released + __traceiter_mmap_lock_start_locking + trace_output_call + __tracepoint_gpu_mem_total + __tracepoint_mmap_lock_acquire_returned + __tracepoint_mmap_lock_released + __tracepoint_mmap_lock_start_locking + tracepoint_probe_register + tracepoint_probe_unregister + trace_print_array_seq + trace_print_flags_seq + trace_print_symbols_seq + __trace_puts + trace_raw_output_prep + trace_seq_printf + trace_seq_putc + __trace_trigger_soft_disabled + tracing_off + try_module_get + try_wait_for_completion + __tty_alloc_driver + tty_driver_flush_buffer + tty_driver_kref_put + tty_encode_baud_rate + tty_flip_buffer_push + tty_get_char_size + tty_hangup + __tty_insert_flip_char + tty_insert_flip_string_fixed_flag + tty_kref_put + tty_ldisc_deref + tty_ldisc_flush + tty_ldisc_ref + tty_mode_ioctl + tty_port_close + tty_port_destroy + tty_port_hangup + tty_port_init + tty_port_install + tty_port_open + tty_port_put + tty_port_register_device + tty_port_tty_get + tty_port_tty_hangup + tty_port_tty_wakeup + tty_register_driver + tty_register_ldisc + tty_set_termios + 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_unregister_ldisc + tty_unthrottle + tty_vhangup + tty_wakeup + uclamp_eff_value + __udelay + udp6_set_csum + udp_set_csum + udp_sock_create4 + udp_sock_create6 + udp_tunnel6_xmit_skb + udp_tunnel_sock_release + udp_tunnel_xmit_skb + unlock_page + unmap_mapping_range + unpin_user_page + unregister_blkdev + __unregister_chrdev + unregister_chrdev_region + unregister_die_notifier + unregister_inet6addr_notifier + unregister_inetaddr_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_rpmsg_driver + unregister_shrinker + unregister_sysctl_table + unregister_virtio_device + unregister_virtio_driver + up + update_devfreq + update_rq_clock + up_read + up_write + usb_add_function + usb_add_gadget_udc + usb_add_hcd + usb_alloc_coherent + usb_alloc_urb + usb_anchor_urb + usb_assign_descriptors + usb_autopm_get_interface + usb_autopm_get_interface_async + usb_autopm_get_interface_no_resume + usb_autopm_put_interface + usb_autopm_put_interface_async + usb_clear_halt + usb_control_msg + usb_control_msg_recv + usb_copy_descriptors + usb_create_hcd + usb_create_shared_hcd + usb_debug_root + usb_del_gadget_udc + usb_deregister + usb_disabled + usb_driver_claim_interface + usb_driver_release_interface + usb_ep_alloc_request + usb_ep_autoconfig + usb_ep_dequeue + usb_ep_disable + usb_ep_enable + 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_gstrings_attach + usb_ifnum_to_if + usb_interface_id + usb_kill_urb + usb_match_id + usb_match_one_id + usb_poison_urb + usb_put_dev + usb_put_function_instance + usb_put_hcd + usb_put_intf + usb_register_driver + usb_remove_hcd + usb_root_hub_lost_power + usb_show_dynids + usb_speed_string + usb_store_new_id + usb_string_id + usb_submit_urb + usb_unpoison_urb + __usecs_to_jiffies + usleep_range_state + v4l2_compat_ioctl32 + v4l2_device_register + v4l2_device_register_subdev + __v4l2_device_register_subdev_nodes + v4l2_device_unregister + v4l2_device_unregister_subdev + v4l2_fh_add + v4l2_fh_del + v4l2_fh_exit + v4l2_fh_init + v4l2_fh_is_singular + v4l2_fh_open + v4l2_i2c_subdev_init + v4l2_m2m_buf_queue + v4l2_m2m_buf_remove + v4l2_m2m_ctx_init + v4l2_m2m_ctx_release + 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_unregister_media_controller + v4l2_src_change_event_subscribe + v4l2_subdev_call_wrappers + v4l2_subdev_init + vchan_dma_desc_free_list + vchan_init + vchan_tx_desc_free + vchan_tx_submit + verify_pkcs7_signature + vfree + 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_prepare + virtqueue_notify + vlan_dev_vlan_id + vlan_filter_drop_vids + vlan_filter_push_vids + vlan_ioctl_set + vlan_uses_dev + vlan_vid_add + vlan_vid_del + vmalloc + vmalloc_to_page + vmalloc_to_pfn + vmalloc_user + vmap + vm_event_states + vmf_insert_pfn_prot + vm_get_page_prot + vm_map_ram + vm_node_stat + vm_unmap_ram + vm_zone_stat + vprintk + 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_killable + wait_for_completion_killable_timeout + wait_for_completion_timeout + wait_woken + __wake_up + wake_up_bit + __wake_up_locked + wake_up_process + wakeup_source_add + wakeup_source_create + wakeup_source_destroy + wakeup_source_register + wakeup_source_remove + wakeup_source_unregister + __wake_up_sync_key + __warn_printk + watchdog_init_timeout + watchdog_set_restart_priority + wireless_nlevent_flush + wireless_send_event + woken_wake_function + work_busy + ww_mutex_lock + ww_mutex_trylock + ww_mutex_unlock + __xa_alloc + xa_erase + zlib_deflate + zlib_deflateEnd + zlib_deflateInit2 + zlib_deflateReset + zlib_deflate_workspacesize + zlib_inflate + zlib_inflateIncomp + zlib_inflateInit2 + zlib_inflateReset + zlib_inflate_workspacesize From 710a5d9ce119c26b56b7f093fc5605705537fbd5 Mon Sep 17 00:00:00 2001 From: Zhipeng Wang Date: Tue, 11 Apr 2023 14:03:40 +0000 Subject: [PATCH 208/269] ANDROID: Add initial symbols list for imx Initial symbol list for imx that adds it to the build and does not add any new symbols at this point in time. Bug: 277651618 Change-Id: I19d4463295bc2f2a22fa5983765a20838d8615ce Signed-off-by: Zhipeng Wang Signed-off-by: Greg Kroah-Hartman --- BUILD.bazel | 1 + android/abi_gki_aarch64_imx | 944 ++++++++++++++++++++++++++++++++++++ 2 files changed, 945 insertions(+) create mode 100644 android/abi_gki_aarch64_imx diff --git a/BUILD.bazel b/BUILD.bazel index 981346944b87..ea3256abb9ad 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -18,6 +18,7 @@ filegroup( # keep sorted "android/abi_gki_aarch64_db845c", "android/abi_gki_aarch64_galaxy", + "android/abi_gki_aarch64_imx", "android/abi_gki_aarch64_mtk", "android/abi_gki_aarch64_oplus", "android/abi_gki_aarch64_pixel", diff --git a/android/abi_gki_aarch64_imx b/android/abi_gki_aarch64_imx new file mode 100644 index 000000000000..02f1f52692df --- /dev/null +++ b/android/abi_gki_aarch64_imx @@ -0,0 +1,944 @@ +[abi_symbol_list] + add_timer + add_uevent_var + add_wait_queue + alloc_candev_mqs + alloc_can_err_skb + alloc_canfd_skb + alloc_can_skb + alloc_chrdev_region + alloc_etherdev_mqs + alloc_io_pgtable_ops + alloc_netdev_mqs + backlight_device_register + backlight_device_unregister + bcmp + bus_unregister + bus_unregister_notifier + cache_line_size + can_bus_off + cancel_delayed_work + cancel_delayed_work_sync + cancel_work_sync + can_change_mtu + can_change_state + can_dropped_invalid_skb + can_fd_dlc2len + can_fd_len2dlc + can_put_echo_skb + can_rx_offload_add_fifo + can_rx_offload_add_timestamp + can_rx_offload_del + can_rx_offload_enable + can_rx_offload_get_echo_skb + can_rx_offload_irq_finish + can_rx_offload_irq_offload_fifo + can_rx_offload_irq_offload_timestamp + can_rx_offload_queue_timestamp + capable + cdev_add + cdev_del + cfg80211_ch_switch_notify + cfg80211_classify8021d + cfg80211_connect_done + cfg80211_cqm_rssi_notify + cfg80211_del_sta_sinfo + cfg80211_disconnected + cfg80211_find_elem_match + cfg80211_ft_event + cfg80211_get_bss + cfg80211_inform_bss_data + cfg80211_mgmt_tx_status_ext + cfg80211_michael_mic_failure + cfg80211_new_sta + cfg80211_pmksa_candidate_notify + cfg80211_put_bss + __cfg80211_radar_event + cfg80211_ready_on_channel + cfg80211_register_netdevice + cfg80211_remain_on_channel_expired + cfg80211_report_wowlan_wakeup + cfg80211_roamed + clk_get + __clk_get_hw + __clk_get_name + clk_get_parent + clk_get_rate + clk_hw_get_name + clk_hw_get_parent + clk_hw_get_parent_by_index + clk_hw_get_rate + clk_hw_is_enabled + clk_hw_register + clk_hw_unregister + clk_is_match + clk_notifier_register + _dev_crit + dev_driver_string + _dev_err + dev_err_probe + dev_fwnode + dev_get_regmap + device_add + device_create + device_create_file + device_del + device_destroy + device_for_each_child + device_get_child_node_count + device_get_dma_attr + device_get_match_data + device_get_next_child_node + device_initialize + device_link_add + device_link_del + device_link_remove + device_match_fwnode + device_match_of_node + device_property_match_string + device_property_present + device_property_read_string + device_property_read_u16_array + device_property_read_u32_array + device_register + device_remove_file + device_set_wakeup_capable + device_set_wakeup_enable + device_unregister + device_wakeup_disable + device_wakeup_enable + _dev_info + __dev_kfree_skb_any + devm_add_action + devm_backlight_device_register + devm_blk_crypto_profile_init + devm_clk_bulk_get + devm_clk_bulk_get_all + devm_clk_bulk_get_optional + devm_clk_get + devm_clk_get_optional + devm_clk_put + devm_clk_register + devm_device_add_group + __devm_drm_dev_alloc + devm_drm_of_get_bridge + devm_drm_panel_bridge_add_typed + devm_free_irq + devm_fwnode_pwm_get + devm_get_clk_from_child + devm_gpiochip_add_data_with_key + devm_gpiod_get + devm_gpiod_get_array + devm_gpiod_get_index + devm_gpiod_get_optional + devm_gpio_request + devm_gpio_request_one + devm_i2c_new_dummy_device + devm_iio_device_alloc + __devm_iio_device_register + devm_input_allocate_device + devm_ioremap + devm_ioremap_resource + devm_ioremap_wc + devm_iounmap + __devm_irq_alloc_descs + devm_kasprintf + devm_kfree + devm_kmalloc + devm_kmemdup + devm_krealloc + devm_kstrdup + devm_led_classdev_register_ext + devm_mbox_controller_register + devm_mfd_add_devices + devm_mipi_dsi_attach + drm_bridge_attach + drm_bridge_chain_enable + drm_bridge_connector_enable_hpd + drm_bridge_connector_init + drm_bridge_hpd_notify + drm_bridge_remove + drm_compat_ioctl + drm_crtc_accurate_vblank_count + drm_crtc_add_crc_entry + drm_crtc_arm_vblank_event + drm_crtc_cleanup + __drm_crtc_commit_free + drm_crtc_commit_wait + drm_crtc_handle_vblank + drm_crtc_init_with_planes + drm_crtc_send_vblank_event + drm_crtc_vblank_get + drm_crtc_vblank_helper_get_vblank_timestamp + drm_crtc_vblank_off + drm_crtc_vblank_on + drm_crtc_vblank_put + drm_crtc_wait_one_vblank + ___drm_dbg + __drm_debug + drm_detect_hdmi_monitor + drm_detect_monitor_audio + drm_dev_alloc + __drm_dev_dbg + drm_dev_printk + drm_dev_put + drm_dev_register + drm_dev_unregister + drm_do_get_edid + drm_edid_duplicate + drm_edid_get_monitor_name + drm_encoder_cleanup + drm_encoder_init + __drm_err + drm_firmware_drivers_only + drm_format_info_block_height + drm_format_info_block_width + drm_gem_create_mmap_offset + drm_gem_fb_create + drm_gem_fb_get_obj + drm_gem_handle_create + drm_gem_mmap + drm_gem_object_free + drm_gem_object_init + drm_gem_object_lookup + drm_gem_object_release + drm_gem_plane_helper_prepare_fb + drm_gem_prime_fd_to_handle + drm_gem_prime_handle_to_fd + drm_gem_prime_import + drm_gem_prime_mmap + drm_gem_private_object_init + drm_gem_vm_close + drm_gem_vm_open + drm_get_connector_status_name + drm_get_edid + drm_get_format_info + drm_helper_hpd_irq_event + drm_helper_probe_single_connector_modes + drm_ioctl + drm_kms_helper_hotplug_event + drm_kms_helper_poll_fini + drm_kms_helper_poll_init + drmm_mode_config_init + drm_mode_config_cleanup + drm_mode_config_helper_resume + drm_mode_config_helper_suspend + drm_mode_config_reset + drm_mode_copy + drm_mode_create + drm_mode_debug_printmodeline + drm_mode_destroy + drm_mode_duplicate + drm_mode_equal + drm_mode_object_put + drm_mode_probed_add + drm_modeset_acquire_fini + drm_modeset_acquire_init + drm_modeset_backoff + drm_modeset_drop_locks + drm_modeset_lock + drm_modeset_lock_single_interruptible + drm_mode_set_name + drm_modeset_unlock + drm_mode_vrefresh + drm_object_attach_property + drm_object_property_set_value + 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_plane_create_alpha_property + drm_plane_create_blend_mode_property + drm_plane_create_rotation_property + drm_plane_create_zpos_immutable_property + drm_plane_create_zpos_property + drm_poll + drm_prime_gem_destroy + drm_prime_get_contiguous_size + drm_printf + __drm_printfn_debug + drm_property_create_enum + drm_property_create_range + drm_read + drm_rect_intersect + drm_release + drm_simple_encoder_init + drm_sysfs_connector_status_event + drm_universal_plane_init + drm_vblank_init + dump_stack + enable_irq + enable_percpu_irq + ether_setup + ethnl_cable_test_fault_length + ethnl_cable_test_result + ethtool_op_get_link + ethtool_op_get_ts_info + eth_type_trans + eth_validate_addr + extcon_get_edev_by_phandle + extcon_get_state + extcon_set_state_sync + fd_install + fget + _find_first_bit + _find_next_and_bit + _find_next_bit + _find_next_zero_bit + find_vma + find_vpid + finish_wait + fixed_size_llseek + flush_work + __flush_workqueue + fortify_panic + fput + free_candev + free_io_pgtable_ops + free_irq + free_netdev + __free_pages + free_pages_exact + free_percpu + free_percpu_irq + gcd + generic_device_group + generic_handle_domain_irq + generic_handle_irq + gen_pool_add_owner + gen_pool_alloc_algo_owner + gen_pool_create + gen_pool_destroy + gen_pool_free_owner + gen_pool_virt_to_phys + get_cpu_device + get_device + get_random_bytes + get_random_u32 + get_random_u8 + get_unused_fd_flags + gic_nonsecure_priorities + gpiochip_disable_irq + gpiochip_enable_irq + gpiochip_generic_config + gpiochip_generic_free + gpiochip_generic_request + gpiochip_get_data + gpiochip_irq_relres + gpiochip_irq_reqres + gpiochip_lock_as_irq + gpiochip_unlock_as_irq + gpiod_cansleep + gpiod_count + gpiod_direction_input + gpiod_direction_output + gpiod_direction_output_raw + gpiod_get_optional + gpiod_get_raw_value + gpiod_get_raw_value_cansleep + gpiod_get_value + gpiod_get_value_cansleep + gpiod_set_consumer_name + gpiod_set_raw_value + gpiod_set_raw_value_cansleep + gpiod_set_value + gpiod_set_value_cansleep + gpiod_to_irq + gpio_free + gpio_request + gpio_to_desc + handle_edge_irq + handle_level_irq + handle_nested_irq + handle_simple_irq + handle_sysrq + hrtimer_cancel + hrtimer_init + hrtimer_start_range_ns + hrtimer_try_to_cancel + i2c_adapter_type + i2c_add_adapter + i2c_add_numbered_adapter + i2c_bus_type + i2c_del_adapter + i2c_del_driver + i2c_for_each_dev + i2c_generic_scl_recovery + i2c_get_adapter + i2c_get_dma_safe_msg_buf + i2c_match_id + i2c_new_ancillary_device + i2c_new_dummy_device + i2c_put_adapter + i2c_put_dma_safe_msg_buf + i2c_recover_bus + i2c_register_driver + i2c_smbus_read_byte + i2c_smbus_read_byte_data + i2c_smbus_read_i2c_block_data + i2c_smbus_write_byte + i2c_smbus_write_byte_data + i2c_smbus_xfer + i2c_transfer + i2c_transfer_buffer_flags + i2c_unregister_device + i2c_verify_client + i3c_device_do_priv_xfers + i3c_driver_register_with_owner + i3c_driver_unregister + ida_alloc_range + ida_destroy + ida_free + idr_alloc + idr_destroy + idr_find + idr_for_each + idr_get_next + idr_preload + idr_remove + ieee80211_bss_get_elem + ieee80211_channel_to_freq_khz + ieee80211_freq_khz_to_channel + ieee80211_get_channel_khz + ieee80211_hdrlen + iio_buffer_enabled + iio_buffer_init + iio_buffer_put + iio_device_attach_buffer + iio_device_claim_direct_mode + iio_device_release_direct_mode + iio_device_unregister + iio_push_event + iio_push_to_buffers + import_iovec + in4_pton + init_dummy_netdev + init_net + __init_swait_queue_head + init_timer_key + init_wait_entry + __init_waitqueue_head + input_alloc_absinfo + input_allocate_device + 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 + int_sqrt + iomem_resource + iommu_alloc_resv_region + iommu_device_register + iommu_device_sysfs_add + iommu_device_sysfs_remove + iommu_device_unregister + iommu_dma_get_resv_regions + iommu_fwspec_add_ids + iommu_fwspec_free + iommu_get_domain_for_dev + iommu_group_ref_get + iommu_iova_to_phys + ioremap_prot + iounmap + __iowrite32_copy + __irq_alloc_descs + irq_chip_ack_parent + irq_create_mapping_affinity + irq_create_of_mapping + irq_dispose_mapping + __irq_domain_add + irq_domain_get_irq_data + irq_domain_remove + irq_domain_set_info + irq_domain_simple_ops + irq_domain_update_bus_token + irq_domain_xlate_onecell + irq_domain_xlate_twocell + irq_get_irq_data + irq_modify_status + irq_of_parse_and_map + __irq_resolve_mapping + irq_set_affinity + irq_set_chained_handler_and_data + irq_set_chip_and_handler_name + irq_set_chip_data + irq_set_irq_wake + irq_to_desc + jiffies + jiffies_to_msecs + jiffies_to_usecs + kasan_flag_enabled + kasprintf + __kfifo_alloc + __kfifo_free + __kfifo_from_user + __kfifo_in + __kfifo_init + __kfifo_out + __kfifo_to_user + kfree + kfree_skb_reason + kimage_voffset + __kmalloc + kmalloc_caches + kmalloc_large + kmalloc_trace + kmem_cache_alloc + kmem_cache_create + kmem_cache_destroy + kmem_cache_free + kmemdup + kobject_create_and_add + kobject_put + kobject_uevent_env + krealloc + kstrdup + kstrdup_const + kstrtoint + kstrtoint_from_user + kstrtoll + kstrtou16 + kstrtouint + kstrtoull + kthread_bind + kthread_create_on_node + kthread_should_stop + kthread_stop + ktime_get + ktime_get_mono_fast_ns + ktime_get_raw_ts64 + ktime_get_real_ts64 + ktime_get_ts64 + ktime_get_with_offset + kvfree + kvfree_call_rcu + kvmalloc_node + __list_add_valid + __list_del_entry_valid + __local_bh_enable_ip + log_post_read_mmio + log_post_write_mmio + log_read_mmio + log_write_mmio + match_string + mbox_chan_received_data + mbox_chan_txdone + mbox_free_channel + mbox_send_message + __mdiobus_read + mdiobus_read + mdiobus_unregister + __mdiobus_write + mdiobus_write + memchr_inv + memcmp + memcpy + __memcpy_fromio + __memcpy_toio + memdup_user + memmove + memory_read_from_buffer + memparse + memremap + mem_section + memset + __memset_io + memstart_addr + memunmap + mfd_add_devices + mfd_remove_devices + misc_deregister + misc_register + mmc_cqe_request_done + mmc_gpio_get_cd + mmc_gpio_get_ro + mmc_send_tuning + mod_delayed_work_on + mod_timer + __module_get + module_layout + module_put + __msecs_to_jiffies + msleep + msleep_interruptible + __mutex_init + mutex_is_locked + mutex_lock + mutex_lock_interruptible + mutex_trylock + mutex_unlock + napi_complete_done + napi_disable + napi_enable + napi_gro_receive + __napi_schedule + napi_schedule_prep + __ndelay + __netdev_alloc_skb + netdev_err + netdev_info + netdev_pick_tx + netdev_printk + netdev_warn + netif_carrier_off + netif_carrier_on + netif_device_attach + netif_device_detach + netif_napi_add_weight + __netif_napi_del + netif_receive_skb + netif_rx + netif_tx_lock + netif_tx_stop_all_queues + netif_tx_unlock + netif_tx_wake_queue + netlink_broadcast + __netlink_kernel_create + netlink_kernel_release + net_ratelimit + __nla_parse + nla_put + noop_llseek + nr_cpu_ids + nsecs_to_jiffies + ns_to_timespec64 + __num_online_cpus + of_address_to_resource + of_alias_get_id + of_can_transceiver + of_clk_add_hw_provider + page_pool_destroy + page_pool_put_defragged_page + panic + panic_notifier_list + param_array_ops + param_ops_bool + param_ops_byte + param_ops_charp + param_ops_int + param_ops_uint + param_ops_ullong + param_ops_ulong + pci_bus_type + pci_device_group + pci_disable_device + pci_enable_device + pci_enable_msi + pci_enable_wake + pci_iomap + pci_iounmap + pci_read_config_dword + __pci_register_driver + pci_release_region + pci_request_region + pci_restore_state + pci_save_state + pci_set_master + pci_set_power_state + pci_unregister_driver + pci_write_config_dword + __per_cpu_offset + perf_pmu_migrate_context + perf_pmu_register + perf_pmu_unregister + perf_trace_buf_alloc + perf_trace_run_bpf_submit + pfn_is_map_memory + pid_task + pinctrl_dev_get_drvdata + pinctrl_enable + pinctrl_force_default + pinctrl_force_sleep + pinctrl_lookup_state + pinctrl_pm_select_default_state + pinctrl_pm_select_idle_state + pinctrl_pm_select_sleep_state + pinctrl_select_default_state + pinctrl_select_state + pin_get_name + pin_user_pages + platform_device_add + platform_device_add_data + platform_device_add_resources + platform_device_alloc + platform_device_put + platform_device_register + platform_device_register_full + platform_device_unregister + __platform_driver_probe + __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 + platform_irqchip_probe + platform_irq_count + pm_genpd_init + pm_genpd_remove + __pm_relax + pm_relax + pm_runtime_allow + __pm_runtime_disable + pm_runtime_enable + pm_runtime_forbid + pm_runtime_force_resume + pm_runtime_force_suspend + __pm_runtime_idle + pm_runtime_no_callbacks + __pm_runtime_resume + pm_runtime_set_autosuspend_delay + __pm_runtime_set_status + __pm_runtime_suspend + __pm_runtime_use_autosuspend + __pm_stay_awake + pm_system_wakeup + pm_wakeup_dev_event + pm_wakeup_ws_event + policy_has_boost_freq + 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 + preempt_schedule + preempt_schedule_notrace + prepare_to_wait_event + print_hex_dump + _printk + proc_create_data + proc_create_seq_private + proc_create_single_data + proc_mkdir + pskb_expand_head + ptp_classify_raw + ptp_clock_event + ptp_clock_index + ptp_clock_register + ptp_clock_unregister + ptp_parse_header + put_device + __put_task_struct + put_unused_fd + pwm_apply_state + queue_delayed_work_on + queue_work_on + radix_tree_insert + ___ratelimit + rational_best_approximation + raw_notifier_call_chain + _raw_spin_lock + _raw_spin_lock_bh + _raw_spin_lock_irq + _raw_spin_lock_irqsave + _raw_spin_trylock + _raw_spin_unlock + _raw_spin_unlock_bh + _raw_spin_unlock_irq + _raw_spin_unlock_irqrestore + rb_erase + rb_insert_color + __rcu_read_lock + __rcu_read_unlock + rdev_get_drvdata + rdev_get_id + refcount_warn_saturate + regcache_cache_bypass + regcache_cache_only + regcache_mark_dirty + regcache_sync + regcache_sync_region + register_candev + __register_chrdev + register_chrdev_region + register_inet6addr_notifier + register_inetaddr_notifier + register_netdev + register_netdevice + register_pm_notifier + register_reboot_notifier + __register_rpmsg_driver + register_syscore_ops + register_virtio_device + register_virtio_driver + regmap_bulk_read + regmap_bulk_write + regmap_field_read + regmap_field_update_bits_base + regmap_get_device + regmap_irq_get_virq + regmap_raw_write + regmap_read + regmap_register_patch + regmap_update_bits_base + regmap_write + regulator_bulk_disable + regulator_bulk_enable + regulator_bulk_get + regulator_disable + regulator_disable_regmap + regulator_enable + regulator_enable_regmap + 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_set_current_limit + regulator_set_voltage + regulatory_hint + regulatory_set_wiphy_regd_sync + release_firmware + __release_region + remap_pfn_range + remove_cpu + remove_proc_entry + remove_wait_queue + report_iommu_fault + request_firmware + request_firmware_direct + request_firmware_nowait + __request_module + __request_percpu_irq + __request_region + request_threaded_irq + reset_control_assert + reset_control_deassert + reset_control_put + reset_control_reset + rpmsg_create_channel + rpmsg_create_ept + rpmsg_register_device + rpmsg_register_device_override + rpmsg_release_channel + rpmsg_send + rpmsg_unregister_device + rproc_add + rproc_alloc + rproc_coredump_add_segment + rproc_del + rproc_free + rproc_report_crash + rps_needed + rtc_time64_to_tm + rtc_tm_to_time64 + rtc_update_irq + rtnl_is_locked + rtnl_lock + rtnl_unlock + sched_clock + schedule + schedule_hrtimeout + schedule_timeout + schedule_timeout_uninterruptible + scmi_driver_register + scmi_driver_unregister + scnprintf + sdhci_add_host + sdhci_cqe_disable + sdhci_cqe_enable + sdhci_cqe_irq + sdhci_pltfm_free + sdhci_pltfm_init + sdhci_remove_host + sdhci_reset + sdio_claim_host + sdio_claim_irq + sdio_disable_func + sdio_enable_func + sdio_readb + sdio_readsb + sdio_register_driver + sdio_release_host + sdio_release_irq + sdio_set_block_size + sdio_unregister_driver + sdio_writeb + sdio_writesb + seq_lseek + seq_open + __seq_open_private + seq_printf + seq_puts + seq_read + seq_release + seq_release_private + seq_vprintf + seq_write + set_freezable + set_user_nice + sg_alloc_table + sg_alloc_table_from_pages_segment + sg_free_table + sg_init_one + sg_init_table + sg_next + __sg_page_iter_next + virtqueue_detach_unused_buf + virtqueue_disable_cb + virtqueue_enable_cb + virtqueue_get_buf + virtqueue_get_vring_size + virtqueue_kick + virtqueue_kick_prepare + virtqueue_notify + vmalloc + vmalloc_to_page + vmap + vm_get_page_prot + vm_iomap_memory + vm_mmap + vm_munmap + vm_zone_stat + vprintk + vring_del_virtqueue + vring_interrupt + vring_new_virtqueue + vsnprintf + vunmap + vzalloc + wait_for_completion + wait_for_completion_interruptible + wait_for_completion_interruptible_timeout + wait_for_completion_timeout + wait_woken + __wake_up + wake_up_process + wakeup_source_add + wakeup_source_register + wakeup_source_remove + wakeup_source_unregister + __warn_printk + watchdog_init_timeout + watchdog_set_restart_priority + wiphy_apply_custom_regulatory + wiphy_free + wiphy_new_nm + wiphy_register + wiphy_unregister + wireless_send_event + woken_wake_function + xdp_convert_zc_to_xdp_frame + xdp_do_flush + xdp_do_redirect + xdp_master_redirect + xdp_rxq_info_is_reg + __xdp_rxq_info_reg + xdp_rxq_info_reg_mem_model + xdp_rxq_info_unreg + xdp_warn From 732a9ff82f8cb1905d7542895fbfad3773f6705e Mon Sep 17 00:00:00 2001 From: fengqi Date: Thu, 6 Apr 2023 15:53:09 +0800 Subject: [PATCH 209/269] ANDROID: GKI: add symbol list file for xiaomi add abi_gki_aarch64_xiaomi INFO: 59 function symbol(s) added 'void __blk_mq_end_request(struct request*, blk_status_t)' 'struct scsi_device* __scsi_add_device(struct Scsi_Host*, uint, uint, u64, void*)' 'int __traceiter_android_vh_binder_transaction_init(void*, struct binder_transaction*)' 'int __traceiter_android_vh_binder_wait_for_work(void*, bool, struct binder_thread*, struct binder_proc*)' 'void balance_dirty_pages_ratelimited(struct address_space*)' 'struct backing_dev_info* bdi_alloc(int)' 'void bdi_put(struct backing_dev_info*)' 'int bdi_register(struct backing_dev_info*, const char*, ...)' 'void blk_mq_freeze_queue(struct request_queue*)' 'struct request_queue* blk_mq_init_queue(struct blk_mq_tag_set*)' 'void blk_mq_tagset_busy_iter(struct blk_mq_tag_set*, busy_tag_iter_fn*, void*)' 'void blk_mq_unfreeze_queue(struct request_queue*)' 'void blk_queue_update_dma_alignment(struct request_queue*, int)' 'void blk_queue_update_dma_pad(struct request_queue*, unsigned int)' 'bool blk_update_request(struct request*, blk_status_t, unsigned int)' 'void bsg_job_done(struct bsg_job*, int, unsigned int)' 'void bsg_remove_queue(struct request_queue*)' 'struct request_queue* bsg_setup_queue(struct device*, const char*, bsg_job_fn*, bsg_timeout_fn*, int)' 'void deactivate_locked_super(struct super_block*)' 'void dev_pm_opp_remove(struct device*, unsigned long)' 'const char* drm_get_connector_type_name(unsigned int)' 'void generic_shutdown_super(struct super_block*)' 'int gpio_request_array(const struct gpio*, size_t)' 'void lockref_get(struct lockref*)' 'void logfc(struct fc_log*, const char*, char, const char*, ...)' 'int lookup_bdev(const char*, dev_t*)' 'void* mempool_alloc_pages(gfp_t, void*)' 'void mempool_free_pages(void*, void*)' 'int mempool_resize(mempool_t*, int)' 'struct nvmem_device* nvmem_register(const struct nvmem_config*)' 'void nvmem_unregister(struct nvmem_device*)' 'struct page* read_cache_page(struct address_space*, unsigned long, filler_t*, struct file*)' 'int scsi_add_host_with_dma(struct Scsi_Host*, struct device*, struct device*)' 'int scsi_change_queue_depth(struct scsi_device*, int)' 'struct scsi_device* scsi_device_lookup(struct Scsi_Host*, uint, uint, u64)' 'int scsi_dma_map(struct scsi_cmnd*)' 'void scsi_dma_unmap(struct scsi_cmnd*)' 'struct Scsi_Host* scsi_host_alloc(struct scsi_host_template*, int)' 'struct Scsi_Host* scsi_host_lookup(unsigned short)' 'void scsi_host_put(struct Scsi_Host*)' 'int scsi_is_host_device(const struct device*)' 'void scsi_print_command(struct scsi_cmnd*)' 'void scsi_remove_host(struct Scsi_Host*)' 'void scsi_report_bus_reset(struct Scsi_Host*, int)' 'void scsi_scan_host(struct Scsi_Host*)' 'struct super_block* sget_fc(struct fs_context*, int(*)(struct super_block*, struct fs_context*), int(*)(struct super_block*, struct fs_context*))' 'int ufshcd_alloc_host(struct device*, struct ufs_hba**)' 'int ufshcd_config_pwr_mode(struct ufs_hba*, struct ufs_pa_layer_attr*)' 'void ufshcd_dealloc_host(struct ufs_hba*)' 'int ufshcd_hba_enable(struct ufs_hba*)' 'int ufshcd_make_hba_operational(struct ufs_hba*)' 'void ufshcd_update_evt_hist(struct ufs_hba*, u32, u32)' 'int utf16s_to_utf8s(const wchar_t*, int, enum utf16_endian, u8*, int)' 'void wait_for_device_probe()' 'int wakeup_sources_read_lock()' 'void wakeup_sources_read_unlock(int)' 'struct wakeup_source* wakeup_sources_walk_next(struct wakeup_source*)' 'struct wakeup_source* wakeup_sources_walk_start()' 'int blk_mq_alloc_sq_tag_set(struct blk_mq_tag_set*, const struct blk_mq_ops*, unsigned int, unsigned int)' 3 variable symbol(s) added 'struct tracepoint __tracepoint_android_vh_binder_transaction_init' 'struct tracepoint __tracepoint_android_vh_binder_wait_for_work' 'u64 jiffies_64' Bug: 276850920 Change-Id: Ibc65a0bfb3332072be7bea17e0aea48277043510 Signed-off-by: fengqi --- BUILD.bazel | 1 + android/abi_gki_aarch64.stg | 1266 +++++++++++++++++++++++++++++++- android/abi_gki_aarch64_xiaomi | 131 ++++ 3 files changed, 1396 insertions(+), 2 deletions(-) create mode 100644 android/abi_gki_aarch64_xiaomi diff --git a/BUILD.bazel b/BUILD.bazel index ea3256abb9ad..f53c0d9bb94d 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -24,6 +24,7 @@ filegroup( "android/abi_gki_aarch64_pixel", "android/abi_gki_aarch64_qcom", "android/abi_gki_aarch64_virtual_device", + "android/abi_gki_aarch64_xiaomi", ], visibility = ["//visibility:public"], ) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 7b6a2f1da798..ceb1e79671ed 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -1,4 +1,4 @@ -root_id: 0x84ea5130 +root_id: 0x25a8b173 void { id: 0x48b5725f } @@ -2870,6 +2870,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x07f900d5 } +pointer_reference { + id: 0x0b70fc18 + kind: POINTER + pointee_type_id: 0x078316ff +} pointer_reference { id: 0x0b716c32 kind: POINTER @@ -7175,6 +7180,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x17939939 } +pointer_reference { + id: 0x0f765b6d + kind: POINTER + pointee_type_id: 0x17998b28 +} pointer_reference { id: 0x0f77ab9d kind: POINTER @@ -8390,6 +8400,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x64b72bba } +pointer_reference { + id: 0x13c70029 + kind: POINTER + pointee_type_id: 0x655ce63a +} pointer_reference { id: 0x13d55fea kind: POINTER @@ -8800,6 +8815,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x737d9636 } +pointer_reference { + id: 0x1650be92 + kind: POINTER + pointee_type_id: 0x73021cd7 +} pointer_reference { id: 0x16598b41 kind: POINTER @@ -9465,6 +9485,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x4fb5a2ed } +pointer_reference { + id: 0x197dca09 + kind: POINTER + pointee_type_id: 0x4fb7ceba +} pointer_reference { id: 0x198099dc kind: POINTER @@ -11125,6 +11150,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xae60496e } +pointer_reference { + id: 0x210bdbea + kind: POINTER + pointee_type_id: 0xae6f8936 +} pointer_reference { id: 0x210dc160 kind: POINTER @@ -21515,6 +21545,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9480cdfa } +pointer_reference { + id: 0x2fb1b820 + kind: POINTER + pointee_type_id: 0x9486061c +} pointer_reference { id: 0x2fb2b385 kind: POINTER @@ -26635,6 +26670,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc654c4df } +pointer_reference { + id: 0x3b08eb03 + kind: POINTER + pointee_type_id: 0xc6634a90 +} pointer_reference { id: 0x3b0a5ea0 kind: POINTER @@ -27435,6 +27475,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdf4d92db } +pointer_reference { + id: 0x3d4bf55f + kind: POINTER + pointee_type_id: 0xdf6f33e0 +} pointer_reference { id: 0x3d4c764a kind: POINTER @@ -28890,16 +28935,31 @@ typedef { name: "bpfptr_t" referred_type_id: 0xe61f67ea } +typedef { + id: 0x4fb7ceba + name: "bsg_job_fn" + referred_type_id: 0x9342d9ef +} typedef { id: 0xf67c2b7b name: "bsg_sg_io_fn" referred_type_id: 0x9ffa167c } +typedef { + id: 0x655ce63a + name: "bsg_timeout_fn" + referred_type_id: 0x7904adfb +} typedef { id: 0xfe711d43 name: "btf_dtor_kfunc_t" referred_type_id: 0x0f3dfb90 } +typedef { + id: 0x17998b28 + name: "busy_tag_iter_fn" + referred_type_id: 0xf9662ef4 +} typedef { id: 0x89ea5acf name: "byte_t" @@ -29070,6 +29130,11 @@ typedef { name: "filldir_t" referred_type_id: 0x36ef2158 } +typedef { + id: 0x73021cd7 + name: "filler_t" + referred_type_id: 0x9b3fbad6 +} typedef { id: 0x8fd1c081 name: "fl_owner_t" @@ -30405,6 +30470,11 @@ typedef { name: "wait_queue_head_t" referred_type_id: 0x76e1f83e } +typedef { + id: 0x0dfb7909 + name: "wchar_t" + referred_type_id: 0x914dbfdc +} typedef { id: 0xa2114faf name: "work_func_t" @@ -31965,6 +32035,11 @@ qualified { qualifier: CONST qualified_type_id: 0x0ca316ec } +qualified { + id: 0xdf6f33e0 + qualifier: CONST + qualified_type_id: 0x0dfb7909 +} qualified { id: 0xdf8a1059 qualifier: CONST @@ -49998,12 +50073,24 @@ member { type_id: 0xe8034002 offset: 224 } +member { + id: 0x9d3b9f4b + name: "bidi_bio" + type_id: 0x15a30023 + offset: 704 +} member { id: 0x03541dc9 name: "bidi_cnt" type_id: 0x295c7202 offset: 24 } +member { + id: 0xe007a713 + name: "bidi_rq" + type_id: 0x1e820193 + offset: 640 +} member { id: 0x06322123 name: "bidirectional" @@ -68027,6 +68114,12 @@ member { name: "dctcp_enabled" type_id: 0xe8034002 } +member { + id: 0x0e831890 + name: "dd_data" + type_id: 0x18bd6530 + offset: 768 +} member { id: 0x10f05f62 name: "dd_key_false" @@ -141203,6 +141296,11 @@ member { type_id: 0x6720d32f offset: 224 } +member { + id: 0xe2f15a6e + name: "payload_len" + type_id: 0x4585663f +} member { id: 0x9fa30dde name: "payload_length" @@ -158017,12 +158115,36 @@ member { name: "reply" type_id: 0x0c2e85de } +member { + id: 0x72f80ba2 + name: "reply" + type_id: 0x18bd6530 + offset: 192 +} member { id: 0xced5e1c9 name: "reply_error" type_id: 0x32ad011b offset: 1024 } +member { + id: 0xa8576a87 + name: "reply_len" + type_id: 0x4585663f + offset: 288 +} +member { + id: 0x8aca07a6 + name: "reply_payload" + type_id: 0x28d698a4 + offset: 448 +} +member { + id: 0xc08d4bff + name: "reply_payload_rcv_len" + type_id: 0x4585663f + offset: 608 +} member { id: 0x5c95b22b name: "report" @@ -158533,6 +158655,12 @@ member { type_id: 0x25520d15 offset: 256 } +member { + id: 0xb6e27ad1 + name: "request" + type_id: 0x18bd6530 + offset: 128 +} member { id: 0xb6f48f5c name: "request" @@ -158673,6 +158801,12 @@ member { offset: 83 bitsize: 1 } +member { + id: 0xc61d64c8 + name: "request_len" + type_id: 0x4585663f + offset: 256 +} member { id: 0xc6bec639 name: "request_len" @@ -158697,6 +158831,12 @@ member { type_id: 0xa7c362b0 offset: 2816 } +member { + id: 0x25b34691 + name: "request_payload" + type_id: 0x28d698a4 + offset: 320 +} member { id: 0x6b2fdfaf name: "request_pending" @@ -160483,6 +160623,12 @@ member { type_id: 0x6720d32f offset: 2304 } +member { + id: 0x0748dce9 + name: "result" + type_id: 0x6720d32f + offset: 576 +} member { id: 0x07c203de name: "result" @@ -170660,6 +170806,12 @@ member { name: "sg" type_id: 0x4717c167 } +member { + id: 0xb52b2515 + name: "sg_cnt" + type_id: 0x6720d32f + offset: 32 +} member { id: 0x621a81bc name: "sg_count" @@ -170696,6 +170848,12 @@ member { type_id: 0x4585663f offset: 384 } +member { + id: 0xbf2238b4 + name: "sg_list" + type_id: 0x11cffa09 + offset: 64 +} member { id: 0xe56b21c1 name: "sg_miter" @@ -185493,6 +185651,12 @@ member { type_id: 0x4585663f offset: 672 } +member { + id: 0x54860832 + name: "timeout" + type_id: 0x4585663f + offset: 96 +} member { id: 0x54860c42 name: "timeout" @@ -214001,6 +214165,17 @@ struct_union { member_id: 0xa8a220fd } } +struct_union { + id: 0x28d698a4 + kind: STRUCT + name: "bsg_buffer" + definition { + bytesize: 16 + member_id: 0xe2f15a6e + member_id: 0xb52b2515 + member_id: 0xbf2238b4 + } +} struct_union { id: 0xa5dd7147 kind: STRUCT @@ -214016,6 +214191,28 @@ struct_union { member_id: 0xdc445987 } } +struct_union { + id: 0xc6634a90 + kind: STRUCT + name: "bsg_job" + definition { + bytesize: 104 + member_id: 0xce3bbab3 + member_id: 0x02ce5d67 + member_id: 0x54860832 + member_id: 0xb6e27ad1 + member_id: 0x72f80ba2 + member_id: 0xc61d64c8 + member_id: 0xa8576a87 + member_id: 0x25b34691 + member_id: 0x8aca07a6 + member_id: 0x0748dce9 + member_id: 0xc08d4bff + member_id: 0xe007a713 + member_id: 0x9d3b9f4b + member_id: 0x0e831890 + } +} struct_union { id: 0x737d9636 kind: STRUCT @@ -281283,6 +281480,24 @@ enumeration { } } } +enumeration { + id: 0xd0cce131 + name: "utf16_endian" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "UTF16_HOST_ENDIAN" + } + enumerator { + name: "UTF16_LITTLE_ENDIAN" + value: 1 + } + enumerator { + name: "UTF16_BIG_ENDIAN" + value: 2 + } + } +} enumeration { id: 0xa422cab0 name: "v4l2_async_match_type" @@ -282513,6 +282728,12 @@ function { parameter_id: 0x0258f96e parameter_id: 0x39cc14ac } +function { + id: 0x0fe1d65c + return_type_id: 0x17dabdcd + parameter_id: 0x33baebd5 + parameter_id: 0x6720d32f +} function { id: 0x0fe6e820 return_type_id: 0x28136e4b @@ -283130,6 +283351,12 @@ function { parameter_id: 0x0258f96e parameter_id: 0x334c07d5 } +function { + id: 0x10c3ba5a + return_type_id: 0x48b5725f + parameter_id: 0x0258f96e + parameter_id: 0x33756485 +} function { id: 0x10c48dc9 return_type_id: 0x48b5725f @@ -283908,6 +284135,15 @@ function { return_type_id: 0x48b5725f parameter_id: 0x054f691a } +function { + id: 0x11cf2aed + return_type_id: 0x48b5725f + parameter_id: 0x0687edf5 + parameter_id: 0x3e10b518 + parameter_id: 0x384f7d7c + parameter_id: 0x3e10b518 + parameter_id: 0xa52a0930 +} function { id: 0x11cfb4cd return_type_id: 0x48b5725f @@ -284285,6 +284521,13 @@ function { parameter_id: 0x0ae4a2c7 parameter_id: 0x120540d1 } +function { + id: 0x126ef68a + return_type_id: 0x48b5725f + parameter_id: 0x078316ff + parameter_id: 0xc9082b19 + parameter_id: 0xc9082b19 +} function { id: 0x12725ea0 return_type_id: 0x48b5725f @@ -285844,6 +286087,12 @@ function { parameter_id: 0x1d44326e parameter_id: 0xc9082b19 } +function { + id: 0x14f27dac + return_type_id: 0x48b5725f + parameter_id: 0x17dabdcd + parameter_id: 0x6720d32f +} function { id: 0x14f49b99 return_type_id: 0x48b5725f @@ -286310,6 +286559,11 @@ function { parameter_id: 0x1479c6e7 parameter_id: 0x1d44326e } +function { + id: 0x15f8fb52 + return_type_id: 0x48b5725f + parameter_id: 0x1582ab06 +} function { id: 0x15fdba89 return_type_id: 0x48b5725f @@ -287939,6 +288193,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x21069feb } +function { + id: 0x18daa769 + return_type_id: 0x48b5725f + parameter_id: 0x210bdbea +} function { id: 0x18db21cb return_type_id: 0x48b5725f @@ -289001,6 +289260,11 @@ function { parameter_id: 0x2b8a97e8 parameter_id: 0x37fc9b61 } +function { + id: 0x1aa56a0d + return_type_id: 0x48b5725f + parameter_id: 0x28f4ee78 +} function { id: 0x1aaa80e6 return_type_id: 0x48b5725f @@ -289634,6 +289898,13 @@ function { return_type_id: 0x48b5725f parameter_id: 0x2c2f07d2 } +function { + id: 0x1b939af9 + return_type_id: 0x48b5725f + parameter_id: 0x2cc0f57b + parameter_id: 0x0f765b6d + parameter_id: 0x18bd6530 +} function { id: 0x1b96d351 return_type_id: 0x48b5725f @@ -292740,6 +293011,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x3f84ee3c } +function { + id: 0x1f7d7689 + return_type_id: 0x48b5725f + parameter_id: 0x3f949c69 +} function { id: 0x1f7d7d9e return_type_id: 0x48b5725f @@ -292931,6 +293207,13 @@ function { parameter_id: 0x397d00ab parameter_id: 0x4585663f } +function { + id: 0x1fd78946 + return_type_id: 0x48b5725f + parameter_id: 0x3b08eb03 + parameter_id: 0x6720d32f + parameter_id: 0x4585663f +} function { id: 0x1fd9024d return_type_id: 0x48b5725f @@ -293526,6 +293809,11 @@ function { parameter_id: 0x3760766d parameter_id: 0x3c38843b } +function { + id: 0x2eb1a24e + return_type_id: 0x145f7b00 + parameter_id: 0x3ddc5dec +} function { id: 0x2f31eea6 return_type_id: 0xa8fff47c @@ -293593,6 +293881,11 @@ function { return_type_id: 0x27b71910 parameter_id: 0x1d44326e } +function { + id: 0x30dc6fbb + return_type_id: 0x17dabdcd + parameter_id: 0xc93e017b +} function { id: 0x30f59213 return_type_id: 0x33756485 @@ -295013,6 +295306,11 @@ function { parameter_id: 0x1dce0fdd parameter_id: 0x6d7f5ff6 } +function { + id: 0x5120d3a0 + return_type_id: 0x28f4ee78 + parameter_id: 0x6720d32f +} function { id: 0x513ab761 return_type_id: 0x92233392 @@ -296149,6 +296447,15 @@ function { parameter_id: 0x2aae29b4 parameter_id: 0x2ac683aa } +function { + id: 0x62b8d7ec + return_type_id: 0x09427c40 + parameter_id: 0x0258f96e + parameter_id: 0x3e10b518 + parameter_id: 0x197dca09 + parameter_id: 0x13c70029 + parameter_id: 0x6720d32f +} function { id: 0x62c598e2 return_type_id: 0x054f691a @@ -296371,6 +296678,11 @@ function { parameter_id: 0x11b32828 parameter_id: 0xc9082b19 } +function { + id: 0x69e09f9b + return_type_id: 0x09427c40 + parameter_id: 0x2cc0f57b +} function { id: 0x6a0b7818 return_type_id: 0x054f691a @@ -297236,6 +297548,11 @@ function { return_type_id: 0x11e6864c parameter_id: 0x11e6864c } +function { + id: 0x83254e2c + return_type_id: 0x3e10b518 + parameter_id: 0x4585663f +} function { id: 0x835e595c return_type_id: 0x2e0f9112 @@ -298133,6 +298450,12 @@ function { parameter_id: 0x4585663f parameter_id: 0x03ecaf94 } +function { + id: 0x902f9013 + return_type_id: 0x6720d32f + parameter_id: 0x30cfc1c2 + parameter_id: 0x6720d32f +} function { id: 0x903246db return_type_id: 0x6720d32f @@ -300721,6 +301044,12 @@ function { parameter_id: 0x7a8335ad parameter_id: 0x361d366b } +function { + id: 0x923e6d3f + return_type_id: 0x6720d32f + parameter_id: 0x31b96ec5 + parameter_id: 0xf435685e +} function { id: 0x923e8caa return_type_id: 0x6720d32f @@ -300904,6 +301233,11 @@ function { parameter_id: 0x3176a085 parameter_id: 0xeeed68e6 } +function { + id: 0x92697f90 + return_type_id: 0x6720d32f + parameter_id: 0x3fa672fd +} function { id: 0x9269f2bc return_type_id: 0x3e10b518 @@ -301260,6 +301594,12 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x3185812b } +function { + id: 0x92c581e2 + return_type_id: 0x6720d32f + parameter_id: 0x3e10b518 + parameter_id: 0x3053e2de +} function { id: 0x92c58e2b return_type_id: 0x6720d32f @@ -301811,6 +302151,11 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3b04bead } +function { + id: 0x9342d9ef + return_type_id: 0x6720d32f + parameter_id: 0x3b08eb03 +} function { id: 0x93445117 return_type_id: 0x6720d32f @@ -301916,6 +302261,15 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3bb11c92 } +function { + id: 0x937ab4d8 + return_type_id: 0x6720d32f + parameter_id: 0x3d4bf55f + parameter_id: 0x6720d32f + parameter_id: 0xd0cce131 + parameter_id: 0x00c72527 + parameter_id: 0x6720d32f +} function { id: 0x937bb0c9 return_type_id: 0x6720d32f @@ -302737,6 +303091,12 @@ function { parameter_id: 0x0fec25a9 parameter_id: 0x6720d32f } +function { + id: 0x9486061c + return_type_id: 0x6720d32f + parameter_id: 0x26ee682a + parameter_id: 0x2f5fce77 +} function { id: 0x948ec07f return_type_id: 0x6720d32f @@ -303913,6 +304273,14 @@ function { parameter_id: 0x1d19a9d5 parameter_id: 0x3c63caea } +function { + id: 0x967da352 + return_type_id: 0x6720d32f + parameter_id: 0x2cc0f57b + parameter_id: 0x37429bf2 + parameter_id: 0x4585663f + parameter_id: 0x4585663f +} function { id: 0x967dadeb return_type_id: 0x6720d32f @@ -304628,6 +304996,13 @@ function { parameter_id: 0x2dde023d parameter_id: 0x6720d32f } +function { + id: 0x976cd0e7 + return_type_id: 0x6720d32f + parameter_id: 0x28f4ee78 + parameter_id: 0x3e10b518 + parameter_id: 0xa52a0930 +} function { id: 0x977041a6 return_type_id: 0x6720d32f @@ -305654,6 +306029,13 @@ function { return_type_id: 0x6720d32f parameter_id: 0x17fa285b } +function { + id: 0x987fb987 + return_type_id: 0x6720d32f + parameter_id: 0x17dabdcd + parameter_id: 0x0258f96e + parameter_id: 0x0258f96e +} function { id: 0x9882219f return_type_id: 0x6720d32f @@ -307862,6 +308244,14 @@ function { parameter_id: 0x3f0185ef parameter_id: 0xf435685e } +function { + id: 0x9a1334e6 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x6d7f5ff6 + parameter_id: 0x24373219 + parameter_id: 0x1f8dbf97 +} function { id: 0x9a1350a4 return_type_id: 0x6720d32f @@ -311677,6 +312067,12 @@ function { parameter_id: 0x054f691a parameter_id: 0x3399c453 } +function { + id: 0x9c1de0b0 + return_type_id: 0x6720d32f + parameter_id: 0x078316ff + parameter_id: 0x1f718836 +} function { id: 0x9c1fae0d return_type_id: 0x6720d32f @@ -313189,6 +313585,12 @@ function { parameter_id: 0x6720d32f parameter_id: 0x1e3484dc } +function { + id: 0x9d3b1e84 + return_type_id: 0x6720d32f + parameter_id: 0x0258f96e + parameter_id: 0x0b70fc18 +} function { id: 0x9d3b60fc return_type_id: 0x6720d32f @@ -316634,6 +317036,23 @@ function { return_type_id: 0x3e10b518 parameter_id: 0xc5caf5f9 } +function { + id: 0xa355db3b + return_type_id: 0x257d12af + parameter_id: 0x17dabdcd + parameter_id: 0xac0d3a85 + parameter_id: 0xac0d3a85 + parameter_id: 0x92233392 + parameter_id: 0x18bd6530 +} +function { + id: 0xa355dd14 + return_type_id: 0x257d12af + parameter_id: 0x17dabdcd + parameter_id: 0xac0d3a85 + parameter_id: 0xac0d3a85 + parameter_id: 0x92233392 +} function { id: 0xa3adbe6c return_type_id: 0x25b73daa @@ -317385,6 +317804,14 @@ function { parameter_id: 0x33756485 parameter_id: 0xf1a6dfed } +function { + id: 0xb8307855 + return_type_id: 0x06835e9c + parameter_id: 0x1582ab06 + parameter_id: 0x33756485 + parameter_id: 0x1650be92 + parameter_id: 0x18ea6ae3 +} function { id: 0xb87b745c return_type_id: 0x06835e9c @@ -318441,6 +318868,11 @@ function { parameter_id: 0x94ed3026 parameter_id: 0x0a193bb7 } +function { + id: 0xd673de47 + return_type_id: 0x02eb105a + parameter_id: 0x02eb105a +} function { id: 0xd68deb3e return_type_id: 0x0aee6b3c @@ -318464,6 +318896,10 @@ function { return_type_id: 0x1e820193 parameter_id: 0x2208f89a } +function { + id: 0xd6c91a51 + return_type_id: 0x02eb105a +} function { id: 0xd7754407 return_type_id: 0x276a1779 @@ -319084,6 +319520,13 @@ function { parameter_id: 0x38d23361 parameter_id: 0x3ea31487 } +function { + id: 0xf07462c6 + return_type_id: 0x26ee682a + parameter_id: 0x2f5fce77 + parameter_id: 0x2fb1b820 + parameter_id: 0x2fb1b820 +} function { id: 0xf0a03df0 return_type_id: 0x6d7f5ff6 @@ -319967,6 +320410,13 @@ function { parameter_id: 0x1a61f607 parameter_id: 0x39a83127 } +function { + id: 0xf8fa1a38 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x1e820193 + parameter_id: 0x7be80061 + parameter_id: 0x4585663f +} function { id: 0xf904db60 return_type_id: 0x6d7f5ff6 @@ -319983,6 +320433,12 @@ function { parameter_id: 0x18019702 parameter_id: 0x6720d32f } +function { + id: 0xf9662ef4 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x1e820193 + parameter_id: 0x18bd6530 +} function { id: 0xf9d4ae0e return_type_id: 0x6d7f5ff6 @@ -320771,6 +321227,15 @@ elf_symbol { type_id: 0x475eeec2 full_name: "__blk_mq_alloc_disk" } +elf_symbol { + id: 0x01badff0 + name: "__blk_mq_end_request" + is_defined: true + symbol_type: FUNCTION + crc: 0xa4d14fed + type_id: 0x16d771f6 + full_name: "__blk_mq_end_request" +} elf_symbol { id: 0x5a6afeee name: "__blk_rq_map_sg" @@ -322689,6 +323154,15 @@ elf_symbol { type_id: 0x1dbb54c5 full_name: "__rt_mutex_init" } +elf_symbol { + id: 0xe68925b8 + name: "__scsi_add_device" + is_defined: true + symbol_type: FUNCTION + crc: 0x22fa9688 + type_id: 0xa355db3b + full_name: "__scsi_add_device" +} elf_symbol { id: 0x0166be18 name: "__scsi_iterate_devices" @@ -323841,6 +324315,24 @@ elf_symbol { type_id: 0x9ba25f4a full_name: "__traceiter_android_vh_binder_set_priority" } +elf_symbol { + id: 0x5cf60b10 + name: "__traceiter_android_vh_binder_transaction_init" + is_defined: true + symbol_type: FUNCTION + crc: 0xaeac497b + type_id: 0x9ba51920 + full_name: "__traceiter_android_vh_binder_transaction_init" +} +elf_symbol { + id: 0x61c82fb5 + name: "__traceiter_android_vh_binder_wait_for_work" + is_defined: true + symbol_type: FUNCTION + crc: 0x1c902cd9 + type_id: 0x9a1334e6 + full_name: "__traceiter_android_vh_binder_wait_for_work" +} elf_symbol { id: 0x53fba77d name: "__traceiter_android_vh_binder_wakeup_ilocked" @@ -325308,6 +325800,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_binder_set_priority" } +elf_symbol { + id: 0xa9d55136 + name: "__tracepoint_android_vh_binder_transaction_init" + is_defined: true + symbol_type: OBJECT + crc: 0x2e7c8a6c + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_binder_transaction_init" +} +elf_symbol { + id: 0x75b174bb + name: "__tracepoint_android_vh_binder_wait_for_work" + is_defined: true + symbol_type: OBJECT + crc: 0xbac548dc + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_binder_wait_for_work" +} elf_symbol { id: 0x506628ab name: "__tracepoint_android_vh_binder_wakeup_ilocked" @@ -327279,6 +327789,15 @@ elf_symbol { type_id: 0x1cbf0a15 full_name: "backlight_device_unregister" } +elf_symbol { + id: 0x4e505a21 + name: "balance_dirty_pages_ratelimited" + is_defined: true + symbol_type: FUNCTION + crc: 0x66a9b613 + type_id: 0x15f8fb52 + full_name: "balance_dirty_pages_ratelimited" +} elf_symbol { id: 0xa3814535 name: "balance_push_callback" @@ -327360,6 +327879,33 @@ elf_symbol { type_id: 0x33937c96 full_name: "bdev_start_io_acct" } +elf_symbol { + id: 0x18c171b8 + name: "bdi_alloc" + is_defined: true + symbol_type: FUNCTION + crc: 0x97bb2c1b + type_id: 0x5120d3a0 + full_name: "bdi_alloc" +} +elf_symbol { + id: 0x8fb4b5f6 + name: "bdi_put" + is_defined: true + symbol_type: FUNCTION + crc: 0x3d15e84f + type_id: 0x1aa56a0d + full_name: "bdi_put" +} +elf_symbol { + id: 0x6bb4e80d + name: "bdi_register" + is_defined: true + symbol_type: FUNCTION + crc: 0x0ad5cb4c + type_id: 0x976cd0e7 + full_name: "bdi_register" +} elf_symbol { id: 0xcdba3a55 name: "bgpio_init" @@ -327594,6 +328140,15 @@ elf_symbol { type_id: 0xdde97c3b full_name: "blk_mq_alloc_request" } +elf_symbol { + id: 0x0d1fc920 + name: "blk_mq_alloc_sq_tag_set" + is_defined: true + symbol_type: FUNCTION + crc: 0xb1dec8a1 + type_id: 0x967da352 + full_name: "blk_mq_alloc_sq_tag_set" +} elf_symbol { id: 0xd34c6466 name: "blk_mq_alloc_tag_set" @@ -327648,6 +328203,24 @@ elf_symbol { type_id: 0x1ba86ccd full_name: "blk_mq_free_tag_set" } +elf_symbol { + id: 0x5e553962 + name: "blk_mq_freeze_queue" + is_defined: true + symbol_type: FUNCTION + crc: 0xc693a9dc + type_id: 0x12c8ce83 + full_name: "blk_mq_freeze_queue" +} +elf_symbol { + id: 0x98c69e3e + name: "blk_mq_init_queue" + is_defined: true + symbol_type: FUNCTION + crc: 0xd2f17ed6 + type_id: 0x69e09f9b + full_name: "blk_mq_init_queue" +} elf_symbol { id: 0x16569be2 name: "blk_mq_map_queues" @@ -327711,6 +328284,24 @@ elf_symbol { type_id: 0x181a6fb5 full_name: "blk_mq_stop_hw_queue" } +elf_symbol { + id: 0x37d3a115 + name: "blk_mq_tagset_busy_iter" + is_defined: true + symbol_type: FUNCTION + crc: 0xe3a91bc2 + type_id: 0x1b939af9 + full_name: "blk_mq_tagset_busy_iter" +} +elf_symbol { + id: 0x95bdba0c + name: "blk_mq_unfreeze_queue" + is_defined: true + symbol_type: FUNCTION + crc: 0xe7dc1cd3 + type_id: 0x12c8ce83 + full_name: "blk_mq_unfreeze_queue" +} elf_symbol { id: 0x86bec7f5 name: "blk_mq_unquiesce_queue" @@ -327855,6 +328446,24 @@ elf_symbol { type_id: 0x13dedb1b full_name: "blk_queue_physical_block_size" } +elf_symbol { + id: 0xcc0dd52b + name: "blk_queue_update_dma_alignment" + is_defined: true + symbol_type: FUNCTION + crc: 0xec95d121 + type_id: 0x13544dcf + full_name: "blk_queue_update_dma_alignment" +} +elf_symbol { + id: 0xe7756398 + name: "blk_queue_update_dma_pad" + is_defined: true + symbol_type: FUNCTION + crc: 0x487c5fbb + type_id: 0x13dedb1b + full_name: "blk_queue_update_dma_pad" +} elf_symbol { id: 0x4c74830f name: "blk_queue_write_cache" @@ -327918,6 +328527,15 @@ elf_symbol { type_id: 0x837ae337 full_name: "blk_status_to_errno" } +elf_symbol { + id: 0xf40ec9b3 + name: "blk_update_request" + is_defined: true + symbol_type: FUNCTION + crc: 0xd53fb910 + type_id: 0xf8fa1a38 + full_name: "blk_update_request" +} elf_symbol { id: 0x0b067d4b name: "blkdev_get_by_dev" @@ -328161,6 +328779,33 @@ elf_symbol { type_id: 0x937d3d9a full_name: "bridge_tunnel_header" } +elf_symbol { + id: 0x53eb107b + name: "bsg_job_done" + is_defined: true + symbol_type: FUNCTION + crc: 0x6a3c9f9e + type_id: 0x1fd78946 + full_name: "bsg_job_done" +} +elf_symbol { + id: 0x9f7a08f8 + name: "bsg_remove_queue" + is_defined: true + symbol_type: FUNCTION + crc: 0xca42efc0 + type_id: 0x12c8ce83 + full_name: "bsg_remove_queue" +} +elf_symbol { + id: 0xd5dbc767 + name: "bsg_setup_queue" + is_defined: true + symbol_type: FUNCTION + crc: 0x3f4ca922 + type_id: 0x62b8d7ec + full_name: "bsg_setup_queue" +} elf_symbol { id: 0x096781b3 name: "bt_accept_dequeue" @@ -331852,6 +332497,15 @@ elf_symbol { type_id: 0xcebcf7b7 full_name: "dbs_update" } +elf_symbol { + id: 0x02f83230 + name: "deactivate_locked_super" + is_defined: true + symbol_type: FUNCTION + crc: 0xf936a0de + type_id: 0x1923cb99 + full_name: "deactivate_locked_super" +} elf_symbol { id: 0x36a5b3df name: "deactivate_task" @@ -332707,6 +333361,15 @@ elf_symbol { type_id: 0x16e1ca8f full_name: "dev_pm_opp_put" } +elf_symbol { + id: 0xe6f275cc + name: "dev_pm_opp_remove" + is_defined: true + symbol_type: FUNCTION + crc: 0x77564cd7 + type_id: 0x10c3ba5a + full_name: "dev_pm_opp_remove" +} elf_symbol { id: 0x90259097 name: "dev_pm_opp_remove_all_dynamic" @@ -337617,6 +338280,15 @@ elf_symbol { type_id: 0x80d014d1 full_name: "drm_get_connector_status_name" } +elf_symbol { + id: 0xe52ce78e + name: "drm_get_connector_type_name" + is_defined: true + symbol_type: FUNCTION + crc: 0xf406e46a + type_id: 0x83254e2c + full_name: "drm_get_connector_type_name" +} elf_symbol { id: 0xc64f37ff name: "drm_get_edid" @@ -340128,6 +340800,15 @@ elf_symbol { type_id: 0x16637235 full_name: "generic_perform_write" } +elf_symbol { + id: 0x798f83da + name: "generic_shutdown_super" + is_defined: true + symbol_type: FUNCTION + crc: 0x435cbc4d + type_id: 0x1923cb99 + full_name: "generic_shutdown_super" +} elf_symbol { id: 0x542785af name: "generic_write_checks" @@ -340860,6 +341541,15 @@ elf_symbol { type_id: 0x8c19f874 full_name: "gpio_request" } +elf_symbol { + id: 0xe9a558bf + name: "gpio_request_array" + is_defined: true + symbol_type: FUNCTION + crc: 0x9ba2bb2b + type_id: 0x923e6d3f + full_name: "gpio_request_array" +} elf_symbol { id: 0x260ae9d8 name: "gpio_request_one" @@ -345972,6 +346662,15 @@ elf_symbol { type_id: 0x73531faf full_name: "jiffies64_to_msecs" } +elf_symbol { + id: 0x075fdad1 + name: "jiffies_64" + is_defined: true + symbol_type: OBJECT + crc: 0x055e77e8 + type_id: 0x92233392 + full_name: "jiffies_64" +} elf_symbol { id: 0x6bcfa61d name: "jiffies_64_to_clock_t" @@ -347664,6 +348363,15 @@ elf_symbol { type_id: 0x1655de44 full_name: "lock_sock_nested" } +elf_symbol { + id: 0x42eaca18 + name: "lockref_get" + is_defined: true + symbol_type: FUNCTION + crc: 0xd9b85ef6 + type_id: 0x18daa769 + full_name: "lockref_get" +} elf_symbol { id: 0x408fc274 name: "log_abnormal_wakeup_reason" @@ -347718,6 +348426,24 @@ elf_symbol { type_id: 0x34bfea0b full_name: "log_write_mmio" } +elf_symbol { + id: 0x06e891b4 + name: "logfc" + is_defined: true + symbol_type: FUNCTION + crc: 0xe81c6a5a + type_id: 0x11cf2aed + full_name: "logfc" +} +elf_symbol { + id: 0xad10cf0f + name: "lookup_bdev" + is_defined: true + symbol_type: FUNCTION + crc: 0x34c7cdbc + type_id: 0x92c581e2 + full_name: "lookup_bdev" +} elf_symbol { id: 0x493ce9fc name: "loops_per_jiffy" @@ -348183,6 +348909,15 @@ elf_symbol { type_id: 0x5963dafe full_name: "mempool_alloc" } +elf_symbol { + id: 0x13e62490 + name: "mempool_alloc_pages" + is_defined: true + symbol_type: FUNCTION + crc: 0x766a0927 + type_id: 0x6a9df39e + full_name: "mempool_alloc_pages" +} elf_symbol { id: 0xa613caa5 name: "mempool_alloc_slab" @@ -348219,6 +348954,15 @@ elf_symbol { type_id: 0x167437d8 full_name: "mempool_free" } +elf_symbol { + id: 0x77eb61b0 + name: "mempool_free_pages" + is_defined: true + symbol_type: FUNCTION + crc: 0xd985dc99 + type_id: 0x16d5fd4b + full_name: "mempool_free_pages" +} elf_symbol { id: 0xfbb56638 name: "mempool_free_slab" @@ -348228,6 +348972,15 @@ elf_symbol { type_id: 0x16d5fd4b full_name: "mempool_free_slab" } +elf_symbol { + id: 0x9a28516c + name: "mempool_resize" + is_defined: true + symbol_type: FUNCTION + crc: 0x2aa0843e + type_id: 0x902f9013 + full_name: "mempool_resize" +} elf_symbol { id: 0x7ad45055 name: "memremap" @@ -349919,6 +350672,24 @@ elf_symbol { type_id: 0x99bc47d8 full_name: "nvmem_device_write" } +elf_symbol { + id: 0x65d6ca81 + name: "nvmem_register" + is_defined: true + symbol_type: FUNCTION + crc: 0xda3e0452 + type_id: 0x2eb1a24e + full_name: "nvmem_register" +} +elf_symbol { + id: 0x27081fa8 + name: "nvmem_unregister" + is_defined: true + symbol_type: FUNCTION + crc: 0xcc39c03e + type_id: 0x158f8f53 + full_name: "nvmem_unregister" +} elf_symbol { id: 0x458a15db name: "of_address_to_resource" @@ -354782,6 +355553,15 @@ elf_symbol { type_id: 0x9e5ef2fc full_name: "rdev_get_id" } +elf_symbol { + id: 0x5b227eda + name: "read_cache_page" + is_defined: true + symbol_type: FUNCTION + crc: 0xdabb5741 + type_id: 0xb8307855 + full_name: "read_cache_page" +} elf_symbol { id: 0x46082c90 name: "reboot_mode" @@ -357077,6 +357857,15 @@ elf_symbol { type_id: 0x9f7ddfb5 full_name: "scnprintf" } +elf_symbol { + id: 0xa0d4d843 + name: "scsi_add_host_with_dma" + is_defined: true + symbol_type: FUNCTION + crc: 0xcad85c8f + type_id: 0x987fb987 + full_name: "scsi_add_host_with_dma" +} elf_symbol { id: 0x7a6a0afc name: "scsi_alloc_request" @@ -357122,6 +357911,15 @@ elf_symbol { type_id: 0x94dfa784 full_name: "scsi_block_when_processing_errors" } +elf_symbol { + id: 0x278a6b59 + name: "scsi_change_queue_depth" + is_defined: true + symbol_type: FUNCTION + crc: 0xd836ce75 + type_id: 0x954324c8 + full_name: "scsi_change_queue_depth" +} elf_symbol { id: 0xe4036f2e name: "scsi_cmd_allowed" @@ -357149,6 +357947,15 @@ elf_symbol { type_id: 0x94dfa784 full_name: "scsi_device_get" } +elf_symbol { + id: 0x14eb95fa + name: "scsi_device_lookup" + is_defined: true + symbol_type: FUNCTION + crc: 0x315de56b + type_id: 0xa355dd14 + full_name: "scsi_device_lookup" +} elf_symbol { id: 0x474e9bcc name: "scsi_device_put" @@ -357158,6 +357965,51 @@ elf_symbol { type_id: 0x19c71538 full_name: "scsi_device_put" } +elf_symbol { + id: 0xf10245da + name: "scsi_dma_map" + is_defined: true + symbol_type: FUNCTION + crc: 0x024f41b8 + type_id: 0x9265c435 + full_name: "scsi_dma_map" +} +elf_symbol { + id: 0x18cbd7f9 + name: "scsi_dma_unmap" + is_defined: true + symbol_type: FUNCTION + crc: 0xaf937030 + type_id: 0x1f7d7689 + full_name: "scsi_dma_unmap" +} +elf_symbol { + id: 0x32b196e0 + name: "scsi_host_alloc" + is_defined: true + symbol_type: FUNCTION + crc: 0xa5d29367 + type_id: 0x0fe1d65c + full_name: "scsi_host_alloc" +} +elf_symbol { + id: 0x022517f0 + name: "scsi_host_lookup" + is_defined: true + symbol_type: FUNCTION + crc: 0xb29e9719 + type_id: 0x30dc6fbb + full_name: "scsi_host_lookup" +} +elf_symbol { + id: 0x4d8a452e + name: "scsi_host_put" + is_defined: true + symbol_type: FUNCTION + crc: 0x9fa2c6e6 + type_id: 0x156efee0 + full_name: "scsi_host_put" +} elf_symbol { id: 0x7509c737 name: "scsi_ioctl" @@ -357176,6 +358028,15 @@ elf_symbol { type_id: 0x95587b1f full_name: "scsi_ioctl_block_when_processing_errors" } +elf_symbol { + id: 0xcecaa985 + name: "scsi_is_host_device" + is_defined: true + symbol_type: FUNCTION + crc: 0x3921b3ee + type_id: 0x92697f90 + full_name: "scsi_is_host_device" +} elf_symbol { id: 0x36deacf7 name: "scsi_normalize_sense" @@ -357185,6 +358046,15 @@ elf_symbol { type_id: 0xf0fa540a full_name: "scsi_normalize_sense" } +elf_symbol { + id: 0xf0e07f22 + name: "scsi_print_command" + is_defined: true + symbol_type: FUNCTION + crc: 0xcaea91e5 + type_id: 0x1f7d7689 + full_name: "scsi_print_command" +} elf_symbol { id: 0x5286bfd6 name: "scsi_register_interface" @@ -357194,6 +358064,33 @@ elf_symbol { type_id: 0x9d725f0c full_name: "scsi_register_interface" } +elf_symbol { + id: 0x8deacb1d + name: "scsi_remove_host" + is_defined: true + symbol_type: FUNCTION + crc: 0x09e60cdd + type_id: 0x156efee0 + full_name: "scsi_remove_host" +} +elf_symbol { + id: 0x2e407415 + name: "scsi_report_bus_reset" + is_defined: true + symbol_type: FUNCTION + crc: 0x165aae74 + type_id: 0x14f27dac + full_name: "scsi_report_bus_reset" +} +elf_symbol { + id: 0xc9021692 + name: "scsi_scan_host" + is_defined: true + symbol_type: FUNCTION + crc: 0xfd423aa7 + type_id: 0x156efee0 + full_name: "scsi_scan_host" +} elf_symbol { id: 0x9c54c873 name: "scsi_unblock_requests" @@ -358076,6 +358973,15 @@ elf_symbol { type_id: 0x84a9b4bc full_name: "sg_next" } +elf_symbol { + id: 0x12402fa7 + name: "sget_fc" + is_defined: true + symbol_type: FUNCTION + crc: 0x349435fd + type_id: 0xf07462c6 + full_name: "sget_fc" +} elf_symbol { id: 0x7f3b48aa name: "shmem_file_setup" @@ -363057,6 +363963,15 @@ elf_symbol { type_id: 0x14a305ea full_name: "udp_tunnel_xmit_skb" } +elf_symbol { + id: 0x3fa12248 + name: "ufshcd_alloc_host" + is_defined: true + symbol_type: FUNCTION + crc: 0x5a6c739a + type_id: 0x9d3b1e84 + full_name: "ufshcd_alloc_host" +} elf_symbol { id: 0x5ba31e17 name: "ufshcd_auto_hibern8_update" @@ -363075,6 +363990,24 @@ elf_symbol { type_id: 0x9fcafcaa full_name: "ufshcd_bkops_ctrl" } +elf_symbol { + id: 0xa45d6674 + name: "ufshcd_config_pwr_mode" + is_defined: true + symbol_type: FUNCTION + crc: 0xf09bac42 + type_id: 0x9c1de0b0 + full_name: "ufshcd_config_pwr_mode" +} +elf_symbol { + id: 0xca76e0b2 + name: "ufshcd_dealloc_host" + is_defined: true + symbol_type: FUNCTION + crc: 0x9273fd20 + type_id: 0x1178942c + full_name: "ufshcd_dealloc_host" +} elf_symbol { id: 0x60b0cfc9 name: "ufshcd_dme_configure_adapt" @@ -363138,6 +364071,15 @@ elf_symbol { type_id: 0x93203902 full_name: "ufshcd_get_pwr_dev_param" } +elf_symbol { + id: 0x493c067d + name: "ufshcd_hba_enable" + is_defined: true + symbol_type: FUNCTION + crc: 0xbc1985f4 + type_id: 0x9c602690 + full_name: "ufshcd_hba_enable" +} elf_symbol { id: 0xc3b81360 name: "ufshcd_hba_stop" @@ -363165,6 +364107,15 @@ elf_symbol { type_id: 0x16bac6e1 full_name: "ufshcd_init_pwr_dev_param" } +elf_symbol { + id: 0xba7435fd + name: "ufshcd_make_hba_operational" + is_defined: true + symbol_type: FUNCTION + crc: 0x2f903c13 + type_id: 0x9c602690 + full_name: "ufshcd_make_hba_operational" +} elf_symbol { id: 0xb59c5eaf name: "ufshcd_mcq_config_esi" @@ -363399,6 +364350,15 @@ elf_symbol { type_id: 0x9c602690 full_name: "ufshcd_uic_hibern8_exit" } +elf_symbol { + id: 0xb163f167 + name: "ufshcd_update_evt_hist" + is_defined: true + symbol_type: FUNCTION + crc: 0x81fc84d6 + type_id: 0x126ef68a + full_name: "ufshcd_update_evt_hist" +} elf_symbol { id: 0x439eff60 name: "uio_unregister_device" @@ -365064,6 +366024,15 @@ elf_symbol { type_id: 0x1c99bc79 full_name: "usleep_range_state" } +elf_symbol { + id: 0x1473720a + name: "utf16s_to_utf8s" + is_defined: true + symbol_type: FUNCTION + crc: 0xabf32f29 + type_id: 0x937ab4d8 + full_name: "utf16s_to_utf8s" +} elf_symbol { id: 0xa459c02b name: "utf8_data_table" @@ -367260,6 +368229,15 @@ elf_symbol { type_id: 0x3039a998 full_name: "wait_for_completion_timeout" } +elf_symbol { + id: 0x9d727719 + name: "wait_for_device_probe" + is_defined: true + symbol_type: FUNCTION + crc: 0x4484a5a4 + type_id: 0x10985193 + full_name: "wait_for_device_probe" +} elf_symbol { id: 0xa4027847 name: "wait_woken" @@ -367359,6 +368337,42 @@ elf_symbol { type_id: 0x10229585 full_name: "wakeup_source_unregister" } +elf_symbol { + id: 0x735a53f2 + name: "wakeup_sources_read_lock" + is_defined: true + symbol_type: FUNCTION + crc: 0xc2692173 + type_id: 0x9d80e32f + full_name: "wakeup_sources_read_lock" +} +elf_symbol { + id: 0xaa56f7fa + name: "wakeup_sources_read_unlock" + is_defined: true + symbol_type: FUNCTION + crc: 0x24ad11db + type_id: 0x09506558 + full_name: "wakeup_sources_read_unlock" +} +elf_symbol { + id: 0x36d0e118 + name: "wakeup_sources_walk_next" + is_defined: true + symbol_type: FUNCTION + crc: 0xbd27af8b + type_id: 0xd673de47 + full_name: "wakeup_sources_walk_next" +} +elf_symbol { + id: 0x96e52cc0 + name: "wakeup_sources_walk_start" + is_defined: true + symbol_type: FUNCTION + crc: 0x51c507ec + type_id: 0xd6c91a51 + full_name: "wakeup_sources_walk_start" +} elf_symbol { id: 0xb3aa5e28 name: "watchdog_init_timeout" @@ -368260,7 +369274,7 @@ elf_symbol { full_name: "zs_unmap_object" } symbols { - id: 0x84ea5130 + id: 0x25a8b173 symbol { key: "I_BDEV" value: 0x2dddbe52 @@ -368381,6 +369395,10 @@ symbols { key: "__blk_mq_alloc_disk" value: 0xb339c336 } + symbol { + key: "__blk_mq_end_request" + value: 0x01badff0 + } symbol { key: "__blk_rq_map_sg" value: 0x5a6afeee @@ -369233,6 +370251,10 @@ symbols { key: "__rt_mutex_init" value: 0x98379aaf } + symbol { + key: "__scsi_add_device" + value: 0xe68925b8 + } symbol { key: "__scsi_iterate_devices" value: 0x0166be18 @@ -369745,6 +370767,14 @@ symbols { key: "__traceiter_android_vh_binder_set_priority" value: 0x2a9c6616 } + symbol { + key: "__traceiter_android_vh_binder_transaction_init" + value: 0x5cf60b10 + } + symbol { + key: "__traceiter_android_vh_binder_wait_for_work" + value: 0x61c82fb5 + } symbol { key: "__traceiter_android_vh_binder_wakeup_ilocked" value: 0x53fba77d @@ -370397,6 +371427,14 @@ symbols { key: "__tracepoint_android_vh_binder_set_priority" value: 0x2e04cb9c } + symbol { + key: "__tracepoint_android_vh_binder_transaction_init" + value: 0xa9d55136 + } + symbol { + key: "__tracepoint_android_vh_binder_wait_for_work" + value: 0x75b174bb + } symbol { key: "__tracepoint_android_vh_binder_wakeup_ilocked" value: 0x506628ab @@ -371273,6 +372311,10 @@ symbols { key: "backlight_device_unregister" value: 0x8814eddf } + symbol { + key: "balance_dirty_pages_ratelimited" + value: 0x4e505a21 + } symbol { key: "balance_push_callback" value: 0xa3814535 @@ -371309,6 +372351,18 @@ symbols { key: "bdev_start_io_acct" value: 0xf701e854 } + symbol { + key: "bdi_alloc" + value: 0x18c171b8 + } + symbol { + key: "bdi_put" + value: 0x8fb4b5f6 + } + symbol { + key: "bdi_register" + value: 0x6bb4e80d + } symbol { key: "bgpio_init" value: 0xcdba3a55 @@ -371413,6 +372467,10 @@ symbols { key: "blk_mq_alloc_request" value: 0xaea1564a } + symbol { + key: "blk_mq_alloc_sq_tag_set" + value: 0x0d1fc920 + } symbol { key: "blk_mq_alloc_tag_set" value: 0xd34c6466 @@ -371437,6 +372495,14 @@ symbols { key: "blk_mq_free_tag_set" value: 0x70bd48bd } + symbol { + key: "blk_mq_freeze_queue" + value: 0x5e553962 + } + symbol { + key: "blk_mq_init_queue" + value: 0x98c69e3e + } symbol { key: "blk_mq_map_queues" value: 0x16569be2 @@ -371465,6 +372531,14 @@ symbols { key: "blk_mq_stop_hw_queue" value: 0x310e729f } + symbol { + key: "blk_mq_tagset_busy_iter" + value: 0x37d3a115 + } + symbol { + key: "blk_mq_unfreeze_queue" + value: 0x95bdba0c + } symbol { key: "blk_mq_unquiesce_queue" value: 0x86bec7f5 @@ -371529,6 +372603,14 @@ symbols { key: "blk_queue_physical_block_size" value: 0xea321133 } + symbol { + key: "blk_queue_update_dma_alignment" + value: 0xcc0dd52b + } + symbol { + key: "blk_queue_update_dma_pad" + value: 0xe7756398 + } symbol { key: "blk_queue_write_cache" value: 0x4c74830f @@ -371557,6 +372639,10 @@ symbols { key: "blk_status_to_errno" value: 0xe6192860 } + symbol { + key: "blk_update_request" + value: 0xf40ec9b3 + } symbol { key: "blkdev_get_by_dev" value: 0x0b067d4b @@ -371665,6 +372751,18 @@ symbols { key: "bridge_tunnel_header" value: 0x02852d6e } + symbol { + key: "bsg_job_done" + value: 0x53eb107b + } + symbol { + key: "bsg_remove_queue" + value: 0x9f7a08f8 + } + symbol { + key: "bsg_setup_queue" + value: 0xd5dbc767 + } symbol { key: "bt_accept_dequeue" value: 0x096781b3 @@ -373309,6 +374407,10 @@ symbols { key: "dbs_update" value: 0xf1e399f5 } + symbol { + key: "deactivate_locked_super" + value: 0x02f83230 + } symbol { key: "deactivate_task" value: 0x36a5b3df @@ -373689,6 +374791,10 @@ symbols { key: "dev_pm_opp_put" value: 0x52c8a093 } + symbol { + key: "dev_pm_opp_remove" + value: 0xe6f275cc + } symbol { key: "dev_pm_opp_remove_all_dynamic" value: 0x90259097 @@ -375865,6 +376971,10 @@ symbols { key: "drm_get_connector_status_name" value: 0xabd8ab71 } + symbol { + key: "drm_get_connector_type_name" + value: 0xe52ce78e + } symbol { key: "drm_get_edid" value: 0xc64f37ff @@ -376981,6 +378091,10 @@ symbols { key: "generic_perform_write" value: 0x7f639ef1 } + symbol { + key: "generic_shutdown_super" + value: 0x798f83da + } symbol { key: "generic_write_checks" value: 0x542785af @@ -377305,6 +378419,10 @@ symbols { key: "gpio_request" value: 0x09fe5bd6 } + symbol { + key: "gpio_request_array" + value: 0xe9a558bf + } symbol { key: "gpio_request_one" value: 0x260ae9d8 @@ -379577,6 +380695,10 @@ symbols { key: "jiffies64_to_msecs" value: 0x6e47d2cf } + symbol { + key: "jiffies_64" + value: 0x075fdad1 + } symbol { key: "jiffies_64_to_clock_t" value: 0x6bcfa61d @@ -380329,6 +381451,10 @@ symbols { key: "lock_sock_nested" value: 0xaaab26df } + symbol { + key: "lockref_get" + value: 0x42eaca18 + } symbol { key: "log_abnormal_wakeup_reason" value: 0x408fc274 @@ -380353,6 +381479,14 @@ symbols { key: "log_write_mmio" value: 0x02bffe2a } + symbol { + key: "logfc" + value: 0x06e891b4 + } + symbol { + key: "lookup_bdev" + value: 0xad10cf0f + } symbol { key: "loops_per_jiffy" value: 0x493ce9fc @@ -380561,6 +381695,10 @@ symbols { key: "mempool_alloc" value: 0xfd2dc160 } + symbol { + key: "mempool_alloc_pages" + value: 0x13e62490 + } symbol { key: "mempool_alloc_slab" value: 0xa613caa5 @@ -380577,10 +381715,18 @@ symbols { key: "mempool_free" value: 0xfa3d486a } + symbol { + key: "mempool_free_pages" + value: 0x77eb61b0 + } symbol { key: "mempool_free_slab" value: 0xfbb56638 } + symbol { + key: "mempool_resize" + value: 0x9a28516c + } symbol { key: "memremap" value: 0x7ad45055 @@ -381333,6 +382479,14 @@ symbols { key: "nvmem_device_write" value: 0x28ba8e50 } + symbol { + key: "nvmem_register" + value: 0x65d6ca81 + } + symbol { + key: "nvmem_unregister" + value: 0x27081fa8 + } symbol { key: "of_address_to_resource" value: 0x458a15db @@ -383493,6 +384647,10 @@ symbols { key: "rdev_get_id" value: 0x85c7decb } + symbol { + key: "read_cache_page" + value: 0x5b227eda + } symbol { key: "reboot_mode" value: 0x46082c90 @@ -384513,6 +385671,10 @@ symbols { key: "scnprintf" value: 0xa2bcc818 } + symbol { + key: "scsi_add_host_with_dma" + value: 0xa0d4d843 + } symbol { key: "scsi_alloc_request" value: 0x7a6a0afc @@ -384533,6 +385695,10 @@ symbols { key: "scsi_block_when_processing_errors" value: 0xd3148537 } + symbol { + key: "scsi_change_queue_depth" + value: 0x278a6b59 + } symbol { key: "scsi_cmd_allowed" value: 0xe4036f2e @@ -384545,10 +385711,34 @@ symbols { key: "scsi_device_get" value: 0x76dea2aa } + symbol { + key: "scsi_device_lookup" + value: 0x14eb95fa + } symbol { key: "scsi_device_put" value: 0x474e9bcc } + symbol { + key: "scsi_dma_map" + value: 0xf10245da + } + symbol { + key: "scsi_dma_unmap" + value: 0x18cbd7f9 + } + symbol { + key: "scsi_host_alloc" + value: 0x32b196e0 + } + symbol { + key: "scsi_host_lookup" + value: 0x022517f0 + } + symbol { + key: "scsi_host_put" + value: 0x4d8a452e + } symbol { key: "scsi_ioctl" value: 0x7509c737 @@ -384557,14 +385747,34 @@ symbols { key: "scsi_ioctl_block_when_processing_errors" value: 0xd8a616ba } + symbol { + key: "scsi_is_host_device" + value: 0xcecaa985 + } symbol { key: "scsi_normalize_sense" value: 0x36deacf7 } + symbol { + key: "scsi_print_command" + value: 0xf0e07f22 + } symbol { key: "scsi_register_interface" value: 0x5286bfd6 } + symbol { + key: "scsi_remove_host" + value: 0x8deacb1d + } + symbol { + key: "scsi_report_bus_reset" + value: 0x2e407415 + } + symbol { + key: "scsi_scan_host" + value: 0xc9021692 + } symbol { key: "scsi_unblock_requests" value: 0x9c54c873 @@ -384957,6 +386167,10 @@ symbols { key: "sg_next" value: 0x55c5bdf3 } + symbol { + key: "sget_fc" + value: 0x12402fa7 + } symbol { key: "shmem_file_setup" value: 0x7f3b48aa @@ -387173,6 +388387,10 @@ symbols { key: "udp_tunnel_xmit_skb" value: 0x674efb6f } + symbol { + key: "ufshcd_alloc_host" + value: 0x3fa12248 + } symbol { key: "ufshcd_auto_hibern8_update" value: 0x5ba31e17 @@ -387181,6 +388399,14 @@ symbols { key: "ufshcd_bkops_ctrl" value: 0x3b41d1e4 } + symbol { + key: "ufshcd_config_pwr_mode" + value: 0xa45d6674 + } + symbol { + key: "ufshcd_dealloc_host" + value: 0xca76e0b2 + } symbol { key: "ufshcd_dme_configure_adapt" value: 0x60b0cfc9 @@ -387209,6 +388435,10 @@ symbols { key: "ufshcd_get_pwr_dev_param" value: 0x7f35e3d5 } + symbol { + key: "ufshcd_hba_enable" + value: 0x493c067d + } symbol { key: "ufshcd_hba_stop" value: 0xc3b81360 @@ -387221,6 +388451,10 @@ symbols { key: "ufshcd_init_pwr_dev_param" value: 0x1c4ece11 } + symbol { + key: "ufshcd_make_hba_operational" + value: 0xba7435fd + } symbol { key: "ufshcd_mcq_config_esi" value: 0xb59c5eaf @@ -387325,6 +388559,10 @@ symbols { key: "ufshcd_uic_hibern8_exit" value: 0xc9fa7338 } + symbol { + key: "ufshcd_update_evt_hist" + value: 0xb163f167 + } symbol { key: "uio_unregister_device" value: 0x439eff60 @@ -388065,6 +389303,10 @@ symbols { key: "usleep_range_state" value: 0xb5437ef4 } + symbol { + key: "utf16s_to_utf8s" + value: 0x1473720a + } symbol { key: "utf8_data_table" value: 0xa459c02b @@ -389041,6 +390283,10 @@ symbols { key: "wait_for_completion_timeout" value: 0x60488ecf } + symbol { + key: "wait_for_device_probe" + value: 0x9d727719 + } symbol { key: "wait_woken" value: 0xa4027847 @@ -389085,6 +390331,22 @@ symbols { key: "wakeup_source_unregister" value: 0xfff68651 } + symbol { + key: "wakeup_sources_read_lock" + value: 0x735a53f2 + } + symbol { + key: "wakeup_sources_read_unlock" + value: 0xaa56f7fa + } + symbol { + key: "wakeup_sources_walk_next" + value: 0x36d0e118 + } + symbol { + key: "wakeup_sources_walk_start" + value: 0x96e52cc0 + } symbol { key: "watchdog_init_timeout" value: 0xb3aa5e28 diff --git a/android/abi_gki_aarch64_xiaomi b/android/abi_gki_aarch64_xiaomi new file mode 100644 index 000000000000..1bacdc22f885 --- /dev/null +++ b/android/abi_gki_aarch64_xiaomi @@ -0,0 +1,131 @@ +[abi_symbol_list] + proc_mkdir_data + proc_create_seq_private + i2c_smbus_read_byte_data + i2c_smbus_write_byte_data + blk_execute_rq + blk_rq_map_kern + scsi_device_lookup + scsi_host_lookup + scsi_host_put + ufshcd_read_desc_param + utf16s_to_utf8s + async_schedule_node + blk_mq_alloc_tag_set + blk_mq_init_queue + blk_mq_tagset_busy_iter + bsg_job_done + bsg_remove_queue + bsg_setup_queue + dev_pm_opp_remove + scsi_add_host_with_dma + scsi_block_requests + scsi_dma_unmap + scsi_is_host_device + scsi_remove_host + scsi_report_bus_reset + scsi_scan_host + scsi_unblock_requests + scsi_change_queue_depth + scsi_print_command + scsi_dma_map + scsi_host_alloc + scsi_normalize_sense + sg_copy_from_buffer + sg_copy_to_buffer + ufshcd_alloc_host + ufshcd_config_pwr_mode + ufshcd_dealloc_host + ufshcd_hba_enable + ufshcd_make_hba_operational + ufshcd_query_attr_retry + ufshcd_query_flag_retry + ufshcd_update_evt_hist + wait_for_completion_io_timeout + __scsi_add_device + blk_mq_free_tag_set + blk_queue_update_dma_alignment + blk_queue_update_dma_pad + mempool_resize + mempool_alloc_pages + mempool_free_pages + regmap_raw_write_async + snd_soc_bytes_tlv_callback + regmap_async_complete + snd_compr_stop_error + snd_soc_component_disable_pin + snd_soc_component_force_enable_pin + snd_pcm_format_physical_width + snd_pcm_hw_constraint_list + regmap_multi_reg_write_bypassed + snd_ctl_boolean_mono_info + snd_soc_put_volsw_range + snd_soc_get_volsw_range + snd_soc_info_volsw_range + regmap_raw_write + regcache_drop_region + regmap_raw_read + regmap_multi_reg_write + regulator_bulk_enable + __blk_mq_end_request + balance_dirty_pages_ratelimited + bdi_alloc + bdi_put + bdi_register + blk_mq_freeze_queue + blk_mq_quiesce_queue + blk_mq_start_request + blk_mq_unfreeze_queue + blk_mq_unquiesce_queue + blk_queue_write_cache + blk_update_request + blkdev_get_by_dev + blkdev_get_by_path + blkdev_put + deactivate_locked_super + fixed_size_llseek + generic_shutdown_super + kmsg_dump_get_buffer + kmsg_dump_register + kmsg_dump_rewind + kmsg_dump_unregister + ktime_get_coarse_real_ts64 + lockref_get + logfc + lookup_bdev + name_to_dev_t + nvmem_register + nvmem_unregister + proc_create_single_data + read_cache_page + set_disk_ro + set_page_dirty + sget_fc + simple_strtoul + sync_blockdev + wait_for_device_probe + blk_mq_alloc_sq_tag_set + __traceiter_android_vh_binder_wait_for_work + __tracepoint_android_vh_binder_wait_for_work + __traceiter_android_vh_free_task + __tracepoint_android_vh_free_task + jiffies_64 + __traceiter_android_rvh_after_enqueue_task + __traceiter_android_rvh_after_dequeue_task + __tracepoint_android_rvh_after_enqueue_task + __tracepoint_android_rvh_after_dequeue_task + __traceiter_android_rvh_check_preempt_tick + __traceiter_android_rvh_dequeue_entity + __traceiter_android_rvh_enqueue_entity + __tracepoint_android_rvh_check_preempt_tick + __tracepoint_android_rvh_dequeue_entity + __tracepoint_android_rvh_enqueue_entity + console_printk + __traceiter_android_vh_binder_transaction_init + __tracepoint_android_vh_binder_transaction_init + drm_get_connector_type_name + gpio_request_array + wakeup_sources_read_lock + wakeup_sources_read_unlock + wakeup_sources_walk_start + wakeup_sources_walk_next From d56ad709773a90012b44e87c0c233faebdcf5823 Mon Sep 17 00:00:00 2001 From: Will Deacon Date: Thu, 23 Mar 2023 14:08:58 +0000 Subject: [PATCH 210/269] ANDROID: arm64: Implement hypervisor workaround for SoCs with DMA beyond the PoC SoCs featuring peripherals that can issue non-coherent DMA traffic beyond the point of coherency (PoC) present multiple challenges for the DMA-API implementation in Linux. Many of these challenges can be overcome by suitable configuration of the interconnect, however the presence of a cacheable alias for non-cacheable buffers can still lead to coherence issues arising when stale clean lines are back-snooped from the cache hierarchy to satisfy a non-cacheable transaction at the PoC. Removing all cacheable aliases on a case-by-cases basis is both error-prone and expensive. Instead, leverage the stage-2 identity mapping installed by pKVM to enforce consistent cacheability for all stage-1 aliases. Bug: 240786634 Change-Id: I78b0aa51fe3e23811bbd25481173086aa957c4bf Signed-off-by: Will Deacon --- .../admin-guide/kernel-parameters.txt | 13 ++ arch/arm64/Kconfig | 17 ++ .../include/asm/android_erratum_pgtable.h | 53 +++++++ arch/arm64/include/asm/kvm_asm.h | 3 + arch/arm64/include/asm/pgtable.h | 10 +- arch/arm64/include/asm/vmalloc.h | 6 + arch/arm64/kernel/image-vars.h | 4 + arch/arm64/kvm/Makefile | 1 + arch/arm64/kvm/android_erratum_pgtable.c | 108 +++++++++++++ arch/arm64/kvm/hyp/include/nvhe/mm.h | 1 + arch/arm64/kvm/hyp/nvhe/hyp-main.c | 14 ++ arch/arm64/kvm/hyp/nvhe/mem_protect.c | 150 +++++++++++++++--- arch/arm64/kvm/hyp/nvhe/mm.c | 19 ++- arch/arm64/kvm/pkvm.c | 5 + 14 files changed, 384 insertions(+), 20 deletions(-) create mode 100644 arch/arm64/include/asm/android_erratum_pgtable.h create mode 100644 arch/arm64/kvm/android_erratum_pgtable.c diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index ccc8b9a216ae..9c078d38842c 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -2544,6 +2544,19 @@ for all guests. Default is 1 (enabled) if in 64-bit or 32-bit PAE mode. + kvm-arm.force_nc + [KVM,ARM,ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC] + + Enable hypercalls to remap host pages as normal + non-cacheable at stage-2 and issue these hypercalls + when installing non-cacheable ptes at stage-1. This + is useful to work around coherency issues on systems + with DMA peripherals integrated beyond the Point of + Coherency (PoC). + + This option only applies when booting with + kvm-arm.mode=protected. + kvm-arm.mode= [KVM,ARM] Select one of KVM/arm64's modes of operation. diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 08a102a4a9f3..f8340ec290e2 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -1136,6 +1136,23 @@ config SOCIONEXT_SYNQUACER_PREITS If unsure, say Y. +config ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC + bool "Remove cacheable aliases of non-cacheable DMA buffers at stage-2" + default y + depends on KVM + help + Some SoCs integrate non-coherent DMA-capable peripherals beyond + the Point of Coherency (PoC), resulting in loss of coherency + with non-cacheable mappings on the CPU in the presence of a + cacheable alias. + + This workaround provides a mechanism (controlled by the kernel + command-line) to remap pages as non-cacheable in pKVM's stage-2 + mapping for the host, thereby removing any cacheable aliases + that may be present in the stage-1 mapping. + + If unsure, say Y. + endmenu # "ARM errata workarounds via the alternatives framework" choice diff --git a/arch/arm64/include/asm/android_erratum_pgtable.h b/arch/arm64/include/asm/android_erratum_pgtable.h new file mode 100644 index 000000000000..57b7fbfa440f --- /dev/null +++ b/arch/arm64/include/asm/android_erratum_pgtable.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2023 - Google LLC + * Author: Will Deacon + */ +#ifndef _ASM_ARM64_ANDROID_ERRATUM_PGTABLE_H +#define _ASM_ARM64_ANDROID_ERRATUM_PGTABLE_H + +#ifndef __ASM_PGTABLE_H +#error "Please don't include this header directly." +#endif + +#ifdef CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC +extern void pkvm_host_set_stage2_memattr(phys_addr_t addr, bool force_nc); +extern __init int pkvm_register_early_nc_mappings(void); + +DECLARE_STATIC_KEY_FALSE(pkvm_force_nc); +static inline bool prot_needs_stage2_update(pgprot_t prot) +{ + pteval_t val = pgprot_val(prot); + + if (!static_branch_unlikely(&pkvm_force_nc)) + return 0; + + return (val & PTE_ATTRINDX_MASK) == PTE_ATTRINDX(MT_NORMAL_NC); +} + +static inline void arm64_update_cacheable_aliases(pte_t *ptep, pte_t pte) +{ + pte_t old_pte = READ_ONCE(*ptep); + bool force_nc; + + if (!static_branch_unlikely(&pkvm_force_nc)) + return; + + if (pte_valid(old_pte) == pte_valid(pte)) + return; + + if (!pte_valid(pte)) { + force_nc = false; + pte = old_pte; + } else { + force_nc = true; + } + + if ((pte_val(pte) & PTE_ATTRINDX_MASK) == PTE_ATTRINDX(MT_NORMAL_NC)) + pkvm_host_set_stage2_memattr(__pte_to_phys(pte), force_nc); +} +#else +static inline void arm64_update_cacheable_aliases(pte_t *ptep, pte_t pte) { } +static inline bool prot_needs_stage2_update(pgprot_t prot) { return false; } +#endif /* CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC */ +#endif /* _ASM_ARM64_ANDROID_ERRATUM_PGTABLE_H */ diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h index f4a0b50bf0e1..6679bdcc7478 100644 --- a/arch/arm64/include/asm/kvm_asm.h +++ b/arch/arm64/include/asm/kvm_asm.h @@ -103,6 +103,9 @@ enum __kvm_host_smccc_func { __KVM_HOST_SMCCC_FUNC___pkvm_rb_swap_reader_page, __KVM_HOST_SMCCC_FUNC___pkvm_rb_update_footers, __KVM_HOST_SMCCC_FUNC___pkvm_enable_event, +#ifdef CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC + __KVM_HOST_SMCCC_FUNC___pkvm_host_set_stage2_memattr, +#endif /* * Start of the dynamically registered hypercalls. Start a bit diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 5d0f1f7b7600..812373cff4ee 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -320,6 +320,8 @@ static inline void __check_racy_pte_update(struct mm_struct *mm, pte_t *ptep, __func__, pte_val(old_pte), pte_val(pte)); } +#include + static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte) { @@ -348,6 +350,7 @@ static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr, __check_racy_pte_update(mm, ptep, pte); + arm64_update_cacheable_aliases(ptep, pte); set_pte(ptep, pte); } @@ -531,6 +534,7 @@ static inline pmd_t pmd_mkdevmap(pmd_t pmd) static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp, pmd_t pmd) { + WARN_ON(prot_needs_stage2_update(__pgprot(pmd_val(pmd)))); page_table_check_pmd_set(mm, addr, pmdp, pmd); return __set_pte_at(mm, addr, (pte_t *)pmdp, pmd_pte(pmd)); } @@ -538,6 +542,7 @@ static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr, static inline void set_pud_at(struct mm_struct *mm, unsigned long addr, pud_t *pudp, pud_t pud) { + WARN_ON(prot_needs_stage2_update(__pgprot(pud_val(pud)))); page_table_check_pud_set(mm, addr, pudp, pud); return __set_pte_at(mm, addr, (pte_t *)pudp, pud_pte(pud)); } @@ -933,7 +938,10 @@ static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma, static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long address, pte_t *ptep) { - pte_t pte = __pte(xchg_relaxed(&pte_val(*ptep), 0)); + pte_t pte; + + arm64_update_cacheable_aliases(ptep, __pte(0)); + pte = __pte(xchg_relaxed(&pte_val(*ptep), 0)); page_table_check_pte_clear(mm, address, pte); diff --git a/arch/arm64/include/asm/vmalloc.h b/arch/arm64/include/asm/vmalloc.h index 38fafffe699f..964744b625ae 100644 --- a/arch/arm64/include/asm/vmalloc.h +++ b/arch/arm64/include/asm/vmalloc.h @@ -9,6 +9,9 @@ #define arch_vmap_pud_supported arch_vmap_pud_supported static inline bool arch_vmap_pud_supported(pgprot_t prot) { + if (prot_needs_stage2_update(prot)) + return false; + /* * SW table walks can't handle removal of intermediate entries. */ @@ -19,6 +22,9 @@ static inline bool arch_vmap_pud_supported(pgprot_t prot) #define arch_vmap_pmd_supported arch_vmap_pmd_supported static inline bool arch_vmap_pmd_supported(pgprot_t prot) { + if (prot_needs_stage2_update(prot)) + return false; + /* See arch_vmap_pud_supported() */ return !IS_ENABLED(CONFIG_PTDUMP_DEBUGFS); } diff --git a/arch/arm64/kernel/image-vars.h b/arch/arm64/kernel/image-vars.h index 1f778c342019..1e57ebccac9d 100644 --- a/arch/arm64/kernel/image-vars.h +++ b/arch/arm64/kernel/image-vars.h @@ -121,6 +121,10 @@ KVM_NVHE_ALIAS(__hyp_event_ids_end); /* pKVM static key */ KVM_NVHE_ALIAS(kvm_protected_mode_initialized); +#ifdef CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC +KVM_NVHE_ALIAS(pkvm_force_nc); +#endif + #endif /* CONFIG_KVM */ #endif /* __ARM64_KERNEL_IMAGE_VARS_H */ diff --git a/arch/arm64/kvm/Makefile b/arch/arm64/kvm/Makefile index 848172679a2d..d215f3d259d0 100644 --- a/arch/arm64/kvm/Makefile +++ b/arch/arm64/kvm/Makefile @@ -23,6 +23,7 @@ kvm-y += arm.o mmu.o mmio.o psci.o hypercalls.o pvtime.o \ vgic/vgic-its.o vgic/vgic-debug.o kvm-$(CONFIG_HW_PERF_EVENTS) += pmu-emul.o pmu.o +kvm-$(CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC) += android_erratum_pgtable.o kvm-$(CONFIG_TRACING) += hyp_events.o hyp_trace.o diff --git a/arch/arm64/kvm/android_erratum_pgtable.c b/arch/arm64/kvm/android_erratum_pgtable.c new file mode 100644 index 000000000000..301f24e9d811 --- /dev/null +++ b/arch/arm64/kvm/android_erratum_pgtable.c @@ -0,0 +1,108 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2023 - Google LLC + * Author: Will Deacon + */ +#include +#include + +#include +#include +#include + +DEFINE_STATIC_KEY_FALSE(pkvm_force_nc); +static int __init early_pkvm_force_nc_cfg(char *arg) +{ + static_branch_enable(&pkvm_force_nc); + return 0; +} +early_param("kvm-arm.force_nc", early_pkvm_force_nc_cfg); + +/* + * Update the stage-2 memory attributes (cacheability) for a page, usually + * in response to mapping or unmapping a normal non-cacheable region at stage-1. + * + * If 'force_nc' is set, the stage-2 entry is immediately made non-cacheable + * (and cleaned+invalidated to the PoC) otherwise the entry is unmapped and the + * cacheability determined based on the stage-1 attribute of the next access + * (with no cache maintenance being performed). + */ +struct pkvm_host_nc_region { + phys_addr_t start; + phys_addr_t end; +}; + +#define PKVM_HOST_MAX_EARLY_NC_REGIONS 8 +static struct pkvm_host_nc_region +pkvm_host_early_nc_regions[PKVM_HOST_MAX_EARLY_NC_REGIONS]; + +static void pkvm_host_track_early_nc_mapping(phys_addr_t addr) +{ + static int idx /*= 0*/; + struct pkvm_host_nc_region *reg = &pkvm_host_early_nc_regions[idx]; + + if (reg->start == reg->end) { + reg->start = addr; + } else if (reg->end != addr) { + if (WARN_ON(idx == PKVM_HOST_MAX_EARLY_NC_REGIONS - 1)) + return; + + reg = &pkvm_host_early_nc_regions[++idx]; + reg->start = addr; + } + + reg->end = addr + PAGE_SIZE; +} + +void pkvm_host_set_stage2_memattr(phys_addr_t addr, bool force_nc) +{ + int err; + + if (kvm_get_mode() != KVM_MODE_PROTECTED) + return; + + /* + * Non-memory regions or carveouts marked as "no-map" are handled + * entirely by their corresponding driver, which should avoid the + * creation of a cacheable alias in the first place. + */ + if (!memblock_is_map_memory(addr)) + return; + + if (!is_pkvm_initialized()) { + if (!WARN_ON_ONCE(!force_nc)) + pkvm_host_track_early_nc_mapping(addr); + return; + } + + err = kvm_call_hyp_nvhe(__pkvm_host_set_stage2_memattr, addr, force_nc); + WARN_ON(err && err != -EAGAIN); +} +EXPORT_SYMBOL_GPL(pkvm_host_set_stage2_memattr); + +int __init pkvm_register_early_nc_mappings(void) +{ + int i; + + if (!is_pkvm_initialized()) + return 0; + + for (i = 0; i < PKVM_HOST_MAX_EARLY_NC_REGIONS; ++i) { + struct pkvm_host_nc_region *reg = &pkvm_host_early_nc_regions[i]; + + if (reg->start == reg->end) + return 0; + + while (reg->start != reg->end) { + int err; + + err = kvm_call_hyp_nvhe(__pkvm_host_set_stage2_memattr, reg->start, true); + if (err) + return err; + + reg->start += PAGE_SIZE; + } + } + + return 0; +} diff --git a/arch/arm64/kvm/hyp/include/nvhe/mm.h b/arch/arm64/kvm/hyp/include/nvhe/mm.h index ed2e8ab8d236..92278f8b2ab9 100644 --- a/arch/arm64/kvm/hyp/include/nvhe/mm.h +++ b/arch/arm64/kvm/hyp/include/nvhe/mm.h @@ -16,6 +16,7 @@ extern const struct pkvm_module_ops module_ops; int hyp_create_pcpu_fixmap(void); void *hyp_fixmap_map(phys_addr_t phys); +void *hyp_fixmap_map_nc(phys_addr_t phys); void hyp_fixmap_unmap(void); void hyp_poison_page(phys_addr_t phys); diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c index c854d1f674e5..8e291ac1a053 100644 --- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c +++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c @@ -1263,6 +1263,17 @@ static void handle___pkvm_enable_event(struct kvm_cpu_context *host_ctxt) cpu_reg(host_ctxt, 1) = __pkvm_enable_event(id, enable); } +#ifdef CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC +extern int __pkvm_host_set_stage2_memattr(phys_addr_t phys, bool force_nc); +static void handle___pkvm_host_set_stage2_memattr(struct kvm_cpu_context *host_ctxt) +{ + DECLARE_REG(phys_addr_t, phys, host_ctxt, 1); + DECLARE_REG(bool, force_nc, host_ctxt, 2); + + cpu_reg(host_ctxt, 1) = __pkvm_host_set_stage2_memattr(phys, force_nc); +} +#endif + typedef void (*hcall_t)(struct kvm_cpu_context *); #define HANDLE_FUNC(x) [__KVM_HOST_SMCCC_FUNC_##x] = (hcall_t)handle_##x @@ -1315,6 +1326,9 @@ static const hcall_t host_hcall[] = { HANDLE_FUNC(__pkvm_rb_swap_reader_page), HANDLE_FUNC(__pkvm_rb_update_footers), HANDLE_FUNC(__pkvm_enable_event), +#ifdef CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC + HANDLE_FUNC(__pkvm_host_set_stage2_memattr), +#endif }; unsigned long pkvm_priv_hcall_limit __ro_after_init = __KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize; diff --git a/arch/arm64/kvm/hyp/nvhe/mem_protect.c b/arch/arm64/kvm/hyp/nvhe/mem_protect.c index 4590e3d9d8dd..ddd14eb489bc 100644 --- a/arch/arm64/kvm/hyp/nvhe/mem_protect.c +++ b/arch/arm64/kvm/hyp/nvhe/mem_protect.c @@ -539,23 +539,10 @@ static inline bool range_included(struct kvm_mem_range *child, return parent->start <= child->start && child->end <= parent->end; } -static int host_stage2_adjust_range(u64 addr, struct kvm_mem_range *range) +static int host_stage2_adjust_range(u64 addr, struct kvm_mem_range *range, + u32 level) { struct kvm_mem_range cur; - kvm_pte_t pte; - u32 level; - int ret; - - hyp_assert_lock_held(&host_mmu.lock); - ret = kvm_pgtable_get_leaf(&host_mmu.pgt, addr, &pte, &level); - if (ret) - return ret; - - if (kvm_pte_valid(pte)) - return -EAGAIN; - - if (pte) - return -EPERM; do { u64 granule = kvm_granule_size(level); @@ -641,15 +628,141 @@ static bool host_stage2_pte_is_counted(kvm_pte_t pte, u32 level) return (pte & KVM_HOST_S2_DEFAULT_MASK) != KVM_HOST_S2_DEFAULT_MMIO_PTE; } -static int host_stage2_idmap(u64 addr) +#define DEFERRED_MEMATTR_NOTE (1ULL << 24) +#ifdef CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC +static enum pkvm_page_state host_get_page_state(kvm_pte_t pte, u64 addr); + +int __pkvm_host_set_stage2_memattr(phys_addr_t phys, bool force_nc) +{ + kvm_pte_t pte; + int ret = 0; + + if (!static_branch_unlikely(&pkvm_force_nc)) + return -ENOENT; + + phys = ALIGN_DOWN(phys, PAGE_SIZE); + hyp_spin_lock(&host_mmu.lock); + + ret = kvm_pgtable_get_leaf(&host_mmu.pgt, phys, &pte, NULL); + if (ret) + goto unlock; + + if (!addr_is_memory(phys)) { + ret = -EIO; + goto unlock; + } + + if (!kvm_pte_valid(pte) && pte) { + switch (pte) { + case DEFERRED_MEMATTR_NOTE: + break; + default: + ret = -EPERM; + } + } else if (host_get_page_state(pte, phys) != PKVM_PAGE_OWNED) { + ret = -EPERM; + } + + if (ret) + goto unlock; + + if (force_nc) { + ret = host_stage2_idmap_locked(phys, PAGE_SIZE, + PKVM_HOST_MEM_PROT | + KVM_PGTABLE_PROT_NC, + false); + if (ret) + goto unlock; + + kvm_flush_dcache_to_poc(hyp_fixmap_map_nc(phys), PAGE_SIZE); + hyp_fixmap_unmap(); + } else { + ret = kvm_pgtable_stage2_annotate(&host_mmu.pgt, phys, + PAGE_SIZE, &host_s2_pool, + DEFERRED_MEMATTR_NOTE); + } +unlock: + hyp_spin_unlock(&host_mmu.lock); + return ret; +} + +static int handle_memattr_annotation(struct kvm_vcpu_fault_info *fault, + u64 addr, enum kvm_pgtable_prot *prot, + struct kvm_mem_range *range) +{ + u64 par, oldpar; + + /* If the S1 MMU is disabled, treat the access as cacheable */ + if (unlikely(!(read_sysreg(sctlr_el1) & SCTLR_ELx_M))) + return 0; + + /* If we took a fault on a PTW, then treat it as cacheable */ + if (fault->esr_el2 & ESR_ELx_S1PTW) + return 0; + + oldpar = read_sysreg_par(); + + if (!__kvm_at("s1e1r", fault->far_el2)) + par = read_sysreg_par(); + else + par = SYS_PAR_EL1_F; + + write_sysreg(oldpar, par_el1); + + if (unlikely(par & SYS_PAR_EL1_F)) + return -EAGAIN; + + if ((par >> 56) == MAIR_ATTR_NORMAL_NC) { + range->start = ALIGN_DOWN(addr, PAGE_SIZE); + range->end = range->start + PAGE_SIZE; + *prot |= KVM_PGTABLE_PROT_NC; + } + + return 0; +} +#else +static int handle_memattr_annotation(struct kvm_vcpu_fault_info *fault, + u64 addr, enum kvm_pgtable_prot *prot, + struct kvm_mem_range *range) +{ + return -EPERM; +} +#endif + +static int host_stage2_idmap(struct kvm_vcpu_fault_info *fault, u64 addr) { struct kvm_mem_range range; bool is_memory = !!find_mem_range(addr, &range); enum kvm_pgtable_prot prot = default_host_prot(is_memory); + kvm_pte_t pte; + u32 level; int ret; hyp_assert_lock_held(&host_mmu.lock); + ret = kvm_pgtable_get_leaf(&host_mmu.pgt, addr, &pte, &level); + if (ret) + return ret; + + if (kvm_pte_valid(pte)) + return -EAGAIN; + + if (pte) { + if (!is_memory) + return -EPERM; + + switch (pte) { + case DEFERRED_MEMATTR_NOTE: + ret = handle_memattr_annotation(fault, addr, &prot, + &range); + if (ret) + return ret; + break; + default: + return -EPERM; + } + } + /* * Adjust against IOMMU devices first. host_stage2_adjust_range() should * be called last for proper alignment. @@ -661,7 +774,7 @@ static int host_stage2_idmap(u64 addr) return ret; } - ret = host_stage2_adjust_range(addr, &range); + ret = host_stage2_adjust_range(addr, &range, level); if (ret) return ret; @@ -750,6 +863,7 @@ void handle_host_mem_abort(struct kvm_cpu_context *host_ctxt) esr = read_sysreg_el2(SYS_ESR); BUG_ON(!__get_fault_info(esr, &fault)); + fault.esr_el2 = esr; addr = (fault.hpfar_el2 & HPFAR_MASK) << 8; addr |= fault.far_el2 & FAR_MASK; @@ -763,7 +877,7 @@ void handle_host_mem_abort(struct kvm_cpu_context *host_ctxt) /* If not handled, attempt to map the page. */ if (ret == -EPERM) - ret = host_stage2_idmap(addr); + ret = host_stage2_idmap(&fault, addr); host_unlock_component(); diff --git a/arch/arm64/kvm/hyp/nvhe/mm.c b/arch/arm64/kvm/hyp/nvhe/mm.c index 672676c20e9c..4d07d5e874e0 100644 --- a/arch/arm64/kvm/hyp/nvhe/mm.c +++ b/arch/arm64/kvm/hyp/nvhe/mm.c @@ -309,12 +309,29 @@ void *hyp_fixmap_map(phys_addr_t phys) return (void *)slot->addr + offset_in_page(phys); } +#define KVM_PTE_LEAF_ATTR_LO_S1_ATTRIDX GENMASK(4, 2) +void *hyp_fixmap_map_nc(phys_addr_t phys) +{ + struct hyp_fixmap_slot *slot = this_cpu_ptr(&fixmap_slots); + kvm_pte_t pte, *ptep = slot->ptep; + + pte = *ptep; + pte &= ~kvm_phys_to_pte(KVM_PHYS_INVALID); + pte |= kvm_phys_to_pte(phys) | KVM_PTE_VALID | + FIELD_PREP(KVM_PTE_LEAF_ATTR_LO_S1_ATTRIDX, MT_NORMAL_NC); + WRITE_ONCE(*ptep, pte); + dsb(ishst); + + return (void *)slot->addr; +} + static void fixmap_clear_slot(struct hyp_fixmap_slot *slot) { kvm_pte_t *ptep = slot->ptep; u64 addr = slot->addr; - WRITE_ONCE(*ptep, *ptep & ~KVM_PTE_VALID); + /* Zap the memory type too. MT_NORMAL is 0 so the fixmap is cacheable by default */ + WRITE_ONCE(*ptep, *ptep & ~(KVM_PTE_VALID | KVM_PTE_LEAF_ATTR_LO_S1_ATTRIDX)); /* * Irritatingly, the architecture requires that we use inner-shareable diff --git a/arch/arm64/kvm/pkvm.c b/arch/arm64/kvm/pkvm.c index 3ec32f19b4a9..84eae2b5a2b2 100644 --- a/arch/arm64/kvm/pkvm.c +++ b/arch/arm64/kvm/pkvm.c @@ -514,6 +514,11 @@ static int __init finalize_pkvm(void) pkvm_firmware_rmem_clear(); } +#ifdef CONFIG_ANDROID_ARM64_WORKAROUND_DMA_BEYOND_POC + if (!ret) + ret = pkvm_register_early_nc_mappings(); +#endif + return ret; } device_initcall_sync(finalize_pkvm); From 3e4bbbe1031b326d90db83d7a1b36251ac2f6cf7 Mon Sep 17 00:00:00 2001 From: Subash Abhinov Kasiviswanathan Date: Mon, 10 Apr 2023 13:15:45 -0600 Subject: [PATCH 211/269] ANDROID: abi_gki_aarch64_qcom: Add sock_gen_put Add the symbol sock_gen_put which is needed by rmnet modules. Symbols added: sock_gen_put Bug: 277377865 Change-Id: Ie98c2269ae7f1f4022dcf84973d9d00d5fa927c5 Signed-off-by: Subash Abhinov Kasiviswanathan --- android/abi_gki_aarch64.stg | 13 +++++++++++++ android/abi_gki_aarch64_qcom | 1 + 2 files changed, 14 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index ceb1e79671ed..f74842457dc0 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -361008,6 +361008,15 @@ elf_symbol { type_id: 0x11cb8bd5 full_name: "sock_efree" } +elf_symbol { + id: 0x4ece0732 + name: "sock_gen_put" + is_defined: true + symbol_type: FUNCTION + crc: 0x0d70adc5 + type_id: 0x17c95d08 + full_name: "sock_gen_put" +} elf_symbol { id: 0x284bec0f name: "sock_gettstamp" @@ -387071,6 +387080,10 @@ symbols { key: "sock_efree" value: 0x83497546 } + symbol { + key: "sock_gen_put" + value: 0x4ece0732 + } symbol { key: "sock_gettstamp" value: 0x284bec0f diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index 3758e8c2f125..4640c25dbc58 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -3243,6 +3243,7 @@ sock_edemux sock_efree sockfd_lookup + sock_gen_put sock_gettstamp sock_i_ino sock_init_data From 1bc680b30bb864069220f9c5e66113c21392ed8a Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Fri, 2 Jul 2021 10:25:47 -0700 Subject: [PATCH 212/269] ANDROID: GKI: fscrypt: add ABI padding to struct fscrypt_operations 'struct fscrypt_operations' shouldn't really be part of the KMI, as there's no reason for loadable modules to use it. However, due to the way MODVERSIONS calculates symbol CRCs by recursively dereferencing structures, changes to 'struct fscrypt_operations' affect the CRCs of KMI functions exported from certain core kernel files such as fs/dcache.c. That brings it in-scope for the KMI freeze. Therefore, add some reserved fields to this struct for LTS updates. Bug: 151154716 Change-Id: Ic3bf66c93a9be167a0a5b257bd55e2719d99a1b4 Signed-off-by: Eric Biggers Signed-off-by: Jung Jinwoo --- include/linux/fscrypt.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/linux/fscrypt.h b/include/linux/fscrypt.h index 0b1cec249961..381905833059 100644 --- a/include/linux/fscrypt.h +++ b/include/linux/fscrypt.h @@ -17,6 +17,7 @@ #include #include #include +#include /* * The lengths of all file contents blocks must be divisible by this value. @@ -176,6 +177,11 @@ struct fscrypt_operations { */ struct block_device **(*get_devices)(struct super_block *sb, unsigned int *num_devs); + + ANDROID_KABI_RESERVE(1); + ANDROID_KABI_RESERVE(2); + ANDROID_KABI_RESERVE(3); + ANDROID_KABI_RESERVE(4); }; static inline struct fscrypt_info *fscrypt_get_info(const struct inode *inode) From a789a7ef1a5b6bf4cc51bfa131c43005787ab691 Mon Sep 17 00:00:00 2001 From: Lu Baolu Date: Mon, 31 Oct 2022 08:59:05 +0800 Subject: [PATCH 213/269] UPSTREAM: iommu: Add max_pasids field in struct iommu_device Use this field to keep the number of supported PASIDs that an IOMMU hardware is able to support. This is a generic attribute of an IOMMU and lifting it into the per-IOMMU device structure makes it possible to allocate a PASID for device without calls into the IOMMU drivers. Any iommu driver that supports PASID related features should set this field before enabling them on the devices. In the Intel IOMMU driver, intel_iommu_sm is moved to CONFIG_INTEL_IOMMU enclave so that the pasid_supported() helper could be used in dmar.c without compilation errors. Signed-off-by: Lu Baolu Reviewed-by: Jean-Philippe Brucker Reviewed-by: Kevin Tian Reviewed-by: Jason Gunthorpe Reviewed-by: Yi Liu Tested-by: Zhangfei Gao Tested-by: Tony Zhu Link: https://lore.kernel.org/r/20221031005917.45690-2-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel (cherry picked from commit 1adf3cc20d693569ebee90fd91fa34b0570fcd6f) Bug: 271394577 Change-Id: I64f01079ffca23d28eb1d8c8d4e72afcbf197430 Signed-off-by: Michael Shavit --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 1 + drivers/iommu/intel/dmar.c | 7 +++++++ drivers/iommu/intel/iommu.h | 4 ++-- include/linux/iommu.h | 2 ++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index d4d8bfee9feb..bbe5ce4aefc5 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -3543,6 +3543,7 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu) /* SID/SSID sizes */ smmu->ssid_bits = FIELD_GET(IDR1_SSIDSIZE, reg); smmu->sid_bits = FIELD_GET(IDR1_SIDSIZE, reg); + smmu->iommu.max_pasids = 1UL << smmu->ssid_bits; /* * If the SMMU supports fewer bits than would fill a single L2 stream diff --git a/drivers/iommu/intel/dmar.c b/drivers/iommu/intel/dmar.c index f800989ea046..c80c524ad32d 100644 --- a/drivers/iommu/intel/dmar.c +++ b/drivers/iommu/intel/dmar.c @@ -1106,6 +1106,13 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd) raw_spin_lock_init(&iommu->register_lock); + /* + * A value of N in PSS field of eCap register indicates hardware + * supports PASID field of N+1 bits. + */ + if (pasid_supported(iommu)) + iommu->iommu.max_pasids = 2UL << ecap_pss(iommu->ecap); + /* * This is only for hotplug; at boot time intel_iommu_enabled won't * be set yet. When intel_iommu_init() runs, it registers the units diff --git a/drivers/iommu/intel/iommu.h b/drivers/iommu/intel/iommu.h index db9df7c3790c..4f0ee2c610af 100644 --- a/drivers/iommu/intel/iommu.h +++ b/drivers/iommu/intel/iommu.h @@ -480,8 +480,6 @@ enum { #define VTD_FLAG_IRQ_REMAP_PRE_ENABLED (1 << 1) #define VTD_FLAG_SVM_CAPABLE (1 << 2) -extern int intel_iommu_sm; - #define sm_supported(iommu) (intel_iommu_sm && ecap_smts((iommu)->ecap)) #define pasid_supported(iommu) (sm_supported(iommu) && \ ecap_pasid((iommu)->ecap)) @@ -799,6 +797,7 @@ struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus, extern const struct iommu_ops intel_iommu_ops; #ifdef CONFIG_INTEL_IOMMU +extern int intel_iommu_sm; extern int iommu_calculate_agaw(struct intel_iommu *iommu); extern int iommu_calculate_max_sagaw(struct intel_iommu *iommu); extern int dmar_disabled; @@ -814,6 +813,7 @@ static inline int iommu_calculate_max_sagaw(struct intel_iommu *iommu) } #define dmar_disabled (1) #define intel_iommu_enabled (0) +#define intel_iommu_sm (0) #endif static inline const char *decode_prq_descriptor(char *str, size_t size, diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 3c9da1f8979e..e3af4f46e6e0 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -322,12 +322,14 @@ struct iommu_domain_ops { * @list: Used by the iommu-core to keep a list of registered iommus * @ops: iommu-ops for talking to this iommu * @dev: struct device for sysfs handling + * @max_pasids: number of supported PASIDs */ struct iommu_device { struct list_head list; const struct iommu_ops *ops; struct fwnode_handle *fwnode; struct device *dev; + u32 max_pasids; }; /** From 102cc9b4acfeb81090d73ac97255acea67a71810 Mon Sep 17 00:00:00 2001 From: Lu Baolu Date: Mon, 31 Oct 2022 08:59:06 +0800 Subject: [PATCH 214/269] UPSTREAM: iommu: Add max_pasids field in struct dev_iommu Use this field to save the number of PASIDs that a device is able to consume. It is a generic attribute of a device and lifting it into the per-device dev_iommu struct could help to avoid the boilerplate code in various IOMMU drivers. Signed-off-by: Lu Baolu Reviewed-by: Kevin Tian Reviewed-by: Jason Gunthorpe Reviewed-by: Yi Liu Tested-by: Zhangfei Gao Tested-by: Tony Zhu Link: https://lore.kernel.org/r/20221031005917.45690-3-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel (cherry picked from commit 22d2c7afb3697a68c7fc05c935ef662dee06dc60) Bug: 271394577 Change-Id: I92e21b945fd09563ac6bfe99165ce72d952b4b45 Signed-off-by: Michael Shavit --- drivers/iommu/iommu.c | 20 ++++++++++++++++++++ include/linux/iommu.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index bfb2f163c691..71bf65cfa265 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -278,6 +279,24 @@ static void dev_iommu_free(struct device *dev) kfree(param); } +static u32 dev_iommu_get_max_pasids(struct device *dev) +{ + u32 max_pasids = 0, bits = 0; + int ret; + + if (dev_is_pci(dev)) { + ret = pci_max_pasids(to_pci_dev(dev)); + if (ret > 0) + max_pasids = ret; + } else { + ret = device_property_read_u32(dev, "pasid-num-bits", &bits); + if (!ret) + max_pasids = 1UL << bits; + } + + return min_t(u32, max_pasids, dev->iommu->iommu_dev->max_pasids); +} + static int __iommu_probe_device(struct device *dev, struct list_head *group_list) { const struct iommu_ops *ops = dev->bus->iommu_ops; @@ -313,6 +332,7 @@ static int __iommu_probe_device(struct device *dev, struct list_head *group_list } dev->iommu->iommu_dev = iommu_dev; + dev->iommu->max_pasids = dev_iommu_get_max_pasids(dev); group = iommu_group_get_for_dev(dev); if (IS_ERR(group)) { diff --git a/include/linux/iommu.h b/include/linux/iommu.h index e3af4f46e6e0..ac3f6c6dcc6d 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -368,6 +368,7 @@ struct iommu_fault_param { * @fwspec: IOMMU fwspec data * @iommu_dev: IOMMU device this device is linked to * @priv: IOMMU Driver private data + * @max_pasids: number of PASIDs this device can consume * * TODO: migrate other per device data pointers under iommu_dev_data, e.g. * struct iommu_group *iommu_group; @@ -379,6 +380,7 @@ struct dev_iommu { struct iommu_fwspec *fwspec; struct iommu_device *iommu_dev; void *priv; + u32 max_pasids; }; int iommu_device_register(struct iommu_device *iommu, From 36db10b1ad4a299d37b2473077a804c81e4babda Mon Sep 17 00:00:00 2001 From: Lu Baolu Date: Mon, 31 Oct 2022 08:59:07 +0800 Subject: [PATCH 215/269] UPSTREAM: iommu: Remove SVM_FLAG_SUPERVISOR_MODE support The current kernel DMA with PASID support is based on the SVA with a flag SVM_FLAG_SUPERVISOR_MODE. The IOMMU driver binds the kernel memory address space to a PASID of the device. The device driver programs the device with kernel virtual address (KVA) for DMA access. There have been security and functional issues with this approach: - The lack of IOTLB synchronization upon kernel page table updates. (vmalloc, module/BPF loading, CONFIG_DEBUG_PAGEALLOC etc.) - Other than slight more protection, using kernel virtual address (KVA) has little advantage over physical address. There are also no use cases yet where DMA engines need kernel virtual addresses for in-kernel DMA. This removes SVM_FLAG_SUPERVISOR_MODE support from the IOMMU interface. The device drivers are suggested to handle kernel DMA with PASID through the kernel DMA APIs. The drvdata parameter in iommu_sva_bind_device() and all callbacks is not needed anymore. Cleanup them as well. Link: https://lore.kernel.org/linux-iommu/20210511194726.GP1002214@nvidia.com/ Signed-off-by: Jacob Pan Signed-off-by: Lu Baolu Reviewed-by: Jason Gunthorpe Reviewed-by: Jean-Philippe Brucker Reviewed-by: Kevin Tian Reviewed-by: Fenghua Yu Tested-by: Zhangfei Gao Tested-by: Tony Zhu Link: https://lore.kernel.org/r/20221031005917.45690-4-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel (cherry picked from commit 942fd5435dccb273f90176b046ae6bbba60cfbd8) Bug: 271394577 Change-Id: I568663921ccb4af3898806d576e3d7b605157d32 Signed-off-by: Michael Shavit --- drivers/dma/idxd/cdev.c | 3 +- drivers/dma/idxd/init.c | 25 +-------- .../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 3 +- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 5 +- drivers/iommu/intel/iommu.h | 3 +- drivers/iommu/intel/svm.c | 55 +++++-------------- drivers/iommu/iommu.c | 5 +- drivers/misc/uacce/uacce.c | 2 +- include/linux/intel-svm.h | 13 ----- include/linux/iommu.h | 8 +-- 10 files changed, 25 insertions(+), 97 deletions(-) diff --git a/drivers/dma/idxd/cdev.c b/drivers/dma/idxd/cdev.c index a9b96b18772f..e13e92609943 100644 --- a/drivers/dma/idxd/cdev.c +++ b/drivers/dma/idxd/cdev.c @@ -6,7 +6,6 @@ #include #include #include -#include #include #include #include @@ -100,7 +99,7 @@ static int idxd_cdev_open(struct inode *inode, struct file *filp) filp->private_data = ctx; if (device_user_pasid_enabled(idxd)) { - sva = iommu_sva_bind_device(dev, current->mm, NULL); + sva = iommu_sva_bind_device(dev, current->mm); if (IS_ERR(sva)) { rc = PTR_ERR(sva); dev_err(dev, "pasid allocation failed: %d\n", rc); diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c index e0f49545d89f..e63b0c674d88 100644 --- a/drivers/dma/idxd/init.c +++ b/drivers/dma/idxd/init.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -502,29 +501,7 @@ static struct idxd_device *idxd_alloc(struct pci_dev *pdev, struct idxd_driver_d static int idxd_enable_system_pasid(struct idxd_device *idxd) { - int flags; - unsigned int pasid; - struct iommu_sva *sva; - - flags = SVM_FLAG_SUPERVISOR_MODE; - - sva = iommu_sva_bind_device(&idxd->pdev->dev, NULL, &flags); - if (IS_ERR(sva)) { - dev_warn(&idxd->pdev->dev, - "iommu sva bind failed: %ld\n", PTR_ERR(sva)); - return PTR_ERR(sva); - } - - pasid = iommu_sva_get_pasid(sva); - if (pasid == IOMMU_PASID_INVALID) { - iommu_sva_unbind_device(sva); - return -ENODEV; - } - - idxd->sva = sva; - idxd->pasid = pasid; - dev_dbg(&idxd->pdev->dev, "system pasid: %u\n", pasid); - return 0; + return -EOPNOTSUPP; } static void idxd_disable_system_pasid(struct idxd_device *idxd) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c index 5968a568aae2..8fcf0df4bd0e 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c @@ -367,8 +367,7 @@ err_free_bond: return ERR_PTR(ret); } -struct iommu_sva * -arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm, void *drvdata) +struct iommu_sva *arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm) { struct iommu_sva *handle; struct iommu_domain *domain = iommu_get_domain_for_dev(dev); diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h index cd48590ada30..d2ba86470c42 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h @@ -754,8 +754,7 @@ bool arm_smmu_master_sva_enabled(struct arm_smmu_master *master); int arm_smmu_master_enable_sva(struct arm_smmu_master *master); int arm_smmu_master_disable_sva(struct arm_smmu_master *master); bool arm_smmu_master_iopf_supported(struct arm_smmu_master *master); -struct iommu_sva *arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm, - void *drvdata); +struct iommu_sva *arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm); void arm_smmu_sva_unbind(struct iommu_sva *handle); u32 arm_smmu_sva_get_pasid(struct iommu_sva *handle); void arm_smmu_sva_notifier_synchronize(void); @@ -791,7 +790,7 @@ static inline bool arm_smmu_master_iopf_supported(struct arm_smmu_master *master } static inline struct iommu_sva * -arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm, void *drvdata) +arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm) { return ERR_PTR(-ENODEV); } diff --git a/drivers/iommu/intel/iommu.h b/drivers/iommu/intel/iommu.h index 4f0ee2c610af..f2fdb0aa4aed 100644 --- a/drivers/iommu/intel/iommu.h +++ b/drivers/iommu/intel/iommu.h @@ -752,8 +752,7 @@ struct intel_iommu *device_to_iommu(struct device *dev, u8 *bus, u8 *devfn); extern void intel_svm_check(struct intel_iommu *iommu); extern int intel_svm_enable_prq(struct intel_iommu *iommu); extern int intel_svm_finish_prq(struct intel_iommu *iommu); -struct iommu_sva *intel_svm_bind(struct device *dev, struct mm_struct *mm, - void *drvdata); +struct iommu_sva *intel_svm_bind(struct device *dev, struct mm_struct *mm); void intel_svm_unbind(struct iommu_sva *handle); u32 intel_svm_get_pasid(struct iommu_sva *handle); int intel_svm_page_response(struct device *dev, struct iommu_fault_event *evt, diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c index 03b25358946c..4b8d5480c460 100644 --- a/drivers/iommu/intel/svm.c +++ b/drivers/iommu/intel/svm.c @@ -299,8 +299,7 @@ out: return 0; } -static int intel_svm_alloc_pasid(struct device *dev, struct mm_struct *mm, - unsigned int flags) +static int intel_svm_alloc_pasid(struct device *dev, struct mm_struct *mm) { ioasid_t max_pasid = dev_is_pci(dev) ? pci_max_pasids(to_pci_dev(dev)) : intel_pasid_max_id; @@ -310,8 +309,7 @@ static int intel_svm_alloc_pasid(struct device *dev, struct mm_struct *mm, static struct iommu_sva *intel_svm_bind_mm(struct intel_iommu *iommu, struct device *dev, - struct mm_struct *mm, - unsigned int flags) + struct mm_struct *mm) { struct device_domain_info *info = dev_iommu_priv_get(dev); struct intel_svm_dev *sdev; @@ -327,22 +325,18 @@ static struct iommu_sva *intel_svm_bind_mm(struct intel_iommu *iommu, svm->pasid = mm->pasid; svm->mm = mm; - svm->flags = flags; INIT_LIST_HEAD_RCU(&svm->devs); - if (!(flags & SVM_FLAG_SUPERVISOR_MODE)) { - svm->notifier.ops = &intel_mmuops; - ret = mmu_notifier_register(&svm->notifier, mm); - if (ret) { - kfree(svm); - return ERR_PTR(ret); - } + svm->notifier.ops = &intel_mmuops; + ret = mmu_notifier_register(&svm->notifier, mm); + if (ret) { + kfree(svm); + return ERR_PTR(ret); } ret = pasid_private_add(svm->pasid, svm); if (ret) { - if (svm->notifier.ops) - mmu_notifier_unregister(&svm->notifier, mm); + mmu_notifier_unregister(&svm->notifier, mm); kfree(svm); return ERR_PTR(ret); } @@ -377,9 +371,7 @@ static struct iommu_sva *intel_svm_bind_mm(struct intel_iommu *iommu, } /* Setup the pasid table: */ - sflags = (flags & SVM_FLAG_SUPERVISOR_MODE) ? - PASID_FLAG_SUPERVISOR_MODE : 0; - sflags |= cpu_feature_enabled(X86_FEATURE_LA57) ? PASID_FLAG_FL5LP : 0; + sflags = cpu_feature_enabled(X86_FEATURE_LA57) ? PASID_FLAG_FL5LP : 0; ret = intel_pasid_setup_first_level(iommu, dev, mm->pgd, mm->pasid, FLPT_DEFAULT_DID, sflags); if (ret) @@ -393,8 +385,7 @@ free_sdev: kfree(sdev); free_svm: if (list_empty(&svm->devs)) { - if (svm->notifier.ops) - mmu_notifier_unregister(&svm->notifier, mm); + mmu_notifier_unregister(&svm->notifier, mm); pasid_private_remove(mm->pasid); kfree(svm); } @@ -787,40 +778,20 @@ prq_advance: return IRQ_RETVAL(handled); } -struct iommu_sva *intel_svm_bind(struct device *dev, struct mm_struct *mm, void *drvdata) +struct iommu_sva *intel_svm_bind(struct device *dev, struct mm_struct *mm) { struct intel_iommu *iommu = device_to_iommu(dev, NULL, NULL); - unsigned int flags = 0; struct iommu_sva *sva; int ret; - if (drvdata) - flags = *(unsigned int *)drvdata; - - if (flags & SVM_FLAG_SUPERVISOR_MODE) { - if (!ecap_srs(iommu->ecap)) { - dev_err(dev, "%s: Supervisor PASID not supported\n", - iommu->name); - return ERR_PTR(-EOPNOTSUPP); - } - - if (mm) { - dev_err(dev, "%s: Supervisor PASID with user provided mm\n", - iommu->name); - return ERR_PTR(-EINVAL); - } - - mm = &init_mm; - } - mutex_lock(&pasid_mutex); - ret = intel_svm_alloc_pasid(dev, mm, flags); + ret = intel_svm_alloc_pasid(dev, mm); if (ret) { mutex_unlock(&pasid_mutex); return ERR_PTR(ret); } - sva = intel_svm_bind_mm(iommu, dev, mm, flags); + sva = intel_svm_bind_mm(iommu, dev, mm); mutex_unlock(&pasid_mutex); return sva; diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 71bf65cfa265..1133debb187d 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -2784,7 +2784,6 @@ EXPORT_SYMBOL_GPL(iommu_dev_disable_feature); * iommu_sva_bind_device() - Bind a process address space to a device * @dev: the device * @mm: the mm to bind, caller must hold a reference to it - * @drvdata: opaque data pointer to pass to bind callback * * Create a bond between device and address space, allowing the device to access * the mm using the returned PASID. If a bond already exists between @device and @@ -2797,7 +2796,7 @@ EXPORT_SYMBOL_GPL(iommu_dev_disable_feature); * On error, returns an ERR_PTR value. */ struct iommu_sva * -iommu_sva_bind_device(struct device *dev, struct mm_struct *mm, void *drvdata) +iommu_sva_bind_device(struct device *dev, struct mm_struct *mm) { struct iommu_group *group; struct iommu_sva *handle = ERR_PTR(-EINVAL); @@ -2822,7 +2821,7 @@ iommu_sva_bind_device(struct device *dev, struct mm_struct *mm, void *drvdata) if (iommu_group_device_count(group) != 1) goto out_unlock; - handle = ops->sva_bind(dev, mm, drvdata); + handle = ops->sva_bind(dev, mm); out_unlock: mutex_unlock(&group->mutex); diff --git a/drivers/misc/uacce/uacce.c b/drivers/misc/uacce/uacce.c index b70a013139c7..905eff1f840e 100644 --- a/drivers/misc/uacce/uacce.c +++ b/drivers/misc/uacce/uacce.c @@ -108,7 +108,7 @@ static int uacce_bind_queue(struct uacce_device *uacce, struct uacce_queue *q) if (!(uacce->flags & UACCE_DEV_SVA)) return 0; - handle = iommu_sva_bind_device(uacce->parent, current->mm, NULL); + handle = iommu_sva_bind_device(uacce->parent, current->mm); if (IS_ERR(handle)) return PTR_ERR(handle); diff --git a/include/linux/intel-svm.h b/include/linux/intel-svm.h index 207ef06ba3e1..f9a0d44f6fdb 100644 --- a/include/linux/intel-svm.h +++ b/include/linux/intel-svm.h @@ -13,17 +13,4 @@ #define PRQ_RING_MASK ((0x1000 << PRQ_ORDER) - 0x20) #define PRQ_DEPTH ((0x1000 << PRQ_ORDER) >> 5) -/* - * The SVM_FLAG_SUPERVISOR_MODE flag requests a PASID which can be used only - * for access to kernel addresses. No IOTLB flushes are automatically done - * for kernel mappings; it is valid only for access to the kernel's static - * 1:1 mapping of physical memory — not to vmalloc or even module mappings. - * A future API addition may permit the use of such ranges, by means of an - * explicit IOTLB flush call (akin to the DMA API's unmap method). - * - * It is unlikely that we will ever hook into flush_tlb_kernel_range() to - * do such IOTLB flushes automatically. - */ -#define SVM_FLAG_SUPERVISOR_MODE BIT(0) - #endif /* __INTEL_SVM_H__ */ diff --git a/include/linux/iommu.h b/include/linux/iommu.h index ac3f6c6dcc6d..72bb0531aa76 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -247,8 +247,7 @@ struct iommu_ops { int (*dev_enable_feat)(struct device *dev, enum iommu_dev_features f); int (*dev_disable_feat)(struct device *dev, enum iommu_dev_features f); - struct iommu_sva *(*sva_bind)(struct device *dev, struct mm_struct *mm, - void *drvdata); + struct iommu_sva *(*sva_bind)(struct device *dev, struct mm_struct *mm); void (*sva_unbind)(struct iommu_sva *handle); u32 (*sva_get_pasid)(struct iommu_sva *handle); @@ -668,8 +667,7 @@ int iommu_dev_enable_feature(struct device *dev, enum iommu_dev_features f); int iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features f); struct iommu_sva *iommu_sva_bind_device(struct device *dev, - struct mm_struct *mm, - void *drvdata); + struct mm_struct *mm); void iommu_sva_unbind_device(struct iommu_sva *handle); u32 iommu_sva_get_pasid(struct iommu_sva *handle); @@ -1000,7 +998,7 @@ iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features feat) } static inline struct iommu_sva * -iommu_sva_bind_device(struct device *dev, struct mm_struct *mm, void *drvdata) +iommu_sva_bind_device(struct device *dev, struct mm_struct *mm) { return NULL; } From db8a6a29f45047c32146e09ee6e34cdf480b9acf Mon Sep 17 00:00:00 2001 From: Lu Baolu Date: Mon, 31 Oct 2022 08:59:08 +0800 Subject: [PATCH 216/269] UPSTREAM: PCI: Enable PASID only when ACS RR & UF enabled on upstream path The Requester ID/Process Address Space ID (PASID) combination identifies an address space distinct from the PCI bus address space, e.g., an address space defined by an IOMMU. But the PCIe fabric routes Memory Requests based on the TLP address, ignoring any PASID (PCIe r6.0, sec 2.2.10.4), so a TLP with PASID that SHOULD go upstream to the IOMMU may instead be routed as a P2P Request if its address falls in a bridge window. To ensure that all Memory Requests with PASID are routed upstream, only enable PASID if ACS P2P Request Redirect and Upstream Forwarding are enabled for the path leading to the device. Suggested-by: Jason Gunthorpe Suggested-by: Kevin Tian Signed-off-by: Lu Baolu Acked-by: Bjorn Helgaas Reviewed-by: Jason Gunthorpe Tested-by: Tony Zhu Link: https://lore.kernel.org/r/20221031005917.45690-5-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel (cherry picked from commit 201007ef707a8bb5592cd07dd46fc9222c48e0b9) Bug: 271394577 Change-Id: I302e3c26cd5d3a0122f4ef52a0191959aef574c0 Signed-off-by: Michael Shavit --- drivers/pci/ats.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/pci/ats.c b/drivers/pci/ats.c index c967ad6e2626..f9cc2e10b676 100644 --- a/drivers/pci/ats.c +++ b/drivers/pci/ats.c @@ -382,6 +382,9 @@ int pci_enable_pasid(struct pci_dev *pdev, int features) if (!pasid) return -EINVAL; + if (!pci_acs_path_enabled(pdev, NULL, PCI_ACS_RR | PCI_ACS_UF)) + return -EINVAL; + pci_read_config_word(pdev, pasid + PCI_PASID_CAP, &supported); supported &= PCI_PASID_CAP_EXEC | PCI_PASID_CAP_PRIV; From 119fbcf43c5db0b54ef76314435afe9c257b4258 Mon Sep 17 00:00:00 2001 From: Lu Baolu Date: Mon, 31 Oct 2022 08:59:09 +0800 Subject: [PATCH 217/269] UPSTREAM: iommu: Add attach/detach_dev_pasid iommu interfaces Attaching an IOMMU domain to a PASID of a device is a generic operation for modern IOMMU drivers which support PASID-granular DMA address translation. Currently visible usage scenarios include (but not limited): - SVA (Shared Virtual Address) - kernel DMA with PASID - hardware-assist mediated device This adds the set_dev_pasid domain ops for setting the domain onto a PASID of a device and remove_dev_pasid iommu ops for removing any setup on a PASID of device. This also adds interfaces for device drivers to attach/detach/retrieve a domain for a PASID of a device. If multiple devices share a single group, it's fine as long the fabric always routes every TLP marked with a PASID to the host bridge and only the host bridge. For example, ACS achieves this universally and has been checked when pci_enable_pasid() is called. As we can't reliably tell the source apart in a group, all the devices in a group have to be considered as the same source, and mapped to the same PASID table. The DMA ownership is about the whole device (more precisely, iommu group), including the RID and PASIDs. When the ownership is converted, the pasid array must be empty. This also adds necessary checks in the DMA ownership interfaces. Signed-off-by: Lu Baolu Reviewed-by: Jean-Philippe Brucker Reviewed-by: Kevin Tian Reviewed-by: Yi Liu Reviewed-by: Jason Gunthorpe Tested-by: Zhangfei Gao Tested-by: Tony Zhu Link: https://lore.kernel.org/r/20221031005917.45690-6-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel (cherry picked from commit 16603704559c7a68718059c4f75287886c01b20f) Bug: 271394577 Change-Id: I8057b72c3db7b83cd26c1b0ceeb81eeeff97c6f3 Signed-off-by: Michael Shavit --- drivers/iommu/iommu.c | 141 ++++++++++++++++++++++++++++++++++++++++-- include/linux/iommu.h | 32 ++++++++++ 2 files changed, 169 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 1133debb187d..69c276f395d9 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -43,6 +43,7 @@ struct iommu_group { struct kobject kobj; struct kobject *devices_kobj; struct list_head devices; + struct xarray pasid_array; struct mutex mutex; void *iommu_data; void (*iommu_data_release)(void *iommu_data); @@ -739,6 +740,7 @@ struct iommu_group *iommu_group_alloc(void) mutex_init(&group->mutex); INIT_LIST_HEAD(&group->devices); INIT_LIST_HEAD(&group->entry); + xa_init(&group->pasid_array); ret = ida_alloc(&iommu_group_ida, GFP_KERNEL); if (ret < 0) { @@ -3140,7 +3142,8 @@ int iommu_device_use_default_domain(struct device *dev) mutex_lock(&group->mutex); if (group->owner_cnt) { - if (group->owner || !iommu_is_default_domain(group)) { + if (group->owner || !iommu_is_default_domain(group) || + !xa_empty(&group->pasid_array)) { ret = -EBUSY; goto unlock_out; } @@ -3171,7 +3174,7 @@ void iommu_device_unuse_default_domain(struct device *dev) return; mutex_lock(&group->mutex); - if (!WARN_ON(!group->owner_cnt)) + if (!WARN_ON(!group->owner_cnt || !xa_empty(&group->pasid_array))) group->owner_cnt--; mutex_unlock(&group->mutex); @@ -3219,7 +3222,8 @@ int iommu_group_claim_dma_owner(struct iommu_group *group, void *owner) ret = -EPERM; goto unlock_out; } else { - if (group->domain && group->domain != group->default_domain) { + if ((group->domain && group->domain != group->default_domain) || + !xa_empty(&group->pasid_array)) { ret = -EBUSY; goto unlock_out; } @@ -3253,7 +3257,8 @@ void iommu_group_release_dma_owner(struct iommu_group *group) int ret; mutex_lock(&group->mutex); - if (WARN_ON(!group->owner_cnt || !group->owner)) + if (WARN_ON(!group->owner_cnt || !group->owner || + !xa_empty(&group->pasid_array))) goto unlock_out; group->owner_cnt = 0; @@ -3284,3 +3289,131 @@ bool iommu_group_dma_owner_claimed(struct iommu_group *group) return user; } EXPORT_SYMBOL_GPL(iommu_group_dma_owner_claimed); + +static int __iommu_set_group_pasid(struct iommu_domain *domain, + struct iommu_group *group, ioasid_t pasid) +{ + struct group_device *device; + int ret = 0; + + list_for_each_entry(device, &group->devices, list) { + ret = domain->ops->set_dev_pasid(domain, device->dev, pasid); + if (ret) + break; + } + + return ret; +} + +static void __iommu_remove_group_pasid(struct iommu_group *group, + ioasid_t pasid) +{ + struct group_device *device; + const struct iommu_ops *ops; + + list_for_each_entry(device, &group->devices, list) { + ops = dev_iommu_ops(device->dev); + ops->remove_dev_pasid(device->dev, pasid); + } +} + +/* + * iommu_attach_device_pasid() - Attach a domain to pasid of device + * @domain: the iommu domain. + * @dev: the attached device. + * @pasid: the pasid of the device. + * + * Return: 0 on success, or an error. + */ +int iommu_attach_device_pasid(struct iommu_domain *domain, + struct device *dev, ioasid_t pasid) +{ + struct iommu_group *group; + void *curr; + int ret; + + if (!domain->ops->set_dev_pasid) + return -EOPNOTSUPP; + + group = iommu_group_get(dev); + if (!group) + return -ENODEV; + + mutex_lock(&group->mutex); + curr = xa_cmpxchg(&group->pasid_array, pasid, NULL, domain, GFP_KERNEL); + if (curr) { + ret = xa_err(curr) ? : -EBUSY; + goto out_unlock; + } + + ret = __iommu_set_group_pasid(domain, group, pasid); + if (ret) { + __iommu_remove_group_pasid(group, pasid); + xa_erase(&group->pasid_array, pasid); + } +out_unlock: + mutex_unlock(&group->mutex); + iommu_group_put(group); + + return ret; +} +EXPORT_SYMBOL_GPL(iommu_attach_device_pasid); + +/* + * iommu_detach_device_pasid() - Detach the domain from pasid of device + * @domain: the iommu domain. + * @dev: the attached device. + * @pasid: the pasid of the device. + * + * The @domain must have been attached to @pasid of the @dev with + * iommu_attach_device_pasid(). + */ +void iommu_detach_device_pasid(struct iommu_domain *domain, struct device *dev, + ioasid_t pasid) +{ + struct iommu_group *group = iommu_group_get(dev); + + mutex_lock(&group->mutex); + __iommu_remove_group_pasid(group, pasid); + WARN_ON(xa_erase(&group->pasid_array, pasid) != domain); + mutex_unlock(&group->mutex); + + iommu_group_put(group); +} +EXPORT_SYMBOL_GPL(iommu_detach_device_pasid); + +/* + * iommu_get_domain_for_dev_pasid() - Retrieve domain for @pasid of @dev + * @dev: the queried device + * @pasid: the pasid of the device + * @type: matched domain type, 0 for any match + * + * This is a variant of iommu_get_domain_for_dev(). It returns the existing + * domain attached to pasid of a device. Callers must hold a lock around this + * function, and both iommu_attach/detach_dev_pasid() whenever a domain of + * type is being manipulated. This API does not internally resolve races with + * attach/detach. + * + * Return: attached domain on success, NULL otherwise. + */ +struct iommu_domain *iommu_get_domain_for_dev_pasid(struct device *dev, + ioasid_t pasid, + unsigned int type) +{ + struct iommu_domain *domain; + struct iommu_group *group; + + group = iommu_group_get(dev); + if (!group) + return NULL; + + xa_lock(&group->pasid_array); + domain = xa_load(&group->pasid_array, pasid); + if (type && domain && domain->type != type) + domain = ERR_PTR(-EBUSY); + xa_unlock(&group->pasid_array); + iommu_group_put(group); + + return domain; +} +EXPORT_SYMBOL_GPL(iommu_get_domain_for_dev_pasid); diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 72bb0531aa76..5d2b78ac5416 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -223,6 +223,9 @@ struct iommu_iotlb_gather { * - IOMMU_DOMAIN_DMA: must use a dma domain * - 0: use the default setting * @default_domain_ops: the default ops for domains + * @remove_dev_pasid: Remove any translation configurations of a specific + * pasid, so that any DMA transactions with this pasid + * will be blocked by the hardware. * @pgsize_bitmap: bitmap of all possible supported page sizes * @owner: Driver module providing these ops */ @@ -256,6 +259,7 @@ struct iommu_ops { struct iommu_page_response *msg); int (*def_domain_type)(struct device *dev); + void (*remove_dev_pasid)(struct device *dev, ioasid_t pasid); const struct iommu_domain_ops *default_domain_ops; unsigned long pgsize_bitmap; @@ -266,6 +270,7 @@ struct iommu_ops { * struct iommu_domain_ops - domain specific operations * @attach_dev: attach an iommu domain to a device * @detach_dev: detach an iommu domain from a device + * @set_dev_pasid: set an iommu domain to a pasid of device * @map: map a physically contiguous memory region to an iommu domain * @map_pages: map a physically contiguous set of pages of the same size to * an iommu domain. @@ -286,6 +291,8 @@ struct iommu_ops { struct iommu_domain_ops { int (*attach_dev)(struct iommu_domain *domain, struct device *dev); void (*detach_dev)(struct iommu_domain *domain, struct device *dev); + int (*set_dev_pasid)(struct iommu_domain *domain, struct device *dev, + ioasid_t pasid); int (*map)(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t size, int prot, gfp_t gfp); @@ -678,6 +685,13 @@ int iommu_group_claim_dma_owner(struct iommu_group *group, void *owner); void iommu_group_release_dma_owner(struct iommu_group *group); bool iommu_group_dma_owner_claimed(struct iommu_group *group); +int iommu_attach_device_pasid(struct iommu_domain *domain, + struct device *dev, ioasid_t pasid); +void iommu_detach_device_pasid(struct iommu_domain *domain, + struct device *dev, ioasid_t pasid); +struct iommu_domain * +iommu_get_domain_for_dev_pasid(struct device *dev, ioasid_t pasid, + unsigned int type); #else /* CONFIG_IOMMU_API */ struct iommu_ops {}; @@ -1040,6 +1054,24 @@ static inline bool iommu_group_dma_owner_claimed(struct iommu_group *group) { return false; } + +static inline int iommu_attach_device_pasid(struct iommu_domain *domain, + struct device *dev, ioasid_t pasid) +{ + return -ENODEV; +} + +static inline void iommu_detach_device_pasid(struct iommu_domain *domain, + struct device *dev, ioasid_t pasid) +{ +} + +static inline struct iommu_domain * +iommu_get_domain_for_dev_pasid(struct device *dev, ioasid_t pasid, + unsigned int type) +{ + return NULL; +} #endif /* CONFIG_IOMMU_API */ /** From 33991390ac780bc5e8e489db5386765b960249b1 Mon Sep 17 00:00:00 2001 From: Lu Baolu Date: Mon, 31 Oct 2022 08:59:10 +0800 Subject: [PATCH 218/269] UPSTREAM: iommu: Add IOMMU SVA domain support The SVA iommu_domain represents a hardware pagetable that the IOMMU hardware could use for SVA translation. This adds some infrastructures to support SVA domain in the iommu core. It includes: - Extend the iommu_domain to support a new IOMMU_DOMAIN_SVA domain type. The IOMMU drivers that support allocation of the SVA domain should provide its own SVA domain specific iommu_domain_ops. - Add a helper to allocate an SVA domain. The iommu_domain_free() is still used to free an SVA domain. The report_iommu_fault() should be replaced by the new iommu_report_device_fault(). Leave the existing fault handler with the existing users and the newly added SVA members excludes it. Suggested-by: Jean-Philippe Brucker Suggested-by: Jason Gunthorpe Signed-off-by: Lu Baolu Reviewed-by: Jean-Philippe Brucker Reviewed-by: Kevin Tian Reviewed-by: Jason Gunthorpe Reviewed-by: Yi Liu Tested-by: Zhangfei Gao Tested-by: Tony Zhu Link: https://lore.kernel.org/r/20221031005917.45690-7-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel (cherry picked from commit 136467962e49931dbc6240aea8197fab7e407ba4) Bug: 271394577 Change-Id: I0c6ce7f05f76d7cdcaab5ecd3ad0cf72bbff7d03 Signed-off-by: Michael Shavit --- drivers/iommu/iommu.c | 20 ++++++++++++++++++++ include/linux/iommu.h | 25 +++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 69c276f395d9..653846464973 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -29,6 +29,7 @@ #include #include #include +#include #include "dma-iommu.h" @@ -1954,6 +1955,8 @@ EXPORT_SYMBOL_GPL(iommu_domain_alloc); void iommu_domain_free(struct iommu_domain *domain) { + if (domain->type == IOMMU_DOMAIN_SVA) + mmdrop(domain->mm); iommu_put_dma_cookie(domain); domain->ops->free(domain); } @@ -3417,3 +3420,20 @@ struct iommu_domain *iommu_get_domain_for_dev_pasid(struct device *dev, return domain; } EXPORT_SYMBOL_GPL(iommu_get_domain_for_dev_pasid); + +struct iommu_domain *iommu_sva_domain_alloc(struct device *dev, + struct mm_struct *mm) +{ + const struct iommu_ops *ops = dev_iommu_ops(dev); + struct iommu_domain *domain; + + domain = ops->domain_alloc(IOMMU_DOMAIN_SVA); + if (!domain) + return NULL; + + domain->type = IOMMU_DOMAIN_SVA; + mmgrab(mm); + domain->mm = mm; + + return domain; +} diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 5d2b78ac5416..776baa375967 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -64,6 +64,8 @@ struct iommu_domain_geometry { #define __IOMMU_DOMAIN_PT (1U << 2) /* Domain is identity mapped */ #define __IOMMU_DOMAIN_DMA_FQ (1U << 3) /* DMA-API uses flush queue */ +#define __IOMMU_DOMAIN_SVA (1U << 4) /* Shared process address space */ + /* * This are the possible domain-types * @@ -77,6 +79,8 @@ struct iommu_domain_geometry { * certain optimizations for these domains * IOMMU_DOMAIN_DMA_FQ - As above, but definitely using batched TLB * invalidation. + * IOMMU_DOMAIN_SVA - DMA addresses are shared process addresses + * represented by mm_struct's. */ #define IOMMU_DOMAIN_BLOCKED (0U) #define IOMMU_DOMAIN_IDENTITY (__IOMMU_DOMAIN_PT) @@ -86,15 +90,24 @@ struct iommu_domain_geometry { #define IOMMU_DOMAIN_DMA_FQ (__IOMMU_DOMAIN_PAGING | \ __IOMMU_DOMAIN_DMA_API | \ __IOMMU_DOMAIN_DMA_FQ) +#define IOMMU_DOMAIN_SVA (__IOMMU_DOMAIN_SVA) struct iommu_domain { unsigned type; const struct iommu_domain_ops *ops; unsigned long pgsize_bitmap; /* Bitmap of page sizes in use */ - iommu_fault_handler_t handler; - void *handler_token; struct iommu_domain_geometry geometry; struct iommu_dma_cookie *iova_cookie; + union { + struct { + iommu_fault_handler_t handler; + void *handler_token; + }; + struct { /* IOMMU_DOMAIN_SVA */ + struct mm_struct *mm; + int users; + }; + }; }; static inline bool iommu_is_dma_domain(struct iommu_domain *domain) @@ -685,6 +698,8 @@ int iommu_group_claim_dma_owner(struct iommu_group *group, void *owner); void iommu_group_release_dma_owner(struct iommu_group *group); bool iommu_group_dma_owner_claimed(struct iommu_group *group); +struct iommu_domain *iommu_sva_domain_alloc(struct device *dev, + struct mm_struct *mm); int iommu_attach_device_pasid(struct iommu_domain *domain, struct device *dev, ioasid_t pasid); void iommu_detach_device_pasid(struct iommu_domain *domain, @@ -1055,6 +1070,12 @@ static inline bool iommu_group_dma_owner_claimed(struct iommu_group *group) return false; } +static inline struct iommu_domain * +iommu_sva_domain_alloc(struct device *dev, struct mm_struct *mm) +{ + return NULL; +} + static inline int iommu_attach_device_pasid(struct iommu_domain *domain, struct device *dev, ioasid_t pasid) { From 1b14567e712cd75a5bc902a6cef8f5cf08490e0d Mon Sep 17 00:00:00 2001 From: Lu Baolu Date: Mon, 31 Oct 2022 08:59:11 +0800 Subject: [PATCH 219/269] UPSTREAM: iommu/vt-d: Add SVA domain support Add support for SVA domain allocation and provide an SVA-specific iommu_domain_ops. This implementation is based on the existing SVA code. Possible cleanup and refactoring are left for incremental changes later. The VT-d driver will also need to support setting a DMA domain to a PASID of device. Current SVA implementation uses different data structures to track the domain and device PASID relationship. That's the reason why we need to check the domain type in remove_dev_pasid callback. Eventually we'll consolidate the data structures and remove the need of domain type check. Signed-off-by: Lu Baolu Reviewed-by: Kevin Tian Reviewed-by: Jason Gunthorpe Reviewed-by: Yi Liu Tested-by: Tony Zhu Link: https://lore.kernel.org/r/20221031005917.45690-8-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel (cherry picked from commit eaca8889a1ef50783bcaad143668b735d136fe46) Bug: 271394577 Change-Id: I09fcc5817810f3f351dd5fa6e22e3b5f304005ce Signed-off-by: Michael Shavit --- drivers/iommu/intel/iommu.c | 25 ++++++++++++++++++++ drivers/iommu/intel/iommu.h | 10 ++++++++ drivers/iommu/intel/svm.c | 47 +++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index d4b5d20bd6dd..08087e4e45ce 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -4189,6 +4189,8 @@ static struct iommu_domain *intel_iommu_domain_alloc(unsigned type) return domain; case IOMMU_DOMAIN_IDENTITY: return &si_domain->domain; + case IOMMU_DOMAIN_SVA: + return intel_svm_domain_alloc(); default: return NULL; } @@ -4746,6 +4748,28 @@ static void intel_iommu_iotlb_sync_map(struct iommu_domain *domain, __mapping_notify_one(info->iommu, dmar_domain, pfn, pages); } +static void intel_iommu_remove_dev_pasid(struct device *dev, ioasid_t pasid) +{ + struct intel_iommu *iommu = device_to_iommu(dev, NULL, NULL); + struct iommu_domain *domain; + + /* Domain type specific cleanup: */ + domain = iommu_get_domain_for_dev_pasid(dev, pasid, 0); + if (domain) { + switch (domain->type) { + case IOMMU_DOMAIN_SVA: + intel_svm_remove_dev_pasid(dev, pasid); + break; + default: + /* should never reach here */ + WARN_ON(1); + break; + } + } + + intel_pasid_tear_down_entry(iommu, dev, pasid, false); +} + const struct iommu_ops intel_iommu_ops = { .capable = intel_iommu_capable, .domain_alloc = intel_iommu_domain_alloc, @@ -4758,6 +4782,7 @@ const struct iommu_ops intel_iommu_ops = { .dev_disable_feat = intel_iommu_dev_disable_feat, .is_attach_deferred = intel_iommu_is_attach_deferred, .def_domain_type = device_def_domain_type, + .remove_dev_pasid = intel_iommu_remove_dev_pasid, .pgsize_bitmap = SZ_4K, #ifdef CONFIG_INTEL_IOMMU_SVM .sva_bind = intel_svm_bind, diff --git a/drivers/iommu/intel/iommu.h b/drivers/iommu/intel/iommu.h index f2fdb0aa4aed..f6d78a7e8812 100644 --- a/drivers/iommu/intel/iommu.h +++ b/drivers/iommu/intel/iommu.h @@ -757,6 +757,8 @@ void intel_svm_unbind(struct iommu_sva *handle); u32 intel_svm_get_pasid(struct iommu_sva *handle); int intel_svm_page_response(struct device *dev, struct iommu_fault_event *evt, struct iommu_page_response *msg); +struct iommu_domain *intel_svm_domain_alloc(void); +void intel_svm_remove_dev_pasid(struct device *dev, ioasid_t pasid); struct intel_svm_dev { struct list_head list; @@ -781,6 +783,14 @@ struct intel_svm { }; #else static inline void intel_svm_check(struct intel_iommu *iommu) {} +static inline struct iommu_domain *intel_svm_domain_alloc(void) +{ + return NULL; +} + +static inline void intel_svm_remove_dev_pasid(struct device *dev, ioasid_t pasid) +{ +} #endif #ifdef CONFIG_INTEL_IOMMU_DEBUGFS diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c index 4b8d5480c460..d39444bc2d66 100644 --- a/drivers/iommu/intel/svm.c +++ b/drivers/iommu/intel/svm.c @@ -889,3 +889,50 @@ int intel_svm_page_response(struct device *dev, out: return ret; } + +void intel_svm_remove_dev_pasid(struct device *dev, ioasid_t pasid) +{ + mutex_lock(&pasid_mutex); + intel_svm_unbind_mm(dev, pasid); + mutex_unlock(&pasid_mutex); +} + +static int intel_svm_set_dev_pasid(struct iommu_domain *domain, + struct device *dev, ioasid_t pasid) +{ + struct device_domain_info *info = dev_iommu_priv_get(dev); + struct intel_iommu *iommu = info->iommu; + struct mm_struct *mm = domain->mm; + struct iommu_sva *sva; + int ret = 0; + + mutex_lock(&pasid_mutex); + sva = intel_svm_bind_mm(iommu, dev, mm); + if (IS_ERR(sva)) + ret = PTR_ERR(sva); + mutex_unlock(&pasid_mutex); + + return ret; +} + +static void intel_svm_domain_free(struct iommu_domain *domain) +{ + kfree(to_dmar_domain(domain)); +} + +static const struct iommu_domain_ops intel_svm_domain_ops = { + .set_dev_pasid = intel_svm_set_dev_pasid, + .free = intel_svm_domain_free +}; + +struct iommu_domain *intel_svm_domain_alloc(void) +{ + struct dmar_domain *domain; + + domain = kzalloc(sizeof(*domain), GFP_KERNEL); + if (!domain) + return NULL; + domain->domain.ops = &intel_svm_domain_ops; + + return &domain->domain; +} From 6fc9f366de40f1ad31cf3a6b9658b92106546a0d Mon Sep 17 00:00:00 2001 From: Lu Baolu Date: Mon, 31 Oct 2022 08:59:12 +0800 Subject: [PATCH 220/269] UPSTREAM: arm-smmu-v3/sva: Add SVA domain support Add support for SVA domain allocation and provide an SVA-specific iommu_domain_ops. This implementation is based on the existing SVA code. Possible cleanup and refactoring are left for incremental changes later. Signed-off-by: Lu Baolu Reviewed-by: Jean-Philippe Brucker Reviewed-by: Jason Gunthorpe Tested-by: Zhangfei Gao Link: https://lore.kernel.org/r/20221031005917.45690-9-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel (cherry picked from commit 386fa64fd52baadb849ed60c78b024fd1618278e) Bug: 271394577 Change-Id: Ieecb6e5467640b773eff82e1c1ca6860a5d2abaf Signed-off-by: Michael Shavit --- .../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 61 +++++++++++++++++++ drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 15 +++++ drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 14 +++++ 3 files changed, 90 insertions(+) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c index 8fcf0df4bd0e..2d188d12419e 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c @@ -549,3 +549,64 @@ void arm_smmu_sva_notifier_synchronize(void) */ mmu_notifier_synchronize(); } + +void arm_smmu_sva_remove_dev_pasid(struct iommu_domain *domain, + struct device *dev, ioasid_t id) +{ + struct mm_struct *mm = domain->mm; + struct arm_smmu_bond *bond = NULL, *t; + struct arm_smmu_master *master = dev_iommu_priv_get(dev); + + mutex_lock(&sva_lock); + list_for_each_entry(t, &master->bonds, list) { + if (t->mm == mm) { + bond = t; + break; + } + } + + if (!WARN_ON(!bond) && refcount_dec_and_test(&bond->refs)) { + list_del(&bond->list); + arm_smmu_mmu_notifier_put(bond->smmu_mn); + kfree(bond); + } + mutex_unlock(&sva_lock); +} + +static int arm_smmu_sva_set_dev_pasid(struct iommu_domain *domain, + struct device *dev, ioasid_t id) +{ + int ret = 0; + struct iommu_sva *handle; + struct mm_struct *mm = domain->mm; + + mutex_lock(&sva_lock); + handle = __arm_smmu_sva_bind(dev, mm); + if (IS_ERR(handle)) + ret = PTR_ERR(handle); + mutex_unlock(&sva_lock); + + return ret; +} + +static void arm_smmu_sva_domain_free(struct iommu_domain *domain) +{ + kfree(domain); +} + +static const struct iommu_domain_ops arm_smmu_sva_domain_ops = { + .set_dev_pasid = arm_smmu_sva_set_dev_pasid, + .free = arm_smmu_sva_domain_free +}; + +struct iommu_domain *arm_smmu_sva_domain_alloc(void) +{ + struct iommu_domain *domain; + + domain = kzalloc(sizeof(*domain), GFP_KERNEL); + if (!domain) + return NULL; + domain->ops = &arm_smmu_sva_domain_ops; + + return domain; +} diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index bbe5ce4aefc5..7634116bb08b 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -2009,6 +2009,9 @@ static struct iommu_domain *arm_smmu_domain_alloc(unsigned type) { struct arm_smmu_domain *smmu_domain; + if (type == IOMMU_DOMAIN_SVA) + return arm_smmu_sva_domain_alloc(); + if (type != IOMMU_DOMAIN_UNMANAGED && type != IOMMU_DOMAIN_DMA && type != IOMMU_DOMAIN_DMA_FQ && @@ -2838,6 +2841,17 @@ static int arm_smmu_def_domain_type(struct device *dev) return 0; } +static void arm_smmu_remove_dev_pasid(struct device *dev, ioasid_t pasid) +{ + struct iommu_domain *domain; + + domain = iommu_get_domain_for_dev_pasid(dev, pasid, IOMMU_DOMAIN_SVA); + if (WARN_ON(IS_ERR(domain)) || !domain) + return; + + arm_smmu_sva_remove_dev_pasid(domain, dev, pasid); +} + static struct iommu_ops arm_smmu_ops = { .capable = arm_smmu_capable, .domain_alloc = arm_smmu_domain_alloc, @@ -2846,6 +2860,7 @@ static struct iommu_ops arm_smmu_ops = { .device_group = arm_smmu_device_group, .of_xlate = arm_smmu_of_xlate, .get_resv_regions = arm_smmu_get_resv_regions, + .remove_dev_pasid = arm_smmu_remove_dev_pasid, .dev_enable_feat = arm_smmu_dev_enable_feature, .dev_disable_feat = arm_smmu_dev_disable_feature, .sva_bind = arm_smmu_sva_bind, diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h index d2ba86470c42..5aa853e98d38 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h @@ -758,6 +758,9 @@ struct iommu_sva *arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm); void arm_smmu_sva_unbind(struct iommu_sva *handle); u32 arm_smmu_sva_get_pasid(struct iommu_sva *handle); void arm_smmu_sva_notifier_synchronize(void); +struct iommu_domain *arm_smmu_sva_domain_alloc(void); +void arm_smmu_sva_remove_dev_pasid(struct iommu_domain *domain, + struct device *dev, ioasid_t id); #else /* CONFIG_ARM_SMMU_V3_SVA */ static inline bool arm_smmu_sva_supported(struct arm_smmu_device *smmu) { @@ -803,5 +806,16 @@ static inline u32 arm_smmu_sva_get_pasid(struct iommu_sva *handle) } static inline void arm_smmu_sva_notifier_synchronize(void) {} + +static inline struct iommu_domain *arm_smmu_sva_domain_alloc(void) +{ + return NULL; +} + +static inline void arm_smmu_sva_remove_dev_pasid(struct iommu_domain *domain, + struct device *dev, + ioasid_t id) +{ +} #endif /* CONFIG_ARM_SMMU_V3_SVA */ #endif /* _ARM_SMMU_V3_H */ From 840b255c544193dfedb284f575e753300f095f60 Mon Sep 17 00:00:00 2001 From: Lu Baolu Date: Mon, 31 Oct 2022 08:59:13 +0800 Subject: [PATCH 221/269] UPSTREAM: iommu/sva: Refactoring iommu_sva_bind/unbind_device() The existing iommu SVA interfaces are implemented by calling the SVA specific iommu ops provided by the IOMMU drivers. There's no need for any SVA specific ops in iommu_ops vector anymore as we can achieve this through the generic attach/detach_dev_pasid domain ops. This refactors the IOMMU SVA interfaces implementation by using the iommu_attach/detach_device_pasid interfaces and align them with the concept of the SVA iommu domain. Put the new SVA code in the SVA related file in order to make it self-contained. Signed-off-by: Lu Baolu Reviewed-by: Jean-Philippe Brucker Reviewed-by: Kevin Tian Reviewed-by: Jason Gunthorpe Tested-by: Zhangfei Gao Tested-by: Tony Zhu Link: https://lore.kernel.org/r/20221031005917.45690-10-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel (cherry picked from commit be51b1d6bbff48c7d1943a8ff1e5a55777807f6e) Bug: 271394577 Change-Id: I4f17688c8659a6ed2e0433ab5afd95f6f7860d3b Signed-off-by: Michael Shavit --- drivers/iommu/iommu-sva-lib.c | 111 ++++++++++++++++++++++++++++++++++ drivers/iommu/iommu.c | 91 ---------------------------- include/linux/iommu.h | 43 +++++++------ 3 files changed, 134 insertions(+), 111 deletions(-) diff --git a/drivers/iommu/iommu-sva-lib.c b/drivers/iommu/iommu-sva-lib.c index 106506143896..e425573a1787 100644 --- a/drivers/iommu/iommu-sva-lib.c +++ b/drivers/iommu/iommu-sva-lib.c @@ -4,6 +4,7 @@ */ #include #include +#include #include "iommu-sva-lib.h" @@ -69,3 +70,113 @@ struct mm_struct *iommu_sva_find(ioasid_t pasid) return ioasid_find(&iommu_sva_pasid, pasid, __mmget_not_zero); } EXPORT_SYMBOL_GPL(iommu_sva_find); + +/** + * iommu_sva_bind_device() - Bind a process address space to a device + * @dev: the device + * @mm: the mm to bind, caller must hold a reference to mm_users + * + * Create a bond between device and address space, allowing the device to + * access the mm using the PASID returned by iommu_sva_get_pasid(). If a + * bond already exists between @device and @mm, an additional internal + * reference is taken. Caller must call iommu_sva_unbind_device() + * to release each reference. + * + * iommu_dev_enable_feature(dev, IOMMU_DEV_FEAT_SVA) must be called first, to + * initialize the required SVA features. + * + * On error, returns an ERR_PTR value. + */ +struct iommu_sva *iommu_sva_bind_device(struct device *dev, struct mm_struct *mm) +{ + struct iommu_domain *domain; + struct iommu_sva *handle; + ioasid_t max_pasids; + int ret; + + max_pasids = dev->iommu->max_pasids; + if (!max_pasids) + return ERR_PTR(-EOPNOTSUPP); + + /* Allocate mm->pasid if necessary. */ + ret = iommu_sva_alloc_pasid(mm, 1, max_pasids - 1); + if (ret) + return ERR_PTR(ret); + + handle = kzalloc(sizeof(*handle), GFP_KERNEL); + if (!handle) + return ERR_PTR(-ENOMEM); + + mutex_lock(&iommu_sva_lock); + /* Search for an existing domain. */ + domain = iommu_get_domain_for_dev_pasid(dev, mm->pasid, + IOMMU_DOMAIN_SVA); + if (IS_ERR(domain)) { + ret = PTR_ERR(domain); + goto out_unlock; + } + + if (domain) { + domain->users++; + goto out; + } + + /* Allocate a new domain and set it on device pasid. */ + domain = iommu_sva_domain_alloc(dev, mm); + if (!domain) { + ret = -ENOMEM; + goto out_unlock; + } + + ret = iommu_attach_device_pasid(domain, dev, mm->pasid); + if (ret) + goto out_free_domain; + domain->users = 1; +out: + mutex_unlock(&iommu_sva_lock); + handle->dev = dev; + handle->domain = domain; + + return handle; + +out_free_domain: + iommu_domain_free(domain); +out_unlock: + mutex_unlock(&iommu_sva_lock); + kfree(handle); + + return ERR_PTR(ret); +} +EXPORT_SYMBOL_GPL(iommu_sva_bind_device); + +/** + * iommu_sva_unbind_device() - Remove a bond created with iommu_sva_bind_device + * @handle: the handle returned by iommu_sva_bind_device() + * + * Put reference to a bond between device and address space. The device should + * not be issuing any more transaction for this PASID. All outstanding page + * requests for this PASID must have been flushed to the IOMMU. + */ +void iommu_sva_unbind_device(struct iommu_sva *handle) +{ + struct iommu_domain *domain = handle->domain; + ioasid_t pasid = domain->mm->pasid; + struct device *dev = handle->dev; + + mutex_lock(&iommu_sva_lock); + if (--domain->users == 0) { + iommu_detach_device_pasid(domain, dev, pasid); + iommu_domain_free(domain); + } + mutex_unlock(&iommu_sva_lock); + kfree(handle); +} +EXPORT_SYMBOL_GPL(iommu_sva_unbind_device); + +u32 iommu_sva_get_pasid(struct iommu_sva *handle) +{ + struct iommu_domain *domain = handle->domain; + + return domain->mm->pasid; +} +EXPORT_SYMBOL_GPL(iommu_sva_get_pasid); diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 653846464973..6cdc1311ba52 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -2785,97 +2785,6 @@ int iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features feat) } EXPORT_SYMBOL_GPL(iommu_dev_disable_feature); -/** - * iommu_sva_bind_device() - Bind a process address space to a device - * @dev: the device - * @mm: the mm to bind, caller must hold a reference to it - * - * Create a bond between device and address space, allowing the device to access - * the mm using the returned PASID. If a bond already exists between @device and - * @mm, it is returned and an additional reference is taken. Caller must call - * iommu_sva_unbind_device() to release each reference. - * - * iommu_dev_enable_feature(dev, IOMMU_DEV_FEAT_SVA) must be called first, to - * initialize the required SVA features. - * - * On error, returns an ERR_PTR value. - */ -struct iommu_sva * -iommu_sva_bind_device(struct device *dev, struct mm_struct *mm) -{ - struct iommu_group *group; - struct iommu_sva *handle = ERR_PTR(-EINVAL); - const struct iommu_ops *ops = dev_iommu_ops(dev); - - if (!ops->sva_bind) - return ERR_PTR(-ENODEV); - - group = iommu_group_get(dev); - if (!group) - return ERR_PTR(-ENODEV); - - /* Ensure device count and domain don't change while we're binding */ - mutex_lock(&group->mutex); - - /* - * To keep things simple, SVA currently doesn't support IOMMU groups - * with more than one device. Existing SVA-capable systems are not - * affected by the problems that required IOMMU groups (lack of ACS - * isolation, device ID aliasing and other hardware issues). - */ - if (iommu_group_device_count(group) != 1) - goto out_unlock; - - handle = ops->sva_bind(dev, mm); - -out_unlock: - mutex_unlock(&group->mutex); - iommu_group_put(group); - - return handle; -} -EXPORT_SYMBOL_GPL(iommu_sva_bind_device); - -/** - * iommu_sva_unbind_device() - Remove a bond created with iommu_sva_bind_device - * @handle: the handle returned by iommu_sva_bind_device() - * - * Put reference to a bond between device and address space. The device should - * not be issuing any more transaction for this PASID. All outstanding page - * requests for this PASID must have been flushed to the IOMMU. - */ -void iommu_sva_unbind_device(struct iommu_sva *handle) -{ - struct iommu_group *group; - struct device *dev = handle->dev; - const struct iommu_ops *ops = dev_iommu_ops(dev); - - if (!ops->sva_unbind) - return; - - group = iommu_group_get(dev); - if (!group) - return; - - mutex_lock(&group->mutex); - ops->sva_unbind(handle); - mutex_unlock(&group->mutex); - - iommu_group_put(group); -} -EXPORT_SYMBOL_GPL(iommu_sva_unbind_device); - -u32 iommu_sva_get_pasid(struct iommu_sva *handle) -{ - const struct iommu_ops *ops = dev_iommu_ops(handle->dev); - - if (!ops->sva_get_pasid) - return IOMMU_PASID_INVALID; - - return ops->sva_get_pasid(handle); -} -EXPORT_SYMBOL_GPL(iommu_sva_get_pasid); - /* * Changes the default domain of an iommu group that has *only* one device * diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 776baa375967..bee5659d07eb 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -645,6 +645,7 @@ struct iommu_fwspec { */ struct iommu_sva { struct device *dev; + struct iommu_domain *domain; }; int iommu_fwspec_init(struct device *dev, struct fwnode_handle *iommu_fwnode, @@ -686,11 +687,6 @@ void iommu_release_device(struct device *dev); int iommu_dev_enable_feature(struct device *dev, enum iommu_dev_features f); int iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features f); -struct iommu_sva *iommu_sva_bind_device(struct device *dev, - struct mm_struct *mm); -void iommu_sva_unbind_device(struct iommu_sva *handle); -u32 iommu_sva_get_pasid(struct iommu_sva *handle); - int iommu_device_use_default_domain(struct device *dev); void iommu_device_unuse_default_domain(struct device *dev); @@ -1026,21 +1022,6 @@ iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features feat) return -ENODEV; } -static inline struct iommu_sva * -iommu_sva_bind_device(struct device *dev, struct mm_struct *mm) -{ - return NULL; -} - -static inline void iommu_sva_unbind_device(struct iommu_sva *handle) -{ -} - -static inline u32 iommu_sva_get_pasid(struct iommu_sva *handle) -{ - return IOMMU_PASID_INVALID; -} - static inline struct iommu_fwspec *dev_iommu_fwspec_get(struct device *dev) { return NULL; @@ -1154,4 +1135,26 @@ static inline void iommu_dma_compose_msi_msg(struct msi_desc *desc, struct msi_m #endif /* CONFIG_IOMMU_DMA */ +#ifdef CONFIG_IOMMU_SVA +struct iommu_sva *iommu_sva_bind_device(struct device *dev, + struct mm_struct *mm); +void iommu_sva_unbind_device(struct iommu_sva *handle); +u32 iommu_sva_get_pasid(struct iommu_sva *handle); +#else +static inline struct iommu_sva * +iommu_sva_bind_device(struct device *dev, struct mm_struct *mm) +{ + return NULL; +} + +static inline void iommu_sva_unbind_device(struct iommu_sva *handle) +{ +} + +static inline u32 iommu_sva_get_pasid(struct iommu_sva *handle) +{ + return IOMMU_PASID_INVALID; +} +#endif /* CONFIG_IOMMU_SVA */ + #endif /* __LINUX_IOMMU_H */ From e9cca501c0d39e33b4613ecf6513487c9df1c9bc Mon Sep 17 00:00:00 2001 From: Lu Baolu Date: Mon, 31 Oct 2022 08:59:14 +0800 Subject: [PATCH 222/269] UPSTREAM: iommu: Remove SVA related callbacks from iommu ops These ops'es have been deprecated. There's no need for them anymore. Remove them to avoid dead code. Signed-off-by: Lu Baolu Reviewed-by: Jean-Philippe Brucker Reviewed-by: Kevin Tian Reviewed-by: Jason Gunthorpe Reviewed-by: Yi Liu Tested-by: Zhangfei Gao Tested-by: Tony Zhu Link: https://lore.kernel.org/r/20221031005917.45690-11-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel (cherry picked from commit 1c263576f4735e063e234fa5f43fd3046d36b5b3) Bug: 271394577 Change-Id: I1aabfaa1ec5bb671bc7c6e476a6c011e34efeca9 Signed-off-by: Michael Shavit --- .../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 40 --------------- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 3 -- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 16 ------ drivers/iommu/intel/iommu.c | 3 -- drivers/iommu/intel/iommu.h | 3 -- drivers/iommu/intel/svm.c | 49 ------------------- include/linux/iommu.h | 7 --- 7 files changed, 121 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c index 2d188d12419e..9541afbba73c 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c @@ -344,11 +344,6 @@ __arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm) if (!bond) return ERR_PTR(-ENOMEM); - /* Allocate a PASID for this mm if necessary */ - ret = iommu_sva_alloc_pasid(mm, 1, (1U << master->ssid_bits) - 1); - if (ret) - goto err_free_bond; - bond->mm = mm; bond->sva.dev = dev; refcount_set(&bond->refs, 1); @@ -367,41 +362,6 @@ err_free_bond: return ERR_PTR(ret); } -struct iommu_sva *arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm) -{ - struct iommu_sva *handle; - struct iommu_domain *domain = iommu_get_domain_for_dev(dev); - struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); - - if (smmu_domain->stage != ARM_SMMU_DOMAIN_S1) - return ERR_PTR(-EINVAL); - - mutex_lock(&sva_lock); - handle = __arm_smmu_sva_bind(dev, mm); - mutex_unlock(&sva_lock); - return handle; -} - -void arm_smmu_sva_unbind(struct iommu_sva *handle) -{ - struct arm_smmu_bond *bond = sva_to_bond(handle); - - mutex_lock(&sva_lock); - if (refcount_dec_and_test(&bond->refs)) { - list_del(&bond->list); - arm_smmu_mmu_notifier_put(bond->smmu_mn); - kfree(bond); - } - mutex_unlock(&sva_lock); -} - -u32 arm_smmu_sva_get_pasid(struct iommu_sva *handle) -{ - struct arm_smmu_bond *bond = sva_to_bond(handle); - - return bond->mm->pasid; -} - bool arm_smmu_sva_supported(struct arm_smmu_device *smmu) { unsigned long reg, fld; diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index 7634116bb08b..68b34d430428 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -2863,9 +2863,6 @@ static struct iommu_ops arm_smmu_ops = { .remove_dev_pasid = arm_smmu_remove_dev_pasid, .dev_enable_feat = arm_smmu_dev_enable_feature, .dev_disable_feat = arm_smmu_dev_disable_feature, - .sva_bind = arm_smmu_sva_bind, - .sva_unbind = arm_smmu_sva_unbind, - .sva_get_pasid = arm_smmu_sva_get_pasid, .page_response = arm_smmu_page_response, .def_domain_type = arm_smmu_def_domain_type, .pgsize_bitmap = -1UL, /* Restricted during device attach */ diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h index 5aa853e98d38..8d772ea8a583 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h @@ -754,9 +754,6 @@ bool arm_smmu_master_sva_enabled(struct arm_smmu_master *master); int arm_smmu_master_enable_sva(struct arm_smmu_master *master); int arm_smmu_master_disable_sva(struct arm_smmu_master *master); bool arm_smmu_master_iopf_supported(struct arm_smmu_master *master); -struct iommu_sva *arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm); -void arm_smmu_sva_unbind(struct iommu_sva *handle); -u32 arm_smmu_sva_get_pasid(struct iommu_sva *handle); void arm_smmu_sva_notifier_synchronize(void); struct iommu_domain *arm_smmu_sva_domain_alloc(void); void arm_smmu_sva_remove_dev_pasid(struct iommu_domain *domain, @@ -792,19 +789,6 @@ static inline bool arm_smmu_master_iopf_supported(struct arm_smmu_master *master return false; } -static inline struct iommu_sva * -arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm) -{ - return ERR_PTR(-ENODEV); -} - -static inline void arm_smmu_sva_unbind(struct iommu_sva *handle) {} - -static inline u32 arm_smmu_sva_get_pasid(struct iommu_sva *handle) -{ - return IOMMU_PASID_INVALID; -} - static inline void arm_smmu_sva_notifier_synchronize(void) {} static inline struct iommu_domain *arm_smmu_sva_domain_alloc(void) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index 08087e4e45ce..0e167f9ea894 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -4785,9 +4785,6 @@ const struct iommu_ops intel_iommu_ops = { .remove_dev_pasid = intel_iommu_remove_dev_pasid, .pgsize_bitmap = SZ_4K, #ifdef CONFIG_INTEL_IOMMU_SVM - .sva_bind = intel_svm_bind, - .sva_unbind = intel_svm_unbind, - .sva_get_pasid = intel_svm_get_pasid, .page_response = intel_svm_page_response, #endif .default_domain_ops = &(const struct iommu_domain_ops) { diff --git a/drivers/iommu/intel/iommu.h b/drivers/iommu/intel/iommu.h index f6d78a7e8812..20f4dd7f3bd2 100644 --- a/drivers/iommu/intel/iommu.h +++ b/drivers/iommu/intel/iommu.h @@ -752,9 +752,6 @@ struct intel_iommu *device_to_iommu(struct device *dev, u8 *bus, u8 *devfn); extern void intel_svm_check(struct intel_iommu *iommu); extern int intel_svm_enable_prq(struct intel_iommu *iommu); extern int intel_svm_finish_prq(struct intel_iommu *iommu); -struct iommu_sva *intel_svm_bind(struct device *dev, struct mm_struct *mm); -void intel_svm_unbind(struct iommu_sva *handle); -u32 intel_svm_get_pasid(struct iommu_sva *handle); int intel_svm_page_response(struct device *dev, struct iommu_fault_event *evt, struct iommu_page_response *msg); struct iommu_domain *intel_svm_domain_alloc(void); diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c index d39444bc2d66..bb65b09fa5de 100644 --- a/drivers/iommu/intel/svm.c +++ b/drivers/iommu/intel/svm.c @@ -299,14 +299,6 @@ out: return 0; } -static int intel_svm_alloc_pasid(struct device *dev, struct mm_struct *mm) -{ - ioasid_t max_pasid = dev_is_pci(dev) ? - pci_max_pasids(to_pci_dev(dev)) : intel_pasid_max_id; - - return iommu_sva_alloc_pasid(mm, PASID_MIN, max_pasid - 1); -} - static struct iommu_sva *intel_svm_bind_mm(struct intel_iommu *iommu, struct device *dev, struct mm_struct *mm) @@ -778,47 +770,6 @@ prq_advance: return IRQ_RETVAL(handled); } -struct iommu_sva *intel_svm_bind(struct device *dev, struct mm_struct *mm) -{ - struct intel_iommu *iommu = device_to_iommu(dev, NULL, NULL); - struct iommu_sva *sva; - int ret; - - mutex_lock(&pasid_mutex); - ret = intel_svm_alloc_pasid(dev, mm); - if (ret) { - mutex_unlock(&pasid_mutex); - return ERR_PTR(ret); - } - - sva = intel_svm_bind_mm(iommu, dev, mm); - mutex_unlock(&pasid_mutex); - - return sva; -} - -void intel_svm_unbind(struct iommu_sva *sva) -{ - struct intel_svm_dev *sdev = to_intel_svm_dev(sva); - - mutex_lock(&pasid_mutex); - intel_svm_unbind_mm(sdev->dev, sdev->pasid); - mutex_unlock(&pasid_mutex); -} - -u32 intel_svm_get_pasid(struct iommu_sva *sva) -{ - struct intel_svm_dev *sdev; - u32 pasid; - - mutex_lock(&pasid_mutex); - sdev = to_intel_svm_dev(sva); - pasid = sdev->pasid; - mutex_unlock(&pasid_mutex); - - return pasid; -} - int intel_svm_page_response(struct device *dev, struct iommu_fault_event *evt, struct iommu_page_response *msg) diff --git a/include/linux/iommu.h b/include/linux/iommu.h index bee5659d07eb..c337ef1c97bc 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -227,9 +227,6 @@ struct iommu_iotlb_gather { * driver init to device driver init (default no) * @dev_enable/disable_feat: per device entries to enable/disable * iommu specific features. - * @sva_bind: Bind process address space to device - * @sva_unbind: Unbind process address space from device - * @sva_get_pasid: Get PASID associated to a SVA handle * @page_response: handle page request response * @def_domain_type: device default domain type, return value: * - IOMMU_DOMAIN_IDENTITY: must use an identity domain @@ -263,10 +260,6 @@ struct iommu_ops { int (*dev_enable_feat)(struct device *dev, enum iommu_dev_features f); int (*dev_disable_feat)(struct device *dev, enum iommu_dev_features f); - struct iommu_sva *(*sva_bind)(struct device *dev, struct mm_struct *mm); - void (*sva_unbind)(struct iommu_sva *handle); - u32 (*sva_get_pasid)(struct iommu_sva *handle); - int (*page_response)(struct device *dev, struct iommu_fault_event *evt, struct iommu_page_response *msg); From 4fffcc165c1658d9965c85bab01fd9bac412d99a Mon Sep 17 00:00:00 2001 From: Lu Baolu Date: Mon, 31 Oct 2022 08:59:15 +0800 Subject: [PATCH 223/269] UPSTREAM: iommu: Prepare IOMMU domain for IOPF This adds some mechanisms around the iommu_domain so that the I/O page fault handling framework could route a page fault to the domain and call the fault handler from it. Add pointers to the page fault handler and its private data in struct iommu_domain. The fault handler will be called with the private data as a parameter once a page fault is routed to the domain. Any kernel component which owns an iommu domain could install handler and its private parameter so that the page fault could be further routed and handled. This also prepares the SVA implementation to be the first consumer of the per-domain page fault handling model. The I/O page fault handler for SVA is copied to the SVA file with mmget_not_zero() added before mmap_read_lock(). Suggested-by: Jean-Philippe Brucker Signed-off-by: Lu Baolu Reviewed-by: Jean-Philippe Brucker Reviewed-by: Kevin Tian Reviewed-by: Jason Gunthorpe Tested-by: Zhangfei Gao Tested-by: Tony Zhu Link: https://lore.kernel.org/r/20221031005917.45690-12-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel (cherry picked from commit 8cc93159f91960b4812ea48887e9e7501babc95a) Bug: 271394577 Change-Id: Ibf0c080875760a2ad789770885eb6c8db7170cbe Signed-off-by: Michael Shavit --- drivers/iommu/io-pgfault.c | 7 +++++ drivers/iommu/iommu-sva-lib.c | 58 +++++++++++++++++++++++++++++++++++ drivers/iommu/iommu-sva-lib.h | 8 +++++ drivers/iommu/iommu.c | 4 +++ include/linux/iommu.h | 3 ++ 5 files changed, 80 insertions(+) diff --git a/drivers/iommu/io-pgfault.c b/drivers/iommu/io-pgfault.c index 1df8c1dcae77..aee9e033012f 100644 --- a/drivers/iommu/io-pgfault.c +++ b/drivers/iommu/io-pgfault.c @@ -181,6 +181,13 @@ static void iopf_handle_group(struct work_struct *work) * request completes, outstanding faults will have been dealt with by the time * the PASID is freed. * + * Any valid page fault will be eventually routed to an iommu domain and the + * page fault handler installed there will get called. The users of this + * handling framework should guarantee that the iommu domain could only be + * freed after the device has stopped generating page faults (or the iommu + * hardware has been set to block the page faults) and the pending page faults + * have been flushed. + * * Return: 0 on success and <0 on error. */ int iommu_queue_iopf(struct iommu_fault *fault, void *cookie) diff --git a/drivers/iommu/iommu-sva-lib.c b/drivers/iommu/iommu-sva-lib.c index e425573a1787..089fd61ff453 100644 --- a/drivers/iommu/iommu-sva-lib.c +++ b/drivers/iommu/iommu-sva-lib.c @@ -180,3 +180,61 @@ u32 iommu_sva_get_pasid(struct iommu_sva *handle) return domain->mm->pasid; } EXPORT_SYMBOL_GPL(iommu_sva_get_pasid); + +/* + * I/O page fault handler for SVA + */ +enum iommu_page_response_code +iommu_sva_handle_iopf(struct iommu_fault *fault, void *data) +{ + vm_fault_t ret; + struct vm_area_struct *vma; + struct mm_struct *mm = data; + unsigned int access_flags = 0; + unsigned int fault_flags = FAULT_FLAG_REMOTE; + struct iommu_fault_page_request *prm = &fault->prm; + enum iommu_page_response_code status = IOMMU_PAGE_RESP_INVALID; + + if (!(prm->flags & IOMMU_FAULT_PAGE_REQUEST_PASID_VALID)) + return status; + + if (!mmget_not_zero(mm)) + return status; + + mmap_read_lock(mm); + + vma = find_extend_vma(mm, prm->addr); + if (!vma) + /* Unmapped area */ + goto out_put_mm; + + if (prm->perm & IOMMU_FAULT_PERM_READ) + access_flags |= VM_READ; + + if (prm->perm & IOMMU_FAULT_PERM_WRITE) { + access_flags |= VM_WRITE; + fault_flags |= FAULT_FLAG_WRITE; + } + + if (prm->perm & IOMMU_FAULT_PERM_EXEC) { + access_flags |= VM_EXEC; + fault_flags |= FAULT_FLAG_INSTRUCTION; + } + + if (!(prm->perm & IOMMU_FAULT_PERM_PRIV)) + fault_flags |= FAULT_FLAG_USER; + + if (access_flags & ~vma->vm_flags) + /* Access fault */ + goto out_put_mm; + + ret = handle_mm_fault(vma, prm->addr, fault_flags, NULL); + status = ret & VM_FAULT_ERROR ? IOMMU_PAGE_RESP_INVALID : + IOMMU_PAGE_RESP_SUCCESS; + +out_put_mm: + mmap_read_unlock(mm); + mmput(mm); + + return status; +} diff --git a/drivers/iommu/iommu-sva-lib.h b/drivers/iommu/iommu-sva-lib.h index 8909ea1094e3..1b3ace4b5863 100644 --- a/drivers/iommu/iommu-sva-lib.h +++ b/drivers/iommu/iommu-sva-lib.h @@ -26,6 +26,8 @@ int iopf_queue_flush_dev(struct device *dev); struct iopf_queue *iopf_queue_alloc(const char *name); void iopf_queue_free(struct iopf_queue *queue); int iopf_queue_discard_partial(struct iopf_queue *queue); +enum iommu_page_response_code +iommu_sva_handle_iopf(struct iommu_fault *fault, void *data); #else /* CONFIG_IOMMU_SVA */ static inline int iommu_queue_iopf(struct iommu_fault *fault, void *cookie) @@ -63,5 +65,11 @@ static inline int iopf_queue_discard_partial(struct iopf_queue *queue) { return -ENODEV; } + +static inline enum iommu_page_response_code +iommu_sva_handle_iopf(struct iommu_fault *fault, void *data) +{ + return IOMMU_PAGE_RESP_INVALID; +} #endif /* CONFIG_IOMMU_SVA */ #endif /* _IOMMU_SVA_LIB_H */ diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 6cdc1311ba52..21f4927ee1c0 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -33,6 +33,8 @@ #include "dma-iommu.h" +#include "iommu-sva-lib.h" + static struct kset *iommu_group_kset; static DEFINE_IDA(iommu_group_ida); @@ -3343,6 +3345,8 @@ struct iommu_domain *iommu_sva_domain_alloc(struct device *dev, domain->type = IOMMU_DOMAIN_SVA; mmgrab(mm); domain->mm = mm; + domain->iopf_handler = iommu_sva_handle_iopf; + domain->fault_data = mm; return domain; } diff --git a/include/linux/iommu.h b/include/linux/iommu.h index c337ef1c97bc..7d2648058e43 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -98,6 +98,9 @@ struct iommu_domain { unsigned long pgsize_bitmap; /* Bitmap of page sizes in use */ struct iommu_domain_geometry geometry; struct iommu_dma_cookie *iova_cookie; + enum iommu_page_response_code (*iopf_handler)(struct iommu_fault *fault, + void *data); + void *fault_data; union { struct { iommu_fault_handler_t handler; From 45db9aa17522623ab2d0cc9fdbc20b2fbcfc8de1 Mon Sep 17 00:00:00 2001 From: Lu Baolu Date: Mon, 31 Oct 2022 08:59:16 +0800 Subject: [PATCH 224/269] UPSTREAM: iommu: Per-domain I/O page fault handling Tweak the I/O page fault handling framework to route the page faults to the domain and call the page fault handler retrieved from the domain. This makes the I/O page fault handling framework possible to serve more usage scenarios as long as they have an IOMMU domain and install a page fault handler in it. Some unused functions are also removed to avoid dead code. The iommu_get_domain_for_dev_pasid() which retrieves attached domain for a {device, PASID} pair is used. It will be used by the page fault handling framework which knows {device, PASID} reported from the iommu driver. We have a guarantee that the SVA domain doesn't go away during IOPF handling, because unbind() won't free the domain until all the pending page requests have been flushed from the pipeline. The drivers either call iopf_queue_flush_dev() explicitly, or in stall case, the device driver is required to flush all DMAs including stalled transactions before calling unbind(). This also renames iopf_handle_group() to iopf_handler() to avoid confusing. Signed-off-by: Lu Baolu Reviewed-by: Jean-Philippe Brucker Reviewed-by: Kevin Tian Reviewed-by: Jason Gunthorpe Tested-by: Zhangfei Gao Tested-by: Tony Zhu Link: https://lore.kernel.org/r/20221031005917.45690-13-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel (cherry picked from commit 4bb4211e48fbfb392bb07168b75b1a92832b62f5) Bug: 271394577 Change-Id: I5f8762d04f43b64fd76cdbbbcddb9740c7449746 Signed-off-by: Michael Shavit --- drivers/iommu/io-pgfault.c | 68 +++++--------------------------------- 1 file changed, 9 insertions(+), 59 deletions(-) diff --git a/drivers/iommu/io-pgfault.c b/drivers/iommu/io-pgfault.c index aee9e033012f..d046d89cec55 100644 --- a/drivers/iommu/io-pgfault.c +++ b/drivers/iommu/io-pgfault.c @@ -69,69 +69,18 @@ static int iopf_complete_group(struct device *dev, struct iopf_fault *iopf, return iommu_page_response(dev, &resp); } -static enum iommu_page_response_code -iopf_handle_single(struct iopf_fault *iopf) -{ - vm_fault_t ret; - struct mm_struct *mm; - struct vm_area_struct *vma; - unsigned int access_flags = 0; - unsigned int fault_flags = FAULT_FLAG_REMOTE; - struct iommu_fault_page_request *prm = &iopf->fault.prm; - enum iommu_page_response_code status = IOMMU_PAGE_RESP_INVALID; - - if (!(prm->flags & IOMMU_FAULT_PAGE_REQUEST_PASID_VALID)) - return status; - - mm = iommu_sva_find(prm->pasid); - if (IS_ERR_OR_NULL(mm)) - return status; - - mmap_read_lock(mm); - - vma = find_extend_vma(mm, prm->addr); - if (!vma) - /* Unmapped area */ - goto out_put_mm; - - if (prm->perm & IOMMU_FAULT_PERM_READ) - access_flags |= VM_READ; - - if (prm->perm & IOMMU_FAULT_PERM_WRITE) { - access_flags |= VM_WRITE; - fault_flags |= FAULT_FLAG_WRITE; - } - - if (prm->perm & IOMMU_FAULT_PERM_EXEC) { - access_flags |= VM_EXEC; - fault_flags |= FAULT_FLAG_INSTRUCTION; - } - - if (!(prm->perm & IOMMU_FAULT_PERM_PRIV)) - fault_flags |= FAULT_FLAG_USER; - - if (access_flags & ~vma->vm_flags) - /* Access fault */ - goto out_put_mm; - - ret = handle_mm_fault(vma, prm->addr, fault_flags, NULL); - status = ret & VM_FAULT_ERROR ? IOMMU_PAGE_RESP_INVALID : - IOMMU_PAGE_RESP_SUCCESS; - -out_put_mm: - mmap_read_unlock(mm); - mmput(mm); - - return status; -} - -static void iopf_handle_group(struct work_struct *work) +static void iopf_handler(struct work_struct *work) { struct iopf_group *group; + struct iommu_domain *domain; struct iopf_fault *iopf, *next; enum iommu_page_response_code status = IOMMU_PAGE_RESP_SUCCESS; group = container_of(work, struct iopf_group, work); + domain = iommu_get_domain_for_dev_pasid(group->dev, + group->last_fault.fault.prm.pasid, 0); + if (!domain || !domain->iopf_handler) + status = IOMMU_PAGE_RESP_INVALID; list_for_each_entry_safe(iopf, next, &group->faults, list) { /* @@ -139,7 +88,8 @@ static void iopf_handle_group(struct work_struct *work) * faults in the group if there is an error. */ if (status == IOMMU_PAGE_RESP_SUCCESS) - status = iopf_handle_single(iopf); + status = domain->iopf_handler(&iopf->fault, + domain->fault_data); if (!(iopf->fault.prm.flags & IOMMU_FAULT_PAGE_REQUEST_LAST_PAGE)) @@ -242,7 +192,7 @@ int iommu_queue_iopf(struct iommu_fault *fault, void *cookie) group->last_fault.fault = *fault; INIT_LIST_HEAD(&group->faults); list_add(&group->last_fault.list, &group->faults); - INIT_WORK(&group->work, iopf_handle_group); + INIT_WORK(&group->work, iopf_handler); /* See if we have partial faults for this group */ list_for_each_entry_safe(iopf, next, &iopf_param->partial, list) { From 358fda2fd9310d4c53d2b41c607b97261d4f00b8 Mon Sep 17 00:00:00 2001 From: Lu Baolu Date: Mon, 31 Oct 2022 08:59:17 +0800 Subject: [PATCH 225/269] UPSTREAM: iommu: Rename iommu-sva-lib.{c,h} Rename iommu-sva-lib.c[h] to iommu-sva.c[h] as it contains all code for SVA implementation in iommu core. Signed-off-by: Lu Baolu Reviewed-by: Jean-Philippe Brucker Reviewed-by: Kevin Tian Reviewed-by: Jason Gunthorpe Tested-by: Zhangfei Gao Tested-by: Tony Zhu Link: https://lore.kernel.org/r/20221031005917.45690-14-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel (cherry picked from commit 757636ed2607a3269cd2764e3e4a0480384c6c26) Bug: 271394577 Change-Id: Ie6030ca74f7f8c1c3901736004bb3be48fa88d09 Signed-off-by: Michael Shavit --- drivers/iommu/Makefile | 2 +- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 2 +- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 2 +- drivers/iommu/intel/iommu.c | 2 +- drivers/iommu/intel/svm.c | 2 +- drivers/iommu/io-pgfault.c | 2 +- drivers/iommu/{iommu-sva-lib.c => iommu-sva.c} | 2 +- drivers/iommu/{iommu-sva-lib.h => iommu-sva.h} | 6 +++--- drivers/iommu/iommu.c | 2 +- 9 files changed, 11 insertions(+), 11 deletions(-) rename drivers/iommu/{iommu-sva-lib.c => iommu-sva.c} (99%) rename drivers/iommu/{iommu-sva-lib.h => iommu-sva.h} (95%) diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile index cc9f381013c3..7fbf6a337662 100644 --- a/drivers/iommu/Makefile +++ b/drivers/iommu/Makefile @@ -28,6 +28,6 @@ obj-$(CONFIG_FSL_PAMU) += fsl_pamu.o fsl_pamu_domain.o obj-$(CONFIG_S390_IOMMU) += s390-iommu.o obj-$(CONFIG_HYPERV_IOMMU) += hyperv-iommu.o obj-$(CONFIG_VIRTIO_IOMMU) += virtio-iommu.o -obj-$(CONFIG_IOMMU_SVA) += iommu-sva-lib.o io-pgfault.o +obj-$(CONFIG_IOMMU_SVA) += iommu-sva.o io-pgfault.o obj-$(CONFIG_SPRD_IOMMU) += sprd-iommu.o obj-$(CONFIG_APPLE_DART) += apple-dart.o diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c index 9541afbba73c..a5a63b1c947e 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c @@ -10,7 +10,7 @@ #include #include "arm-smmu-v3.h" -#include "../../iommu-sva-lib.h" +#include "../../iommu-sva.h" #include "../../io-pgtable-arm.h" struct arm_smmu_mmu_notifier { diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c index 68b34d430428..6e4a5a5946df 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -29,7 +29,7 @@ #include "arm-smmu-v3.h" #include "../../dma-iommu.h" -#include "../../iommu-sva-lib.h" +#include "../../iommu-sva.h" static bool disable_bypass = true; module_param(disable_bypass, bool, 0444); diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index 0e167f9ea894..ca2c2b51b4eb 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -27,7 +27,7 @@ #include "iommu.h" #include "../dma-iommu.h" #include "../irq_remapping.h" -#include "../iommu-sva-lib.h" +#include "../iommu-sva.h" #include "pasid.h" #include "cap_audit.h" diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c index bb65b09fa5de..c76b66263467 100644 --- a/drivers/iommu/intel/svm.c +++ b/drivers/iommu/intel/svm.c @@ -24,7 +24,7 @@ #include "iommu.h" #include "pasid.h" #include "perf.h" -#include "../iommu-sva-lib.h" +#include "../iommu-sva.h" #include "trace.h" static irqreturn_t prq_event_thread(int irq, void *d); diff --git a/drivers/iommu/io-pgfault.c b/drivers/iommu/io-pgfault.c index d046d89cec55..e5b8b9110c13 100644 --- a/drivers/iommu/io-pgfault.c +++ b/drivers/iommu/io-pgfault.c @@ -11,7 +11,7 @@ #include #include -#include "iommu-sva-lib.h" +#include "iommu-sva.h" /** * struct iopf_queue - IO Page Fault queue diff --git a/drivers/iommu/iommu-sva-lib.c b/drivers/iommu/iommu-sva.c similarity index 99% rename from drivers/iommu/iommu-sva-lib.c rename to drivers/iommu/iommu-sva.c index 089fd61ff453..24bf9b2b58aa 100644 --- a/drivers/iommu/iommu-sva-lib.c +++ b/drivers/iommu/iommu-sva.c @@ -6,7 +6,7 @@ #include #include -#include "iommu-sva-lib.h" +#include "iommu-sva.h" static DEFINE_MUTEX(iommu_sva_lock); static DECLARE_IOASID_SET(iommu_sva_pasid); diff --git a/drivers/iommu/iommu-sva-lib.h b/drivers/iommu/iommu-sva.h similarity index 95% rename from drivers/iommu/iommu-sva-lib.h rename to drivers/iommu/iommu-sva.h index 1b3ace4b5863..7215a761b962 100644 --- a/drivers/iommu/iommu-sva-lib.h +++ b/drivers/iommu/iommu-sva.h @@ -2,8 +2,8 @@ /* * SVA library for IOMMU drivers */ -#ifndef _IOMMU_SVA_LIB_H -#define _IOMMU_SVA_LIB_H +#ifndef _IOMMU_SVA_H +#define _IOMMU_SVA_H #include #include @@ -72,4 +72,4 @@ iommu_sva_handle_iopf(struct iommu_fault *fault, void *data) return IOMMU_PAGE_RESP_INVALID; } #endif /* CONFIG_IOMMU_SVA */ -#endif /* _IOMMU_SVA_LIB_H */ +#endif /* _IOMMU_SVA_H */ diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 21f4927ee1c0..fc7286d801db 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -33,7 +33,7 @@ #include "dma-iommu.h" -#include "iommu-sva-lib.h" +#include "iommu-sva.h" static struct kset *iommu_group_kset; static DEFINE_IDA(iommu_group_ida); From 694bd10c6519c3feb684e587f1e9ea614475378f Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Wed, 1 Mar 2023 12:09:23 +0200 Subject: [PATCH 226/269] FROMGIT: wifi: cfg80211/mac80211: report link ID on control port RX For control port RX, report the link ID for MLO. Signed-off-by: Johannes Berg Signed-off-by: Gregory Greenman Link: https://lore.kernel.org/r/20230301115906.fe06dfc3791b.Iddcab94789cafe336417be406072ce8a6312fc2d@changeid Signed-off-by: Johannes Berg Bug: 276829568 Change-Id: I87689a284e64df2471f3cff284f7067926e9d535 (cherry picked from commit 4c532321bf90288dae6b07a3f52279bfde842a80 https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main) Signed-off-by: Shivani Baranwal --- include/net/cfg80211.h | 5 +++-- net/mac80211/rx.c | 2 +- net/wireless/nl80211.c | 15 ++++++++++----- net/wireless/trace.h | 11 +++++++---- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 0a5a3c425ba7..98b26e051611 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -8069,6 +8069,7 @@ void cfg80211_control_port_tx_status(struct wireless_dev *wdev, u64 cookie, * responsible for any cleanup. The caller must also ensure that * skb->protocol is set appropriately. * @unencrypted: Whether the frame was received unencrypted + * @link_id: the link the frame was received on, -1 if not applicable or unknown * * This function is used to inform userspace about a received control port * frame. It should only be used if userspace indicated it wants to receive @@ -8079,8 +8080,8 @@ void cfg80211_control_port_tx_status(struct wireless_dev *wdev, u64 cookie, * * Return: %true if the frame was passed to userspace */ -bool cfg80211_rx_control_port(struct net_device *dev, - struct sk_buff *skb, bool unencrypted); +bool cfg80211_rx_control_port(struct net_device *dev, struct sk_buff *skb, + bool unencrypted, int link_id); /** * cfg80211_cqm_rssi_notify - connection quality monitoring rssi event diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 44e407e1a14c..b975f6445f5a 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c @@ -2611,7 +2611,7 @@ static void ieee80211_deliver_skb_to_local_stack(struct sk_buff *skb, struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); bool noencrypt = !(status->flag & RX_FLAG_DECRYPTED); - cfg80211_rx_control_port(dev, skb, noencrypt); + cfg80211_rx_control_port(dev, skb, noencrypt, rx->link_id); dev_kfree_skb(skb); } else { struct ethhdr *ehdr = (void *)skb_mac_header(skb); diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 1475b5349874..03d16505a4a0 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -18678,7 +18678,9 @@ EXPORT_SYMBOL(cfg80211_mgmt_tx_status_ext); static int __nl80211_rx_control_port(struct net_device *dev, struct sk_buff *skb, - bool unencrypted, gfp_t gfp) + bool unencrypted, + int link_id, + gfp_t gfp) { struct wireless_dev *wdev = dev->ieee80211_ptr; struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); @@ -18710,6 +18712,8 @@ static int __nl80211_rx_control_port(struct net_device *dev, NL80211_ATTR_PAD) || nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || nla_put_u16(msg, NL80211_ATTR_CONTROL_PORT_ETHERTYPE, proto) || + (link_id >= 0 && + nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id)) || (unencrypted && nla_put_flag(msg, NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT))) goto nla_put_failure; @@ -18728,13 +18732,14 @@ static int __nl80211_rx_control_port(struct net_device *dev, return -ENOBUFS; } -bool cfg80211_rx_control_port(struct net_device *dev, - struct sk_buff *skb, bool unencrypted) +bool cfg80211_rx_control_port(struct net_device *dev, struct sk_buff *skb, + bool unencrypted, int link_id) { int ret; - trace_cfg80211_rx_control_port(dev, skb, unencrypted); - ret = __nl80211_rx_control_port(dev, skb, unencrypted, GFP_ATOMIC); + trace_cfg80211_rx_control_port(dev, skb, unencrypted, link_id); + ret = __nl80211_rx_control_port(dev, skb, unencrypted, link_id, + GFP_ATOMIC); trace_cfg80211_return_bool(ret == 0); return ret == 0; } diff --git a/net/wireless/trace.h b/net/wireless/trace.h index ca7474eec723..c6e63140d9a2 100644 --- a/net/wireless/trace.h +++ b/net/wireless/trace.h @@ -3165,14 +3165,15 @@ TRACE_EVENT(cfg80211_control_port_tx_status, TRACE_EVENT(cfg80211_rx_control_port, TP_PROTO(struct net_device *netdev, struct sk_buff *skb, - bool unencrypted), - TP_ARGS(netdev, skb, unencrypted), + bool unencrypted, int link_id), + TP_ARGS(netdev, skb, unencrypted, link_id), TP_STRUCT__entry( NETDEV_ENTRY __field(int, len) MAC_ENTRY(from) __field(u16, proto) __field(bool, unencrypted) + __field(int, link_id) ), TP_fast_assign( NETDEV_ASSIGN; @@ -3180,10 +3181,12 @@ TRACE_EVENT(cfg80211_rx_control_port, MAC_ASSIGN(from, eth_hdr(skb)->h_source); __entry->proto = be16_to_cpu(skb->protocol); __entry->unencrypted = unencrypted; + __entry->link_id = link_id; ), - TP_printk(NETDEV_PR_FMT ", len=%d, %pM, proto: 0x%x, unencrypted: %s", + TP_printk(NETDEV_PR_FMT ", len=%d, %pM, proto: 0x%x, unencrypted: %s, link: %d", NETDEV_PR_ARG, __entry->len, __entry->from, - __entry->proto, BOOL_TO_STR(__entry->unencrypted)) + __entry->proto, BOOL_TO_STR(__entry->unencrypted), + __entry->link_id) ); TRACE_EVENT(cfg80211_cqm_rssi_notify, From b5a05000188c4402a9df73665b3ad321e08aec1a Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 31 Mar 2023 10:35:36 +0000 Subject: [PATCH 227/269] Revert "Revert "net: mdio: fix owner field for mdio buses registered using device-tree"" This reverts commit d9f36cae1ccff8641da44a64ca04ccb7c765e8f4. It was perserving the ABI, but that is not needed anymore at this point in time. Change-Id: I9f883317631792227d5cc365cfd84fb5e745c434 Signed-off-by: Greg Kroah-Hartman --- drivers/net/mdio/of_mdio.c | 12 +++++++----- drivers/net/phy/mdio_devres.c | 11 ++++++----- include/linux/of_mdio.h | 22 +++++++++++++++++++--- 3 files changed, 32 insertions(+), 13 deletions(-) diff --git a/drivers/net/mdio/of_mdio.c b/drivers/net/mdio/of_mdio.c index 510822d6d0d9..1e46e39f5f46 100644 --- a/drivers/net/mdio/of_mdio.c +++ b/drivers/net/mdio/of_mdio.c @@ -139,21 +139,23 @@ bool of_mdiobus_child_is_phy(struct device_node *child) EXPORT_SYMBOL(of_mdiobus_child_is_phy); /** - * of_mdiobus_register - Register mii_bus and create PHYs from the device tree + * __of_mdiobus_register - Register mii_bus and create PHYs from the device tree * @mdio: pointer to mii_bus structure * @np: pointer to device_node of MDIO bus. + * @owner: module owning the @mdio object. * * This function registers the mii_bus structure and registers a phy_device * for each child node of @np. */ -int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) +int __of_mdiobus_register(struct mii_bus *mdio, struct device_node *np, + struct module *owner) { struct device_node *child; bool scanphys = false; int addr, rc; if (!np) - return mdiobus_register(mdio); + return __mdiobus_register(mdio, owner); /* Do not continue if the node is disabled */ if (!of_device_is_available(np)) @@ -172,7 +174,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) of_property_read_u32(np, "reset-post-delay-us", &mdio->reset_post_delay_us); /* Register the MDIO bus */ - rc = mdiobus_register(mdio); + rc = __mdiobus_register(mdio, owner); if (rc) return rc; @@ -236,7 +238,7 @@ unregister: mdiobus_unregister(mdio); return rc; } -EXPORT_SYMBOL(of_mdiobus_register); +EXPORT_SYMBOL(__of_mdiobus_register); /** * of_mdio_find_device - Given a device tree node, find the mdio_device diff --git a/drivers/net/phy/mdio_devres.c b/drivers/net/phy/mdio_devres.c index b560e99695df..69b829e6ab35 100644 --- a/drivers/net/phy/mdio_devres.c +++ b/drivers/net/phy/mdio_devres.c @@ -98,13 +98,14 @@ EXPORT_SYMBOL(__devm_mdiobus_register); #if IS_ENABLED(CONFIG_OF_MDIO) /** - * devm_of_mdiobus_register - Resource managed variant of of_mdiobus_register() + * __devm_of_mdiobus_register - Resource managed variant of of_mdiobus_register() * @dev: Device to register mii_bus for * @mdio: MII bus structure to register * @np: Device node to parse + * @owner: Owning module */ -int devm_of_mdiobus_register(struct device *dev, struct mii_bus *mdio, - struct device_node *np) +int __devm_of_mdiobus_register(struct device *dev, struct mii_bus *mdio, + struct device_node *np, struct module *owner) { struct mdiobus_devres *dr; int ret; @@ -117,7 +118,7 @@ int devm_of_mdiobus_register(struct device *dev, struct mii_bus *mdio, if (!dr) return -ENOMEM; - ret = of_mdiobus_register(mdio, np); + ret = __of_mdiobus_register(mdio, np, owner); if (ret) { devres_free(dr); return ret; @@ -127,7 +128,7 @@ int devm_of_mdiobus_register(struct device *dev, struct mii_bus *mdio, devres_add(dev, dr); return 0; } -EXPORT_SYMBOL(devm_of_mdiobus_register); +EXPORT_SYMBOL(__devm_of_mdiobus_register); #endif /* CONFIG_OF_MDIO */ MODULE_LICENSE("GPL"); diff --git a/include/linux/of_mdio.h b/include/linux/of_mdio.h index da633d34ab86..8a52ef2e6fa6 100644 --- a/include/linux/of_mdio.h +++ b/include/linux/of_mdio.h @@ -14,9 +14,25 @@ #if IS_ENABLED(CONFIG_OF_MDIO) bool of_mdiobus_child_is_phy(struct device_node *child); -int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np); -int devm_of_mdiobus_register(struct device *dev, struct mii_bus *mdio, - struct device_node *np); +int __of_mdiobus_register(struct mii_bus *mdio, struct device_node *np, + struct module *owner); + +static inline int of_mdiobus_register(struct mii_bus *mdio, + struct device_node *np) +{ + return __of_mdiobus_register(mdio, np, THIS_MODULE); +} + +int __devm_of_mdiobus_register(struct device *dev, struct mii_bus *mdio, + struct device_node *np, struct module *owner); + +static inline int devm_of_mdiobus_register(struct device *dev, + struct mii_bus *mdio, + struct device_node *np) +{ + return __devm_of_mdiobus_register(dev, mdio, np, THIS_MODULE); +} + struct mdio_device *of_mdio_find_device(struct device_node *np); struct phy_device *of_phy_find_device(struct device_node *phy_np); struct phy_device * From 82d74303360eaec5f0aef12d4073e5e33962faf5 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 7 Apr 2023 08:43:21 +0000 Subject: [PATCH 228/269] Revert "Revert "block/io_uring: pass in issue_flags for uring_cmd task_work handling"" This reverts commit d6085639254bf9b09eb0066c3af8c7bc8fcf3c29. It was perserving the ABI, but that is not needed anymore at this point in time. Change-Id: I4198b98bd5c4012501237c4498de164e65f1a1c3 Signed-off-by: Greg Kroah-Hartman --- drivers/block/ublk_drv.c | 31 ++++++++++++++++++------------- drivers/nvme/host/ioctl.c | 14 ++++++++------ include/linux/io_uring.h | 11 ++++++----- io_uring/uring_cmd.c | 10 ++++++---- 4 files changed, 38 insertions(+), 28 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 4aec9be0ab77..22a790d51284 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -656,7 +656,8 @@ static void __ublk_fail_req(struct ublk_queue *ubq, struct ublk_io *io, } } -static void ubq_complete_io_cmd(struct ublk_io *io, int res) +static void ubq_complete_io_cmd(struct ublk_io *io, int res, + unsigned issue_flags) { /* mark this cmd owned by ublksrv */ io->flags |= UBLK_IO_FLAG_OWNED_BY_SRV; @@ -668,7 +669,7 @@ static void ubq_complete_io_cmd(struct ublk_io *io, int res) io->flags &= ~UBLK_IO_FLAG_ACTIVE; /* tell ublksrv one io request is coming */ - io_uring_cmd_done(io->cmd, res, 0); + io_uring_cmd_done(io->cmd, res, 0, issue_flags); } #define UBLK_REQUEUE_DELAY_MS 3 @@ -685,7 +686,8 @@ static inline void __ublk_abort_rq(struct ublk_queue *ubq, mod_delayed_work(system_wq, &ubq->dev->monitor_work, 0); } -static inline void __ublk_rq_task_work(struct request *req) +static inline void __ublk_rq_task_work(struct request *req, + unsigned issue_flags) { struct ublk_queue *ubq = req->mq_hctx->driver_data; int tag = req->tag; @@ -723,7 +725,7 @@ static inline void __ublk_rq_task_work(struct request *req) pr_devel("%s: need get data. op %d, qid %d tag %d io_flags %x\n", __func__, io->cmd->cmd_op, ubq->q_id, req->tag, io->flags); - ubq_complete_io_cmd(io, UBLK_IO_RES_NEED_GET_DATA); + ubq_complete_io_cmd(io, UBLK_IO_RES_NEED_GET_DATA, issue_flags); return; } /* @@ -761,17 +763,18 @@ static inline void __ublk_rq_task_work(struct request *req) mapped_bytes >> 9; } - ubq_complete_io_cmd(io, UBLK_IO_RES_OK); + ubq_complete_io_cmd(io, UBLK_IO_RES_OK, issue_flags); } -static inline void ublk_forward_io_cmds(struct ublk_queue *ubq) +static inline void ublk_forward_io_cmds(struct ublk_queue *ubq, + unsigned issue_flags) { struct llist_node *io_cmds = llist_del_all(&ubq->io_cmds); struct ublk_rq_data *data, *tmp; io_cmds = llist_reverse_order(io_cmds); llist_for_each_entry_safe(data, tmp, io_cmds, node) - __ublk_rq_task_work(blk_mq_rq_from_pdu(data)); + __ublk_rq_task_work(blk_mq_rq_from_pdu(data), issue_flags); } static inline void ublk_abort_io_cmds(struct ublk_queue *ubq) @@ -783,12 +786,12 @@ static inline void ublk_abort_io_cmds(struct ublk_queue *ubq) __ublk_abort_rq(ubq, blk_mq_rq_from_pdu(data)); } -static void ublk_rq_task_work_cb(struct io_uring_cmd *cmd) +static void ublk_rq_task_work_cb(struct io_uring_cmd *cmd, unsigned issue_flags) { struct ublk_uring_cmd_pdu *pdu = ublk_get_uring_cmd_pdu(cmd); struct ublk_queue *ubq = pdu->ubq; - ublk_forward_io_cmds(ubq); + ublk_forward_io_cmds(ubq, issue_flags); } static void ublk_rq_task_work_fn(struct callback_head *work) @@ -797,8 +800,9 @@ static void ublk_rq_task_work_fn(struct callback_head *work) struct ublk_rq_data, work); struct request *req = blk_mq_rq_from_pdu(data); struct ublk_queue *ubq = req->mq_hctx->driver_data; + unsigned issue_flags = IO_URING_F_UNLOCKED; - ublk_forward_io_cmds(ubq); + ublk_forward_io_cmds(ubq, issue_flags); } static void ublk_queue_cmd(struct ublk_queue *ubq, struct request *rq) @@ -1052,7 +1056,8 @@ static void ublk_cancel_queue(struct ublk_queue *ubq) struct ublk_io *io = &ubq->ios[i]; if (io->flags & UBLK_IO_FLAG_ACTIVE) - io_uring_cmd_done(io->cmd, UBLK_IO_RES_ABORT, 0); + io_uring_cmd_done(io->cmd, UBLK_IO_RES_ABORT, 0, + IO_URING_F_UNLOCKED); } /* all io commands are canceled */ @@ -1295,7 +1300,7 @@ static int ublk_ch_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags) return -EIOCBQUEUED; out: - io_uring_cmd_done(cmd, ret, 0); + io_uring_cmd_done(cmd, ret, 0, issue_flags); pr_devel("%s: complete: cmd op %d, tag %d ret %x io_flags %x\n", __func__, cmd_op, tag, ret, io->flags); return -EIOCBQUEUED; @@ -2053,7 +2058,7 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd, break; } out: - io_uring_cmd_done(cmd, ret, 0); + io_uring_cmd_done(cmd, ret, 0, issue_flags); pr_devel("%s: cmd done ret %d cmd_op %x, dev id %d qid %d\n", __func__, ret, cmd->cmd_op, header->dev_id, header->queue_id); return -EIOCBQUEUED; diff --git a/drivers/nvme/host/ioctl.c b/drivers/nvme/host/ioctl.c index 81f5550b670d..8224675f8de2 100644 --- a/drivers/nvme/host/ioctl.c +++ b/drivers/nvme/host/ioctl.c @@ -387,7 +387,8 @@ static inline struct nvme_uring_cmd_pdu *nvme_uring_cmd_pdu( return (struct nvme_uring_cmd_pdu *)&ioucmd->pdu; } -static void nvme_uring_task_meta_cb(struct io_uring_cmd *ioucmd) +static void nvme_uring_task_meta_cb(struct io_uring_cmd *ioucmd, + unsigned issue_flags) { struct nvme_uring_cmd_pdu *pdu = nvme_uring_cmd_pdu(ioucmd); struct request *req = pdu->req; @@ -408,17 +409,18 @@ static void nvme_uring_task_meta_cb(struct io_uring_cmd *ioucmd) blk_rq_unmap_user(req->bio); blk_mq_free_request(req); - io_uring_cmd_done(ioucmd, status, result); + io_uring_cmd_done(ioucmd, status, result, issue_flags); } -static void nvme_uring_task_cb(struct io_uring_cmd *ioucmd) +static void nvme_uring_task_cb(struct io_uring_cmd *ioucmd, + unsigned issue_flags) { struct nvme_uring_cmd_pdu *pdu = nvme_uring_cmd_pdu(ioucmd); if (pdu->bio) blk_rq_unmap_user(pdu->bio); - io_uring_cmd_done(ioucmd, pdu->nvme_status, pdu->u.result); + io_uring_cmd_done(ioucmd, pdu->nvme_status, pdu->u.result, issue_flags); } static enum rq_end_io_ret nvme_uring_cmd_end_io(struct request *req, @@ -440,7 +442,7 @@ static enum rq_end_io_ret nvme_uring_cmd_end_io(struct request *req, * Otherwise, move the completion to task work. */ if (cookie != NULL && blk_rq_is_poll(req)) - nvme_uring_task_cb(ioucmd); + nvme_uring_task_cb(ioucmd, IO_URING_F_UNLOCKED); else io_uring_cmd_complete_in_task(ioucmd, nvme_uring_task_cb); @@ -462,7 +464,7 @@ static enum rq_end_io_ret nvme_uring_cmd_end_io_meta(struct request *req, * Otherwise, move the completion to task work. */ if (cookie != NULL && blk_rq_is_poll(req)) - nvme_uring_task_meta_cb(ioucmd); + nvme_uring_task_meta_cb(ioucmd, IO_URING_F_UNLOCKED); else io_uring_cmd_complete_in_task(ioucmd, nvme_uring_task_meta_cb); diff --git a/include/linux/io_uring.h b/include/linux/io_uring.h index 0ded9e271523..a1484cdb3158 100644 --- a/include/linux/io_uring.h +++ b/include/linux/io_uring.h @@ -26,7 +26,7 @@ struct io_uring_cmd { const void *cmd; union { /* callback to defer completions to task context */ - void (*task_work_cb)(struct io_uring_cmd *cmd); + void (*task_work_cb)(struct io_uring_cmd *cmd, unsigned); /* used for polled completion */ void *cookie; }; @@ -38,9 +38,10 @@ struct io_uring_cmd { #if defined(CONFIG_IO_URING) int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw, struct iov_iter *iter, void *ioucmd); -void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, ssize_t res2); +void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, ssize_t res2, + unsigned issue_flags); void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd, - void (*task_work_cb)(struct io_uring_cmd *)); + void (*task_work_cb)(struct io_uring_cmd *, unsigned)); struct sock *io_uring_get_socket(struct file *file); void __io_uring_cancel(bool cancel_all); void __io_uring_free(struct task_struct *tsk); @@ -71,11 +72,11 @@ static inline int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw, return -EOPNOTSUPP; } static inline void io_uring_cmd_done(struct io_uring_cmd *cmd, ssize_t ret, - ssize_t ret2) + ssize_t ret2, unsigned issue_flags) { } static inline void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd, - void (*task_work_cb)(struct io_uring_cmd *)) + void (*task_work_cb)(struct io_uring_cmd *, unsigned)) { } static inline struct sock *io_uring_get_socket(struct file *file) diff --git a/io_uring/uring_cmd.c b/io_uring/uring_cmd.c index 18dfc5f6a8b7..92f310dfb9fd 100644 --- a/io_uring/uring_cmd.c +++ b/io_uring/uring_cmd.c @@ -15,12 +15,13 @@ static void io_uring_cmd_work(struct io_kiocb *req, bool *locked) { struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd); + unsigned issue_flags = *locked ? 0 : IO_URING_F_UNLOCKED; - ioucmd->task_work_cb(ioucmd); + ioucmd->task_work_cb(ioucmd, issue_flags); } void io_uring_cmd_complete_in_task(struct io_uring_cmd *ioucmd, - void (*task_work_cb)(struct io_uring_cmd *)) + void (*task_work_cb)(struct io_uring_cmd *, unsigned)) { struct io_kiocb *req = cmd_to_io_kiocb(ioucmd); @@ -42,7 +43,8 @@ static inline void io_req_set_cqe32_extra(struct io_kiocb *req, * Called by consumers of io_uring_cmd, if they originally returned * -EIOCBQUEUED upon receiving the command. */ -void io_uring_cmd_done(struct io_uring_cmd *ioucmd, ssize_t ret, ssize_t res2) +void io_uring_cmd_done(struct io_uring_cmd *ioucmd, ssize_t ret, ssize_t res2, + unsigned issue_flags) { struct io_kiocb *req = cmd_to_io_kiocb(ioucmd); @@ -56,7 +58,7 @@ void io_uring_cmd_done(struct io_uring_cmd *ioucmd, ssize_t ret, ssize_t res2) /* order with io_iopoll_req_issued() checking ->iopoll_complete */ smp_store_release(&req->iopoll_completed, 1); else - __io_req_complete(req, 0); + __io_req_complete(req, issue_flags); } EXPORT_SYMBOL_GPL(io_uring_cmd_done); From 1a232af233d01c2dc371fce92c139b3412d43a72 Mon Sep 17 00:00:00 2001 From: Chris Goldsworthy Date: Sun, 2 Apr 2023 22:31:28 -0700 Subject: [PATCH 229/269] ANDROID: Enable CONFIG_ZONE_DEVICE Enable CONFIG_ZONE_DEVICE to allow drivers to map device memory in the logical mapping using memremap_pages(). Bug: 274657829 Change-Id: Ie4ac78b7667ddb5ea20c7f4ed2b0df127012008a Signed-off-by: Chris Goldsworthy --- arch/arm64/configs/gki_defconfig | 1 + arch/x86/configs/gki_defconfig | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index ef569c29c944..0b5ee1112eb9 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -111,6 +111,7 @@ CONFIG_CMA=y CONFIG_CMA_DEBUGFS=y CONFIG_CMA_AREAS=16 # CONFIG_ZONE_DMA is not set +CONFIG_ZONE_DEVICE=y CONFIG_ANON_VMA_NAME=y CONFIG_USERFAULTFD=y CONFIG_LRU_GEN=y diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index ffcf040d0bf6..d2c8c46ac574 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -109,6 +109,7 @@ CONFIG_CMA=y CONFIG_CMA_DEBUGFS=y CONFIG_CMA_AREAS=16 # CONFIG_ZONE_DMA is not set +CONFIG_ZONE_DEVICE=y CONFIG_ANON_VMA_NAME=y CONFIG_USERFAULTFD=y CONFIG_LRU_GEN=y From e92cb4aa7fda5e6948bbb7fa36410f809f2f936f Mon Sep 17 00:00:00 2001 From: Chris Goldsworthy Date: Sun, 2 Apr 2023 22:41:59 -0700 Subject: [PATCH 230/269] ANDROID: abi_gki_aarch64_qcom: Add memremap_pages and memunmap_pages 2 function symbol(s) added 'void* memremap_pages(struct dev_pagemap*, int)' 'void memunmap_pages(struct dev_pagemap*)' Add the memremap_pages() and memunmap_pages() functions exposed by CONFIG_ZONE_DEVICE, in order to allow drivers to map device memory in the logical mapping using memremap_pages(). Bug: 274657829 Change-Id: I4dfcbdbb1d2493f4137c356ba1d1a9679156cfed Signed-off-by: Chris Goldsworthy --- 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 4640c25dbc58..d0bf0f39a3c1 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -2101,6 +2101,7 @@ mempool_free mempool_free_slab memremap + memremap_pages memscan mem_section memset64 @@ -2108,6 +2109,7 @@ __memset_io memstart_addr memunmap + memunmap_pages migrate_pages migrate_swap __migrate_task From fc80823b24d7a46aabed968d46922443ffc62618 Mon Sep 17 00:00:00 2001 From: Paul Lawrence Date: Tue, 4 Apr 2023 17:04:55 +0000 Subject: [PATCH 231/269] ANDROID: fuse: Support errors from fuse daemon in canonical path Previously errors from the daemon in FUSE_CANONICAL_PATH were simply ignored. In order to block inotifys, it is useful to be able to return errors from this opcode. Bug: 238619640 Test: inotify no longer works on /storage/emulated/0/Android/media but does on child folders Signed-off-by: Paul Lawrence Change-Id: Icb15c090c6286c174338471a787712f8388de316 --- fs/fuse/dev.c | 2 +- fs/fuse/dir.c | 13 ++++++++----- fs/notify/inotify/inotify_user.c | 6 +++++- include/linux/dcache.h | 2 +- include/linux/fsnotify.h | 6 +++++- 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index 155e0732a46a..90c8fd9b805f 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c @@ -1932,7 +1932,7 @@ static ssize_t fuse_dev_do_write(struct fuse_dev *fud, err = copy_out_args(cs, req->args, nbytes); fuse_copy_finish(cs); - if (!err && req->in.h.opcode == FUSE_CANONICAL_PATH) { + if (!err && req->in.h.opcode == FUSE_CANONICAL_PATH && !oh.error) { char *path = (char *)req->args->out_args[0].value; path[req->args->out_args[0].size - 1] = 0; diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index 8c05913ff384..c83ae66facdb 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -409,7 +409,7 @@ static struct vfsmount *fuse_dentry_automount(struct path *path) * look up paths on its own. Instead, we handle the lookup as a special case * inside of the write request. */ -static void fuse_dentry_canonical_path(const struct path *path, +static int fuse_dentry_canonical_path(const struct path *path, struct path *canonical_path) { struct inode *inode = d_inode(path->dentry); @@ -428,12 +428,12 @@ static void fuse_dentry_canonical_path(const struct path *path, fuse_canonical_path_finalize, path, canonical_path); if (fer.ret) - return; + return PTR_ERR(fer.result); #endif path_name = (char *)get_zeroed_page(GFP_KERNEL); if (!path_name) - goto default_path; + return -ENOMEM; args.opcode = FUSE_CANONICAL_PATH; args.nodeid = get_node_id(inode); @@ -447,11 +447,14 @@ static void fuse_dentry_canonical_path(const struct path *path, err = fuse_simple_request(fm, &args); free_page((unsigned long)path_name); if (err > 0) - return; -default_path: + return 0; + if (err < 0) + return err; + canonical_path->dentry = path->dentry; canonical_path->mnt = path->mnt; path_get(canonical_path); + return 0; } const struct dentry_operations fuse_dentry_operations = { diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c index 05299fb2430d..cc9bde854e5a 100644 --- a/fs/notify/inotify/inotify_user.c +++ b/fs/notify/inotify/inotify_user.c @@ -784,8 +784,11 @@ SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname, /* support stacked filesystems */ if (path.dentry && path.dentry->d_op) { if (path.dentry->d_op->d_canonical_path) { - path.dentry->d_op->d_canonical_path(&path, + ret = path.dentry->d_op->d_canonical_path(&path, &alteredpath); + if (ret) + goto path_put_and_out; + canonical_path = &alteredpath; path_put(&path); } @@ -797,6 +800,7 @@ SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname, /* create/update an inode mark */ ret = inotify_update_watch(group, inode, mask); +path_put_and_out: path_put(canonical_path); fput_and_out: fdput(f); diff --git a/include/linux/dcache.h b/include/linux/dcache.h index ccdb1c206a90..84be671d8131 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h @@ -140,7 +140,7 @@ struct dentry_operations { struct vfsmount *(*d_automount)(struct path *); int (*d_manage)(const struct path *, bool); struct dentry *(*d_real)(struct dentry *, const struct inode *); - void (*d_canonical_path)(const struct path *, struct path *); + int (*d_canonical_path)(const struct path *, struct path *); } ____cacheline_aligned; /* diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h index bcf53bf68487..102913f26152 100644 --- a/include/linux/fsnotify.h +++ b/include/linux/fsnotify.h @@ -105,7 +105,11 @@ static inline int fsnotify_file(struct file *file, __u32 mask) struct path lower_path; int ret; - path->dentry->d_op->d_canonical_path(path, &lower_path); + ret = path->dentry->d_op->d_canonical_path(path, + &lower_path); + if (ret) + return ret; + ret = fsnotify_parent(lower_path.dentry, mask, &lower_path, FSNOTIFY_EVENT_PATH); path_put(&lower_path); From 6937d457bb8bff3f80ea84a47093c2aec6acc1dd Mon Sep 17 00:00:00 2001 From: Carlos Llamas Date: Wed, 12 Apr 2023 02:53:00 +0000 Subject: [PATCH 232/269] ANDROID: ABI: remove stale symbol The following symbol was removed by commit c2b6e1a440d2 ("net: mdio: fix owner field for mdio buses registered using device-tree"). It also needs to be removed from this symbol list to reflect this update. - of_mdiobus_register Bug: 277759776 Change-Id: I4ab79a86f13404c2d0b2e423154aaa8b512bc1c4 Signed-off-by: Carlos Llamas --- android/abi_gki_aarch64_qcom | 1 - 1 file changed, 1 deletion(-) diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index d0bf0f39a3c1..80ca3a6313da 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -2344,7 +2344,6 @@ of_machine_is_compatible of_match_device of_match_node - of_mdiobus_register of_modalias_node of_n_addr_cells of_node_name_eq From 9cd2f3498d926cabf542011096c82c83c746db3f Mon Sep 17 00:00:00 2001 From: Todd Kjos Date: Tue, 11 Apr 2023 16:52:34 +0000 Subject: [PATCH 233/269] ANDROID: 4/12/2023 KMI update Set KMI_GENERATION=4 for 4/12 KMI update 1 function symbol(s) removed 'int of_mdiobus_register(struct mii_bus*, struct device_node*)' 2 function symbol(s) added 'void* memremap_pages(struct dev_pagemap*, int)' 'void memunmap_pages(struct dev_pagemap*)' function symbol changed from 'bool cfg80211_rx_control_port(struct net_device*, struct sk_buff*, bool)' to 'bool cfg80211_rx_control_port(struct net_device*, struct sk_buff*, bool, int)' CRC changed from 0x19c30d56 to 0x70d8333f type changed from 'bool(struct net_device*, struct sk_buff*, bool)' to 'bool(struct net_device*, struct sk_buff*, bool, int)' parameter 4 of type 'int' was added function symbol 'struct block_device* I_BDEV(struct inode*)' changed CRC changed from 0xc79e45c3 to 0xbf847796 function symbol 'void __ClearPageMovable(struct page*)' changed CRC changed from 0x4cf602fa to 0xd312e35b function symbol 'void __SetPageMovable(struct page*, const struct movable_operations*)' changed CRC changed from 0x60f5778b to 0x9c92af65 ... 3672 omitted; 3675 symbols have only CRC changes type 'struct pglist_data' changed byte size changed from 7168 to 9088 member changed from 'struct zone node_zones[3]' to 'struct zone node_zones[4]' type changed from 'struct zone[3]' to 'struct zone[4]' number of elements changed from 3 to 4 member 'struct zonelist node_zonelists[1]' changed offset changed by 12800 22 members ('int nr_zones' .. 'unsigned long totalreserve_pages') changed offset changed by 12928 3 members ('struct cacheline_padding _pad1_' .. 'struct lruvec __lruvec') changed offset changed by 13312 2 members ('unsigned long flags' .. 'struct lru_gen_mm_walk mm_walk') changed offset changed by 14848 member 'struct lru_gen_memcg memcg_lru' changed offset changed by 15104 3 members ('struct cacheline_padding _pad2_' .. 'atomic_long_t vm_stat[42]') changed offset changed by 15360 type 'struct iommu_group' changed byte size changed from 208 to 224 member 'struct xarray pasid_array' was added 11 members ('struct mutex mutex' .. 'void* owner') changed offset changed by 128 type 'struct iommu_domain' changed byte size changed from 72 to 88 member 'iommu_fault_handler_t handler' was removed member 'void* handler_token' was removed 2 members ('struct iommu_domain_geometry geometry' .. 'struct iommu_dma_cookie* iova_cookie') changed offset changed by -128 member 'enum iommu_page_response_code(* iopf_handler)(struct iommu_fault*, void*)' was added member 'void* fault_data' was added member 'union { struct { iommu_fault_handler_t handler; void* handler_token; }; struct { struct mm_struct* mm; int users; }; }' was added type 'struct iommu_device' changed byte size changed from 40 to 48 member 'u32 max_pasids' was added type 'struct iommu_ops' changed byte size changed from 152 to 136 member 'struct iommu_sva*(* sva_bind)(struct device*, struct mm_struct*, void*)' was removed member 'void(* sva_unbind)(struct iommu_sva*)' was removed member 'u32(* sva_get_pasid)(struct iommu_sva*)' was removed 2 members ('int(* page_response)(struct device*, struct iommu_fault_event*, struct iommu_page_response*)' .. 'int(* def_domain_type)(struct device*)') changed offset changed by -192 member 'void(* remove_dev_pasid)(struct device*, ioasid_t)' was added 3 members ('const struct iommu_domain_ops* default_domain_ops' .. 'struct module* owner') changed offset changed by -128 type 'struct vm_event_state' changed byte size changed from 728 to 752 member changed from 'unsigned long event[91]' to 'unsigned long event[94]' type changed from 'unsigned long[91]' to 'unsigned long[94]' number of elements changed from 91 to 94 type 'struct dev_iommu' changed byte size changed from 72 to 80 member 'u32 max_pasids' was added type 'struct io_uring_cmd' changed member changed from 'union { void(* task_work_cb)(struct io_uring_cmd*); void* cookie; }' to 'union { void(* task_work_cb)(struct io_uring_cmd*, unsigned int); void* cookie; }' type changed from 'union { void(* task_work_cb)(struct io_uring_cmd*); void* cookie; }' to 'union { void(* task_work_cb)(struct io_uring_cmd*, unsigned int); void* cookie; }' member changed from 'void(* task_work_cb)(struct io_uring_cmd*)' to 'void(* task_work_cb)(struct io_uring_cmd*, unsigned int)' type changed from 'void(*)(struct io_uring_cmd*)' to 'void(*)(struct io_uring_cmd*, unsigned int)' pointed-to type changed from 'void(struct io_uring_cmd*)' to 'void(struct io_uring_cmd*, unsigned int)' parameter 2 of type 'unsigned int' was added type 'struct dentry_operations' changed member changed from 'void(* d_canonical_path)(const struct path*, struct path*)' to 'int(* d_canonical_path)(const struct path*, struct path*)' type changed from 'void(*)(const struct path*, struct path*)' to 'int(*)(const struct path*, struct path*)' pointed-to type changed from 'void(const struct path*, struct path*)' to 'int(const struct path*, struct path*)' return type changed from 'void' to 'int' type 'struct fscrypt_operations' changed byte size changed from 72 to 104 member 'u64 android_kabi_reserved1' was added member 'u64 android_kabi_reserved2' was added member 'u64 android_kabi_reserved3' was added member 'u64 android_kabi_reserved4' was added type 'struct zone' changed member changed from 'long lowmem_reserve[3]' to 'long lowmem_reserve[4]' type changed from 'long[3]' to 'long[4]' number of elements changed from 3 to 4 15 members ('struct pglist_data* zone_pgdat' .. 'int initialized') changed offset changed by 64 type 'struct zonelist' changed byte size changed from 64 to 80 member changed from 'struct zoneref _zonerefs[4]' to 'struct zoneref _zonerefs[5]' type changed from 'struct zoneref[4]' to 'struct zoneref[5]' number of elements changed from 4 to 5 type 'enum zone_type' changed enumerator 'ZONE_DEVICE' (3) was added enumerator '__MAX_NR_ZONES' value changed from 3 to 4 type 'struct lruvec' changed byte size changed from 1224 to 1416 2 members ('struct lru_gen_mm_state mm_state' .. 'struct pglist_data* pgdat') changed offset changed by 1536 type 'struct lru_gen_mm_walk' changed byte size changed from 152 to 184 member changed from 'int nr_pages[4][2][3]' to 'int nr_pages[4][2][4]' type changed from 'int[4][2][3]' to 'int[4][2][4]' element type changed from 'int[2][3]' to 'int[2][4]' element type changed from 'int[3]' to 'int[4]' number of elements changed from 3 to 4 4 members ('int mm_stats[6]' .. 'bool force_scan') changed offset changed by 256 type 'struct iommu_domain_ops' changed byte size changed from 112 to 120 member 'int(* set_dev_pasid)(struct iommu_domain*, struct device*, ioasid_t)' was added 12 members ('int(* map)(struct iommu_domain*, unsigned long, phys_addr_t, size_t, int, gfp_t)' .. 'void(* free)(struct iommu_domain*)') changed offset changed by 64 type 'struct mem_cgroup_per_node' changed byte size changed from 2096 to 2328 2 members ('struct lruvec_stats_percpu* lruvec_stats_percpu' .. 'struct lruvec_stats lruvec_stats') changed offset changed by 1536 member changed from 'unsigned long lru_zone_size[3][5]' to 'unsigned long lru_zone_size[4][5]' offset changed from 15232 to 16768 type changed from 'unsigned long[3][5]' to 'unsigned long[4][5]' number of elements changed from 3 to 4 6 members ('struct mem_cgroup_reclaim_iter iter' .. 'struct mem_cgroup* memcg') changed offset changed by 1856 type 'struct lru_gen_folio' changed byte size changed from 960 to 1152 member changed from 'struct list_head folios[4][2][3]' to 'struct list_head folios[4][2][4]' type changed from 'struct list_head[4][2][3]' to 'struct list_head[4][2][4]' element type changed from 'struct list_head[2][3]' to 'struct list_head[2][4]' element type changed from 'struct list_head[3]' to 'struct list_head[4]' number of elements changed from 3 to 4 member changed from 'long nr_pages[4][2][3]' to 'long nr_pages[4][2][4]' offset changed from 3520 to 4544 type changed from 'long[4][2][3]' to 'long[4][2][4]' element type changed from 'long[2][3]' to 'long[2][4]' element type changed from 'long[3]' to 'long[4]' number of elements changed from 3 to 4 9 members ('unsigned long avg_refaulted[2][4]' .. 'struct hlist_nulls_node list') changed offset changed by 1536 Bug: 277759776 Change-Id: I31065f7aa7589d55cf402ed8e00da061cffe1246 Signed-off-by: Todd Kjos Signed-off-by: Carlos Llamas --- android/abi_gki_aarch64.stg | 8600 ++++++++++++++++++----------------- build.config.common | 2 +- 2 files changed, 4369 insertions(+), 4233 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index f74842457dc0..d3ade00abe44 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -1,4 +1,4 @@ -root_id: 0x25a8b173 +root_id: 0x84ea5130 void { id: 0x48b5725f } @@ -3880,6 +3880,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x18c46588 } +pointer_reference { + id: 0x0ca205d3 + kind: POINTER + pointee_type_id: 0x18c8f1d0 +} pointer_reference { id: 0x0ca27481 kind: POINTER @@ -4165,11 +4170,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x19f3aad4 } -pointer_reference { - id: 0x0ced561e - kind: POINTER - pointee_type_id: 0x19f5bee7 -} pointer_reference { id: 0x0ced5e19 kind: POINTER @@ -4260,11 +4260,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1e5f9cbf } -pointer_reference { - id: 0x0d0836f6 - kind: POINTER - pointee_type_id: 0x1e603d44 -} pointer_reference { id: 0x0d08a1bb kind: POINTER @@ -5665,11 +5660,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1283794a } -pointer_reference { - id: 0x0e350ba0 - kind: POINTER - pointee_type_id: 0x1294c81d -} pointer_reference { id: 0x0e361c9c kind: POINTER @@ -5970,6 +5960,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x13fa026e } +pointer_reference { + id: 0x0e708ec6 + kind: POINTER + pointee_type_id: 0x1382dd85 +} pointer_reference { id: 0x0e724a00 kind: POINTER @@ -6125,6 +6120,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x107162e7 } +pointer_reference { + id: 0x0e8de3e3 + kind: POINTER + pointee_type_id: 0x10776911 +} pointer_reference { id: 0x0e9068a5 kind: POINTER @@ -9525,11 +9525,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x4cde7d15 } -pointer_reference { - id: 0x19b548a2 - kind: POINTER - pointee_type_id: 0x4c95c416 -} pointer_reference { id: 0x19c00e70 kind: POINTER @@ -12025,11 +12020,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xbc9ef3fd } -pointer_reference { - id: 0x25b7bdd2 - kind: POINTER - pointee_type_id: 0xbc9e11d7 -} pointer_reference { id: 0x25c2b7b5 kind: POINTER @@ -12415,11 +12405,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xb4a26738 } -pointer_reference { - id: 0x27c2c08e - kind: POINTER - pointee_type_id: 0xb54be4a7 -} pointer_reference { id: 0x27cf73eb kind: POINTER @@ -18930,6 +18915,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x936c5d25 } +pointer_reference { + id: 0x2e4e1a59 + kind: POINTER + pointee_type_id: 0x93788ff8 +} pointer_reference { id: 0x2e4fd1e7 kind: POINTER @@ -20465,6 +20455,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x962949a5 } +pointer_reference { + id: 0x2f1af790 + kind: POINTER + pointee_type_id: 0x962b38df +} pointer_reference { id: 0x2f1b138b kind: POINTER @@ -29265,6 +29260,11 @@ typedef { name: "io_wq_work_fn" referred_type_id: 0x12e01214 } +typedef { + id: 0x1e41b656 + name: "ioasid_t" + referred_type_id: 0x4585663f +} typedef { id: 0x47c11668 name: "iommu_dev_fault_handler_t" @@ -33844,11 +33844,6 @@ array { number_of_elements: 20 element_type_id: 0x18bd6530 } -array { - id: 0x1236f51c - number_of_elements: 3 - element_type_id: 0x03cc00a2 -} array { id: 0x12b100eb number_of_elements: 3 @@ -34149,11 +34144,6 @@ array { number_of_elements: 3 element_type_id: 0xe62ebf07 } -array { - id: 0x2b8da8d0 - number_of_elements: 3 - element_type_id: 0xe5217790 -} array { id: 0x2bc4f74a number_of_elements: 3 @@ -34169,11 +34159,6 @@ array { number_of_elements: 3 element_type_id: 0xf8e00636 } -array { - id: 0x2dc6725b - number_of_elements: 3 - element_type_id: 0xfc0e1dbd -} array { id: 0x2f4e696d number_of_elements: 128 @@ -34354,6 +34339,11 @@ array { number_of_elements: 2 element_type_id: 0xb3e7bac9 } +array { + id: 0x407ae5fe + number_of_elements: 2 + element_type_id: 0xb34e9475 +} array { id: 0x409e2c67 number_of_elements: 2 @@ -34389,6 +34379,11 @@ array { number_of_elements: 16 element_type_id: 0x3829c378 } +array { + id: 0x42868434 + number_of_elements: 2 + element_type_id: 0xb8bf135c +} array { id: 0x439230ff number_of_elements: 2 @@ -34494,6 +34489,11 @@ array { number_of_elements: 37 element_type_id: 0x92233392 } +array { + id: 0x49c80917 + number_of_elements: 2 + element_type_id: 0x958527d1 +} array { id: 0x4a095829 number_of_elements: 16 @@ -34944,11 +34944,6 @@ array { number_of_elements: 2 element_type_id: 0x205789b5 } -array { - id: 0x6524bdbf - number_of_elements: 2 - element_type_id: 0x2637f572 -} array { id: 0x65dffcdd number_of_elements: 256 @@ -35004,11 +34999,6 @@ array { number_of_elements: 256 element_type_id: 0x78f4e574 } -array { - id: 0x67d8dc75 - number_of_elements: 2 - element_type_id: 0x2dc6725b -} array { id: 0x67e28331 number_of_elements: 2 @@ -35019,11 +35009,6 @@ array { number_of_elements: 16 element_type_id: 0x901eaf6a } -array { - id: 0x6840c692 - number_of_elements: 91 - element_type_id: 0x33756485 -} array { id: 0x6860ad66 number_of_elements: 16 @@ -35159,11 +35144,6 @@ array { number_of_elements: 2 element_type_id: 0x0baa70a7 } -array { - id: 0x6e6a309c - number_of_elements: 2 - element_type_id: 0x0b0dc1ff -} array { id: 0x6e8341c8 number_of_elements: 2 @@ -35639,6 +35619,11 @@ array { number_of_elements: 4 element_type_id: 0x03913382 } +array { + id: 0x8cbe1332 + number_of_elements: 4 + element_type_id: 0x03cc00a2 +} array { id: 0x8d2872f9 number_of_elements: 4 @@ -35759,11 +35744,6 @@ array { number_of_elements: 6 element_type_id: 0xd41e888f } -array { - id: 0x95043c75 - number_of_elements: 4 - element_type_id: 0x6524bdbf -} array { id: 0x95171a6f number_of_elements: 2048 @@ -35779,11 +35759,6 @@ array { number_of_elements: 4 element_type_id: 0x6720d32f } -array { - id: 0x95bb2407 - number_of_elements: 4 - element_type_id: 0x67d8dc75 -} array { id: 0x964dc71a number_of_elements: 4 @@ -35799,11 +35774,6 @@ array { number_of_elements: 21 element_type_id: 0x006e8104 } -array { - id: 0x97d79f3d - number_of_elements: 4 - element_type_id: 0x6e6a309c -} array { id: 0x9819cf84 number_of_elements: 1 @@ -35849,6 +35819,11 @@ array { number_of_elements: 6 element_type_id: 0xf784797b } +array { + id: 0x9c53aa65 + number_of_elements: 4 + element_type_id: 0x407ae5fe +} array { id: 0x9c59388e number_of_elements: 4 @@ -35864,6 +35839,11 @@ array { number_of_elements: 12 element_type_id: 0x42af4f5c } +array { + id: 0x9cecb217 + number_of_elements: 4 + element_type_id: 0x42868434 +} array { id: 0x9d2c4a95 number_of_elements: 4 @@ -35879,6 +35859,11 @@ array { number_of_elements: 4 element_type_id: 0x49a73111 } +array { + id: 0x9e3f115f + number_of_elements: 4 + element_type_id: 0x49c80917 +} array { id: 0x9e96e428 number_of_elements: 1 @@ -36129,6 +36114,11 @@ array { number_of_elements: 4 element_type_id: 0xe276adef } +array { + id: 0xb5054efe + number_of_elements: 4 + element_type_id: 0xe5217790 +} array { id: 0xb522cc16 number_of_elements: 17 @@ -36174,11 +36164,6 @@ array { number_of_elements: 31 element_type_id: 0xedf277ba } -array { - id: 0xb7b313d7 - number_of_elements: 4 - element_type_id: 0xeff80337 -} array { id: 0xb7fefe6a number_of_elements: 4 @@ -36615,6 +36600,11 @@ array { id: 0xd1341eff element_type_id: 0x5436403f } +array { + id: 0xd2022e7c + number_of_elements: 5 + element_type_id: 0xeff80337 +} array { id: 0xd2501053 number_of_elements: 14 @@ -37127,6 +37117,11 @@ array { id: 0xf6acc9b2 element_type_id: 0xca551d0a } +array { + id: 0xf72d9d6b + number_of_elements: 94 + element_type_id: 0x33756485 +} array { id: 0xf77e4d4d number_of_elements: 15 @@ -37465,6 +37460,10 @@ member { id: 0x26c9c4e4 type_id: 0x14096380 } +member { + id: 0x26da8cc1 + type_id: 0x14444314 +} member { id: 0x26e6f511 type_id: 0x14b5a454 @@ -37554,6 +37553,10 @@ member { type_id: 0x2aa8f2af offset: 4608 } +member { + id: 0x2a406106 + type_id: 0x262ff409 +} member { id: 0x2a426327 type_id: 0x2627fc8d @@ -38235,6 +38238,11 @@ member { type_id: 0x5c3ef0a3 offset: 384 } +member { + id: 0x34d349be + type_id: 0x5c637323 + offset: 576 +} member { id: 0x34dc7c7e type_id: 0x5c5fa7e4 @@ -38586,8 +38594,8 @@ member { offset: 64 } member { - id: 0x39e9bc27 - type_id: 0x6888a784 + id: 0x39e9b87f + type_id: 0x6888b6e5 offset: 128 } member { @@ -39731,10 +39739,10 @@ member { type_id: 0xc8b17aa7 } member { - id: 0x5cfa9db5 + id: 0x5cfa9ff9 name: "__lruvec" type_id: 0xce2040d6 - offset: 41728 + offset: 55040 } member { id: 0xf63f2604 @@ -40442,10 +40450,10 @@ member { offset: 1536 } member { - id: 0xcb455ab7 + id: 0xcb455c50 name: "_pad1_" type_id: 0xadc524dd - offset: 41472 + offset: 54784 } member { id: 0x1aacf678 @@ -40466,10 +40474,10 @@ member { offset: 13824 } member { - id: 0x1aacfea1 + id: 0x1aacff1c name: "_pad2_" type_id: 0xadc524dd - offset: 54272 + offset: 69632 } member { id: 0x1e2ef2aa @@ -40708,9 +40716,9 @@ member { offset: 1024 } member { - id: 0xf5446657 + id: 0xf521d76a name: "_zonerefs" - type_id: 0xb7b313d7 + type_id: 0xd2022e7c } member { id: 0x806bbf2b @@ -44745,6 +44753,12 @@ member { type_id: 0x92233392 offset: 1920 } +member { + id: 0x2d081c40 + name: "android_kabi_reserved1" + type_id: 0x92233392 + offset: 576 +} member { id: 0x4f08721f name: "android_kabi_reserved10" @@ -44811,6 +44825,12 @@ member { type_id: 0x92233392 offset: 1984 } +member { + id: 0x63760fdb + name: "android_kabi_reserved2" + type_id: 0x92233392 + offset: 640 +} member { id: 0x8b2afc87 name: "android_kabi_reserved20" @@ -44871,6 +44891,12 @@ member { type_id: 0x92233392 offset: 3712 } +member { + id: 0xac894b6b + name: "android_kabi_reserved3" + type_id: 0x92233392 + offset: 704 +} member { id: 0xac894ed4 name: "android_kabi_reserved3" @@ -44901,6 +44927,12 @@ member { type_id: 0x92233392 offset: 2112 } +member { + id: 0xe0f63ce5 + name: "android_kabi_reserved4" + type_id: 0x92233392 + offset: 768 +} member { id: 0x22369142 name: "android_kabi_reserved5" @@ -47936,10 +47968,10 @@ member { offset: 960 } member { - id: 0x83570c23 + id: 0x83570183 name: "avg_refaulted" type_id: 0x4c8d526d - offset: 5056 + offset: 6592 } member { id: 0x9f9132df @@ -47966,10 +47998,10 @@ member { offset: 448 } member { - id: 0x78e6f66b + id: 0x78e6fa74 name: "avg_total" type_id: 0x4c8d526d - offset: 5568 + offset: 7104 } member { id: 0x027dc0a5 @@ -49079,10 +49111,10 @@ member { offset: 352 } member { - id: 0xa5be4c17 + id: 0xa5be4038 name: "batched" type_id: 0x6720d32f - offset: 1152 + offset: 1408 } member { id: 0x54126f47 @@ -50983,10 +51015,10 @@ member { offset: 6592 } member { - id: 0x48c48bb2 + id: 0x48c48f3c name: "blocking_domain" type_id: 0x2e94a1e1 - offset: 1280 + offset: 1408 } member { id: 0x4f0978ad @@ -54851,10 +54883,10 @@ member { bitsize: 1 } member { - id: 0x297d1ec9 + id: 0x297d1e7e name: "can_swap" type_id: 0x6d7f5ff6 - offset: 1184 + offset: 1440 } member { id: 0xd61d73b2 @@ -59297,10 +59329,10 @@ member { offset: 5120 } member { - id: 0xd226c4c9 + id: 0xd226c8d1 name: "cma_pages" type_id: 0x33756485 - offset: 1152 + offset: 1216 } member { id: 0x3f8434ad @@ -66220,9 +66252,9 @@ member { offset: 640 } member { - id: 0xa053fb2c + id: 0xa070bd00 name: "d_canonical_path" - type_id: 0x0d0836f6 + type_id: 0x2e4e1a59 offset: 832 } member { @@ -68794,10 +68826,10 @@ member { offset: 64 } member { - id: 0xd2bea8f2 + id: 0xd2bea8af name: "def_domain_type" type_id: 0x2dd58efa - offset: 960 + offset: 768 } member { id: 0x56d299d6 @@ -68883,16 +68915,16 @@ member { offset: 8256 } member { - id: 0xe1eb99a3 + id: 0xe1eb91e4 name: "default_domain" type_id: 0x2e94a1e1 - offset: 1216 + offset: 1344 } member { - id: 0x91bbbf6c + id: 0x91bbb2d5 name: "default_domain_ops" type_id: 0x30092723 - offset: 1024 + offset: 896 } member { id: 0xb612a728 @@ -69147,10 +69179,10 @@ member { offset: 2568 } member { - id: 0x5cbd60f7 + id: 0x5cbd6610 name: "deferred_split_queue" type_id: 0x814f67d4 - offset: 41472 + offset: 54784 } member { id: 0x5cbd698c @@ -74721,18 +74753,18 @@ member { type_id: 0x18a2fb63 offset: 64 } +member { + id: 0xa72fe3f6 + name: "domain" + type_id: 0x2e94a1e1 + offset: 1472 +} member { id: 0xa72fed64 name: "domain" type_id: 0x2e94a1e1 offset: 128 } -member { - id: 0xa72fee25 - name: "domain" - type_id: 0x2e94a1e1 - offset: 1344 -} member { id: 0xa7c87331 name: "domain" @@ -78600,10 +78632,10 @@ member { offset: 640 } member { - id: 0xe86f5472 + id: 0xe86f5ee1 name: "enable_nesting" type_id: 0x2f194b72 - offset: 704 + offset: 768 } member { id: 0xca494c13 @@ -78759,6 +78791,12 @@ member { type_id: 0x6d7f5ff6 offset: 1248 } +member { + id: 0x3a2d3543 + name: "enabled" + type_id: 0x6d7f5ff6 + offset: 9024 +} member { id: 0x3a2d355a name: "enabled" @@ -78801,12 +78839,6 @@ member { type_id: 0x6d7f5ff6 offset: 64 } -member { - id: 0x3a2d3aaa - name: "enabled" - type_id: 0x6d7f5ff6 - offset: 7488 -} member { id: 0x3a2d3c38 name: "enabled" @@ -79314,10 +79346,10 @@ member { offset: 2368 } member { - id: 0x5a2828f5 + id: 0x5a282cb1 name: "enforce_cache_coherency" type_id: 0x37d06578 - offset: 640 + offset: 704 } member { id: 0xc774a29c @@ -79650,12 +79682,6 @@ member { name: "entry" type_id: 0xd3c80119 } -member { - id: 0x4d8782cf - name: "entry" - type_id: 0xd3c80119 - offset: 1408 -} member { id: 0x4d8784dd name: "entry" @@ -79686,6 +79712,12 @@ member { type_id: 0xd3c80119 offset: 128 } +member { + id: 0x4d878adb + name: "entry" + type_id: 0xd3c80119 + offset: 1536 +} member { id: 0x4dae719d name: "entry" @@ -80499,11 +80531,6 @@ member { type_id: 0xb914bfab offset: 320 } -member { - id: 0x0a27a0a6 - name: "event" - type_id: 0x6840c692 -} member { id: 0x0a28c0b3 name: "event" @@ -80615,6 +80642,11 @@ member { type_id: 0xe62ebf07 offset: 64 } +member { + id: 0x0ab8cdfd + name: "event" + type_id: 0xf72d9d6b +} member { id: 0x0acdf01b name: "event" @@ -81081,10 +81113,10 @@ member { offset: 384 } member { - id: 0x9cd38c7d + id: 0x9cd3894a name: "evicted" type_id: 0xa4e7cb57 - offset: 6464 + offset: 8000 } member { id: 0x89066d93 @@ -82933,6 +82965,12 @@ member { type_id: 0x33756485 offset: 5696 } +member { + id: 0x1e5ce302 + name: "fault_data" + type_id: 0x18bd6530 + offset: 512 +} member { id: 0xe9aff641 name: "fault_get" @@ -86272,12 +86310,6 @@ member { type_id: 0x3e09ba9c offset: 32 } -member { - id: 0x2d5bf025 - name: "flags" - type_id: 0x33756485 - offset: 51520 -} member { id: 0x2d5bf072 name: "flags" @@ -86325,6 +86357,12 @@ member { type_id: 0x33756485 offset: 3904 } +member { + id: 0x2d5bf4c7 + name: "flags" + type_id: 0x33756485 + offset: 66368 +} member { id: 0x2d5bf586 name: "flags" @@ -87629,10 +87667,10 @@ member { offset: 320 } member { - id: 0xba50d692 + id: 0xba50d077 name: "flush_iotlb_all" type_id: 0x0c5f67dd - offset: 384 + offset: 448 } member { id: 0x06641e28 @@ -87929,9 +87967,9 @@ member { type_id: 0x2170d06d } member { - id: 0x53ee1fea + id: 0x53e7f764 name: "folios" - type_id: 0x95043c75 + type_id: 0x9cecb217 offset: 448 } member { @@ -88127,10 +88165,10 @@ member { offset: 256 } member { - id: 0x056fd9e7 + id: 0x056fdf60 name: "force_scan" type_id: 0x6d7f5ff6 - offset: 1192 + offset: 1448 } member { id: 0x6ed63d49 @@ -88987,10 +89025,10 @@ member { type_id: 0x0c43d124 } member { - id: 0xfeae540e + id: 0xfeae5d12 name: "free" type_id: 0x0c5f67dd - offset: 832 + offset: 896 } member { id: 0xfeae6ede @@ -91041,10 +91079,10 @@ member { offset: 21184 } member { - id: 0xa9f411fa + id: 0xa9f41a7b name: "gen" type_id: 0x295c7202 - offset: 7496 + offset: 9032 } member { id: 0xa36a9456 @@ -91226,10 +91264,10 @@ member { offset: 1984 } member { - id: 0x3a570591 + id: 0x3a570a9f name: "geometry" type_id: 0x3c416994 - offset: 320 + offset: 192 } member { id: 0x314650d1 @@ -94466,10 +94504,9 @@ member { type_id: 0xd92b1d75 } member { - id: 0xf9ca6694 + id: 0xf9ca6e5d name: "handler" type_id: 0x907538bd - offset: 192 } member { id: 0xf9ead752 @@ -94526,10 +94563,10 @@ member { offset: 64 } member { - id: 0xc4ad132d + id: 0xc4ad1767 name: "handler_token" type_id: 0x18bd6530 - offset: 256 + offset: 64 } member { id: 0xef0accef @@ -99466,12 +99503,6 @@ member { type_id: 0x6720d32f offset: 6080 } -member { - id: 0xcc48029e - name: "id" - type_id: 0x6720d32f - offset: 1152 -} member { id: 0xcc480580 name: "id" @@ -99520,6 +99551,12 @@ member { type_id: 0x6720d32f offset: 640 } +member { + id: 0xcc480a3f + name: "id" + type_id: 0x6720d32f + offset: 1280 +} member { id: 0xcc480a8f name: "id" @@ -103208,10 +103245,10 @@ member { offset: 352 } member { - id: 0xd568c61a + id: 0xd568c3b9 name: "initialized" type_id: 0x6720d32f - offset: 1408 + offset: 1472 } member { id: 0xd0dc328d @@ -105105,16 +105142,16 @@ member { offset: 320 } member { - id: 0x32791e8c + id: 0x32791b09 name: "iommu_data" type_id: 0x18bd6530 - offset: 960 + offset: 1088 } member { - id: 0x9849301c + id: 0x984939df name: "iommu_data_release" type_id: 0x0f3dfb90 - offset: 1024 + offset: 1152 } member { id: 0xb2de3315 @@ -105146,6 +105183,12 @@ member { type_id: 0x3eed77c0 offset: 1280 } +member { + id: 0x90810ddc + name: "iopf_handler" + type_id: 0x0ca205d3 + offset: 448 +} member { id: 0x3ff87014 name: "iopf_param" @@ -105255,16 +105298,16 @@ member { offset: 768 } member { - id: 0x9f65e18d + id: 0x9f65e3e7 name: "iotlb_sync" type_id: 0x0c55d62d - offset: 512 + offset: 576 } member { - id: 0xc1a6eb7e + id: 0xc1a6e711 name: "iotlb_sync_map" type_id: 0x0c6351ef - offset: 448 + offset: 512 } member { id: 0x61cf61d8 @@ -105323,10 +105366,10 @@ member { type_id: 0xedf277ba } member { - id: 0x78c9acb1 + id: 0x78c9a63b name: "iova_cookie" type_id: 0x1826c2b2 - offset: 512 + offset: 384 } member { id: 0xaac1924b @@ -105339,10 +105382,10 @@ member { type_id: 0xf313e71a } member { - id: 0x80f51b65 + id: 0x80f5146e name: "iova_to_phys" type_id: 0x08f34b70 - offset: 576 + offset: 640 } member { id: 0x80f69829 @@ -107678,10 +107721,10 @@ member { type_id: 0x0a33316a } member { - id: 0x2ba08730 + id: 0x2ba0874e name: "iter" type_id: 0xc24d58cd - offset: 16192 + offset: 18048 } member { id: 0x07a7ec69 @@ -108195,28 +108238,28 @@ member { offset: 232 } member { - id: 0x4d9c8dbd + id: 0x4d9c8008 name: "kcompactd" type_id: 0x1d19a9d5 - offset: 41216 + offset: 54144 } member { - id: 0x448359b4 + id: 0x44835dbf name: "kcompactd_highest_zoneidx" type_id: 0x0b0164a7 - offset: 40960 + offset: 53888 } member { - id: 0xc6101b04 + id: 0xc6101c24 name: "kcompactd_max_order" type_id: 0x6720d32f - offset: 40928 + offset: 53856 } member { - id: 0xda079379 + id: 0xda0793ce name: "kcompactd_wait" type_id: 0x03913382 - offset: 41024 + offset: 53952 } member { id: 0xdbfaccd7 @@ -109409,40 +109452,40 @@ member { offset: 832 } member { - id: 0xfe0f3c95 + id: 0xfe0f3c45 name: "kswapd" type_id: 0x1d19a9d5 - offset: 40768 + offset: 53696 } member { - id: 0x678d6a4e + id: 0x678d6b11 name: "kswapd_failures" type_id: 0x6720d32f - offset: 40896 + offset: 53824 } member { - id: 0x053ab8bf + id: 0x053ab64c name: "kswapd_highest_zoneidx" type_id: 0x0b0164a7 - offset: 40864 + offset: 53792 } member { - id: 0xff6f5c14 + id: 0xff6f5b56 name: "kswapd_lock" type_id: 0xa7c362b0 - offset: 40512 + offset: 53440 } member { - id: 0x34381214 + id: 0x343819a4 name: "kswapd_order" type_id: 0x6720d32f - offset: 40832 + offset: 53760 } member { - id: 0x912812a4 + id: 0x91281e96 name: "kswapd_wait" type_id: 0x03913382 - offset: 39232 + offset: 52160 } member { id: 0x1851434c @@ -113239,10 +113282,10 @@ member { offset: 256 } member { - id: 0x7c080060 + id: 0x7c080a44 name: "list" type_id: 0xdb2fb9a5 - offset: 7552 + offset: 9088 } member { id: 0x7c358f2e @@ -115451,9 +115494,9 @@ member { offset: 45416 } member { - id: 0x8bd8e3c1 + id: 0x8b466b27 name: "lowmem_reserve" - type_id: 0x2dc6725b + type_id: 0xb34e9475 offset: 384 } member { @@ -115628,10 +115671,10 @@ member { offset: 2496 } member { - id: 0xafeb8287 + id: 0xaf7502e7 name: "lru_zone_size" - type_id: 0x2b8da8d0 - offset: 15232 + type_id: 0xb5054efe + offset: 16768 } member { id: 0x9af97a5e @@ -115650,16 +115693,16 @@ member { type_id: 0xce2040d6 } member { - id: 0xd9ceffd4 + id: 0xd9cefb11 name: "lruvec_stats" type_id: 0xc634f4ac - offset: 9856 + offset: 11392 } member { - id: 0xa2a9e92c + id: 0xa2a9ea87 name: "lruvec_stats_percpu" type_id: 0x2ced2dfa - offset: 9792 + offset: 11328 } member { id: 0xb1654cb6 @@ -116380,10 +116423,10 @@ member { offset: 4352 } member { - id: 0xe083d44e + id: 0xe083d61b name: "managed_pages" type_id: 0xb02b353a - offset: 896 + offset: 960 } member { id: 0x4a203a8a @@ -116532,10 +116575,10 @@ member { type_id: 0x39dda017 } member { - id: 0x8dd95964 + id: 0x8dd9586f name: "map" type_id: 0x2f2111b8 - offset: 128 + offset: 192 } member { id: 0x8dda0968 @@ -116931,10 +116974,10 @@ member { offset: 64 } member { - id: 0xa60fa22c + id: 0xa60faa4e name: "map_pages" type_id: 0x2f211810 - offset: 192 + offset: 256 } member { id: 0xa61995ce @@ -119097,6 +119140,18 @@ member { type_id: 0xb3e7bac9 offset: 4840 } +member { + id: 0xe612b3bd + name: "max_pasids" + type_id: 0xc9082b19 + offset: 576 +} +member { + id: 0xe612bd08 + name: "max_pasids" + type_id: 0xc9082b19 + offset: 320 +} member { id: 0xc86da341 name: "max_payld_sz" @@ -121317,18 +121372,18 @@ member { name: "membership" type_id: 0xee699492 } -member { - id: 0xc76cf048 - name: "memcg" - type_id: 0x1d5bae2a - offset: 16704 -} member { id: 0xc76cf7e3 name: "memcg" type_id: 0x1d5bae2a offset: 1216 } +member { + id: 0xc76cfbaa + name: "memcg" + type_id: 0x1d5bae2a + offset: 18560 +} member { id: 0xc76cfce5 name: "memcg" @@ -121378,10 +121433,10 @@ member { offset: 21312 } member { - id: 0x5b9e497b + id: 0x5b9e4c27 name: "memcg_lru" type_id: 0xe524f4fb - offset: 52800 + offset: 67904 } member { id: 0x14a5c902 @@ -123223,16 +123278,16 @@ member { offset: 128 } member { - id: 0x0abfe2c6 + id: 0x0abfe44a name: "mm_state" type_id: 0xeb51a15e - offset: 8768 + offset: 10304 } member { - id: 0xa668ba25 + id: 0xa668b012 name: "mm_stats" type_id: 0xb8696763 - offset: 960 + offset: 1216 } member { id: 0x22548d82 @@ -123247,10 +123302,10 @@ member { offset: 64 } member { - id: 0xa8928c03 + id: 0xa89285f1 name: "mm_walk" type_id: 0x8588b58b - offset: 51584 + offset: 66432 } member { id: 0x87d4d5fe @@ -126977,12 +127032,6 @@ member { type_id: 0x01ef5f77 offset: 800 } -member { - id: 0x0ddfe2cd - name: "name" - type_id: 0x0483e6f8 - offset: 1088 -} member { id: 0x0ddfe679 name: "name" @@ -127025,6 +127074,12 @@ member { type_id: 0x0483e6f8 offset: 2432 } +member { + id: 0x0ddfed7f + name: "name" + type_id: 0x0483e6f8 + offset: 1216 +} member { id: 0x0ddfef10 name: "name" @@ -127114,6 +127169,12 @@ member { type_id: 0x3e10b518 offset: 640 } +member { + id: 0x0de57a95 + name: "name" + type_id: 0x3e10b518 + offset: 1280 +} member { id: 0x0de57b2f name: "name" @@ -130810,18 +130871,18 @@ member { type_id: 0x5d8155a5 offset: 64 } -member { - id: 0xf67bc5c4 - name: "node_id" - type_id: 0x6720d32f - offset: 39168 -} member { id: 0xf67bca3c name: "node_id" type_id: 0x6720d32f offset: 3904 } +member { + id: 0xf67bcc6a + name: "node_id" + type_id: 0x6720d32f + offset: 52096 +} member { id: 0xdeaef990 name: "node_idx" @@ -130852,39 +130913,39 @@ member { offset: 192 } member { - id: 0x0cee4941 + id: 0x0cee492b name: "node_present_pages" type_id: 0x33756485 - offset: 39040 + offset: 51968 } member { - id: 0x74f989f8 + id: 0x74f980f4 name: "node_size_lock" type_id: 0xf313e71a - offset: 38944 + offset: 51872 } member { - id: 0x7a542517 + id: 0x7a54208c name: "node_spanned_pages" type_id: 0x33756485 - offset: 39104 + offset: 52032 } member { - id: 0x232160a0 + id: 0x23216bf8 name: "node_start_pfn" type_id: 0x33756485 - offset: 38976 + offset: 51904 } member { - id: 0xc0894f50 + id: 0xc08945c3 name: "node_zonelists" type_id: 0xa1dc2b4a - offset: 38400 + offset: 51200 } member { - id: 0x65334eda + id: 0x65adc63c name: "node_zones" - type_id: 0x1236f51c + type_id: 0x8cbe1332 } member { id: 0xd988c495 @@ -132029,10 +132090,10 @@ member { offset: 22912 } member { - id: 0xc63cfa37 + id: 0xc63cf6c9 name: "nr_isolate_pageblock" type_id: 0x33756485 - offset: 1280 + offset: 1344 } member { id: 0x4812d2a9 @@ -132166,16 +132227,16 @@ member { offset: 8192 } member { - id: 0xe3151f4d + id: 0xe31cf7c3 name: "nr_pages" - type_id: 0x97d79f3d + type_id: 0x9e3f115f offset: 192 } member { - id: 0xe3177237 + id: 0xe31e99af name: "nr_pages" - type_id: 0x95bb2407 - offset: 3520 + type_id: 0x9c53aa65 + offset: 4544 } member { id: 0xe376f573 @@ -132327,10 +132388,10 @@ member { offset: 576 } member { - id: 0x14baa11a + id: 0x14baa8ed name: "nr_reclaim_start" type_id: 0x33756485 - offset: 40448 + offset: 53376 } member { id: 0xddd1c1b9 @@ -132734,16 +132795,16 @@ member { type_id: 0x4585663f } member { - id: 0x916f6c35 + id: 0x916f6aa9 name: "nr_writeback_throttled" type_id: 0x74d29cf1 - offset: 40384 + offset: 53312 } member { - id: 0x429466a2 + id: 0x429467d6 name: "nr_zones" type_id: 0x6720d32f - offset: 38912 + offset: 51840 } member { id: 0x42b6c0d0 @@ -136114,10 +136175,10 @@ member { offset: 10112 } member { - id: 0xe0a290ab + id: 0xe0a294e6 name: "on_tree" type_id: 0x6d7f5ff6 - offset: 16640 + offset: 18496 } member { id: 0xcd1e25eb @@ -138545,12 +138606,6 @@ member { type_id: 0x18bd6530 offset: 960 } -member { - id: 0x4a85c151 - name: "owner" - type_id: 0x18bd6530 - offset: 1600 -} member { id: 0x4a85c59f name: "owner" @@ -138569,6 +138624,12 @@ member { type_id: 0x18bd6530 offset: 320 } +member { + id: 0x4a85cfcc + name: "owner" + type_id: 0x18bd6530 + offset: 1728 +} member { id: 0x4a8e4e2f name: "owner" @@ -138771,10 +138832,10 @@ member { offset: 608 } member { - id: 0x9241a235 + id: 0x9241abfe name: "owner_cnt" type_id: 0x4585663f - offset: 1536 + offset: 1664 } member { id: 0xfbf14767 @@ -139709,10 +139770,10 @@ member { offset: 128 } member { - id: 0x640df8b0 + id: 0x640df02b name: "page_response" type_id: 0x2df82d01 - offset: 896 + offset: 704 } member { id: 0x1758323c @@ -139953,16 +140014,16 @@ member { offset: 3008 } member { - id: 0xf0985884 + id: 0xf098512e name: "pageset_batch" type_id: 0x6720d32f - offset: 800 + offset: 864 } member { - id: 0x0604b681 + id: 0x0604bd95 name: "pageset_high" type_id: 0x6720d32f - offset: 768 + offset: 832 } member { id: 0xc3f2c304 @@ -140972,6 +141033,12 @@ member { type_id: 0xe62ebf07 offset: 64 } +member { + id: 0x0ff1fb1c + name: "pasid_array" + type_id: 0x80c20070 + offset: 704 +} member { id: 0x5597c8b2 name: "pasid_enabled" @@ -142383,22 +142450,22 @@ member { offset: 2112 } member { - id: 0xd8353b34 + id: 0xd8353a89 name: "per_cpu_nodestats" type_id: 0x10a757c8 - offset: 54272 + offset: 69632 } member { - id: 0x35e57a15 + id: 0x35e57e51 name: "per_cpu_pageset" type_id: 0x1321a5b2 - offset: 640 + offset: 704 } member { - id: 0xf05013fc + id: 0xf050196f name: "per_cpu_zonestats" type_id: 0x2f5f8053 - offset: 704 + offset: 768 } member { id: 0xd61b14f9 @@ -142911,10 +142978,10 @@ member { offset: 128 } member { - id: 0x1870e86e + id: 0x1870ebaa name: "pfmemalloc_wait" type_id: 0x03913382 - offset: 39424 + offset: 52352 } member { id: 0xeb463452 @@ -142999,10 +143066,10 @@ member { offset: 64 } member { - id: 0x2d2728a8 + id: 0x2d272330 name: "pgdat" type_id: 0x03038214 - offset: 9728 + offset: 11264 } member { id: 0xdd74def2 @@ -143063,10 +143130,10 @@ member { offset: 64 } member { - id: 0xa5569933 + id: 0xa5569cb6 name: "pgsize_bitmap" type_id: 0x33756485 - offset: 1088 + offset: 960 } member { id: 0xa5569d87 @@ -147651,16 +147718,16 @@ member { offset: 2576 } member { - id: 0x67e4f1be + id: 0x67e4f214 name: "present_early_pages" type_id: 0x33756485 - offset: 1088 + offset: 1152 } member { - id: 0xa43d0ee0 + id: 0xa43d0489 name: "present_pages" type_id: 0x33756485 - offset: 1024 + offset: 1088 } member { id: 0x22e059b7 @@ -148981,10 +149048,10 @@ member { type_id: 0x043ce534 } member { - id: 0xb8416c44 + id: 0xb8416178 name: "proactive_compact_trigger" type_id: 0x6d7f5ff6 - offset: 41280 + offset: 54208 } member { id: 0xb124af35 @@ -150280,10 +150347,10 @@ member { offset: 272 } member { - id: 0x271bc54a + id: 0x271bcf4c name: "protected" type_id: 0xaf023c73 - offset: 6080 + offset: 7616 } member { id: 0x7efa09f3 @@ -155307,10 +155374,10 @@ member { offset: 17920 } member { - id: 0xcae14a8f + id: 0xcae142e2 name: "reclaim_wait" type_id: 0x8ca95ffa - offset: 39616 + offset: 52544 } member { id: 0x2f1a436f @@ -155791,10 +155858,10 @@ member { offset: 672 } member { - id: 0x2ee40ee4 + id: 0x2ee403bd name: "refaulted" type_id: 0xa4e7cb57 - offset: 6976 + offset: 8512 } member { id: 0x8efe1e4f @@ -157841,6 +157908,12 @@ member { type_id: 0x0e9068a5 offset: 256 } +member { + id: 0x0104be90 + name: "remove_dev_pasid" + type_id: 0x0e8de3e3 + offset: 832 +} member { id: 0xcf681777 name: "remove_from" @@ -167492,10 +167565,10 @@ member { offset: 192 } member { - id: 0x69bd7ea5 + id: 0x69bd734e name: "seg" type_id: 0x295c7202 - offset: 7504 + offset: 9040 } member { id: 0x99f9908c @@ -169120,6 +169193,12 @@ member { type_id: 0x0c86f61b offset: 320 } +member { + id: 0xdfdf0c6c + name: "set_dev_pasid" + type_id: 0x2f1af790 + offset: 128 +} member { id: 0xfedeee7c name: "set_diag" @@ -169668,10 +169747,10 @@ member { offset: 448 } member { - id: 0x3f6d9579 + id: 0x3f6d9e6d name: "set_pgtable_quirks" type_id: 0x2f2a3e16 - offset: 768 + offset: 832 } member { id: 0xabec5550 @@ -171549,10 +171628,10 @@ member { offset: 192 } member { - id: 0x8f88ef88 + id: 0x8f88ee53 name: "shrinker_info" type_id: 0x0b57ce4e - offset: 16320 + offset: 18176 } member { id: 0x89a152e5 @@ -174878,10 +174957,10 @@ member { offset: 192 } member { - id: 0xfb3e8cb0 + id: 0xfb3e84c0 name: "span_seqlock" type_id: 0x000ff4a8 - offset: 1344 + offset: 1408 } member { id: 0xaaa96e27 @@ -174890,10 +174969,10 @@ member { offset: 2304 } member { - id: 0x80fef2ae + id: 0x80fefd42 name: "spanned_pages" type_id: 0x33756485 - offset: 960 + offset: 1024 } member { id: 0x420573cb @@ -180936,24 +181015,6 @@ member { type_id: 0xc9082b19 offset: 320 } -member { - id: 0x401c5d0d - name: "sva_bind" - type_id: 0x27c2c08e - offset: 704 -} -member { - id: 0xe6565c7c - name: "sva_get_pasid" - type_id: 0x19b548a2 - offset: 832 -} -member { - id: 0x85a18c64 - name: "sva_unbind" - type_id: 0x0ced561e - offset: 768 -} member { id: 0x90e561c8 name: "svalue" @@ -183724,9 +183785,9 @@ member { offset: 64 } member { - id: 0xf991bbfd + id: 0xf991fe78 name: "task_work_cb" - type_id: 0x0e350ba0 + type_id: 0x0e708ec6 } member { id: 0x26db2fbf @@ -187028,10 +187089,10 @@ member { offset: 256 } member { - id: 0xb74e462b + id: 0xb74e408a name: "totalreserve_pages" type_id: 0x33756485 - offset: 41344 + offset: 54272 } member { id: 0x54a83197 @@ -187728,10 +187789,10 @@ member { type_id: 0x3205ba2f } member { - id: 0x22d40e84 + id: 0x22d40a98 name: "tree_node" type_id: 0x3205ba2f - offset: 16384 + offset: 18240 } member { id: 0xe43a5cb4 @@ -192789,10 +192850,10 @@ member { offset: 128 } member { - id: 0xfeda6de6 + id: 0xfeda6a8a name: "unmap" type_id: 0x2d8abd6e - offset: 256 + offset: 320 } member { id: 0xfeec1f7d @@ -192838,10 +192899,10 @@ member { offset: 192 } member { - id: 0xd12a6f2d + id: 0xd12a6978 name: "unmap_pages" type_id: 0x2d8a4341 - offset: 320 + offset: 384 } member { id: 0x128b36d4 @@ -193774,10 +193835,10 @@ member { type_id: 0xe62ebf07 } member { - id: 0x46bd9b04 + id: 0x46bd927f name: "usage_in_excess" type_id: 0x33756485 - offset: 16576 + offset: 18432 } member { id: 0xdaf5a26c @@ -194967,6 +195028,12 @@ member { name: "users" type_id: 0x6720d32f } +member { + id: 0x85cad62f + name: "users" + type_id: 0x6720d32f + offset: 64 +} member { id: 0x85e876e9 name: "users" @@ -198335,10 +198402,10 @@ member { type_id: 0x33756485 } member { - id: 0xca8e5cc0 + id: 0xca8e5735 name: "vm_stat" type_id: 0xfc37fa4b - offset: 54336 + offset: 69696 } member { id: 0xca969630 @@ -203058,16 +203125,16 @@ member { offset: 64 } member { - id: 0xde15fda7 + id: 0xde15f2ac name: "zone_pgdat" type_id: 0x03038214 - offset: 576 + offset: 640 } member { - id: 0x22a286b3 + id: 0x22a28faf name: "zone_start_pfn" type_id: 0x33756485 - offset: 832 + offset: 896 } member { id: 0xb5d14adb @@ -204887,6 +204954,15 @@ struct_union { member_id: 0xca4d11a9 } } +struct_union { + id: 0x14444314 + kind: STRUCT + definition { + bytesize: 16 + member_id: 0x3025d5eb + member_id: 0x85cad62f + } +} struct_union { id: 0x148546d4 kind: STRUCT @@ -205914,6 +205990,15 @@ struct_union { member_id: 0x97dfb679 } } +struct_union { + id: 0x262ff409 + kind: STRUCT + definition { + bytesize: 16 + member_id: 0xf9ca6e5d + member_id: 0xc4ad1767 + } +} struct_union { id: 0x266a8cae kind: STRUCT @@ -208691,6 +208776,15 @@ struct_union { member_id: 0xc4d7b9f1 } } +struct_union { + id: 0x5c637323 + kind: UNION + definition { + bytesize: 16 + member_id: 0x2a406106 + member_id: 0x26da8cc1 + } +} struct_union { id: 0x5cac5fcc kind: UNION @@ -209478,11 +209572,11 @@ struct_union { } } struct_union { - id: 0x6888a784 + id: 0x6888b6e5 kind: UNION definition { bytesize: 8 - member_id: 0xf991bbfd + member_id: 0xf991fe78 member_id: 0x5852e92d } } @@ -218668,7 +218762,7 @@ struct_union { member_id: 0xd4f1b234 member_id: 0xd6b41596 member_id: 0xa3ee3a2f - member_id: 0xa053fb2c + member_id: 0xa070bd00 } } struct_union { @@ -218775,13 +218869,14 @@ struct_union { kind: STRUCT name: "dev_iommu" definition { - bytesize: 72 + bytesize: 80 member_id: 0x2d4b3c00 member_id: 0x5a9c4097 member_id: 0x3ff87014 member_id: 0xc67a54fe member_id: 0xb2e283d0 member_id: 0x591193b9 + member_id: 0xe612b3bd } } struct_union { @@ -225303,7 +225398,7 @@ struct_union { kind: STRUCT name: "fscrypt_operations" definition { - bytesize: 72 + bytesize: 104 member_id: 0x2d2d0138 member_id: 0xec1b817e member_id: 0xf77bde4b @@ -225313,6 +225408,10 @@ struct_union { member_id: 0xe911a8e8 member_id: 0x8e932e8e member_id: 0x2ca4b2ea + member_id: 0x2d081c40 + member_id: 0x63760fdb + member_id: 0xac894b6b + member_id: 0xe0f63ce5 } } struct_union { @@ -231273,7 +231372,7 @@ struct_union { bytesize: 64 member_id: 0xbf9f3e0b member_id: 0x1a29c57b - member_id: 0x39e9bc27 + member_id: 0x39e9b87f member_id: 0x2fa36869 member_id: 0x2da18f51 member_id: 0xafb272a1 @@ -231464,11 +231563,12 @@ struct_union { kind: STRUCT name: "iommu_device" definition { - bytesize: 40 + bytesize: 48 member_id: 0x7c00ef52 member_id: 0xafb5e416 member_id: 0x6e4d8897 member_id: 0xce3bba18 + member_id: 0xe612bd08 } } struct_union { @@ -231489,14 +231589,15 @@ struct_union { kind: STRUCT name: "iommu_domain" definition { - bytesize: 72 + bytesize: 88 member_id: 0x5c135018 member_id: 0xafbb0d65 member_id: 0xa5569d87 - member_id: 0xf9ca6694 - member_id: 0xc4ad132d - member_id: 0x3a570591 - member_id: 0x78c9acb1 + member_id: 0x3a570a9f + member_id: 0x78c9a63b + member_id: 0x90810ddc + member_id: 0x1e5ce302 + member_id: 0x34d349be } } struct_union { @@ -231515,21 +231616,22 @@ struct_union { kind: STRUCT name: "iommu_domain_ops" definition { - bytesize: 112 + bytesize: 120 member_id: 0xce6fa034 member_id: 0xa3103fbf - member_id: 0x8dd95964 - member_id: 0xa60fa22c - member_id: 0xfeda6de6 - member_id: 0xd12a6f2d - member_id: 0xba50d692 - member_id: 0xc1a6eb7e - member_id: 0x9f65e18d - member_id: 0x80f51b65 - member_id: 0x5a2828f5 - member_id: 0xe86f5472 - member_id: 0x3f6d9579 - member_id: 0xfeae540e + member_id: 0xdfdf0c6c + member_id: 0x8dd9586f + member_id: 0xa60faa4e + member_id: 0xfeda6a8a + member_id: 0xd12a6978 + member_id: 0xba50d077 + member_id: 0xc1a6e711 + member_id: 0x9f65e3e7 + member_id: 0x80f5146e + member_id: 0x5a282cb1 + member_id: 0xe86f5ee1 + member_id: 0x3f6d9e6d + member_id: 0xfeae5d12 } } struct_union { @@ -231622,21 +231724,22 @@ struct_union { kind: STRUCT name: "iommu_group" definition { - bytesize: 208 + bytesize: 224 member_id: 0x452b206c member_id: 0xeb0d4018 member_id: 0x33ed5daa - member_id: 0xad89813f - member_id: 0x32791e8c - member_id: 0x9849301c - member_id: 0x0ddfe2cd - member_id: 0xcc48029e - member_id: 0xe1eb99a3 - member_id: 0x48c48bb2 - member_id: 0xa72fee25 - member_id: 0x4d8782cf - member_id: 0x9241a235 - member_id: 0x4a85c151 + member_id: 0x0ff1fb1c + member_id: 0xad8980b8 + member_id: 0x32791b09 + member_id: 0x984939df + member_id: 0x0ddfed7f + member_id: 0xcc480a3f + member_id: 0xe1eb91e4 + member_id: 0x48c48f3c + member_id: 0xa72fe3f6 + member_id: 0x4d878adb + member_id: 0x9241abfe + member_id: 0x4a85cfcc } } struct_union { @@ -231657,7 +231760,7 @@ struct_union { kind: STRUCT name: "iommu_ops" definition { - bytesize: 152 + bytesize: 136 member_id: 0x3773a0c0 member_id: 0x73013631 member_id: 0xe5e1630d @@ -231669,14 +231772,12 @@ struct_union { member_id: 0xcea8232d member_id: 0xab76d4fd member_id: 0x0b7248bd - member_id: 0x401c5d0d - member_id: 0x85a18c64 - member_id: 0xe6565c7c - member_id: 0x640df8b0 - member_id: 0xd2bea8f2 - member_id: 0x91bbbf6c - member_id: 0xa5569933 - member_id: 0x4a965c8c + member_id: 0x640df02b + member_id: 0xd2bea8af + member_id: 0x0104be90 + member_id: 0x91bbb2d5 + member_id: 0xa5569cb6 + member_id: 0x4a96554f } } struct_union { @@ -231707,15 +231808,6 @@ struct_union { member_id: 0xfeac8375 } } -struct_union { - id: 0xbc9e11d7 - kind: STRUCT - name: "iommu_sva" - definition { - bytesize: 8 - member_id: 0xce3bbab3 - } -} struct_union { id: 0x5050c787 kind: STRUCT @@ -235327,21 +235419,21 @@ struct_union { kind: STRUCT name: "lru_gen_folio" definition { - bytesize: 960 + bytesize: 1152 member_id: 0x5ac83b71 member_id: 0x8ae2ad7a member_id: 0x5ae26986 - member_id: 0x53ee1fea - member_id: 0xe3177237 - member_id: 0x83570c23 - member_id: 0x78e6f66b - member_id: 0x271bc54a - member_id: 0x9cd38c7d - member_id: 0x2ee40ee4 - member_id: 0x3a2d3aaa - member_id: 0xa9f411fa - member_id: 0x69bd7ea5 - member_id: 0x7c080060 + member_id: 0x53e7f764 + member_id: 0xe31e99af + member_id: 0x83570183 + member_id: 0x78e6fa74 + member_id: 0x271bcf4c + member_id: 0x9cd3894a + member_id: 0x2ee403bd + member_id: 0x3a2d3543 + member_id: 0xa9f41a7b + member_id: 0x69bd734e + member_id: 0x7c080a44 } } struct_union { @@ -235386,15 +235478,15 @@ struct_union { kind: STRUCT name: "lru_gen_mm_walk" definition { - bytesize: 152 + bytesize: 184 member_id: 0x3b7b9448 member_id: 0x5ac83f90 member_id: 0x7b6ac82c - member_id: 0xe3151f4d - member_id: 0xa668ba25 - member_id: 0xa5be4c17 - member_id: 0x297d1ec9 - member_id: 0x056fd9e7 + member_id: 0xe31cf7c3 + member_id: 0xa668b012 + member_id: 0xa5be4038 + member_id: 0x297d1e7e + member_id: 0x056fdf60 } } struct_union { @@ -235402,7 +235494,7 @@ struct_union { kind: STRUCT name: "lruvec" definition { - bytesize: 1224 + bytesize: 1416 member_id: 0x56c4b4af member_id: 0x50d1f939 member_id: 0xcabb31d9 @@ -235411,8 +235503,8 @@ struct_union { member_id: 0x8efe1e4f member_id: 0x2d5bf625 member_id: 0x9af97a5e - member_id: 0x0abfe2c6 - member_id: 0x2d2728a8 + member_id: 0x0abfe44a + member_id: 0x2d272330 } } struct_union { @@ -236178,17 +236270,17 @@ struct_union { kind: STRUCT name: "mem_cgroup_per_node" definition { - bytesize: 2096 + bytesize: 2328 member_id: 0x3b8cac21 - member_id: 0xa2a9e92c - member_id: 0xd9ceffd4 - member_id: 0xafeb8287 - member_id: 0x2ba08730 - member_id: 0x8f88ef88 - member_id: 0x22d40e84 - member_id: 0x46bd9b04 - member_id: 0xe0a290ab - member_id: 0xc76cf048 + member_id: 0xa2a9ea87 + member_id: 0xd9cefb11 + member_id: 0xaf7502e7 + member_id: 0x2ba0874e + member_id: 0x8f88ee53 + member_id: 0x22d40a98 + member_id: 0x46bd927f + member_id: 0xe0a294e6 + member_id: 0xc76cfbaa } } struct_union { @@ -241651,40 +241743,40 @@ struct_union { kind: STRUCT name: "pglist_data" definition { - bytesize: 7168 - member_id: 0x65334eda - member_id: 0xc0894f50 - member_id: 0x429466a2 - member_id: 0x74f989f8 - member_id: 0x232160a0 - member_id: 0x0cee4941 - member_id: 0x7a542517 - member_id: 0xf67bc5c4 - member_id: 0x912812a4 - member_id: 0x1870e86e - member_id: 0xcae14a8f - member_id: 0x916f6c35 - member_id: 0x14baa11a - member_id: 0xff6f5c14 - member_id: 0xfe0f3c95 - member_id: 0x34381214 - member_id: 0x053ab8bf - member_id: 0x678d6a4e - member_id: 0xc6101b04 - member_id: 0x448359b4 - member_id: 0xda079379 - member_id: 0x4d9c8dbd - member_id: 0xb8416c44 - member_id: 0xb74e462b - member_id: 0xcb455ab7 - member_id: 0x5cbd60f7 - member_id: 0x5cfa9db5 - member_id: 0x2d5bf025 - member_id: 0xa8928c03 - member_id: 0x5b9e497b - member_id: 0x1aacfea1 - member_id: 0xd8353b34 - member_id: 0xca8e5cc0 + bytesize: 9088 + member_id: 0x65adc63c + member_id: 0xc08945c3 + member_id: 0x429467d6 + member_id: 0x74f980f4 + member_id: 0x23216bf8 + member_id: 0x0cee492b + member_id: 0x7a54208c + member_id: 0xf67bcc6a + member_id: 0x91281e96 + member_id: 0x1870ebaa + member_id: 0xcae142e2 + member_id: 0x916f6aa9 + member_id: 0x14baa8ed + member_id: 0xff6f5b56 + member_id: 0xfe0f3c45 + member_id: 0x343819a4 + member_id: 0x053ab64c + member_id: 0x678d6b11 + member_id: 0xc6101c24 + member_id: 0x44835dbf + member_id: 0xda0793ce + member_id: 0x4d9c8008 + member_id: 0xb8416178 + member_id: 0xb74e408a + member_id: 0xcb455c50 + member_id: 0x5cbd6610 + member_id: 0x5cfa9ff9 + member_id: 0x2d5bf4c7 + member_id: 0xa89285f1 + member_id: 0x5b9e4c27 + member_id: 0x1aacff1c + member_id: 0xd8353a89 + member_id: 0xca8e5735 } } struct_union { @@ -261600,8 +261692,8 @@ struct_union { kind: STRUCT name: "vm_event_state" definition { - bytesize: 728 - member_id: 0x0a27a0a6 + bytesize: 752 + member_id: 0x0ab8cdfd } } struct_union { @@ -263851,22 +263943,22 @@ struct_union { member_id: 0x07981254 member_id: 0x9b453c32 member_id: 0x0a3ca227 - member_id: 0x8bd8e3c1 - member_id: 0xde15fda7 - member_id: 0x35e57a15 - member_id: 0xf05013fc - member_id: 0x0604b681 - member_id: 0xf0985884 - member_id: 0x22a286b3 - member_id: 0xe083d44e - member_id: 0x80fef2ae - member_id: 0xa43d0ee0 - member_id: 0x67e4f1be - member_id: 0xd226c4c9 - member_id: 0x0de57e2c - member_id: 0xc63cfa37 - member_id: 0xfb3e8cb0 - member_id: 0xd568c61a + member_id: 0x8b466b27 + member_id: 0xde15f2ac + member_id: 0x35e57e51 + member_id: 0xf050196f + member_id: 0x0604bd95 + member_id: 0xf098512e + member_id: 0x22a28faf + member_id: 0xe083d61b + member_id: 0x80fefd42 + member_id: 0xa43d0489 + member_id: 0x67e4f214 + member_id: 0xd226c8d1 + member_id: 0x0de57a95 + member_id: 0xc63cf6c9 + member_id: 0xfb3e84c0 + member_id: 0xd568c3b9 member_id: 0xcb45579f member_id: 0xfbc061e4 member_id: 0x2d5bf586 @@ -263892,8 +263984,8 @@ struct_union { kind: STRUCT name: "zonelist" definition { - bytesize: 64 - member_id: 0xf5446657 + bytesize: 80 + member_id: 0xf521d76a } } struct_union { @@ -272200,6 +272292,24 @@ enumeration { } } } +enumeration { + id: 0xa1ef211c + name: "iommu_page_response_code" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "IOMMU_PAGE_RESP_SUCCESS" + } + enumerator { + name: "IOMMU_PAGE_RESP_INVALID" + value: 1 + } + enumerator { + name: "IOMMU_PAGE_RESP_FAILURE" + value: 2 + } + } +} enumeration { id: 0xf0cb20f0 name: "iommu_resv_type" @@ -282224,9 +282334,13 @@ enumeration { value: 2 } enumerator { - name: "__MAX_NR_ZONES" + name: "ZONE_DEVICE" value: 3 } + enumerator { + name: "__MAX_NR_ZONES" + value: 4 + } } } enumeration { @@ -283200,6 +283314,12 @@ function { parameter_id: 0x0258f96e parameter_id: 0x1fc34bc2 } +function { + id: 0x10776911 + return_type_id: 0x48b5725f + parameter_id: 0x0258f96e + parameter_id: 0x1e41b656 +} function { id: 0x107966af return_type_id: 0x48b5725f @@ -284599,11 +284719,6 @@ function { return_type_id: 0x48b5725f parameter_id: 0x0858434c } -function { - id: 0x1294c81d - return_type_id: 0x48b5725f - parameter_id: 0x08326638 -} function { id: 0x129c1f38 return_type_id: 0x48b5725f @@ -285172,6 +285287,12 @@ function { parameter_id: 0x09427c40 parameter_id: 0x6d7f5ff6 } +function { + id: 0x1382dd85 + return_type_id: 0x48b5725f + parameter_id: 0x08326638 + parameter_id: 0x4585663f +} function { id: 0x1389ce9e return_type_id: 0x48b5725f @@ -285658,6 +285779,11 @@ function { parameter_id: 0x11b32828 parameter_id: 0x32a623d7 } +function { + id: 0x143ecb11 + return_type_id: 0x48b5725f + parameter_id: 0x129a6a0a +} function { id: 0x1440a366 return_type_id: 0xd5cc9c9a @@ -288162,6 +288288,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x2170d06d } +function { + id: 0x18c8f1d0 + return_type_id: 0xa1ef211c + parameter_id: 0x16886f92 + parameter_id: 0x18bd6530 +} function { id: 0x18cc928e return_type_id: 0x48b5725f @@ -288623,11 +288755,6 @@ function { return_type_id: 0x48b5725f parameter_id: 0x25b73daa } -function { - id: 0x19f5bee7 - return_type_id: 0x48b5725f - parameter_id: 0x25b7bdd2 -} function { id: 0x19fe25be return_type_id: 0x48b5725f @@ -292116,12 +292243,6 @@ function { return_type_id: 0x48b5725f parameter_id: 0x3b12c8e0 } -function { - id: 0x1e603d44 - return_type_id: 0x48b5725f - parameter_id: 0x3a8e2ac6 - parameter_id: 0x16f99983 -} function { id: 0x1e626071 return_type_id: 0x48b5725f @@ -295065,11 +295186,6 @@ function { parameter_id: 0x1e820193 parameter_id: 0x6d7f5ff6 } -function { - id: 0x4c95c416 - return_type_id: 0xc9082b19 - parameter_id: 0x25b7bdd2 -} function { id: 0x4cd21214 return_type_id: 0x3d435d11 @@ -295405,6 +295521,12 @@ function { parameter_id: 0x33756485 parameter_id: 0x33756485 } +function { + id: 0x53aca83f + return_type_id: 0x18bd6530 + parameter_id: 0x129a6a0a + parameter_id: 0x6720d32f +} function { id: 0x53d7cb1d return_type_id: 0x0930c6d9 @@ -298430,12 +298552,6 @@ function { parameter_id: 0x4585663f parameter_id: 0xf435685e } -function { - id: 0x90246b11 - return_type_id: 0x6720d32f - parameter_id: 0x35d510c3 - parameter_id: 0x347303b4 -} function { id: 0x90286f13 return_type_id: 0x6720d32f @@ -302261,6 +302377,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3bb11c92 } +function { + id: 0x93788ff8 + return_type_id: 0x6720d32f + parameter_id: 0x3a8e2ac6 + parameter_id: 0x16f99983 +} function { id: 0x937ab4d8 return_type_id: 0x6720d32f @@ -304105,6 +304227,13 @@ function { parameter_id: 0x2efe8065 parameter_id: 0x0582a4cb } +function { + id: 0x962b38df + return_type_id: 0x6720d32f + parameter_id: 0x2e94a1e1 + parameter_id: 0x0258f96e + parameter_id: 0x1e41b656 +} function { id: 0x962ca8b2 return_type_id: 0x6720d32f @@ -317778,13 +317907,6 @@ function { return_type_id: 0x11c404ba parameter_id: 0xada894ab } -function { - id: 0xb54be4a7 - return_type_id: 0x25b7bdd2 - parameter_id: 0x0258f96e - parameter_id: 0x1b36c7a2 - parameter_id: 0x18bd6530 -} function { id: 0xb649ac13 return_type_id: 0x067c4b9a @@ -319769,11 +319891,12 @@ function { parameter_id: 0x32941b2b } function { - id: 0xf203b182 + id: 0xf2022d01 return_type_id: 0x6d7f5ff6 parameter_id: 0x32a623d7 parameter_id: 0x054f691a parameter_id: 0x6d7f5ff6 + parameter_id: 0x6720d32f } function { id: 0xf20dd3f1 @@ -320972,7 +321095,7 @@ elf_symbol { name: "I_BDEV" is_defined: true symbol_type: FUNCTION - crc: 0xc79e45c3 + crc: 0xbf847796 type_id: 0x2dfa71ba full_name: "I_BDEV" } @@ -320981,7 +321104,7 @@ elf_symbol { name: "__ClearPageMovable" is_defined: true symbol_type: FUNCTION - crc: 0x4cf602fa + crc: 0xd312e35b type_id: 0x11388634 full_name: "__ClearPageMovable" } @@ -320990,7 +321113,7 @@ elf_symbol { name: "__SetPageMovable" is_defined: true symbol_type: FUNCTION - crc: 0x60f5778b + crc: 0x9c92af65 type_id: 0x11e189a0 full_name: "__SetPageMovable" } @@ -321008,7 +321131,7 @@ elf_symbol { name: "___pskb_trim" is_defined: true symbol_type: FUNCTION - crc: 0x1902587b + crc: 0x44aa5fa1 type_id: 0x9dc52cf1 full_name: "___pskb_trim" } @@ -321026,7 +321149,7 @@ elf_symbol { name: "__alloc_pages" is_defined: true symbol_type: FUNCTION - crc: 0x08dfd175 + crc: 0xebd12c5a type_id: 0x80fe241d full_name: "__alloc_pages" } @@ -321053,7 +321176,7 @@ elf_symbol { name: "__alloc_skb" is_defined: true symbol_type: FUNCTION - crc: 0x0170f6ac + crc: 0x0d590b1c type_id: 0x7a21af66 full_name: "__alloc_skb" } @@ -321097,7 +321220,7 @@ elf_symbol { name: "__auxiliary_driver_register" is_defined: true symbol_type: FUNCTION - crc: 0xb79f4c6e + crc: 0x9fb5cfca type_id: 0x9939118b full_name: "__auxiliary_driver_register" } @@ -321106,7 +321229,7 @@ elf_symbol { name: "__balance_callbacks" is_defined: true symbol_type: FUNCTION - crc: 0x7fd6e661 + crc: 0x6ea8ba01 type_id: 0x1b18f64e full_name: "__balance_callbacks" } @@ -321214,7 +321337,7 @@ elf_symbol { name: "__blk_alloc_disk" is_defined: true symbol_type: FUNCTION - crc: 0x499758cf + crc: 0x6be31596 type_id: 0x55afd20f full_name: "__blk_alloc_disk" } @@ -321223,7 +321346,7 @@ elf_symbol { name: "__blk_mq_alloc_disk" is_defined: true symbol_type: FUNCTION - crc: 0x10072d11 + crc: 0xb570d42a type_id: 0x475eeec2 full_name: "__blk_mq_alloc_disk" } @@ -321232,7 +321355,7 @@ elf_symbol { name: "__blk_mq_end_request" is_defined: true symbol_type: FUNCTION - crc: 0xa4d14fed + crc: 0xbbdd205e type_id: 0x16d771f6 full_name: "__blk_mq_end_request" } @@ -321241,7 +321364,7 @@ elf_symbol { name: "__blk_rq_map_sg" is_defined: true symbol_type: FUNCTION - crc: 0x15d619be + crc: 0x5d8183c8 type_id: 0x9fae3c48 full_name: "__blk_rq_map_sg" } @@ -321250,7 +321373,7 @@ elf_symbol { name: "__cfg80211_alloc_event_skb" is_defined: true symbol_type: FUNCTION - crc: 0x16c72753 + crc: 0x2ba718d3 type_id: 0x6c2e1f92 full_name: "__cfg80211_alloc_event_skb" } @@ -321259,7 +321382,7 @@ elf_symbol { name: "__cfg80211_alloc_reply_skb" is_defined: true symbol_type: FUNCTION - crc: 0xe021ac04 + crc: 0x437e8dba type_id: 0x6f4d03a8 full_name: "__cfg80211_alloc_reply_skb" } @@ -321268,7 +321391,7 @@ elf_symbol { name: "__cfg80211_radar_event" is_defined: true symbol_type: FUNCTION - crc: 0xea8920c0 + crc: 0xf2253866 type_id: 0x14459469 full_name: "__cfg80211_radar_event" } @@ -321277,7 +321400,7 @@ elf_symbol { name: "__cfg80211_send_event_skb" is_defined: true symbol_type: FUNCTION - crc: 0x490059e5 + crc: 0xf27d4cfc type_id: 0x120d10aa full_name: "__cfg80211_send_event_skb" } @@ -321295,7 +321418,7 @@ elf_symbol { name: "__class_create" is_defined: true symbol_type: FUNCTION - crc: 0x3a155f85 + crc: 0x6f06db1c type_id: 0x9e2a24ca full_name: "__class_create" } @@ -321304,7 +321427,7 @@ elf_symbol { name: "__class_register" is_defined: true symbol_type: FUNCTION - crc: 0x90ae69d8 + crc: 0x8469953b type_id: 0x977ee81f full_name: "__class_register" } @@ -321313,7 +321436,7 @@ elf_symbol { name: "__clk_determine_rate" is_defined: true symbol_type: FUNCTION - crc: 0x3311c5af + crc: 0x97ac982f type_id: 0x9fc8d916 full_name: "__clk_determine_rate" } @@ -321322,7 +321445,7 @@ elf_symbol { name: "__clk_get_hw" is_defined: true symbol_type: FUNCTION - crc: 0x0df0ebfa + crc: 0xdb27fc3e type_id: 0xd1121136 full_name: "__clk_get_hw" } @@ -321349,7 +321472,7 @@ elf_symbol { name: "__clk_mux_determine_rate" is_defined: true symbol_type: FUNCTION - crc: 0xee9f08dd + crc: 0x141d2340 type_id: 0x9fc8d916 full_name: "__clk_mux_determine_rate" } @@ -321358,7 +321481,7 @@ elf_symbol { name: "__clk_mux_determine_rate_closest" is_defined: true symbol_type: FUNCTION - crc: 0x5a19ba51 + crc: 0x991198bc type_id: 0x9fc8d916 full_name: "__clk_mux_determine_rate_closest" } @@ -321367,7 +321490,7 @@ elf_symbol { name: "__clocksource_register_scale" is_defined: true symbol_type: FUNCTION - crc: 0x935f4b95 + crc: 0x5e49750a type_id: 0x9b8e2bf2 full_name: "__clocksource_register_scale" } @@ -321439,7 +321562,7 @@ elf_symbol { name: "__cpufreq_driver_target" is_defined: true symbol_type: FUNCTION - crc: 0x0528f489 + crc: 0x0aae60cb type_id: 0x9ce01ea2 full_name: "__cpufreq_driver_target" } @@ -321511,7 +321634,7 @@ elf_symbol { name: "__dev_change_net_namespace" is_defined: true symbol_type: FUNCTION - crc: 0x131a6d87 + crc: 0x5883640d type_id: 0x9115faa6 full_name: "__dev_change_net_namespace" } @@ -321520,7 +321643,7 @@ elf_symbol { name: "__dev_get_by_index" is_defined: true symbol_type: FUNCTION - crc: 0x01a2a7b3 + crc: 0xe3f1c6f9 type_id: 0xfec79391 full_name: "__dev_get_by_index" } @@ -321529,7 +321652,7 @@ elf_symbol { name: "__dev_get_by_name" is_defined: true symbol_type: FUNCTION - crc: 0xde525a03 + crc: 0x93c02d91 type_id: 0xffa35209 full_name: "__dev_get_by_name" } @@ -321538,7 +321661,7 @@ elf_symbol { name: "__dev_kfree_skb_any" is_defined: true symbol_type: FUNCTION - crc: 0x22e830c6 + crc: 0x2b9a5d31 type_id: 0x1028d82e full_name: "__dev_kfree_skb_any" } @@ -321547,7 +321670,7 @@ elf_symbol { name: "__dev_kfree_skb_irq" is_defined: true symbol_type: FUNCTION - crc: 0x64347dcc + crc: 0x29e88092 type_id: 0x1028d82e full_name: "__dev_kfree_skb_irq" } @@ -321556,7 +321679,7 @@ elf_symbol { name: "__dev_queue_xmit" is_defined: true symbol_type: FUNCTION - crc: 0xd9b4e3a7 + crc: 0xc5304ef0 type_id: 0x9c19a1e6 full_name: "__dev_queue_xmit" } @@ -321565,7 +321688,7 @@ elf_symbol { name: "__devm_alloc_percpu" is_defined: true symbol_type: FUNCTION - crc: 0x7722bd57 + crc: 0x537066f5 type_id: 0x55ed5751 full_name: "__devm_alloc_percpu" } @@ -321574,7 +321697,7 @@ elf_symbol { name: "__devm_clk_hw_register_divider" is_defined: true symbol_type: FUNCTION - crc: 0x4a8fb4fc + crc: 0xafae2ee5 type_id: 0xde292a8a full_name: "__devm_clk_hw_register_divider" } @@ -321583,7 +321706,7 @@ elf_symbol { name: "__devm_clk_hw_register_mux" is_defined: true symbol_type: FUNCTION - crc: 0x27970269 + crc: 0x8ea0dd98 type_id: 0xde2977ad full_name: "__devm_clk_hw_register_mux" } @@ -321592,7 +321715,7 @@ elf_symbol { name: "__devm_drm_dev_alloc" is_defined: true symbol_type: FUNCTION - crc: 0xc2f73dce + crc: 0x3c19806b type_id: 0x56f10608 full_name: "__devm_drm_dev_alloc" } @@ -321601,7 +321724,7 @@ elf_symbol { name: "__devm_iio_device_register" is_defined: true symbol_type: FUNCTION - crc: 0x659aca72 + crc: 0xfe21d9c4 type_id: 0x9d763af9 full_name: "__devm_iio_device_register" } @@ -321610,7 +321733,7 @@ elf_symbol { name: "__devm_irq_alloc_descs" is_defined: true symbol_type: FUNCTION - crc: 0x25f7a591 + crc: 0xf05e2893 type_id: 0x9c9a309d full_name: "__devm_irq_alloc_descs" } @@ -321619,7 +321742,7 @@ elf_symbol { name: "__devm_of_phy_provider_register" is_defined: true symbol_type: FUNCTION - crc: 0x52745b80 + crc: 0xd37cf5d1 type_id: 0x7087761a full_name: "__devm_of_phy_provider_register" } @@ -321628,7 +321751,7 @@ elf_symbol { name: "__devm_regmap_init" is_defined: true symbol_type: FUNCTION - crc: 0xa6934810 + crc: 0x8382ffa8 type_id: 0x8ce75748 full_name: "__devm_regmap_init" } @@ -321637,7 +321760,7 @@ elf_symbol { name: "__devm_regmap_init_i2c" is_defined: true symbol_type: FUNCTION - crc: 0xd63cb8ee + crc: 0x515e3598 type_id: 0x80dd5700 full_name: "__devm_regmap_init_i2c" } @@ -321646,7 +321769,7 @@ elf_symbol { name: "__devm_regmap_init_mmio_clk" is_defined: true symbol_type: FUNCTION - crc: 0xcfbff9cd + crc: 0xe205331d type_id: 0x8cdd9b00 full_name: "__devm_regmap_init_mmio_clk" } @@ -321655,7 +321778,7 @@ elf_symbol { name: "__devm_regmap_init_spi" is_defined: true symbol_type: FUNCTION - crc: 0x105e4f12 + crc: 0x4c2e0d1b type_id: 0x88f4e163 full_name: "__devm_regmap_init_spi" } @@ -321664,7 +321787,7 @@ elf_symbol { name: "__devm_regmap_init_spmi_ext" is_defined: true symbol_type: FUNCTION - crc: 0x9c65ba36 + crc: 0x28d88b2b type_id: 0x8b7d8884 full_name: "__devm_regmap_init_spmi_ext" } @@ -321673,7 +321796,7 @@ elf_symbol { name: "__devm_request_region" is_defined: true symbol_type: FUNCTION - crc: 0x6a251844 + crc: 0x7cc46337 type_id: 0xc1be98ae full_name: "__devm_request_region" } @@ -321682,7 +321805,7 @@ elf_symbol { name: "__devm_reset_control_bulk_get" is_defined: true symbol_type: FUNCTION - crc: 0x2c10cc2c + crc: 0xfeaebafc type_id: 0x9c8307a8 full_name: "__devm_reset_control_bulk_get" } @@ -321691,7 +321814,7 @@ elf_symbol { name: "__devm_reset_control_get" is_defined: true symbol_type: FUNCTION - crc: 0x9593cffb + crc: 0xa40ebece type_id: 0x0fe6e820 full_name: "__devm_reset_control_get" } @@ -321700,7 +321823,7 @@ elf_symbol { name: "__devm_rtc_register_device" is_defined: true symbol_type: FUNCTION - crc: 0x9c4adbf2 + crc: 0x2f1efdad type_id: 0x9fda9d1b full_name: "__devm_rtc_register_device" } @@ -321709,7 +321832,7 @@ elf_symbol { name: "__devm_spi_alloc_controller" is_defined: true symbol_type: FUNCTION - crc: 0xe0d611eb + crc: 0x45d21caf type_id: 0x5179d95b full_name: "__devm_spi_alloc_controller" } @@ -321718,7 +321841,7 @@ elf_symbol { name: "__devres_alloc_node" is_defined: true symbol_type: FUNCTION - crc: 0xa4835356 + crc: 0x89084c04 type_id: 0x4058e56a full_name: "__devres_alloc_node" } @@ -321727,7 +321850,7 @@ elf_symbol { name: "__dma_request_channel" is_defined: true symbol_type: FUNCTION - crc: 0x52f7d3d7 + crc: 0xed0c7f18 type_id: 0x89ab6589 full_name: "__dma_request_channel" } @@ -321736,7 +321859,7 @@ elf_symbol { name: "__drm_atomic_helper_connector_destroy_state" is_defined: true symbol_type: FUNCTION - crc: 0xbb6435f0 + crc: 0x186fa286 type_id: 0x1bbbd739 full_name: "__drm_atomic_helper_connector_destroy_state" } @@ -321745,7 +321868,7 @@ elf_symbol { name: "__drm_atomic_helper_connector_duplicate_state" is_defined: true symbol_type: FUNCTION - crc: 0xda791de0 + crc: 0x8a3c579a type_id: 0x1c470062 full_name: "__drm_atomic_helper_connector_duplicate_state" } @@ -321754,7 +321877,7 @@ elf_symbol { name: "__drm_atomic_helper_connector_reset" is_defined: true symbol_type: FUNCTION - crc: 0x8cf4e6b1 + crc: 0xb40325af type_id: 0x1c470062 full_name: "__drm_atomic_helper_connector_reset" } @@ -321763,7 +321886,7 @@ elf_symbol { name: "__drm_atomic_helper_crtc_destroy_state" is_defined: true symbol_type: FUNCTION - crc: 0xe7a2678b + crc: 0x263a3c37 type_id: 0x1e2ec9be full_name: "__drm_atomic_helper_crtc_destroy_state" } @@ -321772,7 +321895,7 @@ elf_symbol { name: "__drm_atomic_helper_crtc_duplicate_state" is_defined: true symbol_type: FUNCTION - crc: 0xd7b54623 + crc: 0x7dcb6dc9 type_id: 0x1c25e791 full_name: "__drm_atomic_helper_crtc_duplicate_state" } @@ -321781,7 +321904,7 @@ elf_symbol { name: "__drm_atomic_helper_crtc_reset" is_defined: true symbol_type: FUNCTION - crc: 0x233bcd80 + crc: 0x27f59fdf type_id: 0x1c25e791 full_name: "__drm_atomic_helper_crtc_reset" } @@ -321790,7 +321913,7 @@ elf_symbol { name: "__drm_atomic_helper_plane_destroy_state" is_defined: true symbol_type: FUNCTION - crc: 0x4a331ecd + crc: 0x17626b3d type_id: 0x1b137798 full_name: "__drm_atomic_helper_plane_destroy_state" } @@ -321799,7 +321922,7 @@ elf_symbol { name: "__drm_atomic_helper_plane_duplicate_state" is_defined: true symbol_type: FUNCTION - crc: 0xb2c02629 + crc: 0x2ac60eaf type_id: 0x16ebcbfa full_name: "__drm_atomic_helper_plane_duplicate_state" } @@ -321808,7 +321931,7 @@ elf_symbol { name: "__drm_atomic_helper_plane_reset" is_defined: true symbol_type: FUNCTION - crc: 0xdda9f1e9 + crc: 0xf3662f79 type_id: 0x16ebcbfa full_name: "__drm_atomic_helper_plane_reset" } @@ -321817,7 +321940,7 @@ elf_symbol { name: "__drm_atomic_helper_private_obj_duplicate_state" is_defined: true symbol_type: FUNCTION - crc: 0x86109042 + crc: 0x9e9d7ddb type_id: 0x18ea2469 full_name: "__drm_atomic_helper_private_obj_duplicate_state" } @@ -321853,7 +321976,7 @@ elf_symbol { name: "__drm_dev_dbg" is_defined: true symbol_type: FUNCTION - crc: 0x25a99267 + crc: 0xd6fd8fa7 type_id: 0x17d8b994 full_name: "__drm_dev_dbg" } @@ -321871,7 +321994,7 @@ elf_symbol { name: "__drm_gem_destroy_shadow_plane_state" is_defined: true symbol_type: FUNCTION - crc: 0xfc94461b + crc: 0x3e3d6ccd type_id: 0x125f41c1 full_name: "__drm_gem_destroy_shadow_plane_state" } @@ -321880,7 +322003,7 @@ elf_symbol { name: "__drm_gem_duplicate_shadow_plane_state" is_defined: true symbol_type: FUNCTION - crc: 0x5cd8c6cd + crc: 0x3116249a type_id: 0x167f089f full_name: "__drm_gem_duplicate_shadow_plane_state" } @@ -321889,7 +322012,7 @@ elf_symbol { name: "__drm_gem_reset_shadow_plane" is_defined: true symbol_type: FUNCTION - crc: 0xd54b3b75 + crc: 0x71c07c03 type_id: 0x167f089f full_name: "__drm_gem_reset_shadow_plane" } @@ -321952,7 +322075,7 @@ elf_symbol { name: "__drmm_universal_plane_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x0657a416 + crc: 0x2f307b37 type_id: 0x5bba39c6 full_name: "__drmm_universal_plane_alloc" } @@ -321961,7 +322084,7 @@ elf_symbol { name: "__dynamic_dev_dbg" is_defined: true symbol_type: FUNCTION - crc: 0x90384ce7 + crc: 0x3fbe53bb type_id: 0x17cc14a2 full_name: "__dynamic_dev_dbg" } @@ -321979,7 +322102,7 @@ elf_symbol { name: "__ethtool_get_link_ksettings" is_defined: true symbol_type: FUNCTION - crc: 0x9f8c56b5 + crc: 0x2e42881b type_id: 0x914dbe16 full_name: "__ethtool_get_link_ksettings" } @@ -322006,7 +322129,7 @@ elf_symbol { name: "__folio_lock" is_defined: true symbol_type: FUNCTION - crc: 0x995eb686 + crc: 0x00dd4b2a type_id: 0x18c46588 full_name: "__folio_lock" } @@ -322015,7 +322138,7 @@ elf_symbol { name: "__folio_put" is_defined: true symbol_type: FUNCTION - crc: 0xebe36b14 + crc: 0x14cca1fc type_id: 0x18c46588 full_name: "__folio_put" } @@ -322024,7 +322147,7 @@ elf_symbol { name: "__free_pages" is_defined: true symbol_type: FUNCTION - crc: 0x22639974 + crc: 0xfb702a4e type_id: 0x102e93ac full_name: "__free_pages" } @@ -322033,7 +322156,7 @@ elf_symbol { name: "__genphy_config_aneg" is_defined: true symbol_type: FUNCTION - crc: 0x4332ea02 + crc: 0xc6123b16 type_id: 0x9068b671 full_name: "__genphy_config_aneg" } @@ -322060,7 +322183,7 @@ elf_symbol { name: "__get_task_comm" is_defined: true symbol_type: FUNCTION - crc: 0xabd04123 + crc: 0x8211d573 type_id: 0x3cc96bbe full_name: "__get_task_comm" } @@ -322069,7 +322192,7 @@ elf_symbol { name: "__get_task_ioprio" is_defined: true symbol_type: FUNCTION - crc: 0xe67f7614 + crc: 0xb23543ee type_id: 0x9ac6895a full_name: "__get_task_ioprio" } @@ -322078,7 +322201,7 @@ elf_symbol { name: "__hci_cmd_send" is_defined: true symbol_type: FUNCTION - crc: 0x57710cf5 + crc: 0x9ebdd384 type_id: 0x988786ac full_name: "__hci_cmd_send" } @@ -322087,7 +322210,7 @@ elf_symbol { name: "__hci_cmd_sync" is_defined: true symbol_type: FUNCTION - crc: 0x5c6057ca + crc: 0x58c33f6b type_id: 0x6d996ee0 full_name: "__hci_cmd_sync" } @@ -322096,7 +322219,7 @@ elf_symbol { name: "__hci_cmd_sync_ev" is_defined: true symbol_type: FUNCTION - crc: 0x2f9cf687 + crc: 0x9b2ad697 type_id: 0x6d9955d1 full_name: "__hci_cmd_sync_ev" } @@ -322105,7 +322228,7 @@ elf_symbol { name: "__hci_cmd_sync_sk" is_defined: true symbol_type: FUNCTION - crc: 0x6ffce0d6 + crc: 0xb6d3a298 type_id: 0x6d9955d6 full_name: "__hci_cmd_sync_sk" } @@ -322114,7 +322237,7 @@ elf_symbol { name: "__hci_cmd_sync_status" is_defined: true symbol_type: FUNCTION - crc: 0xb64f8dd6 + crc: 0x1797b7bd type_id: 0x9887b4ee full_name: "__hci_cmd_sync_status" } @@ -322123,7 +322246,7 @@ elf_symbol { name: "__hci_cmd_sync_status_sk" is_defined: true symbol_type: FUNCTION - crc: 0x11ce9ad9 + crc: 0x4a033915 type_id: 0x98878fd8 full_name: "__hci_cmd_sync_status_sk" } @@ -322141,7 +322264,7 @@ elf_symbol { name: "__hvc_resize" is_defined: true symbol_type: FUNCTION - crc: 0x7ec81574 + crc: 0xfae42272 type_id: 0x1eedbe86 full_name: "__hvc_resize" } @@ -322177,7 +322300,7 @@ elf_symbol { name: "__hwspin_lock_timeout" is_defined: true symbol_type: FUNCTION - crc: 0xffd83ab7 + crc: 0xd82853a0 type_id: 0x9e215925 full_name: "__hwspin_lock_timeout" } @@ -322186,7 +322309,7 @@ elf_symbol { name: "__hwspin_unlock" is_defined: true symbol_type: FUNCTION - crc: 0x2fd6c98c + crc: 0x715636e7 type_id: 0x13ab3f14 full_name: "__hwspin_unlock" } @@ -322195,7 +322318,7 @@ elf_symbol { name: "__i2c_smbus_xfer" is_defined: true symbol_type: FUNCTION - crc: 0x800abb8b + crc: 0xfdc72291 type_id: 0x8a03b82b full_name: "__i2c_smbus_xfer" } @@ -322204,7 +322327,7 @@ elf_symbol { name: "__i2c_transfer" is_defined: true symbol_type: FUNCTION - crc: 0x2a10f704 + crc: 0x09f79396 type_id: 0x9480cdfa full_name: "__i2c_transfer" } @@ -322213,7 +322336,7 @@ elf_symbol { name: "__ieee80211_schedule_txq" is_defined: true symbol_type: FUNCTION - crc: 0x8baf1c2c + crc: 0xa648a74a type_id: 0x1a9eb7e2 full_name: "__ieee80211_schedule_txq" } @@ -322222,7 +322345,7 @@ elf_symbol { name: "__inet6_lookup_established" is_defined: true symbol_type: FUNCTION - crc: 0xc61b2c5a + crc: 0xeb25583f type_id: 0x6f1e53de full_name: "__inet6_lookup_established" } @@ -322231,7 +322354,7 @@ elf_symbol { name: "__inet_lookup_established" is_defined: true symbol_type: FUNCTION - crc: 0xf12e4f77 + crc: 0x3ed1ad15 type_id: 0x6f2829be full_name: "__inet_lookup_established" } @@ -322286,7 +322409,7 @@ elf_symbol { name: "__ip_dev_find" is_defined: true symbol_type: FUNCTION - crc: 0x5b6cc4e5 + crc: 0xe71c2c3e type_id: 0xfcc995bd full_name: "__ip_dev_find" } @@ -322295,7 +322418,7 @@ elf_symbol { name: "__ip_select_ident" is_defined: true symbol_type: FUNCTION - crc: 0x0a6d88f4 + crc: 0x346cd14f type_id: 0x13a0751a full_name: "__ip_select_ident" } @@ -322313,7 +322436,7 @@ elf_symbol { name: "__irq_alloc_descs" is_defined: true symbol_type: FUNCTION - crc: 0x2881fa91 + crc: 0x97a30d26 type_id: 0x854e3dbc full_name: "__irq_alloc_descs" } @@ -322331,7 +322454,7 @@ elf_symbol { name: "__irq_domain_add" is_defined: true symbol_type: FUNCTION - crc: 0x39f3275f + crc: 0x31ea27ee type_id: 0x5f133b10 full_name: "__irq_domain_add" } @@ -322340,7 +322463,7 @@ elf_symbol { name: "__irq_resolve_mapping" is_defined: true symbol_type: FUNCTION - crc: 0x23f5e01d + crc: 0x33e57fed type_id: 0xc252de0a full_name: "__irq_resolve_mapping" } @@ -322484,7 +322607,7 @@ elf_symbol { name: "__kthread_init_worker" is_defined: true symbol_type: FUNCTION - crc: 0x6bb00d80 + crc: 0xcbfeed52 type_id: 0x1d45187b full_name: "__kthread_init_worker" } @@ -322520,7 +322643,7 @@ elf_symbol { name: "__mdiobus_read" is_defined: true symbol_type: FUNCTION - crc: 0xd3d2210c + crc: 0x1a9a2bd1 type_id: 0x915b6659 full_name: "__mdiobus_read" } @@ -322529,7 +322652,7 @@ elf_symbol { name: "__mdiobus_write" is_defined: true symbol_type: FUNCTION - crc: 0x7d62c16b + crc: 0x89aaffb8 type_id: 0x9159236f full_name: "__mdiobus_write" } @@ -322538,7 +322661,7 @@ elf_symbol { name: "__media_device_register" is_defined: true symbol_type: FUNCTION - crc: 0x46d52c47 + crc: 0xff71af97 type_id: 0x98249b1d full_name: "__media_device_register" } @@ -322583,7 +322706,7 @@ elf_symbol { name: "__migrate_task" is_defined: true symbol_type: FUNCTION - crc: 0xde313ae0 + crc: 0xf6d64717 type_id: 0x81bed9bb full_name: "__migrate_task" } @@ -322592,7 +322715,7 @@ elf_symbol { name: "__mmap_lock_do_trace_acquire_returned" is_defined: true symbol_type: FUNCTION - crc: 0x44045c75 + crc: 0x7112a12d type_id: 0x17fb42d3 full_name: "__mmap_lock_do_trace_acquire_returned" } @@ -322601,7 +322724,7 @@ elf_symbol { name: "__mmap_lock_do_trace_released" is_defined: true symbol_type: FUNCTION - crc: 0x72276847 + crc: 0xc856066d type_id: 0x17e01d04 full_name: "__mmap_lock_do_trace_released" } @@ -322610,7 +322733,7 @@ elf_symbol { name: "__mmap_lock_do_trace_start_locking" is_defined: true symbol_type: FUNCTION - crc: 0x36eabe59 + crc: 0xc85afaa6 type_id: 0x17e01d04 full_name: "__mmap_lock_do_trace_start_locking" } @@ -322619,7 +322742,7 @@ elf_symbol { name: "__mmdrop" is_defined: true symbol_type: FUNCTION - crc: 0xdc09f861 + crc: 0x97d62b60 type_id: 0x1655e07b full_name: "__mmdrop" } @@ -322628,7 +322751,7 @@ elf_symbol { name: "__module_get" is_defined: true symbol_type: FUNCTION - crc: 0x90a22d6a + crc: 0x297e20ec type_id: 0x1251a683 full_name: "__module_get" } @@ -322637,7 +322760,7 @@ elf_symbol { name: "__module_put_and_kthread_exit" is_defined: true symbol_type: FUNCTION - crc: 0x8d33461e + crc: 0x9fe2ddfa type_id: 0x11a19ef5 full_name: "__module_put_and_kthread_exit" } @@ -322664,7 +322787,7 @@ elf_symbol { name: "__napi_alloc_skb" is_defined: true symbol_type: FUNCTION - crc: 0xcb736b77 + crc: 0x003de8d9 type_id: 0x6fb420ce full_name: "__napi_alloc_skb" } @@ -322673,7 +322796,7 @@ elf_symbol { name: "__napi_schedule" is_defined: true symbol_type: FUNCTION - crc: 0x9b78c656 + crc: 0x1c365f4b type_id: 0x16983453 full_name: "__napi_schedule" } @@ -322691,7 +322814,7 @@ elf_symbol { name: "__ndisc_fill_addr_option" is_defined: true symbol_type: FUNCTION - crc: 0x7899be99 + crc: 0xacf194b8 type_id: 0x1058ca17 full_name: "__ndisc_fill_addr_option" } @@ -322700,7 +322823,7 @@ elf_symbol { name: "__netdev_alloc_skb" is_defined: true symbol_type: FUNCTION - crc: 0x9f2b3271 + crc: 0x42c6f676 type_id: 0x651dcdfb full_name: "__netdev_alloc_skb" } @@ -322709,7 +322832,7 @@ elf_symbol { name: "__netif_napi_del" is_defined: true symbol_type: FUNCTION - crc: 0x81d7a76b + crc: 0xbd9dadd2 type_id: 0x16983453 full_name: "__netif_napi_del" } @@ -322718,7 +322841,7 @@ elf_symbol { name: "__netif_set_xps_queue" is_defined: true symbol_type: FUNCTION - crc: 0x454e7bfa + crc: 0x837843bf type_id: 0x91f45efa full_name: "__netif_set_xps_queue" } @@ -322727,7 +322850,7 @@ elf_symbol { name: "__netlink_dump_start" is_defined: true symbol_type: FUNCTION - crc: 0x2f197cda + crc: 0xc8bff8c8 type_id: 0x9acae612 full_name: "__netlink_dump_start" } @@ -322736,7 +322859,7 @@ elf_symbol { name: "__netlink_kernel_create" is_defined: true symbol_type: FUNCTION - crc: 0x56c563f3 + crc: 0xb8dfc687 type_id: 0x6ef28827 full_name: "__netlink_kernel_create" } @@ -322745,7 +322868,7 @@ elf_symbol { name: "__nfc_alloc_vendor_cmd_reply_skb" is_defined: true symbol_type: FUNCTION - crc: 0xf1e59b38 + crc: 0x84dfc656 type_id: 0x6b55cd91 full_name: "__nfc_alloc_vendor_cmd_reply_skb" } @@ -322772,7 +322895,7 @@ elf_symbol { name: "__nlmsg_put" is_defined: true symbol_type: FUNCTION - crc: 0x24a00787 + crc: 0x07fc4f42 type_id: 0x16d62662 full_name: "__nlmsg_put" } @@ -322790,7 +322913,7 @@ elf_symbol { name: "__of_get_address" is_defined: true symbol_type: FUNCTION - crc: 0xd6a2e278 + crc: 0xcb9478fe type_id: 0x2d73e0a2 full_name: "__of_get_address" } @@ -322799,7 +322922,7 @@ elf_symbol { name: "__of_parse_phandle_with_args" is_defined: true symbol_type: FUNCTION - crc: 0x33890110 + crc: 0xe337910b type_id: 0x91fd83bc full_name: "__of_parse_phandle_with_args" } @@ -322808,7 +322931,7 @@ elf_symbol { name: "__of_reset_control_get" is_defined: true symbol_type: FUNCTION - crc: 0x0deaf78a + crc: 0xad87980f type_id: 0x026c1696 full_name: "__of_reset_control_get" } @@ -322817,7 +322940,7 @@ elf_symbol { name: "__page_frag_cache_drain" is_defined: true symbol_type: FUNCTION - crc: 0x09f3a115 + crc: 0x549a601c type_id: 0x102e93ac full_name: "__page_frag_cache_drain" } @@ -322826,7 +322949,7 @@ elf_symbol { name: "__page_mapcount" is_defined: true symbol_type: FUNCTION - crc: 0x101b375c + crc: 0xaa42c329 type_id: 0x9c203488 full_name: "__page_mapcount" } @@ -322835,7 +322958,7 @@ elf_symbol { name: "__pagevec_release" is_defined: true symbol_type: FUNCTION - crc: 0x8d94c7ad + crc: 0xa6e85574 type_id: 0x11b81220 full_name: "__pagevec_release" } @@ -322844,7 +322967,7 @@ elf_symbol { name: "__pci_register_driver" is_defined: true symbol_type: FUNCTION - crc: 0xd3406dac + crc: 0xa86e8be5 type_id: 0x97374fe9 full_name: "__pci_register_driver" } @@ -322862,7 +322985,7 @@ elf_symbol { name: "__percpu_down_read" is_defined: true symbol_type: FUNCTION - crc: 0x0917e830 + crc: 0xa0777099 type_id: 0xfb7cfa37 full_name: "__percpu_down_read" } @@ -322871,7 +322994,7 @@ elf_symbol { name: "__percpu_init_rwsem" is_defined: true symbol_type: FUNCTION - crc: 0x1924e491 + crc: 0xb8693203 type_id: 0x99132caa full_name: "__percpu_init_rwsem" } @@ -322880,7 +323003,7 @@ elf_symbol { name: "__platform_driver_probe" is_defined: true symbol_type: FUNCTION - crc: 0x20f427e5 + crc: 0xf6511b78 type_id: 0x9bf6c118 full_name: "__platform_driver_probe" } @@ -322889,7 +323012,7 @@ elf_symbol { name: "__platform_driver_register" is_defined: true symbol_type: FUNCTION - crc: 0xb99de4a8 + crc: 0x7299958d type_id: 0x9b609a6d full_name: "__platform_driver_register" } @@ -322898,7 +323021,7 @@ elf_symbol { name: "__pm_relax" is_defined: true symbol_type: FUNCTION - crc: 0xaccf29a8 + crc: 0x64ad5706 type_id: 0x10229585 full_name: "__pm_relax" } @@ -322907,7 +323030,7 @@ elf_symbol { name: "__pm_runtime_disable" is_defined: true symbol_type: FUNCTION - crc: 0x32d5da03 + crc: 0xbed85651 type_id: 0x11bb92b7 full_name: "__pm_runtime_disable" } @@ -322916,7 +323039,7 @@ elf_symbol { name: "__pm_runtime_idle" is_defined: true symbol_type: FUNCTION - crc: 0x20e76d1d + crc: 0x1ee96327 type_id: 0x9c8a5e38 full_name: "__pm_runtime_idle" } @@ -322925,7 +323048,7 @@ elf_symbol { name: "__pm_runtime_resume" is_defined: true symbol_type: FUNCTION - crc: 0x99eca6ce + crc: 0x73f6b951 type_id: 0x9c8a5e38 full_name: "__pm_runtime_resume" } @@ -322934,7 +323057,7 @@ elf_symbol { name: "__pm_runtime_set_status" is_defined: true symbol_type: FUNCTION - crc: 0xf816c9ae + crc: 0xf291ad7b type_id: 0x9c00c8ec full_name: "__pm_runtime_set_status" } @@ -322943,7 +323066,7 @@ elf_symbol { name: "__pm_runtime_suspend" is_defined: true symbol_type: FUNCTION - crc: 0xaf8537d8 + crc: 0x192d59fb type_id: 0x9c8a5e38 full_name: "__pm_runtime_suspend" } @@ -322952,7 +323075,7 @@ elf_symbol { name: "__pm_runtime_use_autosuspend" is_defined: true symbol_type: FUNCTION - crc: 0x0a5767a1 + crc: 0xe4a730f3 type_id: 0x11bb92b7 full_name: "__pm_runtime_use_autosuspend" } @@ -322961,7 +323084,7 @@ elf_symbol { name: "__pm_stay_awake" is_defined: true symbol_type: FUNCTION - crc: 0xd8bc3240 + crc: 0x75df23c0 type_id: 0x10229585 full_name: "__pm_stay_awake" } @@ -322979,7 +323102,7 @@ elf_symbol { name: "__pskb_copy_fclone" is_defined: true symbol_type: FUNCTION - crc: 0x5c061deb + crc: 0x3fc3b56a type_id: 0x686cbc61 full_name: "__pskb_copy_fclone" } @@ -322988,7 +323111,7 @@ elf_symbol { name: "__pskb_pull_tail" is_defined: true symbol_type: FUNCTION - crc: 0x530dc30a + crc: 0xbea1604d type_id: 0x5659e8fb full_name: "__pskb_pull_tail" } @@ -322997,7 +323120,7 @@ elf_symbol { name: "__put_net" is_defined: true symbol_type: FUNCTION - crc: 0x81a5de4b + crc: 0xc1a002dd type_id: 0x13b0ccb3 full_name: "__put_net" } @@ -323006,7 +323129,7 @@ elf_symbol { name: "__put_task_struct" is_defined: true symbol_type: FUNCTION - crc: 0xbcb919d5 + crc: 0x3640a05a type_id: 0x17de3be6 full_name: "__put_task_struct" } @@ -323069,7 +323192,7 @@ elf_symbol { name: "__register_chrdev" is_defined: true symbol_type: FUNCTION - crc: 0x618ed1fc + crc: 0x04087de6 type_id: 0x8de63b97 full_name: "__register_chrdev" } @@ -323078,7 +323201,7 @@ elf_symbol { name: "__register_rpmsg_driver" is_defined: true symbol_type: FUNCTION - crc: 0x93d42de1 + crc: 0x2e02da83 type_id: 0x95ef0c06 full_name: "__register_rpmsg_driver" } @@ -323087,7 +323210,7 @@ elf_symbol { name: "__regmap_init" is_defined: true symbol_type: FUNCTION - crc: 0xffd8b507 + crc: 0xfaf0113e type_id: 0x8ce75748 full_name: "__regmap_init" } @@ -323132,7 +323255,7 @@ elf_symbol { name: "__reset_control_get" is_defined: true symbol_type: FUNCTION - crc: 0x470384dd + crc: 0x39c065e8 type_id: 0x0fe6e820 full_name: "__reset_control_get" } @@ -323150,7 +323273,7 @@ elf_symbol { name: "__rt_mutex_init" is_defined: true symbol_type: FUNCTION - crc: 0x53e5d079 + crc: 0xf9a226b9 type_id: 0x1dbb54c5 full_name: "__rt_mutex_init" } @@ -323159,7 +323282,7 @@ elf_symbol { name: "__scsi_add_device" is_defined: true symbol_type: FUNCTION - crc: 0x22fa9688 + crc: 0xa95b5330 type_id: 0xa355db3b full_name: "__scsi_add_device" } @@ -323168,7 +323291,7 @@ elf_symbol { name: "__scsi_iterate_devices" is_defined: true symbol_type: FUNCTION - crc: 0xcbe61a20 + crc: 0x8333dc7b type_id: 0xa1595676 full_name: "__scsi_iterate_devices" } @@ -323177,7 +323300,7 @@ elf_symbol { name: "__scsi_print_sense" is_defined: true symbol_type: FUNCTION - crc: 0x577f06fe + crc: 0xa0ce68fc type_id: 0x1df45ed2 full_name: "__scsi_print_sense" } @@ -323186,7 +323309,7 @@ elf_symbol { name: "__sdhci_add_host" is_defined: true symbol_type: FUNCTION - crc: 0x83b0d178 + crc: 0x35d4a561 type_id: 0x93dfa305 full_name: "__sdhci_add_host" } @@ -323195,7 +323318,7 @@ elf_symbol { name: "__sdhci_set_timeout" is_defined: true symbol_type: FUNCTION - crc: 0x833b4745 + crc: 0x729cb022 type_id: 0x1e7db2dc full_name: "__sdhci_set_timeout" } @@ -323204,7 +323327,7 @@ elf_symbol { name: "__seq_open_private" is_defined: true symbol_type: FUNCTION - crc: 0xeb38340d + crc: 0x508fc789 type_id: 0x5048b42f full_name: "__seq_open_private" } @@ -323213,7 +323336,7 @@ elf_symbol { name: "__serdev_device_driver_register" is_defined: true symbol_type: FUNCTION - crc: 0x0b26e7ef + crc: 0xa2c1051c type_id: 0x99fe57fe full_name: "__serdev_device_driver_register" } @@ -323222,7 +323345,7 @@ elf_symbol { name: "__serio_register_driver" is_defined: true symbol_type: FUNCTION - crc: 0xb3bdb875 + crc: 0xac9a2818 type_id: 0x9fef9fb7 full_name: "__serio_register_driver" } @@ -323231,7 +323354,7 @@ elf_symbol { name: "__serio_register_port" is_defined: true symbol_type: FUNCTION - crc: 0x26b0ed3e + crc: 0xdd8c39d2 type_id: 0x1009f18b full_name: "__serio_register_port" } @@ -323267,7 +323390,7 @@ elf_symbol { name: "__sk_receive_skb" is_defined: true symbol_type: FUNCTION - crc: 0xa8125504 + crc: 0x2c16bae4 type_id: 0x9adc176e full_name: "__sk_receive_skb" } @@ -323276,7 +323399,7 @@ elf_symbol { name: "__skb_checksum_complete" is_defined: true symbol_type: FUNCTION - crc: 0x3809097c + crc: 0x83efbef7 type_id: 0x1bdfb83f full_name: "__skb_checksum_complete" } @@ -323294,7 +323417,7 @@ elf_symbol { name: "__skb_flow_dissect" is_defined: true symbol_type: FUNCTION - crc: 0x539798c2 + crc: 0xfb8c362f type_id: 0xf1510018 full_name: "__skb_flow_dissect" } @@ -323303,7 +323426,7 @@ elf_symbol { name: "__skb_get_hash" is_defined: true symbol_type: FUNCTION - crc: 0xd45cb8df + crc: 0x2c0c6dba type_id: 0x11cb8bd5 full_name: "__skb_get_hash" } @@ -323312,7 +323435,7 @@ elf_symbol { name: "__skb_gso_segment" is_defined: true symbol_type: FUNCTION - crc: 0x94a30d74 + crc: 0x38ba43ef type_id: 0x6940ae3e full_name: "__skb_gso_segment" } @@ -323321,7 +323444,7 @@ elf_symbol { name: "__skb_pad" is_defined: true symbol_type: FUNCTION - crc: 0x7c61c48c + crc: 0x0a304f01 type_id: 0x9d54e5f2 full_name: "__skb_pad" } @@ -323330,7 +323453,7 @@ elf_symbol { name: "__sock_create" is_defined: true symbol_type: FUNCTION - crc: 0xfcf3daa3 + crc: 0xa359879e type_id: 0x9f2cabca full_name: "__sock_create" } @@ -323339,7 +323462,7 @@ elf_symbol { name: "__sock_queue_rcv_skb" is_defined: true symbol_type: FUNCTION - crc: 0xf1905eb4 + crc: 0x87200082 type_id: 0x9ac4d210 full_name: "__sock_queue_rcv_skb" } @@ -323348,7 +323471,7 @@ elf_symbol { name: "__sock_recv_cmsgs" is_defined: true symbol_type: FUNCTION - crc: 0xdb4a4fe0 + crc: 0x4b4c33d3 type_id: 0x1bdaff5e full_name: "__sock_recv_cmsgs" } @@ -323357,7 +323480,7 @@ elf_symbol { name: "__sock_recv_timestamp" is_defined: true symbol_type: FUNCTION - crc: 0x5a23e1aa + crc: 0x7f0769da type_id: 0x1bdaff5e full_name: "__sock_recv_timestamp" } @@ -323366,7 +323489,7 @@ elf_symbol { name: "__sock_recv_wifi_status" is_defined: true symbol_type: FUNCTION - crc: 0xb4d505eb + crc: 0x1cd2898e type_id: 0x1bdaff5e full_name: "__sock_recv_wifi_status" } @@ -323384,7 +323507,7 @@ elf_symbol { name: "__spi_alloc_controller" is_defined: true symbol_type: FUNCTION - crc: 0xb83f0a0c + crc: 0x9d83fea1 type_id: 0x5179d95b full_name: "__spi_alloc_controller" } @@ -323393,7 +323516,7 @@ elf_symbol { name: "__spi_register_driver" is_defined: true symbol_type: FUNCTION - crc: 0xe5d4da92 + crc: 0xdd3f597c type_id: 0x9f83d2d0 full_name: "__spi_register_driver" } @@ -323402,7 +323525,7 @@ elf_symbol { name: "__splice_from_pipe" is_defined: true symbol_type: FUNCTION - crc: 0xf929780f + crc: 0x2f7a58b3 type_id: 0x16c2ead1 full_name: "__splice_from_pipe" } @@ -323411,7 +323534,7 @@ elf_symbol { name: "__spmi_driver_register" is_defined: true symbol_type: FUNCTION - crc: 0x612110ba + crc: 0xc24f59f9 type_id: 0x97f5d38a full_name: "__spmi_driver_register" } @@ -323492,7 +323615,7 @@ elf_symbol { name: "__task_pid_nr_ns" is_defined: true symbol_type: FUNCTION - crc: 0x2e05e862 + crc: 0x968ba1d5 type_id: 0xd59c1ab2 full_name: "__task_pid_nr_ns" } @@ -323501,7 +323624,7 @@ elf_symbol { name: "__task_rq_lock" is_defined: true symbol_type: FUNCTION - crc: 0xac03c791 + crc: 0x0df7bbe1 type_id: 0x8d7ecefa full_name: "__task_rq_lock" } @@ -323546,7 +323669,7 @@ elf_symbol { name: "__trace_trigger_soft_disabled" is_defined: true symbol_type: FUNCTION - crc: 0x9733c5a5 + crc: 0x2227b141 type_id: 0xfe730297 full_name: "__trace_trigger_soft_disabled" } @@ -323555,7 +323678,7 @@ elf_symbol { name: "__traceiter_android_rvh_account_irq" is_defined: true symbol_type: FUNCTION - crc: 0xca9ba497 + crc: 0x16318fa8 type_id: 0x9bc2b791 full_name: "__traceiter_android_rvh_account_irq" } @@ -323564,7 +323687,7 @@ elf_symbol { name: "__traceiter_android_rvh_after_dequeue_task" is_defined: true symbol_type: FUNCTION - crc: 0x149a077f + crc: 0x743ba0f2 type_id: 0x9b116af7 full_name: "__traceiter_android_rvh_after_dequeue_task" } @@ -323573,7 +323696,7 @@ elf_symbol { name: "__traceiter_android_rvh_after_enqueue_task" is_defined: true symbol_type: FUNCTION - crc: 0xb2f7fc29 + crc: 0xa5979157 type_id: 0x9b116af7 full_name: "__traceiter_android_rvh_after_enqueue_task" } @@ -323609,7 +323732,7 @@ elf_symbol { name: "__traceiter_android_rvh_can_migrate_task" is_defined: true symbol_type: FUNCTION - crc: 0xc3164442 + crc: 0x7cdab5c4 type_id: 0x9bc25990 full_name: "__traceiter_android_rvh_can_migrate_task" } @@ -323618,7 +323741,7 @@ elf_symbol { name: "__traceiter_android_rvh_check_preempt_tick" is_defined: true symbol_type: FUNCTION - crc: 0x921f6821 + crc: 0xaf5a4aa9 type_id: 0x9bda0446 full_name: "__traceiter_android_rvh_check_preempt_tick" } @@ -323627,7 +323750,7 @@ elf_symbol { name: "__traceiter_android_rvh_check_preempt_wakeup" is_defined: true symbol_type: FUNCTION - crc: 0xf38e29de + crc: 0xdb326f7e type_id: 0x9b10b4a6 full_name: "__traceiter_android_rvh_check_preempt_wakeup" } @@ -323636,7 +323759,7 @@ elf_symbol { name: "__traceiter_android_rvh_check_preempt_wakeup_ignore" is_defined: true symbol_type: FUNCTION - crc: 0xce82047b + crc: 0xae744996 type_id: 0x9bdfaf3f full_name: "__traceiter_android_rvh_check_preempt_wakeup_ignore" } @@ -323654,7 +323777,7 @@ elf_symbol { name: "__traceiter_android_rvh_cpu_cgroup_online" is_defined: true symbol_type: FUNCTION - crc: 0x201df6d4 + crc: 0x5224b91b type_id: 0x9b03e163 full_name: "__traceiter_android_rvh_cpu_cgroup_online" } @@ -323672,7 +323795,7 @@ elf_symbol { name: "__traceiter_android_rvh_dequeue_entity" is_defined: true symbol_type: FUNCTION - crc: 0xc07f152d + crc: 0x4d77132c type_id: 0x9b96d02c full_name: "__traceiter_android_rvh_dequeue_entity" } @@ -323681,7 +323804,7 @@ elf_symbol { name: "__traceiter_android_rvh_dequeue_task" is_defined: true symbol_type: FUNCTION - crc: 0x0ff7ba7f + crc: 0x1823dba7 type_id: 0x9b116af7 full_name: "__traceiter_android_rvh_dequeue_task" } @@ -323690,7 +323813,7 @@ elf_symbol { name: "__traceiter_android_rvh_dequeue_task_fair" is_defined: true symbol_type: FUNCTION - crc: 0xdd1dae48 + crc: 0xffb21181 type_id: 0x9b116af7 full_name: "__traceiter_android_rvh_dequeue_task_fair" } @@ -323726,7 +323849,7 @@ elf_symbol { name: "__traceiter_android_rvh_do_sched_yield" is_defined: true symbol_type: FUNCTION - crc: 0x067db651 + crc: 0xe94bf3b6 type_id: 0x9b17b01e full_name: "__traceiter_android_rvh_do_sched_yield" } @@ -323762,7 +323885,7 @@ elf_symbol { name: "__traceiter_android_rvh_enqueue_entity" is_defined: true symbol_type: FUNCTION - crc: 0x42d18c17 + crc: 0xeb1ae87a type_id: 0x9b96d02c full_name: "__traceiter_android_rvh_enqueue_entity" } @@ -323771,7 +323894,7 @@ elf_symbol { name: "__traceiter_android_rvh_enqueue_task" is_defined: true symbol_type: FUNCTION - crc: 0xa99a4129 + crc: 0xc98fea02 type_id: 0x9b116af7 full_name: "__traceiter_android_rvh_enqueue_task" } @@ -323780,7 +323903,7 @@ elf_symbol { name: "__traceiter_android_rvh_enqueue_task_fair" is_defined: true symbol_type: FUNCTION - crc: 0x837b4699 + crc: 0x47a3cef9 type_id: 0x9b116af7 full_name: "__traceiter_android_rvh_enqueue_task_fair" } @@ -323789,7 +323912,7 @@ elf_symbol { name: "__traceiter_android_rvh_entity_tick" is_defined: true symbol_type: FUNCTION - crc: 0x319906c7 + crc: 0x7f86bbfd type_id: 0x9b96d02c full_name: "__traceiter_android_rvh_entity_tick" } @@ -323798,7 +323921,7 @@ elf_symbol { name: "__traceiter_android_rvh_find_busiest_group" is_defined: true symbol_type: FUNCTION - crc: 0x6a2dae68 + crc: 0x954b2dba type_id: 0x9b79ad21 full_name: "__traceiter_android_rvh_find_busiest_group" } @@ -323807,7 +323930,7 @@ elf_symbol { name: "__traceiter_android_rvh_find_busiest_queue" is_defined: true symbol_type: FUNCTION - crc: 0x4fc34750 + crc: 0x05b4bb43 type_id: 0x9a3e0766 full_name: "__traceiter_android_rvh_find_busiest_queue" } @@ -323816,7 +323939,7 @@ elf_symbol { name: "__traceiter_android_rvh_find_lowest_rq" is_defined: true symbol_type: FUNCTION - crc: 0x40fb9b41 + crc: 0x018e8b50 type_id: 0x9bd47a1d full_name: "__traceiter_android_rvh_find_lowest_rq" } @@ -323825,7 +323948,7 @@ elf_symbol { name: "__traceiter_android_rvh_finish_prio_fork" is_defined: true symbol_type: FUNCTION - crc: 0x5316dca5 + crc: 0x9e164737 type_id: 0x9bdbdcc4 full_name: "__traceiter_android_rvh_finish_prio_fork" } @@ -323834,7 +323957,7 @@ elf_symbol { name: "__traceiter_android_rvh_flush_task" is_defined: true symbol_type: FUNCTION - crc: 0x64dae013 + crc: 0x8a1101dc type_id: 0x9bdbdcc4 full_name: "__traceiter_android_rvh_flush_task" } @@ -323852,7 +323975,7 @@ elf_symbol { name: "__traceiter_android_rvh_gic_v3_set_affinity" is_defined: true symbol_type: FUNCTION - crc: 0x589fd894 + crc: 0x5a8ab556 type_id: 0x9b8eabb4 full_name: "__traceiter_android_rvh_gic_v3_set_affinity" } @@ -323870,7 +323993,7 @@ elf_symbol { name: "__traceiter_android_rvh_iommu_iovad_init_alloc_algo" is_defined: true symbol_type: FUNCTION - crc: 0x86b8d9b5 + crc: 0xcc75d28c type_id: 0x9ba938bd full_name: "__traceiter_android_rvh_iommu_iovad_init_alloc_algo" } @@ -323888,7 +324011,7 @@ elf_symbol { name: "__traceiter_android_rvh_iommu_setup_dma_ops" is_defined: true symbol_type: FUNCTION - crc: 0x2362d334 + crc: 0xb80f0df5 type_id: 0x9b8019c6 full_name: "__traceiter_android_rvh_iommu_setup_dma_ops" } @@ -323897,7 +324020,7 @@ elf_symbol { name: "__traceiter_android_rvh_is_cpu_allowed" is_defined: true symbol_type: FUNCTION - crc: 0x001f5841 + crc: 0xcba4b4d3 type_id: 0x9bc253cf full_name: "__traceiter_android_rvh_is_cpu_allowed" } @@ -323906,7 +324029,7 @@ elf_symbol { name: "__traceiter_android_rvh_migrate_queued_task" is_defined: true symbol_type: FUNCTION - crc: 0xd7d22f1a + crc: 0x1927e431 type_id: 0x9b18c50f full_name: "__traceiter_android_rvh_migrate_queued_task" } @@ -323915,7 +324038,7 @@ elf_symbol { name: "__traceiter_android_rvh_new_task_stats" is_defined: true symbol_type: FUNCTION - crc: 0xc2158886 + crc: 0xf92ef379 type_id: 0x9bdbdcc4 full_name: "__traceiter_android_rvh_new_task_stats" } @@ -323933,7 +324056,7 @@ elf_symbol { name: "__traceiter_android_rvh_pick_next_entity" is_defined: true symbol_type: FUNCTION - crc: 0xe28082e6 + crc: 0x840b11bb type_id: 0x9b96f247 full_name: "__traceiter_android_rvh_pick_next_entity" } @@ -323942,7 +324065,7 @@ elf_symbol { name: "__traceiter_android_rvh_place_entity" is_defined: true symbol_type: FUNCTION - crc: 0x97845d34 + crc: 0xef203c94 type_id: 0x9b974729 full_name: "__traceiter_android_rvh_place_entity" } @@ -323951,7 +324074,7 @@ elf_symbol { name: "__traceiter_android_rvh_prepare_prio_fork" is_defined: true symbol_type: FUNCTION - crc: 0x1df191ea + crc: 0x7dd85cd5 type_id: 0x9bdbdcc4 full_name: "__traceiter_android_rvh_prepare_prio_fork" } @@ -323960,7 +324083,7 @@ elf_symbol { name: "__traceiter_android_rvh_replace_next_task_fair" is_defined: true symbol_type: FUNCTION - crc: 0xa98af13f + crc: 0x433e4a3d type_id: 0x9b14e220 full_name: "__traceiter_android_rvh_replace_next_task_fair" } @@ -323978,7 +324101,7 @@ elf_symbol { name: "__traceiter_android_rvh_rtmutex_prepare_setprio" is_defined: true symbol_type: FUNCTION - crc: 0x352f550a + crc: 0xc68a4dc6 type_id: 0x9bdc9aae full_name: "__traceiter_android_rvh_rtmutex_prepare_setprio" } @@ -323996,7 +324119,7 @@ elf_symbol { name: "__traceiter_android_rvh_sched_balance_rt" is_defined: true symbol_type: FUNCTION - crc: 0xc491ea69 + crc: 0x718ac833 type_id: 0x9b10bb14 full_name: "__traceiter_android_rvh_sched_balance_rt" } @@ -324032,7 +324155,7 @@ elf_symbol { name: "__traceiter_android_rvh_sched_fork" is_defined: true symbol_type: FUNCTION - crc: 0x7afa0fa2 + crc: 0xab0cd84e type_id: 0x9bdbdcc4 full_name: "__traceiter_android_rvh_sched_fork" } @@ -324041,7 +324164,7 @@ elf_symbol { name: "__traceiter_android_rvh_sched_fork_init" is_defined: true symbol_type: FUNCTION - crc: 0x565f86ed + crc: 0xd71b1cf0 type_id: 0x9bdbdcc4 full_name: "__traceiter_android_rvh_sched_fork_init" } @@ -324050,7 +324173,7 @@ elf_symbol { name: "__traceiter_android_rvh_sched_getaffinity" is_defined: true symbol_type: FUNCTION - crc: 0xddb01c03 + crc: 0x1fdbfc0d type_id: 0x9bd5e248 full_name: "__traceiter_android_rvh_sched_getaffinity" } @@ -324059,7 +324182,7 @@ elf_symbol { name: "__traceiter_android_rvh_sched_newidle_balance" is_defined: true symbol_type: FUNCTION - crc: 0xb5f0523f + crc: 0x4c037b9f type_id: 0x9b18e15a full_name: "__traceiter_android_rvh_sched_newidle_balance" } @@ -324068,7 +324191,7 @@ elf_symbol { name: "__traceiter_android_rvh_sched_nohz_balancer_kick" is_defined: true symbol_type: FUNCTION - crc: 0x89ab6cfb + crc: 0xca5d6993 type_id: 0x9b110126 full_name: "__traceiter_android_rvh_sched_nohz_balancer_kick" } @@ -324077,7 +324200,7 @@ elf_symbol { name: "__traceiter_android_rvh_sched_rebalance_domains" is_defined: true symbol_type: FUNCTION - crc: 0x73c71811 + crc: 0x87310e86 type_id: 0x9b13661d full_name: "__traceiter_android_rvh_sched_rebalance_domains" } @@ -324086,7 +324209,7 @@ elf_symbol { name: "__traceiter_android_rvh_sched_setaffinity" is_defined: true symbol_type: FUNCTION - crc: 0xe296f90d + crc: 0xd87ab7ac type_id: 0x9bd7d214 full_name: "__traceiter_android_rvh_sched_setaffinity" } @@ -324095,7 +324218,7 @@ elf_symbol { name: "__traceiter_android_rvh_schedule" is_defined: true symbol_type: FUNCTION - crc: 0x58784e04 + crc: 0x6d9a8aec type_id: 0x9bdc22a4 full_name: "__traceiter_android_rvh_schedule" } @@ -324113,7 +324236,7 @@ elf_symbol { name: "__traceiter_android_rvh_select_fallback_rq" is_defined: true symbol_type: FUNCTION - crc: 0x0d765f41 + crc: 0x1c2ca1b0 type_id: 0x9a343225 full_name: "__traceiter_android_rvh_select_fallback_rq" } @@ -324122,7 +324245,7 @@ elf_symbol { name: "__traceiter_android_rvh_select_task_rq_fair" is_defined: true symbol_type: FUNCTION - crc: 0x78e5d4db + crc: 0xbaa3f016 type_id: 0x9bc391f6 full_name: "__traceiter_android_rvh_select_task_rq_fair" } @@ -324131,7 +324254,7 @@ elf_symbol { name: "__traceiter_android_rvh_select_task_rq_rt" is_defined: true symbol_type: FUNCTION - crc: 0x6e84b664 + crc: 0xb70e0ac9 type_id: 0x9bc391f6 full_name: "__traceiter_android_rvh_select_task_rq_rt" } @@ -324149,7 +324272,7 @@ elf_symbol { name: "__traceiter_android_rvh_set_cpus_allowed_by_task" is_defined: true symbol_type: FUNCTION - crc: 0x2f2c34a3 + crc: 0xf121b131 type_id: 0x9b67b049 full_name: "__traceiter_android_rvh_set_cpus_allowed_by_task" } @@ -324158,7 +324281,7 @@ elf_symbol { name: "__traceiter_android_rvh_set_task_cpu" is_defined: true symbol_type: FUNCTION - crc: 0x9f3b6831 + crc: 0x25c50f42 type_id: 0x9bcabd9d full_name: "__traceiter_android_rvh_set_task_cpu" } @@ -324167,7 +324290,7 @@ elf_symbol { name: "__traceiter_android_rvh_set_user_nice" is_defined: true symbol_type: FUNCTION - crc: 0xb0711f86 + crc: 0xe89974ea type_id: 0x9bd6ff14 full_name: "__traceiter_android_rvh_set_user_nice" } @@ -324176,7 +324299,7 @@ elf_symbol { name: "__traceiter_android_rvh_setscheduler" is_defined: true symbol_type: FUNCTION - crc: 0xda9ddf2a + crc: 0xc63e28ae type_id: 0x9bdbdcc4 full_name: "__traceiter_android_rvh_setscheduler" } @@ -324185,7 +324308,7 @@ elf_symbol { name: "__traceiter_android_rvh_shmem_get_folio" is_defined: true symbol_type: FUNCTION - crc: 0xf0296395 + crc: 0xbe193504 type_id: 0x9b1c749d full_name: "__traceiter_android_rvh_shmem_get_folio" } @@ -324203,7 +324326,7 @@ elf_symbol { name: "__traceiter_android_rvh_tick_entry" is_defined: true symbol_type: FUNCTION - crc: 0x4652ca57 + crc: 0x193c935c type_id: 0x9b17b01e full_name: "__traceiter_android_rvh_tick_entry" } @@ -324212,7 +324335,7 @@ elf_symbol { name: "__traceiter_android_rvh_try_to_wake_up" is_defined: true symbol_type: FUNCTION - crc: 0x847dfab2 + crc: 0xf8e2bed6 type_id: 0x9bdbdcc4 full_name: "__traceiter_android_rvh_try_to_wake_up" } @@ -324221,7 +324344,7 @@ elf_symbol { name: "__traceiter_android_rvh_try_to_wake_up_success" is_defined: true symbol_type: FUNCTION - crc: 0xce1f18a9 + crc: 0x45a5e4b2 type_id: 0x9bdbdcc4 full_name: "__traceiter_android_rvh_try_to_wake_up_success" } @@ -324239,7 +324362,7 @@ elf_symbol { name: "__traceiter_android_rvh_uclamp_eff_get" is_defined: true symbol_type: FUNCTION - crc: 0xe6cadd3f + crc: 0xd4452397 type_id: 0x9bca85c1 full_name: "__traceiter_android_rvh_uclamp_eff_get" } @@ -324257,7 +324380,7 @@ elf_symbol { name: "__traceiter_android_rvh_update_misfit_status" is_defined: true symbol_type: FUNCTION - crc: 0x49372710 + crc: 0x839ee929 type_id: 0x9bd01b5c full_name: "__traceiter_android_rvh_update_misfit_status" } @@ -324275,7 +324398,7 @@ elf_symbol { name: "__traceiter_android_rvh_util_est_update" is_defined: true symbol_type: FUNCTION - crc: 0x0e6fdf6a + crc: 0x876d61eb type_id: 0x9b922d94 full_name: "__traceiter_android_rvh_util_est_update" } @@ -324284,7 +324407,7 @@ elf_symbol { name: "__traceiter_android_rvh_wake_up_new_task" is_defined: true symbol_type: FUNCTION - crc: 0x678405bb + crc: 0x6216a55e type_id: 0x9bdbdcc4 full_name: "__traceiter_android_rvh_wake_up_new_task" } @@ -324302,7 +324425,7 @@ elf_symbol { name: "__traceiter_android_vh_binder_restore_priority" is_defined: true symbol_type: FUNCTION - crc: 0xc918128a + crc: 0xc8131fc9 type_id: 0x9ba25f4a full_name: "__traceiter_android_vh_binder_restore_priority" } @@ -324311,7 +324434,7 @@ elf_symbol { name: "__traceiter_android_vh_binder_set_priority" is_defined: true symbol_type: FUNCTION - crc: 0x9e248a49 + crc: 0x9c3ef9bd type_id: 0x9ba25f4a full_name: "__traceiter_android_vh_binder_set_priority" } @@ -324338,7 +324461,7 @@ elf_symbol { name: "__traceiter_android_vh_binder_wakeup_ilocked" is_defined: true symbol_type: FUNCTION - crc: 0x039c84e4 + crc: 0xef0f3c5f type_id: 0x9bc0fd25 full_name: "__traceiter_android_vh_binder_wakeup_ilocked" } @@ -324356,7 +324479,7 @@ elf_symbol { name: "__traceiter_android_vh_check_uninterrupt_tasks" is_defined: true symbol_type: FUNCTION - crc: 0x6fcacbbe + crc: 0x03d19b88 type_id: 0x9bd746a2 full_name: "__traceiter_android_vh_check_uninterrupt_tasks" } @@ -324464,7 +324587,7 @@ elf_symbol { name: "__traceiter_android_vh_free_task" is_defined: true symbol_type: FUNCTION - crc: 0x484f3251 + crc: 0xc65dc862 type_id: 0x9bdbdcc4 full_name: "__traceiter_android_vh_free_task" } @@ -324518,7 +324641,7 @@ elf_symbol { name: "__traceiter_android_vh_ignore_dmabuf_vmap_bounds" is_defined: true symbol_type: FUNCTION - crc: 0x5cd8d0b9 + crc: 0xc487c868 type_id: 0x9ba8e976 full_name: "__traceiter_android_vh_ignore_dmabuf_vmap_bounds" } @@ -324536,7 +324659,7 @@ elf_symbol { name: "__traceiter_android_vh_is_fpsimd_save" is_defined: true symbol_type: FUNCTION - crc: 0x0f18414d + crc: 0x0e97ef12 type_id: 0x9bdc9aae full_name: "__traceiter_android_vh_is_fpsimd_save" } @@ -324653,7 +324776,7 @@ elf_symbol { name: "__traceiter_android_vh_sched_show_task" is_defined: true symbol_type: FUNCTION - crc: 0x39a90531 + crc: 0x7697e059 type_id: 0x9bdbdcc4 full_name: "__traceiter_android_vh_sched_show_task" } @@ -324662,7 +324785,7 @@ elf_symbol { name: "__traceiter_android_vh_scheduler_tick" is_defined: true symbol_type: FUNCTION - crc: 0x769a508e + crc: 0x6459a3b3 type_id: 0x9b17b01e full_name: "__traceiter_android_vh_scheduler_tick" } @@ -324671,7 +324794,7 @@ elf_symbol { name: "__traceiter_android_vh_setscheduler_uclamp" is_defined: true symbol_type: FUNCTION - crc: 0xbf7b733b + crc: 0x47dac808 type_id: 0x9bc302e5 full_name: "__traceiter_android_vh_setscheduler_uclamp" } @@ -324725,7 +324848,7 @@ elf_symbol { name: "__traceiter_android_vh_try_to_freeze_todo_unfrozen" is_defined: true symbol_type: FUNCTION - crc: 0xbe193612 + crc: 0xce0711c8 type_id: 0x9bdbdcc4 full_name: "__traceiter_android_vh_try_to_freeze_todo_unfrozen" } @@ -324833,7 +324956,7 @@ elf_symbol { name: "__traceiter_binder_transaction_received" is_defined: true symbol_type: FUNCTION - crc: 0xa9cdaa8f + crc: 0xe6050ae4 type_id: 0x9ba51920 full_name: "__traceiter_binder_transaction_received" } @@ -324860,7 +324983,7 @@ elf_symbol { name: "__traceiter_cpu_frequency_limits" is_defined: true symbol_type: FUNCTION - crc: 0xf9448162 + crc: 0x25819b44 type_id: 0x9ba9c2f7 full_name: "__traceiter_cpu_frequency_limits" } @@ -324878,7 +325001,7 @@ elf_symbol { name: "__traceiter_device_pm_callback_end" is_defined: true symbol_type: FUNCTION - crc: 0x3e3dbed4 + crc: 0x3766473d type_id: 0x9bbf11b2 full_name: "__traceiter_device_pm_callback_end" } @@ -324887,7 +325010,7 @@ elf_symbol { name: "__traceiter_device_pm_callback_start" is_defined: true symbol_type: FUNCTION - crc: 0x84d7ee59 + crc: 0x96e55d6a type_id: 0x9ba8c128 full_name: "__traceiter_device_pm_callback_start" } @@ -324950,7 +325073,7 @@ elf_symbol { name: "__traceiter_irq_handler_entry" is_defined: true symbol_type: FUNCTION - crc: 0xa3ee1ad8 + crc: 0x0dfea5a3 type_id: 0x9a3e338e full_name: "__traceiter_irq_handler_entry" } @@ -324959,7 +325082,7 @@ elf_symbol { name: "__traceiter_irq_handler_exit" is_defined: true symbol_type: FUNCTION - crc: 0x313243d4 + crc: 0xb6129caf type_id: 0x9a3faf0d full_name: "__traceiter_irq_handler_exit" } @@ -324968,7 +325091,7 @@ elf_symbol { name: "__traceiter_mmap_lock_acquire_returned" is_defined: true symbol_type: FUNCTION - crc: 0x22f9e050 + crc: 0x22d4ef6f type_id: 0x9bcd4bf2 full_name: "__traceiter_mmap_lock_acquire_returned" } @@ -324977,7 +325100,7 @@ elf_symbol { name: "__traceiter_mmap_lock_released" is_defined: true symbol_type: FUNCTION - crc: 0x60680d5c + crc: 0xcea0d9f9 type_id: 0x9bcd50ad full_name: "__traceiter_mmap_lock_released" } @@ -324986,7 +325109,7 @@ elf_symbol { name: "__traceiter_mmap_lock_start_locking" is_defined: true symbol_type: FUNCTION - crc: 0xdc77c070 + crc: 0x80aba9b3 type_id: 0x9bcd50ad full_name: "__traceiter_mmap_lock_start_locking" } @@ -324995,7 +325118,7 @@ elf_symbol { name: "__traceiter_sched_overutilized_tp" is_defined: true symbol_type: FUNCTION - crc: 0xfcd8b692 + crc: 0xa5b173ca type_id: 0x9b506e5c full_name: "__traceiter_sched_overutilized_tp" } @@ -325004,7 +325127,7 @@ elf_symbol { name: "__traceiter_sched_switch" is_defined: true symbol_type: FUNCTION - crc: 0xbd468d51 + crc: 0x093e6617 type_id: 0x9a1d6471 full_name: "__traceiter_sched_switch" } @@ -325031,7 +325154,7 @@ elf_symbol { name: "__traceiter_xdp_exception" is_defined: true symbol_type: FUNCTION - crc: 0xbc09c1ec + crc: 0xd3ecf343 type_id: 0x9b6e0d6b full_name: "__traceiter_xdp_exception" } @@ -326525,7 +326648,7 @@ elf_symbol { name: "__tty_alloc_driver" is_defined: true symbol_type: FUNCTION - crc: 0x211bc707 + crc: 0x43f43d45 type_id: 0xbe241f2a full_name: "__tty_alloc_driver" } @@ -326534,7 +326657,7 @@ elf_symbol { name: "__tty_insert_flip_char" is_defined: true symbol_type: FUNCTION - crc: 0x2b2ff74a + crc: 0x4ecce87a type_id: 0x9a7ce1ce full_name: "__tty_insert_flip_char" } @@ -326552,7 +326675,7 @@ elf_symbol { name: "__udp4_lib_lookup" is_defined: true symbol_type: FUNCTION - crc: 0x08e2d14e + crc: 0x31bf16c1 type_id: 0x6cfb566e full_name: "__udp4_lib_lookup" } @@ -326561,7 +326684,7 @@ elf_symbol { name: "__udp6_lib_lookup" is_defined: true symbol_type: FUNCTION - crc: 0x47c69634 + crc: 0x02328680 type_id: 0x6f9cf068 full_name: "__udp6_lib_lookup" } @@ -326570,7 +326693,7 @@ elf_symbol { name: "__uio_register_device" is_defined: true symbol_type: FUNCTION - crc: 0x7fb6dded + crc: 0x8b005a53 type_id: 0x9f431aa6 full_name: "__uio_register_device" } @@ -326588,7 +326711,7 @@ elf_symbol { name: "__usb_create_hcd" is_defined: true symbol_type: FUNCTION - crc: 0x38ff606d + crc: 0x7997ba73 type_id: 0xab9a208d full_name: "__usb_create_hcd" } @@ -326606,7 +326729,7 @@ elf_symbol { name: "__v4l2_ctrl_modify_range" is_defined: true symbol_type: FUNCTION - crc: 0xa9a224fe + crc: 0xdcad37ae type_id: 0x90356b6c full_name: "__v4l2_ctrl_modify_range" } @@ -326615,7 +326738,7 @@ elf_symbol { name: "__v4l2_ctrl_s_ctrl" is_defined: true symbol_type: FUNCTION - crc: 0xeec9ec33 + crc: 0xaa870cf3 type_id: 0x93d4efe1 full_name: "__v4l2_ctrl_s_ctrl" } @@ -326624,7 +326747,7 @@ elf_symbol { name: "__v4l2_device_register_subdev_nodes" is_defined: true symbol_type: FUNCTION - crc: 0x815dc386 + crc: 0x459d3946 type_id: 0x9de6d8d5 full_name: "__v4l2_device_register_subdev_nodes" } @@ -326642,7 +326765,7 @@ elf_symbol { name: "__video_register_device" is_defined: true symbol_type: FUNCTION - crc: 0x927e2d9c + crc: 0xc4d63cd9 type_id: 0x9f0d3989 full_name: "__video_register_device" } @@ -326741,7 +326864,7 @@ elf_symbol { name: "__xdp_rxq_info_reg" is_defined: true symbol_type: FUNCTION - crc: 0xf04079a1 + crc: 0x78eb669a type_id: 0x954d9028 full_name: "__xdp_rxq_info_reg" } @@ -326750,7 +326873,7 @@ elf_symbol { name: "__xfrm_state_destroy" is_defined: true symbol_type: FUNCTION - crc: 0x93a22f5d + crc: 0xb7585919 type_id: 0x10605221 full_name: "__xfrm_state_destroy" } @@ -326759,7 +326882,7 @@ elf_symbol { name: "_copy_from_iter" is_defined: true symbol_type: FUNCTION - crc: 0x0e900536 + crc: 0x8af4ada8 type_id: 0x92cb9949 full_name: "_copy_from_iter" } @@ -326768,7 +326891,7 @@ elf_symbol { name: "_copy_to_iter" is_defined: true symbol_type: FUNCTION - crc: 0x8dc1d9e3 + crc: 0x08adbfbf type_id: 0x9aa3057f full_name: "_copy_to_iter" } @@ -326786,7 +326909,7 @@ elf_symbol { name: "_dev_crit" is_defined: true symbol_type: FUNCTION - crc: 0xb57f7e78 + crc: 0x4b072ffe type_id: 0x1fa0c57a full_name: "_dev_crit" } @@ -326795,7 +326918,7 @@ elf_symbol { name: "_dev_emerg" is_defined: true symbol_type: FUNCTION - crc: 0x14a1c16d + crc: 0x442b445f type_id: 0x1fa0c57a full_name: "_dev_emerg" } @@ -326804,7 +326927,7 @@ elf_symbol { name: "_dev_err" is_defined: true symbol_type: FUNCTION - crc: 0xec94d72c + crc: 0x13936c82 type_id: 0x1fa0c57a full_name: "_dev_err" } @@ -326813,7 +326936,7 @@ elf_symbol { name: "_dev_info" is_defined: true symbol_type: FUNCTION - crc: 0x8153f1e8 + crc: 0x09514397 type_id: 0x1fa0c57a full_name: "_dev_info" } @@ -326822,7 +326945,7 @@ elf_symbol { name: "_dev_notice" is_defined: true symbol_type: FUNCTION - crc: 0x71d6a789 + crc: 0x83946607 type_id: 0x1fa0c57a full_name: "_dev_notice" } @@ -326831,7 +326954,7 @@ elf_symbol { name: "_dev_printk" is_defined: true symbol_type: FUNCTION - crc: 0x3d2631a5 + crc: 0x1a121426 type_id: 0x1feff59b full_name: "_dev_printk" } @@ -326840,7 +326963,7 @@ elf_symbol { name: "_dev_warn" is_defined: true symbol_type: FUNCTION - crc: 0x80878424 + crc: 0x065589d6 type_id: 0x1fa0c57a full_name: "_dev_warn" } @@ -326930,7 +327053,7 @@ elf_symbol { name: "_proc_mkdir" is_defined: true symbol_type: FUNCTION - crc: 0x9e868f44 + crc: 0x5c43b84b type_id: 0x394358ea full_name: "_proc_mkdir" } @@ -327200,7 +327323,7 @@ elf_symbol { name: "access_process_vm" is_defined: true symbol_type: FUNCTION - crc: 0xb427e7d1 + crc: 0x348a5d17 type_id: 0x9a0cfe73 full_name: "access_process_vm" } @@ -327209,7 +327332,7 @@ elf_symbol { name: "activate_task" is_defined: true symbol_type: FUNCTION - crc: 0x5952c989 + crc: 0x241ed727 type_id: 0x1b7558dd full_name: "activate_task" } @@ -327299,7 +327422,7 @@ elf_symbol { name: "addrconf_add_linklocal" is_defined: true symbol_type: FUNCTION - crc: 0xf8c8598f + crc: 0xde593e4c type_id: 0x1eaf1d5f full_name: "addrconf_add_linklocal" } @@ -327308,7 +327431,7 @@ elf_symbol { name: "addrconf_prefix_rcv_add_addr" is_defined: true symbol_type: FUNCTION - crc: 0xe067a430 + crc: 0x980d3c36 type_id: 0x9e6d2eab full_name: "addrconf_prefix_rcv_add_addr" } @@ -327317,7 +327440,7 @@ elf_symbol { name: "adjust_managed_page_count" is_defined: true symbol_type: FUNCTION - crc: 0x425b3588 + crc: 0x2672b00e type_id: 0x12c8be42 full_name: "adjust_managed_page_count" } @@ -327389,7 +327512,7 @@ elf_symbol { name: "alarmtimer_get_rtcdev" is_defined: true symbol_type: FUNCTION - crc: 0x81eadc3e + crc: 0x917214ac type_id: 0x7e8c435e full_name: "alarmtimer_get_rtcdev" } @@ -327407,7 +327530,7 @@ elf_symbol { name: "alloc_anon_inode" is_defined: true symbol_type: FUNCTION - crc: 0x80f9fd0f + crc: 0xa9e76f74 type_id: 0x12d6b73d full_name: "alloc_anon_inode" } @@ -327416,7 +327539,7 @@ elf_symbol { name: "alloc_can_err_skb" is_defined: true symbol_type: FUNCTION - crc: 0x31a9bce7 + crc: 0xeaeb5ffa type_id: 0x6408a046 full_name: "alloc_can_err_skb" } @@ -327425,7 +327548,7 @@ elf_symbol { name: "alloc_can_skb" is_defined: true symbol_type: FUNCTION - crc: 0x4c28bb10 + crc: 0x41395200 type_id: 0x6408a046 full_name: "alloc_can_skb" } @@ -327434,7 +327557,7 @@ elf_symbol { name: "alloc_candev_mqs" is_defined: true symbol_type: FUNCTION - crc: 0xa3817f47 + crc: 0x49b767ef type_id: 0xe4bddbe2 full_name: "alloc_candev_mqs" } @@ -327443,7 +327566,7 @@ elf_symbol { name: "alloc_canfd_skb" is_defined: true symbol_type: FUNCTION - crc: 0xaaffc6c7 + crc: 0x93504fcb type_id: 0x643d13df full_name: "alloc_canfd_skb" } @@ -327452,7 +327575,7 @@ elf_symbol { name: "alloc_canxl_skb" is_defined: true symbol_type: FUNCTION - crc: 0x51d37e4d + crc: 0x7528f665 type_id: 0x641b717f full_name: "alloc_canxl_skb" } @@ -327470,7 +327593,7 @@ elf_symbol { name: "alloc_etherdev_mqs" is_defined: true symbol_type: FUNCTION - crc: 0x77f6f88e + crc: 0x7c626f5b type_id: 0xe4bccdf7 full_name: "alloc_etherdev_mqs" } @@ -327479,7 +327602,7 @@ elf_symbol { name: "alloc_io_pgtable_ops" is_defined: true symbol_type: FUNCTION - crc: 0xb13e415a + crc: 0x9b97d5e4 type_id: 0xca4b711f full_name: "alloc_io_pgtable_ops" } @@ -327488,7 +327611,7 @@ elf_symbol { name: "alloc_netdev_mqs" is_defined: true symbol_type: FUNCTION - crc: 0x22dbe161 + crc: 0x18995b14 type_id: 0xe554bdb1 full_name: "alloc_netdev_mqs" } @@ -327506,7 +327629,7 @@ elf_symbol { name: "alloc_skb_with_frags" is_defined: true symbol_type: FUNCTION - crc: 0x6836bb72 + crc: 0x6638055b type_id: 0x64970caf full_name: "alloc_skb_with_frags" } @@ -327533,7 +327656,7 @@ elf_symbol { name: "amba_bustype" is_defined: true symbol_type: OBJECT - crc: 0x3f275746 + crc: 0xa6132564 type_id: 0x257935aa full_name: "amba_bustype" } @@ -327542,7 +327665,7 @@ elf_symbol { name: "amba_driver_register" is_defined: true symbol_type: FUNCTION - crc: 0x00a7810a + crc: 0x3ac52b3b type_id: 0x92a877e0 full_name: "amba_driver_register" } @@ -327551,7 +327674,7 @@ elf_symbol { name: "amba_driver_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xf9c9361f + crc: 0x8bd514f0 type_id: 0x1fb0c55c full_name: "amba_driver_unregister" } @@ -327560,7 +327683,7 @@ elf_symbol { name: "amba_release_regions" is_defined: true symbol_type: FUNCTION - crc: 0x64e4ebe4 + crc: 0xceef9c20 type_id: 0x1edfcb66 full_name: "amba_release_regions" } @@ -327569,7 +327692,7 @@ elf_symbol { name: "amba_request_regions" is_defined: true symbol_type: FUNCTION - crc: 0xee294ec0 + crc: 0x594eadaa type_id: 0x933f3b0e full_name: "amba_request_regions" } @@ -327587,7 +327710,7 @@ elf_symbol { name: "anon_inode_getfd" is_defined: true symbol_type: FUNCTION - crc: 0x442db15a + crc: 0x0de38eaa type_id: 0x92d83970 full_name: "anon_inode_getfd" } @@ -327596,7 +327719,7 @@ elf_symbol { name: "anon_inode_getfile" is_defined: true symbol_type: FUNCTION - crc: 0x52dd6343 + crc: 0x2825980e type_id: 0x4eca3251 full_name: "anon_inode_getfile" } @@ -327740,7 +327863,7 @@ elf_symbol { name: "auxiliary_driver_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x0d600d4b + crc: 0x7749875f type_id: 0x1402b86b full_name: "auxiliary_driver_unregister" } @@ -327758,7 +327881,7 @@ elf_symbol { name: "backlight_device_get_by_type" is_defined: true symbol_type: FUNCTION - crc: 0x6514f271 + crc: 0xe65d5bdb type_id: 0x5f2659b9 full_name: "backlight_device_get_by_type" } @@ -327767,7 +327890,7 @@ elf_symbol { name: "backlight_device_register" is_defined: true symbol_type: FUNCTION - crc: 0xcc78dbd8 + crc: 0x4ade60e7 type_id: 0x7330f867 full_name: "backlight_device_register" } @@ -327776,7 +327899,7 @@ elf_symbol { name: "backlight_device_set_brightness" is_defined: true symbol_type: FUNCTION - crc: 0xd2cbf805 + crc: 0x98bcfff8 type_id: 0x916a6d3b full_name: "backlight_device_set_brightness" } @@ -327785,7 +327908,7 @@ elf_symbol { name: "backlight_device_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x215fa386 + crc: 0x8dd108f3 type_id: 0x1cbf0a15 full_name: "backlight_device_unregister" } @@ -327794,7 +327917,7 @@ elf_symbol { name: "balance_dirty_pages_ratelimited" is_defined: true symbol_type: FUNCTION - crc: 0x66a9b613 + crc: 0x2464f51b type_id: 0x15f8fb52 full_name: "balance_dirty_pages_ratelimited" } @@ -327803,7 +327926,7 @@ elf_symbol { name: "balance_push_callback" is_defined: true symbol_type: OBJECT - crc: 0x867f6afe + crc: 0xcf00c018 type_id: 0x3e2562ef full_name: "balance_push_callback" } @@ -327812,7 +327935,7 @@ elf_symbol { name: "balloon_mops" is_defined: true symbol_type: OBJECT - crc: 0x33b408fb + crc: 0x42dda6df type_id: 0xf34f7202 full_name: "balloon_mops" } @@ -327821,7 +327944,7 @@ elf_symbol { name: "balloon_page_alloc" is_defined: true symbol_type: FUNCTION - crc: 0xd4b58e35 + crc: 0x7cea7408 type_id: 0xbd98f080 full_name: "balloon_page_alloc" } @@ -327830,7 +327953,7 @@ elf_symbol { name: "balloon_page_dequeue" is_defined: true symbol_type: FUNCTION - crc: 0x0f078e7d + crc: 0x01b19646 type_id: 0xbd9523d9 full_name: "balloon_page_dequeue" } @@ -327839,7 +327962,7 @@ elf_symbol { name: "balloon_page_enqueue" is_defined: true symbol_type: FUNCTION - crc: 0x314862bb + crc: 0x57ef653f type_id: 0x108f8fb0 full_name: "balloon_page_enqueue" } @@ -327866,7 +327989,7 @@ elf_symbol { name: "bdev_end_io_acct" is_defined: true symbol_type: FUNCTION - crc: 0x303594c4 + crc: 0x0b1dcff4 type_id: 0x11b1f76e full_name: "bdev_end_io_acct" } @@ -327875,7 +327998,7 @@ elf_symbol { name: "bdev_start_io_acct" is_defined: true symbol_type: FUNCTION - crc: 0x732d9dd8 + crc: 0x12b5d5e2 type_id: 0x33937c96 full_name: "bdev_start_io_acct" } @@ -327884,7 +328007,7 @@ elf_symbol { name: "bdi_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x97bb2c1b + crc: 0x5259c9b8 type_id: 0x5120d3a0 full_name: "bdi_alloc" } @@ -327893,7 +328016,7 @@ elf_symbol { name: "bdi_put" is_defined: true symbol_type: FUNCTION - crc: 0x3d15e84f + crc: 0x72d46539 type_id: 0x1aa56a0d full_name: "bdi_put" } @@ -327902,7 +328025,7 @@ elf_symbol { name: "bdi_register" is_defined: true symbol_type: FUNCTION - crc: 0x0ad5cb4c + crc: 0xa8d44e09 type_id: 0x976cd0e7 full_name: "bdi_register" } @@ -327911,7 +328034,7 @@ elf_symbol { name: "bgpio_init" is_defined: true symbol_type: FUNCTION - crc: 0x6a0eeaa0 + crc: 0x719689cf type_id: 0x9bbcaaf0 full_name: "bgpio_init" } @@ -327929,7 +328052,7 @@ elf_symbol { name: "bio_add_page" is_defined: true symbol_type: FUNCTION - crc: 0x9f4117cc + crc: 0x4d631624 type_id: 0x98e25911 full_name: "bio_add_page" } @@ -327938,7 +328061,7 @@ elf_symbol { name: "bio_alloc_bioset" is_defined: true symbol_type: FUNCTION - crc: 0x53718746 + crc: 0x663c79cb type_id: 0x935a996a full_name: "bio_alloc_bioset" } @@ -327947,7 +328070,7 @@ elf_symbol { name: "bio_associate_blkg" is_defined: true symbol_type: FUNCTION - crc: 0xfd7acef7 + crc: 0xead58ab2 type_id: 0x15f0919b full_name: "bio_associate_blkg" } @@ -327956,7 +328079,7 @@ elf_symbol { name: "bio_chain" is_defined: true symbol_type: FUNCTION - crc: 0xdb153fac + crc: 0xd2df52cd type_id: 0x15a61d9b full_name: "bio_chain" } @@ -327965,7 +328088,7 @@ elf_symbol { name: "bio_clone_blkg_association" is_defined: true symbol_type: FUNCTION - crc: 0x247591db + crc: 0x0ed3ccca type_id: 0x15a61d9b full_name: "bio_clone_blkg_association" } @@ -327974,7 +328097,7 @@ elf_symbol { name: "bio_end_io_acct_remapped" is_defined: true symbol_type: FUNCTION - crc: 0xe51ab376 + crc: 0xf6d10806 type_id: 0x153e4f8f full_name: "bio_end_io_acct_remapped" } @@ -327983,7 +328106,7 @@ elf_symbol { name: "bio_endio" is_defined: true symbol_type: FUNCTION - crc: 0xbd31f306 + crc: 0x55183cf1 type_id: 0x15f0919b full_name: "bio_endio" } @@ -327992,7 +328115,7 @@ elf_symbol { name: "bio_put" is_defined: true symbol_type: FUNCTION - crc: 0x65475c2b + crc: 0xf1796b1e type_id: 0x15f0919b full_name: "bio_put" } @@ -328001,7 +328124,7 @@ elf_symbol { name: "bio_start_io_acct" is_defined: true symbol_type: FUNCTION - crc: 0x1d706edd + crc: 0x677880e7 type_id: 0x34c40d5b full_name: "bio_start_io_acct" } @@ -328118,7 +328241,7 @@ elf_symbol { name: "blk_execute_rq" is_defined: true symbol_type: FUNCTION - crc: 0x4619d2a7 + crc: 0x31a9d8b6 type_id: 0x4c603ab7 full_name: "blk_execute_rq" } @@ -328127,7 +328250,7 @@ elf_symbol { name: "blk_execute_rq_nowait" is_defined: true symbol_type: FUNCTION - crc: 0xb5bd5136 + crc: 0x2c5b01a4 type_id: 0x168d2c88 full_name: "blk_execute_rq_nowait" } @@ -328136,7 +328259,7 @@ elf_symbol { name: "blk_mq_alloc_request" is_defined: true symbol_type: FUNCTION - crc: 0x96cafc26 + crc: 0x26f09d41 type_id: 0xdde97c3b full_name: "blk_mq_alloc_request" } @@ -328145,7 +328268,7 @@ elf_symbol { name: "blk_mq_alloc_sq_tag_set" is_defined: true symbol_type: FUNCTION - crc: 0xb1dec8a1 + crc: 0x4b808fd5 type_id: 0x967da352 full_name: "blk_mq_alloc_sq_tag_set" } @@ -328154,7 +328277,7 @@ elf_symbol { name: "blk_mq_alloc_tag_set" is_defined: true symbol_type: FUNCTION - crc: 0x18e796e5 + crc: 0xf21e1118 type_id: 0x96b0de71 full_name: "blk_mq_alloc_tag_set" } @@ -328163,7 +328286,7 @@ elf_symbol { name: "blk_mq_complete_request" is_defined: true symbol_type: FUNCTION - crc: 0xe4718a72 + crc: 0xd19be712 type_id: 0x1738d1f7 full_name: "blk_mq_complete_request" } @@ -328172,7 +328295,7 @@ elf_symbol { name: "blk_mq_end_request" is_defined: true symbol_type: FUNCTION - crc: 0xc4dc3026 + crc: 0x062c3ec1 type_id: 0x16d771f6 full_name: "blk_mq_end_request" } @@ -328181,7 +328304,7 @@ elf_symbol { name: "blk_mq_end_request_batch" is_defined: true symbol_type: FUNCTION - crc: 0x45b6a272 + crc: 0xe00ae48c type_id: 0x19ae6079 full_name: "blk_mq_end_request_batch" } @@ -328190,7 +328313,7 @@ elf_symbol { name: "blk_mq_free_request" is_defined: true symbol_type: FUNCTION - crc: 0x53710b05 + crc: 0x6c46ab6c type_id: 0x1738d1f7 full_name: "blk_mq_free_request" } @@ -328199,7 +328322,7 @@ elf_symbol { name: "blk_mq_free_tag_set" is_defined: true symbol_type: FUNCTION - crc: 0x0f2aef61 + crc: 0x88d9d686 type_id: 0x1ba86ccd full_name: "blk_mq_free_tag_set" } @@ -328208,7 +328331,7 @@ elf_symbol { name: "blk_mq_freeze_queue" is_defined: true symbol_type: FUNCTION - crc: 0xc693a9dc + crc: 0x65e7a629 type_id: 0x12c8ce83 full_name: "blk_mq_freeze_queue" } @@ -328217,7 +328340,7 @@ elf_symbol { name: "blk_mq_init_queue" is_defined: true symbol_type: FUNCTION - crc: 0xd2f17ed6 + crc: 0x57e341d2 type_id: 0x69e09f9b full_name: "blk_mq_init_queue" } @@ -328235,7 +328358,7 @@ elf_symbol { name: "blk_mq_quiesce_queue" is_defined: true symbol_type: FUNCTION - crc: 0x2e504cc7 + crc: 0x1ed68e6e type_id: 0x12c8ce83 full_name: "blk_mq_quiesce_queue" } @@ -328244,7 +328367,7 @@ elf_symbol { name: "blk_mq_requeue_request" is_defined: true symbol_type: FUNCTION - crc: 0x7b9d1fd4 + crc: 0x6df17cd3 type_id: 0x168d2c88 full_name: "blk_mq_requeue_request" } @@ -328253,7 +328376,7 @@ elf_symbol { name: "blk_mq_rq_cpu" is_defined: true symbol_type: FUNCTION - crc: 0xf4a7208d + crc: 0xdd4b4288 type_id: 0xc97bfe9f full_name: "blk_mq_rq_cpu" } @@ -328262,7 +328385,7 @@ elf_symbol { name: "blk_mq_start_request" is_defined: true symbol_type: FUNCTION - crc: 0x1a81b55a + crc: 0xf5bfb98a type_id: 0x1738d1f7 full_name: "blk_mq_start_request" } @@ -328271,7 +328394,7 @@ elf_symbol { name: "blk_mq_start_stopped_hw_queues" is_defined: true symbol_type: FUNCTION - crc: 0xe5b08d47 + crc: 0x066c8ec1 type_id: 0x137d33fc full_name: "blk_mq_start_stopped_hw_queues" } @@ -328280,7 +328403,7 @@ elf_symbol { name: "blk_mq_stop_hw_queue" is_defined: true symbol_type: FUNCTION - crc: 0xe7b9c5c2 + crc: 0x60a934c8 type_id: 0x181a6fb5 full_name: "blk_mq_stop_hw_queue" } @@ -328289,7 +328412,7 @@ elf_symbol { name: "blk_mq_tagset_busy_iter" is_defined: true symbol_type: FUNCTION - crc: 0xe3a91bc2 + crc: 0x72e6d74d type_id: 0x1b939af9 full_name: "blk_mq_tagset_busy_iter" } @@ -328298,7 +328421,7 @@ elf_symbol { name: "blk_mq_unfreeze_queue" is_defined: true symbol_type: FUNCTION - crc: 0xe7dc1cd3 + crc: 0x9ea61c1d type_id: 0x12c8ce83 full_name: "blk_mq_unfreeze_queue" } @@ -328307,7 +328430,7 @@ elf_symbol { name: "blk_mq_unquiesce_queue" is_defined: true symbol_type: FUNCTION - crc: 0xbece1ee3 + crc: 0x3f993b61 type_id: 0x12c8ce83 full_name: "blk_mq_unquiesce_queue" } @@ -328316,7 +328439,7 @@ elf_symbol { name: "blk_mq_virtio_map_queues" is_defined: true symbol_type: FUNCTION - crc: 0x8828fc4b + crc: 0xb4b51c57 type_id: 0x15ff0e04 full_name: "blk_mq_virtio_map_queues" } @@ -328325,7 +328448,7 @@ elf_symbol { name: "blk_queue_alignment_offset" is_defined: true symbol_type: FUNCTION - crc: 0x44dff3eb + crc: 0x3510f288 type_id: 0x13dedb1b full_name: "blk_queue_alignment_offset" } @@ -328334,7 +328457,7 @@ elf_symbol { name: "blk_queue_flag_clear" is_defined: true symbol_type: FUNCTION - crc: 0xcdf63630 + crc: 0x8310d3b8 type_id: 0x01dc01ed full_name: "blk_queue_flag_clear" } @@ -328343,7 +328466,7 @@ elf_symbol { name: "blk_queue_flag_set" is_defined: true symbol_type: FUNCTION - crc: 0x7035284a + crc: 0xa5d1bd00 type_id: 0x01dc01ed full_name: "blk_queue_flag_set" } @@ -328352,7 +328475,7 @@ elf_symbol { name: "blk_queue_io_min" is_defined: true symbol_type: FUNCTION - crc: 0x099d776d + crc: 0xc5f52ce8 type_id: 0x13dedb1b full_name: "blk_queue_io_min" } @@ -328361,7 +328484,7 @@ elf_symbol { name: "blk_queue_io_opt" is_defined: true symbol_type: FUNCTION - crc: 0x36e578c8 + crc: 0x08fc544e type_id: 0x13dedb1b full_name: "blk_queue_io_opt" } @@ -328370,7 +328493,7 @@ elf_symbol { name: "blk_queue_logical_block_size" is_defined: true symbol_type: FUNCTION - crc: 0x219dc295 + crc: 0xc7f84ad0 type_id: 0x13dedb1b full_name: "blk_queue_logical_block_size" } @@ -328379,7 +328502,7 @@ elf_symbol { name: "blk_queue_max_discard_sectors" is_defined: true symbol_type: FUNCTION - crc: 0xcb37170f + crc: 0xb86ae954 type_id: 0x13dedb1b full_name: "blk_queue_max_discard_sectors" } @@ -328388,7 +328511,7 @@ elf_symbol { name: "blk_queue_max_discard_segments" is_defined: true symbol_type: FUNCTION - crc: 0xca613455 + crc: 0x7601783b type_id: 0x11ec3686 full_name: "blk_queue_max_discard_segments" } @@ -328397,7 +328520,7 @@ elf_symbol { name: "blk_queue_max_hw_sectors" is_defined: true symbol_type: FUNCTION - crc: 0x43c88dda + crc: 0x4faada8c type_id: 0x13dedb1b full_name: "blk_queue_max_hw_sectors" } @@ -328406,7 +328529,7 @@ elf_symbol { name: "blk_queue_max_secure_erase_sectors" is_defined: true symbol_type: FUNCTION - crc: 0x0f97c88f + crc: 0x79ffd1ad type_id: 0x13dedb1b full_name: "blk_queue_max_secure_erase_sectors" } @@ -328415,7 +328538,7 @@ elf_symbol { name: "blk_queue_max_segment_size" is_defined: true symbol_type: FUNCTION - crc: 0x11114efc + crc: 0xfe8bca3f type_id: 0x13dedb1b full_name: "blk_queue_max_segment_size" } @@ -328424,7 +328547,7 @@ elf_symbol { name: "blk_queue_max_segments" is_defined: true symbol_type: FUNCTION - crc: 0x3c063204 + crc: 0xa82172ee type_id: 0x11ec3686 full_name: "blk_queue_max_segments" } @@ -328433,7 +328556,7 @@ elf_symbol { name: "blk_queue_max_write_zeroes_sectors" is_defined: true symbol_type: FUNCTION - crc: 0xf7a7fef0 + crc: 0x2b67c770 type_id: 0x13dedb1b full_name: "blk_queue_max_write_zeroes_sectors" } @@ -328442,7 +328565,7 @@ elf_symbol { name: "blk_queue_physical_block_size" is_defined: true symbol_type: FUNCTION - crc: 0x0cdd41fa + crc: 0x8594a82f type_id: 0x13dedb1b full_name: "blk_queue_physical_block_size" } @@ -328451,7 +328574,7 @@ elf_symbol { name: "blk_queue_update_dma_alignment" is_defined: true symbol_type: FUNCTION - crc: 0xec95d121 + crc: 0x9256206a type_id: 0x13544dcf full_name: "blk_queue_update_dma_alignment" } @@ -328460,7 +328583,7 @@ elf_symbol { name: "blk_queue_update_dma_pad" is_defined: true symbol_type: FUNCTION - crc: 0x487c5fbb + crc: 0x20a79a43 type_id: 0x13dedb1b full_name: "blk_queue_update_dma_pad" } @@ -328469,7 +328592,7 @@ elf_symbol { name: "blk_queue_write_cache" is_defined: true symbol_type: FUNCTION - crc: 0x880f7515 + crc: 0xc85af394 type_id: 0x13666c2b full_name: "blk_queue_write_cache" } @@ -328478,7 +328601,7 @@ elf_symbol { name: "blk_rq_map_kern" is_defined: true symbol_type: FUNCTION - crc: 0xf00a2ba9 + crc: 0x0a4dcdc6 type_id: 0x9fad711c full_name: "blk_rq_map_kern" } @@ -328487,7 +328610,7 @@ elf_symbol { name: "blk_rq_map_user" is_defined: true symbol_type: FUNCTION - crc: 0xe2ba0b47 + crc: 0x868ccd8b type_id: 0x9faf0c45 full_name: "blk_rq_map_user" } @@ -328496,7 +328619,7 @@ elf_symbol { name: "blk_rq_map_user_io" is_defined: true symbol_type: FUNCTION - crc: 0x553a449f + crc: 0xe1fdcfe2 type_id: 0x9a77e52d full_name: "blk_rq_map_user_io" } @@ -328505,7 +328628,7 @@ elf_symbol { name: "blk_rq_map_user_iov" is_defined: true symbol_type: FUNCTION - crc: 0x8a3ab87e + crc: 0xa700079e type_id: 0x9faf8e70 full_name: "blk_rq_map_user_iov" } @@ -328514,7 +328637,7 @@ elf_symbol { name: "blk_rq_unmap_user" is_defined: true symbol_type: FUNCTION - crc: 0x6af7fd74 + crc: 0xef748f8a type_id: 0x98e82327 full_name: "blk_rq_unmap_user" } @@ -328532,7 +328655,7 @@ elf_symbol { name: "blk_update_request" is_defined: true symbol_type: FUNCTION - crc: 0xd53fb910 + crc: 0x06d2fa00 type_id: 0xf8fa1a38 full_name: "blk_update_request" } @@ -328541,7 +328664,7 @@ elf_symbol { name: "blkdev_get_by_dev" is_defined: true symbol_type: FUNCTION - crc: 0x8db989fa + crc: 0x3f05c65a type_id: 0x138bff3f full_name: "blkdev_get_by_dev" } @@ -328550,7 +328673,7 @@ elf_symbol { name: "blkdev_get_by_path" is_defined: true symbol_type: FUNCTION - crc: 0x515ece83 + crc: 0x4e5fa4e5 type_id: 0x26cc0900 full_name: "blkdev_get_by_path" } @@ -328559,7 +328682,7 @@ elf_symbol { name: "blkdev_issue_flush" is_defined: true symbol_type: FUNCTION - crc: 0xc10b5bac + crc: 0xd1a6dfa7 type_id: 0x9e8b6578 full_name: "blkdev_issue_flush" } @@ -328568,7 +328691,7 @@ elf_symbol { name: "blkdev_put" is_defined: true symbol_type: FUNCTION - crc: 0xa790db14 + crc: 0xd8b7b382 type_id: 0x11c6c94b full_name: "blkdev_put" } @@ -328622,7 +328745,7 @@ elf_symbol { name: "bpf_prog_add" is_defined: true symbol_type: FUNCTION - crc: 0xee903f30 + crc: 0x7e0f0b5f type_id: 0x1de47b51 full_name: "bpf_prog_add" } @@ -328631,7 +328754,7 @@ elf_symbol { name: "bpf_prog_put" is_defined: true symbol_type: FUNCTION - crc: 0x95573f40 + crc: 0xe9ecabf6 type_id: 0x1c78f81d full_name: "bpf_prog_put" } @@ -328640,7 +328763,7 @@ elf_symbol { name: "bpf_prog_sub" is_defined: true symbol_type: FUNCTION - crc: 0x27344f01 + crc: 0x45a452a0 type_id: 0x1de47b51 full_name: "bpf_prog_sub" } @@ -328658,7 +328781,7 @@ elf_symbol { name: "bpf_trace_run1" is_defined: true symbol_type: FUNCTION - crc: 0x88382d02 + crc: 0x382ac5af type_id: 0x1e3074d3 full_name: "bpf_trace_run1" } @@ -328667,7 +328790,7 @@ elf_symbol { name: "bpf_trace_run10" is_defined: true symbol_type: FUNCTION - crc: 0x935ca29f + crc: 0x5572fe1d type_id: 0x1e169275 full_name: "bpf_trace_run10" } @@ -328676,7 +328799,7 @@ elf_symbol { name: "bpf_trace_run11" is_defined: true symbol_type: FUNCTION - crc: 0xa2090f7a + crc: 0x0eee9b3a type_id: 0x1e169276 full_name: "bpf_trace_run11" } @@ -328685,7 +328808,7 @@ elf_symbol { name: "bpf_trace_run12" is_defined: true symbol_type: FUNCTION - crc: 0x5145b846 + crc: 0x462e0b32 type_id: 0x1e169277 full_name: "bpf_trace_run12" } @@ -328694,7 +328817,7 @@ elf_symbol { name: "bpf_trace_run2" is_defined: true symbol_type: FUNCTION - crc: 0x6806c773 + crc: 0xb68e452b type_id: 0x1e14fc1f full_name: "bpf_trace_run2" } @@ -328703,7 +328826,7 @@ elf_symbol { name: "bpf_trace_run3" is_defined: true symbol_type: FUNCTION - crc: 0x3864825c + crc: 0xcfea156c type_id: 0x1e16b493 full_name: "bpf_trace_run3" } @@ -328712,7 +328835,7 @@ elf_symbol { name: "bpf_trace_run4" is_defined: true symbol_type: FUNCTION - crc: 0x43c2950b + crc: 0x45341636 type_id: 0x1e16901b full_name: "bpf_trace_run4" } @@ -328721,7 +328844,7 @@ elf_symbol { name: "bpf_trace_run5" is_defined: true symbol_type: FUNCTION - crc: 0xf1004875 + crc: 0x193041a3 type_id: 0x1e169253 full_name: "bpf_trace_run5" } @@ -328730,7 +328853,7 @@ elf_symbol { name: "bpf_trace_run6" is_defined: true symbol_type: FUNCTION - crc: 0x74ec4e78 + crc: 0x8d90a2ad type_id: 0x1e169278 full_name: "bpf_trace_run6" } @@ -328739,7 +328862,7 @@ elf_symbol { name: "bpf_trace_run7" is_defined: true symbol_type: FUNCTION - crc: 0x593d4f2d + crc: 0xd76fe802 type_id: 0x1e169279 full_name: "bpf_trace_run7" } @@ -328748,7 +328871,7 @@ elf_symbol { name: "bpf_trace_run8" is_defined: true symbol_type: FUNCTION - crc: 0x83e62cf7 + crc: 0xdcac35fe type_id: 0x1e16927a full_name: "bpf_trace_run8" } @@ -328757,7 +328880,7 @@ elf_symbol { name: "bpf_trace_run9" is_defined: true symbol_type: FUNCTION - crc: 0x5dc6117d + crc: 0xe1c60078 type_id: 0x1e16927b full_name: "bpf_trace_run9" } @@ -328766,7 +328889,7 @@ elf_symbol { name: "bpf_warn_invalid_xdp_action" is_defined: true symbol_type: FUNCTION - crc: 0x86e112db + crc: 0x97b12d31 type_id: 0x1ccd91f4 full_name: "bpf_warn_invalid_xdp_action" } @@ -328784,7 +328907,7 @@ elf_symbol { name: "bsg_job_done" is_defined: true symbol_type: FUNCTION - crc: 0x6a3c9f9e + crc: 0x8e9cfeb7 type_id: 0x1fd78946 full_name: "bsg_job_done" } @@ -328793,7 +328916,7 @@ elf_symbol { name: "bsg_remove_queue" is_defined: true symbol_type: FUNCTION - crc: 0xca42efc0 + crc: 0x948f40e7 type_id: 0x12c8ce83 full_name: "bsg_remove_queue" } @@ -328802,7 +328925,7 @@ elf_symbol { name: "bsg_setup_queue" is_defined: true symbol_type: FUNCTION - crc: 0x3f4ca922 + crc: 0xe4e20d2e type_id: 0x62b8d7ec full_name: "bsg_setup_queue" } @@ -328811,7 +328934,7 @@ elf_symbol { name: "bt_accept_dequeue" is_defined: true symbol_type: FUNCTION - crc: 0xfec2ba06 + crc: 0x28d50f4c type_id: 0x6b5469c2 full_name: "bt_accept_dequeue" } @@ -328820,7 +328943,7 @@ elf_symbol { name: "bt_accept_enqueue" is_defined: true symbol_type: FUNCTION - crc: 0x207ed966 + crc: 0xf4363505 type_id: 0x17a71216 full_name: "bt_accept_enqueue" } @@ -328829,7 +328952,7 @@ elf_symbol { name: "bt_accept_unlink" is_defined: true symbol_type: FUNCTION - crc: 0xb62faf26 + crc: 0x2cb6d53c type_id: 0x17c95d08 full_name: "bt_accept_unlink" } @@ -328838,7 +328961,7 @@ elf_symbol { name: "bt_debugfs" is_defined: true symbol_type: OBJECT - crc: 0x08e3e278 + crc: 0xd8440631 type_id: 0x120540d1 full_name: "bt_debugfs" } @@ -328874,7 +328997,7 @@ elf_symbol { name: "bt_procfs_cleanup" is_defined: true symbol_type: FUNCTION - crc: 0x73007cdb + crc: 0xf40663a5 type_id: 0x13488e67 full_name: "bt_procfs_cleanup" } @@ -328883,7 +329006,7 @@ elf_symbol { name: "bt_procfs_init" is_defined: true symbol_type: FUNCTION - crc: 0x2829fab6 + crc: 0xc2e3e606 type_id: 0x9e559491 full_name: "bt_procfs_init" } @@ -328892,7 +329015,7 @@ elf_symbol { name: "bt_sock_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0xc9759816 + crc: 0x909e79a3 type_id: 0x9882219f full_name: "bt_sock_ioctl" } @@ -328901,7 +329024,7 @@ elf_symbol { name: "bt_sock_link" is_defined: true symbol_type: FUNCTION - crc: 0x354d919e + crc: 0x7a4aa6e3 type_id: 0x15f330e3 full_name: "bt_sock_link" } @@ -328910,7 +329033,7 @@ elf_symbol { name: "bt_sock_poll" is_defined: true symbol_type: FUNCTION - crc: 0x9413c8c9 + crc: 0xbd9ffbff type_id: 0x2545d8c8 full_name: "bt_sock_poll" } @@ -328919,7 +329042,7 @@ elf_symbol { name: "bt_sock_reclassify_lock" is_defined: true symbol_type: FUNCTION - crc: 0x20dbbea8 + crc: 0x5792650c type_id: 0x1655de44 full_name: "bt_sock_reclassify_lock" } @@ -328928,7 +329051,7 @@ elf_symbol { name: "bt_sock_recvmsg" is_defined: true symbol_type: FUNCTION - crc: 0x96d5abbc + crc: 0x9f447e80 type_id: 0x9917165a full_name: "bt_sock_recvmsg" } @@ -328937,7 +329060,7 @@ elf_symbol { name: "bt_sock_register" is_defined: true symbol_type: FUNCTION - crc: 0x6de91ef2 + crc: 0xbd96b5a3 type_id: 0x84acfa74 full_name: "bt_sock_register" } @@ -328946,7 +329069,7 @@ elf_symbol { name: "bt_sock_stream_recvmsg" is_defined: true symbol_type: FUNCTION - crc: 0x24fe60bf + crc: 0x2c063dc7 type_id: 0x9917165a full_name: "bt_sock_stream_recvmsg" } @@ -328955,7 +329078,7 @@ elf_symbol { name: "bt_sock_unlink" is_defined: true symbol_type: FUNCTION - crc: 0xaa4766b8 + crc: 0x8bcbbeb0 type_id: 0x15f330e3 full_name: "bt_sock_unlink" } @@ -328973,7 +329096,7 @@ elf_symbol { name: "bt_sock_wait_ready" is_defined: true symbol_type: FUNCTION - crc: 0x4adbf7e0 + crc: 0x3ade5039 type_id: 0x9bc7fa2c full_name: "bt_sock_wait_ready" } @@ -328982,7 +329105,7 @@ elf_symbol { name: "bt_sock_wait_state" is_defined: true symbol_type: FUNCTION - crc: 0xa2db33b4 + crc: 0x6633dfc2 type_id: 0x9b41b1a1 full_name: "bt_sock_wait_state" } @@ -329027,7 +329150,7 @@ elf_symbol { name: "btbcm_check_bdaddr" is_defined: true symbol_type: FUNCTION - crc: 0xf2fa6a51 + crc: 0x980d6cca type_id: 0x9af01625 full_name: "btbcm_check_bdaddr" } @@ -329036,7 +329159,7 @@ elf_symbol { name: "btbcm_finalize" is_defined: true symbol_type: FUNCTION - crc: 0x1309b985 + crc: 0x2e280358 type_id: 0x9aac764b full_name: "btbcm_finalize" } @@ -329045,7 +329168,7 @@ elf_symbol { name: "btbcm_initialize" is_defined: true symbol_type: FUNCTION - crc: 0x6e5f3e40 + crc: 0xa9039bd7 type_id: 0x9aac764b full_name: "btbcm_initialize" } @@ -329054,7 +329177,7 @@ elf_symbol { name: "btbcm_patchram" is_defined: true symbol_type: FUNCTION - crc: 0x986a53e5 + crc: 0x6d234446 type_id: 0x9a3c1260 full_name: "btbcm_patchram" } @@ -329063,7 +329186,7 @@ elf_symbol { name: "btbcm_read_pcm_int_params" is_defined: true symbol_type: FUNCTION - crc: 0xd5f74fcf + crc: 0x9b44b8dd type_id: 0x9a4917d6 full_name: "btbcm_read_pcm_int_params" } @@ -329072,7 +329195,7 @@ elf_symbol { name: "btbcm_set_bdaddr" is_defined: true symbol_type: FUNCTION - crc: 0x6694e921 + crc: 0x51e11a28 type_id: 0x9a2fc16a full_name: "btbcm_set_bdaddr" } @@ -329081,7 +329204,7 @@ elf_symbol { name: "btbcm_setup_apple" is_defined: true symbol_type: FUNCTION - crc: 0x5f97b8ba + crc: 0xa63cdd0d type_id: 0x9af01625 full_name: "btbcm_setup_apple" } @@ -329090,7 +329213,7 @@ elf_symbol { name: "btbcm_setup_patchram" is_defined: true symbol_type: FUNCTION - crc: 0x691b43f3 + crc: 0xb12d5973 type_id: 0x9af01625 full_name: "btbcm_setup_patchram" } @@ -329099,7 +329222,7 @@ elf_symbol { name: "btbcm_write_pcm_int_params" is_defined: true symbol_type: FUNCTION - crc: 0xc927e0b1 + crc: 0x380c3e7c type_id: 0x9a22976b full_name: "btbcm_write_pcm_int_params" } @@ -329108,7 +329231,7 @@ elf_symbol { name: "build_skb" is_defined: true symbol_type: FUNCTION - crc: 0xe058ac03 + crc: 0x54792eb8 type_id: 0x6fa775f5 full_name: "build_skb" } @@ -329117,7 +329240,7 @@ elf_symbol { name: "bus_find_device" is_defined: true symbol_type: FUNCTION - crc: 0x4f97c0be + crc: 0x4df57dbf type_id: 0xaddb3e9f full_name: "bus_find_device" } @@ -329126,7 +329249,7 @@ elf_symbol { name: "bus_for_each_dev" is_defined: true symbol_type: FUNCTION - crc: 0xade7e997 + crc: 0xf05074c6 type_id: 0x9d7c8594 full_name: "bus_for_each_dev" } @@ -329135,7 +329258,7 @@ elf_symbol { name: "bus_for_each_drv" is_defined: true symbol_type: FUNCTION - crc: 0x815d4cef + crc: 0x6632b984 type_id: 0x9dbc74e0 full_name: "bus_for_each_drv" } @@ -329144,7 +329267,7 @@ elf_symbol { name: "bus_register" is_defined: true symbol_type: FUNCTION - crc: 0xf7136d53 + crc: 0xfde1dd74 type_id: 0x9d737e1c full_name: "bus_register" } @@ -329153,7 +329276,7 @@ elf_symbol { name: "bus_register_notifier" is_defined: true symbol_type: FUNCTION - crc: 0x33ae5d1b + crc: 0xa1eee288 type_id: 0x9d1da48d full_name: "bus_register_notifier" } @@ -329162,7 +329285,7 @@ elf_symbol { name: "bus_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x8a37a25e + crc: 0xdeb061fb type_id: 0x106bcca0 full_name: "bus_unregister" } @@ -329171,7 +329294,7 @@ elf_symbol { name: "bus_unregister_notifier" is_defined: true symbol_type: FUNCTION - crc: 0xad0b1cca + crc: 0x603a908f type_id: 0x9d1da48d full_name: "bus_unregister_notifier" } @@ -329196,7 +329319,7 @@ elf_symbol { name: "call_netdevice_notifiers" is_defined: true symbol_type: FUNCTION - crc: 0x35f34a75 + crc: 0x4d40ce56 type_id: 0x91972281 full_name: "call_netdevice_notifiers" } @@ -329241,7 +329364,7 @@ elf_symbol { name: "can_bus_off" is_defined: true symbol_type: FUNCTION - crc: 0x7c0a1fa8 + crc: 0x479f9df4 type_id: 0x1c31d966 full_name: "can_bus_off" } @@ -329250,7 +329373,7 @@ elf_symbol { name: "can_change_mtu" is_defined: true symbol_type: FUNCTION - crc: 0xaaaa4d72 + crc: 0xbaeac14c type_id: 0x90b5e896 full_name: "can_change_mtu" } @@ -329259,7 +329382,7 @@ elf_symbol { name: "can_change_state" is_defined: true symbol_type: FUNCTION - crc: 0xb67f2712 + crc: 0xc4b6a230 type_id: 0x1c6ae2fd full_name: "can_change_state" } @@ -329268,7 +329391,7 @@ elf_symbol { name: "can_dropped_invalid_skb" is_defined: true symbol_type: FUNCTION - crc: 0xa7c9492b + crc: 0x39d379bb type_id: 0xf218ee55 full_name: "can_dropped_invalid_skb" } @@ -329277,7 +329400,7 @@ elf_symbol { name: "can_eth_ioctl_hwts" is_defined: true symbol_type: FUNCTION - crc: 0x697dc515 + crc: 0x98cc04e8 type_id: 0x91e86e2c full_name: "can_eth_ioctl_hwts" } @@ -329286,7 +329409,7 @@ elf_symbol { name: "can_ethtool_op_get_ts_info_hwts" is_defined: true symbol_type: FUNCTION - crc: 0xb3d898a1 + crc: 0x6b50e1f6 type_id: 0x916bd4e5 full_name: "can_ethtool_op_get_ts_info_hwts" } @@ -329313,7 +329436,7 @@ elf_symbol { name: "can_free_echo_skb" is_defined: true symbol_type: FUNCTION - crc: 0xd75feb18 + crc: 0x08935df2 type_id: 0x1d2130a6 full_name: "can_free_echo_skb" } @@ -329322,7 +329445,7 @@ elf_symbol { name: "can_get_echo_skb" is_defined: true symbol_type: FUNCTION - crc: 0xd4b46eec + crc: 0xc5f3e9e7 type_id: 0xc3621fce full_name: "can_get_echo_skb" } @@ -329340,7 +329463,7 @@ elf_symbol { name: "can_proto_register" is_defined: true symbol_type: FUNCTION - crc: 0x1e20bbfa + crc: 0x9a0674e2 type_id: 0x93fb658b full_name: "can_proto_register" } @@ -329349,7 +329472,7 @@ elf_symbol { name: "can_proto_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x065400eb + crc: 0x8c69163a type_id: 0x1ee3d737 full_name: "can_proto_unregister" } @@ -329358,7 +329481,7 @@ elf_symbol { name: "can_put_echo_skb" is_defined: true symbol_type: FUNCTION - crc: 0x7541dba8 + crc: 0x5d703a66 type_id: 0x9c09d6aa full_name: "can_put_echo_skb" } @@ -329367,7 +329490,7 @@ elf_symbol { name: "can_rx_offload_add_fifo" is_defined: true symbol_type: FUNCTION - crc: 0x93c3fd28 + crc: 0x09d6e2ca type_id: 0x91c43545 full_name: "can_rx_offload_add_fifo" } @@ -329376,7 +329499,7 @@ elf_symbol { name: "can_rx_offload_add_manual" is_defined: true symbol_type: FUNCTION - crc: 0x43a90232 + crc: 0x5cfd12a6 type_id: 0x91c43545 full_name: "can_rx_offload_add_manual" } @@ -329385,7 +329508,7 @@ elf_symbol { name: "can_rx_offload_add_timestamp" is_defined: true symbol_type: FUNCTION - crc: 0xd98556f8 + crc: 0xf6cf117f type_id: 0x91d5541c full_name: "can_rx_offload_add_timestamp" } @@ -329394,7 +329517,7 @@ elf_symbol { name: "can_rx_offload_del" is_defined: true symbol_type: FUNCTION - crc: 0x13418e61 + crc: 0xc9f45506 type_id: 0x1f5badff full_name: "can_rx_offload_del" } @@ -329403,7 +329526,7 @@ elf_symbol { name: "can_rx_offload_enable" is_defined: true symbol_type: FUNCTION - crc: 0xe85cea02 + crc: 0xdc574a43 type_id: 0x1f5badff full_name: "can_rx_offload_enable" } @@ -329412,7 +329535,7 @@ elf_symbol { name: "can_rx_offload_get_echo_skb" is_defined: true symbol_type: FUNCTION - crc: 0x28e18e73 + crc: 0x70fc440a type_id: 0xc03cbac0 full_name: "can_rx_offload_get_echo_skb" } @@ -329421,7 +329544,7 @@ elf_symbol { name: "can_rx_offload_irq_finish" is_defined: true symbol_type: FUNCTION - crc: 0xe3ee0f3c + crc: 0x0ef9e391 type_id: 0x1f5badff full_name: "can_rx_offload_irq_finish" } @@ -329430,7 +329553,7 @@ elf_symbol { name: "can_rx_offload_irq_offload_fifo" is_defined: true symbol_type: FUNCTION - crc: 0x693c9454 + crc: 0xe1500402 type_id: 0x92431f43 full_name: "can_rx_offload_irq_offload_fifo" } @@ -329439,7 +329562,7 @@ elf_symbol { name: "can_rx_offload_irq_offload_timestamp" is_defined: true symbol_type: FUNCTION - crc: 0xc77d3c7b + crc: 0xf528c5f3 type_id: 0x900b938d full_name: "can_rx_offload_irq_offload_timestamp" } @@ -329448,7 +329571,7 @@ elf_symbol { name: "can_rx_offload_queue_tail" is_defined: true symbol_type: FUNCTION - crc: 0xda383ce2 + crc: 0x904a523a type_id: 0x925622e7 full_name: "can_rx_offload_queue_tail" } @@ -329457,7 +329580,7 @@ elf_symbol { name: "can_rx_offload_queue_timestamp" is_defined: true symbol_type: FUNCTION - crc: 0x08964144 + crc: 0x589e5582 type_id: 0x926460ed full_name: "can_rx_offload_queue_timestamp" } @@ -329466,7 +329589,7 @@ elf_symbol { name: "can_rx_offload_threaded_irq_finish" is_defined: true symbol_type: FUNCTION - crc: 0xb98ef92c + crc: 0xefac8e06 type_id: 0x1f5badff full_name: "can_rx_offload_threaded_irq_finish" } @@ -329475,7 +329598,7 @@ elf_symbol { name: "can_rx_register" is_defined: true symbol_type: FUNCTION - crc: 0x11019184 + crc: 0xec8c7334 type_id: 0x9e789129 full_name: "can_rx_register" } @@ -329484,7 +329607,7 @@ elf_symbol { name: "can_rx_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x059379fd + crc: 0x447da206 type_id: 0x13602394 full_name: "can_rx_unregister" } @@ -329493,7 +329616,7 @@ elf_symbol { name: "can_send" is_defined: true symbol_type: FUNCTION - crc: 0x926d4c07 + crc: 0xcac54ad6 type_id: 0x9d4fba25 full_name: "can_send" } @@ -329502,7 +329625,7 @@ elf_symbol { name: "can_skb_get_frame_len" is_defined: true symbol_type: FUNCTION - crc: 0x8c5714b4 + crc: 0xc6ca2037 type_id: 0xc1439b43 full_name: "can_skb_get_frame_len" } @@ -329511,7 +329634,7 @@ elf_symbol { name: "can_sock_destruct" is_defined: true symbol_type: FUNCTION - crc: 0x3d261e74 + crc: 0xcf838efe type_id: 0x17c95d08 full_name: "can_sock_destruct" } @@ -329556,7 +329679,7 @@ elf_symbol { name: "cdc_parse_cdc_header" is_defined: true symbol_type: FUNCTION - crc: 0x94da2f43 + crc: 0x047c20a2 type_id: 0x99ed2791 full_name: "cdc_parse_cdc_header" } @@ -329565,7 +329688,7 @@ elf_symbol { name: "cdev_add" is_defined: true symbol_type: FUNCTION - crc: 0x29b0399f + crc: 0x80d8ec36 type_id: 0x996ed754 full_name: "cdev_add" } @@ -329574,7 +329697,7 @@ elf_symbol { name: "cdev_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x801e99fc + crc: 0xfd73e985 type_id: 0x6e128fdc full_name: "cdev_alloc" } @@ -329583,7 +329706,7 @@ elf_symbol { name: "cdev_del" is_defined: true symbol_type: FUNCTION - crc: 0x93088317 + crc: 0xb8010fc9 type_id: 0x17cb3906 full_name: "cdev_del" } @@ -329592,7 +329715,7 @@ elf_symbol { name: "cdev_device_add" is_defined: true symbol_type: FUNCTION - crc: 0x55e3bc5e + crc: 0xbd63e142 type_id: 0x9adae85f full_name: "cdev_device_add" } @@ -329601,7 +329724,7 @@ elf_symbol { name: "cdev_device_del" is_defined: true symbol_type: FUNCTION - crc: 0xc8752951 + crc: 0xf98141c7 type_id: 0x17c25ae3 full_name: "cdev_device_del" } @@ -329610,7 +329733,7 @@ elf_symbol { name: "cdev_init" is_defined: true symbol_type: FUNCTION - crc: 0xaa522bd5 + crc: 0x02a09c88 type_id: 0x17107dc5 full_name: "cdev_init" } @@ -329619,7 +329742,7 @@ elf_symbol { name: "cec_allocate_adapter" is_defined: true symbol_type: FUNCTION - crc: 0x02da5336 + crc: 0x685a1f3e type_id: 0x1d796e4e full_name: "cec_allocate_adapter" } @@ -329628,7 +329751,7 @@ elf_symbol { name: "cec_delete_adapter" is_defined: true symbol_type: FUNCTION - crc: 0x0f439fa3 + crc: 0x953c9320 type_id: 0x1e99dfd1 full_name: "cec_delete_adapter" } @@ -329637,7 +329760,7 @@ elf_symbol { name: "cec_received_msg_ts" is_defined: true symbol_type: FUNCTION - crc: 0x9147afac + crc: 0x0bb3cc19 type_id: 0x1ec3ec50 full_name: "cec_received_msg_ts" } @@ -329646,7 +329769,7 @@ elf_symbol { name: "cec_register_adapter" is_defined: true symbol_type: FUNCTION - crc: 0xfe39e07c + crc: 0xd9b5e86b type_id: 0x93880e88 full_name: "cec_register_adapter" } @@ -329655,7 +329778,7 @@ elf_symbol { name: "cec_s_log_addrs" is_defined: true symbol_type: FUNCTION - crc: 0xac3bedb9 + crc: 0xef7ce9e5 type_id: 0x93d6e983 full_name: "cec_s_log_addrs" } @@ -329664,7 +329787,7 @@ elf_symbol { name: "cec_s_phys_addr" is_defined: true symbol_type: FUNCTION - crc: 0x6157dda6 + crc: 0x383c2af2 type_id: 0x1cc7b6f9 full_name: "cec_s_phys_addr" } @@ -329673,7 +329796,7 @@ elf_symbol { name: "cec_transmit_attempt_done_ts" is_defined: true symbol_type: FUNCTION - crc: 0x3cfa2787 + crc: 0x4486c6c2 type_id: 0x1e38df18 full_name: "cec_transmit_attempt_done_ts" } @@ -329682,7 +329805,7 @@ elf_symbol { name: "cec_unregister_adapter" is_defined: true symbol_type: FUNCTION - crc: 0x01f31689 + crc: 0xfe3d8b28 type_id: 0x1e99dfd1 full_name: "cec_unregister_adapter" } @@ -329691,7 +329814,7 @@ elf_symbol { name: "cfg80211_any_usable_channels" is_defined: true symbol_type: FUNCTION - crc: 0xf9ec802e + crc: 0x48f5ea7c type_id: 0xfa370696 full_name: "cfg80211_any_usable_channels" } @@ -329700,7 +329823,7 @@ elf_symbol { name: "cfg80211_assoc_comeback" is_defined: true symbol_type: FUNCTION - crc: 0x8db9ec2e + crc: 0x0b5d99d8 type_id: 0x1cff9d7b full_name: "cfg80211_assoc_comeback" } @@ -329709,7 +329832,7 @@ elf_symbol { name: "cfg80211_assoc_failure" is_defined: true symbol_type: FUNCTION - crc: 0xa5f0c1dc + crc: 0x9c25c4bd type_id: 0x1c8a4c12 full_name: "cfg80211_assoc_failure" } @@ -329718,7 +329841,7 @@ elf_symbol { name: "cfg80211_auth_timeout" is_defined: true symbol_type: FUNCTION - crc: 0x6f946dff + crc: 0x8d04eaf6 type_id: 0x1ccddf71 full_name: "cfg80211_auth_timeout" } @@ -329727,7 +329850,7 @@ elf_symbol { name: "cfg80211_background_cac_abort" is_defined: true symbol_type: FUNCTION - crc: 0xc99c71bb + crc: 0xa4634410 type_id: 0x14f49b99 full_name: "cfg80211_background_cac_abort" } @@ -329736,7 +329859,7 @@ elf_symbol { name: "cfg80211_bss_color_notify" is_defined: true symbol_type: FUNCTION - crc: 0xa8ed3f76 + crc: 0x2d3f45ad type_id: 0x92d4668d full_name: "cfg80211_bss_color_notify" } @@ -329745,7 +329868,7 @@ elf_symbol { name: "cfg80211_bss_flush" is_defined: true symbol_type: FUNCTION - crc: 0xfbb794b0 + crc: 0x57eaac3c type_id: 0x14f49b99 full_name: "cfg80211_bss_flush" } @@ -329754,7 +329877,7 @@ elf_symbol { name: "cfg80211_bss_iter" is_defined: true symbol_type: FUNCTION - crc: 0x1d5eea4c + crc: 0x1e18ee89 type_id: 0x145e8a09 full_name: "cfg80211_bss_iter" } @@ -329763,7 +329886,7 @@ elf_symbol { name: "cfg80211_cac_event" is_defined: true symbol_type: FUNCTION - crc: 0xc9433e49 + crc: 0xf8f45dc7 type_id: 0x1ce728e2 full_name: "cfg80211_cac_event" } @@ -329781,7 +329904,7 @@ elf_symbol { name: "cfg80211_ch_switch_notify" is_defined: true symbol_type: FUNCTION - crc: 0xdcde54a6 + crc: 0xca9e4ffb type_id: 0x1c8b6bb5 full_name: "cfg80211_ch_switch_notify" } @@ -329790,7 +329913,7 @@ elf_symbol { name: "cfg80211_ch_switch_started_notify" is_defined: true symbol_type: FUNCTION - crc: 0x86eba6c4 + crc: 0x33a77517 type_id: 0x1c8992e8 full_name: "cfg80211_ch_switch_started_notify" } @@ -329817,7 +329940,7 @@ elf_symbol { name: "cfg80211_chandef_dfs_required" is_defined: true symbol_type: FUNCTION - crc: 0xbc0a04b6 + crc: 0x87923875 type_id: 0x99222c44 full_name: "cfg80211_chandef_dfs_required" } @@ -329826,7 +329949,7 @@ elf_symbol { name: "cfg80211_chandef_usable" is_defined: true symbol_type: FUNCTION - crc: 0xfc76ddf9 + crc: 0x19e90d2e type_id: 0xfa2c7799 full_name: "cfg80211_chandef_usable" } @@ -329844,7 +329967,7 @@ elf_symbol { name: "cfg80211_check_combinations" is_defined: true symbol_type: FUNCTION - crc: 0xa3954a68 + crc: 0xb554e7bf type_id: 0x99c1066c full_name: "cfg80211_check_combinations" } @@ -329853,7 +329976,7 @@ elf_symbol { name: "cfg80211_check_station_change" is_defined: true symbol_type: FUNCTION - crc: 0xb7d670f5 + crc: 0xd15b158f type_id: 0x99d81925 full_name: "cfg80211_check_station_change" } @@ -329862,7 +329985,7 @@ elf_symbol { name: "cfg80211_classify8021d" is_defined: true symbol_type: FUNCTION - crc: 0xdb88bdc0 + crc: 0x565b1d60 type_id: 0xcfbd8d04 full_name: "cfg80211_classify8021d" } @@ -329871,7 +329994,7 @@ elf_symbol { name: "cfg80211_conn_failed" is_defined: true symbol_type: FUNCTION - crc: 0x30ac70c2 + crc: 0xe4a8d7a3 type_id: 0x1cc4b68d full_name: "cfg80211_conn_failed" } @@ -329880,7 +330003,7 @@ elf_symbol { name: "cfg80211_connect_done" is_defined: true symbol_type: FUNCTION - crc: 0xfe80830b + crc: 0x5df35c2b type_id: 0x1cca119c full_name: "cfg80211_connect_done" } @@ -329889,7 +330012,7 @@ elf_symbol { name: "cfg80211_control_port_tx_status" is_defined: true symbol_type: FUNCTION - crc: 0x4e5b1485 + crc: 0xbfa1dad3 type_id: 0x1cad7c91 full_name: "cfg80211_control_port_tx_status" } @@ -329898,7 +330021,7 @@ elf_symbol { name: "cfg80211_cqm_beacon_loss_notify" is_defined: true symbol_type: FUNCTION - crc: 0x5930ce7a + crc: 0xb2bfd5fa type_id: 0x1ff74219 full_name: "cfg80211_cqm_beacon_loss_notify" } @@ -329907,7 +330030,7 @@ elf_symbol { name: "cfg80211_cqm_pktloss_notify" is_defined: true symbol_type: FUNCTION - crc: 0xbe23f8ac + crc: 0x2df51220 type_id: 0x1cfc5be0 full_name: "cfg80211_cqm_pktloss_notify" } @@ -329916,7 +330039,7 @@ elf_symbol { name: "cfg80211_cqm_rssi_notify" is_defined: true symbol_type: FUNCTION - crc: 0xf581f5d8 + crc: 0xa4b1fd9b type_id: 0x1f121f81 full_name: "cfg80211_cqm_rssi_notify" } @@ -329925,7 +330048,7 @@ elf_symbol { name: "cfg80211_cqm_txe_notify" is_defined: true symbol_type: FUNCTION - crc: 0xea881dd6 + crc: 0x557fd007 type_id: 0x1cfc88df full_name: "cfg80211_cqm_txe_notify" } @@ -329934,7 +330057,7 @@ elf_symbol { name: "cfg80211_crit_proto_stopped" is_defined: true symbol_type: FUNCTION - crc: 0xdf7b073c + crc: 0xffcb878e type_id: 0x1d2f630d full_name: "cfg80211_crit_proto_stopped" } @@ -329943,7 +330066,7 @@ elf_symbol { name: "cfg80211_del_sta_sinfo" is_defined: true symbol_type: FUNCTION - crc: 0xb9138fa2 + crc: 0xbf3636d6 type_id: 0x1cc3a558 full_name: "cfg80211_del_sta_sinfo" } @@ -329952,7 +330075,7 @@ elf_symbol { name: "cfg80211_disconnected" is_defined: true symbol_type: FUNCTION - crc: 0x20c06ab1 + crc: 0xc8dc982e type_id: 0x1e78e7b4 full_name: "cfg80211_disconnected" } @@ -329961,7 +330084,7 @@ elf_symbol { name: "cfg80211_external_auth_request" is_defined: true symbol_type: FUNCTION - crc: 0xd022e4a1 + crc: 0xc49791c2 type_id: 0x91aa6a7d full_name: "cfg80211_external_auth_request" } @@ -329997,7 +330120,7 @@ elf_symbol { name: "cfg80211_ft_event" is_defined: true symbol_type: FUNCTION - crc: 0x91df6f4a + crc: 0x91272556 type_id: 0x1ca15a24 full_name: "cfg80211_ft_event" } @@ -330006,7 +330129,7 @@ elf_symbol { name: "cfg80211_get_bss" is_defined: true symbol_type: FUNCTION - crc: 0x1b66cf78 + crc: 0xc87645d0 type_id: 0x1baf163d full_name: "cfg80211_get_bss" } @@ -330015,7 +330138,7 @@ elf_symbol { name: "cfg80211_get_drvinfo" is_defined: true symbol_type: FUNCTION - crc: 0x234fd1b3 + crc: 0x3bde4bd6 type_id: 0x1cc68e0f full_name: "cfg80211_get_drvinfo" } @@ -330033,7 +330156,7 @@ elf_symbol { name: "cfg80211_get_iftype_ext_capa" is_defined: true symbol_type: FUNCTION - crc: 0xde2c49a8 + crc: 0x75c7f8c0 type_id: 0x2e14200a full_name: "cfg80211_get_iftype_ext_capa" } @@ -330051,7 +330174,7 @@ elf_symbol { name: "cfg80211_get_station" is_defined: true symbol_type: FUNCTION - crc: 0x527777b2 + crc: 0x6ed05222 type_id: 0x91d8d17f full_name: "cfg80211_get_station" } @@ -330060,7 +330183,7 @@ elf_symbol { name: "cfg80211_gtk_rekey_notify" is_defined: true symbol_type: FUNCTION - crc: 0x90126098 + crc: 0x07209536 type_id: 0x1cc1d98b full_name: "cfg80211_gtk_rekey_notify" } @@ -330069,7 +330192,7 @@ elf_symbol { name: "cfg80211_ibss_joined" is_defined: true symbol_type: FUNCTION - crc: 0xe4402601 + crc: 0x40a2b6f1 type_id: 0x1cc4cffb full_name: "cfg80211_ibss_joined" } @@ -330078,7 +330201,7 @@ elf_symbol { name: "cfg80211_iftype_allowed" is_defined: true symbol_type: FUNCTION - crc: 0x40531f14 + crc: 0x3e95cdcc type_id: 0xfb59746c full_name: "cfg80211_iftype_allowed" } @@ -330087,7 +330210,7 @@ elf_symbol { name: "cfg80211_inform_bss_data" is_defined: true symbol_type: FUNCTION - crc: 0x603e851d + crc: 0xb4354674 type_id: 0x1b3d9c55 full_name: "cfg80211_inform_bss_data" } @@ -330096,7 +330219,7 @@ elf_symbol { name: "cfg80211_inform_bss_frame_data" is_defined: true symbol_type: FUNCTION - crc: 0x2fa43245 + crc: 0x9cc9602c type_id: 0x1b002424 full_name: "cfg80211_inform_bss_frame_data" } @@ -330114,7 +330237,7 @@ elf_symbol { name: "cfg80211_iter_combinations" is_defined: true symbol_type: FUNCTION - crc: 0x70e8a2ae + crc: 0xe1e1441a type_id: 0x99c209ea full_name: "cfg80211_iter_combinations" } @@ -330132,7 +330255,7 @@ elf_symbol { name: "cfg80211_mgmt_tx_status_ext" is_defined: true symbol_type: FUNCTION - crc: 0xaef68530 + crc: 0x64f1051e type_id: 0x1ecedd22 full_name: "cfg80211_mgmt_tx_status_ext" } @@ -330141,7 +330264,7 @@ elf_symbol { name: "cfg80211_michael_mic_failure" is_defined: true symbol_type: FUNCTION - crc: 0xea76a078 + crc: 0x4b7b5929 type_id: 0x1cca92e4 full_name: "cfg80211_michael_mic_failure" } @@ -330150,7 +330273,7 @@ elf_symbol { name: "cfg80211_nan_func_terminated" is_defined: true symbol_type: FUNCTION - crc: 0x80330a76 + crc: 0x35968b98 type_id: 0x1e5c4d09 full_name: "cfg80211_nan_func_terminated" } @@ -330159,7 +330282,7 @@ elf_symbol { name: "cfg80211_nan_match" is_defined: true symbol_type: FUNCTION - crc: 0xf41edd77 + crc: 0x6e408291 type_id: 0x1e0550f8 full_name: "cfg80211_nan_match" } @@ -330168,7 +330291,7 @@ elf_symbol { name: "cfg80211_new_sta" is_defined: true symbol_type: FUNCTION - crc: 0x73d8be45 + crc: 0x0e4580f0 type_id: 0x1cc3a558 full_name: "cfg80211_new_sta" } @@ -330177,7 +330300,7 @@ elf_symbol { name: "cfg80211_notify_new_peer_candidate" is_defined: true symbol_type: FUNCTION - crc: 0xb4ebfda4 + crc: 0xf087f425 type_id: 0x1cc2a06f full_name: "cfg80211_notify_new_peer_candidate" } @@ -330186,7 +330309,7 @@ elf_symbol { name: "cfg80211_pmksa_candidate_notify" is_defined: true symbol_type: FUNCTION - crc: 0xf936cdc5 + crc: 0x08e68cbf type_id: 0x1da313df full_name: "cfg80211_pmksa_candidate_notify" } @@ -330195,7 +330318,7 @@ elf_symbol { name: "cfg80211_pmsr_complete" is_defined: true symbol_type: FUNCTION - crc: 0x4754d2f3 + crc: 0x6a4ae891 type_id: 0x1eea48f4 full_name: "cfg80211_pmsr_complete" } @@ -330204,7 +330327,7 @@ elf_symbol { name: "cfg80211_pmsr_report" is_defined: true symbol_type: FUNCTION - crc: 0xb96a8fc3 + crc: 0x4509e509 type_id: 0x1ed9fcfc full_name: "cfg80211_pmsr_report" } @@ -330213,7 +330336,7 @@ elf_symbol { name: "cfg80211_port_authorized" is_defined: true symbol_type: FUNCTION - crc: 0x8ba3e8b9 + crc: 0x273d5abf type_id: 0x1cc28608 full_name: "cfg80211_port_authorized" } @@ -330222,7 +330345,7 @@ elf_symbol { name: "cfg80211_probe_status" is_defined: true symbol_type: FUNCTION - crc: 0xcf9d2843 + crc: 0xe4e235e5 type_id: 0x1ce8d6ce full_name: "cfg80211_probe_status" } @@ -330231,7 +330354,7 @@ elf_symbol { name: "cfg80211_put_bss" is_defined: true symbol_type: FUNCTION - crc: 0xbd225330 + crc: 0x53c83283 type_id: 0x141b54bc full_name: "cfg80211_put_bss" } @@ -330240,7 +330363,7 @@ elf_symbol { name: "cfg80211_ready_on_channel" is_defined: true symbol_type: FUNCTION - crc: 0xe1f2e472 + crc: 0xa74a300f type_id: 0x1caa88d1 full_name: "cfg80211_ready_on_channel" } @@ -330249,7 +330372,7 @@ elf_symbol { name: "cfg80211_ref_bss" is_defined: true symbol_type: FUNCTION - crc: 0x49e2498c + crc: 0x4767df95 type_id: 0x141b54bc full_name: "cfg80211_ref_bss" } @@ -330258,7 +330381,7 @@ elf_symbol { name: "cfg80211_reg_can_beacon" is_defined: true symbol_type: FUNCTION - crc: 0xa0137ac5 + crc: 0x0da2d095 type_id: 0xfa79a64e full_name: "cfg80211_reg_can_beacon" } @@ -330267,7 +330390,7 @@ elf_symbol { name: "cfg80211_reg_can_beacon_relax" is_defined: true symbol_type: FUNCTION - crc: 0x43dcab66 + crc: 0xa178611d type_id: 0xfa79a64e full_name: "cfg80211_reg_can_beacon_relax" } @@ -330276,7 +330399,7 @@ elf_symbol { name: "cfg80211_register_netdevice" is_defined: true symbol_type: FUNCTION - crc: 0xada56552 + crc: 0xfa41ed3d type_id: 0x91296bda full_name: "cfg80211_register_netdevice" } @@ -330285,7 +330408,7 @@ elf_symbol { name: "cfg80211_remain_on_channel_expired" is_defined: true symbol_type: FUNCTION - crc: 0xdc5b93c0 + crc: 0x6bd0bfe5 type_id: 0x1ca86436 full_name: "cfg80211_remain_on_channel_expired" } @@ -330294,7 +330417,7 @@ elf_symbol { name: "cfg80211_report_obss_beacon_khz" is_defined: true symbol_type: FUNCTION - crc: 0xd4c5e6c2 + crc: 0xd32a7770 type_id: 0x1434159f full_name: "cfg80211_report_obss_beacon_khz" } @@ -330303,7 +330426,7 @@ elf_symbol { name: "cfg80211_report_wowlan_wakeup" is_defined: true symbol_type: FUNCTION - crc: 0xf32652c4 + crc: 0x0f84f0e9 type_id: 0x1e52b698 full_name: "cfg80211_report_wowlan_wakeup" } @@ -330312,7 +330435,7 @@ elf_symbol { name: "cfg80211_roamed" is_defined: true symbol_type: FUNCTION - crc: 0x99b35077 + crc: 0xaf1941ca type_id: 0x1c650f64 full_name: "cfg80211_roamed" } @@ -330321,7 +330444,7 @@ elf_symbol { name: "cfg80211_rx_assoc_resp" is_defined: true symbol_type: FUNCTION - crc: 0x2fe88432 + crc: 0x22e3f02d type_id: 0x1c9e93de full_name: "cfg80211_rx_assoc_resp" } @@ -330330,8 +330453,8 @@ elf_symbol { name: "cfg80211_rx_control_port" is_defined: true symbol_type: FUNCTION - crc: 0x19c30d56 - type_id: 0xf203b182 + crc: 0x70d8333f + type_id: 0xf2022d01 full_name: "cfg80211_rx_control_port" } elf_symbol { @@ -330339,7 +330462,7 @@ elf_symbol { name: "cfg80211_rx_mgmt_ext" is_defined: true symbol_type: FUNCTION - crc: 0x0bc90b2e + crc: 0xcff9a4a3 type_id: 0xf0d2c690 full_name: "cfg80211_rx_mgmt_ext" } @@ -330348,7 +330471,7 @@ elf_symbol { name: "cfg80211_rx_mlme_mgmt" is_defined: true symbol_type: FUNCTION - crc: 0x19f4197d + crc: 0xacd80680 type_id: 0x1cf0d22b full_name: "cfg80211_rx_mlme_mgmt" } @@ -330357,7 +330480,7 @@ elf_symbol { name: "cfg80211_rx_spurious_frame" is_defined: true symbol_type: FUNCTION - crc: 0xf403bb17 + crc: 0x87690cfc type_id: 0xf2cdbc51 full_name: "cfg80211_rx_spurious_frame" } @@ -330366,7 +330489,7 @@ elf_symbol { name: "cfg80211_rx_unexpected_4addr_frame" is_defined: true symbol_type: FUNCTION - crc: 0xd7f7a522 + crc: 0xe566c01f type_id: 0xf2cdbc51 full_name: "cfg80211_rx_unexpected_4addr_frame" } @@ -330375,7 +330498,7 @@ elf_symbol { name: "cfg80211_rx_unprot_mlme_mgmt" is_defined: true symbol_type: FUNCTION - crc: 0xf2e19acb + crc: 0x5c5cec8b type_id: 0x1cf0d22b full_name: "cfg80211_rx_unprot_mlme_mgmt" } @@ -330384,7 +330507,7 @@ elf_symbol { name: "cfg80211_scan_done" is_defined: true symbol_type: FUNCTION - crc: 0x208aef1c + crc: 0x61ad293e type_id: 0x187e0d59 full_name: "cfg80211_scan_done" } @@ -330393,7 +330516,7 @@ elf_symbol { name: "cfg80211_sched_scan_results" is_defined: true symbol_type: FUNCTION - crc: 0x2a8e6a00 + crc: 0xdd756f8d type_id: 0x16bc1757 full_name: "cfg80211_sched_scan_results" } @@ -330402,7 +330525,7 @@ elf_symbol { name: "cfg80211_sched_scan_stopped" is_defined: true symbol_type: FUNCTION - crc: 0x50bb92ef + crc: 0x82d72806 type_id: 0x16bc1757 full_name: "cfg80211_sched_scan_stopped" } @@ -330411,7 +330534,7 @@ elf_symbol { name: "cfg80211_sched_scan_stopped_locked" is_defined: true symbol_type: FUNCTION - crc: 0x362e6d76 + crc: 0x11137bdc type_id: 0x16bc1757 full_name: "cfg80211_sched_scan_stopped_locked" } @@ -330420,7 +330543,7 @@ elf_symbol { name: "cfg80211_send_layer2_update" is_defined: true symbol_type: FUNCTION - crc: 0x658281c2 + crc: 0xd332a6a4 type_id: 0x1ccddf71 full_name: "cfg80211_send_layer2_update" } @@ -330429,7 +330552,7 @@ elf_symbol { name: "cfg80211_shutdown_all_interfaces" is_defined: true symbol_type: FUNCTION - crc: 0xff6039db + crc: 0x5b61d2ba type_id: 0x14f49b99 full_name: "cfg80211_shutdown_all_interfaces" } @@ -330447,7 +330570,7 @@ elf_symbol { name: "cfg80211_sta_opmode_change_notify" is_defined: true symbol_type: FUNCTION - crc: 0x3c037cf5 + crc: 0x39700c3e type_id: 0x1cc12284 full_name: "cfg80211_sta_opmode_change_notify" } @@ -330456,7 +330579,7 @@ elf_symbol { name: "cfg80211_stop_iface" is_defined: true symbol_type: FUNCTION - crc: 0xb278763c + crc: 0x068f05e0 type_id: 0x142fe8b0 full_name: "cfg80211_stop_iface" } @@ -330465,7 +330588,7 @@ elf_symbol { name: "cfg80211_tdls_oper_request" is_defined: true symbol_type: FUNCTION - crc: 0x58c41b65 + crc: 0xc5e06860 type_id: 0x1cf91c9b full_name: "cfg80211_tdls_oper_request" } @@ -330474,7 +330597,7 @@ elf_symbol { name: "cfg80211_tx_mgmt_expired" is_defined: true symbol_type: FUNCTION - crc: 0x6f4bb960 + crc: 0x41f5166f type_id: 0x1ca86436 full_name: "cfg80211_tx_mgmt_expired" } @@ -330483,7 +330606,7 @@ elf_symbol { name: "cfg80211_tx_mlme_mgmt" is_defined: true symbol_type: FUNCTION - crc: 0x94f603ee + crc: 0xf0dfd0e5 type_id: 0x1cf167d6 full_name: "cfg80211_tx_mlme_mgmt" } @@ -330492,7 +330615,7 @@ elf_symbol { name: "cfg80211_unlink_bss" is_defined: true symbol_type: FUNCTION - crc: 0x032d8d46 + crc: 0x570654f1 type_id: 0x141b54bc full_name: "cfg80211_unlink_bss" } @@ -330501,7 +330624,7 @@ elf_symbol { name: "cfg80211_unregister_wdev" is_defined: true symbol_type: FUNCTION - crc: 0x1f210c7e + crc: 0x04117c15 type_id: 0x1ee9f872 full_name: "cfg80211_unregister_wdev" } @@ -330510,7 +330633,7 @@ elf_symbol { name: "cfg80211_update_owe_info_event" is_defined: true symbol_type: FUNCTION - crc: 0x14088e31 + crc: 0x653b051c type_id: 0x1c31b8e8 full_name: "cfg80211_update_owe_info_event" } @@ -330519,7 +330642,7 @@ elf_symbol { name: "cfg80211_vendor_cmd_get_sender" is_defined: true symbol_type: FUNCTION - crc: 0xbefc9327 + crc: 0xdfbc06df type_id: 0xcab7b4f1 full_name: "cfg80211_vendor_cmd_get_sender" } @@ -330528,7 +330651,7 @@ elf_symbol { name: "cfg80211_vendor_cmd_reply" is_defined: true symbol_type: FUNCTION - crc: 0x5a625c50 + crc: 0x3a9eaaaf type_id: 0x9cd33969 full_name: "cfg80211_vendor_cmd_reply" } @@ -330537,7 +330660,7 @@ elf_symbol { name: "cgroup_path_ns" is_defined: true symbol_type: FUNCTION - crc: 0x28288347 + crc: 0x39843b2a type_id: 0x9b87e6ee full_name: "cgroup_path_ns" } @@ -330546,7 +330669,7 @@ elf_symbol { name: "cgroup_taskset_first" is_defined: true symbol_type: FUNCTION - crc: 0x8f43beb3 + crc: 0xa6d31961 type_id: 0x751b5661 full_name: "cgroup_taskset_first" } @@ -330555,7 +330678,7 @@ elf_symbol { name: "cgroup_taskset_next" is_defined: true symbol_type: FUNCTION - crc: 0x46b4a188 + crc: 0x0fdaebf1 type_id: 0x751b5661 full_name: "cgroup_taskset_next" } @@ -330564,7 +330687,7 @@ elf_symbol { name: "check_move_unevictable_pages" is_defined: true symbol_type: FUNCTION - crc: 0xf1e9a2c9 + crc: 0x1fdbb254 type_id: 0x11b81220 full_name: "check_move_unevictable_pages" } @@ -330573,7 +330696,7 @@ elf_symbol { name: "check_preempt_curr" is_defined: true symbol_type: FUNCTION - crc: 0x77435c8e + crc: 0x93fd0c1b type_id: 0x1b7558dd full_name: "check_preempt_curr" } @@ -330591,7 +330714,7 @@ elf_symbol { name: "class_create_file_ns" is_defined: true symbol_type: FUNCTION - crc: 0x93508da4 + crc: 0x117d0962 type_id: 0x97df7018 full_name: "class_create_file_ns" } @@ -330600,7 +330723,7 @@ elf_symbol { name: "class_destroy" is_defined: true symbol_type: FUNCTION - crc: 0x02ae840f + crc: 0x4d0f0d77 type_id: 0x1a0b4b72 full_name: "class_destroy" } @@ -330609,7 +330732,7 @@ elf_symbol { name: "class_dev_iter_exit" is_defined: true symbol_type: FUNCTION - crc: 0xfeb66574 + crc: 0x255d88e9 type_id: 0x1d9aaa82 full_name: "class_dev_iter_exit" } @@ -330618,7 +330741,7 @@ elf_symbol { name: "class_dev_iter_init" is_defined: true symbol_type: FUNCTION - crc: 0xa9bc07d4 + crc: 0xe246f3a2 type_id: 0x1d33c7e7 full_name: "class_dev_iter_init" } @@ -330627,7 +330750,7 @@ elf_symbol { name: "class_dev_iter_next" is_defined: true symbol_type: FUNCTION - crc: 0x482882af + crc: 0x99dcfc04 type_id: 0xa02dcb2f full_name: "class_dev_iter_next" } @@ -330636,7 +330759,7 @@ elf_symbol { name: "class_find_device" is_defined: true symbol_type: FUNCTION - crc: 0x139b4be5 + crc: 0x517579cf type_id: 0xa7bbb94d full_name: "class_find_device" } @@ -330645,7 +330768,7 @@ elf_symbol { name: "class_for_each_device" is_defined: true symbol_type: FUNCTION - crc: 0xf9b58a2f + crc: 0x7c5c84b6 type_id: 0x971c0246 full_name: "class_for_each_device" } @@ -330654,7 +330777,7 @@ elf_symbol { name: "class_interface_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x7a4c058b + crc: 0x2c75fc6f type_id: 0x106aedb0 full_name: "class_interface_unregister" } @@ -330663,7 +330786,7 @@ elf_symbol { name: "class_remove_file_ns" is_defined: true symbol_type: FUNCTION - crc: 0xe66b3d88 + crc: 0x406eb9a0 type_id: 0x1ac7c2a4 full_name: "class_remove_file_ns" } @@ -330672,7 +330795,7 @@ elf_symbol { name: "class_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x250cd79d + crc: 0xed1d3506 type_id: 0x1a0b4b72 full_name: "class_unregister" } @@ -330760,7 +330883,7 @@ elf_symbol { name: "clk_fixed_factor_ops" is_defined: true symbol_type: OBJECT - crc: 0xb5ab6cd3 + crc: 0x0e858924 type_id: 0xde3bc780 full_name: "clk_fixed_factor_ops" } @@ -330769,7 +330892,7 @@ elf_symbol { name: "clk_fixed_rate_ops" is_defined: true symbol_type: OBJECT - crc: 0xbb2603fc + crc: 0xc5c3be53 type_id: 0xde3bc780 full_name: "clk_fixed_rate_ops" } @@ -330778,7 +330901,7 @@ elf_symbol { name: "clk_get" is_defined: true symbol_type: FUNCTION - crc: 0xfc824fc0 + crc: 0xfa73284b type_id: 0xa671941e full_name: "clk_get" } @@ -330805,7 +330928,7 @@ elf_symbol { name: "clk_hw_get_clk" is_defined: true symbol_type: FUNCTION - crc: 0x4b86281c + crc: 0x2c6260b0 type_id: 0xa45e82f4 full_name: "clk_hw_get_clk" } @@ -330814,7 +330937,7 @@ elf_symbol { name: "clk_hw_get_flags" is_defined: true symbol_type: FUNCTION - crc: 0xcdd598af + crc: 0x3de735b2 type_id: 0x3ece9456 full_name: "clk_hw_get_flags" } @@ -330823,7 +330946,7 @@ elf_symbol { name: "clk_hw_get_name" is_defined: true symbol_type: FUNCTION - crc: 0x74947bec + crc: 0x1ad07fc4 type_id: 0x9d264ea6 full_name: "clk_hw_get_name" } @@ -330832,7 +330955,7 @@ elf_symbol { name: "clk_hw_get_num_parents" is_defined: true symbol_type: FUNCTION - crc: 0x7ea8d92a + crc: 0x26dc9e4a type_id: 0xc1b927fe full_name: "clk_hw_get_num_parents" } @@ -330841,7 +330964,7 @@ elf_symbol { name: "clk_hw_get_parent" is_defined: true symbol_type: FUNCTION - crc: 0xfe4de9b7 + crc: 0x239120a6 type_id: 0xd103f224 full_name: "clk_hw_get_parent" } @@ -330850,7 +330973,7 @@ elf_symbol { name: "clk_hw_get_parent_by_index" is_defined: true symbol_type: FUNCTION - crc: 0x663c782a + crc: 0xe1373136 type_id: 0xd015e7bc full_name: "clk_hw_get_parent_by_index" } @@ -330859,7 +330982,7 @@ elf_symbol { name: "clk_hw_get_rate" is_defined: true symbol_type: FUNCTION - crc: 0xf66e4d2f + crc: 0xe8127d92 type_id: 0x3ece9456 full_name: "clk_hw_get_rate" } @@ -330868,7 +330991,7 @@ elf_symbol { name: "clk_hw_get_rate_range" is_defined: true symbol_type: FUNCTION - crc: 0x0b78c15c + crc: 0xe96a3ff9 type_id: 0x1239dff8 full_name: "clk_hw_get_rate_range" } @@ -330877,7 +331000,7 @@ elf_symbol { name: "clk_hw_is_enabled" is_defined: true symbol_type: FUNCTION - crc: 0x7a5117c2 + crc: 0x043463cc type_id: 0xf1c60201 full_name: "clk_hw_is_enabled" } @@ -330886,7 +331009,7 @@ elf_symbol { name: "clk_hw_is_prepared" is_defined: true symbol_type: FUNCTION - crc: 0x66310a73 + crc: 0x0848b09d type_id: 0xf1c60201 full_name: "clk_hw_is_prepared" } @@ -330895,7 +331018,7 @@ elf_symbol { name: "clk_hw_register" is_defined: true symbol_type: FUNCTION - crc: 0xf080d318 + crc: 0xd3eeb080 type_id: 0x9d3d4fff full_name: "clk_hw_register" } @@ -330904,7 +331027,7 @@ elf_symbol { name: "clk_hw_round_rate" is_defined: true symbol_type: FUNCTION - crc: 0x1f9bd57c + crc: 0x8cd04c8f type_id: 0x33d83070 full_name: "clk_hw_round_rate" } @@ -330913,7 +331036,7 @@ elf_symbol { name: "clk_hw_set_rate_range" is_defined: true symbol_type: FUNCTION - crc: 0xe03fb5eb + crc: 0xcbf451d4 type_id: 0x12e071e9 full_name: "clk_hw_set_rate_range" } @@ -330922,7 +331045,7 @@ elf_symbol { name: "clk_hw_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x7c23c3e2 + crc: 0xc0555c89 type_id: 0x12217922 full_name: "clk_hw_unregister" } @@ -330976,7 +331099,7 @@ elf_symbol { name: "clk_register" is_defined: true symbol_type: FUNCTION - crc: 0xf9f4ff36 + crc: 0xd37ed33d type_id: 0xa6a24441 full_name: "clk_register" } @@ -330994,7 +331117,7 @@ elf_symbol { name: "clk_register_fixed_factor" is_defined: true symbol_type: FUNCTION - crc: 0x5ae19211 + crc: 0x3891a831 type_id: 0xa67ecd91 full_name: "clk_register_fixed_factor" } @@ -331003,7 +331126,7 @@ elf_symbol { name: "clk_register_fixed_rate" is_defined: true symbol_type: FUNCTION - crc: 0x546760d1 + crc: 0x06023e15 type_id: 0xa67ed13b full_name: "clk_register_fixed_rate" } @@ -331012,7 +331135,7 @@ elf_symbol { name: "clk_register_gate" is_defined: true symbol_type: FUNCTION - crc: 0x78058df1 + crc: 0x4220c92d type_id: 0xa67edb66 full_name: "clk_register_gate" } @@ -331057,7 +331180,7 @@ elf_symbol { name: "clk_sync_state" is_defined: true symbol_type: FUNCTION - crc: 0x52fe936c + crc: 0xc5013d0b type_id: 0x100e6fc8 full_name: "clk_sync_state" } @@ -331075,7 +331198,7 @@ elf_symbol { name: "clockevents_config_and_register" is_defined: true symbol_type: FUNCTION - crc: 0x4c29d5ab + crc: 0xea372050 type_id: 0x177cb160 full_name: "clockevents_config_and_register" } @@ -331093,7 +331216,7 @@ elf_symbol { name: "close_candev" is_defined: true symbol_type: FUNCTION - crc: 0x4b0a9840 + crc: 0x2d75aefe type_id: 0x1c31d966 full_name: "close_candev" } @@ -331111,7 +331234,7 @@ elf_symbol { name: "cma_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x60d9db3a + crc: 0x0b38b508 type_id: 0xb94d0c8b full_name: "cma_alloc" } @@ -331138,7 +331261,7 @@ elf_symbol { name: "cma_release" is_defined: true symbol_type: FUNCTION - crc: 0x811740de + crc: 0x8a6a7e38 type_id: 0xfa5a390c full_name: "cma_release" } @@ -331147,7 +331270,7 @@ elf_symbol { name: "compat_ptr_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0xe9f0cb19 + crc: 0x5f68f578 type_id: 0xa00069e0 full_name: "compat_ptr_ioctl" } @@ -331183,7 +331306,7 @@ elf_symbol { name: "component_add" is_defined: true symbol_type: FUNCTION - crc: 0x97a6c96f + crc: 0xff99bfe7 type_id: 0x9df11d57 full_name: "component_add" } @@ -331192,7 +331315,7 @@ elf_symbol { name: "component_bind_all" is_defined: true symbol_type: FUNCTION - crc: 0x62240bd2 + crc: 0xd76ba2cd type_id: 0x9d7428e0 full_name: "component_bind_all" } @@ -331201,7 +331324,7 @@ elf_symbol { name: "component_compare_of" is_defined: true symbol_type: FUNCTION - crc: 0xac50b19f + crc: 0xc23570ba type_id: 0x9d7428e0 full_name: "component_compare_of" } @@ -331210,7 +331333,7 @@ elf_symbol { name: "component_del" is_defined: true symbol_type: FUNCTION - crc: 0x93dd8454 + crc: 0x5ff29161 type_id: 0x10e9afeb full_name: "component_del" } @@ -331219,7 +331342,7 @@ elf_symbol { name: "component_master_add_with_match" is_defined: true symbol_type: FUNCTION - crc: 0xe4fc498c + crc: 0x5c612db7 type_id: 0x9ddcade1 full_name: "component_master_add_with_match" } @@ -331228,7 +331351,7 @@ elf_symbol { name: "component_master_del" is_defined: true symbol_type: FUNCTION - crc: 0x91dfff38 + crc: 0x92f2bacc type_id: 0x10c55248 full_name: "component_master_del" } @@ -331237,7 +331360,7 @@ elf_symbol { name: "component_match_add_release" is_defined: true symbol_type: FUNCTION - crc: 0x197e776e + crc: 0x48994860 type_id: 0x102208a7 full_name: "component_match_add_release" } @@ -331246,7 +331369,7 @@ elf_symbol { name: "component_unbind_all" is_defined: true symbol_type: FUNCTION - crc: 0x554f34ec + crc: 0x646f6c26 type_id: 0x106c9a5c full_name: "component_unbind_all" } @@ -331273,7 +331396,7 @@ elf_symbol { name: "config_ep_by_speed" is_defined: true symbol_type: FUNCTION - crc: 0xd53d7981 + crc: 0x52846931 type_id: 0x945ba723 full_name: "config_ep_by_speed" } @@ -331282,7 +331405,7 @@ elf_symbol { name: "config_group_init" is_defined: true symbol_type: FUNCTION - crc: 0xff02c30f + crc: 0xcea492f1 type_id: 0x1c280429 full_name: "config_group_init" } @@ -331291,7 +331414,7 @@ elf_symbol { name: "config_group_init_type_name" is_defined: true symbol_type: FUNCTION - crc: 0x9a82c897 + crc: 0x3087d77b type_id: 0x1cdeebe2 full_name: "config_group_init_type_name" } @@ -331300,7 +331423,7 @@ elf_symbol { name: "config_item_get" is_defined: true symbol_type: FUNCTION - crc: 0x9c3e8fa7 + crc: 0xb778e2f0 type_id: 0xfe8152e6 full_name: "config_item_get" } @@ -331309,7 +331432,7 @@ elf_symbol { name: "config_item_put" is_defined: true symbol_type: FUNCTION - crc: 0xa71bd322 + crc: 0x6dabe0ea type_id: 0x14545fb5 full_name: "config_item_put" } @@ -331318,7 +331441,7 @@ elf_symbol { name: "config_item_set_name" is_defined: true symbol_type: FUNCTION - crc: 0xcdaa42d5 + crc: 0xd513c353 type_id: 0x999de55f full_name: "config_item_set_name" } @@ -331327,7 +331450,7 @@ elf_symbol { name: "configfs_register_group" is_defined: true symbol_type: FUNCTION - crc: 0xaf0251d6 + crc: 0xe57cf5b3 type_id: 0x91fbb3ce full_name: "configfs_register_group" } @@ -331336,7 +331459,7 @@ elf_symbol { name: "configfs_register_subsystem" is_defined: true symbol_type: FUNCTION - crc: 0xfc2f38d4 + crc: 0x64f1e3f5 type_id: 0x9db97a4e full_name: "configfs_register_subsystem" } @@ -331345,7 +331468,7 @@ elf_symbol { name: "configfs_unregister_group" is_defined: true symbol_type: FUNCTION - crc: 0xacd011f0 + crc: 0xafe55d03 type_id: 0x1c280429 full_name: "configfs_unregister_group" } @@ -331354,7 +331477,7 @@ elf_symbol { name: "configfs_unregister_subsystem" is_defined: true symbol_type: FUNCTION - crc: 0xac3344d6 + crc: 0x7dfcdd85 type_id: 0x10a1c8f2 full_name: "configfs_unregister_subsystem" } @@ -331381,7 +331504,7 @@ elf_symbol { name: "console_stop" is_defined: true symbol_type: FUNCTION - crc: 0x4edfac18 + crc: 0x4de872cd type_id: 0x10cf8a7c full_name: "console_stop" } @@ -331399,7 +331522,7 @@ elf_symbol { name: "consume_skb" is_defined: true symbol_type: FUNCTION - crc: 0x77aea415 + crc: 0x5b272851 type_id: 0x11cb8bd5 full_name: "consume_skb" } @@ -331408,7 +331531,7 @@ elf_symbol { name: "contig_page_data" is_defined: true symbol_type: OBJECT - crc: 0xa15c051c + crc: 0xf7d207cc type_id: 0x264eeece full_name: "contig_page_data" } @@ -331543,7 +331666,7 @@ elf_symbol { name: "cpu_subsys" is_defined: true symbol_type: OBJECT - crc: 0x5e6e4869 + crc: 0xf21f4fb3 type_id: 0x257935aa full_name: "cpu_subsys" } @@ -331561,7 +331684,7 @@ elf_symbol { name: "cpufreq_cpu_get" is_defined: true symbol_type: FUNCTION - crc: 0xc3a9937a + crc: 0x01f4731f type_id: 0x906b787e full_name: "cpufreq_cpu_get" } @@ -331570,7 +331693,7 @@ elf_symbol { name: "cpufreq_cpu_get_raw" is_defined: true symbol_type: FUNCTION - crc: 0xabec9a93 + crc: 0x7489cd87 type_id: 0x906b787e full_name: "cpufreq_cpu_get_raw" } @@ -331579,7 +331702,7 @@ elf_symbol { name: "cpufreq_cpu_put" is_defined: true symbol_type: FUNCTION - crc: 0xf0eb6374 + crc: 0x0b5d1a70 type_id: 0x10ffd8df full_name: "cpufreq_cpu_put" } @@ -331588,7 +331711,7 @@ elf_symbol { name: "cpufreq_dbs_governor_exit" is_defined: true symbol_type: FUNCTION - crc: 0x3316636a + crc: 0x21ce7641 type_id: 0x10ffd8df full_name: "cpufreq_dbs_governor_exit" } @@ -331597,7 +331720,7 @@ elf_symbol { name: "cpufreq_dbs_governor_init" is_defined: true symbol_type: FUNCTION - crc: 0x02442bc7 + crc: 0x1d0834ef type_id: 0x9de76a63 full_name: "cpufreq_dbs_governor_init" } @@ -331606,7 +331729,7 @@ elf_symbol { name: "cpufreq_dbs_governor_limits" is_defined: true symbol_type: FUNCTION - crc: 0x7252d145 + crc: 0x610639ea type_id: 0x10ffd8df full_name: "cpufreq_dbs_governor_limits" } @@ -331615,7 +331738,7 @@ elf_symbol { name: "cpufreq_dbs_governor_start" is_defined: true symbol_type: FUNCTION - crc: 0x269c1553 + crc: 0x7195061c type_id: 0x9de76a63 full_name: "cpufreq_dbs_governor_start" } @@ -331624,7 +331747,7 @@ elf_symbol { name: "cpufreq_dbs_governor_stop" is_defined: true symbol_type: FUNCTION - crc: 0x73df4a0a + crc: 0x37ec70ab type_id: 0x10ffd8df full_name: "cpufreq_dbs_governor_stop" } @@ -331633,7 +331756,7 @@ elf_symbol { name: "cpufreq_disable_fast_switch" is_defined: true symbol_type: FUNCTION - crc: 0x7dbebbce + crc: 0xd6b304ab type_id: 0x10ffd8df full_name: "cpufreq_disable_fast_switch" } @@ -331642,7 +331765,7 @@ elf_symbol { name: "cpufreq_driver_fast_switch" is_defined: true symbol_type: FUNCTION - crc: 0xe27c4348 + crc: 0xde21829c type_id: 0xcfaae22f full_name: "cpufreq_driver_fast_switch" } @@ -331651,7 +331774,7 @@ elf_symbol { name: "cpufreq_driver_resolve_freq" is_defined: true symbol_type: FUNCTION - crc: 0x9fa04fd7 + crc: 0xeec4edb1 type_id: 0xcfaae22f full_name: "cpufreq_driver_resolve_freq" } @@ -331660,7 +331783,7 @@ elf_symbol { name: "cpufreq_driver_target" is_defined: true symbol_type: FUNCTION - crc: 0xbf3af2fb + crc: 0x50756a1e type_id: 0x9ce01ea2 full_name: "cpufreq_driver_target" } @@ -331678,7 +331801,7 @@ elf_symbol { name: "cpufreq_enable_fast_switch" is_defined: true symbol_type: FUNCTION - crc: 0x94100dba + crc: 0x5fd15948 type_id: 0x10ffd8df full_name: "cpufreq_enable_fast_switch" } @@ -331687,7 +331810,7 @@ elf_symbol { name: "cpufreq_freq_attr_scaling_available_freqs" is_defined: true symbol_type: OBJECT - crc: 0x7a4d3298 + crc: 0xdf7d2cad type_id: 0x533e9463 full_name: "cpufreq_freq_attr_scaling_available_freqs" } @@ -331696,7 +331819,7 @@ elf_symbol { name: "cpufreq_freq_attr_scaling_boost_freqs" is_defined: true symbol_type: OBJECT - crc: 0x3b763366 + crc: 0xfbf7936e type_id: 0x533e9463 full_name: "cpufreq_freq_attr_scaling_boost_freqs" } @@ -331705,7 +331828,7 @@ elf_symbol { name: "cpufreq_freq_transition_begin" is_defined: true symbol_type: FUNCTION - crc: 0x085fdeb1 + crc: 0x25c6de74 type_id: 0x10e0ceea full_name: "cpufreq_freq_transition_begin" } @@ -331714,7 +331837,7 @@ elf_symbol { name: "cpufreq_freq_transition_end" is_defined: true symbol_type: FUNCTION - crc: 0xc8b32e4e + crc: 0x07a20508 type_id: 0x10f906de full_name: "cpufreq_freq_transition_end" } @@ -331723,7 +331846,7 @@ elf_symbol { name: "cpufreq_frequency_table_get_index" is_defined: true symbol_type: FUNCTION - crc: 0x532c3801 + crc: 0x9ded2124 type_id: 0x9cf17ffb full_name: "cpufreq_frequency_table_get_index" } @@ -331741,7 +331864,7 @@ elf_symbol { name: "cpufreq_generic_attr" is_defined: true symbol_type: OBJECT - crc: 0x83c90737 + crc: 0xa13a76bf type_id: 0x6b3ea7cc full_name: "cpufreq_generic_attr" } @@ -331777,7 +331900,7 @@ elf_symbol { name: "cpufreq_get_policy" is_defined: true symbol_type: FUNCTION - crc: 0xc84f39ad + crc: 0x4a1d1957 type_id: 0x9cf17ffb full_name: "cpufreq_get_policy" } @@ -331786,7 +331909,7 @@ elf_symbol { name: "cpufreq_policy_transition_delay_us" is_defined: true symbol_type: FUNCTION - crc: 0x5837bfc8 + crc: 0xd0882387 type_id: 0xcebcf7b7 full_name: "cpufreq_policy_transition_delay_us" } @@ -331813,7 +331936,7 @@ elf_symbol { name: "cpufreq_register_driver" is_defined: true symbol_type: FUNCTION - crc: 0x31cd2bf7 + crc: 0x220df6e9 type_id: 0x927602ff full_name: "cpufreq_register_driver" } @@ -331822,7 +331945,7 @@ elf_symbol { name: "cpufreq_register_governor" is_defined: true symbol_type: FUNCTION - crc: 0xf7adf179 + crc: 0x467aa108 type_id: 0x9ce68106 full_name: "cpufreq_register_governor" } @@ -331840,7 +331963,7 @@ elf_symbol { name: "cpufreq_table_index_unsorted" is_defined: true symbol_type: FUNCTION - crc: 0x382816be + crc: 0x3dd1b754 type_id: 0x9ce01ea2 full_name: "cpufreq_table_index_unsorted" } @@ -331849,7 +331972,7 @@ elf_symbol { name: "cpufreq_unregister_driver" is_defined: true symbol_type: FUNCTION - crc: 0xeeecbc15 + crc: 0x1d8753ab type_id: 0x927602ff full_name: "cpufreq_unregister_driver" } @@ -331858,7 +331981,7 @@ elf_symbol { name: "cpufreq_unregister_governor" is_defined: true symbol_type: FUNCTION - crc: 0x3cbe9d4f + crc: 0x7bf5e5ef type_id: 0x11fe33ba full_name: "cpufreq_unregister_governor" } @@ -331885,7 +332008,7 @@ elf_symbol { name: "cpuidle_register_governor" is_defined: true symbol_type: FUNCTION - crc: 0x49c492c3 + crc: 0xaf669e31 type_id: 0x9fb9eee9 full_name: "cpuidle_register_governor" } @@ -331912,7 +332035,7 @@ elf_symbol { name: "cpupri_find_fitness" is_defined: true symbol_type: FUNCTION - crc: 0x36501fd6 + crc: 0xa6057445 type_id: 0x96c4b63c full_name: "cpupri_find_fitness" } @@ -331989,7 +332112,7 @@ elf_symbol { name: "create_function_device" is_defined: true symbol_type: FUNCTION - crc: 0xd970583c + crc: 0x25d60b67 type_id: 0xac0fc980 full_name: "create_function_device" } @@ -331998,7 +332121,7 @@ elf_symbol { name: "crypto_aead_decrypt" is_defined: true symbol_type: FUNCTION - crc: 0x8b5702a2 + crc: 0x3ee448f7 type_id: 0x910ea117 full_name: "crypto_aead_decrypt" } @@ -332007,7 +332130,7 @@ elf_symbol { name: "crypto_aead_encrypt" is_defined: true symbol_type: FUNCTION - crc: 0xfe74f0d7 + crc: 0x77b5a135 type_id: 0x910ea117 full_name: "crypto_aead_encrypt" } @@ -332016,7 +332139,7 @@ elf_symbol { name: "crypto_aead_setauthsize" is_defined: true symbol_type: FUNCTION - crc: 0x5bf4b4a3 + crc: 0x48570de7 type_id: 0x9a871ca2 full_name: "crypto_aead_setauthsize" } @@ -332025,7 +332148,7 @@ elf_symbol { name: "crypto_aead_setkey" is_defined: true symbol_type: FUNCTION - crc: 0x020c22b9 + crc: 0x60efb4d8 type_id: 0x9b7c6e74 full_name: "crypto_aead_setkey" } @@ -332034,7 +332157,7 @@ elf_symbol { name: "crypto_ahash_digest" is_defined: true symbol_type: FUNCTION - crc: 0x1cbf2961 + crc: 0x729ac4ab type_id: 0x911583bf full_name: "crypto_ahash_digest" } @@ -332043,7 +332166,7 @@ elf_symbol { name: "crypto_ahash_setkey" is_defined: true symbol_type: FUNCTION - crc: 0x85bf71fc + crc: 0x90be7626 type_id: 0x9ac8451b full_name: "crypto_ahash_setkey" } @@ -332052,7 +332175,7 @@ elf_symbol { name: "crypto_alloc_aead" is_defined: true symbol_type: FUNCTION - crc: 0xce9ac156 + crc: 0x0383b415 type_id: 0x244ac93e full_name: "crypto_alloc_aead" } @@ -332061,7 +332184,7 @@ elf_symbol { name: "crypto_alloc_ahash" is_defined: true symbol_type: FUNCTION - crc: 0x92db7428 + crc: 0x2a1540a0 type_id: 0xd40f21a4 full_name: "crypto_alloc_ahash" } @@ -332070,7 +332193,7 @@ elf_symbol { name: "crypto_alloc_base" is_defined: true symbol_type: FUNCTION - crc: 0x94adb007 + crc: 0xe92aec99 type_id: 0x85430584 full_name: "crypto_alloc_base" } @@ -332079,7 +332202,7 @@ elf_symbol { name: "crypto_alloc_kpp" is_defined: true symbol_type: FUNCTION - crc: 0x4960f155 + crc: 0x941a4ff2 type_id: 0xf66dfeca full_name: "crypto_alloc_kpp" } @@ -332088,7 +332211,7 @@ elf_symbol { name: "crypto_alloc_shash" is_defined: true symbol_type: FUNCTION - crc: 0x8bbe5ffc + crc: 0x1aa595c5 type_id: 0x0643b7f0 full_name: "crypto_alloc_shash" } @@ -332097,7 +332220,7 @@ elf_symbol { name: "crypto_alloc_skcipher" is_defined: true symbol_type: FUNCTION - crc: 0x1e2e8db8 + crc: 0xdaed970f type_id: 0x2d1647d4 full_name: "crypto_alloc_skcipher" } @@ -332106,7 +332229,7 @@ elf_symbol { name: "crypto_alloc_sync_skcipher" is_defined: true symbol_type: FUNCTION - crc: 0x904df5ca + crc: 0x5f6a8eb1 type_id: 0x329319f8 full_name: "crypto_alloc_sync_skcipher" } @@ -332115,7 +332238,7 @@ elf_symbol { name: "crypto_comp_compress" is_defined: true symbol_type: FUNCTION - crc: 0xf10be894 + crc: 0x51295e8e type_id: 0x9792aa8a full_name: "crypto_comp_compress" } @@ -332124,7 +332247,7 @@ elf_symbol { name: "crypto_comp_decompress" is_defined: true symbol_type: FUNCTION - crc: 0x682ac242 + crc: 0x7952328d type_id: 0x9792aa8a full_name: "crypto_comp_decompress" } @@ -332133,7 +332256,7 @@ elf_symbol { name: "crypto_default_rng" is_defined: true symbol_type: OBJECT - crc: 0x85b45987 + crc: 0x29e52164 type_id: 0x3c9ce28f full_name: "crypto_default_rng" } @@ -332142,7 +332265,7 @@ elf_symbol { name: "crypto_dequeue_request" is_defined: true symbol_type: FUNCTION - crc: 0xb0cf8503 + crc: 0x72671b0e type_id: 0x2d2c7d0b full_name: "crypto_dequeue_request" } @@ -332151,7 +332274,7 @@ elf_symbol { name: "crypto_destroy_tfm" is_defined: true symbol_type: FUNCTION - crc: 0xe886bc19 + crc: 0x967a0a62 type_id: 0x16d018ce full_name: "crypto_destroy_tfm" } @@ -332178,7 +332301,7 @@ elf_symbol { name: "crypto_enqueue_request" is_defined: true symbol_type: FUNCTION - crc: 0xd94d303b + crc: 0xf627d1b3 type_id: 0x9a78591e full_name: "crypto_enqueue_request" } @@ -332232,7 +332355,7 @@ elf_symbol { name: "crypto_register_aead" is_defined: true symbol_type: FUNCTION - crc: 0xeab06306 + crc: 0x8cce4d4f type_id: 0x950f0fae full_name: "crypto_register_aead" } @@ -332241,7 +332364,7 @@ elf_symbol { name: "crypto_register_ahash" is_defined: true symbol_type: FUNCTION - crc: 0x070e478c + crc: 0x66a0e599 type_id: 0x9ee20867 full_name: "crypto_register_ahash" } @@ -332250,7 +332373,7 @@ elf_symbol { name: "crypto_register_rng" is_defined: true symbol_type: FUNCTION - crc: 0x270ab777 + crc: 0x2d9a9612 type_id: 0x9cc9d859 full_name: "crypto_register_rng" } @@ -332259,7 +332382,7 @@ elf_symbol { name: "crypto_register_rngs" is_defined: true symbol_type: FUNCTION - crc: 0xdaaac9f1 + crc: 0x27c24ef4 type_id: 0x9d555b15 full_name: "crypto_register_rngs" } @@ -332268,7 +332391,7 @@ elf_symbol { name: "crypto_register_shash" is_defined: true symbol_type: FUNCTION - crc: 0xa1890d8a + crc: 0xd648b61a type_id: 0x9e955b54 full_name: "crypto_register_shash" } @@ -332277,7 +332400,7 @@ elf_symbol { name: "crypto_register_skcipher" is_defined: true symbol_type: FUNCTION - crc: 0xe5def380 + crc: 0x555b2f42 type_id: 0x928f1946 full_name: "crypto_register_skcipher" } @@ -332286,7 +332409,7 @@ elf_symbol { name: "crypto_req_done" is_defined: true symbol_type: FUNCTION - crc: 0xf2a2e0b0 + crc: 0x97062e3e type_id: 0x10100c3c full_name: "crypto_req_done" } @@ -332295,7 +332418,7 @@ elf_symbol { name: "crypto_shash_digest" is_defined: true symbol_type: FUNCTION - crc: 0xbd7e40c6 + crc: 0x3573756e type_id: 0x9fb1dc71 full_name: "crypto_shash_digest" } @@ -332304,7 +332427,7 @@ elf_symbol { name: "crypto_shash_final" is_defined: true symbol_type: FUNCTION - crc: 0xaab17947 + crc: 0x0727e706 type_id: 0x9f5fa4b7 full_name: "crypto_shash_final" } @@ -332313,7 +332436,7 @@ elf_symbol { name: "crypto_shash_finup" is_defined: true symbol_type: FUNCTION - crc: 0xb3e2be46 + crc: 0x7205c766 type_id: 0x9fb1dc71 full_name: "crypto_shash_finup" } @@ -332322,7 +332445,7 @@ elf_symbol { name: "crypto_shash_setkey" is_defined: true symbol_type: FUNCTION - crc: 0xbe4c0ac7 + crc: 0x4644d069 type_id: 0x98930e77 full_name: "crypto_shash_setkey" } @@ -332331,7 +332454,7 @@ elf_symbol { name: "crypto_shash_tfm_digest" is_defined: true symbol_type: FUNCTION - crc: 0x872a31ff + crc: 0xd350da00 type_id: 0x98930d6b full_name: "crypto_shash_tfm_digest" } @@ -332340,7 +332463,7 @@ elf_symbol { name: "crypto_shash_update" is_defined: true symbol_type: FUNCTION - crc: 0x9ee9531f + crc: 0xd7422c92 type_id: 0x9fb1df6d full_name: "crypto_shash_update" } @@ -332349,7 +332472,7 @@ elf_symbol { name: "crypto_skcipher_decrypt" is_defined: true symbol_type: FUNCTION - crc: 0x8d119d71 + crc: 0x399ebb72 type_id: 0x9a856ac3 full_name: "crypto_skcipher_decrypt" } @@ -332358,7 +332481,7 @@ elf_symbol { name: "crypto_skcipher_encrypt" is_defined: true symbol_type: FUNCTION - crc: 0xd18ab6a1 + crc: 0x11df6fc9 type_id: 0x9a856ac3 full_name: "crypto_skcipher_encrypt" } @@ -332367,7 +332490,7 @@ elf_symbol { name: "crypto_skcipher_setkey" is_defined: true symbol_type: FUNCTION - crc: 0x33779f39 + crc: 0x8fd48870 type_id: 0x9e7f936c full_name: "crypto_skcipher_setkey" } @@ -332376,7 +332499,7 @@ elf_symbol { name: "crypto_unregister_aead" is_defined: true symbol_type: FUNCTION - crc: 0x91270a2a + crc: 0xaa8ccf85 type_id: 0x1817bd12 full_name: "crypto_unregister_aead" } @@ -332385,7 +332508,7 @@ elf_symbol { name: "crypto_unregister_ahash" is_defined: true symbol_type: FUNCTION - crc: 0x6726504f + crc: 0xfe39f306 type_id: 0x13fabadb full_name: "crypto_unregister_ahash" } @@ -332394,7 +332517,7 @@ elf_symbol { name: "crypto_unregister_rng" is_defined: true symbol_type: FUNCTION - crc: 0x1b434b9e + crc: 0x6782ae36 type_id: 0x11d16ae5 full_name: "crypto_unregister_rng" } @@ -332403,7 +332526,7 @@ elf_symbol { name: "crypto_unregister_rngs" is_defined: true symbol_type: FUNCTION - crc: 0xc1dc8e76 + crc: 0x5020b2a1 type_id: 0x104de9a9 full_name: "crypto_unregister_rngs" } @@ -332412,7 +332535,7 @@ elf_symbol { name: "crypto_unregister_shash" is_defined: true symbol_type: FUNCTION - crc: 0x3d0f306a + crc: 0x5973ffde type_id: 0x138de9e8 full_name: "crypto_unregister_shash" } @@ -332421,7 +332544,7 @@ elf_symbol { name: "crypto_unregister_skcipher" is_defined: true symbol_type: FUNCTION - crc: 0x5953daac + crc: 0xbef119f3 type_id: 0x1f97abfa full_name: "crypto_unregister_skcipher" } @@ -332430,7 +332553,7 @@ elf_symbol { name: "css_next_child" is_defined: true symbol_type: FUNCTION - crc: 0x6c33646a + crc: 0x835fefe2 type_id: 0xc867c639 full_name: "css_next_child" } @@ -332466,7 +332589,7 @@ elf_symbol { name: "d_path" is_defined: true symbol_type: FUNCTION - crc: 0x6f758e89 + crc: 0x52ee7db6 type_id: 0x30964cd5 full_name: "d_path" } @@ -332475,7 +332598,7 @@ elf_symbol { name: "dapm_regulator_event" is_defined: true symbol_type: FUNCTION - crc: 0x79e54631 + crc: 0x7052b4c1 type_id: 0x9fb0a0b3 full_name: "dapm_regulator_event" } @@ -332484,7 +332607,7 @@ elf_symbol { name: "datagram_poll" is_defined: true symbol_type: FUNCTION - crc: 0x24f19347 + crc: 0x47ec6684 type_id: 0x2545d8c8 full_name: "datagram_poll" } @@ -332493,7 +332616,7 @@ elf_symbol { name: "dbs_update" is_defined: true symbol_type: FUNCTION - crc: 0x7d9518bf + crc: 0xa636f7a3 type_id: 0xcebcf7b7 full_name: "dbs_update" } @@ -332502,7 +332625,7 @@ elf_symbol { name: "deactivate_locked_super" is_defined: true symbol_type: FUNCTION - crc: 0xf936a0de + crc: 0x681195bc type_id: 0x1923cb99 full_name: "deactivate_locked_super" } @@ -332511,7 +332634,7 @@ elf_symbol { name: "deactivate_task" is_defined: true symbol_type: FUNCTION - crc: 0x29019975 + crc: 0x8f5453fe type_id: 0x1b7558dd full_name: "deactivate_task" } @@ -332538,7 +332661,7 @@ elf_symbol { name: "debugfs_attr_read" is_defined: true symbol_type: FUNCTION - crc: 0x10d502fe + crc: 0xf3b32eee type_id: 0x12e4741f full_name: "debugfs_attr_read" } @@ -332547,7 +332670,7 @@ elf_symbol { name: "debugfs_attr_write" is_defined: true symbol_type: FUNCTION - crc: 0x8c866e3e + crc: 0x079852ad type_id: 0x120e3950 full_name: "debugfs_attr_write" } @@ -332556,7 +332679,7 @@ elf_symbol { name: "debugfs_create_atomic_t" is_defined: true symbol_type: FUNCTION - crc: 0xe19d018b + crc: 0x9e8d6e89 type_id: 0x1f51eecd full_name: "debugfs_create_atomic_t" } @@ -332565,7 +332688,7 @@ elf_symbol { name: "debugfs_create_blob" is_defined: true symbol_type: FUNCTION - crc: 0x76b29057 + crc: 0x5c96dda4 type_id: 0x83b828f4 full_name: "debugfs_create_blob" } @@ -332574,7 +332697,7 @@ elf_symbol { name: "debugfs_create_bool" is_defined: true symbol_type: FUNCTION - crc: 0x1ab142e0 + crc: 0x8333f720 type_id: 0x1f51f760 full_name: "debugfs_create_bool" } @@ -332583,7 +332706,7 @@ elf_symbol { name: "debugfs_create_devm_seqfile" is_defined: true symbol_type: FUNCTION - crc: 0x629fddbd + crc: 0x36e3f8cd type_id: 0x10f21a77 full_name: "debugfs_create_devm_seqfile" } @@ -332592,7 +332715,7 @@ elf_symbol { name: "debugfs_create_dir" is_defined: true symbol_type: FUNCTION - crc: 0x78d5d451 + crc: 0xb96fc681 type_id: 0x83bdcb7d full_name: "debugfs_create_dir" } @@ -332601,7 +332724,7 @@ elf_symbol { name: "debugfs_create_file" is_defined: true symbol_type: FUNCTION - crc: 0xb45c9ca4 + crc: 0xd7640ec9 type_id: 0x83b87db5 full_name: "debugfs_create_file" } @@ -332610,7 +332733,7 @@ elf_symbol { name: "debugfs_create_file_unsafe" is_defined: true symbol_type: FUNCTION - crc: 0x4890e827 + crc: 0x4a9dd9e0 type_id: 0x83b87db5 full_name: "debugfs_create_file_unsafe" } @@ -332619,7 +332742,7 @@ elf_symbol { name: "debugfs_create_size_t" is_defined: true symbol_type: FUNCTION - crc: 0x570ea0b4 + crc: 0x11b8208e type_id: 0x1f516e2a full_name: "debugfs_create_size_t" } @@ -332628,7 +332751,7 @@ elf_symbol { name: "debugfs_create_symlink" is_defined: true symbol_type: FUNCTION - crc: 0x50ac167a + crc: 0xd2391b3a type_id: 0x83b24f50 full_name: "debugfs_create_symlink" } @@ -332637,7 +332760,7 @@ elf_symbol { name: "debugfs_create_u16" is_defined: true symbol_type: FUNCTION - crc: 0xe0dfc9b6 + crc: 0xf5c799fb type_id: 0x1f510b52 full_name: "debugfs_create_u16" } @@ -332646,7 +332769,7 @@ elf_symbol { name: "debugfs_create_u32" is_defined: true symbol_type: FUNCTION - crc: 0xe69963e2 + crc: 0xb19e864a type_id: 0x1f515317 full_name: "debugfs_create_u32" } @@ -332655,7 +332778,7 @@ elf_symbol { name: "debugfs_create_u64" is_defined: true symbol_type: FUNCTION - crc: 0x138e5340 + crc: 0xf286dbb4 type_id: 0x1f51083c full_name: "debugfs_create_u64" } @@ -332664,7 +332787,7 @@ elf_symbol { name: "debugfs_create_u8" is_defined: true symbol_type: FUNCTION - crc: 0x6333a829 + crc: 0x4c21d9fd type_id: 0x1f51b343 full_name: "debugfs_create_u8" } @@ -332673,7 +332796,7 @@ elf_symbol { name: "debugfs_create_ulong" is_defined: true symbol_type: FUNCTION - crc: 0x7aa0c169 + crc: 0xfb450dae type_id: 0x1f51a96a full_name: "debugfs_create_ulong" } @@ -332682,7 +332805,7 @@ elf_symbol { name: "debugfs_create_x32" is_defined: true symbol_type: FUNCTION - crc: 0x8480fa1a + crc: 0x751aa116 type_id: 0x1f515317 full_name: "debugfs_create_x32" } @@ -332691,7 +332814,7 @@ elf_symbol { name: "debugfs_create_x64" is_defined: true symbol_type: FUNCTION - crc: 0x7197cab8 + crc: 0x3602fce8 type_id: 0x1f51083c full_name: "debugfs_create_x64" } @@ -332700,7 +332823,7 @@ elf_symbol { name: "debugfs_create_x8" is_defined: true symbol_type: FUNCTION - crc: 0x865e4cd0 + crc: 0xf47b2d30 type_id: 0x1f51b343 full_name: "debugfs_create_x8" } @@ -332709,7 +332832,7 @@ elf_symbol { name: "debugfs_file_get" is_defined: true symbol_type: FUNCTION - crc: 0x7817940f + crc: 0x00f7c4c3 type_id: 0x9901b31b full_name: "debugfs_file_get" } @@ -332718,7 +332841,7 @@ elf_symbol { name: "debugfs_file_put" is_defined: true symbol_type: FUNCTION - crc: 0x1b0dd317 + crc: 0x1cdc05de type_id: 0x141901a7 full_name: "debugfs_file_put" } @@ -332727,7 +332850,7 @@ elf_symbol { name: "debugfs_lookup" is_defined: true symbol_type: FUNCTION - crc: 0xeee9043a + crc: 0xde20f14c type_id: 0x83bdcb7d full_name: "debugfs_lookup" } @@ -332736,7 +332859,7 @@ elf_symbol { name: "debugfs_lookup_and_remove" is_defined: true symbol_type: FUNCTION - crc: 0x04b0b18c + crc: 0x7b3df00d type_id: 0x1f5469d6 full_name: "debugfs_lookup_and_remove" } @@ -332745,7 +332868,7 @@ elf_symbol { name: "debugfs_remove" is_defined: true symbol_type: FUNCTION - crc: 0x01737946 + crc: 0xb8a229ca type_id: 0x141901a7 full_name: "debugfs_remove" } @@ -332754,7 +332877,7 @@ elf_symbol { name: "debugfs_rename" is_defined: true symbol_type: FUNCTION - crc: 0x92e8c4f9 + crc: 0xfb7ad096 type_id: 0x88bccf1d full_name: "debugfs_rename" } @@ -332763,7 +332886,7 @@ elf_symbol { name: "dec_node_page_state" is_defined: true symbol_type: FUNCTION - crc: 0xf2be154b + crc: 0x87098173 type_id: 0x11899381 full_name: "dec_node_page_state" } @@ -332772,7 +332895,7 @@ elf_symbol { name: "dec_zone_page_state" is_defined: true symbol_type: FUNCTION - crc: 0x519a651c + crc: 0xab88f820 type_id: 0x125f5377 full_name: "dec_zone_page_state" } @@ -332781,7 +332904,7 @@ elf_symbol { name: "default_llseek" is_defined: true symbol_type: FUNCTION - crc: 0xb223fc7a + crc: 0x963382d7 type_id: 0x2d64ae3e full_name: "default_llseek" } @@ -332808,7 +332931,7 @@ elf_symbol { name: "del_gendisk" is_defined: true symbol_type: FUNCTION - crc: 0x5105f773 + crc: 0x3cc9bbff type_id: 0x18d41dd9 full_name: "del_gendisk" } @@ -332844,7 +332967,7 @@ elf_symbol { name: "desc_to_gpio" is_defined: true symbol_type: FUNCTION - crc: 0x7d62811c + crc: 0xc282ae7c type_id: 0x901afa25 full_name: "desc_to_gpio" } @@ -332862,7 +332985,7 @@ elf_symbol { name: "dev_add_pack" is_defined: true symbol_type: FUNCTION - crc: 0x2e9e05f3 + crc: 0x4d9b6862 type_id: 0x15cafbab full_name: "dev_add_pack" } @@ -332871,7 +332994,7 @@ elf_symbol { name: "dev_addr_mod" is_defined: true symbol_type: FUNCTION - crc: 0x6f63d439 + crc: 0xf723e20c type_id: 0x1d2a5bee full_name: "dev_addr_mod" } @@ -332880,7 +333003,7 @@ elf_symbol { name: "dev_alloc_name" is_defined: true symbol_type: FUNCTION - crc: 0x7ad23435 + crc: 0xc88f3c55 type_id: 0x91d1290e full_name: "dev_alloc_name" } @@ -332889,7 +333012,7 @@ elf_symbol { name: "dev_change_flags" is_defined: true symbol_type: FUNCTION - crc: 0xdc0c279f + crc: 0x631f95ad type_id: 0x903e8974 full_name: "dev_change_flags" } @@ -332898,7 +333021,7 @@ elf_symbol { name: "dev_close" is_defined: true symbol_type: FUNCTION - crc: 0x11f0788e + crc: 0x97514556 type_id: 0x1c31d966 full_name: "dev_close" } @@ -332916,7 +333039,7 @@ elf_symbol { name: "dev_coredumpm" is_defined: true symbol_type: FUNCTION - crc: 0x0b36943f + crc: 0x1d2a3dbc type_id: 0x10273360 full_name: "dev_coredumpm" } @@ -332925,7 +333048,7 @@ elf_symbol { name: "dev_coredumpv" is_defined: true symbol_type: FUNCTION - crc: 0xf3e06701 + crc: 0xc7068337 type_id: 0x1052519d full_name: "dev_coredumpv" } @@ -332934,7 +333057,7 @@ elf_symbol { name: "dev_driver_string" is_defined: true symbol_type: FUNCTION - crc: 0xb49fa315 + crc: 0xde1e8d26 type_id: 0x9dad8b1c full_name: "dev_driver_string" } @@ -332943,7 +333066,7 @@ elf_symbol { name: "dev_err_probe" is_defined: true symbol_type: FUNCTION - crc: 0x2f996cc2 + crc: 0xb9059422 type_id: 0x93f8ec59 full_name: "dev_err_probe" } @@ -332961,7 +333084,7 @@ elf_symbol { name: "dev_fwnode" is_defined: true symbol_type: FUNCTION - crc: 0x585dce5f + crc: 0x68cdbc67 type_id: 0x368f1732 full_name: "dev_fwnode" } @@ -332970,7 +333093,7 @@ elf_symbol { name: "dev_get_by_index" is_defined: true symbol_type: FUNCTION - crc: 0x46c2bdfd + crc: 0x53aa4b38 type_id: 0xfec79391 full_name: "dev_get_by_index" } @@ -332979,7 +333102,7 @@ elf_symbol { name: "dev_get_by_index_rcu" is_defined: true symbol_type: FUNCTION - crc: 0x81ae0c38 + crc: 0xb18d182a type_id: 0xfec79391 full_name: "dev_get_by_index_rcu" } @@ -332988,7 +333111,7 @@ elf_symbol { name: "dev_get_by_name" is_defined: true symbol_type: FUNCTION - crc: 0xc3ccc25f + crc: 0xba83112a type_id: 0xffa35209 full_name: "dev_get_by_name" } @@ -332997,7 +333120,7 @@ elf_symbol { name: "dev_get_by_name_rcu" is_defined: true symbol_type: FUNCTION - crc: 0xa7a07f8b + crc: 0x2ab63e1e type_id: 0xffa35209 full_name: "dev_get_by_name_rcu" } @@ -333006,7 +333129,7 @@ elf_symbol { name: "dev_get_flags" is_defined: true symbol_type: FUNCTION - crc: 0x257a0691 + crc: 0x3d0b2b0a type_id: 0xc23d0fef full_name: "dev_get_flags" } @@ -333015,7 +333138,7 @@ elf_symbol { name: "dev_get_regmap" is_defined: true symbol_type: FUNCTION - crc: 0x2ee001ce + crc: 0x4a332e28 type_id: 0x8cdb45af full_name: "dev_get_regmap" } @@ -333024,7 +333147,7 @@ elf_symbol { name: "dev_get_stats" is_defined: true symbol_type: FUNCTION - crc: 0x02bb910c + crc: 0x912982b9 type_id: 0x7370e0bf full_name: "dev_get_stats" } @@ -333033,7 +333156,7 @@ elf_symbol { name: "dev_getbyhwaddr_rcu" is_defined: true symbol_type: FUNCTION - crc: 0x7dd94250 + crc: 0xf6ad4f26 type_id: 0xfc706cf5 full_name: "dev_getbyhwaddr_rcu" } @@ -333042,7 +333165,7 @@ elf_symbol { name: "dev_getfirstbyhwtype" is_defined: true symbol_type: FUNCTION - crc: 0x65fecb2d + crc: 0x83907aae type_id: 0xfc7fe8d8 full_name: "dev_getfirstbyhwtype" } @@ -333051,7 +333174,7 @@ elf_symbol { name: "dev_load" is_defined: true symbol_type: FUNCTION - crc: 0x9fa0eeb7 + crc: 0x9567f9d8 type_id: 0x13488e67 full_name: "dev_load" } @@ -333060,7 +333183,7 @@ elf_symbol { name: "dev_mc_sync" is_defined: true symbol_type: FUNCTION - crc: 0xb9c68fc5 + crc: 0x91605cb9 type_id: 0x91e3f355 full_name: "dev_mc_sync" } @@ -333069,7 +333192,7 @@ elf_symbol { name: "dev_mc_sync_multiple" is_defined: true symbol_type: FUNCTION - crc: 0xa8c9c0e1 + crc: 0x9f242462 type_id: 0x91e3f355 full_name: "dev_mc_sync_multiple" } @@ -333078,7 +333201,7 @@ elf_symbol { name: "dev_mc_unsync" is_defined: true symbol_type: FUNCTION - crc: 0x7be4d97d + crc: 0x64c94305 type_id: 0x1cfb41e9 full_name: "dev_mc_unsync" } @@ -333087,7 +333210,7 @@ elf_symbol { name: "dev_nit_active" is_defined: true symbol_type: FUNCTION - crc: 0x5782f790 + crc: 0xfe098378 type_id: 0xf20dd3f1 full_name: "dev_nit_active" } @@ -333096,7 +333219,7 @@ elf_symbol { name: "dev_open" is_defined: true symbol_type: FUNCTION - crc: 0xe8ff2619 + crc: 0x524aba17 type_id: 0x913618b5 full_name: "dev_open" } @@ -333105,7 +333228,7 @@ elf_symbol { name: "dev_pm_clear_wake_irq" is_defined: true symbol_type: FUNCTION - crc: 0x7aff4b93 + crc: 0x2568dc18 type_id: 0x100e6fc8 full_name: "dev_pm_clear_wake_irq" } @@ -333114,7 +333237,7 @@ elf_symbol { name: "dev_pm_domain_attach" is_defined: true symbol_type: FUNCTION - crc: 0x0b72fcf1 + crc: 0xde1d5545 type_id: 0x9ca3200b full_name: "dev_pm_domain_attach" } @@ -333123,7 +333246,7 @@ elf_symbol { name: "dev_pm_domain_attach_by_name" is_defined: true symbol_type: FUNCTION - crc: 0x9a3b20c8 + crc: 0x2f4121b4 type_id: 0xad414cb1 full_name: "dev_pm_domain_attach_by_name" } @@ -333132,7 +333255,7 @@ elf_symbol { name: "dev_pm_domain_detach" is_defined: true symbol_type: FUNCTION - crc: 0x205fc374 + crc: 0x477842ff type_id: 0x11bb92b7 full_name: "dev_pm_domain_detach" } @@ -333141,7 +333264,7 @@ elf_symbol { name: "dev_pm_genpd_add_notifier" is_defined: true symbol_type: FUNCTION - crc: 0xbf376f6f + crc: 0x53ae4a84 type_id: 0x9d7807e5 full_name: "dev_pm_genpd_add_notifier" } @@ -333150,7 +333273,7 @@ elf_symbol { name: "dev_pm_genpd_remove_notifier" is_defined: true symbol_type: FUNCTION - crc: 0x78225734 + crc: 0xb72bf332 type_id: 0x9d16dd74 full_name: "dev_pm_genpd_remove_notifier" } @@ -333159,7 +333282,7 @@ elf_symbol { name: "dev_pm_genpd_set_next_wakeup" is_defined: true symbol_type: FUNCTION - crc: 0xc320a7ac + crc: 0x0c7adc9d type_id: 0x10497fda full_name: "dev_pm_genpd_set_next_wakeup" } @@ -333168,7 +333291,7 @@ elf_symbol { name: "dev_pm_genpd_set_performance_state" is_defined: true symbol_type: FUNCTION - crc: 0x41f524e9 + crc: 0xe173bf1e type_id: 0x9c00c8ec full_name: "dev_pm_genpd_set_performance_state" } @@ -333177,7 +333300,7 @@ elf_symbol { name: "dev_pm_opp_add" is_defined: true symbol_type: FUNCTION - crc: 0x8e9f0e2d + crc: 0xad948efc type_id: 0x9dd7d5bf full_name: "dev_pm_opp_add" } @@ -333186,7 +333309,7 @@ elf_symbol { name: "dev_pm_opp_adjust_voltage" is_defined: true symbol_type: FUNCTION - crc: 0xc3046798 + crc: 0xb14830b6 type_id: 0x9dd714b7 full_name: "dev_pm_opp_adjust_voltage" } @@ -333204,7 +333327,7 @@ elf_symbol { name: "dev_pm_opp_disable" is_defined: true symbol_type: FUNCTION - crc: 0x8e6e9f9d + crc: 0x4c0a1cfc type_id: 0x9ddb08e6 full_name: "dev_pm_opp_disable" } @@ -333213,7 +333336,7 @@ elf_symbol { name: "dev_pm_opp_enable" is_defined: true symbol_type: FUNCTION - crc: 0x7e9297d2 + crc: 0x436e57ae type_id: 0x9ddb08e6 full_name: "dev_pm_opp_enable" } @@ -333222,7 +333345,7 @@ elf_symbol { name: "dev_pm_opp_find_freq_ceil" is_defined: true symbol_type: FUNCTION - crc: 0x16d5a7bb + crc: 0x40f6b37f type_id: 0x81de8179 full_name: "dev_pm_opp_find_freq_ceil" } @@ -333231,7 +333354,7 @@ elf_symbol { name: "dev_pm_opp_find_freq_exact" is_defined: true symbol_type: FUNCTION - crc: 0xfaf3b30b + crc: 0x3f5c8c39 type_id: 0x81113ebe full_name: "dev_pm_opp_find_freq_exact" } @@ -333240,7 +333363,7 @@ elf_symbol { name: "dev_pm_opp_find_freq_floor" is_defined: true symbol_type: FUNCTION - crc: 0x4e935d98 + crc: 0xd2cc7825 type_id: 0x81de8179 full_name: "dev_pm_opp_find_freq_floor" } @@ -333249,7 +333372,7 @@ elf_symbol { name: "dev_pm_opp_find_level_exact" is_defined: true symbol_type: FUNCTION - crc: 0xd93fa21b + crc: 0x49ef452e type_id: 0x80d1a163 full_name: "dev_pm_opp_find_level_exact" } @@ -333258,7 +333381,7 @@ elf_symbol { name: "dev_pm_opp_get_freq" is_defined: true symbol_type: FUNCTION - crc: 0x6911486c + crc: 0xe41d6fd0 type_id: 0x37d5564f full_name: "dev_pm_opp_get_freq" } @@ -333267,7 +333390,7 @@ elf_symbol { name: "dev_pm_opp_get_level" is_defined: true symbol_type: FUNCTION - crc: 0x778395e9 + crc: 0x23573418 type_id: 0xc8a2e5e7 full_name: "dev_pm_opp_get_level" } @@ -333276,7 +333399,7 @@ elf_symbol { name: "dev_pm_opp_get_of_node" is_defined: true symbol_type: FUNCTION - crc: 0xdf13bac0 + crc: 0x12cbe615 type_id: 0x708a45ca full_name: "dev_pm_opp_get_of_node" } @@ -333285,7 +333408,7 @@ elf_symbol { name: "dev_pm_opp_get_opp_count" is_defined: true symbol_type: FUNCTION - crc: 0xfcb48b9f + crc: 0x63783128 type_id: 0x9d16dd74 full_name: "dev_pm_opp_get_opp_count" } @@ -333294,7 +333417,7 @@ elf_symbol { name: "dev_pm_opp_get_voltage" is_defined: true symbol_type: FUNCTION - crc: 0xaaeea4c7 + crc: 0xd4ecd6f0 type_id: 0x37d5564f full_name: "dev_pm_opp_get_voltage" } @@ -333303,7 +333426,7 @@ elf_symbol { name: "dev_pm_opp_of_add_table" is_defined: true symbol_type: FUNCTION - crc: 0xde401a02 + crc: 0xa70584da type_id: 0x9d16dd74 full_name: "dev_pm_opp_of_add_table" } @@ -333321,7 +333444,7 @@ elf_symbol { name: "dev_pm_opp_of_find_icc_paths" is_defined: true symbol_type: FUNCTION - crc: 0xca05e794 + crc: 0x555e893b type_id: 0x9d899db1 full_name: "dev_pm_opp_of_find_icc_paths" } @@ -333330,7 +333453,7 @@ elf_symbol { name: "dev_pm_opp_of_get_opp_desc_node" is_defined: true symbol_type: FUNCTION - crc: 0x48573f22 + crc: 0x8cd63bf1 type_id: 0x7665e08d full_name: "dev_pm_opp_of_get_opp_desc_node" } @@ -333339,7 +333462,7 @@ elf_symbol { name: "dev_pm_opp_of_register_em" is_defined: true symbol_type: FUNCTION - crc: 0x251b4896 + crc: 0xfde37e32 type_id: 0x9df535bf full_name: "dev_pm_opp_of_register_em" } @@ -333348,7 +333471,7 @@ elf_symbol { name: "dev_pm_opp_of_remove_table" is_defined: true symbol_type: FUNCTION - crc: 0xe37bae07 + crc: 0x442456bf type_id: 0x100e6fc8 full_name: "dev_pm_opp_of_remove_table" } @@ -333357,7 +333480,7 @@ elf_symbol { name: "dev_pm_opp_put" is_defined: true symbol_type: FUNCTION - crc: 0x73794981 + crc: 0x4c96dad4 type_id: 0x16e1ca8f full_name: "dev_pm_opp_put" } @@ -333366,7 +333489,7 @@ elf_symbol { name: "dev_pm_opp_remove" is_defined: true symbol_type: FUNCTION - crc: 0x77564cd7 + crc: 0x9e0a0167 type_id: 0x10c3ba5a full_name: "dev_pm_opp_remove" } @@ -333375,7 +333498,7 @@ elf_symbol { name: "dev_pm_opp_remove_all_dynamic" is_defined: true symbol_type: FUNCTION - crc: 0x7e20c461 + crc: 0x4ac91760 type_id: 0x100e6fc8 full_name: "dev_pm_opp_remove_all_dynamic" } @@ -333384,7 +333507,7 @@ elf_symbol { name: "dev_pm_opp_set_config" is_defined: true symbol_type: FUNCTION - crc: 0xd6394a06 + crc: 0x465aa9c6 type_id: 0x9d0fcb12 full_name: "dev_pm_opp_set_config" } @@ -333393,7 +333516,7 @@ elf_symbol { name: "dev_pm_opp_set_opp" is_defined: true symbol_type: FUNCTION - crc: 0x3bf48bdf + crc: 0x3ba5c6e5 type_id: 0x9d7144c5 full_name: "dev_pm_opp_set_opp" } @@ -333402,7 +333525,7 @@ elf_symbol { name: "dev_pm_opp_set_rate" is_defined: true symbol_type: FUNCTION - crc: 0x2f1b443c + crc: 0x6649a527 type_id: 0x9ddb08e6 full_name: "dev_pm_opp_set_rate" } @@ -333411,7 +333534,7 @@ elf_symbol { name: "dev_pm_opp_set_sharing_cpus" is_defined: true symbol_type: FUNCTION - crc: 0x145d97db + crc: 0xf841ed88 type_id: 0x9dd2e674 full_name: "dev_pm_opp_set_sharing_cpus" } @@ -333420,7 +333543,7 @@ elf_symbol { name: "dev_pm_qos_add_notifier" is_defined: true symbol_type: FUNCTION - crc: 0x2fcf6a54 + crc: 0xf4df6170 type_id: 0x9d75a454 full_name: "dev_pm_qos_add_notifier" } @@ -333429,7 +333552,7 @@ elf_symbol { name: "dev_pm_qos_add_request" is_defined: true symbol_type: FUNCTION - crc: 0x851343a0 + crc: 0x5abe0ec5 type_id: 0x9d40265c full_name: "dev_pm_qos_add_request" } @@ -333438,7 +333561,7 @@ elf_symbol { name: "dev_pm_qos_read_value" is_defined: true symbol_type: FUNCTION - crc: 0x58248d9d + crc: 0xb5f329ff type_id: 0x811e789b full_name: "dev_pm_qos_read_value" } @@ -333447,7 +333570,7 @@ elf_symbol { name: "dev_pm_qos_remove_notifier" is_defined: true symbol_type: FUNCTION - crc: 0x9deee1fe + crc: 0x685fe3c9 type_id: 0x9d75a454 full_name: "dev_pm_qos_remove_notifier" } @@ -333456,7 +333579,7 @@ elf_symbol { name: "dev_pm_qos_remove_request" is_defined: true symbol_type: FUNCTION - crc: 0x3351b339 + crc: 0x2ed6fd50 type_id: 0x98006d18 full_name: "dev_pm_qos_remove_request" } @@ -333465,7 +333588,7 @@ elf_symbol { name: "dev_pm_qos_update_request" is_defined: true symbol_type: FUNCTION - crc: 0x36e0cc0c + crc: 0xecb4c2e1 type_id: 0x9b50173a full_name: "dev_pm_qos_update_request" } @@ -333474,7 +333597,7 @@ elf_symbol { name: "dev_pm_set_wake_irq" is_defined: true symbol_type: FUNCTION - crc: 0x0ac5f039 + crc: 0x14b7c729 type_id: 0x9c8a5e38 full_name: "dev_pm_set_wake_irq" } @@ -333483,7 +333606,7 @@ elf_symbol { name: "dev_printk_emit" is_defined: true symbol_type: FUNCTION - crc: 0x31d734b4 + crc: 0x5d0c3ded type_id: 0x84bb5eaa full_name: "dev_printk_emit" } @@ -333492,7 +333615,7 @@ elf_symbol { name: "dev_remove_pack" is_defined: true symbol_type: FUNCTION - crc: 0x35298da1 + crc: 0xeb78e259 type_id: 0x15cafbab full_name: "dev_remove_pack" } @@ -333501,7 +333624,7 @@ elf_symbol { name: "dev_set_allmulti" is_defined: true symbol_type: FUNCTION - crc: 0x8d83f6ee + crc: 0xf6f92d3c type_id: 0x90b5e896 full_name: "dev_set_allmulti" } @@ -333510,7 +333633,7 @@ elf_symbol { name: "dev_set_mac_address" is_defined: true symbol_type: FUNCTION - crc: 0xd409efff + crc: 0x9077a63c type_id: 0x91fbd1f6 full_name: "dev_set_mac_address" } @@ -333519,7 +333642,7 @@ elf_symbol { name: "dev_set_mtu" is_defined: true symbol_type: FUNCTION - crc: 0x8c6db5b2 + crc: 0xb8b52529 type_id: 0x90b5e896 full_name: "dev_set_mtu" } @@ -333528,7 +333651,7 @@ elf_symbol { name: "dev_set_name" is_defined: true symbol_type: FUNCTION - crc: 0xfcf7de99 + crc: 0xaae08318 type_id: 0x9dc7d522 full_name: "dev_set_name" } @@ -333537,7 +333660,7 @@ elf_symbol { name: "dev_set_promiscuity" is_defined: true symbol_type: FUNCTION - crc: 0xc5ffba91 + crc: 0x2741f99c type_id: 0x90b5e896 full_name: "dev_set_promiscuity" } @@ -333546,7 +333669,7 @@ elf_symbol { name: "dev_set_threaded" is_defined: true symbol_type: FUNCTION - crc: 0x1145b5a1 + crc: 0xc989dbda type_id: 0x909c96a5 full_name: "dev_set_threaded" } @@ -333555,7 +333678,7 @@ elf_symbol { name: "dev_uc_add" is_defined: true symbol_type: FUNCTION - crc: 0x0f8a282f + crc: 0x05908be4 type_id: 0x91c85a84 full_name: "dev_uc_add" } @@ -333564,7 +333687,7 @@ elf_symbol { name: "dev_uc_del" is_defined: true symbol_type: FUNCTION - crc: 0x8ab38809 + crc: 0x590075b6 type_id: 0x91c85a84 full_name: "dev_uc_del" } @@ -333573,7 +333696,7 @@ elf_symbol { name: "dev_uc_sync" is_defined: true symbol_type: FUNCTION - crc: 0x51a9f74a + crc: 0x46cce0fe type_id: 0x91e3f355 full_name: "dev_uc_sync" } @@ -333582,7 +333705,7 @@ elf_symbol { name: "dev_uc_sync_multiple" is_defined: true symbol_type: FUNCTION - crc: 0xe97920b9 + crc: 0x2bbe1cc9 type_id: 0x91e3f355 full_name: "dev_uc_sync_multiple" } @@ -333591,7 +333714,7 @@ elf_symbol { name: "dev_uc_unsync" is_defined: true symbol_type: FUNCTION - crc: 0x99214c98 + crc: 0x1926b2cc type_id: 0x1cfb41e9 full_name: "dev_uc_unsync" } @@ -333600,7 +333723,7 @@ elf_symbol { name: "devfreq_add_device" is_defined: true symbol_type: FUNCTION - crc: 0x71425b78 + crc: 0x5c09aeb6 type_id: 0xda80c39b full_name: "devfreq_add_device" } @@ -333609,7 +333732,7 @@ elf_symbol { name: "devfreq_add_governor" is_defined: true symbol_type: FUNCTION - crc: 0x13fb5cf3 + crc: 0x4ae22bf2 type_id: 0x91cab466 full_name: "devfreq_add_governor" } @@ -333618,7 +333741,7 @@ elf_symbol { name: "devfreq_cooling_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x39ab9791 + crc: 0x79cce91b type_id: 0x11aaf502 full_name: "devfreq_cooling_unregister" } @@ -333627,7 +333750,7 @@ elf_symbol { name: "devfreq_get_devfreq_by_node" is_defined: true symbol_type: FUNCTION - crc: 0x8329e51b + crc: 0x771efe9d type_id: 0xd7754407 full_name: "devfreq_get_devfreq_by_node" } @@ -333636,7 +333759,7 @@ elf_symbol { name: "devfreq_monitor_resume" is_defined: true symbol_type: FUNCTION - crc: 0xbd556793 + crc: 0xf5067427 type_id: 0x1942d44d full_name: "devfreq_monitor_resume" } @@ -333645,7 +333768,7 @@ elf_symbol { name: "devfreq_monitor_start" is_defined: true symbol_type: FUNCTION - crc: 0x5245e3e2 + crc: 0x30922f64 type_id: 0x1942d44d full_name: "devfreq_monitor_start" } @@ -333654,7 +333777,7 @@ elf_symbol { name: "devfreq_monitor_stop" is_defined: true symbol_type: FUNCTION - crc: 0xa1be9926 + crc: 0x7299a376 type_id: 0x1942d44d full_name: "devfreq_monitor_stop" } @@ -333663,7 +333786,7 @@ elf_symbol { name: "devfreq_monitor_suspend" is_defined: true symbol_type: FUNCTION - crc: 0x114dfe05 + crc: 0x5166a20c type_id: 0x1942d44d full_name: "devfreq_monitor_suspend" } @@ -333672,7 +333795,7 @@ elf_symbol { name: "devfreq_recommended_opp" is_defined: true symbol_type: FUNCTION - crc: 0xad2e77a5 + crc: 0x1771d909 type_id: 0x81ecc373 full_name: "devfreq_recommended_opp" } @@ -333681,7 +333804,7 @@ elf_symbol { name: "devfreq_register_opp_notifier" is_defined: true symbol_type: FUNCTION - crc: 0x894b94a2 + crc: 0x38619e05 type_id: 0x9d8b7529 full_name: "devfreq_register_opp_notifier" } @@ -333690,7 +333813,7 @@ elf_symbol { name: "devfreq_remove_device" is_defined: true symbol_type: FUNCTION - crc: 0x62911791 + crc: 0x5199b58b type_id: 0x945a66f1 full_name: "devfreq_remove_device" } @@ -333699,7 +333822,7 @@ elf_symbol { name: "devfreq_remove_governor" is_defined: true symbol_type: FUNCTION - crc: 0xcb97ff4d + crc: 0x2b6a4f5a type_id: 0x91cab466 full_name: "devfreq_remove_governor" } @@ -333708,7 +333831,7 @@ elf_symbol { name: "devfreq_resume_device" is_defined: true symbol_type: FUNCTION - crc: 0x344a98f4 + crc: 0x39d2f3be type_id: 0x945a66f1 full_name: "devfreq_resume_device" } @@ -333717,7 +333840,7 @@ elf_symbol { name: "devfreq_suspend_device" is_defined: true symbol_type: FUNCTION - crc: 0x9e5e29a6 + crc: 0x272ffed0 type_id: 0x945a66f1 full_name: "devfreq_suspend_device" } @@ -333726,7 +333849,7 @@ elf_symbol { name: "devfreq_unregister_opp_notifier" is_defined: true symbol_type: FUNCTION - crc: 0x2da4cec0 + crc: 0x06ff9163 type_id: 0x9d8b7529 full_name: "devfreq_unregister_opp_notifier" } @@ -333735,7 +333858,7 @@ elf_symbol { name: "devfreq_update_interval" is_defined: true symbol_type: FUNCTION - crc: 0xd03ec382 + crc: 0x3340594f type_id: 0x192d11cd full_name: "devfreq_update_interval" } @@ -333744,7 +333867,7 @@ elf_symbol { name: "device_add" is_defined: true symbol_type: FUNCTION - crc: 0xc767301c + crc: 0xfa9b07a1 type_id: 0x9d16dd74 full_name: "device_add" } @@ -333753,7 +333876,7 @@ elf_symbol { name: "device_add_disk" is_defined: true symbol_type: FUNCTION - crc: 0x5100b40f + crc: 0x93594cd6 type_id: 0x9d93897e full_name: "device_add_disk" } @@ -333762,7 +333885,7 @@ elf_symbol { name: "device_add_groups" is_defined: true symbol_type: FUNCTION - crc: 0xf8a97210 + crc: 0x70c25587 type_id: 0x9d0fd195 full_name: "device_add_groups" } @@ -333771,7 +333894,7 @@ elf_symbol { name: "device_bind_driver" is_defined: true symbol_type: FUNCTION - crc: 0xfe3863f7 + crc: 0x3da1991a type_id: 0x9d16dd74 full_name: "device_bind_driver" } @@ -333780,7 +333903,7 @@ elf_symbol { name: "device_create" is_defined: true symbol_type: FUNCTION - crc: 0xd1ccaafa + crc: 0x3daaf004 type_id: 0xa78fe504 full_name: "device_create" } @@ -333789,7 +333912,7 @@ elf_symbol { name: "device_create_bin_file" is_defined: true symbol_type: FUNCTION - crc: 0xfc6af940 + crc: 0x38cd938f type_id: 0x9df7985b full_name: "device_create_bin_file" } @@ -333798,7 +333921,7 @@ elf_symbol { name: "device_create_file" is_defined: true symbol_type: FUNCTION - crc: 0x0e85db40 + crc: 0xfcf66574 type_id: 0x9de4ff9b full_name: "device_create_file" } @@ -333807,7 +333930,7 @@ elf_symbol { name: "device_create_managed_software_node" is_defined: true symbol_type: FUNCTION - crc: 0x3fd48659 + crc: 0x98b1dbe6 type_id: 0x9dc044d0 full_name: "device_create_managed_software_node" } @@ -333816,7 +333939,7 @@ elf_symbol { name: "device_create_with_groups" is_defined: true symbol_type: FUNCTION - crc: 0x346076d0 + crc: 0x09b180ba type_id: 0xa78fe955 full_name: "device_create_with_groups" } @@ -333825,7 +333948,7 @@ elf_symbol { name: "device_del" is_defined: true symbol_type: FUNCTION - crc: 0x04e76a32 + crc: 0x764f885c type_id: 0x100e6fc8 full_name: "device_del" } @@ -333834,7 +333957,7 @@ elf_symbol { name: "device_destroy" is_defined: true symbol_type: FUNCTION - crc: 0x01cd3d1b + crc: 0x3d4adbb8 type_id: 0x19a776c5 full_name: "device_destroy" } @@ -333843,7 +333966,7 @@ elf_symbol { name: "device_find_child" is_defined: true symbol_type: FUNCTION - crc: 0x0705d106 + crc: 0xf39e6729 type_id: 0xadd088bd full_name: "device_find_child" } @@ -333852,7 +333975,7 @@ elf_symbol { name: "device_for_each_child" is_defined: true symbol_type: FUNCTION - crc: 0x9a1cb4ed + crc: 0xcf6ef1cb type_id: 0x9d7f5bac full_name: "device_for_each_child" } @@ -333861,7 +333984,7 @@ elf_symbol { name: "device_for_each_child_reverse" is_defined: true symbol_type: FUNCTION - crc: 0x84412de0 + crc: 0x93059459 type_id: 0x9d7f5bac full_name: "device_for_each_child_reverse" } @@ -333870,7 +333993,7 @@ elf_symbol { name: "device_get_child_node_count" is_defined: true symbol_type: FUNCTION - crc: 0x695e66b1 + crc: 0x317decd8 type_id: 0xce4d40a0 full_name: "device_get_child_node_count" } @@ -333879,7 +334002,7 @@ elf_symbol { name: "device_get_dma_attr" is_defined: true symbol_type: FUNCTION - crc: 0xeaafc9e4 + crc: 0xc4c1bdec type_id: 0x167dac02 full_name: "device_get_dma_attr" } @@ -333888,7 +334011,7 @@ elf_symbol { name: "device_get_mac_address" is_defined: true symbol_type: FUNCTION - crc: 0x25638443 + crc: 0x94938203 type_id: 0x9d04d2ef full_name: "device_get_mac_address" } @@ -333897,7 +334020,7 @@ elf_symbol { name: "device_get_match_data" is_defined: true symbol_type: FUNCTION - crc: 0x833685e7 + crc: 0x8cd9835c type_id: 0x5846e63a full_name: "device_get_match_data" } @@ -333906,7 +334029,7 @@ elf_symbol { name: "device_get_named_child_node" is_defined: true symbol_type: FUNCTION - crc: 0xfdd1207d + crc: 0x7f48329d type_id: 0x3908f702 full_name: "device_get_named_child_node" } @@ -333915,7 +334038,7 @@ elf_symbol { name: "device_get_next_child_node" is_defined: true symbol_type: FUNCTION - crc: 0x7ae1f8af + crc: 0x5761c92e type_id: 0x39e2f73b full_name: "device_get_next_child_node" } @@ -333924,7 +334047,7 @@ elf_symbol { name: "device_get_phy_mode" is_defined: true symbol_type: FUNCTION - crc: 0xbd825b80 + crc: 0x56703fbb type_id: 0x9d16dd74 full_name: "device_get_phy_mode" } @@ -333933,7 +334056,7 @@ elf_symbol { name: "device_initialize" is_defined: true symbol_type: FUNCTION - crc: 0x3f35e063 + crc: 0xcae5117c type_id: 0x100e6fc8 full_name: "device_initialize" } @@ -333942,7 +334065,7 @@ elf_symbol { name: "device_link_add" is_defined: true symbol_type: FUNCTION - crc: 0x0917614e + crc: 0xa3149068 type_id: 0x60262630 full_name: "device_link_add" } @@ -333951,7 +334074,7 @@ elf_symbol { name: "device_link_del" is_defined: true symbol_type: FUNCTION - crc: 0xca0450f6 + crc: 0xaf2f19eb type_id: 0x19ba6fc0 full_name: "device_link_del" } @@ -333960,7 +334083,7 @@ elf_symbol { name: "device_link_remove" is_defined: true symbol_type: FUNCTION - crc: 0xcbdba31d + crc: 0xf0133e6a type_id: 0x16be6b3a full_name: "device_link_remove" } @@ -333969,7 +334092,7 @@ elf_symbol { name: "device_match_fwnode" is_defined: true symbol_type: FUNCTION - crc: 0x900a9d24 + crc: 0x9f9fe3e0 type_id: 0x9df2a123 full_name: "device_match_fwnode" } @@ -333978,7 +334101,7 @@ elf_symbol { name: "device_match_name" is_defined: true symbol_type: FUNCTION - crc: 0x1938278f + crc: 0x7e0ea879 type_id: 0x9df2a123 full_name: "device_match_name" } @@ -333987,7 +334110,7 @@ elf_symbol { name: "device_match_of_node" is_defined: true symbol_type: FUNCTION - crc: 0x137f2dbb + crc: 0x39aabbf7 type_id: 0x9df2a123 full_name: "device_match_of_node" } @@ -333996,7 +334119,7 @@ elf_symbol { name: "device_move" is_defined: true symbol_type: FUNCTION - crc: 0xba6cd0db + crc: 0xcb5cbd71 type_id: 0x9d26cfef full_name: "device_move" } @@ -334005,7 +334128,7 @@ elf_symbol { name: "device_property_match_string" is_defined: true symbol_type: FUNCTION - crc: 0x150e91e9 + crc: 0x4af97d22 type_id: 0x9de11b8d full_name: "device_property_match_string" } @@ -334014,7 +334137,7 @@ elf_symbol { name: "device_property_present" is_defined: true symbol_type: FUNCTION - crc: 0x2ffca962 + crc: 0x24ccabe2 type_id: 0xfeca278b full_name: "device_property_present" } @@ -334023,7 +334146,7 @@ elf_symbol { name: "device_property_read_string" is_defined: true symbol_type: FUNCTION - crc: 0x6648e134 + crc: 0xafc71043 type_id: 0x9defdaa5 full_name: "device_property_read_string" } @@ -334032,7 +334155,7 @@ elf_symbol { name: "device_property_read_u16_array" is_defined: true symbol_type: FUNCTION - crc: 0xb140ebfc + crc: 0x8906cf00 type_id: 0x9de6ffa0 full_name: "device_property_read_u16_array" } @@ -334041,7 +334164,7 @@ elf_symbol { name: "device_property_read_u32_array" is_defined: true symbol_type: FUNCTION - crc: 0x37c2cdea + crc: 0x6404735a type_id: 0x9de37bf9 full_name: "device_property_read_u32_array" } @@ -334050,7 +334173,7 @@ elf_symbol { name: "device_property_read_u8_array" is_defined: true symbol_type: FUNCTION - crc: 0xacf6bd32 + crc: 0xb44ca875 type_id: 0x9ded7ebc full_name: "device_property_read_u8_array" } @@ -334059,7 +334182,7 @@ elf_symbol { name: "device_register" is_defined: true symbol_type: FUNCTION - crc: 0x168ab457 + crc: 0xac78bd05 type_id: 0x9d16dd74 full_name: "device_register" } @@ -334068,7 +334191,7 @@ elf_symbol { name: "device_release_driver" is_defined: true symbol_type: FUNCTION - crc: 0xeff6bc19 + crc: 0xf2752bc1 type_id: 0x100e6fc8 full_name: "device_release_driver" } @@ -334077,7 +334200,7 @@ elf_symbol { name: "device_remove_bin_file" is_defined: true symbol_type: FUNCTION - crc: 0x8133caa5 + crc: 0x6660c700 type_id: 0x10ef2ae7 full_name: "device_remove_bin_file" } @@ -334086,7 +334209,7 @@ elf_symbol { name: "device_remove_file" is_defined: true symbol_type: FUNCTION - crc: 0xc11775a2 + crc: 0xd4cd1e42 type_id: 0x10fc4d27 full_name: "device_remove_file" } @@ -334095,7 +334218,7 @@ elf_symbol { name: "device_remove_groups" is_defined: true symbol_type: FUNCTION - crc: 0xbccf3822 + crc: 0x12a514eb type_id: 0x10176329 full_name: "device_remove_groups" } @@ -334104,7 +334227,7 @@ elf_symbol { name: "device_rename" is_defined: true symbol_type: FUNCTION - crc: 0x3ef78020 + crc: 0x4b15ed40 type_id: 0x9dee9fa0 full_name: "device_rename" } @@ -334113,7 +334236,7 @@ elf_symbol { name: "device_set_wakeup_capable" is_defined: true symbol_type: FUNCTION - crc: 0xcb7816fb + crc: 0x3d24b546 type_id: 0x11bb92b7 full_name: "device_set_wakeup_capable" } @@ -334122,7 +334245,7 @@ elf_symbol { name: "device_set_wakeup_enable" is_defined: true symbol_type: FUNCTION - crc: 0x54a6d3a8 + crc: 0x2cea5120 type_id: 0x9ca3200b full_name: "device_set_wakeup_enable" } @@ -334131,7 +334254,7 @@ elf_symbol { name: "device_show_int" is_defined: true symbol_type: FUNCTION - crc: 0x5d92e788 + crc: 0x889bc1ef type_id: 0x145d7056 full_name: "device_show_int" } @@ -334140,7 +334263,7 @@ elf_symbol { name: "device_store_int" is_defined: true symbol_type: FUNCTION - crc: 0x6032c826 + crc: 0x713fd482 type_id: 0x14500457 full_name: "device_store_int" } @@ -334149,7 +334272,7 @@ elf_symbol { name: "device_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x4aed683f + crc: 0x78ced1be type_id: 0x100e6fc8 full_name: "device_unregister" } @@ -334158,7 +334281,7 @@ elf_symbol { name: "device_wakeup_disable" is_defined: true symbol_type: FUNCTION - crc: 0xfebf438c + crc: 0xe20ec69a type_id: 0x9d16dd74 full_name: "device_wakeup_disable" } @@ -334167,7 +334290,7 @@ elf_symbol { name: "device_wakeup_enable" is_defined: true symbol_type: FUNCTION - crc: 0xbd8084de + crc: 0x61fb7646 type_id: 0x9d16dd74 full_name: "device_wakeup_enable" } @@ -334176,7 +334299,7 @@ elf_symbol { name: "devm_add_action" is_defined: true symbol_type: FUNCTION - crc: 0x0d48abf1 + crc: 0x392ee5ef type_id: 0x9d2c05c3 full_name: "devm_add_action" } @@ -334185,7 +334308,7 @@ elf_symbol { name: "devm_alloc_etherdev_mqs" is_defined: true symbol_type: FUNCTION - crc: 0xd29ec210 + crc: 0xe3079f61 type_id: 0xfd6947a6 full_name: "devm_alloc_etherdev_mqs" } @@ -334194,7 +334317,7 @@ elf_symbol { name: "devm_backlight_device_register" is_defined: true symbol_type: FUNCTION - crc: 0x7a59ee94 + crc: 0x5de4cd81 type_id: 0x7cd5f8d0 full_name: "devm_backlight_device_register" } @@ -334203,7 +334326,7 @@ elf_symbol { name: "devm_backlight_device_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x9b8fc348 + crc: 0x3fed950c type_id: 0x10cc1a70 full_name: "devm_backlight_device_unregister" } @@ -334212,7 +334335,7 @@ elf_symbol { name: "devm_bitmap_zalloc" is_defined: true symbol_type: FUNCTION - crc: 0xeaa35f07 + crc: 0xa7a7857f type_id: 0xaa7f8be4 full_name: "devm_bitmap_zalloc" } @@ -334221,7 +334344,7 @@ elf_symbol { name: "devm_blk_crypto_profile_init" is_defined: true symbol_type: FUNCTION - crc: 0x11220649 + crc: 0xcfb77ab4 type_id: 0x9d25e982 full_name: "devm_blk_crypto_profile_init" } @@ -334230,7 +334353,7 @@ elf_symbol { name: "devm_clk_bulk_get" is_defined: true symbol_type: FUNCTION - crc: 0x33b72815 + crc: 0xd5f68a3d type_id: 0x9c84371e full_name: "devm_clk_bulk_get" } @@ -334239,7 +334362,7 @@ elf_symbol { name: "devm_clk_bulk_get_all" is_defined: true symbol_type: FUNCTION - crc: 0x351067fd + crc: 0xea75694b type_id: 0x9d053909 full_name: "devm_clk_bulk_get_all" } @@ -334248,7 +334371,7 @@ elf_symbol { name: "devm_clk_bulk_get_optional" is_defined: true symbol_type: FUNCTION - crc: 0x389366e4 + crc: 0x2a675af2 type_id: 0x9c84371e full_name: "devm_clk_bulk_get_optional" } @@ -334257,7 +334380,7 @@ elf_symbol { name: "devm_clk_get" is_defined: true symbol_type: FUNCTION - crc: 0x4baa6178 + crc: 0xb26b20be type_id: 0xa671941e full_name: "devm_clk_get" } @@ -334266,7 +334389,7 @@ elf_symbol { name: "devm_clk_get_optional" is_defined: true symbol_type: FUNCTION - crc: 0x1780fd80 + crc: 0x2b9ddc05 type_id: 0xa671941e full_name: "devm_clk_get_optional" } @@ -334275,7 +334398,7 @@ elf_symbol { name: "devm_clk_hw_register" is_defined: true symbol_type: FUNCTION - crc: 0x2afb323c + crc: 0xc8b744eb type_id: 0x9d3d4fff full_name: "devm_clk_hw_register" } @@ -334284,7 +334407,7 @@ elf_symbol { name: "devm_clk_hw_register_fixed_factor_parent_hw" is_defined: true symbol_type: FUNCTION - crc: 0x07ca09f5 + crc: 0x10b9d042 type_id: 0xde006855 full_name: "devm_clk_hw_register_fixed_factor_parent_hw" } @@ -334293,7 +334416,7 @@ elf_symbol { name: "devm_clk_put" is_defined: true symbol_type: FUNCTION - crc: 0xdf4778c7 + crc: 0x33b729a1 type_id: 0x10f95469 full_name: "devm_clk_put" } @@ -334302,7 +334425,7 @@ elf_symbol { name: "devm_clk_register" is_defined: true symbol_type: FUNCTION - crc: 0xc15d4f8e + crc: 0xa20caf9f type_id: 0xa6a24441 full_name: "devm_clk_register" } @@ -334311,7 +334434,7 @@ elf_symbol { name: "devm_devfreq_add_device" is_defined: true symbol_type: FUNCTION - crc: 0xc04f707c + crc: 0x7b37f89d type_id: 0xda80c39b full_name: "devm_devfreq_add_device" } @@ -334320,7 +334443,7 @@ elf_symbol { name: "devm_device_add_group" is_defined: true symbol_type: FUNCTION - crc: 0x12e9f0a7 + crc: 0x6b31cb63 type_id: 0x9ddbed6b full_name: "devm_device_add_group" } @@ -334329,7 +334452,7 @@ elf_symbol { name: "devm_device_add_groups" is_defined: true symbol_type: FUNCTION - crc: 0x9a1fe38a + crc: 0x1b4e10db type_id: 0x9d0fd195 full_name: "devm_device_add_groups" } @@ -334338,7 +334461,7 @@ elf_symbol { name: "devm_device_remove_group" is_defined: true symbol_type: FUNCTION - crc: 0x50822f54 + crc: 0xb276544a type_id: 0x10c35fd7 full_name: "devm_device_remove_group" } @@ -334347,7 +334470,7 @@ elf_symbol { name: "devm_drm_of_get_bridge" is_defined: true symbol_type: FUNCTION - crc: 0xba90a189 + crc: 0x1075adb2 type_id: 0x9a68883d full_name: "devm_drm_of_get_bridge" } @@ -334356,7 +334479,7 @@ elf_symbol { name: "devm_drm_panel_bridge_add_typed" is_defined: true symbol_type: FUNCTION - crc: 0xc4ced0c6 + crc: 0x6e3bae15 type_id: 0x9afbe5e1 full_name: "devm_drm_panel_bridge_add_typed" } @@ -334365,7 +334488,7 @@ elf_symbol { name: "devm_extcon_dev_allocate" is_defined: true symbol_type: FUNCTION - crc: 0x935ecd4c + crc: 0xa449610b type_id: 0x0f502b97 full_name: "devm_extcon_dev_allocate" } @@ -334374,7 +334497,7 @@ elf_symbol { name: "devm_extcon_dev_register" is_defined: true symbol_type: FUNCTION - crc: 0xbf8a744c + crc: 0xa0ce6044 type_id: 0x9d56f523 full_name: "devm_extcon_dev_register" } @@ -334383,7 +334506,7 @@ elf_symbol { name: "devm_extcon_dev_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x46139ecc + crc: 0x80fb8fd8 type_id: 0x104e479f full_name: "devm_extcon_dev_unregister" } @@ -334392,7 +334515,7 @@ elf_symbol { name: "devm_free_irq" is_defined: true symbol_type: FUNCTION - crc: 0xbfc15ab2 + crc: 0x5959b162 type_id: 0x111e5509 full_name: "devm_free_irq" } @@ -334401,7 +334524,7 @@ elf_symbol { name: "devm_fwnode_iio_channel_get_by_name" is_defined: true symbol_type: FUNCTION - crc: 0xafed7743 + crc: 0xb3c90316 type_id: 0xa96969e0 full_name: "devm_fwnode_iio_channel_get_by_name" } @@ -334410,7 +334533,7 @@ elf_symbol { name: "devm_fwnode_pwm_get" is_defined: true symbol_type: FUNCTION - crc: 0x96eb080d + crc: 0xc4645cdd type_id: 0x03884347 full_name: "devm_fwnode_pwm_get" } @@ -334419,7 +334542,7 @@ elf_symbol { name: "devm_gen_pool_create" is_defined: true symbol_type: FUNCTION - crc: 0x677b52d0 + crc: 0x26265a78 type_id: 0x5d7d36d4 full_name: "devm_gen_pool_create" } @@ -334428,7 +334551,7 @@ elf_symbol { name: "devm_get_clk_from_child" is_defined: true symbol_type: FUNCTION - crc: 0x24202664 + crc: 0x9bd2fe23 type_id: 0xa6579ee9 full_name: "devm_get_clk_from_child" } @@ -334437,7 +334560,7 @@ elf_symbol { name: "devm_gh_rm_register_platform_ops" is_defined: true symbol_type: FUNCTION - crc: 0xfb77a0f7 + crc: 0x5cd3947f type_id: 0x9def2541 full_name: "devm_gh_rm_register_platform_ops" } @@ -334446,7 +334569,7 @@ elf_symbol { name: "devm_gpio_request" is_defined: true symbol_type: FUNCTION - crc: 0xdf125404 + crc: 0xf4a616d4 type_id: 0x9c0f4cc1 full_name: "devm_gpio_request" } @@ -334455,7 +334578,7 @@ elf_symbol { name: "devm_gpio_request_one" is_defined: true symbol_type: FUNCTION - crc: 0x1441daca + crc: 0xb23fa28d type_id: 0x9c0cedf7 full_name: "devm_gpio_request_one" } @@ -334464,7 +334587,7 @@ elf_symbol { name: "devm_gpiochip_add_data_with_key" is_defined: true symbol_type: FUNCTION - crc: 0xc8e52744 + crc: 0x8ec7de63 type_id: 0x9d7300d0 full_name: "devm_gpiochip_add_data_with_key" } @@ -334473,7 +334596,7 @@ elf_symbol { name: "devm_gpiod_get" is_defined: true symbol_type: FUNCTION - crc: 0xeee9dfd6 + crc: 0x6ae36308 type_id: 0x5f272d07 full_name: "devm_gpiod_get" } @@ -334482,7 +334605,7 @@ elf_symbol { name: "devm_gpiod_get_array" is_defined: true symbol_type: FUNCTION - crc: 0x7caaf215 + crc: 0x964aaa2c type_id: 0x8dd5f3b8 full_name: "devm_gpiod_get_array" } @@ -334491,7 +334614,7 @@ elf_symbol { name: "devm_gpiod_get_index" is_defined: true symbol_type: FUNCTION - crc: 0x57413091 + crc: 0x93135285 type_id: 0x5f3cfa16 full_name: "devm_gpiod_get_index" } @@ -334500,7 +334623,7 @@ elf_symbol { name: "devm_gpiod_get_optional" is_defined: true symbol_type: FUNCTION - crc: 0x7ae2aa19 + crc: 0x062ffada type_id: 0x5f272d07 full_name: "devm_gpiod_get_optional" } @@ -334509,7 +334632,7 @@ elf_symbol { name: "devm_gpiod_put" is_defined: true symbol_type: FUNCTION - crc: 0x08c26c50 + crc: 0xe7d9f0a0 type_id: 0x109bed40 full_name: "devm_gpiod_put" } @@ -334518,7 +334641,7 @@ elf_symbol { name: "devm_gpiod_put_array" is_defined: true symbol_type: FUNCTION - crc: 0x7dbe5758 + crc: 0x24e4994c type_id: 0x10c7c629 full_name: "devm_gpiod_put_array" } @@ -334527,7 +334650,7 @@ elf_symbol { name: "devm_hwspin_lock_register" is_defined: true symbol_type: FUNCTION - crc: 0xa1653548 + crc: 0x2b2faa5c type_id: 0x9d27e8b1 full_name: "devm_hwspin_lock_register" } @@ -334536,7 +334659,7 @@ elf_symbol { name: "devm_i2c_new_dummy_device" is_defined: true symbol_type: FUNCTION - crc: 0x4ea04345 + crc: 0x687ce310 type_id: 0x8c93d036 full_name: "devm_i2c_new_dummy_device" } @@ -334545,7 +334668,7 @@ elf_symbol { name: "devm_iio_channel_get" is_defined: true symbol_type: FUNCTION - crc: 0xc74026af + crc: 0x3a35379e type_id: 0xa98cedf4 full_name: "devm_iio_channel_get" } @@ -334554,7 +334677,7 @@ elf_symbol { name: "devm_iio_device_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x2d946604 + crc: 0xb80337b3 type_id: 0x582c94c3 full_name: "devm_iio_device_alloc" } @@ -334563,7 +334686,7 @@ elf_symbol { name: "devm_input_allocate_device" is_defined: true symbol_type: FUNCTION - crc: 0x65f63f95 + crc: 0x43013949 type_id: 0x3db2a1a3 full_name: "devm_input_allocate_device" } @@ -334572,7 +334695,7 @@ elf_symbol { name: "devm_ioremap" is_defined: true symbol_type: FUNCTION - crc: 0x8a3f9896 + crc: 0x3f2c8658 type_id: 0x54704321 full_name: "devm_ioremap" } @@ -334581,7 +334704,7 @@ elf_symbol { name: "devm_ioremap_resource" is_defined: true symbol_type: FUNCTION - crc: 0x574a19ef + crc: 0x2306dc3e type_id: 0x56c70278 full_name: "devm_ioremap_resource" } @@ -334590,7 +334713,7 @@ elf_symbol { name: "devm_ioremap_wc" is_defined: true symbol_type: FUNCTION - crc: 0x268bd7f5 + crc: 0x379aa573 type_id: 0x54704321 full_name: "devm_ioremap_wc" } @@ -334599,7 +334722,7 @@ elf_symbol { name: "devm_iounmap" is_defined: true symbol_type: FUNCTION - crc: 0x1f3c6c52 + crc: 0xc8929342 type_id: 0x106c9a5c full_name: "devm_iounmap" } @@ -334608,7 +334731,7 @@ elf_symbol { name: "devm_kasprintf" is_defined: true symbol_type: FUNCTION - crc: 0xa2b80f0f + crc: 0x1aa5a8d2 type_id: 0x3d63b46a full_name: "devm_kasprintf" } @@ -334617,7 +334740,7 @@ elf_symbol { name: "devm_kfree" is_defined: true symbol_type: FUNCTION - crc: 0x57787e2c + crc: 0xe9f41113 type_id: 0x10ea139f full_name: "devm_kfree" } @@ -334626,7 +334749,7 @@ elf_symbol { name: "devm_kmalloc" is_defined: true symbol_type: FUNCTION - crc: 0x65dc48c5 + crc: 0xfc4dc700 type_id: 0x55ec33bc full_name: "devm_kmalloc" } @@ -334635,7 +334758,7 @@ elf_symbol { name: "devm_kmemdup" is_defined: true symbol_type: FUNCTION - crc: 0x5fc8b977 + crc: 0x23990332 type_id: 0x56da383c full_name: "devm_kmemdup" } @@ -334644,7 +334767,7 @@ elf_symbol { name: "devm_krealloc" is_defined: true symbol_type: FUNCTION - crc: 0xa90b4db0 + crc: 0xf39d95d8 type_id: 0x565cb1ff full_name: "devm_krealloc" } @@ -334653,7 +334776,7 @@ elf_symbol { name: "devm_kstrdup" is_defined: true symbol_type: FUNCTION - crc: 0xf0f1d1ab + crc: 0xaa2b0654 type_id: 0x3e6c14f3 full_name: "devm_kstrdup" } @@ -334662,7 +334785,7 @@ elf_symbol { name: "devm_kstrdup_const" is_defined: true symbol_type: FUNCTION - crc: 0x7d418e0c + crc: 0x1279544b type_id: 0x9216029b full_name: "devm_kstrdup_const" } @@ -334671,7 +334794,7 @@ elf_symbol { name: "devm_led_classdev_flash_register_ext" is_defined: true symbol_type: FUNCTION - crc: 0x0f8fd28b + crc: 0x09d201e1 type_id: 0x9de9e113 full_name: "devm_led_classdev_flash_register_ext" } @@ -334680,7 +334803,7 @@ elf_symbol { name: "devm_led_classdev_multicolor_register_ext" is_defined: true symbol_type: FUNCTION - crc: 0x6fb67d08 + crc: 0x3472ce29 type_id: 0x9de8f9f8 full_name: "devm_led_classdev_multicolor_register_ext" } @@ -334689,7 +334812,7 @@ elf_symbol { name: "devm_led_classdev_register_ext" is_defined: true symbol_type: FUNCTION - crc: 0x020f14ff + crc: 0xa1a01175 type_id: 0x9dd2d442 full_name: "devm_led_classdev_register_ext" } @@ -334698,7 +334821,7 @@ elf_symbol { name: "devm_mbox_controller_register" is_defined: true symbol_type: FUNCTION - crc: 0x2e425ff0 + crc: 0xa5ec5657 type_id: 0x9df52a21 full_name: "devm_mbox_controller_register" } @@ -334707,7 +334830,7 @@ elf_symbol { name: "devm_memremap" is_defined: true symbol_type: FUNCTION - crc: 0xba24bd7d + crc: 0xd4f85ebf type_id: 0x5468daf3 full_name: "devm_memremap" } @@ -334716,7 +334839,7 @@ elf_symbol { name: "devm_mfd_add_devices" is_defined: true symbol_type: FUNCTION - crc: 0x09534629 + crc: 0x1f3c5fdb type_id: 0x9c874975 full_name: "devm_mfd_add_devices" } @@ -334725,7 +334848,7 @@ elf_symbol { name: "devm_mipi_dsi_attach" is_defined: true symbol_type: FUNCTION - crc: 0x82918037 + crc: 0x516e3174 type_id: 0x9d3354d9 full_name: "devm_mipi_dsi_attach" } @@ -334734,7 +334857,7 @@ elf_symbol { name: "devm_mipi_dsi_device_register_full" is_defined: true symbol_type: FUNCTION - crc: 0xda13d8bd + crc: 0xf83af0f8 type_id: 0x7ad03bcc full_name: "devm_mipi_dsi_device_register_full" } @@ -334743,7 +334866,7 @@ elf_symbol { name: "devm_nvmem_cell_get" is_defined: true symbol_type: FUNCTION - crc: 0x4857cb37 + crc: 0x2449e8b7 type_id: 0xbbe36438 full_name: "devm_nvmem_cell_get" } @@ -334752,7 +334875,7 @@ elf_symbol { name: "devm_nvmem_device_get" is_defined: true symbol_type: FUNCTION - crc: 0xefef9426 + crc: 0xfb309853 type_id: 0x21a8c9ba full_name: "devm_nvmem_device_get" } @@ -334761,7 +334884,7 @@ elf_symbol { name: "devm_nvmem_register" is_defined: true symbol_type: FUNCTION - crc: 0xfdff1f55 + crc: 0xb919a0c6 type_id: 0x21a7fa19 full_name: "devm_nvmem_register" } @@ -334770,7 +334893,7 @@ elf_symbol { name: "devm_of_clk_add_hw_provider" is_defined: true symbol_type: FUNCTION - crc: 0xa81022db + crc: 0x44b3ae1c type_id: 0x9de78077 full_name: "devm_of_clk_add_hw_provider" } @@ -334779,7 +334902,7 @@ elf_symbol { name: "devm_of_icc_get" is_defined: true symbol_type: FUNCTION - crc: 0x073c5439 + crc: 0x421ca26e type_id: 0x2bcaa9c8 full_name: "devm_of_icc_get" } @@ -334788,7 +334911,7 @@ elf_symbol { name: "devm_of_iomap" is_defined: true symbol_type: FUNCTION - crc: 0x6b9a7dab + crc: 0x50fbfc1b type_id: 0x56c834b5 full_name: "devm_of_iomap" } @@ -334797,7 +334920,7 @@ elf_symbol { name: "devm_of_platform_populate" is_defined: true symbol_type: FUNCTION - crc: 0xfc4e2187 + crc: 0xa3d1f0b4 type_id: 0x9d16dd74 full_name: "devm_of_platform_populate" } @@ -334806,7 +334929,7 @@ elf_symbol { name: "devm_pci_alloc_host_bridge" is_defined: true symbol_type: FUNCTION - crc: 0x703398e6 + crc: 0xd8d3b305 type_id: 0x68eaecc0 full_name: "devm_pci_alloc_host_bridge" } @@ -334815,7 +334938,7 @@ elf_symbol { name: "devm_phy_create" is_defined: true symbol_type: FUNCTION - crc: 0x4cbc1f55 + crc: 0xc9c50fc4 type_id: 0x1173e8d7 full_name: "devm_phy_create" } @@ -334824,7 +334947,7 @@ elf_symbol { name: "devm_phy_get" is_defined: true symbol_type: FUNCTION - crc: 0x452dd4a2 + crc: 0x590b5731 type_id: 0x1154b37f full_name: "devm_phy_get" } @@ -334833,7 +334956,7 @@ elf_symbol { name: "devm_phy_package_join" is_defined: true symbol_type: FUNCTION - crc: 0x082f39f2 + crc: 0x5a624117 type_id: 0x9dc91f17 full_name: "devm_phy_package_join" } @@ -334842,7 +334965,7 @@ elf_symbol { name: "devm_phy_put" is_defined: true symbol_type: FUNCTION - crc: 0x379e05ba + crc: 0x4427d6ca type_id: 0x10219d88 full_name: "devm_phy_put" } @@ -334851,7 +334974,7 @@ elf_symbol { name: "devm_pinctrl_get" is_defined: true symbol_type: FUNCTION - crc: 0x07b9bd75 + crc: 0xf21b8228 type_id: 0x4df5d8bb full_name: "devm_pinctrl_get" } @@ -334860,7 +334983,7 @@ elf_symbol { name: "devm_pinctrl_put" is_defined: true symbol_type: FUNCTION - crc: 0xb726f914 + crc: 0xbe6bc105 type_id: 0x1ad9d0a2 full_name: "devm_pinctrl_put" } @@ -334869,7 +334992,7 @@ elf_symbol { name: "devm_pinctrl_register" is_defined: true symbol_type: FUNCTION - crc: 0xbcd1376a + crc: 0xe4205a0e type_id: 0xefd6219a full_name: "devm_pinctrl_register" } @@ -334878,7 +335001,7 @@ elf_symbol { name: "devm_pinctrl_register_and_init" is_defined: true symbol_type: FUNCTION - crc: 0x7254035b + crc: 0x9ba12b1d type_id: 0x9de18d63 full_name: "devm_pinctrl_register_and_init" } @@ -334887,7 +335010,7 @@ elf_symbol { name: "devm_platform_get_and_ioremap_resource" is_defined: true symbol_type: FUNCTION - crc: 0xe8bb4b05 + crc: 0x7f2ab1cc type_id: 0x584c42dc full_name: "devm_platform_get_and_ioremap_resource" } @@ -334896,7 +335019,7 @@ elf_symbol { name: "devm_platform_ioremap_resource" is_defined: true symbol_type: FUNCTION - crc: 0xbe958bea + crc: 0xddd6e60a type_id: 0x584d521c full_name: "devm_platform_ioremap_resource" } @@ -334905,7 +335028,7 @@ elf_symbol { name: "devm_platform_ioremap_resource_byname" is_defined: true symbol_type: FUNCTION - crc: 0x7fa6840b + crc: 0xaa166e5c type_id: 0x59a30550 full_name: "devm_platform_ioremap_resource_byname" } @@ -334914,7 +335037,7 @@ elf_symbol { name: "devm_pm_clk_create" is_defined: true symbol_type: FUNCTION - crc: 0x1d8f7f89 + crc: 0x64eeae27 type_id: 0x9d16dd74 full_name: "devm_pm_clk_create" } @@ -334923,7 +335046,7 @@ elf_symbol { name: "devm_pm_opp_of_add_table" is_defined: true symbol_type: FUNCTION - crc: 0x3d47d4fe + crc: 0xc3c06a52 type_id: 0x9d16dd74 full_name: "devm_pm_opp_of_add_table" } @@ -334932,7 +335055,7 @@ elf_symbol { name: "devm_pm_opp_set_config" is_defined: true symbol_type: FUNCTION - crc: 0x7d837a28 + crc: 0xf7770fa6 type_id: 0x9d0fcb12 full_name: "devm_pm_opp_set_config" } @@ -334941,7 +335064,7 @@ elf_symbol { name: "devm_pm_runtime_enable" is_defined: true symbol_type: FUNCTION - crc: 0x0d0e59d7 + crc: 0x1ec96f9d type_id: 0x9d16dd74 full_name: "devm_pm_runtime_enable" } @@ -334950,7 +335073,7 @@ elf_symbol { name: "devm_power_supply_register" is_defined: true symbol_type: FUNCTION - crc: 0xa382453a + crc: 0xb8ab1161 type_id: 0x3bb8868a full_name: "devm_power_supply_register" } @@ -334959,7 +335082,7 @@ elf_symbol { name: "devm_pwm_get" is_defined: true symbol_type: FUNCTION - crc: 0xcd93da45 + crc: 0xc20e0986 type_id: 0x036dc753 full_name: "devm_pwm_get" } @@ -334968,7 +335091,7 @@ elf_symbol { name: "devm_qcom_smem_state_get" is_defined: true symbol_type: FUNCTION - crc: 0xbe4f9f68 + crc: 0xddbfeee0 type_id: 0x4f30442f full_name: "devm_qcom_smem_state_get" } @@ -334977,7 +335100,7 @@ elf_symbol { name: "devm_regmap_add_irq_chip" is_defined: true symbol_type: FUNCTION - crc: 0xfcfedbd8 + crc: 0x5abc4469 type_id: 0x9d28302d full_name: "devm_regmap_add_irq_chip" } @@ -334986,7 +335109,7 @@ elf_symbol { name: "devm_regmap_del_irq_chip" is_defined: true symbol_type: FUNCTION - crc: 0x6e7ff752 + crc: 0x16254886 type_id: 0x119619d3 full_name: "devm_regmap_del_irq_chip" } @@ -334995,7 +335118,7 @@ elf_symbol { name: "devm_regmap_field_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x9d358b8c + crc: 0x11726b73 type_id: 0x9588384f full_name: "devm_regmap_field_alloc" } @@ -335004,7 +335127,7 @@ elf_symbol { name: "devm_regulator_bulk_get" is_defined: true symbol_type: FUNCTION - crc: 0x6a7a36a7 + crc: 0x17c81644 type_id: 0x9c874de2 full_name: "devm_regulator_bulk_get" } @@ -335013,7 +335136,7 @@ elf_symbol { name: "devm_regulator_bulk_get_const" is_defined: true symbol_type: FUNCTION - crc: 0xed23975f + crc: 0xade4dd95 type_id: 0x9c86c8d2 full_name: "devm_regulator_bulk_get_const" } @@ -335022,7 +335145,7 @@ elf_symbol { name: "devm_regulator_get" is_defined: true symbol_type: FUNCTION - crc: 0x1b2db9ae + crc: 0x27323615 type_id: 0x8556217d full_name: "devm_regulator_get" } @@ -335031,7 +335154,7 @@ elf_symbol { name: "devm_regulator_get_exclusive" is_defined: true symbol_type: FUNCTION - crc: 0x2a1ed99b + crc: 0x2fbc8a6a type_id: 0x8556217d full_name: "devm_regulator_get_exclusive" } @@ -335040,7 +335163,7 @@ elf_symbol { name: "devm_regulator_get_optional" is_defined: true symbol_type: FUNCTION - crc: 0xee073fb9 + crc: 0x4c03dd7e type_id: 0x8556217d full_name: "devm_regulator_get_optional" } @@ -335049,7 +335172,7 @@ elf_symbol { name: "devm_regulator_put" is_defined: true symbol_type: FUNCTION - crc: 0x8562bfdd + crc: 0x19225735 type_id: 0x10f3d61f full_name: "devm_regulator_put" } @@ -335058,7 +335181,7 @@ elf_symbol { name: "devm_regulator_register" is_defined: true symbol_type: FUNCTION - crc: 0xcf3125e8 + crc: 0x2beb3a54 type_id: 0xf5978397 full_name: "devm_regulator_register" } @@ -335067,7 +335190,7 @@ elf_symbol { name: "devm_regulator_register_notifier" is_defined: true symbol_type: FUNCTION - crc: 0xba44c8cb + crc: 0x0f820606 type_id: 0x9d85be32 full_name: "devm_regulator_register_notifier" } @@ -335076,7 +335199,7 @@ elf_symbol { name: "devm_request_any_context_irq" is_defined: true symbol_type: FUNCTION - crc: 0x8606c7f4 + crc: 0xe0137b15 type_id: 0x9c364018 full_name: "devm_request_any_context_irq" } @@ -335085,7 +335208,7 @@ elf_symbol { name: "devm_request_threaded_irq" is_defined: true symbol_type: FUNCTION - crc: 0xb391276b + crc: 0x86678ca3 type_id: 0x9c35eaa4 full_name: "devm_request_threaded_irq" } @@ -335094,7 +335217,7 @@ elf_symbol { name: "devm_reset_control_array_get" is_defined: true symbol_type: FUNCTION - crc: 0x12bfc655 + crc: 0xdaf3ecce type_id: 0x0ea86f7f full_name: "devm_reset_control_array_get" } @@ -335103,7 +335226,7 @@ elf_symbol { name: "devm_reset_controller_register" is_defined: true symbol_type: FUNCTION - crc: 0x8347e01b + crc: 0xa4fe4bc5 type_id: 0x9d9d4b64 full_name: "devm_reset_controller_register" } @@ -335112,7 +335235,7 @@ elf_symbol { name: "devm_rtc_allocate_device" is_defined: true symbol_type: FUNCTION - crc: 0x1ccde766 + crc: 0xb5b5caa5 type_id: 0x7e1a7d05 full_name: "devm_rtc_allocate_device" } @@ -335121,7 +335244,7 @@ elf_symbol { name: "devm_rtc_device_register" is_defined: true symbol_type: FUNCTION - crc: 0x89b2180d + crc: 0xfda4f3c9 type_id: 0x7eed3f17 full_name: "devm_rtc_device_register" } @@ -335130,7 +335253,7 @@ elf_symbol { name: "devm_snd_soc_register_card" is_defined: true symbol_type: FUNCTION - crc: 0xb5310761 + crc: 0xaccad645 type_id: 0x9d72aaf9 full_name: "devm_snd_soc_register_card" } @@ -335139,7 +335262,7 @@ elf_symbol { name: "devm_snd_soc_register_component" is_defined: true symbol_type: FUNCTION - crc: 0xf35997a0 + crc: 0x58ad037d type_id: 0x9dd808ae full_name: "devm_snd_soc_register_component" } @@ -335148,7 +335271,7 @@ elf_symbol { name: "devm_spi_register_controller" is_defined: true symbol_type: FUNCTION - crc: 0x443aa25e + crc: 0xd2e03022 type_id: 0x9d15ab3e full_name: "devm_spi_register_controller" } @@ -335157,7 +335280,7 @@ elf_symbol { name: "devm_thermal_of_cooling_device_register" is_defined: true symbol_type: FUNCTION - crc: 0x35f8774f + crc: 0xeb764e0b type_id: 0x48f6484c full_name: "devm_thermal_of_cooling_device_register" } @@ -335166,7 +335289,7 @@ elf_symbol { name: "devm_thermal_of_zone_register" is_defined: true symbol_type: FUNCTION - crc: 0x20e37f10 + crc: 0xb7774ea2 type_id: 0xfc59f36a full_name: "devm_thermal_of_zone_register" } @@ -335175,7 +335298,7 @@ elf_symbol { name: "devm_usb_get_phy_by_node" is_defined: true symbol_type: FUNCTION - crc: 0x4c95edbe + crc: 0x4bbe0882 type_id: 0x8f3f76d1 full_name: "devm_usb_get_phy_by_node" } @@ -335184,7 +335307,7 @@ elf_symbol { name: "devm_usb_get_phy_by_phandle" is_defined: true symbol_type: FUNCTION - crc: 0x39896f15 + crc: 0x02cca8d6 type_id: 0x8f1a42be full_name: "devm_usb_get_phy_by_phandle" } @@ -335193,7 +335316,7 @@ elf_symbol { name: "devm_watchdog_register_device" is_defined: true symbol_type: FUNCTION - crc: 0xeeb30464 + crc: 0x909ea61e type_id: 0x9d5d4010 full_name: "devm_watchdog_register_device" } @@ -335202,7 +335325,7 @@ elf_symbol { name: "devres_add" is_defined: true symbol_type: FUNCTION - crc: 0x700aae7d + crc: 0x9cad1c69 type_id: 0x106c9a5c full_name: "devres_add" } @@ -335211,7 +335334,7 @@ elf_symbol { name: "devres_destroy" is_defined: true symbol_type: FUNCTION - crc: 0x7ce17ded + crc: 0x2712a50f type_id: 0x9c603af1 full_name: "devres_destroy" } @@ -335229,7 +335352,7 @@ elf_symbol { name: "devres_open_group" is_defined: true symbol_type: FUNCTION - crc: 0x38beb165 + crc: 0x32bef500 type_id: 0x565e1389 full_name: "devres_open_group" } @@ -335238,7 +335361,7 @@ elf_symbol { name: "devres_release" is_defined: true symbol_type: FUNCTION - crc: 0xb730d0ee + crc: 0x970c2abf type_id: 0x9c603af1 full_name: "devres_release" } @@ -335247,7 +335370,7 @@ elf_symbol { name: "devres_release_group" is_defined: true symbol_type: FUNCTION - crc: 0x713ff6d0 + crc: 0x7284b728 type_id: 0x9d7428e0 full_name: "devres_release_group" } @@ -335292,7 +335415,7 @@ elf_symbol { name: "divider_recalc_rate" is_defined: true symbol_type: FUNCTION - crc: 0xb20511dd + crc: 0x6fd0a36b type_id: 0x33c9b2ef full_name: "divider_recalc_rate" } @@ -335301,7 +335424,7 @@ elf_symbol { name: "divider_ro_round_rate_parent" is_defined: true symbol_type: FUNCTION - crc: 0x8ef125d8 + crc: 0xf75131ac type_id: 0xa5be4b9a full_name: "divider_ro_round_rate_parent" } @@ -335310,7 +335433,7 @@ elf_symbol { name: "divider_round_rate_parent" is_defined: true symbol_type: FUNCTION - crc: 0x10ba534c + crc: 0x183a65cf type_id: 0xa5be4b9b full_name: "divider_round_rate_parent" } @@ -335319,7 +335442,7 @@ elf_symbol { name: "dma_alloc_attrs" is_defined: true symbol_type: FUNCTION - crc: 0x06f50b59 + crc: 0xf8aabecc type_id: 0x55df36a2 full_name: "dma_alloc_attrs" } @@ -335328,7 +335451,7 @@ elf_symbol { name: "dma_alloc_pages" is_defined: true symbol_type: FUNCTION - crc: 0x98085744 + crc: 0xb88d2939 type_id: 0xbed1b7ef full_name: "dma_alloc_pages" } @@ -335337,7 +335460,7 @@ elf_symbol { name: "dma_async_device_register" is_defined: true symbol_type: FUNCTION - crc: 0x97eb84d2 + crc: 0xbb7a473d type_id: 0x96711162 full_name: "dma_async_device_register" } @@ -335346,7 +335469,7 @@ elf_symbol { name: "dma_async_device_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x9479548e + crc: 0x9f4817bf type_id: 0x1b69a3de full_name: "dma_async_device_unregister" } @@ -335355,7 +335478,7 @@ elf_symbol { name: "dma_async_tx_descriptor_init" is_defined: true symbol_type: FUNCTION - crc: 0x09a8105a + crc: 0xc720204f type_id: 0x1bd38750 full_name: "dma_async_tx_descriptor_init" } @@ -335364,7 +335487,7 @@ elf_symbol { name: "dma_buf_attach" is_defined: true symbol_type: FUNCTION - crc: 0xc6684b31 + crc: 0xe5ae76e2 namespace: "DMA_BUF" type_id: 0x6b24e9ea full_name: "dma_buf_attach" @@ -335374,7 +335497,7 @@ elf_symbol { name: "dma_buf_begin_cpu_access" is_defined: true symbol_type: FUNCTION - crc: 0x595f066f + crc: 0xb21780d5 namespace: "DMA_BUF" type_id: 0x9e84fe49 full_name: "dma_buf_begin_cpu_access" @@ -335384,7 +335507,7 @@ elf_symbol { name: "dma_buf_begin_cpu_access_partial" is_defined: true symbol_type: FUNCTION - crc: 0x9d307a99 + crc: 0x7b66ff96 type_id: 0x9e948905 full_name: "dma_buf_begin_cpu_access_partial" } @@ -335393,7 +335516,7 @@ elf_symbol { name: "dma_buf_detach" is_defined: true symbol_type: FUNCTION - crc: 0xa5573323 + crc: 0x7233bda0 namespace: "DMA_BUF" type_id: 0x10df3ba9 full_name: "dma_buf_detach" @@ -335403,7 +335526,7 @@ elf_symbol { name: "dma_buf_end_cpu_access" is_defined: true symbol_type: FUNCTION - crc: 0x061aefe1 + crc: 0xf27606ec namespace: "DMA_BUF" type_id: 0x9e84fe49 full_name: "dma_buf_end_cpu_access" @@ -335413,7 +335536,7 @@ elf_symbol { name: "dma_buf_end_cpu_access_partial" is_defined: true symbol_type: FUNCTION - crc: 0x8c4600c2 + crc: 0x0c17f84d type_id: 0x9e948905 full_name: "dma_buf_end_cpu_access_partial" } @@ -335422,7 +335545,7 @@ elf_symbol { name: "dma_buf_export" is_defined: true symbol_type: FUNCTION - crc: 0x84054660 + crc: 0xcfc8a5ea namespace: "DMA_BUF" type_id: 0x448c535b full_name: "dma_buf_export" @@ -335432,7 +335555,7 @@ elf_symbol { name: "dma_buf_fd" is_defined: true symbol_type: FUNCTION - crc: 0x9a275f9d + crc: 0x79d5d514 namespace: "DMA_BUF" type_id: 0x9c2e6e8a full_name: "dma_buf_fd" @@ -335442,7 +335565,7 @@ elf_symbol { name: "dma_buf_get" is_defined: true symbol_type: FUNCTION - crc: 0xa4bc8794 + crc: 0xc5e71fbb namespace: "DMA_BUF" type_id: 0x53e428b3 full_name: "dma_buf_get" @@ -335452,7 +335575,7 @@ elf_symbol { name: "dma_buf_get_each" is_defined: true symbol_type: FUNCTION - crc: 0x378c2dce + crc: 0x90bad023 namespace: "MINIDUMP" type_id: 0x966430b0 full_name: "dma_buf_get_each" @@ -335462,7 +335585,7 @@ elf_symbol { name: "dma_buf_get_flags" is_defined: true symbol_type: FUNCTION - crc: 0x12118a9f + crc: 0x085ce005 type_id: 0x9dabd844 full_name: "dma_buf_get_flags" } @@ -335471,7 +335594,7 @@ elf_symbol { name: "dma_buf_map_attachment" is_defined: true symbol_type: FUNCTION - crc: 0x048b541f + crc: 0x2a8ee3b7 namespace: "DMA_BUF" type_id: 0x451c3ee7 full_name: "dma_buf_map_attachment" @@ -335481,7 +335604,7 @@ elf_symbol { name: "dma_buf_mmap" is_defined: true symbol_type: FUNCTION - crc: 0xd394058b + crc: 0x3eb9b805 namespace: "DMA_BUF" type_id: 0x9d967d9a full_name: "dma_buf_mmap" @@ -335491,7 +335614,7 @@ elf_symbol { name: "dma_buf_put" is_defined: true symbol_type: FUNCTION - crc: 0xb82fcf3d + crc: 0xd1d7ad4e namespace: "DMA_BUF" type_id: 0x10aa5f7a full_name: "dma_buf_put" @@ -335501,7 +335624,7 @@ elf_symbol { name: "dma_buf_unmap_attachment" is_defined: true symbol_type: FUNCTION - crc: 0xfa7109dd + crc: 0x293865c0 namespace: "DMA_BUF" type_id: 0x17ffed59 full_name: "dma_buf_unmap_attachment" @@ -335511,7 +335634,7 @@ elf_symbol { name: "dma_buf_vmap" is_defined: true symbol_type: FUNCTION - crc: 0x68ff563c + crc: 0x92cc2b1b namespace: "DMA_BUF" type_id: 0x9d4e84a4 full_name: "dma_buf_vmap" @@ -335521,7 +335644,7 @@ elf_symbol { name: "dma_buf_vunmap" is_defined: true symbol_type: FUNCTION - crc: 0x706f3236 + crc: 0xb5ef56cc namespace: "DMA_BUF" type_id: 0x10563618 full_name: "dma_buf_vunmap" @@ -335693,7 +335816,7 @@ elf_symbol { name: "dma_free_attrs" is_defined: true symbol_type: FUNCTION - crc: 0xc6d3b176 + crc: 0x9c1b5227 type_id: 0x13db1955 full_name: "dma_free_attrs" } @@ -335702,7 +335825,7 @@ elf_symbol { name: "dma_free_pages" is_defined: true symbol_type: FUNCTION - crc: 0x47f73a40 + crc: 0x40579c49 type_id: 0x13dca967 full_name: "dma_free_pages" } @@ -335711,7 +335834,7 @@ elf_symbol { name: "dma_get_sgtable_attrs" is_defined: true symbol_type: FUNCTION - crc: 0x9a5364fc + crc: 0x4c68083a type_id: 0x9d11df94 full_name: "dma_get_sgtable_attrs" } @@ -335720,7 +335843,7 @@ elf_symbol { name: "dma_get_slave_caps" is_defined: true symbol_type: FUNCTION - crc: 0x19926f88 + crc: 0x70d7d29a type_id: 0x930a9934 full_name: "dma_get_slave_caps" } @@ -335729,7 +335852,7 @@ elf_symbol { name: "dma_get_slave_channel" is_defined: true symbol_type: FUNCTION - crc: 0x3fea9eac + crc: 0x1e4de8bc type_id: 0x898bee8c full_name: "dma_get_slave_channel" } @@ -335738,7 +335861,7 @@ elf_symbol { name: "dma_heap_add" is_defined: true symbol_type: FUNCTION - crc: 0x9f3fbd05 + crc: 0x15f4e4f9 type_id: 0x2f858b61 full_name: "dma_heap_add" } @@ -335747,7 +335870,7 @@ elf_symbol { name: "dma_heap_buffer_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x13417dec + crc: 0x7826376c type_id: 0x4afe8e98 full_name: "dma_heap_buffer_alloc" } @@ -335756,7 +335879,7 @@ elf_symbol { name: "dma_heap_buffer_free" is_defined: true symbol_type: FUNCTION - crc: 0x8dbc4801 + crc: 0x4acd1504 type_id: 0x10aa5f7a full_name: "dma_heap_buffer_free" } @@ -335774,7 +335897,7 @@ elf_symbol { name: "dma_heap_get_dev" is_defined: true symbol_type: FUNCTION - crc: 0xc74ca308 + crc: 0x45f52931 type_id: 0xae3d0033 full_name: "dma_heap_get_dev" } @@ -335810,7 +335933,7 @@ elf_symbol { name: "dma_map_page_attrs" is_defined: true symbol_type: FUNCTION - crc: 0x2cb31845 + crc: 0xb0798a90 type_id: 0xbcaf23fe full_name: "dma_map_page_attrs" } @@ -335819,7 +335942,7 @@ elf_symbol { name: "dma_map_resource" is_defined: true symbol_type: FUNCTION - crc: 0x5bf7fb4f + crc: 0xd88e89b3 type_id: 0xbe42b117 full_name: "dma_map_resource" } @@ -335828,7 +335951,7 @@ elf_symbol { name: "dma_map_sg_attrs" is_defined: true symbol_type: FUNCTION - crc: 0x771beee8 + crc: 0x0b7cd43d type_id: 0xce108db2 full_name: "dma_map_sg_attrs" } @@ -335837,7 +335960,7 @@ elf_symbol { name: "dma_map_sgtable" is_defined: true symbol_type: FUNCTION - crc: 0x1fe752db + crc: 0x0be1ce81 type_id: 0x9d27e158 full_name: "dma_map_sgtable" } @@ -335846,7 +335969,7 @@ elf_symbol { name: "dma_mmap_attrs" is_defined: true symbol_type: FUNCTION - crc: 0xd808ea73 + crc: 0x5cc09149 type_id: 0x9d3b0250 full_name: "dma_mmap_attrs" } @@ -335855,7 +335978,7 @@ elf_symbol { name: "dma_mmap_pages" is_defined: true symbol_type: FUNCTION - crc: 0x606bf647 + crc: 0x486c1955 type_id: 0x9d038726 full_name: "dma_mmap_pages" } @@ -335873,7 +335996,7 @@ elf_symbol { name: "dma_pool_create" is_defined: true symbol_type: FUNCTION - crc: 0x9528d853 + crc: 0x8a6d63f0 type_id: 0x5f4c14dc full_name: "dma_pool_create" } @@ -335900,7 +336023,7 @@ elf_symbol { name: "dma_release_channel" is_defined: true symbol_type: FUNCTION - crc: 0xbfc6ad7e + crc: 0x94191160 type_id: 0x1e0e5d07 full_name: "dma_release_channel" } @@ -335909,7 +336032,7 @@ elf_symbol { name: "dma_request_chan" is_defined: true symbol_type: FUNCTION - crc: 0x85f914af + crc: 0x8e42e777 type_id: 0x87739e97 full_name: "dma_request_chan" } @@ -335918,7 +336041,7 @@ elf_symbol { name: "dma_resv_add_fence" is_defined: true symbol_type: FUNCTION - crc: 0xec146a15 + crc: 0xba4cb987 type_id: 0x194c85c5 full_name: "dma_resv_add_fence" } @@ -335927,7 +336050,7 @@ elf_symbol { name: "dma_resv_describe" is_defined: true symbol_type: FUNCTION - crc: 0xc8697138 + crc: 0x46e9c3ee type_id: 0x1950a0f3 full_name: "dma_resv_describe" } @@ -335936,7 +336059,7 @@ elf_symbol { name: "dma_resv_fini" is_defined: true symbol_type: FUNCTION - crc: 0xe43e2616 + crc: 0xf9922ee0 type_id: 0x19493769 full_name: "dma_resv_fini" } @@ -335945,7 +336068,7 @@ elf_symbol { name: "dma_resv_get_singleton" is_defined: true symbol_type: FUNCTION - crc: 0x46ac6b27 + crc: 0xcd40b12f type_id: 0x94cadd10 full_name: "dma_resv_get_singleton" } @@ -335954,7 +336077,7 @@ elf_symbol { name: "dma_resv_init" is_defined: true symbol_type: FUNCTION - crc: 0x8c4746fb + crc: 0x5d413b32 type_id: 0x19493769 full_name: "dma_resv_init" } @@ -335963,7 +336086,7 @@ elf_symbol { name: "dma_resv_iter_first" is_defined: true symbol_type: FUNCTION - crc: 0x3f2cf632 + crc: 0x5597567d type_id: 0xdc551b4d full_name: "dma_resv_iter_first" } @@ -335972,7 +336095,7 @@ elf_symbol { name: "dma_resv_iter_next" is_defined: true symbol_type: FUNCTION - crc: 0x2417412c + crc: 0x6f853328 type_id: 0xdc551b4d full_name: "dma_resv_iter_next" } @@ -335981,7 +336104,7 @@ elf_symbol { name: "dma_resv_reserve_fences" is_defined: true symbol_type: FUNCTION - crc: 0x2b5a87fd + crc: 0x1691227c type_id: 0x9547904d full_name: "dma_resv_reserve_fences" } @@ -335990,7 +336113,7 @@ elf_symbol { name: "dma_resv_test_signaled" is_defined: true symbol_type: FUNCTION - crc: 0x758ca0f5 + crc: 0x6b28c865 type_id: 0xf7ecf18c full_name: "dma_resv_test_signaled" } @@ -335999,7 +336122,7 @@ elf_symbol { name: "dma_resv_wait_timeout" is_defined: true symbol_type: FUNCTION - crc: 0x0e351ce5 + crc: 0x9aa4a02f type_id: 0xae730313 full_name: "dma_resv_wait_timeout" } @@ -336008,7 +336131,7 @@ elf_symbol { name: "dma_set_coherent_mask" is_defined: true symbol_type: FUNCTION - crc: 0x58b29a00 + crc: 0xca51481d type_id: 0x9f5e51ba full_name: "dma_set_coherent_mask" } @@ -336017,7 +336140,7 @@ elf_symbol { name: "dma_set_mask" is_defined: true symbol_type: FUNCTION - crc: 0x438ce97b + crc: 0xf5874848 type_id: 0x9f5e51ba full_name: "dma_set_mask" } @@ -336026,7 +336149,7 @@ elf_symbol { name: "dma_sync_sg_for_cpu" is_defined: true symbol_type: FUNCTION - crc: 0xcbf96325 + crc: 0x2c27bba5 type_id: 0x1053ae07 full_name: "dma_sync_sg_for_cpu" } @@ -336035,7 +336158,7 @@ elf_symbol { name: "dma_sync_sg_for_device" is_defined: true symbol_type: FUNCTION - crc: 0x53e08770 + crc: 0xe7e352e7 type_id: 0x1053ae07 full_name: "dma_sync_sg_for_device" } @@ -336044,7 +336167,7 @@ elf_symbol { name: "dma_sync_single_for_cpu" is_defined: true symbol_type: FUNCTION - crc: 0xd3ad94f1 + crc: 0xc2ed4295 type_id: 0x13b0ecd2 full_name: "dma_sync_single_for_cpu" } @@ -336053,7 +336176,7 @@ elf_symbol { name: "dma_sync_single_for_device" is_defined: true symbol_type: FUNCTION - crc: 0xc3bf657d + crc: 0x0a66940f type_id: 0x13b0ecd2 full_name: "dma_sync_single_for_device" } @@ -336062,7 +336185,7 @@ elf_symbol { name: "dma_unmap_page_attrs" is_defined: true symbol_type: FUNCTION - crc: 0x32d3eb6b + crc: 0x12822a92 type_id: 0x13b0e00f full_name: "dma_unmap_page_attrs" } @@ -336071,7 +336194,7 @@ elf_symbol { name: "dma_unmap_resource" is_defined: true symbol_type: FUNCTION - crc: 0x6d418731 + crc: 0x856678ab type_id: 0x13b0e00f full_name: "dma_unmap_resource" } @@ -336080,7 +336203,7 @@ elf_symbol { name: "dma_unmap_sg_attrs" is_defined: true symbol_type: FUNCTION - crc: 0x6fb16832 + crc: 0x16bd79ea type_id: 0x1053a2da full_name: "dma_unmap_sg_attrs" } @@ -336089,7 +336212,7 @@ elf_symbol { name: "dmabuf_page_pool_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x6040cd22 + crc: 0xf90b1cbb type_id: 0xba11bc6a full_name: "dmabuf_page_pool_alloc" } @@ -336116,7 +336239,7 @@ elf_symbol { name: "dmabuf_page_pool_free" is_defined: true symbol_type: FUNCTION - crc: 0xdf3957d3 + crc: 0x227c1ff5 type_id: 0x170b1003 full_name: "dmabuf_page_pool_free" } @@ -336134,7 +336257,7 @@ elf_symbol { name: "dmaengine_unmap_put" is_defined: true symbol_type: FUNCTION - crc: 0x12799708 + crc: 0xb084a74f type_id: 0x1664b4e1 full_name: "dmaengine_unmap_put" } @@ -336143,7 +336266,7 @@ elf_symbol { name: "dmam_alloc_attrs" is_defined: true symbol_type: FUNCTION - crc: 0xafe63380 + crc: 0x573c3420 type_id: 0x55df36a2 full_name: "dmam_alloc_attrs" } @@ -336152,7 +336275,7 @@ elf_symbol { name: "dmam_free_coherent" is_defined: true symbol_type: FUNCTION - crc: 0x4629c5f5 + crc: 0x32ae6873 type_id: 0x13db1588 full_name: "dmam_free_coherent" } @@ -336161,7 +336284,7 @@ elf_symbol { name: "do_SAK" is_defined: true symbol_type: FUNCTION - crc: 0x045bee26 + crc: 0x03025bb4 type_id: 0x1b27f18a full_name: "do_SAK" } @@ -336206,7 +336329,7 @@ elf_symbol { name: "double_rq_lock" is_defined: true symbol_type: FUNCTION - crc: 0x146df730 + crc: 0x5e45111a type_id: 0x1ba0fc33 full_name: "double_rq_lock" } @@ -336287,7 +336410,7 @@ elf_symbol { name: "dput" is_defined: true symbol_type: FUNCTION - crc: 0x00661446 + crc: 0x2771508a type_id: 0x141901a7 full_name: "dput" } @@ -336323,7 +336446,7 @@ elf_symbol { name: "driver_attach" is_defined: true symbol_type: FUNCTION - crc: 0xb7d310d7 + crc: 0xdb5feb74 type_id: 0x91190ace full_name: "driver_attach" } @@ -336332,7 +336455,7 @@ elf_symbol { name: "driver_find_device" is_defined: true symbol_type: FUNCTION - crc: 0xce43263e + crc: 0x494a749f type_id: 0xa1b14a4d full_name: "driver_find_device" } @@ -336341,7 +336464,7 @@ elf_symbol { name: "driver_register" is_defined: true symbol_type: FUNCTION - crc: 0x55a75c28 + crc: 0xfb8910fd type_id: 0x91190ace full_name: "driver_register" } @@ -336350,7 +336473,7 @@ elf_symbol { name: "driver_set_override" is_defined: true symbol_type: FUNCTION - crc: 0x7c731c3e + crc: 0x7e84be1f type_id: 0x9d0ed9df full_name: "driver_set_override" } @@ -336359,7 +336482,7 @@ elf_symbol { name: "driver_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xb4b87e21 + crc: 0xea3301b6 type_id: 0x1c01b872 full_name: "driver_unregister" } @@ -336368,7 +336491,7 @@ elf_symbol { name: "drm_add_edid_modes" is_defined: true symbol_type: FUNCTION - crc: 0xac079a9d + crc: 0x68c41307 type_id: 0x91016cca full_name: "drm_add_edid_modes" } @@ -336377,7 +336500,7 @@ elf_symbol { name: "drm_add_modes_noedid" is_defined: true symbol_type: FUNCTION - crc: 0x464dfd66 + crc: 0x4003fd2a type_id: 0x9068c1cc full_name: "drm_add_modes_noedid" } @@ -336386,7 +336509,7 @@ elf_symbol { name: "drm_aperture_remove_conflicting_pci_framebuffers" is_defined: true symbol_type: FUNCTION - crc: 0x833b1392 + crc: 0x32675280 type_id: 0x99361691 full_name: "drm_aperture_remove_conflicting_pci_framebuffers" } @@ -336395,7 +336518,7 @@ elf_symbol { name: "drm_atomic_add_affected_connectors" is_defined: true symbol_type: FUNCTION - crc: 0x82c50e5d + crc: 0x61e3d846 type_id: 0x950581be full_name: "drm_atomic_add_affected_connectors" } @@ -336404,7 +336527,7 @@ elf_symbol { name: "drm_atomic_add_affected_planes" is_defined: true symbol_type: FUNCTION - crc: 0x451b5b67 + crc: 0x681e563d type_id: 0x950581be full_name: "drm_atomic_add_affected_planes" } @@ -336413,7 +336536,7 @@ elf_symbol { name: "drm_atomic_commit" is_defined: true symbol_type: FUNCTION - crc: 0x792bae33 + crc: 0xc70763b1 type_id: 0x95c0ec46 full_name: "drm_atomic_commit" } @@ -336422,7 +336545,7 @@ elf_symbol { name: "drm_atomic_get_connector_state" is_defined: true symbol_type: FUNCTION - crc: 0x2bf0ef65 + crc: 0x4de818cd type_id: 0x6345a3c5 full_name: "drm_atomic_get_connector_state" } @@ -336431,7 +336554,7 @@ elf_symbol { name: "drm_atomic_get_crtc_state" is_defined: true symbol_type: FUNCTION - crc: 0x4d433280 + crc: 0x1b3cd241 type_id: 0xefaef687 full_name: "drm_atomic_get_crtc_state" } @@ -336440,7 +336563,7 @@ elf_symbol { name: "drm_atomic_get_new_bridge_state" is_defined: true symbol_type: FUNCTION - crc: 0x31cb0b45 + crc: 0x581d40b1 type_id: 0x289916da full_name: "drm_atomic_get_new_bridge_state" } @@ -336449,7 +336572,7 @@ elf_symbol { name: "drm_atomic_get_new_connector_for_encoder" is_defined: true symbol_type: FUNCTION - crc: 0x989360f7 + crc: 0xb0157729 type_id: 0xab344d2b full_name: "drm_atomic_get_new_connector_for_encoder" } @@ -336458,7 +336581,7 @@ elf_symbol { name: "drm_atomic_get_new_private_obj_state" is_defined: true symbol_type: FUNCTION - crc: 0x47ac09c7 + crc: 0xd476ff3d type_id: 0x8715e05e full_name: "drm_atomic_get_new_private_obj_state" } @@ -336467,7 +336590,7 @@ elf_symbol { name: "drm_atomic_get_old_connector_for_encoder" is_defined: true symbol_type: FUNCTION - crc: 0x9fbb87ab + crc: 0xb73d9075 type_id: 0xab344d2b full_name: "drm_atomic_get_old_connector_for_encoder" } @@ -336476,7 +336599,7 @@ elf_symbol { name: "drm_atomic_get_old_private_obj_state" is_defined: true symbol_type: FUNCTION - crc: 0x4084ee9b + crc: 0xd35e1861 type_id: 0x8715e05e full_name: "drm_atomic_get_old_private_obj_state" } @@ -336485,7 +336608,7 @@ elf_symbol { name: "drm_atomic_get_plane_state" is_defined: true symbol_type: FUNCTION - crc: 0x6b2db27c + crc: 0x24a66c1a type_id: 0x89544504 full_name: "drm_atomic_get_plane_state" } @@ -336494,7 +336617,7 @@ elf_symbol { name: "drm_atomic_get_private_obj_state" is_defined: true symbol_type: FUNCTION - crc: 0x0ff84732 + crc: 0x9a3aa829 type_id: 0x8715e05e full_name: "drm_atomic_get_private_obj_state" } @@ -336503,7 +336626,7 @@ elf_symbol { name: "drm_atomic_helper_bridge_destroy_state" is_defined: true symbol_type: FUNCTION - crc: 0xff5bcad8 + crc: 0x1030416a type_id: 0x1912c3c7 full_name: "drm_atomic_helper_bridge_destroy_state" } @@ -336512,7 +336635,7 @@ elf_symbol { name: "drm_atomic_helper_bridge_duplicate_state" is_defined: true symbol_type: FUNCTION - crc: 0x2e60592a + crc: 0x192ecd6a type_id: 0x29da83bb full_name: "drm_atomic_helper_bridge_duplicate_state" } @@ -336521,7 +336644,7 @@ elf_symbol { name: "drm_atomic_helper_bridge_reset" is_defined: true symbol_type: FUNCTION - crc: 0x51312d82 + crc: 0xf68c5b3f type_id: 0x29da83bb full_name: "drm_atomic_helper_bridge_reset" } @@ -336530,7 +336653,7 @@ elf_symbol { name: "drm_atomic_helper_check" is_defined: true symbol_type: FUNCTION - crc: 0x34e29f48 + crc: 0x87f75ec3 type_id: 0x93c5cc72 full_name: "drm_atomic_helper_check" } @@ -336539,7 +336662,7 @@ elf_symbol { name: "drm_atomic_helper_check_modeset" is_defined: true symbol_type: FUNCTION - crc: 0x4f919a0d + crc: 0x45d9b509 type_id: 0x93c5cc72 full_name: "drm_atomic_helper_check_modeset" } @@ -336548,7 +336671,7 @@ elf_symbol { name: "drm_atomic_helper_check_plane_state" is_defined: true symbol_type: FUNCTION - crc: 0xe0f1fe2c + crc: 0x64f7e62f type_id: 0x96d5902b full_name: "drm_atomic_helper_check_plane_state" } @@ -336557,7 +336680,7 @@ elf_symbol { name: "drm_atomic_helper_check_planes" is_defined: true symbol_type: FUNCTION - crc: 0x16882305 + crc: 0xef5daa75 type_id: 0x93c5cc72 full_name: "drm_atomic_helper_check_planes" } @@ -336566,7 +336689,7 @@ elf_symbol { name: "drm_atomic_helper_check_wb_encoder_state" is_defined: true symbol_type: FUNCTION - crc: 0x34122c69 + crc: 0x8668f57f type_id: 0x968fd49c full_name: "drm_atomic_helper_check_wb_encoder_state" } @@ -336575,7 +336698,7 @@ elf_symbol { name: "drm_atomic_helper_cleanup_planes" is_defined: true symbol_type: FUNCTION - crc: 0x9bb0faf2 + crc: 0xdf89a86a type_id: 0x1edd7ece full_name: "drm_atomic_helper_cleanup_planes" } @@ -336584,7 +336707,7 @@ elf_symbol { name: "drm_atomic_helper_commit" is_defined: true symbol_type: FUNCTION - crc: 0x7d158255 + crc: 0xfe9125ab type_id: 0x93de93a5 full_name: "drm_atomic_helper_commit" } @@ -336593,7 +336716,7 @@ elf_symbol { name: "drm_atomic_helper_commit_cleanup_done" is_defined: true symbol_type: FUNCTION - crc: 0x37289f1a + crc: 0x17a8af04 type_id: 0x18d85efa full_name: "drm_atomic_helper_commit_cleanup_done" } @@ -336602,7 +336725,7 @@ elf_symbol { name: "drm_atomic_helper_commit_duplicated_state" is_defined: true symbol_type: FUNCTION - crc: 0x3babb7fe + crc: 0xc2cbde19 type_id: 0x95cedbde full_name: "drm_atomic_helper_commit_duplicated_state" } @@ -336611,7 +336734,7 @@ elf_symbol { name: "drm_atomic_helper_commit_hw_done" is_defined: true symbol_type: FUNCTION - crc: 0xb49707f5 + crc: 0x7bb58713 type_id: 0x18d85efa full_name: "drm_atomic_helper_commit_hw_done" } @@ -336620,7 +336743,7 @@ elf_symbol { name: "drm_atomic_helper_commit_modeset_disables" is_defined: true symbol_type: FUNCTION - crc: 0x25c7b738 + crc: 0xa3d47218 type_id: 0x1edd7ece full_name: "drm_atomic_helper_commit_modeset_disables" } @@ -336629,7 +336752,7 @@ elf_symbol { name: "drm_atomic_helper_commit_modeset_enables" is_defined: true symbol_type: FUNCTION - crc: 0xdbb38cf8 + crc: 0x03f4c480 type_id: 0x1edd7ece full_name: "drm_atomic_helper_commit_modeset_enables" } @@ -336638,7 +336761,7 @@ elf_symbol { name: "drm_atomic_helper_commit_planes" is_defined: true symbol_type: FUNCTION - crc: 0x27c1be48 + crc: 0x544461ff type_id: 0x1eda71a1 full_name: "drm_atomic_helper_commit_planes" } @@ -336647,7 +336770,7 @@ elf_symbol { name: "drm_atomic_helper_commit_tail" is_defined: true symbol_type: FUNCTION - crc: 0xf8cb3690 + crc: 0x4e94bc32 type_id: 0x18d85efa full_name: "drm_atomic_helper_commit_tail" } @@ -336656,7 +336779,7 @@ elf_symbol { name: "drm_atomic_helper_connector_destroy_state" is_defined: true symbol_type: FUNCTION - crc: 0x91ebb016 + crc: 0x1c45e6bf type_id: 0x1c470062 full_name: "drm_atomic_helper_connector_destroy_state" } @@ -336665,7 +336788,7 @@ elf_symbol { name: "drm_atomic_helper_connector_duplicate_state" is_defined: true symbol_type: FUNCTION - crc: 0x129faa17 + crc: 0x9d895d4f type_id: 0x67ae13ae full_name: "drm_atomic_helper_connector_duplicate_state" } @@ -336674,7 +336797,7 @@ elf_symbol { name: "drm_atomic_helper_connector_reset" is_defined: true symbol_type: FUNCTION - crc: 0x0d1866f3 + crc: 0x4d04845f type_id: 0x1cf53808 full_name: "drm_atomic_helper_connector_reset" } @@ -336683,7 +336806,7 @@ elf_symbol { name: "drm_atomic_helper_crtc_destroy_state" is_defined: true symbol_type: FUNCTION - crc: 0x32b886f0 + crc: 0xa5b5b304 type_id: 0x1c25e791 full_name: "drm_atomic_helper_crtc_destroy_state" } @@ -336692,7 +336815,7 @@ elf_symbol { name: "drm_atomic_helper_crtc_duplicate_state" is_defined: true symbol_type: FUNCTION - crc: 0xf59adaf6 + crc: 0x500be66b type_id: 0xeb7d4b96 full_name: "drm_atomic_helper_crtc_duplicate_state" } @@ -336701,7 +336824,7 @@ elf_symbol { name: "drm_atomic_helper_crtc_reset" is_defined: true symbol_type: FUNCTION - crc: 0x98daf929 + crc: 0x6437915a type_id: 0x1cce8e13 full_name: "drm_atomic_helper_crtc_reset" } @@ -336710,7 +336833,7 @@ elf_symbol { name: "drm_atomic_helper_damage_iter_init" is_defined: true symbol_type: FUNCTION - crc: 0xa05f2238 + crc: 0xf5bd51b0 type_id: 0x1b28e71c full_name: "drm_atomic_helper_damage_iter_init" } @@ -336728,7 +336851,7 @@ elf_symbol { name: "drm_atomic_helper_damage_merged" is_defined: true symbol_type: FUNCTION - crc: 0xd905fe8a + crc: 0xbfbdb3f3 type_id: 0xf334abb2 full_name: "drm_atomic_helper_damage_merged" } @@ -336737,7 +336860,7 @@ elf_symbol { name: "drm_atomic_helper_dirtyfb" is_defined: true symbol_type: FUNCTION - crc: 0x19bc3d2a + crc: 0xebb9c10c type_id: 0x91a92948 full_name: "drm_atomic_helper_dirtyfb" } @@ -336746,7 +336869,7 @@ elf_symbol { name: "drm_atomic_helper_disable_plane" is_defined: true symbol_type: FUNCTION - crc: 0xd89fb316 + crc: 0x3279c6be type_id: 0x9b45fcbe full_name: "drm_atomic_helper_disable_plane" } @@ -336755,7 +336878,7 @@ elf_symbol { name: "drm_atomic_helper_duplicate_state" is_defined: true symbol_type: FUNCTION - crc: 0x87749960 + crc: 0xe4896184 type_id: 0x4f3d8d0a full_name: "drm_atomic_helper_duplicate_state" } @@ -336764,7 +336887,7 @@ elf_symbol { name: "drm_atomic_helper_fake_vblank" is_defined: true symbol_type: FUNCTION - crc: 0xa225f640 + crc: 0xa58b77cc type_id: 0x18d85efa full_name: "drm_atomic_helper_fake_vblank" } @@ -336773,7 +336896,7 @@ elf_symbol { name: "drm_atomic_helper_page_flip" is_defined: true symbol_type: FUNCTION - crc: 0x277196c7 + crc: 0x14264dc9 type_id: 0x9116124f full_name: "drm_atomic_helper_page_flip" } @@ -336782,7 +336905,7 @@ elf_symbol { name: "drm_atomic_helper_plane_destroy_state" is_defined: true symbol_type: FUNCTION - crc: 0xa2dfe678 + crc: 0xef7c0535 type_id: 0x16ebcbfa full_name: "drm_atomic_helper_plane_destroy_state" } @@ -336791,7 +336914,7 @@ elf_symbol { name: "drm_atomic_helper_plane_duplicate_state" is_defined: true symbol_type: FUNCTION - crc: 0xcede3f9d + crc: 0xee00c8f2 type_id: 0x87b3d0e4 full_name: "drm_atomic_helper_plane_duplicate_state" } @@ -336800,7 +336923,7 @@ elf_symbol { name: "drm_atomic_helper_plane_reset" is_defined: true symbol_type: FUNCTION - crc: 0xdf151980 + crc: 0x7d166e65 type_id: 0x1653799a full_name: "drm_atomic_helper_plane_reset" } @@ -336809,7 +336932,7 @@ elf_symbol { name: "drm_atomic_helper_prepare_planes" is_defined: true symbol_type: FUNCTION - crc: 0xf53a7869 + crc: 0x3e0dd4fd type_id: 0x93c5cc72 full_name: "drm_atomic_helper_prepare_planes" } @@ -336818,7 +336941,7 @@ elf_symbol { name: "drm_atomic_helper_set_config" is_defined: true symbol_type: FUNCTION - crc: 0x83997541 + crc: 0x6794e2f0 type_id: 0x9286b490 full_name: "drm_atomic_helper_set_config" } @@ -336827,7 +336950,7 @@ elf_symbol { name: "drm_atomic_helper_setup_commit" is_defined: true symbol_type: FUNCTION - crc: 0x5259ba8f + crc: 0x5752b357 type_id: 0x94751139 full_name: "drm_atomic_helper_setup_commit" } @@ -336836,7 +336959,7 @@ elf_symbol { name: "drm_atomic_helper_shutdown" is_defined: true symbol_type: FUNCTION - crc: 0x2fbaab0e + crc: 0xcd745e85 type_id: 0x1e597e38 full_name: "drm_atomic_helper_shutdown" } @@ -336845,7 +336968,7 @@ elf_symbol { name: "drm_atomic_helper_swap_state" is_defined: true symbol_type: FUNCTION - crc: 0x73362250 + crc: 0x8c3ed963 type_id: 0x94751139 full_name: "drm_atomic_helper_swap_state" } @@ -336854,7 +336977,7 @@ elf_symbol { name: "drm_atomic_helper_update_legacy_modeset_state" is_defined: true symbol_type: FUNCTION - crc: 0x9d660c15 + crc: 0xbfca502f type_id: 0x1edd7ece full_name: "drm_atomic_helper_update_legacy_modeset_state" } @@ -336863,7 +336986,7 @@ elf_symbol { name: "drm_atomic_helper_update_plane" is_defined: true symbol_type: FUNCTION - crc: 0x9091380f + crc: 0xf726b861 type_id: 0x9b8350bf full_name: "drm_atomic_helper_update_plane" } @@ -336872,7 +336995,7 @@ elf_symbol { name: "drm_atomic_helper_wait_for_dependencies" is_defined: true symbol_type: FUNCTION - crc: 0x9f8cf10e + crc: 0xd419eea9 type_id: 0x18d85efa full_name: "drm_atomic_helper_wait_for_dependencies" } @@ -336881,7 +337004,7 @@ elf_symbol { name: "drm_atomic_helper_wait_for_fences" is_defined: true symbol_type: FUNCTION - crc: 0xcfa84e72 + crc: 0xfe562a12 type_id: 0x93de93a5 full_name: "drm_atomic_helper_wait_for_fences" } @@ -336890,7 +337013,7 @@ elf_symbol { name: "drm_atomic_helper_wait_for_flip_done" is_defined: true symbol_type: FUNCTION - crc: 0xaaa570ce + crc: 0xa48d7bc4 type_id: 0x1edd7ece full_name: "drm_atomic_helper_wait_for_flip_done" } @@ -336899,7 +337022,7 @@ elf_symbol { name: "drm_atomic_helper_wait_for_vblanks" is_defined: true symbol_type: FUNCTION - crc: 0xbc9f0e97 + crc: 0xf23c671b type_id: 0x1edd7ece full_name: "drm_atomic_helper_wait_for_vblanks" } @@ -336908,7 +337031,7 @@ elf_symbol { name: "drm_atomic_nonblocking_commit" is_defined: true symbol_type: FUNCTION - crc: 0xca527fae + crc: 0xd8acd049 type_id: 0x95c0ec46 full_name: "drm_atomic_nonblocking_commit" } @@ -336917,7 +337040,7 @@ elf_symbol { name: "drm_atomic_normalize_zpos" is_defined: true symbol_type: FUNCTION - crc: 0xb7521771 + crc: 0x1e33ecb2 type_id: 0x93c5cc72 full_name: "drm_atomic_normalize_zpos" } @@ -336926,7 +337049,7 @@ elf_symbol { name: "drm_atomic_print_new_state" is_defined: true symbol_type: FUNCTION - crc: 0xff7ba46f + crc: 0x4b2c50b3 type_id: 0x1de9a6b4 full_name: "drm_atomic_print_new_state" } @@ -336935,7 +337058,7 @@ elf_symbol { name: "drm_atomic_private_obj_fini" is_defined: true symbol_type: FUNCTION - crc: 0x5d2c09b2 + crc: 0x553e4777 type_id: 0x18cc928e full_name: "drm_atomic_private_obj_fini" } @@ -336944,7 +337067,7 @@ elf_symbol { name: "drm_atomic_private_obj_init" is_defined: true symbol_type: FUNCTION - crc: 0x776a983e + crc: 0x1b034003 type_id: 0x1ede86f9 full_name: "drm_atomic_private_obj_init" } @@ -336953,7 +337076,7 @@ elf_symbol { name: "drm_atomic_set_crtc_for_connector" is_defined: true symbol_type: FUNCTION - crc: 0xfff437c9 + crc: 0xa3c29943 type_id: 0x9666087d full_name: "drm_atomic_set_crtc_for_connector" } @@ -336962,7 +337085,7 @@ elf_symbol { name: "drm_atomic_set_crtc_for_plane" is_defined: true symbol_type: FUNCTION - crc: 0x888ef4e4 + crc: 0xdde5a576 type_id: 0x96cea8dc full_name: "drm_atomic_set_crtc_for_plane" } @@ -336971,7 +337094,7 @@ elf_symbol { name: "drm_atomic_set_fb_for_plane" is_defined: true symbol_type: FUNCTION - crc: 0xc6ed2b72 + crc: 0x0c60e229 type_id: 0x1bd4554d full_name: "drm_atomic_set_fb_for_plane" } @@ -336980,7 +337103,7 @@ elf_symbol { name: "drm_atomic_set_mode_for_crtc" is_defined: true symbol_type: FUNCTION - crc: 0x69916eb0 + crc: 0xc848cacb type_id: 0x93e044d4 full_name: "drm_atomic_set_mode_for_crtc" } @@ -336989,7 +337112,7 @@ elf_symbol { name: "drm_atomic_set_mode_prop_for_crtc" is_defined: true symbol_type: FUNCTION - crc: 0x2b96d507 + crc: 0x25b63b89 type_id: 0x93e681f1 full_name: "drm_atomic_set_mode_prop_for_crtc" } @@ -336998,7 +337121,7 @@ elf_symbol { name: "drm_atomic_state_alloc" is_defined: true symbol_type: FUNCTION - crc: 0xa2058ab7 + crc: 0x75b3a332 type_id: 0x4f33ba92 full_name: "drm_atomic_state_alloc" } @@ -337007,7 +337130,7 @@ elf_symbol { name: "drm_atomic_state_clear" is_defined: true symbol_type: FUNCTION - crc: 0xc729f77d + crc: 0xce4e3dc3 type_id: 0x18d85efa full_name: "drm_atomic_state_clear" } @@ -337016,7 +337139,7 @@ elf_symbol { name: "drm_atomic_state_default_clear" is_defined: true symbol_type: FUNCTION - crc: 0xb03816ef + crc: 0xd89f39c2 type_id: 0x18d85efa full_name: "drm_atomic_state_default_clear" } @@ -337025,7 +337148,7 @@ elf_symbol { name: "drm_atomic_state_default_release" is_defined: true symbol_type: FUNCTION - crc: 0x9d099729 + crc: 0xebf1723d type_id: 0x18d85efa full_name: "drm_atomic_state_default_release" } @@ -337034,7 +337157,7 @@ elf_symbol { name: "drm_atomic_state_init" is_defined: true symbol_type: FUNCTION - crc: 0x071012c7 + crc: 0xd45224e2 type_id: 0x93c5cc72 full_name: "drm_atomic_state_init" } @@ -337043,7 +337166,7 @@ elf_symbol { name: "drm_bridge_add" is_defined: true symbol_type: FUNCTION - crc: 0xed824201 + crc: 0xf1e19ccb type_id: 0x19026802 full_name: "drm_bridge_add" } @@ -337052,7 +337175,7 @@ elf_symbol { name: "drm_bridge_attach" is_defined: true symbol_type: FUNCTION - crc: 0x6a5393e5 + crc: 0xb15bcb76 type_id: 0x96ac3609 full_name: "drm_bridge_attach" } @@ -337061,7 +337184,7 @@ elf_symbol { name: "drm_bridge_chain_disable" is_defined: true symbol_type: FUNCTION - crc: 0x09b67a89 + crc: 0xcb161f47 type_id: 0x19026802 full_name: "drm_bridge_chain_disable" } @@ -337070,7 +337193,7 @@ elf_symbol { name: "drm_bridge_chain_enable" is_defined: true symbol_type: FUNCTION - crc: 0x9be9f929 + crc: 0x461b248b type_id: 0x19026802 full_name: "drm_bridge_chain_enable" } @@ -337079,7 +337202,7 @@ elf_symbol { name: "drm_bridge_chain_mode_set" is_defined: true symbol_type: FUNCTION - crc: 0x91e8afa7 + crc: 0x8d9e74a0 type_id: 0x19d93429 full_name: "drm_bridge_chain_mode_set" } @@ -337088,7 +337211,7 @@ elf_symbol { name: "drm_bridge_chain_post_disable" is_defined: true symbol_type: FUNCTION - crc: 0xdba055de + crc: 0xd0bcb561 type_id: 0x19026802 full_name: "drm_bridge_chain_post_disable" } @@ -337097,7 +337220,7 @@ elf_symbol { name: "drm_bridge_chain_pre_enable" is_defined: true symbol_type: FUNCTION - crc: 0x41c52447 + crc: 0x0a7e9ae0 type_id: 0x19026802 full_name: "drm_bridge_chain_pre_enable" } @@ -337106,7 +337229,7 @@ elf_symbol { name: "drm_bridge_connector_enable_hpd" is_defined: true symbol_type: FUNCTION - crc: 0x82727e65 + crc: 0x04c764a7 type_id: 0x1cf53808 full_name: "drm_bridge_connector_enable_hpd" } @@ -337115,7 +337238,7 @@ elf_symbol { name: "drm_bridge_connector_init" is_defined: true symbol_type: FUNCTION - crc: 0xca378e10 + crc: 0xb8f02cb1 type_id: 0xadb56de9 full_name: "drm_bridge_connector_init" } @@ -337124,7 +337247,7 @@ elf_symbol { name: "drm_bridge_detect" is_defined: true symbol_type: FUNCTION - crc: 0x3d31b41e + crc: 0x7b4d227c type_id: 0xfcf090be full_name: "drm_bridge_detect" } @@ -337133,7 +337256,7 @@ elf_symbol { name: "drm_bridge_hpd_notify" is_defined: true symbol_type: FUNCTION - crc: 0xfcfc1e5d + crc: 0x0e0ad727 type_id: 0x182b2835 full_name: "drm_bridge_hpd_notify" } @@ -337142,7 +337265,7 @@ elf_symbol { name: "drm_bridge_remove" is_defined: true symbol_type: FUNCTION - crc: 0x352eab01 + crc: 0x50234663 type_id: 0x19026802 full_name: "drm_bridge_remove" } @@ -337151,7 +337274,7 @@ elf_symbol { name: "drm_calc_timestamping_constants" is_defined: true symbol_type: FUNCTION - crc: 0x8279f42e + crc: 0x648f5353 type_id: 0x1c18b1c5 full_name: "drm_calc_timestamping_constants" } @@ -337160,7 +337283,7 @@ elf_symbol { name: "drm_client_init" is_defined: true symbol_type: FUNCTION - crc: 0x82c6cd87 + crc: 0xbc17245a type_id: 0x937bb0c9 full_name: "drm_client_init" } @@ -337169,7 +337292,7 @@ elf_symbol { name: "drm_client_modeset_commit_locked" is_defined: true symbol_type: FUNCTION - crc: 0x53f4fb5a + crc: 0x4e81726c type_id: 0x9ed1826a full_name: "drm_client_modeset_commit_locked" } @@ -337178,7 +337301,7 @@ elf_symbol { name: "drm_client_register" is_defined: true symbol_type: FUNCTION - crc: 0x17cca3f4 + crc: 0x2cf3f75c type_id: 0x13c930d6 full_name: "drm_client_register" } @@ -337187,7 +337310,7 @@ elf_symbol { name: "drm_compat_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0x48d7fae0 + crc: 0x3fc546c0 type_id: 0xa00069e0 full_name: "drm_compat_ioctl" } @@ -337196,7 +337319,7 @@ elf_symbol { name: "drm_connector_attach_edid_property" is_defined: true symbol_type: FUNCTION - crc: 0xeba881fb + crc: 0x58aedd11 type_id: 0x1cf53808 full_name: "drm_connector_attach_edid_property" } @@ -337205,7 +337328,7 @@ elf_symbol { name: "drm_connector_attach_encoder" is_defined: true symbol_type: FUNCTION - crc: 0x7912b1eb + crc: 0x77a697b9 type_id: 0x91565a49 full_name: "drm_connector_attach_encoder" } @@ -337214,7 +337337,7 @@ elf_symbol { name: "drm_connector_cleanup" is_defined: true symbol_type: FUNCTION - crc: 0x3ec52614 + crc: 0xff5135c8 type_id: 0x1cf53808 full_name: "drm_connector_cleanup" } @@ -337223,7 +337346,7 @@ elf_symbol { name: "drm_connector_init" is_defined: true symbol_type: FUNCTION - crc: 0x572ea0ce + crc: 0x706b6ce6 type_id: 0x9388ac32 full_name: "drm_connector_init" } @@ -337232,7 +337355,7 @@ elf_symbol { name: "drm_connector_list_iter_begin" is_defined: true symbol_type: FUNCTION - crc: 0xb34d7b03 + crc: 0x573c78e9 type_id: 0x1eca2cda full_name: "drm_connector_list_iter_begin" } @@ -337241,7 +337364,7 @@ elf_symbol { name: "drm_connector_list_iter_end" is_defined: true symbol_type: FUNCTION - crc: 0x2a658c00 + crc: 0x6fe4e052 type_id: 0x19ad7fb1 full_name: "drm_connector_list_iter_end" } @@ -337250,7 +337373,7 @@ elf_symbol { name: "drm_connector_list_iter_next" is_defined: true symbol_type: FUNCTION - crc: 0x8d7b9907 + crc: 0x3ac405e7 type_id: 0xaafabc9d full_name: "drm_connector_list_iter_next" } @@ -337259,7 +337382,7 @@ elf_symbol { name: "drm_connector_list_update" is_defined: true symbol_type: FUNCTION - crc: 0x0c98169d + crc: 0xc80b2f81 type_id: 0x1cf53808 full_name: "drm_connector_list_update" } @@ -337268,7 +337391,7 @@ elf_symbol { name: "drm_connector_register" is_defined: true symbol_type: FUNCTION - crc: 0xa997c3bb + crc: 0x18a60d92 type_id: 0x91ed8ab4 full_name: "drm_connector_register" } @@ -337277,7 +337400,7 @@ elf_symbol { name: "drm_connector_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x75dbf08a + crc: 0x38813923 type_id: 0x1cf53808 full_name: "drm_connector_unregister" } @@ -337286,7 +337409,7 @@ elf_symbol { name: "drm_connector_update_edid_property" is_defined: true symbol_type: FUNCTION - crc: 0x0b63139f + crc: 0x029d3373 type_id: 0x912a7219 full_name: "drm_connector_update_edid_property" } @@ -337295,7 +337418,7 @@ elf_symbol { name: "drm_crtc_accurate_vblank_count" is_defined: true symbol_type: FUNCTION - crc: 0x2fa224db + crc: 0x1d5ca3fc type_id: 0x5b8d0ccb full_name: "drm_crtc_accurate_vblank_count" } @@ -337304,7 +337427,7 @@ elf_symbol { name: "drm_crtc_add_crc_entry" is_defined: true symbol_type: FUNCTION - crc: 0xba7f03ea + crc: 0x8a200d41 type_id: 0x9064f8c2 full_name: "drm_crtc_add_crc_entry" } @@ -337313,7 +337436,7 @@ elf_symbol { name: "drm_crtc_arm_vblank_event" is_defined: true symbol_type: FUNCTION - crc: 0xb900d04b + crc: 0xbe99ae3e type_id: 0x1cb94c1c full_name: "drm_crtc_arm_vblank_event" } @@ -337322,7 +337445,7 @@ elf_symbol { name: "drm_crtc_cleanup" is_defined: true symbol_type: FUNCTION - crc: 0x3705641f + crc: 0x4835a59a type_id: 0x1cce8e13 full_name: "drm_crtc_cleanup" } @@ -337331,7 +337454,7 @@ elf_symbol { name: "drm_crtc_commit_wait" is_defined: true symbol_type: FUNCTION - crc: 0xd540747d + crc: 0x88b64c49 type_id: 0x922e978f full_name: "drm_crtc_commit_wait" } @@ -337340,7 +337463,7 @@ elf_symbol { name: "drm_crtc_enable_color_mgmt" is_defined: true symbol_type: FUNCTION - crc: 0x9e5e9416 + crc: 0x3e6c1942 type_id: 0x1e67551a full_name: "drm_crtc_enable_color_mgmt" } @@ -337349,7 +337472,7 @@ elf_symbol { name: "drm_crtc_handle_vblank" is_defined: true symbol_type: FUNCTION - crc: 0xbca2b324 + crc: 0x1434c171 type_id: 0xf2f28484 full_name: "drm_crtc_handle_vblank" } @@ -337358,7 +337481,7 @@ elf_symbol { name: "drm_crtc_init_with_planes" is_defined: true symbol_type: FUNCTION - crc: 0xced28292 + crc: 0xfc397c87 type_id: 0x93820b25 full_name: "drm_crtc_init_with_planes" } @@ -337367,7 +337490,7 @@ elf_symbol { name: "drm_crtc_send_vblank_event" is_defined: true symbol_type: FUNCTION - crc: 0x2be0786b + crc: 0x8cbf15f2 type_id: 0x1cb94c1c full_name: "drm_crtc_send_vblank_event" } @@ -337376,7 +337499,7 @@ elf_symbol { name: "drm_crtc_set_max_vblank_count" is_defined: true symbol_type: FUNCTION - crc: 0x684f15de + crc: 0xaacf78fb type_id: 0x1feaaebf full_name: "drm_crtc_set_max_vblank_count" } @@ -337385,7 +337508,7 @@ elf_symbol { name: "drm_crtc_vblank_count_and_time" is_defined: true symbol_type: FUNCTION - crc: 0x5421cc34 + crc: 0x7014d5a3 type_id: 0x5bb68829 full_name: "drm_crtc_vblank_count_and_time" } @@ -337394,7 +337517,7 @@ elf_symbol { name: "drm_crtc_vblank_get" is_defined: true symbol_type: FUNCTION - crc: 0x0f9a8d0b + crc: 0x4a70c089 type_id: 0x91d63caf full_name: "drm_crtc_vblank_get" } @@ -337403,7 +337526,7 @@ elf_symbol { name: "drm_crtc_vblank_helper_get_vblank_timestamp" is_defined: true symbol_type: FUNCTION - crc: 0xa53b1e4a + crc: 0xae2dee6a type_id: 0xf2bde902 full_name: "drm_crtc_vblank_helper_get_vblank_timestamp" } @@ -337412,7 +337535,7 @@ elf_symbol { name: "drm_crtc_vblank_off" is_defined: true symbol_type: FUNCTION - crc: 0x5bd0e02e + crc: 0xde4acc7f type_id: 0x1cce8e13 full_name: "drm_crtc_vblank_off" } @@ -337421,7 +337544,7 @@ elf_symbol { name: "drm_crtc_vblank_on" is_defined: true symbol_type: FUNCTION - crc: 0xf478f4c9 + crc: 0x7c4567d6 type_id: 0x1cce8e13 full_name: "drm_crtc_vblank_on" } @@ -337430,7 +337553,7 @@ elf_symbol { name: "drm_crtc_vblank_put" is_defined: true symbol_type: FUNCTION - crc: 0x65cc2478 + crc: 0xacf94198 type_id: 0x1cce8e13 full_name: "drm_crtc_vblank_put" } @@ -337439,7 +337562,7 @@ elf_symbol { name: "drm_crtc_vblank_reset" is_defined: true symbol_type: FUNCTION - crc: 0x6b223d04 + crc: 0x99680f90 type_id: 0x1cce8e13 full_name: "drm_crtc_vblank_reset" } @@ -337448,7 +337571,7 @@ elf_symbol { name: "drm_crtc_wait_one_vblank" is_defined: true symbol_type: FUNCTION - crc: 0xc819c96a + crc: 0x1e9c15f2 type_id: 0x1cce8e13 full_name: "drm_crtc_wait_one_vblank" } @@ -337457,7 +337580,7 @@ elf_symbol { name: "drm_cvt_mode" is_defined: true symbol_type: FUNCTION - crc: 0x69422d3c + crc: 0xb2279981 type_id: 0xc6a0fca0 full_name: "drm_cvt_mode" } @@ -337466,7 +337589,7 @@ elf_symbol { name: "drm_debugfs_create_files" is_defined: true symbol_type: FUNCTION - crc: 0x963e0de0 + crc: 0x29d68108 type_id: 0x1f0d7714 full_name: "drm_debugfs_create_files" } @@ -337493,7 +337616,7 @@ elf_symbol { name: "drm_dev_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x2f4a4259 + crc: 0x94983e38 type_id: 0xdf6c95f8 full_name: "drm_dev_alloc" } @@ -337502,7 +337625,7 @@ elf_symbol { name: "drm_dev_enter" is_defined: true symbol_type: FUNCTION - crc: 0xe0b47564 + crc: 0xeead4e6c type_id: 0xf028149a full_name: "drm_dev_enter" } @@ -337520,7 +337643,7 @@ elf_symbol { name: "drm_dev_get" is_defined: true symbol_type: FUNCTION - crc: 0x3e2ab001 + crc: 0xd6704a25 type_id: 0x1e597e38 full_name: "drm_dev_get" } @@ -337529,7 +337652,7 @@ elf_symbol { name: "drm_dev_printk" is_defined: true symbol_type: FUNCTION - crc: 0xcc87b9e1 + crc: 0x561d4fc0 type_id: 0x1f849f7d full_name: "drm_dev_printk" } @@ -337538,7 +337661,7 @@ elf_symbol { name: "drm_dev_put" is_defined: true symbol_type: FUNCTION - crc: 0x3bd10fb5 + crc: 0x2d98ede2 type_id: 0x1e597e38 full_name: "drm_dev_put" } @@ -337547,7 +337670,7 @@ elf_symbol { name: "drm_dev_register" is_defined: true symbol_type: FUNCTION - crc: 0x01328393 + crc: 0x232ec06b type_id: 0x938c1916 full_name: "drm_dev_register" } @@ -337556,7 +337679,7 @@ elf_symbol { name: "drm_dev_unplug" is_defined: true symbol_type: FUNCTION - crc: 0x13e1bcb5 + crc: 0x1f9373da type_id: 0x1e597e38 full_name: "drm_dev_unplug" } @@ -337565,7 +337688,7 @@ elf_symbol { name: "drm_dev_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x49708b80 + crc: 0x8b7b5d24 type_id: 0x1e597e38 full_name: "drm_dev_unregister" } @@ -337574,7 +337697,7 @@ elf_symbol { name: "drm_display_mode_from_cea_vic" is_defined: true symbol_type: FUNCTION - crc: 0x1e025a13 + crc: 0x2cc16750 type_id: 0xc7814062 full_name: "drm_display_mode_from_cea_vic" } @@ -337592,7 +337715,7 @@ elf_symbol { name: "drm_do_get_edid" is_defined: true symbol_type: FUNCTION - crc: 0x142c552a + crc: 0x1eff8142 type_id: 0xc2503be7 full_name: "drm_do_get_edid" } @@ -337637,7 +337760,7 @@ elf_symbol { name: "drm_encoder_cleanup" is_defined: true symbol_type: FUNCTION - crc: 0x6f92d133 + crc: 0xe912a5b9 type_id: 0x1b255e4a full_name: "drm_encoder_cleanup" } @@ -337646,7 +337769,7 @@ elf_symbol { name: "drm_encoder_init" is_defined: true symbol_type: FUNCTION - crc: 0x20094c84 + crc: 0x798abe87 type_id: 0x93f7ef8a full_name: "drm_encoder_init" } @@ -337655,7 +337778,7 @@ elf_symbol { name: "drm_event_cancel_free" is_defined: true symbol_type: FUNCTION - crc: 0x3896b58b + crc: 0x5f8614e0 type_id: 0x1e4577e0 full_name: "drm_event_cancel_free" } @@ -337664,7 +337787,7 @@ elf_symbol { name: "drm_event_reserve_init" is_defined: true symbol_type: FUNCTION - crc: 0x5ba2b935 + crc: 0xd2f6e504 type_id: 0x930bf787 full_name: "drm_event_reserve_init" } @@ -337673,7 +337796,7 @@ elf_symbol { name: "drm_event_reserve_init_locked" is_defined: true symbol_type: FUNCTION - crc: 0xa5b171ad + crc: 0x15250b9c type_id: 0x930bf787 full_name: "drm_event_reserve_init_locked" } @@ -337754,7 +337877,7 @@ elf_symbol { name: "drm_framebuffer_init" is_defined: true symbol_type: FUNCTION - crc: 0x903c850f + crc: 0x9033b9ae type_id: 0x93898074 full_name: "drm_framebuffer_init" } @@ -337763,7 +337886,7 @@ elf_symbol { name: "drm_framebuffer_lookup" is_defined: true symbol_type: FUNCTION - crc: 0xe3b2cdcd + crc: 0x4b1ab3af type_id: 0xa807a3b8 full_name: "drm_framebuffer_lookup" } @@ -337772,7 +337895,7 @@ elf_symbol { name: "drm_framebuffer_remove" is_defined: true symbol_type: FUNCTION - crc: 0xed0e6a4a + crc: 0x628195d0 type_id: 0x1cea7cc2 full_name: "drm_framebuffer_remove" } @@ -337781,7 +337904,7 @@ elf_symbol { name: "drm_framebuffer_unregister_private" is_defined: true symbol_type: FUNCTION - crc: 0xf39f5da0 + crc: 0xf2441742 type_id: 0x1cea7cc2 full_name: "drm_framebuffer_unregister_private" } @@ -337790,7 +337913,7 @@ elf_symbol { name: "drm_gem_cleanup_shadow_fb" is_defined: true symbol_type: FUNCTION - crc: 0x80f00a67 + crc: 0xdee5cbce type_id: 0x16ebcbfa full_name: "drm_gem_cleanup_shadow_fb" } @@ -337799,7 +337922,7 @@ elf_symbol { name: "drm_gem_create_mmap_offset" is_defined: true symbol_type: FUNCTION - crc: 0xf3536f15 + crc: 0xdfc70563 type_id: 0x9398dfdf full_name: "drm_gem_create_mmap_offset" } @@ -337808,7 +337931,7 @@ elf_symbol { name: "drm_gem_dmabuf_mmap" is_defined: true symbol_type: FUNCTION - crc: 0xb5ddd4ef + crc: 0xb977ccf5 type_id: 0x9d9aa0c3 full_name: "drm_gem_dmabuf_mmap" } @@ -337817,7 +337940,7 @@ elf_symbol { name: "drm_gem_dmabuf_release" is_defined: true symbol_type: FUNCTION - crc: 0x23108d69 + crc: 0x8a57498e type_id: 0x10aa5f7a full_name: "drm_gem_dmabuf_release" } @@ -337826,7 +337949,7 @@ elf_symbol { name: "drm_gem_dmabuf_vmap" is_defined: true symbol_type: FUNCTION - crc: 0xf456dc3c + crc: 0x324082df type_id: 0x9d4e84a4 full_name: "drm_gem_dmabuf_vmap" } @@ -337835,7 +337958,7 @@ elf_symbol { name: "drm_gem_dmabuf_vunmap" is_defined: true symbol_type: FUNCTION - crc: 0x7f2f89f8 + crc: 0xf5adac85 type_id: 0x10563618 full_name: "drm_gem_dmabuf_vunmap" } @@ -337844,7 +337967,7 @@ elf_symbol { name: "drm_gem_fb_create" is_defined: true symbol_type: FUNCTION - crc: 0x20b653b2 + crc: 0x728c0236 type_id: 0xa80d1860 full_name: "drm_gem_fb_create" } @@ -337853,7 +337976,7 @@ elf_symbol { name: "drm_gem_fb_create_handle" is_defined: true symbol_type: FUNCTION - crc: 0x33850fbc + crc: 0x440f442d type_id: 0x91bfa9d8 full_name: "drm_gem_fb_create_handle" } @@ -337862,7 +337985,7 @@ elf_symbol { name: "drm_gem_fb_destroy" is_defined: true symbol_type: FUNCTION - crc: 0x68fb2d45 + crc: 0x00cbad07 type_id: 0x1cea7cc2 full_name: "drm_gem_fb_destroy" } @@ -337871,7 +337994,7 @@ elf_symbol { name: "drm_gem_fb_get_obj" is_defined: true symbol_type: FUNCTION - crc: 0xdbb2be45 + crc: 0x27a6980a type_id: 0x0bfc976c full_name: "drm_gem_fb_get_obj" } @@ -337880,7 +338003,7 @@ elf_symbol { name: "drm_gem_fb_vmap" is_defined: true symbol_type: FUNCTION - crc: 0x92dbd7b7 + crc: 0x1efef681 type_id: 0x9101618a full_name: "drm_gem_fb_vmap" } @@ -337889,7 +338012,7 @@ elf_symbol { name: "drm_gem_fb_vunmap" is_defined: true symbol_type: FUNCTION - crc: 0x56a24ae0 + crc: 0x66872375 type_id: 0x1c1615a0 full_name: "drm_gem_fb_vunmap" } @@ -337898,7 +338021,7 @@ elf_symbol { name: "drm_gem_free_mmap_offset" is_defined: true symbol_type: FUNCTION - crc: 0xb4f4627d + crc: 0xb1b8beac type_id: 0x1e806d63 full_name: "drm_gem_free_mmap_offset" } @@ -337907,7 +338030,7 @@ elf_symbol { name: "drm_gem_get_pages" is_defined: true symbol_type: FUNCTION - crc: 0x4ef9bf98 + crc: 0xc00db7ac type_id: 0xe2823805 full_name: "drm_gem_get_pages" } @@ -337916,7 +338039,7 @@ elf_symbol { name: "drm_gem_handle_create" is_defined: true symbol_type: FUNCTION - crc: 0x98f5c1a3 + crc: 0xc56663a4 type_id: 0x99d6eb87 full_name: "drm_gem_handle_create" } @@ -337925,7 +338048,7 @@ elf_symbol { name: "drm_gem_lock_reservations" is_defined: true symbol_type: FUNCTION - crc: 0x55aba55c + crc: 0x7511c1a9 type_id: 0x9d356d81 full_name: "drm_gem_lock_reservations" } @@ -337943,7 +338066,7 @@ elf_symbol { name: "drm_gem_lru_move_tail" is_defined: true symbol_type: FUNCTION - crc: 0xb28a68cc + crc: 0x7f2a8695 type_id: 0x1dfacbed full_name: "drm_gem_lru_move_tail" } @@ -337952,7 +338075,7 @@ elf_symbol { name: "drm_gem_lru_scan" is_defined: true symbol_type: FUNCTION - crc: 0x9acfaf20 + crc: 0xfc41098d type_id: 0x3d3888de full_name: "drm_gem_lru_scan" } @@ -337961,7 +338084,7 @@ elf_symbol { name: "drm_gem_map_attach" is_defined: true symbol_type: FUNCTION - crc: 0x8583ad81 + crc: 0xc928acd5 type_id: 0x9dc78915 full_name: "drm_gem_map_attach" } @@ -337970,7 +338093,7 @@ elf_symbol { name: "drm_gem_map_detach" is_defined: true symbol_type: FUNCTION - crc: 0x3f4c5701 + crc: 0xd6e42921 type_id: 0x10df3ba9 full_name: "drm_gem_map_detach" } @@ -337979,7 +338102,7 @@ elf_symbol { name: "drm_gem_map_dma_buf" is_defined: true symbol_type: FUNCTION - crc: 0xee42c57e + crc: 0x3658bb33 type_id: 0x451c3ee7 full_name: "drm_gem_map_dma_buf" } @@ -337988,7 +338111,7 @@ elf_symbol { name: "drm_gem_mmap" is_defined: true symbol_type: FUNCTION - crc: 0x210d7252 + crc: 0x82738086 type_id: 0x9b923492 full_name: "drm_gem_mmap" } @@ -337997,7 +338120,7 @@ elf_symbol { name: "drm_gem_mmap_obj" is_defined: true symbol_type: FUNCTION - crc: 0x06f58669 + crc: 0x4a435e05 type_id: 0x93578e9d full_name: "drm_gem_mmap_obj" } @@ -338015,7 +338138,7 @@ elf_symbol { name: "drm_gem_object_init" is_defined: true symbol_type: FUNCTION - crc: 0xa17ad5ea + crc: 0xb9b10aea type_id: 0x939d4211 full_name: "drm_gem_object_init" } @@ -338024,7 +338147,7 @@ elf_symbol { name: "drm_gem_object_lookup" is_defined: true symbol_type: FUNCTION - crc: 0x81e45173 + crc: 0xf73b5f8a type_id: 0x010530e2 full_name: "drm_gem_object_lookup" } @@ -338033,7 +338156,7 @@ elf_symbol { name: "drm_gem_object_release" is_defined: true symbol_type: FUNCTION - crc: 0xe4d3aac2 + crc: 0x71c01153 type_id: 0x1e806d63 full_name: "drm_gem_object_release" } @@ -338042,7 +338165,7 @@ elf_symbol { name: "drm_gem_plane_helper_prepare_fb" is_defined: true symbol_type: FUNCTION - crc: 0x6f2d47eb + crc: 0xd6b86d8d type_id: 0x9bf37946 full_name: "drm_gem_plane_helper_prepare_fb" } @@ -338051,7 +338174,7 @@ elf_symbol { name: "drm_gem_prepare_shadow_fb" is_defined: true symbol_type: FUNCTION - crc: 0xf06cc10f + crc: 0x28da2ccb type_id: 0x9bf37946 full_name: "drm_gem_prepare_shadow_fb" } @@ -338060,7 +338183,7 @@ elf_symbol { name: "drm_gem_prime_fd_to_handle" is_defined: true symbol_type: FUNCTION - crc: 0xc9fc831a + crc: 0xc2dc5bd5 type_id: 0x9313a933 full_name: "drm_gem_prime_fd_to_handle" } @@ -338069,7 +338192,7 @@ elf_symbol { name: "drm_gem_prime_handle_to_fd" is_defined: true symbol_type: FUNCTION - crc: 0x48661b24 + crc: 0x95d75183 type_id: 0x930d2c35 full_name: "drm_gem_prime_handle_to_fd" } @@ -338078,7 +338201,7 @@ elf_symbol { name: "drm_gem_prime_import" is_defined: true symbol_type: FUNCTION - crc: 0xfbad123f + crc: 0xed4b6d70 type_id: 0x085aa0e0 full_name: "drm_gem_prime_import" } @@ -338087,7 +338210,7 @@ elf_symbol { name: "drm_gem_prime_import_dev" is_defined: true symbol_type: FUNCTION - crc: 0x75c08254 + crc: 0x498451c5 type_id: 0x085a36de full_name: "drm_gem_prime_import_dev" } @@ -338096,7 +338219,7 @@ elf_symbol { name: "drm_gem_prime_mmap" is_defined: true symbol_type: FUNCTION - crc: 0x8c3a5bc9 + crc: 0x2614b604 type_id: 0x93b092da full_name: "drm_gem_prime_mmap" } @@ -338105,7 +338228,7 @@ elf_symbol { name: "drm_gem_private_object_init" is_defined: true symbol_type: FUNCTION - crc: 0x7fdb4be0 + crc: 0x772be7bc type_id: 0x1e85f0ad full_name: "drm_gem_private_object_init" } @@ -338114,7 +338237,7 @@ elf_symbol { name: "drm_gem_put_pages" is_defined: true symbol_type: FUNCTION - crc: 0x6fe1cdf0 + crc: 0xd2515f60 type_id: 0x1eb644f1 full_name: "drm_gem_put_pages" } @@ -338123,7 +338246,7 @@ elf_symbol { name: "drm_gem_shmem_create" is_defined: true symbol_type: FUNCTION - crc: 0x41f31b29 + crc: 0x77e66e14 type_id: 0x3ab949d4 full_name: "drm_gem_shmem_create" } @@ -338132,7 +338255,7 @@ elf_symbol { name: "drm_gem_shmem_dumb_create" is_defined: true symbol_type: FUNCTION - crc: 0x998c3f55 + crc: 0x3de4dba8 type_id: 0x99de09ef full_name: "drm_gem_shmem_dumb_create" } @@ -338141,7 +338264,7 @@ elf_symbol { name: "drm_gem_shmem_free" is_defined: true symbol_type: FUNCTION - crc: 0xf0fa476c + crc: 0x1b0dec4f type_id: 0x1793895b full_name: "drm_gem_shmem_free" } @@ -338150,7 +338273,7 @@ elf_symbol { name: "drm_gem_shmem_get_pages_sgt" is_defined: true symbol_type: FUNCTION - crc: 0xf4035d75 + crc: 0xb13c5c6f type_id: 0x4677b893 full_name: "drm_gem_shmem_get_pages_sgt" } @@ -338159,7 +338282,7 @@ elf_symbol { name: "drm_gem_shmem_get_sg_table" is_defined: true symbol_type: FUNCTION - crc: 0x9d333a51 + crc: 0x9ba99c2d type_id: 0x4677b893 full_name: "drm_gem_shmem_get_sg_table" } @@ -338168,7 +338291,7 @@ elf_symbol { name: "drm_gem_shmem_mmap" is_defined: true symbol_type: FUNCTION - crc: 0x596711ec + crc: 0x5635d3c5 type_id: 0x9aa376e2 full_name: "drm_gem_shmem_mmap" } @@ -338177,7 +338300,7 @@ elf_symbol { name: "drm_gem_shmem_pin" is_defined: true symbol_type: FUNCTION - crc: 0x262f11ac + crc: 0xf9ab1ce8 type_id: 0x9a8b3be7 full_name: "drm_gem_shmem_pin" } @@ -338186,7 +338309,7 @@ elf_symbol { name: "drm_gem_shmem_prime_import_sg_table" is_defined: true symbol_type: FUNCTION - crc: 0x1e49ce75 + crc: 0xd79abf07 type_id: 0x082ccdd1 full_name: "drm_gem_shmem_prime_import_sg_table" } @@ -338195,7 +338318,7 @@ elf_symbol { name: "drm_gem_shmem_print_info" is_defined: true symbol_type: FUNCTION - crc: 0x227c82b5 + crc: 0xb5a4dd37 type_id: 0x1e2a3205 full_name: "drm_gem_shmem_print_info" } @@ -338204,7 +338327,7 @@ elf_symbol { name: "drm_gem_shmem_unpin" is_defined: true symbol_type: FUNCTION - crc: 0xb3b386cb + crc: 0x66e38b43 type_id: 0x1793895b full_name: "drm_gem_shmem_unpin" } @@ -338213,7 +338336,7 @@ elf_symbol { name: "drm_gem_shmem_vm_ops" is_defined: true symbol_type: OBJECT - crc: 0xf2d3150d + crc: 0x004e8389 type_id: 0xf5901b02 full_name: "drm_gem_shmem_vm_ops" } @@ -338222,7 +338345,7 @@ elf_symbol { name: "drm_gem_shmem_vmap" is_defined: true symbol_type: FUNCTION - crc: 0x673493d5 + crc: 0x4d659e88 type_id: 0x9a775285 full_name: "drm_gem_shmem_vmap" } @@ -338231,7 +338354,7 @@ elf_symbol { name: "drm_gem_shmem_vunmap" is_defined: true symbol_type: FUNCTION - crc: 0x14edd2cc + crc: 0xbc5d2180 type_id: 0x176fe039 full_name: "drm_gem_shmem_vunmap" } @@ -338240,7 +338363,7 @@ elf_symbol { name: "drm_gem_unlock_reservations" is_defined: true symbol_type: FUNCTION - crc: 0x50688873 + crc: 0xb9e3044a type_id: 0x102ddf3d full_name: "drm_gem_unlock_reservations" } @@ -338249,7 +338372,7 @@ elf_symbol { name: "drm_gem_unmap_dma_buf" is_defined: true symbol_type: FUNCTION - crc: 0x6b6f656c + crc: 0x5338438e type_id: 0x17ffed59 full_name: "drm_gem_unmap_dma_buf" } @@ -338258,7 +338381,7 @@ elf_symbol { name: "drm_gem_vm_close" is_defined: true symbol_type: FUNCTION - crc: 0xd091420c + crc: 0xec618009 type_id: 0x121c81c2 full_name: "drm_gem_vm_close" } @@ -338267,7 +338390,7 @@ elf_symbol { name: "drm_gem_vm_open" is_defined: true symbol_type: FUNCTION - crc: 0xb113f8fa + crc: 0xd96b54d2 type_id: 0x121c81c2 full_name: "drm_gem_vm_open" } @@ -338294,7 +338417,7 @@ elf_symbol { name: "drm_get_edid" is_defined: true symbol_type: FUNCTION - crc: 0xe9079560 + crc: 0x19759a37 type_id: 0xc21fedbe full_name: "drm_get_edid" } @@ -338312,7 +338435,7 @@ elf_symbol { name: "drm_handle_vblank" is_defined: true symbol_type: FUNCTION - crc: 0xe4f3132d + crc: 0xfa1601d0 type_id: 0xf1736137 full_name: "drm_handle_vblank" } @@ -338321,7 +338444,7 @@ elf_symbol { name: "drm_hdmi_avi_infoframe_from_display_mode" is_defined: true symbol_type: FUNCTION - crc: 0xf9f16133 + crc: 0x750133a5 type_id: 0x99c0ccec full_name: "drm_hdmi_avi_infoframe_from_display_mode" } @@ -338330,7 +338453,7 @@ elf_symbol { name: "drm_helper_hpd_irq_event" is_defined: true symbol_type: FUNCTION - crc: 0x6348f1a2 + crc: 0xf1be3e6d type_id: 0xf06574af full_name: "drm_helper_hpd_irq_event" } @@ -338339,7 +338462,7 @@ elf_symbol { name: "drm_helper_mode_fill_fb_struct" is_defined: true symbol_type: FUNCTION - crc: 0x489d3594 + crc: 0x3a149017 type_id: 0x1e93e85a full_name: "drm_helper_mode_fill_fb_struct" } @@ -338348,7 +338471,7 @@ elf_symbol { name: "drm_helper_move_panel_connectors_to_head" is_defined: true symbol_type: FUNCTION - crc: 0xb99f77df + crc: 0xd7a6c5ea type_id: 0x1e597e38 full_name: "drm_helper_move_panel_connectors_to_head" } @@ -338357,7 +338480,7 @@ elf_symbol { name: "drm_helper_probe_single_connector_modes" is_defined: true symbol_type: FUNCTION - crc: 0x2a98b904 + crc: 0x1a5a590f type_id: 0x919a7322 full_name: "drm_helper_probe_single_connector_modes" } @@ -338366,7 +338489,7 @@ elf_symbol { name: "drm_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0xb4084f35 + crc: 0x59f8ef9b type_id: 0xa00069e0 full_name: "drm_ioctl" } @@ -338375,7 +338498,7 @@ elf_symbol { name: "drm_is_current_master" is_defined: true symbol_type: FUNCTION - crc: 0x5c223422 + crc: 0x8646e606 type_id: 0xfa1de4ef full_name: "drm_is_current_master" } @@ -338384,7 +338507,7 @@ elf_symbol { name: "drm_kms_helper_hotplug_event" is_defined: true symbol_type: FUNCTION - crc: 0x34a1438c + crc: 0x2743be40 type_id: 0x1e597e38 full_name: "drm_kms_helper_hotplug_event" } @@ -338393,7 +338516,7 @@ elf_symbol { name: "drm_kms_helper_poll_disable" is_defined: true symbol_type: FUNCTION - crc: 0x769f2060 + crc: 0xacfff18d type_id: 0x1e597e38 full_name: "drm_kms_helper_poll_disable" } @@ -338402,7 +338525,7 @@ elf_symbol { name: "drm_kms_helper_poll_enable" is_defined: true symbol_type: FUNCTION - crc: 0xf1bc71bf + crc: 0x9e16db13 type_id: 0x1e597e38 full_name: "drm_kms_helper_poll_enable" } @@ -338411,7 +338534,7 @@ elf_symbol { name: "drm_kms_helper_poll_fini" is_defined: true symbol_type: FUNCTION - crc: 0xe0023b9e + crc: 0xef3ba9a1 type_id: 0x1e597e38 full_name: "drm_kms_helper_poll_fini" } @@ -338420,7 +338543,7 @@ elf_symbol { name: "drm_kms_helper_poll_init" is_defined: true symbol_type: FUNCTION - crc: 0x31bf5bce + crc: 0xea2f252b type_id: 0x1e597e38 full_name: "drm_kms_helper_poll_init" } @@ -338429,7 +338552,7 @@ elf_symbol { name: "drm_master_get" is_defined: true symbol_type: FUNCTION - crc: 0xc1bd62e3 + crc: 0xd46e5c17 type_id: 0xf6814266 full_name: "drm_master_get" } @@ -338438,7 +338561,7 @@ elf_symbol { name: "drm_master_put" is_defined: true symbol_type: FUNCTION - crc: 0x6e2cbd8a + crc: 0x7f07e08b type_id: 0x12493d73 full_name: "drm_master_put" } @@ -338492,7 +338615,7 @@ elf_symbol { name: "drm_mode_config_cleanup" is_defined: true symbol_type: FUNCTION - crc: 0xa6e88d7b + crc: 0x594a8e52 type_id: 0x1e597e38 full_name: "drm_mode_config_cleanup" } @@ -338501,7 +338624,7 @@ elf_symbol { name: "drm_mode_config_helper_resume" is_defined: true symbol_type: FUNCTION - crc: 0xeda8af5e + crc: 0x414402c7 type_id: 0x9341cc84 full_name: "drm_mode_config_helper_resume" } @@ -338510,7 +338633,7 @@ elf_symbol { name: "drm_mode_config_helper_suspend" is_defined: true symbol_type: FUNCTION - crc: 0xb8b92db5 + crc: 0xb4ade555 type_id: 0x9341cc84 full_name: "drm_mode_config_helper_suspend" } @@ -338519,7 +338642,7 @@ elf_symbol { name: "drm_mode_config_reset" is_defined: true symbol_type: FUNCTION - crc: 0x8c94518b + crc: 0x4abdeaa9 type_id: 0x1e597e38 full_name: "drm_mode_config_reset" } @@ -338537,7 +338660,7 @@ elf_symbol { name: "drm_mode_convert_umode" is_defined: true symbol_type: FUNCTION - crc: 0x8ca1296f + crc: 0xa4c0c5f3 type_id: 0x93e73189 full_name: "drm_mode_convert_umode" } @@ -338555,7 +338678,7 @@ elf_symbol { name: "drm_mode_create" is_defined: true symbol_type: FUNCTION - crc: 0xc2fafb81 + crc: 0xf0e21e2c type_id: 0xc72431aa full_name: "drm_mode_create" } @@ -338564,7 +338687,7 @@ elf_symbol { name: "drm_mode_create_dp_colorspace_property" is_defined: true symbol_type: FUNCTION - crc: 0xad81483b + crc: 0xe6314d99 type_id: 0x91ed8ab4 full_name: "drm_mode_create_dp_colorspace_property" } @@ -338573,7 +338696,7 @@ elf_symbol { name: "drm_mode_create_tile_group" is_defined: true symbol_type: FUNCTION - crc: 0x74ce80e7 + crc: 0x311bd732 type_id: 0x42ee3dd4 full_name: "drm_mode_create_tile_group" } @@ -338591,7 +338714,7 @@ elf_symbol { name: "drm_mode_destroy" is_defined: true symbol_type: FUNCTION - crc: 0xf34443c3 + crc: 0x2c57ad84 type_id: 0x1ef285a9 full_name: "drm_mode_destroy" } @@ -338600,7 +338723,7 @@ elf_symbol { name: "drm_mode_duplicate" is_defined: true symbol_type: FUNCTION - crc: 0xa1666849 + crc: 0x2998b70a type_id: 0xc7f20e7c full_name: "drm_mode_duplicate" } @@ -338645,7 +338768,7 @@ elf_symbol { name: "drm_mode_object_find" is_defined: true symbol_type: FUNCTION - crc: 0xb1f592da + crc: 0x5974f664 type_id: 0x6650c8f2 full_name: "drm_mode_object_find" } @@ -338654,7 +338777,7 @@ elf_symbol { name: "drm_mode_object_get" is_defined: true symbol_type: FUNCTION - crc: 0xa8db6a06 + crc: 0x1d0eea47 type_id: 0x1cab6a11 full_name: "drm_mode_object_get" } @@ -338663,7 +338786,7 @@ elf_symbol { name: "drm_mode_object_put" is_defined: true symbol_type: FUNCTION - crc: 0x618f8364 + crc: 0x45c70e34 type_id: 0x1cab6a11 full_name: "drm_mode_object_put" } @@ -338672,7 +338795,7 @@ elf_symbol { name: "drm_mode_probed_add" is_defined: true symbol_type: FUNCTION - crc: 0xff9e919e + crc: 0xa4421422 type_id: 0x1c5ec399 full_name: "drm_mode_probed_add" } @@ -338681,7 +338804,7 @@ elf_symbol { name: "drm_mode_prune_invalid" is_defined: true symbol_type: FUNCTION - crc: 0x6a7fe13b + crc: 0x5c544d0a type_id: 0x1ebba908 full_name: "drm_mode_prune_invalid" } @@ -338726,7 +338849,7 @@ elf_symbol { name: "drm_modeset_acquire_fini" is_defined: true symbol_type: FUNCTION - crc: 0x9fc4eb91 + crc: 0xa943861c type_id: 0x107b2810 full_name: "drm_modeset_acquire_fini" } @@ -338735,7 +338858,7 @@ elf_symbol { name: "drm_modeset_acquire_init" is_defined: true symbol_type: FUNCTION - crc: 0x38056f4c + crc: 0x17fde306 type_id: 0x100bdee9 full_name: "drm_modeset_acquire_init" } @@ -338744,7 +338867,7 @@ elf_symbol { name: "drm_modeset_backoff" is_defined: true symbol_type: FUNCTION - crc: 0x052c6e28 + crc: 0xfe75899d type_id: 0x9d639aac full_name: "drm_modeset_backoff" } @@ -338753,7 +338876,7 @@ elf_symbol { name: "drm_modeset_drop_locks" is_defined: true symbol_type: FUNCTION - crc: 0xec269e32 + crc: 0x9720a69b type_id: 0x107b2810 full_name: "drm_modeset_drop_locks" } @@ -338762,7 +338885,7 @@ elf_symbol { name: "drm_modeset_lock" is_defined: true symbol_type: FUNCTION - crc: 0x0f19e80e + crc: 0xaf3c5735 type_id: 0x97fa70fd full_name: "drm_modeset_lock" } @@ -338771,7 +338894,7 @@ elf_symbol { name: "drm_modeset_lock_all" is_defined: true symbol_type: FUNCTION - crc: 0xf7add6bc + crc: 0xd075d932 type_id: 0x1e597e38 full_name: "drm_modeset_lock_all" } @@ -338780,7 +338903,7 @@ elf_symbol { name: "drm_modeset_lock_all_ctx" is_defined: true symbol_type: FUNCTION - crc: 0xf489d2fc + crc: 0x2529faab type_id: 0x934ffb1c full_name: "drm_modeset_lock_all_ctx" } @@ -338789,7 +338912,7 @@ elf_symbol { name: "drm_modeset_lock_init" is_defined: true symbol_type: FUNCTION - crc: 0xc901870f + crc: 0xec98dd0f type_id: 0x1aecf5d9 full_name: "drm_modeset_lock_init" } @@ -338798,7 +338921,7 @@ elf_symbol { name: "drm_modeset_lock_single_interruptible" is_defined: true symbol_type: FUNCTION - crc: 0x61199e62 + crc: 0x935ee5a2 type_id: 0x97f44765 full_name: "drm_modeset_lock_single_interruptible" } @@ -338807,7 +338930,7 @@ elf_symbol { name: "drm_modeset_unlock" is_defined: true symbol_type: FUNCTION - crc: 0x4f2bcdc1 + crc: 0x1500c7df type_id: 0x1aecf5d9 full_name: "drm_modeset_unlock" } @@ -338816,7 +338939,7 @@ elf_symbol { name: "drm_modeset_unlock_all" is_defined: true symbol_type: FUNCTION - crc: 0x438204c3 + crc: 0xf41991ce type_id: 0x1e597e38 full_name: "drm_modeset_unlock_all" } @@ -338825,7 +338948,7 @@ elf_symbol { name: "drm_object_attach_property" is_defined: true symbol_type: FUNCTION - crc: 0xe60b637e + crc: 0x4173e75c type_id: 0x1c05d45f full_name: "drm_object_attach_property" } @@ -338834,7 +338957,7 @@ elf_symbol { name: "drm_object_property_set_value" is_defined: true symbol_type: FUNCTION - crc: 0x44fbbaa6 + crc: 0xd6db4d7f type_id: 0x911d66e3 full_name: "drm_object_property_set_value" } @@ -338843,7 +338966,7 @@ elf_symbol { name: "drm_of_component_match_add" is_defined: true symbol_type: FUNCTION - crc: 0x7bde524e + crc: 0x4a4bd165 type_id: 0x102ab9fb full_name: "drm_of_component_match_add" } @@ -338852,7 +338975,7 @@ elf_symbol { name: "drm_of_find_panel_or_bridge" is_defined: true symbol_type: FUNCTION - crc: 0x372ced81 + crc: 0x7e95f155 type_id: 0x908eb1a6 full_name: "drm_of_find_panel_or_bridge" } @@ -338861,7 +338984,7 @@ elf_symbol { name: "drm_of_get_data_lanes_count" is_defined: true symbol_type: FUNCTION - crc: 0x3ee140b1 + crc: 0x17c567bb type_id: 0x900cb4fc full_name: "drm_of_get_data_lanes_count" } @@ -338870,7 +338993,7 @@ elf_symbol { name: "drm_open" is_defined: true symbol_type: FUNCTION - crc: 0x96a30a31 + crc: 0x4bc660d1 type_id: 0x9b022eae full_name: "drm_open" } @@ -338879,7 +339002,7 @@ elf_symbol { name: "drm_panel_add" is_defined: true symbol_type: FUNCTION - crc: 0xb1dba1fc + crc: 0x33016190 type_id: 0x14800eb8 full_name: "drm_panel_add" } @@ -338888,7 +339011,7 @@ elf_symbol { name: "drm_panel_bridge_add_typed" is_defined: true symbol_type: FUNCTION - crc: 0x66d1c4c1 + crc: 0x5991f3a4 type_id: 0x9d2263c5 full_name: "drm_panel_bridge_add_typed" } @@ -338897,7 +339020,7 @@ elf_symbol { name: "drm_panel_bridge_connector" is_defined: true symbol_type: FUNCTION - crc: 0xc808a4be + crc: 0x8c0c11ce type_id: 0xaa55ab2e full_name: "drm_panel_bridge_connector" } @@ -338906,7 +339029,7 @@ elf_symbol { name: "drm_panel_bridge_remove" is_defined: true symbol_type: FUNCTION - crc: 0x252c0a25 + crc: 0xab3dd1c4 type_id: 0x19026802 full_name: "drm_panel_bridge_remove" } @@ -338915,7 +339038,7 @@ elf_symbol { name: "drm_panel_disable" is_defined: true symbol_type: FUNCTION - crc: 0xb2acf07b + crc: 0x75e8a8cf type_id: 0x9998bc04 full_name: "drm_panel_disable" } @@ -338924,7 +339047,7 @@ elf_symbol { name: "drm_panel_enable" is_defined: true symbol_type: FUNCTION - crc: 0xacd1cc4e + crc: 0x724c23d9 type_id: 0x9998bc04 full_name: "drm_panel_enable" } @@ -338933,7 +339056,7 @@ elf_symbol { name: "drm_panel_get_modes" is_defined: true symbol_type: FUNCTION - crc: 0x77dfcb65 + crc: 0x3eb886ac type_id: 0x995e6a9d full_name: "drm_panel_get_modes" } @@ -338942,7 +339065,7 @@ elf_symbol { name: "drm_panel_init" is_defined: true symbol_type: FUNCTION - crc: 0xb1d8dc02 + crc: 0x42884c4c type_id: 0x1486e519 full_name: "drm_panel_init" } @@ -338951,7 +339074,7 @@ elf_symbol { name: "drm_panel_prepare" is_defined: true symbol_type: FUNCTION - crc: 0xe82611bc + crc: 0xfd342e36 type_id: 0x9998bc04 full_name: "drm_panel_prepare" } @@ -338960,7 +339083,7 @@ elf_symbol { name: "drm_panel_remove" is_defined: true symbol_type: FUNCTION - crc: 0xef8e971b + crc: 0xb5cbccf8 type_id: 0x14800eb8 full_name: "drm_panel_remove" } @@ -338969,7 +339092,7 @@ elf_symbol { name: "drm_panel_unprepare" is_defined: true symbol_type: FUNCTION - crc: 0xd36095b8 + crc: 0xf0a2ba5c type_id: 0x9998bc04 full_name: "drm_panel_unprepare" } @@ -338978,7 +339101,7 @@ elf_symbol { name: "drm_plane_cleanup" is_defined: true symbol_type: FUNCTION - crc: 0x32a0a3c8 + crc: 0x9c9dca69 type_id: 0x1653799a full_name: "drm_plane_cleanup" } @@ -338987,7 +339110,7 @@ elf_symbol { name: "drm_plane_create_alpha_property" is_defined: true symbol_type: FUNCTION - crc: 0xbd5afd02 + crc: 0xaafbb181 type_id: 0x9b4bcb26 full_name: "drm_plane_create_alpha_property" } @@ -338996,7 +339119,7 @@ elf_symbol { name: "drm_plane_create_blend_mode_property" is_defined: true symbol_type: FUNCTION - crc: 0x7fc8e2ee + crc: 0xc92013d7 type_id: 0x9a5ddebe full_name: "drm_plane_create_blend_mode_property" } @@ -339005,7 +339128,7 @@ elf_symbol { name: "drm_plane_create_rotation_property" is_defined: true symbol_type: FUNCTION - crc: 0x7badd416 + crc: 0xaac28500 type_id: 0x9a4cbfe7 full_name: "drm_plane_create_rotation_property" } @@ -339014,7 +339137,7 @@ elf_symbol { name: "drm_plane_create_zpos_immutable_property" is_defined: true symbol_type: FUNCTION - crc: 0x2329d4a3 + crc: 0x9b7c5a6c type_id: 0x9a5ddebe full_name: "drm_plane_create_zpos_immutable_property" } @@ -339023,7 +339146,7 @@ elf_symbol { name: "drm_plane_create_zpos_property" is_defined: true symbol_type: FUNCTION - crc: 0xab2262d2 + crc: 0x6f86d94d type_id: 0x9a4da9f2 full_name: "drm_plane_create_zpos_property" } @@ -339032,7 +339155,7 @@ elf_symbol { name: "drm_plane_enable_fb_damage_clips" is_defined: true symbol_type: FUNCTION - crc: 0x5d2602c1 + crc: 0xaa4b22bf type_id: 0x1653799a full_name: "drm_plane_enable_fb_damage_clips" } @@ -339041,7 +339164,7 @@ elf_symbol { name: "drm_poll" is_defined: true symbol_type: FUNCTION - crc: 0x500e0c48 + crc: 0x17900f2f type_id: 0x25b50dfa full_name: "drm_poll" } @@ -339050,7 +339173,7 @@ elf_symbol { name: "drm_prime_gem_destroy" is_defined: true symbol_type: FUNCTION - crc: 0x67523edd + crc: 0xa2ed8365 type_id: 0x1e82fda2 full_name: "drm_prime_gem_destroy" } @@ -339068,7 +339191,7 @@ elf_symbol { name: "drm_prime_pages_to_sg" is_defined: true symbol_type: FUNCTION - crc: 0x48ee87c3 + crc: 0x6671517e type_id: 0x4f80ed11 full_name: "drm_prime_pages_to_sg" } @@ -339077,7 +339200,7 @@ elf_symbol { name: "drm_prime_sg_to_page_array" is_defined: true symbol_type: FUNCTION - crc: 0x7d8e90e7 + crc: 0x994c2576 type_id: 0x9d9ce4b7 full_name: "drm_prime_sg_to_page_array" } @@ -339095,7 +339218,7 @@ elf_symbol { name: "drm_probe_ddc" is_defined: true symbol_type: FUNCTION - crc: 0x3f1cee34 + crc: 0xf6da12cd type_id: 0xf7820d73 full_name: "drm_probe_ddc" } @@ -339104,7 +339227,7 @@ elf_symbol { name: "drm_property_blob_get" is_defined: true symbol_type: FUNCTION - crc: 0x1e622820 + crc: 0x334476db type_id: 0x0c5304b6 full_name: "drm_property_blob_get" } @@ -339113,7 +339236,7 @@ elf_symbol { name: "drm_property_blob_put" is_defined: true symbol_type: FUNCTION - crc: 0xe66524a6 + crc: 0xd1ca9448 type_id: 0x1d97feab full_name: "drm_property_blob_put" } @@ -339122,7 +339245,7 @@ elf_symbol { name: "drm_property_create" is_defined: true symbol_type: FUNCTION - crc: 0x6a0d03a8 + crc: 0xa8a10d65 type_id: 0x9b73de6d full_name: "drm_property_create" } @@ -339131,7 +339254,7 @@ elf_symbol { name: "drm_property_create_bitmask" is_defined: true symbol_type: FUNCTION - crc: 0x79803856 + crc: 0x158c6422 type_id: 0x9b72aafd full_name: "drm_property_create_bitmask" } @@ -339140,7 +339263,7 @@ elf_symbol { name: "drm_property_create_blob" is_defined: true symbol_type: FUNCTION - crc: 0x66c8c441 + crc: 0x559910c4 type_id: 0x0c431641 full_name: "drm_property_create_blob" } @@ -339149,7 +339272,7 @@ elf_symbol { name: "drm_property_create_bool" is_defined: true symbol_type: FUNCTION - crc: 0x7e45a8ef + crc: 0x05b4c253 type_id: 0x9b7242ee full_name: "drm_property_create_bool" } @@ -339158,7 +339281,7 @@ elf_symbol { name: "drm_property_create_enum" is_defined: true symbol_type: FUNCTION - crc: 0x99132e3b + crc: 0x11b35dc6 type_id: 0x9b72aa8f full_name: "drm_property_create_enum" } @@ -339167,7 +339290,7 @@ elf_symbol { name: "drm_property_create_range" is_defined: true symbol_type: FUNCTION - crc: 0xdcb95906 + crc: 0x7989f93b type_id: 0x9b7237ea full_name: "drm_property_create_range" } @@ -339176,7 +339299,7 @@ elf_symbol { name: "drm_property_create_signed_range" is_defined: true symbol_type: FUNCTION - crc: 0xa63576db + crc: 0xc0a8b041 type_id: 0x9b738b6d full_name: "drm_property_create_signed_range" } @@ -339185,7 +339308,7 @@ elf_symbol { name: "drm_property_lookup_blob" is_defined: true symbol_type: FUNCTION - crc: 0xc5c02c75 + crc: 0x89e48696 type_id: 0x0fed72dc full_name: "drm_property_lookup_blob" } @@ -339194,7 +339317,7 @@ elf_symbol { name: "drm_property_replace_blob" is_defined: true symbol_type: FUNCTION - crc: 0x93322c82 + crc: 0xbbf9f2f6 type_id: 0xff934450 full_name: "drm_property_replace_blob" } @@ -339212,7 +339335,7 @@ elf_symbol { name: "drm_read" is_defined: true symbol_type: FUNCTION - crc: 0xa44c2254 + crc: 0x16567cee type_id: 0x12e4741f full_name: "drm_read" } @@ -339257,7 +339380,7 @@ elf_symbol { name: "drm_release" is_defined: true symbol_type: FUNCTION - crc: 0x757274a3 + crc: 0xf9b3e059 type_id: 0x9b022eae full_name: "drm_release" } @@ -339275,7 +339398,7 @@ elf_symbol { name: "drm_self_refresh_helper_alter_state" is_defined: true symbol_type: FUNCTION - crc: 0x1494190f + crc: 0x283c4bf2 type_id: 0x18d85efa full_name: "drm_self_refresh_helper_alter_state" } @@ -339284,7 +339407,7 @@ elf_symbol { name: "drm_send_event" is_defined: true symbol_type: FUNCTION - crc: 0x12795291 + crc: 0xdf4a9a1b type_id: 0x1e4577e0 full_name: "drm_send_event" } @@ -339293,7 +339416,7 @@ elf_symbol { name: "drm_send_event_locked" is_defined: true symbol_type: FUNCTION - crc: 0x00ae918b + crc: 0xbf60d042 type_id: 0x1e4577e0 full_name: "drm_send_event_locked" } @@ -339302,7 +339425,7 @@ elf_symbol { name: "drm_set_preferred_mode" is_defined: true symbol_type: FUNCTION - crc: 0x195017be + crc: 0x3c3f83a1 type_id: 0x1d707370 full_name: "drm_set_preferred_mode" } @@ -339311,7 +339434,7 @@ elf_symbol { name: "drm_simple_display_pipe_attach_bridge" is_defined: true symbol_type: FUNCTION - crc: 0x27b74075 + crc: 0x253867d8 type_id: 0x9e08dfbb full_name: "drm_simple_display_pipe_attach_bridge" } @@ -339320,7 +339443,7 @@ elf_symbol { name: "drm_simple_display_pipe_init" is_defined: true symbol_type: FUNCTION - crc: 0x31739099 + crc: 0x75ec7002 type_id: 0x937ca73d full_name: "drm_simple_display_pipe_init" } @@ -339329,7 +339452,7 @@ elf_symbol { name: "drm_simple_encoder_init" is_defined: true symbol_type: FUNCTION - crc: 0x00541d07 + crc: 0x10bc895a type_id: 0x93e3d44d full_name: "drm_simple_encoder_init" } @@ -339338,7 +339461,7 @@ elf_symbol { name: "drm_state_dump" is_defined: true symbol_type: FUNCTION - crc: 0xa8003c00 + crc: 0x24b2c6c5 type_id: 0x1ef499ec full_name: "drm_state_dump" } @@ -339347,7 +339470,7 @@ elf_symbol { name: "drm_syncobj_add_point" is_defined: true symbol_type: FUNCTION - crc: 0x051bb101 + crc: 0x50405a4a type_id: 0x15766e8a full_name: "drm_syncobj_add_point" } @@ -339356,7 +339479,7 @@ elf_symbol { name: "drm_syncobj_find" is_defined: true symbol_type: FUNCTION - crc: 0xc596b26e + crc: 0x73367cf2 type_id: 0xe211074d full_name: "drm_syncobj_find" } @@ -339365,7 +339488,7 @@ elf_symbol { name: "drm_syncobj_find_fence" is_defined: true symbol_type: FUNCTION - crc: 0x15069015 + crc: 0x65c561f0 type_id: 0x9a3bbebc full_name: "drm_syncobj_find_fence" } @@ -339383,7 +339506,7 @@ elf_symbol { name: "drm_syncobj_replace_fence" is_defined: true symbol_type: FUNCTION - crc: 0x5b881588 + crc: 0xf2a5ecbc type_id: 0x15401a81 full_name: "drm_syncobj_replace_fence" } @@ -339392,7 +339515,7 @@ elf_symbol { name: "drm_sysfs_connector_status_event" is_defined: true symbol_type: FUNCTION - crc: 0xbb5f3779 + crc: 0x06a62a8d type_id: 0x1c5ca425 full_name: "drm_sysfs_connector_status_event" } @@ -339401,7 +339524,7 @@ elf_symbol { name: "drm_universal_plane_init" is_defined: true symbol_type: FUNCTION - crc: 0x6c42f0ce + crc: 0x420ee734 type_id: 0x932a8871 full_name: "drm_universal_plane_init" } @@ -339410,7 +339533,7 @@ elf_symbol { name: "drm_vblank_init" is_defined: true symbol_type: FUNCTION - crc: 0xa2fe4d2e + crc: 0x9ef67b7f type_id: 0x9257d91c full_name: "drm_vblank_init" } @@ -339419,7 +339542,7 @@ elf_symbol { name: "drm_wait_one_vblank" is_defined: true symbol_type: FUNCTION - crc: 0x25a5f8fc + crc: 0xcde07bee type_id: 0x1f4f6ba0 full_name: "drm_wait_one_vblank" } @@ -339428,7 +339551,7 @@ elf_symbol { name: "drm_writeback_connector_init" is_defined: true symbol_type: FUNCTION - crc: 0x6ca7ee1e + crc: 0x4908cc97 type_id: 0x93f3386e full_name: "drm_writeback_connector_init" } @@ -339437,7 +339560,7 @@ elf_symbol { name: "drm_writeback_connector_init_with_encoder" is_defined: true symbol_type: FUNCTION - crc: 0xe55c8d00 + crc: 0x6a6c170b type_id: 0x93f6a75b full_name: "drm_writeback_connector_init_with_encoder" } @@ -339446,7 +339569,7 @@ elf_symbol { name: "drm_writeback_queue_job" is_defined: true symbol_type: FUNCTION - crc: 0xa5b7a442 + crc: 0xcb50c04c type_id: 0x1be9f38e full_name: "drm_writeback_queue_job" } @@ -339455,7 +339578,7 @@ elf_symbol { name: "drm_writeback_signal_completion" is_defined: true symbol_type: FUNCTION - crc: 0x5a5d679c + crc: 0x991cd501 type_id: 0x1ac748a8 full_name: "drm_writeback_signal_completion" } @@ -339464,7 +339587,7 @@ elf_symbol { name: "drmm_kfree" is_defined: true symbol_type: FUNCTION - crc: 0xae4d5e31 + crc: 0xaaf7e490 type_id: 0x1e3b8bac full_name: "drmm_kfree" } @@ -339473,7 +339596,7 @@ elf_symbol { name: "drmm_kmalloc" is_defined: true symbol_type: FUNCTION - crc: 0x063a173f + crc: 0x92deb592 type_id: 0x5bbb224c full_name: "drmm_kmalloc" } @@ -339482,7 +339605,7 @@ elf_symbol { name: "drmm_mode_config_init" is_defined: true symbol_type: FUNCTION - crc: 0x1e7eb91e + crc: 0x72dbe465 type_id: 0x9341cc84 full_name: "drmm_mode_config_init" } @@ -339500,7 +339623,7 @@ elf_symbol { name: "dst_cache_get" is_defined: true symbol_type: FUNCTION - crc: 0x5dfe63f5 + crc: 0x2d1a46f9 type_id: 0xaba1c9dd full_name: "dst_cache_get" } @@ -339518,7 +339641,7 @@ elf_symbol { name: "dst_cache_set_ip4" is_defined: true symbol_type: FUNCTION - crc: 0x185df261 + crc: 0x8898edca type_id: 0x1aa3070d full_name: "dst_cache_set_ip4" } @@ -339527,7 +339650,7 @@ elf_symbol { name: "dst_cache_set_ip6" is_defined: true symbol_type: FUNCTION - crc: 0x60da3282 + crc: 0x52722d82 type_id: 0x1a954b21 full_name: "dst_cache_set_ip6" } @@ -339536,7 +339659,7 @@ elf_symbol { name: "dst_release" is_defined: true symbol_type: FUNCTION - crc: 0x573babb5 + crc: 0xd79c2f81 type_id: 0x140e294e full_name: "dst_release" } @@ -339545,7 +339668,7 @@ elf_symbol { name: "dump_backtrace" is_defined: true symbol_type: FUNCTION - crc: 0x48f04e6a + crc: 0xbd608157 type_id: 0x10ab38c6 full_name: "dump_backtrace" } @@ -339563,7 +339686,7 @@ elf_symbol { name: "dw_handle_msi_irq" is_defined: true symbol_type: FUNCTION - crc: 0x5e15216e + crc: 0x3289bb0c type_id: 0x2ba2f0cc full_name: "dw_handle_msi_irq" } @@ -339572,7 +339695,7 @@ elf_symbol { name: "dw_pcie_host_init" is_defined: true symbol_type: FUNCTION - crc: 0x56882a23 + crc: 0x9b127893 type_id: 0x94e69702 full_name: "dw_pcie_host_init" } @@ -339590,7 +339713,7 @@ elf_symbol { name: "dw_pcie_setup_rc" is_defined: true symbol_type: FUNCTION - crc: 0xdbca68a7 + crc: 0xd15d098c type_id: 0x94e69702 full_name: "dw_pcie_setup_rc" } @@ -339608,7 +339731,7 @@ elf_symbol { name: "edac_device_add_device" is_defined: true symbol_type: FUNCTION - crc: 0x98482284 + crc: 0x4e6e72af type_id: 0x9f266269 full_name: "edac_device_add_device" } @@ -339617,7 +339740,7 @@ elf_symbol { name: "edac_device_alloc_ctl_info" is_defined: true symbol_type: FUNCTION - crc: 0x8ebd2860 + crc: 0xf307f9c3 type_id: 0xda32c714 full_name: "edac_device_alloc_ctl_info" } @@ -339635,7 +339758,7 @@ elf_symbol { name: "edac_device_del_device" is_defined: true symbol_type: FUNCTION - crc: 0x6e37e087 + crc: 0xfc2837cf type_id: 0xcbc6cc7a full_name: "edac_device_del_device" } @@ -339644,7 +339767,7 @@ elf_symbol { name: "edac_device_free_ctl_info" is_defined: true symbol_type: FUNCTION - crc: 0x4aa7cb05 + crc: 0xac020e89 type_id: 0x123ed0d5 full_name: "edac_device_free_ctl_info" } @@ -339653,7 +339776,7 @@ elf_symbol { name: "edac_device_handle_ce_count" is_defined: true symbol_type: FUNCTION - crc: 0x922b45de + crc: 0xe31fff47 type_id: 0x13309e7e full_name: "edac_device_handle_ce_count" } @@ -339662,7 +339785,7 @@ elf_symbol { name: "edac_device_handle_ue_count" is_defined: true symbol_type: FUNCTION - crc: 0x45c9c835 + crc: 0x0c40faa6 type_id: 0x13309e7e full_name: "edac_device_handle_ue_count" } @@ -339707,7 +339830,7 @@ elf_symbol { name: "eth_commit_mac_addr_change" is_defined: true symbol_type: FUNCTION - crc: 0xd1b31371 + crc: 0x9fec4050 type_id: 0x1c532cf2 full_name: "eth_commit_mac_addr_change" } @@ -339716,7 +339839,7 @@ elf_symbol { name: "eth_header_parse" is_defined: true symbol_type: FUNCTION - crc: 0x95d665eb + crc: 0x3c5e6d4e type_id: 0x926fc724 full_name: "eth_header_parse" } @@ -339725,7 +339848,7 @@ elf_symbol { name: "eth_mac_addr" is_defined: true symbol_type: FUNCTION - crc: 0x2bb9a375 + crc: 0xce7a37f6 type_id: 0x914b9e4e full_name: "eth_mac_addr" } @@ -339734,7 +339857,7 @@ elf_symbol { name: "eth_prepare_mac_addr_change" is_defined: true symbol_type: FUNCTION - crc: 0xa4afa8f7 + crc: 0x2e935fa0 type_id: 0x914b9e4e full_name: "eth_prepare_mac_addr_change" } @@ -339743,7 +339866,7 @@ elf_symbol { name: "eth_type_trans" is_defined: true symbol_type: FUNCTION - crc: 0xef67480b + crc: 0xdb415b67 type_id: 0xe323faf8 full_name: "eth_type_trans" } @@ -339752,7 +339875,7 @@ elf_symbol { name: "eth_validate_addr" is_defined: true symbol_type: FUNCTION - crc: 0x3b0568f6 + crc: 0x35f2ebd9 type_id: 0x91296bda full_name: "eth_validate_addr" } @@ -339761,7 +339884,7 @@ elf_symbol { name: "ether_setup" is_defined: true symbol_type: FUNCTION - crc: 0x17fcc93c + crc: 0x56f67b83 type_id: 0x1c31d966 full_name: "ether_setup" } @@ -339770,7 +339893,7 @@ elf_symbol { name: "ethnl_cable_test_fault_length" is_defined: true symbol_type: FUNCTION - crc: 0xe070d6e6 + crc: 0x2194d1cd type_id: 0x914a78cc full_name: "ethnl_cable_test_fault_length" } @@ -339779,7 +339902,7 @@ elf_symbol { name: "ethnl_cable_test_result" is_defined: true symbol_type: FUNCTION - crc: 0x88f5d1c3 + crc: 0x624b74b9 type_id: 0x91726dda full_name: "ethnl_cable_test_result" } @@ -339806,7 +339929,7 @@ elf_symbol { name: "ethtool_op_get_link" is_defined: true symbol_type: FUNCTION - crc: 0x86081e13 + crc: 0xbe3682f9 type_id: 0x4951a397 full_name: "ethtool_op_get_link" } @@ -339815,7 +339938,7 @@ elf_symbol { name: "ethtool_op_get_ts_info" is_defined: true symbol_type: FUNCTION - crc: 0xb1d6ac43 + crc: 0xa5cb63fa type_id: 0x916bd4e5 full_name: "ethtool_op_get_ts_info" } @@ -339833,7 +339956,7 @@ elf_symbol { name: "ethtool_virtdev_set_link_ksettings" is_defined: true symbol_type: FUNCTION - crc: 0x7e689a06 + crc: 0xf0a47d12 type_id: 0x91c2a80b full_name: "ethtool_virtdev_set_link_ksettings" } @@ -339842,7 +339965,7 @@ elf_symbol { name: "event_triggers_call" is_defined: true symbol_type: FUNCTION - crc: 0xbb6b17e6 + crc: 0x9cee86d9 type_id: 0xeaf38011 full_name: "event_triggers_call" } @@ -339860,7 +339983,7 @@ elf_symbol { name: "eventfd_ctx_fileget" is_defined: true symbol_type: FUNCTION - crc: 0x0d2e85e9 + crc: 0x409cf9fa type_id: 0x90e5f66b full_name: "eventfd_ctx_fileget" } @@ -339896,7 +340019,7 @@ elf_symbol { name: "extcon_get_edev_by_phandle" is_defined: true symbol_type: FUNCTION - crc: 0x256ae2df + crc: 0xec524184 type_id: 0x0e2b9889 full_name: "extcon_get_edev_by_phandle" } @@ -339905,7 +340028,7 @@ elf_symbol { name: "extcon_get_edev_name" is_defined: true symbol_type: FUNCTION - crc: 0x3c08bd0b + crc: 0x9e996513 type_id: 0x964692d8 full_name: "extcon_get_edev_name" } @@ -339914,7 +340037,7 @@ elf_symbol { name: "extcon_get_extcon_dev" is_defined: true symbol_type: FUNCTION - crc: 0xac59463b + crc: 0xbe4ca602 type_id: 0x00a508d8 full_name: "extcon_get_extcon_dev" } @@ -339923,7 +340046,7 @@ elf_symbol { name: "extcon_get_property" is_defined: true symbol_type: FUNCTION - crc: 0xb4a4eac4 + crc: 0x436d22b0 type_id: 0x98853e56 full_name: "extcon_get_property" } @@ -339932,7 +340055,7 @@ elf_symbol { name: "extcon_get_state" is_defined: true symbol_type: FUNCTION - crc: 0xae324c70 + crc: 0x9b2a2b3b type_id: 0x989473cc full_name: "extcon_get_state" } @@ -339941,7 +340064,7 @@ elf_symbol { name: "extcon_register_notifier" is_defined: true symbol_type: FUNCTION - crc: 0xffe91233 + crc: 0x93e49298 type_id: 0x98929e65 full_name: "extcon_register_notifier" } @@ -339950,7 +340073,7 @@ elf_symbol { name: "extcon_set_property" is_defined: true symbol_type: FUNCTION - crc: 0x7110f0d2 + crc: 0x039c41dd type_id: 0x98850898 full_name: "extcon_set_property" } @@ -339959,7 +340082,7 @@ elf_symbol { name: "extcon_set_property_capability" is_defined: true symbol_type: FUNCTION - crc: 0x04cc2586 + crc: 0x3d219f95 type_id: 0x98851295 full_name: "extcon_set_property_capability" } @@ -339968,7 +340091,7 @@ elf_symbol { name: "extcon_set_state" is_defined: true symbol_type: FUNCTION - crc: 0x300eeffc + crc: 0xc0e56b3e type_id: 0x988f2c1b full_name: "extcon_set_state" } @@ -339977,7 +340100,7 @@ elf_symbol { name: "extcon_set_state_sync" is_defined: true symbol_type: FUNCTION - crc: 0xdab93c20 + crc: 0xa2718eba type_id: 0x988f2c1b full_name: "extcon_set_state_sync" } @@ -339986,7 +340109,7 @@ elf_symbol { name: "extcon_unregister_notifier" is_defined: true symbol_type: FUNCTION - crc: 0x9c4d5211 + crc: 0x31c86985 type_id: 0x98929e65 full_name: "extcon_unregister_notifier" } @@ -339995,7 +340118,7 @@ elf_symbol { name: "fasync_helper" is_defined: true symbol_type: FUNCTION - crc: 0x0648f89a + crc: 0x5a87d7aa type_id: 0x8432b9df full_name: "fasync_helper" } @@ -340004,7 +340127,7 @@ elf_symbol { name: "fd_install" is_defined: true symbol_type: FUNCTION - crc: 0xa6738464 + crc: 0x3cd507b5 type_id: 0x019aa1b7 full_name: "fd_install" } @@ -340013,7 +340136,7 @@ elf_symbol { name: "fget" is_defined: true symbol_type: FUNCTION - crc: 0x09015258 + crc: 0x4aee7fb9 type_id: 0x50f3b181 full_name: "fget" } @@ -340022,7 +340145,7 @@ elf_symbol { name: "file_ra_state_init" is_defined: true symbol_type: FUNCTION - crc: 0x6c92a148 + crc: 0x2aca661a type_id: 0x14609640 full_name: "file_ra_state_init" } @@ -340031,7 +340154,7 @@ elf_symbol { name: "file_write_and_wait_range" is_defined: true symbol_type: FUNCTION - crc: 0x819014a9 + crc: 0x82f507b8 type_id: 0x9b2d0f7e full_name: "file_write_and_wait_range" } @@ -340040,7 +340163,7 @@ elf_symbol { name: "filp_close" is_defined: true symbol_type: FUNCTION - crc: 0xa9806cb9 + crc: 0x9a948336 type_id: 0x99853e95 full_name: "filp_close" } @@ -340049,7 +340172,7 @@ elf_symbol { name: "find_extend_vma" is_defined: true symbol_type: FUNCTION - crc: 0x254409af + crc: 0xe5afe819 type_id: 0x93eb75f8 full_name: "find_extend_vma" } @@ -340058,7 +340181,7 @@ elf_symbol { name: "find_get_pid" is_defined: true symbol_type: FUNCTION - crc: 0x7588a36c + crc: 0xf5e4d5df type_id: 0x3a251008 full_name: "find_get_pid" } @@ -340067,7 +340190,7 @@ elf_symbol { name: "find_pid_ns" is_defined: true symbol_type: FUNCTION - crc: 0xa867cf29 + crc: 0x426a6a15 type_id: 0x31ab6254 full_name: "find_pid_ns" } @@ -340076,7 +340199,7 @@ elf_symbol { name: "find_task_by_vpid" is_defined: true symbol_type: FUNCTION - crc: 0xe2239f08 + crc: 0x79e905f9 type_id: 0x69238486 full_name: "find_task_by_vpid" } @@ -340085,7 +340208,7 @@ elf_symbol { name: "find_vma" is_defined: true symbol_type: FUNCTION - crc: 0xe97bd498 + crc: 0x95a977e5 type_id: 0x93eb75f8 full_name: "find_vma" } @@ -340094,7 +340217,7 @@ elf_symbol { name: "find_vma_intersection" is_defined: true symbol_type: FUNCTION - crc: 0x85347461 + crc: 0xf69ede89 type_id: 0x93e7a8a1 full_name: "find_vma_intersection" } @@ -340103,7 +340226,7 @@ elf_symbol { name: "find_vpid" is_defined: true symbol_type: FUNCTION - crc: 0x5306656e + crc: 0x009e088a type_id: 0x318306ba full_name: "find_vpid" } @@ -340121,7 +340244,7 @@ elf_symbol { name: "firmware_request_nowarn" is_defined: true symbol_type: FUNCTION - crc: 0x06453cdc + crc: 0xeddf70ee type_id: 0x9cec28b8 full_name: "firmware_request_nowarn" } @@ -340130,7 +340253,7 @@ elf_symbol { name: "fixed_size_llseek" is_defined: true symbol_type: FUNCTION - crc: 0xd40d07ab + crc: 0x525cc7b2 type_id: 0x2d6430a1 full_name: "fixed_size_llseek" } @@ -340139,7 +340262,7 @@ elf_symbol { name: "flow_block_cb_setup_simple" is_defined: true symbol_type: FUNCTION - crc: 0x5e771b27 + crc: 0x2ee340bc type_id: 0x9c25419d full_name: "flow_block_cb_setup_simple" } @@ -340157,7 +340280,7 @@ elf_symbol { name: "flow_rule_match_basic" is_defined: true symbol_type: FUNCTION - crc: 0x794bc26e + crc: 0x8c7ad51c type_id: 0x1de80b22 full_name: "flow_rule_match_basic" } @@ -340166,7 +340289,7 @@ elf_symbol { name: "flow_rule_match_ipv4_addrs" is_defined: true symbol_type: FUNCTION - crc: 0xd5d0f109 + crc: 0x5138433c type_id: 0x1d3f8bd2 full_name: "flow_rule_match_ipv4_addrs" } @@ -340175,7 +340298,7 @@ elf_symbol { name: "flow_rule_match_ports" is_defined: true symbol_type: FUNCTION - crc: 0x9c584501 + crc: 0x217839b5 type_id: 0x1d4e9dab full_name: "flow_rule_match_ports" } @@ -340184,7 +340307,7 @@ elf_symbol { name: "flow_rule_match_vlan" is_defined: true symbol_type: FUNCTION - crc: 0xbf595a68 + crc: 0x3924de79 type_id: 0x1d4435ec full_name: "flow_rule_match_vlan" } @@ -340193,7 +340316,7 @@ elf_symbol { name: "flush_dcache_page" is_defined: true symbol_type: FUNCTION - crc: 0x54b716ab + crc: 0x88475283 type_id: 0x11388634 full_name: "flush_dcache_page" } @@ -340229,7 +340352,7 @@ elf_symbol { name: "folio_wait_bit" is_defined: true symbol_type: FUNCTION - crc: 0x86032749 + crc: 0xb20acc92 type_id: 0x1958e6c4 full_name: "folio_wait_bit" } @@ -340256,7 +340379,7 @@ elf_symbol { name: "fput" is_defined: true symbol_type: FUNCTION - crc: 0xce5acaec + crc: 0xb3a48649 type_id: 0x16a2cb2b full_name: "fput" } @@ -340265,7 +340388,7 @@ elf_symbol { name: "fqdir_exit" is_defined: true symbol_type: FUNCTION - crc: 0x0f6b4fee + crc: 0xabb2e541 type_id: 0x13c2822b full_name: "fqdir_exit" } @@ -340274,7 +340397,7 @@ elf_symbol { name: "fqdir_init" is_defined: true symbol_type: FUNCTION - crc: 0xfb77766a + crc: 0x867006cb type_id: 0x9ffb698d full_name: "fqdir_init" } @@ -340310,7 +340433,7 @@ elf_symbol { name: "free_candev" is_defined: true symbol_type: FUNCTION - crc: 0x12a37fbe + crc: 0x3e3138f5 type_id: 0x1c31d966 full_name: "free_candev" } @@ -340337,7 +340460,7 @@ elf_symbol { name: "free_netdev" is_defined: true symbol_type: FUNCTION - crc: 0x8abe8d73 + crc: 0xabb8a448 type_id: 0x1c31d966 full_name: "free_netdev" } @@ -340391,7 +340514,7 @@ elf_symbol { name: "freezing_slow_path" is_defined: true symbol_type: FUNCTION - crc: 0x194b1976 + crc: 0x5494d80d type_id: 0xf9e23171 full_name: "freezing_slow_path" } @@ -340445,7 +340568,7 @@ elf_symbol { name: "freq_reg_info" is_defined: true symbol_type: FUNCTION - crc: 0xb4e14a0d + crc: 0xab5d189e type_id: 0x69d8682e full_name: "freq_reg_info" } @@ -340454,7 +340577,7 @@ elf_symbol { name: "fs_bio_set" is_defined: true symbol_type: OBJECT - crc: 0x00071532 + crc: 0x44cb267f type_id: 0x200a0749 full_name: "fs_bio_set" } @@ -340463,7 +340586,7 @@ elf_symbol { name: "fsync_bdev" is_defined: true symbol_type: FUNCTION - crc: 0xb879b6cf + crc: 0x95a358ae type_id: 0x9e8b6578 full_name: "fsync_bdev" } @@ -340490,7 +340613,7 @@ elf_symbol { name: "fwnode_find_reference" is_defined: true symbol_type: FUNCTION - crc: 0x306e3610 + crc: 0x0f5c0d16 type_id: 0x360ab09d full_name: "fwnode_find_reference" } @@ -340499,7 +340622,7 @@ elf_symbol { name: "fwnode_get_name" is_defined: true symbol_type: FUNCTION - crc: 0x2c61caa5 + crc: 0x28446aff type_id: 0x9dc10f3e full_name: "fwnode_get_name" } @@ -340508,7 +340631,7 @@ elf_symbol { name: "fwnode_get_named_child_node" is_defined: true symbol_type: FUNCTION - crc: 0x96da07c0 + crc: 0x98ca9d07 type_id: 0x361bd1c4 full_name: "fwnode_get_named_child_node" } @@ -340517,7 +340640,7 @@ elf_symbol { name: "fwnode_get_next_child_node" is_defined: true symbol_type: FUNCTION - crc: 0xa21f14bb + crc: 0x9d2d2fbd type_id: 0x36f1d1fd full_name: "fwnode_get_next_child_node" } @@ -340526,7 +340649,7 @@ elf_symbol { name: "fwnode_gpiod_get_index" is_defined: true symbol_type: FUNCTION - crc: 0x8c05054c + crc: 0x0387defb type_id: 0x5e864c76 full_name: "fwnode_gpiod_get_index" } @@ -340535,7 +340658,7 @@ elf_symbol { name: "fwnode_handle_get" is_defined: true symbol_type: FUNCTION - crc: 0xdee20bf6 + crc: 0x4f7a2cf9 type_id: 0x3842a55f full_name: "fwnode_handle_get" } @@ -340544,7 +340667,7 @@ elf_symbol { name: "fwnode_handle_put" is_defined: true symbol_type: FUNCTION - crc: 0x2320324f + crc: 0x6945b4b6 type_id: 0x11bc7f41 full_name: "fwnode_handle_put" } @@ -340553,7 +340676,7 @@ elf_symbol { name: "fwnode_property_present" is_defined: true symbol_type: FUNCTION - crc: 0x78a6294d + crc: 0x58c37c5a type_id: 0xf1d9014d full_name: "fwnode_property_present" } @@ -340562,7 +340685,7 @@ elf_symbol { name: "fwnode_property_read_string" is_defined: true symbol_type: FUNCTION - crc: 0xfa365027 + crc: 0x16c675b5 type_id: 0x92fcfc63 full_name: "fwnode_property_read_string" } @@ -340571,7 +340694,7 @@ elf_symbol { name: "fwnode_property_read_u32_array" is_defined: true symbol_type: FUNCTION - crc: 0xc7174eca + crc: 0x70a2c8f8 type_id: 0x92f05d3f full_name: "fwnode_property_read_u32_array" } @@ -340580,7 +340703,7 @@ elf_symbol { name: "fwnode_property_read_u8_array" is_defined: true symbol_type: FUNCTION - crc: 0xc8efd96a + crc: 0x11bb9d1b type_id: 0x92fe587a full_name: "fwnode_property_read_u8_array" } @@ -340589,7 +340712,7 @@ elf_symbol { name: "fwnode_usb_role_switch_get" is_defined: true symbol_type: FUNCTION - crc: 0x55bb3d13 + crc: 0xcfaa2036 type_id: 0x84380e6d full_name: "fwnode_usb_role_switch_get" } @@ -340742,7 +340865,7 @@ elf_symbol { name: "generic_device_group" is_defined: true symbol_type: FUNCTION - crc: 0x9b02e67f + crc: 0x4b4238be type_id: 0x7e204efc full_name: "generic_device_group" } @@ -340751,7 +340874,7 @@ elf_symbol { name: "generic_file_llseek" is_defined: true symbol_type: FUNCTION - crc: 0x762c9227 + crc: 0xf817672e type_id: 0x2d64ae3e full_name: "generic_file_llseek" } @@ -340760,7 +340883,7 @@ elf_symbol { name: "generic_file_read_iter" is_defined: true symbol_type: FUNCTION - crc: 0x2e6332f7 + crc: 0xe4dece03 type_id: 0x16637235 full_name: "generic_file_read_iter" } @@ -340769,7 +340892,7 @@ elf_symbol { name: "generic_handle_domain_irq" is_defined: true symbol_type: FUNCTION - crc: 0x15dbc0e4 + crc: 0x236c8b61 type_id: 0x9abe486f full_name: "generic_handle_domain_irq" } @@ -340787,7 +340910,7 @@ elf_symbol { name: "generic_mii_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0x76c59eb1 + crc: 0xedcb02fa type_id: 0x99c885a2 full_name: "generic_mii_ioctl" } @@ -340796,7 +340919,7 @@ elf_symbol { name: "generic_perform_write" is_defined: true symbol_type: FUNCTION - crc: 0xcf7bdfeb + crc: 0xd04c90e5 type_id: 0x16637235 full_name: "generic_perform_write" } @@ -340805,7 +340928,7 @@ elf_symbol { name: "generic_shutdown_super" is_defined: true symbol_type: FUNCTION - crc: 0x435cbc4d + crc: 0xf8a73589 type_id: 0x1923cb99 full_name: "generic_shutdown_super" } @@ -340814,7 +340937,7 @@ elf_symbol { name: "generic_write_checks" is_defined: true symbol_type: FUNCTION - crc: 0x01c8295b + crc: 0xd1c146fc type_id: 0x16637235 full_name: "generic_write_checks" } @@ -340823,7 +340946,7 @@ elf_symbol { name: "geni_icc_disable" is_defined: true symbol_type: FUNCTION - crc: 0x0e9629c0 + crc: 0x83c074de type_id: 0x9a8dcf13 full_name: "geni_icc_disable" } @@ -340832,7 +340955,7 @@ elf_symbol { name: "geni_icc_enable" is_defined: true symbol_type: FUNCTION - crc: 0xec5b3367 + crc: 0xf6a0c717 type_id: 0x9a8dcf13 full_name: "geni_icc_enable" } @@ -340841,7 +340964,7 @@ elf_symbol { name: "geni_icc_get" is_defined: true symbol_type: FUNCTION - crc: 0xf20f6f65 + crc: 0x94242802 type_id: 0x9a758dc7 full_name: "geni_icc_get" } @@ -340850,7 +340973,7 @@ elf_symbol { name: "geni_icc_set_bw" is_defined: true symbol_type: FUNCTION - crc: 0xbaf154e1 + crc: 0xef036222 type_id: 0x9a8dcf13 full_name: "geni_icc_set_bw" } @@ -340859,7 +340982,7 @@ elf_symbol { name: "geni_se_clk_freq_match" is_defined: true symbol_type: FUNCTION - crc: 0xb66873dc + crc: 0xbca364c7 type_id: 0x9a46e4b3 full_name: "geni_se_clk_freq_match" } @@ -340868,7 +340991,7 @@ elf_symbol { name: "geni_se_config_packing" is_defined: true symbol_type: FUNCTION - crc: 0x27004503 + crc: 0xb66c3bfe type_id: 0x161199c0 full_name: "geni_se_config_packing" } @@ -340877,7 +341000,7 @@ elf_symbol { name: "geni_se_get_qup_hw_version" is_defined: true symbol_type: FUNCTION - crc: 0xf823aabd + crc: 0x8f65520b type_id: 0x42f5075e full_name: "geni_se_get_qup_hw_version" } @@ -340886,7 +341009,7 @@ elf_symbol { name: "geni_se_init" is_defined: true symbol_type: FUNCTION - crc: 0xecf91967 + crc: 0x85b53fff type_id: 0x14831f09 full_name: "geni_se_init" } @@ -340895,7 +341018,7 @@ elf_symbol { name: "geni_se_resources_off" is_defined: true symbol_type: FUNCTION - crc: 0x830d46a8 + crc: 0x10a2e9c1 type_id: 0x9a8dcf13 full_name: "geni_se_resources_off" } @@ -340904,7 +341027,7 @@ elf_symbol { name: "geni_se_resources_on" is_defined: true symbol_type: FUNCTION - crc: 0xea66d691 + crc: 0x7df02e52 type_id: 0x9a8dcf13 full_name: "geni_se_resources_on" } @@ -340913,7 +341036,7 @@ elf_symbol { name: "geni_se_rx_dma_prep" is_defined: true symbol_type: FUNCTION - crc: 0x5e54152b + crc: 0x83923657 type_id: 0x9ad2fdb3 full_name: "geni_se_rx_dma_prep" } @@ -340922,7 +341045,7 @@ elf_symbol { name: "geni_se_rx_dma_unprep" is_defined: true symbol_type: FUNCTION - crc: 0xdb60fcc9 + crc: 0xc508f850 type_id: 0x1428c8a6 full_name: "geni_se_rx_dma_unprep" } @@ -340931,7 +341054,7 @@ elf_symbol { name: "geni_se_select_mode" is_defined: true symbol_type: FUNCTION - crc: 0xbb24b5ae + crc: 0x73606cd0 type_id: 0x169ed235 full_name: "geni_se_select_mode" } @@ -340940,7 +341063,7 @@ elf_symbol { name: "geni_se_tx_dma_prep" is_defined: true symbol_type: FUNCTION - crc: 0xdfc4f720 + crc: 0xad66f083 type_id: 0x9ad2fdb3 full_name: "geni_se_tx_dma_prep" } @@ -340949,7 +341072,7 @@ elf_symbol { name: "geni_se_tx_dma_unprep" is_defined: true symbol_type: FUNCTION - crc: 0xf7c8b970 + crc: 0xb4d3caee type_id: 0x1428c8a6 full_name: "geni_se_tx_dma_unprep" } @@ -340958,7 +341081,7 @@ elf_symbol { name: "genl_notify" is_defined: true symbol_type: FUNCTION - crc: 0x80e6c462 + crc: 0x50423085 type_id: 0x1c9aeba3 full_name: "genl_notify" } @@ -340967,7 +341090,7 @@ elf_symbol { name: "genl_register_family" is_defined: true symbol_type: FUNCTION - crc: 0xf22da820 + crc: 0x372099d0 type_id: 0x92d3febd full_name: "genl_register_family" } @@ -340976,7 +341099,7 @@ elf_symbol { name: "genl_unregister_family" is_defined: true symbol_type: FUNCTION - crc: 0x51d41f47 + crc: 0xf4371d86 type_id: 0x91983762 full_name: "genl_unregister_family" } @@ -340985,7 +341108,7 @@ elf_symbol { name: "genlmsg_multicast_allns" is_defined: true symbol_type: FUNCTION - crc: 0x98d2f5d0 + crc: 0x9c5e1a99 type_id: 0x91be62b0 full_name: "genlmsg_multicast_allns" } @@ -340994,7 +341117,7 @@ elf_symbol { name: "genlmsg_put" is_defined: true symbol_type: FUNCTION - crc: 0x6919cbcf + crc: 0x51367111 type_id: 0x54d3d1f1 full_name: "genlmsg_put" } @@ -341003,7 +341126,7 @@ elf_symbol { name: "genphy_read_abilities" is_defined: true symbol_type: FUNCTION - crc: 0x9aba8e74 + crc: 0x5bc69ec5 type_id: 0x91dd4b0e full_name: "genphy_read_abilities" } @@ -341012,7 +341135,7 @@ elf_symbol { name: "genphy_read_lpa" is_defined: true symbol_type: FUNCTION - crc: 0x4ee7e370 + crc: 0xbd9b78a6 type_id: 0x91dd4b0e full_name: "genphy_read_lpa" } @@ -341021,7 +341144,7 @@ elf_symbol { name: "genphy_read_mmd_unsupported" is_defined: true symbol_type: FUNCTION - crc: 0xc3c63117 + crc: 0x9059fcc1 type_id: 0x90659b2d full_name: "genphy_read_mmd_unsupported" } @@ -341030,7 +341153,7 @@ elf_symbol { name: "genphy_read_status" is_defined: true symbol_type: FUNCTION - crc: 0x831c813e + crc: 0x91ffa553 type_id: 0x91dd4b0e full_name: "genphy_read_status" } @@ -341039,7 +341162,7 @@ elf_symbol { name: "genphy_restart_aneg" is_defined: true symbol_type: FUNCTION - crc: 0x17d78b4d + crc: 0x3ece52da type_id: 0x91dd4b0e full_name: "genphy_restart_aneg" } @@ -341048,7 +341171,7 @@ elf_symbol { name: "genphy_resume" is_defined: true symbol_type: FUNCTION - crc: 0x6953cc9f + crc: 0x0bf53dd7 type_id: 0x91dd4b0e full_name: "genphy_resume" } @@ -341057,7 +341180,7 @@ elf_symbol { name: "genphy_soft_reset" is_defined: true symbol_type: FUNCTION - crc: 0xc610d624 + crc: 0x42f4ca7e type_id: 0x91dd4b0e full_name: "genphy_soft_reset" } @@ -341066,7 +341189,7 @@ elf_symbol { name: "genphy_suspend" is_defined: true symbol_type: FUNCTION - crc: 0xe326a2e0 + crc: 0x1b52aecc type_id: 0x91dd4b0e full_name: "genphy_suspend" } @@ -341075,7 +341198,7 @@ elf_symbol { name: "genphy_update_link" is_defined: true symbol_type: FUNCTION - crc: 0xb214af76 + crc: 0xf75f02fd type_id: 0x91dd4b0e full_name: "genphy_update_link" } @@ -341084,7 +341207,7 @@ elf_symbol { name: "genphy_write_mmd_unsupported" is_defined: true symbol_type: FUNCTION - crc: 0xcb8c5ba6 + crc: 0xa780991a type_id: 0x9067de1b full_name: "genphy_write_mmd_unsupported" } @@ -341102,7 +341225,7 @@ elf_symbol { name: "get_cpu_device" is_defined: true symbol_type: FUNCTION - crc: 0x0ea1c372 + crc: 0xf02f2876 type_id: 0xbc4e69b1 full_name: "get_cpu_device" } @@ -341138,7 +341261,7 @@ elf_symbol { name: "get_device" is_defined: true symbol_type: FUNCTION - crc: 0xe066d2a5 + crc: 0x201a6bd8 type_id: 0xadb90e65 full_name: "get_device" } @@ -341147,7 +341270,7 @@ elf_symbol { name: "get_device_system_crosststamp" is_defined: true symbol_type: FUNCTION - crc: 0x005ae62e + crc: 0xf3e27363 type_id: 0x96a1bf82 full_name: "get_device_system_crosststamp" } @@ -341156,7 +341279,7 @@ elf_symbol { name: "get_each_object_track" is_defined: true symbol_type: FUNCTION - crc: 0x15211dc0 + crc: 0xe0416926 namespace: "MINIDUMP" type_id: 0x3a16a200 full_name: "get_each_object_track" @@ -341166,7 +341289,7 @@ elf_symbol { name: "get_governor_parent_kobj" is_defined: true symbol_type: FUNCTION - crc: 0x696ba930 + crc: 0xc08c3b54 type_id: 0x3e5176fa full_name: "get_governor_parent_kobj" } @@ -341175,7 +341298,7 @@ elf_symbol { name: "get_net_ns_by_fd" is_defined: true symbol_type: FUNCTION - crc: 0xd536b05c + crc: 0x8880ecd3 type_id: 0x5102ac9f full_name: "get_net_ns_by_fd" } @@ -341184,7 +341307,7 @@ elf_symbol { name: "get_net_ns_by_pid" is_defined: true symbol_type: FUNCTION - crc: 0x0eed58c0 + crc: 0xd08800c1 type_id: 0x5aa4ba2d full_name: "get_net_ns_by_pid" } @@ -341221,7 +341344,7 @@ elf_symbol { name: "get_pfnblock_flags_mask" is_defined: true symbol_type: FUNCTION - crc: 0x0c685765 + crc: 0xff170736 type_id: 0x3ec9e358 full_name: "get_pfnblock_flags_mask" } @@ -341230,7 +341353,7 @@ elf_symbol { name: "get_pid_task" is_defined: true symbol_type: FUNCTION - crc: 0xf448675c + crc: 0xb1c94690 type_id: 0x7f0f4bf3 full_name: "get_pid_task" } @@ -341293,7 +341416,7 @@ elf_symbol { name: "get_slabinfo" is_defined: true symbol_type: FUNCTION - crc: 0xdd8ce2dd + crc: 0xd8a7841d namespace: "MINIDUMP" type_id: 0x1bc52dc4 full_name: "get_slabinfo" @@ -341321,7 +341444,7 @@ elf_symbol { name: "get_task_mm" is_defined: true symbol_type: FUNCTION - crc: 0x7b2f6a03 + crc: 0xa457d6f0 type_id: 0xf152640a full_name: "get_task_mm" } @@ -341330,7 +341453,7 @@ elf_symbol { name: "get_task_pid" is_defined: true symbol_type: FUNCTION - crc: 0xaa449d87 + crc: 0x56e41e8d type_id: 0x2d5eecc4 full_name: "get_task_pid" } @@ -341339,7 +341462,7 @@ elf_symbol { name: "get_thermal_instance" is_defined: true symbol_type: FUNCTION - crc: 0xa78bd3c1 + crc: 0xf270a723 type_id: 0xb913af05 full_name: "get_thermal_instance" } @@ -341348,7 +341471,7 @@ elf_symbol { name: "get_unmapped_area" is_defined: true symbol_type: FUNCTION - crc: 0x8b510860 + crc: 0xc99f4eef type_id: 0x37579e28 full_name: "get_unmapped_area" } @@ -341375,7 +341498,7 @@ elf_symbol { name: "get_user_pages" is_defined: true symbol_type: FUNCTION - crc: 0x483b2f53 + crc: 0xe8584b18 type_id: 0xab21f8b5 full_name: "get_user_pages" } @@ -341384,7 +341507,7 @@ elf_symbol { name: "get_user_pages_fast" is_defined: true symbol_type: FUNCTION - crc: 0x43656b7e + crc: 0xc5fc8295 type_id: 0x90d074d8 full_name: "get_user_pages_fast" } @@ -341402,7 +341525,7 @@ elf_symbol { name: "get_wiphy_regdom" is_defined: true symbol_type: FUNCTION - crc: 0xde45d045 + crc: 0xf72d2c64 type_id: 0x749f3e5c full_name: "get_wiphy_regdom" } @@ -341474,7 +341597,7 @@ elf_symbol { name: "gov_attr_set_get" is_defined: true symbol_type: FUNCTION - crc: 0x3ae25ebb + crc: 0x34f7f2c8 type_id: 0x1951a486 full_name: "gov_attr_set_get" } @@ -341483,7 +341606,7 @@ elf_symbol { name: "gov_attr_set_init" is_defined: true symbol_type: FUNCTION - crc: 0x87d6b5a0 + crc: 0xbdeef538 type_id: 0x1951a486 full_name: "gov_attr_set_init" } @@ -341492,7 +341615,7 @@ elf_symbol { name: "gov_attr_set_put" is_defined: true symbol_type: FUNCTION - crc: 0xd7b585e8 + crc: 0xdbaf8148 type_id: 0xc7128bee full_name: "gov_attr_set_put" } @@ -341501,7 +341624,7 @@ elf_symbol { name: "gov_update_cpu_data" is_defined: true symbol_type: FUNCTION - crc: 0x977eac7f + crc: 0x1b59d620 type_id: 0x1e80bbd4 full_name: "gov_update_cpu_data" } @@ -341510,7 +341633,7 @@ elf_symbol { name: "governor_sysfs_ops" is_defined: true symbol_type: OBJECT - crc: 0x295d9ca1 + crc: 0x2d5a02dc type_id: 0xe7d52a38 full_name: "governor_sysfs_ops" } @@ -341564,7 +341687,7 @@ elf_symbol { name: "gpio_to_desc" is_defined: true symbol_type: FUNCTION - crc: 0x108d93c1 + crc: 0x8c132b44 type_id: 0x4e221f3c full_name: "gpio_to_desc" } @@ -341573,7 +341696,7 @@ elf_symbol { name: "gpiochip_add_data_with_key" is_defined: true symbol_type: FUNCTION - crc: 0x6aee13c5 + crc: 0x787d90ee type_id: 0x9bdd396a full_name: "gpiochip_add_data_with_key" } @@ -341582,7 +341705,7 @@ elf_symbol { name: "gpiochip_add_pin_range" is_defined: true symbol_type: FUNCTION - crc: 0x8f06d4a4 + crc: 0xc60e9b39 type_id: 0x9b51540b full_name: "gpiochip_add_pin_range" } @@ -341591,7 +341714,7 @@ elf_symbol { name: "gpiochip_disable_irq" is_defined: true symbol_type: FUNCTION - crc: 0x1dba457d + crc: 0x7ef1e829 type_id: 0x17b7d7d6 full_name: "gpiochip_disable_irq" } @@ -341600,7 +341723,7 @@ elf_symbol { name: "gpiochip_enable_irq" is_defined: true symbol_type: FUNCTION - crc: 0x86d09760 + crc: 0x70e145e9 type_id: 0x17b7d7d6 full_name: "gpiochip_enable_irq" } @@ -341609,7 +341732,7 @@ elf_symbol { name: "gpiochip_find" is_defined: true symbol_type: FUNCTION - crc: 0x9cf94177 + crc: 0xca5eade0 type_id: 0x46082d09 full_name: "gpiochip_find" } @@ -341618,7 +341741,7 @@ elf_symbol { name: "gpiochip_generic_config" is_defined: true symbol_type: FUNCTION - crc: 0xff135cbc + crc: 0x9db34dd3 type_id: 0x9aa3b833 full_name: "gpiochip_generic_config" } @@ -341627,7 +341750,7 @@ elf_symbol { name: "gpiochip_generic_free" is_defined: true symbol_type: FUNCTION - crc: 0xe1de10af + crc: 0xa32c4672 type_id: 0x17b7d7d6 full_name: "gpiochip_generic_free" } @@ -341636,7 +341759,7 @@ elf_symbol { name: "gpiochip_generic_request" is_defined: true symbol_type: FUNCTION - crc: 0x9d03646a + crc: 0xa2b734bc type_id: 0x9aaf656a full_name: "gpiochip_generic_request" } @@ -341645,7 +341768,7 @@ elf_symbol { name: "gpiochip_get_data" is_defined: true symbol_type: FUNCTION - crc: 0xe3f09d7c + crc: 0x52c1e2bb type_id: 0x50af222c full_name: "gpiochip_get_data" } @@ -341654,7 +341777,7 @@ elf_symbol { name: "gpiochip_irq_relres" is_defined: true symbol_type: FUNCTION - crc: 0x3ed16ebd + crc: 0x2a5379ee type_id: 0x1247424a full_name: "gpiochip_irq_relres" } @@ -341663,7 +341786,7 @@ elf_symbol { name: "gpiochip_irq_reqres" is_defined: true symbol_type: FUNCTION - crc: 0xbbc269d1 + crc: 0x5c64cdbc type_id: 0x9f5ff0f6 full_name: "gpiochip_irq_reqres" } @@ -341672,7 +341795,7 @@ elf_symbol { name: "gpiochip_line_is_valid" is_defined: true symbol_type: FUNCTION - crc: 0x593073a5 + crc: 0xf0ea4345 type_id: 0xf1f03942 full_name: "gpiochip_line_is_valid" } @@ -341681,7 +341804,7 @@ elf_symbol { name: "gpiochip_lock_as_irq" is_defined: true symbol_type: FUNCTION - crc: 0x67271e60 + crc: 0x89f05da2 type_id: 0x9aaf656a full_name: "gpiochip_lock_as_irq" } @@ -341690,7 +341813,7 @@ elf_symbol { name: "gpiochip_populate_parent_fwspec_fourcell" is_defined: true symbol_type: FUNCTION - crc: 0x794ac220 + crc: 0x6367d914 type_id: 0x9b54e21c full_name: "gpiochip_populate_parent_fwspec_fourcell" } @@ -341699,7 +341822,7 @@ elf_symbol { name: "gpiochip_remove" is_defined: true symbol_type: FUNCTION - crc: 0x24e1a560 + crc: 0x94514ac0 type_id: 0x16a1c24e full_name: "gpiochip_remove" } @@ -341708,7 +341831,7 @@ elf_symbol { name: "gpiochip_unlock_as_irq" is_defined: true symbol_type: FUNCTION - crc: 0x8d96ce0c + crc: 0xed670826 type_id: 0x17b7d7d6 full_name: "gpiochip_unlock_as_irq" } @@ -341717,7 +341840,7 @@ elf_symbol { name: "gpiod_cansleep" is_defined: true symbol_type: FUNCTION - crc: 0xa8cf0e9c + crc: 0x0f4cca5e type_id: 0x901afa25 full_name: "gpiod_cansleep" } @@ -341726,7 +341849,7 @@ elf_symbol { name: "gpiod_count" is_defined: true symbol_type: FUNCTION - crc: 0x999d861e + crc: 0xa8681359 type_id: 0x9dee9fa0 full_name: "gpiod_count" } @@ -341735,7 +341858,7 @@ elf_symbol { name: "gpiod_direction_input" is_defined: true symbol_type: FUNCTION - crc: 0xa3a448bf + crc: 0xbfd5c891 type_id: 0x94d8cba3 full_name: "gpiod_direction_input" } @@ -341744,7 +341867,7 @@ elf_symbol { name: "gpiod_direction_output" is_defined: true symbol_type: FUNCTION - crc: 0x12323db6 + crc: 0xc1e93221 type_id: 0x954448ef full_name: "gpiod_direction_output" } @@ -341753,7 +341876,7 @@ elf_symbol { name: "gpiod_direction_output_raw" is_defined: true symbol_type: FUNCTION - crc: 0xde10d9fd + crc: 0xef7aec95 type_id: 0x954448ef full_name: "gpiod_direction_output_raw" } @@ -341762,7 +341885,7 @@ elf_symbol { name: "gpiod_get" is_defined: true symbol_type: FUNCTION - crc: 0x440bf718 + crc: 0x31c03f92 type_id: 0x5f272d07 full_name: "gpiod_get" } @@ -341771,7 +341894,7 @@ elf_symbol { name: "gpiod_get_optional" is_defined: true symbol_type: FUNCTION - crc: 0x0ccc8e96 + crc: 0xc3010fc6 type_id: 0x5f272d07 full_name: "gpiod_get_optional" } @@ -341780,7 +341903,7 @@ elf_symbol { name: "gpiod_get_raw_value" is_defined: true symbol_type: FUNCTION - crc: 0x91f32993 + crc: 0x30d807bd type_id: 0x901afa25 full_name: "gpiod_get_raw_value" } @@ -341789,7 +341912,7 @@ elf_symbol { name: "gpiod_get_raw_value_cansleep" is_defined: true symbol_type: FUNCTION - crc: 0x04a99c4b + crc: 0xd5275d75 type_id: 0x901afa25 full_name: "gpiod_get_raw_value_cansleep" } @@ -341798,7 +341921,7 @@ elf_symbol { name: "gpiod_get_value" is_defined: true symbol_type: FUNCTION - crc: 0x45c2d4be + crc: 0xba15c8de type_id: 0x901afa25 full_name: "gpiod_get_value" } @@ -341807,7 +341930,7 @@ elf_symbol { name: "gpiod_get_value_cansleep" is_defined: true symbol_type: FUNCTION - crc: 0x94c208fb + crc: 0x01ae7c7a type_id: 0x901afa25 full_name: "gpiod_get_value_cansleep" } @@ -341816,7 +341939,7 @@ elf_symbol { name: "gpiod_is_active_low" is_defined: true symbol_type: FUNCTION - crc: 0x2daa48e5 + crc: 0x0f3a6b0c type_id: 0x901afa25 full_name: "gpiod_is_active_low" } @@ -341825,7 +341948,7 @@ elf_symbol { name: "gpiod_put" is_defined: true symbol_type: FUNCTION - crc: 0x5fb332f2 + crc: 0x1127f9ca type_id: 0x19c0791f full_name: "gpiod_put" } @@ -341834,7 +341957,7 @@ elf_symbol { name: "gpiod_set_consumer_name" is_defined: true symbol_type: FUNCTION - crc: 0x415040fe + crc: 0x243c2a91 type_id: 0x94208977 full_name: "gpiod_set_consumer_name" } @@ -341843,7 +341966,7 @@ elf_symbol { name: "gpiod_set_debounce" is_defined: true symbol_type: FUNCTION - crc: 0x49e3bf87 + crc: 0x4810f07f type_id: 0x95cede3b full_name: "gpiod_set_debounce" } @@ -341852,7 +341975,7 @@ elf_symbol { name: "gpiod_set_raw_value" is_defined: true symbol_type: FUNCTION - crc: 0xe4611f99 + crc: 0x2bed46f4 type_id: 0x185cfa53 full_name: "gpiod_set_raw_value" } @@ -341861,7 +341984,7 @@ elf_symbol { name: "gpiod_set_raw_value_cansleep" is_defined: true symbol_type: FUNCTION - crc: 0xcda5ed3a + crc: 0x36d67d8d type_id: 0x185cfa53 full_name: "gpiod_set_raw_value_cansleep" } @@ -341870,7 +341993,7 @@ elf_symbol { name: "gpiod_set_value" is_defined: true symbol_type: FUNCTION - crc: 0x39ee594d + crc: 0xa9d75b9b type_id: 0x185cfa53 full_name: "gpiod_set_value" } @@ -341879,7 +342002,7 @@ elf_symbol { name: "gpiod_set_value_cansleep" is_defined: true symbol_type: FUNCTION - crc: 0xbb42a38f + crc: 0x0dd958cd type_id: 0x185cfa53 full_name: "gpiod_set_value_cansleep" } @@ -341888,7 +342011,7 @@ elf_symbol { name: "gpiod_to_chip" is_defined: true symbol_type: FUNCTION - crc: 0xd9f05e6b + crc: 0xeefa9fb0 type_id: 0x4d0cf62c full_name: "gpiod_to_chip" } @@ -341897,7 +342020,7 @@ elf_symbol { name: "gpiod_to_irq" is_defined: true symbol_type: FUNCTION - crc: 0x1df1f674 + crc: 0xe17b13e3 type_id: 0x901afa25 full_name: "gpiod_to_irq" } @@ -341906,7 +342029,7 @@ elf_symbol { name: "gre_add_protocol" is_defined: true symbol_type: FUNCTION - crc: 0xae863690 + crc: 0xce6d609a type_id: 0x92801eb4 full_name: "gre_add_protocol" } @@ -341915,7 +342038,7 @@ elf_symbol { name: "gre_del_protocol" is_defined: true symbol_type: FUNCTION - crc: 0x44445ba1 + crc: 0x7b7a31df type_id: 0x92801eb4 full_name: "gre_del_protocol" } @@ -341933,7 +342056,7 @@ elf_symbol { name: "gro_cells_init" is_defined: true symbol_type: FUNCTION - crc: 0xe40077a7 + crc: 0xa35ccadf type_id: 0x96fd9031 full_name: "gro_cells_init" } @@ -341942,7 +342065,7 @@ elf_symbol { name: "gro_cells_receive" is_defined: true symbol_type: FUNCTION - crc: 0x32d2c6ac + crc: 0xcf6284ef type_id: 0x9622351a full_name: "gro_cells_receive" } @@ -341978,7 +342101,7 @@ elf_symbol { name: "gserial_connect" is_defined: true symbol_type: FUNCTION - crc: 0x851bab15 + crc: 0x10c53ceb type_id: 0x96521268 full_name: "gserial_connect" } @@ -341987,7 +342110,7 @@ elf_symbol { name: "gserial_disconnect" is_defined: true symbol_type: FUNCTION - crc: 0x28b2a088 + crc: 0xde70de70 type_id: 0x1befd11c full_name: "gserial_disconnect" } @@ -342005,7 +342128,7 @@ elf_symbol { name: "gserial_resume" is_defined: true symbol_type: FUNCTION - crc: 0xe5369753 + crc: 0x8d419685 type_id: 0x1befd11c full_name: "gserial_resume" } @@ -342014,7 +342137,7 @@ elf_symbol { name: "gserial_suspend" is_defined: true symbol_type: FUNCTION - crc: 0x45343872 + crc: 0x850ccf65 type_id: 0x1befd11c full_name: "gserial_suspend" } @@ -342032,7 +342155,7 @@ elf_symbol { name: "h4_recv_buf" is_defined: true symbol_type: FUNCTION - crc: 0x230e4bf2 + crc: 0xc083d1ee type_id: 0x6ff47396 full_name: "h4_recv_buf" } @@ -342041,7 +342164,7 @@ elf_symbol { name: "handle_bad_irq" is_defined: true symbol_type: FUNCTION - crc: 0xac07b340 + crc: 0xa09e8b73 type_id: 0x1c4a186e full_name: "handle_bad_irq" } @@ -342050,7 +342173,7 @@ elf_symbol { name: "handle_edge_irq" is_defined: true symbol_type: FUNCTION - crc: 0x7a049007 + crc: 0xdd8e1b6c type_id: 0x1c4a186e full_name: "handle_edge_irq" } @@ -342059,7 +342182,7 @@ elf_symbol { name: "handle_fasteoi_ack_irq" is_defined: true symbol_type: FUNCTION - crc: 0xd8291644 + crc: 0x97792a4f type_id: 0x1c4a186e full_name: "handle_fasteoi_ack_irq" } @@ -342068,7 +342191,7 @@ elf_symbol { name: "handle_fasteoi_irq" is_defined: true symbol_type: FUNCTION - crc: 0xd08fde48 + crc: 0x5c8c0b02 type_id: 0x1c4a186e full_name: "handle_fasteoi_irq" } @@ -342077,7 +342200,7 @@ elf_symbol { name: "handle_level_irq" is_defined: true symbol_type: FUNCTION - crc: 0xfb5754a8 + crc: 0x305c79b8 type_id: 0x1c4a186e full_name: "handle_level_irq" } @@ -342095,7 +342218,7 @@ elf_symbol { name: "handle_simple_irq" is_defined: true symbol_type: FUNCTION - crc: 0x0d5fe187 + crc: 0x81cf0d6d type_id: 0x1c4a186e full_name: "handle_simple_irq" } @@ -342131,7 +342254,7 @@ elf_symbol { name: "hci_alloc_dev_priv" is_defined: true symbol_type: FUNCTION - crc: 0x0d0aaa06 + crc: 0x7327ebdc type_id: 0x9502ce9c full_name: "hci_alloc_dev_priv" } @@ -342140,7 +342263,7 @@ elf_symbol { name: "hci_cmd_sync" is_defined: true symbol_type: FUNCTION - crc: 0x63b51db0 + crc: 0x2ac839f8 type_id: 0x6d996ee0 full_name: "hci_cmd_sync" } @@ -342149,7 +342272,7 @@ elf_symbol { name: "hci_cmd_sync_cancel" is_defined: true symbol_type: FUNCTION - crc: 0xb8523da4 + crc: 0xee0f113d type_id: 0x167427d5 full_name: "hci_cmd_sync_cancel" } @@ -342158,7 +342281,7 @@ elf_symbol { name: "hci_cmd_sync_queue" is_defined: true symbol_type: FUNCTION - crc: 0xca4ae279 + crc: 0xfad88649 type_id: 0x9b91c1d8 full_name: "hci_cmd_sync_queue" } @@ -342167,7 +342290,7 @@ elf_symbol { name: "hci_conn_check_secure" is_defined: true symbol_type: FUNCTION - crc: 0x9e40f037 + crc: 0x90a90837 type_id: 0x958cf238 full_name: "hci_conn_check_secure" } @@ -342176,7 +342299,7 @@ elf_symbol { name: "hci_conn_security" is_defined: true symbol_type: FUNCTION - crc: 0x97a17512 + crc: 0xed172875 type_id: 0x95a1be2b full_name: "hci_conn_security" } @@ -342185,7 +342308,7 @@ elf_symbol { name: "hci_conn_switch_role" is_defined: true symbol_type: FUNCTION - crc: 0xf1303564 + crc: 0x3220f186 type_id: 0x958cf238 full_name: "hci_conn_switch_role" } @@ -342194,7 +342317,7 @@ elf_symbol { name: "hci_free_dev" is_defined: true symbol_type: FUNCTION - crc: 0xff221cd7 + crc: 0xaede44a2 type_id: 0x17e8a499 full_name: "hci_free_dev" } @@ -342203,7 +342326,7 @@ elf_symbol { name: "hci_get_route" is_defined: true symbol_type: FUNCTION - crc: 0x800a027e + crc: 0x9fe21ab5 type_id: 0x8493c696 full_name: "hci_get_route" } @@ -342212,7 +342335,7 @@ elf_symbol { name: "hci_mgmt_chan_register" is_defined: true symbol_type: FUNCTION - crc: 0x6cac926e + crc: 0x82d0be79 type_id: 0x9a299233 full_name: "hci_mgmt_chan_register" } @@ -342221,7 +342344,7 @@ elf_symbol { name: "hci_mgmt_chan_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xbb1e4a1c + crc: 0xb8e267d6 type_id: 0x1731208f full_name: "hci_mgmt_chan_unregister" } @@ -342230,7 +342353,7 @@ elf_symbol { name: "hci_recv_diag" is_defined: true symbol_type: FUNCTION - crc: 0x1a9bd2a9 + crc: 0x5766024c type_id: 0x9ae52b81 full_name: "hci_recv_diag" } @@ -342239,7 +342362,7 @@ elf_symbol { name: "hci_recv_frame" is_defined: true symbol_type: FUNCTION - crc: 0x62ec26fa + crc: 0x962a0e84 type_id: 0x9ae52b81 full_name: "hci_recv_frame" } @@ -342248,7 +342371,7 @@ elf_symbol { name: "hci_register_cb" is_defined: true symbol_type: FUNCTION - crc: 0xab84fbaf + crc: 0xbb8d2d96 type_id: 0x9684db0e full_name: "hci_register_cb" } @@ -342257,7 +342380,7 @@ elf_symbol { name: "hci_register_dev" is_defined: true symbol_type: FUNCTION - crc: 0x7f28213c + crc: 0x69a26227 type_id: 0x9af01625 full_name: "hci_register_dev" } @@ -342266,7 +342389,7 @@ elf_symbol { name: "hci_release_dev" is_defined: true symbol_type: FUNCTION - crc: 0x10a8d2e3 + crc: 0x832cf3f2 type_id: 0x17e8a499 full_name: "hci_release_dev" } @@ -342275,7 +342398,7 @@ elf_symbol { name: "hci_reset_dev" is_defined: true symbol_type: FUNCTION - crc: 0xdad113e1 + crc: 0xc28320d8 type_id: 0x9af01625 full_name: "hci_reset_dev" } @@ -342284,7 +342407,7 @@ elf_symbol { name: "hci_resume_dev" is_defined: true symbol_type: FUNCTION - crc: 0x6960b467 + crc: 0x35a616fc type_id: 0x9af01625 full_name: "hci_resume_dev" } @@ -342293,7 +342416,7 @@ elf_symbol { name: "hci_set_fw_info" is_defined: true symbol_type: FUNCTION - crc: 0x65c9d50a + crc: 0xed4b1567 type_id: 0x1739accf full_name: "hci_set_fw_info" } @@ -342302,7 +342425,7 @@ elf_symbol { name: "hci_set_hw_info" is_defined: true symbol_type: FUNCTION - crc: 0xc765a762 + crc: 0x2700f15c type_id: 0x1739accf full_name: "hci_set_hw_info" } @@ -342311,7 +342434,7 @@ elf_symbol { name: "hci_suspend_dev" is_defined: true symbol_type: FUNCTION - crc: 0xb45c1d82 + crc: 0xebd0090d type_id: 0x9af01625 full_name: "hci_suspend_dev" } @@ -342320,7 +342443,7 @@ elf_symbol { name: "hci_uart_register_device" is_defined: true symbol_type: FUNCTION - crc: 0x0601fcb2 + crc: 0x7deb0737 type_id: 0x959a93b5 full_name: "hci_uart_register_device" } @@ -342329,7 +342452,7 @@ elf_symbol { name: "hci_uart_tx_wakeup" is_defined: true symbol_type: FUNCTION - crc: 0xbcbae563 + crc: 0x65709eb5 type_id: 0x9553fb18 full_name: "hci_uart_tx_wakeup" } @@ -342338,7 +342461,7 @@ elf_symbol { name: "hci_uart_unregister_device" is_defined: true symbol_type: FUNCTION - crc: 0x470a2e05 + crc: 0x875245f3 type_id: 0x184b49a4 full_name: "hci_uart_unregister_device" } @@ -342347,7 +342470,7 @@ elf_symbol { name: "hci_unregister_cb" is_defined: true symbol_type: FUNCTION - crc: 0x5ea74258 + crc: 0xdc3cbf23 type_id: 0x9684db0e full_name: "hci_unregister_cb" } @@ -342356,7 +342479,7 @@ elf_symbol { name: "hci_unregister_dev" is_defined: true symbol_type: FUNCTION - crc: 0x91b2f46a + crc: 0x16415c65 type_id: 0x17e8a499 full_name: "hci_unregister_dev" } @@ -342428,7 +342551,7 @@ elf_symbol { name: "hid_add_device" is_defined: true symbol_type: FUNCTION - crc: 0xb036ebc7 + crc: 0x0d275d4f type_id: 0x9ef9d283 full_name: "hid_add_device" } @@ -342437,7 +342560,7 @@ elf_symbol { name: "hid_allocate_device" is_defined: true symbol_type: FUNCTION - crc: 0x13704f6a + crc: 0x7c27c6df type_id: 0x98aacbd0 full_name: "hid_allocate_device" } @@ -342446,7 +342569,7 @@ elf_symbol { name: "hid_destroy_device" is_defined: true symbol_type: FUNCTION - crc: 0xcfb03e97 + crc: 0xe1ffb603 type_id: 0x13e1603f full_name: "hid_destroy_device" } @@ -342455,7 +342578,7 @@ elf_symbol { name: "hid_ignore" is_defined: true symbol_type: FUNCTION - crc: 0xd720796c + crc: 0x0504a687 type_id: 0xfddd6aa8 full_name: "hid_ignore" } @@ -342464,7 +342587,7 @@ elf_symbol { name: "hid_input_report" is_defined: true symbol_type: FUNCTION - crc: 0xf611d7dc + crc: 0x2fa91b86 type_id: 0x9d13a27c full_name: "hid_input_report" } @@ -342473,7 +342596,7 @@ elf_symbol { name: "hid_parse_report" is_defined: true symbol_type: FUNCTION - crc: 0xa4451351 + crc: 0x0bcd55de type_id: 0x9e711486 full_name: "hid_parse_report" } @@ -342482,7 +342605,7 @@ elf_symbol { name: "hidp_hid_driver" is_defined: true symbol_type: OBJECT - crc: 0x5d9905e2 + crc: 0xdea62991 type_id: 0x2def15e8 full_name: "hidp_hid_driver" } @@ -342554,7 +342677,7 @@ elf_symbol { name: "hrtimer_init_sleeper" is_defined: true symbol_type: FUNCTION - crc: 0x5f8bd1e3 + crc: 0xb3e45015 type_id: 0x14bcf198 full_name: "hrtimer_init_sleeper" } @@ -342563,7 +342686,7 @@ elf_symbol { name: "hrtimer_sleeper_start_expires" is_defined: true symbol_type: FUNCTION - crc: 0x33db19cc + crc: 0xb82d02ee type_id: 0x14a1954e full_name: "hrtimer_sleeper_start_expires" } @@ -342590,7 +342713,7 @@ elf_symbol { name: "hvc_alloc" is_defined: true symbol_type: FUNCTION - crc: 0xa7c0ea06 + crc: 0xd2f283f3 type_id: 0x055da682 full_name: "hvc_alloc" } @@ -342599,7 +342722,7 @@ elf_symbol { name: "hvc_instantiate" is_defined: true symbol_type: FUNCTION - crc: 0xc126f3cc + crc: 0x2b97c698 type_id: 0x9b1ff8be full_name: "hvc_instantiate" } @@ -342617,7 +342740,7 @@ elf_symbol { name: "hvc_poll" is_defined: true symbol_type: FUNCTION - crc: 0xb5231d1a + crc: 0x0d96a24c type_id: 0x929702b9 full_name: "hvc_poll" } @@ -342626,7 +342749,7 @@ elf_symbol { name: "hvc_remove" is_defined: true symbol_type: FUNCTION - crc: 0x1ab068e5 + crc: 0x94f811e5 type_id: 0x929702b9 full_name: "hvc_remove" } @@ -342653,7 +342776,7 @@ elf_symbol { name: "hwspin_lock_free" is_defined: true symbol_type: FUNCTION - crc: 0xfbc35829 + crc: 0x51b223d8 type_id: 0x9f2e9dbc full_name: "hwspin_lock_free" } @@ -342662,7 +342785,7 @@ elf_symbol { name: "hwspin_lock_request_specific" is_defined: true symbol_type: FUNCTION - crc: 0x7275985c + crc: 0x9ae5951c type_id: 0xd208e2cb full_name: "hwspin_lock_request_specific" } @@ -342671,7 +342794,7 @@ elf_symbol { name: "hypervisor_kobj" is_defined: true symbol_type: OBJECT - crc: 0x9a2eee45 + crc: 0xd2ced5db type_id: 0x23f09c34 full_name: "hypervisor_kobj" } @@ -342680,7 +342803,7 @@ elf_symbol { name: "i2c_adapter_type" is_defined: true symbol_type: OBJECT - crc: 0x01317b42 + crc: 0xb2c75df2 type_id: 0xf292150d full_name: "i2c_adapter_type" } @@ -342689,7 +342812,7 @@ elf_symbol { name: "i2c_add_adapter" is_defined: true symbol_type: FUNCTION - crc: 0x330dd9ad + crc: 0xb3027bdc type_id: 0x94a6b558 full_name: "i2c_add_adapter" } @@ -342698,7 +342821,7 @@ elf_symbol { name: "i2c_add_numbered_adapter" is_defined: true symbol_type: FUNCTION - crc: 0x54fb1263 + crc: 0x27780de8 type_id: 0x94a6b558 full_name: "i2c_add_numbered_adapter" } @@ -342707,7 +342830,7 @@ elf_symbol { name: "i2c_bit_add_numbered_bus" is_defined: true symbol_type: FUNCTION - crc: 0xa1c2e46a + crc: 0x6dcaba8a type_id: 0x94a6b558 full_name: "i2c_bit_add_numbered_bus" } @@ -342716,7 +342839,7 @@ elf_symbol { name: "i2c_bus_type" is_defined: true symbol_type: OBJECT - crc: 0xb1ac1e86 + crc: 0x9d93e0ea type_id: 0x257935aa full_name: "i2c_bus_type" } @@ -342725,7 +342848,7 @@ elf_symbol { name: "i2c_client_type" is_defined: true symbol_type: OBJECT - crc: 0xab510e6a + crc: 0x3b0d9092 type_id: 0xf292150d full_name: "i2c_client_type" } @@ -342734,7 +342857,7 @@ elf_symbol { name: "i2c_del_adapter" is_defined: true symbol_type: FUNCTION - crc: 0x414baa35 + crc: 0x62f9fe71 type_id: 0x19be07e4 full_name: "i2c_del_adapter" } @@ -342743,7 +342866,7 @@ elf_symbol { name: "i2c_del_driver" is_defined: true symbol_type: FUNCTION - crc: 0xa14564b9 + crc: 0xdbd9e8f8 type_id: 0x1c0343dd full_name: "i2c_del_driver" } @@ -342752,7 +342875,7 @@ elf_symbol { name: "i2c_for_each_dev" is_defined: true symbol_type: FUNCTION - crc: 0xeedb45f6 + crc: 0xcfa5aea3 type_id: 0x9b188ead full_name: "i2c_for_each_dev" } @@ -342761,7 +342884,7 @@ elf_symbol { name: "i2c_generic_scl_recovery" is_defined: true symbol_type: FUNCTION - crc: 0x6648dc5d + crc: 0xc91dadfe type_id: 0x94a6b558 full_name: "i2c_generic_scl_recovery" } @@ -342770,7 +342893,7 @@ elf_symbol { name: "i2c_get_adapter" is_defined: true symbol_type: FUNCTION - crc: 0xb82c3315 + crc: 0x4dc65005 type_id: 0x754e9079 full_name: "i2c_get_adapter" } @@ -342779,7 +342902,7 @@ elf_symbol { name: "i2c_get_device_id" is_defined: true symbol_type: FUNCTION - crc: 0x121e8bf5 + crc: 0x5998c55e type_id: 0x91c515b1 full_name: "i2c_get_device_id" } @@ -342797,7 +342920,7 @@ elf_symbol { name: "i2c_match_id" is_defined: true symbol_type: FUNCTION - crc: 0xe68a038f + crc: 0xd1791203 type_id: 0xbd7fe584 full_name: "i2c_match_id" } @@ -342806,7 +342929,7 @@ elf_symbol { name: "i2c_new_ancillary_device" is_defined: true symbol_type: FUNCTION - crc: 0x4d592dc4 + crc: 0xa50c2b62 type_id: 0x80f6512d full_name: "i2c_new_ancillary_device" } @@ -342815,7 +342938,7 @@ elf_symbol { name: "i2c_new_client_device" is_defined: true symbol_type: FUNCTION - crc: 0x2e1a6639 + crc: 0xad19550f type_id: 0x8546debe full_name: "i2c_new_client_device" } @@ -342824,7 +342947,7 @@ elf_symbol { name: "i2c_new_dummy_device" is_defined: true symbol_type: FUNCTION - crc: 0x81085b1c + crc: 0x2c10e113 type_id: 0x87d0b8ed full_name: "i2c_new_dummy_device" } @@ -342833,7 +342956,7 @@ elf_symbol { name: "i2c_new_scanned_device" is_defined: true symbol_type: FUNCTION - crc: 0xdb9de811 + crc: 0xd5793cb8 type_id: 0x85273440 full_name: "i2c_new_scanned_device" } @@ -342842,7 +342965,7 @@ elf_symbol { name: "i2c_parse_fw_timings" is_defined: true symbol_type: FUNCTION - crc: 0x7d989585 + crc: 0xdd1ff1dc type_id: 0x10b9d05d full_name: "i2c_parse_fw_timings" } @@ -342851,7 +342974,7 @@ elf_symbol { name: "i2c_put_adapter" is_defined: true symbol_type: FUNCTION - crc: 0x43f47b7f + crc: 0xeab42a07 type_id: 0x19be07e4 full_name: "i2c_put_adapter" } @@ -342869,7 +342992,7 @@ elf_symbol { name: "i2c_recover_bus" is_defined: true symbol_type: FUNCTION - crc: 0x9b6bd4dd + crc: 0x95b710e8 type_id: 0x94a6b558 full_name: "i2c_recover_bus" } @@ -342878,7 +343001,7 @@ elf_symbol { name: "i2c_register_driver" is_defined: true symbol_type: FUNCTION - crc: 0x79eac231 + crc: 0x25ad3886 type_id: 0x9f80a51b full_name: "i2c_register_driver" } @@ -342887,7 +343010,7 @@ elf_symbol { name: "i2c_smbus_read_byte" is_defined: true symbol_type: FUNCTION - crc: 0x61ac75f1 + crc: 0x30ec11cf type_id: 0x8db808c2 full_name: "i2c_smbus_read_byte" } @@ -342896,7 +343019,7 @@ elf_symbol { name: "i2c_smbus_read_byte_data" is_defined: true symbol_type: FUNCTION - crc: 0xc32afdab + crc: 0x68dfcdaa type_id: 0x8d1d790a full_name: "i2c_smbus_read_byte_data" } @@ -342905,7 +343028,7 @@ elf_symbol { name: "i2c_smbus_read_i2c_block_data" is_defined: true symbol_type: FUNCTION - crc: 0x54deb6c6 + crc: 0x136bf8bf type_id: 0x8d172d0a full_name: "i2c_smbus_read_i2c_block_data" } @@ -342914,7 +343037,7 @@ elf_symbol { name: "i2c_smbus_read_word_data" is_defined: true symbol_type: FUNCTION - crc: 0x028cede5 + crc: 0xad19a8d9 type_id: 0x8d1d790a full_name: "i2c_smbus_read_word_data" } @@ -342923,7 +343046,7 @@ elf_symbol { name: "i2c_smbus_write_byte" is_defined: true symbol_type: FUNCTION - crc: 0x17c74fb6 + crc: 0xb97a0de6 type_id: 0x8d1d790a full_name: "i2c_smbus_write_byte" } @@ -342932,7 +343055,7 @@ elf_symbol { name: "i2c_smbus_write_byte_data" is_defined: true symbol_type: FUNCTION - crc: 0x59912552 + crc: 0xd7c7d888 type_id: 0x8d172e16 full_name: "i2c_smbus_write_byte_data" } @@ -342941,7 +343064,7 @@ elf_symbol { name: "i2c_smbus_write_i2c_block_data" is_defined: true symbol_type: FUNCTION - crc: 0x0dee13c4 + crc: 0x2b3ab5f3 type_id: 0x8d17d210 full_name: "i2c_smbus_write_i2c_block_data" } @@ -342950,7 +343073,7 @@ elf_symbol { name: "i2c_smbus_write_word_data" is_defined: true symbol_type: FUNCTION - crc: 0x67fec27c + crc: 0xb48f8b58 type_id: 0x8d392a65 full_name: "i2c_smbus_write_word_data" } @@ -342959,7 +343082,7 @@ elf_symbol { name: "i2c_smbus_xfer" is_defined: true symbol_type: FUNCTION - crc: 0x40e41545 + crc: 0x86fd7b9b type_id: 0x8a03b82b full_name: "i2c_smbus_xfer" } @@ -342968,7 +343091,7 @@ elf_symbol { name: "i2c_transfer" is_defined: true symbol_type: FUNCTION - crc: 0x604dd20a + crc: 0x49313484 type_id: 0x9480cdfa full_name: "i2c_transfer" } @@ -342977,7 +343100,7 @@ elf_symbol { name: "i2c_transfer_buffer_flags" is_defined: true symbol_type: FUNCTION - crc: 0xbce9900c + crc: 0x09e73e8f type_id: 0x916314a3 full_name: "i2c_transfer_buffer_flags" } @@ -342986,7 +343109,7 @@ elf_symbol { name: "i2c_unregister_device" is_defined: true symbol_type: FUNCTION - crc: 0xc1da23a0 + crc: 0x887992b6 type_id: 0x1c01c960 full_name: "i2c_unregister_device" } @@ -342995,7 +343118,7 @@ elf_symbol { name: "i2c_verify_adapter" is_defined: true symbol_type: FUNCTION - crc: 0x1d3adfe9 + crc: 0xe10cea3f type_id: 0x6c109ae9 full_name: "i2c_verify_adapter" } @@ -343004,7 +343127,7 @@ elf_symbol { name: "i2c_verify_client" is_defined: true symbol_type: FUNCTION - crc: 0xd223b5f7 + crc: 0x49f73f16 type_id: 0x8c25e63e full_name: "i2c_verify_client" } @@ -343013,7 +343136,7 @@ elf_symbol { name: "i3c_device_do_priv_xfers" is_defined: true symbol_type: FUNCTION - crc: 0x1bd9a85a + crc: 0x014aef62 type_id: 0x91e7d0ce full_name: "i3c_device_do_priv_xfers" } @@ -343022,7 +343145,7 @@ elf_symbol { name: "i3c_driver_register_with_owner" is_defined: true symbol_type: FUNCTION - crc: 0xab844325 + crc: 0xf772f567 type_id: 0x952ae349 full_name: "i3c_driver_register_with_owner" } @@ -343031,7 +343154,7 @@ elf_symbol { name: "i3c_driver_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x6689c22a + crc: 0xf2583a5e type_id: 0x181ece84 full_name: "i3c_driver_unregister" } @@ -343040,7 +343163,7 @@ elf_symbol { name: "i3c_generic_ibi_alloc_pool" is_defined: true symbol_type: FUNCTION - crc: 0xb6e1b275 + crc: 0x846cc6a1 type_id: 0xea3d26bb full_name: "i3c_generic_ibi_alloc_pool" } @@ -343058,7 +343181,7 @@ elf_symbol { name: "i3c_generic_ibi_get_free_slot" is_defined: true symbol_type: FUNCTION - crc: 0xb7dc0bb9 + crc: 0x30cd539a type_id: 0x2b7baaf7 full_name: "i3c_generic_ibi_get_free_slot" } @@ -343067,7 +343190,7 @@ elf_symbol { name: "i3c_generic_ibi_recycle_slot" is_defined: true symbol_type: FUNCTION - crc: 0x46e53a54 + crc: 0x6e4cf464 type_id: 0x1b3b60ec full_name: "i3c_generic_ibi_recycle_slot" } @@ -343076,7 +343199,7 @@ elf_symbol { name: "i3c_master_add_i3c_dev_locked" is_defined: true symbol_type: FUNCTION - crc: 0xb45a1770 + crc: 0x4a1ba444 type_id: 0x9d9ed332 full_name: "i3c_master_add_i3c_dev_locked" } @@ -343085,7 +343208,7 @@ elf_symbol { name: "i3c_master_disec_locked" is_defined: true symbol_type: FUNCTION - crc: 0x611fce76 + crc: 0x5d86a754 type_id: 0x9d94842e full_name: "i3c_master_disec_locked" } @@ -343094,7 +343217,7 @@ elf_symbol { name: "i3c_master_do_daa" is_defined: true symbol_type: FUNCTION - crc: 0x718c6150 + crc: 0xdddec792 type_id: 0x9d3ba2fa full_name: "i3c_master_do_daa" } @@ -343103,7 +343226,7 @@ elf_symbol { name: "i3c_master_enec_locked" is_defined: true symbol_type: FUNCTION - crc: 0x2a9c4370 + crc: 0x8b52b94e type_id: 0x9d94842e full_name: "i3c_master_enec_locked" } @@ -343112,7 +343235,7 @@ elf_symbol { name: "i3c_master_entdaa_locked" is_defined: true symbol_type: FUNCTION - crc: 0xea3d6da2 + crc: 0x0558b496 type_id: 0x9d3ba2fa full_name: "i3c_master_entdaa_locked" } @@ -343121,7 +343244,7 @@ elf_symbol { name: "i3c_master_get_free_addr" is_defined: true symbol_type: FUNCTION - crc: 0xf645b481 + crc: 0x253aa52a type_id: 0x9d9ed332 full_name: "i3c_master_get_free_addr" } @@ -343130,7 +343253,7 @@ elf_symbol { name: "i3c_master_queue_ibi" is_defined: true symbol_type: FUNCTION - crc: 0x624d3cfc + crc: 0x7393f6e2 type_id: 0x13015378 full_name: "i3c_master_queue_ibi" } @@ -343139,7 +343262,7 @@ elf_symbol { name: "i3c_master_register" is_defined: true symbol_type: FUNCTION - crc: 0xa2971b02 + crc: 0xaaa327cf type_id: 0x9d3fcc61 full_name: "i3c_master_register" } @@ -343148,7 +343271,7 @@ elf_symbol { name: "i3c_master_set_info" is_defined: true symbol_type: FUNCTION - crc: 0x959c043a + crc: 0x45a5eae8 type_id: 0x9dd914f5 full_name: "i3c_master_set_info" } @@ -343157,7 +343280,7 @@ elf_symbol { name: "i3c_master_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xadcff979 + crc: 0x89616244 type_id: 0x9d3ba2fa full_name: "i3c_master_unregister" } @@ -343166,7 +343289,7 @@ elf_symbol { name: "icc_disable" is_defined: true symbol_type: FUNCTION - crc: 0x9d410da2 + crc: 0x1d2e9f74 type_id: 0x975db23f full_name: "icc_disable" } @@ -343175,7 +343298,7 @@ elf_symbol { name: "icc_enable" is_defined: true symbol_type: FUNCTION - crc: 0xf695f372 + crc: 0xa281bb24 type_id: 0x975db23f full_name: "icc_enable" } @@ -343184,7 +343307,7 @@ elf_symbol { name: "icc_get" is_defined: true symbol_type: FUNCTION - crc: 0x82ec331c + crc: 0x77a6d7bd type_id: 0x2ab7a064 full_name: "icc_get" } @@ -343193,7 +343316,7 @@ elf_symbol { name: "icc_link_create" is_defined: true symbol_type: FUNCTION - crc: 0xf8845c68 + crc: 0x3f9d5e5e type_id: 0x9f89d33b full_name: "icc_link_create" } @@ -343202,7 +343325,7 @@ elf_symbol { name: "icc_node_add" is_defined: true symbol_type: FUNCTION - crc: 0x7ba21d09 + crc: 0x68307575 type_id: 0x13c6ea20 full_name: "icc_node_add" } @@ -343211,7 +343334,7 @@ elf_symbol { name: "icc_node_create" is_defined: true symbol_type: FUNCTION - crc: 0x6aca356c + crc: 0x44ecf75f type_id: 0xa672c2e4 full_name: "icc_node_create" } @@ -343220,7 +343343,7 @@ elf_symbol { name: "icc_nodes_remove" is_defined: true symbol_type: FUNCTION - crc: 0x3ab0568a + crc: 0x72fc79de type_id: 0x91306d97 full_name: "icc_nodes_remove" } @@ -343229,7 +343352,7 @@ elf_symbol { name: "icc_provider_add" is_defined: true symbol_type: FUNCTION - crc: 0x7bdc499b + crc: 0x1a990875 type_id: 0x91306d97 full_name: "icc_provider_add" } @@ -343238,7 +343361,7 @@ elf_symbol { name: "icc_provider_del" is_defined: true symbol_type: FUNCTION - crc: 0xb33dec9a + crc: 0x2c6d8947 type_id: 0x1c28df2b full_name: "icc_provider_del" } @@ -343247,7 +343370,7 @@ elf_symbol { name: "icc_provider_deregister" is_defined: true symbol_type: FUNCTION - crc: 0x640e2e5a + crc: 0x127da7a6 type_id: 0x1c28df2b full_name: "icc_provider_deregister" } @@ -343256,7 +343379,7 @@ elf_symbol { name: "icc_provider_init" is_defined: true symbol_type: FUNCTION - crc: 0xdc029e57 + crc: 0xa368a591 type_id: 0x1c28df2b full_name: "icc_provider_init" } @@ -343265,7 +343388,7 @@ elf_symbol { name: "icc_provider_register" is_defined: true symbol_type: FUNCTION - crc: 0x886e40fd + crc: 0x11e12667 type_id: 0x91306d97 full_name: "icc_provider_register" } @@ -343274,7 +343397,7 @@ elf_symbol { name: "icc_put" is_defined: true symbol_type: FUNCTION - crc: 0xcb331a45 + crc: 0xdcfd5b41 type_id: 0x1a450083 full_name: "icc_put" } @@ -343283,7 +343406,7 @@ elf_symbol { name: "icc_set_bw" is_defined: true symbol_type: FUNCTION - crc: 0xf2d3e4c9 + crc: 0x8c743628 type_id: 0x944bd099 full_name: "icc_set_bw" } @@ -343292,7 +343415,7 @@ elf_symbol { name: "icc_set_tag" is_defined: true symbol_type: FUNCTION - crc: 0xf22774c2 + crc: 0x7eb6b996 type_id: 0x1961202f full_name: "icc_set_tag" } @@ -343301,7 +343424,7 @@ elf_symbol { name: "icc_std_aggregate" is_defined: true symbol_type: FUNCTION - crc: 0x7bed9709 + crc: 0xb83f94b0 type_id: 0x9d001826 full_name: "icc_std_aggregate" } @@ -343310,7 +343433,7 @@ elf_symbol { name: "icc_sync_state" is_defined: true symbol_type: FUNCTION - crc: 0x5538bc7b + crc: 0x6eea330f type_id: 0x100e6fc8 full_name: "icc_sync_state" } @@ -343445,7 +343568,7 @@ elf_symbol { name: "ieee80211_alloc_hw_nm" is_defined: true symbol_type: FUNCTION - crc: 0xedc67f04 + crc: 0x4e3d1baa type_id: 0xd9abb4fc full_name: "ieee80211_alloc_hw_nm" } @@ -343454,7 +343577,7 @@ elf_symbol { name: "ieee80211_amsdu_to_8023s" is_defined: true symbol_type: FUNCTION - crc: 0x0eef0645 + crc: 0x18ee8676 type_id: 0x11b81f43 full_name: "ieee80211_amsdu_to_8023s" } @@ -343463,7 +343586,7 @@ elf_symbol { name: "ieee80211_ap_probereq_get" is_defined: true symbol_type: FUNCTION - crc: 0x923755ac + crc: 0xac619946 type_id: 0x629ea942 full_name: "ieee80211_ap_probereq_get" } @@ -343490,7 +343613,7 @@ elf_symbol { name: "ieee80211_beacon_get_template" is_defined: true symbol_type: FUNCTION - crc: 0xcea76899 + crc: 0x74dbd23a type_id: 0x629d82aa full_name: "ieee80211_beacon_get_template" } @@ -343499,7 +343622,7 @@ elf_symbol { name: "ieee80211_beacon_get_tim" is_defined: true symbol_type: FUNCTION - crc: 0xd8ffe497 + crc: 0xa6c5861d type_id: 0x6295b3fb full_name: "ieee80211_beacon_get_tim" } @@ -343544,7 +343667,7 @@ elf_symbol { name: "ieee80211_calc_rx_airtime" is_defined: true symbol_type: FUNCTION - crc: 0x49523e78 + crc: 0x78d66767 type_id: 0x4f1bbf4c full_name: "ieee80211_calc_rx_airtime" } @@ -343553,7 +343676,7 @@ elf_symbol { name: "ieee80211_calc_tx_airtime" is_defined: true symbol_type: FUNCTION - crc: 0x5865fdfa + crc: 0x40057d2b type_id: 0x4f48f53e full_name: "ieee80211_calc_tx_airtime" } @@ -343643,7 +343766,7 @@ elf_symbol { name: "ieee80211_ctstoself_duration" is_defined: true symbol_type: FUNCTION - crc: 0xadfeba1e + crc: 0x08a1f91b type_id: 0xa571fd8b full_name: "ieee80211_ctstoself_duration" } @@ -343652,7 +343775,7 @@ elf_symbol { name: "ieee80211_ctstoself_get" is_defined: true symbol_type: FUNCTION - crc: 0x2961e3b0 + crc: 0xf98de9ca type_id: 0x1a9559aa full_name: "ieee80211_ctstoself_get" } @@ -343661,7 +343784,7 @@ elf_symbol { name: "ieee80211_data_to_8023_exthdr" is_defined: true symbol_type: FUNCTION - crc: 0x8a95b671 + crc: 0xa540059d type_id: 0x9c1a34cf full_name: "ieee80211_data_to_8023_exthdr" } @@ -343706,7 +343829,7 @@ elf_symbol { name: "ieee80211_find_sta_by_ifaddr" is_defined: true symbol_type: FUNCTION - crc: 0x89815cff + crc: 0x59b09490 type_id: 0x1c4164a5 full_name: "ieee80211_find_sta_by_ifaddr" } @@ -343715,7 +343838,7 @@ elf_symbol { name: "ieee80211_find_sta_by_link_addrs" is_defined: true symbol_type: FUNCTION - crc: 0xd426780c + crc: 0x049148ac type_id: 0x1c410b60 full_name: "ieee80211_find_sta_by_link_addrs" } @@ -343724,7 +343847,7 @@ elf_symbol { name: "ieee80211_free_hw" is_defined: true symbol_type: FUNCTION - crc: 0x548521c0 + crc: 0xb078c937 type_id: 0x1a33dbfe full_name: "ieee80211_free_hw" } @@ -343733,7 +343856,7 @@ elf_symbol { name: "ieee80211_free_txskb" is_defined: true symbol_type: FUNCTION - crc: 0xa911e16a + crc: 0xe620a6ca type_id: 0x1a26e65a full_name: "ieee80211_free_txskb" } @@ -343751,7 +343874,7 @@ elf_symbol { name: "ieee80211_generic_frame_duration" is_defined: true symbol_type: FUNCTION - crc: 0x5906e1ba + crc: 0xd5c065ef type_id: 0xa56777e3 full_name: "ieee80211_generic_frame_duration" } @@ -343769,7 +343892,7 @@ elf_symbol { name: "ieee80211_get_buffered_bc" is_defined: true symbol_type: FUNCTION - crc: 0x5a892a05 + crc: 0x59e45e48 type_id: 0x629ea942 full_name: "ieee80211_get_buffered_bc" } @@ -343778,7 +343901,7 @@ elf_symbol { name: "ieee80211_get_channel_khz" is_defined: true symbol_type: FUNCTION - crc: 0xef914c1e + crc: 0xcf436dc4 type_id: 0xd59a69cd full_name: "ieee80211_get_channel_khz" } @@ -343787,7 +343910,7 @@ elf_symbol { name: "ieee80211_get_fils_discovery_tmpl" is_defined: true symbol_type: FUNCTION - crc: 0x54710a08 + crc: 0x0d044f58 type_id: 0x629ea942 full_name: "ieee80211_get_fils_discovery_tmpl" } @@ -343796,7 +343919,7 @@ elf_symbol { name: "ieee80211_get_hdrlen_from_skb" is_defined: true symbol_type: FUNCTION - crc: 0xf54d1c43 + crc: 0xc0ee110c type_id: 0xc1439b43 full_name: "ieee80211_get_hdrlen_from_skb" } @@ -343823,7 +343946,7 @@ elf_symbol { name: "ieee80211_get_num_supported_channels" is_defined: true symbol_type: FUNCTION - crc: 0x659ffdde + crc: 0xed136e35 type_id: 0xcab7b4f1 full_name: "ieee80211_get_num_supported_channels" } @@ -343850,7 +343973,7 @@ elf_symbol { name: "ieee80211_get_tkip_p2k" is_defined: true symbol_type: FUNCTION - crc: 0x6a1e92a6 + crc: 0x5919a943 type_id: 0x1236c731 full_name: "ieee80211_get_tkip_p2k" } @@ -343868,7 +343991,7 @@ elf_symbol { name: "ieee80211_get_tx_rates" is_defined: true symbol_type: FUNCTION - crc: 0xf89a98e1 + crc: 0x60068d05 type_id: 0x1ad8a57d full_name: "ieee80211_get_tx_rates" } @@ -343877,7 +344000,7 @@ elf_symbol { name: "ieee80211_get_unsol_bcast_probe_resp_tmpl" is_defined: true symbol_type: FUNCTION - crc: 0x81ee52dc + crc: 0xac17ca0c type_id: 0x629ea942 full_name: "ieee80211_get_unsol_bcast_probe_resp_tmpl" } @@ -343940,7 +344063,7 @@ elf_symbol { name: "ieee80211_iter_chan_contexts_atomic" is_defined: true symbol_type: FUNCTION - crc: 0xd6b228be + crc: 0x90fde8f8 type_id: 0x1a053774 full_name: "ieee80211_iter_chan_contexts_atomic" } @@ -343949,7 +344072,7 @@ elf_symbol { name: "ieee80211_iter_keys" is_defined: true symbol_type: FUNCTION - crc: 0xa4a305e4 + crc: 0xf3af4931 type_id: 0x1a9bae75 full_name: "ieee80211_iter_keys" } @@ -343958,7 +344081,7 @@ elf_symbol { name: "ieee80211_iter_keys_rcu" is_defined: true symbol_type: FUNCTION - crc: 0x2f334ced + crc: 0xdd5eaa6b type_id: 0x1a9bae75 full_name: "ieee80211_iter_keys_rcu" } @@ -343967,7 +344090,7 @@ elf_symbol { name: "ieee80211_iterate_active_interfaces_atomic" is_defined: true symbol_type: FUNCTION - crc: 0x6d89212d + crc: 0xaf8e4124 type_id: 0x19145643 full_name: "ieee80211_iterate_active_interfaces_atomic" } @@ -343976,7 +344099,7 @@ elf_symbol { name: "ieee80211_iterate_active_interfaces_mtx" is_defined: true symbol_type: FUNCTION - crc: 0x89be4314 + crc: 0x962373a8 type_id: 0x19145643 full_name: "ieee80211_iterate_active_interfaces_mtx" } @@ -343985,7 +344108,7 @@ elf_symbol { name: "ieee80211_iterate_interfaces" is_defined: true symbol_type: FUNCTION - crc: 0xe7f21c61 + crc: 0xb17ae13f type_id: 0x19145643 full_name: "ieee80211_iterate_interfaces" } @@ -343994,7 +344117,7 @@ elf_symbol { name: "ieee80211_iterate_stations" is_defined: true symbol_type: FUNCTION - crc: 0xf788d7fb + crc: 0x093b4b92 type_id: 0x1a09f36f full_name: "ieee80211_iterate_stations" } @@ -344003,7 +344126,7 @@ elf_symbol { name: "ieee80211_iterate_stations_atomic" is_defined: true symbol_type: FUNCTION - crc: 0x03096f2b + crc: 0x5c36ca84 type_id: 0x1a09f36f full_name: "ieee80211_iterate_stations_atomic" } @@ -344075,7 +344198,7 @@ elf_symbol { name: "ieee80211_next_txq" is_defined: true symbol_type: FUNCTION - crc: 0x026a5495 + crc: 0x8d26a212 type_id: 0xa0c12e79 full_name: "ieee80211_next_txq" } @@ -344084,7 +344207,7 @@ elf_symbol { name: "ieee80211_nullfunc_get" is_defined: true symbol_type: FUNCTION - crc: 0x520db2a8 + crc: 0xee000396 type_id: 0x6286d48b full_name: "ieee80211_nullfunc_get" } @@ -344111,7 +344234,7 @@ elf_symbol { name: "ieee80211_probereq_get" is_defined: true symbol_type: FUNCTION - crc: 0x99b8c494 + crc: 0x28e01b6e type_id: 0x62c598e2 full_name: "ieee80211_probereq_get" } @@ -344120,7 +344243,7 @@ elf_symbol { name: "ieee80211_proberesp_get" is_defined: true symbol_type: FUNCTION - crc: 0xad251641 + crc: 0x80ad426b type_id: 0x629ea942 full_name: "ieee80211_proberesp_get" } @@ -344129,7 +344252,7 @@ elf_symbol { name: "ieee80211_pspoll_get" is_defined: true symbol_type: FUNCTION - crc: 0x76cd1502 + crc: 0xa340cbef type_id: 0x629ea942 full_name: "ieee80211_pspoll_get" } @@ -344138,7 +344261,7 @@ elf_symbol { name: "ieee80211_queue_delayed_work" is_defined: true symbol_type: FUNCTION - crc: 0x5e8f8bc4 + crc: 0x487f79df type_id: 0x1ae453dd full_name: "ieee80211_queue_delayed_work" } @@ -344147,7 +344270,7 @@ elf_symbol { name: "ieee80211_queue_stopped" is_defined: true symbol_type: FUNCTION - crc: 0x4e990732 + crc: 0x56322714 type_id: 0x96b7ea0e full_name: "ieee80211_queue_stopped" } @@ -344156,7 +344279,7 @@ elf_symbol { name: "ieee80211_queue_work" is_defined: true symbol_type: FUNCTION - crc: 0x85d31ab6 + crc: 0x93adfe4e type_id: 0x1a06a79e full_name: "ieee80211_queue_work" } @@ -344165,7 +344288,7 @@ elf_symbol { name: "ieee80211_radar_detected" is_defined: true symbol_type: FUNCTION - crc: 0xaf293f01 + crc: 0x81072c0e type_id: 0x1a33dbfe full_name: "ieee80211_radar_detected" } @@ -344192,7 +344315,7 @@ elf_symbol { name: "ieee80211_rate_control_register" is_defined: true symbol_type: FUNCTION - crc: 0xe944b043 + crc: 0x74ad016d type_id: 0x90f44640 full_name: "ieee80211_rate_control_register" } @@ -344201,7 +344324,7 @@ elf_symbol { name: "ieee80211_rate_control_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x1e7dca4e + crc: 0x2f8051f9 type_id: 0x1decf4fc full_name: "ieee80211_rate_control_unregister" } @@ -344210,7 +344333,7 @@ elf_symbol { name: "ieee80211_ready_on_channel" is_defined: true symbol_type: FUNCTION - crc: 0x4ea39f2b + crc: 0x053f1e45 type_id: 0x1a33dbfe full_name: "ieee80211_ready_on_channel" } @@ -344219,7 +344342,7 @@ elf_symbol { name: "ieee80211_register_hw" is_defined: true symbol_type: FUNCTION - crc: 0xeaf9429e + crc: 0x78df37b0 type_id: 0x972b6942 full_name: "ieee80211_register_hw" } @@ -344228,7 +344351,7 @@ elf_symbol { name: "ieee80211_remain_on_channel_expired" is_defined: true symbol_type: FUNCTION - crc: 0x3b199223 + crc: 0xd5918a87 type_id: 0x1a33dbfe full_name: "ieee80211_remain_on_channel_expired" } @@ -344282,7 +344405,7 @@ elf_symbol { name: "ieee80211_restart_hw" is_defined: true symbol_type: FUNCTION - crc: 0x3670fca3 + crc: 0xecd454c6 type_id: 0x1a33dbfe full_name: "ieee80211_restart_hw" } @@ -344300,7 +344423,7 @@ elf_symbol { name: "ieee80211_rts_duration" is_defined: true symbol_type: FUNCTION - crc: 0x3fd3f621 + crc: 0xf7635dd7 type_id: 0xa571fd8b full_name: "ieee80211_rts_duration" } @@ -344309,7 +344432,7 @@ elf_symbol { name: "ieee80211_rts_get" is_defined: true symbol_type: FUNCTION - crc: 0x09d5b86b + crc: 0xf90cb241 type_id: 0x1a95598b full_name: "ieee80211_rts_get" } @@ -344327,7 +344450,7 @@ elf_symbol { name: "ieee80211_rx_irqsafe" is_defined: true symbol_type: FUNCTION - crc: 0x64774544 + crc: 0x57821b3f type_id: 0x1a26e65a full_name: "ieee80211_rx_irqsafe" } @@ -344336,7 +344459,7 @@ elf_symbol { name: "ieee80211_rx_list" is_defined: true symbol_type: FUNCTION - crc: 0x5b7e8c9e + crc: 0xe5067ac1 type_id: 0x1ac25702 full_name: "ieee80211_rx_list" } @@ -344345,7 +344468,7 @@ elf_symbol { name: "ieee80211_rx_napi" is_defined: true symbol_type: FUNCTION - crc: 0xf9567ad6 + crc: 0x489bf815 type_id: 0x1ac2ce8c full_name: "ieee80211_rx_napi" } @@ -344363,7 +344486,7 @@ elf_symbol { name: "ieee80211_scan_completed" is_defined: true symbol_type: FUNCTION - crc: 0xa0483197 + crc: 0x55e6d122 type_id: 0x1a3baef3 full_name: "ieee80211_scan_completed" } @@ -344372,7 +344495,7 @@ elf_symbol { name: "ieee80211_sched_scan_results" is_defined: true symbol_type: FUNCTION - crc: 0x8dd7e171 + crc: 0x7dcfe5b8 type_id: 0x1a33dbfe full_name: "ieee80211_sched_scan_results" } @@ -344381,7 +344504,7 @@ elf_symbol { name: "ieee80211_sched_scan_stopped" is_defined: true symbol_type: FUNCTION - crc: 0xac60d917 + crc: 0x7e03368c type_id: 0x1a33dbfe full_name: "ieee80211_sched_scan_stopped" } @@ -344435,7 +344558,7 @@ elf_symbol { name: "ieee80211_sta_block_awake" is_defined: true symbol_type: FUNCTION - crc: 0xb02d437a + crc: 0xdb27581e type_id: 0x1ad8a287 full_name: "ieee80211_sta_block_awake" } @@ -344525,7 +344648,7 @@ elf_symbol { name: "ieee80211_stop_queue" is_defined: true symbol_type: FUNCTION - crc: 0xabce9569 + crc: 0xd41e71d9 type_id: 0x1baf58b2 full_name: "ieee80211_stop_queue" } @@ -344534,7 +344657,7 @@ elf_symbol { name: "ieee80211_stop_queues" is_defined: true symbol_type: FUNCTION - crc: 0xe68b6172 + crc: 0x4a1e12e8 type_id: 0x1a33dbfe full_name: "ieee80211_stop_queues" } @@ -344588,7 +344711,7 @@ elf_symbol { name: "ieee80211_tx_dequeue" is_defined: true symbol_type: FUNCTION - crc: 0xbce0853f + crc: 0x696d5bd2 type_id: 0x62838087 full_name: "ieee80211_tx_dequeue" } @@ -344597,7 +344720,7 @@ elf_symbol { name: "ieee80211_tx_prepare_skb" is_defined: true symbol_type: FUNCTION - crc: 0x6ad4fb70 + crc: 0xda89a654 type_id: 0xf4a4055a full_name: "ieee80211_tx_prepare_skb" } @@ -344606,7 +344729,7 @@ elf_symbol { name: "ieee80211_tx_rate_update" is_defined: true symbol_type: FUNCTION - crc: 0x3248a3dd + crc: 0x88cec3c7 type_id: 0x1ac3d490 full_name: "ieee80211_tx_rate_update" } @@ -344615,7 +344738,7 @@ elf_symbol { name: "ieee80211_tx_status" is_defined: true symbol_type: FUNCTION - crc: 0xec2510b3 + crc: 0x0d8d0ae7 type_id: 0x1a26e65a full_name: "ieee80211_tx_status" } @@ -344624,7 +344747,7 @@ elf_symbol { name: "ieee80211_tx_status_8023" is_defined: true symbol_type: FUNCTION - crc: 0x8e26388f + crc: 0xf325c6fc type_id: 0x1a99922a full_name: "ieee80211_tx_status_8023" } @@ -344633,7 +344756,7 @@ elf_symbol { name: "ieee80211_tx_status_ext" is_defined: true symbol_type: FUNCTION - crc: 0x5b898ef5 + crc: 0xfdbcc967 type_id: 0x1af033e5 full_name: "ieee80211_tx_status_ext" } @@ -344642,7 +344765,7 @@ elf_symbol { name: "ieee80211_tx_status_irqsafe" is_defined: true symbol_type: FUNCTION - crc: 0x10fdbdff + crc: 0x6ca83abc type_id: 0x1a26e65a full_name: "ieee80211_tx_status_irqsafe" } @@ -344651,7 +344774,7 @@ elf_symbol { name: "ieee80211_txq_airtime_check" is_defined: true symbol_type: FUNCTION - crc: 0xee3b1f65 + crc: 0x8952bcdf type_id: 0xf4b9e2a2 full_name: "ieee80211_txq_airtime_check" } @@ -344669,7 +344792,7 @@ elf_symbol { name: "ieee80211_txq_may_transmit" is_defined: true symbol_type: FUNCTION - crc: 0x704854e1 + crc: 0x10d26c08 type_id: 0xf4b9e2a2 full_name: "ieee80211_txq_may_transmit" } @@ -344678,7 +344801,7 @@ elf_symbol { name: "ieee80211_txq_schedule_start" is_defined: true symbol_type: FUNCTION - crc: 0x970759d0 + crc: 0x791484f3 type_id: 0x1a96aa36 full_name: "ieee80211_txq_schedule_start" } @@ -344687,7 +344810,7 @@ elf_symbol { name: "ieee80211_unregister_hw" is_defined: true symbol_type: FUNCTION - crc: 0xebbd0b1d + crc: 0x41e6f25b type_id: 0x1a33dbfe full_name: "ieee80211_unregister_hw" } @@ -344723,7 +344846,7 @@ elf_symbol { name: "ieee80211_vif_to_wdev" is_defined: true symbol_type: FUNCTION - crc: 0x81fe3781 + crc: 0xbc9610a8 type_id: 0xabc9bd38 full_name: "ieee80211_vif_to_wdev" } @@ -344732,7 +344855,7 @@ elf_symbol { name: "ieee80211_wake_queue" is_defined: true symbol_type: FUNCTION - crc: 0x25e6df6b + crc: 0x42bb8a44 type_id: 0x1baf58b2 full_name: "ieee80211_wake_queue" } @@ -344741,7 +344864,7 @@ elf_symbol { name: "ieee80211_wake_queues" is_defined: true symbol_type: FUNCTION - crc: 0x498cffd4 + crc: 0x479bf841 type_id: 0x1a33dbfe full_name: "ieee80211_wake_queues" } @@ -344750,7 +344873,7 @@ elf_symbol { name: "ieee802154_alloc_hw" is_defined: true symbol_type: FUNCTION - crc: 0xb87ebb85 + crc: 0xa7109877 type_id: 0x53d7cb1d full_name: "ieee802154_alloc_hw" } @@ -344759,7 +344882,7 @@ elf_symbol { name: "ieee802154_configure_durations" is_defined: true symbol_type: FUNCTION - crc: 0xa9c94151 + crc: 0x8c3dccef type_id: 0x1af18e52 full_name: "ieee802154_configure_durations" } @@ -344768,7 +344891,7 @@ elf_symbol { name: "ieee802154_free_hw" is_defined: true symbol_type: FUNCTION - crc: 0x73949e33 + crc: 0x55ec05cd type_id: 0x12d46025 full_name: "ieee802154_free_hw" } @@ -344777,7 +344900,7 @@ elf_symbol { name: "ieee802154_hdr_peek" is_defined: true symbol_type: FUNCTION - crc: 0x9afb1943 + crc: 0xee59ed1c type_id: 0x92f9a820 full_name: "ieee802154_hdr_peek" } @@ -344786,7 +344909,7 @@ elf_symbol { name: "ieee802154_hdr_peek_addrs" is_defined: true symbol_type: FUNCTION - crc: 0x140fe88f + crc: 0xa447d881 type_id: 0x92f9a820 full_name: "ieee802154_hdr_peek_addrs" } @@ -344795,7 +344918,7 @@ elf_symbol { name: "ieee802154_hdr_pull" is_defined: true symbol_type: FUNCTION - crc: 0x5e7e42fa + crc: 0x0a48ece5 type_id: 0x9c3297de full_name: "ieee802154_hdr_pull" } @@ -344804,7 +344927,7 @@ elf_symbol { name: "ieee802154_hdr_push" is_defined: true symbol_type: FUNCTION - crc: 0xa00b69c4 + crc: 0xab78a47d type_id: 0x9c3297de full_name: "ieee802154_hdr_push" } @@ -344822,7 +344945,7 @@ elf_symbol { name: "ieee802154_register_hw" is_defined: true symbol_type: FUNCTION - crc: 0x72c1a5e1 + crc: 0x1fc02ab2 type_id: 0x9fccd299 full_name: "ieee802154_register_hw" } @@ -344831,7 +344954,7 @@ elf_symbol { name: "ieee802154_rx_irqsafe" is_defined: true symbol_type: FUNCTION - crc: 0x782f198d + crc: 0xa611b806 type_id: 0x12cb0a9d full_name: "ieee802154_rx_irqsafe" } @@ -344840,7 +344963,7 @@ elf_symbol { name: "ieee802154_stop_queue" is_defined: true symbol_type: FUNCTION - crc: 0x7f2a2ec5 + crc: 0x166fa7d5 type_id: 0x12d46025 full_name: "ieee802154_stop_queue" } @@ -344849,7 +344972,7 @@ elf_symbol { name: "ieee802154_unregister_hw" is_defined: true symbol_type: FUNCTION - crc: 0xeb611afd + crc: 0xfbc4ea6d type_id: 0x12d46025 full_name: "ieee802154_unregister_hw" } @@ -344858,7 +344981,7 @@ elf_symbol { name: "ieee802154_wake_queue" is_defined: true symbol_type: FUNCTION - crc: 0x1e51f90c + crc: 0x0647bd0b type_id: 0x12d46025 full_name: "ieee802154_wake_queue" } @@ -344867,7 +344990,7 @@ elf_symbol { name: "ieee802154_xmit_complete" is_defined: true symbol_type: FUNCTION - crc: 0x4a7935eb + crc: 0xe37731d2 type_id: 0x12da0256 full_name: "ieee802154_xmit_complete" } @@ -344876,7 +344999,7 @@ elf_symbol { name: "ieee802154_xmit_error" is_defined: true symbol_type: FUNCTION - crc: 0x99889d31 + crc: 0x27c6d684 type_id: 0x12d895b5 full_name: "ieee802154_xmit_error" } @@ -344885,7 +345008,7 @@ elf_symbol { name: "ieee802154_xmit_hw_error" is_defined: true symbol_type: FUNCTION - crc: 0x9b64aaf4 + crc: 0xc2ae5a7a type_id: 0x12c15d81 full_name: "ieee802154_xmit_hw_error" } @@ -344903,7 +345026,7 @@ elf_symbol { name: "iio_buffer_enabled" is_defined: true symbol_type: FUNCTION - crc: 0x688c449d + crc: 0x0e4f1d30 type_id: 0xf886bca4 full_name: "iio_buffer_enabled" } @@ -344912,7 +345035,7 @@ elf_symbol { name: "iio_buffer_init" is_defined: true symbol_type: FUNCTION - crc: 0xd96b7f46 + crc: 0x4b490ba7 type_id: 0x1b54f3ab full_name: "iio_buffer_init" } @@ -344921,7 +345044,7 @@ elf_symbol { name: "iio_buffer_put" is_defined: true symbol_type: FUNCTION - crc: 0x70f21d1f + crc: 0x6e85014b type_id: 0x1b54f3ab full_name: "iio_buffer_put" } @@ -344930,7 +345053,7 @@ elf_symbol { name: "iio_channel_get" is_defined: true symbol_type: FUNCTION - crc: 0xe8aa0c69 + crc: 0x56495984 type_id: 0xa98cedf4 full_name: "iio_channel_get" } @@ -344939,7 +345062,7 @@ elf_symbol { name: "iio_channel_release" is_defined: true symbol_type: FUNCTION - crc: 0xbcaf4903 + crc: 0x5175a701 type_id: 0x1ef16b9c full_name: "iio_channel_release" } @@ -344948,7 +345071,7 @@ elf_symbol { name: "iio_device_attach_buffer" is_defined: true symbol_type: FUNCTION - crc: 0x9d1b0383 + crc: 0x5108f42b type_id: 0x9b1eceac full_name: "iio_device_attach_buffer" } @@ -344957,7 +345080,7 @@ elf_symbol { name: "iio_device_claim_direct_mode" is_defined: true symbol_type: FUNCTION - crc: 0xc8a3bdbb + crc: 0x2b5443d0 type_id: 0x9ba2048f full_name: "iio_device_claim_direct_mode" } @@ -344966,7 +345089,7 @@ elf_symbol { name: "iio_device_release_direct_mode" is_defined: true symbol_type: FUNCTION - crc: 0x67aab79b + crc: 0x28452f79 type_id: 0x16bab633 full_name: "iio_device_release_direct_mode" } @@ -344975,7 +345098,7 @@ elf_symbol { name: "iio_device_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x9aab88cd + crc: 0x4b830363 type_id: 0x16bab633 full_name: "iio_device_unregister" } @@ -344984,7 +345107,7 @@ elf_symbol { name: "iio_get_channel_type" is_defined: true symbol_type: FUNCTION - crc: 0x7d7fc415 + crc: 0x39c4eb6c type_id: 0x93b5b685 full_name: "iio_get_channel_type" } @@ -344993,7 +345116,7 @@ elf_symbol { name: "iio_push_event" is_defined: true symbol_type: FUNCTION - crc: 0x7be5eb05 + crc: 0x1083440a type_id: 0x99e10ba5 full_name: "iio_push_event" } @@ -345002,7 +345125,7 @@ elf_symbol { name: "iio_push_to_buffers" is_defined: true symbol_type: FUNCTION - crc: 0x44321390 + crc: 0xe9cea651 type_id: 0x9b4678d8 full_name: "iio_push_to_buffers" } @@ -345011,7 +345134,7 @@ elf_symbol { name: "iio_read_channel_processed" is_defined: true symbol_type: FUNCTION - crc: 0x213b1e81 + crc: 0xd7cf4eb2 type_id: 0x93a4b915 full_name: "iio_read_channel_processed" } @@ -345020,7 +345143,7 @@ elf_symbol { name: "iio_write_channel_raw" is_defined: true symbol_type: FUNCTION - crc: 0x26d10ffd + crc: 0x0895f437 type_id: 0x92755a6c full_name: "iio_write_channel_raw" } @@ -345029,7 +345152,7 @@ elf_symbol { name: "import_iovec" is_defined: true symbol_type: FUNCTION - crc: 0xdc488009 + crc: 0x5ff46f8e type_id: 0x0dd33a8c full_name: "import_iovec" } @@ -345083,7 +345206,7 @@ elf_symbol { name: "inc_node_page_state" is_defined: true symbol_type: FUNCTION - crc: 0x3f3ae2a0 + crc: 0xb435050e type_id: 0x11899381 full_name: "inc_node_page_state" } @@ -345092,7 +345215,7 @@ elf_symbol { name: "inc_zone_page_state" is_defined: true symbol_type: FUNCTION - crc: 0x2105d784 + crc: 0xc195eff1 type_id: 0x125f5377 full_name: "inc_zone_page_state" } @@ -345101,7 +345224,7 @@ elf_symbol { name: "inet6_csk_xmit" is_defined: true symbol_type: FUNCTION - crc: 0xe400148e + crc: 0x64e859b7 type_id: 0x9ac293c4 full_name: "inet6_csk_xmit" } @@ -345110,7 +345233,7 @@ elf_symbol { name: "inet6_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0xd00127e7 + crc: 0xa0676236 type_id: 0x9882219f full_name: "inet6_ioctl" } @@ -345119,7 +345242,7 @@ elf_symbol { name: "inet_csk_get_port" is_defined: true symbol_type: FUNCTION - crc: 0xad3d95c3 + crc: 0x5f2b5770 type_id: 0x99f517b1 full_name: "inet_csk_get_port" } @@ -345128,7 +345251,7 @@ elf_symbol { name: "inet_frag_destroy" is_defined: true symbol_type: FUNCTION - crc: 0x4d954d05 + crc: 0x1bb5cd3d type_id: 0x1edcf3e9 full_name: "inet_frag_destroy" } @@ -345137,7 +345260,7 @@ elf_symbol { name: "inet_frag_find" is_defined: true symbol_type: FUNCTION - crc: 0x4395f240 + crc: 0xb3a86cfa type_id: 0x51a0e42b full_name: "inet_frag_find" } @@ -345146,7 +345269,7 @@ elf_symbol { name: "inet_frag_kill" is_defined: true symbol_type: FUNCTION - crc: 0x9fb00175 + crc: 0x38073729 type_id: 0x1edcf3e9 full_name: "inet_frag_kill" } @@ -345155,7 +345278,7 @@ elf_symbol { name: "inet_frag_queue_insert" is_defined: true symbol_type: FUNCTION - crc: 0x5947145a + crc: 0x4c207ded type_id: 0x93c92846 full_name: "inet_frag_queue_insert" } @@ -345164,7 +345287,7 @@ elf_symbol { name: "inet_frag_reasm_finish" is_defined: true symbol_type: FUNCTION - crc: 0xfd79dd08 + crc: 0x2c700f97 type_id: 0x1ece54e9 full_name: "inet_frag_reasm_finish" } @@ -345173,7 +345296,7 @@ elf_symbol { name: "inet_frag_reasm_prepare" is_defined: true symbol_type: FUNCTION - crc: 0x53e53047 + crc: 0xcdfe784d type_id: 0x58c67df5 full_name: "inet_frag_reasm_prepare" } @@ -345182,7 +345305,7 @@ elf_symbol { name: "inet_frags_fini" is_defined: true symbol_type: FUNCTION - crc: 0xbd55f728 + crc: 0x73c2913a type_id: 0x1039da16 full_name: "inet_frags_fini" } @@ -345191,7 +345314,7 @@ elf_symbol { name: "inet_frags_init" is_defined: true symbol_type: FUNCTION - crc: 0x23a3588d + crc: 0xc98f72d7 type_id: 0x9d2168aa full_name: "inet_frags_init" } @@ -345200,7 +345323,7 @@ elf_symbol { name: "inet_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0xaed2917a + crc: 0xf754ca55 type_id: 0x9882219f full_name: "inet_ioctl" } @@ -345209,7 +345332,7 @@ elf_symbol { name: "init_dummy_netdev" is_defined: true symbol_type: FUNCTION - crc: 0x1932a7cc + crc: 0x8eba1e6e type_id: 0x91296bda full_name: "init_dummy_netdev" } @@ -345227,7 +345350,7 @@ elf_symbol { name: "init_net" is_defined: true symbol_type: OBJECT - crc: 0x32c7b8d7 + crc: 0x5fd6d279 type_id: 0x18c93498 full_name: "init_net" } @@ -345245,7 +345368,7 @@ elf_symbol { name: "init_pid_ns" is_defined: true symbol_type: OBJECT - crc: 0xb4090ac3 + crc: 0x7ece8a31 type_id: 0x02240842 full_name: "init_pid_ns" } @@ -345254,7 +345377,7 @@ elf_symbol { name: "init_pseudo" is_defined: true symbol_type: FUNCTION - crc: 0x50fd6b4e + crc: 0xb15b0b84 type_id: 0x5d05d02e full_name: "init_pseudo" } @@ -345272,7 +345395,7 @@ elf_symbol { name: "init_task" is_defined: true symbol_type: OBJECT - crc: 0xb59d6868 + crc: 0x2fb3bd7a type_id: 0x5e2641cb full_name: "init_task" } @@ -345326,7 +345449,7 @@ elf_symbol { name: "input_alloc_absinfo" is_defined: true symbol_type: FUNCTION - crc: 0x700d8608 + crc: 0x64370f47 type_id: 0x1488e3e7 full_name: "input_alloc_absinfo" } @@ -345335,7 +345458,7 @@ elf_symbol { name: "input_allocate_device" is_defined: true symbol_type: FUNCTION - crc: 0x7b5b2b16 + crc: 0x160c56a3 type_id: 0x3d249ff8 full_name: "input_allocate_device" } @@ -345344,7 +345467,7 @@ elf_symbol { name: "input_close_device" is_defined: true symbol_type: FUNCTION - crc: 0x478b6d85 + crc: 0x1aff8695 type_id: 0x1ee8bea7 full_name: "input_close_device" } @@ -345353,7 +345476,7 @@ elf_symbol { name: "input_event" is_defined: true symbol_type: FUNCTION - crc: 0x79dbd20d + crc: 0x99ce92f4 type_id: 0x158e0ba5 full_name: "input_event" } @@ -345362,7 +345485,7 @@ elf_symbol { name: "input_ff_create" is_defined: true symbol_type: FUNCTION - crc: 0x10e1a812 + crc: 0x04491471 type_id: 0x988644c3 full_name: "input_ff_create" } @@ -345371,7 +345494,7 @@ elf_symbol { name: "input_ff_destroy" is_defined: true symbol_type: FUNCTION - crc: 0xd271dcac + crc: 0x96f23b6a type_id: 0x1488e3e7 full_name: "input_ff_destroy" } @@ -345380,7 +345503,7 @@ elf_symbol { name: "input_free_device" is_defined: true symbol_type: FUNCTION - crc: 0x6bd6462f + crc: 0xbe525312 type_id: 0x1488e3e7 full_name: "input_free_device" } @@ -345389,7 +345512,7 @@ elf_symbol { name: "input_mt_assign_slots" is_defined: true symbol_type: FUNCTION - crc: 0x53746b1d + crc: 0xc6e256ca type_id: 0x99d112d9 full_name: "input_mt_assign_slots" } @@ -345398,7 +345521,7 @@ elf_symbol { name: "input_mt_destroy_slots" is_defined: true symbol_type: FUNCTION - crc: 0x3c21a83e + crc: 0x21096766 type_id: 0x1488e3e7 full_name: "input_mt_destroy_slots" } @@ -345407,7 +345530,7 @@ elf_symbol { name: "input_mt_drop_unused" is_defined: true symbol_type: FUNCTION - crc: 0x932f47b9 + crc: 0x25fdaccf type_id: 0x1488e3e7 full_name: "input_mt_drop_unused" } @@ -345416,7 +345539,7 @@ elf_symbol { name: "input_mt_init_slots" is_defined: true symbol_type: FUNCTION - crc: 0x603d2482 + crc: 0xe0573f08 type_id: 0x9897259a full_name: "input_mt_init_slots" } @@ -345425,7 +345548,7 @@ elf_symbol { name: "input_mt_report_finger_count" is_defined: true symbol_type: FUNCTION - crc: 0x96c9f6fd + crc: 0xae5282ab type_id: 0x151460ab full_name: "input_mt_report_finger_count" } @@ -345434,7 +345557,7 @@ elf_symbol { name: "input_mt_report_pointer_emulation" is_defined: true symbol_type: FUNCTION - crc: 0x970e2f35 + crc: 0x3d08e47c type_id: 0x153d1e98 full_name: "input_mt_report_pointer_emulation" } @@ -345443,7 +345566,7 @@ elf_symbol { name: "input_mt_report_slot_state" is_defined: true symbol_type: FUNCTION - crc: 0x1a1072fd + crc: 0xf0c33b56 type_id: 0xfbb9a33f full_name: "input_mt_report_slot_state" } @@ -345452,7 +345575,7 @@ elf_symbol { name: "input_mt_sync_frame" is_defined: true symbol_type: FUNCTION - crc: 0xf9c8191b + crc: 0x7283fcde type_id: 0x1488e3e7 full_name: "input_mt_sync_frame" } @@ -345461,7 +345584,7 @@ elf_symbol { name: "input_open_device" is_defined: true symbol_type: FUNCTION - crc: 0xb2caf7dc + crc: 0x54a188c2 type_id: 0x93f00c1b full_name: "input_open_device" } @@ -345470,7 +345593,7 @@ elf_symbol { name: "input_register_device" is_defined: true symbol_type: FUNCTION - crc: 0x38a29327 + crc: 0x79146be0 type_id: 0x9990515b full_name: "input_register_device" } @@ -345479,7 +345602,7 @@ elf_symbol { name: "input_register_handle" is_defined: true symbol_type: FUNCTION - crc: 0x4fb4ad50 + crc: 0x48027ed8 type_id: 0x93f00c1b full_name: "input_register_handle" } @@ -345488,7 +345611,7 @@ elf_symbol { name: "input_register_handler" is_defined: true symbol_type: FUNCTION - crc: 0x8e5b8486 + crc: 0x84aa429a type_id: 0x9b6acfa5 full_name: "input_register_handler" } @@ -345497,7 +345620,7 @@ elf_symbol { name: "input_set_abs_params" is_defined: true symbol_type: FUNCTION - crc: 0x515a3f1a + crc: 0x2363edd8 type_id: 0x1586ba9c full_name: "input_set_abs_params" } @@ -345506,7 +345629,7 @@ elf_symbol { name: "input_set_capability" is_defined: true symbol_type: FUNCTION - crc: 0xce463a4f + crc: 0x4a23b8e0 type_id: 0x158f9726 full_name: "input_set_capability" } @@ -345515,7 +345638,7 @@ elf_symbol { name: "input_set_timestamp" is_defined: true symbol_type: FUNCTION - crc: 0x3aa4b37c + crc: 0x1f7d3b09 type_id: 0x14cff3f5 full_name: "input_set_timestamp" } @@ -345524,7 +345647,7 @@ elf_symbol { name: "input_unregister_device" is_defined: true symbol_type: FUNCTION - crc: 0xadb71eb0 + crc: 0xd3d37e28 type_id: 0x1488e3e7 full_name: "input_unregister_device" } @@ -345533,7 +345656,7 @@ elf_symbol { name: "input_unregister_handle" is_defined: true symbol_type: FUNCTION - crc: 0xd90fafeb + crc: 0xfaa84b92 type_id: 0x1ee8bea7 full_name: "input_unregister_handle" } @@ -345542,7 +345665,7 @@ elf_symbol { name: "input_unregister_handler" is_defined: true symbol_type: FUNCTION - crc: 0xe4950ea4 + crc: 0xfa00928b type_id: 0x16727d19 full_name: "input_unregister_handler" } @@ -345605,7 +345728,7 @@ elf_symbol { name: "invalidate_mapping_pages" is_defined: true symbol_type: FUNCTION - crc: 0x8932f9cc + crc: 0x3044ffc0 type_id: 0x340d6f59 full_name: "invalidate_mapping_pages" } @@ -345632,7 +345755,7 @@ elf_symbol { name: "iommu_alloc_resv_region" is_defined: true symbol_type: FUNCTION - crc: 0xbfbb55fc + crc: 0x29f31322 type_id: 0x221b39b7 full_name: "iommu_alloc_resv_region" } @@ -345641,7 +345764,7 @@ elf_symbol { name: "iommu_attach_device" is_defined: true symbol_type: FUNCTION - crc: 0x1bfd26a0 + crc: 0xf67a4529 type_id: 0x962ca8b2 full_name: "iommu_attach_device" } @@ -345650,7 +345773,7 @@ elf_symbol { name: "iommu_attach_group" is_defined: true symbol_type: FUNCTION - crc: 0x3260d7ec + crc: 0x96e10cc1 type_id: 0x96000700 full_name: "iommu_attach_group" } @@ -345659,7 +345782,7 @@ elf_symbol { name: "iommu_detach_device" is_defined: true symbol_type: FUNCTION - crc: 0x49160431 + crc: 0xc424656c type_id: 0x1b341a0e full_name: "iommu_detach_device" } @@ -345668,7 +345791,7 @@ elf_symbol { name: "iommu_device_register" is_defined: true symbol_type: FUNCTION - crc: 0xade6c023 + crc: 0x947a1f3d type_id: 0x92c1e3df full_name: "iommu_device_register" } @@ -345677,7 +345800,7 @@ elf_symbol { name: "iommu_device_sysfs_add" is_defined: true symbol_type: FUNCTION - crc: 0xd840b2c7 + crc: 0xfa388a97 type_id: 0x9232e21d full_name: "iommu_device_sysfs_add" } @@ -345686,7 +345809,7 @@ elf_symbol { name: "iommu_device_sysfs_remove" is_defined: true symbol_type: FUNCTION - crc: 0x504f6f82 + crc: 0x667513be type_id: 0x1f227282 full_name: "iommu_device_sysfs_remove" } @@ -345695,7 +345818,7 @@ elf_symbol { name: "iommu_device_unlink" is_defined: true symbol_type: FUNCTION - crc: 0x6211efcb + crc: 0xf72c2c06 type_id: 0x1f2b1167 full_name: "iommu_device_unlink" } @@ -345704,7 +345827,7 @@ elf_symbol { name: "iommu_device_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x8d527c8b + crc: 0x047bc84e type_id: 0x1f227282 full_name: "iommu_device_unregister" } @@ -345713,7 +345836,7 @@ elf_symbol { name: "iommu_dma_get_resv_regions" is_defined: true symbol_type: FUNCTION - crc: 0x3075d342 + crc: 0x120606f4 type_id: 0x10f7e72f full_name: "iommu_dma_get_resv_regions" } @@ -345722,7 +345845,7 @@ elf_symbol { name: "iommu_domain_alloc" is_defined: true symbol_type: FUNCTION - crc: 0xe3d2c4a1 + crc: 0x4f81241b type_id: 0xe717ecff full_name: "iommu_domain_alloc" } @@ -345731,7 +345854,7 @@ elf_symbol { name: "iommu_domain_free" is_defined: true symbol_type: FUNCTION - crc: 0xc56cb036 + crc: 0xaf384f25 type_id: 0x1b3d79eb full_name: "iommu_domain_free" } @@ -345740,7 +345863,7 @@ elf_symbol { name: "iommu_fwspec_add_ids" is_defined: true symbol_type: FUNCTION - crc: 0xf4c0c08d + crc: 0x31a2fe60 type_id: 0x9dec5d8d full_name: "iommu_fwspec_add_ids" } @@ -345749,7 +345872,7 @@ elf_symbol { name: "iommu_fwspec_free" is_defined: true symbol_type: FUNCTION - crc: 0x833b5bf3 + crc: 0x1c6f3445 type_id: 0x100e6fc8 full_name: "iommu_fwspec_free" } @@ -345758,7 +345881,7 @@ elf_symbol { name: "iommu_get_domain_for_dev" is_defined: true symbol_type: FUNCTION - crc: 0x57377fca + crc: 0xc2ece0c0 type_id: 0xe7724f97 full_name: "iommu_get_domain_for_dev" } @@ -345767,7 +345890,7 @@ elf_symbol { name: "iommu_get_msi_cookie" is_defined: true symbol_type: FUNCTION - crc: 0x1417c5dc + crc: 0xb6390026 type_id: 0x95a57304 full_name: "iommu_get_msi_cookie" } @@ -345785,7 +345908,7 @@ elf_symbol { name: "iommu_group_for_each_dev" is_defined: true symbol_type: FUNCTION - crc: 0x0775abd8 + crc: 0xebeb846b type_id: 0x9fb5a087 full_name: "iommu_group_for_each_dev" } @@ -345794,7 +345917,7 @@ elf_symbol { name: "iommu_group_get" is_defined: true symbol_type: FUNCTION - crc: 0x38491b8b + crc: 0x39bee103 type_id: 0x7e204efc full_name: "iommu_group_get" } @@ -345848,7 +345971,7 @@ elf_symbol { name: "iommu_iova_to_phys" is_defined: true symbol_type: FUNCTION - crc: 0x58cedc62 + crc: 0x7ca7e42a type_id: 0x098dcb5d full_name: "iommu_iova_to_phys" } @@ -345857,7 +345980,7 @@ elf_symbol { name: "iommu_map" is_defined: true symbol_type: FUNCTION - crc: 0xb6f5e584 + crc: 0xba461b8d type_id: 0x96c4a3ba full_name: "iommu_map" } @@ -345866,7 +345989,7 @@ elf_symbol { name: "iommu_map_sg" is_defined: true symbol_type: FUNCTION - crc: 0xdd43d888 + crc: 0xcf901539 type_id: 0x1f9c6048 full_name: "iommu_map_sg" } @@ -345875,7 +345998,7 @@ elf_symbol { name: "iommu_present" is_defined: true symbol_type: FUNCTION - crc: 0xbfbf8ca2 + crc: 0x4c8925fc type_id: 0xfe57c637 full_name: "iommu_present" } @@ -345884,7 +346007,7 @@ elf_symbol { name: "iommu_put_resv_regions" is_defined: true symbol_type: FUNCTION - crc: 0x2f9329b6 + crc: 0x6a9c5c62 type_id: 0x10f7e72f full_name: "iommu_put_resv_regions" } @@ -345893,7 +346016,7 @@ elf_symbol { name: "iommu_register_device_fault_handler" is_defined: true symbol_type: FUNCTION - crc: 0xd721ad5f + crc: 0xca42704e type_id: 0x9c0ff674 full_name: "iommu_register_device_fault_handler" } @@ -345902,7 +346025,7 @@ elf_symbol { name: "iommu_report_device_fault" is_defined: true symbol_type: FUNCTION - crc: 0x73a8ac8c + crc: 0xed45718c type_id: 0x9da4bde5 full_name: "iommu_report_device_fault" } @@ -345911,7 +346034,7 @@ elf_symbol { name: "iommu_set_fault_handler" is_defined: true symbol_type: FUNCTION - crc: 0xcf2b9958 + crc: 0x021050d0 type_id: 0x197a8250 full_name: "iommu_set_fault_handler" } @@ -345920,7 +346043,7 @@ elf_symbol { name: "iommu_set_pgtable_quirks" is_defined: true symbol_type: FUNCTION - crc: 0x00fa2146 + crc: 0x68b2aba1 type_id: 0x96e81ec5 full_name: "iommu_set_pgtable_quirks" } @@ -345929,7 +346052,7 @@ elf_symbol { name: "iommu_unmap" is_defined: true symbol_type: FUNCTION - crc: 0x59d14494 + crc: 0x89f100bd type_id: 0x9c6a39e2 full_name: "iommu_unmap" } @@ -345938,7 +346061,7 @@ elf_symbol { name: "iommu_unregister_device_fault_handler" is_defined: true symbol_type: FUNCTION - crc: 0xd2c133f2 + crc: 0xfd7f2e6d type_id: 0x9d16dd74 full_name: "iommu_unregister_device_fault_handler" } @@ -345965,7 +346088,7 @@ elf_symbol { name: "iov_iter_init" is_defined: true symbol_type: FUNCTION - crc: 0x04e6456a + crc: 0x3ca2ebde type_id: 0x1a5debf2 full_name: "iov_iter_init" } @@ -345974,7 +346097,7 @@ elf_symbol { name: "iov_iter_kvec" is_defined: true symbol_type: FUNCTION - crc: 0xf0aaea75 + crc: 0xcc28bc22 type_id: 0x1a5c3241 full_name: "iov_iter_kvec" } @@ -345983,7 +346106,7 @@ elf_symbol { name: "iov_iter_revert" is_defined: true symbol_type: FUNCTION - crc: 0xe75c787d + crc: 0xd262691c type_id: 0x189472bc full_name: "iov_iter_revert" } @@ -345992,7 +346115,7 @@ elf_symbol { name: "ip6_dst_hoplimit" is_defined: true symbol_type: FUNCTION - crc: 0xed8cf37d + crc: 0x144bf665 type_id: 0x99169bf2 full_name: "ip6_dst_hoplimit" } @@ -346001,7 +346124,7 @@ elf_symbol { name: "ip6_local_out" is_defined: true symbol_type: FUNCTION - crc: 0x32927d3e + crc: 0xbbb60207 type_id: 0x9edc3d1c full_name: "ip6_local_out" } @@ -346010,7 +346133,7 @@ elf_symbol { name: "ip6_route_me_harder" is_defined: true symbol_type: FUNCTION - crc: 0xaa396f35 + crc: 0x80201e67 type_id: 0x9edc3d1c full_name: "ip6_route_me_harder" } @@ -346028,7 +346151,7 @@ elf_symbol { name: "ip_local_out" is_defined: true symbol_type: FUNCTION - crc: 0x568bb765 + crc: 0xe7a22357 type_id: 0x9edc3d1c full_name: "ip_local_out" } @@ -346037,7 +346160,7 @@ elf_symbol { name: "ip_mc_join_group" is_defined: true symbol_type: FUNCTION - crc: 0x8b80b344 + crc: 0x8c76b49e type_id: 0x9a03c4d6 full_name: "ip_mc_join_group" } @@ -346046,7 +346169,7 @@ elf_symbol { name: "ip_queue_xmit" is_defined: true symbol_type: FUNCTION - crc: 0xf17f9894 + crc: 0x3d4df9cf type_id: 0x9ac293c4 full_name: "ip_queue_xmit" } @@ -346055,7 +346178,7 @@ elf_symbol { name: "ip_route_me_harder" is_defined: true symbol_type: FUNCTION - crc: 0xb43b77cd + crc: 0x3df61971 type_id: 0x9edd2b09 full_name: "ip_route_me_harder" } @@ -346064,7 +346187,7 @@ elf_symbol { name: "ip_route_output_flow" is_defined: true symbol_type: FUNCTION - crc: 0x98e1891f + crc: 0xb88a85ac type_id: 0x7b5e948b full_name: "ip_route_output_flow" } @@ -346082,7 +346205,7 @@ elf_symbol { name: "ipi_desc_get" is_defined: true symbol_type: FUNCTION - crc: 0x5ec5f6d7 + crc: 0xae87bd22 type_id: 0xac8d9251 full_name: "ipi_desc_get" } @@ -346091,7 +346214,7 @@ elf_symbol { name: "iput" is_defined: true symbol_type: FUNCTION - crc: 0x7864261c + crc: 0x775c2773 type_id: 0x167935b9 full_name: "iput" } @@ -346100,7 +346223,7 @@ elf_symbol { name: "ipv6_dev_find" is_defined: true symbol_type: FUNCTION - crc: 0x94523783 + crc: 0xa4f88942 type_id: 0xffbaa126 full_name: "ipv6_dev_find" } @@ -346118,7 +346241,7 @@ elf_symbol { name: "ipv6_find_hdr" is_defined: true symbol_type: FUNCTION - crc: 0xb00dea8a + crc: 0x05ee6b13 type_id: 0x926eec8b full_name: "ipv6_find_hdr" } @@ -346127,7 +346250,7 @@ elf_symbol { name: "ipv6_skip_exthdr" is_defined: true symbol_type: FUNCTION - crc: 0x68a112f9 + crc: 0x2acbd51f type_id: 0x9384ebd6 full_name: "ipv6_skip_exthdr" } @@ -346136,7 +346259,7 @@ elf_symbol { name: "ipv6_stub" is_defined: true symbol_type: OBJECT - crc: 0x007491ed + crc: 0xfed5b98d type_id: 0x3d278a00 full_name: "ipv6_stub" } @@ -346154,7 +346277,7 @@ elf_symbol { name: "irq_chip_ack_parent" is_defined: true symbol_type: FUNCTION - crc: 0xf9d42b28 + crc: 0x5bf64ce5 type_id: 0x1247424a full_name: "irq_chip_ack_parent" } @@ -346163,7 +346286,7 @@ elf_symbol { name: "irq_chip_disable_parent" is_defined: true symbol_type: FUNCTION - crc: 0x6cde6edf + crc: 0xeef9392d type_id: 0x1247424a full_name: "irq_chip_disable_parent" } @@ -346172,7 +346295,7 @@ elf_symbol { name: "irq_chip_enable_parent" is_defined: true symbol_type: FUNCTION - crc: 0xdc65abfc + crc: 0x85a43857 type_id: 0x1247424a full_name: "irq_chip_enable_parent" } @@ -346181,7 +346304,7 @@ elf_symbol { name: "irq_chip_eoi_parent" is_defined: true symbol_type: FUNCTION - crc: 0xe481bd5c + crc: 0xb9705cf5 type_id: 0x1247424a full_name: "irq_chip_eoi_parent" } @@ -346190,7 +346313,7 @@ elf_symbol { name: "irq_chip_get_parent_state" is_defined: true symbol_type: FUNCTION - crc: 0xd0da2d61 + crc: 0xcaa93301 type_id: 0x9eedf034 full_name: "irq_chip_get_parent_state" } @@ -346199,7 +346322,7 @@ elf_symbol { name: "irq_chip_mask_parent" is_defined: true symbol_type: FUNCTION - crc: 0x654c5a0d + crc: 0xca81c021 type_id: 0x1247424a full_name: "irq_chip_mask_parent" } @@ -346208,7 +346331,7 @@ elf_symbol { name: "irq_chip_retrigger_hierarchy" is_defined: true symbol_type: FUNCTION - crc: 0x1b4e8d05 + crc: 0x792a752c type_id: 0x9f5ff0f6 full_name: "irq_chip_retrigger_hierarchy" } @@ -346217,7 +346340,7 @@ elf_symbol { name: "irq_chip_set_affinity_parent" is_defined: true symbol_type: FUNCTION - crc: 0x8707d6ee + crc: 0xfd4d2210 type_id: 0x9f809421 full_name: "irq_chip_set_affinity_parent" } @@ -346226,7 +346349,7 @@ elf_symbol { name: "irq_chip_set_parent_state" is_defined: true symbol_type: FUNCTION - crc: 0x7d51031e + crc: 0xe1040335 type_id: 0x9ef2dc18 full_name: "irq_chip_set_parent_state" } @@ -346235,7 +346358,7 @@ elf_symbol { name: "irq_chip_set_type_parent" is_defined: true symbol_type: FUNCTION - crc: 0x51c3a986 + crc: 0x01f78db8 type_id: 0x9e49e56e full_name: "irq_chip_set_type_parent" } @@ -346244,7 +346367,7 @@ elf_symbol { name: "irq_chip_set_vcpu_affinity_parent" is_defined: true symbol_type: FUNCTION - crc: 0xb3069d53 + crc: 0x674a1313 type_id: 0x9f3d0562 full_name: "irq_chip_set_vcpu_affinity_parent" } @@ -346253,7 +346376,7 @@ elf_symbol { name: "irq_chip_set_wake_parent" is_defined: true symbol_type: FUNCTION - crc: 0xc6c3fa40 + crc: 0xd37dc3b3 type_id: 0x9e49e56e full_name: "irq_chip_set_wake_parent" } @@ -346262,7 +346385,7 @@ elf_symbol { name: "irq_chip_unmask_parent" is_defined: true symbol_type: FUNCTION - crc: 0x7845e114 + crc: 0x742abd31 type_id: 0x1247424a full_name: "irq_chip_unmask_parent" } @@ -346271,7 +346394,7 @@ elf_symbol { name: "irq_create_fwspec_mapping" is_defined: true symbol_type: FUNCTION - crc: 0xfa942e66 + crc: 0x50abfd09 type_id: 0xce9279fb full_name: "irq_create_fwspec_mapping" } @@ -346280,7 +346403,7 @@ elf_symbol { name: "irq_create_mapping_affinity" is_defined: true symbol_type: FUNCTION - crc: 0x43f83700 + crc: 0xcc5d50e4 type_id: 0xc8743fe5 full_name: "irq_create_mapping_affinity" } @@ -346289,7 +346412,7 @@ elf_symbol { name: "irq_create_of_mapping" is_defined: true symbol_type: FUNCTION - crc: 0x70c02888 + crc: 0x17479774 type_id: 0xcdea9cab full_name: "irq_create_of_mapping" } @@ -346307,7 +346430,7 @@ elf_symbol { name: "irq_do_set_affinity" is_defined: true symbol_type: FUNCTION - crc: 0xd1a1dcea + crc: 0x570d1a19 type_id: 0x9f809421 full_name: "irq_do_set_affinity" } @@ -346316,7 +346439,7 @@ elf_symbol { name: "irq_domain_alloc_irqs_parent" is_defined: true symbol_type: FUNCTION - crc: 0x96201356 + crc: 0x96ab60f1 type_id: 0x9aaf4bc3 full_name: "irq_domain_alloc_irqs_parent" } @@ -346325,7 +346448,7 @@ elf_symbol { name: "irq_domain_create_hierarchy" is_defined: true symbol_type: FUNCTION - crc: 0xd2579cab + crc: 0xbd188c56 type_id: 0x5807e85a full_name: "irq_domain_create_hierarchy" } @@ -346334,7 +346457,7 @@ elf_symbol { name: "irq_domain_disconnect_hierarchy" is_defined: true symbol_type: FUNCTION - crc: 0x1731b8b7 + crc: 0xa487d2a2 type_id: 0x9abe486f full_name: "irq_domain_disconnect_hierarchy" } @@ -346343,7 +346466,7 @@ elf_symbol { name: "irq_domain_free_irqs_common" is_defined: true symbol_type: FUNCTION - crc: 0xdfb60d3c + crc: 0x5be09c0a type_id: 0x17b79b8a full_name: "irq_domain_free_irqs_common" } @@ -346352,7 +346475,7 @@ elf_symbol { name: "irq_domain_free_irqs_parent" is_defined: true symbol_type: FUNCTION - crc: 0x93073575 + crc: 0x83c88b2b type_id: 0x17b79b8a full_name: "irq_domain_free_irqs_parent" } @@ -346361,7 +346484,7 @@ elf_symbol { name: "irq_domain_get_irq_data" is_defined: true symbol_type: FUNCTION - crc: 0x737fe500 + crc: 0x56ae3033 type_id: 0xf6d4f929 full_name: "irq_domain_get_irq_data" } @@ -346370,7 +346493,7 @@ elf_symbol { name: "irq_domain_remove" is_defined: true symbol_type: FUNCTION - crc: 0x82536ad7 + crc: 0xeb247e66 type_id: 0x16b0ef4b full_name: "irq_domain_remove" } @@ -346379,7 +346502,7 @@ elf_symbol { name: "irq_domain_set_hwirq_and_chip" is_defined: true symbol_type: FUNCTION - crc: 0xecd7e8f8 + crc: 0x4138e6b9 type_id: 0x9ab63fbc full_name: "irq_domain_set_hwirq_and_chip" } @@ -346388,7 +346511,7 @@ elf_symbol { name: "irq_domain_set_info" is_defined: true symbol_type: FUNCTION - crc: 0xc8288e51 + crc: 0x4e9e68b7 type_id: 0x17ae8fc5 full_name: "irq_domain_set_info" } @@ -346397,7 +346520,7 @@ elf_symbol { name: "irq_domain_simple_ops" is_defined: true symbol_type: OBJECT - crc: 0x384c6493 + crc: 0x5ac5fe1c type_id: 0xea94bed9 full_name: "irq_domain_simple_ops" } @@ -346406,7 +346529,7 @@ elf_symbol { name: "irq_domain_translate_twocell" is_defined: true symbol_type: FUNCTION - crc: 0x3d4529e5 + crc: 0x08635be3 type_id: 0x9bad311a full_name: "irq_domain_translate_twocell" } @@ -346415,7 +346538,7 @@ elf_symbol { name: "irq_domain_update_bus_token" is_defined: true symbol_type: FUNCTION - crc: 0xccdf6682 + crc: 0x5efd03ff type_id: 0x14e196b0 full_name: "irq_domain_update_bus_token" } @@ -346424,7 +346547,7 @@ elf_symbol { name: "irq_domain_xlate_onecell" is_defined: true symbol_type: FUNCTION - crc: 0xd72b9945 + crc: 0x0ce05081 type_id: 0x9b74c720 full_name: "irq_domain_xlate_onecell" } @@ -346433,7 +346556,7 @@ elf_symbol { name: "irq_domain_xlate_twocell" is_defined: true symbol_type: FUNCTION - crc: 0xec2efd96 + crc: 0x67a44ba1 type_id: 0x9b74c63c full_name: "irq_domain_xlate_twocell" } @@ -346442,7 +346565,7 @@ elf_symbol { name: "irq_find_matching_fwspec" is_defined: true symbol_type: FUNCTION - crc: 0x025b8084 + crc: 0x5dfe2251 type_id: 0x5d304295 full_name: "irq_find_matching_fwspec" } @@ -346451,7 +346574,7 @@ elf_symbol { name: "irq_get_irq_data" is_defined: true symbol_type: FUNCTION - crc: 0x0f2aa9c0 + crc: 0xa63e27dd type_id: 0xe08b0be6 full_name: "irq_get_irq_data" } @@ -346478,7 +346601,7 @@ elf_symbol { name: "irq_of_parse_and_map" is_defined: true symbol_type: FUNCTION - crc: 0x73710a8e + crc: 0x19b2f605 type_id: 0xc25b3d5a full_name: "irq_of_parse_and_map" } @@ -346505,7 +346628,7 @@ elf_symbol { name: "irq_set_chained_handler_and_data" is_defined: true symbol_type: FUNCTION - crc: 0x4531cc2e + crc: 0xc86ccc02 type_id: 0x033c2ce9 full_name: "irq_set_chained_handler_and_data" } @@ -346514,7 +346637,7 @@ elf_symbol { name: "irq_set_chip_and_handler_name" is_defined: true symbol_type: FUNCTION - crc: 0xf19aeae8 + crc: 0x9dc32f27 type_id: 0x0108e41c full_name: "irq_set_chip_and_handler_name" } @@ -346568,7 +346691,7 @@ elf_symbol { name: "irq_to_desc" is_defined: true symbol_type: FUNCTION - crc: 0xc195aa0f + crc: 0xec77bf49 type_id: 0xd597088b full_name: "irq_to_desc" } @@ -346577,7 +346700,7 @@ elf_symbol { name: "irq_work_queue" is_defined: true symbol_type: FUNCTION - crc: 0xc8191350 + crc: 0x59ec6842 type_id: 0xf795eafe full_name: "irq_work_queue" } @@ -346586,7 +346709,7 @@ elf_symbol { name: "irq_work_queue_on" is_defined: true symbol_type: FUNCTION - crc: 0x28729c72 + crc: 0x0ddfd5ec type_id: 0xf60969b2 full_name: "irq_work_queue_on" } @@ -346595,7 +346718,7 @@ elf_symbol { name: "irq_work_sync" is_defined: true symbol_type: FUNCTION - crc: 0xbe8a1ab9 + crc: 0x16a41102 type_id: 0x19a9e069 full_name: "irq_work_sync" } @@ -346604,7 +346727,7 @@ elf_symbol { name: "is_virtio_device" is_defined: true symbol_type: FUNCTION - crc: 0xdd643dc8 + crc: 0xc32c6db6 type_id: 0xfe32655f full_name: "is_virtio_device" } @@ -346622,7 +346745,7 @@ elf_symbol { name: "isolate_and_split_free_page" is_defined: true symbol_type: FUNCTION - crc: 0x62a6af1a + crc: 0x420e8ebe type_id: 0x30f59213 full_name: "isolate_and_split_free_page" } @@ -346631,7 +346754,7 @@ elf_symbol { name: "isolate_anon_lru_page" is_defined: true symbol_type: FUNCTION - crc: 0xcb2ed487 + crc: 0x7f6f3590 type_id: 0x9c203488 full_name: "isolate_anon_lru_page" } @@ -346640,7 +346763,7 @@ elf_symbol { name: "iterate_fd" is_defined: true symbol_type: FUNCTION - crc: 0xb6b61d57 + crc: 0xce4ec0ec type_id: 0x9659ea27 full_name: "iterate_fd" } @@ -346721,7 +346844,7 @@ elf_symbol { name: "kern_mount" is_defined: true symbol_type: FUNCTION - crc: 0xa6f5dcc6 + crc: 0x73ee300c type_id: 0x66e18f45 full_name: "kern_mount" } @@ -346730,7 +346853,7 @@ elf_symbol { name: "kern_unmount" is_defined: true symbol_type: FUNCTION - crc: 0xd8a0cdbd + crc: 0x7a4af64b type_id: 0x1bbb411c full_name: "kern_unmount" } @@ -346739,7 +346862,7 @@ elf_symbol { name: "kernel_accept" is_defined: true symbol_type: FUNCTION - crc: 0xee620dcc + crc: 0x45e75ba1 type_id: 0x99bb01a5 full_name: "kernel_accept" } @@ -346748,7 +346871,7 @@ elf_symbol { name: "kernel_bind" is_defined: true symbol_type: FUNCTION - crc: 0xa29b764c + crc: 0x140ceab7 type_id: 0x99526c70 full_name: "kernel_bind" } @@ -346757,7 +346880,7 @@ elf_symbol { name: "kernel_connect" is_defined: true symbol_type: FUNCTION - crc: 0xa5ef615c + crc: 0x220cb130 type_id: 0x9953f0f3 full_name: "kernel_connect" } @@ -346775,7 +346898,7 @@ elf_symbol { name: "kernel_getsockname" is_defined: true symbol_type: FUNCTION - crc: 0x465543a6 + crc: 0xc37b5832 type_id: 0x994ba444 full_name: "kernel_getsockname" } @@ -346784,7 +346907,7 @@ elf_symbol { name: "kernel_kobj" is_defined: true symbol_type: OBJECT - crc: 0x0f1a57df + crc: 0xc136c943 type_id: 0x23f09c34 full_name: "kernel_kobj" } @@ -346793,7 +346916,7 @@ elf_symbol { name: "kernel_listen" is_defined: true symbol_type: FUNCTION - crc: 0xd03f79f9 + crc: 0x5aed5ff1 type_id: 0x98046a12 full_name: "kernel_listen" } @@ -346802,7 +346925,7 @@ elf_symbol { name: "kernel_param_lock" is_defined: true symbol_type: FUNCTION - crc: 0x4aa85b57 + crc: 0x8cb9e70c type_id: 0x1251a683 full_name: "kernel_param_lock" } @@ -346811,7 +346934,7 @@ elf_symbol { name: "kernel_param_unlock" is_defined: true symbol_type: FUNCTION - crc: 0xa8889e54 + crc: 0x1406f0c5 type_id: 0x1251a683 full_name: "kernel_param_unlock" } @@ -346829,7 +346952,7 @@ elf_symbol { name: "kernel_recvmsg" is_defined: true symbol_type: FUNCTION - crc: 0x29028aa8 + crc: 0x1d23caed type_id: 0x992e9bfb full_name: "kernel_recvmsg" } @@ -346847,7 +346970,7 @@ elf_symbol { name: "kernel_sendmsg" is_defined: true symbol_type: FUNCTION - crc: 0xc236e92c + crc: 0xfcfbdb32 type_id: 0x992e9a67 full_name: "kernel_sendmsg" } @@ -346856,7 +346979,7 @@ elf_symbol { name: "kernel_sock_shutdown" is_defined: true symbol_type: FUNCTION - crc: 0x29e2cdd9 + crc: 0x16267a72 type_id: 0x9b768ae0 full_name: "kernel_sock_shutdown" } @@ -346865,7 +346988,7 @@ elf_symbol { name: "kernfs_find_and_get_ns" is_defined: true symbol_type: FUNCTION - crc: 0x61a5bc55 + crc: 0x429e0f98 type_id: 0x883b05d4 full_name: "kernfs_find_and_get_ns" } @@ -346874,7 +346997,7 @@ elf_symbol { name: "kernfs_notify" is_defined: true symbol_type: FUNCTION - crc: 0x9741b90f + crc: 0xe84c0787 type_id: 0x1e0c8305 full_name: "kernfs_notify" } @@ -346883,7 +347006,7 @@ elf_symbol { name: "kernfs_put" is_defined: true symbol_type: FUNCTION - crc: 0x62b2a526 + crc: 0xf400d723 type_id: 0x1e0c8305 full_name: "kernfs_put" } @@ -346910,7 +347033,7 @@ elf_symbol { name: "keyring_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x1ad88731 + crc: 0x38eb075a type_id: 0x8f04b264 full_name: "keyring_alloc" } @@ -346946,7 +347069,7 @@ elf_symbol { name: "kfree_skb_list_reason" is_defined: true symbol_type: FUNCTION - crc: 0xdc958e91 + crc: 0x71143310 type_id: 0x11a9e681 full_name: "kfree_skb_list_reason" } @@ -346955,7 +347078,7 @@ elf_symbol { name: "kfree_skb_partial" is_defined: true symbol_type: FUNCTION - crc: 0xdb63b3a0 + crc: 0x0557ab0b type_id: 0x107e76aa full_name: "kfree_skb_partial" } @@ -346964,7 +347087,7 @@ elf_symbol { name: "kfree_skb_reason" is_defined: true symbol_type: FUNCTION - crc: 0xb0ebc167 + crc: 0xee1700d4 type_id: 0x11a9e681 full_name: "kfree_skb_reason" } @@ -346982,7 +347105,7 @@ elf_symbol { name: "kill_anon_super" is_defined: true symbol_type: FUNCTION - crc: 0xc4be0758 + crc: 0x142fc544 type_id: 0x1923cb99 full_name: "kill_anon_super" } @@ -346991,7 +347114,7 @@ elf_symbol { name: "kill_fasync" is_defined: true symbol_type: FUNCTION - crc: 0x17f1c18e + crc: 0x2f9e10f8 type_id: 0x11e75010 full_name: "kill_fasync" } @@ -347018,7 +347141,7 @@ elf_symbol { name: "kmalloc_caches" is_defined: true symbol_type: OBJECT - crc: 0x440250f2 + crc: 0xab892a5a type_id: 0x273ad3f4 full_name: "kmalloc_caches" } @@ -347036,7 +347159,7 @@ elf_symbol { name: "kmalloc_node_trace" is_defined: true symbol_type: FUNCTION - crc: 0x981f9e13 + crc: 0x50f039b7 type_id: 0x5ef56662 full_name: "kmalloc_node_trace" } @@ -347045,7 +347168,7 @@ elf_symbol { name: "kmalloc_trace" is_defined: true symbol_type: FUNCTION - crc: 0x63e42c13 + crc: 0xab809e2a type_id: 0x5ed273d9 full_name: "kmalloc_trace" } @@ -347054,7 +347177,7 @@ elf_symbol { name: "kmem_cache_alloc" is_defined: true symbol_type: FUNCTION - crc: 0xf39f056b + crc: 0xec0da730 type_id: 0x5eef7e83 full_name: "kmem_cache_alloc" } @@ -347063,7 +347186,7 @@ elf_symbol { name: "kmem_cache_create" is_defined: true symbol_type: FUNCTION - crc: 0x941f10a7 + crc: 0x89e036a6 type_id: 0xc3c98ae7 full_name: "kmem_cache_create" } @@ -347072,7 +347195,7 @@ elf_symbol { name: "kmem_cache_create_usercopy" is_defined: true symbol_type: FUNCTION - crc: 0x028577c2 + crc: 0xe1597ff7 type_id: 0xc3c9995c full_name: "kmem_cache_create_usercopy" } @@ -347081,7 +347204,7 @@ elf_symbol { name: "kmem_cache_destroy" is_defined: true symbol_type: FUNCTION - crc: 0xca9b2718 + crc: 0x1bb93a45 type_id: 0x1b27059e full_name: "kmem_cache_destroy" } @@ -347090,7 +347213,7 @@ elf_symbol { name: "kmem_cache_free" is_defined: true symbol_type: FUNCTION - crc: 0x935923f3 + crc: 0x2ceb21c5 type_id: 0x1b45f00a full_name: "kmem_cache_free" } @@ -347252,7 +347375,7 @@ elf_symbol { name: "kobject_uevent" is_defined: true symbol_type: FUNCTION - crc: 0xe9a2c727 + crc: 0x81694899 type_id: 0x950b8829 full_name: "kobject_uevent" } @@ -347261,7 +347384,7 @@ elf_symbol { name: "kobject_uevent_env" is_defined: true symbol_type: FUNCTION - crc: 0xad937c7a + crc: 0xec7a202b type_id: 0x95096419 full_name: "kobject_uevent_env" } @@ -347315,7 +347438,7 @@ elf_symbol { name: "ksoftirqd" is_defined: true symbol_type: OBJECT - crc: 0x10fe4cd5 + crc: 0xee5e6e59 type_id: 0x1d19a9d5 full_name: "ksoftirqd" } @@ -347369,7 +347492,7 @@ elf_symbol { name: "kstrdup_quotable_cmdline" is_defined: true symbol_type: FUNCTION - crc: 0x6cf2e222 + crc: 0xd4436212 type_id: 0x3abef0c1 full_name: "kstrdup_quotable_cmdline" } @@ -347540,7 +347663,7 @@ elf_symbol { name: "kthread_bind" is_defined: true symbol_type: FUNCTION - crc: 0x70d5b386 + crc: 0x337f4961 type_id: 0x16c82e7e full_name: "kthread_bind" } @@ -347549,7 +347672,7 @@ elf_symbol { name: "kthread_bind_mask" is_defined: true symbol_type: FUNCTION - crc: 0xaea9dfe7 + crc: 0xbc855bfe type_id: 0x171a00e6 full_name: "kthread_bind_mask" } @@ -347558,7 +347681,7 @@ elf_symbol { name: "kthread_cancel_delayed_work_sync" is_defined: true symbol_type: FUNCTION - crc: 0xef4501fc + crc: 0x7dbd3a78 type_id: 0xfe6da83f full_name: "kthread_cancel_delayed_work_sync" } @@ -347567,7 +347690,7 @@ elf_symbol { name: "kthread_cancel_work_sync" is_defined: true symbol_type: FUNCTION - crc: 0x3afae87a + crc: 0x39968e95 type_id: 0xff8308a1 full_name: "kthread_cancel_work_sync" } @@ -347585,7 +347708,7 @@ elf_symbol { name: "kthread_create_on_node" is_defined: true symbol_type: FUNCTION - crc: 0xce980d49 + crc: 0x66ddd5be type_id: 0x7028bf98 full_name: "kthread_create_on_node" } @@ -347594,7 +347717,7 @@ elf_symbol { name: "kthread_create_worker" is_defined: true symbol_type: FUNCTION - crc: 0x54a231b8 + crc: 0x3186583e type_id: 0x6c9e1249 full_name: "kthread_create_worker" } @@ -347612,7 +347735,7 @@ elf_symbol { name: "kthread_destroy_worker" is_defined: true symbol_type: FUNCTION - crc: 0x65cfdbc3 + crc: 0xc8924fb7 type_id: 0x1dbb8bb2 full_name: "kthread_destroy_worker" } @@ -347621,7 +347744,7 @@ elf_symbol { name: "kthread_flush_work" is_defined: true symbol_type: FUNCTION - crc: 0xe15d1b46 + crc: 0x25ac64bf type_id: 0x11bf0236 full_name: "kthread_flush_work" } @@ -347630,7 +347753,7 @@ elf_symbol { name: "kthread_flush_worker" is_defined: true symbol_type: FUNCTION - crc: 0x4031dcbf + crc: 0x59479305 type_id: 0x1dbb8bb2 full_name: "kthread_flush_worker" } @@ -347639,7 +347762,7 @@ elf_symbol { name: "kthread_mod_delayed_work" is_defined: true symbol_type: FUNCTION - crc: 0x43619053 + crc: 0x56f6af9a type_id: 0xf387c34f full_name: "kthread_mod_delayed_work" } @@ -347648,7 +347771,7 @@ elf_symbol { name: "kthread_park" is_defined: true symbol_type: FUNCTION - crc: 0xbee6eee0 + crc: 0xcba8fa6f type_id: 0x9ac6895a full_name: "kthread_park" } @@ -347666,7 +347789,7 @@ elf_symbol { name: "kthread_queue_delayed_work" is_defined: true symbol_type: FUNCTION - crc: 0x344696ba + crc: 0x76c0d09b type_id: 0xf387c34f full_name: "kthread_queue_delayed_work" } @@ -347675,7 +347798,7 @@ elf_symbol { name: "kthread_queue_work" is_defined: true symbol_type: FUNCTION - crc: 0x387ad46a + crc: 0x6fd978d4 type_id: 0xf395f41f full_name: "kthread_queue_work" } @@ -347702,7 +347825,7 @@ elf_symbol { name: "kthread_stop" is_defined: true symbol_type: FUNCTION - crc: 0x678172c7 + crc: 0x7a6e0186 type_id: 0x9ac6895a full_name: "kthread_stop" } @@ -347711,7 +347834,7 @@ elf_symbol { name: "kthread_unpark" is_defined: true symbol_type: FUNCTION - crc: 0xfbe5e767 + crc: 0x17fd0842 type_id: 0x17de3be6 full_name: "kthread_unpark" } @@ -347918,7 +348041,7 @@ elf_symbol { name: "l2cap_add_psm" is_defined: true symbol_type: FUNCTION - crc: 0xe8ff7855 + crc: 0x70dabfa8 type_id: 0x9dff38c4 full_name: "l2cap_add_psm" } @@ -347927,7 +348050,7 @@ elf_symbol { name: "l2cap_chan_close" is_defined: true symbol_type: FUNCTION - crc: 0x7ec090da + crc: 0xe2e1d243 type_id: 0x11d1a5c3 full_name: "l2cap_chan_close" } @@ -347936,7 +348059,7 @@ elf_symbol { name: "l2cap_chan_connect" is_defined: true symbol_type: FUNCTION - crc: 0x10ce9158 + crc: 0xbfa963ca type_id: 0x9f1e1154 full_name: "l2cap_chan_connect" } @@ -347945,7 +348068,7 @@ elf_symbol { name: "l2cap_chan_create" is_defined: true symbol_type: FUNCTION - crc: 0x8e182608 + crc: 0x2328bacb type_id: 0xedba1f63 full_name: "l2cap_chan_create" } @@ -347954,7 +348077,7 @@ elf_symbol { name: "l2cap_chan_del" is_defined: true symbol_type: FUNCTION - crc: 0x4a289021 + crc: 0xe35854d3 type_id: 0x11d1a5c3 full_name: "l2cap_chan_del" } @@ -347963,7 +348086,7 @@ elf_symbol { name: "l2cap_chan_list" is_defined: true symbol_type: FUNCTION - crc: 0xfd84112a + crc: 0x1a06a603 type_id: 0x1caf5700 full_name: "l2cap_chan_list" } @@ -347972,7 +348095,7 @@ elf_symbol { name: "l2cap_chan_put" is_defined: true symbol_type: FUNCTION - crc: 0xc412e4a8 + crc: 0x23b98219 type_id: 0x104d268f full_name: "l2cap_chan_put" } @@ -347981,7 +348104,7 @@ elf_symbol { name: "l2cap_chan_send" is_defined: true symbol_type: FUNCTION - crc: 0x257c6cc9 + crc: 0xfa41f711 type_id: 0x9ddbf7b4 full_name: "l2cap_chan_send" } @@ -347990,7 +348113,7 @@ elf_symbol { name: "l2cap_chan_set_defaults" is_defined: true symbol_type: FUNCTION - crc: 0x806409ca + crc: 0x1aead060 type_id: 0x104d268f full_name: "l2cap_chan_set_defaults" } @@ -347999,7 +348122,7 @@ elf_symbol { name: "l2cap_conn_get" is_defined: true symbol_type: FUNCTION - crc: 0x59a93b55 + crc: 0x3d7eeb29 type_id: 0xa6fe7077 full_name: "l2cap_conn_get" } @@ -348008,7 +348131,7 @@ elf_symbol { name: "l2cap_conn_put" is_defined: true symbol_type: FUNCTION - crc: 0x7560d80f + crc: 0x59a80fcd type_id: 0x1ef27e10 full_name: "l2cap_conn_put" } @@ -348017,7 +348140,7 @@ elf_symbol { name: "l2cap_is_socket" is_defined: true symbol_type: FUNCTION - crc: 0xe37bd9b6 + crc: 0x7bf5bc07 type_id: 0xfabc5175 full_name: "l2cap_is_socket" } @@ -348026,7 +348149,7 @@ elf_symbol { name: "l2cap_register_user" is_defined: true symbol_type: FUNCTION - crc: 0x8b54b187 + crc: 0xc9f78e9f type_id: 0x9390f5c5 full_name: "l2cap_register_user" } @@ -348035,7 +348158,7 @@ elf_symbol { name: "l2cap_unregister_user" is_defined: true symbol_type: FUNCTION - crc: 0x602d9369 + crc: 0x23efa2f1 type_id: 0x1e884779 full_name: "l2cap_unregister_user" } @@ -348044,7 +348167,7 @@ elf_symbol { name: "l2tp_recv_common" is_defined: true symbol_type: FUNCTION - crc: 0x15af790e + crc: 0xcb4dd938 type_id: 0x15503314 full_name: "l2tp_recv_common" } @@ -348053,7 +348176,7 @@ elf_symbol { name: "l2tp_session_create" is_defined: true symbol_type: FUNCTION - crc: 0xcf20d5f4 + crc: 0x6781e7a5 type_id: 0xf6e0960a full_name: "l2tp_session_create" } @@ -348062,7 +348185,7 @@ elf_symbol { name: "l2tp_session_dec_refcount" is_defined: true symbol_type: FUNCTION - crc: 0x8d0c1561 + crc: 0xd68d60f8 type_id: 0x154220a5 full_name: "l2tp_session_dec_refcount" } @@ -348071,7 +348194,7 @@ elf_symbol { name: "l2tp_session_delete" is_defined: true symbol_type: FUNCTION - crc: 0x9198d247 + crc: 0xb57626ff type_id: 0x154220a5 full_name: "l2tp_session_delete" } @@ -348080,7 +348203,7 @@ elf_symbol { name: "l2tp_session_get" is_defined: true symbol_type: FUNCTION - crc: 0xa64d173d + crc: 0x54a4b8a2 type_id: 0xe3a506be full_name: "l2tp_session_get" } @@ -348089,7 +348212,7 @@ elf_symbol { name: "l2tp_session_get_by_ifname" is_defined: true symbol_type: FUNCTION - crc: 0xc85c6bc9 + crc: 0xab268731 type_id: 0xe07964c6 full_name: "l2tp_session_get_by_ifname" } @@ -348098,7 +348221,7 @@ elf_symbol { name: "l2tp_session_get_nth" is_defined: true symbol_type: FUNCTION - crc: 0x34f67e2a + crc: 0x37867bf7 type_id: 0xe7f6577b full_name: "l2tp_session_get_nth" } @@ -348107,7 +348230,7 @@ elf_symbol { name: "l2tp_session_inc_refcount" is_defined: true symbol_type: FUNCTION - crc: 0x459e655c + crc: 0x58816a9d type_id: 0x154220a5 full_name: "l2tp_session_inc_refcount" } @@ -348116,7 +348239,7 @@ elf_symbol { name: "l2tp_session_register" is_defined: true symbol_type: FUNCTION - crc: 0x22946a2d + crc: 0x3212954a type_id: 0x98c44e7d full_name: "l2tp_session_register" } @@ -348125,7 +348248,7 @@ elf_symbol { name: "l2tp_session_set_header_len" is_defined: true symbol_type: FUNCTION - crc: 0x854a5b83 + crc: 0x571bffa6 type_id: 0x14dea3e9 full_name: "l2tp_session_set_header_len" } @@ -348134,7 +348257,7 @@ elf_symbol { name: "l2tp_sk_to_tunnel" is_defined: true symbol_type: FUNCTION - crc: 0xf2bacbcd + crc: 0x72b8789c type_id: 0x30b12c32 full_name: "l2tp_sk_to_tunnel" } @@ -348143,7 +348266,7 @@ elf_symbol { name: "l2tp_tunnel_create" is_defined: true symbol_type: FUNCTION - crc: 0xe1db4b54 + crc: 0xe84f04f9 type_id: 0x85e53152 full_name: "l2tp_tunnel_create" } @@ -348152,7 +348275,7 @@ elf_symbol { name: "l2tp_tunnel_dec_refcount" is_defined: true symbol_type: FUNCTION - crc: 0x056ff68e + crc: 0x450e79e1 type_id: 0x197597d7 full_name: "l2tp_tunnel_dec_refcount" } @@ -348161,7 +348284,7 @@ elf_symbol { name: "l2tp_tunnel_delete" is_defined: true symbol_type: FUNCTION - crc: 0x4d02b443 + crc: 0xd5b01827 type_id: 0x197597d7 full_name: "l2tp_tunnel_delete" } @@ -348170,7 +348293,7 @@ elf_symbol { name: "l2tp_tunnel_get" is_defined: true symbol_type: FUNCTION - crc: 0x4881c84d + crc: 0xfcfe49cd type_id: 0x3bc23464 full_name: "l2tp_tunnel_get" } @@ -348179,7 +348302,7 @@ elf_symbol { name: "l2tp_tunnel_get_nth" is_defined: true symbol_type: FUNCTION - crc: 0x5a0f840b + crc: 0x330a512b type_id: 0x397a9784 full_name: "l2tp_tunnel_get_nth" } @@ -348188,7 +348311,7 @@ elf_symbol { name: "l2tp_tunnel_get_session" is_defined: true symbol_type: FUNCTION - crc: 0xa5bae7f2 + crc: 0x0d99c4eb type_id: 0xe54ef49b full_name: "l2tp_tunnel_get_session" } @@ -348197,7 +348320,7 @@ elf_symbol { name: "l2tp_tunnel_inc_refcount" is_defined: true symbol_type: FUNCTION - crc: 0x8b0994e0 + crc: 0x35df3851 type_id: 0x197597d7 full_name: "l2tp_tunnel_inc_refcount" } @@ -348206,7 +348329,7 @@ elf_symbol { name: "l2tp_tunnel_register" is_defined: true symbol_type: FUNCTION - crc: 0x490a2056 + crc: 0x29e7e947 type_id: 0x945c71bc full_name: "l2tp_tunnel_register" } @@ -348215,7 +348338,7 @@ elf_symbol { name: "l2tp_udp_encap_recv" is_defined: true symbol_type: FUNCTION - crc: 0x9511f324 + crc: 0xb070a1dc type_id: 0x9ac4d210 full_name: "l2tp_udp_encap_recv" } @@ -348224,7 +348347,7 @@ elf_symbol { name: "l2tp_xmit_skb" is_defined: true symbol_type: FUNCTION - crc: 0x949ef997 + crc: 0xc7456d1f type_id: 0x984fafbd full_name: "l2tp_xmit_skb" } @@ -348233,7 +348356,7 @@ elf_symbol { name: "led_classdev_flash_register_ext" is_defined: true symbol_type: FUNCTION - crc: 0xe1e538c6 + crc: 0x6d5960e3 type_id: 0x9de9e113 full_name: "led_classdev_flash_register_ext" } @@ -348242,7 +348365,7 @@ elf_symbol { name: "led_classdev_flash_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xb940644f + crc: 0xccb00bba type_id: 0x1f99af43 full_name: "led_classdev_flash_unregister" } @@ -348251,7 +348374,7 @@ elf_symbol { name: "led_classdev_register_ext" is_defined: true symbol_type: FUNCTION - crc: 0xca67178b + crc: 0x1ef2e547 type_id: 0x9dd2d442 full_name: "led_classdev_register_ext" } @@ -348260,7 +348383,7 @@ elf_symbol { name: "led_classdev_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xd1008ccc + crc: 0x7eded8d2 type_id: 0x1c2afa5a full_name: "led_classdev_unregister" } @@ -348269,7 +348392,7 @@ elf_symbol { name: "led_mc_calc_color_components" is_defined: true symbol_type: FUNCTION - crc: 0x6626e8a0 + crc: 0x98045924 type_id: 0x927aedd4 full_name: "led_mc_calc_color_components" } @@ -348278,7 +348401,7 @@ elf_symbol { name: "led_trigger_event" is_defined: true symbol_type: FUNCTION - crc: 0x56d04340 + crc: 0x0facf8ff type_id: 0x13e8c6b3 full_name: "led_trigger_event" } @@ -348287,7 +348410,7 @@ elf_symbol { name: "led_trigger_register" is_defined: true symbol_type: FUNCTION - crc: 0x87413d6c + crc: 0x3dd67aa1 type_id: 0x9e1a0a92 full_name: "led_trigger_register" } @@ -348296,7 +348419,7 @@ elf_symbol { name: "led_trigger_register_simple" is_defined: true symbol_type: FUNCTION - crc: 0x10eccf2b + crc: 0xc4228e04 type_id: 0x1f385795 full_name: "led_trigger_register_simple" } @@ -348305,7 +348428,7 @@ elf_symbol { name: "led_trigger_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xf70aea68 + crc: 0x1cf5f1a4 type_id: 0x1302b82e full_name: "led_trigger_unregister" } @@ -348314,7 +348437,7 @@ elf_symbol { name: "led_trigger_unregister_simple" is_defined: true symbol_type: FUNCTION - crc: 0xd018c45a + crc: 0x0c9a69d5 type_id: 0x1302b82e full_name: "led_trigger_unregister_simple" } @@ -348323,7 +348446,7 @@ elf_symbol { name: "linkwatch_fire_event" is_defined: true symbol_type: FUNCTION - crc: 0xf269dbb4 + crc: 0x0beffc64 type_id: 0x1c31d966 full_name: "linkwatch_fire_event" } @@ -348359,7 +348482,7 @@ elf_symbol { name: "lock_sock_nested" is_defined: true symbol_type: FUNCTION - crc: 0x6bb76144 + crc: 0xd9ef931b type_id: 0x1655de44 full_name: "lock_sock_nested" } @@ -348431,7 +348554,7 @@ elf_symbol { name: "logfc" is_defined: true symbol_type: FUNCTION - crc: 0xe81c6a5a + crc: 0xfacd972f type_id: 0x11cf2aed full_name: "logfc" } @@ -348458,7 +348581,7 @@ elf_symbol { name: "lowpan_header_compress" is_defined: true symbol_type: FUNCTION - crc: 0x5faa525f + crc: 0xf99512f9 type_id: 0x9c13fdc1 full_name: "lowpan_header_compress" } @@ -348467,7 +348590,7 @@ elf_symbol { name: "lowpan_header_decompress" is_defined: true symbol_type: FUNCTION - crc: 0x48d60fe2 + crc: 0x8a34bbf8 type_id: 0x9c13fdc1 full_name: "lowpan_header_decompress" } @@ -348476,7 +348599,7 @@ elf_symbol { name: "lowpan_nhc_add" is_defined: true symbol_type: FUNCTION - crc: 0x50fc0390 + crc: 0x011367db type_id: 0x9286d894 full_name: "lowpan_nhc_add" } @@ -348485,7 +348608,7 @@ elf_symbol { name: "lowpan_nhc_del" is_defined: true symbol_type: FUNCTION - crc: 0xc5a5d8e8 + crc: 0xe8bbf9dc type_id: 0x1f9e6a28 full_name: "lowpan_nhc_del" } @@ -348494,7 +348617,7 @@ elf_symbol { name: "lowpan_register_netdev" is_defined: true symbol_type: FUNCTION - crc: 0x7e8a3008 + crc: 0x7d40fb78 type_id: 0x92a49dbe full_name: "lowpan_register_netdev" } @@ -348503,7 +348626,7 @@ elf_symbol { name: "lowpan_register_netdevice" is_defined: true symbol_type: FUNCTION - crc: 0x63c8fae5 + crc: 0x7212fe48 type_id: 0x92a49dbe full_name: "lowpan_register_netdevice" } @@ -348512,7 +348635,7 @@ elf_symbol { name: "lowpan_unregister_netdev" is_defined: true symbol_type: FUNCTION - crc: 0x66411709 + crc: 0xd68aefdc type_id: 0x1c31d966 full_name: "lowpan_unregister_netdev" } @@ -348521,7 +348644,7 @@ elf_symbol { name: "lowpan_unregister_netdevice" is_defined: true symbol_type: FUNCTION - crc: 0xb17b8e86 + crc: 0xd7ee20db type_id: 0x1c31d966 full_name: "lowpan_unregister_netdevice" } @@ -348566,7 +348689,7 @@ elf_symbol { name: "mbox_chan_received_data" is_defined: true symbol_type: FUNCTION - crc: 0x3c39f4ba + crc: 0x0ec60bf4 type_id: 0x1c5fa2cd full_name: "mbox_chan_received_data" } @@ -348575,7 +348698,7 @@ elf_symbol { name: "mbox_chan_txdone" is_defined: true symbol_type: FUNCTION - crc: 0x30fdffd0 + crc: 0x8c07b5c1 type_id: 0x1da1d415 full_name: "mbox_chan_txdone" } @@ -348584,7 +348707,7 @@ elf_symbol { name: "mbox_client_txdone" is_defined: true symbol_type: FUNCTION - crc: 0x51528932 + crc: 0x488e841f type_id: 0x1da1d415 full_name: "mbox_client_txdone" } @@ -348593,7 +348716,7 @@ elf_symbol { name: "mbox_controller_register" is_defined: true symbol_type: FUNCTION - crc: 0x4fd8c164 + crc: 0xe06d85be type_id: 0x93bf967f full_name: "mbox_controller_register" } @@ -348602,7 +348725,7 @@ elf_symbol { name: "mbox_controller_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x1bc080f4 + crc: 0x267b3c48 type_id: 0x1ea724c3 full_name: "mbox_controller_unregister" } @@ -348611,7 +348734,7 @@ elf_symbol { name: "mbox_free_channel" is_defined: true symbol_type: FUNCTION - crc: 0x551cd9f4 + crc: 0x120693d2 type_id: 0x1c3d5759 full_name: "mbox_free_channel" } @@ -348620,7 +348743,7 @@ elf_symbol { name: "mbox_request_channel" is_defined: true symbol_type: FUNCTION - crc: 0xf49bba4c + crc: 0x5890b8db type_id: 0xfc78122e full_name: "mbox_request_channel" } @@ -348629,7 +348752,7 @@ elf_symbol { name: "mbox_send_message" is_defined: true symbol_type: FUNCTION - crc: 0x07c4d500 + crc: 0x9dc779d4 type_id: 0x91471071 full_name: "mbox_send_message" } @@ -348638,7 +348761,7 @@ elf_symbol { name: "mdio_device_create" is_defined: true symbol_type: FUNCTION - crc: 0xe8075991 + crc: 0xc3f7be36 type_id: 0x611af1f3 full_name: "mdio_device_create" } @@ -348647,7 +348770,7 @@ elf_symbol { name: "mdio_device_free" is_defined: true symbol_type: FUNCTION - crc: 0x793b0a71 + crc: 0x87fa5619 type_id: 0x14c7dbf6 full_name: "mdio_device_free" } @@ -348656,7 +348779,7 @@ elf_symbol { name: "mdiobus_alloc_size" is_defined: true symbol_type: FUNCTION - crc: 0x83cc3221 + crc: 0x582ab7d8 type_id: 0x9384eeb1 full_name: "mdiobus_alloc_size" } @@ -348665,7 +348788,7 @@ elf_symbol { name: "mdiobus_free" is_defined: true symbol_type: FUNCTION - crc: 0xbf449d72 + crc: 0xd89e6f5d type_id: 0x1ded15a3 full_name: "mdiobus_free" } @@ -348674,7 +348797,7 @@ elf_symbol { name: "mdiobus_get_phy" is_defined: true symbol_type: FUNCTION - crc: 0xe01d7010 + crc: 0x4434e532 type_id: 0xbf379f2f full_name: "mdiobus_get_phy" } @@ -348683,7 +348806,7 @@ elf_symbol { name: "mdiobus_modify_changed" is_defined: true symbol_type: FUNCTION - crc: 0x3e5b719e + crc: 0x8db49cc1 type_id: 0x9159073c full_name: "mdiobus_modify_changed" } @@ -348692,7 +348815,7 @@ elf_symbol { name: "mdiobus_read" is_defined: true symbol_type: FUNCTION - crc: 0x928475dd + crc: 0x48b49a7a type_id: 0x915b6659 full_name: "mdiobus_read" } @@ -348701,7 +348824,7 @@ elf_symbol { name: "mdiobus_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xcd934a99 + crc: 0x082e019b type_id: 0x1ded15a3 full_name: "mdiobus_unregister" } @@ -348710,7 +348833,7 @@ elf_symbol { name: "mdiobus_write" is_defined: true symbol_type: FUNCTION - crc: 0x73328648 + crc: 0x0265eeb0 type_id: 0x9159236f full_name: "mdiobus_write" } @@ -348719,7 +348842,7 @@ elf_symbol { name: "media_device_cleanup" is_defined: true symbol_type: FUNCTION - crc: 0xc8cb4a57 + crc: 0x10b131a7 type_id: 0x1510b6d0 full_name: "media_device_cleanup" } @@ -348728,7 +348851,7 @@ elf_symbol { name: "media_device_init" is_defined: true symbol_type: FUNCTION - crc: 0xad16ac78 + crc: 0x7d8ed8ff type_id: 0x1510b6d0 full_name: "media_device_init" } @@ -348737,7 +348860,7 @@ elf_symbol { name: "media_device_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x05f45e41 + crc: 0xf8a3b452 type_id: 0x1510b6d0 full_name: "media_device_unregister" } @@ -348746,7 +348869,7 @@ elf_symbol { name: "media_entity_pads_init" is_defined: true symbol_type: FUNCTION - crc: 0x46d4e509 + crc: 0x8880d966 type_id: 0x9867350b full_name: "media_entity_pads_init" } @@ -348869,7 +348992,7 @@ elf_symbol { name: "memory_cgrp_subsys" is_defined: true symbol_type: OBJECT - crc: 0xc97ba608 + crc: 0x122ed048 type_id: 0x00571446 full_name: "memory_cgrp_subsys" } @@ -348990,6 +349113,15 @@ elf_symbol { type_id: 0x7013e46e full_name: "memremap" } +elf_symbol { + id: 0x56171277 + name: "memremap_pages" + is_defined: true + symbol_type: FUNCTION + crc: 0x07ade9c1 + type_id: 0x53aca83f + full_name: "memremap_pages" +} elf_symbol { id: 0x67a278cb name: "memscan" @@ -349034,12 +349166,21 @@ elf_symbol { type_id: 0x16b708df full_name: "memunmap" } +elf_symbol { + id: 0xbc9af04b + name: "memunmap_pages" + is_defined: true + symbol_type: FUNCTION + crc: 0x3766f4ae + type_id: 0x143ecb11 + full_name: "memunmap_pages" +} elf_symbol { id: 0x78495fd8 name: "mfd_add_devices" is_defined: true symbol_type: FUNCTION - crc: 0x936f4d4b + crc: 0xf4f8553b type_id: 0x9c874975 full_name: "mfd_add_devices" } @@ -349048,7 +349189,7 @@ elf_symbol { name: "mfd_remove_devices" is_defined: true symbol_type: FUNCTION - crc: 0xf03a115e + crc: 0xcd4a1fc1 type_id: 0x100e6fc8 full_name: "mfd_remove_devices" } @@ -349057,7 +349198,7 @@ elf_symbol { name: "migrate_pages" is_defined: true symbol_type: FUNCTION - crc: 0xfccbe484 + crc: 0x0dbc4d1a type_id: 0x92405f04 full_name: "migrate_pages" } @@ -349066,7 +349207,7 @@ elf_symbol { name: "migrate_swap" is_defined: true symbol_type: FUNCTION - crc: 0x826a12ee + crc: 0x8fad6a54 type_id: 0x9aaabb4a full_name: "migrate_swap" } @@ -349075,7 +349216,7 @@ elf_symbol { name: "mii_check_media" is_defined: true symbol_type: FUNCTION - crc: 0xeb6ea489 + crc: 0xdeae0223 type_id: 0xcb5a4db0 full_name: "mii_check_media" } @@ -349084,7 +349225,7 @@ elf_symbol { name: "mii_ethtool_gset" is_defined: true symbol_type: FUNCTION - crc: 0x083bb492 + crc: 0xc2caeffb type_id: 0x142e3633 full_name: "mii_ethtool_gset" } @@ -349093,7 +349234,7 @@ elf_symbol { name: "mii_nway_restart" is_defined: true symbol_type: FUNCTION - crc: 0xa85b7b51 + crc: 0x641ab745 type_id: 0x9906a4a5 full_name: "mii_nway_restart" } @@ -349102,7 +349243,7 @@ elf_symbol { name: "mipi_dsi_attach" is_defined: true symbol_type: FUNCTION - crc: 0xc74c1078 + crc: 0xe80dfaab type_id: 0x9fd879f0 full_name: "mipi_dsi_attach" } @@ -349111,7 +349252,7 @@ elf_symbol { name: "mipi_dsi_compression_mode" is_defined: true symbol_type: FUNCTION - crc: 0x945e0490 + crc: 0xa05da82f type_id: 0x171c8621 full_name: "mipi_dsi_compression_mode" } @@ -349129,7 +349270,7 @@ elf_symbol { name: "mipi_dsi_dcs_read" is_defined: true symbol_type: FUNCTION - crc: 0xa1a4bf07 + crc: 0x37cdcce7 type_id: 0x1609f51a full_name: "mipi_dsi_dcs_read" } @@ -349138,7 +349279,7 @@ elf_symbol { name: "mipi_dsi_dcs_set_column_address" is_defined: true symbol_type: FUNCTION - crc: 0xd86df863 + crc: 0x70d628e6 type_id: 0x9db91c60 full_name: "mipi_dsi_dcs_set_column_address" } @@ -349147,7 +349288,7 @@ elf_symbol { name: "mipi_dsi_dcs_set_display_brightness" is_defined: true symbol_type: FUNCTION - crc: 0xcdc2260b + crc: 0xecc8204b type_id: 0x9d9d4f0f full_name: "mipi_dsi_dcs_set_display_brightness" } @@ -349156,7 +349297,7 @@ elf_symbol { name: "mipi_dsi_dcs_set_page_address" is_defined: true symbol_type: FUNCTION - crc: 0xeb331747 + crc: 0x2d24e98b type_id: 0x9db91c60 full_name: "mipi_dsi_dcs_set_page_address" } @@ -349165,7 +349306,7 @@ elf_symbol { name: "mipi_dsi_dcs_set_tear_off" is_defined: true symbol_type: FUNCTION - crc: 0x12630459 + crc: 0xa7583f89 type_id: 0x9fd879f0 full_name: "mipi_dsi_dcs_set_tear_off" } @@ -349174,7 +349315,7 @@ elf_symbol { name: "mipi_dsi_dcs_write_buffer" is_defined: true symbol_type: FUNCTION - crc: 0x37bb82ab + crc: 0x06618329 type_id: 0x16700a53 full_name: "mipi_dsi_dcs_write_buffer" } @@ -349183,7 +349324,7 @@ elf_symbol { name: "mipi_dsi_detach" is_defined: true symbol_type: FUNCTION - crc: 0x0de23d34 + crc: 0xfce23c5a type_id: 0x9fd879f0 full_name: "mipi_dsi_detach" } @@ -349192,7 +349333,7 @@ elf_symbol { name: "mipi_dsi_device_register_full" is_defined: true symbol_type: FUNCTION - crc: 0x6eba892a + crc: 0x06436a7e type_id: 0x71d88eaa full_name: "mipi_dsi_device_register_full" } @@ -349201,7 +349342,7 @@ elf_symbol { name: "mipi_dsi_driver_register_full" is_defined: true symbol_type: FUNCTION - crc: 0xb894cf79 + crc: 0x85d6ce5d type_id: 0x900f17ba full_name: "mipi_dsi_driver_register_full" } @@ -349210,7 +349351,7 @@ elf_symbol { name: "mipi_dsi_driver_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xa82bbf39 + crc: 0x5d6da9a4 type_id: 0x1d3b3a77 full_name: "mipi_dsi_driver_unregister" } @@ -349219,7 +349360,7 @@ elf_symbol { name: "mipi_dsi_generic_write" is_defined: true symbol_type: FUNCTION - crc: 0xbdcb117c + crc: 0x133bb832 type_id: 0x16700a53 full_name: "mipi_dsi_generic_write" } @@ -349228,7 +349369,7 @@ elf_symbol { name: "mipi_dsi_host_register" is_defined: true symbol_type: FUNCTION - crc: 0x6ec083dc + crc: 0xe2708477 type_id: 0x96691fcd full_name: "mipi_dsi_host_register" } @@ -349237,7 +349378,7 @@ elf_symbol { name: "mipi_dsi_host_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x9758e175 + crc: 0xc3cd42eb type_id: 0x1b71ad71 full_name: "mipi_dsi_host_unregister" } @@ -349255,7 +349396,7 @@ elf_symbol { name: "mipi_dsi_picture_parameter_set" is_defined: true symbol_type: FUNCTION - crc: 0x5f5a46ca + crc: 0xc06b4fcd type_id: 0x165fcf63 full_name: "mipi_dsi_picture_parameter_set" } @@ -349264,7 +349405,7 @@ elf_symbol { name: "misc_deregister" is_defined: true symbol_type: FUNCTION - crc: 0xc9bdd9ce + crc: 0xaf01617a type_id: 0x1b00783f full_name: "misc_deregister" } @@ -349273,7 +349414,7 @@ elf_symbol { name: "misc_register" is_defined: true symbol_type: FUNCTION - crc: 0x416a126d + crc: 0x709024a2 type_id: 0x9618ca83 full_name: "misc_register" } @@ -349282,7 +349423,7 @@ elf_symbol { name: "mmc_add_host" is_defined: true symbol_type: FUNCTION - crc: 0xaaea4b6e + crc: 0xa9c6671b type_id: 0x9006b123 full_name: "mmc_add_host" } @@ -349291,7 +349432,7 @@ elf_symbol { name: "mmc_alloc_host" is_defined: true symbol_type: FUNCTION - crc: 0xa18cd345 + crc: 0x8b176051 type_id: 0x83a3929f full_name: "mmc_alloc_host" } @@ -349300,7 +349441,7 @@ elf_symbol { name: "mmc_cqe_request_done" is_defined: true symbol_type: FUNCTION - crc: 0x8cd93925 + crc: 0x75415fb5 type_id: 0x1dbab156 full_name: "mmc_cqe_request_done" } @@ -349309,7 +349450,7 @@ elf_symbol { name: "mmc_free_host" is_defined: true symbol_type: FUNCTION - crc: 0xc51f8c5f + crc: 0xec76b7cd type_id: 0x1d1e039f full_name: "mmc_free_host" } @@ -349318,7 +349459,7 @@ elf_symbol { name: "mmc_gpio_get_cd" is_defined: true symbol_type: FUNCTION - crc: 0xd140f7b9 + crc: 0x380e9615 type_id: 0x9006b123 full_name: "mmc_gpio_get_cd" } @@ -349327,7 +349468,7 @@ elf_symbol { name: "mmc_gpio_get_ro" is_defined: true symbol_type: FUNCTION - crc: 0x2cef42da + crc: 0xf5428f0f type_id: 0x9006b123 full_name: "mmc_gpio_get_ro" } @@ -349336,7 +349477,7 @@ elf_symbol { name: "mmc_gpiod_request_cd" is_defined: true symbol_type: FUNCTION - crc: 0xa702f5d3 + crc: 0x903e3f94 type_id: 0x90ee3632 full_name: "mmc_gpiod_request_cd" } @@ -349345,7 +349486,7 @@ elf_symbol { name: "mmc_gpiod_request_ro" is_defined: true symbol_type: FUNCTION - crc: 0x3d843d3c + crc: 0x07e55b37 type_id: 0x90ee84bb full_name: "mmc_gpiod_request_ro" } @@ -349354,7 +349495,7 @@ elf_symbol { name: "mmc_of_parse" is_defined: true symbol_type: FUNCTION - crc: 0xaf7ebfc6 + crc: 0x3d65dcdc type_id: 0x9006b123 full_name: "mmc_of_parse" } @@ -349363,7 +349504,7 @@ elf_symbol { name: "mmc_regulator_get_supply" is_defined: true symbol_type: FUNCTION - crc: 0x01ad9e62 + crc: 0x3ada81f0 type_id: 0x9006b123 full_name: "mmc_regulator_get_supply" } @@ -349372,7 +349513,7 @@ elf_symbol { name: "mmc_regulator_set_ocr" is_defined: true symbol_type: FUNCTION - crc: 0xa92800e5 + crc: 0xfaa19f2d type_id: 0x903246db full_name: "mmc_regulator_set_ocr" } @@ -349381,7 +349522,7 @@ elf_symbol { name: "mmc_regulator_set_vqmmc" is_defined: true symbol_type: FUNCTION - crc: 0xbacd5c5c + crc: 0xba66dc65 type_id: 0x90db86bb full_name: "mmc_regulator_set_vqmmc" } @@ -349390,7 +349531,7 @@ elf_symbol { name: "mmc_remove_host" is_defined: true symbol_type: FUNCTION - crc: 0xe23c89f6 + crc: 0xcd32b4bc type_id: 0x1d1e039f full_name: "mmc_remove_host" } @@ -349399,7 +349540,7 @@ elf_symbol { name: "mmc_request_done" is_defined: true symbol_type: FUNCTION - crc: 0x35dc13c9 + crc: 0xb0d0262f type_id: 0x1dbab156 full_name: "mmc_request_done" } @@ -349408,7 +349549,7 @@ elf_symbol { name: "mmc_send_tuning" is_defined: true symbol_type: FUNCTION - crc: 0x7c51025e + crc: 0x46680fac type_id: 0x9326478c full_name: "mmc_send_tuning" } @@ -349417,7 +349558,7 @@ elf_symbol { name: "mmc_wait_for_cmd" is_defined: true symbol_type: FUNCTION - crc: 0xcb666507 + crc: 0xe3191a95 type_id: 0x90a5da72 full_name: "mmc_wait_for_cmd" } @@ -349426,7 +349567,7 @@ elf_symbol { name: "mmput" is_defined: true symbol_type: FUNCTION - crc: 0xc21a8788 + crc: 0x29b4326d type_id: 0x1655e07b full_name: "mmput" } @@ -349444,7 +349585,7 @@ elf_symbol { name: "mod_node_page_state" is_defined: true symbol_type: FUNCTION - crc: 0x66c6ac71 + crc: 0x6aba36c3 type_id: 0x10d6a724 full_name: "mod_node_page_state" } @@ -349462,7 +349603,7 @@ elf_symbol { name: "module_layout" is_defined: true symbol_type: FUNCTION - crc: 0x4a2460bd + crc: 0x75770634 type_id: 0x12d88613 full_name: "module_layout" } @@ -349471,7 +349612,7 @@ elf_symbol { name: "module_put" is_defined: true symbol_type: FUNCTION - crc: 0xfbbf3e42 + crc: 0x5f3cfcbc type_id: 0x1251a683 full_name: "module_put" } @@ -349480,7 +349621,7 @@ elf_symbol { name: "msi_first_desc" is_defined: true symbol_type: FUNCTION - crc: 0x787eb546 + crc: 0x3738a350 type_id: 0xbfc82229 full_name: "msi_first_desc" } @@ -349489,7 +349630,7 @@ elf_symbol { name: "msi_get_virq" is_defined: true symbol_type: FUNCTION - crc: 0xb543b968 + crc: 0x53badc29 type_id: 0xcf5b5538 full_name: "msi_get_virq" } @@ -349498,7 +349639,7 @@ elf_symbol { name: "msi_next_desc" is_defined: true symbol_type: FUNCTION - crc: 0xd0ccba1d + crc: 0x4928febe type_id: 0xbfc82229 full_name: "msi_next_desc" } @@ -349579,7 +349720,7 @@ elf_symbol { name: "n_tty_ioctl_helper" is_defined: true symbol_type: FUNCTION - crc: 0x229e9385 + crc: 0x02f7136f type_id: 0x97258bf7 full_name: "n_tty_ioctl_helper" } @@ -349597,7 +349738,7 @@ elf_symbol { name: "napi_complete_done" is_defined: true symbol_type: FUNCTION - crc: 0xba8bc004 + crc: 0x8ac52b77 type_id: 0xf938bd88 full_name: "napi_complete_done" } @@ -349606,7 +349747,7 @@ elf_symbol { name: "napi_consume_skb" is_defined: true symbol_type: FUNCTION - crc: 0x0e3f95bd + crc: 0x8b6baee4 type_id: 0x10570899 full_name: "napi_consume_skb" } @@ -349615,7 +349756,7 @@ elf_symbol { name: "napi_disable" is_defined: true symbol_type: FUNCTION - crc: 0x88514ec8 + crc: 0xa53e4291 type_id: 0x16983453 full_name: "napi_disable" } @@ -349624,7 +349765,7 @@ elf_symbol { name: "napi_enable" is_defined: true symbol_type: FUNCTION - crc: 0xe922f2e5 + crc: 0x796d26c3 type_id: 0x16983453 full_name: "napi_enable" } @@ -349633,7 +349774,7 @@ elf_symbol { name: "napi_gro_flush" is_defined: true symbol_type: FUNCTION - crc: 0x4696909e + crc: 0xe1163502 type_id: 0x172dc92c full_name: "napi_gro_flush" } @@ -349642,7 +349783,7 @@ elf_symbol { name: "napi_gro_receive" is_defined: true symbol_type: FUNCTION - crc: 0xb88ceeb1 + crc: 0x69f5470f type_id: 0x091a93fa full_name: "napi_gro_receive" } @@ -349651,7 +349792,7 @@ elf_symbol { name: "napi_schedule_prep" is_defined: true symbol_type: FUNCTION - crc: 0xd12f9378 + crc: 0x296b6adc type_id: 0xf8a43ec4 full_name: "napi_schedule_prep" } @@ -349660,7 +349801,7 @@ elf_symbol { name: "nd_tbl" is_defined: true symbol_type: OBJECT - crc: 0xd2d2472a + crc: 0x60233b32 type_id: 0x77670b3b full_name: "nd_tbl" } @@ -349669,7 +349810,7 @@ elf_symbol { name: "neigh_destroy" is_defined: true symbol_type: FUNCTION - crc: 0xf669a86a + crc: 0x7faadcb6 type_id: 0x1262fcf5 full_name: "neigh_destroy" } @@ -349678,7 +349819,7 @@ elf_symbol { name: "neigh_lookup" is_defined: true symbol_type: FUNCTION - crc: 0x7c8756b2 + crc: 0xe4508d13 type_id: 0x189b5d05 full_name: "neigh_lookup" } @@ -349687,7 +349828,7 @@ elf_symbol { name: "neigh_resolve_output" is_defined: true symbol_type: FUNCTION - crc: 0x1017aaf3 + crc: 0xa71b9180 type_id: 0x9f6f73ed full_name: "neigh_resolve_output" } @@ -349705,7 +349846,7 @@ elf_symbol { name: "net_ns_type_operations" is_defined: true symbol_type: OBJECT - crc: 0x83b6ff2d + crc: 0x625af877 type_id: 0xeabee0bd full_name: "net_ns_type_operations" } @@ -349723,7 +349864,7 @@ elf_symbol { name: "netdev_alert" is_defined: true symbol_type: FUNCTION - crc: 0x0b321d78 + crc: 0xcc9ae37f type_id: 0x1caf28d1 full_name: "netdev_alert" } @@ -349732,7 +349873,7 @@ elf_symbol { name: "netdev_change_features" is_defined: true symbol_type: FUNCTION - crc: 0x2c335694 + crc: 0x4d4fceb5 type_id: 0x1c31d966 full_name: "netdev_change_features" } @@ -349741,7 +349882,7 @@ elf_symbol { name: "netdev_core_stats_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x1a1af323 + crc: 0xee5ed1ae type_id: 0x9286ca40 full_name: "netdev_core_stats_alloc" } @@ -349750,7 +349891,7 @@ elf_symbol { name: "netdev_err" is_defined: true symbol_type: FUNCTION - crc: 0x1faf1368 + crc: 0xad6a0b7a type_id: 0x1caf28d1 full_name: "netdev_err" } @@ -349768,7 +349909,7 @@ elf_symbol { name: "netdev_info" is_defined: true symbol_type: FUNCTION - crc: 0xd9d8c114 + crc: 0x9f1b5ce0 type_id: 0x1caf28d1 full_name: "netdev_info" } @@ -349777,7 +349918,7 @@ elf_symbol { name: "netdev_lower_state_changed" is_defined: true symbol_type: FUNCTION - crc: 0xbb91729f + crc: 0x89441b95 type_id: 0x1c532cf2 full_name: "netdev_lower_state_changed" } @@ -349786,7 +349927,7 @@ elf_symbol { name: "netdev_master_upper_dev_link" is_defined: true symbol_type: FUNCTION - crc: 0x1d3cfc64 + crc: 0x9df1c3c2 type_id: 0x91e5bf0e full_name: "netdev_master_upper_dev_link" } @@ -349795,7 +349936,7 @@ elf_symbol { name: "netdev_name_in_use" is_defined: true symbol_type: FUNCTION - crc: 0xabb73ad9 + crc: 0x9539d1c6 type_id: 0xfd7484f0 full_name: "netdev_name_in_use" } @@ -349804,7 +349945,7 @@ elf_symbol { name: "netdev_notice" is_defined: true symbol_type: FUNCTION - crc: 0x17db4953 + crc: 0xc6ba8a1e type_id: 0x1caf28d1 full_name: "netdev_notice" } @@ -349813,7 +349954,7 @@ elf_symbol { name: "netdev_notify_peers" is_defined: true symbol_type: FUNCTION - crc: 0x969a363e + crc: 0x5fb23544 type_id: 0x1c31d966 full_name: "netdev_notify_peers" } @@ -349822,7 +349963,7 @@ elf_symbol { name: "netdev_pick_tx" is_defined: true symbol_type: FUNCTION - crc: 0xc2aabb8e + crc: 0x0c445706 type_id: 0x0d9b3569 full_name: "netdev_pick_tx" } @@ -349831,7 +349972,7 @@ elf_symbol { name: "netdev_printk" is_defined: true symbol_type: FUNCTION - crc: 0x3613c362 + crc: 0x2d509cee type_id: 0x1fdf0b41 full_name: "netdev_printk" } @@ -349849,7 +349990,7 @@ elf_symbol { name: "netdev_rx_handler_register" is_defined: true symbol_type: FUNCTION - crc: 0xbd142169 + crc: 0x4daa5ea4 type_id: 0x913b542f full_name: "netdev_rx_handler_register" } @@ -349858,7 +349999,7 @@ elf_symbol { name: "netdev_rx_handler_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x6c2a3af8 + crc: 0xbf5f7177 type_id: 0x1c31d966 full_name: "netdev_rx_handler_unregister" } @@ -349867,7 +350008,7 @@ elf_symbol { name: "netdev_set_default_ethtool_ops" is_defined: true symbol_type: FUNCTION - crc: 0x14154f5b + crc: 0xa3273c81 type_id: 0x1cd08481 full_name: "netdev_set_default_ethtool_ops" } @@ -349876,7 +350017,7 @@ elf_symbol { name: "netdev_state_change" is_defined: true symbol_type: FUNCTION - crc: 0x7c2fc067 + crc: 0x74010c50 type_id: 0x1c31d966 full_name: "netdev_state_change" } @@ -349885,7 +350026,7 @@ elf_symbol { name: "netdev_update_features" is_defined: true symbol_type: FUNCTION - crc: 0x2d7dd2eb + crc: 0xd8f66a4c type_id: 0x1c31d966 full_name: "netdev_update_features" } @@ -349894,7 +350035,7 @@ elf_symbol { name: "netdev_upper_dev_link" is_defined: true symbol_type: FUNCTION - crc: 0xb513933e + crc: 0x708019b9 type_id: 0x91e20463 full_name: "netdev_upper_dev_link" } @@ -349903,7 +350044,7 @@ elf_symbol { name: "netdev_upper_dev_unlink" is_defined: true symbol_type: FUNCTION - crc: 0x6ecf9efd + crc: 0x9e7c2dbb type_id: 0x1cfb41e9 full_name: "netdev_upper_dev_unlink" } @@ -349912,7 +350053,7 @@ elf_symbol { name: "netdev_warn" is_defined: true symbol_type: FUNCTION - crc: 0xd49bf836 + crc: 0x7fed5a95 type_id: 0x1caf28d1 full_name: "netdev_warn" } @@ -349921,7 +350062,7 @@ elf_symbol { name: "netif_carrier_off" is_defined: true symbol_type: FUNCTION - crc: 0xa131689a + crc: 0x30584d20 type_id: 0x1c31d966 full_name: "netif_carrier_off" } @@ -349930,7 +350071,7 @@ elf_symbol { name: "netif_carrier_on" is_defined: true symbol_type: FUNCTION - crc: 0x03b79f0c + crc: 0x863c339b type_id: 0x1c31d966 full_name: "netif_carrier_on" } @@ -349939,7 +350080,7 @@ elf_symbol { name: "netif_device_attach" is_defined: true symbol_type: FUNCTION - crc: 0xf2aaa03f + crc: 0xf1a0242b type_id: 0x1c31d966 full_name: "netif_device_attach" } @@ -349948,7 +350089,7 @@ elf_symbol { name: "netif_device_detach" is_defined: true symbol_type: FUNCTION - crc: 0x6507ac54 + crc: 0x040e6888 type_id: 0x1c31d966 full_name: "netif_device_detach" } @@ -349957,7 +350098,7 @@ elf_symbol { name: "netif_inherit_tso_max" is_defined: true symbol_type: FUNCTION - crc: 0x73f5ab16 + crc: 0x30b99d19 type_id: 0x1cffbe77 full_name: "netif_inherit_tso_max" } @@ -349966,7 +350107,7 @@ elf_symbol { name: "netif_napi_add_weight" is_defined: true symbol_type: FUNCTION - crc: 0x00492c48 + crc: 0xe71e30e2 type_id: 0x1c5b4677 full_name: "netif_napi_add_weight" } @@ -349975,7 +350116,7 @@ elf_symbol { name: "netif_receive_skb" is_defined: true symbol_type: FUNCTION - crc: 0xaba1015b + crc: 0xe34bad6a type_id: 0x9cd33969 full_name: "netif_receive_skb" } @@ -349993,7 +350134,7 @@ elf_symbol { name: "netif_rx" is_defined: true symbol_type: FUNCTION - crc: 0xe702d54b + crc: 0xe4ef3e44 type_id: 0x9cd33969 full_name: "netif_rx" } @@ -350002,7 +350143,7 @@ elf_symbol { name: "netif_schedule_queue" is_defined: true symbol_type: FUNCTION - crc: 0xd34a1ba5 + crc: 0x94c1e01e type_id: 0x1604193e full_name: "netif_schedule_queue" } @@ -350011,7 +350152,7 @@ elf_symbol { name: "netif_set_real_num_rx_queues" is_defined: true symbol_type: FUNCTION - crc: 0xad81795f + crc: 0x592b7f86 type_id: 0x903f7e42 full_name: "netif_set_real_num_rx_queues" } @@ -350020,7 +350161,7 @@ elf_symbol { name: "netif_set_real_num_tx_queues" is_defined: true symbol_type: FUNCTION - crc: 0xa8b9f025 + crc: 0x506e5148 type_id: 0x903f7e42 full_name: "netif_set_real_num_tx_queues" } @@ -350029,7 +350170,7 @@ elf_symbol { name: "netif_stacked_transfer_operstate" is_defined: true symbol_type: FUNCTION - crc: 0x0b10b168 + crc: 0x56f28aa5 type_id: 0x1cb4b808 full_name: "netif_stacked_transfer_operstate" } @@ -350038,7 +350179,7 @@ elf_symbol { name: "netif_tx_lock" is_defined: true symbol_type: FUNCTION - crc: 0x9ee6fdfd + crc: 0x083840a7 type_id: 0x1c31d966 full_name: "netif_tx_lock" } @@ -350047,7 +350188,7 @@ elf_symbol { name: "netif_tx_stop_all_queues" is_defined: true symbol_type: FUNCTION - crc: 0x19f3fb6c + crc: 0xc4f894b1 type_id: 0x1c31d966 full_name: "netif_tx_stop_all_queues" } @@ -350056,7 +350197,7 @@ elf_symbol { name: "netif_tx_unlock" is_defined: true symbol_type: FUNCTION - crc: 0x1b851f6d + crc: 0x71e16c61 type_id: 0x1c31d966 full_name: "netif_tx_unlock" } @@ -350065,7 +350206,7 @@ elf_symbol { name: "netif_tx_wake_queue" is_defined: true symbol_type: FUNCTION - crc: 0xfa0d886d + crc: 0x845ff355 type_id: 0x1604193e full_name: "netif_tx_wake_queue" } @@ -350074,7 +350215,7 @@ elf_symbol { name: "netlink_broadcast" is_defined: true symbol_type: FUNCTION - crc: 0xe926b27b + crc: 0xf4ee3b42 type_id: 0x9af58853 full_name: "netlink_broadcast" } @@ -350083,7 +350224,7 @@ elf_symbol { name: "netlink_capable" is_defined: true symbol_type: FUNCTION - crc: 0xdeabfe72 + crc: 0xf6c09918 type_id: 0xf0a03df0 full_name: "netlink_capable" } @@ -350092,7 +350233,7 @@ elf_symbol { name: "netlink_kernel_release" is_defined: true symbol_type: FUNCTION - crc: 0xeef0058d + crc: 0xbcab4079 type_id: 0x17c95d08 full_name: "netlink_kernel_release" } @@ -350101,7 +350242,7 @@ elf_symbol { name: "netlink_net_capable" is_defined: true symbol_type: FUNCTION - crc: 0x0c8da234 + crc: 0xe714da03 type_id: 0xf0a03df0 full_name: "netlink_net_capable" } @@ -350119,7 +350260,7 @@ elf_symbol { name: "netlink_unicast" is_defined: true symbol_type: FUNCTION - crc: 0x57da4c23 + crc: 0xfaea26d2 type_id: 0x9af70c99 full_name: "netlink_unicast" } @@ -350146,7 +350287,7 @@ elf_symbol { name: "nf_ct_attach" is_defined: true symbol_type: FUNCTION - crc: 0x0c05acda + crc: 0x42c4718c type_id: 0x1132058e full_name: "nf_ct_attach" } @@ -350155,7 +350296,7 @@ elf_symbol { name: "nf_ct_delete" is_defined: true symbol_type: FUNCTION - crc: 0x7a24a717 + crc: 0x118f5abd type_id: 0xf33b99db full_name: "nf_ct_delete" } @@ -350164,7 +350305,7 @@ elf_symbol { name: "nf_register_net_hooks" is_defined: true symbol_type: FUNCTION - crc: 0x20f8b3c8 + crc: 0x3d6d340b type_id: 0x9e768b87 full_name: "nf_register_net_hooks" } @@ -350173,7 +350314,7 @@ elf_symbol { name: "nf_unregister_net_hooks" is_defined: true symbol_type: FUNCTION - crc: 0x8ebcfd44 + crc: 0x0fef9c06 type_id: 0x136e393b full_name: "nf_unregister_net_hooks" } @@ -350182,7 +350323,7 @@ elf_symbol { name: "nfc_add_se" is_defined: true symbol_type: FUNCTION - crc: 0x4d421f0d + crc: 0xb074de23 type_id: 0x9fbd796f full_name: "nfc_add_se" } @@ -350191,7 +350332,7 @@ elf_symbol { name: "nfc_alloc_recv_skb" is_defined: true symbol_type: FUNCTION - crc: 0x39596e28 + crc: 0xb77b189d type_id: 0x7a39fbd1 full_name: "nfc_alloc_recv_skb" } @@ -350200,7 +350341,7 @@ elf_symbol { name: "nfc_allocate_device" is_defined: true symbol_type: FUNCTION - crc: 0xca357a66 + crc: 0x841c4a90 type_id: 0x5daa055b full_name: "nfc_allocate_device" } @@ -350209,7 +350350,7 @@ elf_symbol { name: "nfc_class" is_defined: true symbol_type: OBJECT - crc: 0x3f3b2a09 + crc: 0x21ab7893 type_id: 0x83714889 full_name: "nfc_class" } @@ -350218,7 +350359,7 @@ elf_symbol { name: "nfc_dep_link_is_up" is_defined: true symbol_type: FUNCTION - crc: 0x18697444 + crc: 0x18644a23 type_id: 0x9f93d86d full_name: "nfc_dep_link_is_up" } @@ -350227,7 +350368,7 @@ elf_symbol { name: "nfc_driver_failure" is_defined: true symbol_type: FUNCTION - crc: 0x9cd60ead + crc: 0x2e2d0ea1 type_id: 0x10393b5c full_name: "nfc_driver_failure" } @@ -350236,7 +350377,7 @@ elf_symbol { name: "nfc_find_se" is_defined: true symbol_type: FUNCTION - crc: 0x2a30f7e8 + crc: 0x7f57be7f type_id: 0xee085698 full_name: "nfc_find_se" } @@ -350245,7 +350386,7 @@ elf_symbol { name: "nfc_fw_download_done" is_defined: true symbol_type: FUNCTION - crc: 0xae321a72 + crc: 0xdb9790b5 type_id: 0x9c770a72 full_name: "nfc_fw_download_done" } @@ -350254,7 +350395,7 @@ elf_symbol { name: "nfc_get_local_general_bytes" is_defined: true symbol_type: FUNCTION - crc: 0x193f82d9 + crc: 0x4ca41825 type_id: 0x4bbafb54 full_name: "nfc_get_local_general_bytes" } @@ -350263,7 +350404,7 @@ elf_symbol { name: "nfc_proto_register" is_defined: true symbol_type: FUNCTION - crc: 0x7dc86066 + crc: 0xa625211e type_id: 0x9095ed8c full_name: "nfc_proto_register" } @@ -350272,7 +350413,7 @@ elf_symbol { name: "nfc_proto_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xec23ff84 + crc: 0x5cd6b145 type_id: 0x1d8d5f30 full_name: "nfc_proto_unregister" } @@ -350281,7 +350422,7 @@ elf_symbol { name: "nfc_register_device" is_defined: true symbol_type: FUNCTION - crc: 0x5f7e7557 + crc: 0x8fcc445f type_id: 0x9cbd0aac full_name: "nfc_register_device" } @@ -350290,7 +350431,7 @@ elf_symbol { name: "nfc_remove_se" is_defined: true symbol_type: FUNCTION - crc: 0x872e7c0b + crc: 0xdd7788ba type_id: 0x9f992a00 full_name: "nfc_remove_se" } @@ -350299,7 +350440,7 @@ elf_symbol { name: "nfc_se_connectivity" is_defined: true symbol_type: FUNCTION - crc: 0xcc382d4b + crc: 0x242f56fc type_id: 0x9c187b64 full_name: "nfc_se_connectivity" } @@ -350308,7 +350449,7 @@ elf_symbol { name: "nfc_se_transaction" is_defined: true symbol_type: FUNCTION - crc: 0xb2c065e3 + crc: 0xa09252b3 type_id: 0x9c1fae0d full_name: "nfc_se_transaction" } @@ -350317,7 +350458,7 @@ elf_symbol { name: "nfc_send_to_raw_sock" is_defined: true symbol_type: FUNCTION - crc: 0x7172e668 + crc: 0xcad1c6af type_id: 0x11ba77d9 full_name: "nfc_send_to_raw_sock" } @@ -350326,7 +350467,7 @@ elf_symbol { name: "nfc_set_remote_general_bytes" is_defined: true symbol_type: FUNCTION - crc: 0xc065caca + crc: 0xafb8a1a6 type_id: 0x9c4b5ba7 full_name: "nfc_set_remote_general_bytes" } @@ -350335,7 +350476,7 @@ elf_symbol { name: "nfc_target_lost" is_defined: true symbol_type: FUNCTION - crc: 0x47f7156d + crc: 0xca37033f type_id: 0x9f992a00 full_name: "nfc_target_lost" } @@ -350344,7 +350485,7 @@ elf_symbol { name: "nfc_targets_found" is_defined: true symbol_type: FUNCTION - crc: 0x31a182c6 + crc: 0x6ccd64f3 type_id: 0x9c908368 full_name: "nfc_targets_found" } @@ -350353,7 +350494,7 @@ elf_symbol { name: "nfc_tm_activated" is_defined: true symbol_type: FUNCTION - crc: 0x4e573d84 + crc: 0x7c75f372 type_id: 0x9f93bc17 full_name: "nfc_tm_activated" } @@ -350362,7 +350503,7 @@ elf_symbol { name: "nfc_tm_data_received" is_defined: true symbol_type: FUNCTION - crc: 0xcd75392f + crc: 0x08738dc3 type_id: 0x9ca83708 full_name: "nfc_tm_data_received" } @@ -350371,7 +350512,7 @@ elf_symbol { name: "nfc_tm_deactivated" is_defined: true symbol_type: FUNCTION - crc: 0x0d675a9a + crc: 0xd7f8782f type_id: 0x9cbd0aac full_name: "nfc_tm_deactivated" } @@ -350380,7 +350521,7 @@ elf_symbol { name: "nfc_unregister_device" is_defined: true symbol_type: FUNCTION - crc: 0x9c45977e + crc: 0x874ae1cf type_id: 0x11a5b810 full_name: "nfc_unregister_device" } @@ -350389,7 +350530,7 @@ elf_symbol { name: "nfc_vendor_cmd_reply" is_defined: true symbol_type: FUNCTION - crc: 0xd71ef041 + crc: 0x02d8c4d1 type_id: 0x9cd33969 full_name: "nfc_vendor_cmd_reply" } @@ -350470,7 +350611,7 @@ elf_symbol { name: "nonseekable_open" is_defined: true symbol_type: FUNCTION - crc: 0x3ea18428 + crc: 0xc70ec2a9 type_id: 0x9b022eae full_name: "nonseekable_open" } @@ -350479,7 +350620,7 @@ elf_symbol { name: "noop_llseek" is_defined: true symbol_type: FUNCTION - crc: 0x7b4e43e7 + crc: 0xf7ac99a4 type_id: 0x2d64ae3e full_name: "noop_llseek" } @@ -350569,7 +350710,7 @@ elf_symbol { name: "nvdimm_bus_register" is_defined: true symbol_type: FUNCTION - crc: 0x4157c93e + crc: 0x101d16bd type_id: 0x8c4206d5 full_name: "nvdimm_bus_register" } @@ -350578,7 +350719,7 @@ elf_symbol { name: "nvdimm_bus_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xdc6b28c4 + crc: 0xdf11fee9 type_id: 0x1be55e08 full_name: "nvdimm_bus_unregister" } @@ -350587,7 +350728,7 @@ elf_symbol { name: "nvdimm_pmem_region_create" is_defined: true symbol_type: FUNCTION - crc: 0xaa32d560 + crc: 0xc91e733c type_id: 0xe28e34fc full_name: "nvdimm_pmem_region_create" } @@ -350596,7 +350737,7 @@ elf_symbol { name: "nvmem_cell_get" is_defined: true symbol_type: FUNCTION - crc: 0xb1fb2cd0 + crc: 0x3171602b type_id: 0xbbe36438 full_name: "nvmem_cell_get" } @@ -350623,7 +350764,7 @@ elf_symbol { name: "nvmem_cell_read_u32" is_defined: true symbol_type: FUNCTION - crc: 0xa34c65db + crc: 0x41ce0cdb type_id: 0x9de0ab2c full_name: "nvmem_cell_read_u32" } @@ -350632,7 +350773,7 @@ elf_symbol { name: "nvmem_cell_read_variable_le_u32" is_defined: true symbol_type: FUNCTION - crc: 0x9a89ccd8 + crc: 0x87d4cd38 type_id: 0x9de0ab2c full_name: "nvmem_cell_read_variable_le_u32" } @@ -350677,7 +350818,7 @@ elf_symbol { name: "nvmem_register" is_defined: true symbol_type: FUNCTION - crc: 0xda3e0452 + crc: 0x5760ad62 type_id: 0x2eb1a24e full_name: "nvmem_register" } @@ -350695,7 +350836,7 @@ elf_symbol { name: "of_address_to_resource" is_defined: true symbol_type: FUNCTION - crc: 0x4309136d + crc: 0xeddae735 type_id: 0x910e73b6 full_name: "of_address_to_resource" } @@ -350704,7 +350845,7 @@ elf_symbol { name: "of_alias_get_id" is_defined: true symbol_type: FUNCTION - crc: 0xf074deab + crc: 0x536078e6 type_id: 0x90646116 full_name: "of_alias_get_id" } @@ -350713,7 +350854,7 @@ elf_symbol { name: "of_can_transceiver" is_defined: true symbol_type: FUNCTION - crc: 0xa475bc6e + crc: 0xd4e9f9f5 type_id: 0x1c31d966 full_name: "of_can_transceiver" } @@ -350722,7 +350863,7 @@ elf_symbol { name: "of_clk_add_hw_provider" is_defined: true symbol_type: FUNCTION - crc: 0x36817037 + crc: 0xab160dcd type_id: 0x906d7ec1 full_name: "of_clk_add_hw_provider" } @@ -350731,7 +350872,7 @@ elf_symbol { name: "of_clk_add_provider" is_defined: true symbol_type: FUNCTION - crc: 0x4b97e19e + crc: 0x9e3eeb75 type_id: 0x90150082 full_name: "of_clk_add_provider" } @@ -350740,7 +350881,7 @@ elf_symbol { name: "of_clk_del_provider" is_defined: true symbol_type: FUNCTION - crc: 0xa5c36b11 + crc: 0x8483bca0 type_id: 0x1d84917e full_name: "of_clk_del_provider" } @@ -350749,7 +350890,7 @@ elf_symbol { name: "of_clk_get" is_defined: true symbol_type: FUNCTION - crc: 0x53bf4160 + crc: 0x2b911786 type_id: 0xaa9fab30 full_name: "of_clk_get" } @@ -350758,7 +350899,7 @@ elf_symbol { name: "of_clk_get_by_name" is_defined: true symbol_type: FUNCTION - crc: 0x0b48a593 + crc: 0x96709071 type_id: 0xabfb6aa8 full_name: "of_clk_get_by_name" } @@ -350767,7 +350908,7 @@ elf_symbol { name: "of_clk_get_from_provider" is_defined: true symbol_type: FUNCTION - crc: 0xfe3de1f7 + crc: 0x5317dfb2 type_id: 0xa52e0ac1 full_name: "of_clk_get_from_provider" } @@ -350776,7 +350917,7 @@ elf_symbol { name: "of_clk_get_parent_name" is_defined: true symbol_type: FUNCTION - crc: 0xa6dc5f76 + crc: 0x474b56d1 type_id: 0x9f53b7fd full_name: "of_clk_get_parent_name" } @@ -350785,7 +350926,7 @@ elf_symbol { name: "of_clk_hw_onecell_get" is_defined: true symbol_type: FUNCTION - crc: 0x46579219 + crc: 0x1cb5c356 type_id: 0xdd32bce5 full_name: "of_clk_hw_onecell_get" } @@ -350794,7 +350935,7 @@ elf_symbol { name: "of_clk_hw_simple_get" is_defined: true symbol_type: FUNCTION - crc: 0xfde5a46e + crc: 0x1a6bf090 type_id: 0xdd32bce5 full_name: "of_clk_hw_simple_get" } @@ -350803,7 +350944,7 @@ elf_symbol { name: "of_clk_set_defaults" is_defined: true symbol_type: FUNCTION - crc: 0xe5945c5f + crc: 0xf06371fe type_id: 0x9129debd full_name: "of_clk_set_defaults" } @@ -350812,7 +350953,7 @@ elf_symbol { name: "of_clk_src_onecell_get" is_defined: true symbol_type: FUNCTION - crc: 0xc9be425c + crc: 0x7f4c36d4 type_id: 0xa54cff55 full_name: "of_clk_src_onecell_get" } @@ -350821,7 +350962,7 @@ elf_symbol { name: "of_clk_src_simple_get" is_defined: true symbol_type: FUNCTION - crc: 0xb5ea2fe7 + crc: 0xf7ce3a1a type_id: 0xa54cff55 full_name: "of_clk_src_simple_get" } @@ -350830,7 +350971,7 @@ elf_symbol { name: "of_count_phandle_with_args" is_defined: true symbol_type: FUNCTION - crc: 0xa70c16c3 + crc: 0x2f1b3cd2 type_id: 0x91fc06c4 full_name: "of_count_phandle_with_args" } @@ -350839,7 +350980,7 @@ elf_symbol { name: "of_cpu_node_to_id" is_defined: true symbol_type: FUNCTION - crc: 0xa6eabcba + crc: 0x433c5c3c type_id: 0x909c23c2 full_name: "of_cpu_node_to_id" } @@ -350848,7 +350989,7 @@ elf_symbol { name: "of_css" is_defined: true symbol_type: FUNCTION - crc: 0xe2bd2c6f + crc: 0x377beb40 type_id: 0xcde52a7c full_name: "of_css" } @@ -350857,7 +350998,7 @@ elf_symbol { name: "of_devfreq_cooling_register" is_defined: true symbol_type: FUNCTION - crc: 0x54604134 + crc: 0x5e2d6d60 type_id: 0x45319f70 full_name: "of_devfreq_cooling_register" } @@ -350866,7 +351007,7 @@ elf_symbol { name: "of_device_get_match_data" is_defined: true symbol_type: FUNCTION - crc: 0x8fddb766 + crc: 0x5517c960 type_id: 0x5846e63a full_name: "of_device_get_match_data" } @@ -350875,7 +351016,7 @@ elf_symbol { name: "of_device_is_available" is_defined: true symbol_type: FUNCTION - crc: 0x6a3466fc + crc: 0x91918f88 type_id: 0xf22f7816 full_name: "of_device_is_available" } @@ -350884,7 +351025,7 @@ elf_symbol { name: "of_device_is_compatible" is_defined: true symbol_type: FUNCTION - crc: 0x11d73d9c + crc: 0xfe1b57ad type_id: 0x91f382e9 full_name: "of_device_is_compatible" } @@ -350893,7 +351034,7 @@ elf_symbol { name: "of_device_modalias" is_defined: true symbol_type: FUNCTION - crc: 0xa43e0c3f + crc: 0x2adcd72c type_id: 0x1440a366 full_name: "of_device_modalias" } @@ -350902,7 +351043,7 @@ elf_symbol { name: "of_device_request_module" is_defined: true symbol_type: FUNCTION - crc: 0x1c614825 + crc: 0xe01717ed type_id: 0x9d16dd74 full_name: "of_device_request_module" } @@ -350911,7 +351052,7 @@ elf_symbol { name: "of_device_uevent_modalias" is_defined: true symbol_type: FUNCTION - crc: 0x475cbfe9 + crc: 0x36195d1c type_id: 0x9dc2a5d0 full_name: "of_device_uevent_modalias" } @@ -350920,7 +351061,7 @@ elf_symbol { name: "of_dma_configure_id" is_defined: true symbol_type: FUNCTION - crc: 0x4aedb5b4 + crc: 0xd14b4f44 type_id: 0x9ddc8abe full_name: "of_dma_configure_id" } @@ -350929,7 +351070,7 @@ elf_symbol { name: "of_dma_controller_free" is_defined: true symbol_type: FUNCTION - crc: 0x4074559f + crc: 0xbe897873 type_id: 0x1d84917e full_name: "of_dma_controller_free" } @@ -350938,7 +351079,7 @@ elf_symbol { name: "of_dma_controller_register" is_defined: true symbol_type: FUNCTION - crc: 0x6f566764 + crc: 0xf2547170 type_id: 0x903479ff full_name: "of_dma_controller_register" } @@ -350947,7 +351088,7 @@ elf_symbol { name: "of_dma_is_coherent" is_defined: true symbol_type: FUNCTION - crc: 0x5d20963c + crc: 0x3bf3c07b type_id: 0xf3b89be9 full_name: "of_dma_is_coherent" } @@ -350956,7 +351097,7 @@ elf_symbol { name: "of_drm_find_bridge" is_defined: true symbol_type: FUNCTION - crc: 0x49c43b8c + crc: 0x6bbb5a72 type_id: 0x9702dcaf full_name: "of_drm_find_bridge" } @@ -350965,7 +351106,7 @@ elf_symbol { name: "of_drm_find_panel" is_defined: true symbol_type: FUNCTION - crc: 0xab487ab4 + crc: 0x2d4c71ed type_id: 0x29f0e61e full_name: "of_drm_find_panel" } @@ -350974,7 +351115,7 @@ elf_symbol { name: "of_find_backlight_by_node" is_defined: true symbol_type: FUNCTION - crc: 0xbcbf8c13 + crc: 0x2f612d92 type_id: 0x71a7be0e full_name: "of_find_backlight_by_node" } @@ -350983,7 +351124,7 @@ elf_symbol { name: "of_find_compatible_node" is_defined: true symbol_type: FUNCTION - crc: 0x0be12d6a + crc: 0xa5b636a8 type_id: 0x7b18d8c2 full_name: "of_find_compatible_node" } @@ -350992,7 +351133,7 @@ elf_symbol { name: "of_find_device_by_node" is_defined: true symbol_type: FUNCTION - crc: 0xbe2e618d + crc: 0xb3cb9033 type_id: 0xc44c8212 full_name: "of_find_device_by_node" } @@ -351001,7 +351142,7 @@ elf_symbol { name: "of_find_i2c_adapter_by_node" is_defined: true symbol_type: FUNCTION - crc: 0x3054c938 + crc: 0x20e69bf1 type_id: 0x619a645f full_name: "of_find_i2c_adapter_by_node" } @@ -351010,7 +351151,7 @@ elf_symbol { name: "of_find_i2c_device_by_node" is_defined: true symbol_type: FUNCTION - crc: 0xffa74ec8 + crc: 0xdd4464fe type_id: 0x81af1888 full_name: "of_find_i2c_device_by_node" } @@ -351019,7 +351160,7 @@ elf_symbol { name: "of_find_matching_node_and_match" is_defined: true symbol_type: FUNCTION - crc: 0xb40e4c86 + crc: 0x742cc539 type_id: 0x7b05d834 full_name: "of_find_matching_node_and_match" } @@ -351028,7 +351169,7 @@ elf_symbol { name: "of_find_mipi_dsi_host_by_node" is_defined: true symbol_type: FUNCTION - crc: 0x3ea32f44 + crc: 0xfaecee4e type_id: 0x2c313d32 full_name: "of_find_mipi_dsi_host_by_node" } @@ -351037,7 +351178,7 @@ elf_symbol { name: "of_find_node_by_name" is_defined: true symbol_type: FUNCTION - crc: 0xfbdc8f31 + crc: 0x5ee7a8f2 type_id: 0x7b175cef full_name: "of_find_node_by_name" } @@ -351046,7 +351187,7 @@ elf_symbol { name: "of_find_node_by_phandle" is_defined: true symbol_type: FUNCTION - crc: 0xf6537e17 + crc: 0x5adcde8d type_id: 0x71fff4bd full_name: "of_find_node_by_phandle" } @@ -351055,7 +351196,7 @@ elf_symbol { name: "of_find_node_by_type" is_defined: true symbol_type: FUNCTION - crc: 0x78b38ec8 + crc: 0xdd88a90b type_id: 0x7b175cef full_name: "of_find_node_by_type" } @@ -351064,7 +351205,7 @@ elf_symbol { name: "of_find_node_opts_by_path" is_defined: true symbol_type: FUNCTION - crc: 0x6eec1166 + crc: 0x5f7eb941 type_id: 0x7963a3c3 full_name: "of_find_node_opts_by_path" } @@ -351073,7 +351214,7 @@ elf_symbol { name: "of_find_node_with_property" is_defined: true symbol_type: FUNCTION - crc: 0x970b901d + crc: 0x8b0fef38 type_id: 0x7b175cef full_name: "of_find_node_with_property" } @@ -351082,7 +351223,7 @@ elf_symbol { name: "of_find_property" is_defined: true symbol_type: FUNCTION - crc: 0x086a88fe + crc: 0xf12b9b47 type_id: 0xd587d547 full_name: "of_find_property" } @@ -351091,7 +351232,7 @@ elf_symbol { name: "of_fwnode_ops" is_defined: true symbol_type: OBJECT - crc: 0x013c7fca + crc: 0x50bbc915 type_id: 0xe4207e6d full_name: "of_fwnode_ops" } @@ -351100,7 +351241,7 @@ elf_symbol { name: "of_genpd_add_provider_onecell" is_defined: true symbol_type: FUNCTION - crc: 0xc2ed8f21 + crc: 0x9b168415 type_id: 0x90ff140b full_name: "of_genpd_add_provider_onecell" } @@ -351109,7 +351250,7 @@ elf_symbol { name: "of_genpd_add_provider_simple" is_defined: true symbol_type: FUNCTION - crc: 0xff0f64bb + crc: 0x75aeeca2 type_id: 0x908663be full_name: "of_genpd_add_provider_simple" } @@ -351118,7 +351259,7 @@ elf_symbol { name: "of_genpd_del_provider" is_defined: true symbol_type: FUNCTION - crc: 0x402a4418 + crc: 0x03173eb1 type_id: 0x1d84917e full_name: "of_genpd_del_provider" } @@ -351127,7 +351268,7 @@ elf_symbol { name: "of_get_child_by_name" is_defined: true symbol_type: FUNCTION - crc: 0xcded08e6 + crc: 0xd1e977c3 type_id: 0x7a80bf10 full_name: "of_get_child_by_name" } @@ -351136,7 +351277,7 @@ elf_symbol { name: "of_get_compatible_child" is_defined: true symbol_type: FUNCTION - crc: 0x0cbe130b + crc: 0x9df2363c type_id: 0x7a80bf10 full_name: "of_get_compatible_child" } @@ -351145,7 +351286,7 @@ elf_symbol { name: "of_get_cpu_node" is_defined: true symbol_type: FUNCTION - crc: 0xdef98395 + crc: 0xe0ff0a79 type_id: 0x6f542f9d full_name: "of_get_cpu_node" } @@ -351154,7 +351295,7 @@ elf_symbol { name: "of_get_i2c_adapter_by_node" is_defined: true symbol_type: FUNCTION - crc: 0xc285916f + crc: 0xaaad02f5 type_id: 0x619a645f full_name: "of_get_i2c_adapter_by_node" } @@ -351163,7 +351304,7 @@ elf_symbol { name: "of_get_mac_address" is_defined: true symbol_type: FUNCTION - crc: 0x1044068c + crc: 0x65748686 type_id: 0x909f3f56 full_name: "of_get_mac_address" } @@ -351172,7 +351313,7 @@ elf_symbol { name: "of_get_named_gpio_flags" is_defined: true symbol_type: FUNCTION - crc: 0x00ee3d1d + crc: 0x22ce254f type_id: 0x91ea80a1 full_name: "of_get_named_gpio_flags" } @@ -351181,7 +351322,7 @@ elf_symbol { name: "of_get_next_available_child" is_defined: true symbol_type: FUNCTION - crc: 0x5b29bb54 + crc: 0x953bf619 type_id: 0x7aa931ca full_name: "of_get_next_available_child" } @@ -351190,7 +351331,7 @@ elf_symbol { name: "of_get_next_child" is_defined: true symbol_type: FUNCTION - crc: 0xa36bc453 + crc: 0x7868216c type_id: 0x7aa931ca full_name: "of_get_next_child" } @@ -351199,7 +351340,7 @@ elf_symbol { name: "of_get_next_parent" is_defined: true symbol_type: FUNCTION - crc: 0x34d266fd + crc: 0x9708c930 type_id: 0x7bef1e3b full_name: "of_get_next_parent" } @@ -351208,7 +351349,7 @@ elf_symbol { name: "of_get_parent" is_defined: true symbol_type: FUNCTION - crc: 0xef26b41f + crc: 0x0a50d0bd type_id: 0x7a78fdc4 full_name: "of_get_parent" } @@ -351217,7 +351358,7 @@ elf_symbol { name: "of_get_property" is_defined: true symbol_type: FUNCTION - crc: 0x9507ac45 + crc: 0x464630ed type_id: 0x5bd8cd40 full_name: "of_get_property" } @@ -351226,7 +351367,7 @@ elf_symbol { name: "of_get_regulator_init_data" is_defined: true symbol_type: FUNCTION - crc: 0x9fb9bab2 + crc: 0x852384a3 type_id: 0xecebfa40 full_name: "of_get_regulator_init_data" } @@ -351235,7 +351376,7 @@ elf_symbol { name: "of_get_required_opp_performance_state" is_defined: true symbol_type: FUNCTION - crc: 0x0076382f + crc: 0x5ce78d1a type_id: 0x9100a08e full_name: "of_get_required_opp_performance_state" } @@ -351244,7 +351385,7 @@ elf_symbol { name: "of_graph_get_endpoint_by_regs" is_defined: true symbol_type: FUNCTION - crc: 0x38b8c1ac + crc: 0xe90a415e type_id: 0x7bfdb6bc full_name: "of_graph_get_endpoint_by_regs" } @@ -351253,7 +351394,7 @@ elf_symbol { name: "of_graph_get_next_endpoint" is_defined: true symbol_type: FUNCTION - crc: 0x3a562bbb + crc: 0xec9936e9 type_id: 0x7aa931ca full_name: "of_graph_get_next_endpoint" } @@ -351262,7 +351403,7 @@ elf_symbol { name: "of_graph_get_port_parent" is_defined: true symbol_type: FUNCTION - crc: 0x6a88a88e + crc: 0xf5d7750e type_id: 0x7bef1e3b full_name: "of_graph_get_port_parent" } @@ -351271,7 +351412,7 @@ elf_symbol { name: "of_graph_get_remote_endpoint" is_defined: true symbol_type: FUNCTION - crc: 0xbad5feef + crc: 0x2c1eb63f type_id: 0x7a78fdc4 full_name: "of_graph_get_remote_endpoint" } @@ -351280,7 +351421,7 @@ elf_symbol { name: "of_graph_get_remote_node" is_defined: true symbol_type: FUNCTION - crc: 0x4158a61c + crc: 0x15c8d7d9 type_id: 0x796e9f62 full_name: "of_graph_get_remote_node" } @@ -351289,7 +351430,7 @@ elf_symbol { name: "of_graph_get_remote_port_parent" is_defined: true symbol_type: FUNCTION - crc: 0x2f6a626f + crc: 0x96f589fc type_id: 0x7a78fdc4 full_name: "of_graph_get_remote_port_parent" } @@ -351298,7 +351439,7 @@ elf_symbol { name: "of_graph_is_present" is_defined: true symbol_type: FUNCTION - crc: 0xa012f0c4 + crc: 0xc2cf4b40 type_id: 0xf22f7816 full_name: "of_graph_is_present" } @@ -351307,7 +351448,7 @@ elf_symbol { name: "of_graph_parse_endpoint" is_defined: true symbol_type: FUNCTION - crc: 0x8a3d39f0 + crc: 0x820c1bd8 type_id: 0x9104fd7b full_name: "of_graph_parse_endpoint" } @@ -351316,7 +351457,7 @@ elf_symbol { name: "of_hwspin_lock_get_id" is_defined: true symbol_type: FUNCTION - crc: 0xe83ccee5 + crc: 0x901d5fd6 type_id: 0x9100a08e full_name: "of_hwspin_lock_get_id" } @@ -351325,7 +351466,7 @@ elf_symbol { name: "of_icc_get" is_defined: true symbol_type: FUNCTION - crc: 0xa75a3df4 + crc: 0x88ce0f0a type_id: 0x2bcaa9c8 full_name: "of_icc_get" } @@ -351334,7 +351475,7 @@ elf_symbol { name: "of_icc_get_from_provider" is_defined: true symbol_type: FUNCTION - crc: 0x091669bc + crc: 0x7e90f50f type_id: 0x2d456d1f full_name: "of_icc_get_from_provider" } @@ -351343,7 +351484,7 @@ elf_symbol { name: "of_icc_xlate_onecell" is_defined: true symbol_type: FUNCTION - crc: 0xdbf6189d + crc: 0xe7177856 type_id: 0xbce9e1eb full_name: "of_icc_xlate_onecell" } @@ -351352,7 +351493,7 @@ elf_symbol { name: "of_iomap" is_defined: true symbol_type: FUNCTION - crc: 0xd8f382da + crc: 0x02909fcc type_id: 0x5a16f250 full_name: "of_iomap" } @@ -351361,7 +351502,7 @@ elf_symbol { name: "of_irq_find_parent" is_defined: true symbol_type: FUNCTION - crc: 0xdfeedaa9 + crc: 0x68aaedcc type_id: 0x7bef1e3b full_name: "of_irq_find_parent" } @@ -351370,7 +351511,7 @@ elf_symbol { name: "of_irq_get" is_defined: true symbol_type: FUNCTION - crc: 0xd3b2c38a + crc: 0xd0998ae5 type_id: 0x9100a08e full_name: "of_irq_get" } @@ -351379,7 +351520,7 @@ elf_symbol { name: "of_irq_get_byname" is_defined: true symbol_type: FUNCTION - crc: 0xeddc1474 + crc: 0xfcadacfc type_id: 0x90646116 full_name: "of_irq_get_byname" } @@ -351388,7 +351529,7 @@ elf_symbol { name: "of_irq_parse_one" is_defined: true symbol_type: FUNCTION - crc: 0x92135acc + crc: 0xd0816c48 type_id: 0x9103916c full_name: "of_irq_parse_one" } @@ -351397,7 +351538,7 @@ elf_symbol { name: "of_irq_to_resource" is_defined: true symbol_type: FUNCTION - crc: 0xdbb40773 + crc: 0xe9fda57b type_id: 0x910e73b6 full_name: "of_irq_to_resource" } @@ -351415,7 +351556,7 @@ elf_symbol { name: "of_match_device" is_defined: true symbol_type: FUNCTION - crc: 0x48402df9 + crc: 0x7f9df764 type_id: 0xd082596f full_name: "of_match_device" } @@ -351424,25 +351565,16 @@ elf_symbol { name: "of_match_node" is_defined: true symbol_type: FUNCTION - crc: 0xd6d1a607 + crc: 0x18ebaec9 type_id: 0xd0b47295 full_name: "of_match_node" } -elf_symbol { - id: 0x71e8db53 - name: "of_mdiobus_register" - is_defined: true - symbol_type: FUNCTION - crc: 0x051552f4 - type_id: 0x90246b11 - full_name: "of_mdiobus_register" -} elf_symbol { id: 0x23d1db24 name: "of_modalias_node" is_defined: true symbol_type: FUNCTION - crc: 0x60751d46 + crc: 0xd464c52a type_id: 0x9097e46d full_name: "of_modalias_node" } @@ -351451,7 +351583,7 @@ elf_symbol { name: "of_n_addr_cells" is_defined: true symbol_type: FUNCTION - crc: 0x19edf614 + crc: 0x9417e40f type_id: 0x909c23c2 full_name: "of_n_addr_cells" } @@ -351460,7 +351592,7 @@ elf_symbol { name: "of_n_size_cells" is_defined: true symbol_type: FUNCTION - crc: 0x2380b7dd + crc: 0x4c07e36e type_id: 0x909c23c2 full_name: "of_n_size_cells" } @@ -351469,7 +351601,7 @@ elf_symbol { name: "of_node_name_eq" is_defined: true symbol_type: FUNCTION - crc: 0x453fbe77 + crc: 0xc8cf955b type_id: 0xf2d73ac2 full_name: "of_node_name_eq" } @@ -351478,7 +351610,7 @@ elf_symbol { name: "of_nvmem_device_get" is_defined: true symbol_type: FUNCTION - crc: 0x19e12074 + crc: 0xa53b92e0 type_id: 0x2c22370c full_name: "of_nvmem_device_get" } @@ -351487,7 +351619,7 @@ elf_symbol { name: "of_phandle_iterator_init" is_defined: true symbol_type: FUNCTION - crc: 0x5a684a21 + crc: 0xb08b547f type_id: 0x94623262 full_name: "of_phandle_iterator_init" } @@ -351496,7 +351628,7 @@ elf_symbol { name: "of_phandle_iterator_next" is_defined: true symbol_type: FUNCTION - crc: 0x3a285ffc + crc: 0x547c9152 type_id: 0x94a5e5f4 full_name: "of_phandle_iterator_next" } @@ -351505,7 +351637,7 @@ elf_symbol { name: "of_phy_is_fixed_link" is_defined: true symbol_type: FUNCTION - crc: 0x75985e72 + crc: 0x419dc133 type_id: 0xf3b89be9 full_name: "of_phy_is_fixed_link" } @@ -351514,7 +351646,7 @@ elf_symbol { name: "of_phy_simple_xlate" is_defined: true symbol_type: FUNCTION - crc: 0x8a37e601 + crc: 0x9046fc17 type_id: 0x119fef8e full_name: "of_phy_simple_xlate" } @@ -351523,7 +351655,7 @@ elf_symbol { name: "of_platform_depopulate" is_defined: true symbol_type: FUNCTION - crc: 0xebd6113c + crc: 0x51843bab type_id: 0x100e6fc8 full_name: "of_platform_depopulate" } @@ -351532,7 +351664,7 @@ elf_symbol { name: "of_platform_device_create" is_defined: true symbol_type: FUNCTION - crc: 0x4f8b8db1 + crc: 0x9cfc5d5a type_id: 0xc4b456f8 full_name: "of_platform_device_create" } @@ -351541,7 +351673,7 @@ elf_symbol { name: "of_platform_device_destroy" is_defined: true symbol_type: FUNCTION - crc: 0x0c51d114 + crc: 0x74e4301d type_id: 0x9d7428e0 full_name: "of_platform_device_destroy" } @@ -351550,7 +351682,7 @@ elf_symbol { name: "of_platform_populate" is_defined: true symbol_type: FUNCTION - crc: 0xf5072c65 + crc: 0xdacfed6c type_id: 0x90795841 full_name: "of_platform_populate" } @@ -351559,7 +351691,7 @@ elf_symbol { name: "of_pm_clk_add_clks" is_defined: true symbol_type: FUNCTION - crc: 0x44cf7d3e + crc: 0x97d10e5b type_id: 0x9d16dd74 full_name: "of_pm_clk_add_clks" } @@ -351568,7 +351700,7 @@ elf_symbol { name: "of_prop_next_string" is_defined: true symbol_type: FUNCTION - crc: 0xf1701fdc + crc: 0x84b306d9 type_id: 0x927dc411 full_name: "of_prop_next_string" } @@ -351577,7 +351709,7 @@ elf_symbol { name: "of_prop_next_u32" is_defined: true symbol_type: FUNCTION - crc: 0xee11fafd + crc: 0x834a0770 type_id: 0x21ebbce2 full_name: "of_prop_next_u32" } @@ -351586,7 +351718,7 @@ elf_symbol { name: "of_property_count_elems_of_size" is_defined: true symbol_type: FUNCTION - crc: 0x2d85982c + crc: 0xecc331d7 type_id: 0x91ea4add full_name: "of_property_count_elems_of_size" } @@ -351595,7 +351727,7 @@ elf_symbol { name: "of_property_match_string" is_defined: true symbol_type: FUNCTION - crc: 0x5c66a371 + crc: 0x913e5422 type_id: 0x91fc06c4 full_name: "of_property_match_string" } @@ -351604,7 +351736,7 @@ elf_symbol { name: "of_property_read_string" is_defined: true symbol_type: FUNCTION - crc: 0xfb7728d9 + crc: 0xfe566229 type_id: 0x91f2c7ec full_name: "of_property_read_string" } @@ -351613,7 +351745,7 @@ elf_symbol { name: "of_property_read_string_helper" is_defined: true symbol_type: FUNCTION - crc: 0x01e87026 + crc: 0x4a14b851 type_id: 0x91f10ef1 full_name: "of_property_read_string_helper" } @@ -351622,7 +351754,7 @@ elf_symbol { name: "of_property_read_u32_index" is_defined: true symbol_type: FUNCTION - crc: 0x4551c602 + crc: 0xc8ea4049 type_id: 0x91c123ab full_name: "of_property_read_u32_index" } @@ -351631,7 +351763,7 @@ elf_symbol { name: "of_property_read_u64" is_defined: true symbol_type: FUNCTION - crc: 0x3cdb64c7 + crc: 0xe82c5643 type_id: 0x91f804d4 full_name: "of_property_read_u64" } @@ -351640,7 +351772,7 @@ elf_symbol { name: "of_property_read_u64_index" is_defined: true symbol_type: FUNCTION - crc: 0x0357df98 + crc: 0xfca10b4f type_id: 0x91c17880 full_name: "of_property_read_u64_index" } @@ -351649,7 +351781,7 @@ elf_symbol { name: "of_property_read_variable_u16_array" is_defined: true symbol_type: FUNCTION - crc: 0x2e04c7dc + crc: 0x32d51260 type_id: 0x91fbdfe4 full_name: "of_property_read_variable_u16_array" } @@ -351658,7 +351790,7 @@ elf_symbol { name: "of_property_read_variable_u32_array" is_defined: true symbol_type: FUNCTION - crc: 0xb581ddae + crc: 0xf30a053e type_id: 0x91fe5bbd full_name: "of_property_read_variable_u32_array" } @@ -351667,7 +351799,7 @@ elf_symbol { name: "of_property_read_variable_u64_array" is_defined: true symbol_type: FUNCTION - crc: 0x98b9fecd + crc: 0x2224ea66 type_id: 0x91fbe90c full_name: "of_property_read_variable_u64_array" } @@ -351676,7 +351808,7 @@ elf_symbol { name: "of_property_read_variable_u8_array" is_defined: true symbol_type: FUNCTION - crc: 0x43b464a0 + crc: 0xf93cf98f type_id: 0x91f05ef8 full_name: "of_property_read_variable_u8_array" } @@ -351685,7 +351817,7 @@ elf_symbol { name: "of_reserved_mem_device_init_by_idx" is_defined: true symbol_type: FUNCTION - crc: 0x3a6cb0eb + crc: 0x10a5785b type_id: 0x9dded94e full_name: "of_reserved_mem_device_init_by_idx" } @@ -351694,7 +351826,7 @@ elf_symbol { name: "of_reserved_mem_device_release" is_defined: true symbol_type: FUNCTION - crc: 0x4b842cd8 + crc: 0x2a95f3fc type_id: 0x100e6fc8 full_name: "of_reserved_mem_device_release" } @@ -351703,7 +351835,7 @@ elf_symbol { name: "of_reserved_mem_lookup" is_defined: true symbol_type: FUNCTION - crc: 0x541b1357 + crc: 0x43f6af2d type_id: 0x3330b35a full_name: "of_reserved_mem_lookup" } @@ -351712,7 +351844,7 @@ elf_symbol { name: "of_root" is_defined: true symbol_type: OBJECT - crc: 0x56c7985e + crc: 0x8e6ec726 type_id: 0x347303b4 full_name: "of_root" } @@ -351721,7 +351853,7 @@ elf_symbol { name: "of_thermal_get_ntrips" is_defined: true symbol_type: FUNCTION - crc: 0x08082d51 + crc: 0x685c291e type_id: 0x9439b74e full_name: "of_thermal_get_ntrips" } @@ -351730,7 +351862,7 @@ elf_symbol { name: "of_thermal_get_trip_points" is_defined: true symbol_type: FUNCTION - crc: 0xdaae9450 + crc: 0x43d15a4e type_id: 0x954e493c full_name: "of_thermal_get_trip_points" } @@ -351739,7 +351871,7 @@ elf_symbol { name: "of_thermal_is_trip_valid" is_defined: true symbol_type: FUNCTION - crc: 0x33867145 + crc: 0x251959da type_id: 0xf6818c29 full_name: "of_thermal_is_trip_valid" } @@ -351748,7 +351880,7 @@ elf_symbol { name: "of_translate_address" is_defined: true symbol_type: FUNCTION - crc: 0xd6e0310d + crc: 0xd5610069 type_id: 0x5a09df06 full_name: "of_translate_address" } @@ -351757,7 +351889,7 @@ elf_symbol { name: "of_usb_host_tpl_support" is_defined: true symbol_type: FUNCTION - crc: 0x8ddee3a7 + crc: 0x117eb6fc type_id: 0xf3b89be9 full_name: "of_usb_host_tpl_support" } @@ -351793,7 +351925,7 @@ elf_symbol { name: "open_candev" is_defined: true symbol_type: FUNCTION - crc: 0x2f583bc9 + crc: 0xfd3c2706 type_id: 0x91296bda full_name: "open_candev" } @@ -351829,7 +351961,7 @@ elf_symbol { name: "page_endio" is_defined: true symbol_type: FUNCTION - crc: 0xbdc6ddf9 + crc: 0x59ef63b6 type_id: 0x1094b37f full_name: "page_endio" } @@ -351838,7 +351970,7 @@ elf_symbol { name: "page_ext_get" is_defined: true symbol_type: FUNCTION - crc: 0x7f199b48 + crc: 0x60c331fd namespace: "MINIDUMP" type_id: 0xb6d2e6f8 full_name: "page_ext_get" @@ -351886,7 +352018,7 @@ elf_symbol { name: "page_mapping" is_defined: true symbol_type: FUNCTION - crc: 0x3b9c5cdb + crc: 0x077e7978 type_id: 0x6a8ce717 full_name: "page_mapping" } @@ -351895,7 +352027,7 @@ elf_symbol { name: "page_pool_alloc_pages" is_defined: true symbol_type: FUNCTION - crc: 0xd4c70d89 + crc: 0x935988d7 type_id: 0xba8f5ef0 full_name: "page_pool_alloc_pages" } @@ -351904,7 +352036,7 @@ elf_symbol { name: "page_pool_create" is_defined: true symbol_type: FUNCTION - crc: 0xee6d3e6a + crc: 0x7f84d04b type_id: 0xf18d022a full_name: "page_pool_create" } @@ -351913,7 +352045,7 @@ elf_symbol { name: "page_pool_destroy" is_defined: true symbol_type: FUNCTION - crc: 0x6da36eed + crc: 0xad776da4 type_id: 0x1449649c full_name: "page_pool_destroy" } @@ -351922,7 +352054,7 @@ elf_symbol { name: "page_pool_put_defragged_page" is_defined: true symbol_type: FUNCTION - crc: 0xa26cb189 + crc: 0x10b209f4 type_id: 0x1443bd42 full_name: "page_pool_put_defragged_page" } @@ -351931,7 +352063,7 @@ elf_symbol { name: "page_pool_release_page" is_defined: true symbol_type: FUNCTION - crc: 0xb422ae1f + crc: 0xd2b8ba01 type_id: 0x145369e6 full_name: "page_pool_release_page" } @@ -351940,7 +352072,7 @@ elf_symbol { name: "page_relinquish" is_defined: true symbol_type: FUNCTION - crc: 0x5ab65f00 + crc: 0xa0d5d94f type_id: 0x11388634 full_name: "page_relinquish" } @@ -351994,7 +352126,7 @@ elf_symbol { name: "param_array_ops" is_defined: true symbol_type: OBJECT - crc: 0x8d44605b + crc: 0x95389aa9 type_id: 0xd865d5b5 full_name: "param_array_ops" } @@ -352003,7 +352135,7 @@ elf_symbol { name: "param_get_int" is_defined: true symbol_type: FUNCTION - crc: 0x9104a302 + crc: 0xb7cd6b87 type_id: 0x9c660c95 full_name: "param_get_int" } @@ -352012,7 +352144,7 @@ elf_symbol { name: "param_get_string" is_defined: true symbol_type: FUNCTION - crc: 0xd53b1fa6 + crc: 0x8c5cbceb type_id: 0x9c660c95 full_name: "param_get_string" } @@ -352021,7 +352153,7 @@ elf_symbol { name: "param_get_uint" is_defined: true symbol_type: FUNCTION - crc: 0xc71f8b07 + crc: 0x1f214db2 type_id: 0x9c660c95 full_name: "param_get_uint" } @@ -352030,7 +352162,7 @@ elf_symbol { name: "param_get_ullong" is_defined: true symbol_type: FUNCTION - crc: 0x4bda20ca + crc: 0x09f673ec type_id: 0x9c660c95 full_name: "param_get_ullong" } @@ -352039,7 +352171,7 @@ elf_symbol { name: "param_ops_bool" is_defined: true symbol_type: OBJECT - crc: 0xa2e96cbe + crc: 0x6954e969 type_id: 0xd865d5b5 full_name: "param_ops_bool" } @@ -352048,7 +352180,7 @@ elf_symbol { name: "param_ops_byte" is_defined: true symbol_type: OBJECT - crc: 0x162a9325 + crc: 0xdd9716f2 type_id: 0xd865d5b5 full_name: "param_ops_byte" } @@ -352057,7 +352189,7 @@ elf_symbol { name: "param_ops_charp" is_defined: true symbol_type: OBJECT - crc: 0xf0b7130a + crc: 0xe8cbe9f8 type_id: 0xd865d5b5 full_name: "param_ops_charp" } @@ -352066,7 +352198,7 @@ elf_symbol { name: "param_ops_int" is_defined: true symbol_type: OBJECT - crc: 0x81e89732 + crc: 0x5ddecc82 type_id: 0xd865d5b5 full_name: "param_ops_int" } @@ -352075,7 +352207,7 @@ elf_symbol { name: "param_ops_long" is_defined: true symbol_type: OBJECT - crc: 0xffef6123 + crc: 0x3452e4f4 type_id: 0xd865d5b5 full_name: "param_ops_long" } @@ -352084,7 +352216,7 @@ elf_symbol { name: "param_ops_string" is_defined: true symbol_type: OBJECT - crc: 0x135ba512 + crc: 0x40f04ad8 type_id: 0xd865d5b5 full_name: "param_ops_string" } @@ -352093,7 +352225,7 @@ elf_symbol { name: "param_ops_uint" is_defined: true symbol_type: OBJECT - crc: 0xd69b8a9e + crc: 0x1d260f49 type_id: 0xd865d5b5 full_name: "param_ops_uint" } @@ -352102,7 +352234,7 @@ elf_symbol { name: "param_ops_ullong" is_defined: true symbol_type: OBJECT - crc: 0x65b566e1 + crc: 0x361e892b type_id: 0xd865d5b5 full_name: "param_ops_ullong" } @@ -352111,7 +352243,7 @@ elf_symbol { name: "param_ops_ulong" is_defined: true symbol_type: OBJECT - crc: 0x20d8fdfd + crc: 0x38a4070f type_id: 0xd865d5b5 full_name: "param_ops_ulong" } @@ -352120,7 +352252,7 @@ elf_symbol { name: "param_set_bool" is_defined: true symbol_type: FUNCTION - crc: 0x6d7c144d + crc: 0x76f258dc type_id: 0x92c2d86d full_name: "param_set_bool" } @@ -352129,7 +352261,7 @@ elf_symbol { name: "param_set_copystring" is_defined: true symbol_type: FUNCTION - crc: 0x759a497b + crc: 0x27e8190b type_id: 0x92c2d86d full_name: "param_set_copystring" } @@ -352138,7 +352270,7 @@ elf_symbol { name: "param_set_int" is_defined: true symbol_type: FUNCTION - crc: 0xf71ee84c + crc: 0xabbdef5d type_id: 0x92c2d86d full_name: "param_set_int" } @@ -352147,7 +352279,7 @@ elf_symbol { name: "param_set_uint" is_defined: true symbol_type: FUNCTION - crc: 0xdd40362a + crc: 0x9a481da6 type_id: 0x92c2d86d full_name: "param_set_uint" } @@ -352156,7 +352288,7 @@ elf_symbol { name: "passthru_features_check" is_defined: true symbol_type: FUNCTION - crc: 0x44165bc2 + crc: 0xe166add5 type_id: 0xa739c6fb full_name: "passthru_features_check" } @@ -352165,7 +352297,7 @@ elf_symbol { name: "pci_aer_clear_nonfatal_status" is_defined: true symbol_type: FUNCTION - crc: 0x41fe3554 + crc: 0x9bcbb6b0 type_id: 0x99f942bc full_name: "pci_aer_clear_nonfatal_status" } @@ -352174,7 +352306,7 @@ elf_symbol { name: "pci_alloc_irq_vectors_affinity" is_defined: true symbol_type: FUNCTION - crc: 0x4aabfe17 + crc: 0x733ac994 type_id: 0x98ff2dd7 full_name: "pci_alloc_irq_vectors_affinity" } @@ -352183,7 +352315,7 @@ elf_symbol { name: "pci_assign_resource" is_defined: true symbol_type: FUNCTION - crc: 0x3e286ac9 + crc: 0x9daa5d1b type_id: 0x9865c1f0 full_name: "pci_assign_resource" } @@ -352192,7 +352324,7 @@ elf_symbol { name: "pci_bus_type" is_defined: true symbol_type: OBJECT - crc: 0xca92011a + crc: 0x48f6d369 type_id: 0x257935aa full_name: "pci_bus_type" } @@ -352201,7 +352333,7 @@ elf_symbol { name: "pci_clear_master" is_defined: true symbol_type: FUNCTION - crc: 0xcad32e14 + crc: 0xf0a670c5 type_id: 0x14e1f000 full_name: "pci_clear_master" } @@ -352210,7 +352342,7 @@ elf_symbol { name: "pci_dev_get" is_defined: true symbol_type: FUNCTION - crc: 0xb8e27dc2 + crc: 0xaddb4c8b type_id: 0x832143d7 full_name: "pci_dev_get" } @@ -352228,7 +352360,7 @@ elf_symbol { name: "pci_dev_put" is_defined: true symbol_type: FUNCTION - crc: 0xe74cf46c + crc: 0x925fe0d1 type_id: 0x14e1f000 full_name: "pci_dev_put" } @@ -352237,7 +352369,7 @@ elf_symbol { name: "pci_device_group" is_defined: true symbol_type: FUNCTION - crc: 0xd46f7ce6 + crc: 0x9bb26050 type_id: 0x7e204efc full_name: "pci_device_group" } @@ -352246,7 +352378,7 @@ elf_symbol { name: "pci_device_is_present" is_defined: true symbol_type: FUNCTION - crc: 0x032934f9 + crc: 0x069c1bb6 type_id: 0xfaddfa97 full_name: "pci_device_is_present" } @@ -352255,7 +352387,7 @@ elf_symbol { name: "pci_disable_device" is_defined: true symbol_type: FUNCTION - crc: 0xe1c7049d + crc: 0x50d66b7f type_id: 0x14e1f000 full_name: "pci_disable_device" } @@ -352264,7 +352396,7 @@ elf_symbol { name: "pci_disable_link_state" is_defined: true symbol_type: FUNCTION - crc: 0x0f721350 + crc: 0xa95d2bb5 type_id: 0x9865c1f0 full_name: "pci_disable_link_state" } @@ -352273,7 +352405,7 @@ elf_symbol { name: "pci_disable_msi" is_defined: true symbol_type: FUNCTION - crc: 0x8f00e4ac + crc: 0x944fc86b type_id: 0x14e1f000 full_name: "pci_disable_msi" } @@ -352282,7 +352414,7 @@ elf_symbol { name: "pci_disable_sriov" is_defined: true symbol_type: FUNCTION - crc: 0x465013f4 + crc: 0xa9490e6b type_id: 0x14e1f000 full_name: "pci_disable_sriov" } @@ -352291,7 +352423,7 @@ elf_symbol { name: "pci_enable_device" is_defined: true symbol_type: FUNCTION - crc: 0x1b1e67a5 + crc: 0x86883061 type_id: 0x99f942bc full_name: "pci_enable_device" } @@ -352300,7 +352432,7 @@ elf_symbol { name: "pci_enable_msi" is_defined: true symbol_type: FUNCTION - crc: 0x7d77d42e + crc: 0x817f0438 type_id: 0x99f942bc full_name: "pci_enable_msi" } @@ -352309,7 +352441,7 @@ elf_symbol { name: "pci_enable_pcie_error_reporting" is_defined: true symbol_type: FUNCTION - crc: 0x34f98dff + crc: 0xf6d08172 type_id: 0x99f942bc full_name: "pci_enable_pcie_error_reporting" } @@ -352318,7 +352450,7 @@ elf_symbol { name: "pci_enable_sriov" is_defined: true symbol_type: FUNCTION - crc: 0x8ed36371 + crc: 0xb63bc761 type_id: 0x9865c1f0 full_name: "pci_enable_sriov" } @@ -352327,7 +352459,7 @@ elf_symbol { name: "pci_enable_wake" is_defined: true symbol_type: FUNCTION - crc: 0xaefdbd79 + crc: 0xca230da8 type_id: 0x999ac92f full_name: "pci_enable_wake" } @@ -352336,7 +352468,7 @@ elf_symbol { name: "pci_find_bus" is_defined: true symbol_type: FUNCTION - crc: 0xaf1ce34f + crc: 0x13241b67 type_id: 0xd88df0fd full_name: "pci_find_bus" } @@ -352345,7 +352477,7 @@ elf_symbol { name: "pci_find_capability" is_defined: true symbol_type: FUNCTION - crc: 0x09a6a8ad + crc: 0x1d0636ac type_id: 0x56af9ca8 full_name: "pci_find_capability" } @@ -352354,7 +352486,7 @@ elf_symbol { name: "pci_find_ext_capability" is_defined: true symbol_type: FUNCTION - crc: 0x21d38548 + crc: 0x6a934d94 type_id: 0x04ce0b6f full_name: "pci_find_ext_capability" } @@ -352363,7 +352495,7 @@ elf_symbol { name: "pci_find_next_capability" is_defined: true symbol_type: FUNCTION - crc: 0x945d9381 + crc: 0xf4f61334 type_id: 0x578fa618 full_name: "pci_find_next_capability" } @@ -352372,7 +352504,7 @@ elf_symbol { name: "pci_free_irq_vectors" is_defined: true symbol_type: FUNCTION - crc: 0x2bdb6adf + crc: 0x9e05d60d type_id: 0x14e1f000 full_name: "pci_free_irq_vectors" } @@ -352381,7 +352513,7 @@ elf_symbol { name: "pci_get_device" is_defined: true symbol_type: FUNCTION - crc: 0x192c06bc + crc: 0x9ba8d665 type_id: 0x972bd7f2 full_name: "pci_get_device" } @@ -352390,7 +352522,7 @@ elf_symbol { name: "pci_get_domain_bus_and_slot" is_defined: true symbol_type: FUNCTION - crc: 0x2d3ee588 + crc: 0xafba3551 type_id: 0x9f97a24e full_name: "pci_get_domain_bus_and_slot" } @@ -352399,7 +352531,7 @@ elf_symbol { name: "pci_get_slot" is_defined: true symbol_type: FUNCTION - crc: 0xa327e3d1 + crc: 0x0d63ba7e type_id: 0x8e8c9c93 full_name: "pci_get_slot" } @@ -352408,7 +352540,7 @@ elf_symbol { name: "pci_host_probe" is_defined: true symbol_type: FUNCTION - crc: 0xd4d11d33 + crc: 0x4669af7a type_id: 0x93acae9b full_name: "pci_host_probe" } @@ -352417,7 +352549,7 @@ elf_symbol { name: "pci_iomap" is_defined: true symbol_type: FUNCTION - crc: 0x00337f4a + crc: 0x54bf12ba type_id: 0x537f4e77 full_name: "pci_iomap" } @@ -352426,7 +352558,7 @@ elf_symbol { name: "pci_iomap_range" is_defined: true symbol_type: FUNCTION - crc: 0xe386507b + crc: 0x4014a4b0 type_id: 0x537f83a2 full_name: "pci_iomap_range" } @@ -352435,7 +352567,7 @@ elf_symbol { name: "pci_iounmap" is_defined: true symbol_type: FUNCTION - crc: 0x62db1411 + crc: 0xf748ecf7 type_id: 0x14830594 full_name: "pci_iounmap" } @@ -352444,7 +352576,7 @@ elf_symbol { name: "pci_irq_get_affinity" is_defined: true symbol_type: FUNCTION - crc: 0xfaab7da4 + crc: 0x752c5425 type_id: 0x5c7d047e full_name: "pci_irq_get_affinity" } @@ -352453,7 +352585,7 @@ elf_symbol { name: "pci_irq_vector" is_defined: true symbol_type: FUNCTION - crc: 0x9d7b3b0b + crc: 0x67ea0fd9 type_id: 0x98ef5724 full_name: "pci_irq_vector" } @@ -352462,7 +352594,7 @@ elf_symbol { name: "pci_load_and_free_saved_state" is_defined: true symbol_type: FUNCTION - crc: 0xadc33afe + crc: 0xb6a6ecfc type_id: 0x99dbf8a8 full_name: "pci_load_and_free_saved_state" } @@ -352471,7 +352603,7 @@ elf_symbol { name: "pci_load_saved_state" is_defined: true symbol_type: FUNCTION - crc: 0x84acd5ac + crc: 0x970e9f16 type_id: 0x99daa974 full_name: "pci_load_saved_state" } @@ -352480,7 +352612,7 @@ elf_symbol { name: "pci_match_id" is_defined: true symbol_type: FUNCTION - crc: 0xd72ed3a9 + crc: 0x5db953a9 type_id: 0xaddc5fdc full_name: "pci_match_id" } @@ -352489,7 +352621,7 @@ elf_symbol { name: "pci_msi_create_irq_domain" is_defined: true symbol_type: FUNCTION - crc: 0x213aeb59 + crc: 0x11a5c85d type_id: 0x5e4ba6ce full_name: "pci_msi_create_irq_domain" } @@ -352498,7 +352630,7 @@ elf_symbol { name: "pci_msi_mask_irq" is_defined: true symbol_type: FUNCTION - crc: 0xebcadbf9 + crc: 0xe4825aff type_id: 0x1247424a full_name: "pci_msi_mask_irq" } @@ -352507,7 +352639,7 @@ elf_symbol { name: "pci_msi_unmask_irq" is_defined: true symbol_type: FUNCTION - crc: 0xb2e62aac + crc: 0x7b4e1883 type_id: 0x1247424a full_name: "pci_msi_unmask_irq" } @@ -352516,7 +352648,7 @@ elf_symbol { name: "pci_read_config_byte" is_defined: true symbol_type: FUNCTION - crc: 0x680bf247 + crc: 0x6ea2a488 type_id: 0x92ce2ae7 full_name: "pci_read_config_byte" } @@ -352525,7 +352657,7 @@ elf_symbol { name: "pci_read_config_dword" is_defined: true symbol_type: FUNCTION - crc: 0xb26c6ae0 + crc: 0xb1b5f11c type_id: 0x92c02fa2 full_name: "pci_read_config_dword" } @@ -352534,7 +352666,7 @@ elf_symbol { name: "pci_read_config_word" is_defined: true symbol_type: FUNCTION - crc: 0x8ef233e8 + crc: 0x984e7ccc type_id: 0x92c5abfb full_name: "pci_read_config_word" } @@ -352543,7 +352675,7 @@ elf_symbol { name: "pci_release_region" is_defined: true symbol_type: FUNCTION - crc: 0x7bfd0762 + crc: 0x41ce7c6a type_id: 0x157d734c full_name: "pci_release_region" } @@ -352552,7 +352684,7 @@ elf_symbol { name: "pci_release_regions" is_defined: true symbol_type: FUNCTION - crc: 0xaaf9600b + crc: 0x6a66ba5a type_id: 0x14e1f000 full_name: "pci_release_regions" } @@ -352561,7 +352693,7 @@ elf_symbol { name: "pci_release_selected_regions" is_defined: true symbol_type: FUNCTION - crc: 0x7b511a10 + crc: 0xedd30e6a type_id: 0x157d734c full_name: "pci_release_selected_regions" } @@ -352570,7 +352702,7 @@ elf_symbol { name: "pci_request_region" is_defined: true symbol_type: FUNCTION - crc: 0xf75edb2c + crc: 0x88ef30a0 type_id: 0x986a45dd full_name: "pci_request_region" } @@ -352579,7 +352711,7 @@ elf_symbol { name: "pci_request_selected_regions" is_defined: true symbol_type: FUNCTION - crc: 0x8c7960a9 + crc: 0x1e7f1b6a type_id: 0x986a45dd full_name: "pci_request_selected_regions" } @@ -352588,7 +352720,7 @@ elf_symbol { name: "pci_rescan_bus" is_defined: true symbol_type: FUNCTION - crc: 0x26ace8b3 + crc: 0xe71621cc type_id: 0xc61915b4 full_name: "pci_rescan_bus" } @@ -352597,7 +352729,7 @@ elf_symbol { name: "pci_restore_msi_state" is_defined: true symbol_type: FUNCTION - crc: 0x5d23cef9 + crc: 0xbae0604d type_id: 0x14e1f000 full_name: "pci_restore_msi_state" } @@ -352606,7 +352738,7 @@ elf_symbol { name: "pci_restore_state" is_defined: true symbol_type: FUNCTION - crc: 0xedadf6d0 + crc: 0x8c3f1eb4 type_id: 0x14e1f000 full_name: "pci_restore_state" } @@ -352615,7 +352747,7 @@ elf_symbol { name: "pci_save_state" is_defined: true symbol_type: FUNCTION - crc: 0x912fff9e + crc: 0xd2d9e77a type_id: 0x99f942bc full_name: "pci_save_state" } @@ -352624,7 +352756,7 @@ elf_symbol { name: "pci_set_master" is_defined: true symbol_type: FUNCTION - crc: 0x559d8825 + crc: 0x01e4e483 type_id: 0x14e1f000 full_name: "pci_set_master" } @@ -352633,7 +352765,7 @@ elf_symbol { name: "pci_set_power_state" is_defined: true symbol_type: FUNCTION - crc: 0xca984595 + crc: 0xec978dfa type_id: 0x998196f8 full_name: "pci_set_power_state" } @@ -352642,7 +352774,7 @@ elf_symbol { name: "pci_store_saved_state" is_defined: true symbol_type: FUNCTION - crc: 0xfd858b3c + crc: 0x7e38a82e type_id: 0x551d3dad full_name: "pci_store_saved_state" } @@ -352651,7 +352783,7 @@ elf_symbol { name: "pci_unregister_driver" is_defined: true symbol_type: FUNCTION - crc: 0xa6fbc4b7 + crc: 0x74225c50 type_id: 0x1a0ce609 full_name: "pci_unregister_driver" } @@ -352660,7 +352792,7 @@ elf_symbol { name: "pci_vfs_assigned" is_defined: true symbol_type: FUNCTION - crc: 0xa5739034 + crc: 0xe9c1dce3 type_id: 0x99f942bc full_name: "pci_vfs_assigned" } @@ -352669,7 +352801,7 @@ elf_symbol { name: "pci_wake_from_d3" is_defined: true symbol_type: FUNCTION - crc: 0xc0c35fe6 + crc: 0x99758d4f type_id: 0x984cbfc3 full_name: "pci_wake_from_d3" } @@ -352678,7 +352810,7 @@ elf_symbol { name: "pci_walk_bus" is_defined: true symbol_type: FUNCTION - crc: 0x8b2058ee + crc: 0x05e07bd6 type_id: 0x18efced4 full_name: "pci_walk_bus" } @@ -352687,7 +352819,7 @@ elf_symbol { name: "pci_write_config_dword" is_defined: true symbol_type: FUNCTION - crc: 0x03627375 + crc: 0x8c15e6fc type_id: 0x92fc5924 full_name: "pci_write_config_dword" } @@ -352696,7 +352828,7 @@ elf_symbol { name: "pci_write_config_word" is_defined: true symbol_type: FUNCTION - crc: 0x2a3c0eaf + crc: 0x530300e5 type_id: 0x92ea4841 full_name: "pci_write_config_word" } @@ -352705,7 +352837,7 @@ elf_symbol { name: "pcie_capability_clear_and_set_word" is_defined: true symbol_type: FUNCTION - crc: 0xf6b53779 + crc: 0xdfc9b95d type_id: 0x9843d7a9 full_name: "pcie_capability_clear_and_set_word" } @@ -352714,7 +352846,7 @@ elf_symbol { name: "pcie_capability_read_word" is_defined: true symbol_type: FUNCTION - crc: 0x29255283 + crc: 0x28097628 type_id: 0x986e7125 full_name: "pcie_capability_read_word" } @@ -352723,7 +352855,7 @@ elf_symbol { name: "pcie_capability_write_word" is_defined: true symbol_type: FUNCTION - crc: 0x2cd5dff9 + crc: 0x0c6749a0 type_id: 0x9841929f full_name: "pcie_capability_write_word" } @@ -352750,7 +352882,7 @@ elf_symbol { name: "percpu_down_write" is_defined: true symbol_type: FUNCTION - crc: 0xec7fd84f + crc: 0x08013fd3 type_id: 0x14f50ddf full_name: "percpu_down_write" } @@ -352759,7 +352891,7 @@ elf_symbol { name: "percpu_free_rwsem" is_defined: true symbol_type: FUNCTION - crc: 0xc6671e0a + crc: 0x7fecee28 type_id: 0x14f50ddf full_name: "percpu_free_rwsem" } @@ -352768,7 +352900,7 @@ elf_symbol { name: "percpu_up_write" is_defined: true symbol_type: FUNCTION - crc: 0xb720a1c4 + crc: 0x89d6a96c type_id: 0x14f50ddf full_name: "percpu_up_write" } @@ -352777,7 +352909,7 @@ elf_symbol { name: "perf_aux_output_begin" is_defined: true symbol_type: FUNCTION - crc: 0xe206c4a5 + crc: 0x25c3661b type_id: 0x5448323c full_name: "perf_aux_output_begin" } @@ -352786,7 +352918,7 @@ elf_symbol { name: "perf_aux_output_end" is_defined: true symbol_type: FUNCTION - crc: 0x4321c0eb + crc: 0x02809cd8 type_id: 0x12fc3ff3 full_name: "perf_aux_output_end" } @@ -352795,7 +352927,7 @@ elf_symbol { name: "perf_aux_output_flag" is_defined: true symbol_type: FUNCTION - crc: 0x83f47bd8 + crc: 0xed193aef type_id: 0x107966af full_name: "perf_aux_output_flag" } @@ -352804,7 +352936,7 @@ elf_symbol { name: "perf_event_addr_filters_sync" is_defined: true symbol_type: FUNCTION - crc: 0x59573bf1 + crc: 0x93b3ad45 type_id: 0x17ebd264 full_name: "perf_event_addr_filters_sync" } @@ -352813,7 +352945,7 @@ elf_symbol { name: "perf_event_create_kernel_counter" is_defined: true symbol_type: FUNCTION - crc: 0xc2113692 + crc: 0xa1bcdd7b type_id: 0x86d5804d full_name: "perf_event_create_kernel_counter" } @@ -352822,7 +352954,7 @@ elf_symbol { name: "perf_event_disable" is_defined: true symbol_type: FUNCTION - crc: 0x3ccd02ed + crc: 0x38f8d815 type_id: 0x17ebd264 full_name: "perf_event_disable" } @@ -352831,7 +352963,7 @@ elf_symbol { name: "perf_event_enable" is_defined: true symbol_type: FUNCTION - crc: 0x3027d22d + crc: 0xa60542e8 type_id: 0x17ebd264 full_name: "perf_event_enable" } @@ -352840,7 +352972,7 @@ elf_symbol { name: "perf_event_pause" is_defined: true symbol_type: FUNCTION - crc: 0xc7c4f078 + crc: 0x2e5d3596 type_id: 0x511dadc3 full_name: "perf_event_pause" } @@ -352849,7 +352981,7 @@ elf_symbol { name: "perf_event_read_local" is_defined: true symbol_type: FUNCTION - crc: 0x45229466 + crc: 0xc90c81cb type_id: 0x9a403d53 full_name: "perf_event_read_local" } @@ -352858,7 +352990,7 @@ elf_symbol { name: "perf_event_read_value" is_defined: true symbol_type: FUNCTION - crc: 0xb2807e23 + crc: 0xd0936e3c type_id: 0x501bb554 full_name: "perf_event_read_value" } @@ -352867,7 +352999,7 @@ elf_symbol { name: "perf_event_release_kernel" is_defined: true symbol_type: FUNCTION - crc: 0x5e6814d5 + crc: 0xd39f6c0c type_id: 0x9af360d8 full_name: "perf_event_release_kernel" } @@ -352876,7 +353008,7 @@ elf_symbol { name: "perf_event_update_userpage" is_defined: true symbol_type: FUNCTION - crc: 0x5429ff13 + crc: 0x577ef66d type_id: 0x17ebd264 full_name: "perf_event_update_userpage" } @@ -352885,7 +353017,7 @@ elf_symbol { name: "perf_get_aux" is_defined: true symbol_type: FUNCTION - crc: 0x3aac357f + crc: 0x2c05327b type_id: 0x543f0a03 full_name: "perf_get_aux" } @@ -352894,7 +353026,7 @@ elf_symbol { name: "perf_pmu_migrate_context" is_defined: true symbol_type: FUNCTION - crc: 0x22ab48dd + crc: 0x77736dc2 type_id: 0x1fd9a8d3 full_name: "perf_pmu_migrate_context" } @@ -352903,7 +353035,7 @@ elf_symbol { name: "perf_pmu_register" is_defined: true symbol_type: FUNCTION - crc: 0x9ed0ace7 + crc: 0x5a3e20fa type_id: 0x93a5dbf7 full_name: "perf_pmu_register" } @@ -352912,7 +353044,7 @@ elf_symbol { name: "perf_pmu_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xdb0c039d + crc: 0x3ed84564 type_id: 0x1e5ce3ab full_name: "perf_pmu_unregister" } @@ -352930,7 +353062,7 @@ elf_symbol { name: "perf_trace_run_bpf_submit" is_defined: true symbol_type: FUNCTION - crc: 0x379a54a1 + crc: 0xe1d6bdc0 type_id: 0x1732fd5e full_name: "perf_trace_run_bpf_submit" } @@ -352948,7 +353080,7 @@ elf_symbol { name: "phy_attached_info" is_defined: true symbol_type: FUNCTION - crc: 0xa063773d + crc: 0x376e19a4 type_id: 0x1cc5f9b2 full_name: "phy_attached_info" } @@ -352957,7 +353089,7 @@ elf_symbol { name: "phy_calibrate" is_defined: true symbol_type: FUNCTION - crc: 0x8bb6460a + crc: 0xd0246c10 type_id: 0x9f7fc723 full_name: "phy_calibrate" } @@ -352966,7 +353098,7 @@ elf_symbol { name: "phy_configure" is_defined: true symbol_type: FUNCTION - crc: 0x9fba8e1c + crc: 0x07858e00 type_id: 0x9faf6f77 full_name: "phy_configure" } @@ -352975,7 +353107,7 @@ elf_symbol { name: "phy_drivers_register" is_defined: true symbol_type: FUNCTION - crc: 0x4b66d67a + crc: 0x8916959f type_id: 0x9c907da6 full_name: "phy_drivers_register" } @@ -352984,7 +353116,7 @@ elf_symbol { name: "phy_drivers_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x53d81140 + crc: 0x31c1fb7a type_id: 0x118a06ed full_name: "phy_drivers_unregister" } @@ -352993,7 +353125,7 @@ elf_symbol { name: "phy_error" is_defined: true symbol_type: FUNCTION - crc: 0xddd88ed1 + crc: 0x0720637a type_id: 0x1cc5f9b2 full_name: "phy_error" } @@ -353002,7 +353134,7 @@ elf_symbol { name: "phy_ethtool_get_wol" is_defined: true symbol_type: FUNCTION - crc: 0xdaf0ea6b + crc: 0x34436413 type_id: 0x1c416a95 full_name: "phy_ethtool_get_wol" } @@ -353011,7 +353143,7 @@ elf_symbol { name: "phy_ethtool_set_wol" is_defined: true symbol_type: FUNCTION - crc: 0x1a06b88c + crc: 0x2e20fa1f type_id: 0x9159d829 full_name: "phy_ethtool_set_wol" } @@ -353020,7 +353152,7 @@ elf_symbol { name: "phy_exit" is_defined: true symbol_type: FUNCTION - crc: 0x73f7c4ac + crc: 0xfb742612 type_id: 0x9f7fc723 full_name: "phy_exit" } @@ -353029,7 +353161,7 @@ elf_symbol { name: "phy_init" is_defined: true symbol_type: FUNCTION - crc: 0x3d5064e9 + crc: 0x7b15286a type_id: 0x9f7fc723 full_name: "phy_init" } @@ -353038,7 +353170,7 @@ elf_symbol { name: "phy_init_eee" is_defined: true symbol_type: FUNCTION - crc: 0xf21da6cf + crc: 0x16cffc25 type_id: 0x9068b671 full_name: "phy_init_eee" } @@ -353047,7 +353179,7 @@ elf_symbol { name: "phy_init_hw" is_defined: true symbol_type: FUNCTION - crc: 0xec0e18ca + crc: 0x3311b085 type_id: 0x91dd4b0e full_name: "phy_init_hw" } @@ -353056,7 +353188,7 @@ elf_symbol { name: "phy_mac_interrupt" is_defined: true symbol_type: FUNCTION - crc: 0xa1a874ab + crc: 0x3b664848 type_id: 0x1cc5f9b2 full_name: "phy_mac_interrupt" } @@ -353065,7 +353197,7 @@ elf_symbol { name: "phy_modify" is_defined: true symbol_type: FUNCTION - crc: 0x0967af99 + crc: 0xee66c880 type_id: 0x92df7dfb full_name: "phy_modify" } @@ -353074,7 +353206,7 @@ elf_symbol { name: "phy_modify_mmd" is_defined: true symbol_type: FUNCTION - crc: 0xe6b49e54 + crc: 0x3dd6277e type_id: 0x9071eb2d full_name: "phy_modify_mmd" } @@ -353083,7 +353215,7 @@ elf_symbol { name: "phy_power_off" is_defined: true symbol_type: FUNCTION - crc: 0x7e5c11d4 + crc: 0xf83e7dbb type_id: 0x9f7fc723 full_name: "phy_power_off" } @@ -353092,7 +353224,7 @@ elf_symbol { name: "phy_power_on" is_defined: true symbol_type: FUNCTION - crc: 0xa1926bab + crc: 0xf6026e2d type_id: 0x9f7fc723 full_name: "phy_power_on" } @@ -353101,7 +353233,7 @@ elf_symbol { name: "phy_read_mmd" is_defined: true symbol_type: FUNCTION - crc: 0x371662f5 + crc: 0xbc88d3b4 type_id: 0x90738a48 full_name: "phy_read_mmd" } @@ -353110,7 +353242,7 @@ elf_symbol { name: "phy_resolve_aneg_linkmode" is_defined: true symbol_type: FUNCTION - crc: 0x6219d28b + crc: 0x27b5a320 type_id: 0x1cc5f9b2 full_name: "phy_resolve_aneg_linkmode" } @@ -353119,7 +353251,7 @@ elf_symbol { name: "phy_set_mode_ext" is_defined: true symbol_type: FUNCTION - crc: 0x2b18ae94 + crc: 0xb834b02e type_id: 0x9ccae70d full_name: "phy_set_mode_ext" } @@ -353128,7 +353260,7 @@ elf_symbol { name: "phy_start_aneg" is_defined: true symbol_type: FUNCTION - crc: 0x7b9baf2d + crc: 0xef7c11fd type_id: 0x91dd4b0e full_name: "phy_start_aneg" } @@ -353137,7 +353269,7 @@ elf_symbol { name: "phy_trigger_machine" is_defined: true symbol_type: FUNCTION - crc: 0x3c3d1f33 + crc: 0xb0dd8ea1 type_id: 0x1cc5f9b2 full_name: "phy_trigger_machine" } @@ -353146,7 +353278,7 @@ elf_symbol { name: "phy_write_mmd" is_defined: true symbol_type: FUNCTION - crc: 0x5d5152d1 + crc: 0xb21500f5 type_id: 0x9071cf7e full_name: "phy_write_mmd" } @@ -353155,7 +353287,7 @@ elf_symbol { name: "phylink_connect_phy" is_defined: true symbol_type: FUNCTION - crc: 0x3673f10a + crc: 0xc71dcf6d type_id: 0x92ed801d full_name: "phylink_connect_phy" } @@ -353164,7 +353296,7 @@ elf_symbol { name: "phylink_create" is_defined: true symbol_type: FUNCTION - crc: 0xe06d6c1b + crc: 0xbdd32f47 type_id: 0xe2c8401b full_name: "phylink_create" } @@ -353272,7 +353404,7 @@ elf_symbol { name: "phylink_fwnode_phy_connect" is_defined: true symbol_type: FUNCTION - crc: 0xb008ba6a + crc: 0xf7e1de5f type_id: 0x92085a78 full_name: "phylink_fwnode_phy_connect" } @@ -353281,7 +353413,7 @@ elf_symbol { name: "phylink_generic_validate" is_defined: true symbol_type: FUNCTION - crc: 0x8d909b75 + crc: 0xda4f7c93 type_id: 0x1dc83ab4 full_name: "phylink_generic_validate" } @@ -353335,7 +353467,7 @@ elf_symbol { name: "phylink_of_phy_connect" is_defined: true symbol_type: FUNCTION - crc: 0x3d047a23 + crc: 0x5c801430 type_id: 0x92cbd49b full_name: "phylink_of_phy_connect" } @@ -353407,7 +353539,7 @@ elf_symbol { name: "pick_highest_pushable_task" is_defined: true symbol_type: FUNCTION - crc: 0xac896646 + crc: 0x5fea24c7 type_id: 0x7151826e full_name: "pick_highest_pushable_task" } @@ -353416,7 +353548,7 @@ elf_symbol { name: "pick_migrate_task" is_defined: true symbol_type: FUNCTION - crc: 0xd025dfdc + crc: 0xfe263581 type_id: 0x70cd0122 full_name: "pick_migrate_task" } @@ -353425,7 +353557,7 @@ elf_symbol { name: "pid_nr_ns" is_defined: true symbol_type: FUNCTION - crc: 0x4367d105 + crc: 0x203734c9 type_id: 0xd6b27f6b full_name: "pid_nr_ns" } @@ -353434,7 +353566,7 @@ elf_symbol { name: "pid_task" is_defined: true symbol_type: FUNCTION - crc: 0x584c78ea + crc: 0xc2c866b1 type_id: 0x7f0f4bf3 full_name: "pid_task" } @@ -353443,7 +353575,7 @@ elf_symbol { name: "pin_get_name" is_defined: true symbol_type: FUNCTION - crc: 0x99c4a091 + crc: 0x480c93df type_id: 0x95876807 full_name: "pin_get_name" } @@ -353452,7 +353584,7 @@ elf_symbol { name: "pin_user_pages" is_defined: true symbol_type: FUNCTION - crc: 0x45600e86 + crc: 0x7162ac2a type_id: 0xab21f8b5 full_name: "pin_user_pages" } @@ -353461,7 +353593,7 @@ elf_symbol { name: "pin_user_pages_fast" is_defined: true symbol_type: FUNCTION - crc: 0x9e35ea7d + crc: 0x51051409 type_id: 0x90d074d8 full_name: "pin_user_pages_fast" } @@ -353470,7 +353602,7 @@ elf_symbol { name: "pin_user_pages_remote" is_defined: true symbol_type: FUNCTION - crc: 0x7ca3932e + crc: 0xf35990aa type_id: 0xa12d9647 full_name: "pin_user_pages_remote" } @@ -353479,7 +353611,7 @@ elf_symbol { name: "pinconf_generic_dt_free_map" is_defined: true symbol_type: FUNCTION - crc: 0x64100bff + crc: 0x991b864a type_id: 0x168f342d full_name: "pinconf_generic_dt_free_map" } @@ -353488,7 +353620,7 @@ elf_symbol { name: "pinconf_generic_dt_node_to_map" is_defined: true symbol_type: FUNCTION - crc: 0x5c39cdfc + crc: 0xfe5a8d89 type_id: 0x9b85c911 full_name: "pinconf_generic_dt_node_to_map" } @@ -353497,7 +353629,7 @@ elf_symbol { name: "pinctrl_add_gpio_range" is_defined: true symbol_type: FUNCTION - crc: 0xbc34f894 + crc: 0x40863b3c type_id: 0x165d386a full_name: "pinctrl_add_gpio_range" } @@ -353506,7 +353638,7 @@ elf_symbol { name: "pinctrl_dev_get_drvdata" is_defined: true symbol_type: FUNCTION - crc: 0x80f2d635 + crc: 0x66199472 type_id: 0x5043dbcd full_name: "pinctrl_dev_get_drvdata" } @@ -353515,7 +353647,7 @@ elf_symbol { name: "pinctrl_enable" is_defined: true symbol_type: FUNCTION - crc: 0x0b0694ee + crc: 0x2ce3a528 type_id: 0x9b558913 full_name: "pinctrl_enable" } @@ -353524,7 +353656,7 @@ elf_symbol { name: "pinctrl_force_default" is_defined: true symbol_type: FUNCTION - crc: 0x854f0004 + crc: 0xdb98b6b5 type_id: 0x9b558913 full_name: "pinctrl_force_default" } @@ -353533,7 +353665,7 @@ elf_symbol { name: "pinctrl_force_sleep" is_defined: true symbol_type: FUNCTION - crc: 0x986ad899 + crc: 0x49504fa5 type_id: 0x9b558913 full_name: "pinctrl_force_sleep" } @@ -353542,7 +353674,7 @@ elf_symbol { name: "pinctrl_generic_add_group" is_defined: true symbol_type: FUNCTION - crc: 0x4176a5c2 + crc: 0xf4a4f079 type_id: 0x9ba88768 full_name: "pinctrl_generic_add_group" } @@ -353551,7 +353683,7 @@ elf_symbol { name: "pinctrl_generic_get_group_count" is_defined: true symbol_type: FUNCTION - crc: 0x3e506cec + crc: 0xcfb35d00 type_id: 0x9b558913 full_name: "pinctrl_generic_get_group_count" } @@ -353560,7 +353692,7 @@ elf_symbol { name: "pinctrl_generic_get_group_name" is_defined: true symbol_type: FUNCTION - crc: 0x0f521873 + crc: 0xb58c5645 type_id: 0x95876807 full_name: "pinctrl_generic_get_group_name" } @@ -353569,7 +353701,7 @@ elf_symbol { name: "pinctrl_generic_get_group_pins" is_defined: true symbol_type: FUNCTION - crc: 0x573bf30d + crc: 0x034eb0af type_id: 0x9a42cb81 full_name: "pinctrl_generic_get_group_pins" } @@ -353578,7 +353710,7 @@ elf_symbol { name: "pinctrl_generic_remove_group" is_defined: true symbol_type: FUNCTION - crc: 0xaae15b90 + crc: 0x0c7ade62 type_id: 0x9a439c8b full_name: "pinctrl_generic_remove_group" } @@ -353587,7 +353719,7 @@ elf_symbol { name: "pinctrl_get" is_defined: true symbol_type: FUNCTION - crc: 0xd03b3ea2 + crc: 0x17bb374e type_id: 0x4df5d8bb full_name: "pinctrl_get" } @@ -353596,7 +353728,7 @@ elf_symbol { name: "pinctrl_lookup_state" is_defined: true symbol_type: FUNCTION - crc: 0x709657ab + crc: 0xc3da7b72 type_id: 0x89d1e10c full_name: "pinctrl_lookup_state" } @@ -353605,7 +353737,7 @@ elf_symbol { name: "pinctrl_pm_select_default_state" is_defined: true symbol_type: FUNCTION - crc: 0x64e2ff0c + crc: 0x630b6ee3 type_id: 0x9d16dd74 full_name: "pinctrl_pm_select_default_state" } @@ -353614,7 +353746,7 @@ elf_symbol { name: "pinctrl_pm_select_idle_state" is_defined: true symbol_type: FUNCTION - crc: 0x3ef55718 + crc: 0x717c611d type_id: 0x9d16dd74 full_name: "pinctrl_pm_select_idle_state" } @@ -353623,7 +353755,7 @@ elf_symbol { name: "pinctrl_pm_select_sleep_state" is_defined: true symbol_type: FUNCTION - crc: 0x8f17a71a + crc: 0x98654726 type_id: 0x9d16dd74 full_name: "pinctrl_pm_select_sleep_state" } @@ -353632,7 +353764,7 @@ elf_symbol { name: "pinctrl_put" is_defined: true symbol_type: FUNCTION - crc: 0x6a0426bd + crc: 0x91c8a16a type_id: 0x1ad9d0a2 full_name: "pinctrl_put" } @@ -353641,7 +353773,7 @@ elf_symbol { name: "pinctrl_remove_gpio_range" is_defined: true symbol_type: FUNCTION - crc: 0xe7277cde + crc: 0x8dac6c83 type_id: 0x165d386a full_name: "pinctrl_remove_gpio_range" } @@ -353650,7 +353782,7 @@ elf_symbol { name: "pinctrl_select_default_state" is_defined: true symbol_type: FUNCTION - crc: 0xd60361a8 + crc: 0x3f9ee25a type_id: 0x9d16dd74 full_name: "pinctrl_select_default_state" } @@ -353659,7 +353791,7 @@ elf_symbol { name: "pinctrl_select_state" is_defined: true symbol_type: FUNCTION - crc: 0x5618fb99 + crc: 0xd3cb05f5 type_id: 0x97287db7 full_name: "pinctrl_select_state" } @@ -353668,7 +353800,7 @@ elf_symbol { name: "pinctrl_utils_free_map" is_defined: true symbol_type: FUNCTION - crc: 0x2b400643 + crc: 0x570b77e0 type_id: 0x168f342d full_name: "pinctrl_utils_free_map" } @@ -353677,7 +353809,7 @@ elf_symbol { name: "pipe_lock" is_defined: true symbol_type: FUNCTION - crc: 0xfffbe5c6 + crc: 0x2b14cdc1 type_id: 0x1256dc52 full_name: "pipe_lock" } @@ -353686,7 +353818,7 @@ elf_symbol { name: "pipe_unlock" is_defined: true symbol_type: FUNCTION - crc: 0x86a091c5 + crc: 0xe051efb6 type_id: 0x1256dc52 full_name: "pipe_unlock" } @@ -353695,7 +353827,7 @@ elf_symbol { name: "pktgen_xfrm_outer_mode_output" is_defined: true symbol_type: FUNCTION - crc: 0x735448ff + crc: 0x8050f09e type_id: 0x9cd82046 full_name: "pktgen_xfrm_outer_mode_output" } @@ -353704,7 +353836,7 @@ elf_symbol { name: "platform_bus" is_defined: true symbol_type: OBJECT - crc: 0x6e75b9c5 + crc: 0xe8a2c32e type_id: 0x23230326 full_name: "platform_bus" } @@ -353713,7 +353845,7 @@ elf_symbol { name: "platform_bus_type" is_defined: true symbol_type: OBJECT - crc: 0xa689b378 + crc: 0x3e70fb40 type_id: 0x257935aa full_name: "platform_bus_type" } @@ -353722,7 +353854,7 @@ elf_symbol { name: "platform_device_add" is_defined: true symbol_type: FUNCTION - crc: 0x69832282 + crc: 0xc3605e1c type_id: 0x924d155a full_name: "platform_device_add" } @@ -353731,7 +353863,7 @@ elf_symbol { name: "platform_device_add_data" is_defined: true symbol_type: FUNCTION - crc: 0xf20b6bbc + crc: 0x61095852 type_id: 0x92946457 full_name: "platform_device_add_data" } @@ -353740,7 +353872,7 @@ elf_symbol { name: "platform_device_add_resources" is_defined: true symbol_type: FUNCTION - crc: 0xabd7deae + crc: 0xce377c86 type_id: 0x929bf9d1 full_name: "platform_device_add_resources" } @@ -353749,7 +353881,7 @@ elf_symbol { name: "platform_device_alloc" is_defined: true symbol_type: FUNCTION - crc: 0xcb189fb9 + crc: 0x87e0c9b4 type_id: 0xc748ecf5 full_name: "platform_device_alloc" } @@ -353758,7 +353890,7 @@ elf_symbol { name: "platform_device_del" is_defined: true symbol_type: FUNCTION - crc: 0x7f0e3bc2 + crc: 0x567e4e64 type_id: 0x1f55a7e6 full_name: "platform_device_del" } @@ -353767,7 +353899,7 @@ elf_symbol { name: "platform_device_put" is_defined: true symbol_type: FUNCTION - crc: 0x1457cb11 + crc: 0xe0ffd186 type_id: 0x1f55a7e6 full_name: "platform_device_put" } @@ -353776,7 +353908,7 @@ elf_symbol { name: "platform_device_register" is_defined: true symbol_type: FUNCTION - crc: 0x21520079 + crc: 0xc1dc9879 type_id: 0x924d155a full_name: "platform_device_register" } @@ -353785,7 +353917,7 @@ elf_symbol { name: "platform_device_register_full" is_defined: true symbol_type: FUNCTION - crc: 0x9d8e3943 + crc: 0xb4e1cb8c type_id: 0xc5663ffe full_name: "platform_device_register_full" } @@ -353794,7 +353926,7 @@ elf_symbol { name: "platform_device_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x2c24f041 + crc: 0x732a780c type_id: 0x1f55a7e6 full_name: "platform_device_unregister" } @@ -353803,7 +353935,7 @@ elf_symbol { name: "platform_driver_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x198cfe1d + crc: 0x138be4c4 type_id: 0x1654b7a0 full_name: "platform_driver_unregister" } @@ -353812,7 +353944,7 @@ elf_symbol { name: "platform_find_device_by_driver" is_defined: true symbol_type: FUNCTION - crc: 0x4163c267 + crc: 0xa7096e1e type_id: 0xad77a8f0 full_name: "platform_find_device_by_driver" } @@ -353821,7 +353953,7 @@ elf_symbol { name: "platform_get_irq" is_defined: true symbol_type: FUNCTION - crc: 0x92ea27ab + crc: 0x12a9c307 type_id: 0x935b00c2 full_name: "platform_get_irq" } @@ -353830,7 +353962,7 @@ elf_symbol { name: "platform_get_irq_byname" is_defined: true symbol_type: FUNCTION - crc: 0x62624ccb + crc: 0xc90c1257 type_id: 0x92b5578e full_name: "platform_get_irq_byname" } @@ -353839,7 +353971,7 @@ elf_symbol { name: "platform_get_irq_byname_optional" is_defined: true symbol_type: FUNCTION - crc: 0x2f386af3 + crc: 0x3b2198e1 type_id: 0x92b5578e full_name: "platform_get_irq_byname_optional" } @@ -353848,7 +353980,7 @@ elf_symbol { name: "platform_get_irq_optional" is_defined: true symbol_type: FUNCTION - crc: 0x81f621c4 + crc: 0x3fe974c2 type_id: 0x935b00c2 full_name: "platform_get_irq_optional" } @@ -353857,7 +353989,7 @@ elf_symbol { name: "platform_get_resource" is_defined: true symbol_type: FUNCTION - crc: 0xb2905df6 + crc: 0xff127e25 type_id: 0xcf28148d full_name: "platform_get_resource" } @@ -353866,7 +353998,7 @@ elf_symbol { name: "platform_get_resource_byname" is_defined: true symbol_type: FUNCTION - crc: 0x25d83c68 + crc: 0xb83c05fc type_id: 0xcf36f1f9 full_name: "platform_get_resource_byname" } @@ -353875,7 +354007,7 @@ elf_symbol { name: "platform_irq_count" is_defined: true symbol_type: FUNCTION - crc: 0x120cceb0 + crc: 0x2de25454 type_id: 0x924d155a full_name: "platform_irq_count" } @@ -353884,7 +354016,7 @@ elf_symbol { name: "platform_irqchip_probe" is_defined: true symbol_type: FUNCTION - crc: 0xed96f772 + crc: 0x911b3e3f type_id: 0x924d155a full_name: "platform_irqchip_probe" } @@ -353893,7 +354025,7 @@ elf_symbol { name: "platform_msi_domain_alloc_irqs" is_defined: true symbol_type: FUNCTION - crc: 0x7519aca2 + crc: 0xdd739b4a type_id: 0x9c3052e3 full_name: "platform_msi_domain_alloc_irqs" } @@ -353902,7 +354034,7 @@ elf_symbol { name: "platform_msi_domain_free_irqs" is_defined: true symbol_type: FUNCTION - crc: 0x8e23b214 + crc: 0xd01f0a41 type_id: 0x100e6fc8 full_name: "platform_msi_domain_free_irqs" } @@ -353911,7 +354043,7 @@ elf_symbol { name: "pm_clk_add" is_defined: true symbol_type: FUNCTION - crc: 0x342a7602 + crc: 0x60b2063c type_id: 0x9dee9fa0 full_name: "pm_clk_add" } @@ -353920,7 +354052,7 @@ elf_symbol { name: "pm_clk_create" is_defined: true symbol_type: FUNCTION - crc: 0x93008046 + crc: 0x55fe98ba type_id: 0x9d16dd74 full_name: "pm_clk_create" } @@ -353929,7 +354061,7 @@ elf_symbol { name: "pm_clk_destroy" is_defined: true symbol_type: FUNCTION - crc: 0x807b218c + crc: 0x42c704a2 type_id: 0x100e6fc8 full_name: "pm_clk_destroy" } @@ -353938,7 +354070,7 @@ elf_symbol { name: "pm_clk_resume" is_defined: true symbol_type: FUNCTION - crc: 0xe7ecc530 + crc: 0x08697439 type_id: 0x9d16dd74 full_name: "pm_clk_resume" } @@ -353947,7 +354079,7 @@ elf_symbol { name: "pm_clk_suspend" is_defined: true symbol_type: FUNCTION - crc: 0xad778d7b + crc: 0x4c847e5d type_id: 0x9d16dd74 full_name: "pm_clk_suspend" } @@ -353956,7 +354088,7 @@ elf_symbol { name: "pm_generic_resume" is_defined: true symbol_type: FUNCTION - crc: 0xebe9de18 + crc: 0x33f61f96 type_id: 0x9d16dd74 full_name: "pm_generic_resume" } @@ -353965,7 +354097,7 @@ elf_symbol { name: "pm_generic_runtime_resume" is_defined: true symbol_type: FUNCTION - crc: 0x720e6d15 + crc: 0xdd14a895 type_id: 0x9d16dd74 full_name: "pm_generic_runtime_resume" } @@ -353974,7 +354106,7 @@ elf_symbol { name: "pm_generic_runtime_suspend" is_defined: true symbol_type: FUNCTION - crc: 0x84b65c8d + crc: 0xdc036b40 type_id: 0x9d16dd74 full_name: "pm_generic_runtime_suspend" } @@ -353983,7 +354115,7 @@ elf_symbol { name: "pm_generic_suspend" is_defined: true symbol_type: FUNCTION - crc: 0xfa9ec783 + crc: 0x45e4d84d type_id: 0x9d16dd74 full_name: "pm_generic_suspend" } @@ -353992,7 +354124,7 @@ elf_symbol { name: "pm_genpd_add_subdomain" is_defined: true symbol_type: FUNCTION - crc: 0x776eca91 + crc: 0x77104cd0 type_id: 0x9c3ea49d full_name: "pm_genpd_add_subdomain" } @@ -354001,7 +354133,7 @@ elf_symbol { name: "pm_genpd_init" is_defined: true symbol_type: FUNCTION - crc: 0xafdea1ec + crc: 0xf0e4d308 type_id: 0x9c571eea full_name: "pm_genpd_init" } @@ -354010,7 +354142,7 @@ elf_symbol { name: "pm_genpd_remove" is_defined: true symbol_type: FUNCTION - crc: 0xbff69db5 + crc: 0x3564eacd type_id: 0x9c24e4e1 full_name: "pm_genpd_remove" } @@ -354019,7 +354151,7 @@ elf_symbol { name: "pm_genpd_remove_subdomain" is_defined: true symbol_type: FUNCTION - crc: 0xdd4e78d9 + crc: 0x30addca2 type_id: 0x9c3ea49d full_name: "pm_genpd_remove_subdomain" } @@ -354046,7 +354178,7 @@ elf_symbol { name: "pm_relax" is_defined: true symbol_type: FUNCTION - crc: 0x41006684 + crc: 0x8b11e3ee type_id: 0x100e6fc8 full_name: "pm_relax" } @@ -354055,7 +354187,7 @@ elf_symbol { name: "pm_runtime_allow" is_defined: true symbol_type: FUNCTION - crc: 0x81af55cc + crc: 0x6cb987c3 type_id: 0x100e6fc8 full_name: "pm_runtime_allow" } @@ -354064,7 +354196,7 @@ elf_symbol { name: "pm_runtime_autosuspend_expiration" is_defined: true symbol_type: FUNCTION - crc: 0x6db9de0c + crc: 0x19c06102 type_id: 0x574ded10 full_name: "pm_runtime_autosuspend_expiration" } @@ -354073,7 +354205,7 @@ elf_symbol { name: "pm_runtime_barrier" is_defined: true symbol_type: FUNCTION - crc: 0xa80aef9e + crc: 0x10ca4dba type_id: 0x9d16dd74 full_name: "pm_runtime_barrier" } @@ -354082,7 +354214,7 @@ elf_symbol { name: "pm_runtime_enable" is_defined: true symbol_type: FUNCTION - crc: 0x8d315d88 + crc: 0x44aafb08 type_id: 0x100e6fc8 full_name: "pm_runtime_enable" } @@ -354091,7 +354223,7 @@ elf_symbol { name: "pm_runtime_forbid" is_defined: true symbol_type: FUNCTION - crc: 0xe0d77c36 + crc: 0x7f6fae1d type_id: 0x100e6fc8 full_name: "pm_runtime_forbid" } @@ -354100,7 +354232,7 @@ elf_symbol { name: "pm_runtime_force_resume" is_defined: true symbol_type: FUNCTION - crc: 0x866d1739 + crc: 0xc33f6bc7 type_id: 0x9d16dd74 full_name: "pm_runtime_force_resume" } @@ -354109,7 +354241,7 @@ elf_symbol { name: "pm_runtime_force_suspend" is_defined: true symbol_type: FUNCTION - crc: 0xd2e05095 + crc: 0x902fee31 type_id: 0x9d16dd74 full_name: "pm_runtime_force_suspend" } @@ -354118,7 +354250,7 @@ elf_symbol { name: "pm_runtime_irq_safe" is_defined: true symbol_type: FUNCTION - crc: 0xd470ce7d + crc: 0xb6041974 type_id: 0x100e6fc8 full_name: "pm_runtime_irq_safe" } @@ -354127,7 +354259,7 @@ elf_symbol { name: "pm_runtime_no_callbacks" is_defined: true symbol_type: FUNCTION - crc: 0xbfa1541b + crc: 0x0ccf8b24 type_id: 0x100e6fc8 full_name: "pm_runtime_no_callbacks" } @@ -354136,7 +354268,7 @@ elf_symbol { name: "pm_runtime_set_autosuspend_delay" is_defined: true symbol_type: FUNCTION - crc: 0xa9f4c874 + crc: 0xde67eabe type_id: 0x1192ec84 full_name: "pm_runtime_set_autosuspend_delay" } @@ -354145,7 +354277,7 @@ elf_symbol { name: "pm_stay_awake" is_defined: true symbol_type: FUNCTION - crc: 0xfa39e463 + crc: 0xf136eed7 type_id: 0x100e6fc8 full_name: "pm_stay_awake" } @@ -354163,7 +354295,7 @@ elf_symbol { name: "pm_wakeup_dev_event" is_defined: true symbol_type: FUNCTION - crc: 0x86e74bff + crc: 0xb7eb77b7 type_id: 0x11032587 full_name: "pm_wakeup_dev_event" } @@ -354172,7 +354304,7 @@ elf_symbol { name: "pm_wakeup_ws_event" is_defined: true symbol_type: FUNCTION - crc: 0xc7a3a9d7 + crc: 0x9d6b33bc type_id: 0x112fdfca full_name: "pm_wakeup_ws_event" } @@ -354181,7 +354313,7 @@ elf_symbol { name: "policy_has_boost_freq" is_defined: true symbol_type: FUNCTION - crc: 0x0c65028d + crc: 0xe7a94ce7 type_id: 0xfec3d248 full_name: "policy_has_boost_freq" } @@ -354208,7 +354340,7 @@ elf_symbol { name: "power_supply_changed" is_defined: true symbol_type: FUNCTION - crc: 0xcd76e821 + crc: 0xa1cdb932 type_id: 0x169d12f4 full_name: "power_supply_changed" } @@ -354217,7 +354349,7 @@ elf_symbol { name: "power_supply_get_by_name" is_defined: true symbol_type: FUNCTION - crc: 0xf4029fcf + crc: 0x39e8a5f3 type_id: 0x347afa45 full_name: "power_supply_get_by_name" } @@ -354226,7 +354358,7 @@ elf_symbol { name: "power_supply_get_by_phandle_array" is_defined: true symbol_type: FUNCTION - crc: 0xf085d2e9 + crc: 0xdd57d3a2 type_id: 0x9064137a full_name: "power_supply_get_by_phandle_array" } @@ -354235,7 +354367,7 @@ elf_symbol { name: "power_supply_get_drvdata" is_defined: true symbol_type: FUNCTION - crc: 0x12d2bbb9 + crc: 0x6571e29e type_id: 0x5093f296 full_name: "power_supply_get_drvdata" } @@ -354244,7 +354376,7 @@ elf_symbol { name: "power_supply_get_property" is_defined: true symbol_type: FUNCTION - crc: 0x9f1cb8d5 + crc: 0x5bdabed6 type_id: 0x9ba3144f full_name: "power_supply_get_property" } @@ -354253,7 +354385,7 @@ elf_symbol { name: "power_supply_put" is_defined: true symbol_type: FUNCTION - crc: 0xd7cd7e60 + crc: 0xc08f8526 type_id: 0x169d12f4 full_name: "power_supply_put" } @@ -354271,7 +354403,7 @@ elf_symbol { name: "power_supply_register" is_defined: true symbol_type: FUNCTION - crc: 0x9bc5698d + crc: 0xc4ea6f85 type_id: 0x3bb8868a full_name: "power_supply_register" } @@ -354280,7 +354412,7 @@ elf_symbol { name: "power_supply_set_property" is_defined: true symbol_type: FUNCTION - crc: 0xc9c099e7 + crc: 0xaf596a19 type_id: 0x9bad5a77 full_name: "power_supply_set_property" } @@ -354298,7 +354430,7 @@ elf_symbol { name: "power_supply_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x8d94570b + crc: 0x9c79f5d8 type_id: 0x169d12f4 full_name: "power_supply_unregister" } @@ -354307,7 +354439,7 @@ elf_symbol { name: "ppp_channel_index" is_defined: true symbol_type: FUNCTION - crc: 0x4098ed54 + crc: 0x84192a02 type_id: 0x99a901c1 full_name: "ppp_channel_index" } @@ -354316,7 +354448,7 @@ elf_symbol { name: "ppp_dev_name" is_defined: true symbol_type: FUNCTION - crc: 0xd3371f48 + crc: 0x4a0b38cc type_id: 0x3a17e325 full_name: "ppp_dev_name" } @@ -354325,7 +354457,7 @@ elf_symbol { name: "ppp_input" is_defined: true symbol_type: FUNCTION - crc: 0x67c7ab0d + crc: 0xfe858466 type_id: 0x14a48ed9 full_name: "ppp_input" } @@ -354334,7 +354466,7 @@ elf_symbol { name: "ppp_input_error" is_defined: true symbol_type: FUNCTION - crc: 0x5dc4181f + crc: 0xd232b762 type_id: 0x152d3031 full_name: "ppp_input_error" } @@ -354343,7 +354475,7 @@ elf_symbol { name: "ppp_output_wakeup" is_defined: true symbol_type: FUNCTION - crc: 0xd384ea68 + crc: 0xe332f2bf type_id: 0x14b1b37d full_name: "ppp_output_wakeup" } @@ -354352,7 +354484,7 @@ elf_symbol { name: "ppp_register_channel" is_defined: true symbol_type: FUNCTION - crc: 0x60279c2c + crc: 0x582fc1e5 type_id: 0x99a901c1 full_name: "ppp_register_channel" } @@ -354361,7 +354493,7 @@ elf_symbol { name: "ppp_register_compressor" is_defined: true symbol_type: FUNCTION - crc: 0xaa757b77 + crc: 0x1a7d2c15 type_id: 0x90dc3d3e full_name: "ppp_register_compressor" } @@ -354370,7 +354502,7 @@ elf_symbol { name: "ppp_register_net_channel" is_defined: true symbol_type: FUNCTION - crc: 0xd2f33fa1 + crc: 0x277d4ddd type_id: 0x9eeae021 full_name: "ppp_register_net_channel" } @@ -354379,7 +354511,7 @@ elf_symbol { name: "ppp_unit_number" is_defined: true symbol_type: FUNCTION - crc: 0xeed028a6 + crc: 0xedc6ab12 type_id: 0x99a901c1 full_name: "ppp_unit_number" } @@ -354388,7 +354520,7 @@ elf_symbol { name: "ppp_unregister_channel" is_defined: true symbol_type: FUNCTION - crc: 0xb292c1c5 + crc: 0xa6cfe213 type_id: 0x14b1b37d full_name: "ppp_unregister_channel" } @@ -354397,7 +354529,7 @@ elf_symbol { name: "ppp_unregister_compressor" is_defined: true symbol_type: FUNCTION - crc: 0x350dc5bd + crc: 0xd45b14a7 type_id: 0x1dc48f82 full_name: "ppp_unregister_compressor" } @@ -354406,7 +354538,7 @@ elf_symbol { name: "pppox_compat_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0xd80bd276 + crc: 0x20016f4f type_id: 0x9882219f full_name: "pppox_compat_ioctl" } @@ -354415,7 +354547,7 @@ elf_symbol { name: "pppox_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0x264d0536 + crc: 0x85d04d01 type_id: 0x9882219f full_name: "pppox_ioctl" } @@ -354424,7 +354556,7 @@ elf_symbol { name: "pppox_unbind_sock" is_defined: true symbol_type: FUNCTION - crc: 0xc4a15dc2 + crc: 0x3d0b7b54 type_id: 0x17c95d08 full_name: "pppox_unbind_sock" } @@ -354433,7 +354565,7 @@ elf_symbol { name: "pps_event" is_defined: true symbol_type: FUNCTION - crc: 0xa71e2515 + crc: 0x89a62261 type_id: 0x17306592 full_name: "pps_event" } @@ -354442,7 +354574,7 @@ elf_symbol { name: "pps_register_source" is_defined: true symbol_type: FUNCTION - crc: 0xfe5e7056 + crc: 0xb409f6d8 type_id: 0x9ffaa344 full_name: "pps_register_source" } @@ -354451,7 +354583,7 @@ elf_symbol { name: "pps_unregister_source" is_defined: true symbol_type: FUNCTION - crc: 0x8ddb1c80 + crc: 0xdf9fad92 type_id: 0x17f14839 full_name: "pps_unregister_source" } @@ -354505,7 +354637,7 @@ elf_symbol { name: "proc_create" is_defined: true symbol_type: FUNCTION - crc: 0x14811f8e + crc: 0xc61e2ee9 type_id: 0x3943c0fb full_name: "proc_create" } @@ -354514,7 +354646,7 @@ elf_symbol { name: "proc_create_data" is_defined: true symbol_type: FUNCTION - crc: 0x91173bf5 + crc: 0xeb9066a1 type_id: 0x3943c6d4 full_name: "proc_create_data" } @@ -354523,7 +354655,7 @@ elf_symbol { name: "proc_create_net_data" is_defined: true symbol_type: FUNCTION - crc: 0x19562452 + crc: 0xc7a9c1e3 type_id: 0x3943cd14 full_name: "proc_create_net_data" } @@ -354532,7 +354664,7 @@ elf_symbol { name: "proc_create_net_single" is_defined: true symbol_type: FUNCTION - crc: 0x77be016c + crc: 0x08e79f00 type_id: 0x39439154 full_name: "proc_create_net_single" } @@ -354541,7 +354673,7 @@ elf_symbol { name: "proc_create_seq_private" is_defined: true symbol_type: FUNCTION - crc: 0x3de02f6e + crc: 0x19f01fc4 type_id: 0x3943cd14 full_name: "proc_create_seq_private" } @@ -354550,7 +354682,7 @@ elf_symbol { name: "proc_create_single_data" is_defined: true symbol_type: FUNCTION - crc: 0x34dc2fda + crc: 0x588cae51 type_id: 0x39439154 full_name: "proc_create_single_data" } @@ -354613,7 +354745,7 @@ elf_symbol { name: "proc_mkdir" is_defined: true symbol_type: FUNCTION - crc: 0xd6fc5840 + crc: 0x415a9812 type_id: 0x396d7dc5 full_name: "proc_mkdir" } @@ -354622,7 +354754,7 @@ elf_symbol { name: "proc_mkdir_data" is_defined: true symbol_type: FUNCTION - crc: 0x52e3b234 + crc: 0x79025078 type_id: 0x394343b5 full_name: "proc_mkdir_data" } @@ -354631,7 +354763,7 @@ elf_symbol { name: "proc_remove" is_defined: true symbol_type: FUNCTION - crc: 0x45c68106 + crc: 0x9133a895 type_id: 0x1688452c full_name: "proc_remove" } @@ -354640,7 +354772,7 @@ elf_symbol { name: "proc_set_size" is_defined: true symbol_type: FUNCTION - crc: 0xe7e612b7 + crc: 0xf55e6830 type_id: 0x1616da34 full_name: "proc_set_size" } @@ -354649,7 +354781,7 @@ elf_symbol { name: "proc_set_user" is_defined: true symbol_type: FUNCTION - crc: 0x2f4b4b41 + crc: 0x3097e9d0 type_id: 0x15005e8a full_name: "proc_set_user" } @@ -354658,7 +354790,7 @@ elf_symbol { name: "proc_symlink" is_defined: true symbol_type: FUNCTION - crc: 0xe1fc4c31 + crc: 0x69e058e8 type_id: 0x3962f9e8 full_name: "proc_symlink" } @@ -354667,7 +354799,7 @@ elf_symbol { name: "proto_register" is_defined: true symbol_type: FUNCTION - crc: 0x75345899 + crc: 0x30f3c415 type_id: 0x92e29590 full_name: "proto_register" } @@ -354676,7 +354808,7 @@ elf_symbol { name: "proto_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x7beb9887 + crc: 0x15e5c9f6 type_id: 0x1e66a460 full_name: "proto_unregister" } @@ -354685,7 +354817,7 @@ elf_symbol { name: "ps2_begin_command" is_defined: true symbol_type: FUNCTION - crc: 0x2ff96fa1 + crc: 0x79b15e07 type_id: 0x148b1035 full_name: "ps2_begin_command" } @@ -354694,7 +354826,7 @@ elf_symbol { name: "ps2_cmd_aborted" is_defined: true symbol_type: FUNCTION - crc: 0xb7e8eede + crc: 0xba109d45 type_id: 0x148b1035 full_name: "ps2_cmd_aborted" } @@ -354703,7 +354835,7 @@ elf_symbol { name: "ps2_command" is_defined: true symbol_type: FUNCTION - crc: 0x0f16f7b2 + crc: 0x4df0939b type_id: 0x9981df44 full_name: "ps2_command" } @@ -354712,7 +354844,7 @@ elf_symbol { name: "ps2_drain" is_defined: true symbol_type: FUNCTION - crc: 0x952256b4 + crc: 0x96c34a52 type_id: 0x174aa4cd full_name: "ps2_drain" } @@ -354721,7 +354853,7 @@ elf_symbol { name: "ps2_end_command" is_defined: true symbol_type: FUNCTION - crc: 0x05f8433f + crc: 0x17b654fc type_id: 0x148b1035 full_name: "ps2_end_command" } @@ -354730,7 +354862,7 @@ elf_symbol { name: "ps2_handle_ack" is_defined: true symbol_type: FUNCTION - crc: 0xfd143c51 + crc: 0x053bb4ba type_id: 0xfa126b6a full_name: "ps2_handle_ack" } @@ -354739,7 +354871,7 @@ elf_symbol { name: "ps2_handle_response" is_defined: true symbol_type: FUNCTION - crc: 0x10b9f66b + crc: 0x1072ae3a type_id: 0xfa126b6a full_name: "ps2_handle_response" } @@ -354748,7 +354880,7 @@ elf_symbol { name: "ps2_init" is_defined: true symbol_type: FUNCTION - crc: 0x774a266b + crc: 0xdbde9ffe type_id: 0x1480c3c3 full_name: "ps2_init" } @@ -354757,7 +354889,7 @@ elf_symbol { name: "ps2_sendbyte" is_defined: true symbol_type: FUNCTION - crc: 0xace41fdb + crc: 0x265dd559 type_id: 0x9927b218 full_name: "ps2_sendbyte" } @@ -354766,7 +354898,7 @@ elf_symbol { name: "ps2_sliced_command" is_defined: true symbol_type: FUNCTION - crc: 0x9f495495 + crc: 0x854eafe6 type_id: 0x9936d341 full_name: "ps2_sliced_command" } @@ -354775,7 +354907,7 @@ elf_symbol { name: "pskb_expand_head" is_defined: true symbol_type: FUNCTION - crc: 0x526a2052 + crc: 0xad15001e type_id: 0x9d55b48a full_name: "pskb_expand_head" } @@ -354784,7 +354916,7 @@ elf_symbol { name: "pskb_put" is_defined: true symbol_type: FUNCTION - crc: 0xa012b577 + crc: 0x081f742d type_id: 0x57c99e27 full_name: "pskb_put" } @@ -354793,7 +354925,7 @@ elf_symbol { name: "pstore_register" is_defined: true symbol_type: FUNCTION - crc: 0x7bc6e548 + crc: 0x529c0829 type_id: 0x9f9d90bf full_name: "pstore_register" } @@ -354802,7 +354934,7 @@ elf_symbol { name: "pstore_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x7fe44ed0 + crc: 0xab1185af type_id: 0x12852203 full_name: "pstore_unregister" } @@ -354811,7 +354943,7 @@ elf_symbol { name: "ptp_classify_raw" is_defined: true symbol_type: FUNCTION - crc: 0x1143a77e + crc: 0xc6b853c7 type_id: 0xc1439b43 full_name: "ptp_classify_raw" } @@ -354820,7 +354952,7 @@ elf_symbol { name: "ptp_clock_event" is_defined: true symbol_type: FUNCTION - crc: 0xd0a948d5 + crc: 0x6d060b54 type_id: 0x1a780013 full_name: "ptp_clock_event" } @@ -354829,7 +354961,7 @@ elf_symbol { name: "ptp_clock_index" is_defined: true symbol_type: FUNCTION - crc: 0x84cdb5a8 + crc: 0xc7f02e89 type_id: 0x9768f895 full_name: "ptp_clock_index" } @@ -354838,7 +354970,7 @@ elf_symbol { name: "ptp_clock_register" is_defined: true symbol_type: FUNCTION - crc: 0x44d0edeb + crc: 0xb39f0f4f type_id: 0x2971f309 full_name: "ptp_clock_register" } @@ -354847,7 +354979,7 @@ elf_symbol { name: "ptp_clock_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xbca9046e + crc: 0x7b832c2b type_id: 0x9768f895 full_name: "ptp_clock_unregister" } @@ -354856,7 +354988,7 @@ elf_symbol { name: "ptp_parse_header" is_defined: true symbol_type: FUNCTION - crc: 0xe3fb111e + crc: 0x419211cb type_id: 0x9587d027 full_name: "ptp_parse_header" } @@ -354865,7 +354997,7 @@ elf_symbol { name: "put_cmsg" is_defined: true symbol_type: FUNCTION - crc: 0x3c69e06f + crc: 0xebb57054 type_id: 0x9732df25 full_name: "put_cmsg" } @@ -354874,7 +355006,7 @@ elf_symbol { name: "put_device" is_defined: true symbol_type: FUNCTION - crc: 0x2ac19f95 + crc: 0xe4b7ae21 type_id: 0x100e6fc8 full_name: "put_device" } @@ -354883,7 +355015,7 @@ elf_symbol { name: "put_disk" is_defined: true symbol_type: FUNCTION - crc: 0x7f536211 + crc: 0xde515882 type_id: 0x18d41dd9 full_name: "put_disk" } @@ -354901,7 +355033,7 @@ elf_symbol { name: "put_pid" is_defined: true symbol_type: FUNCTION - crc: 0x846933f3 + crc: 0xb21bf40b type_id: 0x1689085f full_name: "put_pid" } @@ -354955,7 +355087,7 @@ elf_symbol { name: "pwm_apply_state" is_defined: true symbol_type: FUNCTION - crc: 0x8966093f + crc: 0xda776fae type_id: 0x977feed8 full_name: "pwm_apply_state" } @@ -354964,7 +355096,7 @@ elf_symbol { name: "pwmchip_add" is_defined: true symbol_type: FUNCTION - crc: 0x14056ffd + crc: 0x8fdf094c type_id: 0x94a5b2cb full_name: "pwmchip_add" } @@ -354973,7 +355105,7 @@ elf_symbol { name: "pwmchip_remove" is_defined: true symbol_type: FUNCTION - crc: 0x51cb4423 + crc: 0x9ea8a261 type_id: 0x19bd0077 full_name: "pwmchip_remove" } @@ -354982,7 +355114,7 @@ elf_symbol { name: "qca_read_soc_version" is_defined: true symbol_type: FUNCTION - crc: 0xc3ec3729 + crc: 0x104c2555 type_id: 0x9a4d0c6c full_name: "qca_read_soc_version" } @@ -354991,7 +355123,7 @@ elf_symbol { name: "qca_send_pre_shutdown_cmd" is_defined: true symbol_type: FUNCTION - crc: 0x20a130e8 + crc: 0x6ebc1963 type_id: 0x9af01625 full_name: "qca_send_pre_shutdown_cmd" } @@ -355000,7 +355132,7 @@ elf_symbol { name: "qca_set_bdaddr" is_defined: true symbol_type: FUNCTION - crc: 0xc6cd684d + crc: 0x9461b372 type_id: 0x9a2fc16a full_name: "qca_set_bdaddr" } @@ -355009,7 +355141,7 @@ elf_symbol { name: "qca_set_bdaddr_rome" is_defined: true symbol_type: FUNCTION - crc: 0x27bd2b86 + crc: 0x0fb0e9d1 type_id: 0x9a2fc16a full_name: "qca_set_bdaddr_rome" } @@ -355018,7 +355150,7 @@ elf_symbol { name: "qca_uart_setup" is_defined: true symbol_type: FUNCTION - crc: 0x96f984f0 + crc: 0x235e818c type_id: 0x9bc09b7f full_name: "qca_uart_setup" } @@ -355027,7 +355159,7 @@ elf_symbol { name: "qcom_icc_xlate_extended" is_defined: true symbol_type: FUNCTION - crc: 0x60a34819 + crc: 0x1deed96f type_id: 0x2d27988b full_name: "qcom_icc_xlate_extended" } @@ -355036,7 +355168,7 @@ elf_symbol { name: "qcom_smem_state_get" is_defined: true symbol_type: FUNCTION - crc: 0xe7bfaa77 + crc: 0x9eb7e69c type_id: 0x4f30442f full_name: "qcom_smem_state_get" } @@ -355054,7 +355186,7 @@ elf_symbol { name: "qcom_smem_state_register" is_defined: true symbol_type: FUNCTION - crc: 0x7a2972ae + crc: 0x765115d3 type_id: 0x42b552b4 full_name: "qcom_smem_state_register" } @@ -355162,7 +355294,7 @@ elf_symbol { name: "rate_control_set_rates" is_defined: true symbol_type: FUNCTION - crc: 0x98c29b6f + crc: 0x0c4c64e0 type_id: 0x97d187d8 full_name: "rate_control_set_rates" } @@ -355207,7 +355339,7 @@ elf_symbol { name: "raw_spin_rq_lock_nested" is_defined: true symbol_type: FUNCTION - crc: 0x8df62ec8 + crc: 0x1180686a type_id: 0x1a847502 full_name: "raw_spin_rq_lock_nested" } @@ -355216,7 +355348,7 @@ elf_symbol { name: "raw_spin_rq_unlock" is_defined: true symbol_type: FUNCTION - crc: 0xcaba22d7 + crc: 0x08ed0a09 type_id: 0x1b18f64e full_name: "raw_spin_rq_unlock" } @@ -355486,7 +355618,7 @@ elf_symbol { name: "rcu_read_unlock_trace_special" is_defined: true symbol_type: FUNCTION - crc: 0x88cffd6d + crc: 0x1b869862 type_id: 0x17de3be6 full_name: "rcu_read_unlock_trace_special" } @@ -355495,7 +355627,7 @@ elf_symbol { name: "rcu_tasks_trace_qs_blkd" is_defined: true symbol_type: FUNCTION - crc: 0x87cd1eb0 + crc: 0x199c712b type_id: 0x17de3be6 full_name: "rcu_tasks_trace_qs_blkd" } @@ -355504,7 +355636,7 @@ elf_symbol { name: "rcu_trc_cmpxchg_need_qs" is_defined: true symbol_type: FUNCTION - crc: 0xa7b15591 + crc: 0x636f52b6 type_id: 0x54a3f2d6 full_name: "rcu_trc_cmpxchg_need_qs" } @@ -355531,7 +355663,7 @@ elf_symbol { name: "rcuwait_wake_up" is_defined: true symbol_type: FUNCTION - crc: 0xe7466c11 + crc: 0xf435f04e type_id: 0x929ea9e9 full_name: "rcuwait_wake_up" } @@ -355540,7 +355672,7 @@ elf_symbol { name: "rdev_get_drvdata" is_defined: true symbol_type: FUNCTION - crc: 0xa192fe40 + crc: 0x9d49d6ea type_id: 0x5548a022 full_name: "rdev_get_drvdata" } @@ -355549,7 +355681,7 @@ elf_symbol { name: "rdev_get_id" is_defined: true symbol_type: FUNCTION - crc: 0x73d59327 + crc: 0xfca33412 type_id: 0x9e5ef2fc full_name: "rdev_get_id" } @@ -355558,7 +355690,7 @@ elf_symbol { name: "read_cache_page" is_defined: true symbol_type: FUNCTION - crc: 0xdabb5741 + crc: 0x5c29f5e3 type_id: 0xb8307855 full_name: "read_cache_page" } @@ -355594,7 +355726,7 @@ elf_symbol { name: "reclaim_shmem_address_space" is_defined: true symbol_type: FUNCTION - crc: 0xbb981523 + crc: 0xcd9b5542 type_id: 0x98e049ee full_name: "reclaim_shmem_address_space" } @@ -355666,7 +355798,7 @@ elf_symbol { name: "regcache_cache_bypass" is_defined: true symbol_type: FUNCTION - crc: 0x24de8a5f + crc: 0xf2087a07 type_id: 0x1347a32b full_name: "regcache_cache_bypass" } @@ -355675,7 +355807,7 @@ elf_symbol { name: "regcache_cache_only" is_defined: true symbol_type: FUNCTION - crc: 0x92ee0bc3 + crc: 0xa4a4db38 type_id: 0x1347a32b full_name: "regcache_cache_only" } @@ -355684,7 +355816,7 @@ elf_symbol { name: "regcache_drop_region" is_defined: true symbol_type: FUNCTION - crc: 0x833f3623 + crc: 0xb1a5bb48 type_id: 0x9eed9829 full_name: "regcache_drop_region" } @@ -355693,7 +355825,7 @@ elf_symbol { name: "regcache_mark_dirty" is_defined: true symbol_type: FUNCTION - crc: 0x5a203e01 + crc: 0xe66bd861 type_id: 0x12f25e54 full_name: "regcache_mark_dirty" } @@ -355702,7 +355834,7 @@ elf_symbol { name: "regcache_sync" is_defined: true symbol_type: FUNCTION - crc: 0x6050773d + crc: 0x23732a00 type_id: 0x9feaece8 full_name: "regcache_sync" } @@ -355711,7 +355843,7 @@ elf_symbol { name: "regcache_sync_region" is_defined: true symbol_type: FUNCTION - crc: 0x9ebcbb61 + crc: 0x85389d58 type_id: 0x9eed9829 full_name: "regcache_sync_region" } @@ -355720,7 +355852,7 @@ elf_symbol { name: "register_candev" is_defined: true symbol_type: FUNCTION - crc: 0x48a9351f + crc: 0x667e9e06 type_id: 0x91296bda full_name: "register_candev" } @@ -355738,7 +355870,7 @@ elf_symbol { name: "register_console" is_defined: true symbol_type: FUNCTION - crc: 0xf3dbad80 + crc: 0xf41bf63d type_id: 0x10cf8a7c full_name: "register_console" } @@ -355828,7 +355960,7 @@ elf_symbol { name: "register_net_sysctl" is_defined: true symbol_type: FUNCTION - crc: 0x44bd5250 + crc: 0x24e4414a type_id: 0x0d4395f8 full_name: "register_net_sysctl" } @@ -355837,7 +355969,7 @@ elf_symbol { name: "register_netdev" is_defined: true symbol_type: FUNCTION - crc: 0x74247b85 + crc: 0x8f4e7c08 type_id: 0x91296bda full_name: "register_netdev" } @@ -355846,7 +355978,7 @@ elf_symbol { name: "register_netdevice" is_defined: true symbol_type: FUNCTION - crc: 0x7c484df8 + crc: 0xc09bb71d type_id: 0x91296bda full_name: "register_netdevice" } @@ -355882,7 +356014,7 @@ elf_symbol { name: "register_pernet_device" is_defined: true symbol_type: FUNCTION - crc: 0x50d4f571 + crc: 0x188ac0e2 type_id: 0x97969509 full_name: "register_pernet_device" } @@ -355891,7 +356023,7 @@ elf_symbol { name: "register_pernet_subsys" is_defined: true symbol_type: FUNCTION - crc: 0x7a35aa22 + crc: 0x5ce1b15e type_id: 0x97969509 full_name: "register_pernet_subsys" } @@ -355909,7 +356041,7 @@ elf_symbol { name: "register_pppox_proto" is_defined: true symbol_type: FUNCTION - crc: 0x89a9b118 + crc: 0x3130db74 type_id: 0x84a4d3f7 full_name: "register_pppox_proto" } @@ -355918,7 +356050,7 @@ elf_symbol { name: "register_qdisc" is_defined: true symbol_type: FUNCTION - crc: 0x34762a27 + crc: 0xffc59c64 type_id: 0x927a4e4f full_name: "register_qdisc" } @@ -355945,7 +356077,7 @@ elf_symbol { name: "register_shrinker" is_defined: true symbol_type: FUNCTION - crc: 0xa19592c4 + crc: 0x2cc9f802 type_id: 0x94bc9034 full_name: "register_shrinker" } @@ -355981,7 +356113,7 @@ elf_symbol { name: "register_tcf_proto_ops" is_defined: true symbol_type: FUNCTION - crc: 0x843df494 + crc: 0x1db9ba2d type_id: 0x9afc1632 full_name: "register_tcf_proto_ops" } @@ -355990,7 +356122,7 @@ elf_symbol { name: "register_virtio_device" is_defined: true symbol_type: FUNCTION - crc: 0x6b5cb2be + crc: 0xd742c718 type_id: 0x97cd6aa0 full_name: "register_virtio_device" } @@ -355999,7 +356131,7 @@ elf_symbol { name: "register_virtio_driver" is_defined: true symbol_type: FUNCTION - crc: 0x0024f60c + crc: 0x505a883a type_id: 0x99bc1448 full_name: "register_virtio_driver" } @@ -356017,7 +356149,7 @@ elf_symbol { name: "regmap_async_complete" is_defined: true symbol_type: FUNCTION - crc: 0xf5a6c8ac + crc: 0xdf70491c type_id: 0x9feaece8 full_name: "regmap_async_complete" } @@ -356026,7 +356158,7 @@ elf_symbol { name: "regmap_bulk_read" is_defined: true symbol_type: FUNCTION - crc: 0x227a0e55 + crc: 0xbab915f4 type_id: 0x9ef906fc full_name: "regmap_bulk_read" } @@ -356035,7 +356167,7 @@ elf_symbol { name: "regmap_bulk_write" is_defined: true symbol_type: FUNCTION - crc: 0x45536e75 + crc: 0xc2f6bda7 type_id: 0x9ef16e60 full_name: "regmap_bulk_write" } @@ -356044,7 +356176,7 @@ elf_symbol { name: "regmap_check_range_table" is_defined: true symbol_type: FUNCTION - crc: 0x5b758a29 + crc: 0x4c3376c6 type_id: 0xfdd651d2 full_name: "regmap_check_range_table" } @@ -356053,7 +356185,7 @@ elf_symbol { name: "regmap_exit" is_defined: true symbol_type: FUNCTION - crc: 0xd2a9d646 + crc: 0xd22f096d type_id: 0x12f25e54 full_name: "regmap_exit" } @@ -356062,7 +356194,7 @@ elf_symbol { name: "regmap_field_read" is_defined: true symbol_type: FUNCTION - crc: 0xd8700609 + crc: 0x8106983b type_id: 0x957964bc full_name: "regmap_field_read" } @@ -356071,7 +356203,7 @@ elf_symbol { name: "regmap_field_update_bits_base" is_defined: true symbol_type: FUNCTION - crc: 0xc587bf65 + crc: 0xaf5fdf7d type_id: 0x94118828 full_name: "regmap_field_update_bits_base" } @@ -356080,7 +356212,7 @@ elf_symbol { name: "regmap_get_device" is_defined: true symbol_type: FUNCTION - crc: 0xaf50960b + crc: 0x78083489 type_id: 0xaf453ff9 full_name: "regmap_get_device" } @@ -356089,7 +356221,7 @@ elf_symbol { name: "regmap_get_val_bytes" is_defined: true symbol_type: FUNCTION - crc: 0x3d9a0696 + crc: 0x34eff32e type_id: 0x9feaece8 full_name: "regmap_get_val_bytes" } @@ -356116,7 +356248,7 @@ elf_symbol { name: "regmap_mmio_detach_clk" is_defined: true symbol_type: FUNCTION - crc: 0x45d282ec + crc: 0xce545bb2 type_id: 0x12f25e54 full_name: "regmap_mmio_detach_clk" } @@ -356125,7 +356257,7 @@ elf_symbol { name: "regmap_multi_reg_write" is_defined: true symbol_type: FUNCTION - crc: 0xd63f0d5e + crc: 0xf7cb431f type_id: 0x9f0243b3 full_name: "regmap_multi_reg_write" } @@ -356134,7 +356266,7 @@ elf_symbol { name: "regmap_multi_reg_write_bypassed" is_defined: true symbol_type: FUNCTION - crc: 0xa2ece337 + crc: 0x95f7b09c type_id: 0x9f0243b3 full_name: "regmap_multi_reg_write_bypassed" } @@ -356143,7 +356275,7 @@ elf_symbol { name: "regmap_noinc_read" is_defined: true symbol_type: FUNCTION - crc: 0xc3e92f29 + crc: 0x270071bf type_id: 0x9ef906fc full_name: "regmap_noinc_read" } @@ -356152,7 +356284,7 @@ elf_symbol { name: "regmap_noinc_write" is_defined: true symbol_type: FUNCTION - crc: 0x5a0e7924 + crc: 0x45628274 type_id: 0x9ef16e60 full_name: "regmap_noinc_write" } @@ -356161,7 +356293,7 @@ elf_symbol { name: "regmap_raw_read" is_defined: true symbol_type: FUNCTION - crc: 0x9a8996d0 + crc: 0xf4849fc3 type_id: 0x9ef906fc full_name: "regmap_raw_read" } @@ -356170,7 +356302,7 @@ elf_symbol { name: "regmap_raw_write" is_defined: true symbol_type: FUNCTION - crc: 0xb91a73f6 + crc: 0x326342fc type_id: 0x9ef16e60 full_name: "regmap_raw_write" } @@ -356179,7 +356311,7 @@ elf_symbol { name: "regmap_raw_write_async" is_defined: true symbol_type: FUNCTION - crc: 0x4b3fb3d2 + crc: 0x75a328af type_id: 0x9ef16e60 full_name: "regmap_raw_write_async" } @@ -356188,7 +356320,7 @@ elf_symbol { name: "regmap_read" is_defined: true symbol_type: FUNCTION - crc: 0x0c3fd7f8 + crc: 0x536379cb type_id: 0x9efa0528 full_name: "regmap_read" } @@ -356197,7 +356329,7 @@ elf_symbol { name: "regmap_register_patch" is_defined: true symbol_type: FUNCTION - crc: 0xed3739c8 + crc: 0x91df1d3f type_id: 0x9f0243b3 full_name: "regmap_register_patch" } @@ -356206,7 +356338,7 @@ elf_symbol { name: "regmap_update_bits_base" is_defined: true symbol_type: FUNCTION - crc: 0x3d656053 + crc: 0x15daa492 type_id: 0x9eec8be1 full_name: "regmap_update_bits_base" } @@ -356215,7 +356347,7 @@ elf_symbol { name: "regmap_write" is_defined: true symbol_type: FUNCTION - crc: 0x1505ff84 + crc: 0xe0cbff0c type_id: 0x9eed9829 full_name: "regmap_write" } @@ -356224,7 +356356,7 @@ elf_symbol { name: "regulator_allow_bypass" is_defined: true symbol_type: FUNCTION - crc: 0xaffcccbb + crc: 0x4994fc6f type_id: 0x9c5e99dc full_name: "regulator_allow_bypass" } @@ -356233,7 +356365,7 @@ elf_symbol { name: "regulator_bulk_disable" is_defined: true symbol_type: FUNCTION - crc: 0xcd1c365c + crc: 0x88103dff type_id: 0x8499ea41 full_name: "regulator_bulk_disable" } @@ -356242,7 +356374,7 @@ elf_symbol { name: "regulator_bulk_enable" is_defined: true symbol_type: FUNCTION - crc: 0x8b705df8 + crc: 0xcb178295 type_id: 0x8499ea41 full_name: "regulator_bulk_enable" } @@ -356251,7 +356383,7 @@ elf_symbol { name: "regulator_bulk_get" is_defined: true symbol_type: FUNCTION - crc: 0xb57acb1d + crc: 0xda07892c type_id: 0x9c874de2 full_name: "regulator_bulk_get" } @@ -356260,7 +356392,7 @@ elf_symbol { name: "regulator_count_voltages" is_defined: true symbol_type: FUNCTION - crc: 0x52c6c982 + crc: 0xfd67bd74 type_id: 0x9deb64a3 full_name: "regulator_count_voltages" } @@ -356269,7 +356401,7 @@ elf_symbol { name: "regulator_disable" is_defined: true symbol_type: FUNCTION - crc: 0x2b93ab5f + crc: 0xd477e2cf type_id: 0x9deb64a3 full_name: "regulator_disable" } @@ -356278,7 +356410,7 @@ elf_symbol { name: "regulator_disable_regmap" is_defined: true symbol_type: FUNCTION - crc: 0xcba6d10a + crc: 0xc5e1911d type_id: 0x9e5ef2fc full_name: "regulator_disable_regmap" } @@ -356287,7 +356419,7 @@ elf_symbol { name: "regulator_enable" is_defined: true symbol_type: FUNCTION - crc: 0x5936685d + crc: 0xe1871ecb type_id: 0x9deb64a3 full_name: "regulator_enable" } @@ -356296,7 +356428,7 @@ elf_symbol { name: "regulator_enable_regmap" is_defined: true symbol_type: FUNCTION - crc: 0x506b299c + crc: 0x609e478e type_id: 0x9e5ef2fc full_name: "regulator_enable_regmap" } @@ -356305,7 +356437,7 @@ elf_symbol { name: "regulator_force_disable" is_defined: true symbol_type: FUNCTION - crc: 0x1ce6b67b + crc: 0x305d484e type_id: 0x9deb64a3 full_name: "regulator_force_disable" } @@ -356314,7 +356446,7 @@ elf_symbol { name: "regulator_get" is_defined: true symbol_type: FUNCTION - crc: 0x0648031f + crc: 0xe8294a04 type_id: 0x8556217d full_name: "regulator_get" } @@ -356323,7 +356455,7 @@ elf_symbol { name: "regulator_get_current_limit_regmap" is_defined: true symbol_type: FUNCTION - crc: 0x3ff35762 + crc: 0x0ea50fab type_id: 0x9e5ef2fc full_name: "regulator_get_current_limit_regmap" } @@ -356332,7 +356464,7 @@ elf_symbol { name: "regulator_get_linear_step" is_defined: true symbol_type: FUNCTION - crc: 0x3f9fef15 + crc: 0x449f2a98 type_id: 0xceb0f977 full_name: "regulator_get_linear_step" } @@ -356341,7 +356473,7 @@ elf_symbol { name: "regulator_get_mode" is_defined: true symbol_type: FUNCTION - crc: 0x57db765b + crc: 0x562321e7 type_id: 0xceb0f977 full_name: "regulator_get_mode" } @@ -356350,7 +356482,7 @@ elf_symbol { name: "regulator_get_optional" is_defined: true symbol_type: FUNCTION - crc: 0x90e8530f + crc: 0x89206bc6 type_id: 0x8556217d full_name: "regulator_get_optional" } @@ -356359,7 +356491,7 @@ elf_symbol { name: "regulator_get_voltage" is_defined: true symbol_type: FUNCTION - crc: 0xf75793a4 + crc: 0x6f587430 type_id: 0x9deb64a3 full_name: "regulator_get_voltage" } @@ -356368,7 +356500,7 @@ elf_symbol { name: "regulator_get_voltage_rdev" is_defined: true symbol_type: FUNCTION - crc: 0xce51a6b3 + crc: 0x18cddac9 type_id: 0x9e5ef2fc full_name: "regulator_get_voltage_rdev" } @@ -356377,7 +356509,7 @@ elf_symbol { name: "regulator_get_voltage_sel_regmap" is_defined: true symbol_type: FUNCTION - crc: 0x9bf0ea37 + crc: 0xc9101f69 type_id: 0x9e5ef2fc full_name: "regulator_get_voltage_sel_regmap" } @@ -356386,7 +356518,7 @@ elf_symbol { name: "regulator_is_enabled" is_defined: true symbol_type: FUNCTION - crc: 0xe5d7c197 + crc: 0x51115508 type_id: 0x9deb64a3 full_name: "regulator_is_enabled" } @@ -356395,7 +356527,7 @@ elf_symbol { name: "regulator_is_enabled_regmap" is_defined: true symbol_type: FUNCTION - crc: 0xb3527255 + crc: 0x38f7c433 type_id: 0x9e5ef2fc full_name: "regulator_is_enabled_regmap" } @@ -356404,7 +356536,7 @@ elf_symbol { name: "regulator_is_supported_voltage" is_defined: true symbol_type: FUNCTION - crc: 0x89758e45 + crc: 0x9352f96a type_id: 0x9c6e2fdb full_name: "regulator_is_supported_voltage" } @@ -356413,7 +356545,7 @@ elf_symbol { name: "regulator_list_voltage_linear" is_defined: true symbol_type: FUNCTION - crc: 0xc13ae68f + crc: 0x76aa7f22 type_id: 0x9f48e764 full_name: "regulator_list_voltage_linear" } @@ -356422,7 +356554,7 @@ elf_symbol { name: "regulator_list_voltage_linear_range" is_defined: true symbol_type: FUNCTION - crc: 0x4855060e + crc: 0x9affc06d type_id: 0x9f48e764 full_name: "regulator_list_voltage_linear_range" } @@ -356431,7 +356563,7 @@ elf_symbol { name: "regulator_map_voltage_linear" is_defined: true symbol_type: FUNCTION - crc: 0x10228d37 + crc: 0x76c964b5 type_id: 0x9fdbb984 full_name: "regulator_map_voltage_linear" } @@ -356440,7 +356572,7 @@ elf_symbol { name: "regulator_map_voltage_linear_range" is_defined: true symbol_type: FUNCTION - crc: 0xbcafd5dc + crc: 0x0aff9a6a type_id: 0x9fdbb984 full_name: "regulator_map_voltage_linear_range" } @@ -356449,7 +356581,7 @@ elf_symbol { name: "regulator_notifier_call_chain" is_defined: true symbol_type: FUNCTION - crc: 0x6b14e6cf + crc: 0x1eba775a type_id: 0x9e950837 full_name: "regulator_notifier_call_chain" } @@ -356458,7 +356590,7 @@ elf_symbol { name: "regulator_put" is_defined: true symbol_type: FUNCTION - crc: 0x950d28fd + crc: 0xab38e5ae type_id: 0x10f3d61f full_name: "regulator_put" } @@ -356467,7 +356599,7 @@ elf_symbol { name: "regulator_register_notifier" is_defined: true symbol_type: FUNCTION - crc: 0xc7c835d9 + crc: 0x9389295b type_id: 0x9d85be32 full_name: "regulator_register_notifier" } @@ -356476,7 +356608,7 @@ elf_symbol { name: "regulator_set_active_discharge_regmap" is_defined: true symbol_type: FUNCTION - crc: 0xecaa7b9f + crc: 0x7db331ad type_id: 0x9feb0f83 full_name: "regulator_set_active_discharge_regmap" } @@ -356485,7 +356617,7 @@ elf_symbol { name: "regulator_set_current_limit" is_defined: true symbol_type: FUNCTION - crc: 0x25209ba0 + crc: 0x0ed2b4e5 type_id: 0x9c6e2fdb full_name: "regulator_set_current_limit" } @@ -356494,7 +356626,7 @@ elf_symbol { name: "regulator_set_current_limit_regmap" is_defined: true symbol_type: FUNCTION - crc: 0x7bc66cb5 + crc: 0xdb2494cc type_id: 0x9fdbb984 full_name: "regulator_set_current_limit_regmap" } @@ -356503,7 +356635,7 @@ elf_symbol { name: "regulator_set_load" is_defined: true symbol_type: FUNCTION - crc: 0x2eed4cd2 + crc: 0x5c6b6803 type_id: 0x9c77e7ef full_name: "regulator_set_load" } @@ -356512,7 +356644,7 @@ elf_symbol { name: "regulator_set_mode" is_defined: true symbol_type: FUNCTION - crc: 0x267aa818 + crc: 0x78f249b6 type_id: 0x9cfd713b full_name: "regulator_set_mode" } @@ -356521,7 +356653,7 @@ elf_symbol { name: "regulator_set_pull_down_regmap" is_defined: true symbol_type: FUNCTION - crc: 0x70ecfdc9 + crc: 0x3a06eeb3 type_id: 0x9e5ef2fc full_name: "regulator_set_pull_down_regmap" } @@ -356530,7 +356662,7 @@ elf_symbol { name: "regulator_set_voltage" is_defined: true symbol_type: FUNCTION - crc: 0xc755c86d + crc: 0xa39ecb26 type_id: 0x9c6e2fdb full_name: "regulator_set_voltage" } @@ -356539,7 +356671,7 @@ elf_symbol { name: "regulator_set_voltage_sel_regmap" is_defined: true symbol_type: FUNCTION - crc: 0xfce5aa85 + crc: 0xa25b0eec type_id: 0x9f48e764 full_name: "regulator_set_voltage_sel_regmap" } @@ -356548,7 +356680,7 @@ elf_symbol { name: "regulator_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x329341a8 + crc: 0x84bbd071 type_id: 0x13464040 full_name: "regulator_unregister" } @@ -356557,7 +356689,7 @@ elf_symbol { name: "regulator_unregister_notifier" is_defined: true symbol_type: FUNCTION - crc: 0xe40267ae + crc: 0x63225b33 type_id: 0x9d85be32 full_name: "regulator_unregister_notifier" } @@ -356566,7 +356698,7 @@ elf_symbol { name: "regulatory_hint" is_defined: true symbol_type: FUNCTION - crc: 0xa2532ab0 + crc: 0x59c59b08 type_id: 0x99146bf1 full_name: "regulatory_hint" } @@ -356575,7 +356707,7 @@ elf_symbol { name: "regulatory_pre_cac_allowed" is_defined: true symbol_type: FUNCTION - crc: 0xd43d11c6 + crc: 0xb2135d00 type_id: 0xfac8910e full_name: "regulatory_pre_cac_allowed" } @@ -356584,7 +356716,7 @@ elf_symbol { name: "regulatory_set_wiphy_regd" is_defined: true symbol_type: FUNCTION - crc: 0xe9067341 + crc: 0xba6ec3a6 type_id: 0x99d60b9d full_name: "regulatory_set_wiphy_regd" } @@ -356593,7 +356725,7 @@ elf_symbol { name: "regulatory_set_wiphy_regd_sync" is_defined: true symbol_type: FUNCTION - crc: 0xa3c4e9b1 + crc: 0xa75172c2 type_id: 0x99d60b9d full_name: "regulatory_set_wiphy_regd_sync" } @@ -356611,7 +356743,7 @@ elf_symbol { name: "release_sock" is_defined: true symbol_type: FUNCTION - crc: 0x152d654c + crc: 0xa9615a47 type_id: 0x17c95d08 full_name: "release_sock" } @@ -356620,7 +356752,7 @@ elf_symbol { name: "remap_pfn_range" is_defined: true symbol_type: FUNCTION - crc: 0x33cbfa13 + crc: 0x517e9a81 type_id: 0x9fc5d15c full_name: "remap_pfn_range" } @@ -356629,7 +356761,7 @@ elf_symbol { name: "remap_vmalloc_range" is_defined: true symbol_type: FUNCTION - crc: 0x9f010174 + crc: 0xd1bcbc87 type_id: 0x9f6a1bb3 full_name: "remap_vmalloc_range" } @@ -356656,7 +356788,7 @@ elf_symbol { name: "remove_proc_entry" is_defined: true symbol_type: FUNCTION - crc: 0xc12e33cd + crc: 0xc7c0bd86 type_id: 0x1f7d7d9e full_name: "remove_proc_entry" } @@ -356665,7 +356797,7 @@ elf_symbol { name: "remove_proc_subtree" is_defined: true symbol_type: FUNCTION - crc: 0xf30cbfda + crc: 0x3d2049aa type_id: 0x9265cf22 full_name: "remove_proc_subtree" } @@ -356692,7 +356824,7 @@ elf_symbol { name: "report_iommu_fault" is_defined: true symbol_type: FUNCTION - crc: 0x0aadc44b + crc: 0x16b2fe87 type_id: 0x9621e968 full_name: "report_iommu_fault" } @@ -356710,7 +356842,7 @@ elf_symbol { name: "request_firmware" is_defined: true symbol_type: FUNCTION - crc: 0xec7da1c8 + crc: 0xd97808b1 type_id: 0x9cec28b8 full_name: "request_firmware" } @@ -356719,7 +356851,7 @@ elf_symbol { name: "request_firmware_direct" is_defined: true symbol_type: FUNCTION - crc: 0x94619e60 + crc: 0xb7a08f2b type_id: 0x9cec28b8 full_name: "request_firmware_direct" } @@ -356728,7 +356860,7 @@ elf_symbol { name: "request_firmware_into_buf" is_defined: true symbol_type: FUNCTION - crc: 0x15c7ec4b + crc: 0xb251c383 type_id: 0x9cec7740 full_name: "request_firmware_into_buf" } @@ -356737,7 +356869,7 @@ elf_symbol { name: "request_firmware_nowait" is_defined: true symbol_type: FUNCTION - crc: 0x336527ec + crc: 0xa26d57b0 type_id: 0x9ef35806 full_name: "request_firmware_nowait" } @@ -356755,7 +356887,7 @@ elf_symbol { name: "resched_curr" is_defined: true symbol_type: FUNCTION - crc: 0x8116ee57 + crc: 0x60146e57 type_id: 0x1b18f64e full_name: "resched_curr" } @@ -356863,7 +356995,7 @@ elf_symbol { name: "rfkill_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x57c20a14 + crc: 0x2825e4fa type_id: 0x0a9e8df2 full_name: "rfkill_alloc" } @@ -357106,7 +357238,7 @@ elf_symbol { name: "root_task_group" is_defined: true symbol_type: OBJECT - crc: 0x3b37b22d + crc: 0xb272f723 type_id: 0x84d533ac full_name: "root_task_group" } @@ -357142,7 +357274,7 @@ elf_symbol { name: "rpmsg_create_channel" is_defined: true symbol_type: FUNCTION - crc: 0x109472a8 + crc: 0x573e5d56 type_id: 0xa3adbe6c full_name: "rpmsg_create_channel" } @@ -357151,7 +357283,7 @@ elf_symbol { name: "rpmsg_create_ept" is_defined: true symbol_type: FUNCTION - crc: 0xdc5fda8b + crc: 0xa7cb130e type_id: 0x4cd21214 full_name: "rpmsg_create_ept" } @@ -357160,7 +357292,7 @@ elf_symbol { name: "rpmsg_poll" is_defined: true symbol_type: FUNCTION - crc: 0x5e18b7ac + crc: 0xa8d7fed6 type_id: 0x2c0dbc38 full_name: "rpmsg_poll" } @@ -357169,7 +357301,7 @@ elf_symbol { name: "rpmsg_register_device" is_defined: true symbol_type: FUNCTION - crc: 0x1e8afcaa + crc: 0x40b7be89 type_id: 0x94ed2c45 full_name: "rpmsg_register_device" } @@ -357178,7 +357310,7 @@ elf_symbol { name: "rpmsg_register_device_override" is_defined: true symbol_type: FUNCTION - crc: 0x27b6931f + crc: 0xe5807fcd type_id: 0x94156e91 full_name: "rpmsg_register_device_override" } @@ -357187,7 +357319,7 @@ elf_symbol { name: "rpmsg_release_channel" is_defined: true symbol_type: FUNCTION - crc: 0xbee106ef + crc: 0xaa0c3d84 type_id: 0x947a09b6 full_name: "rpmsg_release_channel" } @@ -357196,7 +357328,7 @@ elf_symbol { name: "rpmsg_send" is_defined: true symbol_type: FUNCTION - crc: 0x6a4c1f26 + crc: 0x3d18c854 type_id: 0x92ab09cb full_name: "rpmsg_send" } @@ -357205,7 +357337,7 @@ elf_symbol { name: "rpmsg_trysend" is_defined: true symbol_type: FUNCTION - crc: 0xcb7c9ca9 + crc: 0xdc0839f5 type_id: 0x92ab09cb full_name: "rpmsg_trysend" } @@ -357214,7 +357346,7 @@ elf_symbol { name: "rpmsg_unregister_device" is_defined: true symbol_type: FUNCTION - crc: 0x81b9ef19 + crc: 0x5b10c2e7 type_id: 0x9d81f887 full_name: "rpmsg_unregister_device" } @@ -357223,7 +357355,7 @@ elf_symbol { name: "rproc_add" is_defined: true symbol_type: FUNCTION - crc: 0xb810dbb2 + crc: 0x0d3285ea type_id: 0x97f16301 full_name: "rproc_add" } @@ -357232,7 +357364,7 @@ elf_symbol { name: "rproc_add_subdev" is_defined: true symbol_type: FUNCTION - crc: 0x57563f85 + crc: 0x922b7e9f type_id: 0x1a5a9df1 full_name: "rproc_add_subdev" } @@ -357241,7 +357373,7 @@ elf_symbol { name: "rproc_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x695349ae + crc: 0x7334ae58 type_id: 0xbd324cd3 full_name: "rproc_alloc" } @@ -357250,7 +357382,7 @@ elf_symbol { name: "rproc_boot" is_defined: true symbol_type: FUNCTION - crc: 0x042850fa + crc: 0x1152d951 type_id: 0x97f16301 full_name: "rproc_boot" } @@ -357259,7 +357391,7 @@ elf_symbol { name: "rproc_coredump" is_defined: true symbol_type: FUNCTION - crc: 0xb3545e9c + crc: 0xe693b7e6 type_id: 0x1ae9d1bd full_name: "rproc_coredump" } @@ -357268,7 +357400,7 @@ elf_symbol { name: "rproc_coredump_add_custom_segment" is_defined: true symbol_type: FUNCTION - crc: 0xa6fb75db + crc: 0x9d828bc6 type_id: 0x944ce0cc full_name: "rproc_coredump_add_custom_segment" } @@ -357277,7 +357409,7 @@ elf_symbol { name: "rproc_coredump_add_segment" is_defined: true symbol_type: FUNCTION - crc: 0xd0298da8 + crc: 0xa410867b type_id: 0x944cd608 full_name: "rproc_coredump_add_segment" } @@ -357286,7 +357418,7 @@ elf_symbol { name: "rproc_coredump_cleanup" is_defined: true symbol_type: FUNCTION - crc: 0xe2a740aa + crc: 0xcb8dbbd7 type_id: 0x1ae9d1bd full_name: "rproc_coredump_cleanup" } @@ -357295,7 +357427,7 @@ elf_symbol { name: "rproc_coredump_set_elf_info" is_defined: true symbol_type: FUNCTION - crc: 0xf443409f + crc: 0x9e913c1a type_id: 0x977041a6 full_name: "rproc_coredump_set_elf_info" } @@ -357304,7 +357436,7 @@ elf_symbol { name: "rproc_coredump_using_sections" is_defined: true symbol_type: FUNCTION - crc: 0xa679066b + crc: 0x11e609bb type_id: 0x1ae9d1bd full_name: "rproc_coredump_using_sections" } @@ -357313,7 +357445,7 @@ elf_symbol { name: "rproc_del" is_defined: true symbol_type: FUNCTION - crc: 0x45d005a4 + crc: 0x67702cdb type_id: 0x97f16301 full_name: "rproc_del" } @@ -357322,7 +357454,7 @@ elf_symbol { name: "rproc_elf_get_boot_addr" is_defined: true symbol_type: FUNCTION - crc: 0x34260d9e + crc: 0x3784bb4d type_id: 0x5d665720 full_name: "rproc_elf_get_boot_addr" } @@ -357331,7 +357463,7 @@ elf_symbol { name: "rproc_free" is_defined: true symbol_type: FUNCTION - crc: 0xe39c9cb9 + crc: 0xd9f4c37e type_id: 0x1ae9d1bd full_name: "rproc_free" } @@ -357340,7 +357472,7 @@ elf_symbol { name: "rproc_get_by_child" is_defined: true symbol_type: FUNCTION - crc: 0xaae87407 + crc: 0x2de9c1e7 type_id: 0xbdc4e083 full_name: "rproc_get_by_child" } @@ -357349,7 +357481,7 @@ elf_symbol { name: "rproc_get_by_phandle" is_defined: true symbol_type: FUNCTION - crc: 0x113b9d0f + crc: 0xf44eaee1 type_id: 0xba5ef4b3 full_name: "rproc_get_by_phandle" } @@ -357358,7 +357490,7 @@ elf_symbol { name: "rproc_put" is_defined: true symbol_type: FUNCTION - crc: 0xcef6a252 + crc: 0x8e8faf2f type_id: 0x1ae9d1bd full_name: "rproc_put" } @@ -357367,7 +357499,7 @@ elf_symbol { name: "rproc_remove_subdev" is_defined: true symbol_type: FUNCTION - crc: 0x092214cd + crc: 0xc01aec85 type_id: 0x1a5a9df1 full_name: "rproc_remove_subdev" } @@ -357376,7 +357508,7 @@ elf_symbol { name: "rproc_report_crash" is_defined: true symbol_type: FUNCTION - crc: 0xd0550915 + crc: 0x8d179671 type_id: 0x197c612f full_name: "rproc_report_crash" } @@ -357385,7 +357517,7 @@ elf_symbol { name: "rproc_set_firmware" is_defined: true symbol_type: FUNCTION - crc: 0xf9ecfa1b + crc: 0x89b3222c type_id: 0x970921d5 full_name: "rproc_set_firmware" } @@ -357394,7 +357526,7 @@ elf_symbol { name: "rproc_shutdown" is_defined: true symbol_type: FUNCTION - crc: 0x5c0e3ae6 + crc: 0x09f1fdb3 type_id: 0x97f16301 full_name: "rproc_shutdown" } @@ -357412,7 +357544,7 @@ elf_symbol { name: "rt_mutex_lock" is_defined: true symbol_type: FUNCTION - crc: 0xb26fc058 + crc: 0x5ff3cc6c type_id: 0x1d45c70c full_name: "rt_mutex_lock" } @@ -357421,7 +357553,7 @@ elf_symbol { name: "rt_mutex_trylock" is_defined: true symbol_type: FUNCTION - crc: 0x068c42f2 + crc: 0xb7cf5190 type_id: 0x905d75b0 full_name: "rt_mutex_trylock" } @@ -357430,7 +357562,7 @@ elf_symbol { name: "rt_mutex_unlock" is_defined: true symbol_type: FUNCTION - crc: 0x01fbe1b6 + crc: 0xada80c94 type_id: 0x1d45c70c full_name: "rt_mutex_unlock" } @@ -357439,7 +357571,7 @@ elf_symbol { name: "rtc_class_close" is_defined: true symbol_type: FUNCTION - crc: 0x6ef07ffa + crc: 0x1b53a9f7 type_id: 0x19a0c3db full_name: "rtc_class_close" } @@ -357448,7 +357580,7 @@ elf_symbol { name: "rtc_class_open" is_defined: true symbol_type: FUNCTION - crc: 0x68a5a300 + crc: 0x49280dd4 type_id: 0x71086e18 full_name: "rtc_class_open" } @@ -357457,7 +357589,7 @@ elf_symbol { name: "rtc_read_alarm" is_defined: true symbol_type: FUNCTION - crc: 0xafab8363 + crc: 0x851613ee type_id: 0x94d99adc full_name: "rtc_read_alarm" } @@ -357466,7 +357598,7 @@ elf_symbol { name: "rtc_read_time" is_defined: true symbol_type: FUNCTION - crc: 0x5cd22b12 + crc: 0x67a9ff3a type_id: 0x94662870 full_name: "rtc_read_time" } @@ -357475,7 +357607,7 @@ elf_symbol { name: "rtc_set_alarm" is_defined: true symbol_type: FUNCTION - crc: 0x71d8fbf8 + crc: 0x4df04d03 type_id: 0x94d99adc full_name: "rtc_set_alarm" } @@ -357502,7 +357634,7 @@ elf_symbol { name: "rtc_update_irq" is_defined: true symbol_type: FUNCTION - crc: 0x7c203353 + crc: 0x27aaad13 type_id: 0x1961cb10 full_name: "rtc_update_irq" } @@ -357529,7 +357661,7 @@ elf_symbol { name: "rtnl_link_register" is_defined: true symbol_type: FUNCTION - crc: 0x0950c4fd + crc: 0x205ef8fa type_id: 0x91cbd408 full_name: "rtnl_link_register" } @@ -357538,7 +357670,7 @@ elf_symbol { name: "rtnl_link_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x957fd10f + crc: 0x00d49db8 type_id: 0x1cd366b4 full_name: "rtnl_link_unregister" } @@ -357556,7 +357688,7 @@ elf_symbol { name: "rtnl_register_module" is_defined: true symbol_type: FUNCTION - crc: 0x17d92a4e + crc: 0x9d81f1c2 type_id: 0x9ece22e0 full_name: "rtnl_register_module" } @@ -357574,7 +357706,7 @@ elf_symbol { name: "rtnl_unicast" is_defined: true symbol_type: FUNCTION - crc: 0x6105bac0 + crc: 0x3b104393 type_id: 0x9cd3f2b1 full_name: "rtnl_unicast" } @@ -357610,7 +357742,7 @@ elf_symbol { name: "runqueues" is_defined: true symbol_type: OBJECT - crc: 0x1e9e2e48 + crc: 0xd1a8c6fe type_id: 0x924a9b47 full_name: "runqueues" } @@ -357619,7 +357751,7 @@ elf_symbol { name: "safe_candev_priv" is_defined: true symbol_type: FUNCTION - crc: 0xd6a554aa + crc: 0xf9c401e8 type_id: 0x8426e149 full_name: "safe_candev_priv" } @@ -357628,7 +357760,7 @@ elf_symbol { name: "sampling_rate_store" is_defined: true symbol_type: FUNCTION - crc: 0x1d611702 + crc: 0xfa48f533 type_id: 0x1d04d3fd full_name: "sampling_rate_store" } @@ -357637,7 +357769,7 @@ elf_symbol { name: "sb800_prefetch" is_defined: true symbol_type: FUNCTION - crc: 0x876f007c + crc: 0x2a670047 type_id: 0x1192ec84 full_name: "sb800_prefetch" } @@ -357691,7 +357823,7 @@ elf_symbol { name: "sched_set_fifo" is_defined: true symbol_type: FUNCTION - crc: 0x4c30aee2 + crc: 0x6969d6a4 type_id: 0x17de3be6 full_name: "sched_set_fifo" } @@ -357700,7 +357832,7 @@ elf_symbol { name: "sched_set_fifo_low" is_defined: true symbol_type: FUNCTION - crc: 0xfa98d613 + crc: 0x447101cb type_id: 0x17de3be6 full_name: "sched_set_fifo_low" } @@ -357709,7 +357841,7 @@ elf_symbol { name: "sched_set_normal" is_defined: true symbol_type: FUNCTION - crc: 0x88ba9acc + crc: 0x6011ff96 type_id: 0x1642b8aa full_name: "sched_set_normal" } @@ -357718,7 +357850,7 @@ elf_symbol { name: "sched_setattr" is_defined: true symbol_type: FUNCTION - crc: 0xdf5bf8a6 + crc: 0x7f74c141 type_id: 0x9a2476b0 full_name: "sched_setattr" } @@ -357727,7 +357859,7 @@ elf_symbol { name: "sched_setattr_nocheck" is_defined: true symbol_type: FUNCTION - crc: 0x12a54303 + crc: 0x22c72821 type_id: 0x9a2476b0 full_name: "sched_setattr_nocheck" } @@ -357736,7 +357868,7 @@ elf_symbol { name: "sched_setscheduler" is_defined: true symbol_type: FUNCTION - crc: 0xe409ac5a + crc: 0xc8cda025 type_id: 0x9b56b28e full_name: "sched_setscheduler" } @@ -357745,7 +357877,7 @@ elf_symbol { name: "sched_setscheduler_nocheck" is_defined: true symbol_type: FUNCTION - crc: 0xd7567be7 + crc: 0x6854c4d9 type_id: 0x9b56b28e full_name: "sched_setscheduler_nocheck" } @@ -357754,7 +357886,7 @@ elf_symbol { name: "sched_show_task" is_defined: true symbol_type: FUNCTION - crc: 0xbdceeec1 + crc: 0x7385eda2 type_id: 0x17de3be6 full_name: "sched_show_task" } @@ -357817,7 +357949,7 @@ elf_symbol { name: "scmi_driver_register" is_defined: true symbol_type: FUNCTION - crc: 0xf1ffad80 + crc: 0x8793c5bf type_id: 0x911879fc full_name: "scmi_driver_register" } @@ -357826,7 +357958,7 @@ elf_symbol { name: "scmi_driver_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x6047fbe8 + crc: 0x33a101e6 type_id: 0x1c23d01c full_name: "scmi_driver_unregister" } @@ -357835,7 +357967,7 @@ elf_symbol { name: "scmi_protocol_register" is_defined: true symbol_type: FUNCTION - crc: 0x8d4c065b + crc: 0x9f2b85dd type_id: 0x913b3774 full_name: "scmi_protocol_register" } @@ -357844,7 +357976,7 @@ elf_symbol { name: "scmi_protocol_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xb9357db4 + crc: 0x888996b4 type_id: 0x1c2385c8 full_name: "scmi_protocol_unregister" } @@ -357862,7 +357994,7 @@ elf_symbol { name: "scsi_add_host_with_dma" is_defined: true symbol_type: FUNCTION - crc: 0xcad85c8f + crc: 0x192143f2 type_id: 0x987fb987 full_name: "scsi_add_host_with_dma" } @@ -357871,7 +358003,7 @@ elf_symbol { name: "scsi_alloc_request" is_defined: true symbol_type: FUNCTION - crc: 0xf2f260e9 + crc: 0x9517da9a type_id: 0xdde97c3b full_name: "scsi_alloc_request" } @@ -357880,7 +358012,7 @@ elf_symbol { name: "scsi_autopm_get_device" is_defined: true symbol_type: FUNCTION - crc: 0x963363e7 + crc: 0xdac2e831 type_id: 0x94dfa784 full_name: "scsi_autopm_get_device" } @@ -357889,7 +358021,7 @@ elf_symbol { name: "scsi_autopm_put_device" is_defined: true symbol_type: FUNCTION - crc: 0x7ed9c5c3 + crc: 0x88b0ff76 type_id: 0x19c71538 full_name: "scsi_autopm_put_device" } @@ -357898,7 +358030,7 @@ elf_symbol { name: "scsi_block_requests" is_defined: true symbol_type: FUNCTION - crc: 0x32cd0e38 + crc: 0x36ced6b2 type_id: 0x156efee0 full_name: "scsi_block_requests" } @@ -357907,7 +358039,7 @@ elf_symbol { name: "scsi_block_when_processing_errors" is_defined: true symbol_type: FUNCTION - crc: 0xdc8a6a2e + crc: 0xf90825ef type_id: 0x94dfa784 full_name: "scsi_block_when_processing_errors" } @@ -357916,7 +358048,7 @@ elf_symbol { name: "scsi_change_queue_depth" is_defined: true symbol_type: FUNCTION - crc: 0xd836ce75 + crc: 0x5b30110a type_id: 0x954324c8 full_name: "scsi_change_queue_depth" } @@ -357943,7 +358075,7 @@ elf_symbol { name: "scsi_device_get" is_defined: true symbol_type: FUNCTION - crc: 0xded598a2 + crc: 0xc2bd787e type_id: 0x94dfa784 full_name: "scsi_device_get" } @@ -357952,7 +358084,7 @@ elf_symbol { name: "scsi_device_lookup" is_defined: true symbol_type: FUNCTION - crc: 0x315de56b + crc: 0x4cf8c42c type_id: 0xa355dd14 full_name: "scsi_device_lookup" } @@ -357961,7 +358093,7 @@ elf_symbol { name: "scsi_device_put" is_defined: true symbol_type: FUNCTION - crc: 0xa303cd9e + crc: 0x1376f5f1 type_id: 0x19c71538 full_name: "scsi_device_put" } @@ -357970,7 +358102,7 @@ elf_symbol { name: "scsi_dma_map" is_defined: true symbol_type: FUNCTION - crc: 0x024f41b8 + crc: 0x4ee13eab type_id: 0x9265c435 full_name: "scsi_dma_map" } @@ -357979,7 +358111,7 @@ elf_symbol { name: "scsi_dma_unmap" is_defined: true symbol_type: FUNCTION - crc: 0xaf937030 + crc: 0xf558f0c1 type_id: 0x1f7d7689 full_name: "scsi_dma_unmap" } @@ -357988,7 +358120,7 @@ elf_symbol { name: "scsi_host_alloc" is_defined: true symbol_type: FUNCTION - crc: 0xa5d29367 + crc: 0xba9edeee type_id: 0x0fe1d65c full_name: "scsi_host_alloc" } @@ -357997,7 +358129,7 @@ elf_symbol { name: "scsi_host_lookup" is_defined: true symbol_type: FUNCTION - crc: 0xb29e9719 + crc: 0xad4abd92 type_id: 0x30dc6fbb full_name: "scsi_host_lookup" } @@ -358006,7 +358138,7 @@ elf_symbol { name: "scsi_host_put" is_defined: true symbol_type: FUNCTION - crc: 0x9fa2c6e6 + crc: 0x7e02fb46 type_id: 0x156efee0 full_name: "scsi_host_put" } @@ -358015,7 +358147,7 @@ elf_symbol { name: "scsi_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0x02eeccab + crc: 0x15f11115 type_id: 0x969313ca full_name: "scsi_ioctl" } @@ -358024,7 +358156,7 @@ elf_symbol { name: "scsi_ioctl_block_when_processing_errors" is_defined: true symbol_type: FUNCTION - crc: 0xecfb8bec + crc: 0xa284f3a6 type_id: 0x95587b1f full_name: "scsi_ioctl_block_when_processing_errors" } @@ -358033,7 +358165,7 @@ elf_symbol { name: "scsi_is_host_device" is_defined: true symbol_type: FUNCTION - crc: 0x3921b3ee + crc: 0x6ec7f10b type_id: 0x92697f90 full_name: "scsi_is_host_device" } @@ -358051,7 +358183,7 @@ elf_symbol { name: "scsi_print_command" is_defined: true symbol_type: FUNCTION - crc: 0xcaea91e5 + crc: 0x395acc05 type_id: 0x1f7d7689 full_name: "scsi_print_command" } @@ -358060,7 +358192,7 @@ elf_symbol { name: "scsi_register_interface" is_defined: true symbol_type: FUNCTION - crc: 0x93b45655 + crc: 0xb7831769 type_id: 0x9d725f0c full_name: "scsi_register_interface" } @@ -358069,7 +358201,7 @@ elf_symbol { name: "scsi_remove_host" is_defined: true symbol_type: FUNCTION - crc: 0x09e60cdd + crc: 0x33604e0c type_id: 0x156efee0 full_name: "scsi_remove_host" } @@ -358078,7 +358210,7 @@ elf_symbol { name: "scsi_report_bus_reset" is_defined: true symbol_type: FUNCTION - crc: 0x165aae74 + crc: 0xd7ad6bda type_id: 0x14f27dac full_name: "scsi_report_bus_reset" } @@ -358087,7 +358219,7 @@ elf_symbol { name: "scsi_scan_host" is_defined: true symbol_type: FUNCTION - crc: 0xfd423aa7 + crc: 0x036fd084 type_id: 0x156efee0 full_name: "scsi_scan_host" } @@ -358096,7 +358228,7 @@ elf_symbol { name: "scsi_unblock_requests" is_defined: true symbol_type: FUNCTION - crc: 0x50afbdcf + crc: 0x8960feee type_id: 0x156efee0 full_name: "scsi_unblock_requests" } @@ -358105,7 +358237,7 @@ elf_symbol { name: "sdev_prefix_printk" is_defined: true symbol_type: FUNCTION - crc: 0xdb450497 + crc: 0xf1ea9215 type_id: 0x1fca95d0 full_name: "sdev_prefix_printk" } @@ -358114,7 +358246,7 @@ elf_symbol { name: "sdhci_add_host" is_defined: true symbol_type: FUNCTION - crc: 0x76d15542 + crc: 0x0c0c74d2 type_id: 0x93dfa305 full_name: "sdhci_add_host" } @@ -358123,7 +358255,7 @@ elf_symbol { name: "sdhci_cleanup_host" is_defined: true symbol_type: FUNCTION - crc: 0x1be87c3e + crc: 0xdee4aa9d type_id: 0x1ec711b9 full_name: "sdhci_cleanup_host" } @@ -358132,7 +358264,7 @@ elf_symbol { name: "sdhci_cqe_disable" is_defined: true symbol_type: FUNCTION - crc: 0xac2b3147 + crc: 0x83293175 type_id: 0x1cabfee0 full_name: "sdhci_cqe_disable" } @@ -358141,7 +358273,7 @@ elf_symbol { name: "sdhci_cqe_enable" is_defined: true symbol_type: FUNCTION - crc: 0x72472af2 + crc: 0x1315dd27 type_id: 0x1d1e039f full_name: "sdhci_cqe_enable" } @@ -358150,7 +358282,7 @@ elf_symbol { name: "sdhci_cqe_irq" is_defined: true symbol_type: FUNCTION - crc: 0x506dbd3c + crc: 0xda95c5aa type_id: 0xf3dba0e1 full_name: "sdhci_cqe_irq" } @@ -358159,7 +358291,7 @@ elf_symbol { name: "sdhci_enable_clk" is_defined: true symbol_type: FUNCTION - crc: 0x25ae39ad + crc: 0xe122dbd6 type_id: 0x1c822746 full_name: "sdhci_enable_clk" } @@ -358168,7 +358300,7 @@ elf_symbol { name: "sdhci_get_property" is_defined: true symbol_type: FUNCTION - crc: 0x78e7da95 + crc: 0x88908872 type_id: 0x1f55a7e6 full_name: "sdhci_get_property" } @@ -358177,7 +358309,7 @@ elf_symbol { name: "sdhci_pltfm_free" is_defined: true symbol_type: FUNCTION - crc: 0x6ce783e6 + crc: 0x8995b46e type_id: 0x1f55a7e6 full_name: "sdhci_pltfm_free" } @@ -358186,7 +358318,7 @@ elf_symbol { name: "sdhci_pltfm_init" is_defined: true symbol_type: FUNCTION - crc: 0x91ad17a4 + crc: 0xcfc8bfba type_id: 0xb019e307 full_name: "sdhci_pltfm_init" } @@ -358195,7 +358327,7 @@ elf_symbol { name: "sdhci_remove_host" is_defined: true symbol_type: FUNCTION - crc: 0x17ef9914 + crc: 0x25786536 type_id: 0x1f5b92f5 full_name: "sdhci_remove_host" } @@ -358204,7 +358336,7 @@ elf_symbol { name: "sdhci_reset" is_defined: true symbol_type: FUNCTION - crc: 0x92309955 + crc: 0xe701cfbe type_id: 0x1e626071 full_name: "sdhci_reset" } @@ -358213,7 +358345,7 @@ elf_symbol { name: "sdhci_set_bus_width" is_defined: true symbol_type: FUNCTION - crc: 0x8b127f13 + crc: 0x6663876a type_id: 0x1f5b92f5 full_name: "sdhci_set_bus_width" } @@ -358222,7 +358354,7 @@ elf_symbol { name: "sdhci_set_power_noreg" is_defined: true symbol_type: FUNCTION - crc: 0xcfca5f5c + crc: 0xa35ca116 type_id: 0x1f835b6f full_name: "sdhci_set_power_noreg" } @@ -358231,7 +358363,7 @@ elf_symbol { name: "sdhci_setup_host" is_defined: true symbol_type: FUNCTION - crc: 0x1d0b263d + crc: 0x06abc1df type_id: 0x93dfa305 full_name: "sdhci_setup_host" } @@ -358240,7 +358372,7 @@ elf_symbol { name: "sdio_claim_host" is_defined: true symbol_type: FUNCTION - crc: 0x6561f184 + crc: 0x492931fb type_id: 0x1402e6d4 full_name: "sdio_claim_host" } @@ -358249,7 +358381,7 @@ elf_symbol { name: "sdio_claim_irq" is_defined: true symbol_type: FUNCTION - crc: 0xdb8ef29f + crc: 0x90b6ea7a type_id: 0x99b6bd9e full_name: "sdio_claim_irq" } @@ -358258,7 +358390,7 @@ elf_symbol { name: "sdio_disable_func" is_defined: true symbol_type: FUNCTION - crc: 0x9b7045c2 + crc: 0x8c860163 type_id: 0x991a5468 full_name: "sdio_disable_func" } @@ -358267,7 +358399,7 @@ elf_symbol { name: "sdio_enable_func" is_defined: true symbol_type: FUNCTION - crc: 0xc9865565 + crc: 0x127490d0 type_id: 0x991a5468 full_name: "sdio_enable_func" } @@ -358276,7 +358408,7 @@ elf_symbol { name: "sdio_memcpy_fromio" is_defined: true symbol_type: FUNCTION - crc: 0x9f2dab9f + crc: 0x3fffa14d type_id: 0x99685c26 full_name: "sdio_memcpy_fromio" } @@ -358285,7 +358417,7 @@ elf_symbol { name: "sdio_memcpy_toio" is_defined: true symbol_type: FUNCTION - crc: 0xe69042c0 + crc: 0x8fdd948f type_id: 0x980bf22a full_name: "sdio_memcpy_toio" } @@ -358294,7 +358426,7 @@ elf_symbol { name: "sdio_readb" is_defined: true symbol_type: FUNCTION - crc: 0x838fdb47 + crc: 0xda54cf9c type_id: 0x56c2caab full_name: "sdio_readb" } @@ -358303,7 +358435,7 @@ elf_symbol { name: "sdio_readsb" is_defined: true symbol_type: FUNCTION - crc: 0xc52b2e68 + crc: 0x3ca54db3 type_id: 0x99685c26 full_name: "sdio_readsb" } @@ -358312,7 +358444,7 @@ elf_symbol { name: "sdio_register_driver" is_defined: true symbol_type: FUNCTION - crc: 0xf51a8b1a + crc: 0x5c29c01c type_id: 0x92a01938 full_name: "sdio_register_driver" } @@ -358321,7 +358453,7 @@ elf_symbol { name: "sdio_release_host" is_defined: true symbol_type: FUNCTION - crc: 0x91ac4228 + crc: 0x502fcced type_id: 0x1402e6d4 full_name: "sdio_release_host" } @@ -358330,7 +358462,7 @@ elf_symbol { name: "sdio_release_irq" is_defined: true symbol_type: FUNCTION - crc: 0x5bf7f5e7 + crc: 0xb15a891c type_id: 0x991a5468 full_name: "sdio_release_irq" } @@ -358339,7 +358471,7 @@ elf_symbol { name: "sdio_set_block_size" is_defined: true symbol_type: FUNCTION - crc: 0x05bd3c2f + crc: 0xa6615ef6 type_id: 0x980c41f0 full_name: "sdio_set_block_size" } @@ -358348,7 +358480,7 @@ elf_symbol { name: "sdio_unregister_driver" is_defined: true symbol_type: FUNCTION - crc: 0xa31fd309 + crc: 0xeab5f029 type_id: 0x1fb8ab84 full_name: "sdio_unregister_driver" } @@ -358357,7 +358489,7 @@ elf_symbol { name: "sdio_writeb" is_defined: true symbol_type: FUNCTION - crc: 0x27df3c2e + crc: 0xeabb2351 type_id: 0x14b6bb25 full_name: "sdio_writeb" } @@ -358366,7 +358498,7 @@ elf_symbol { name: "sdio_writeb_readb" is_defined: true symbol_type: FUNCTION - crc: 0x75d82686 + crc: 0x8543bde2 type_id: 0x576454c1 full_name: "sdio_writeb_readb" } @@ -358375,7 +358507,7 @@ elf_symbol { name: "sdio_writesb" is_defined: true symbol_type: FUNCTION - crc: 0x3b32773a + crc: 0x2094a7e0 type_id: 0x980bf22a full_name: "sdio_writesb" } @@ -358411,7 +358543,7 @@ elf_symbol { name: "select_fallback_rq" is_defined: true symbol_type: FUNCTION - crc: 0xdddf746f + crc: 0xa200faf6 type_id: 0x843cb143 full_name: "select_fallback_rq" } @@ -358420,7 +358552,7 @@ elf_symbol { name: "send_sig" is_defined: true symbol_type: FUNCTION - crc: 0x9ea4539d + crc: 0x23cdafe1 type_id: 0x84257977 full_name: "send_sig" } @@ -358429,7 +358561,7 @@ elf_symbol { name: "send_sig_info" is_defined: true symbol_type: FUNCTION - crc: 0x6974d9f6 + crc: 0xe8be3904 type_id: 0x84af08b2 full_name: "send_sig_info" } @@ -358447,7 +358579,7 @@ elf_symbol { name: "seq_hex_dump" is_defined: true symbol_type: FUNCTION - crc: 0xc2e07945 + crc: 0x15c5f131 type_id: 0x11e1274d full_name: "seq_hex_dump" } @@ -358474,7 +358606,7 @@ elf_symbol { name: "seq_lseek" is_defined: true symbol_type: FUNCTION - crc: 0xca53775a + crc: 0x3b2d5b49 type_id: 0x2d64ae3e full_name: "seq_lseek" } @@ -358483,7 +358615,7 @@ elf_symbol { name: "seq_open" is_defined: true symbol_type: FUNCTION - crc: 0x04be10c4 + crc: 0xa720529a type_id: 0x9b472ec5 full_name: "seq_open" } @@ -358492,7 +358624,7 @@ elf_symbol { name: "seq_printf" is_defined: true symbol_type: FUNCTION - crc: 0x2df7a470 + crc: 0x4627856a type_id: 0x11d02068 full_name: "seq_printf" } @@ -358501,7 +358633,7 @@ elf_symbol { name: "seq_putc" is_defined: true symbol_type: FUNCTION - crc: 0x9e0c3493 + crc: 0x0756d1f4 type_id: 0x11e015cb full_name: "seq_putc" } @@ -358510,7 +358642,7 @@ elf_symbol { name: "seq_puts" is_defined: true symbol_type: FUNCTION - crc: 0x9800a3d0 + crc: 0x060085c2 type_id: 0x11f96aea full_name: "seq_puts" } @@ -358519,7 +358651,7 @@ elf_symbol { name: "seq_read" is_defined: true symbol_type: FUNCTION - crc: 0x33184e97 + crc: 0x46290ed0 type_id: 0x12e4741f full_name: "seq_read" } @@ -358528,7 +358660,7 @@ elf_symbol { name: "seq_release" is_defined: true symbol_type: FUNCTION - crc: 0x8d6fb7c8 + crc: 0x86dee284 type_id: 0x9b022eae full_name: "seq_release" } @@ -358537,7 +358669,7 @@ elf_symbol { name: "seq_release_private" is_defined: true symbol_type: FUNCTION - crc: 0x2401d299 + crc: 0x5415e068 type_id: 0x9b022eae full_name: "seq_release_private" } @@ -358546,7 +358678,7 @@ elf_symbol { name: "seq_vprintf" is_defined: true symbol_type: FUNCTION - crc: 0x7a0257c6 + crc: 0x7e4726e8 type_id: 0x11c013b1 full_name: "seq_vprintf" } @@ -358555,7 +358687,7 @@ elf_symbol { name: "seq_write" is_defined: true symbol_type: FUNCTION - crc: 0xd425ba5e + crc: 0x207bba1f type_id: 0x9cc0eb8f full_name: "seq_write" } @@ -358564,7 +358696,7 @@ elf_symbol { name: "serdev_device_close" is_defined: true symbol_type: FUNCTION - crc: 0xa0375181 + crc: 0x68328a0e type_id: 0x1e70c9ff full_name: "serdev_device_close" } @@ -358573,7 +358705,7 @@ elf_symbol { name: "serdev_device_get_tiocm" is_defined: true symbol_type: FUNCTION - crc: 0x02ca8ebc + crc: 0xf29cc52d type_id: 0x93687b43 full_name: "serdev_device_get_tiocm" } @@ -358582,7 +358714,7 @@ elf_symbol { name: "serdev_device_open" is_defined: true symbol_type: FUNCTION - crc: 0xabe9cea6 + crc: 0x6d728cc1 type_id: 0x93687b43 full_name: "serdev_device_open" } @@ -358591,7 +358723,7 @@ elf_symbol { name: "serdev_device_set_baudrate" is_defined: true symbol_type: FUNCTION - crc: 0x194ca3cf + crc: 0x3675b5a3 type_id: 0xc125f30f full_name: "serdev_device_set_baudrate" } @@ -358600,7 +358732,7 @@ elf_symbol { name: "serdev_device_set_flow_control" is_defined: true symbol_type: FUNCTION - crc: 0xadc1db54 + crc: 0x4a0005b8 type_id: 0x1fc53480 full_name: "serdev_device_set_flow_control" } @@ -358609,7 +358741,7 @@ elf_symbol { name: "serdev_device_set_tiocm" is_defined: true symbol_type: FUNCTION - crc: 0xc5aa3b49 + crc: 0x145727f5 type_id: 0x92ed303b full_name: "serdev_device_set_tiocm" } @@ -358618,7 +358750,7 @@ elf_symbol { name: "serdev_device_wait_until_sent" is_defined: true symbol_type: FUNCTION - crc: 0x438ba555 + crc: 0x3aa214a2 type_id: 0x1d80f189 full_name: "serdev_device_wait_until_sent" } @@ -358627,7 +358759,7 @@ elf_symbol { name: "serdev_device_write_buf" is_defined: true symbol_type: FUNCTION - crc: 0x00958be2 + crc: 0x0e56d21d type_id: 0x93b44747 full_name: "serdev_device_write_buf" } @@ -358636,7 +358768,7 @@ elf_symbol { name: "serdev_device_write_flush" is_defined: true symbol_type: FUNCTION - crc: 0x259209a4 + crc: 0xa85a775c type_id: 0x1e70c9ff full_name: "serdev_device_write_flush" } @@ -358645,7 +358777,7 @@ elf_symbol { name: "serio_close" is_defined: true symbol_type: FUNCTION - crc: 0x7068867f + crc: 0xbd8c915f type_id: 0x10256efa full_name: "serio_close" } @@ -358654,7 +358786,7 @@ elf_symbol { name: "serio_interrupt" is_defined: true symbol_type: FUNCTION - crc: 0xbc46f8ac + crc: 0x19129791 type_id: 0x231edf87 full_name: "serio_interrupt" } @@ -358663,7 +358795,7 @@ elf_symbol { name: "serio_open" is_defined: true symbol_type: FUNCTION - crc: 0xf29ca034 + crc: 0x041c8e3a type_id: 0x9d191a3a full_name: "serio_open" } @@ -358672,7 +358804,7 @@ elf_symbol { name: "serio_reconnect" is_defined: true symbol_type: FUNCTION - crc: 0x7f2259c9 + crc: 0xf7aa1316 type_id: 0x10256efa full_name: "serio_reconnect" } @@ -358681,7 +358813,7 @@ elf_symbol { name: "serio_rescan" is_defined: true symbol_type: FUNCTION - crc: 0xc105ef22 + crc: 0xdb0ce864 type_id: 0x10256efa full_name: "serio_rescan" } @@ -358690,7 +358822,7 @@ elf_symbol { name: "serio_unregister_child_port" is_defined: true symbol_type: FUNCTION - crc: 0x83735191 + crc: 0x1f2a374d type_id: 0x10256efa full_name: "serio_unregister_child_port" } @@ -358699,7 +358831,7 @@ elf_symbol { name: "serio_unregister_driver" is_defined: true symbol_type: FUNCTION - crc: 0xdf7cc535 + crc: 0x9768541d type_id: 0x12d43657 full_name: "serio_unregister_driver" } @@ -358708,7 +358840,7 @@ elf_symbol { name: "serio_unregister_port" is_defined: true symbol_type: FUNCTION - crc: 0x83d17df4 + crc: 0xbd06524d type_id: 0x10256efa full_name: "serio_unregister_port" } @@ -358717,7 +358849,7 @@ elf_symbol { name: "set_blocksize" is_defined: true symbol_type: FUNCTION - crc: 0x389bf754 + crc: 0x180257c1 type_id: 0x9f17e634 full_name: "set_blocksize" } @@ -358726,7 +358858,7 @@ elf_symbol { name: "set_capacity" is_defined: true symbol_type: FUNCTION - crc: 0x210404e7 + crc: 0x25d748de type_id: 0x1b96d351 full_name: "set_capacity" } @@ -358735,7 +358867,7 @@ elf_symbol { name: "set_capacity_and_notify" is_defined: true symbol_type: FUNCTION - crc: 0x3f22c915 + crc: 0x02e8d24c type_id: 0xf5aad9c6 full_name: "set_capacity_and_notify" } @@ -358744,7 +358876,7 @@ elf_symbol { name: "set_cpus_allowed_ptr" is_defined: true symbol_type: FUNCTION - crc: 0xf4fde54b + crc: 0xe3e8f2b4 type_id: 0x9a02b25a full_name: "set_cpus_allowed_ptr" } @@ -358762,7 +358894,7 @@ elf_symbol { name: "set_disk_ro" is_defined: true symbol_type: FUNCTION - crc: 0x433d8911 + crc: 0x878e8b8f type_id: 0x1961e0a6 full_name: "set_disk_ro" } @@ -358780,7 +358912,7 @@ elf_symbol { name: "set_next_entity" is_defined: true symbol_type: FUNCTION - crc: 0xa3066a78 + crc: 0xec2d9373 type_id: 0x130ef56d full_name: "set_next_entity" } @@ -358798,7 +358930,7 @@ elf_symbol { name: "set_page_dirty" is_defined: true symbol_type: FUNCTION - crc: 0x44a9aede + crc: 0x2c1a0a88 type_id: 0xff048ca3 full_name: "set_page_dirty" } @@ -358807,7 +358939,7 @@ elf_symbol { name: "set_page_dirty_lock" is_defined: true symbol_type: FUNCTION - crc: 0xd659a41b + crc: 0x0c488906 type_id: 0x9c203488 full_name: "set_page_dirty_lock" } @@ -358816,7 +358948,7 @@ elf_symbol { name: "set_task_cpu" is_defined: true symbol_type: FUNCTION - crc: 0xec3f0517 + crc: 0xe34309d4 type_id: 0x16c82e7e full_name: "set_task_cpu" } @@ -358825,7 +358957,7 @@ elf_symbol { name: "set_user_nice" is_defined: true symbol_type: FUNCTION - crc: 0x47084b68 + crc: 0xd8ee1b30 type_id: 0x142e0390 full_name: "set_user_nice" } @@ -358834,7 +358966,7 @@ elf_symbol { name: "setup_udp_tunnel_sock" is_defined: true symbol_type: FUNCTION - crc: 0x52e91b49 + crc: 0x3dd5dc86 type_id: 0x13f4af03 full_name: "setup_udp_tunnel_sock" } @@ -358861,7 +358993,7 @@ elf_symbol { name: "sg_alloc_table_from_pages_segment" is_defined: true symbol_type: FUNCTION - crc: 0x4d064ac9 + crc: 0x632d0133 type_id: 0x9d955638 full_name: "sg_alloc_table_from_pages_segment" } @@ -358924,7 +359056,7 @@ elf_symbol { name: "sg_miter_next" is_defined: true symbol_type: FUNCTION - crc: 0x05a32090 + crc: 0xcee4c78f type_id: 0xf226477c full_name: "sg_miter_next" } @@ -358933,7 +359065,7 @@ elf_symbol { name: "sg_miter_skip" is_defined: true symbol_type: FUNCTION - crc: 0x732aee37 + crc: 0xd173fd52 type_id: 0xf14b1ed8 full_name: "sg_miter_skip" } @@ -358942,7 +359074,7 @@ elf_symbol { name: "sg_miter_start" is_defined: true symbol_type: FUNCTION - crc: 0xa7fa433c + crc: 0xbefc0d59 type_id: 0x1c4d054f full_name: "sg_miter_start" } @@ -358951,7 +359083,7 @@ elf_symbol { name: "sg_miter_stop" is_defined: true symbol_type: FUNCTION - crc: 0x9fedf379 + crc: 0x3f84980e type_id: 0x1c1a4deb full_name: "sg_miter_stop" } @@ -358978,7 +359110,7 @@ elf_symbol { name: "sget_fc" is_defined: true symbol_type: FUNCTION - crc: 0x349435fd + crc: 0xa16f3002 type_id: 0xf07462c6 full_name: "sget_fc" } @@ -358987,7 +359119,7 @@ elf_symbol { name: "shmem_file_setup" is_defined: true symbol_type: FUNCTION - crc: 0xe9ef458b + crc: 0xdfbc06f6 type_id: 0x4e848709 full_name: "shmem_file_setup" } @@ -358996,7 +359128,7 @@ elf_symbol { name: "shmem_read_mapping_page_gfp" is_defined: true symbol_type: FUNCTION - crc: 0x50262ff8 + crc: 0x9d11927c type_id: 0xb809e664 full_name: "shmem_read_mapping_page_gfp" } @@ -359005,7 +359137,7 @@ elf_symbol { name: "shmem_truncate_range" is_defined: true symbol_type: FUNCTION - crc: 0x12d1e0f7 + crc: 0xee27617b type_id: 0x16ee4350 full_name: "shmem_truncate_range" } @@ -359078,7 +359210,7 @@ elf_symbol { name: "simple_attr_open" is_defined: true symbol_type: FUNCTION - crc: 0xac228fec + crc: 0x2cc7f78c type_id: 0x9b0987fe full_name: "simple_attr_open" } @@ -359087,7 +359219,7 @@ elf_symbol { name: "simple_attr_read" is_defined: true symbol_type: FUNCTION - crc: 0x997b89f0 + crc: 0xed0604d6 type_id: 0x12e4741f full_name: "simple_attr_read" } @@ -359096,7 +359228,7 @@ elf_symbol { name: "simple_attr_release" is_defined: true symbol_type: FUNCTION - crc: 0x92b88778 + crc: 0x9008c9ca type_id: 0x9b022eae full_name: "simple_attr_release" } @@ -359105,7 +359237,7 @@ elf_symbol { name: "simple_attr_write" is_defined: true symbol_type: FUNCTION - crc: 0x7ca27527 + crc: 0xbe1cb5d6 type_id: 0x120e3950 full_name: "simple_attr_write" } @@ -359114,7 +359246,7 @@ elf_symbol { name: "simple_open" is_defined: true symbol_type: FUNCTION - crc: 0xee04cc02 + crc: 0x96eaa195 type_id: 0x9b022eae full_name: "simple_open" } @@ -359177,7 +359309,7 @@ elf_symbol { name: "single_open" is_defined: true symbol_type: FUNCTION - crc: 0xb0c2620f + crc: 0x548d7ead type_id: 0x9b0a6d47 full_name: "single_open" } @@ -359186,7 +359318,7 @@ elf_symbol { name: "single_open_size" is_defined: true symbol_type: FUNCTION - crc: 0x8bf7dd1f + crc: 0xd6b11feb type_id: 0x9b09bd92 full_name: "single_open_size" } @@ -359195,7 +359327,7 @@ elf_symbol { name: "single_release" is_defined: true symbol_type: FUNCTION - crc: 0xd0f8a1b2 + crc: 0x79d39a7e type_id: 0x9b022eae full_name: "single_release" } @@ -359204,7 +359336,7 @@ elf_symbol { name: "sk_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x469d79fe + crc: 0x23d7851f type_id: 0x6ecc6402 full_name: "sk_alloc" } @@ -359213,7 +359345,7 @@ elf_symbol { name: "sk_common_release" is_defined: true symbol_type: FUNCTION - crc: 0xdbe82714 + crc: 0x90382914 type_id: 0x17c95d08 full_name: "sk_common_release" } @@ -359222,7 +359354,7 @@ elf_symbol { name: "sk_error_report" is_defined: true symbol_type: FUNCTION - crc: 0x681510a3 + crc: 0x0d7f22ae type_id: 0x17c95d08 full_name: "sk_error_report" } @@ -359231,7 +359363,7 @@ elf_symbol { name: "sk_filter_trim_cap" is_defined: true symbol_type: FUNCTION - crc: 0x709f0e3a + crc: 0x33441fc3 type_id: 0x9ad5b349 full_name: "sk_filter_trim_cap" } @@ -359240,7 +359372,7 @@ elf_symbol { name: "sk_free" is_defined: true symbol_type: FUNCTION - crc: 0xbdea0aa0 + crc: 0xf5999c5a type_id: 0x17c95d08 full_name: "sk_free" } @@ -359249,7 +359381,7 @@ elf_symbol { name: "sk_reset_timer" is_defined: true symbol_type: FUNCTION - crc: 0xc392e891 + crc: 0xc3fdf1e6 type_id: 0x173d585f full_name: "sk_reset_timer" } @@ -359258,7 +359390,7 @@ elf_symbol { name: "sk_setup_caps" is_defined: true symbol_type: FUNCTION - crc: 0x09aa781d + crc: 0xe3de67c9 type_id: 0x17803a85 full_name: "sk_setup_caps" } @@ -359267,7 +359399,7 @@ elf_symbol { name: "sk_stop_timer" is_defined: true symbol_type: FUNCTION - crc: 0x82960dfa + crc: 0xc083d08d type_id: 0x17318506 full_name: "sk_stop_timer" } @@ -359276,7 +359408,7 @@ elf_symbol { name: "skb_add_rx_frag" is_defined: true symbol_type: FUNCTION - crc: 0xb48b508e + crc: 0x30a619e9 type_id: 0x10572c13 full_name: "skb_add_rx_frag" } @@ -359285,7 +359417,7 @@ elf_symbol { name: "skb_append_pagefrags" is_defined: true symbol_type: FUNCTION - crc: 0x997f79b5 + crc: 0x2a7193b5 type_id: 0x9cd32cf2 full_name: "skb_append_pagefrags" } @@ -359294,7 +359426,7 @@ elf_symbol { name: "skb_checksum" is_defined: true symbol_type: FUNCTION - crc: 0xfe79a464 + crc: 0x5cb3de5e type_id: 0x345f1809 full_name: "skb_checksum" } @@ -359303,7 +359435,7 @@ elf_symbol { name: "skb_checksum_help" is_defined: true symbol_type: FUNCTION - crc: 0xc017ae77 + crc: 0x5ed43f4a type_id: 0x9cd33969 full_name: "skb_checksum_help" } @@ -359312,7 +359444,7 @@ elf_symbol { name: "skb_clone" is_defined: true symbol_type: FUNCTION - crc: 0x574bad40 + crc: 0xdb9c5692 type_id: 0x6a0b7818 full_name: "skb_clone" } @@ -359321,7 +359453,7 @@ elf_symbol { name: "skb_clone_sk" is_defined: true symbol_type: FUNCTION - crc: 0x497e4625 + crc: 0x1ad92ede type_id: 0x69cde367 full_name: "skb_clone_sk" } @@ -359330,7 +359462,7 @@ elf_symbol { name: "skb_coalesce_rx_frag" is_defined: true symbol_type: FUNCTION - crc: 0x1d12ac12 + crc: 0x73a6b73e type_id: 0x104fd6b8 full_name: "skb_coalesce_rx_frag" } @@ -359339,7 +359471,7 @@ elf_symbol { name: "skb_complete_tx_timestamp" is_defined: true symbol_type: FUNCTION - crc: 0x0bb1be4b + crc: 0x74e5e8c9 type_id: 0x11d3a4b4 full_name: "skb_complete_tx_timestamp" } @@ -359348,7 +359480,7 @@ elf_symbol { name: "skb_complete_wifi_ack" is_defined: true symbol_type: FUNCTION - crc: 0xb3d30ffe + crc: 0x1a64bea8 type_id: 0x107e76aa full_name: "skb_complete_wifi_ack" } @@ -359357,7 +359489,7 @@ elf_symbol { name: "skb_copy" is_defined: true symbol_type: FUNCTION - crc: 0x02a9f35c + crc: 0xbf0bba31 type_id: 0x64c047e6 full_name: "skb_copy" } @@ -359366,7 +359498,7 @@ elf_symbol { name: "skb_copy_bits" is_defined: true symbol_type: FUNCTION - crc: 0x54b9d3e6 + crc: 0x242e409b type_id: 0x93833601 full_name: "skb_copy_bits" } @@ -359375,7 +359507,7 @@ elf_symbol { name: "skb_copy_datagram_from_iter" is_defined: true symbol_type: FUNCTION - crc: 0x91eacaf8 + crc: 0x45ee8112 type_id: 0x9d45fa50 full_name: "skb_copy_datagram_from_iter" } @@ -359384,7 +359516,7 @@ elf_symbol { name: "skb_copy_datagram_iter" is_defined: true symbol_type: FUNCTION - crc: 0x54e5c36b + crc: 0x7c8e65a3 type_id: 0x938ec5ae full_name: "skb_copy_datagram_iter" } @@ -359393,7 +359525,7 @@ elf_symbol { name: "skb_copy_expand" is_defined: true symbol_type: FUNCTION - crc: 0xee358c9d + crc: 0x14a06d88 type_id: 0x6680517a full_name: "skb_copy_expand" } @@ -359402,7 +359534,7 @@ elf_symbol { name: "skb_cow_data" is_defined: true symbol_type: FUNCTION - crc: 0x5e6a4dac + crc: 0x0cd5e5fa type_id: 0x9d4d4add full_name: "skb_cow_data" } @@ -359411,7 +359543,7 @@ elf_symbol { name: "skb_dequeue" is_defined: true symbol_type: FUNCTION - crc: 0x9c53eadb + crc: 0x98d4cb85 type_id: 0x6f42ce8a full_name: "skb_dequeue" } @@ -359420,7 +359552,7 @@ elf_symbol { name: "skb_dequeue_tail" is_defined: true symbol_type: FUNCTION - crc: 0xe2fadfe2 + crc: 0xfd41ae12 type_id: 0x6f42ce8a full_name: "skb_dequeue_tail" } @@ -359429,7 +359561,7 @@ elf_symbol { name: "skb_ensure_writable" is_defined: true symbol_type: FUNCTION - crc: 0xd5b60b90 + crc: 0xcbce7499 type_id: 0x9dc52cf1 full_name: "skb_ensure_writable" } @@ -359438,7 +359570,7 @@ elf_symbol { name: "skb_free_datagram" is_defined: true symbol_type: FUNCTION - crc: 0x9ed2499b + crc: 0x281b35a3 type_id: 0x17dc60ac full_name: "skb_free_datagram" } @@ -359447,7 +359579,7 @@ elf_symbol { name: "skb_page_frag_refill" is_defined: true symbol_type: FUNCTION - crc: 0xe568b761 + crc: 0x4d10d255 type_id: 0xef54849c full_name: "skb_page_frag_refill" } @@ -359456,7 +359588,7 @@ elf_symbol { name: "skb_partial_csum_set" is_defined: true symbol_type: FUNCTION - crc: 0x3c5f1b9e + crc: 0x5b5a99fe type_id: 0xfd96e4d2 full_name: "skb_partial_csum_set" } @@ -359465,7 +359597,7 @@ elf_symbol { name: "skb_pull" is_defined: true symbol_type: FUNCTION - crc: 0x90d13e6b + crc: 0xbb6f9ce2 type_id: 0x56d37e2f full_name: "skb_pull" } @@ -359474,7 +359606,7 @@ elf_symbol { name: "skb_pull_data" is_defined: true symbol_type: FUNCTION - crc: 0x0b760f16 + crc: 0xe46e42e9 type_id: 0x5415be16 full_name: "skb_pull_data" } @@ -359483,7 +359615,7 @@ elf_symbol { name: "skb_pull_rcsum" is_defined: true symbol_type: FUNCTION - crc: 0x4bbc5ccb + crc: 0x50a3af16 type_id: 0x56d37e2f full_name: "skb_pull_rcsum" } @@ -359492,7 +359624,7 @@ elf_symbol { name: "skb_push" is_defined: true symbol_type: FUNCTION - crc: 0x9f1a65ed + crc: 0x858a6893 type_id: 0x56d37e2f full_name: "skb_push" } @@ -359501,7 +359633,7 @@ elf_symbol { name: "skb_put" is_defined: true symbol_type: FUNCTION - crc: 0x67b3c2a5 + crc: 0xe7c13f62 type_id: 0x56d37e2f full_name: "skb_put" } @@ -359510,7 +359642,7 @@ elf_symbol { name: "skb_queue_head" is_defined: true symbol_type: FUNCTION - crc: 0xe64d68d4 + crc: 0xbc5793d1 type_id: 0x17519b9c full_name: "skb_queue_head" } @@ -359519,7 +359651,7 @@ elf_symbol { name: "skb_queue_purge" is_defined: true symbol_type: FUNCTION - crc: 0x3fe3a81b + crc: 0x36bad548 type_id: 0x1744a638 full_name: "skb_queue_purge" } @@ -359528,7 +359660,7 @@ elf_symbol { name: "skb_queue_tail" is_defined: true symbol_type: FUNCTION - crc: 0xa112646f + crc: 0x6ea79cf0 type_id: 0x17519b9c full_name: "skb_queue_tail" } @@ -359537,7 +359669,7 @@ elf_symbol { name: "skb_realloc_headroom" is_defined: true symbol_type: FUNCTION - crc: 0x6335568d + crc: 0x553962cc type_id: 0x68dbf6ff full_name: "skb_realloc_headroom" } @@ -359546,7 +359678,7 @@ elf_symbol { name: "skb_recv_datagram" is_defined: true symbol_type: FUNCTION - crc: 0xa324dc7c + crc: 0x89872822 type_id: 0x6eddf621 full_name: "skb_recv_datagram" } @@ -359555,7 +359687,7 @@ elf_symbol { name: "skb_scrub_packet" is_defined: true symbol_type: FUNCTION - crc: 0x54fe1823 + crc: 0x141e1c1b type_id: 0x107e76aa full_name: "skb_scrub_packet" } @@ -359564,7 +359696,7 @@ elf_symbol { name: "skb_set_owner_w" is_defined: true symbol_type: FUNCTION - crc: 0x5129598f + crc: 0xc9688b3b type_id: 0x11be9b1c full_name: "skb_set_owner_w" } @@ -359573,7 +359705,7 @@ elf_symbol { name: "skb_store_bits" is_defined: true symbol_type: FUNCTION - crc: 0x30f94e17 + crc: 0xa433251f type_id: 0x9d406163 full_name: "skb_store_bits" } @@ -359582,7 +359714,7 @@ elf_symbol { name: "skb_to_sgvec" is_defined: true symbol_type: FUNCTION - crc: 0x81b6b6ed + crc: 0x322b81a4 type_id: 0x9c8c5236 full_name: "skb_to_sgvec" } @@ -359591,7 +359723,7 @@ elf_symbol { name: "skb_trim" is_defined: true symbol_type: FUNCTION - crc: 0x532b8527 + crc: 0x61c0c312 type_id: 0x10dd9e4d full_name: "skb_trim" } @@ -359600,7 +359732,7 @@ elf_symbol { name: "skb_try_coalesce" is_defined: true symbol_type: FUNCTION - crc: 0x6d7340d3 + crc: 0xe5cecaed type_id: 0xffe6827d full_name: "skb_try_coalesce" } @@ -359609,7 +359741,7 @@ elf_symbol { name: "skb_tstamp_tx" is_defined: true symbol_type: FUNCTION - crc: 0x3ba93b76 + crc: 0xb012dade type_id: 0x11d3a4b4 full_name: "skb_tstamp_tx" } @@ -359618,7 +359750,7 @@ elf_symbol { name: "skb_unlink" is_defined: true symbol_type: FUNCTION - crc: 0xe1d01113 + crc: 0x8db64b5a type_id: 0x11b644af full_name: "skb_unlink" } @@ -359726,7 +359858,7 @@ elf_symbol { name: "snd_card_free" is_defined: true symbol_type: FUNCTION - crc: 0x14f61545 + crc: 0xe60b79be type_id: 0x917ece7d full_name: "snd_card_free" } @@ -359735,7 +359867,7 @@ elf_symbol { name: "snd_card_new" is_defined: true symbol_type: FUNCTION - crc: 0xb51e85cb + crc: 0x276614d1 type_id: 0x9c85ef5b full_name: "snd_card_new" } @@ -359744,7 +359876,7 @@ elf_symbol { name: "snd_card_register" is_defined: true symbol_type: FUNCTION - crc: 0x9db7ffd5 + crc: 0x74ca0927 type_id: 0x917ece7d full_name: "snd_card_register" } @@ -359753,7 +359885,7 @@ elf_symbol { name: "snd_compr_stop_error" is_defined: true symbol_type: FUNCTION - crc: 0xf9a22f64 + crc: 0x3cb8b46d type_id: 0x9b735e47 full_name: "snd_compr_stop_error" } @@ -359762,7 +359894,7 @@ elf_symbol { name: "snd_ctl_add" is_defined: true symbol_type: FUNCTION - crc: 0xbfe4044c + crc: 0x3de44f37 type_id: 0x91d0f233 full_name: "snd_ctl_add" } @@ -359771,7 +359903,7 @@ elf_symbol { name: "snd_ctl_boolean_mono_info" is_defined: true symbol_type: FUNCTION - crc: 0x14395850 + crc: 0xb36f21ef type_id: 0x9710bae0 full_name: "snd_ctl_boolean_mono_info" } @@ -359789,7 +359921,7 @@ elf_symbol { name: "snd_ctl_new1" is_defined: true symbol_type: FUNCTION - crc: 0x9661630a + crc: 0x556dd985 type_id: 0x22a7ae7f full_name: "snd_ctl_new1" } @@ -359798,7 +359930,7 @@ elf_symbol { name: "snd_ctl_notify" is_defined: true symbol_type: FUNCTION - crc: 0x4b1120d0 + crc: 0x3d62c852 type_id: 0x1d729530 full_name: "snd_ctl_notify" } @@ -359807,7 +359939,7 @@ elf_symbol { name: "snd_ctl_remove" is_defined: true symbol_type: FUNCTION - crc: 0x2e7d048b + crc: 0xc0881f79 type_id: 0x91d0f233 full_name: "snd_ctl_remove" } @@ -359816,7 +359948,7 @@ elf_symbol { name: "snd_dma_alloc_dir_pages" is_defined: true symbol_type: FUNCTION - crc: 0x0c3a0110 + crc: 0x745ac93f type_id: 0x84710953 full_name: "snd_dma_alloc_dir_pages" } @@ -359825,7 +359957,7 @@ elf_symbol { name: "snd_dma_free_pages" is_defined: true symbol_type: FUNCTION - crc: 0xcf108c4c + crc: 0x00dc1e8c type_id: 0x1c27266a full_name: "snd_dma_free_pages" } @@ -359834,7 +359966,7 @@ elf_symbol { name: "snd_hwdep_new" is_defined: true symbol_type: FUNCTION - crc: 0xe29d968e + crc: 0x5b6ec819 type_id: 0x9175015c full_name: "snd_hwdep_new" } @@ -359843,7 +359975,7 @@ elf_symbol { name: "snd_info_create_card_entry" is_defined: true symbol_type: FUNCTION - crc: 0xc4da7ed3 + crc: 0x149b41f2 type_id: 0xc3dd5fea full_name: "snd_info_create_card_entry" } @@ -359852,7 +359984,7 @@ elf_symbol { name: "snd_info_create_module_entry" is_defined: true symbol_type: FUNCTION - crc: 0xfc20e42d + crc: 0xb906f64b type_id: 0xcdea85a8 full_name: "snd_info_create_module_entry" } @@ -359861,7 +359993,7 @@ elf_symbol { name: "snd_info_free_entry" is_defined: true symbol_type: FUNCTION - crc: 0xcb66a01d + crc: 0x72962c94 type_id: 0x1f50da89 full_name: "snd_info_free_entry" } @@ -359870,7 +360002,7 @@ elf_symbol { name: "snd_info_register" is_defined: true symbol_type: FUNCTION - crc: 0x14ff3998 + crc: 0x8be06a38 type_id: 0x92486835 full_name: "snd_info_register" } @@ -359888,7 +360020,7 @@ elf_symbol { name: "snd_jack_new" is_defined: true symbol_type: FUNCTION - crc: 0x744d7358 + crc: 0x7c497c01 type_id: 0x919f7f11 full_name: "snd_jack_new" } @@ -359897,7 +360029,7 @@ elf_symbol { name: "snd_jack_report" is_defined: true symbol_type: FUNCTION - crc: 0xf83a67fd + crc: 0xdf6e6f10 type_id: 0x13cd4ba2 full_name: "snd_jack_report" } @@ -359906,7 +360038,7 @@ elf_symbol { name: "snd_jack_set_key" is_defined: true symbol_type: FUNCTION - crc: 0xc86cf1dc + crc: 0xae5b26ea type_id: 0x9e441880 full_name: "snd_jack_set_key" } @@ -359915,7 +360047,7 @@ elf_symbol { name: "snd_pcm_add_chmap_ctls" is_defined: true symbol_type: FUNCTION - crc: 0x0a7cf1c6 + crc: 0xf99a864f type_id: 0x987349b3 full_name: "snd_pcm_add_chmap_ctls" } @@ -359933,7 +360065,7 @@ elf_symbol { name: "snd_pcm_fill_iec958_consumer" is_defined: true symbol_type: FUNCTION - crc: 0xc89eb502 + crc: 0xe3b66803 type_id: 0x9c8e6c6c full_name: "snd_pcm_fill_iec958_consumer" } @@ -359969,7 +360101,7 @@ elf_symbol { name: "snd_pcm_hw_constraint_eld" is_defined: true symbol_type: FUNCTION - crc: 0xdf9309b7 + crc: 0x207d65a4 type_id: 0x9cd28836 full_name: "snd_pcm_hw_constraint_eld" } @@ -359978,7 +360110,7 @@ elf_symbol { name: "snd_pcm_hw_constraint_integer" is_defined: true symbol_type: FUNCTION - crc: 0x0c02a58e + crc: 0xf920a642 type_id: 0x9d51e53b full_name: "snd_pcm_hw_constraint_integer" } @@ -359987,7 +360119,7 @@ elf_symbol { name: "snd_pcm_hw_constraint_list" is_defined: true symbol_type: FUNCTION - crc: 0x732d9580 + crc: 0xd1dc1052 type_id: 0x9db8bf34 full_name: "snd_pcm_hw_constraint_list" } @@ -359996,7 +360128,7 @@ elf_symbol { name: "snd_pcm_hw_constraint_mask64" is_defined: true symbol_type: FUNCTION - crc: 0xdd6bb3e2 + crc: 0xce4025d3 type_id: 0x9d569303 full_name: "snd_pcm_hw_constraint_mask64" } @@ -360005,7 +360137,7 @@ elf_symbol { name: "snd_pcm_hw_constraint_minmax" is_defined: true symbol_type: FUNCTION - crc: 0x4745a068 + crc: 0x75a6bc35 type_id: 0x9d419277 full_name: "snd_pcm_hw_constraint_minmax" } @@ -360014,7 +360146,7 @@ elf_symbol { name: "snd_pcm_hw_constraint_step" is_defined: true symbol_type: FUNCTION - crc: 0x70a08e68 + crc: 0x8ab9e128 type_id: 0x9db8bc66 full_name: "snd_pcm_hw_constraint_step" } @@ -360023,7 +360155,7 @@ elf_symbol { name: "snd_pcm_lib_free_pages" is_defined: true symbol_type: FUNCTION - crc: 0xb7705be6 + crc: 0xb9b5e762 type_id: 0x98aeb261 full_name: "snd_pcm_lib_free_pages" } @@ -360032,7 +360164,7 @@ elf_symbol { name: "snd_pcm_lib_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0xd0def212 + crc: 0xfe26c5ec type_id: 0x99be88a0 full_name: "snd_pcm_lib_ioctl" } @@ -360041,7 +360173,7 @@ elf_symbol { name: "snd_pcm_lib_malloc_pages" is_defined: true symbol_type: FUNCTION - crc: 0xed8f29ac + crc: 0x8adf56be type_id: 0x9b7e67c0 full_name: "snd_pcm_lib_malloc_pages" } @@ -360050,7 +360182,7 @@ elf_symbol { name: "snd_pcm_lib_preallocate_pages" is_defined: true symbol_type: FUNCTION - crc: 0x86e53b7b + crc: 0x2487c30f type_id: 0x1429f877 full_name: "snd_pcm_lib_preallocate_pages" } @@ -360059,7 +360191,7 @@ elf_symbol { name: "snd_pcm_new" is_defined: true symbol_type: FUNCTION - crc: 0xb10d4e58 + crc: 0x55e7886c type_id: 0x919ec1ed full_name: "snd_pcm_new" } @@ -360068,7 +360200,7 @@ elf_symbol { name: "snd_pcm_period_elapsed" is_defined: true symbol_type: FUNCTION - crc: 0x308c1078 + crc: 0x409cc5c3 type_id: 0x15b600dd full_name: "snd_pcm_period_elapsed" } @@ -360077,7 +360209,7 @@ elf_symbol { name: "snd_pcm_set_managed_buffer" is_defined: true symbol_type: FUNCTION - crc: 0x1fed70a4 + crc: 0x259da60c type_id: 0x99314acb full_name: "snd_pcm_set_managed_buffer" } @@ -360086,7 +360218,7 @@ elf_symbol { name: "snd_pcm_set_managed_buffer_all" is_defined: true symbol_type: FUNCTION - crc: 0xb6b3e59f + crc: 0x8af9137d type_id: 0x987c7e77 full_name: "snd_pcm_set_managed_buffer_all" } @@ -360095,7 +360227,7 @@ elf_symbol { name: "snd_pcm_set_ops" is_defined: true symbol_type: FUNCTION - crc: 0x890b86cc + crc: 0xe04e4cc4 type_id: 0x15694c5f full_name: "snd_pcm_set_ops" } @@ -360113,7 +360245,7 @@ elf_symbol { name: "snd_pcm_stop" is_defined: true symbol_type: FUNCTION - crc: 0xe9c585ef + crc: 0x804b2ea8 type_id: 0x98e6a470 full_name: "snd_pcm_stop" } @@ -360122,7 +360254,7 @@ elf_symbol { name: "snd_soc_add_component_controls" is_defined: true symbol_type: FUNCTION - crc: 0x0440c900 + crc: 0xa1d90043 type_id: 0x9928799a full_name: "snd_soc_add_component_controls" } @@ -360131,7 +360263,7 @@ elf_symbol { name: "snd_soc_add_dai_controls" is_defined: true symbol_type: FUNCTION - crc: 0xbff17129 + crc: 0x4bd9e5b1 type_id: 0x9c32da8c full_name: "snd_soc_add_dai_controls" } @@ -360140,7 +360272,7 @@ elf_symbol { name: "snd_soc_bytes_tlv_callback" is_defined: true symbol_type: FUNCTION - crc: 0x4c480e84 + crc: 0x14372644 type_id: 0x96eeaa13 full_name: "snd_soc_bytes_tlv_callback" } @@ -360149,7 +360281,7 @@ elf_symbol { name: "snd_soc_card_get_kcontrol" is_defined: true symbol_type: FUNCTION - crc: 0x7ff7f54b + crc: 0xa51c27de type_id: 0x2a7bc89a full_name: "snd_soc_card_get_kcontrol" } @@ -360158,7 +360290,7 @@ elf_symbol { name: "snd_soc_card_jack_new" is_defined: true symbol_type: FUNCTION - crc: 0xeda4a0ce + crc: 0xc730c2af type_id: 0x9b26368a full_name: "snd_soc_card_jack_new" } @@ -360167,7 +360299,7 @@ elf_symbol { name: "snd_soc_card_jack_new_pins" is_defined: true symbol_type: FUNCTION - crc: 0x536b2aa7 + crc: 0x86c728f0 type_id: 0x9b263487 full_name: "snd_soc_card_jack_new_pins" } @@ -360176,7 +360308,7 @@ elf_symbol { name: "snd_soc_component_disable_pin" is_defined: true symbol_type: FUNCTION - crc: 0xea8558a3 + crc: 0x87271477 type_id: 0x99214080 full_name: "snd_soc_component_disable_pin" } @@ -360185,7 +360317,7 @@ elf_symbol { name: "snd_soc_component_exit_regmap" is_defined: true symbol_type: FUNCTION - crc: 0xe744d81d + crc: 0xbe692c21 type_id: 0x14c1b0e8 full_name: "snd_soc_component_exit_regmap" } @@ -360194,7 +360326,7 @@ elf_symbol { name: "snd_soc_component_force_enable_pin" is_defined: true symbol_type: FUNCTION - crc: 0x70af2a87 + crc: 0x12e686f6 type_id: 0x99214080 full_name: "snd_soc_component_force_enable_pin" } @@ -360203,7 +360335,7 @@ elf_symbol { name: "snd_soc_component_init_regmap" is_defined: true symbol_type: FUNCTION - crc: 0x94783aa6 + crc: 0xe6ebc613 type_id: 0x14e71014 full_name: "snd_soc_component_init_regmap" } @@ -360212,7 +360344,7 @@ elf_symbol { name: "snd_soc_component_read" is_defined: true symbol_type: FUNCTION - crc: 0xb3f09290 + crc: 0xf33ebea8 type_id: 0xcb948a18 full_name: "snd_soc_component_read" } @@ -360221,7 +360353,7 @@ elf_symbol { name: "snd_soc_component_read_field" is_defined: true symbol_type: FUNCTION - crc: 0xf3b91380 + crc: 0x8f0f1b8b type_id: 0xcb85eb41 full_name: "snd_soc_component_read_field" } @@ -360230,7 +360362,7 @@ elf_symbol { name: "snd_soc_component_set_jack" is_defined: true symbol_type: FUNCTION - crc: 0x7ef3bd87 + crc: 0xcdd9e47a type_id: 0x99f8b4f4 full_name: "snd_soc_component_set_jack" } @@ -360239,7 +360371,7 @@ elf_symbol { name: "snd_soc_component_set_pll" is_defined: true symbol_type: FUNCTION - crc: 0x5fe1bd6a + crc: 0x5abc3cba type_id: 0x985d4e58 full_name: "snd_soc_component_set_pll" } @@ -360248,7 +360380,7 @@ elf_symbol { name: "snd_soc_component_set_sysclk" is_defined: true symbol_type: FUNCTION - crc: 0x5733a163 + crc: 0x940810f0 type_id: 0x985d46f1 full_name: "snd_soc_component_set_sysclk" } @@ -360257,7 +360389,7 @@ elf_symbol { name: "snd_soc_component_update_bits" is_defined: true symbol_type: FUNCTION - crc: 0x5f81a4ea + crc: 0xc32e30bf type_id: 0x98df6080 full_name: "snd_soc_component_update_bits" } @@ -360266,7 +360398,7 @@ elf_symbol { name: "snd_soc_component_write" is_defined: true symbol_type: FUNCTION - crc: 0xec95b3f2 + crc: 0x792c0758 type_id: 0x98de7695 full_name: "snd_soc_component_write" } @@ -360275,7 +360407,7 @@ elf_symbol { name: "snd_soc_component_write_field" is_defined: true symbol_type: FUNCTION - crc: 0x0b32b9b7 + crc: 0xae644449 type_id: 0x98df6080 full_name: "snd_soc_component_write_field" } @@ -360284,7 +360416,7 @@ elf_symbol { name: "snd_soc_dai_get_channel_map" is_defined: true symbol_type: FUNCTION - crc: 0x8354e042 + crc: 0x03205b65 type_id: 0x9ca258ce full_name: "snd_soc_dai_get_channel_map" } @@ -360293,7 +360425,7 @@ elf_symbol { name: "snd_soc_dai_link_set_capabilities" is_defined: true symbol_type: FUNCTION - crc: 0x94d3d6a2 + crc: 0x95318384 type_id: 0x1899030d full_name: "snd_soc_dai_link_set_capabilities" } @@ -360302,7 +360434,7 @@ elf_symbol { name: "snd_soc_dai_set_channel_map" is_defined: true symbol_type: FUNCTION - crc: 0x0e88547b + crc: 0xb31b541c type_id: 0x9ddaf106 full_name: "snd_soc_dai_set_channel_map" } @@ -360311,7 +360443,7 @@ elf_symbol { name: "snd_soc_dai_set_fmt" is_defined: true symbol_type: FUNCTION - crc: 0x12d5c62b + crc: 0x65021da5 type_id: 0x9ddd1db7 full_name: "snd_soc_dai_set_fmt" } @@ -360320,7 +360452,7 @@ elf_symbol { name: "snd_soc_dai_set_pll" is_defined: true symbol_type: FUNCTION - crc: 0x770f18e3 + crc: 0xa585b473 type_id: 0x9d4f4423 full_name: "snd_soc_dai_set_pll" } @@ -360329,7 +360461,7 @@ elf_symbol { name: "snd_soc_dai_set_sysclk" is_defined: true symbol_type: FUNCTION - crc: 0xb30ccd05 + crc: 0xbbdd217a type_id: 0x9d4776b9 full_name: "snd_soc_dai_set_sysclk" } @@ -360338,7 +360470,7 @@ elf_symbol { name: "snd_soc_dai_set_tdm_slot" is_defined: true symbol_type: FUNCTION - crc: 0x76d43850 + crc: 0x12527b97 type_id: 0x9dcdf9a5 full_name: "snd_soc_dai_set_tdm_slot" } @@ -360356,7 +360488,7 @@ elf_symbol { name: "snd_soc_daifmt_parse_clock_provider_raw" is_defined: true symbol_type: FUNCTION - crc: 0x16949486 + crc: 0x64fd6e46 type_id: 0xc33e01cf full_name: "snd_soc_daifmt_parse_clock_provider_raw" } @@ -360365,7 +360497,7 @@ elf_symbol { name: "snd_soc_daifmt_parse_format" is_defined: true symbol_type: FUNCTION - crc: 0x6e76fb89 + crc: 0x336e58b6 type_id: 0xc33ffcc2 full_name: "snd_soc_daifmt_parse_format" } @@ -360374,7 +360506,7 @@ elf_symbol { name: "snd_soc_dapm_add_routes" is_defined: true symbol_type: FUNCTION - crc: 0x98537630 + crc: 0x77b4dc30 type_id: 0x9d6ad4e2 full_name: "snd_soc_dapm_add_routes" } @@ -360383,7 +360515,7 @@ elf_symbol { name: "snd_soc_dapm_disable_pin" is_defined: true symbol_type: FUNCTION - crc: 0x81998738 + crc: 0xd01eea67 type_id: 0x9d7d5431 full_name: "snd_soc_dapm_disable_pin" } @@ -360392,7 +360524,7 @@ elf_symbol { name: "snd_soc_dapm_force_enable_pin" is_defined: true symbol_type: FUNCTION - crc: 0x1ae734ad + crc: 0x4f335b46 type_id: 0x9d7d5431 full_name: "snd_soc_dapm_force_enable_pin" } @@ -360401,7 +360533,7 @@ elf_symbol { name: "snd_soc_dapm_get_enum_double" is_defined: true symbol_type: FUNCTION - crc: 0xf1999cf9 + crc: 0x736f392d type_id: 0x973a41ee full_name: "snd_soc_dapm_get_enum_double" } @@ -360410,7 +360542,7 @@ elf_symbol { name: "snd_soc_dapm_get_volsw" is_defined: true symbol_type: FUNCTION - crc: 0xa7b79752 + crc: 0x96c01ebc type_id: 0x973a41ee full_name: "snd_soc_dapm_get_volsw" } @@ -360419,7 +360551,7 @@ elf_symbol { name: "snd_soc_dapm_ignore_suspend" is_defined: true symbol_type: FUNCTION - crc: 0xdf5248f6 + crc: 0x307a08c5 type_id: 0x9d7d5431 full_name: "snd_soc_dapm_ignore_suspend" } @@ -360428,7 +360560,7 @@ elf_symbol { name: "snd_soc_dapm_kcontrol_dapm" is_defined: true symbol_type: FUNCTION - crc: 0x984b42d3 + crc: 0xe0226558 type_id: 0x146afcfb full_name: "snd_soc_dapm_kcontrol_dapm" } @@ -360437,7 +360569,7 @@ elf_symbol { name: "snd_soc_dapm_kcontrol_widget" is_defined: true symbol_type: FUNCTION - crc: 0x383fe755 + crc: 0xacfba1f8 type_id: 0xa21fd62f full_name: "snd_soc_dapm_kcontrol_widget" } @@ -360446,7 +360578,7 @@ elf_symbol { name: "snd_soc_dapm_mixer_update_power" is_defined: true symbol_type: FUNCTION - crc: 0x0d4b31b7 + crc: 0x4cfeb8f3 type_id: 0x9d32251c full_name: "snd_soc_dapm_mixer_update_power" } @@ -360455,7 +360587,7 @@ elf_symbol { name: "snd_soc_dapm_mux_update_power" is_defined: true symbol_type: FUNCTION - crc: 0xb16d1f75 + crc: 0x588fb299 type_id: 0x9d328b5e full_name: "snd_soc_dapm_mux_update_power" } @@ -360464,7 +360596,7 @@ elf_symbol { name: "snd_soc_dapm_new_controls" is_defined: true symbol_type: FUNCTION - crc: 0x57659481 + crc: 0xc4e037f1 type_id: 0x9d6a013c full_name: "snd_soc_dapm_new_controls" } @@ -360473,7 +360605,7 @@ elf_symbol { name: "snd_soc_dapm_new_widgets" is_defined: true symbol_type: FUNCTION - crc: 0xcde0b9e7 + crc: 0x8d36a863 type_id: 0x9bc79bf3 full_name: "snd_soc_dapm_new_widgets" } @@ -360482,7 +360614,7 @@ elf_symbol { name: "snd_soc_dapm_put_enum_double" is_defined: true symbol_type: FUNCTION - crc: 0x11ccb1bd + crc: 0xb6ce6411 type_id: 0x973a41ee full_name: "snd_soc_dapm_put_enum_double" } @@ -360491,7 +360623,7 @@ elf_symbol { name: "snd_soc_dapm_put_volsw" is_defined: true symbol_type: FUNCTION - crc: 0xa9a9af53 + crc: 0xbb3a58bd type_id: 0x973a41ee full_name: "snd_soc_dapm_put_volsw" } @@ -360500,7 +360632,7 @@ elf_symbol { name: "snd_soc_dapm_sync" is_defined: true symbol_type: FUNCTION - crc: 0x9882f85d + crc: 0x6633d5f3 type_id: 0x9d8516e5 full_name: "snd_soc_dapm_sync" } @@ -360509,7 +360641,7 @@ elf_symbol { name: "snd_soc_find_dai" is_defined: true symbol_type: FUNCTION - crc: 0x49e5b659 + crc: 0x71074bf6 type_id: 0x6eef99a2 full_name: "snd_soc_find_dai" } @@ -360518,7 +360650,7 @@ elf_symbol { name: "snd_soc_get_enum_double" is_defined: true symbol_type: FUNCTION - crc: 0x788b7fb5 + crc: 0xfce02c6c type_id: 0x973a41ee full_name: "snd_soc_get_enum_double" } @@ -360527,7 +360659,7 @@ elf_symbol { name: "snd_soc_get_pcm_runtime" is_defined: true symbol_type: FUNCTION - crc: 0x373209bf + crc: 0x9649edce type_id: 0x76907643 full_name: "snd_soc_get_pcm_runtime" } @@ -360536,7 +360668,7 @@ elf_symbol { name: "snd_soc_get_volsw" is_defined: true symbol_type: FUNCTION - crc: 0x2cb55e3a + crc: 0x1c968a9a type_id: 0x973a41ee full_name: "snd_soc_get_volsw" } @@ -360545,7 +360677,7 @@ elf_symbol { name: "snd_soc_get_volsw_range" is_defined: true symbol_type: FUNCTION - crc: 0xbc217c76 + crc: 0x37a95795 type_id: 0x973a41ee full_name: "snd_soc_get_volsw_range" } @@ -360554,7 +360686,7 @@ elf_symbol { name: "snd_soc_info_enum_double" is_defined: true symbol_type: FUNCTION - crc: 0x5ae65bbf + crc: 0xb69d9fb8 type_id: 0x9710bae0 full_name: "snd_soc_info_enum_double" } @@ -360563,7 +360695,7 @@ elf_symbol { name: "snd_soc_info_multi_ext" is_defined: true symbol_type: FUNCTION - crc: 0x542f74f3 + crc: 0x341eb9f2 type_id: 0x9710bae0 full_name: "snd_soc_info_multi_ext" } @@ -360572,7 +360704,7 @@ elf_symbol { name: "snd_soc_info_volsw" is_defined: true symbol_type: FUNCTION - crc: 0xdcd30aed + crc: 0x501e1968 type_id: 0x9710bae0 full_name: "snd_soc_info_volsw" } @@ -360581,7 +360713,7 @@ elf_symbol { name: "snd_soc_info_volsw_range" is_defined: true symbol_type: FUNCTION - crc: 0x91af2046 + crc: 0x9e55ea08 type_id: 0x9710bae0 full_name: "snd_soc_info_volsw_range" } @@ -360590,7 +360722,7 @@ elf_symbol { name: "snd_soc_info_volsw_sx" is_defined: true symbol_type: FUNCTION - crc: 0x9e1d89ed + crc: 0x2c057541 type_id: 0x9710bae0 full_name: "snd_soc_info_volsw_sx" } @@ -360599,7 +360731,7 @@ elf_symbol { name: "snd_soc_jack_report" is_defined: true symbol_type: FUNCTION - crc: 0x35af05b7 + crc: 0x480958c0 type_id: 0x13648576 full_name: "snd_soc_jack_report" } @@ -360608,7 +360740,7 @@ elf_symbol { name: "snd_soc_lookup_component" is_defined: true symbol_type: FUNCTION - crc: 0x65a78a76 + crc: 0x4ca384b8 type_id: 0x67d77552 full_name: "snd_soc_lookup_component" } @@ -360617,7 +360749,7 @@ elf_symbol { name: "snd_soc_new_compress" is_defined: true symbol_type: FUNCTION - crc: 0x96220365 + crc: 0x14233706 type_id: 0x9d475de3 full_name: "snd_soc_new_compress" } @@ -360626,7 +360758,7 @@ elf_symbol { name: "snd_soc_of_get_dai_link_codecs" is_defined: true symbol_type: FUNCTION - crc: 0x0790eebe + crc: 0x770a355c type_id: 0x9dcf1028 full_name: "snd_soc_of_get_dai_link_codecs" } @@ -360635,7 +360767,7 @@ elf_symbol { name: "snd_soc_of_get_dai_name" is_defined: true symbol_type: FUNCTION - crc: 0x0924cd3b + crc: 0x607c0569 type_id: 0x90887391 full_name: "snd_soc_of_get_dai_name" } @@ -360644,7 +360776,7 @@ elf_symbol { name: "snd_soc_of_parse_audio_routing" is_defined: true symbol_type: FUNCTION - crc: 0x5a4ea679 + crc: 0x1748e166 type_id: 0x9b3fd927 full_name: "snd_soc_of_parse_audio_routing" } @@ -360653,7 +360785,7 @@ elf_symbol { name: "snd_soc_of_parse_audio_simple_widgets" is_defined: true symbol_type: FUNCTION - crc: 0x6c4fb198 + crc: 0x1515f6cc type_id: 0x9b3fd927 full_name: "snd_soc_of_parse_audio_simple_widgets" } @@ -360662,7 +360794,7 @@ elf_symbol { name: "snd_soc_of_parse_aux_devs" is_defined: true symbol_type: FUNCTION - crc: 0x77d03260 + crc: 0x8b337599 type_id: 0x9b3fd927 full_name: "snd_soc_of_parse_aux_devs" } @@ -360671,7 +360803,7 @@ elf_symbol { name: "snd_soc_of_parse_card_name" is_defined: true symbol_type: FUNCTION - crc: 0x4b8ffbf3 + crc: 0xd71e37bd type_id: 0x9b3fd927 full_name: "snd_soc_of_parse_card_name" } @@ -360680,7 +360812,7 @@ elf_symbol { name: "snd_soc_of_parse_pin_switches" is_defined: true symbol_type: FUNCTION - crc: 0x975f8178 + crc: 0xd1697393 type_id: 0x9b3fd927 full_name: "snd_soc_of_parse_pin_switches" } @@ -360698,7 +360830,7 @@ elf_symbol { name: "snd_soc_pm_ops" is_defined: true symbol_type: OBJECT - crc: 0xae94504e + crc: 0xe3d01323 type_id: 0xc44f560e full_name: "snd_soc_pm_ops" } @@ -360707,7 +360839,7 @@ elf_symbol { name: "snd_soc_put_enum_double" is_defined: true symbol_type: FUNCTION - crc: 0x4db939ce + crc: 0x7b0ead44 type_id: 0x973a41ee full_name: "snd_soc_put_enum_double" } @@ -360716,7 +360848,7 @@ elf_symbol { name: "snd_soc_put_volsw" is_defined: true symbol_type: FUNCTION - crc: 0x7a618825 + crc: 0x7b84b6af type_id: 0x973a41ee full_name: "snd_soc_put_volsw" } @@ -360725,7 +360857,7 @@ elf_symbol { name: "snd_soc_put_volsw_range" is_defined: true symbol_type: FUNCTION - crc: 0x89133a0d + crc: 0xb047d6bd type_id: 0x973a41ee full_name: "snd_soc_put_volsw_range" } @@ -360734,7 +360866,7 @@ elf_symbol { name: "snd_soc_put_volsw_sx" is_defined: true symbol_type: FUNCTION - crc: 0xf5768cb9 + crc: 0x091ed573 type_id: 0x973a41ee full_name: "snd_soc_put_volsw_sx" } @@ -360743,7 +360875,7 @@ elf_symbol { name: "snd_soc_register_card" is_defined: true symbol_type: FUNCTION - crc: 0xf45ab29d + crc: 0xb7e130b9 type_id: 0x9bc79bf3 full_name: "snd_soc_register_card" } @@ -360752,7 +360884,7 @@ elf_symbol { name: "snd_soc_register_component" is_defined: true symbol_type: FUNCTION - crc: 0xd7974cbe + crc: 0xbd96c837 type_id: 0x9dd808ae full_name: "snd_soc_register_component" } @@ -360761,7 +360893,7 @@ elf_symbol { name: "snd_soc_rtdcom_lookup" is_defined: true symbol_type: FUNCTION - crc: 0x017c1f3b + crc: 0x71a7880e type_id: 0x661a7689 full_name: "snd_soc_rtdcom_lookup" } @@ -360770,7 +360902,7 @@ elf_symbol { name: "snd_soc_runtime_set_dai_fmt" is_defined: true symbol_type: FUNCTION - crc: 0xb81afb23 + crc: 0xff81fa3f type_id: 0x9dcdcb37 full_name: "snd_soc_runtime_set_dai_fmt" } @@ -360779,7 +360911,7 @@ elf_symbol { name: "snd_soc_set_runtime_hwparams" is_defined: true symbol_type: FUNCTION - crc: 0x33887db7 + crc: 0xc1ff62d1 type_id: 0x98508ee0 full_name: "snd_soc_set_runtime_hwparams" } @@ -360788,7 +360920,7 @@ elf_symbol { name: "snd_soc_tplg_component_load" is_defined: true symbol_type: FUNCTION - crc: 0x4285a078 + crc: 0x8dbb54ae type_id: 0x99516809 full_name: "snd_soc_tplg_component_load" } @@ -360797,7 +360929,7 @@ elf_symbol { name: "snd_soc_tplg_component_remove" is_defined: true symbol_type: FUNCTION - crc: 0x2bf29c5e + crc: 0x045afa95 type_id: 0x99d90254 full_name: "snd_soc_tplg_component_remove" } @@ -360806,7 +360938,7 @@ elf_symbol { name: "snd_soc_tplg_widget_bind_event" is_defined: true symbol_type: FUNCTION - crc: 0x4e14e968 + crc: 0xf8be4766 type_id: 0x9fee7b3a full_name: "snd_soc_tplg_widget_bind_event" } @@ -360815,7 +360947,7 @@ elf_symbol { name: "snd_soc_unregister_card" is_defined: true symbol_type: FUNCTION - crc: 0x5ad20215 + crc: 0xee3bf251 type_id: 0x16df294f full_name: "snd_soc_unregister_card" } @@ -360824,7 +360956,7 @@ elf_symbol { name: "snd_soc_unregister_component" is_defined: true symbol_type: FUNCTION - crc: 0xb22ace8c + crc: 0x15f8c225 type_id: 0x100e6fc8 full_name: "snd_soc_unregister_component" } @@ -360833,7 +360965,7 @@ elf_symbol { name: "snd_timer_interrupt" is_defined: true symbol_type: FUNCTION - crc: 0xe5057604 + crc: 0xa5b6f2bf type_id: 0x158152d0 full_name: "snd_timer_interrupt" } @@ -360842,7 +360974,7 @@ elf_symbol { name: "snd_usb_autoresume" is_defined: true symbol_type: FUNCTION - crc: 0x1644be2c + crc: 0xee8ea14d type_id: 0x9b1b4bcb full_name: "snd_usb_autoresume" } @@ -360851,7 +360983,7 @@ elf_symbol { name: "snd_usb_autosuspend" is_defined: true symbol_type: FUNCTION - crc: 0x5395c7d8 + crc: 0xe0ab2060 type_id: 0x1603f977 full_name: "snd_usb_autosuspend" } @@ -360860,7 +360992,7 @@ elf_symbol { name: "snd_usb_endpoint_close" is_defined: true symbol_type: FUNCTION - crc: 0x808d1236 + crc: 0xcc34d323 type_id: 0x169238cf full_name: "snd_usb_endpoint_close" } @@ -360869,7 +361001,7 @@ elf_symbol { name: "snd_usb_endpoint_open" is_defined: true symbol_type: FUNCTION - crc: 0x8dd8595c + crc: 0xf427436a type_id: 0x1fce8843 full_name: "snd_usb_endpoint_open" } @@ -360878,7 +361010,7 @@ elf_symbol { name: "snd_usb_endpoint_prepare" is_defined: true symbol_type: FUNCTION - crc: 0xc31318aa + crc: 0x3bd7254b type_id: 0x9b8a8a73 full_name: "snd_usb_endpoint_prepare" } @@ -360896,7 +361028,7 @@ elf_symbol { name: "soc_device_register" is_defined: true symbol_type: FUNCTION - crc: 0x8b50d3ee + crc: 0xcd39718c type_id: 0x1e394ee5 full_name: "soc_device_register" } @@ -360914,7 +361046,7 @@ elf_symbol { name: "sock_alloc_send_pskb" is_defined: true symbol_type: FUNCTION - crc: 0x25a76248 + crc: 0x74360494 type_id: 0x6f0fa4b8 full_name: "sock_alloc_send_pskb" } @@ -360923,7 +361055,7 @@ elf_symbol { name: "sock_cmsg_send" is_defined: true symbol_type: FUNCTION - crc: 0x3c7e9178 + crc: 0xfd21ed53 type_id: 0x9a66b93e full_name: "sock_cmsg_send" } @@ -360932,7 +361064,7 @@ elf_symbol { name: "sock_common_getsockopt" is_defined: true symbol_type: FUNCTION - crc: 0x2a5590aa + crc: 0xee25f1b6 type_id: 0x981db4ff full_name: "sock_common_getsockopt" } @@ -360941,7 +361073,7 @@ elf_symbol { name: "sock_common_recvmsg" is_defined: true symbol_type: FUNCTION - crc: 0x43c1bd58 + crc: 0x61aa8eb1 type_id: 0x9917165a full_name: "sock_common_recvmsg" } @@ -360950,7 +361082,7 @@ elf_symbol { name: "sock_common_setsockopt" is_defined: true symbol_type: FUNCTION - crc: 0x32a0725f + crc: 0xc5d7d2a1 type_id: 0x981e2b3a full_name: "sock_common_setsockopt" } @@ -360959,7 +361091,7 @@ elf_symbol { name: "sock_create_kern" is_defined: true symbol_type: FUNCTION - crc: 0x8a2e1bf4 + crc: 0x064919d5 type_id: 0x9f2caa56 full_name: "sock_create_kern" } @@ -360968,7 +361100,7 @@ elf_symbol { name: "sock_diag_register" is_defined: true symbol_type: FUNCTION - crc: 0xf4f64624 + crc: 0xd249a5dd type_id: 0x9041c735 full_name: "sock_diag_register" } @@ -360977,7 +361109,7 @@ elf_symbol { name: "sock_diag_save_cookie" is_defined: true symbol_type: FUNCTION - crc: 0x0d8b1ca6 + crc: 0xc5c7a2c6 type_id: 0x17053351 full_name: "sock_diag_save_cookie" } @@ -360986,7 +361118,7 @@ elf_symbol { name: "sock_diag_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x2c5ad3d1 + crc: 0x96255d63 type_id: 0x1d597589 full_name: "sock_diag_unregister" } @@ -360995,7 +361127,7 @@ elf_symbol { name: "sock_edemux" is_defined: true symbol_type: FUNCTION - crc: 0xda76c57e + crc: 0xf455ba57 type_id: 0x11cb8bd5 full_name: "sock_edemux" } @@ -361004,7 +361136,7 @@ elf_symbol { name: "sock_efree" is_defined: true symbol_type: FUNCTION - crc: 0x0f0ce3fe + crc: 0x818de504 type_id: 0x11cb8bd5 full_name: "sock_efree" } @@ -361013,7 +361145,7 @@ elf_symbol { name: "sock_gen_put" is_defined: true symbol_type: FUNCTION - crc: 0x0d70adc5 + crc: 0x11d7081e type_id: 0x17c95d08 full_name: "sock_gen_put" } @@ -361022,7 +361154,7 @@ elf_symbol { name: "sock_gettstamp" is_defined: true symbol_type: FUNCTION - crc: 0x1a1de842 + crc: 0xf87dc0d5 type_id: 0x99e0f6e0 full_name: "sock_gettstamp" } @@ -361031,7 +361163,7 @@ elf_symbol { name: "sock_i_ino" is_defined: true symbol_type: FUNCTION - crc: 0xe0c47321 + crc: 0xa9867284 type_id: 0x36fdc1c8 full_name: "sock_i_ino" } @@ -361040,7 +361172,7 @@ elf_symbol { name: "sock_i_uid" is_defined: true symbol_type: FUNCTION - crc: 0xb7a988f5 + crc: 0x35480660 type_id: 0x7be897ce full_name: "sock_i_uid" } @@ -361049,7 +361181,7 @@ elf_symbol { name: "sock_init_data" is_defined: true symbol_type: FUNCTION - crc: 0xd76931ca + crc: 0xd9dcf93b type_id: 0x14f54b2b full_name: "sock_init_data" } @@ -361058,7 +361190,7 @@ elf_symbol { name: "sock_no_accept" is_defined: true symbol_type: FUNCTION - crc: 0x89de8d5f + crc: 0x995f20f3 type_id: 0x99c11430 full_name: "sock_no_accept" } @@ -361067,7 +361199,7 @@ elf_symbol { name: "sock_no_bind" is_defined: true symbol_type: FUNCTION - crc: 0xa7ac52e7 + crc: 0x62e4b4cd type_id: 0x99526c70 full_name: "sock_no_bind" } @@ -361076,7 +361208,7 @@ elf_symbol { name: "sock_no_connect" is_defined: true symbol_type: FUNCTION - crc: 0x6a52645c + crc: 0xea9cd234 type_id: 0x9953f0f3 full_name: "sock_no_connect" } @@ -361085,7 +361217,7 @@ elf_symbol { name: "sock_no_getname" is_defined: true symbol_type: FUNCTION - crc: 0x7d6c5efd + crc: 0x002c0a40 type_id: 0x99526c70 full_name: "sock_no_getname" } @@ -361094,7 +361226,7 @@ elf_symbol { name: "sock_no_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0x22bad17c + crc: 0xa8307a64 type_id: 0x9882219f full_name: "sock_no_ioctl" } @@ -361103,7 +361235,7 @@ elf_symbol { name: "sock_no_listen" is_defined: true symbol_type: FUNCTION - crc: 0xaa47231d + crc: 0x80a27235 type_id: 0x98046a12 full_name: "sock_no_listen" } @@ -361112,7 +361244,7 @@ elf_symbol { name: "sock_no_mmap" is_defined: true symbol_type: FUNCTION - crc: 0x35fd27a4 + crc: 0xc0df442f type_id: 0x9bf97de0 full_name: "sock_no_mmap" } @@ -361121,7 +361253,7 @@ elf_symbol { name: "sock_no_recvmsg" is_defined: true symbol_type: FUNCTION - crc: 0x3e7e90e0 + crc: 0xd5e0cb9f type_id: 0x9917165a full_name: "sock_no_recvmsg" } @@ -361130,7 +361262,7 @@ elf_symbol { name: "sock_no_sendmsg" is_defined: true symbol_type: FUNCTION - crc: 0x0cf60039 + crc: 0xd3eac5b3 type_id: 0x99168ad9 full_name: "sock_no_sendmsg" } @@ -361139,7 +361271,7 @@ elf_symbol { name: "sock_no_sendpage" is_defined: true symbol_type: FUNCTION - crc: 0x39c312e0 + crc: 0x28fa0b60 type_id: 0x10e9e7a3 full_name: "sock_no_sendpage" } @@ -361148,7 +361280,7 @@ elf_symbol { name: "sock_no_shutdown" is_defined: true symbol_type: FUNCTION - crc: 0x0af08df4 + crc: 0xe7818143 type_id: 0x98046a12 full_name: "sock_no_shutdown" } @@ -361157,7 +361289,7 @@ elf_symbol { name: "sock_no_socketpair" is_defined: true symbol_type: FUNCTION - crc: 0x48935ea6 + crc: 0x474004a9 type_id: 0x99d969f9 full_name: "sock_no_socketpair" } @@ -361166,7 +361298,7 @@ elf_symbol { name: "sock_queue_rcv_skb_reason" is_defined: true symbol_type: FUNCTION - crc: 0x988a854a + crc: 0xb4d479d9 type_id: 0x9ac7ffab full_name: "sock_queue_rcv_skb_reason" } @@ -361175,7 +361307,7 @@ elf_symbol { name: "sock_recv_errqueue" is_defined: true symbol_type: FUNCTION - crc: 0xa041453c + crc: 0x78af57f8 type_id: 0x9a7acc16 full_name: "sock_recv_errqueue" } @@ -361184,7 +361316,7 @@ elf_symbol { name: "sock_recvmsg" is_defined: true symbol_type: FUNCTION - crc: 0x5fb98922 + crc: 0xa8ea68ea type_id: 0x99324fb7 full_name: "sock_recvmsg" } @@ -361193,7 +361325,7 @@ elf_symbol { name: "sock_register" is_defined: true symbol_type: FUNCTION - crc: 0x1b8adf14 + crc: 0x67edcde8 type_id: 0x93c23a28 full_name: "sock_register" } @@ -361202,7 +361334,7 @@ elf_symbol { name: "sock_release" is_defined: true symbol_type: FUNCTION - crc: 0xca724064 + crc: 0xd14987f4 type_id: 0x14805be2 full_name: "sock_release" } @@ -361211,7 +361343,7 @@ elf_symbol { name: "sock_rfree" is_defined: true symbol_type: FUNCTION - crc: 0xfbfa5668 + crc: 0xa199162c type_id: 0x11cb8bd5 full_name: "sock_rfree" } @@ -361220,7 +361352,7 @@ elf_symbol { name: "sock_setsockopt" is_defined: true symbol_type: FUNCTION - crc: 0x47a74e72 + crc: 0x19fdd9f0 type_id: 0x981e2b3a full_name: "sock_setsockopt" } @@ -361238,7 +361370,7 @@ elf_symbol { name: "sock_wfree" is_defined: true symbol_type: FUNCTION - crc: 0x10810a59 + crc: 0x5006163a type_id: 0x11cb8bd5 full_name: "sock_wfree" } @@ -361247,7 +361379,7 @@ elf_symbol { name: "sock_wmalloc" is_defined: true symbol_type: FUNCTION - crc: 0x7f6b6f73 + crc: 0xc738ff9b type_id: 0x6f18ee87 full_name: "sock_wmalloc" } @@ -361256,7 +361388,7 @@ elf_symbol { name: "sockfd_lookup" is_defined: true symbol_type: FUNCTION - crc: 0xc078d40e + crc: 0x75dad1f8 type_id: 0x3d20d65e full_name: "sockfd_lookup" } @@ -361265,7 +361397,7 @@ elf_symbol { name: "softnet_data" is_defined: true symbol_type: OBJECT - crc: 0x317a55af + crc: 0x8bb56af0 type_id: 0x06066110 full_name: "softnet_data" } @@ -361283,7 +361415,7 @@ elf_symbol { name: "spi_async" is_defined: true symbol_type: FUNCTION - crc: 0xcdeea802 + crc: 0x06493591 type_id: 0x99b7b018 full_name: "spi_async" } @@ -361292,7 +361424,7 @@ elf_symbol { name: "spi_bus_lock" is_defined: true symbol_type: FUNCTION - crc: 0x4e0b1ab6 + crc: 0xa68033fb type_id: 0x9db78784 full_name: "spi_bus_lock" } @@ -361301,7 +361433,7 @@ elf_symbol { name: "spi_bus_type" is_defined: true symbol_type: OBJECT - crc: 0x9ded4900 + crc: 0xae2c630f type_id: 0x257935aa full_name: "spi_bus_type" } @@ -361310,7 +361442,7 @@ elf_symbol { name: "spi_bus_unlock" is_defined: true symbol_type: FUNCTION - crc: 0x9d743ffa + crc: 0x0f51849c type_id: 0x9db78784 full_name: "spi_bus_unlock" } @@ -361319,7 +361451,7 @@ elf_symbol { name: "spi_controller_resume" is_defined: true symbol_type: FUNCTION - crc: 0x21938def + crc: 0x8e608b2d type_id: 0x9db78784 full_name: "spi_controller_resume" } @@ -361328,7 +361460,7 @@ elf_symbol { name: "spi_controller_suspend" is_defined: true symbol_type: FUNCTION - crc: 0x5453a54a + crc: 0x24ebb2ef type_id: 0x9db78784 full_name: "spi_controller_suspend" } @@ -361346,7 +361478,7 @@ elf_symbol { name: "spi_finalize_current_message" is_defined: true symbol_type: FUNCTION - crc: 0x1a0ccc84 + crc: 0x7f01280d type_id: 0x10af3538 full_name: "spi_finalize_current_message" } @@ -361355,7 +361487,7 @@ elf_symbol { name: "spi_finalize_current_transfer" is_defined: true symbol_type: FUNCTION - crc: 0x61aece55 + crc: 0x6c2857c7 type_id: 0x10af3538 full_name: "spi_finalize_current_transfer" } @@ -361364,7 +361496,7 @@ elf_symbol { name: "spi_get_device_id" is_defined: true symbol_type: FUNCTION - crc: 0x42831f15 + crc: 0x7d750b1b type_id: 0xdb53d61f full_name: "spi_get_device_id" } @@ -361373,7 +361505,7 @@ elf_symbol { name: "spi_get_next_queued_message" is_defined: true symbol_type: FUNCTION - crc: 0x0149cf7b + crc: 0xc7b23092 type_id: 0xb91d7092 full_name: "spi_get_next_queued_message" } @@ -361382,7 +361514,7 @@ elf_symbol { name: "spi_register_controller" is_defined: true symbol_type: FUNCTION - crc: 0xd32d15f2 + crc: 0x52f8d87e type_id: 0x9db78784 full_name: "spi_register_controller" } @@ -361391,7 +361523,7 @@ elf_symbol { name: "spi_setup" is_defined: true symbol_type: FUNCTION - crc: 0x74241a27 + crc: 0x0c321c41 type_id: 0x9930cdbf full_name: "spi_setup" } @@ -361400,7 +361532,7 @@ elf_symbol { name: "spi_sync" is_defined: true symbol_type: FUNCTION - crc: 0xf5f7c229 + crc: 0xc7e1da33 type_id: 0x99b7b018 full_name: "spi_sync" } @@ -361409,7 +361541,7 @@ elf_symbol { name: "spi_sync_locked" is_defined: true symbol_type: FUNCTION - crc: 0xf3f951e0 + crc: 0x7fc70c76 type_id: 0x99b7b018 full_name: "spi_sync_locked" } @@ -361418,7 +361550,7 @@ elf_symbol { name: "spi_unregister_controller" is_defined: true symbol_type: FUNCTION - crc: 0xcbc7494f + crc: 0x0fe312a9 type_id: 0x10af3538 full_name: "spi_unregister_controller" } @@ -361427,7 +361559,7 @@ elf_symbol { name: "spi_write_then_read" is_defined: true symbol_type: FUNCTION - crc: 0xee0921ad + crc: 0x608f68e3 type_id: 0x99c5a325 full_name: "spi_write_then_read" } @@ -361436,7 +361568,7 @@ elf_symbol { name: "split_page" is_defined: true symbol_type: FUNCTION - crc: 0x504a7e3a + crc: 0x8f7bb9c5 type_id: 0x102e93ac full_name: "split_page" } @@ -361445,7 +361577,7 @@ elf_symbol { name: "spmi_controller_add" is_defined: true symbol_type: FUNCTION - crc: 0x8cb7e91f + crc: 0xae645d04 type_id: 0x98b9292d full_name: "spmi_controller_add" } @@ -361454,7 +361586,7 @@ elf_symbol { name: "spmi_controller_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x0ffbbd1b + crc: 0xd88eb3f3 type_id: 0x40073fc6 full_name: "spmi_controller_alloc" } @@ -361463,7 +361595,7 @@ elf_symbol { name: "spmi_controller_remove" is_defined: true symbol_type: FUNCTION - crc: 0xe868e187 + crc: 0x1ac4051d type_id: 0x15a19b91 full_name: "spmi_controller_remove" } @@ -361472,7 +361604,7 @@ elf_symbol { name: "spmi_device_from_of" is_defined: true symbol_type: FUNCTION - crc: 0xc950bab5 + crc: 0xa0ab0c35 type_id: 0x48da335f full_name: "spmi_device_from_of" } @@ -361481,7 +361613,7 @@ elf_symbol { name: "spmi_ext_register_read" is_defined: true symbol_type: FUNCTION - crc: 0xecd8ab74 + crc: 0x5c7b2a8f type_id: 0x9a1f348c full_name: "spmi_ext_register_read" } @@ -361490,7 +361622,7 @@ elf_symbol { name: "spmi_ext_register_readl" is_defined: true symbol_type: FUNCTION - crc: 0x6d3011eb + crc: 0x7ff8d8ca type_id: 0x98ff73bb full_name: "spmi_ext_register_readl" } @@ -361499,7 +361631,7 @@ elf_symbol { name: "spmi_ext_register_write" is_defined: true symbol_type: FUNCTION - crc: 0xd2b2a949 + crc: 0x5ba3adbb type_id: 0x9a10c524 full_name: "spmi_ext_register_write" } @@ -361508,7 +361640,7 @@ elf_symbol { name: "spmi_ext_register_writel" is_defined: true symbol_type: FUNCTION - crc: 0x7f5bc985 + crc: 0xd93d6872 type_id: 0x98f08213 full_name: "spmi_ext_register_writel" } @@ -361517,7 +361649,7 @@ elf_symbol { name: "spmi_register_read" is_defined: true symbol_type: FUNCTION - crc: 0x60d79853 + crc: 0x4db27841 type_id: 0x9a1ce459 full_name: "spmi_register_read" } @@ -361526,7 +361658,7 @@ elf_symbol { name: "spmi_register_write" is_defined: true symbol_type: FUNCTION - crc: 0x60b367b1 + crc: 0x334cd348 type_id: 0x9a16828c full_name: "spmi_register_write" } @@ -361535,7 +361667,7 @@ elf_symbol { name: "spmi_register_zero_write" is_defined: true symbol_type: FUNCTION - crc: 0x08ca8860 + crc: 0x054b02f8 type_id: 0x9a1cd590 full_name: "spmi_register_zero_write" } @@ -361679,7 +361811,7 @@ elf_symbol { name: "stack_trace_save_tsk" is_defined: true symbol_type: FUNCTION - crc: 0x2b4585d6 + crc: 0x442549be type_id: 0xc9945640 full_name: "stack_trace_save_tsk" } @@ -361839,7 +361971,7 @@ elf_symbol { name: "stream_open" is_defined: true symbol_type: FUNCTION - crc: 0x9ba2d126 + crc: 0xceeea78e type_id: 0x9b022eae full_name: "stream_open" } @@ -362042,7 +362174,7 @@ elf_symbol { name: "submit_bio" is_defined: true symbol_type: FUNCTION - crc: 0x2a7f81fb + crc: 0x5735e5d1 type_id: 0x15f0919b full_name: "submit_bio" } @@ -362051,7 +362183,7 @@ elf_symbol { name: "subsys_system_register" is_defined: true symbol_type: FUNCTION - crc: 0xb022d7b3 + crc: 0x48d3274e type_id: 0x9d6a72fd full_name: "subsys_system_register" } @@ -362069,7 +362201,7 @@ elf_symbol { name: "sync_blockdev" is_defined: true symbol_type: FUNCTION - crc: 0x82ac87da + crc: 0xb2de6104 type_id: 0x9e8b6578 full_name: "sync_blockdev" } @@ -362078,7 +362210,7 @@ elf_symbol { name: "sync_file_create" is_defined: true symbol_type: FUNCTION - crc: 0x6c5deb86 + crc: 0x76db215f type_id: 0x28bd3c4e full_name: "sync_file_create" } @@ -362168,7 +362300,7 @@ elf_symbol { name: "synth_event_create" is_defined: true symbol_type: FUNCTION - crc: 0xd5cce962 + crc: 0x98e65dc1 type_id: 0x924108e7 full_name: "synth_event_create" } @@ -362195,7 +362327,7 @@ elf_symbol { name: "syscon_node_to_regmap" is_defined: true symbol_type: FUNCTION - crc: 0xb646feac + crc: 0x350410a6 type_id: 0x81a9f9cd full_name: "syscon_node_to_regmap" } @@ -362204,7 +362336,7 @@ elf_symbol { name: "syscon_regmap_lookup_by_phandle" is_defined: true symbol_type: FUNCTION - crc: 0x0ae0b538 + crc: 0xc83688f8 type_id: 0x8151bb19 full_name: "syscon_regmap_lookup_by_phandle" } @@ -362231,7 +362363,7 @@ elf_symbol { name: "sysfs_add_file_to_group" is_defined: true symbol_type: FUNCTION - crc: 0xbff53266 + crc: 0x640053bc type_id: 0x958e52ea full_name: "sysfs_add_file_to_group" } @@ -362240,7 +362372,7 @@ elf_symbol { name: "sysfs_add_link_to_group" is_defined: true symbol_type: FUNCTION - crc: 0xdd6b22dc + crc: 0xe1ffe478 type_id: 0x958c8293 full_name: "sysfs_add_link_to_group" } @@ -362249,7 +362381,7 @@ elf_symbol { name: "sysfs_create_bin_file" is_defined: true symbol_type: FUNCTION - crc: 0xd9ae9182 + crc: 0xc25cbf1f type_id: 0x959d810d full_name: "sysfs_create_bin_file" } @@ -362258,7 +362390,7 @@ elf_symbol { name: "sysfs_create_file_ns" is_defined: true symbol_type: FUNCTION - crc: 0x36cc0cbb + crc: 0x76e82e6d type_id: 0x958f9102 full_name: "sysfs_create_file_ns" } @@ -362267,7 +362399,7 @@ elf_symbol { name: "sysfs_create_files" is_defined: true symbol_type: FUNCTION - crc: 0xb12c5b46 + crc: 0x3c3bd105 type_id: 0x95854407 full_name: "sysfs_create_files" } @@ -362276,7 +362408,7 @@ elf_symbol { name: "sysfs_create_group" is_defined: true symbol_type: FUNCTION - crc: 0x4918e088 + crc: 0x72598240 type_id: 0x95b1f43d full_name: "sysfs_create_group" } @@ -362285,7 +362417,7 @@ elf_symbol { name: "sysfs_create_groups" is_defined: true symbol_type: FUNCTION - crc: 0x2330aa08 + crc: 0x48f0c0d9 type_id: 0x9565c8c3 full_name: "sysfs_create_groups" } @@ -362294,7 +362426,7 @@ elf_symbol { name: "sysfs_create_link" is_defined: true symbol_type: FUNCTION - crc: 0x94a37314 + crc: 0x769b20d7 type_id: 0x95fc827f full_name: "sysfs_create_link" } @@ -362321,7 +362453,7 @@ elf_symbol { name: "sysfs_notify" is_defined: true symbol_type: FUNCTION - crc: 0x6f7649a5 + crc: 0x84ef64d8 type_id: 0x1893b067 full_name: "sysfs_notify" } @@ -362330,7 +362462,7 @@ elf_symbol { name: "sysfs_remove_bin_file" is_defined: true symbol_type: FUNCTION - crc: 0x0cc31cba + crc: 0xcf90633d type_id: 0x188533b1 full_name: "sysfs_remove_bin_file" } @@ -362339,7 +362471,7 @@ elf_symbol { name: "sysfs_remove_file_from_group" is_defined: true symbol_type: FUNCTION - crc: 0x0be9f8da + crc: 0x7374d840 type_id: 0x1896e056 full_name: "sysfs_remove_file_from_group" } @@ -362348,7 +362480,7 @@ elf_symbol { name: "sysfs_remove_file_ns" is_defined: true symbol_type: FUNCTION - crc: 0x68e7b0e7 + crc: 0x83ad7c15 type_id: 0x189723be full_name: "sysfs_remove_file_ns" } @@ -362357,7 +362489,7 @@ elf_symbol { name: "sysfs_remove_files" is_defined: true symbol_type: FUNCTION - crc: 0x99fb8e55 + crc: 0xe9565c3d type_id: 0x189df6bb full_name: "sysfs_remove_files" } @@ -362366,7 +362498,7 @@ elf_symbol { name: "sysfs_remove_group" is_defined: true symbol_type: FUNCTION - crc: 0x876386a3 + crc: 0x68db3637 type_id: 0x18a94681 full_name: "sysfs_remove_group" } @@ -362375,7 +362507,7 @@ elf_symbol { name: "sysfs_remove_groups" is_defined: true symbol_type: FUNCTION - crc: 0xe3586752 + crc: 0x9a5137a6 type_id: 0x187d7a7f full_name: "sysfs_remove_groups" } @@ -362384,7 +362516,7 @@ elf_symbol { name: "sysfs_remove_link" is_defined: true symbol_type: FUNCTION - crc: 0x98622a64 + crc: 0xd53be755 type_id: 0x189c344a full_name: "sysfs_remove_link" } @@ -362393,7 +362525,7 @@ elf_symbol { name: "sysfs_remove_link_from_group" is_defined: true symbol_type: FUNCTION - crc: 0xb0156c98 + crc: 0x87259a74 type_id: 0x1893b067 full_name: "sysfs_remove_link_from_group" } @@ -362411,7 +362543,7 @@ elf_symbol { name: "sysfs_update_group" is_defined: true symbol_type: FUNCTION - crc: 0xadc29258 + crc: 0xa6e459cc type_id: 0x95b1f43d full_name: "sysfs_update_group" } @@ -362510,7 +362642,7 @@ elf_symbol { name: "task_active_pid_ns" is_defined: true symbol_type: FUNCTION - crc: 0x3812d866 + crc: 0x5bdbfffa type_id: 0xac273de0 full_name: "task_active_pid_ns" } @@ -362519,7 +362651,7 @@ elf_symbol { name: "task_rq_lock" is_defined: true symbol_type: FUNCTION - crc: 0x14266e45 + crc: 0x94fa6ff7 type_id: 0x8d7ecefa full_name: "task_rq_lock" } @@ -362573,7 +362705,7 @@ elf_symbol { name: "tcf_action_exec" is_defined: true symbol_type: FUNCTION - crc: 0x19389234 + crc: 0x74ff07f3 type_id: 0x9cdfbc5a full_name: "tcf_action_exec" } @@ -362582,7 +362714,7 @@ elf_symbol { name: "tcf_exts_destroy" is_defined: true symbol_type: FUNCTION - crc: 0xa27c8667 + crc: 0x57ead950 type_id: 0x147c9fd8 full_name: "tcf_exts_destroy" } @@ -362591,7 +362723,7 @@ elf_symbol { name: "tcf_exts_dump" is_defined: true symbol_type: FUNCTION - crc: 0x6575d1ac + crc: 0xdd73ebe4 type_id: 0x9c9d758d full_name: "tcf_exts_dump" } @@ -362600,7 +362732,7 @@ elf_symbol { name: "tcf_exts_dump_stats" is_defined: true symbol_type: FUNCTION - crc: 0xf8cf3e10 + crc: 0x53aa23e0 type_id: 0x9c9d758d full_name: "tcf_exts_dump_stats" } @@ -362609,7 +362741,7 @@ elf_symbol { name: "tcf_exts_validate" is_defined: true symbol_type: FUNCTION - crc: 0x285658f9 + crc: 0x6a46bbb1 type_id: 0x9e8d7e1b full_name: "tcf_exts_validate" } @@ -362654,7 +362786,7 @@ elf_symbol { name: "tcpci_register_port" is_defined: true symbol_type: FUNCTION - crc: 0xe11cafbb + crc: 0xbb3fb56a type_id: 0x2601e7ac full_name: "tcpci_register_port" } @@ -362735,7 +362867,7 @@ elf_symbol { name: "thermal_cdev_update" is_defined: true symbol_type: FUNCTION - crc: 0xb82c5db1 + crc: 0x401004cf type_id: 0x11aaf502 full_name: "thermal_cdev_update" } @@ -362744,7 +362876,7 @@ elf_symbol { name: "thermal_cooling_device_register" is_defined: true symbol_type: FUNCTION - crc: 0x327b96c7 + crc: 0xe2f3c2d0 type_id: 0x4759fa3a full_name: "thermal_cooling_device_register" } @@ -362753,7 +362885,7 @@ elf_symbol { name: "thermal_cooling_device_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x52fbbb17 + crc: 0x9835bd10 type_id: 0x11aaf502 full_name: "thermal_cooling_device_unregister" } @@ -362762,7 +362894,7 @@ elf_symbol { name: "thermal_of_cooling_device_register" is_defined: true symbol_type: FUNCTION - crc: 0x3b1bf64c + crc: 0xc19544b6 type_id: 0x4552a7f2 full_name: "thermal_of_cooling_device_register" } @@ -362780,7 +362912,7 @@ elf_symbol { name: "thermal_zone_device_disable" is_defined: true symbol_type: FUNCTION - crc: 0xb109f298 + crc: 0x0b1bba36 type_id: 0x9439b74e full_name: "thermal_zone_device_disable" } @@ -362789,7 +362921,7 @@ elf_symbol { name: "thermal_zone_device_enable" is_defined: true symbol_type: FUNCTION - crc: 0xa31c9608 + crc: 0xc8d857d0 type_id: 0x9439b74e full_name: "thermal_zone_device_enable" } @@ -362798,7 +362930,7 @@ elf_symbol { name: "thermal_zone_device_register" is_defined: true symbol_type: FUNCTION - crc: 0x54c19c53 + crc: 0x6269731f type_id: 0xf354bbbc full_name: "thermal_zone_device_register" } @@ -362807,7 +362939,7 @@ elf_symbol { name: "thermal_zone_device_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x3f8780fe + crc: 0xb02787f5 type_id: 0x192105f2 full_name: "thermal_zone_device_unregister" } @@ -362816,7 +362948,7 @@ elf_symbol { name: "thermal_zone_device_update" is_defined: true symbol_type: FUNCTION - crc: 0xe027e342 + crc: 0x294cde6b type_id: 0x18a3b8d2 full_name: "thermal_zone_device_update" } @@ -362825,7 +362957,7 @@ elf_symbol { name: "thermal_zone_get_temp" is_defined: true symbol_type: FUNCTION - crc: 0x9b345771 + crc: 0x0c75e9a7 type_id: 0x9474d77b full_name: "thermal_zone_get_temp" } @@ -362834,7 +362966,7 @@ elf_symbol { name: "thermal_zone_get_zone_by_name" is_defined: true symbol_type: FUNCTION - crc: 0xaded531a + crc: 0x95755b85 type_id: 0xf2d19814 full_name: "thermal_zone_get_zone_by_name" } @@ -362843,7 +362975,7 @@ elf_symbol { name: "thread_group_cputime_adjusted" is_defined: true symbol_type: FUNCTION - crc: 0x40d3fb74 + crc: 0xc6c95db4 type_id: 0x176dde0e full_name: "thread_group_cputime_adjusted" } @@ -362897,7 +363029,7 @@ elf_symbol { name: "timer_unstable_counter_workaround" is_defined: true symbol_type: OBJECT - crc: 0xbcf11d40 + crc: 0xcd4fc9c8 type_id: 0x35bad1e5 full_name: "timer_unstable_counter_workaround" } @@ -362915,7 +363047,7 @@ elf_symbol { name: "tipc_dump_done" is_defined: true symbol_type: FUNCTION - crc: 0xb48cb984 + crc: 0x76cd1534 type_id: 0x96b01a1d full_name: "tipc_dump_done" } @@ -362924,7 +363056,7 @@ elf_symbol { name: "tipc_dump_start" is_defined: true symbol_type: FUNCTION - crc: 0xad35809d + crc: 0x33a25fb7 type_id: 0x96b01a1d full_name: "tipc_dump_start" } @@ -362933,7 +363065,7 @@ elf_symbol { name: "tipc_nl_sk_walk" is_defined: true symbol_type: FUNCTION - crc: 0xcafe61fb + crc: 0x64420b0e type_id: 0x9c6b5433 full_name: "tipc_nl_sk_walk" } @@ -362942,7 +363074,7 @@ elf_symbol { name: "tipc_sk_fill_sock_diag" is_defined: true symbol_type: FUNCTION - crc: 0x845095f1 + crc: 0x5d4aa44c type_id: 0x9c6f59d4 full_name: "tipc_sk_fill_sock_diag" } @@ -362987,7 +363119,7 @@ elf_symbol { name: "trace_array_put" is_defined: true symbol_type: FUNCTION - crc: 0x90265c65 + crc: 0xbcda52c2 type_id: 0x1164fa41 full_name: "trace_array_put" } @@ -363005,7 +363137,7 @@ elf_symbol { name: "trace_event_buffer_commit" is_defined: true symbol_type: FUNCTION - crc: 0x8b0297d5 + crc: 0x26cb87e5 type_id: 0x1a405f2d full_name: "trace_event_buffer_commit" } @@ -363014,7 +363146,7 @@ elf_symbol { name: "trace_event_buffer_reserve" is_defined: true symbol_type: FUNCTION - crc: 0x4a199594 + crc: 0x5dd0a1d6 type_id: 0x5c4f178f full_name: "trace_event_buffer_reserve" } @@ -363023,7 +363155,7 @@ elf_symbol { name: "trace_event_ignore_this_pid" is_defined: true symbol_type: FUNCTION - crc: 0xe4f108e1 + crc: 0x9369067b type_id: 0xfe730297 full_name: "trace_event_ignore_this_pid" } @@ -363032,7 +363164,7 @@ elf_symbol { name: "trace_event_printf" is_defined: true symbol_type: FUNCTION - crc: 0x087b0757 + crc: 0x5873fbaa type_id: 0x1417fb73 full_name: "trace_event_printf" } @@ -363041,7 +363173,7 @@ elf_symbol { name: "trace_event_raw_init" is_defined: true symbol_type: FUNCTION - crc: 0x08df1ae7 + crc: 0x9f81585a type_id: 0x9427c0bf full_name: "trace_event_raw_init" } @@ -363050,7 +363182,7 @@ elf_symbol { name: "trace_event_reg" is_defined: true symbol_type: FUNCTION - crc: 0xc5ed681d + crc: 0x6f09ffe9 type_id: 0x959717f8 full_name: "trace_event_reg" } @@ -363059,7 +363191,7 @@ elf_symbol { name: "trace_get_event_file" is_defined: true symbol_type: FUNCTION - crc: 0x19f3b4d2 + crc: 0x40e137f6 type_id: 0xfcfa91ba full_name: "trace_get_event_file" } @@ -363077,7 +363209,7 @@ elf_symbol { name: "trace_output_call" is_defined: true symbol_type: FUNCTION - crc: 0xb04c906c + crc: 0xb7638470 type_id: 0x99cffa53 full_name: "trace_output_call" } @@ -363131,7 +363263,7 @@ elf_symbol { name: "trace_raw_output_prep" is_defined: true symbol_type: FUNCTION - crc: 0x3deaeb9f + crc: 0xe121bc73 type_id: 0x99666596 full_name: "trace_raw_output_prep" } @@ -363194,7 +363326,7 @@ elf_symbol { name: "try_module_get" is_defined: true symbol_type: FUNCTION - crc: 0xcf024f82 + crc: 0x8c94c0d5 type_id: 0xfc6dac14 full_name: "try_module_get" } @@ -363221,7 +363353,7 @@ elf_symbol { name: "tty_driver_flush_buffer" is_defined: true symbol_type: FUNCTION - crc: 0x9a0a1b3c + crc: 0x3eb09737 type_id: 0x1b27f18a full_name: "tty_driver_flush_buffer" } @@ -363230,7 +363362,7 @@ elf_symbol { name: "tty_driver_kref_put" is_defined: true symbol_type: FUNCTION - crc: 0x42dcc48c + crc: 0x29b840d6 type_id: 0x1ce1326b full_name: "tty_driver_kref_put" } @@ -363239,7 +363371,7 @@ elf_symbol { name: "tty_encode_baud_rate" is_defined: true symbol_type: FUNCTION - crc: 0x700fa0c6 + crc: 0x79dc88c3 type_id: 0x195942ac full_name: "tty_encode_baud_rate" } @@ -363248,7 +363380,7 @@ elf_symbol { name: "tty_flip_buffer_push" is_defined: true symbol_type: FUNCTION - crc: 0xbb060c94 + crc: 0xac466bae type_id: 0x161c45fb full_name: "tty_flip_buffer_push" } @@ -363266,7 +363398,7 @@ elf_symbol { name: "tty_hangup" is_defined: true symbol_type: FUNCTION - crc: 0x5ca8b724 + crc: 0x98174889 type_id: 0x1b27f18a full_name: "tty_hangup" } @@ -363275,7 +363407,7 @@ elf_symbol { name: "tty_insert_flip_string_fixed_flag" is_defined: true symbol_type: FUNCTION - crc: 0x7ef072ad + crc: 0x4224cfcf type_id: 0x9be80513 full_name: "tty_insert_flip_string_fixed_flag" } @@ -363284,7 +363416,7 @@ elf_symbol { name: "tty_kref_put" is_defined: true symbol_type: FUNCTION - crc: 0xae37e5ae + crc: 0x65458cda type_id: 0x1b27f18a full_name: "tty_kref_put" } @@ -363293,7 +363425,7 @@ elf_symbol { name: "tty_ldisc_deref" is_defined: true symbol_type: FUNCTION - crc: 0x04135344 + crc: 0x33d652e2 type_id: 0x16d5560c full_name: "tty_ldisc_deref" } @@ -363302,7 +363434,7 @@ elf_symbol { name: "tty_ldisc_flush" is_defined: true symbol_type: FUNCTION - crc: 0xd4ea9b24 + crc: 0xdab3dbd5 type_id: 0x1b27f18a full_name: "tty_ldisc_flush" } @@ -363311,7 +363443,7 @@ elf_symbol { name: "tty_ldisc_ref" is_defined: true symbol_type: FUNCTION - crc: 0x1572f37a + crc: 0x5fb8c6b5 type_id: 0x797c68f3 full_name: "tty_ldisc_ref" } @@ -363320,7 +363452,7 @@ elf_symbol { name: "tty_mode_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0xd09b7da8 + crc: 0x6519703c type_id: 0x97258bf7 full_name: "tty_mode_ioctl" } @@ -363329,7 +363461,7 @@ elf_symbol { name: "tty_port_close" is_defined: true symbol_type: FUNCTION - crc: 0x26f33798 + crc: 0x677779d3 type_id: 0x16a18560 full_name: "tty_port_close" } @@ -363338,7 +363470,7 @@ elf_symbol { name: "tty_port_destroy" is_defined: true symbol_type: FUNCTION - crc: 0xedb4ec4e + crc: 0x0914e615 type_id: 0x161c45fb full_name: "tty_port_destroy" } @@ -363347,7 +363479,7 @@ elf_symbol { name: "tty_port_hangup" is_defined: true symbol_type: FUNCTION - crc: 0xad4868e7 + crc: 0x2a9b29ff type_id: 0x161c45fb full_name: "tty_port_hangup" } @@ -363356,7 +363488,7 @@ elf_symbol { name: "tty_port_init" is_defined: true symbol_type: FUNCTION - crc: 0x2f165261 + crc: 0x7c556ea9 type_id: 0x161c45fb full_name: "tty_port_init" } @@ -363365,7 +363497,7 @@ elf_symbol { name: "tty_port_install" is_defined: true symbol_type: FUNCTION - crc: 0x697c147e + crc: 0xd0d52865 type_id: 0x9bc8ded8 full_name: "tty_port_install" } @@ -363374,7 +363506,7 @@ elf_symbol { name: "tty_port_open" is_defined: true symbol_type: FUNCTION - crc: 0x302cf97a + crc: 0xd476de0c type_id: 0x9bb937dc full_name: "tty_port_open" } @@ -363383,7 +363515,7 @@ elf_symbol { name: "tty_port_put" is_defined: true symbol_type: FUNCTION - crc: 0x69888a31 + crc: 0x8b334706 type_id: 0x161c45fb full_name: "tty_port_put" } @@ -363392,7 +363524,7 @@ elf_symbol { name: "tty_port_register_device" is_defined: true symbol_type: FUNCTION - crc: 0xdc5636be + crc: 0xec5db239 type_id: 0xab7dda53 full_name: "tty_port_register_device" } @@ -363401,7 +363533,7 @@ elf_symbol { name: "tty_port_tty_get" is_defined: true symbol_type: FUNCTION - crc: 0x75e487da + crc: 0x6826dfd6 type_id: 0xcc787cc3 full_name: "tty_port_tty_get" } @@ -363410,7 +363542,7 @@ elf_symbol { name: "tty_port_tty_hangup" is_defined: true symbol_type: FUNCTION - crc: 0x73ceb7c1 + crc: 0xa6417f00 type_id: 0x17a9b884 full_name: "tty_port_tty_hangup" } @@ -363419,7 +363551,7 @@ elf_symbol { name: "tty_port_tty_wakeup" is_defined: true symbol_type: FUNCTION - crc: 0x7a7f1384 + crc: 0x1032a41e type_id: 0x161c45fb full_name: "tty_port_tty_wakeup" } @@ -363428,7 +363560,7 @@ elf_symbol { name: "tty_register_driver" is_defined: true symbol_type: FUNCTION - crc: 0x80f83b76 + crc: 0xdab81d6a type_id: 0x91f980d7 full_name: "tty_register_driver" } @@ -363437,7 +363569,7 @@ elf_symbol { name: "tty_register_ldisc" is_defined: true symbol_type: FUNCTION - crc: 0x43260165 + crc: 0x043f9949 type_id: 0x91b78ec8 full_name: "tty_register_ldisc" } @@ -363446,7 +363578,7 @@ elf_symbol { name: "tty_set_termios" is_defined: true symbol_type: FUNCTION - crc: 0xb7adeb47 + crc: 0x80a42a7e type_id: 0x96c908d1 full_name: "tty_set_termios" } @@ -363455,7 +363587,7 @@ elf_symbol { name: "tty_standard_install" is_defined: true symbol_type: FUNCTION - crc: 0x805a6be3 + crc: 0xbaa980b8 type_id: 0x91427ad6 full_name: "tty_standard_install" } @@ -363500,7 +363632,7 @@ elf_symbol { name: "tty_unregister_device" is_defined: true symbol_type: FUNCTION - crc: 0xe101b680 + crc: 0x7d3a21c7 type_id: 0x1df727f3 full_name: "tty_unregister_device" } @@ -363509,7 +363641,7 @@ elf_symbol { name: "tty_unregister_driver" is_defined: true symbol_type: FUNCTION - crc: 0x53b3d7bb + crc: 0x47a02b0d type_id: 0x1ce1326b full_name: "tty_unregister_driver" } @@ -363518,7 +363650,7 @@ elf_symbol { name: "tty_unregister_ldisc" is_defined: true symbol_type: FUNCTION - crc: 0x04a0c107 + crc: 0x303084a7 type_id: 0x1caf3c74 full_name: "tty_unregister_ldisc" } @@ -363527,7 +363659,7 @@ elf_symbol { name: "tty_unthrottle" is_defined: true symbol_type: FUNCTION - crc: 0xc0bafce2 + crc: 0x8b8852c9 type_id: 0x1b27f18a full_name: "tty_unthrottle" } @@ -363536,7 +363668,7 @@ elf_symbol { name: "tty_vhangup" is_defined: true symbol_type: FUNCTION - crc: 0x2a5aa4e4 + crc: 0xb64518c9 type_id: 0x1b27f18a full_name: "tty_vhangup" } @@ -363545,7 +363677,7 @@ elf_symbol { name: "tty_wakeup" is_defined: true symbol_type: FUNCTION - crc: 0x0d9b6332 + crc: 0x75c364b8 type_id: 0x1b27f18a full_name: "tty_wakeup" } @@ -363572,7 +363704,7 @@ elf_symbol { name: "typec_get_drvdata" is_defined: true symbol_type: FUNCTION - crc: 0xa733caba + crc: 0x2652e1f3 type_id: 0x5b4eac6a full_name: "typec_get_drvdata" } @@ -363581,7 +363713,7 @@ elf_symbol { name: "typec_mux_get_drvdata" is_defined: true symbol_type: FUNCTION - crc: 0x854e37a8 + crc: 0xf69e7ce3 type_id: 0x5aa1d598 full_name: "typec_mux_get_drvdata" } @@ -363590,7 +363722,7 @@ elf_symbol { name: "typec_register_partner" is_defined: true symbol_type: FUNCTION - crc: 0xc6f008fd + crc: 0x94ebb9b5 type_id: 0x2eae2692 full_name: "typec_register_partner" } @@ -363599,7 +363731,7 @@ elf_symbol { name: "typec_register_port" is_defined: true symbol_type: FUNCTION - crc: 0x3ef9b448 + crc: 0xc0a144c1 type_id: 0xc993ac0a full_name: "typec_register_port" } @@ -363608,7 +363740,7 @@ elf_symbol { name: "typec_set_data_role" is_defined: true symbol_type: FUNCTION - crc: 0xd535d956 + crc: 0xd596f32c type_id: 0x1e585388 full_name: "typec_set_data_role" } @@ -363617,7 +363749,7 @@ elf_symbol { name: "typec_set_orientation" is_defined: true symbol_type: FUNCTION - crc: 0xb04fa06c + crc: 0x18e9d855 type_id: 0x9365db7d full_name: "typec_set_orientation" } @@ -363626,7 +363758,7 @@ elf_symbol { name: "typec_set_pwr_opmode" is_defined: true symbol_type: FUNCTION - crc: 0x9746cd0a + crc: 0x72e146e7 type_id: 0x1c861e9d full_name: "typec_set_pwr_opmode" } @@ -363635,7 +363767,7 @@ elf_symbol { name: "typec_set_pwr_role" is_defined: true symbol_type: FUNCTION - crc: 0xc8e72e4f + crc: 0xad0b90b3 type_id: 0x1f45d394 full_name: "typec_set_pwr_role" } @@ -363644,7 +363776,7 @@ elf_symbol { name: "typec_switch_get_drvdata" is_defined: true symbol_type: FUNCTION - crc: 0x7ed95a00 + crc: 0x2bcf93d7 type_id: 0x57990287 full_name: "typec_switch_get_drvdata" } @@ -363653,7 +363785,7 @@ elf_symbol { name: "typec_switch_register" is_defined: true symbol_type: FUNCTION - crc: 0x490640e7 + crc: 0xa68fc5f4 type_id: 0x2d04a70f full_name: "typec_switch_register" } @@ -363662,7 +363794,7 @@ elf_symbol { name: "typec_switch_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x9b85f265 + crc: 0xa2d9fb1a type_id: 0x1197e2e5 full_name: "typec_switch_unregister" } @@ -363671,7 +363803,7 @@ elf_symbol { name: "typec_unregister_partner" is_defined: true symbol_type: FUNCTION - crc: 0xf67155d1 + crc: 0xa4f9efbd type_id: 0x148f719a full_name: "typec_unregister_partner" } @@ -363680,7 +363812,7 @@ elf_symbol { name: "typec_unregister_port" is_defined: true symbol_type: FUNCTION - crc: 0x65ba25e0 + crc: 0x78421c4f type_id: 0x1d404c08 full_name: "typec_unregister_port" } @@ -363689,7 +363821,7 @@ elf_symbol { name: "uart_add_one_port" is_defined: true symbol_type: FUNCTION - crc: 0x3ae044d9 + crc: 0x449c936c type_id: 0x9e5980cd full_name: "uart_add_one_port" } @@ -363698,7 +363830,7 @@ elf_symbol { name: "uart_console_device" is_defined: true symbol_type: FUNCTION - crc: 0x421ed218 + crc: 0x97ea9345 type_id: 0xaf7fbf57 full_name: "uart_console_device" } @@ -363707,7 +363839,7 @@ elf_symbol { name: "uart_console_write" is_defined: true symbol_type: FUNCTION - crc: 0xe7fe33c0 + crc: 0x263696ce type_id: 0x105cac82 full_name: "uart_console_write" } @@ -363716,7 +363848,7 @@ elf_symbol { name: "uart_get_baud_rate" is_defined: true symbol_type: FUNCTION - crc: 0x452608bc + crc: 0x24337dd5 type_id: 0xce0dc24b full_name: "uart_get_baud_rate" } @@ -363725,7 +363857,7 @@ elf_symbol { name: "uart_insert_char" is_defined: true symbol_type: FUNCTION - crc: 0x5211cb20 + crc: 0x7b50e838 type_id: 0x11b3c739 full_name: "uart_insert_char" } @@ -363743,7 +363875,7 @@ elf_symbol { name: "uart_register_driver" is_defined: true symbol_type: FUNCTION - crc: 0x4a53ff92 + crc: 0x5d285c3b type_id: 0x9e5b5e9c full_name: "uart_register_driver" } @@ -363752,7 +363884,7 @@ elf_symbol { name: "uart_remove_one_port" is_defined: true symbol_type: FUNCTION - crc: 0x32477220 + crc: 0x8e974721 type_id: 0x9e5980cd full_name: "uart_remove_one_port" } @@ -363761,7 +363893,7 @@ elf_symbol { name: "uart_resume_port" is_defined: true symbol_type: FUNCTION - crc: 0xbbfafe1f + crc: 0xe03098b8 type_id: 0x9e5980cd full_name: "uart_resume_port" } @@ -363770,7 +363902,7 @@ elf_symbol { name: "uart_set_options" is_defined: true symbol_type: FUNCTION - crc: 0x57f6034b + crc: 0xec3f428d type_id: 0x9db0376d full_name: "uart_set_options" } @@ -363779,7 +363911,7 @@ elf_symbol { name: "uart_suspend_port" is_defined: true symbol_type: FUNCTION - crc: 0x6e7ef26c + crc: 0x047d0f9a type_id: 0x9e5980cd full_name: "uart_suspend_port" } @@ -363788,7 +363920,7 @@ elf_symbol { name: "uart_try_toggle_sysrq" is_defined: true symbol_type: FUNCTION - crc: 0x520e1eef + crc: 0xe5b776ca type_id: 0xff9fab83 full_name: "uart_try_toggle_sysrq" } @@ -363797,7 +363929,7 @@ elf_symbol { name: "uart_unregister_driver" is_defined: true symbol_type: FUNCTION - crc: 0x04c9b59f + crc: 0xc3e105d9 type_id: 0x1343ec20 full_name: "uart_unregister_driver" } @@ -363806,7 +363938,7 @@ elf_symbol { name: "uart_update_timeout" is_defined: true symbol_type: FUNCTION - crc: 0x036a4d29 + crc: 0x411fb99d type_id: 0x11b2c04d full_name: "uart_update_timeout" } @@ -363815,7 +363947,7 @@ elf_symbol { name: "uart_write_wakeup" is_defined: true symbol_type: FUNCTION - crc: 0x74ab73e8 + crc: 0xd893053d type_id: 0x10b5b48c full_name: "uart_write_wakeup" } @@ -363824,7 +363956,7 @@ elf_symbol { name: "uclamp_eff_value" is_defined: true symbol_type: FUNCTION - crc: 0x002bfb20 + crc: 0x1f9188f9 type_id: 0x37f8837e full_name: "uclamp_eff_value" } @@ -363833,7 +363965,7 @@ elf_symbol { name: "ucsi_connector_change" is_defined: true symbol_type: FUNCTION - crc: 0xa1e1578d + crc: 0x36508b50 type_id: 0x1bd0b1ab full_name: "ucsi_connector_change" } @@ -363842,7 +363974,7 @@ elf_symbol { name: "ucsi_create" is_defined: true symbol_type: FUNCTION - crc: 0xdf258e00 + crc: 0x427433ae type_id: 0x3dc04d04 full_name: "ucsi_create" } @@ -363851,7 +363983,7 @@ elf_symbol { name: "ucsi_destroy" is_defined: true symbol_type: FUNCTION - crc: 0x5faef449 + crc: 0x743f588a type_id: 0x1b75c063 full_name: "ucsi_destroy" } @@ -363860,7 +363992,7 @@ elf_symbol { name: "ucsi_get_drvdata" is_defined: true symbol_type: FUNCTION - crc: 0x150de784 + crc: 0x0889d4ee type_id: 0x5d7b2001 full_name: "ucsi_get_drvdata" } @@ -363869,7 +364001,7 @@ elf_symbol { name: "ucsi_register" is_defined: true symbol_type: FUNCTION - crc: 0x7cbacd9f + crc: 0xb961317d type_id: 0x966d72df full_name: "ucsi_register" } @@ -363878,7 +364010,7 @@ elf_symbol { name: "ucsi_set_drvdata" is_defined: true symbol_type: FUNCTION - crc: 0x2bcca113 + crc: 0xbf166456 type_id: 0x1b1735f7 full_name: "ucsi_set_drvdata" } @@ -363887,7 +364019,7 @@ elf_symbol { name: "ucsi_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xbbe4cf35 + crc: 0x30cb2f06 type_id: 0x1b75c063 full_name: "ucsi_unregister" } @@ -363896,7 +364028,7 @@ elf_symbol { name: "udp4_hwcsum" is_defined: true symbol_type: FUNCTION - crc: 0xb1efbfbf + crc: 0xc241484a type_id: 0x127accc9 full_name: "udp4_hwcsum" } @@ -363905,7 +364037,7 @@ elf_symbol { name: "udp6_set_csum" is_defined: true symbol_type: FUNCTION - crc: 0x7482ceee + crc: 0xffb95465 type_id: 0x0bdc9e9d full_name: "udp6_set_csum" } @@ -363914,7 +364046,7 @@ elf_symbol { name: "udp_set_csum" is_defined: true symbol_type: FUNCTION - crc: 0x5f709390 + crc: 0x76c8c87e type_id: 0x0be9b673 full_name: "udp_set_csum" } @@ -363923,7 +364055,7 @@ elf_symbol { name: "udp_sock_create4" is_defined: true symbol_type: FUNCTION - crc: 0x1bd51c09 + crc: 0x6e9bb4f4 type_id: 0x9ea1fe03 full_name: "udp_sock_create4" } @@ -363932,7 +364064,7 @@ elf_symbol { name: "udp_sock_create6" is_defined: true symbol_type: FUNCTION - crc: 0x2adfa82f + crc: 0x4cdc64df type_id: 0x9ea1fe03 full_name: "udp_sock_create6" } @@ -363950,7 +364082,7 @@ elf_symbol { name: "udp_tunnel6_xmit_skb" is_defined: true symbol_type: FUNCTION - crc: 0x492693ef + crc: 0x5d79b5bd type_id: 0x99621666 full_name: "udp_tunnel6_xmit_skb" } @@ -363959,7 +364091,7 @@ elf_symbol { name: "udp_tunnel_sock_release" is_defined: true symbol_type: FUNCTION - crc: 0x1934b4fa + crc: 0x4a867945 type_id: 0x14805be2 full_name: "udp_tunnel_sock_release" } @@ -363968,7 +364100,7 @@ elf_symbol { name: "udp_tunnel_xmit_skb" is_defined: true symbol_type: FUNCTION - crc: 0x94df64ac + crc: 0x4585c469 type_id: 0x14a305ea full_name: "udp_tunnel_xmit_skb" } @@ -363977,7 +364109,7 @@ elf_symbol { name: "ufshcd_alloc_host" is_defined: true symbol_type: FUNCTION - crc: 0x5a6c739a + crc: 0xd2206531 type_id: 0x9d3b1e84 full_name: "ufshcd_alloc_host" } @@ -363986,7 +364118,7 @@ elf_symbol { name: "ufshcd_auto_hibern8_update" is_defined: true symbol_type: FUNCTION - crc: 0xacfd5948 + crc: 0xa45f7eb8 type_id: 0x125cb480 full_name: "ufshcd_auto_hibern8_update" } @@ -363995,7 +364127,7 @@ elf_symbol { name: "ufshcd_bkops_ctrl" is_defined: true symbol_type: FUNCTION - crc: 0xb57f564e + crc: 0x6842e059 type_id: 0x9fcafcaa full_name: "ufshcd_bkops_ctrl" } @@ -364004,7 +364136,7 @@ elf_symbol { name: "ufshcd_config_pwr_mode" is_defined: true symbol_type: FUNCTION - crc: 0xf09bac42 + crc: 0x9de96168 type_id: 0x9c1de0b0 full_name: "ufshcd_config_pwr_mode" } @@ -364013,7 +364145,7 @@ elf_symbol { name: "ufshcd_dealloc_host" is_defined: true symbol_type: FUNCTION - crc: 0x9273fd20 + crc: 0xe931a2f2 type_id: 0x1178942c full_name: "ufshcd_dealloc_host" } @@ -364022,7 +364154,7 @@ elf_symbol { name: "ufshcd_dme_configure_adapt" is_defined: true symbol_type: FUNCTION - crc: 0x7ef1836d + crc: 0x55ac794f type_id: 0x9de56de8 full_name: "ufshcd_dme_configure_adapt" } @@ -364031,7 +364163,7 @@ elf_symbol { name: "ufshcd_dme_get_attr" is_defined: true symbol_type: FUNCTION - crc: 0xc4fe663c + crc: 0x71e326ff type_id: 0x9f4a97c1 full_name: "ufshcd_dme_get_attr" } @@ -364040,7 +364172,7 @@ elf_symbol { name: "ufshcd_dme_set_attr" is_defined: true symbol_type: FUNCTION - crc: 0xe5059420 + crc: 0x778f5ada type_id: 0x9f4d7f57 full_name: "ufshcd_dme_set_attr" } @@ -364049,7 +364181,7 @@ elf_symbol { name: "ufshcd_dump_regs" is_defined: true symbol_type: FUNCTION - crc: 0x53c75184 + crc: 0xbc7eec2f type_id: 0x9f8d0629 full_name: "ufshcd_dump_regs" } @@ -364058,7 +364190,7 @@ elf_symbol { name: "ufshcd_fixup_dev_quirks" is_defined: true symbol_type: FUNCTION - crc: 0x8242f49b + crc: 0x8f76ffa9 type_id: 0x1183ff2d full_name: "ufshcd_fixup_dev_quirks" } @@ -364067,7 +364199,7 @@ elf_symbol { name: "ufshcd_get_local_unipro_ver" is_defined: true symbol_type: FUNCTION - crc: 0xd0e6fcd1 + crc: 0x8793e400 type_id: 0x4418eedd full_name: "ufshcd_get_local_unipro_ver" } @@ -364085,7 +364217,7 @@ elf_symbol { name: "ufshcd_hba_enable" is_defined: true symbol_type: FUNCTION - crc: 0xbc1985f4 + crc: 0x41c1d0d7 type_id: 0x9c602690 full_name: "ufshcd_hba_enable" } @@ -364094,7 +364226,7 @@ elf_symbol { name: "ufshcd_hba_stop" is_defined: true symbol_type: FUNCTION - crc: 0x40a1e7f8 + crc: 0xf02a686a type_id: 0x1178942c full_name: "ufshcd_hba_stop" } @@ -364103,7 +364235,7 @@ elf_symbol { name: "ufshcd_hold" is_defined: true symbol_type: FUNCTION - crc: 0xdaf5c924 + crc: 0x41bad3fe type_id: 0x9dd5dbef full_name: "ufshcd_hold" } @@ -364121,7 +364253,7 @@ elf_symbol { name: "ufshcd_make_hba_operational" is_defined: true symbol_type: FUNCTION - crc: 0x2f903c13 + crc: 0x5d5c7243 type_id: 0x9c602690 full_name: "ufshcd_make_hba_operational" } @@ -364130,7 +364262,7 @@ elf_symbol { name: "ufshcd_mcq_config_esi" is_defined: true symbol_type: FUNCTION - crc: 0x120e6711 + crc: 0x2322489c type_id: 0x11ebebf2 full_name: "ufshcd_mcq_config_esi" } @@ -364139,7 +364271,7 @@ elf_symbol { name: "ufshcd_mcq_enable_esi" is_defined: true symbol_type: FUNCTION - crc: 0x5426e88e + crc: 0x0a17d112 type_id: 0x1178942c full_name: "ufshcd_mcq_enable_esi" } @@ -364148,7 +364280,7 @@ elf_symbol { name: "ufshcd_mcq_poll_cqe_nolock" is_defined: true symbol_type: FUNCTION - crc: 0x932e61af + crc: 0x5a5be904 type_id: 0x30f8e5d3 full_name: "ufshcd_mcq_poll_cqe_nolock" } @@ -364157,7 +364289,7 @@ elf_symbol { name: "ufshcd_mcq_write_cqis" is_defined: true symbol_type: FUNCTION - crc: 0x28bcafc5 + crc: 0x7ebf6ea9 type_id: 0x12457cb4 full_name: "ufshcd_mcq_write_cqis" } @@ -364166,7 +364298,7 @@ elf_symbol { name: "ufshcd_pltfrm_init" is_defined: true symbol_type: FUNCTION - crc: 0x8d2304e8 + crc: 0x2fe1912d type_id: 0x928794d5 full_name: "ufshcd_pltfrm_init" } @@ -364175,7 +364307,7 @@ elf_symbol { name: "ufshcd_pltfrm_shutdown" is_defined: true symbol_type: FUNCTION - crc: 0x6225383c + crc: 0xa8ec88f0 type_id: 0x1f55a7e6 full_name: "ufshcd_pltfrm_shutdown" } @@ -364184,7 +364316,7 @@ elf_symbol { name: "ufshcd_query_attr" is_defined: true symbol_type: FUNCTION - crc: 0xfc2ebf80 + crc: 0x632c0527 type_id: 0x9ca39dee full_name: "ufshcd_query_attr" } @@ -364193,7 +364325,7 @@ elf_symbol { name: "ufshcd_query_attr_retry" is_defined: true symbol_type: FUNCTION - crc: 0x6ab1cd1c + crc: 0xa3d0dd46 type_id: 0x9ca39dee full_name: "ufshcd_query_attr_retry" } @@ -364202,7 +364334,7 @@ elf_symbol { name: "ufshcd_query_descriptor_retry" is_defined: true symbol_type: FUNCTION - crc: 0x8e16a71a + crc: 0x1dc53734 type_id: 0x9cb87b44 full_name: "ufshcd_query_descriptor_retry" } @@ -364211,7 +364343,7 @@ elf_symbol { name: "ufshcd_query_flag" is_defined: true symbol_type: FUNCTION - crc: 0xc1efce4f + crc: 0xc21c88a3 type_id: 0x9c8699ca full_name: "ufshcd_query_flag" } @@ -364220,7 +364352,7 @@ elf_symbol { name: "ufshcd_query_flag_retry" is_defined: true symbol_type: FUNCTION - crc: 0x99a60933 + crc: 0xc1a89d95 type_id: 0x9c8699ca full_name: "ufshcd_query_flag_retry" } @@ -364229,7 +364361,7 @@ elf_symbol { name: "ufshcd_read_desc_param" is_defined: true symbol_type: FUNCTION - crc: 0xd5cff2fb + crc: 0xdb74e1b5 type_id: 0x9fb1e92c full_name: "ufshcd_read_desc_param" } @@ -364238,7 +364370,7 @@ elf_symbol { name: "ufshcd_release" is_defined: true symbol_type: FUNCTION - crc: 0xa89c10a8 + crc: 0x0e7e131e type_id: 0x1178942c full_name: "ufshcd_release" } @@ -364247,7 +364379,7 @@ elf_symbol { name: "ufshcd_remove" is_defined: true symbol_type: FUNCTION - crc: 0xbf5df876 + crc: 0xb6b411ff type_id: 0x1178942c full_name: "ufshcd_remove" } @@ -364256,7 +364388,7 @@ elf_symbol { name: "ufshcd_resume_complete" is_defined: true symbol_type: FUNCTION - crc: 0x6e1baf2c + crc: 0xcb3a9f4e type_id: 0x100e6fc8 full_name: "ufshcd_resume_complete" } @@ -364265,7 +364397,7 @@ elf_symbol { name: "ufshcd_runtime_resume" is_defined: true symbol_type: FUNCTION - crc: 0x8bb0009b + crc: 0x18af817e type_id: 0x9d16dd74 full_name: "ufshcd_runtime_resume" } @@ -364274,7 +364406,7 @@ elf_symbol { name: "ufshcd_runtime_suspend" is_defined: true symbol_type: FUNCTION - crc: 0xb6d71810 + crc: 0xb1fa0afb type_id: 0x9d16dd74 full_name: "ufshcd_runtime_suspend" } @@ -364283,7 +364415,7 @@ elf_symbol { name: "ufshcd_shutdown" is_defined: true symbol_type: FUNCTION - crc: 0x444d1b1f + crc: 0x4683a3f4 type_id: 0x9c602690 full_name: "ufshcd_shutdown" } @@ -364292,7 +364424,7 @@ elf_symbol { name: "ufshcd_suspend_prepare" is_defined: true symbol_type: FUNCTION - crc: 0x0f48a229 + crc: 0x97c3f9d8 type_id: 0x9d16dd74 full_name: "ufshcd_suspend_prepare" } @@ -364301,7 +364433,7 @@ elf_symbol { name: "ufshcd_system_freeze" is_defined: true symbol_type: FUNCTION - crc: 0x245ac603 + crc: 0x74910651 type_id: 0x9d16dd74 full_name: "ufshcd_system_freeze" } @@ -364310,7 +364442,7 @@ elf_symbol { name: "ufshcd_system_restore" is_defined: true symbol_type: FUNCTION - crc: 0x1116dd31 + crc: 0x3cb6d593 type_id: 0x9d16dd74 full_name: "ufshcd_system_restore" } @@ -364319,7 +364451,7 @@ elf_symbol { name: "ufshcd_system_resume" is_defined: true symbol_type: FUNCTION - crc: 0x21d5a137 + crc: 0xedab0e72 type_id: 0x9d16dd74 full_name: "ufshcd_system_resume" } @@ -364328,7 +364460,7 @@ elf_symbol { name: "ufshcd_system_suspend" is_defined: true symbol_type: FUNCTION - crc: 0x691d9272 + crc: 0xb8b9425f type_id: 0x9d16dd74 full_name: "ufshcd_system_suspend" } @@ -364337,7 +364469,7 @@ elf_symbol { name: "ufshcd_system_thaw" is_defined: true symbol_type: FUNCTION - crc: 0x0144a0f0 + crc: 0x415eddbd type_id: 0x9d16dd74 full_name: "ufshcd_system_thaw" } @@ -364346,7 +364478,7 @@ elf_symbol { name: "ufshcd_uic_hibern8_enter" is_defined: true symbol_type: FUNCTION - crc: 0x43b49687 + crc: 0xe6d7dfca type_id: 0x9c602690 full_name: "ufshcd_uic_hibern8_enter" } @@ -364355,7 +364487,7 @@ elf_symbol { name: "ufshcd_uic_hibern8_exit" is_defined: true symbol_type: FUNCTION - crc: 0x0abf4c53 + crc: 0x788bd199 type_id: 0x9c602690 full_name: "ufshcd_uic_hibern8_exit" } @@ -364364,7 +364496,7 @@ elf_symbol { name: "ufshcd_update_evt_hist" is_defined: true symbol_type: FUNCTION - crc: 0x81fc84d6 + crc: 0x020d39ae type_id: 0x126ef68a full_name: "ufshcd_update_evt_hist" } @@ -364373,7 +364505,7 @@ elf_symbol { name: "uio_unregister_device" is_defined: true symbol_type: FUNCTION - crc: 0x9cb82265 + crc: 0x62cb2f79 type_id: 0x13f52df1 full_name: "uio_unregister_device" } @@ -364382,7 +364514,7 @@ elf_symbol { name: "unlock_page" is_defined: true symbol_type: FUNCTION - crc: 0xcc9f4f67 + crc: 0xeaa14f75 type_id: 0x11388634 full_name: "unlock_page" } @@ -364391,7 +364523,7 @@ elf_symbol { name: "unmap_mapping_range" is_defined: true symbol_type: FUNCTION - crc: 0x1600bf1b + crc: 0x5532f21b type_id: 0x156e1138 full_name: "unmap_mapping_range" } @@ -364400,7 +364532,7 @@ elf_symbol { name: "unpin_user_page" is_defined: true symbol_type: FUNCTION - crc: 0x40c4a487 + crc: 0xda99a435 type_id: 0x11388634 full_name: "unpin_user_page" } @@ -364409,7 +364541,7 @@ elf_symbol { name: "unpin_user_pages_dirty_lock" is_defined: true symbol_type: FUNCTION - crc: 0xd20d34c2 + crc: 0xea35d922 type_id: 0x1282e056 full_name: "unpin_user_pages_dirty_lock" } @@ -364427,7 +364559,7 @@ elf_symbol { name: "unregister_candev" is_defined: true symbol_type: FUNCTION - crc: 0x51dd52de + crc: 0x6f85fdeb type_id: 0x1c31d966 full_name: "unregister_candev" } @@ -364445,7 +364577,7 @@ elf_symbol { name: "unregister_console" is_defined: true symbol_type: FUNCTION - crc: 0x2b737cfc + crc: 0x51e15095 type_id: 0x9dd738c0 full_name: "unregister_console" } @@ -364526,7 +364658,7 @@ elf_symbol { name: "unregister_netdev" is_defined: true symbol_type: FUNCTION - crc: 0x8b24e8d6 + crc: 0xc108a04f type_id: 0x1c31d966 full_name: "unregister_netdev" } @@ -364553,7 +364685,7 @@ elf_symbol { name: "unregister_netdevice_queue" is_defined: true symbol_type: FUNCTION - crc: 0x6542f938 + crc: 0xd4598d55 type_id: 0x1cc85181 full_name: "unregister_netdevice_queue" } @@ -364580,7 +364712,7 @@ elf_symbol { name: "unregister_pernet_device" is_defined: true symbol_type: FUNCTION - crc: 0x541bda8b + crc: 0x6954c312 type_id: 0x1a8e27b5 full_name: "unregister_pernet_device" } @@ -364589,7 +364721,7 @@ elf_symbol { name: "unregister_pernet_subsys" is_defined: true symbol_type: FUNCTION - crc: 0x7efa85d8 + crc: 0x2d3fb2ae type_id: 0x1a8e27b5 full_name: "unregister_pernet_subsys" } @@ -364616,7 +364748,7 @@ elf_symbol { name: "unregister_qdisc" is_defined: true symbol_type: FUNCTION - crc: 0x34554723 + crc: 0x96ff72c2 type_id: 0x1f62fcf3 full_name: "unregister_qdisc" } @@ -364643,7 +364775,7 @@ elf_symbol { name: "unregister_rpmsg_driver" is_defined: true symbol_type: FUNCTION - crc: 0x5b736799 + crc: 0xd58f06e9 type_id: 0x18db21cb full_name: "unregister_rpmsg_driver" } @@ -364652,7 +364784,7 @@ elf_symbol { name: "unregister_shrinker" is_defined: true symbol_type: FUNCTION - crc: 0xc0e64805 + crc: 0xbe519bac type_id: 0x19752ade full_name: "unregister_shrinker" } @@ -364679,7 +364811,7 @@ elf_symbol { name: "unregister_tcf_proto_ops" is_defined: true symbol_type: FUNCTION - crc: 0x42121917 + crc: 0xb6e6f405 type_id: 0x17e4a48e full_name: "unregister_tcf_proto_ops" } @@ -364688,7 +364820,7 @@ elf_symbol { name: "unregister_virtio_device" is_defined: true symbol_type: FUNCTION - crc: 0xfe74bb70 + crc: 0x40018bd0 type_id: 0x1ad5d81c full_name: "unregister_virtio_device" } @@ -364697,7 +364829,7 @@ elf_symbol { name: "unregister_virtio_driver" is_defined: true symbol_type: FUNCTION - crc: 0xd3387715 + crc: 0x9a2f6a5d type_id: 0x14a4a6f4 full_name: "unregister_virtio_driver" } @@ -364742,7 +364874,7 @@ elf_symbol { name: "update_devfreq" is_defined: true symbol_type: FUNCTION - crc: 0x7550e25e + crc: 0x27d23915 type_id: 0x945a66f1 full_name: "update_devfreq" } @@ -364751,7 +364883,7 @@ elf_symbol { name: "update_rq_clock" is_defined: true symbol_type: FUNCTION - crc: 0x86e8aecd + crc: 0x472c6b5f type_id: 0x1b18f64e full_name: "update_rq_clock" } @@ -364760,7 +364892,7 @@ elf_symbol { name: "usb_add_function" is_defined: true symbol_type: FUNCTION - crc: 0xda55c136 + crc: 0xaa6223be type_id: 0x9ebe912b full_name: "usb_add_function" } @@ -364769,7 +364901,7 @@ elf_symbol { name: "usb_add_gadget_udc" is_defined: true symbol_type: FUNCTION - crc: 0x98e53e74 + crc: 0xd25057de type_id: 0x9d834998 full_name: "usb_add_gadget_udc" } @@ -364778,7 +364910,7 @@ elf_symbol { name: "usb_add_hcd" is_defined: true symbol_type: FUNCTION - crc: 0x9932f2d8 + crc: 0x72b67b42 type_id: 0x95c42336 full_name: "usb_add_hcd" } @@ -364787,7 +364919,7 @@ elf_symbol { name: "usb_add_phy_dev" is_defined: true symbol_type: FUNCTION - crc: 0xca3532b9 + crc: 0x621ff5bc type_id: 0x9cf04bdd full_name: "usb_add_phy_dev" } @@ -364796,7 +364928,7 @@ elf_symbol { name: "usb_alloc_coherent" is_defined: true symbol_type: FUNCTION - crc: 0xa3add748 + crc: 0xc145f1ce type_id: 0x5625fe7a full_name: "usb_alloc_coherent" } @@ -364805,7 +364937,7 @@ elf_symbol { name: "usb_alloc_urb" is_defined: true symbol_type: FUNCTION - crc: 0xfa56c15a + crc: 0x2cfe37c5 type_id: 0x7fc911b7 full_name: "usb_alloc_urb" } @@ -364859,7 +364991,7 @@ elf_symbol { name: "usb_anchor_urb" is_defined: true symbol_type: FUNCTION - crc: 0x28288311 + crc: 0x1605014f type_id: 0x100504e2 full_name: "usb_anchor_urb" } @@ -364868,7 +365000,7 @@ elf_symbol { name: "usb_assign_descriptors" is_defined: true symbol_type: FUNCTION - crc: 0xc76f21a3 + crc: 0x488e8387 type_id: 0x95b74be6 full_name: "usb_assign_descriptors" } @@ -364877,7 +365009,7 @@ elf_symbol { name: "usb_autopm_get_interface" is_defined: true symbol_type: FUNCTION - crc: 0xfe6c3ef5 + crc: 0x67cfaf23 type_id: 0x95c144d5 full_name: "usb_autopm_get_interface" } @@ -364886,7 +365018,7 @@ elf_symbol { name: "usb_autopm_get_interface_async" is_defined: true symbol_type: FUNCTION - crc: 0x342dd5bc + crc: 0x9ce66cd2 type_id: 0x95c144d5 full_name: "usb_autopm_get_interface_async" } @@ -364895,7 +365027,7 @@ elf_symbol { name: "usb_autopm_get_interface_no_resume" is_defined: true symbol_type: FUNCTION - crc: 0xb9d91b10 + crc: 0x602535cd type_id: 0x18d9f669 full_name: "usb_autopm_get_interface_no_resume" } @@ -364904,7 +365036,7 @@ elf_symbol { name: "usb_autopm_put_interface" is_defined: true symbol_type: FUNCTION - crc: 0xc37b944d + crc: 0xa8f0c046 type_id: 0x18d9f669 full_name: "usb_autopm_put_interface" } @@ -364913,7 +365045,7 @@ elf_symbol { name: "usb_autopm_put_interface_async" is_defined: true symbol_type: FUNCTION - crc: 0x195eda76 + crc: 0xed062b2d type_id: 0x18d9f669 full_name: "usb_autopm_put_interface_async" } @@ -364922,7 +365054,7 @@ elf_symbol { name: "usb_bulk_msg" is_defined: true symbol_type: FUNCTION - crc: 0x46b9b879 + crc: 0x486cdab8 type_id: 0x9fce79d4 full_name: "usb_bulk_msg" } @@ -364958,7 +365090,7 @@ elf_symbol { name: "usb_clear_halt" is_defined: true symbol_type: FUNCTION - crc: 0x304d6d5f + crc: 0x0519db08 type_id: 0x9f435990 full_name: "usb_clear_halt" } @@ -364967,7 +365099,7 @@ elf_symbol { name: "usb_composite_setup_continue" is_defined: true symbol_type: FUNCTION - crc: 0x30755317 + crc: 0x2ce6a405 type_id: 0x18d04dd3 full_name: "usb_composite_setup_continue" } @@ -364976,7 +365108,7 @@ elf_symbol { name: "usb_control_msg" is_defined: true symbol_type: FUNCTION - crc: 0xb588e418 + crc: 0xd8bfa4a6 type_id: 0x9fe7c091 full_name: "usb_control_msg" } @@ -364985,7 +365117,7 @@ elf_symbol { name: "usb_control_msg_recv" is_defined: true symbol_type: FUNCTION - crc: 0x9a060883 + crc: 0xfb6c1bd0 type_id: 0x9c3e4be2 full_name: "usb_control_msg_recv" } @@ -364994,7 +365126,7 @@ elf_symbol { name: "usb_control_msg_send" is_defined: true symbol_type: FUNCTION - crc: 0xdf7c9948 + crc: 0x5cd0dc43 type_id: 0x9c3e4bea full_name: "usb_control_msg_send" } @@ -365012,7 +365144,7 @@ elf_symbol { name: "usb_create_hcd" is_defined: true symbol_type: FUNCTION - crc: 0x8d2415a7 + crc: 0x098b2578 type_id: 0xab95c382 full_name: "usb_create_hcd" } @@ -365021,7 +365153,7 @@ elf_symbol { name: "usb_create_shared_hcd" is_defined: true symbol_type: FUNCTION - crc: 0xf702f78a + crc: 0xf52eafd4 type_id: 0xab955662 full_name: "usb_create_shared_hcd" } @@ -365030,7 +365162,7 @@ elf_symbol { name: "usb_debug_root" is_defined: true symbol_type: OBJECT - crc: 0x223440db + crc: 0x916efb94 type_id: 0x120540d1 full_name: "usb_debug_root" } @@ -365048,7 +365180,7 @@ elf_symbol { name: "usb_del_gadget_udc" is_defined: true symbol_type: FUNCTION - crc: 0x22408e27 + crc: 0x0ba79252 type_id: 0x19c11f53 full_name: "usb_del_gadget_udc" } @@ -365057,7 +365189,7 @@ elf_symbol { name: "usb_deregister" is_defined: true symbol_type: FUNCTION - crc: 0x6a9f1403 + crc: 0x64f83e0f type_id: 0x1fbef67f full_name: "usb_deregister" } @@ -365066,7 +365198,7 @@ elf_symbol { name: "usb_device_match_id" is_defined: true symbol_type: FUNCTION - crc: 0xc2c5a86e + crc: 0xaf393a6d type_id: 0x1c1deea6 full_name: "usb_device_match_id" } @@ -365084,7 +365216,7 @@ elf_symbol { name: "usb_driver_claim_interface" is_defined: true symbol_type: FUNCTION - crc: 0x620b0439 + crc: 0x8b92916c type_id: 0x922471e5 full_name: "usb_driver_claim_interface" } @@ -365093,7 +365225,7 @@ elf_symbol { name: "usb_driver_release_interface" is_defined: true symbol_type: FUNCTION - crc: 0xa8cba54d + crc: 0x01e4fc65 type_id: 0x1f3aec00 full_name: "usb_driver_release_interface" } @@ -365102,7 +365234,7 @@ elf_symbol { name: "usb_enable_autosuspend" is_defined: true symbol_type: FUNCTION - crc: 0x4fcc8f78 + crc: 0x11864a80 type_id: 0x13c76860 full_name: "usb_enable_autosuspend" } @@ -365120,7 +365252,7 @@ elf_symbol { name: "usb_ep_autoconfig" is_defined: true symbol_type: FUNCTION - crc: 0x319953fa + crc: 0xd0cc8d66 type_id: 0xa2868e3b full_name: "usb_ep_autoconfig" } @@ -365201,7 +365333,7 @@ elf_symbol { name: "usb_free_all_descriptors" is_defined: true symbol_type: FUNCTION - crc: 0x4fdf69a5 + crc: 0x58be2d78 type_id: 0x1880675b full_name: "usb_free_all_descriptors" } @@ -365210,7 +365342,7 @@ elf_symbol { name: "usb_free_coherent" is_defined: true symbol_type: FUNCTION - crc: 0xf09854e0 + crc: 0xe806b2a4 type_id: 0x10121220 full_name: "usb_free_coherent" } @@ -365219,7 +365351,7 @@ elf_symbol { name: "usb_free_urb" is_defined: true symbol_type: FUNCTION - crc: 0xc55c9f1f + crc: 0x29a9f90e type_id: 0x10d459f4 full_name: "usb_free_urb" } @@ -365228,7 +365360,7 @@ elf_symbol { name: "usb_function_register" is_defined: true symbol_type: FUNCTION - crc: 0x4d7b1327 + crc: 0x6f285292 type_id: 0x9f5327f4 full_name: "usb_function_register" } @@ -365237,7 +365369,7 @@ elf_symbol { name: "usb_function_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x884b1e75 + crc: 0xe51ebe2a type_id: 0x124b9548 full_name: "usb_function_unregister" } @@ -365246,7 +365378,7 @@ elf_symbol { name: "usb_gadget_activate" is_defined: true symbol_type: FUNCTION - crc: 0x80c6761b + crc: 0xea2edc71 type_id: 0x94d9adef full_name: "usb_gadget_activate" } @@ -365255,7 +365387,7 @@ elf_symbol { name: "usb_gadget_deactivate" is_defined: true symbol_type: FUNCTION - crc: 0xcffd594b + crc: 0x0ef3ded2 type_id: 0x94d9adef full_name: "usb_gadget_deactivate" } @@ -365273,7 +365405,7 @@ elf_symbol { name: "usb_gadget_set_state" is_defined: true symbol_type: FUNCTION - crc: 0x96dbc3b3 + crc: 0x5e970b2b type_id: 0x1b74fe1c full_name: "usb_gadget_set_state" } @@ -365282,7 +365414,7 @@ elf_symbol { name: "usb_gadget_udc_reset" is_defined: true symbol_type: FUNCTION - crc: 0x1559b59a + crc: 0x8a5b6d5a type_id: 0x1924a178 full_name: "usb_gadget_udc_reset" } @@ -365291,7 +365423,7 @@ elf_symbol { name: "usb_gadget_wakeup" is_defined: true symbol_type: FUNCTION - crc: 0xb69e7ae0 + crc: 0xb168d1db type_id: 0x94d9adef full_name: "usb_gadget_wakeup" } @@ -365300,7 +365432,7 @@ elf_symbol { name: "usb_get_dev" is_defined: true symbol_type: FUNCTION - crc: 0xf7c9458d + crc: 0x8e9d9f63 type_id: 0x751f8257 full_name: "usb_get_dev" } @@ -365309,7 +365441,7 @@ elf_symbol { name: "usb_get_from_anchor" is_defined: true symbol_type: FUNCTION - crc: 0x7c67f391 + crc: 0xec59f2b9 type_id: 0x68d26f6c full_name: "usb_get_from_anchor" } @@ -365318,7 +365450,7 @@ elf_symbol { name: "usb_get_intf" is_defined: true symbol_type: FUNCTION - crc: 0xc8c49386 + crc: 0x6863f311 type_id: 0x4bcbea3e full_name: "usb_get_intf" } @@ -365327,7 +365459,7 @@ elf_symbol { name: "usb_gstrings_attach" is_defined: true symbol_type: FUNCTION - crc: 0xff52dc72 + crc: 0x3441cf96 type_id: 0x9b2c6ab8 full_name: "usb_gstrings_attach" } @@ -365336,7 +365468,7 @@ elf_symbol { name: "usb_hc_died" is_defined: true symbol_type: FUNCTION - crc: 0x944bc554 + crc: 0xf26ad529 type_id: 0x19c6594b full_name: "usb_hc_died" } @@ -365345,7 +365477,7 @@ elf_symbol { name: "usb_hcd_check_unlink_urb" is_defined: true symbol_type: FUNCTION - crc: 0x4190c1e9 + crc: 0xefc6aa03 type_id: 0x94c3e345 full_name: "usb_hcd_check_unlink_urb" } @@ -365354,7 +365486,7 @@ elf_symbol { name: "usb_hcd_giveback_urb" is_defined: true symbol_type: FUNCTION - crc: 0x303da67d + crc: 0x44badf36 type_id: 0x19db51f9 full_name: "usb_hcd_giveback_urb" } @@ -365363,7 +365495,7 @@ elf_symbol { name: "usb_hcd_is_primary_hcd" is_defined: true symbol_type: FUNCTION - crc: 0xe327090e + crc: 0xda4a8bf1 type_id: 0x94deebf7 full_name: "usb_hcd_is_primary_hcd" } @@ -365372,7 +365504,7 @@ elf_symbol { name: "usb_hcd_link_urb_to_ep" is_defined: true symbol_type: FUNCTION - crc: 0xf75c342b + crc: 0x25237ea5 type_id: 0x94da2b71 full_name: "usb_hcd_link_urb_to_ep" } @@ -365381,7 +365513,7 @@ elf_symbol { name: "usb_hcd_pci_pm_ops" is_defined: true symbol_type: OBJECT - crc: 0xcaa3c323 + crc: 0x84ce1a9d type_id: 0xc44f560e full_name: "usb_hcd_pci_pm_ops" } @@ -365390,7 +365522,7 @@ elf_symbol { name: "usb_hcd_pci_probe" is_defined: true symbol_type: FUNCTION - crc: 0x4fa5d4aa + crc: 0x77e42de8 type_id: 0x991753c2 full_name: "usb_hcd_pci_probe" } @@ -365399,7 +365531,7 @@ elf_symbol { name: "usb_hcd_pci_remove" is_defined: true symbol_type: FUNCTION - crc: 0x83d84d47 + crc: 0x090b072d type_id: 0x14e1f000 full_name: "usb_hcd_pci_remove" } @@ -365408,7 +365540,7 @@ elf_symbol { name: "usb_hcd_pci_shutdown" is_defined: true symbol_type: FUNCTION - crc: 0xf336c077 + crc: 0x8d72b828 type_id: 0x14e1f000 full_name: "usb_hcd_pci_shutdown" } @@ -365417,7 +365549,7 @@ elf_symbol { name: "usb_hcd_platform_shutdown" is_defined: true symbol_type: FUNCTION - crc: 0x166b8113 + crc: 0x7b617f80 type_id: 0x1f55a7e6 full_name: "usb_hcd_platform_shutdown" } @@ -365426,7 +365558,7 @@ elf_symbol { name: "usb_hcd_poll_rh_status" is_defined: true symbol_type: FUNCTION - crc: 0x054a288d + crc: 0xe5c2f3b6 type_id: 0x19c6594b full_name: "usb_hcd_poll_rh_status" } @@ -365435,7 +365567,7 @@ elf_symbol { name: "usb_hcd_resume_root_hub" is_defined: true symbol_type: FUNCTION - crc: 0x3d668915 + crc: 0xbf5d84bd type_id: 0x19c6594b full_name: "usb_hcd_resume_root_hub" } @@ -365444,7 +365576,7 @@ elf_symbol { name: "usb_hcd_unlink_urb_from_ep" is_defined: true symbol_type: FUNCTION - crc: 0x27173d6f + crc: 0x6fc6aeeb type_id: 0x19c299cd full_name: "usb_hcd_unlink_urb_from_ep" } @@ -365462,7 +365594,7 @@ elf_symbol { name: "usb_hub_find_child" is_defined: true symbol_type: FUNCTION - crc: 0x145974d9 + crc: 0xcdf14dfd type_id: 0x7483011b full_name: "usb_hub_find_child" } @@ -365471,7 +365603,7 @@ elf_symbol { name: "usb_ifnum_to_if" is_defined: true symbol_type: FUNCTION - crc: 0xceee74bd + crc: 0x7e4fa339 type_id: 0x4d878509 full_name: "usb_ifnum_to_if" } @@ -365480,7 +365612,7 @@ elf_symbol { name: "usb_init_urb" is_defined: true symbol_type: FUNCTION - crc: 0x36c85407 + crc: 0x0413a91c type_id: 0x10d459f4 full_name: "usb_init_urb" } @@ -365489,7 +365621,7 @@ elf_symbol { name: "usb_interface_id" is_defined: true symbol_type: FUNCTION - crc: 0xfdee6b3f + crc: 0x6e1d9441 type_id: 0x9ebe912b full_name: "usb_interface_id" } @@ -365507,7 +365639,7 @@ elf_symbol { name: "usb_kill_urb" is_defined: true symbol_type: FUNCTION - crc: 0x2df22aa1 + crc: 0x3fc87449 type_id: 0x10d459f4 full_name: "usb_kill_urb" } @@ -365516,7 +365648,7 @@ elf_symbol { name: "usb_match_id" is_defined: true symbol_type: FUNCTION - crc: 0x6c72d3a1 + crc: 0xdc1775fd type_id: 0x170370af full_name: "usb_match_id" } @@ -365525,7 +365657,7 @@ elf_symbol { name: "usb_match_one_id" is_defined: true symbol_type: FUNCTION - crc: 0x986f8c71 + crc: 0xaecfb75d type_id: 0x952154fc full_name: "usb_match_one_id" } @@ -365543,7 +365675,7 @@ elf_symbol { name: "usb_phy_set_charger_current" is_defined: true symbol_type: FUNCTION - crc: 0x95027579 + crc: 0x5611686e type_id: 0x10feecf9 full_name: "usb_phy_set_charger_current" } @@ -365552,7 +365684,7 @@ elf_symbol { name: "usb_poison_urb" is_defined: true symbol_type: FUNCTION - crc: 0xf3b0c1da + crc: 0xc6bdcaa4 type_id: 0x10d459f4 full_name: "usb_poison_urb" } @@ -365561,7 +365693,7 @@ elf_symbol { name: "usb_put_dev" is_defined: true symbol_type: FUNCTION - crc: 0xcb0a32e6 + crc: 0x59951f74 type_id: 0x13c76860 full_name: "usb_put_dev" } @@ -365570,7 +365702,7 @@ elf_symbol { name: "usb_put_function_instance" is_defined: true symbol_type: FUNCTION - crc: 0xb0b5a36f + crc: 0x59d67c57 type_id: 0x149eb739 full_name: "usb_put_function_instance" } @@ -365579,7 +365711,7 @@ elf_symbol { name: "usb_put_hcd" is_defined: true symbol_type: FUNCTION - crc: 0xe666ea33 + crc: 0x54fbdad3 type_id: 0x19c6594b full_name: "usb_put_hcd" } @@ -365588,7 +365720,7 @@ elf_symbol { name: "usb_put_intf" is_defined: true symbol_type: FUNCTION - crc: 0xd8a31e81 + crc: 0xb50e5781 type_id: 0x18d9f669 full_name: "usb_put_intf" } @@ -365597,7 +365729,7 @@ elf_symbol { name: "usb_queue_reset_device" is_defined: true symbol_type: FUNCTION - crc: 0xca5214cb + crc: 0x0662e923 type_id: 0x18d9f669 full_name: "usb_queue_reset_device" } @@ -365606,7 +365738,7 @@ elf_symbol { name: "usb_register_driver" is_defined: true symbol_type: FUNCTION - crc: 0x62cb069b + crc: 0xd7ff55df type_id: 0x92855f9f full_name: "usb_register_driver" } @@ -365624,7 +365756,7 @@ elf_symbol { name: "usb_remove_hcd" is_defined: true symbol_type: FUNCTION - crc: 0x92bff057 + crc: 0xf72e9c5a type_id: 0x19c6594b full_name: "usb_remove_hcd" } @@ -365633,7 +365765,7 @@ elf_symbol { name: "usb_remove_phy" is_defined: true symbol_type: FUNCTION - crc: 0xbb91c81f + crc: 0x7760daf8 type_id: 0x11e8f961 full_name: "usb_remove_phy" } @@ -365642,7 +365774,7 @@ elf_symbol { name: "usb_reset_device" is_defined: true symbol_type: FUNCTION - crc: 0xff4ff2c2 + crc: 0xf01a6693 type_id: 0x9edfdadc full_name: "usb_reset_device" } @@ -365651,7 +365783,7 @@ elf_symbol { name: "usb_role_switch_find_by_fwnode" is_defined: true symbol_type: FUNCTION - crc: 0xab1adeb6 + crc: 0xba52f3ae type_id: 0x8a993822 full_name: "usb_role_switch_find_by_fwnode" } @@ -365678,7 +365810,7 @@ elf_symbol { name: "usb_role_switch_register" is_defined: true symbol_type: FUNCTION - crc: 0x56675167 + crc: 0x0cd42adf type_id: 0x85551253 full_name: "usb_role_switch_register" } @@ -365705,7 +365837,7 @@ elf_symbol { name: "usb_root_hub_lost_power" is_defined: true symbol_type: FUNCTION - crc: 0xa071f1bc + crc: 0xf5957988 type_id: 0x13c76860 full_name: "usb_root_hub_lost_power" } @@ -365723,7 +365855,7 @@ elf_symbol { name: "usb_serial_claim_interface" is_defined: true symbol_type: FUNCTION - crc: 0x4fe3b1e6 + crc: 0x879f5103 type_id: 0x9aa5384e full_name: "usb_serial_claim_interface" } @@ -365732,7 +365864,7 @@ elf_symbol { name: "usb_serial_deregister_drivers" is_defined: true symbol_type: FUNCTION - crc: 0xcbbde7c5 + crc: 0xf912cb69 type_id: 0x1f2cb682 full_name: "usb_serial_deregister_drivers" } @@ -365741,7 +365873,7 @@ elf_symbol { name: "usb_serial_generic_chars_in_buffer" is_defined: true symbol_type: FUNCTION - crc: 0xe048e525 + crc: 0xcd0d3a3c type_id: 0xc564dee2 full_name: "usb_serial_generic_chars_in_buffer" } @@ -365750,7 +365882,7 @@ elf_symbol { name: "usb_serial_generic_close" is_defined: true symbol_type: FUNCTION - crc: 0x49b05611 + crc: 0xdaf533b6 type_id: 0x181d9d22 full_name: "usb_serial_generic_close" } @@ -365759,7 +365891,7 @@ elf_symbol { name: "usb_serial_generic_get_icount" is_defined: true symbol_type: FUNCTION - crc: 0x8d5748c6 + crc: 0x6cc92cba type_id: 0x962949a5 full_name: "usb_serial_generic_get_icount" } @@ -365768,7 +365900,7 @@ elf_symbol { name: "usb_serial_generic_open" is_defined: true symbol_type: FUNCTION - crc: 0xcd952601 + crc: 0x0863d0d9 type_id: 0x96b71ffd full_name: "usb_serial_generic_open" } @@ -365777,7 +365909,7 @@ elf_symbol { name: "usb_serial_generic_process_read_urb" is_defined: true symbol_type: FUNCTION - crc: 0xf32af36e + crc: 0xe3625ce1 type_id: 0x10d459f4 full_name: "usb_serial_generic_process_read_urb" } @@ -365786,7 +365918,7 @@ elf_symbol { name: "usb_serial_generic_read_bulk_callback" is_defined: true symbol_type: FUNCTION - crc: 0xdfe73174 + crc: 0xf73ecd5f type_id: 0x10d459f4 full_name: "usb_serial_generic_read_bulk_callback" } @@ -365795,7 +365927,7 @@ elf_symbol { name: "usb_serial_generic_resume" is_defined: true symbol_type: FUNCTION - crc: 0xdcfb6b14 + crc: 0xf698ce6f type_id: 0x9a212231 full_name: "usb_serial_generic_resume" } @@ -365804,7 +365936,7 @@ elf_symbol { name: "usb_serial_generic_submit_read_urbs" is_defined: true symbol_type: FUNCTION - crc: 0x5c29a600 + crc: 0x7d2440d4 type_id: 0x96c3b4e1 full_name: "usb_serial_generic_submit_read_urbs" } @@ -365813,7 +365945,7 @@ elf_symbol { name: "usb_serial_generic_throttle" is_defined: true symbol_type: FUNCTION - crc: 0x2664e8d9 + crc: 0xedd97406 type_id: 0x1b27f18a full_name: "usb_serial_generic_throttle" } @@ -365822,7 +365954,7 @@ elf_symbol { name: "usb_serial_generic_tiocmiwait" is_defined: true symbol_type: FUNCTION - crc: 0x04ed7f92 + crc: 0xb5ed95cd type_id: 0x96f296a4 full_name: "usb_serial_generic_tiocmiwait" } @@ -365831,7 +365963,7 @@ elf_symbol { name: "usb_serial_generic_unthrottle" is_defined: true symbol_type: FUNCTION - crc: 0x94ac630c + crc: 0x985989bf type_id: 0x1b27f18a full_name: "usb_serial_generic_unthrottle" } @@ -365840,7 +365972,7 @@ elf_symbol { name: "usb_serial_generic_wait_until_sent" is_defined: true symbol_type: FUNCTION - crc: 0xee9b6b5f + crc: 0x151af980 type_id: 0x18d7c9fc full_name: "usb_serial_generic_wait_until_sent" } @@ -365849,7 +365981,7 @@ elf_symbol { name: "usb_serial_generic_write" is_defined: true symbol_type: FUNCTION - crc: 0x59ace215 + crc: 0x9ed2bdf7 type_id: 0x96b8906b full_name: "usb_serial_generic_write" } @@ -365858,7 +365990,7 @@ elf_symbol { name: "usb_serial_generic_write_bulk_callback" is_defined: true symbol_type: FUNCTION - crc: 0x47b56bb0 + crc: 0x7744b51d type_id: 0x10d459f4 full_name: "usb_serial_generic_write_bulk_callback" } @@ -365867,7 +365999,7 @@ elf_symbol { name: "usb_serial_generic_write_start" is_defined: true symbol_type: FUNCTION - crc: 0x736730f9 + crc: 0x5cce3ee8 type_id: 0x96c3b4e1 full_name: "usb_serial_generic_write_start" } @@ -365876,7 +366008,7 @@ elf_symbol { name: "usb_serial_handle_dcd_change" is_defined: true symbol_type: FUNCTION - crc: 0x554dc5a3 + crc: 0xf83cc794 type_id: 0x18b7067a full_name: "usb_serial_handle_dcd_change" } @@ -365885,7 +366017,7 @@ elf_symbol { name: "usb_serial_port_softint" is_defined: true symbol_type: FUNCTION - crc: 0x5e04de91 + crc: 0xd9c3f028 type_id: 0x181d9d22 full_name: "usb_serial_port_softint" } @@ -365894,7 +366026,7 @@ elf_symbol { name: "usb_serial_register_drivers" is_defined: true symbol_type: FUNCTION - crc: 0x1418f605 + crc: 0xaa73f614 type_id: 0x92c247e8 full_name: "usb_serial_register_drivers" } @@ -365903,7 +366035,7 @@ elf_symbol { name: "usb_serial_resume" is_defined: true symbol_type: FUNCTION - crc: 0x0ceda740 + crc: 0xa27a3361 type_id: 0x95c144d5 full_name: "usb_serial_resume" } @@ -365912,7 +366044,7 @@ elf_symbol { name: "usb_serial_suspend" is_defined: true symbol_type: FUNCTION - crc: 0x54a77eed + crc: 0xa2e9e6f1 type_id: 0x96011ad3 full_name: "usb_serial_suspend" } @@ -365921,7 +366053,7 @@ elf_symbol { name: "usb_set_device_state" is_defined: true symbol_type: FUNCTION - crc: 0x5a98b74c + crc: 0x8a96b3a5 type_id: 0x1172892f full_name: "usb_set_device_state" } @@ -365930,7 +366062,7 @@ elf_symbol { name: "usb_set_interface" is_defined: true symbol_type: FUNCTION - crc: 0x649c6cc0 + crc: 0xc682614c type_id: 0x9f5a91a4 full_name: "usb_set_interface" } @@ -365957,7 +366089,7 @@ elf_symbol { name: "usb_store_new_id" is_defined: true symbol_type: FUNCTION - crc: 0x7ddba26f + crc: 0xbc2d3f58 type_id: 0x1fa33567 full_name: "usb_store_new_id" } @@ -365966,7 +366098,7 @@ elf_symbol { name: "usb_string_id" is_defined: true symbol_type: FUNCTION - crc: 0x837c374d + crc: 0x2aebac9a type_id: 0x95c8ff6f full_name: "usb_string_id" } @@ -365975,7 +366107,7 @@ elf_symbol { name: "usb_submit_urb" is_defined: true symbol_type: FUNCTION - crc: 0xd9a1bee1 + crc: 0xa5d9812c type_id: 0x9e0a7037 full_name: "usb_submit_urb" } @@ -365984,7 +366116,7 @@ elf_symbol { name: "usb_unanchor_urb" is_defined: true symbol_type: FUNCTION - crc: 0x0b81c3da + crc: 0x9511a379 type_id: 0x10d459f4 full_name: "usb_unanchor_urb" } @@ -365993,7 +366125,7 @@ elf_symbol { name: "usb_unpoison_urb" is_defined: true symbol_type: FUNCTION - crc: 0x8ddd8f1c + crc: 0x1a8fb1a9 type_id: 0x10d459f4 full_name: "usb_unpoison_urb" } @@ -366011,7 +366143,7 @@ elf_symbol { name: "usbnet_get_endpoints" is_defined: true symbol_type: FUNCTION - crc: 0x32379fe3 + crc: 0x764df304 type_id: 0x9e768332 full_name: "usbnet_get_endpoints" } @@ -366020,7 +366152,7 @@ elf_symbol { name: "usbnet_link_change" is_defined: true symbol_type: FUNCTION - crc: 0x0b6db854 + crc: 0xd4fec867 type_id: 0x12448959 full_name: "usbnet_link_change" } @@ -366065,7 +366197,7 @@ elf_symbol { name: "v4l2_compat_ioctl32" is_defined: true symbol_type: FUNCTION - crc: 0xd5c049aa + crc: 0x8bddb587 type_id: 0xa00069e0 full_name: "v4l2_compat_ioctl32" } @@ -366074,7 +366206,7 @@ elf_symbol { name: "v4l2_ctrl_find" is_defined: true symbol_type: FUNCTION - crc: 0x8c9eac02 + crc: 0x5aec55ab type_id: 0x1db066c6 full_name: "v4l2_ctrl_find" } @@ -366092,7 +366224,7 @@ elf_symbol { name: "v4l2_ctrl_handler_free" is_defined: true symbol_type: FUNCTION - crc: 0xc256c3df + crc: 0x2c70bb4d type_id: 0x10035ee9 full_name: "v4l2_ctrl_handler_free" } @@ -366101,7 +366233,7 @@ elf_symbol { name: "v4l2_ctrl_handler_init_class" is_defined: true symbol_type: FUNCTION - crc: 0xf368ca4c + crc: 0x7177b8b9 type_id: 0x9c0bd092 full_name: "v4l2_ctrl_handler_init_class" } @@ -366110,7 +366242,7 @@ elf_symbol { name: "v4l2_ctrl_handler_setup" is_defined: true symbol_type: FUNCTION - crc: 0x440c9251 + crc: 0xa5f3e19d type_id: 0x9d1bec55 full_name: "v4l2_ctrl_handler_setup" } @@ -366119,7 +366251,7 @@ elf_symbol { name: "v4l2_ctrl_log_status" is_defined: true symbol_type: FUNCTION - crc: 0x4751af64 + crc: 0x20f56171 type_id: 0x9bd88c03 full_name: "v4l2_ctrl_log_status" } @@ -366128,7 +366260,7 @@ elf_symbol { name: "v4l2_ctrl_new_custom" is_defined: true symbol_type: FUNCTION - crc: 0x8111cb50 + crc: 0x260d0ef9 type_id: 0x1e7e66b3 full_name: "v4l2_ctrl_new_custom" } @@ -366137,7 +366269,7 @@ elf_symbol { name: "v4l2_ctrl_new_std" is_defined: true symbol_type: FUNCTION - crc: 0x5132206f + crc: 0xcb256e3c type_id: 0x1e5a0d08 full_name: "v4l2_ctrl_new_std" } @@ -366146,7 +366278,7 @@ elf_symbol { name: "v4l2_ctrl_new_std_compound" is_defined: true symbol_type: FUNCTION - crc: 0xdd58c2a7 + crc: 0xe10e349e type_id: 0x1e5a69e0 full_name: "v4l2_ctrl_new_std_compound" } @@ -366155,7 +366287,7 @@ elf_symbol { name: "v4l2_ctrl_new_std_menu" is_defined: true symbol_type: FUNCTION - crc: 0x26d87f84 + crc: 0xa3bf6405 type_id: 0x1e5a3daa full_name: "v4l2_ctrl_new_std_menu" } @@ -366164,7 +366296,7 @@ elf_symbol { name: "v4l2_ctrl_request_complete" is_defined: true symbol_type: FUNCTION - crc: 0x8a2a0c33 + crc: 0xa5d737e7 type_id: 0x19c56221 full_name: "v4l2_ctrl_request_complete" } @@ -366173,7 +366305,7 @@ elf_symbol { name: "v4l2_ctrl_request_setup" is_defined: true symbol_type: FUNCTION - crc: 0xa1376629 + crc: 0x0ce7bf5d type_id: 0x94ddd09d full_name: "v4l2_ctrl_request_setup" } @@ -366182,7 +366314,7 @@ elf_symbol { name: "v4l2_ctrl_subscribe_event" is_defined: true symbol_type: FUNCTION - crc: 0x6024683c + crc: 0x938de029 type_id: 0x912c9057 full_name: "v4l2_ctrl_subscribe_event" } @@ -366191,7 +366323,7 @@ elf_symbol { name: "v4l2_device_register" is_defined: true symbol_type: FUNCTION - crc: 0xad2f63bd + crc: 0xff294429 type_id: 0x9d0be11c full_name: "v4l2_device_register" } @@ -366200,7 +366332,7 @@ elf_symbol { name: "v4l2_device_register_subdev" is_defined: true symbol_type: FUNCTION - crc: 0xf9b2920e + crc: 0xf8ce67d2 type_id: 0x9c543337 full_name: "v4l2_device_register_subdev" } @@ -366209,7 +366341,7 @@ elf_symbol { name: "v4l2_device_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xfe253d0d + crc: 0x7f60003b type_id: 0x114b9716 full_name: "v4l2_device_unregister" } @@ -366218,7 +366350,7 @@ elf_symbol { name: "v4l2_device_unregister_subdev" is_defined: true symbol_type: FUNCTION - crc: 0x3c6cd7f5 + crc: 0x02fb98e4 type_id: 0x10e93841 full_name: "v4l2_device_unregister_subdev" } @@ -366227,7 +366359,7 @@ elf_symbol { name: "v4l2_event_dequeue" is_defined: true symbol_type: FUNCTION - crc: 0xeafe54e8 + crc: 0x39dcdc3a type_id: 0x91db22a4 full_name: "v4l2_event_dequeue" } @@ -366236,7 +366368,7 @@ elf_symbol { name: "v4l2_event_pending" is_defined: true symbol_type: FUNCTION - crc: 0x163eeead + crc: 0x6c770302 type_id: 0x91e301dd full_name: "v4l2_event_pending" } @@ -366245,7 +366377,7 @@ elf_symbol { name: "v4l2_event_queue" is_defined: true symbol_type: FUNCTION - crc: 0x988e8a84 + crc: 0x8470195b type_id: 0x1014c641 full_name: "v4l2_event_queue" } @@ -366254,7 +366386,7 @@ elf_symbol { name: "v4l2_event_queue_fh" is_defined: true symbol_type: FUNCTION - crc: 0xa4224c64 + crc: 0xbde5382a type_id: 0x1c0f0880 full_name: "v4l2_event_queue_fh" } @@ -366263,7 +366395,7 @@ elf_symbol { name: "v4l2_event_subscribe" is_defined: true symbol_type: FUNCTION - crc: 0x86080891 + crc: 0xf8813382 type_id: 0x913d31b0 full_name: "v4l2_event_subscribe" } @@ -366272,7 +366404,7 @@ elf_symbol { name: "v4l2_event_unsubscribe" is_defined: true symbol_type: FUNCTION - crc: 0x259fe3c8 + crc: 0x150b051a type_id: 0x912c9057 full_name: "v4l2_event_unsubscribe" } @@ -366281,7 +366413,7 @@ elf_symbol { name: "v4l2_fh_add" is_defined: true symbol_type: FUNCTION - crc: 0x75fc7e2b + crc: 0x0e990335 type_id: 0x1cfbb361 full_name: "v4l2_fh_add" } @@ -366290,7 +366422,7 @@ elf_symbol { name: "v4l2_fh_del" is_defined: true symbol_type: FUNCTION - crc: 0x7c1910a8 + crc: 0x782dd1d5 type_id: 0x1cfbb361 full_name: "v4l2_fh_del" } @@ -366299,7 +366431,7 @@ elf_symbol { name: "v4l2_fh_exit" is_defined: true symbol_type: FUNCTION - crc: 0x650b1d81 + crc: 0xff48460e type_id: 0x1cfbb361 full_name: "v4l2_fh_exit" } @@ -366308,7 +366440,7 @@ elf_symbol { name: "v4l2_fh_init" is_defined: true symbol_type: FUNCTION - crc: 0xc64eca7a + crc: 0x45b202b2 type_id: 0x1cfc31a2 full_name: "v4l2_fh_init" } @@ -366317,7 +366449,7 @@ elf_symbol { name: "v4l2_fh_is_singular" is_defined: true symbol_type: FUNCTION - crc: 0x07cd4162 + crc: 0x4964f07a type_id: 0x91e301dd full_name: "v4l2_fh_is_singular" } @@ -366326,7 +366458,7 @@ elf_symbol { name: "v4l2_fh_open" is_defined: true symbol_type: FUNCTION - crc: 0xaea88679 + crc: 0xe289611b type_id: 0x9bba7997 full_name: "v4l2_fh_open" } @@ -366335,7 +366467,7 @@ elf_symbol { name: "v4l2_fh_release" is_defined: true symbol_type: FUNCTION - crc: 0xc1b5b4b0 + crc: 0xc567a1e5 type_id: 0x9bba7997 full_name: "v4l2_fh_release" } @@ -366344,7 +366476,7 @@ elf_symbol { name: "v4l2_i2c_subdev_init" is_defined: true symbol_type: FUNCTION - crc: 0x38904b02 + crc: 0x5dcd6876 type_id: 0x102f3bef full_name: "v4l2_i2c_subdev_init" } @@ -366353,7 +366485,7 @@ elf_symbol { name: "v4l2_m2m_buf_queue" is_defined: true symbol_type: FUNCTION - crc: 0x0a99c731 + crc: 0xc8c3ee3b type_id: 0x1253a5d6 full_name: "v4l2_m2m_buf_queue" } @@ -366362,7 +366494,7 @@ elf_symbol { name: "v4l2_m2m_buf_remove" is_defined: true symbol_type: FUNCTION - crc: 0xe5af3d2a + crc: 0x063fc6e5 type_id: 0x318cc368 full_name: "v4l2_m2m_buf_remove" } @@ -366371,7 +366503,7 @@ elf_symbol { name: "v4l2_m2m_buf_remove_by_buf" is_defined: true symbol_type: FUNCTION - crc: 0x9c16fb6c + crc: 0x143fae8c type_id: 0x127a8e67 full_name: "v4l2_m2m_buf_remove_by_buf" } @@ -366380,7 +366512,7 @@ elf_symbol { name: "v4l2_m2m_buf_remove_by_idx" is_defined: true symbol_type: FUNCTION - crc: 0xb14d9568 + crc: 0x751aac1f type_id: 0x309ad6f0 full_name: "v4l2_m2m_buf_remove_by_idx" } @@ -366389,7 +366521,7 @@ elf_symbol { name: "v4l2_m2m_ctx_init" is_defined: true symbol_type: FUNCTION - crc: 0x226eb9e7 + crc: 0xa9bcf5ab type_id: 0x3aa9b2fb full_name: "v4l2_m2m_ctx_init" } @@ -366398,7 +366530,7 @@ elf_symbol { name: "v4l2_m2m_ctx_release" is_defined: true symbol_type: FUNCTION - crc: 0x7a35cf5c + crc: 0x706a1692 type_id: 0x128e4140 full_name: "v4l2_m2m_ctx_release" } @@ -366407,7 +366539,7 @@ elf_symbol { name: "v4l2_m2m_fop_mmap" is_defined: true symbol_type: FUNCTION - crc: 0x9d509233 + crc: 0x11df779e type_id: 0x9b923492 full_name: "v4l2_m2m_fop_mmap" } @@ -366416,7 +366548,7 @@ elf_symbol { name: "v4l2_m2m_fop_poll" is_defined: true symbol_type: FUNCTION - crc: 0x66dccc11 + crc: 0x4d921f68 type_id: 0x25ad187d full_name: "v4l2_m2m_fop_poll" } @@ -366434,7 +366566,7 @@ elf_symbol { name: "v4l2_m2m_get_vq" is_defined: true symbol_type: FUNCTION - crc: 0x7c28833d + crc: 0xb6686774 type_id: 0xdbd3d7da full_name: "v4l2_m2m_get_vq" } @@ -366452,7 +366584,7 @@ elf_symbol { name: "v4l2_m2m_ioctl_create_bufs" is_defined: true symbol_type: FUNCTION - crc: 0xb5f3d6b5 + crc: 0x7a96e595 type_id: 0x9bd21a8b full_name: "v4l2_m2m_ioctl_create_bufs" } @@ -366461,7 +366593,7 @@ elf_symbol { name: "v4l2_m2m_ioctl_dqbuf" is_defined: true symbol_type: FUNCTION - crc: 0x41f0f5bc + crc: 0x20e09473 type_id: 0x9bdfa419 full_name: "v4l2_m2m_ioctl_dqbuf" } @@ -366470,7 +366602,7 @@ elf_symbol { name: "v4l2_m2m_ioctl_expbuf" is_defined: true symbol_type: FUNCTION - crc: 0x4f12ae8f + crc: 0x26a16db0 type_id: 0x9bd4409d full_name: "v4l2_m2m_ioctl_expbuf" } @@ -366479,7 +366611,7 @@ elf_symbol { name: "v4l2_m2m_ioctl_prepare_buf" is_defined: true symbol_type: FUNCTION - crc: 0xbf8734fa + crc: 0x2f15b520 type_id: 0x9bdfa419 full_name: "v4l2_m2m_ioctl_prepare_buf" } @@ -366488,7 +366620,7 @@ elf_symbol { name: "v4l2_m2m_ioctl_qbuf" is_defined: true symbol_type: FUNCTION - crc: 0xe0e13b92 + crc: 0xf90fa2dc type_id: 0x9bdfa419 full_name: "v4l2_m2m_ioctl_qbuf" } @@ -366497,7 +366629,7 @@ elf_symbol { name: "v4l2_m2m_ioctl_querybuf" is_defined: true symbol_type: FUNCTION - crc: 0x749aeef7 + crc: 0x3b8f7449 type_id: 0x9bdfa419 full_name: "v4l2_m2m_ioctl_querybuf" } @@ -366506,7 +366638,7 @@ elf_symbol { name: "v4l2_m2m_ioctl_reqbufs" is_defined: true symbol_type: FUNCTION - crc: 0xbb9d4d8d + crc: 0x5731e8e9 type_id: 0x9bde0e00 full_name: "v4l2_m2m_ioctl_reqbufs" } @@ -366515,7 +366647,7 @@ elf_symbol { name: "v4l2_m2m_ioctl_streamoff" is_defined: true symbol_type: FUNCTION - crc: 0x0e639bd1 + crc: 0xfe724174 type_id: 0x9bc4d75d full_name: "v4l2_m2m_ioctl_streamoff" } @@ -366524,7 +366656,7 @@ elf_symbol { name: "v4l2_m2m_ioctl_streamon" is_defined: true symbol_type: FUNCTION - crc: 0x053456b4 + crc: 0x8ac0c297 type_id: 0x9bc4d75d full_name: "v4l2_m2m_ioctl_streamon" } @@ -366533,7 +366665,7 @@ elf_symbol { name: "v4l2_m2m_ioctl_try_decoder_cmd" is_defined: true symbol_type: FUNCTION - crc: 0x7b97f8b4 + crc: 0x817efb10 type_id: 0x9bdd631f full_name: "v4l2_m2m_ioctl_try_decoder_cmd" } @@ -366542,7 +366674,7 @@ elf_symbol { name: "v4l2_m2m_ioctl_try_encoder_cmd" is_defined: true symbol_type: FUNCTION - crc: 0xb0d6bca9 + crc: 0xe95f49ea type_id: 0x9bd829a3 full_name: "v4l2_m2m_ioctl_try_encoder_cmd" } @@ -366551,7 +366683,7 @@ elf_symbol { name: "v4l2_m2m_job_finish" is_defined: true symbol_type: FUNCTION - crc: 0xcca472cb + crc: 0x596f8b9f type_id: 0x12eb3fc9 full_name: "v4l2_m2m_job_finish" } @@ -366560,7 +366692,7 @@ elf_symbol { name: "v4l2_m2m_next_buf" is_defined: true symbol_type: FUNCTION - crc: 0x06008c07 + crc: 0x4fac4c15 type_id: 0x318cc368 full_name: "v4l2_m2m_next_buf" } @@ -366569,7 +366701,7 @@ elf_symbol { name: "v4l2_m2m_qbuf" is_defined: true symbol_type: FUNCTION - crc: 0x227144b6 + crc: 0xf85fd7dd type_id: 0x9b9c3080 full_name: "v4l2_m2m_qbuf" } @@ -366578,7 +366710,7 @@ elf_symbol { name: "v4l2_m2m_register_media_controller" is_defined: true symbol_type: FUNCTION - crc: 0x0ee41284 + crc: 0xa6d829e5 type_id: 0x9fcca68f full_name: "v4l2_m2m_register_media_controller" } @@ -366596,7 +366728,7 @@ elf_symbol { name: "v4l2_m2m_request_queue" is_defined: true symbol_type: FUNCTION - crc: 0x9e926936 + crc: 0xae17600d type_id: 0x19ccd2d6 full_name: "v4l2_m2m_request_queue" } @@ -366614,7 +366746,7 @@ elf_symbol { name: "v4l2_s_ctrl" is_defined: true symbol_type: FUNCTION - crc: 0xbb7e24a6 + crc: 0xcb7e4be0 type_id: 0x91e7fef3 full_name: "v4l2_s_ctrl" } @@ -366623,7 +366755,7 @@ elf_symbol { name: "v4l2_src_change_event_subscribe" is_defined: true symbol_type: FUNCTION - crc: 0xcbac9835 + crc: 0x2811d418 type_id: 0x912c9057 full_name: "v4l2_src_change_event_subscribe" } @@ -366632,7 +366764,7 @@ elf_symbol { name: "v4l2_subdev_call_wrappers" is_defined: true symbol_type: OBJECT - crc: 0xe02a7fc2 + crc: 0x215479ae type_id: 0xd3e2f5cd full_name: "v4l2_subdev_call_wrappers" } @@ -366641,7 +366773,7 @@ elf_symbol { name: "v4l2_subdev_init" is_defined: true symbol_type: FUNCTION - crc: 0x9ac8b64b + crc: 0x67897a25 type_id: 0x10109a52 full_name: "v4l2_subdev_init" } @@ -366650,7 +366782,7 @@ elf_symbol { name: "vb2_buffer_done" is_defined: true symbol_type: FUNCTION - crc: 0x293b1f32 + crc: 0xdb415a06 type_id: 0x1b1de99f full_name: "vb2_buffer_done" } @@ -366659,7 +366791,7 @@ elf_symbol { name: "vb2_create_bufs" is_defined: true symbol_type: FUNCTION - crc: 0x2b64dfc4 + crc: 0xc7bf8350 type_id: 0x9b8acd5a full_name: "vb2_create_bufs" } @@ -366668,7 +366800,7 @@ elf_symbol { name: "vb2_dma_contig_memops" is_defined: true symbol_type: OBJECT - crc: 0xff34fc78 + crc: 0xcf6e1ba0 type_id: 0xe32fa2b6 full_name: "vb2_dma_contig_memops" } @@ -366677,7 +366809,7 @@ elf_symbol { name: "vb2_dma_sg_memops" is_defined: true symbol_type: OBJECT - crc: 0x229d4508 + crc: 0xb6994622 type_id: 0xe32fa2b6 full_name: "vb2_dma_sg_memops" } @@ -366686,7 +366818,7 @@ elf_symbol { name: "vb2_dqbuf" is_defined: true symbol_type: FUNCTION - crc: 0xf64523d2 + crc: 0xb0478ef6 type_id: 0x9b4a7bac full_name: "vb2_dqbuf" } @@ -366695,7 +366827,7 @@ elf_symbol { name: "vb2_fop_mmap" is_defined: true symbol_type: FUNCTION - crc: 0x4f4416be + crc: 0xd0938e55 type_id: 0x9b923492 full_name: "vb2_fop_mmap" } @@ -366704,7 +366836,7 @@ elf_symbol { name: "vb2_fop_poll" is_defined: true symbol_type: FUNCTION - crc: 0x95056152 + crc: 0x24e5b65f type_id: 0x25ad187d full_name: "vb2_fop_poll" } @@ -366713,7 +366845,7 @@ elf_symbol { name: "vb2_fop_read" is_defined: true symbol_type: FUNCTION - crc: 0xc36e1b28 + crc: 0x8277f423 type_id: 0x12e4741f full_name: "vb2_fop_read" } @@ -366722,7 +366854,7 @@ elf_symbol { name: "vb2_fop_release" is_defined: true symbol_type: FUNCTION - crc: 0x14c16d43 + crc: 0x54e5feb9 type_id: 0x9bba7997 full_name: "vb2_fop_release" } @@ -366731,7 +366863,7 @@ elf_symbol { name: "vb2_ioctl_create_bufs" is_defined: true symbol_type: FUNCTION - crc: 0x8333f81e + crc: 0xbb0fe23d type_id: 0x9bd21a8b full_name: "vb2_ioctl_create_bufs" } @@ -366740,7 +366872,7 @@ elf_symbol { name: "vb2_ioctl_dqbuf" is_defined: true symbol_type: FUNCTION - crc: 0xdd6e5a41 + crc: 0x27c634c2 type_id: 0x9bdfa419 full_name: "vb2_ioctl_dqbuf" } @@ -366749,7 +366881,7 @@ elf_symbol { name: "vb2_ioctl_expbuf" is_defined: true symbol_type: FUNCTION - crc: 0x48566af7 + crc: 0x11b95022 type_id: 0x9bd4409d full_name: "vb2_ioctl_expbuf" } @@ -366758,7 +366890,7 @@ elf_symbol { name: "vb2_ioctl_qbuf" is_defined: true symbol_type: FUNCTION - crc: 0x77486f56 + crc: 0xb26b0ad8 type_id: 0x9bdfa419 full_name: "vb2_ioctl_qbuf" } @@ -366767,7 +366899,7 @@ elf_symbol { name: "vb2_ioctl_querybuf" is_defined: true symbol_type: FUNCTION - crc: 0xf7ae108d + crc: 0x8319d97d type_id: 0x9bdfa419 full_name: "vb2_ioctl_querybuf" } @@ -366776,7 +366908,7 @@ elf_symbol { name: "vb2_ioctl_reqbufs" is_defined: true symbol_type: FUNCTION - crc: 0x07930bf2 + crc: 0xd35713f9 type_id: 0x9bde0e00 full_name: "vb2_ioctl_reqbufs" } @@ -366785,7 +366917,7 @@ elf_symbol { name: "vb2_ioctl_streamoff" is_defined: true symbol_type: FUNCTION - crc: 0xe282d0bd + crc: 0xe0afa0b7 type_id: 0x9bc4d75d full_name: "vb2_ioctl_streamoff" } @@ -366794,7 +366926,7 @@ elf_symbol { name: "vb2_ioctl_streamon" is_defined: true symbol_type: FUNCTION - crc: 0x878d1c75 + crc: 0x56d36905 type_id: 0x9bc4d75d full_name: "vb2_ioctl_streamon" } @@ -366803,7 +366935,7 @@ elf_symbol { name: "vb2_mmap" is_defined: true symbol_type: FUNCTION - crc: 0x560c397c + crc: 0x7a00b07d type_id: 0x9b0be8d8 full_name: "vb2_mmap" } @@ -366812,7 +366944,7 @@ elf_symbol { name: "vb2_ops_wait_finish" is_defined: true symbol_type: FUNCTION - crc: 0x80ddc6fa + crc: 0x325d10d4 type_id: 0x163b1761 full_name: "vb2_ops_wait_finish" } @@ -366821,7 +366953,7 @@ elf_symbol { name: "vb2_ops_wait_prepare" is_defined: true symbol_type: FUNCTION - crc: 0x07c72c24 + crc: 0x8b796bbc type_id: 0x163b1761 full_name: "vb2_ops_wait_prepare" } @@ -366830,7 +366962,7 @@ elf_symbol { name: "vb2_plane_cookie" is_defined: true symbol_type: FUNCTION - crc: 0x0aba22e4 + crc: 0x82997804 type_id: 0x5cabb760 full_name: "vb2_plane_cookie" } @@ -366839,7 +366971,7 @@ elf_symbol { name: "vb2_plane_vaddr" is_defined: true symbol_type: FUNCTION - crc: 0x56cd8695 + crc: 0xea3a73d4 type_id: 0x5cabb760 full_name: "vb2_plane_vaddr" } @@ -366848,7 +366980,7 @@ elf_symbol { name: "vb2_poll" is_defined: true symbol_type: FUNCTION - crc: 0x33930f3a + crc: 0x850773a3 type_id: 0x25fe2d8e full_name: "vb2_poll" } @@ -366857,7 +366989,7 @@ elf_symbol { name: "vb2_prepare_buf" is_defined: true symbol_type: FUNCTION - crc: 0x9a481c5f + crc: 0xdb21c9f9 type_id: 0x9b7c03b3 full_name: "vb2_prepare_buf" } @@ -366866,7 +366998,7 @@ elf_symbol { name: "vb2_qbuf" is_defined: true symbol_type: FUNCTION - crc: 0xd31d81c3 + crc: 0xccc02d31 type_id: 0x9b7c03b3 full_name: "vb2_qbuf" } @@ -366875,7 +367007,7 @@ elf_symbol { name: "vb2_querybuf" is_defined: true symbol_type: FUNCTION - crc: 0xe52ea878 + crc: 0xf1b22572 type_id: 0x9b51247b full_name: "vb2_querybuf" } @@ -366884,7 +367016,7 @@ elf_symbol { name: "vb2_queue_error" is_defined: true symbol_type: FUNCTION - crc: 0xc3ba407e + crc: 0xd116aa4d type_id: 0x163b1761 full_name: "vb2_queue_error" } @@ -366893,7 +367025,7 @@ elf_symbol { name: "vb2_queue_init" is_defined: true symbol_type: FUNCTION - crc: 0x6a9483c8 + crc: 0x707d3282 type_id: 0x9b23a5dd full_name: "vb2_queue_init" } @@ -366902,7 +367034,7 @@ elf_symbol { name: "vb2_queue_release" is_defined: true symbol_type: FUNCTION - crc: 0x46cfdc29 + crc: 0x4363680d type_id: 0x163b1761 full_name: "vb2_queue_release" } @@ -366911,7 +367043,7 @@ elf_symbol { name: "vb2_reqbufs" is_defined: true symbol_type: FUNCTION - crc: 0x79c96ba5 + crc: 0xb8ae574c type_id: 0x9b4b85e0 full_name: "vb2_reqbufs" } @@ -366920,7 +367052,7 @@ elf_symbol { name: "vb2_request_validate" is_defined: true symbol_type: FUNCTION - crc: 0x23510ce1 + crc: 0x893625d3 type_id: 0x94d4606a full_name: "vb2_request_validate" } @@ -366929,7 +367061,7 @@ elf_symbol { name: "vb2_streamoff" is_defined: true symbol_type: FUNCTION - crc: 0x069adf7e + crc: 0x7860b3a1 type_id: 0x9ae61038 full_name: "vb2_streamoff" } @@ -366938,7 +367070,7 @@ elf_symbol { name: "vb2_streamon" is_defined: true symbol_type: FUNCTION - crc: 0xb751fc24 + crc: 0xc7a6a0cd type_id: 0x9ae61038 full_name: "vb2_streamon" } @@ -366947,7 +367079,7 @@ elf_symbol { name: "vb2_vmalloc_memops" is_defined: true symbol_type: OBJECT - crc: 0x77246f4a + crc: 0xac0ba29f type_id: 0xe32fa2b6 full_name: "vb2_vmalloc_memops" } @@ -366956,7 +367088,7 @@ elf_symbol { name: "vb2_wait_for_all_buffers" is_defined: true symbol_type: FUNCTION - crc: 0xa1c27f5c + crc: 0xf57a9a7d type_id: 0x9b23a5dd full_name: "vb2_wait_for_all_buffers" } @@ -366965,7 +367097,7 @@ elf_symbol { name: "vchan_dma_desc_free_list" is_defined: true symbol_type: FUNCTION - crc: 0x75439f96 + crc: 0x4c208291 type_id: 0x1aebcc30 full_name: "vchan_dma_desc_free_list" } @@ -366974,7 +367106,7 @@ elf_symbol { name: "vchan_find_desc" is_defined: true symbol_type: FUNCTION - crc: 0xf1f5c877 + crc: 0x7063197b type_id: 0xca318720 full_name: "vchan_find_desc" } @@ -366983,7 +367115,7 @@ elf_symbol { name: "vchan_init" is_defined: true symbol_type: FUNCTION - crc: 0x95dfb029 + crc: 0x97ccb0b4 type_id: 0x1aad5bf3 full_name: "vchan_init" } @@ -366992,7 +367124,7 @@ elf_symbol { name: "vchan_tx_desc_free" is_defined: true symbol_type: FUNCTION - crc: 0x44214beb + crc: 0xaf354214 type_id: 0x96225525 full_name: "vchan_tx_desc_free" } @@ -367001,7 +367133,7 @@ elf_symbol { name: "vchan_tx_submit" is_defined: true symbol_type: FUNCTION - crc: 0xecc8f978 + crc: 0x215884b9 type_id: 0x533c8264 full_name: "vchan_tx_submit" } @@ -367028,7 +367160,7 @@ elf_symbol { name: "vfs_fsync_range" is_defined: true symbol_type: FUNCTION - crc: 0x6fe41bb4 + crc: 0x3ae775b6 type_id: 0x9b2c93fd full_name: "vfs_fsync_range" } @@ -367037,7 +367169,7 @@ elf_symbol { name: "vhost_add_used_and_signal" is_defined: true symbol_type: FUNCTION - crc: 0xe0b134e3 + crc: 0x54f68c6b type_id: 0x1eca4382 full_name: "vhost_add_used_and_signal" } @@ -367046,7 +367178,7 @@ elf_symbol { name: "vhost_dev_check_owner" is_defined: true symbol_type: FUNCTION - crc: 0xe517c080 + crc: 0xd0b1bd49 type_id: 0xa972e03e full_name: "vhost_dev_check_owner" } @@ -367055,7 +367187,7 @@ elf_symbol { name: "vhost_dev_cleanup" is_defined: true symbol_type: FUNCTION - crc: 0x011566fc + crc: 0xdcd8cac5 type_id: 0x1eca8a34 full_name: "vhost_dev_cleanup" } @@ -367064,7 +367196,7 @@ elf_symbol { name: "vhost_dev_init" is_defined: true symbol_type: FUNCTION - crc: 0xee3a20da + crc: 0x83169926 type_id: 0x1efc8b31 full_name: "vhost_dev_init" } @@ -367073,7 +367205,7 @@ elf_symbol { name: "vhost_dev_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0xd7d75fe2 + crc: 0x94d63d8b type_id: 0xa862daff full_name: "vhost_dev_ioctl" } @@ -367082,7 +367214,7 @@ elf_symbol { name: "vhost_dev_stop" is_defined: true symbol_type: FUNCTION - crc: 0x735f0508 + crc: 0x91dcbb03 type_id: 0x1eca8a34 full_name: "vhost_dev_stop" } @@ -367091,7 +367223,7 @@ elf_symbol { name: "vhost_disable_notify" is_defined: true symbol_type: FUNCTION - crc: 0x8af579a2 + crc: 0xefdd957e type_id: 0x1edabe58 full_name: "vhost_disable_notify" } @@ -367100,7 +367232,7 @@ elf_symbol { name: "vhost_enable_notify" is_defined: true symbol_type: FUNCTION - crc: 0x1832ce06 + crc: 0xfae4aab2 type_id: 0xf0e6b4cf full_name: "vhost_enable_notify" } @@ -367109,7 +367241,7 @@ elf_symbol { name: "vhost_get_vq_desc" is_defined: true symbol_type: FUNCTION - crc: 0xf8c4a180 + crc: 0x5bbf54f9 type_id: 0x9c8bc249 full_name: "vhost_get_vq_desc" } @@ -367118,7 +367250,7 @@ elf_symbol { name: "vhost_log_access_ok" is_defined: true symbol_type: FUNCTION - crc: 0x00349c24 + crc: 0x26531484 type_id: 0xf0f680a3 full_name: "vhost_log_access_ok" } @@ -367127,7 +367259,7 @@ elf_symbol { name: "vhost_vq_access_ok" is_defined: true symbol_type: FUNCTION - crc: 0x3ffae9e5 + crc: 0x0c32ec4b type_id: 0xffa71dc4 full_name: "vhost_vq_access_ok" } @@ -367136,7 +367268,7 @@ elf_symbol { name: "vhost_vq_init_access" is_defined: true symbol_type: FUNCTION - crc: 0xd852e595 + crc: 0x1c139b45 type_id: 0x9c83a5ef full_name: "vhost_vq_init_access" } @@ -367145,7 +367277,7 @@ elf_symbol { name: "vhost_vring_ioctl" is_defined: true symbol_type: FUNCTION - crc: 0xf6377a08 + crc: 0xc00762bf type_id: 0xa862daff full_name: "vhost_vring_ioctl" } @@ -367154,7 +367286,7 @@ elf_symbol { name: "video_devdata" is_defined: true symbol_type: FUNCTION - crc: 0x0935c304 + crc: 0x8985d447 type_id: 0x969da51f full_name: "video_devdata" } @@ -367163,7 +367295,7 @@ elf_symbol { name: "video_device_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x8d44c81f + crc: 0x6fbd6e51 type_id: 0x90a73fa7 full_name: "video_device_alloc" } @@ -367172,7 +367304,7 @@ elf_symbol { name: "video_device_release" is_defined: true symbol_type: FUNCTION - crc: 0x0e858295 + crc: 0xe0664605 type_id: 0x10e07da0 full_name: "video_device_release" } @@ -367181,7 +367313,7 @@ elf_symbol { name: "video_device_release_empty" is_defined: true symbol_type: FUNCTION - crc: 0x9ed1c3a2 + crc: 0x386670a2 type_id: 0x10e07da0 full_name: "video_device_release_empty" } @@ -367190,7 +367322,7 @@ elf_symbol { name: "video_ioctl2" is_defined: true symbol_type: FUNCTION - crc: 0x8d7e766d + crc: 0x2371b1bb type_id: 0xa00069e0 full_name: "video_ioctl2" } @@ -367199,7 +367331,7 @@ elf_symbol { name: "video_unregister_device" is_defined: true symbol_type: FUNCTION - crc: 0x872ce566 + crc: 0x8bd850d9 type_id: 0x10e07da0 full_name: "video_unregister_device" } @@ -367208,7 +367340,7 @@ elf_symbol { name: "virtio_break_device" is_defined: true symbol_type: FUNCTION - crc: 0x0f3e9958 + crc: 0x11a57b65 type_id: 0x1ad5d81c full_name: "virtio_break_device" } @@ -367217,7 +367349,7 @@ elf_symbol { name: "virtio_check_driver_offered_feature" is_defined: true symbol_type: FUNCTION - crc: 0x47a107c8 + crc: 0x1c24ca2a type_id: 0x1cd13541 full_name: "virtio_check_driver_offered_feature" } @@ -367226,7 +367358,7 @@ elf_symbol { name: "virtio_config_changed" is_defined: true symbol_type: FUNCTION - crc: 0xa0cb54a4 + crc: 0x211751a8 type_id: 0x1ad5d81c full_name: "virtio_config_changed" } @@ -367235,7 +367367,7 @@ elf_symbol { name: "virtio_device_freeze" is_defined: true symbol_type: FUNCTION - crc: 0x35bd4c84 + crc: 0xe845f360 type_id: 0x97cd6aa0 full_name: "virtio_device_freeze" } @@ -367244,7 +367376,7 @@ elf_symbol { name: "virtio_device_restore" is_defined: true symbol_type: FUNCTION - crc: 0x00c92183 + crc: 0x29800e48 type_id: 0x97cd6aa0 full_name: "virtio_device_restore" } @@ -367253,7 +367385,7 @@ elf_symbol { name: "virtio_max_dma_size" is_defined: true symbol_type: FUNCTION - crc: 0x76adbb85 + crc: 0x5e3f026c type_id: 0x9d7240dd full_name: "virtio_max_dma_size" } @@ -367262,7 +367394,7 @@ elf_symbol { name: "virtio_reset_device" is_defined: true symbol_type: FUNCTION - crc: 0xdd750067 + crc: 0x98dd2327 type_id: 0x1ad5d81c full_name: "virtio_reset_device" } @@ -367271,7 +367403,7 @@ elf_symbol { name: "virtio_transport_connect" is_defined: true symbol_type: FUNCTION - crc: 0xf1f59395 + crc: 0xc994c122 type_id: 0x98da7358 full_name: "virtio_transport_connect" } @@ -367280,7 +367412,7 @@ elf_symbol { name: "virtio_transport_deliver_tap_pkt" is_defined: true symbol_type: FUNCTION - crc: 0xc297cb16 + crc: 0x109716ea type_id: 0x10367ad4 full_name: "virtio_transport_deliver_tap_pkt" } @@ -367289,7 +367421,7 @@ elf_symbol { name: "virtio_transport_destruct" is_defined: true symbol_type: FUNCTION - crc: 0xb5759082 + crc: 0x97ce2115 type_id: 0x15c2c1e4 full_name: "virtio_transport_destruct" } @@ -367307,7 +367439,7 @@ elf_symbol { name: "virtio_transport_dgram_bind" is_defined: true symbol_type: FUNCTION - crc: 0x0a93e41c + crc: 0xb6aae9d3 type_id: 0x98e450c7 full_name: "virtio_transport_dgram_bind" } @@ -367316,7 +367448,7 @@ elf_symbol { name: "virtio_transport_dgram_dequeue" is_defined: true symbol_type: FUNCTION - crc: 0xa4f16f3f + crc: 0xa9dfb5c6 type_id: 0x98558c5c full_name: "virtio_transport_dgram_dequeue" } @@ -367325,7 +367457,7 @@ elf_symbol { name: "virtio_transport_dgram_enqueue" is_defined: true symbol_type: FUNCTION - crc: 0x6a0a2b99 + crc: 0xd6eaca74 type_id: 0x98ecb6ff full_name: "virtio_transport_dgram_enqueue" } @@ -367334,7 +367466,7 @@ elf_symbol { name: "virtio_transport_do_socket_init" is_defined: true symbol_type: FUNCTION - crc: 0x47f76492 + crc: 0x00b2c10f type_id: 0x988fda5f full_name: "virtio_transport_do_socket_init" } @@ -367343,7 +367475,7 @@ elf_symbol { name: "virtio_transport_free_pkt" is_defined: true symbol_type: FUNCTION - crc: 0x16a22b22 + crc: 0x90055ad6 type_id: 0x10367ad4 full_name: "virtio_transport_free_pkt" } @@ -367352,7 +367484,7 @@ elf_symbol { name: "virtio_transport_notify_buffer_size" is_defined: true symbol_type: FUNCTION - crc: 0xfba109b9 + crc: 0x9fbef0e8 type_id: 0x157aa231 full_name: "virtio_transport_notify_buffer_size" } @@ -367361,7 +367493,7 @@ elf_symbol { name: "virtio_transport_notify_poll_in" is_defined: true symbol_type: FUNCTION - crc: 0xad755fbf + crc: 0x6546442b type_id: 0x9b0ed502 full_name: "virtio_transport_notify_poll_in" } @@ -367370,7 +367502,7 @@ elf_symbol { name: "virtio_transport_notify_poll_out" is_defined: true symbol_type: FUNCTION - crc: 0x38748ace + crc: 0x20373fbb type_id: 0x9b0ed502 full_name: "virtio_transport_notify_poll_out" } @@ -367379,7 +367511,7 @@ elf_symbol { name: "virtio_transport_notify_recv_init" is_defined: true symbol_type: FUNCTION - crc: 0xa377c391 + crc: 0xeaaa1b9f type_id: 0x9b0fcd09 full_name: "virtio_transport_notify_recv_init" } @@ -367388,7 +367520,7 @@ elf_symbol { name: "virtio_transport_notify_recv_post_dequeue" is_defined: true symbol_type: FUNCTION - crc: 0x24335bdd + crc: 0x4e9f0935 type_id: 0x9b3e6548 full_name: "virtio_transport_notify_recv_post_dequeue" } @@ -367397,7 +367529,7 @@ elf_symbol { name: "virtio_transport_notify_recv_pre_block" is_defined: true symbol_type: FUNCTION - crc: 0x67c6c2a4 + crc: 0x84080654 type_id: 0x9b0fcd09 full_name: "virtio_transport_notify_recv_pre_block" } @@ -367406,7 +367538,7 @@ elf_symbol { name: "virtio_transport_notify_recv_pre_dequeue" is_defined: true symbol_type: FUNCTION - crc: 0xb3bad76a + crc: 0x5570cbb3 type_id: 0x9b0fcd09 full_name: "virtio_transport_notify_recv_pre_dequeue" } @@ -367415,7 +367547,7 @@ elf_symbol { name: "virtio_transport_notify_send_init" is_defined: true symbol_type: FUNCTION - crc: 0x4dce2ebf + crc: 0x0ce2be9e type_id: 0x98573499 full_name: "virtio_transport_notify_send_init" } @@ -367424,7 +367556,7 @@ elf_symbol { name: "virtio_transport_notify_send_post_enqueue" is_defined: true symbol_type: FUNCTION - crc: 0x6ca07205 + crc: 0x607d9f2d type_id: 0x9b859556 full_name: "virtio_transport_notify_send_post_enqueue" } @@ -367433,7 +367565,7 @@ elf_symbol { name: "virtio_transport_notify_send_pre_block" is_defined: true symbol_type: FUNCTION - crc: 0xdc6fb59a + crc: 0xa164e635 type_id: 0x98573499 full_name: "virtio_transport_notify_send_pre_block" } @@ -367442,7 +367574,7 @@ elf_symbol { name: "virtio_transport_notify_send_pre_enqueue" is_defined: true symbol_type: FUNCTION - crc: 0x462b64ce + crc: 0x1f56b01c type_id: 0x98573499 full_name: "virtio_transport_notify_send_pre_enqueue" } @@ -367451,7 +367583,7 @@ elf_symbol { name: "virtio_transport_recv_pkt" is_defined: true symbol_type: FUNCTION - crc: 0xe1367d9a + crc: 0x818d8c91 type_id: 0x1966e93b full_name: "virtio_transport_recv_pkt" } @@ -367460,7 +367592,7 @@ elf_symbol { name: "virtio_transport_release" is_defined: true symbol_type: FUNCTION - crc: 0x2c281adc + crc: 0x60c6ae55 type_id: 0x15c2c1e4 full_name: "virtio_transport_release" } @@ -367469,7 +367601,7 @@ elf_symbol { name: "virtio_transport_seqpacket_dequeue" is_defined: true symbol_type: FUNCTION - crc: 0x6cc08f60 + crc: 0x8e9cfc91 type_id: 0x1101d71f full_name: "virtio_transport_seqpacket_dequeue" } @@ -367478,7 +367610,7 @@ elf_symbol { name: "virtio_transport_seqpacket_enqueue" is_defined: true symbol_type: FUNCTION - crc: 0xaa46275c + crc: 0x05bbc292 type_id: 0x985410df full_name: "virtio_transport_seqpacket_enqueue" } @@ -367487,7 +367619,7 @@ elf_symbol { name: "virtio_transport_seqpacket_has_data" is_defined: true symbol_type: FUNCTION - crc: 0x83a52077 + crc: 0x8e2388b5 type_id: 0x40a2bb15 full_name: "virtio_transport_seqpacket_has_data" } @@ -367496,7 +367628,7 @@ elf_symbol { name: "virtio_transport_shutdown" is_defined: true symbol_type: FUNCTION - crc: 0x2bfa6033 + crc: 0xd54a5b55 type_id: 0x9946f014 full_name: "virtio_transport_shutdown" } @@ -367514,7 +367646,7 @@ elf_symbol { name: "virtio_transport_stream_dequeue" is_defined: true symbol_type: FUNCTION - crc: 0x3a87187d + crc: 0xed29d9b7 type_id: 0x11248ef2 full_name: "virtio_transport_stream_dequeue" } @@ -367523,7 +367655,7 @@ elf_symbol { name: "virtio_transport_stream_enqueue" is_defined: true symbol_type: FUNCTION - crc: 0x61e4a850 + crc: 0xa41c7d27 type_id: 0x11251271 full_name: "virtio_transport_stream_enqueue" } @@ -367532,7 +367664,7 @@ elf_symbol { name: "virtio_transport_stream_has_data" is_defined: true symbol_type: FUNCTION - crc: 0xc37471d5 + crc: 0x0ade75a4 type_id: 0x835e595c full_name: "virtio_transport_stream_has_data" } @@ -367541,7 +367673,7 @@ elf_symbol { name: "virtio_transport_stream_has_space" is_defined: true symbol_type: FUNCTION - crc: 0x15567972 + crc: 0xee4aa2f8 type_id: 0x835e595c full_name: "virtio_transport_stream_has_space" } @@ -367550,7 +367682,7 @@ elf_symbol { name: "virtio_transport_stream_is_active" is_defined: true symbol_type: FUNCTION - crc: 0x7caa412f + crc: 0x1ce26f1c type_id: 0xfbfecb73 full_name: "virtio_transport_stream_is_active" } @@ -367559,7 +367691,7 @@ elf_symbol { name: "virtio_transport_stream_rcvhiwat" is_defined: true symbol_type: FUNCTION - crc: 0x1b42883a + crc: 0xd60ac5bf type_id: 0x5281433c full_name: "virtio_transport_stream_rcvhiwat" } @@ -367568,7 +367700,7 @@ elf_symbol { name: "virtqueue_add_inbuf" is_defined: true symbol_type: FUNCTION - crc: 0x7f9e59c3 + crc: 0xb042f842 type_id: 0x91a842e5 full_name: "virtqueue_add_inbuf" } @@ -367577,7 +367709,7 @@ elf_symbol { name: "virtqueue_add_inbuf_ctx" is_defined: true symbol_type: FUNCTION - crc: 0xc115c07d + crc: 0xde676cca type_id: 0x91a87b65 full_name: "virtqueue_add_inbuf_ctx" } @@ -367586,7 +367718,7 @@ elf_symbol { name: "virtqueue_add_outbuf" is_defined: true symbol_type: FUNCTION - crc: 0xa8141eeb + crc: 0x37d73ea3 type_id: 0x91a842e5 full_name: "virtqueue_add_outbuf" } @@ -367595,7 +367727,7 @@ elf_symbol { name: "virtqueue_add_sgs" is_defined: true symbol_type: FUNCTION - crc: 0xff19c89d + crc: 0x6c7c340b type_id: 0x91d5bf71 full_name: "virtqueue_add_sgs" } @@ -367604,7 +367736,7 @@ elf_symbol { name: "virtqueue_detach_unused_buf" is_defined: true symbol_type: FUNCTION - crc: 0x794f5276 + crc: 0xe7e3cfb6 type_id: 0x5ae81016 full_name: "virtqueue_detach_unused_buf" } @@ -367613,7 +367745,7 @@ elf_symbol { name: "virtqueue_disable_cb" is_defined: true symbol_type: FUNCTION - crc: 0xd4103a32 + crc: 0xdf03cddc type_id: 0x1ce6f074 full_name: "virtqueue_disable_cb" } @@ -367622,7 +367754,7 @@ elf_symbol { name: "virtqueue_disable_dma_api_for_buffers" is_defined: true symbol_type: FUNCTION - crc: 0xd57ee972 + crc: 0x6aa18b9d type_id: 0x1ce6f074 full_name: "virtqueue_disable_dma_api_for_buffers" } @@ -367631,7 +367763,7 @@ elf_symbol { name: "virtqueue_enable_cb" is_defined: true symbol_type: FUNCTION - crc: 0x2b0e84a1 + crc: 0xced72e05 type_id: 0xf2dafae3 full_name: "virtqueue_enable_cb" } @@ -367640,7 +367772,7 @@ elf_symbol { name: "virtqueue_enable_cb_delayed" is_defined: true symbol_type: FUNCTION - crc: 0x05f3b1ec + crc: 0x87efe278 type_id: 0xf2dafae3 full_name: "virtqueue_enable_cb_delayed" } @@ -367649,7 +367781,7 @@ elf_symbol { name: "virtqueue_enable_cb_prepare" is_defined: true symbol_type: FUNCTION - crc: 0x064d3b71 + crc: 0x8f8773fa type_id: 0xc2a5df1c full_name: "virtqueue_enable_cb_prepare" } @@ -367658,7 +367790,7 @@ elf_symbol { name: "virtqueue_get_avail_addr" is_defined: true symbol_type: FUNCTION - crc: 0xc17f7680 + crc: 0x6a623681 type_id: 0xb0635f1b full_name: "virtqueue_get_avail_addr" } @@ -367667,7 +367799,7 @@ elf_symbol { name: "virtqueue_get_buf" is_defined: true symbol_type: FUNCTION - crc: 0xc24c9a30 + crc: 0x1a49c89a type_id: 0x5a87d596 full_name: "virtqueue_get_buf" } @@ -367676,7 +367808,7 @@ elf_symbol { name: "virtqueue_get_buf_ctx" is_defined: true symbol_type: FUNCTION - crc: 0x700bfcee + crc: 0x0ae93203 type_id: 0x5a84fa4e full_name: "virtqueue_get_buf_ctx" } @@ -367685,7 +367817,7 @@ elf_symbol { name: "virtqueue_get_desc_addr" is_defined: true symbol_type: FUNCTION - crc: 0xddaa8569 + crc: 0xd3f0bdd0 type_id: 0xb0635f1b full_name: "virtqueue_get_desc_addr" } @@ -367694,7 +367826,7 @@ elf_symbol { name: "virtqueue_get_used_addr" is_defined: true symbol_type: FUNCTION - crc: 0x0e7c3da4 + crc: 0xd3bc8bb7 type_id: 0xb0635f1b full_name: "virtqueue_get_used_addr" } @@ -367703,7 +367835,7 @@ elf_symbol { name: "virtqueue_get_vring_size" is_defined: true symbol_type: FUNCTION - crc: 0x10c517d1 + crc: 0x6b649625 type_id: 0xc2a5df1c full_name: "virtqueue_get_vring_size" } @@ -367712,7 +367844,7 @@ elf_symbol { name: "virtqueue_is_broken" is_defined: true symbol_type: FUNCTION - crc: 0xeb6b4fa3 + crc: 0x1170817a type_id: 0xf2dafae3 full_name: "virtqueue_is_broken" } @@ -367721,7 +367853,7 @@ elf_symbol { name: "virtqueue_kick" is_defined: true symbol_type: FUNCTION - crc: 0xd2b38a03 + crc: 0xca06e399 type_id: 0xf2dafae3 full_name: "virtqueue_kick" } @@ -367730,7 +367862,7 @@ elf_symbol { name: "virtqueue_kick_prepare" is_defined: true symbol_type: FUNCTION - crc: 0x4d2ba891 + crc: 0xedc0d4df type_id: 0xf2dafae3 full_name: "virtqueue_kick_prepare" } @@ -367739,7 +367871,7 @@ elf_symbol { name: "virtqueue_notify" is_defined: true symbol_type: FUNCTION - crc: 0x17b45f14 + crc: 0x77e84a21 type_id: 0xf2dafae3 full_name: "virtqueue_notify" } @@ -367748,7 +367880,7 @@ elf_symbol { name: "virtqueue_poll" is_defined: true symbol_type: FUNCTION - crc: 0xb5b45acf + crc: 0x7bfa6c75 type_id: 0xf3ccef7b full_name: "virtqueue_poll" } @@ -367757,7 +367889,7 @@ elf_symbol { name: "virtqueue_resize" is_defined: true symbol_type: FUNCTION - crc: 0x6dcc25e7 + crc: 0xfce52f40 type_id: 0x92d90e2a full_name: "virtqueue_resize" } @@ -367766,7 +367898,7 @@ elf_symbol { name: "vlan_dev_vlan_id" is_defined: true symbol_type: FUNCTION - crc: 0x1bcb9b30 + crc: 0x35e645ca type_id: 0x0dcd58a4 full_name: "vlan_dev_vlan_id" } @@ -367775,7 +367907,7 @@ elf_symbol { name: "vlan_filter_drop_vids" is_defined: true symbol_type: FUNCTION - crc: 0xd3a05bf2 + crc: 0x2ca61965 type_id: 0x1e4fc33a full_name: "vlan_filter_drop_vids" } @@ -367784,7 +367916,7 @@ elf_symbol { name: "vlan_filter_push_vids" is_defined: true symbol_type: FUNCTION - crc: 0x223769c5 + crc: 0xa11c59f9 type_id: 0x93577186 full_name: "vlan_filter_push_vids" } @@ -367793,7 +367925,7 @@ elf_symbol { name: "vlan_ioctl_set" is_defined: true symbol_type: FUNCTION - crc: 0x8541e855 + crc: 0x143f5a13 type_id: 0x1bd0f743 full_name: "vlan_ioctl_set" } @@ -367802,7 +367934,7 @@ elf_symbol { name: "vlan_uses_dev" is_defined: true symbol_type: FUNCTION - crc: 0x71738ccd + crc: 0x3359732b type_id: 0xf2422a10 full_name: "vlan_uses_dev" } @@ -367811,7 +367943,7 @@ elf_symbol { name: "vlan_vid_add" is_defined: true symbol_type: FUNCTION - crc: 0xc47fbeec + crc: 0xf75e81de type_id: 0x90db2b2a full_name: "vlan_vid_add" } @@ -367820,7 +367952,7 @@ elf_symbol { name: "vlan_vid_del" is_defined: true symbol_type: FUNCTION - crc: 0x4539e014 + crc: 0x55b333a1 type_id: 0x1dc39996 full_name: "vlan_vid_del" } @@ -367829,7 +367961,7 @@ elf_symbol { name: "vlan_vids_add_by_dev" is_defined: true symbol_type: FUNCTION - crc: 0x64076dd1 + crc: 0x28db2ae7 type_id: 0x91e70ccb full_name: "vlan_vids_add_by_dev" } @@ -367838,7 +367970,7 @@ elf_symbol { name: "vlan_vids_del_by_dev" is_defined: true symbol_type: FUNCTION - crc: 0x857f4f3e + crc: 0xc9f99005 type_id: 0x1cffbe77 full_name: "vlan_vids_del_by_dev" } @@ -367847,7 +367979,7 @@ elf_symbol { name: "vm_event_states" is_defined: true symbol_type: OBJECT - crc: 0x049c0521 + crc: 0xc9153568 type_id: 0x3306692c full_name: "vm_event_states" } @@ -367865,7 +367997,7 @@ elf_symbol { name: "vm_insert_page" is_defined: true symbol_type: FUNCTION - crc: 0x0d1c7e4c + crc: 0x5523914d type_id: 0x9fc8463b full_name: "vm_insert_page" } @@ -367874,7 +368006,7 @@ elf_symbol { name: "vm_iomap_memory" is_defined: true symbol_type: FUNCTION - crc: 0xad14bdda + crc: 0x14b27e4d type_id: 0x9dffa803 full_name: "vm_iomap_memory" } @@ -367883,7 +368015,7 @@ elf_symbol { name: "vm_map_pages" is_defined: true symbol_type: FUNCTION - crc: 0xa818eebf + crc: 0x95fe611d type_id: 0x9f242d9f full_name: "vm_map_pages" } @@ -367892,7 +368024,7 @@ elf_symbol { name: "vm_map_ram" is_defined: true symbol_type: FUNCTION - crc: 0x59d0b54d + crc: 0xc46fe4c6 type_id: 0x555557dd full_name: "vm_map_ram" } @@ -367901,7 +368033,7 @@ elf_symbol { name: "vm_mmap" is_defined: true symbol_type: FUNCTION - crc: 0x632d020b + crc: 0x4002ed38 type_id: 0x37579ee5 full_name: "vm_mmap" } @@ -367964,7 +368096,7 @@ elf_symbol { name: "vmalloc_to_page" is_defined: true symbol_type: FUNCTION - crc: 0x1521a20e + crc: 0x55318077 type_id: 0xb3df35fa full_name: "vmalloc_to_page" } @@ -367991,7 +368123,7 @@ elf_symbol { name: "vmap" is_defined: true symbol_type: FUNCTION - crc: 0x768f7ade + crc: 0x4001f78c type_id: 0x55423178 full_name: "vmap" } @@ -368009,7 +368141,7 @@ elf_symbol { name: "vmf_insert_mixed" is_defined: true symbol_type: FUNCTION - crc: 0xc25b19a8 + crc: 0x943619bf type_id: 0xc057b7a9 full_name: "vmf_insert_mixed" } @@ -368018,7 +368150,7 @@ elf_symbol { name: "vmf_insert_pfn" is_defined: true symbol_type: FUNCTION - crc: 0x8a901ec5 + crc: 0xfddaf513 type_id: 0xc07911ea full_name: "vmf_insert_pfn" } @@ -368027,7 +368159,7 @@ elf_symbol { name: "vmf_insert_pfn_prot" is_defined: true symbol_type: FUNCTION - crc: 0x45c65159 + crc: 0x1429a191 type_id: 0xc07b6222 full_name: "vmf_insert_pfn_prot" } @@ -368054,7 +368186,7 @@ elf_symbol { name: "vring_create_virtqueue" is_defined: true symbol_type: FUNCTION - crc: 0x16c38988 + crc: 0xd4785470 type_id: 0x825faca7 full_name: "vring_create_virtqueue" } @@ -368063,7 +368195,7 @@ elf_symbol { name: "vring_del_virtqueue" is_defined: true symbol_type: FUNCTION - crc: 0xe3287d39 + crc: 0x3f7f3637 type_id: 0x1ce6f074 full_name: "vring_del_virtqueue" } @@ -368081,7 +368213,7 @@ elf_symbol { name: "vring_new_virtqueue" is_defined: true symbol_type: FUNCTION - crc: 0xaf3cb81a + crc: 0xc31ee7a6 type_id: 0x825facba full_name: "vring_new_virtqueue" } @@ -368090,7 +368222,7 @@ elf_symbol { name: "vring_transport_features" is_defined: true symbol_type: FUNCTION - crc: 0x39df75a7 + crc: 0xf30372cf type_id: 0x1ad5d81c full_name: "vring_transport_features" } @@ -368117,7 +368249,7 @@ elf_symbol { name: "vsock_core_register" is_defined: true symbol_type: FUNCTION - crc: 0x8ff1dd11 + crc: 0x34541e1f type_id: 0x931e2c91 full_name: "vsock_core_register" } @@ -368126,7 +368258,7 @@ elf_symbol { name: "vsock_core_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xdbad979d + crc: 0xfed95cb9 type_id: 0x1f9a1d61 full_name: "vsock_core_unregister" } @@ -368135,7 +368267,7 @@ elf_symbol { name: "vsock_for_each_connected_socket" is_defined: true symbol_type: FUNCTION - crc: 0xc925340c + crc: 0x091cd813 type_id: 0x139ca744 full_name: "vsock_for_each_connected_socket" } @@ -368279,7 +368411,7 @@ elf_symbol { name: "wake_up_process" is_defined: true symbol_type: FUNCTION - crc: 0x3730943a + crc: 0x6a3db7a5 type_id: 0x9ac6895a full_name: "wake_up_process" } @@ -368297,7 +368429,7 @@ elf_symbol { name: "wakeup_source_add" is_defined: true symbol_type: FUNCTION - crc: 0x48e95e30 + crc: 0x2a318742 type_id: 0x10229585 full_name: "wakeup_source_add" } @@ -368306,7 +368438,7 @@ elf_symbol { name: "wakeup_source_create" is_defined: true symbol_type: FUNCTION - crc: 0x82684b0b + crc: 0x30ca9432 type_id: 0xd94d3717 full_name: "wakeup_source_create" } @@ -368315,7 +368447,7 @@ elf_symbol { name: "wakeup_source_destroy" is_defined: true symbol_type: FUNCTION - crc: 0x1a2ee073 + crc: 0x82da9f5b type_id: 0x10229585 full_name: "wakeup_source_destroy" } @@ -368324,7 +368456,7 @@ elf_symbol { name: "wakeup_source_register" is_defined: true symbol_type: FUNCTION - crc: 0x1373e6fe + crc: 0x378aac02 type_id: 0xd6a766de full_name: "wakeup_source_register" } @@ -368333,7 +368465,7 @@ elf_symbol { name: "wakeup_source_remove" is_defined: true symbol_type: FUNCTION - crc: 0xdd2ec6d3 + crc: 0xfca19a79 type_id: 0x10229585 full_name: "wakeup_source_remove" } @@ -368342,7 +368474,7 @@ elf_symbol { name: "wakeup_source_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x84ba1ea0 + crc: 0x8de0e675 type_id: 0x10229585 full_name: "wakeup_source_unregister" } @@ -368369,7 +368501,7 @@ elf_symbol { name: "wakeup_sources_walk_next" is_defined: true symbol_type: FUNCTION - crc: 0xbd27af8b + crc: 0xa51d3ee9 type_id: 0xd673de47 full_name: "wakeup_sources_walk_next" } @@ -368378,7 +368510,7 @@ elf_symbol { name: "wakeup_sources_walk_start" is_defined: true symbol_type: FUNCTION - crc: 0x51c507ec + crc: 0x189ae6e4 type_id: 0xd6c91a51 full_name: "wakeup_sources_walk_start" } @@ -368387,7 +368519,7 @@ elf_symbol { name: "watchdog_init_timeout" is_defined: true symbol_type: FUNCTION - crc: 0x1d275056 + crc: 0xcda38d8b type_id: 0x982fb6c1 full_name: "watchdog_init_timeout" } @@ -368396,7 +368528,7 @@ elf_symbol { name: "watchdog_register_device" is_defined: true symbol_type: FUNCTION - crc: 0x9bb13c53 + crc: 0x3d3cf11a type_id: 0x99393567 full_name: "watchdog_register_device" } @@ -368405,7 +368537,7 @@ elf_symbol { name: "watchdog_set_restart_priority" is_defined: true symbol_type: FUNCTION - crc: 0xbde3899f + crc: 0x4fe7d057 type_id: 0x15bd0497 full_name: "watchdog_set_restart_priority" } @@ -368414,7 +368546,7 @@ elf_symbol { name: "watchdog_unregister_device" is_defined: true symbol_type: FUNCTION - crc: 0x35b51267 + crc: 0x0cb437a5 type_id: 0x142187db full_name: "watchdog_unregister_device" } @@ -368423,7 +368555,7 @@ elf_symbol { name: "wdev_chandef" is_defined: true symbol_type: FUNCTION - crc: 0xedc2f57d + crc: 0x40d95b3d type_id: 0x99aa79c0 full_name: "wdev_chandef" } @@ -368432,7 +368564,7 @@ elf_symbol { name: "wdev_to_ieee80211_vif" is_defined: true symbol_type: FUNCTION - crc: 0xde77cb1a + crc: 0xe8197ebb type_id: 0xf0429094 full_name: "wdev_to_ieee80211_vif" } @@ -368441,7 +368573,7 @@ elf_symbol { name: "wiphy_apply_custom_regulatory" is_defined: true symbol_type: FUNCTION - crc: 0x08cb4510 + crc: 0x52ab5a58 type_id: 0x1406d205 full_name: "wiphy_apply_custom_regulatory" } @@ -368450,7 +368582,7 @@ elf_symbol { name: "wiphy_free" is_defined: true symbol_type: FUNCTION - crc: 0x4c23aeed + crc: 0x7e8cca42 type_id: 0x14f49b99 full_name: "wiphy_free" } @@ -368459,7 +368591,7 @@ elf_symbol { name: "wiphy_new_nm" is_defined: true symbol_type: FUNCTION - crc: 0x8dc0cfad + crc: 0x52c94d9d type_id: 0x97c6a99f full_name: "wiphy_new_nm" } @@ -368468,7 +368600,7 @@ elf_symbol { name: "wiphy_read_of_freq_limits" is_defined: true symbol_type: FUNCTION - crc: 0x0fc523ff + crc: 0xf1e8b22a type_id: 0x14f49b99 full_name: "wiphy_read_of_freq_limits" } @@ -368477,7 +368609,7 @@ elf_symbol { name: "wiphy_register" is_defined: true symbol_type: FUNCTION - crc: 0xbe2ab6de + crc: 0x1594b711 type_id: 0x99ec2925 full_name: "wiphy_register" } @@ -368486,7 +368618,7 @@ elf_symbol { name: "wiphy_rfkill_set_hw_state_reason" is_defined: true symbol_type: FUNCTION - crc: 0x21df93bd + crc: 0xd7c28436 type_id: 0x1557bbb6 full_name: "wiphy_rfkill_set_hw_state_reason" } @@ -368495,7 +368627,7 @@ elf_symbol { name: "wiphy_rfkill_start_polling" is_defined: true symbol_type: FUNCTION - crc: 0x60e146d5 + crc: 0x65fa79fc type_id: 0x14f49b99 full_name: "wiphy_rfkill_start_polling" } @@ -368504,7 +368636,7 @@ elf_symbol { name: "wiphy_to_ieee80211_hw" is_defined: true symbol_type: FUNCTION - crc: 0x6b7eca17 + crc: 0xbefeeb26 type_id: 0xe01bc55c full_name: "wiphy_to_ieee80211_hw" } @@ -368513,7 +368645,7 @@ elf_symbol { name: "wiphy_unregister" is_defined: true symbol_type: FUNCTION - crc: 0x381194c2 + crc: 0xfd647fc1 type_id: 0x14f49b99 full_name: "wiphy_unregister" } @@ -368531,7 +368663,7 @@ elf_symbol { name: "wireless_send_event" is_defined: true symbol_type: FUNCTION - crc: 0x74dc50bf + crc: 0x5544394f type_id: 0x1d250ee3 full_name: "wireless_send_event" } @@ -368558,7 +368690,7 @@ elf_symbol { name: "wpan_phy_find" is_defined: true symbol_type: FUNCTION - crc: 0xaaf0adf3 + crc: 0x26e0f61b type_id: 0xaacf82f6 full_name: "wpan_phy_find" } @@ -368567,7 +368699,7 @@ elf_symbol { name: "wpan_phy_for_each" is_defined: true symbol_type: FUNCTION - crc: 0xb2a91403 + crc: 0xcf58eab2 type_id: 0x963ea445 full_name: "wpan_phy_for_each" } @@ -368576,7 +368708,7 @@ elf_symbol { name: "wpan_phy_free" is_defined: true symbol_type: FUNCTION - crc: 0xb26b695f + crc: 0x9c285c10 type_id: 0x1af18e52 full_name: "wpan_phy_free" } @@ -368585,7 +368717,7 @@ elf_symbol { name: "wpan_phy_new" is_defined: true symbol_type: FUNCTION - crc: 0x3d55c67a + crc: 0x9cd60095 type_id: 0xab2f6439 full_name: "wpan_phy_new" } @@ -368594,7 +368726,7 @@ elf_symbol { name: "wpan_phy_register" is_defined: true symbol_type: FUNCTION - crc: 0x1d8130c1 + crc: 0x7c6a8eb9 type_id: 0x97e93cee full_name: "wpan_phy_register" } @@ -368603,7 +368735,7 @@ elf_symbol { name: "wpan_phy_unregister" is_defined: true symbol_type: FUNCTION - crc: 0xc43a1b13 + crc: 0x111b8050 type_id: 0x1af18e52 full_name: "wpan_phy_unregister" } @@ -368612,7 +368744,7 @@ elf_symbol { name: "ww_mutex_lock" is_defined: true symbol_type: FUNCTION - crc: 0x42c0533d + crc: 0xb00b0257 type_id: 0x99413a22 full_name: "ww_mutex_lock" } @@ -368621,7 +368753,7 @@ elf_symbol { name: "ww_mutex_lock_interruptible" is_defined: true symbol_type: FUNCTION - crc: 0x0b8ee5eb + crc: 0x97fa99b1 type_id: 0x99413a22 full_name: "ww_mutex_lock_interruptible" } @@ -368630,7 +368762,7 @@ elf_symbol { name: "ww_mutex_trylock" is_defined: true symbol_type: FUNCTION - crc: 0x0d31d299 + crc: 0x9e78f4f4 type_id: 0x99413a22 full_name: "ww_mutex_trylock" } @@ -368639,7 +368771,7 @@ elf_symbol { name: "ww_mutex_unlock" is_defined: true symbol_type: FUNCTION - crc: 0x4a544125 + crc: 0x6d609aa1 type_id: 0x14e943e8 full_name: "ww_mutex_unlock" } @@ -368702,7 +368834,7 @@ elf_symbol { name: "xdp_convert_zc_to_xdp_frame" is_defined: true symbol_type: FUNCTION - crc: 0xc0c642fe + crc: 0xbf26cdc1 type_id: 0x0a34c3a2 full_name: "xdp_convert_zc_to_xdp_frame" } @@ -368720,7 +368852,7 @@ elf_symbol { name: "xdp_do_redirect" is_defined: true symbol_type: FUNCTION - crc: 0xa6e4e98f + crc: 0x4783f587 type_id: 0x9115bc9b full_name: "xdp_do_redirect" } @@ -368729,7 +368861,7 @@ elf_symbol { name: "xdp_master_redirect" is_defined: true symbol_type: FUNCTION - crc: 0x6b26033e + crc: 0xe3762575 type_id: 0x46fb55eb full_name: "xdp_master_redirect" } @@ -368738,7 +368870,7 @@ elf_symbol { name: "xdp_return_frame" is_defined: true symbol_type: FUNCTION - crc: 0x5225bf61 + crc: 0xc0d7e1e7 type_id: 0x1e92214d full_name: "xdp_return_frame" } @@ -368747,7 +368879,7 @@ elf_symbol { name: "xdp_return_frame_rx_napi" is_defined: true symbol_type: FUNCTION - crc: 0x4b03480b + crc: 0x71fcb5b2 type_id: 0x1e92214d full_name: "xdp_return_frame_rx_napi" } @@ -368756,7 +368888,7 @@ elf_symbol { name: "xdp_rxq_info_is_reg" is_defined: true symbol_type: FUNCTION - crc: 0xe7c4744a + crc: 0x10209aa9 type_id: 0xf690d6d1 full_name: "xdp_rxq_info_is_reg" } @@ -368765,7 +368897,7 @@ elf_symbol { name: "xdp_rxq_info_reg_mem_model" is_defined: true symbol_type: FUNCTION - crc: 0x5c8f8995 + crc: 0x6880d902 type_id: 0x9448ad12 full_name: "xdp_rxq_info_reg_mem_model" } @@ -368774,7 +368906,7 @@ elf_symbol { name: "xdp_rxq_info_unreg" is_defined: true symbol_type: FUNCTION - crc: 0xc04de52a + crc: 0x48849d37 type_id: 0x18acdc46 full_name: "xdp_rxq_info_unreg" } @@ -368783,7 +368915,7 @@ elf_symbol { name: "xdp_rxq_info_unreg_mem_model" is_defined: true symbol_type: FUNCTION - crc: 0xd019a9a9 + crc: 0x8f8401d1 type_id: 0x18acdc46 full_name: "xdp_rxq_info_unreg_mem_model" } @@ -368801,7 +368933,7 @@ elf_symbol { name: "xfrm_lookup" is_defined: true symbol_type: FUNCTION - crc: 0xa015ef84 + crc: 0x79410d2f type_id: 0xa2843be3 full_name: "xfrm_lookup" } @@ -368810,7 +368942,7 @@ elf_symbol { name: "xfrm_state_lookup_byspi" is_defined: true symbol_type: FUNCTION - crc: 0xceb2eae1 + crc: 0x10e6b69e type_id: 0x624b0f22 full_name: "xfrm_state_lookup_byspi" } @@ -368819,7 +368951,7 @@ elf_symbol { name: "xfrm_stateonly_find" is_defined: true symbol_type: FUNCTION - crc: 0xc842b5ea + crc: 0xaf1b61a5 type_id: 0x62e6e159 full_name: "xfrm_stateonly_find" } @@ -368828,7 +368960,7 @@ elf_symbol { name: "xhci_alloc_command" is_defined: true symbol_type: FUNCTION - crc: 0xcb7d93e7 + crc: 0x325af7c9 type_id: 0xa8db3e38 full_name: "xhci_alloc_command" } @@ -368837,7 +368969,7 @@ elf_symbol { name: "xhci_alloc_erst" is_defined: true symbol_type: FUNCTION - crc: 0xd6a06f4b + crc: 0xa803fa1b type_id: 0x99afdc89 full_name: "xhci_alloc_erst" } @@ -368846,7 +368978,7 @@ elf_symbol { name: "xhci_free_command" is_defined: true symbol_type: FUNCTION - crc: 0xb0ebca96 + crc: 0x872a53d6 type_id: 0x1401698f full_name: "xhci_free_command" } @@ -368855,7 +368987,7 @@ elf_symbol { name: "xhci_gen_setup" is_defined: true symbol_type: FUNCTION - crc: 0x48bbe1ae + crc: 0x83535c96 type_id: 0x97b34018 full_name: "xhci_gen_setup" } @@ -368873,7 +369005,7 @@ elf_symbol { name: "xhci_init_driver" is_defined: true symbol_type: FUNCTION - crc: 0xd68f6882 + crc: 0x333aaa6c type_id: 0x14d9dc3c full_name: "xhci_init_driver" } @@ -368882,7 +369014,7 @@ elf_symbol { name: "xhci_queue_stop_endpoint" is_defined: true symbol_type: FUNCTION - crc: 0xdbcc16ee + crc: 0xda9f287e type_id: 0x99011cda full_name: "xhci_queue_stop_endpoint" } @@ -368891,7 +369023,7 @@ elf_symbol { name: "xhci_resume" is_defined: true symbol_type: FUNCTION - crc: 0xa2eca88c + crc: 0x46672c13 type_id: 0x98945a53 full_name: "xhci_resume" } @@ -368900,7 +369032,7 @@ elf_symbol { name: "xhci_ring_alloc" is_defined: true symbol_type: FUNCTION - crc: 0x83fc5b72 + crc: 0xeda3317f type_id: 0xa9d11801 full_name: "xhci_ring_alloc" } @@ -368909,7 +369041,7 @@ elf_symbol { name: "xhci_ring_cmd_db" is_defined: true symbol_type: FUNCTION - crc: 0xa08e2eae + crc: 0x4a54c8f1 type_id: 0x14391590 full_name: "xhci_ring_cmd_db" } @@ -368918,7 +369050,7 @@ elf_symbol { name: "xhci_ring_free" is_defined: true symbol_type: FUNCTION - crc: 0xa4f482b9 + crc: 0xb3fcc326 type_id: 0x14bfdedb full_name: "xhci_ring_free" } @@ -368927,7 +369059,7 @@ elf_symbol { name: "xhci_run" is_defined: true symbol_type: FUNCTION - crc: 0x85a5625d + crc: 0x3aec9dec type_id: 0x94deebf7 full_name: "xhci_run" } @@ -368936,7 +369068,7 @@ elf_symbol { name: "xhci_suspend" is_defined: true symbol_type: FUNCTION - crc: 0xbee29978 + crc: 0x2437ba42 type_id: 0x98945a53 full_name: "xhci_suspend" } @@ -368954,7 +369086,7 @@ elf_symbol { name: "xp_alloc" is_defined: true symbol_type: FUNCTION - crc: 0xdcbbfb6c + crc: 0xb147b305 type_id: 0x13a974bf full_name: "xp_alloc" } @@ -368963,7 +369095,7 @@ elf_symbol { name: "xp_dma_map" is_defined: true symbol_type: FUNCTION - crc: 0x988dad49 + crc: 0x3d1df874 type_id: 0x9d04fab6 full_name: "xp_dma_map" } @@ -368972,7 +369104,7 @@ elf_symbol { name: "xp_dma_sync_for_cpu_slow" is_defined: true symbol_type: FUNCTION - crc: 0x2fc74237 + crc: 0xbee88f8e type_id: 0x1265fe38 full_name: "xp_dma_sync_for_cpu_slow" } @@ -368981,7 +369113,7 @@ elf_symbol { name: "xp_dma_sync_for_device_slow" is_defined: true symbol_type: FUNCTION - crc: 0x4ad1c7f3 + crc: 0x97cdef76 type_id: 0x13a45d3e full_name: "xp_dma_sync_for_device_slow" } @@ -368990,7 +369122,7 @@ elf_symbol { name: "xp_dma_unmap" is_defined: true symbol_type: FUNCTION - crc: 0xec7c323b + crc: 0x78bb002f type_id: 0x10d43da5 full_name: "xp_dma_unmap" } @@ -368999,7 +369131,7 @@ elf_symbol { name: "xp_free" is_defined: true symbol_type: FUNCTION - crc: 0xffcc82c0 + crc: 0xf5910058 type_id: 0x1265fe38 full_name: "xp_free" } @@ -369008,7 +369140,7 @@ elf_symbol { name: "xp_raw_get_dma" is_defined: true symbol_type: FUNCTION - crc: 0x639b7ee9 + crc: 0xa735fc53 type_id: 0xbed4cb96 full_name: "xp_raw_get_dma" } @@ -369017,7 +369149,7 @@ elf_symbol { name: "xp_set_rxq_info" is_defined: true symbol_type: FUNCTION - crc: 0x900e754f + crc: 0x6e176e6a type_id: 0x109aa0ea full_name: "xp_set_rxq_info" } @@ -369026,7 +369158,7 @@ elf_symbol { name: "xsk_clear_rx_need_wakeup" is_defined: true symbol_type: FUNCTION - crc: 0x1d228326 + crc: 0x249998f2 type_id: 0x1019e837 full_name: "xsk_clear_rx_need_wakeup" } @@ -369035,7 +369167,7 @@ elf_symbol { name: "xsk_get_pool_from_qid" is_defined: true symbol_type: FUNCTION - crc: 0x0b91516e + crc: 0x65aae79b type_id: 0x9634d583 full_name: "xsk_get_pool_from_qid" } @@ -369044,7 +369176,7 @@ elf_symbol { name: "xsk_set_rx_need_wakeup" is_defined: true symbol_type: FUNCTION - crc: 0x06a91e6c + crc: 0xdab52449 type_id: 0x1019e837 full_name: "xsk_set_rx_need_wakeup" } @@ -369053,7 +369185,7 @@ elf_symbol { name: "xsk_set_tx_need_wakeup" is_defined: true symbol_type: FUNCTION - crc: 0x25c70fa1 + crc: 0xb10b54f5 type_id: 0x1019e837 full_name: "xsk_set_tx_need_wakeup" } @@ -369062,7 +369194,7 @@ elf_symbol { name: "xsk_tx_completed" is_defined: true symbol_type: FUNCTION - crc: 0x35cef5f1 + crc: 0xdd156fc7 type_id: 0x133dc89b full_name: "xsk_tx_completed" } @@ -369071,7 +369203,7 @@ elf_symbol { name: "xsk_tx_peek_desc" is_defined: true symbol_type: FUNCTION - crc: 0xb5266037 + crc: 0x7d07b1eb type_id: 0xfec52a83 full_name: "xsk_tx_peek_desc" } @@ -369080,7 +369212,7 @@ elf_symbol { name: "xsk_tx_release" is_defined: true symbol_type: FUNCTION - crc: 0x414459c5 + crc: 0x9a08ec45 type_id: 0x1019e837 full_name: "xsk_tx_release" } @@ -369089,7 +369221,7 @@ elf_symbol { name: "xsk_uses_need_wakeup" is_defined: true symbol_type: FUNCTION - crc: 0x991c7b45 + crc: 0x40d37fe9 type_id: 0xfe25e2a0 full_name: "xsk_uses_need_wakeup" } @@ -369098,7 +369230,7 @@ elf_symbol { name: "zap_vma_ptes" is_defined: true symbol_type: FUNCTION - crc: 0xd3ac7e37 + crc: 0xc83b019a type_id: 0x12dd8909 full_name: "zap_vma_ptes" } @@ -369283,7 +369415,7 @@ elf_symbol { full_name: "zs_unmap_object" } symbols { - id: 0x25a8b173 + id: 0x84ea5130 symbol { key: "I_BDEV" value: 0x2dddbe52 @@ -381740,6 +381872,10 @@ symbols { key: "memremap" value: 0x7ad45055 } + symbol { + key: "memremap_pages" + value: 0x56171277 + } symbol { key: "memscan" value: 0x67a278cb @@ -381760,6 +381896,10 @@ symbols { key: "memunmap" value: 0xaa1ecb0d } + symbol { + key: "memunmap_pages" + value: 0xbc9af04b + } symbol { key: "mfd_add_devices" value: 0x78495fd8 @@ -382824,10 +382964,6 @@ symbols { key: "of_match_node" value: 0x3965b143 } - symbol { - key: "of_mdiobus_register" - value: 0x71e8db53 - } symbol { key: "of_modalias_node" value: 0x23d1db24 diff --git a/build.config.common b/build.config.common index 5a67ace77df1..25be880559a9 100644 --- a/build.config.common +++ b/build.config.common @@ -1,6 +1,6 @@ . ${ROOT_DIR}/${KERNEL_DIR}/build.config.constants -KMI_GENERATION=3 +KMI_GENERATION=4 LLVM=1 DEPMOD=depmod From 6ddfdb3d53c35fafb6ac79e44102a6aa6829e62d Mon Sep 17 00:00:00 2001 From: Yu Zhao Date: Fri, 30 Dec 2022 14:52:51 -0700 Subject: [PATCH 234/269] UPSTREAM: mm: add vma_has_recency() Add vma_has_recency() to indicate whether a VMA may exhibit temporal locality that the LRU algorithm relies on. This function returns false for VMAs marked by VM_SEQ_READ or VM_RAND_READ. While the former flag indicates linear access, i.e., a special case of spatial locality, both flags indicate a lack of temporal locality, i.e., the reuse of an area within a relatively small duration. "Recency" is chosen over "locality" to avoid confusion between temporal and spatial localities. Before this patch, the active/inactive LRU only ignored the accessed bit from VMAs marked by VM_SEQ_READ. After this patch, the active/inactive LRU and MGLRU share the same logic: they both ignore the accessed bit if vma_has_recency() returns false. For the active/inactive LRU, the following fio test showed a [6, 8]% increase in IOPS when randomly accessing mapped files under memory pressure. kb=$(awk '/MemTotal/ { print $2 }' /proc/meminfo) kb=$((kb - 8*1024*1024)) modprobe brd rd_nr=1 rd_size=$kb dd if=/dev/zero of=/dev/ram0 bs=1M mkfs.ext4 /dev/ram0 mount /dev/ram0 /mnt/ swapoff -a fio --name=test --directory=/mnt/ --ioengine=mmap --numjobs=8 \ --size=8G --rw=randrw --time_based --runtime=10m \ --group_reporting The discussion that led to this patch is here [1]. Additional test results are available in that thread. [1] https://lore.kernel.org/r/Y31s%2FK8T85jh05wH@google.com/ Link: https://lkml.kernel.org/r/20221230215252.2628425-1-yuzhao@google.com Change-Id: I291dcb795197659e40e46539cd32b857677c34ad Signed-off-by: Yu Zhao Cc: Alexander Viro Cc: Andrea Righi Cc: Johannes Weiner Cc: Michael Larabel Signed-off-by: Andrew Morton (cherry picked from commit 8788f6781486769d9598dcaedc3fe0eb12fc3e59) Bug: 274865848 Signed-off-by: T.J. Mercier --- include/linux/mm_inline.h | 8 ++++++++ mm/memory.c | 7 +++---- mm/rmap.c | 42 +++++++++++++++++---------------------- mm/vmscan.c | 5 ++++- 4 files changed, 33 insertions(+), 29 deletions(-) diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h index c1fd3922dc5d..7bb2e5f94734 100644 --- a/include/linux/mm_inline.h +++ b/include/linux/mm_inline.h @@ -595,4 +595,12 @@ pte_install_uffd_wp_if_needed(struct vm_area_struct *vma, unsigned long addr, #endif } +static inline bool vma_has_recency(struct vm_area_struct *vma) +{ + if (vma->vm_flags & (VM_SEQ_READ | VM_RAND_READ)) + return false; + + return true; +} + #endif diff --git a/mm/memory.c b/mm/memory.c index fbefac49a35d..f66a23c62dd9 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -1437,8 +1437,7 @@ again: force_flush = 1; set_page_dirty(page); } - if (pte_young(ptent) && - likely(!(vma->vm_flags & VM_SEQ_READ))) + if (pte_young(ptent) && likely(vma_has_recency(vma))) mark_page_accessed(page); } rss[mm_counter(page)]--; @@ -5158,8 +5157,8 @@ static inline void mm_account_fault(struct pt_regs *regs, #ifdef CONFIG_LRU_GEN static void lru_gen_enter_fault(struct vm_area_struct *vma) { - /* the LRU algorithm doesn't apply to sequential or random reads */ - current->in_lru_fault = !(vma->vm_flags & (VM_SEQ_READ | VM_RAND_READ)); + /* the LRU algorithm only applies to accesses with recency */ + current->in_lru_fault = vma_has_recency(vma); } static void lru_gen_exit_fault(void) diff --git a/mm/rmap.c b/mm/rmap.c index 7da2d8d097d9..825dac3caa1e 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -823,25 +823,14 @@ static bool folio_referenced_one(struct folio *folio, } if (pvmw.pte) { - if (lru_gen_enabled() && pte_young(*pvmw.pte) && - !(vma->vm_flags & (VM_SEQ_READ | VM_RAND_READ))) { + if (lru_gen_enabled() && pte_young(*pvmw.pte)) { lru_gen_look_around(&pvmw); referenced++; } if (ptep_clear_flush_young_notify(vma, address, - pvmw.pte)) { - /* - * Don't treat a reference through - * a sequentially read mapping as such. - * If the folio has been used in another mapping, - * we will catch it; if this other mapping is - * already gone, the unmap path will have set - * the referenced flag or activated the folio. - */ - if (likely(!(vma->vm_flags & VM_SEQ_READ))) - referenced++; - } + pvmw.pte)) + referenced++; } else if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)) { if (pmdp_clear_flush_young_notify(vma, address, pvmw.pmd)) @@ -875,7 +864,20 @@ static bool invalid_folio_referenced_vma(struct vm_area_struct *vma, void *arg) struct folio_referenced_arg *pra = arg; struct mem_cgroup *memcg = pra->memcg; - if (!mm_match_cgroup(vma->vm_mm, memcg)) + /* + * Ignore references from this mapping if it has no recency. If the + * folio has been used in another mapping, we will catch it; if this + * other mapping is already gone, the unmap path will have set the + * referenced flag or activated the folio in zap_pte_range(). + */ + if (!vma_has_recency(vma)) + return true; + + /* + * If we are reclaiming on behalf of a cgroup, skip counting on behalf + * of references from different cgroups. + */ + if (memcg && !mm_match_cgroup(vma->vm_mm, memcg)) return true; return false; @@ -906,6 +908,7 @@ int folio_referenced(struct folio *folio, int is_locked, .arg = (void *)&pra, .anon_lock = folio_lock_anon_vma_read, .try_lock = true, + .invalid_vma = invalid_folio_referenced_vma, }; *vm_flags = 0; @@ -921,15 +924,6 @@ int folio_referenced(struct folio *folio, int is_locked, return 1; } - /* - * If we are reclaiming on behalf of a cgroup, skip - * counting on behalf of references from different - * cgroups - */ - if (memcg) { - rwc.invalid_vma = invalid_folio_referenced_vma; - } - rmap_walk(folio, &rwc); *vm_flags = pra.vm_flags; diff --git a/mm/vmscan.c b/mm/vmscan.c index 8a18e37843d2..c81660388006 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3776,7 +3776,10 @@ static int should_skip_vma(unsigned long start, unsigned long end, struct mm_wal if (is_vm_hugetlb_page(vma)) return true; - if (vma->vm_flags & (VM_LOCKED | VM_SPECIAL | VM_SEQ_READ | VM_RAND_READ)) + if (!vma_has_recency(vma)) + return true; + + if (vma->vm_flags & (VM_LOCKED | VM_SPECIAL)) return true; if (vma == get_gate_vma(vma->vm_mm)) From 8666944cf9fead6228b53c2aedfe50e51aa055e7 Mon Sep 17 00:00:00 2001 From: Yu Zhao Date: Fri, 30 Dec 2022 14:52:52 -0700 Subject: [PATCH 235/269] UPSTREAM: mm: support POSIX_FADV_NOREUSE This patch adds POSIX_FADV_NOREUSE to vma_has_recency() so that the LRU algorithm can ignore access to mapped files marked by this flag. The advantages of POSIX_FADV_NOREUSE are: 1. Unlike MADV_SEQUENTIAL and MADV_RANDOM, it does not alter the default readahead behavior. 2. Unlike MADV_SEQUENTIAL and MADV_RANDOM, it does not split VMAs and therefore does not take mmap_lock. 3. Unlike MADV_COLD, setting it has a negligible cost, regardless of how many pages it affects. Its limitations are: 1. Like POSIX_FADV_RANDOM and POSIX_FADV_SEQUENTIAL, it currently does not support range. IOW, its scope is the entire file. 2. It currently does not ignore access through file descriptors. Specifically, for the active/inactive LRU, given a file page shared by two users and one of them having set POSIX_FADV_NOREUSE on the file, this page will be activated upon the second user accessing it. This corner case can be covered by checking POSIX_FADV_NOREUSE before calling folio_mark_accessed() on the read path. But it is considered not worth the effort. There have been a few attempts to support POSIX_FADV_NOREUSE, e.g., [1]. This time the goal is to fill a niche: a few desktop applications, e.g., large file transferring and video encoding/decoding, want fast file streaming with mmap() rather than direct IO. Among those applications, an SVT-AV1 regression was reported when running with MGLRU [2]. The following test can reproduce that regression. kb=$(awk '/MemTotal/ { print $2 }' /proc/meminfo) kb=$((kb - 8*1024*1024)) modprobe brd rd_nr=1 rd_size=$kb dd if=/dev/zero of=/dev/ram0 bs=1M mkfs.ext4 /dev/ram0 mount /dev/ram0 /mnt/ swapoff -a fallocate -l 8G /mnt/swapfile mkswap /mnt/swapfile swapon /mnt/swapfile wget http://ultravideo.cs.tut.fi/video/Bosphorus_3840x2160_120fps_420_8bit_YUV_Y4M.7z 7z e -o/mnt/ Bosphorus_3840x2160_120fps_420_8bit_YUV_Y4M.7z SvtAv1EncApp --preset 12 -w 3840 -h 2160 \ -i /mnt/Bosphorus_3840x2160.y4m For MGLRU, the following change showed a [9-11]% increase in FPS, which makes it on par with the active/inactive LRU. patch Source/App/EncApp/EbAppMain.c < #include 35d35 < #include /* _O_BINARY */ 117a118 > posix_fadvise(config->mmap.fd, 0, 0, POSIX_FADV_NOREUSE); EOF [1] https://lore.kernel.org/r/1308923350-7932-1-git-send-email-andrea@betterlinux.com/ [2] https://openbenchmarking.org/result/2209259-PTS-MGLRU8GB57 Link: https://lkml.kernel.org/r/20221230215252.2628425-2-yuzhao@google.com Change-Id: I0b7f5f971d78014ea1ba44cee6a8ec902a4330d0 Signed-off-by: Yu Zhao Cc: Alexander Viro Cc: Andrea Righi Cc: Johannes Weiner Cc: Michael Larabel Signed-off-by: Andrew Morton (cherry picked from commit 17e810229cb3068b692fa078bd9b3a6527e0866a) Bug: 274865848 Signed-off-by: T.J. Mercier --- include/linux/fs.h | 2 ++ include/linux/mm_inline.h | 3 +++ mm/fadvise.c | 5 ++++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/linux/fs.h b/include/linux/fs.h index ae5b793fe469..5ce727c0e975 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -166,6 +166,8 @@ typedef int (dio_iodone_t)(struct kiocb *iocb, loff_t offset, /* File supports DIRECT IO */ #define FMODE_CAN_ODIRECT ((__force fmode_t)0x400000) +#define FMODE_NOREUSE ((__force fmode_t)0x800000) + /* File was opened by fanotify and shouldn't generate fanotify events */ #define FMODE_NONOTIFY ((__force fmode_t)0x4000000) diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h index 7bb2e5f94734..9a8e2049333c 100644 --- a/include/linux/mm_inline.h +++ b/include/linux/mm_inline.h @@ -600,6 +600,9 @@ static inline bool vma_has_recency(struct vm_area_struct *vma) if (vma->vm_flags & (VM_SEQ_READ | VM_RAND_READ)) return false; + if (vma->vm_file && (vma->vm_file->f_mode & FMODE_NOREUSE)) + return false; + return true; } diff --git a/mm/fadvise.c b/mm/fadvise.c index c76ee665355a..2ba24d865bf5 100644 --- a/mm/fadvise.c +++ b/mm/fadvise.c @@ -80,7 +80,7 @@ int generic_fadvise(struct file *file, loff_t offset, loff_t len, int advice) case POSIX_FADV_NORMAL: file->f_ra.ra_pages = bdi->ra_pages; spin_lock(&file->f_lock); - file->f_mode &= ~FMODE_RANDOM; + file->f_mode &= ~(FMODE_RANDOM | FMODE_NOREUSE); spin_unlock(&file->f_lock); break; case POSIX_FADV_RANDOM: @@ -107,6 +107,9 @@ int generic_fadvise(struct file *file, loff_t offset, loff_t len, int advice) force_page_cache_readahead(mapping, file, start_index, nrpages); break; case POSIX_FADV_NOREUSE: + spin_lock(&file->f_lock); + file->f_mode |= FMODE_NOREUSE; + spin_unlock(&file->f_lock); break; case POSIX_FADV_DONTNEED: __filemap_fdatawrite_range(mapping, offset, endbyte, From 014c372cc30eb17dbf213d9d56317e4988976599 Mon Sep 17 00:00:00 2001 From: "T.J. Alumbaugh" Date: Wed, 18 Jan 2023 00:18:21 +0000 Subject: [PATCH 236/269] UPSTREAM: mm: multi-gen LRU: section for working set protection Patch series "mm: multi-gen LRU: improve". This patch series improves a few MGLRU functions, collects related functions, and adds additional documentation. This patch (of 7): Add a section for working set protection in the code and the design doc. The admin doc already contains its usage. Link: https://lkml.kernel.org/r/20230118001827.1040870-1-talumbau@google.com Link: https://lkml.kernel.org/r/20230118001827.1040870-2-talumbau@google.com Change-Id: I65599075fd42951db7739a2ab7cee78516e157b3 Signed-off-by: T.J. Alumbaugh Cc: Yu Zhao Signed-off-by: Andrew Morton (cherry picked from commit 7b8144e63d84716f16a1b929e0c7e03ae5c4d5c1) Bug: 274865848 Signed-off-by: T.J. Mercier --- Documentation/mm/multigen_lru.rst | 15 +++++++++++++++ mm/vmscan.c | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/Documentation/mm/multigen_lru.rst b/Documentation/mm/multigen_lru.rst index d8f721f98868..6e1483e70fdc 100644 --- a/Documentation/mm/multigen_lru.rst +++ b/Documentation/mm/multigen_lru.rst @@ -141,6 +141,21 @@ loop has detected outlying refaults from the tier this page is in. To this end, the feedback loop uses the first tier as the baseline, for the reason stated earlier. +Working set protection +---------------------- +Each generation is timestamped at birth. If ``lru_gen_min_ttl`` is +set, an ``lruvec`` is protected from the eviction when its oldest +generation was born within ``lru_gen_min_ttl`` milliseconds. In other +words, it prevents the working set of ``lru_gen_min_ttl`` milliseconds +from getting evicted. The OOM killer is triggered if this working set +cannot be kept in memory. + +This time-based approach has the following advantages: + +1. It is easier to configure because it is agnostic to applications + and memory sizes. +2. It is more reliable because it is directly wired to the OOM killer. + Summary ------- The multi-gen LRU can be disassembled into the following parts: diff --git a/mm/vmscan.c b/mm/vmscan.c index c81660388006..dc5cd22e3321 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4457,6 +4457,10 @@ done: return true; } +/****************************************************************************** + * working set protection + ******************************************************************************/ + static bool lruvec_is_sizable(struct lruvec *lruvec, struct scan_control *sc) { int gen, type, zone; From 4d8cf6f6f0153701df94956a1588d9fe8fffe758 Mon Sep 17 00:00:00 2001 From: "T.J. Alumbaugh" Date: Wed, 18 Jan 2023 00:18:22 +0000 Subject: [PATCH 237/269] UPSTREAM: mm: multi-gen LRU: section for rmap/PT walk feedback Add a section for lru_gen_look_around() in the code and the design doc. Link: https://lkml.kernel.org/r/20230118001827.1040870-3-talumbau@google.com Change-Id: I5097af63f61b3b69ec2abee6cdbdc33c296df213 Signed-off-by: T.J. Alumbaugh Cc: Yu Zhao Signed-off-by: Andrew Morton (cherry picked from commit db19a43d9b3a8876552f00f656008206ef9a5efa) Bug: 274865848 Signed-off-by: T.J. Mercier --- Documentation/mm/multigen_lru.rst | 14 ++++++++++++++ mm/vmscan.c | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/Documentation/mm/multigen_lru.rst b/Documentation/mm/multigen_lru.rst index 6e1483e70fdc..bd988a142bc2 100644 --- a/Documentation/mm/multigen_lru.rst +++ b/Documentation/mm/multigen_lru.rst @@ -156,6 +156,20 @@ This time-based approach has the following advantages: and memory sizes. 2. It is more reliable because it is directly wired to the OOM killer. +Rmap/PT walk feedback +--------------------- +Searching the rmap for PTEs mapping each page on an LRU list (to test +and clear the accessed bit) can be expensive because pages from +different VMAs (PA space) are not cache friendly to the rmap (VA +space). For workloads mostly using mapped pages, searching the rmap +can incur the highest CPU cost in the reclaim path. + +``lru_gen_look_around()`` exploits spatial locality to reduce the +trips into the rmap. It scans the adjacent PTEs of a young PTE and +promotes hot pages. If the scan was done cacheline efficiently, it +adds the PMD entry pointing to the PTE table to the Bloom filter. This +forms a feedback loop between the eviction and the aging. + Summary ------- The multi-gen LRU can be disassembled into the following parts: diff --git a/mm/vmscan.c b/mm/vmscan.c index dc5cd22e3321..f04dc4ba2b58 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4551,6 +4551,10 @@ static void lru_gen_age_node(struct pglist_data *pgdat, struct scan_control *sc) } } +/****************************************************************************** + * rmap/PT walk feedback + ******************************************************************************/ + /* * This function exploits spatial locality when shrink_folio_list() walks the * rmap. It scans the adjacent PTEs of a young PTE and promotes hot pages. If From 282363eb6f2be737d3111652f6e52d0813cc78d6 Mon Sep 17 00:00:00 2001 From: "T.J. Alumbaugh" Date: Wed, 18 Jan 2023 00:18:23 +0000 Subject: [PATCH 238/269] UPSTREAM: mm: multi-gen LRU: section for Bloom filters Move Bloom filters code into a dedicated section. Improve the design doc to explain Bloom filter usage and connection between aging and eviction in their use. Link: https://lkml.kernel.org/r/20230118001827.1040870-4-talumbau@google.com Change-Id: I73e866f687c1ed9f5c8538086aa39408b79897db Signed-off-by: T.J. Alumbaugh Cc: Yu Zhao Signed-off-by: Andrew Morton (cherry picked from commit ccbbbb85945d8f0255aa9dbc1b617017e2294f2c) Bug: 274865848 Signed-off-by: T.J. Mercier --- Documentation/mm/multigen_lru.rst | 16 +++ mm/vmscan.c | 180 +++++++++++++++--------------- 2 files changed, 108 insertions(+), 88 deletions(-) diff --git a/Documentation/mm/multigen_lru.rst b/Documentation/mm/multigen_lru.rst index bd988a142bc2..770b5d539856 100644 --- a/Documentation/mm/multigen_lru.rst +++ b/Documentation/mm/multigen_lru.rst @@ -170,6 +170,22 @@ promotes hot pages. If the scan was done cacheline efficiently, it adds the PMD entry pointing to the PTE table to the Bloom filter. This forms a feedback loop between the eviction and the aging. +Bloom Filters +------------- +Bloom filters are a space and memory efficient data structure for set +membership test, i.e., test if an element is not in the set or may be +in the set. + +In the eviction path, specifically, in ``lru_gen_look_around()``, if a +PMD has a sufficient number of hot pages, its address is placed in the +filter. In the aging path, set membership means that the PTE range +will be scanned for young pages. + +Note that Bloom filters are probabilistic on set membership. If a test +is false positive, the cost is an additional scan of a range of PTEs, +which may yield hot pages anyway. Parameters of the filter itself can +control the false positive rate in the limit. + Summary ------- The multi-gen LRU can be disassembled into the following parts: diff --git a/mm/vmscan.c b/mm/vmscan.c index f04dc4ba2b58..aa37b6e3e280 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3206,6 +3206,98 @@ static bool __maybe_unused seq_is_valid(struct lruvec *lruvec) get_nr_gens(lruvec, LRU_GEN_ANON) <= MAX_NR_GENS; } +/****************************************************************************** + * Bloom filters + ******************************************************************************/ + +/* + * Bloom filters with m=1<<15, k=2 and the false positive rates of ~1/5 when + * n=10,000 and ~1/2 when n=20,000, where, conventionally, m is the number of + * bits in a bitmap, k is the number of hash functions and n is the number of + * inserted items. + * + * Page table walkers use one of the two filters to reduce their search space. + * To get rid of non-leaf entries that no longer have enough leaf entries, the + * aging uses the double-buffering technique to flip to the other filter each + * time it produces a new generation. For non-leaf entries that have enough + * leaf entries, the aging carries them over to the next generation in + * walk_pmd_range(); the eviction also report them when walking the rmap + * in lru_gen_look_around(). + * + * For future optimizations: + * 1. It's not necessary to keep both filters all the time. The spare one can be + * freed after the RCU grace period and reallocated if needed again. + * 2. And when reallocating, it's worth scaling its size according to the number + * of inserted entries in the other filter, to reduce the memory overhead on + * small systems and false positives on large systems. + * 3. Jenkins' hash function is an alternative to Knuth's. + */ +#define BLOOM_FILTER_SHIFT 15 + +static inline int filter_gen_from_seq(unsigned long seq) +{ + return seq % NR_BLOOM_FILTERS; +} + +static void get_item_key(void *item, int *key) +{ + u32 hash = hash_ptr(item, BLOOM_FILTER_SHIFT * 2); + + BUILD_BUG_ON(BLOOM_FILTER_SHIFT * 2 > BITS_PER_TYPE(u32)); + + key[0] = hash & (BIT(BLOOM_FILTER_SHIFT) - 1); + key[1] = hash >> BLOOM_FILTER_SHIFT; +} + +static bool test_bloom_filter(struct lruvec *lruvec, unsigned long seq, void *item) +{ + int key[2]; + unsigned long *filter; + int gen = filter_gen_from_seq(seq); + + filter = READ_ONCE(lruvec->mm_state.filters[gen]); + if (!filter) + return true; + + get_item_key(item, key); + + return test_bit(key[0], filter) && test_bit(key[1], filter); +} + +static void update_bloom_filter(struct lruvec *lruvec, unsigned long seq, void *item) +{ + int key[2]; + unsigned long *filter; + int gen = filter_gen_from_seq(seq); + + filter = READ_ONCE(lruvec->mm_state.filters[gen]); + if (!filter) + return; + + get_item_key(item, key); + + if (!test_bit(key[0], filter)) + set_bit(key[0], filter); + if (!test_bit(key[1], filter)) + set_bit(key[1], filter); +} + +static void reset_bloom_filter(struct lruvec *lruvec, unsigned long seq) +{ + unsigned long *filter; + int gen = filter_gen_from_seq(seq); + + filter = lruvec->mm_state.filters[gen]; + if (filter) { + bitmap_clear(filter, 0, BIT(BLOOM_FILTER_SHIFT)); + return; + } + + filter = bitmap_zalloc(BIT(BLOOM_FILTER_SHIFT), + __GFP_HIGH | __GFP_NOMEMALLOC | __GFP_NOWARN); + WRITE_ONCE(lruvec->mm_state.filters[gen], filter); +} + /****************************************************************************** * mm_struct list ******************************************************************************/ @@ -3331,94 +3423,6 @@ void lru_gen_migrate_mm(struct mm_struct *mm) } #endif -/* - * Bloom filters with m=1<<15, k=2 and the false positive rates of ~1/5 when - * n=10,000 and ~1/2 when n=20,000, where, conventionally, m is the number of - * bits in a bitmap, k is the number of hash functions and n is the number of - * inserted items. - * - * Page table walkers use one of the two filters to reduce their search space. - * To get rid of non-leaf entries that no longer have enough leaf entries, the - * aging uses the double-buffering technique to flip to the other filter each - * time it produces a new generation. For non-leaf entries that have enough - * leaf entries, the aging carries them over to the next generation in - * walk_pmd_range(); the eviction also report them when walking the rmap - * in lru_gen_look_around(). - * - * For future optimizations: - * 1. It's not necessary to keep both filters all the time. The spare one can be - * freed after the RCU grace period and reallocated if needed again. - * 2. And when reallocating, it's worth scaling its size according to the number - * of inserted entries in the other filter, to reduce the memory overhead on - * small systems and false positives on large systems. - * 3. Jenkins' hash function is an alternative to Knuth's. - */ -#define BLOOM_FILTER_SHIFT 15 - -static inline int filter_gen_from_seq(unsigned long seq) -{ - return seq % NR_BLOOM_FILTERS; -} - -static void get_item_key(void *item, int *key) -{ - u32 hash = hash_ptr(item, BLOOM_FILTER_SHIFT * 2); - - BUILD_BUG_ON(BLOOM_FILTER_SHIFT * 2 > BITS_PER_TYPE(u32)); - - key[0] = hash & (BIT(BLOOM_FILTER_SHIFT) - 1); - key[1] = hash >> BLOOM_FILTER_SHIFT; -} - -static void reset_bloom_filter(struct lruvec *lruvec, unsigned long seq) -{ - unsigned long *filter; - int gen = filter_gen_from_seq(seq); - - filter = lruvec->mm_state.filters[gen]; - if (filter) { - bitmap_clear(filter, 0, BIT(BLOOM_FILTER_SHIFT)); - return; - } - - filter = bitmap_zalloc(BIT(BLOOM_FILTER_SHIFT), - __GFP_HIGH | __GFP_NOMEMALLOC | __GFP_NOWARN); - WRITE_ONCE(lruvec->mm_state.filters[gen], filter); -} - -static void update_bloom_filter(struct lruvec *lruvec, unsigned long seq, void *item) -{ - int key[2]; - unsigned long *filter; - int gen = filter_gen_from_seq(seq); - - filter = READ_ONCE(lruvec->mm_state.filters[gen]); - if (!filter) - return; - - get_item_key(item, key); - - if (!test_bit(key[0], filter)) - set_bit(key[0], filter); - if (!test_bit(key[1], filter)) - set_bit(key[1], filter); -} - -static bool test_bloom_filter(struct lruvec *lruvec, unsigned long seq, void *item) -{ - int key[2]; - unsigned long *filter; - int gen = filter_gen_from_seq(seq); - - filter = READ_ONCE(lruvec->mm_state.filters[gen]); - if (!filter) - return true; - - get_item_key(item, key); - - return test_bit(key[0], filter) && test_bit(key[1], filter); -} - static void reset_mm_stats(struct lruvec *lruvec, struct lru_gen_mm_walk *walk, bool last) { int i; From e1cf082319ac5122b45965623e0b558e7b3391ac Mon Sep 17 00:00:00 2001 From: "T.J. Alumbaugh" Date: Wed, 18 Jan 2023 00:18:24 +0000 Subject: [PATCH 239/269] UPSTREAM: mm: multi-gen LRU: section for memcg LRU Move memcg LRU code into a dedicated section. Improve the design doc to outline its architecture. Link: https://lkml.kernel.org/r/20230118001827.1040870-5-talumbau@google.com Change-Id: Id252e420cff7a858acb098cf2b3642da5c40f602 Signed-off-by: T.J. Alumbaugh Cc: Yu Zhao Signed-off-by: Andrew Morton (cherry picked from commit 36c7b4db7c942ae9e1b111f0c6b468c8b2e33842) Bug: 274865848 Signed-off-by: T.J. Mercier --- Documentation/mm/multigen_lru.rst | 33 +++- include/linux/mm_inline.h | 17 -- include/linux/mmzone.h | 13 +- mm/memcontrol.c | 8 +- mm/vmscan.c | 250 +++++++++++++++++------------- 5 files changed, 178 insertions(+), 143 deletions(-) diff --git a/Documentation/mm/multigen_lru.rst b/Documentation/mm/multigen_lru.rst index 770b5d539856..5f1f6ecbb79b 100644 --- a/Documentation/mm/multigen_lru.rst +++ b/Documentation/mm/multigen_lru.rst @@ -186,9 +186,40 @@ is false positive, the cost is an additional scan of a range of PTEs, which may yield hot pages anyway. Parameters of the filter itself can control the false positive rate in the limit. +Memcg LRU +--------- +An memcg LRU is a per-node LRU of memcgs. It is also an LRU of LRUs, +since each node and memcg combination has an LRU of folios (see +``mem_cgroup_lruvec()``). Its goal is to improve the scalability of +global reclaim, which is critical to system-wide memory overcommit in +data centers. Note that memcg LRU only applies to global reclaim. + +The basic structure of an memcg LRU can be understood by an analogy to +the active/inactive LRU (of folios): + +1. It has the young and the old (generations), i.e., the counterparts + to the active and the inactive; +2. The increment of ``max_seq`` triggers promotion, i.e., the + counterpart to activation; +3. Other events trigger similar operations, e.g., offlining an memcg + triggers demotion, i.e., the counterpart to deactivation. + +In terms of global reclaim, it has two distinct features: + +1. Sharding, which allows each thread to start at a random memcg (in + the old generation) and improves parallelism; +2. Eventual fairness, which allows direct reclaim to bail out at will + and reduces latency without affecting fairness over some time. + +In terms of traversing memcgs during global reclaim, it improves the +best-case complexity from O(n) to O(1) and does not affect the +worst-case complexity O(n). Therefore, on average, it has a sublinear +complexity. + Summary ------- -The multi-gen LRU can be disassembled into the following parts: +The multi-gen LRU (of folios) can be disassembled into the following +parts: * Generations * Rmap walks diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h index 9a8e2049333c..5567f4850243 100644 --- a/include/linux/mm_inline.h +++ b/include/linux/mm_inline.h @@ -122,18 +122,6 @@ static inline bool lru_gen_in_fault(void) return current->in_lru_fault; } -#ifdef CONFIG_MEMCG -static inline int lru_gen_memcg_seg(struct lruvec *lruvec) -{ - return READ_ONCE(lruvec->lrugen.seg); -} -#else -static inline int lru_gen_memcg_seg(struct lruvec *lruvec) -{ - return 0; -} -#endif - static inline int lru_gen_from_seq(unsigned long seq) { return seq % MAX_NR_GENS; @@ -309,11 +297,6 @@ static inline bool lru_gen_in_fault(void) return false; } -static inline int lru_gen_memcg_seg(struct lruvec *lruvec) -{ - return 0; -} - static inline bool lru_gen_add_folio(struct lruvec *lruvec, struct folio *folio, bool reclaiming) { return false; diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index c0977673c119..1e596469a789 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -366,15 +366,6 @@ struct page_vma_mapped_walk; #define LRU_GEN_MASK ((BIT(LRU_GEN_WIDTH) - 1) << LRU_GEN_PGOFF) #define LRU_REFS_MASK ((BIT(LRU_REFS_WIDTH) - 1) << LRU_REFS_PGOFF) -/* see the comment on MEMCG_NR_GENS */ -enum { - MEMCG_LRU_NOP, - MEMCG_LRU_HEAD, - MEMCG_LRU_TAIL, - MEMCG_LRU_OLD, - MEMCG_LRU_YOUNG, -}; - #ifdef CONFIG_LRU_GEN enum { @@ -555,7 +546,7 @@ void lru_gen_exit_memcg(struct mem_cgroup *memcg); void lru_gen_online_memcg(struct mem_cgroup *memcg); void lru_gen_offline_memcg(struct mem_cgroup *memcg); void lru_gen_release_memcg(struct mem_cgroup *memcg); -void lru_gen_rotate_memcg(struct lruvec *lruvec, int op); +void lru_gen_soft_reclaim(struct lruvec *lruvec); #else /* !CONFIG_MEMCG */ @@ -606,7 +597,7 @@ static inline void lru_gen_release_memcg(struct mem_cgroup *memcg) { } -static inline void lru_gen_rotate_memcg(struct lruvec *lruvec, int op) +static inline void lru_gen_soft_reclaim(struct lruvec *lruvec) { } diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 7815d556e38c..5397aeb43986 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -478,12 +478,8 @@ static void mem_cgroup_update_tree(struct mem_cgroup *memcg, int nid) struct mem_cgroup_tree_per_node *mctz; if (lru_gen_enabled()) { - struct lruvec *lruvec = &memcg->nodeinfo[nid]->lruvec; - - /* see the comment on MEMCG_NR_GENS */ - if (soft_limit_excess(memcg) && lru_gen_memcg_seg(lruvec) != MEMCG_LRU_HEAD) - lru_gen_rotate_memcg(lruvec, MEMCG_LRU_HEAD); - + if (soft_limit_excess(memcg)) + lru_gen_soft_reclaim(&memcg->nodeinfo[nid]->lruvec); return; } diff --git a/mm/vmscan.c b/mm/vmscan.c index aa37b6e3e280..12e77cf31036 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4687,6 +4687,148 @@ void lru_gen_look_around(struct page_vma_mapped_walk *pvmw) mem_cgroup_unlock_pages(); } +/****************************************************************************** + * memcg LRU + ******************************************************************************/ + +/* see the comment on MEMCG_NR_GENS */ +enum { + MEMCG_LRU_NOP, + MEMCG_LRU_HEAD, + MEMCG_LRU_TAIL, + MEMCG_LRU_OLD, + MEMCG_LRU_YOUNG, +}; + +#ifdef CONFIG_MEMCG + +static int lru_gen_memcg_seg(struct lruvec *lruvec) +{ + return READ_ONCE(lruvec->lrugen.seg); +} + +static void lru_gen_rotate_memcg(struct lruvec *lruvec, int op) +{ + int seg; + int old, new; + int bin = get_random_u32_below(MEMCG_NR_BINS); + struct pglist_data *pgdat = lruvec_pgdat(lruvec); + + spin_lock(&pgdat->memcg_lru.lock); + + VM_WARN_ON_ONCE(hlist_nulls_unhashed(&lruvec->lrugen.list)); + + seg = 0; + new = old = lruvec->lrugen.gen; + + /* see the comment on MEMCG_NR_GENS */ + if (op == MEMCG_LRU_HEAD) + seg = MEMCG_LRU_HEAD; + else if (op == MEMCG_LRU_TAIL) + seg = MEMCG_LRU_TAIL; + else if (op == MEMCG_LRU_OLD) + new = get_memcg_gen(pgdat->memcg_lru.seq); + else if (op == MEMCG_LRU_YOUNG) + new = get_memcg_gen(pgdat->memcg_lru.seq + 1); + else + VM_WARN_ON_ONCE(true); + + hlist_nulls_del_rcu(&lruvec->lrugen.list); + + if (op == MEMCG_LRU_HEAD || op == MEMCG_LRU_OLD) + hlist_nulls_add_head_rcu(&lruvec->lrugen.list, &pgdat->memcg_lru.fifo[new][bin]); + else + hlist_nulls_add_tail_rcu(&lruvec->lrugen.list, &pgdat->memcg_lru.fifo[new][bin]); + + pgdat->memcg_lru.nr_memcgs[old]--; + pgdat->memcg_lru.nr_memcgs[new]++; + + lruvec->lrugen.gen = new; + WRITE_ONCE(lruvec->lrugen.seg, seg); + + if (!pgdat->memcg_lru.nr_memcgs[old] && old == get_memcg_gen(pgdat->memcg_lru.seq)) + WRITE_ONCE(pgdat->memcg_lru.seq, pgdat->memcg_lru.seq + 1); + + spin_unlock(&pgdat->memcg_lru.lock); +} + +void lru_gen_online_memcg(struct mem_cgroup *memcg) +{ + int gen; + int nid; + int bin = get_random_u32_below(MEMCG_NR_BINS); + + for_each_node(nid) { + struct pglist_data *pgdat = NODE_DATA(nid); + struct lruvec *lruvec = get_lruvec(memcg, nid); + + spin_lock(&pgdat->memcg_lru.lock); + + VM_WARN_ON_ONCE(!hlist_nulls_unhashed(&lruvec->lrugen.list)); + + gen = get_memcg_gen(pgdat->memcg_lru.seq); + + hlist_nulls_add_tail_rcu(&lruvec->lrugen.list, &pgdat->memcg_lru.fifo[gen][bin]); + pgdat->memcg_lru.nr_memcgs[gen]++; + + lruvec->lrugen.gen = gen; + + spin_unlock(&pgdat->memcg_lru.lock); + } +} + +void lru_gen_offline_memcg(struct mem_cgroup *memcg) +{ + int nid; + + for_each_node(nid) { + struct lruvec *lruvec = get_lruvec(memcg, nid); + + lru_gen_rotate_memcg(lruvec, MEMCG_LRU_OLD); + } +} + +void lru_gen_release_memcg(struct mem_cgroup *memcg) +{ + int gen; + int nid; + + for_each_node(nid) { + struct pglist_data *pgdat = NODE_DATA(nid); + struct lruvec *lruvec = get_lruvec(memcg, nid); + + spin_lock(&pgdat->memcg_lru.lock); + + VM_WARN_ON_ONCE(hlist_nulls_unhashed(&lruvec->lrugen.list)); + + gen = lruvec->lrugen.gen; + + hlist_nulls_del_rcu(&lruvec->lrugen.list); + pgdat->memcg_lru.nr_memcgs[gen]--; + + if (!pgdat->memcg_lru.nr_memcgs[gen] && gen == get_memcg_gen(pgdat->memcg_lru.seq)) + WRITE_ONCE(pgdat->memcg_lru.seq, pgdat->memcg_lru.seq + 1); + + spin_unlock(&pgdat->memcg_lru.lock); + } +} + +void lru_gen_soft_reclaim(struct lruvec *lruvec) +{ + /* see the comment on MEMCG_NR_GENS */ + if (lru_gen_memcg_seg(lruvec) != MEMCG_LRU_HEAD) + lru_gen_rotate_memcg(lruvec, MEMCG_LRU_HEAD); +} + +#else /* !CONFIG_MEMCG */ + +static int lru_gen_memcg_seg(struct lruvec *lruvec) +{ + return 0; +} + +#endif + /****************************************************************************** * the eviction ******************************************************************************/ @@ -5384,53 +5526,6 @@ done: pgdat->kswapd_failures = 0; } -#ifdef CONFIG_MEMCG -void lru_gen_rotate_memcg(struct lruvec *lruvec, int op) -{ - int seg; - int old, new; - int bin = get_random_u32_below(MEMCG_NR_BINS); - struct pglist_data *pgdat = lruvec_pgdat(lruvec); - - spin_lock(&pgdat->memcg_lru.lock); - - VM_WARN_ON_ONCE(hlist_nulls_unhashed(&lruvec->lrugen.list)); - - seg = 0; - new = old = lruvec->lrugen.gen; - - /* see the comment on MEMCG_NR_GENS */ - if (op == MEMCG_LRU_HEAD) - seg = MEMCG_LRU_HEAD; - else if (op == MEMCG_LRU_TAIL) - seg = MEMCG_LRU_TAIL; - else if (op == MEMCG_LRU_OLD) - new = get_memcg_gen(pgdat->memcg_lru.seq); - else if (op == MEMCG_LRU_YOUNG) - new = get_memcg_gen(pgdat->memcg_lru.seq + 1); - else - VM_WARN_ON_ONCE(true); - - hlist_nulls_del_rcu(&lruvec->lrugen.list); - - if (op == MEMCG_LRU_HEAD || op == MEMCG_LRU_OLD) - hlist_nulls_add_head_rcu(&lruvec->lrugen.list, &pgdat->memcg_lru.fifo[new][bin]); - else - hlist_nulls_add_tail_rcu(&lruvec->lrugen.list, &pgdat->memcg_lru.fifo[new][bin]); - - pgdat->memcg_lru.nr_memcgs[old]--; - pgdat->memcg_lru.nr_memcgs[new]++; - - lruvec->lrugen.gen = new; - WRITE_ONCE(lruvec->lrugen.seg, seg); - - if (!pgdat->memcg_lru.nr_memcgs[old] && old == get_memcg_gen(pgdat->memcg_lru.seq)) - WRITE_ONCE(pgdat->memcg_lru.seq, pgdat->memcg_lru.seq + 1); - - spin_unlock(&pgdat->memcg_lru.lock); -} -#endif - /****************************************************************************** * state change ******************************************************************************/ @@ -6076,67 +6171,6 @@ void lru_gen_exit_memcg(struct mem_cgroup *memcg) } } -void lru_gen_online_memcg(struct mem_cgroup *memcg) -{ - int gen; - int nid; - int bin = get_random_u32_below(MEMCG_NR_BINS); - - for_each_node(nid) { - struct pglist_data *pgdat = NODE_DATA(nid); - struct lruvec *lruvec = get_lruvec(memcg, nid); - - spin_lock(&pgdat->memcg_lru.lock); - - VM_WARN_ON_ONCE(!hlist_nulls_unhashed(&lruvec->lrugen.list)); - - gen = get_memcg_gen(pgdat->memcg_lru.seq); - - hlist_nulls_add_tail_rcu(&lruvec->lrugen.list, &pgdat->memcg_lru.fifo[gen][bin]); - pgdat->memcg_lru.nr_memcgs[gen]++; - - lruvec->lrugen.gen = gen; - - spin_unlock(&pgdat->memcg_lru.lock); - } -} - -void lru_gen_offline_memcg(struct mem_cgroup *memcg) -{ - int nid; - - for_each_node(nid) { - struct lruvec *lruvec = get_lruvec(memcg, nid); - - lru_gen_rotate_memcg(lruvec, MEMCG_LRU_OLD); - } -} - -void lru_gen_release_memcg(struct mem_cgroup *memcg) -{ - int gen; - int nid; - - for_each_node(nid) { - struct pglist_data *pgdat = NODE_DATA(nid); - struct lruvec *lruvec = get_lruvec(memcg, nid); - - spin_lock(&pgdat->memcg_lru.lock); - - VM_WARN_ON_ONCE(hlist_nulls_unhashed(&lruvec->lrugen.list)); - - gen = lruvec->lrugen.gen; - - hlist_nulls_del_rcu(&lruvec->lrugen.list); - pgdat->memcg_lru.nr_memcgs[gen]--; - - if (!pgdat->memcg_lru.nr_memcgs[gen] && gen == get_memcg_gen(pgdat->memcg_lru.seq)) - WRITE_ONCE(pgdat->memcg_lru.seq, pgdat->memcg_lru.seq + 1); - - spin_unlock(&pgdat->memcg_lru.lock); - } -} - #endif /* CONFIG_MEMCG */ static int __init init_lru_gen(void) From 24307a538b8a7f95a409bcce4ecb5a2f5e40962c Mon Sep 17 00:00:00 2001 From: "T.J. Alumbaugh" Date: Wed, 18 Jan 2023 00:18:25 +0000 Subject: [PATCH 240/269] UPSTREAM: mm: multi-gen LRU: improve lru_gen_exit_memcg() Add warnings and poison ->next. Link: https://lkml.kernel.org/r/20230118001827.1040870-6-talumbau@google.com Change-Id: I53de9e04c1ae941e122b33cd45d2bbb5f34aae0c Signed-off-by: T.J. Alumbaugh Cc: Yu Zhao Signed-off-by: Andrew Morton (cherry picked from commit 37cc99979d04cca677c0ad5c0acd1149ec165d1b) Bug: 274865848 Signed-off-by: T.J. Mercier --- mm/vmscan.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mm/vmscan.c b/mm/vmscan.c index 12e77cf31036..e3bb6f3cf45c 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -6158,12 +6158,17 @@ void lru_gen_exit_memcg(struct mem_cgroup *memcg) int i; int nid; + VM_WARN_ON_ONCE(!list_empty(&memcg->mm_list.fifo)); + for_each_node(nid) { struct lruvec *lruvec = get_lruvec(memcg, nid); + VM_WARN_ON_ONCE(lruvec->mm_state.nr_walkers); VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0, sizeof(lruvec->lrugen.nr_pages))); + lruvec->lrugen.list.next = LIST_POISON1; + for (i = 0; i < NR_BLOOM_FILTERS; i++) { bitmap_free(lruvec->mm_state.filters[i]); lruvec->mm_state.filters[i] = NULL; From fae7f9ea581326a162f0ba15d481b16364d00d74 Mon Sep 17 00:00:00 2001 From: "T.J. Alumbaugh" Date: Wed, 18 Jan 2023 00:18:26 +0000 Subject: [PATCH 241/269] UPSTREAM: mm: multi-gen LRU: improve walk_pmd_range() Improve readability of walk_pmd_range() and walk_pmd_range_locked(). Link: https://lkml.kernel.org/r/20230118001827.1040870-7-talumbau@google.com Change-Id: Ia084fbf53fe989673b7804ca8ca520af12d7d52a Signed-off-by: T.J. Alumbaugh Cc: Yu Zhao Signed-off-by: Andrew Morton (cherry picked from commit b5ff4133617d0eced35b685da0bd0929dd9fabb7) Bug: 274865848 Signed-off-by: T.J. Mercier --- mm/vmscan.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index e3bb6f3cf45c..455174318eb6 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3978,8 +3978,8 @@ restart: } #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG) -static void walk_pmd_range_locked(pud_t *pud, unsigned long next, struct vm_area_struct *vma, - struct mm_walk *args, unsigned long *bitmap, unsigned long *start) +static void walk_pmd_range_locked(pud_t *pud, unsigned long addr, struct vm_area_struct *vma, + struct mm_walk *args, unsigned long *bitmap, unsigned long *first) { int i; pmd_t *pmd; @@ -3992,18 +3992,19 @@ static void walk_pmd_range_locked(pud_t *pud, unsigned long next, struct vm_area VM_WARN_ON_ONCE(pud_leaf(*pud)); /* try to batch at most 1+MIN_LRU_BATCH+1 entries */ - if (*start == -1) { - *start = next; + if (*first == -1) { + *first = addr; + bitmap_zero(bitmap, MIN_LRU_BATCH); return; } - i = next == -1 ? 0 : pmd_index(next) - pmd_index(*start); + i = addr == -1 ? 0 : pmd_index(addr) - pmd_index(*first); if (i && i <= MIN_LRU_BATCH) { __set_bit(i - 1, bitmap); return; } - pmd = pmd_offset(pud, *start); + pmd = pmd_offset(pud, *first); ptl = pmd_lockptr(args->mm, pmd); if (!spin_trylock(ptl)) @@ -4014,15 +4015,16 @@ static void walk_pmd_range_locked(pud_t *pud, unsigned long next, struct vm_area do { unsigned long pfn; struct folio *folio; - unsigned long addr = i ? (*start & PMD_MASK) + i * PMD_SIZE : *start; + + /* don't round down the first address */ + addr = i ? (*first & PMD_MASK) + i * PMD_SIZE : *first; pfn = get_pmd_pfn(pmd[i], vma, addr); if (pfn == -1) goto next; if (!pmd_trans_huge(pmd[i])) { - if (arch_has_hw_nonleaf_pmd_young() && - get_cap(LRU_GEN_NONLEAF_YOUNG)) + if (arch_has_hw_nonleaf_pmd_young() && get_cap(LRU_GEN_NONLEAF_YOUNG)) pmdp_test_and_clear_young(vma, addr, pmd + i); goto next; } @@ -4051,12 +4053,11 @@ next: arch_leave_lazy_mmu_mode(); spin_unlock(ptl); done: - *start = -1; - bitmap_zero(bitmap, MIN_LRU_BATCH); + *first = -1; } #else -static void walk_pmd_range_locked(pud_t *pud, unsigned long next, struct vm_area_struct *vma, - struct mm_walk *args, unsigned long *bitmap, unsigned long *start) +static void walk_pmd_range_locked(pud_t *pud, unsigned long addr, struct vm_area_struct *vma, + struct mm_walk *args, unsigned long *bitmap, unsigned long *first) { } #endif @@ -4069,9 +4070,9 @@ static void walk_pmd_range(pud_t *pud, unsigned long start, unsigned long end, unsigned long next; unsigned long addr; struct vm_area_struct *vma; - unsigned long pos = -1; + unsigned long bitmap[BITS_TO_LONGS(MIN_LRU_BATCH)]; + unsigned long first = -1; struct lru_gen_mm_walk *walk = args->private; - unsigned long bitmap[BITS_TO_LONGS(MIN_LRU_BATCH)] = {}; VM_WARN_ON_ONCE(pud_leaf(*pud)); @@ -4113,18 +4114,17 @@ restart: if (pfn < pgdat->node_start_pfn || pfn >= pgdat_end_pfn(pgdat)) continue; - walk_pmd_range_locked(pud, addr, vma, args, bitmap, &pos); + walk_pmd_range_locked(pud, addr, vma, args, bitmap, &first); continue; } #endif walk->mm_stats[MM_NONLEAF_TOTAL]++; - if (arch_has_hw_nonleaf_pmd_young() && - get_cap(LRU_GEN_NONLEAF_YOUNG)) { + if (arch_has_hw_nonleaf_pmd_young() && get_cap(LRU_GEN_NONLEAF_YOUNG)) { if (!pmd_young(val)) continue; - walk_pmd_range_locked(pud, addr, vma, args, bitmap, &pos); + walk_pmd_range_locked(pud, addr, vma, args, bitmap, &first); } if (!walk->force_scan && !test_bloom_filter(walk->lruvec, walk->max_seq, pmd + i)) @@ -4141,7 +4141,7 @@ restart: update_bloom_filter(walk->lruvec, walk->max_seq + 1, pmd + i); } - walk_pmd_range_locked(pud, -1, vma, args, bitmap, &pos); + walk_pmd_range_locked(pud, -1, vma, args, bitmap, &first); if (i < PTRS_PER_PMD && get_next_vma(PUD_MASK, PMD_SIZE, args, &start, &end)) goto restart; From 451d7c42eae32ad1601cfe6774be95704d4d312d Mon Sep 17 00:00:00 2001 From: "T.J. Alumbaugh" Date: Wed, 18 Jan 2023 00:18:27 +0000 Subject: [PATCH 242/269] UPSTREAM: mm: multi-gen LRU: simplify lru_gen_look_around() Update the folio generation in place with or without current->reclaim_state->mm_walk. The LRU lock is held for longer, if mm_walk is NULL and the number of folios to update is more than PAGEVEC_SIZE. This causes a measurable regression from the LRU lock contention during a microbencmark. But a tiny regression is not worth the complexity. Link: https://lkml.kernel.org/r/20230118001827.1040870-8-talumbau@google.com Change-Id: I9ce18b4f4062e6c1c13c98ece9422478eb8e1846 Signed-off-by: T.J. Alumbaugh Cc: Yu Zhao Signed-off-by: Andrew Morton (cherry picked from commit abf086721a2f1e6897c57796f7268df1b194c750) Bug: 274865848 Signed-off-by: T.J. Mercier --- mm/vmscan.c | 73 +++++++++++++++++------------------------------------ 1 file changed, 23 insertions(+), 50 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index 455174318eb6..a82873231bf0 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4569,13 +4569,12 @@ static void lru_gen_age_node(struct pglist_data *pgdat, struct scan_control *sc) void lru_gen_look_around(struct page_vma_mapped_walk *pvmw) { int i; - pte_t *pte; unsigned long start; unsigned long end; - unsigned long addr; struct lru_gen_mm_walk *walk; int young = 0; - unsigned long bitmap[BITS_TO_LONGS(MIN_LRU_BATCH)] = {}; + pte_t *pte = pvmw->pte; + unsigned long addr = pvmw->address; struct folio *folio = pfn_folio(pvmw->pfn); struct mem_cgroup *memcg = folio_memcg(folio); struct pglist_data *pgdat = folio_pgdat(folio); @@ -4592,25 +4591,28 @@ void lru_gen_look_around(struct page_vma_mapped_walk *pvmw) /* avoid taking the LRU lock under the PTL when possible */ walk = current->reclaim_state ? current->reclaim_state->mm_walk : NULL; - start = max(pvmw->address & PMD_MASK, pvmw->vma->vm_start); - end = min(pvmw->address | ~PMD_MASK, pvmw->vma->vm_end - 1) + 1; + start = max(addr & PMD_MASK, pvmw->vma->vm_start); + end = min(addr | ~PMD_MASK, pvmw->vma->vm_end - 1) + 1; if (end - start > MIN_LRU_BATCH * PAGE_SIZE) { - if (pvmw->address - start < MIN_LRU_BATCH * PAGE_SIZE / 2) + if (addr - start < MIN_LRU_BATCH * PAGE_SIZE / 2) end = start + MIN_LRU_BATCH * PAGE_SIZE; - else if (end - pvmw->address < MIN_LRU_BATCH * PAGE_SIZE / 2) + else if (end - addr < MIN_LRU_BATCH * PAGE_SIZE / 2) start = end - MIN_LRU_BATCH * PAGE_SIZE; else { - start = pvmw->address - MIN_LRU_BATCH * PAGE_SIZE / 2; - end = pvmw->address + MIN_LRU_BATCH * PAGE_SIZE / 2; + start = addr - MIN_LRU_BATCH * PAGE_SIZE / 2; + end = addr + MIN_LRU_BATCH * PAGE_SIZE / 2; } } - pte = pvmw->pte - (pvmw->address - start) / PAGE_SIZE; + /* folio_update_gen() requires stable folio_memcg() */ + if (!mem_cgroup_trylock_pages(memcg)) + return; - rcu_read_lock(); arch_enter_lazy_mmu_mode(); + pte -= (addr - start) / PAGE_SIZE; + for (i = 0, addr = start; addr != end; i++, addr += PAGE_SIZE) { unsigned long pfn; @@ -4635,56 +4637,27 @@ void lru_gen_look_around(struct page_vma_mapped_walk *pvmw) !folio_test_swapcache(folio))) folio_mark_dirty(folio); + if (walk) { + old_gen = folio_update_gen(folio, new_gen); + if (old_gen >= 0 && old_gen != new_gen) + update_batch_size(walk, folio, old_gen, new_gen); + + continue; + } + old_gen = folio_lru_gen(folio); if (old_gen < 0) folio_set_referenced(folio); else if (old_gen != new_gen) - __set_bit(i, bitmap); + folio_activate(folio); } arch_leave_lazy_mmu_mode(); - rcu_read_unlock(); + mem_cgroup_unlock_pages(); /* feedback from rmap walkers to page table walkers */ if (suitable_to_scan(i, young)) update_bloom_filter(lruvec, max_seq, pvmw->pmd); - - if (!walk && bitmap_weight(bitmap, MIN_LRU_BATCH) < PAGEVEC_SIZE) { - for_each_set_bit(i, bitmap, MIN_LRU_BATCH) { - folio = pfn_folio(pte_pfn(pte[i])); - folio_activate(folio); - } - return; - } - - /* folio_update_gen() requires stable folio_memcg() */ - if (!mem_cgroup_trylock_pages(memcg)) - return; - - if (!walk) { - spin_lock_irq(&lruvec->lru_lock); - new_gen = lru_gen_from_seq(lruvec->lrugen.max_seq); - } - - for_each_set_bit(i, bitmap, MIN_LRU_BATCH) { - folio = pfn_folio(pte_pfn(pte[i])); - if (folio_memcg_rcu(folio) != memcg) - continue; - - old_gen = folio_update_gen(folio, new_gen); - if (old_gen < 0 || old_gen == new_gen) - continue; - - if (walk) - update_batch_size(walk, folio, old_gen, new_gen); - else - lru_gen_update_size(lruvec, folio, old_gen, new_gen); - } - - if (!walk) - spin_unlock_irq(&lruvec->lru_lock); - - mem_cgroup_unlock_pages(); } /****************************************************************************** From e29773ec209b5a9648bdb4244e372c1acd0d335b Mon Sep 17 00:00:00 2001 From: Sachin Gupta Date: Fri, 27 May 2022 17:49:06 +0530 Subject: [PATCH 243/269] ANDROID: scsi: ufs: Add hook to influence the UFS clock scaling policy Add a vendor hook in ufshcd_devfreq_target() to allow vendor modules to influence the UFS clock scaling policy. Bug: 277668337 Change-Id: I64b9b77661fffc6cc96fa610985483e6cfc6542b Signed-off-by: Nitin Rawat Signed-off-by: Sachin Gupta Signed-off-by: Ed Tsai (cherry picked from commit c8ed7439af7af36412f8ced3979772cf3a529ec4) --- drivers/android/vendor_hooks.c | 1 + drivers/ufs/core/ufshcd.c | 7 ++++++- include/trace/hooks/ufshcd.h | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 66e0acb9f15b..3fc5ac4f3dc1 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -110,6 +110,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_uic_command); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_tm_command); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_check_int_errors); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sdev); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_clock_scaling); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_iommu_setup_dma_ops); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_iommu_alloc_insert_iova); diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index d1a228e1f6bf..3fe077e4e2ec 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -1415,6 +1415,8 @@ static int ufshcd_devfreq_target(struct device *dev, struct list_head *clk_list = &hba->clk_list_head; struct ufs_clk_info *clki; unsigned long irq_flags; + bool force_out = false; + bool force_scaling = false; if (!ufshcd_is_clkscaling_supported(hba)) return -EINVAL; @@ -1440,8 +1442,11 @@ static int ufshcd_devfreq_target(struct device *dev, scale_up = *freq == clki->max_freq; if (!scale_up) *freq = clki->min_freq; + + trace_android_vh_ufs_clock_scaling(hba, &force_out, &force_scaling, &scale_up); + /* Update the frequency */ - if (!ufshcd_is_devfreq_scaling_required(hba, scale_up)) { + if (force_out || (!force_scaling && !ufshcd_is_devfreq_scaling_required(hba, scale_up))) { spin_unlock_irqrestore(hba->host->host_lock, irq_flags); ret = 0; goto out; /* no state change required */ diff --git a/include/trace/hooks/ufshcd.h b/include/trace/hooks/ufshcd.h index 5b264d12c362..c08848de8ac2 100644 --- a/include/trace/hooks/ufshcd.h +++ b/include/trace/hooks/ufshcd.h @@ -54,6 +54,9 @@ DECLARE_HOOK(android_vh_ufs_update_sdev, TP_PROTO(struct scsi_device *sdev), TP_ARGS(sdev)); +DECLARE_HOOK(android_vh_ufs_clock_scaling, + TP_PROTO(struct ufs_hba *hba, bool *force_out, bool *force_scaling, bool *scale_up), + TP_ARGS(hba, force_out, force_scaling, scale_up)); #endif /* _TRACE_HOOK_UFSHCD_H */ /* This part must be outside protection */ #include From 74975d13f3d7df66b142c4c67c55664fcd4435e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=94=A1=E5=AE=97=E8=BB=92?= Date: Wed, 12 Apr 2023 01:33:53 +0000 Subject: [PATCH 244/269] ANDROID: Add ufs symbol for mtk Add android_vh_ufs_clock_scaling to MTK symbol list Bug: 277668337 Change-Id: Ieda17e4daff8ce5ee699fbfbf5d4238303b81ef2 Signed-off-by: Ed Tsai --- android/abi_gki_aarch64.stg | 35 +++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_mtk | 2 ++ 2 files changed, 37 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index d3ade00abe44..4a5382a59cf1 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -311045,6 +311045,15 @@ function { parameter_id: 0x6720d32f parameter_id: 0x0b756bd6 } +function { + id: 0x9bb5868f + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x078316ff + parameter_id: 0x11cfee5a + parameter_id: 0x11cfee5a + parameter_id: 0x11cfee5a +} function { id: 0x9bb62df9 return_type_id: 0x6720d32f @@ -324861,6 +324870,15 @@ elf_symbol { type_id: 0x9baae9ef full_name: "__traceiter_android_vh_ufs_check_int_errors" } +elf_symbol { + id: 0x6a6dc806 + name: "__traceiter_android_vh_ufs_clock_scaling" + is_defined: true + symbol_type: FUNCTION + crc: 0xce9715cc + type_id: 0x9bb5868f + full_name: "__traceiter_android_vh_ufs_clock_scaling" +} elf_symbol { id: 0xa56348c9 name: "__traceiter_android_vh_ufs_compl_command" @@ -326346,6 +326364,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_ufs_check_int_errors" } +elf_symbol { + id: 0x08a49528 + name: "__tracepoint_android_vh_ufs_clock_scaling" + is_defined: true + symbol_type: OBJECT + crc: 0x7310f377 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_ufs_clock_scaling" +} elf_symbol { id: 0xa03a7d43 name: "__tracepoint_android_vh_ufs_compl_command" @@ -371096,6 +371123,10 @@ symbols { key: "__traceiter_android_vh_ufs_check_int_errors" value: 0xe31bb308 } + symbol { + key: "__traceiter_android_vh_ufs_clock_scaling" + value: 0x6a6dc806 + } symbol { key: "__traceiter_android_vh_ufs_compl_command" value: 0xa56348c9 @@ -371756,6 +371787,10 @@ symbols { key: "__tracepoint_android_vh_ufs_check_int_errors" value: 0x609a86da } + symbol { + key: "__tracepoint_android_vh_ufs_clock_scaling" + value: 0x08a49528 + } symbol { key: "__tracepoint_android_vh_ufs_compl_command" value: 0xa03a7d43 diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index 5b3afac1f080..00c56716604f 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -2043,11 +2043,13 @@ trace_event_raw_init trace_event_reg trace_handle_return + __traceiter_android_vh_ufs_clock_scaling __traceiter_gpu_mem_total __traceiter_mmap_lock_acquire_returned __traceiter_mmap_lock_released __traceiter_mmap_lock_start_locking trace_output_call + __tracepoint_android_vh_ufs_clock_scaling __tracepoint_gpu_mem_total __tracepoint_mmap_lock_acquire_returned __tracepoint_mmap_lock_released From 39db5c72413aa306477c4d73a6743f3cfd85a62f Mon Sep 17 00:00:00 2001 From: Will McVicker Date: Tue, 11 Apr 2023 16:32:46 -0700 Subject: [PATCH 245/269] ANDROID: update the pixel symbol list Add the symbols: kthread_create_on_cpu pm_runtime_get_if_active usb_udc_vbus_handler Bug: 277396090 Change-Id: I29fc958d50cd28901333755d11001789215d1c57 Signed-off-by: Will McVicker --- android/abi_gki_aarch64.stg | 47 +++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_pixel | 3 +++ 2 files changed, 50 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 4a5382a59cf1..e280d5237631 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -297128,6 +297128,14 @@ function { parameter_id: 0xf435685e parameter_id: 0x33756485 } +function { + id: 0x70203fbf + return_type_id: 0x1d19a9d5 + parameter_id: 0x2c7bd73f + parameter_id: 0x18bd6530 + parameter_id: 0x4585663f + parameter_id: 0x3e10b518 +} function { id: 0x7028bf98 return_type_id: 0x1d19a9d5 @@ -347730,6 +347738,15 @@ elf_symbol { type_id: 0x1230d8bc full_name: "kthread_complete_and_exit" } +elf_symbol { + id: 0x4ed76f28 + name: "kthread_create_on_cpu" + is_defined: true + symbol_type: FUNCTION + crc: 0x10a0b150 + type_id: 0x70203fbf + full_name: "kthread_create_on_cpu" +} elf_symbol { id: 0x54d851dc name: "kthread_create_on_node" @@ -354272,6 +354289,15 @@ elf_symbol { type_id: 0x9d16dd74 full_name: "pm_runtime_force_suspend" } +elf_symbol { + id: 0x322949f1 + name: "pm_runtime_get_if_active" + is_defined: true + symbol_type: FUNCTION + crc: 0x8ca898f3 + type_id: 0x9ca3200b + full_name: "pm_runtime_get_if_active" +} elf_symbol { id: 0x878b97bb name: "pm_runtime_irq_safe" @@ -366138,6 +366164,15 @@ elf_symbol { type_id: 0x9e0a7037 full_name: "usb_submit_urb" } +elf_symbol { + id: 0x5d6fb7c5 + name: "usb_udc_vbus_handler" + is_defined: true + symbol_type: FUNCTION + crc: 0xff906e8b + type_id: 0x1874e22c + full_name: "usb_udc_vbus_handler" +} elf_symbol { id: 0x4eea2829 name: "usb_unanchor_urb" @@ -381279,6 +381314,10 @@ symbols { key: "kthread_complete_and_exit" value: 0xd20ecdb9 } + symbol { + key: "kthread_create_on_cpu" + value: 0x4ed76f28 + } symbol { key: "kthread_create_on_node" value: 0x54d851dc @@ -384187,6 +384226,10 @@ symbols { key: "pm_runtime_force_suspend" value: 0x80df38ea } + symbol { + key: "pm_runtime_get_if_active" + value: 0x322949f1 + } symbol { key: "pm_runtime_irq_safe" value: 0x878b97bb @@ -389463,6 +389506,10 @@ symbols { key: "usb_submit_urb" value: 0x6fe64b22 } + symbol { + key: "usb_udc_vbus_handler" + value: 0x5d6fb7c5 + } symbol { key: "usb_unanchor_urb" value: 0x4eea2829 diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index 04cbd20f521c..f7b669111ff0 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -990,6 +990,7 @@ kthread_bind_mask kthread_cancel_delayed_work_sync kthread_complete_and_exit + kthread_create_on_cpu kthread_create_on_node kthread_create_worker kthread_delayed_work_timer_fn @@ -1304,6 +1305,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_resume @@ -1882,6 +1884,7 @@ usb_role_switch_unregister usb_speed_string usb_string_id + usb_udc_vbus_handler usb_unregister_notify __usecs_to_jiffies usleep_range_state From c8e53ed372705663ee2752c71cf015bb2d17d739 Mon Sep 17 00:00:00 2001 From: Vincent Donnefort Date: Thu, 6 Apr 2023 15:37:05 +0100 Subject: [PATCH 246/269] ANDROID: KVM: arm64: Add a custom module path for pKVM module loading Currently, no module path will be given to modprobe when loading a pKVM module, the module must then be found in /lib/modules/. Add CONFIG_PKVM_MODULE_PATH to allow setting a different path from the kernel config. Bug: 254835242 Change-Id: I4f355518628b44ac03de2cee3d7a90e1ad5bf1e2 Signed-off-by: Vincent Donnefort --- arch/arm64/kvm/Kconfig | 7 +++++++ arch/arm64/kvm/pkvm.c | 34 ++++++++++++++++------------------ 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/arch/arm64/kvm/Kconfig b/arch/arm64/kvm/Kconfig index 815cc118c675..a3853eb6dc20 100644 --- a/arch/arm64/kvm/Kconfig +++ b/arch/arm64/kvm/Kconfig @@ -69,4 +69,11 @@ config PROTECTED_NVHE_STACKTRACE If unsure, or not using protected nVHE (pKVM), say N. +config PKVM_MODULE_PATH + string "Path to pKVM modules" + default "" + help + Directory where the pKVM modules are found. If empty, the modules + will be searched into the default path /lib/modules/. + endif # VIRTUALIZATION diff --git a/arch/arm64/kvm/pkvm.c b/arch/arm64/kvm/pkvm.c index 84eae2b5a2b2..aa240bae0f51 100644 --- a/arch/arm64/kvm/pkvm.c +++ b/arch/arm64/kvm/pkvm.c @@ -606,7 +606,6 @@ early_param("kvm-arm.protected_modules", early_pkvm_modules_cfg); static void free_modprobe_argv(struct subprocess_info *info) { - kfree(info->argv[3]); kfree(info->argv); } @@ -616,7 +615,7 @@ static void free_modprobe_argv(struct subprocess_info *info) * security is enforced by making sure this can be called only when pKVM is * enabled, not yet completely initialized. */ -static int __init pkvm_request_early_module(char *module_name) +static int __init pkvm_request_early_module(char *module_name, char *module_path) { char *modprobe_path = CONFIG_MODPROBE_PATH; struct subprocess_info *info; @@ -627,6 +626,7 @@ static int __init pkvm_request_early_module(char *module_name) NULL }; char **argv; + int idx = 0; if (!is_protected_kvm_enabled()) return -EACCES; @@ -634,33 +634,30 @@ static int __init pkvm_request_early_module(char *module_name) if (static_branch_likely(&kvm_protected_mode_initialized)) return -EACCES; - argv = kmalloc(sizeof(char *[5]), GFP_KERNEL); + argv = kmalloc(sizeof(char *) * 7, GFP_KERNEL); if (!argv) return -ENOMEM; - module_name = kstrdup(module_name, GFP_KERNEL); - if (!module_name) - goto free_argv; - - argv[0] = modprobe_path; - argv[1] = "-q"; - argv[2] = "--"; - argv[3] = module_name; - argv[4] = NULL; + argv[idx++] = modprobe_path; + argv[idx++] = "-q"; + if (*module_path != '\0') { + argv[idx++] = "-d"; + argv[idx++] = module_path; + } + argv[idx++] = "--"; + argv[idx++] = module_name; + argv[idx++] = NULL; info = call_usermodehelper_setup(modprobe_path, argv, envp, GFP_KERNEL, NULL, free_modprobe_argv, NULL); if (!info) - goto free_module_name; + goto err; /* Even with CONFIG_STATIC_USERMODEHELPER we really want this path */ info->path = modprobe_path; return call_usermodehelper_exec(info, UMH_WAIT_PROC | UMH_KILLABLE); - -free_module_name: - kfree(module_name); -free_argv: +err: kfree(argv); return -ENOMEM; @@ -669,6 +666,7 @@ free_argv: int __init pkvm_load_early_modules(void) { char *token, *buf = early_pkvm_modules; + char *module_path = CONFIG_PKVM_MODULE_PATH; int err; while (true) { @@ -678,7 +676,7 @@ int __init pkvm_load_early_modules(void) break; if (*token) { - err = pkvm_request_early_module(token); + err = pkvm_request_early_module(token, module_path); if (err) { pr_err("Failed to load pkvm module %s: %d\n", token, err); From ba5783569305f4ef5a7a670896f99f04dc4ef5b7 Mon Sep 17 00:00:00 2001 From: Vincent Donnefort Date: Tue, 11 Apr 2023 14:38:38 +0100 Subject: [PATCH 247/269] ANDROID: KVM: arm64: Add a fallback for pKVM module loading Fallback to the default module path (/lib/modules/) if module loading failed for the selected path in CONFIG_PKVM_MODULE_PATH. This intends to follow the same mechanism as Android init. Bug: 254835242 Change-Id: Ia7764d57fe71521e4a1fe6d2c85ba057790069a8 Signed-off-by: Vincent Donnefort --- arch/arm64/kvm/pkvm.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kvm/pkvm.c b/arch/arm64/kvm/pkvm.c index aa240bae0f51..a51725ab1861 100644 --- a/arch/arm64/kvm/pkvm.c +++ b/arch/arm64/kvm/pkvm.c @@ -615,7 +615,8 @@ static void free_modprobe_argv(struct subprocess_info *info) * security is enforced by making sure this can be called only when pKVM is * enabled, not yet completely initialized. */ -static int __init pkvm_request_early_module(char *module_name, char *module_path) +static int __init __pkvm_request_early_module(char *module_name, + char *module_path) { char *modprobe_path = CONFIG_MODPROBE_PATH; struct subprocess_info *info; @@ -663,6 +664,23 @@ err: return -ENOMEM; } +static int __init pkvm_request_early_module(char *module_name, char *module_path) +{ + int err = __pkvm_request_early_module(module_name, module_path); + + if (!err) + return 0; + + /* Already tried the default path */ + if (*module_path == '\0') + return err; + + pr_info("loading %s from %s failed, fallback to the default path\n", + module_name, module_path); + + return __pkvm_request_early_module(module_name, ""); +} + int __init pkvm_load_early_modules(void) { char *token, *buf = early_pkvm_modules; From 56e6f8a2c87c4d2154177249eeb32673d828569d Mon Sep 17 00:00:00 2001 From: Vincent Donnefort Date: Tue, 11 Apr 2023 15:15:54 +0100 Subject: [PATCH 248/269] ANDROID: CONFIG_PKVM_MODULE_PATH to /lib/modules/ Android places by default the modules into /lib/modules/ instead of using the default path /lib/modules/. Bug: 254835242 Change-Id: I49ed4be25c29302fc9b99a9f2ef5f1c84df3adc9 Signed-off-by: Vincent Donnefort --- arch/arm64/configs/gki_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index 0b5ee1112eb9..3503866d4016 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -77,6 +77,7 @@ CONFIG_ARM_SCPI_CPUFREQ=y CONFIG_ARM_SCMI_CPUFREQ=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=y +CONFIG_PKVM_MODULE_PATH="/lib/modules/" CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y CONFIG_SHADOW_CALL_STACK=y From fb09c80f7cba6799ec8a38e03afd3c7be5dfbc52 Mon Sep 17 00:00:00 2001 From: Elliot Berman Date: Fri, 3 Feb 2023 13:01:32 -0800 Subject: [PATCH 249/269] FROMGIT: soc: qcom: geni-se: Move qcom-geni-se.h to linux/soc/qcom/geni-se.h Move include/linux/qcom-geni-se.h to include/linux/soc/qcom/geni-se.h. This removes 1 of a few remaining Qualcomm-specific headers into a more approciate subdirectory under include/. Signed-off-by: Elliot Berman Acked-by: Bjorn Andersson Acked-by: Wolfram Sang # for I2C Reviewed-by: Guru Das Srinagesh Link: https://lore.kernel.org/r/20230203210133.3552796-1-quic_eberman@quicinc.com Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 491581f40e4c52c4b36c83e8c75b2210ed7c358a https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git for-next) Bug: 267697978 Change-Id: I4170dbbfc428d815b4341828d9b29ad059bd241e Signed-off-by: Visweswara Tanuku --- drivers/i2c/busses/i2c-qcom-geni.c | 2 +- drivers/soc/qcom/qcom-geni-se.c | 2 +- drivers/spi/spi-geni-qcom.c | 2 +- drivers/tty/serial/qcom_geni_serial.c | 2 +- include/linux/{qcom-geni-se.h => soc/qcom/geni-se.h} | 0 5 files changed, 4 insertions(+), 4 deletions(-) rename include/linux/{qcom-geni-se.h => soc/qcom/geni-se.h} (100%) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c index 8fce98bb77ff..09dd0ed3b566 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -14,7 +14,7 @@ #include #include #include -#include +#include #include #define SE_I2C_TX_TRANS_LEN 0x26c diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-se.c index a0ceeede450f..e442df34bf51 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -14,7 +14,7 @@ #include #include #include -#include +#include /** * DOC: Overview diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c index 4e83cc5b445d..e05e40a49294 100644 --- a/drivers/spi/spi-geni-qcom.c +++ b/drivers/spi/spi-geni-qcom.c @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c index 7905935b9f1b..0292ee03d594 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/linux/qcom-geni-se.h b/include/linux/soc/qcom/geni-se.h similarity index 100% rename from include/linux/qcom-geni-se.h rename to include/linux/soc/qcom/geni-se.h From 33736be95951016ec69afac5abe481235fce2654 Mon Sep 17 00:00:00 2001 From: Visweswara Tanuku Date: Tue, 14 Feb 2023 21:05:28 -0800 Subject: [PATCH 250/269] FROMGIT: soc: qcom: geni-se: Update Tx and Rx fifo depth based on QUP HW version From QUP HW Version 3.10 and above the Tx and Rx fifo depth bits are increased to 23:16 bits from 21:16 bits in SE_HW_PARAM registers accomodating 256bytes of fifo depth. Updated geni_se_get_tx_fifo_depth and geni_se_get_rx_fifo_depth to retrieve right fifo depth based on QUP HW version. Signed-off-by: Visweswara Tanuku Signed-off-by: Bjorn Andersson Link: https://lore.kernel.org/r/20230215050528.9507-1-quic_vtanuku@quicinc.com (cherry picked from commit fe8aa1ba078366ba23fc676efab57183b12a3a81 https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git for-next) Bug: 267697978 Change-Id: I0c32e4433b5c4424ad5d35edde4072116b337ed0 Signed-off-by: Visweswara Tanuku --- include/linux/soc/qcom/geni-se.h | 42 +++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni-se.h index f5672785c0c4..5ea5351f8818 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -242,12 +242,22 @@ struct geni_se { /* SE_HW_PARAM_0 fields */ #define TX_FIFO_WIDTH_MSK GENMASK(29, 24) #define TX_FIFO_WIDTH_SHFT 24 +/* + * For QUP HW Version >= 3.10 Tx fifo depth support is increased + * to 256bytes and corresponding bits are 16 to 23 + */ +#define TX_FIFO_DEPTH_MSK_256_BYTES GENMASK(23, 16) #define TX_FIFO_DEPTH_MSK GENMASK(21, 16) #define TX_FIFO_DEPTH_SHFT 16 /* SE_HW_PARAM_1 fields */ #define RX_FIFO_WIDTH_MSK GENMASK(29, 24) #define RX_FIFO_WIDTH_SHFT 24 +/* + * For QUP HW Version >= 3.10 Rx fifo depth support is increased + * to 256bytes and corresponding bits are 16 to 23 + */ +#define RX_FIFO_DEPTH_MSK_256_BYTES GENMASK(23, 16) #define RX_FIFO_DEPTH_MSK GENMASK(21, 16) #define RX_FIFO_DEPTH_SHFT 16 @@ -388,7 +398,8 @@ static inline void geni_se_abort_s_cmd(struct geni_se *se) /** * geni_se_get_tx_fifo_depth() - Get the TX fifo depth of the serial engine - * @se: Pointer to the concerned serial engine. + * based on QUP HW version + * @se: Pointer to the concerned serial engine. * * This function is used to get the depth i.e. number of elements in the * TX fifo of the serial engine. @@ -397,11 +408,20 @@ static inline void geni_se_abort_s_cmd(struct geni_se *se) */ static inline u32 geni_se_get_tx_fifo_depth(struct geni_se *se) { - u32 val; + u32 val, hw_version, hw_major, hw_minor, tx_fifo_depth_mask; + + hw_version = geni_se_get_qup_hw_version(se); + hw_major = GENI_SE_VERSION_MAJOR(hw_version); + hw_minor = GENI_SE_VERSION_MINOR(hw_version); + + if ((hw_major == 3 && hw_minor >= 10) || hw_major > 3) + tx_fifo_depth_mask = TX_FIFO_DEPTH_MSK_256_BYTES; + else + tx_fifo_depth_mask = TX_FIFO_DEPTH_MSK; val = readl_relaxed(se->base + SE_HW_PARAM_0); - return (val & TX_FIFO_DEPTH_MSK) >> TX_FIFO_DEPTH_SHFT; + return (val & tx_fifo_depth_mask) >> TX_FIFO_DEPTH_SHFT; } /** @@ -424,7 +444,8 @@ static inline u32 geni_se_get_tx_fifo_width(struct geni_se *se) /** * geni_se_get_rx_fifo_depth() - Get the RX fifo depth of the serial engine - * @se: Pointer to the concerned serial engine. + * based on QUP HW version + * @se: Pointer to the concerned serial engine. * * This function is used to get the depth i.e. number of elements in the * RX fifo of the serial engine. @@ -433,11 +454,20 @@ static inline u32 geni_se_get_tx_fifo_width(struct geni_se *se) */ static inline u32 geni_se_get_rx_fifo_depth(struct geni_se *se) { - u32 val; + u32 val, hw_version, hw_major, hw_minor, rx_fifo_depth_mask; + + hw_version = geni_se_get_qup_hw_version(se); + hw_major = GENI_SE_VERSION_MAJOR(hw_version); + hw_minor = GENI_SE_VERSION_MINOR(hw_version); + + if ((hw_major == 3 && hw_minor >= 10) || hw_major > 3) + rx_fifo_depth_mask = RX_FIFO_DEPTH_MSK_256_BYTES; + else + rx_fifo_depth_mask = RX_FIFO_DEPTH_MSK; val = readl_relaxed(se->base + SE_HW_PARAM_1); - return (val & RX_FIFO_DEPTH_MSK) >> RX_FIFO_DEPTH_SHFT; + return (val & rx_fifo_depth_mask) >> RX_FIFO_DEPTH_SHFT; } void geni_se_init(struct geni_se *se, u32 rx_wm, u32 rx_rfr); From ac53cab64c045c598b4539af35eb519720e78cc2 Mon Sep 17 00:00:00 2001 From: Venkata Rao Kakani Date: Wed, 12 Apr 2023 18:49:26 +0530 Subject: [PATCH 251/269] ANDROID: ABI: Add __irq_set_handler and irq_set_handler_data in QCOM symbol list following symbols are updated to QCOM abi symbol list. __irq_set_handler irq_set_handler_data 2 function symbol(s) added 'void __irq_set_handler(unsigned int, irq_flow_handler_t, int, const char*)' 'int irq_set_handler_data(unsigned int, void*)' Bug: 277873112 Change-Id: Ib4e96c5064e4ec408539d128e89737187082ab13 Signed-off-by: Venkata Rao Kakani --- android/abi_gki_aarch64.stg | 34 ++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_qcom | 2 ++ 2 files changed, 36 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index e280d5237631..428f6f3ae3b4 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -282510,6 +282510,14 @@ function { return_type_id: 0xe276adef parameter_id: 0x3e10b518 } +function { + id: 0x032333c6 + return_type_id: 0x48b5725f + parameter_id: 0x4585663f + parameter_id: 0xb0c2eb21 + parameter_id: 0x6720d32f + parameter_id: 0x3e10b518 +} function { id: 0x033c2ce9 return_type_id: 0x48b5725f @@ -322484,6 +322492,15 @@ elf_symbol { type_id: 0xc252de0a full_name: "__irq_resolve_mapping" } +elf_symbol { + id: 0xafc169af + name: "__irq_set_handler" + is_defined: true + symbol_type: FUNCTION + crc: 0x2f31193c + type_id: 0x032333c6 + full_name: "__irq_set_handler" +} elf_symbol { id: 0xcaf40f72 name: "__kfifo_alloc" @@ -346685,6 +346702,15 @@ elf_symbol { type_id: 0x8c834f34 full_name: "irq_set_chip_data" } +elf_symbol { + id: 0x0bad9216 + name: "irq_set_handler_data" + is_defined: true + symbol_type: FUNCTION + crc: 0x3dcb88a0 + type_id: 0x8c834f34 + full_name: "irq_set_handler_data" +} elf_symbol { id: 0xb2b17b6f name: "irq_set_irq_type" @@ -370094,6 +370120,10 @@ symbols { key: "__irq_resolve_mapping" value: 0xe064ac65 } + symbol { + key: "__irq_set_handler" + value: 0xafc169af + } symbol { key: "__kfifo_alloc" value: 0xcaf40f72 @@ -380846,6 +380876,10 @@ symbols { key: "irq_set_chip_data" value: 0x7c906e0d } + symbol { + key: "irq_set_handler_data" + value: 0x0bad9216 + } symbol { key: "irq_set_irq_type" value: 0xb2b17b6f diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index 80ca3a6313da..a7270220d6cc 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -1840,6 +1840,8 @@ irq_set_chained_handler_and_data irq_set_chip_and_handler_name irq_set_chip_data + __irq_set_handler + irq_set_handler_data irq_set_irqchip_state irq_set_irq_type irq_set_irq_wake From faee7b64df9a0b8c5a69d9b5a86fbb4de6b1090e Mon Sep 17 00:00:00 2001 From: Badhri Jagan Sridharan Date: Sat, 8 Apr 2023 03:16:41 +0000 Subject: [PATCH 252/269] ANDROID: Update the ABI symbol list for typec port management 2 function symbol(s) added 'void tcpm_port_clean(struct tcpm_port*)' 'bool tcpm_port_is_toggling(struct tcpm_port*)' Bug: 215766959 Change-Id: Iffaa5ac3a4af04d70d473d11de975c887450f702 Signed-off-by: Badhri Jagan Sridharan --- android/abi_gki_aarch64.stg | 31 +++++++++++++++++++++++++++++++ android/abi_gki_aarch64_pixel | 2 ++ 2 files changed, 33 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 428f6f3ae3b4..04f00720ed93 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -320794,6 +320794,11 @@ function { parameter_id: 0x1e820193 parameter_id: 0x15a30023 } +function { + id: 0xfca015af + return_type_id: 0x6d7f5ff6 + parameter_id: 0x08113aaf +} function { id: 0xfcb3294d return_type_id: 0x6d7f5ff6 @@ -362914,6 +362919,24 @@ elf_symbol { type_id: 0x10815f18 full_name: "tcpm_pd_transmit_complete" } +elf_symbol { + id: 0x4c16a6b4 + name: "tcpm_port_clean" + is_defined: true + symbol_type: FUNCTION + crc: 0xd680581d + type_id: 0x129c1f38 + full_name: "tcpm_port_clean" +} +elf_symbol { + id: 0xc8ad19b6 + name: "tcpm_port_is_toggling" + is_defined: true + symbol_type: FUNCTION + crc: 0xda86a83d + type_id: 0xfca015af + full_name: "tcpm_port_is_toggling" +} elf_symbol { id: 0xdebe76ba name: "tcpm_sink_frs" @@ -388084,6 +388107,14 @@ symbols { key: "tcpm_pd_transmit_complete" value: 0xbabc4102 } + symbol { + key: "tcpm_port_clean" + value: 0x4c16a6b4 + } + symbol { + key: "tcpm_port_is_toggling" + value: 0xc8ad19b6 + } symbol { key: "tcpm_sink_frs" value: 0xdebe76ba diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index f7b669111ff0..8d4dae0d57ef 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -1730,6 +1730,8 @@ tcpm_pd_hard_reset tcpm_pd_receive tcpm_pd_transmit_complete + tcpm_port_clean + tcpm_port_is_toggling tcpm_sink_frs tcpm_sourcing_vbus tcpm_vbus_change From b294edd3c160a876987a0975d59055f39bdcce5e Mon Sep 17 00:00:00 2001 From: Badhri Jagan Sridharan Date: Thu, 13 Apr 2023 06:18:53 +0000 Subject: [PATCH 253/269] ANDROID: Update the ABI symbol list for typec mux 2 function symbol(s) added 'void* typec_mux_get_drvdata(struct typec_mux*)' 'struct typec_mux* typec_mux_register(struct device*, const struct typec_mux_desc*)' Bug: 260915739 Change-Id: Ic3113c5cb932002c55674a565d3db9539669238d Signed-off-by: Badhri Jagan Sridharan --- android/abi_gki_aarch64.stg | 47 +++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_pixel | 2 ++ 2 files changed, 49 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 04f00720ed93..2d5b5130510b 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -24755,6 +24755,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf0128d16 } +pointer_reference { + id: 0x3694d3c2 + kind: POINTER + pointee_type_id: 0xf013a996 +} pointer_reference { id: 0x369662d6 kind: POINTER @@ -32875,6 +32880,11 @@ qualified { qualifier: CONST qualified_type_id: 0xb0510713 } +qualified { + id: 0xf013a996 + qualifier: CONST + qualified_type_id: 0xb00910d2 +} qualified { id: 0xf02f20a3 qualifier: CONST @@ -168736,6 +168746,12 @@ member { type_id: 0x4bf0729d offset: 6592 } +member { + id: 0x3d9ec2a7 + name: "set" + type_id: 0x4086b7da + offset: 64 +} member { id: 0x3d9ecaea name: "set" @@ -255025,6 +255041,18 @@ struct_union { member_id: 0xf832711c } } +struct_union { + id: 0xb00910d2 + kind: STRUCT + name: "typec_mux_desc" + definition { + bytesize: 32 + member_id: 0x6e4d805e + member_id: 0x3d9ec2a7 + member_id: 0x0de5752a + member_id: 0x7020be32 + } +} struct_union { id: 0xe936a00b kind: STRUCT @@ -296928,6 +296956,12 @@ function { parameter_id: 0x3e10b518 parameter_id: 0xa52a0930 } +function { + id: 0x6caf01af + return_type_id: 0x30dd91a5 + parameter_id: 0x0258f96e + parameter_id: 0x3694d3c2 +} function { id: 0x6cb3f0eb return_type_id: 0x014b8475 @@ -363819,6 +363853,15 @@ elf_symbol { type_id: 0x5aa1d598 full_name: "typec_mux_get_drvdata" } +elf_symbol { + id: 0x29215b38 + name: "typec_mux_register" + is_defined: true + symbol_type: FUNCTION + crc: 0x29a3326a + type_id: 0x6caf01af + full_name: "typec_mux_register" +} elf_symbol { id: 0x22d09ebb name: "typec_register_partner" @@ -388507,6 +388550,10 @@ symbols { key: "typec_mux_get_drvdata" value: 0x8fafe0a6 } + symbol { + key: "typec_mux_register" + value: 0x29215b38 + } symbol { key: "typec_register_partner" value: 0x22d09ebb diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index 8d4dae0d57ef..23f1b9ff41e3 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -1806,6 +1806,8 @@ tty_insert_flip_string_fixed_flag tty_kref_put tty_port_tty_get + typec_mux_get_drvdata + typec_mux_register typec_switch_get_drvdata typec_switch_register typec_switch_unregister From 0ddcb394f5165bf7337e8a89c1a7e409cba33a34 Mon Sep 17 00:00:00 2001 From: Benedict Wong Date: Thu, 21 Jul 2022 06:54:43 +0000 Subject: [PATCH 254/269] FROMLIST: xfrm: Ensure policy checked for nested ESP tunnels This change ensures that all nested XFRM packets have their policy checked before decryption of the next layer, so that policies are verified at each intermediate step of the decryption process. Notably, raw ESP/AH packets do not perform policy checks inherently, whereas all other encapsulated packets (UDP, TCP encapsulated) do policy checks after calling xfrm_input handling in the respective encapsulation layer. This is necessary especially for nested tunnels, as the IP addresses, protocol and ports may all change, thus not matching the previous policies. In order to ensure that packets match the relevant inbound templates, the xfrm_policy_check should be done before handing off to the inner XFRM protocol to decrypt and decapsulate. In order to prevent double-checking packets both here and in the encapsulation layers, this check is currently limited to nested tunnel-mode transforms and checked prior to decapsulation of inner tunnel layers (prior to hitting a nested tunnel's xfrm_input, there is no great way to detect a nested tunnel). This is primarily a performance consideration, as a general blanket check at the end of xfrm_input would suffice, but may result in multiple policy checks. Bug: 236423446 Bug: 277711867 Test: Tested against Android Kernel Unit Tests Link: https://lore.kernel.org/netdev/20220824221252.4130836-3-benedictwong@google.com/ Signed-off-by: Benedict Wong Change-Id: I20c5abf39512d7f6cf438c0921a78a84e281b4e9 (cherry picked from commit b5bf2997c3438528631ce0e945884927fbe751ae) --- net/xfrm/xfrm_input.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c index 2defd89da700..d72b478e8a21 100644 --- a/net/xfrm/xfrm_input.c +++ b/net/xfrm/xfrm_input.c @@ -586,6 +586,20 @@ int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type) goto drop; } + /* If nested tunnel, check outer states before context is lost. + * Only nested tunnels need to be checked, since IP addresses change + * as a result of the tunnel mode decapsulation. Similarly, this check + * is limited to nested tunnels to avoid performing another policy + * check on non-nested tunnels. On success, this check also updates the + * secpath's verified_cnt variable, skipping future verifications of + * previously-verified secpath entries. + */ + if ((x->outer_mode.flags & XFRM_MODE_FLAG_TUNNEL) && + sp->verified_cnt < sp->len && + !xfrm_policy_check(NULL, XFRM_POLICY_IN, skb, family)) { + goto drop; + } + skb->mark = xfrm_smark_get(skb->mark, x); sp->xvec[sp->len++] = x; From f2aef35478ac3939f739b81fe23f57afc64c397a Mon Sep 17 00:00:00 2001 From: Kelvin Zhang Date: Wed, 12 Apr 2023 19:15:33 -0700 Subject: [PATCH 255/269] Revert "Fix XFRM-I support for nested ESP tunnels" This reverts commit 0b892d8fe90b82bbfbb8619e7ecf1ec91fb5256c After manual bisection, I found that 0b892d8fe90 is the culprit of the failed android.net.cts.IpSecManagerTunnelTest . Bug: 277711867 Signed-off-by: Kelvin Zhang Change-Id: Ife350047225fb5d825ec92c5d087313c70965acf --- net/xfrm/xfrm_interface.c | 54 +++------------------------------------ net/xfrm/xfrm_policy.c | 3 --- 2 files changed, 4 insertions(+), 53 deletions(-) diff --git a/net/xfrm/xfrm_interface.c b/net/xfrm/xfrm_interface.c index 94a3609548b1..5a67b120c4db 100644 --- a/net/xfrm/xfrm_interface.c +++ b/net/xfrm/xfrm_interface.c @@ -310,52 +310,6 @@ static void xfrmi_scrub_packet(struct sk_buff *skb, bool xnet) skb->mark = 0; } -static int xfrmi_input(struct sk_buff *skb, int nexthdr, __be32 spi, - int encap_type, unsigned short family) -{ - struct sec_path *sp; - - sp = skb_sec_path(skb); - if (sp && (sp->len || sp->olen) && - !xfrm_policy_check(NULL, XFRM_POLICY_IN, skb, family)) - goto discard; - - XFRM_SPI_SKB_CB(skb)->family = family; - if (family == AF_INET) { - XFRM_SPI_SKB_CB(skb)->daddroff = offsetof(struct iphdr, daddr); - XFRM_TUNNEL_SKB_CB(skb)->tunnel.ip4 = NULL; - } else { - XFRM_SPI_SKB_CB(skb)->daddroff = offsetof(struct ipv6hdr, daddr); - XFRM_TUNNEL_SKB_CB(skb)->tunnel.ip6 = NULL; - } - - return xfrm_input(skb, nexthdr, spi, encap_type); -discard: - kfree_skb(skb); - return 0; -} - -static int xfrmi4_rcv(struct sk_buff *skb) -{ - return xfrmi_input(skb, ip_hdr(skb)->protocol, 0, 0, AF_INET); -} - -static int xfrmi6_rcv(struct sk_buff *skb) -{ - return xfrmi_input(skb, skb_network_header(skb)[IP6CB(skb)->nhoff], - 0, 0, AF_INET6); -} - -static int xfrmi4_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type) -{ - return xfrmi_input(skb, nexthdr, spi, encap_type, AF_INET); -} - -static int xfrmi6_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type) -{ - return xfrmi_input(skb, nexthdr, spi, encap_type, AF_INET6); -} - static int xfrmi_rcv_cb(struct sk_buff *skb, int err) { const struct xfrm_mode *inner_mode; @@ -983,8 +937,8 @@ static struct pernet_operations xfrmi_net_ops = { }; static struct xfrm6_protocol xfrmi_esp6_protocol __read_mostly = { - .handler = xfrmi6_rcv, - .input_handler = xfrmi6_input, + .handler = xfrm6_rcv, + .input_handler = xfrm_input, .cb_handler = xfrmi_rcv_cb, .err_handler = xfrmi6_err, .priority = 10, @@ -1034,8 +988,8 @@ static struct xfrm6_tunnel xfrmi_ip6ip_handler __read_mostly = { #endif static struct xfrm4_protocol xfrmi_esp4_protocol __read_mostly = { - .handler = xfrmi4_rcv, - .input_handler = xfrmi4_input, + .handler = xfrm4_rcv, + .input_handler = xfrm_input, .cb_handler = xfrmi_rcv_cb, .err_handler = xfrmi4_err, .priority = 10, diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index 7f49dab3b6b5..52538d536067 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c @@ -3670,9 +3670,6 @@ int __xfrm_policy_check(struct sock *sk, int dir, struct sk_buff *skb, goto reject; } - if (if_id) - secpath_reset(skb); - xfrm_pols_put(pols, npols); return 1; } From a705bf779b8143d8fbc4b1adb6e8e85bcac5ad06 Mon Sep 17 00:00:00 2001 From: Benedict Wong Date: Thu, 30 Jun 2022 06:42:33 +0000 Subject: [PATCH 256/269] FROMLIST: xfrm: Skip checking of already-verified secpath entries This change fixes a bug where inbound packets to nested IPsec tunnels fails to pass policy checks due to the inner tunnel's policy checks not having a reference to the outer policy/template. This causes the policy check to fail, since the first entries in the secpath correlate to the outer tunnel, while the templates being verified are for the inner tunnel. In order to ensure that the appropriate policy and template context is searchable, the policy checks must be done incrementally between each decryption step. As such, this marks secpath entries as having been successfully matched, skipping them (treating as optional) on subsequent policy checks By skipping the immediate error return in the case where the secpath entry had previously been validated, this change allows secpath entries that matched a policy/template previously, while still requiring that each searched template find a match in the secpath. For security: - All templates must have matching secpath entries - Unchanged by current patch; templates that do not match any secpath entry still return -1. This patch simply allows skipping earlier blocks of verified secpath entries - All entries (except trailing transport mode entries) must have a matching template - Unvalidated entries, including transport-mode entries still return the errored index if it does not match the correct template. Bug: 236423446 Bug: 277711867 Test: Tested against Android Kernel Unit Tests Link: https://lore.kernel.org/netdev/20220824221252.4130836-2-benedictwong@google.com/ [benedictwong: fixed minor style issues] Signed-off-by: Benedict Wong Change-Id: Ic32831cb00151d0de2e465f18ec37d5f7b680e54 (cherry picked from commit 970e02667c9689f2fe6ceccfd80596c4b8a368a4) --- include/net/xfrm.h | 1 + net/xfrm/xfrm_input.c | 1 + net/xfrm/xfrm_policy.c | 12 ++++++++++++ 3 files changed, 14 insertions(+) diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 380eea442dd0..ed6b83c6f1ed 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -1039,6 +1039,7 @@ struct xfrm_offload { struct sec_path { int len; int olen; + int verified_cnt; struct xfrm_state *xvec[XFRM_MAX_DEPTH]; struct xfrm_offload ovec[XFRM_MAX_OFFLOAD_DEPTH]; diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c index d72b478e8a21..65e36a76dcb7 100644 --- a/net/xfrm/xfrm_input.c +++ b/net/xfrm/xfrm_input.c @@ -131,6 +131,7 @@ struct sec_path *secpath_set(struct sk_buff *skb) memset(sp->ovec, 0, sizeof(sp->ovec)); sp->olen = 0; sp->len = 0; + sp->verified_cnt = 0; return sp; } diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index 52538d536067..aa7d03e0f1dc 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c @@ -3273,6 +3273,13 @@ xfrm_policy_ok(const struct xfrm_tmpl *tmpl, const struct sec_path *sp, int star if (xfrm_state_ok(tmpl, sp->xvec[idx], family)) return ++idx; if (sp->xvec[idx]->props.mode != XFRM_MODE_TRANSPORT) { + if (idx < sp->verified_cnt) { + /* Secpath entry previously verified, consider optional and + * continue searching + */ + continue; + } + if (start == -1) start = -2-idx; break; @@ -3653,6 +3660,9 @@ int __xfrm_policy_check(struct sock *sk, int dir, struct sk_buff *skb, * Order is _important_. Later we will implement * some barriers, but at the moment barriers * are implied between each two transformations. + * Upon success, marks secpath entries as having been + * verified to allow them to be skipped in future policy + * checks (e.g. nested tunnels). */ for (i = xfrm_nr-1, k = 0; i >= 0; i--) { k = xfrm_policy_ok(tpp[i], sp, k, family); @@ -3671,6 +3681,8 @@ int __xfrm_policy_check(struct sock *sk, int dir, struct sk_buff *skb, } xfrm_pols_put(pols, npols); + sp->verified_cnt = k; + return 1; } XFRM_INC_STATS(net, LINUX_MIB_XFRMINPOLBLOCK); From 9a6275b5a6331f66e02eeb5e08f16b9ac26c1a13 Mon Sep 17 00:00:00 2001 From: Asutosh Das Date: Wed, 8 Mar 2023 15:13:23 -0800 Subject: [PATCH 257/269] UPSTREAM: scsi: ufs: mcq: Use active_reqs to check busy in clock scaling Multi Circular Queue doesn't use outstanding_reqs. However, the UFS clock scaling functions use outstanding_reqs to determine if there are requests pending. When MCQ is enabled, this check always returns false. Hence use active_reqs to check if there are pending requests. Fixes: eacb139b77ff ("scsi: ufs: core: mcq: Enable multi-circular queue") Signed-off-by: Asutosh Das Reviewed-by: Manivannan Sadhasivam Link: https://lore.kernel.org/r/a24e0d646aac70eae0fc5e05fac0c58bb7e6e680.1678317160.git.quic_asutoshd@quicinc.com (cherry picked from commit c6001025d53ab56d7159cf313313c6b5bd250380) Signed-off-by: Martin K. Petersen Bug: 277690227 Change-Id: I77897af6f8d6d1c86837c67050165af5a00ae202 Signed-off-by: Ziqi Chen --- drivers/ufs/core/ufshcd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 3fe077e4e2ec..458d076d7672 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -1505,7 +1505,7 @@ start_window: scaling->window_start_t = curr_t; scaling->tot_busy_t = 0; - if (hba->outstanding_reqs) { + if (scaling->active_reqs) { scaling->busy_start_t = curr_t; scaling->is_busy_started = true; } else { @@ -2123,7 +2123,7 @@ static void ufshcd_clk_scaling_update_busy(struct ufs_hba *hba) spin_lock_irqsave(hba->host->host_lock, flags); hba->clk_scaling.active_reqs--; - if (!hba->outstanding_reqs && scaling->is_busy_started) { + if (!scaling->active_reqs && scaling->is_busy_started) { scaling->tot_busy_t += ktime_to_us(ktime_sub(ktime_get(), scaling->busy_start_t)); scaling->busy_start_t = 0; From b6325c997ce0eae420bca907779aba97afb32a91 Mon Sep 17 00:00:00 2001 From: Badhri Jagan Sridharan Date: Wed, 17 Mar 2021 15:02:21 -0700 Subject: [PATCH 258/269] ANDROID: usb: typec: tcpci: Add vendor hooks for tcpci interface Needed for controlling BC1.2 detection logic specific to the chip architecture. Also, needed to implement additional logic to make debug accessorires specifically designed for Pixel work. These are outside the purview of Type-C spec. OOT_bug: Bug: 169213252 Bug: 168245874 Bug: 173252019 Bug: 271294543 Signed-off-by: Badhri Jagan Sridharan Change-Id: I36fe75dddd8cd4e2054db01ed4fee7ea08dd8702 (cherry picked from commit 08879ea0d6b55ada45b43c015f1d075629c0c460) --- drivers/android/vendor_hooks.c | 2 ++ drivers/usb/typec/tcpm/tcpci.c | 6 +++++- include/trace/hooks/typec.h | 21 +++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 include/trace/hooks/typec.h diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 3fc5ac4f3dc1..2b79318a9a9c 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -55,6 +55,7 @@ #include #include #include +#include /* * Export tracepoints that act as a bare tracehook (ie: have no trace event @@ -169,3 +170,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_disable_thermal_cooling_stats); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_resume); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_audio_usb_offload_connect); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_audio_usb_offload_disconnect); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpci_override_toggling); diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c index 28daef821974..a821761b0973 100644 --- a/drivers/usb/typec/tcpm/tcpci.c +++ b/drivers/usb/typec/tcpm/tcpci.c @@ -16,6 +16,7 @@ #include #include #include +#include #define PD_RETRY_COUNT_DEFAULT 3 #define PD_RETRY_COUNT_3_0_OR_HIGHER 2 @@ -179,8 +180,11 @@ static int tcpci_start_toggling(struct tcpc_dev *tcpc, /* Handle vendor drp toggling */ if (tcpci->data->start_drp_toggling) { + int override_toggling = 0; + trace_android_vh_typec_tcpci_override_toggling(tcpci, tcpci->data, + &override_toggling); ret = tcpci->data->start_drp_toggling(tcpci, tcpci->data, cc); - if (ret < 0) + if (ret < 0 || override_toggling) return ret; } diff --git a/include/trace/hooks/typec.h b/include/trace/hooks/typec.h new file mode 100644 index 000000000000..1f3cb079f9e8 --- /dev/null +++ b/include/trace/hooks/typec.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM typec +#define TRACE_INCLUDE_PATH trace/hooks +#if !defined(_TRACE_HOOK_TYPEC_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_TYPEC_H +#include +/* + * Following tracepoints are not exported in tracefs and provide a + * mechanism for vendor modules to hook and extend functionality + */ +struct tcpci; +struct tcpci_data; + +DECLARE_HOOK(android_vh_typec_tcpci_override_toggling, + TP_PROTO(struct tcpci *tcpci, struct tcpci_data *data, int *override_toggling), + TP_ARGS(tcpci, data, override_toggling)); + +#endif /* _TRACE_HOOK_UFSHCD_H */ +/* This part must be outside protection */ +#include From eeffe02c9672f931ba20f456c8e4fe5a1df10b94 Mon Sep 17 00:00:00 2001 From: Badhri Jagan Sridharan Date: Thu, 18 Mar 2021 16:15:41 -0700 Subject: [PATCH 259/269] ANDROID: usb: typec: tcpci: Add vendor hook to mask vbus present This hook is for addressing hardware anomalies where TCPC_POWER_STATUS_VBUS_PRES bit can return 0 even before falling below sSinkDisconnect threshold. Handler has to set bypass to override the value that would otherwise be returned by this function. Handler can set vbus or clear vbus to indicate vbus present or absent Squashed <89f633a9f41259a168473917674dd5cb1bfb991d> "ANDROID: usb: typec: tcpci: Migrate restricted vendor hook" OOT_bug: Bug: 183149028 Bug: 168245874 Bug: 173252019 Bug: 271294543 Signed-off-by: Badhri Jagan Sridharan Change-Id: I2ca994d49b37bf8600c5913b892fde9acd0dc896 --- drivers/android/vendor_hooks.c | 1 + drivers/usb/typec/tcpm/tcpci.c | 6 +++++- include/trace/hooks/typec.h | 11 +++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 2b79318a9a9c..4cf5a2d1a144 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -171,3 +171,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_resume); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_audio_usb_offload_connect); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_audio_usb_offload_disconnect); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpci_override_toggling); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_typec_tcpci_get_vbus); diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c index a821761b0973..1d983ea2c35d 100644 --- a/drivers/usb/typec/tcpm/tcpci.c +++ b/drivers/usb/typec/tcpm/tcpci.c @@ -461,7 +461,11 @@ static int tcpci_get_vbus(struct tcpc_dev *tcpc) { struct tcpci *tcpci = tcpc_to_tcpci(tcpc); unsigned int reg; - int ret; + int ret, vbus, bypass = 0; + + trace_android_rvh_typec_tcpci_get_vbus(tcpci, tcpci->data, &vbus, &bypass); + if (bypass) + return vbus; ret = regmap_read(tcpci->regmap, TCPC_POWER_STATUS, ®); if (ret < 0) diff --git a/include/trace/hooks/typec.h b/include/trace/hooks/typec.h index 1f3cb079f9e8..f4981494b35c 100644 --- a/include/trace/hooks/typec.h +++ b/include/trace/hooks/typec.h @@ -16,6 +16,17 @@ DECLARE_HOOK(android_vh_typec_tcpci_override_toggling, TP_PROTO(struct tcpci *tcpci, struct tcpci_data *data, int *override_toggling), TP_ARGS(tcpci, data, override_toggling)); +/* + * This hook is for addressing hardware anomalies where TCPC_POWER_STATUS_VBUS_PRES bit can return 0 + * even before falling below sSinkDisconnect threshold. + * Handler has to set bypass to override the value that would otherwise be returned by this + * function. + * Handler can set vbus or clear vbus to indicate vbus present or absent + */ +DECLARE_RESTRICTED_HOOK(android_rvh_typec_tcpci_get_vbus, + TP_PROTO(struct tcpci *tcpci, struct tcpci_data *data, int *vbus, int *bypass), + TP_ARGS(tcpci, data, vbus, bypass), 1); + #endif /* _TRACE_HOOK_UFSHCD_H */ /* This part must be outside protection */ #include From 081a88febb8ce33dd560bd602c7708ef3abd8478 Mon Sep 17 00:00:00 2001 From: Badhri Jagan Sridharan Date: Wed, 31 Mar 2021 10:56:12 -0700 Subject: [PATCH 260/269] ANDROID: usb: typec: tcpm: vendor hook for timer adjustments linux/usb/pd.h has a bunch of timers for which the Type-C spec defines a range of values. These values have to be tuned based on the latency observed in a specific architecture. However, linux opensource sets them to a specific value without providing a mechanism to set board specific values. While a generic way is figured out, a vendor hook is needed in the interim. For instance, tCCDebounce can have a value between 100msec - 200msec. Squashed "ANDROID: usb: typec: tcpm: Fixup the wait time for SNK_DISCOVERY" OOT_bug: Bug: 184308605 Bug: 168245874 Bug: 173252019 Bug: 271294543 Change-Id: I278b34654a7e48990b6ebe25fbe17e3aa4165098 Signed-off-by: Badhri Jagan Sridharan (cherry picked from commit f694171a837e4dcc03b8e865c973dc3216961233) --- drivers/android/vendor_hooks.c | 1 + drivers/usb/typec/tcpm/tcpm.c | 81 +++++++++++++++++++++++++--------- include/trace/hooks/typec.h | 14 ++++++ 3 files changed, 76 insertions(+), 20 deletions(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 4cf5a2d1a144..d0f1ffffd8ec 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -172,3 +172,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_audio_usb_offload_connect); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_audio_usb_offload_disconnect); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpci_override_toggling); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_typec_tcpci_get_vbus); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_get_timer); diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 6784c266aa21..4ed7043e1d4f 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -31,6 +31,7 @@ #include #include +#include #include #define FOREACH_STATE(S) \ @@ -3921,8 +3922,9 @@ static void run_state_machine(struct tcpm_port *port) { int ret; enum typec_pwr_opmode opmode; - unsigned int msecs; + unsigned int msecs, timer_val_msecs; enum tcpm_state upcoming_state; + const char *state_name; if (port->tcpc->check_contaminant && port->state != CHECK_CONTAMINANT) port->potential_contaminant = ((port->enter_state == SRC_ATTACH_WAIT && @@ -3955,17 +3957,20 @@ static void run_state_machine(struct tcpm_port *port) tcpm_set_state(port, SNK_UNATTACHED, PD_T_DRP_SNK); break; case SRC_ATTACH_WAIT: + timer_val_msecs = PD_T_CC_DEBOUNCE; + trace_android_vh_typec_tcpm_get_timer(tcpm_states[SRC_ATTACH_WAIT], + CC_DEBOUNCE, &timer_val_msecs); if (tcpm_port_is_debug(port)) tcpm_set_state(port, DEBUG_ACC_ATTACHED, - PD_T_CC_DEBOUNCE); + timer_val_msecs); else if (tcpm_port_is_audio(port)) tcpm_set_state(port, AUDIO_ACC_ATTACHED, - PD_T_CC_DEBOUNCE); + timer_val_msecs); else if (tcpm_port_is_source(port) && port->vbus_vsafe0v) tcpm_set_state(port, tcpm_try_snk(port) ? SNK_TRY : SRC_ATTACHED, - PD_T_CC_DEBOUNCE); + timer_val_msecs); break; case SNK_TRY: @@ -4016,7 +4021,10 @@ static void run_state_machine(struct tcpm_port *port) } break; case SRC_TRYWAIT_DEBOUNCE: - tcpm_set_state(port, SRC_ATTACHED, PD_T_CC_DEBOUNCE); + timer_val_msecs = PD_T_CC_DEBOUNCE; + trace_android_vh_typec_tcpm_get_timer(tcpm_states[SRC_TRYWAIT_DEBOUNCE], + CC_DEBOUNCE, &timer_val_msecs); + tcpm_set_state(port, SRC_ATTACHED, timer_val_msecs); break; case SRC_TRYWAIT_UNATTACHED: tcpm_set_state(port, SNK_UNATTACHED, 0); @@ -4196,15 +4204,18 @@ static void run_state_machine(struct tcpm_port *port) tcpm_set_state(port, SRC_UNATTACHED, PD_T_DRP_SRC); break; case SNK_ATTACH_WAIT: + timer_val_msecs = PD_T_CC_DEBOUNCE; + trace_android_vh_typec_tcpm_get_timer(tcpm_states[SNK_ATTACH_WAIT], + CC_DEBOUNCE, &timer_val_msecs); if ((port->cc1 == TYPEC_CC_OPEN && port->cc2 != TYPEC_CC_OPEN) || (port->cc1 != TYPEC_CC_OPEN && port->cc2 == TYPEC_CC_OPEN)) tcpm_set_state(port, SNK_DEBOUNCED, - PD_T_CC_DEBOUNCE); + timer_val_msecs); else if (tcpm_port_is_disconnected(port)) tcpm_set_state(port, SNK_UNATTACHED, - PD_T_PD_DEBOUNCE); + timer_val_msecs); break; case SNK_DEBOUNCED: if (tcpm_port_is_disconnected(port)) @@ -4240,8 +4251,11 @@ static void run_state_machine(struct tcpm_port *port) tcpm_set_state(port, SRC_ATTACHED, PD_T_PD_DEBOUNCE); break; case SNK_TRYWAIT: + timer_val_msecs = PD_T_CC_DEBOUNCE; + trace_android_vh_typec_tcpm_get_timer(tcpm_states[SNK_TRYWAIT], + CC_DEBOUNCE, &timer_val_msecs); tcpm_set_cc(port, TYPEC_CC_RD); - tcpm_set_state(port, SNK_TRYWAIT_VBUS, PD_T_CC_DEBOUNCE); + tcpm_set_state(port, SNK_TRYWAIT_VBUS, timer_val_msecs); break; case SNK_TRYWAIT_VBUS: /* @@ -4281,7 +4295,10 @@ static void run_state_machine(struct tcpm_port *port) /* SRC -> SNK POWER/FAST_ROLE_SWAP finished */ tcpm_ams_finish(port); - tcpm_set_state(port, SNK_DISCOVERY, 0); + timer_val_msecs = 0; + trace_android_vh_typec_tcpm_get_timer(tcpm_states[SNK_STARTUP], + SINK_DISCOVERY_BC12, &timer_val_msecs); + tcpm_set_state(port, SNK_DISCOVERY, timer_val_msecs); break; case SNK_DISCOVERY: if (port->vbus_present) { @@ -4307,8 +4324,10 @@ static void run_state_machine(struct tcpm_port *port) PD_T_DB_DETECT : PD_T_NO_RESPONSE); break; case SNK_DISCOVERY_DEBOUNCE: - tcpm_set_state(port, SNK_DISCOVERY_DEBOUNCE_DONE, - PD_T_CC_DEBOUNCE); + timer_val_msecs = PD_T_CC_DEBOUNCE; + trace_android_vh_typec_tcpm_get_timer(tcpm_states[SNK_DISCOVERY_DEBOUNCE], + CC_DEBOUNCE, &timer_val_msecs); + tcpm_set_state(port, SNK_DISCOVERY_DEBOUNCE_DONE, timer_val_msecs); break; case SNK_DISCOVERY_DEBOUNCE_DONE: if (!tcpm_port_is_disconnected(port) && @@ -4326,6 +4345,9 @@ static void run_state_machine(struct tcpm_port *port) tcpm_set_state(port, SNK_READY, 0); break; } + timer_val_msecs = PD_T_SINK_WAIT_CAP; + trace_android_vh_typec_tcpm_get_timer(tcpm_states[SNK_WAIT_CAPABILITIES], + SINK_WAIT_CAP, &timer_val_msecs); /* * If VBUS has never been low, and we time out waiting * for source cap, try a soft reset first, in case we @@ -4335,10 +4357,10 @@ static void run_state_machine(struct tcpm_port *port) if (port->vbus_never_low) { port->vbus_never_low = false; tcpm_set_state(port, SNK_SOFT_RESET, - PD_T_SINK_WAIT_CAP); + timer_val_msecs); } else { tcpm_set_state(port, hard_reset_state(port), - PD_T_SINK_WAIT_CAP); + timer_val_msecs); } break; case SNK_NEGOTIATE_CAPABILITIES: @@ -4464,7 +4486,10 @@ static void run_state_machine(struct tcpm_port *port) tcpm_set_state(port, ACC_UNATTACHED, 0); break; case AUDIO_ACC_DEBOUNCE: - tcpm_set_state(port, ACC_UNATTACHED, PD_T_CC_DEBOUNCE); + timer_val_msecs = PD_T_CC_DEBOUNCE; + trace_android_vh_typec_tcpm_get_timer(tcpm_states[AUDIO_ACC_DEBOUNCE], + CC_DEBOUNCE, &timer_val_msecs); + tcpm_set_state(port, ACC_UNATTACHED, timer_val_msecs); break; /* Hard_Reset states */ @@ -4659,7 +4684,10 @@ static void run_state_machine(struct tcpm_port *port) tcpm_set_state(port, ERROR_RECOVERY, 0); break; case FR_SWAP_SNK_SRC_TRANSITION_TO_OFF: - tcpm_set_state(port, ERROR_RECOVERY, PD_T_PS_SOURCE_OFF); + timer_val_msecs = PD_T_PS_SOURCE_OFF; + state_name = tcpm_states[FR_SWAP_SNK_SRC_TRANSITION_TO_OFF]; + trace_android_vh_typec_tcpm_get_timer(state_name, SOURCE_OFF, &timer_val_msecs); + tcpm_set_state(port, ERROR_RECOVERY, timer_val_msecs); break; case FR_SWAP_SNK_SRC_NEW_SINK_READY: if (port->vbus_source) @@ -4711,10 +4739,13 @@ static void run_state_machine(struct tcpm_port *port) PD_T_SRCSWAPSTDBY); break; case PR_SWAP_SRC_SNK_SOURCE_OFF: + timer_val_msecs = PD_T_CC_DEBOUNCE; + trace_android_vh_typec_tcpm_get_timer(tcpm_states[PR_SWAP_SRC_SNK_SOURCE_OFF], + CC_DEBOUNCE, &timer_val_msecs); tcpm_set_cc(port, TYPEC_CC_RD); /* allow CC debounce */ tcpm_set_state(port, PR_SWAP_SRC_SNK_SOURCE_OFF_CC_DEBOUNCED, - PD_T_CC_DEBOUNCE); + timer_val_msecs); break; case PR_SWAP_SRC_SNK_SOURCE_OFF_CC_DEBOUNCED: /* @@ -4741,6 +4772,9 @@ static void run_state_machine(struct tcpm_port *port) /* will be source, remove existing capabilities */ usb_power_delivery_unregister_capabilities(port->partner_source_caps); port->partner_source_caps = NULL; + timer_val_msecs = PD_T_PS_SOURCE_OFF; + trace_android_vh_typec_tcpm_get_timer(tcpm_states[PR_SWAP_SNK_SRC_SINK_OFF], + SOURCE_OFF, &timer_val_msecs); /* * Prevent vbus discharge circuit from turning on during PR_SWAP * as this is not a disconnect. @@ -4748,8 +4782,7 @@ static void run_state_machine(struct tcpm_port *port) tcpm_set_auto_vbus_discharge_threshold(port, TYPEC_PWR_MODE_USB, port->pps_data.active, 0); tcpm_set_charge(port, false); - tcpm_set_state(port, hard_reset_state(port), - PD_T_PS_SOURCE_OFF); + tcpm_set_state(port, hard_reset_state(port), timer_val_msecs); break; case PR_SWAP_SNK_SRC_SOURCE_ON: tcpm_enable_auto_vbus_discharge(port, true); @@ -4879,9 +4912,12 @@ static void run_state_machine(struct tcpm_port *port) PD_T_ERROR_RECOVERY); break; case PORT_RESET_WAIT_OFF: + timer_val_msecs = PD_T_PS_SOURCE_OFF; + trace_android_vh_typec_tcpm_get_timer(tcpm_states[PORT_RESET_WAIT_OFF], + SOURCE_OFF, &timer_val_msecs); tcpm_set_state(port, tcpm_default_state(port), - port->vbus_present ? PD_T_PS_SOURCE_OFF : 0); + port->vbus_present ? timer_val_msecs : 0); break; /* AMS intermediate state */ @@ -5346,6 +5382,8 @@ static void _tcpm_pd_vbus_off(struct tcpm_port *port) static void _tcpm_pd_vbus_vsafe0v(struct tcpm_port *port) { + unsigned int timer_val_msecs; + tcpm_log_force(port, "VBUS VSAFE0V"); port->vbus_vsafe0v = true; switch (port->state) { @@ -5357,9 +5395,12 @@ static void _tcpm_pd_vbus_vsafe0v(struct tcpm_port *port) tcpm_set_state(port, SRC_HARD_RESET_VBUS_ON, PD_T_SRC_RECOVER); break; case SRC_ATTACH_WAIT: + timer_val_msecs = PD_T_CC_DEBOUNCE; + trace_android_vh_typec_tcpm_get_timer(tcpm_states[SRC_ATTACH_WAIT], + CC_DEBOUNCE, &timer_val_msecs); if (tcpm_port_is_source(port)) tcpm_set_state(port, tcpm_try_snk(port) ? SNK_TRY : SRC_ATTACHED, - PD_T_CC_DEBOUNCE); + timer_val_msecs); break; case SRC_STARTUP: case SRC_SEND_CAPABILITIES: diff --git a/include/trace/hooks/typec.h b/include/trace/hooks/typec.h index f4981494b35c..f7c832fca7cd 100644 --- a/include/trace/hooks/typec.h +++ b/include/trace/hooks/typec.h @@ -12,6 +12,16 @@ struct tcpci; struct tcpci_data; +#ifndef TYPEC_TIMER +#define TYPEC_TIMER +enum typec_timer { + SINK_WAIT_CAP, + SOURCE_OFF, + CC_DEBOUNCE, + SINK_DISCOVERY_BC12, +}; +#endif + DECLARE_HOOK(android_vh_typec_tcpci_override_toggling, TP_PROTO(struct tcpci *tcpci, struct tcpci_data *data, int *override_toggling), TP_ARGS(tcpci, data, override_toggling)); @@ -27,6 +37,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_typec_tcpci_get_vbus, TP_PROTO(struct tcpci *tcpci, struct tcpci_data *data, int *vbus, int *bypass), TP_ARGS(tcpci, data, vbus, bypass), 1); +DECLARE_HOOK(android_vh_typec_tcpm_get_timer, + TP_PROTO(const char *state, enum typec_timer timer, unsigned int *msecs), + TP_ARGS(state, timer, msecs)); + #endif /* _TRACE_HOOK_UFSHCD_H */ /* This part must be outside protection */ #include From c8314fcb76b4e0484abeb4e2ea7da36898fc8653 Mon Sep 17 00:00:00 2001 From: Kyle Tso Date: Tue, 30 Mar 2021 22:48:50 +0800 Subject: [PATCH 261/269] ANDROID: usb: typec: tcpm: Add vendor hook to store partner source capabilities Add a hook after receiving the source capabilities from the partner port. Pass the address of the source capability array so that vendor code is able to access them. OOT bug: Bug: 181629276 Bug: 169215197 Bug: 271294543 Signed-off-by: Kyle Tso Change-Id: I11c4a7919c248690e63c3bfbebfa6b8d711175a6 (cherry picked from commit af7214914ab9ead9356652eed35004482265372d) --- drivers/android/vendor_hooks.c | 1 + drivers/usb/typec/tcpm/tcpm.c | 3 ++- include/trace/hooks/typec.h | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index d0f1ffffd8ec..8cca3108ff0a 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -172,4 +172,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_audio_usb_offload_connect); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_audio_usb_offload_disconnect); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpci_override_toggling); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_typec_tcpci_get_vbus); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_store_partner_src_caps); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_get_timer); diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 4ed7043e1d4f..847fdc3a033c 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -2457,7 +2457,8 @@ static void tcpm_pd_data_request(struct tcpm_port *port, port->nr_source_caps); tcpm_register_source_caps(port); - + trace_android_vh_typec_store_partner_src_caps(&port->nr_source_caps, + &port->source_caps); /* * Adjust revision in subsequent message headers, as required, * to comply with 6.2.1.1.5 of the USB PD 3.0 spec. We don't diff --git a/include/trace/hooks/typec.h b/include/trace/hooks/typec.h index f7c832fca7cd..365d9b681a04 100644 --- a/include/trace/hooks/typec.h +++ b/include/trace/hooks/typec.h @@ -11,6 +11,7 @@ */ struct tcpci; struct tcpci_data; +struct tcpm_port; #ifndef TYPEC_TIMER #define TYPEC_TIMER @@ -41,6 +42,10 @@ DECLARE_HOOK(android_vh_typec_tcpm_get_timer, TP_PROTO(const char *state, enum typec_timer timer, unsigned int *msecs), TP_ARGS(state, timer, msecs)); +DECLARE_HOOK(android_vh_typec_store_partner_src_caps, + TP_PROTO(unsigned int *nr_source_caps, u32 (*source_caps)[]), + TP_ARGS(nr_source_caps, source_caps)); + #endif /* _TRACE_HOOK_UFSHCD_H */ /* This part must be outside protection */ #include From b499bac439f7dbf33c2931476e746e113ffc158e Mon Sep 17 00:00:00 2001 From: Kyle Tso Date: Sat, 6 Nov 2021 00:44:36 +0800 Subject: [PATCH 262/269] ANDROID: usb: typec: tcpm: Add vendor hook to modify port src caps Add a vendor hook to modify the port Source Capabilities. If the caps are changed and the port state is feasible, start a Power Negotiation AMS to update the current contract to the new one. Bug: 201006190 Bug: 206108037 Bug: 271294543 Signed-off-by: Kyle Tso Change-Id: I8b524242353781cb39b3ba85c6a75bd5a204ebcf (cherry picked from commit 00e3210a2faa2057fc142367e7e1be886479cf02) --- drivers/android/vendor_hooks.c | 1 + drivers/usb/typec/tcpm/tcpm.c | 29 +++++++++++++++++++++++++++++ include/trace/hooks/typec.h | 6 +++++- 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 8cca3108ff0a..d721b7daa21f 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -174,3 +174,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpci_override_toggling); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_typec_tcpci_get_vbus); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_store_partner_src_caps); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_get_timer); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_modify_src_caps); diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 847fdc3a033c..eba5bc0c9731 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -5487,9 +5487,38 @@ static void tcpm_pd_event_handler(struct kthread_work *work) } if (events & TCPM_CC_EVENT) { enum typec_cc_status cc1, cc2; + bool modified = false; if (port->tcpc->get_cc(port->tcpc, &cc1, &cc2) == 0) _tcpm_cc_change(port, cc1, cc2); + + trace_android_vh_typec_tcpm_modify_src_caps(&port->nr_src_pdo, + &port->src_pdo, &modified); + if (modified) { + int ret; + + switch (port->state) { + case SRC_UNATTACHED: + case SRC_ATTACH_WAIT: + case SRC_TRYWAIT: + tcpm_set_cc(port, tcpm_rp_cc(port)); + break; + case SRC_SEND_CAPABILITIES: + case SRC_SEND_CAPABILITIES_TIMEOUT: + case SRC_NEGOTIATE_CAPABILITIES: + case SRC_READY: + case SRC_WAIT_NEW_CAPABILITIES: + port->caps_count = 0; + port->upcoming_state = SRC_SEND_CAPABILITIES; + ret = tcpm_ams_start(port, POWER_NEGOTIATION); + if (ret == -EAGAIN) + port->upcoming_state = INVALID_STATE; + break; + default: + break; + } + } + } if (events & TCPM_FRS_EVENT) { if (port->state == SNK_READY) { diff --git a/include/trace/hooks/typec.h b/include/trace/hooks/typec.h index 365d9b681a04..afad3c1dc53f 100644 --- a/include/trace/hooks/typec.h +++ b/include/trace/hooks/typec.h @@ -46,6 +46,10 @@ DECLARE_HOOK(android_vh_typec_store_partner_src_caps, TP_PROTO(unsigned int *nr_source_caps, u32 (*source_caps)[]), TP_ARGS(nr_source_caps, source_caps)); -#endif /* _TRACE_HOOK_UFSHCD_H */ +DECLARE_HOOK(android_vh_typec_tcpm_modify_src_caps, + TP_PROTO(unsigned int *nr_src_pdo, u32 (*src_pdo)[], bool *modified), + TP_ARGS(nr_src_pdo, src_pdo, modified)); + +#endif /* _TRACE_HOOK_TYPEC_H */ /* This part must be outside protection */ #include From bbc22694d4cd8be65e2bfd807a311179f0ddc9c4 Mon Sep 17 00:00:00 2001 From: Badhri Jagan Sridharan Date: Mon, 31 May 2021 15:19:54 -0700 Subject: [PATCH 263/269] ANDROID: vendor_hooks: Add vendor hook for tcpm logs Context: https://lore.kernel.org/lkml/CAPTae5LbWVc4Bdiwe69cwwxEGfSYvRv=419dUGR1u8n-WUkYAA@mail.gmail.com/t/ Logs in /sys/kernel/debug/usb/tcpm* are key to debug issues related to USB charging or data. However, tcpm logbuffer logs do not wraparound once full. Whereas we want it to wrap around so that we capture relevant info in the bugreport when the user collects one. There is sentiment in upstream to get rid of the logbuffer altogether and move to tracing. But trace events are not default enabled in Android, so that implies, even if user can somehow enable the trace event, user would have repro the issue and collect the bugreport. That would cause inconvenience to the end user. The vendor hooks is needed till upstream either allows wrapping around logs (or) Android has a generic way to default enable trace events which can be captured in bugreport. bypass_log is set to true by the handler if logging into logbuffer is not needed. Bug: 189792358 Bug: 271294543 Change-Id: Icacfed2264b6c49b8e803c62f8bd820a146c169a Signed-off-by: Badhri Jagan Sridharan (cherry picked from commit bcfe28b62fb4307f7226d74c9718ba4d33224a66) --- drivers/android/vendor_hooks.c | 1 + drivers/usb/typec/tcpm/tcpm.c | 4 ++++ include/trace/hooks/typec.h | 6 +++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index d721b7daa21f..ed451cd3882b 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -175,3 +175,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_typec_tcpci_get_vbus); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_store_partner_src_caps); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_get_timer); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_modify_src_caps); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_typec_tcpm_log); diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index eba5bc0c9731..6af7c21aeaac 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -607,6 +607,7 @@ static void _tcpm_log(struct tcpm_port *port, const char *fmt, va_list args) char tmpbuffer[LOG_BUFFER_ENTRY_SIZE]; u64 ts_nsec = local_clock(); unsigned long rem_nsec; + bool bypass_log = false; mutex_lock(&port->logbuffer_lock); if (!port->logbuffer[port->logbuffer_head]) { @@ -619,6 +620,9 @@ static void _tcpm_log(struct tcpm_port *port, const char *fmt, va_list args) } vsnprintf(tmpbuffer, sizeof(tmpbuffer), fmt, args); + trace_android_vh_typec_tcpm_log(tmpbuffer, &bypass_log); + if (bypass_log) + goto abort; if (tcpm_log_full(port)) { port->logbuffer_head = max(port->logbuffer_head - 1, 0); diff --git a/include/trace/hooks/typec.h b/include/trace/hooks/typec.h index afad3c1dc53f..e1b5c8be3835 100644 --- a/include/trace/hooks/typec.h +++ b/include/trace/hooks/typec.h @@ -50,6 +50,10 @@ DECLARE_HOOK(android_vh_typec_tcpm_modify_src_caps, TP_PROTO(unsigned int *nr_src_pdo, u32 (*src_pdo)[], bool *modified), TP_ARGS(nr_src_pdo, src_pdo, modified)); -#endif /* _TRACE_HOOK_TYPEC_H */ +DECLARE_HOOK(android_vh_typec_tcpm_log, + TP_PROTO(const char *log, bool *bypass), + TP_ARGS(log, bypass)); + +#endif /* _TRACE_HOOK_UFSHCD_H */ /* This part must be outside protection */ #include From 8187bf6782d23bfe4134bbabaa9789d220c33225 Mon Sep 17 00:00:00 2001 From: Badhri Jagan Sridharan Date: Sun, 11 Dec 2022 11:37:55 -0800 Subject: [PATCH 264/269] UPSTREAM: usb: typec: altmodes/displayport: Add hpd sysfs attribute MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exporsing HotPlugDetect(HPD) helps userspace to infer HPD state as defined by VESA DisplayPort Alt Mode on USB Type-C Standard. This allows userspace to notify users for self help, for instance, to hint user that the display port cable is probably detached (or) the display port sink (viz., monitors ect.,) is un-powered. Also helps to debug issues reported from field. This change adds an additional attribute "hpd" to the existing "displayport" attributes. VESA DisplayPort Alt Mode on USB Type-C Standard defines how HotPlugDetect(HPD) shall be supported on the USB-C connector when operating in DisplayPort Alt Mode. This is a read only node which reflects the current state of HPD. Valid values: - 1 when HPD’s logical state is high (HPD_High) - 0 when HPD’s logical state is low (HPD_Low) Bug: 253534975 Bug: 260915739 Change-Id: Id72e8ef6ede84038479649c2b753acdac547dea1 Signed-off-by: Badhri Jagan Sridharan Reviewed-by: Heikki Krogerus Link: https://lore.kernel.org/lkml/20221211193755.1392128-1-badhri@google.com/T/ (cherry picked from commit 001b0c780eac328bc48b70b8437f202a4ed785e4) --- .../ABI/testing/sysfs-driver-typec-displayport | 15 +++++++++++++++ drivers/usb/typec/altmodes/displayport.c | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-driver-typec-displayport b/Documentation/ABI/testing/sysfs-driver-typec-displayport index 231471ad0d4b..256c87c5219a 100644 --- a/Documentation/ABI/testing/sysfs-driver-typec-displayport +++ b/Documentation/ABI/testing/sysfs-driver-typec-displayport @@ -47,3 +47,18 @@ Description: USB SuperSpeed protocol. From user perspective pin assignments C and E are equal, where all channels on the connector are used for carrying DisplayPort protocol (allowing higher resolutions). + +What: /sys/bus/typec/devices/.../displayport/hpd +Date: Dec 2022 +Contact: Badhri Jagan Sridharan +Description: + VESA DisplayPort Alt Mode on USB Type-C Standard defines how + HotPlugDetect(HPD) shall be supported on the USB-C connector when + operating in DisplayPort Alt Mode. This is a read only node which + reflects the current state of HPD. + + Valid values: + - 1: when HPD’s logical state is high (HPD_High) as defined + by VESA DisplayPort Alt Mode on USB Type-C Standard. + - 0 when HPD’s logical state is low (HPD_Low) as defined by + VESA DisplayPort Alt Mode on USB Type-C Standard. diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c index 3a42313d0d66..61e97a94ae9c 100644 --- a/drivers/usb/typec/altmodes/displayport.c +++ b/drivers/usb/typec/altmodes/displayport.c @@ -146,6 +146,7 @@ static int dp_altmode_status_update(struct dp_altmode *dp) if (dp->hpd != hpd) { drm_connector_oob_hotplug_event(dp->connector_fwnode); dp->hpd = hpd; + sysfs_notify(&dp->alt->dev.kobj, "displayport", "hpd"); } } @@ -514,9 +515,18 @@ static ssize_t pin_assignment_show(struct device *dev, } static DEVICE_ATTR_RW(pin_assignment); +static ssize_t hpd_show(struct device *dev, struct device_attribute *attr, char *buf) +{ + struct dp_altmode *dp = dev_get_drvdata(dev); + + return sysfs_emit(buf, "%d\n", dp->hpd); +} +static DEVICE_ATTR_RO(hpd); + static struct attribute *dp_altmode_attrs[] = { &dev_attr_configuration.attr, &dev_attr_pin_assignment.attr, + &dev_attr_hpd.attr, NULL }; From 7e35917775b8b3e3346a87f294e334e258bf15e6 Mon Sep 17 00:00:00 2001 From: Will McVicker Date: Mon, 17 Apr 2023 09:19:29 -0700 Subject: [PATCH 265/269] ANDROID: Add utf8_data_table for case-folding support The upstream commit 2b3d04787012 ("unicode: Add utf8-data module") moved the unicode nomalization functions into a module so that it could be selectively included in the kernel based of support for case-folding. In doing so, utf8-core.c uses symbol_request() to reference the utf8_data_table symbol. Since GKI trims unused symbols, include this symbol to our symbol list so that it doesn't get trimmed. Link: https://lore.kernel.org/all/ZDnbW1qYmBLycefL@google.com/ Bug: 278561372 Change-Id: If6347087d8dffae63bb4af5d72b74f703f09b820 Signed-off-by: Will McVicker --- android/abi_gki_aarch64 | 1 + 1 file changed, 1 insertion(+) diff --git a/android/abi_gki_aarch64 b/android/abi_gki_aarch64 index 57914f291962..bdae95797c69 100644 --- a/android/abi_gki_aarch64 +++ b/android/abi_gki_aarch64 @@ -2,3 +2,4 @@ # commonly used symbols module_layout __put_task_struct + utf8_data_table From 4da8c1036ef4ad1c534d566bab07fc2e6a918660 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 18 Apr 2023 08:01:50 +0000 Subject: [PATCH 266/269] ANDROID: enable CONFIG_USB_XHCI_PCI_RENESAS in gki_defconfig More platforms are using the Renesas XHCI controller, so enable it in the configuration so that we do not have to export a bunch of internal xhci controller functions that should not be part of any stable api. Bug: 278153046 Change-Id: I9d8aa6a1783f0bb3bf0d794c7101d1762dd96b3d Signed-off-by: Greg Kroah-Hartman --- arch/arm64/configs/gki_defconfig | 1 + arch/x86/configs/gki_defconfig | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index 3503866d4016..08bc95ecc558 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -479,6 +479,7 @@ CONFIG_USB_HIDDEV=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y CONFIG_USB_OTG=y CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_PCI_RENESAS=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_HCD_PLATFORM=y diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index d2c8c46ac574..fe453a1b482f 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -446,6 +446,7 @@ CONFIG_HID_WIIMOTE=y CONFIG_USB_HIDDEV=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_PCI_RENESAS=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_HCD_PLATFORM=y From 05b36413b68eae2f71d60d0b478479ee46f28a20 Mon Sep 17 00:00:00 2001 From: Kuan-Ying Lee Date: Wed, 12 Apr 2023 14:16:05 +0800 Subject: [PATCH 267/269] ANDROID: kernel: Add restricted vendor hook in creds Add restricted vendor hook for creds, so we get the creds information to monitor cred lifetime. During the lifetime, we store the creds information in a standalone protected memory and keep track of integrity. These hooks may be invoked in non-atomic context, so it's necessary to use restricted ones. Bug: 248994334 Change-Id: I57fbb759452302fa1ba1e720c76bfe671eab96b5 Signed-off-by: Kuan-Ying Lee --- drivers/android/vendor_hooks.c | 5 +++++ include/trace/hooks/creds.h | 33 +++++++++++++++++++++++++++++++++ kernel/cred.c | 6 ++++++ 3 files changed, 44 insertions(+) create mode 100644 include/trace/hooks/creds.h diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index ed451cd3882b..0d62f320fa57 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -131,6 +132,10 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_insert); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_node_delete); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_node_replace); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_lookup); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_commit_creds); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_exit_creds); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_override_creds); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_revert_creds); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_is_initialized); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_shmem_get_folio); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_mmap_file); diff --git a/include/trace/hooks/creds.h b/include/trace/hooks/creds.h new file mode 100644 index 000000000000..69a68081f2a3 --- /dev/null +++ b/include/trace/hooks/creds.h @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM creds + +#define TRACE_INCLUDE_PATH trace/hooks +#if !defined(_TRACE_HOOK_CREDS_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_CREDS_H +#include +/* + * Following tracepoints are not exported in tracefs and provide a + * mechanism for vendor modules to hook and extend functionality + */ +struct cred; +struct task_struct; +DECLARE_RESTRICTED_HOOK(android_rvh_commit_creds, + TP_PROTO(const struct task_struct *task, const struct cred *new), + TP_ARGS(task, new), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_exit_creds, + TP_PROTO(const struct task_struct *task, const struct cred *cred), + TP_ARGS(task, cred), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_override_creds, + TP_PROTO(const struct task_struct *task, const struct cred *new), + TP_ARGS(task, new), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_revert_creds, + TP_PROTO(const struct task_struct *task, const struct cred *old), + TP_ARGS(task, old), 1); + +#endif /* _TRACE_HOOK_CREDS_H */ +/* This part must be outside protection */ +#include diff --git a/kernel/cred.c b/kernel/cred.c index e10c15f51c1f..d4a529cd4737 100644 --- a/kernel/cred.c +++ b/kernel/cred.c @@ -17,6 +17,8 @@ #include #include +#include + #if 0 #define kdebug(FMT, ...) \ printk("[%-5.5s%5u] " FMT "\n", \ @@ -181,6 +183,7 @@ void exit_creds(struct task_struct *tsk) key_put(tsk->cached_requested_key); tsk->cached_requested_key = NULL; #endif + trace_android_rvh_exit_creds(tsk, cred); } /** @@ -499,6 +502,7 @@ int commit_creds(struct cred *new) inc_rlimit_ucounts(new->ucounts, UCOUNT_RLIMIT_NPROC, 1); rcu_assign_pointer(task->real_cred, new); rcu_assign_pointer(task->cred, new); + trace_android_rvh_commit_creds(task, new); if (new->user != old->user || new->user_ns != old->user_ns) dec_rlimit_ucounts(old->ucounts, UCOUNT_RLIMIT_NPROC, 1); alter_cred_subscribers(old, -2); @@ -576,6 +580,7 @@ const struct cred *override_creds(const struct cred *new) get_new_cred((struct cred *)new); alter_cred_subscribers(new, 1); rcu_assign_pointer(current->cred, new); + trace_android_rvh_override_creds(current, new); alter_cred_subscribers(old, -1); kdebug("override_creds() = %p{%d,%d}", old, @@ -604,6 +609,7 @@ void revert_creds(const struct cred *old) validate_creds(override); alter_cred_subscribers(old, 1); rcu_assign_pointer(current->cred, old); + trace_android_rvh_revert_creds(current, old); alter_cred_subscribers(override, -1); put_cred(override); } From b28620e7db22f4db4e09c33f8e544b1e697e92d8 Mon Sep 17 00:00:00 2001 From: Kuan-Ying Lee Date: Wed, 12 Apr 2023 14:25:07 +0800 Subject: [PATCH 268/269] ANDROID: module: Add vendor hooks Add vendor hook for module init, so we can get memory type and use it to do memory type check for architecture dependent page table setting. To make sure the architecture dependent tables are created correctly, we need to know when module parts are initialized and their attributes. For releasing modules, corresponding tables and attributes should be destroyed and restored. These hooks may be invoked in non-atomic context, so it's necessary to use restricted ones. Bug: 248994334 Change-Id: Ie9f415c36bca1fb98e021522b627e562d27cdef4 Signed-off-by: Kuan-Ying Lee --- drivers/android/vendor_hooks.c | 5 +++++ include/trace/hooks/module.h | 32 ++++++++++++++++++++++++++++++++ kernel/module/main.c | 10 ++++++++++ 3 files changed, 47 insertions(+) create mode 100644 include/trace/hooks/module.h diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 0d62f320fa57..3ce018a5950e 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include @@ -136,6 +137,10 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_commit_creds); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_exit_creds); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_override_creds); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_revert_creds); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_module_core_rw_nx); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_module_init_rw_nx); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_module_permit_before_init); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_module_permit_after_init); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_is_initialized); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_shmem_get_folio); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_mmap_file); diff --git a/include/trace/hooks/module.h b/include/trace/hooks/module.h new file mode 100644 index 000000000000..780e767cc23e --- /dev/null +++ b/include/trace/hooks/module.h @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM module + +#define TRACE_INCLUDE_PATH trace/hooks +#if !defined(_TRACE_HOOK_MODULE_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_MODULE_H +#include +/* + * Following tracepoints are not exported in tracefs and provide a + * mechanism for vendor modules to hook and extend functionality + */ +struct module; +DECLARE_RESTRICTED_HOOK(android_rvh_set_module_permit_before_init, + TP_PROTO(const struct module *mod), + TP_ARGS(mod), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_set_module_permit_after_init, + TP_PROTO(const struct module *mod), + TP_ARGS(mod), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_set_module_core_rw_nx, + TP_PROTO(const struct module *mod), + TP_ARGS(mod), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_set_module_init_rw_nx, + TP_PROTO(const struct module *mod), + TP_ARGS(mod), 1); + +#endif /* _TRACE_HOOK_MODULE_H */ +/* This part must be outside protection */ +#include diff --git a/kernel/module/main.c b/kernel/module/main.c index 194e865f6adc..0f18b6ee980c 100644 --- a/kernel/module/main.c +++ b/kernel/module/main.c @@ -60,6 +60,9 @@ #define CREATE_TRACE_POINTS #include +#undef CREATE_TRACE_POINTS +#include + /* * Mutex protects: * 1) List of modules (also safely readable with preempt_disable), @@ -1208,6 +1211,7 @@ static void free_module(struct module *mod) /* This may be empty, but that's OK */ module_arch_freeing_init(mod); + trace_android_rvh_set_module_init_rw_nx(mod); module_memfree(mod->init_layout.base); kfree(mod->args); percpu_modfree(mod); @@ -1216,6 +1220,7 @@ static void free_module(struct module *mod) lockdep_free_key_range(mod->data_layout.base, mod->data_layout.size); /* Finally, free the core (containing the module structure) */ + trace_android_rvh_set_module_core_rw_nx(mod); module_memfree(mod->core_layout.base); #ifdef CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC vfree(mod->data_layout.base); @@ -2373,7 +2378,9 @@ static void module_deallocate(struct module *mod, struct load_info *info) { percpu_modfree(mod); module_arch_freeing_init(mod); + trace_android_rvh_set_module_init_rw_nx(mod); module_memfree(mod->init_layout.base); + trace_android_rvh_set_module_core_rw_nx(mod); module_memfree(mod->core_layout.base); #ifdef CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC vfree(mod->data_layout.base); @@ -2526,8 +2533,10 @@ static noinline int do_init_module(struct module *mod) rcu_assign_pointer(mod->kallsyms, &mod->core_kallsyms); #endif module_enable_ro(mod, true); + trace_android_rvh_set_module_permit_after_init(mod); mod_tree_remove_init(mod); module_arch_freeing_init(mod); + trace_android_rvh_set_module_init_rw_nx(mod); mod->init_layout.base = NULL; mod->init_layout.size = 0; mod->init_layout.ro_size = 0; @@ -2657,6 +2666,7 @@ static int complete_formation(struct module *mod, struct load_info *info) module_enable_ro(mod, false); module_enable_nx(mod); module_enable_x(mod); + trace_android_rvh_set_module_permit_before_init(mod); /* * Mark state as coming so strong_try_module_get() ignores us, From 9464c5644c653b3172e359597ee9a9972e7577ee Mon Sep 17 00:00:00 2001 From: Kuan-Ying Lee Date: Thu, 13 Apr 2023 14:53:21 +0800 Subject: [PATCH 269/269] ANDROID: Update symbol list for mtk Add below vendor hook symbol. __traceiter_android_rvh_commit_creds __traceiter_android_rvh_exit_creds __traceiter_android_rvh_override_creds __traceiter_android_rvh_revert_creds __traceiter_android_rvh_selinux_is_initialized __traceiter_android_rvh_set_module_permit_before_init __traceiter_android_rvh_set_module_permit_after_init __traceiter_android_rvh_set_module_core_rw_nx __traceiter_android_rvh_set_module_init_rw_nx __traceiter_android_vh_check_mmap_file __traceiter_android_vh_check_file_open __traceiter_android_vh_check_bpf_syscall __tracepoint_android_rvh_commit_creds __tracepoint_android_rvh_exit_creds __tracepoint_android_rvh_override_creds __tracepoint_android_rvh_revert_creds __tracepoint_android_rvh_selinux_is_initialized __tracepoint_android_rvh_set_module_permit_before_init __tracepoint_android_rvh_set_module_permit_after_init __tracepoint_android_rvh_set_module_core_rw_nx __tracepoint_android_rvh_set_module_init_rw_nx __tracepoint_android_vh_check_mmap_file __tracepoint_android_vh_check_file_open __tracepoint_android_vh_check_bpf_syscall Bug: 248994334 Change-Id: I95ac15d30aa04c5aca7eaf52392264ee94ed9653 Signed-off-by: Kuan-Ying Lee --- android/abi_gki_aarch64.stg | 2633 +++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_mtk | 32 + 2 files changed, 2665 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 2d5b5130510b..ae95f685cde1 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -460,6 +460,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x2c9812c2 } +pointer_reference { + id: 0x01ba2ceb + kind: POINTER + pointee_type_id: 0x2ca85530 +} pointer_reference { id: 0x01bc81b8 kind: POINTER @@ -755,6 +760,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x2170d06d } +pointer_reference { + id: 0x02dfb39a + kind: POINTER + pointee_type_id: 0x213e28f7 +} pointer_reference { id: 0x02e98c8d kind: POINTER @@ -775,6 +785,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x21931005 } +pointer_reference { + id: 0x02f9a1f8 + kind: POINTER + pointee_type_id: 0x21a6617d +} pointer_reference { id: 0x02fc8d1a kind: POINTER @@ -1010,6 +1025,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x25e6cd32 } +pointer_reference { + id: 0x03e9b5f9 + kind: POINTER + pointee_type_id: 0x25e63179 +} pointer_reference { id: 0x03ecaf94 kind: POINTER @@ -2050,6 +2070,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x34dbb6d7 } +pointer_reference { + id: 0x07ab7e35 + kind: POINTER + pointee_type_id: 0x34ed1e4a +} pointer_reference { id: 0x07b17cd6 kind: POINTER @@ -2135,6 +2160,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x0a26d4f5 } +pointer_reference { + id: 0x0819c1d1 + kind: POINTER + pointee_type_id: 0x0a27e1da +} pointer_reference { id: 0x08258287 kind: POINTER @@ -2155,6 +2185,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x0a9eebba } +pointer_reference { + id: 0x083bdf25 + kind: POINTER + pointee_type_id: 0x0aaf9a0a +} pointer_reference { id: 0x084ef4c8 kind: POINTER @@ -2175,6 +2210,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x0bdce3f9 } +pointer_reference { + id: 0x086a88e1 + kind: POINTER + pointee_type_id: 0x0beac51b +} pointer_reference { id: 0x086a94c1 kind: POINTER @@ -2255,6 +2295,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x08b52b5b } +pointer_reference { + id: 0x08c085d5 + kind: POINTER + pointee_type_id: 0x0942f1ca +} pointer_reference { id: 0x08dcfb76 kind: POINTER @@ -2275,6 +2320,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x09e514cb } +pointer_reference { + id: 0x08ea582b + kind: POINTER + pointee_type_id: 0x09e98633 +} pointer_reference { id: 0x08ee566e kind: POINTER @@ -2375,6 +2425,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x0f49179e } +pointer_reference { + id: 0x0942f1ca + kind: POINTER + pointee_type_id: 0x0f4b21b6 +} pointer_reference { id: 0x09451098 kind: POINTER @@ -3015,6 +3070,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x05ea30f1 } +pointer_reference { + id: 0x0beac51b + kind: POINTER + pointee_type_id: 0x05ebf2f3 +} pointer_reference { id: 0x0bf1a65b kind: POINTER @@ -4010,6 +4070,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x18b8b96a } +pointer_reference { + id: 0x0cbe24dc + kind: POINTER + pointee_type_id: 0x18b875ee +} pointer_reference { id: 0x0cbf60eb kind: POINTER @@ -6735,6 +6800,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x166b6880 } +pointer_reference { + id: 0x0f0b2702 + kind: POINTER + pointee_type_id: 0x166c7a96 +} pointer_reference { id: 0x0f0c4873 kind: POINTER @@ -7015,6 +7085,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x176c2cc0 } +pointer_reference { + id: 0x0f4b7529 + kind: POINTER + pointee_type_id: 0x176d3238 +} pointer_reference { id: 0x0f4dcd61 kind: POINTER @@ -8865,6 +8940,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x706a01e7 } +pointer_reference { + id: 0x168d6de3 + kind: POINTER + pointee_type_id: 0x70755111 +} pointer_reference { id: 0x1692cf3f kind: POINTER @@ -9025,6 +9105,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x77ee532f } +pointer_reference { + id: 0x176d3238 + kind: POINTER + pointee_type_id: 0x77f42e7c +} pointer_reference { id: 0x176fc5b8 kind: POINTER @@ -9325,6 +9410,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x48893aca } +pointer_reference { + id: 0x18b875ee + kind: POINTER + pointee_type_id: 0x48a13124 +} pointer_reference { id: 0x18ba5a88 kind: POINTER @@ -9910,6 +10000,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x44e665d5 } +pointer_reference { + id: 0x1bab96d2 + kind: POINTER + pointee_type_id: 0x44eebdd5 +} pointer_reference { id: 0x1bb6a471 kind: POINTER @@ -10550,11 +10645,21 @@ pointer_reference { kind: POINTER pointee_type_id: 0x52a69869 } +pointer_reference { + id: 0x1e3c909a + kind: POINTER + pointee_type_id: 0x52b2a4f5 +} pointer_reference { id: 0x1e3d3b89 kind: POINTER pointee_type_id: 0x52b408ba } +pointer_reference { + id: 0x1e4bcad9 + kind: POINTER + pointee_type_id: 0x536fcdfa +} pointer_reference { id: 0x1e5f193e kind: POINTER @@ -10570,6 +10675,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x53cba54b } +pointer_reference { + id: 0x1e641f1b + kind: POINTER + pointee_type_id: 0x53d09af0 +} pointer_reference { id: 0x1e7a7830 kind: POINTER @@ -11205,6 +11315,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xaea51fc6 } +pointer_reference { + id: 0x213e28f7 + kind: POINTER + pointee_type_id: 0xaeb84542 +} pointer_reference { id: 0x21450ae9 kind: POINTER @@ -11305,6 +11420,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xad67bb9f } +pointer_reference { + id: 0x21de2259 + kind: POINTER + pointee_type_id: 0xad386ff8 +} pointer_reference { id: 0x21df69d0 kind: POINTER @@ -11475,6 +11595,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xa0ac1862 } +pointer_reference { + id: 0x22c0624b + kind: POINTER + pointee_type_id: 0xa1416fb0 +} pointer_reference { id: 0x22c8bf71 kind: POINTER @@ -11680,6 +11805,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0xa57d1db8 } +pointer_reference { + id: 0x23d902f6 + kind: POINTER + pointee_type_id: 0xa524ed45 +} +pointer_reference { + id: 0x23d957b7 + kind: POINTER + pointee_type_id: 0xa525b840 +} pointer_reference { id: 0x23da1e1b kind: POINTER @@ -12045,6 +12180,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0xbdd1c219 } +pointer_reference { + id: 0x25e63179 + kind: POINTER + pointee_type_id: 0xbdd82378 +} +pointer_reference { + id: 0x25e982e5 + kind: POINTER + pointee_type_id: 0xbde6ed0a +} pointer_reference { id: 0x25f5cdb3 kind: POINTER @@ -12945,6 +13090,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x83286178 } +pointer_reference { + id: 0x2a5ed1c1 + kind: POINTER + pointee_type_id: 0x833ba199 +} pointer_reference { id: 0x2a64866d kind: POINTER @@ -13095,6 +13245,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x86a0a463 } +pointer_reference { + id: 0x2b3a75d9 + kind: POINTER + pointee_type_id: 0x86a931f9 +} pointer_reference { id: 0x2b3a7da8 kind: POINTER @@ -19715,6 +19870,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9171f4eb } +pointer_reference { + id: 0x2ecc6701 + kind: POINTER + pointee_type_id: 0x91717a9b +} pointer_reference { id: 0x2ecc93f3 kind: POINTER @@ -21960,6 +22120,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x95bed865 } +pointer_reference { + id: 0x2fffbd5a + kind: POINTER + pointee_type_id: 0x95be13f6 +} pointer_reference { id: 0x3000402d kind: POINTER @@ -23955,6 +24120,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf8ebb6bc } +pointer_reference { + id: 0x34ab5728 + kind: POINTER + pointee_type_id: 0xf8edba3f +} pointer_reference { id: 0x34ae24a9 kind: POINTER @@ -24040,6 +24210,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf9f20e3e } +pointer_reference { + id: 0x34ed1e4a + kind: POINTER + pointee_type_id: 0xf9f49fb7 +} pointer_reference { id: 0x34ed6c40 kind: POINTER @@ -25725,6 +25900,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xcb948a18 } +pointer_reference { + id: 0x387626d3 + kind: POINTER + pointee_type_id: 0xcb987dd0 +} pointer_reference { id: 0x387bec7d kind: POINTER @@ -25745,6 +25925,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc859be95 } +pointer_reference { + id: 0x38883fc7 + kind: POINTER + pointee_type_id: 0xc8601982 +} pointer_reference { id: 0x388a169b kind: POINTER @@ -25800,6 +25985,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc8f6e9dd } +pointer_reference { + id: 0x38af3519 + kind: POINTER + pointee_type_id: 0xc8fc32f8 +} pointer_reference { id: 0x38b136d3 kind: POINTER @@ -26360,6 +26550,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xcd80c5db } +pointer_reference { + id: 0x39f4bcfa + kind: POINTER + pointee_type_id: 0xcd921577 +} pointer_reference { id: 0x3a056647 kind: POINTER @@ -27800,6 +27995,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdd9f6a40 } +pointer_reference { + id: 0x3df9bbb6 + kind: POINTER + pointee_type_id: 0xdda60846 +} pointer_reference { id: 0x3e001c39 kind: POINTER @@ -27855,6 +28055,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd2180b64 } +pointer_reference { + id: 0x3e17a54c + kind: POINTER + pointee_type_id: 0xd21e73ad +} pointer_reference { id: 0x3e190264 kind: POINTER @@ -28350,6 +28555,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd797353d } +pointer_reference { + id: 0x3f774ccb + kind: POINTER + pointee_type_id: 0xd79dd5b3 +} pointer_reference { id: 0x3f796883 kind: POINTER @@ -30900,6 +31110,11 @@ qualified { qualifier: CONST qualified_type_id: 0x539c11fe } +qualified { + id: 0xc8fc32f8 + qualifier: CONST + qualified_type_id: 0x53b77d6a +} qualified { id: 0xc93afee2 qualifier: CONST @@ -31050,6 +31265,11 @@ qualified { qualifier: CONST qualified_type_id: 0x5d8fb74a } +qualified { + id: 0xcb987dd0 + qualifier: CONST + qualified_type_id: 0x5e2641cb +} qualified { id: 0xcbaf5769 qualifier: CONST @@ -31380,6 +31600,11 @@ qualified { qualifier: CONST qualified_type_id: 0x38279b1b } +qualified { + id: 0xd21e73ad + qualifier: CONST + qualified_type_id: 0x383e783f +} qualified { id: 0xd224ef0f qualifier: CONST @@ -31970,6 +32195,11 @@ qualified { qualifier: CONST qualified_type_id: 0x063a1f8b } +qualified { + id: 0xdda60846 + qualifier: CONST + qualified_type_id: 0x06df9791 +} qualified { id: 0xddcf6bc2 qualifier: CONST @@ -34174,6 +34404,11 @@ array { number_of_elements: 128 element_type_id: 0x06835e9c } +array { + id: 0x2f6759fd + number_of_elements: 27 + element_type_id: 0x585c2d3c +} array { id: 0x2f9c1780 number_of_elements: 24 @@ -34459,6 +34694,11 @@ array { number_of_elements: 16 element_type_id: 0x237169c8 } +array { + id: 0x44f91b0f + number_of_elements: 2 + element_type_id: 0xa1416fb0 +} array { id: 0x45a82e68 number_of_elements: 10 @@ -34654,6 +34894,11 @@ array { number_of_elements: 32 element_type_id: 0x117e2995 } +array { + id: 0x51090cbc + number_of_elements: 2 + element_type_id: 0xf681317f +} array { id: 0x514537f0 number_of_elements: 7 @@ -35264,6 +35509,11 @@ array { number_of_elements: 2 element_type_id: 0x63264602 } +array { + id: 0x749f40ec + number_of_elements: 39 + element_type_id: 0xd79dd5b3 +} array { id: 0x75386dca number_of_elements: 256 @@ -35639,6 +35889,11 @@ array { number_of_elements: 4 element_type_id: 0x0595878c } +array { + id: 0x8d536703 + number_of_elements: 512 + element_type_id: 0xf313e71a +} array { id: 0x8d58bd1a number_of_elements: 6 @@ -35829,6 +36084,11 @@ array { number_of_elements: 6 element_type_id: 0xf784797b } +array { + id: 0x9c44ff2a + number_of_elements: 4 + element_type_id: 0x4027b0c0 +} array { id: 0x9c53aa65 number_of_elements: 4 @@ -35929,11 +36189,21 @@ array { number_of_elements: 672 element_type_id: 0xb3e7bac9 } +array { + id: 0xa19e72f5 + number_of_elements: 512 + element_type_id: 0x4027b0c0 +} array { id: 0xa1dc2b4a number_of_elements: 1 element_type_id: 0x50573700 } +array { + id: 0xa3440799 + number_of_elements: 9 + element_type_id: 0x21de2259 +} array { id: 0xa43786af number_of_elements: 6 @@ -35964,6 +36234,11 @@ array { number_of_elements: 1 element_type_id: 0x42af4f5c } +array { + id: 0xa634ef38 + number_of_elements: 512 + element_type_id: 0x5e8dc7f4 +} array { id: 0xa675e9e1 number_of_elements: 6 @@ -36284,6 +36559,11 @@ array { number_of_elements: 1 element_type_id: 0x295c7202 } +array { + id: 0xc0330c41 + number_of_elements: 8 + element_type_id: 0x9036114e +} array { id: 0xc0606f8b element_type_id: 0x116785ed @@ -36892,6 +37172,11 @@ array { id: 0xe68e6b4d element_type_id: 0x8adf96f5 } +array { + id: 0xe6d2b814 + number_of_elements: 8 + element_type_id: 0x0bb0c019 +} array { id: 0xe6d4143b number_of_elements: 8 @@ -37250,6 +37535,11 @@ array { id: 0xff45131e element_type_id: 0xedf277ba } +array { + id: 0xff615fef + number_of_elements: 8 + element_type_id: 0x6d7f5ff6 +} array { id: 0xff7222f6 number_of_elements: 5 @@ -42230,6 +42520,12 @@ member { offset: 4032 bitsize: 2 } +member { + id: 0x7d99680b + name: "active_nodes" + type_id: 0x74d29cf1 + offset: 49184 +} member { id: 0x5adc2ffa name: "active_objs" @@ -42796,6 +43092,11 @@ member { type_id: 0xbdd18903 offset: 64 } +member { + id: 0x2493d07f + name: "addr" + type_id: 0xbe0f19dc +} member { id: 0x24a68b5d name: "addr" @@ -42869,6 +43170,11 @@ member { type_id: 0xc9082b19 offset: 448 } +member { + id: 0x24e4d74d + name: "addr" + type_id: 0xc9082b19 +} member { id: 0x24e4e5b0 name: "addr" @@ -43454,6 +43760,11 @@ member { type_id: 0x6d7f5ff6 offset: 43136 } +member { + id: 0x1ffcf224 + name: "ae" + type_id: 0x25802b70 +} member { id: 0x59bfd6c9 name: "aead" @@ -44334,6 +44645,13 @@ member { type_id: 0x6d7f5ff6 offset: 12912 } +member { + id: 0x2aaa0939 + name: "allow_unknown" + type_id: 0x4585663f + offset: 4705 + bitsize: 1 +} member { id: 0xd57865fa name: "allow_user_free" @@ -44372,6 +44690,11 @@ member { type_id: 0x36042134 offset: 704 } +member { + id: 0xcf92c78a + name: "allowed" + type_id: 0xc9082b19 +} member { id: 0x0a18e8bc name: "allowed_protocols" @@ -44973,6 +45296,30 @@ member { type_id: 0x92233392 offset: 2432 } +member { + id: 0x6fc674e0 + name: "android_netlink_getneigh" + type_id: 0x6d7f5ff6 + offset: 96 +} +member { + id: 0x6fcc260e + name: "android_netlink_getneigh" + type_id: 0x6720d32f + offset: 64 +} +member { + id: 0x395073a8 + name: "android_netlink_route" + type_id: 0x6720d32f + offset: 32 +} +member { + id: 0x395a2e99 + name: "android_netlink_route" + type_id: 0x6d7f5ff6 + offset: 88 +} member { id: 0xd666cb46 name: "android_oem_data1" @@ -45761,6 +46108,12 @@ member { type_id: 0x3ea9cea9 offset: 320 } +member { + id: 0x3423032e + name: "args" + type_id: 0x18bd6530 + offset: 64 +} member { id: 0x343f35e0 name: "args" @@ -47072,6 +47425,12 @@ member { type_id: 0xbbf3ac86 offset: 1728 } +member { + id: 0x8ccdaf26 + name: "attr" + type_id: 0xc9082b19 + offset: 32 +} member { id: 0x8cd8119b name: "attr" @@ -47172,6 +47531,12 @@ member { type_id: 0x079ced0e offset: 2496 } +member { + id: 0xa926c7e0 + name: "attribute" + type_id: 0x5d8155a5 + offset: 72 +} member { id: 0x031bf6f0 name: "attributes" @@ -47344,6 +47709,18 @@ member { type_id: 0x4585663f offset: 7552 } +member { + id: 0x242a71d3 + name: "auditallow" + type_id: 0xc9082b19 + offset: 32 +} +member { + id: 0x3a9cc23a + name: "auditdeny" + type_id: 0xc9082b19 + offset: 64 +} member { id: 0x56e37738 name: "audmode" @@ -47888,6 +48265,29 @@ member { type_id: 0x92233392 offset: 512 } +member { + id: 0x0a7701ba + name: "avc" + type_id: 0x38883fc7 + offset: 448 +} +member { + id: 0x4133d93e + name: "avc_cache" + type_id: 0x22e22107 + offset: 64 +} +member { + id: 0xac537364 + name: "avc_cache_threshold" + type_id: 0x4585663f +} +member { + id: 0xce3c6bac + name: "avd" + type_id: 0xb65e540b + offset: 96 +} member { id: 0x0f221806 name: "avg" @@ -49814,6 +50214,11 @@ member { name: "begin_enable_verity" type_id: 0x2c7ea7c2 } +member { + id: 0x8b969425 + name: "behavior" + type_id: 0xc9082b19 +} member { id: 0xb4845c93 name: "behaviour" @@ -51220,6 +51625,18 @@ member { type_id: 0x219459f2 offset: 14656 } +member { + id: 0xbfc5857a + name: "bool" + type_id: 0xc9082b19 + offset: 32 +} +member { + id: 0x9fd51a6e + name: "bool_val_to_struct" + type_id: 0x03e9b5f9 + offset: 3072 +} member { id: 0xa9b46c97 name: "boolean" @@ -51474,6 +51891,12 @@ member { type_id: 0xa8fff47c offset: 1792 } +member { + id: 0x41a916e7 + name: "bounds" + type_id: 0xc9082b19 + offset: 32 +} member { id: 0x69f88a42 name: "bp_addr" @@ -54196,6 +54619,12 @@ member { name: "cache" type_id: 0x3fe284cc } +member { + id: 0x3b4729d9 + name: "cache" + type_id: 0x39f4bcfa + offset: 640 +} member { id: 0x3b4c6380 name: "cache" @@ -54267,6 +54696,12 @@ member { type_id: 0x6d7f5ff6 offset: 4400 } +member { + id: 0x10ef1bf4 + name: "cache_free_slots" + type_id: 0xc9082b19 + offset: 448 +} member { id: 0xc1ced5ca name: "cache_id" @@ -54285,6 +54720,18 @@ member { type_id: 0xa7c362b0 offset: 2432 } +member { + id: 0x6847c1f3 + name: "cache_lock" + type_id: 0xf313e71a + offset: 640 +} +member { + id: 0xfb7d6571 + name: "cache_lru_list" + type_id: 0xd3c80119 + offset: 512 +} member { id: 0xc81cf99a name: "cache_nice_tries" @@ -55663,6 +56110,12 @@ member { type_id: 0xd3c80119 offset: 7168 } +member { + id: 0x1133d766 + name: "cat" + type_id: 0x86a931f9 + offset: 64 +} member { id: 0xa971e10c name: "catch" @@ -57312,6 +57765,12 @@ member { type_id: 0x139300cd offset: 256 } +member { + id: 0x666c167f + name: "checkreqprot" + type_id: 0x6d7f5ff6 + offset: 8 +} member { id: 0x2a729a89 name: "checksum" @@ -58264,6 +58723,12 @@ member { type_id: 0x0c12eb7b offset: 448 } +member { + id: 0x3ebbdd01 + name: "class_val_to_struct" + type_id: 0x0cbe24dc + offset: 2176 +} member { id: 0x742a7c0e name: "classes" @@ -60234,6 +60699,18 @@ member { type_id: 0xe62ebf07 offset: 256 } +member { + id: 0xe994f7e2 + name: "comdatum" + type_id: 0x1e3c909a + offset: 128 +} +member { + id: 0x7372cfc3 + name: "comkey" + type_id: 0x0483e6f8 + offset: 64 +} member { id: 0x09c989f6 name: "comm" @@ -60702,6 +61179,12 @@ member { type_id: 0x6d7f5ff6 offset: 1088 } +member { + id: 0xd79237c9 + name: "compat_filename_trans_count" + type_id: 0xc9082b19 + offset: 3008 +} member { id: 0x4a54423a name: "compat_ioctl" @@ -61227,6 +61710,18 @@ member { type_id: 0xb3e7bac9 offset: 200 } +member { + id: 0x75447ac6 + name: "cond_list" + type_id: 0x08ea582b + offset: 3328 +} +member { + id: 0x56da2358 + name: "cond_list_len" + type_id: 0xc9082b19 + offset: 3392 +} member { id: 0x9c734fbf name: "cond_suspend_depth" @@ -62044,6 +62539,12 @@ member { type_id: 0x2e71b7d0 offset: 7680 } +member { + id: 0xfd724d73 + name: "constraints" + type_id: 0x1bab96d2 + offset: 384 +} member { id: 0xfdfa65af name: "constraints" @@ -62206,6 +62707,12 @@ member { type_id: 0xb3e7bac9 offset: 8 } +member { + id: 0x41167d14 + name: "context" + type_id: 0xa1416fb0 + offset: 64 +} member { id: 0x41251b02 name: "context" @@ -62248,6 +62755,12 @@ member { type_id: 0x753f7205 offset: 32 } +member { + id: 0x41f3c646 + name: "context" + type_id: 0x44f91b0f + offset: 320 +} member { id: 0x6f74ad91 name: "context_mgr_node_lock" @@ -62261,6 +62774,12 @@ member { offset: 346 bitsize: 1 } +member { + id: 0x3ac44cab + name: "context_to_sid" + type_id: 0xa634ef38 + offset: 24896 +} member { id: 0x52eba014 name: "contiguous" @@ -62472,6 +62991,12 @@ member { type_id: 0x064d6086 offset: 3776 } +member { + id: 0xb5c7762e + name: "convert" + type_id: 0x1e4bcad9 + offset: 320 +} member { id: 0x3f2fb089 name: "convert_ctx_access" @@ -63214,6 +63739,12 @@ member { type_id: 0xc9082b19 offset: 64 } +member { + id: 0x65ec5744 + name: "count" + type_id: 0xc9082b19 + offset: 256 +} member { id: 0x65ec57ef name: "count" @@ -65720,6 +66251,11 @@ member { type_id: 0x31114896 offset: 320 } +member { + id: 0x0cc4772a + name: "cur_state" + type_id: 0x6720d32f +} member { id: 0x47642b4f name: "cur_task" @@ -67841,6 +68377,18 @@ member { type_id: 0x0483e6f8 offset: 1408 } +member { + id: 0x13afcd46 + name: "datum" + type_id: 0x4fda69a2 + offset: 64 +} +member { + id: 0x13f8aa4a + name: "datum" + type_id: 0x18bd6530 + offset: 64 +} member { id: 0x57d05f3f name: "dax_dev" @@ -68978,6 +69526,18 @@ member { type_id: 0xe9da44e2 offset: 3264 } +member { + id: 0x7ad0edec + name: "default_range" + type_id: 0x384f7d7c + offset: 536 +} +member { + id: 0x7c01b61e + name: "default_role" + type_id: 0x384f7d7c + offset: 520 +} member { id: 0x37301021 name: "default_set" @@ -69001,12 +69561,24 @@ member { type_id: 0x3e10b518 offset: 896 } +member { + id: 0x98b80a03 + name: "default_type" + type_id: 0x384f7d7c + offset: 528 +} member { id: 0x98c5ce6d name: "default_type" type_id: 0x4585663f offset: 1216 } +member { + id: 0x932e00b0 + name: "default_user" + type_id: 0x384f7d7c + offset: 512 +} member { id: 0x126d860d name: "default_value" @@ -71481,6 +72053,11 @@ member { type_id: 0xd3c80119 offset: 8256 } +member { + id: 0x8606d3a0 + name: "dev_name" + type_id: 0x0483e6f8 +} member { id: 0x863c40f3 name: "dev_name" @@ -72656,6 +73233,12 @@ member { type_id: 0x2033e582 offset: 1280 } +member { + id: 0x5898f7bd + name: "dfltlevel" + type_id: 0xf681317f + offset: 576 +} member { id: 0x07451d80 name: "dfs_bitmap" @@ -74864,6 +75447,12 @@ member { name: "domains" type_id: 0x0b343e69 } +member { + id: 0xd2c2119f + name: "dominates" + type_id: 0x86a931f9 + offset: 64 +} member { id: 0x1d0af001 name: "done" @@ -75658,6 +76247,12 @@ member { type_id: 0x2a52de6b offset: 1024 } +member { + id: 0xd467c584 + name: "driver" + type_id: 0x295c7202 + offset: 8 +} member { id: 0xd4751144 name: "driver" @@ -76097,6 +76692,12 @@ member { type_id: 0x60f31502 offset: 7552 } +member { + id: 0x922207d0 + name: "drivers" + type_id: 0xc4d82b11 + offset: 32 +} member { id: 0x12f21026 name: "drivers_autoprobe" @@ -79368,6 +79969,11 @@ member { offset: 26 bitsize: 1 } +member { + id: 0x0eb6d2c5 + name: "enforcing" + type_id: 0x6d7f5ff6 +} member { id: 0x4262cdb7 name: "enhanced_area_offset" @@ -79549,6 +80155,11 @@ member { type_id: 0x74d29cf1 offset: 4160 } +member { + id: 0xbe09c685 + name: "entries" + type_id: 0x749f40ec +} member { id: 0xbe1a7a32 name: "entries" @@ -79635,6 +80246,11 @@ member { type_id: 0xc227cae4 offset: 64 } +member { + id: 0xbedcc7b7 + name: "entries" + type_id: 0xa19e72f5 +} member { id: 0x874cc7f4 name: "entries_bytes" @@ -79687,6 +80303,12 @@ member { type_id: 0x05b4d9be offset: 192 } +member { + id: 0x4d83d109 + name: "entry" + type_id: 0xd79dd5b3 + offset: 64 +} member { id: 0x4d87803c name: "entry" @@ -81907,6 +82529,23 @@ member { type_id: 0x6d7f5ff6 offset: 504 } +member { + id: 0x713c7886 + name: "expr" + type_id: 0xdf3bd046 + offset: 64 +} +member { + id: 0x71e1baf7 + name: "expr" + type_id: 0x02f9a1f8 + offset: 64 +} +member { + id: 0xa0783f48 + name: "expr_type" + type_id: 0xc9082b19 +} member { id: 0x3ef98632 name: "exptime" @@ -82748,6 +83387,12 @@ member { type_id: 0x33756485 offset: 256 } +member { + id: 0x22c3bf72 + name: "false_list" + type_id: 0xdc39b636 + offset: 320 +} member { id: 0x9e3288ce name: "family" @@ -84880,6 +85525,18 @@ member { type_id: 0x3e10b518 offset: 768 } +member { + id: 0xe3a3c2c5 + name: "filename_trans" + type_id: 0x26a23d9b + offset: 2880 +} +member { + id: 0x0048fc1f + name: "filename_trans_ttypes" + type_id: 0x86a931f9 + offset: 2752 +} member { id: 0x3ff8b433 name: "filenames_encryption_mode" @@ -89826,6 +90483,12 @@ member { type_id: 0x6d7f5ff6 offset: 1832 } +member { + id: 0xb8c67f5c + name: "frozen" + type_id: 0x6d7f5ff6 + offset: 384 +} member { id: 0xb8cc2142 name: "frozen" @@ -89927,6 +90590,11 @@ member { type_id: 0x25e44921 offset: 1088 } +member { + id: 0x51d40905 + name: "fstype" + type_id: 0x0483e6f8 +} member { id: 0xae1bb7ee name: "fsuid" @@ -90229,6 +90897,11 @@ member { type_id: 0x12546c43 offset: 128 } +member { + id: 0x21202e0b + name: "func" + type_id: 0x2fffbd5a +} member { id: 0x212058ea name: "func" @@ -91207,6 +91880,12 @@ member { type_id: 0x6d7f5ff6 offset: 2976 } +member { + id: 0x4a8a7a23 + name: "genfs" + type_id: 0x2ecc6701 + offset: 4096 +} member { id: 0xe46642f7 name: "genid" @@ -95010,6 +95689,12 @@ member { name: "hash" type_id: 0xd3c80119 } +member { + id: 0x63f7869f + name: "hash" + type_id: 0xc9082b19 + offset: 32 +} member { id: 0x63f78ba4 name: "hash" @@ -95970,6 +96655,12 @@ member { type_id: 0x295c7202 offset: 32 } +member { + id: 0xb57b63c2 + name: "head" + type_id: 0x21de2259 + offset: 64 +} member { id: 0xb5897100 name: "head" @@ -96590,6 +97281,18 @@ member { type_id: 0x295c7202 offset: 8 } +member { + id: 0x2467cbde + name: "high_pkey" + type_id: 0x914dbfdc + offset: 80 +} +member { + id: 0x22f0b41b + name: "high_port" + type_id: 0x914dbfdc + offset: 32 +} member { id: 0x214261e5 name: "high_power" @@ -96627,6 +97330,12 @@ member { type_id: 0x1f3c8679 offset: 8192 } +member { + id: 0x24b8b0fd + name: "highbit" + type_id: 0xc9082b19 + offset: 64 +} member { id: 0x90fb51f7 name: "highest_bit" @@ -97868,6 +98577,16 @@ member { type_id: 0x6d7f5ff6 offset: 16 } +member { + id: 0xf2863c10 + name: "htable" + type_id: 0x08c085d5 +} +member { + id: 0xf28957eb + name: "htable" + type_id: 0x07ab7e35 +} member { id: 0x4e6b5ac0 name: "htc_trig_based_pkt_ext" @@ -99146,6 +99865,11 @@ member { type_id: 0x05dc2a7b offset: 960 } +member { + id: 0xe352e743 + name: "ibendport" + type_id: 0x39ffc4a3 +} member { id: 0x92f5dc36 name: "ibi" @@ -99158,6 +99882,11 @@ member { type_id: 0xa7c362b0 offset: 448 } +member { + id: 0x6bb5d251 + name: "ibpkey" + type_id: 0x0e09b329 +} member { id: 0x94e48b1a name: "ibss" @@ -107509,6 +108238,12 @@ member { type_id: 0x6d7f5ff6 offset: 168 } +member { + id: 0xfa661c0d + name: "isids" + type_id: 0x2f6759fd + offset: 704 +} member { id: 0x8238342c name: "iso15693_dsfid" @@ -108439,6 +109174,11 @@ member { type_id: 0x4585663f offset: 480 } +member { + id: 0x201b5dee + name: "key" + type_id: 0x4d57407e +} member { id: 0x201e2b22 name: "key" @@ -108470,6 +109210,11 @@ member { name: "key" type_id: 0x112f0014 } +member { + id: 0x204eb7cb + name: "key" + type_id: 0x18bd6530 +} member { id: 0x204ebe09 name: "key" @@ -110795,6 +111540,18 @@ member { type_id: 0x160238dd offset: 2432 } +member { + id: 0xac824246 + name: "latest_granting" + type_id: 0xc9082b19 + offset: 4992 +} +member { + id: 0x41995401 + name: "latest_notif" + type_id: 0xc9082b19 + offset: 49216 +} member { id: 0x8747c030 name: "launder_folio" @@ -111744,6 +112501,12 @@ member { type_id: 0xc9082b19 offset: 672 } +member { + id: 0xb8ccdaba + name: "len" + type_id: 0xc9082b19 + offset: 320 +} member { id: 0xb8e3f22b name: "len" @@ -111821,6 +112584,12 @@ member { type_id: 0xf435685e offset: 128 } +member { + id: 0xb8f1ea33 + name: "len" + type_id: 0xf435685e + offset: 4608 +} member { id: 0xecd18446 name: "len8_dlc" @@ -112133,6 +112902,11 @@ member { type_id: 0x6720d32f offset: 1664 } +member { + id: 0x86ebc61e + name: "level" + type_id: 0x51090cbc +} member { id: 0x86ff416c name: "level" @@ -113352,6 +114126,18 @@ member { name: "list" type_id: 0x49a73111 } +member { + id: 0x7c9a825f + name: "list" + type_id: 0x49a73111 + offset: 704 +} +member { + id: 0x7c9a87a5 + name: "list" + type_id: 0x49a73111 + offset: 320 +} member { id: 0x7c9eb1a5 name: "list" @@ -114271,6 +115057,12 @@ member { type_id: 0xf313e71a offset: 7072 } +member { + id: 0x2d1feee5 + name: "lock" + type_id: 0xf313e71a + offset: 416 +} member { id: 0x2d1fef3f name: "lock" @@ -115378,6 +116170,18 @@ member { type_id: 0x4585663f offset: 736 } +member { + id: 0xbc5b3492 + name: "low_pkey" + type_id: 0x914dbfdc + offset: 64 +} +member { + id: 0x3af6d631 + name: "low_port" + type_id: 0x914dbfdc + offset: 16 +} member { id: 0x468f2f3e name: "low_prio_bh" @@ -115668,12 +116472,24 @@ member { type_id: 0x074e13f5 offset: 7040 } +member { + id: 0xff719763 + name: "lru_hint" + type_id: 0x74d29cf1 + offset: 49152 +} member { id: 0x50d1f939 name: "lru_lock" type_id: 0xf313e71a offset: 640 } +member { + id: 0x7974d3dd + name: "lru_member" + type_id: 0xd3c80119 + offset: 128 +} member { id: 0x37a01e9c name: "lru_node" @@ -116562,6 +117378,12 @@ member { type_id: 0xb9c7723b offset: 1216 } +member { + id: 0x8dbdb056 + name: "map" + type_id: 0x4bc42bec + offset: 4864 +} member { id: 0x8dc50032 name: "map" @@ -117184,6 +118006,11 @@ member { type_id: 0xe09ad666 offset: 8192 } +member { + id: 0x5dcf7d96 + name: "mapping" + type_id: 0x25e982e5 +} member { id: 0x5dedc95b name: "mapping" @@ -117226,6 +118053,12 @@ member { type_id: 0xd3c80119 offset: 7296 } +member { + id: 0xb0b6f056 + name: "maps" + type_id: 0xad7c0a89 + offset: 64 +} member { id: 0xbba253c6 name: "mapsize" @@ -117542,6 +118375,12 @@ member { type_id: 0xb94e10c7 offset: 704 } +member { + id: 0xa88d6ff6 + name: "mask" + type_id: 0xbe0f19dc + offset: 128 +} member { id: 0xa8a142d7 name: "mask" @@ -117611,6 +118450,12 @@ member { type_id: 0xc9082b19 offset: 320 } +member { + id: 0xa8fa68c4 + name: "mask" + type_id: 0xc9082b19 + offset: 128 +} member { id: 0xa8fa6c3d name: "mask" @@ -123193,6 +124038,11 @@ member { type_id: 0x4585663f offset: 64 } +member { + id: 0x3219aca6 + name: "mls_enabled" + type_id: 0x6720d32f +} member { id: 0x3017b841 name: "mm" @@ -127383,6 +128233,12 @@ member { type_id: 0x295c7202 offset: 1368 } +member { + id: 0x5542647f + name: "names" + type_id: 0x86a931f9 + offset: 128 +} member { id: 0x55fab336 name: "names" @@ -128602,6 +129458,12 @@ member { type_id: 0x4585663f offset: 7136 } +member { + id: 0xcf8ca44d + name: "negset" + type_id: 0x86a931f9 + offset: 128 +} member { id: 0x8bb2a09a name: "neigh_lookup" @@ -128626,6 +129488,18 @@ member { type_id: 0x6720d32f offset: 64 } +member { + id: 0x7cc2460f + name: "nel" + type_id: 0xc9082b19 + offset: 64 +} +member { + id: 0x7cc24b6d + name: "nel" + type_id: 0xc9082b19 + offset: 96 +} member { id: 0xc531a02f name: "nelem_hint" @@ -129035,6 +129909,12 @@ member { type_id: 0x21b2d2f4 offset: 256 } +member { + id: 0xa3831cac + name: "new_role" + type_id: 0xc9082b19 + offset: 32 +} member { id: 0x4fa1cefa name: "new_source_frs_current" @@ -129175,6 +130055,12 @@ member { type_id: 0x342a8622 offset: 192 } +member { + id: 0x11c7e403 + name: "next" + type_id: 0x34ed1e4a + offset: 128 +} member { id: 0x11c85643 name: "next" @@ -129226,6 +130112,11 @@ member { name: "next" type_id: 0x23947191 } +member { + id: 0x11d0d9dd + name: "next" + type_id: 0x23d902f6 +} member { id: 0x11d0f564 name: "next" @@ -129237,6 +130128,12 @@ member { type_id: 0x22669bc4 offset: 64 } +member { + id: 0x11d2d41a + name: "next" + type_id: 0x21de2259 + offset: 1536 +} member { id: 0x11d5cf20 name: "next" @@ -129263,6 +130160,12 @@ member { type_id: 0x2e8ad82b offset: 704 } +member { + id: 0x11ddc57a + name: "next" + type_id: 0x2ecc6701 + offset: 128 +} member { id: 0x11dde27a name: "next" @@ -129279,6 +130182,12 @@ member { type_id: 0x16749208 offset: 112 } +member { + id: 0x11e58953 + name: "next" + type_id: 0x168d6de3 + offset: 64 +} member { id: 0x11e65bc2 name: "next" @@ -129290,6 +130199,12 @@ member { type_id: 0x14b9453b offset: 1792 } +member { + id: 0x11e8a28b + name: "next" + type_id: 0x1bab96d2 + offset: 128 +} member { id: 0x11e8b29a name: "next" @@ -129353,6 +130268,12 @@ member { name: "next" type_id: 0x02c35f57 } +member { + id: 0x11f1feb9 + name: "next" + type_id: 0x02f9a1f8 + offset: 320 +} member { id: 0x11f20dd8 name: "next" @@ -129423,6 +130344,12 @@ member { name: "next" type_id: 0x09451098 } +member { + id: 0x11fa4bec + name: "next" + type_id: 0x0942f1ca + offset: 128 +} member { id: 0x11fb2249 name: "next" @@ -130742,6 +131669,11 @@ member { name: "node" type_id: 0x214d9bc0 } +member { + id: 0x0f56d7ac + name: "node" + type_id: 0x23d902f6 +} member { id: 0x0f5c4493 name: "node" @@ -130753,6 +131685,11 @@ member { name: "node" type_id: 0x1592957f } +member { + id: 0x0f6471e1 + name: "node" + type_id: 0x117f4f93 +} member { id: 0x0f71e4ec name: "node" @@ -130875,6 +131812,11 @@ member { type_id: 0x80bff031 offset: 7296 } +member { + id: 0x3599c2c8 + name: "node6" + type_id: 0x1162939f +} member { id: 0x34366eb8 name: "node_count" @@ -130981,6 +131923,16 @@ member { type_id: 0xfeb89bd6 offset: 520 } +member { + id: 0x62527a67 + name: "nodes" + type_id: 0x23d957b7 +} +member { + id: 0x627963b5 + name: "nodes" + type_id: 0x08c085d5 +} member { id: 0x629a39c3 name: "nodes" @@ -131649,6 +132601,12 @@ member { type_id: 0x4585663f offset: 128 } +member { + id: 0xb4f51360 + name: "nprim" + type_id: 0xc9082b19 + offset: 128 +} member { id: 0x1cabc60b name: "npwm" @@ -133035,6 +133993,12 @@ member { type_id: 0x33756485 offset: 192 } +member { + id: 0x51460e20 + name: "nslot" + type_id: 0xc9082b19 + offset: 96 +} member { id: 0xac7383e4 name: "nsproxy" @@ -134182,6 +135146,12 @@ member { type_id: 0x74d29cf1 offset: 576 } +member { + id: 0xbe3e9d70 + name: "num_perms" + type_id: 0x4585663f + offset: 32 +} member { id: 0x20040d9e name: "num_planes" @@ -135178,6 +136148,12 @@ member { type_id: 0x6d7f5ff6 offset: 192 } +member { + id: 0x67879250 + name: "ocontexts" + type_id: 0xa3440799 + offset: 3520 +} member { id: 0xec90d9ed name: "ocr" @@ -136403,6 +137379,12 @@ member { offset: 320 bitsize: 8 } +member { + id: 0xf03ba7f6 + name: "op" + type_id: 0xc9082b19 + offset: 64 +} member { id: 0xf0697d2a name: "op" @@ -138889,6 +139871,11 @@ member { type_id: 0xc6cbbd05 offset: 640 } +member { + id: 0xa6673206 + name: "p" + type_id: 0xd67c82d4 +} member { id: 0xa67023cc name: "p" @@ -140355,6 +141342,12 @@ member { type_id: 0x3cfe7778 offset: 192 } +member { + id: 0x720e051d + name: "parent" + type_id: 0x3f774ccb + offset: 256 +} member { id: 0x720e5144 name: "parent" @@ -142873,23 +143866,58 @@ member { type_id: 0x2d174c02 offset: 128 } +member { + id: 0xf0063172 + name: "permissions" + type_id: 0xc9082b19 +} +member { + id: 0xf05f0781 + name: "permissions" + type_id: 0x9036114e + offset: 192 +} +member { + id: 0xf05f0ba9 + name: "permissions" + type_id: 0x9036114e + offset: 64 +} member { id: 0xf0e1b1fd name: "permissions" type_id: 0x2e820213 offset: 896 } +member { + id: 0x616c799d + name: "permissive_map" + type_id: 0x86a931f9 + offset: 4480 +} member { id: 0xd079425e name: "permitted" type_id: 0xd9449876 } +member { + id: 0xdb129b64 + name: "perms" + type_id: 0x668e8237 + offset: 64 +} member { id: 0xdb5d43cb name: "perms" type_id: 0x295c7202 offset: 16 } +member { + id: 0xdbb0c417 + name: "perms" + type_id: 0xc4d82b11 + offset: 32 +} member { id: 0xc18525b9 name: "pernet" @@ -145284,6 +146312,12 @@ member { type_id: 0x33756485 offset: 512 } +member { + id: 0x60ddb117 + name: "policy" + type_id: 0x34ab5728 + offset: 512 +} member { id: 0x60e88f7d name: "policy" @@ -145355,6 +146389,36 @@ member { type_id: 0xd3c80119 offset: 2944 } +member { + id: 0x478ff8c9 + name: "policy_mutex" + type_id: 0xa7c362b0 + offset: 576 +} +member { + id: 0x0d6726b0 + name: "policycap" + type_id: 0xff615fef + offset: 24 +} +member { + id: 0x37828654 + name: "policycaps" + type_id: 0x86a931f9 + offset: 4352 +} +member { + id: 0xbb7445e4 + name: "policydb" + type_id: 0x9146342b + offset: 64 +} +member { + id: 0x23820e22 + name: "policyvers" + type_id: 0x4585663f + offset: 4672 +} member { id: 0x5e0d04df name: "poll" @@ -145979,6 +147043,17 @@ member { type_id: 0x347303b4 offset: 64 } +member { + id: 0x48d2413e + name: "port" + type_id: 0x295c7202 + offset: 64 +} +member { + id: 0x48d446d8 + name: "port" + type_id: 0x2f5f7542 +} member { id: 0x48e10112 name: "port" @@ -148020,6 +149095,12 @@ member { name: "pri_to_cpu" type_id: 0x0772f61b } +member { + id: 0xacb061a5 + name: "primary" + type_id: 0x5d8155a5 + offset: 64 +} member { id: 0xacb061de name: "primary" @@ -149616,6 +150697,12 @@ member { type_id: 0x184052fc offset: 320 } +member { + id: 0x055eb011 + name: "process_class" + type_id: 0x914dbfdc + offset: 4720 +} member { id: 0x44535944 name: "process_keyring" @@ -149646,6 +150733,12 @@ member { type_id: 0x6d7f5ff6 offset: 704 } +member { + id: 0x9e219cb6 + name: "process_trans_perms" + type_id: 0xc9082b19 + offset: 4736 +} member { id: 0xbe13f636 name: "processed" @@ -150547,6 +151640,11 @@ member { type_id: 0x295c7202 offset: 224 } +member { + id: 0xdcf61242 + name: "protocol" + type_id: 0x295c7202 +} member { id: 0xdcf61d25 name: "protocol" @@ -151031,6 +152129,16 @@ member { name: "ptr_const" type_id: 0x34e4504f } +member { + id: 0x1db8f0e1 + name: "ptr_inner" + type_id: 0x083bdf25 +} +member { + id: 0xc0d22edd + name: "ptr_leaf" + type_id: 0x01ba2ceb +} member { id: 0xf6e3ddc9 name: "ptr_type" @@ -152789,6 +153897,18 @@ member { name: "range" type_id: 0xb3e7bac9 } +member { + id: 0x0e5c14b2 + name: "range" + type_id: 0xe0987ef0 + offset: 128 +} +member { + id: 0x0e5c15b9 + name: "range" + type_id: 0xe0987ef0 + offset: 192 +} member { id: 0x0e6e7fb8 name: "range" @@ -152898,6 +154018,12 @@ member { type_id: 0x27a7c613 offset: 128 } +member { + id: 0x2f5e77ea + name: "range_tr" + type_id: 0x26a23d9b + offset: 4160 +} member { id: 0xce7c94d9 name: "range_tree" @@ -154146,6 +155272,11 @@ member { type_id: 0x33756485 offset: 320 } +member { + id: 0xe2ce8a90 + name: "rcu_member" + type_id: 0xe3222f5b +} member { id: 0x3040a702 name: "rcu_node_entry" @@ -157154,6 +158285,13 @@ member { type_id: 0x6d7f5ff6 offset: 200 } +member { + id: 0xe91e5dbc + name: "reject_unknown" + type_id: 0x4585663f + offset: 4704 + bitsize: 1 +} member { id: 0x0613b106 name: "rejected" @@ -161548,6 +162686,12 @@ member { name: "rhead" type_id: 0x80bff031 } +member { + id: 0xbc563875 + name: "rhead" + type_id: 0xe3222f5b + offset: 448 +} member { id: 0xe3226e74 name: "rhlist" @@ -161853,6 +162997,17 @@ member { type_id: 0xf57b706b offset: 256 } +member { + id: 0xc0218791 + name: "role" + type_id: 0xc9082b19 + offset: 32 +} +member { + id: 0xc0218aaa + name: "role" + type_id: 0xc9082b19 +} member { id: 0xc024bb1e name: "role" @@ -161876,6 +163031,12 @@ member { name: "role" type_id: 0x6e06e717 } +member { + id: 0xf14b14bf + name: "role_allow" + type_id: 0x168d6de3 + offset: 3456 +} member { id: 0x8230d84e name: "role_sw" @@ -161888,6 +163049,24 @@ member { type_id: 0x0cbe17fd offset: 448 } +member { + id: 0x3981996e + name: "role_tr" + type_id: 0x26a23d9b + offset: 2624 +} +member { + id: 0x9361a429 + name: "role_val_to_struct" + type_id: 0x02dfb39a + offset: 2240 +} +member { + id: 0x39f20f43 + name: "roles" + type_id: 0x86a931f9 + offset: 64 +} member { id: 0x39f4cfd4 name: "roles" @@ -162096,6 +163275,11 @@ member { type_id: 0x92233392 offset: 4800 } +member { + id: 0xb97636cd + name: "roots" + type_id: 0x9c44ff2a +} member { id: 0x38930b8b name: "rop" @@ -166688,6 +167872,11 @@ member { type_id: 0xc9082b19 offset: 32 } +member { + id: 0x788c9e45 + name: "sclass" + type_id: 0xc9082b19 +} member { id: 0xe473c8a3 name: "scm_io_uring" @@ -168035,6 +169224,11 @@ member { name: "sens" type_id: 0xe8d14bc6 } +member { + id: 0xdd7d0bae + name: "sens" + type_id: 0xc9082b19 +} member { id: 0x4036d71d name: "sens_res" @@ -168435,6 +169629,12 @@ member { type_id: 0xf313e71a offset: 2592 } +member { + id: 0x792b5ed3 + name: "seqno" + type_id: 0xc9082b19 + offset: 96 +} member { id: 0x79707b8f name: "seqno" @@ -168764,6 +169964,11 @@ member { type_id: 0x7b06e63f offset: 3072 } +member { + id: 0x3db96022 + name: "set" + type_id: 0x6720d32f +} member { id: 0x3dca10e3 name: "set" @@ -171936,11 +173141,27 @@ member { type_id: 0xd3c80119 offset: 64 } +member { + id: 0x086ca956 + name: "sid" + type_id: 0x5eeb4a25 + offset: 1472 +} member { id: 0x08a308f3 name: "sid" type_id: 0x914dbfdc } +member { + id: 0x08fb4d67 + name: "sid" + type_id: 0xc9082b19 +} +member { + id: 0x71a9d2d2 + name: "sidtab" + type_id: 0x0f0b2702 +} member { id: 0x6c4c56c1 name: "sifs_period" @@ -172638,6 +173859,12 @@ member { name: "size" type_id: 0x92233392 } +member { + id: 0xd9ef552c + name: "size" + type_id: 0x914dbfdc + offset: 64 +} member { id: 0xd9ef5cf6 name: "size" @@ -174261,12 +175488,23 @@ member { type_id: 0xd3c80119 offset: 512 } +member { + id: 0x4fe96ca2 + name: "slots" + type_id: 0xa634ef38 +} member { id: 0x595976c5 name: "slots_arch_lock" type_id: 0xa7c362b0 offset: 320 } +member { + id: 0xdd8a193d + name: "slots_lock" + type_id: 0x8d536703 + offset: 32768 +} member { id: 0xdda08f2f name: "slots_lock" @@ -174907,6 +176145,11 @@ member { type_id: 0x18bd6530 offset: 4736 } +member { + id: 0x7f0d6cd1 + name: "source_type" + type_id: 0x914dbfdc +} member { id: 0xf720feb9 name: "sources" @@ -175047,12 +176290,23 @@ member { name: "special_vec" type_id: 0x348515c6 } +member { + id: 0x5f3a1a61 + name: "specified" + type_id: 0x295c7202 +} member { id: 0x5f7e39e7 name: "specified" type_id: 0x6d7f5ff6 offset: 256 } +member { + id: 0x5f82076d + name: "specified" + type_id: 0x914dbfdc + offset: 48 +} member { id: 0x5c1dbc47 name: "speculative" @@ -176234,6 +177488,11 @@ member { type_id: 0x3f0185ef offset: 256 } +member { + id: 0xb08e32fc + name: "ssid" + type_id: 0xc9082b19 +} member { id: 0xb0f70111 name: "ssid" @@ -177234,6 +178493,12 @@ member { name: "start_xmit" type_id: 0x2cff36be } +member { + id: 0xba5cc544 + name: "startbit" + type_id: 0xc9082b19 + offset: 448 +} member { id: 0x5367c52c name: "started" @@ -177503,6 +178768,12 @@ member { type_id: 0x63b95725 offset: 2208 } +member { + id: 0x7294d1e9 + name: "state" + type_id: 0x6720d32f + offset: 32 +} member { id: 0x7294d421 name: "state" @@ -178724,6 +179995,18 @@ member { offset: 620 bitsize: 1 } +member { + id: 0x8e288971 + name: "status_lock" + type_id: 0xa7c362b0 + offset: 192 +} +member { + id: 0xd41c6df7 + name: "status_page" + type_id: 0x06835e9c + offset: 128 +} member { id: 0x1c1b392d name: "status_reg_buf" @@ -179255,6 +180538,12 @@ member { name: "str" type_id: 0x38369fac } +member { + id: 0x3a3545b3 + name: "str" + type_id: 0x0483e6f8 + offset: 512 +} member { id: 0x3a7aac3a name: "str" @@ -179270,6 +180559,12 @@ member { name: "str" type_id: 0xba4dcbcc } +member { + id: 0x3afbe345 + name: "str" + type_id: 0xca2a51af + offset: 352 +} member { id: 0x9fc8c673 name: "str_len" @@ -179872,6 +181167,11 @@ member { type_id: 0x1d19a9d5 offset: 6336 } +member { + id: 0x592ba09a + name: "subnet_prefix" + type_id: 0x92233392 +} member { id: 0x312fa86b name: "subns" @@ -181405,6 +182705,12 @@ member { type_id: 0xe62ebf07 offset: 160 } +member { + id: 0x04a57576 + name: "sym_val_to_name" + type_id: 0xe6d2b814 + offset: 1664 +} member { id: 0x47f7d600 name: "symbol_duration" @@ -181487,6 +182793,12 @@ member { name: "symtab" type_id: 0x33446e12 } +member { + id: 0x56e2856b + name: "symtab" + type_id: 0xc0330c41 + offset: 128 +} member { id: 0xf28e07a8 name: "syn" @@ -182946,6 +184258,11 @@ member { name: "table" type_id: 0x28d027d4 } +member { + id: 0xb6cd92ad + name: "table" + type_id: 0x26a23d9b +} member { id: 0xb6d4bf02 name: "table" @@ -183366,6 +184683,12 @@ member { type_id: 0x33756485 offset: 512 } +member { + id: 0xb3add302 + name: "target" + type_id: 0x0f0b2702 + offset: 128 +} member { id: 0xb3bfc0e0 name: "target" @@ -183436,6 +184759,12 @@ member { type_id: 0x74d29cf1 offset: 6528 } +member { + id: 0x5d352698 + name: "target_class" + type_id: 0x914dbfdc + offset: 32 +} member { id: 0xa726b996 name: "target_comm" @@ -183564,6 +184893,12 @@ member { type_id: 0x6720d32f offset: 2624 } +member { + id: 0x5ada8db3 + name: "target_type" + type_id: 0x914dbfdc + offset: 16 +} member { id: 0xdadb91d4 name: "target_uid" @@ -184051,6 +185386,12 @@ member { type_id: 0xe0b08da9 offset: 320 } +member { + id: 0x51579d7e + name: "tclass" + type_id: 0x914dbfdc + offset: 64 +} member { id: 0x51753743 name: "tclass" @@ -184505,6 +185846,18 @@ member { name: "te1" type_id: 0x217dc8c4 } +member { + id: 0xd7fbd304 + name: "te_avtab" + type_id: 0xcab227f8 + offset: 2432 +} +member { + id: 0x249ad332 + name: "te_cond_avtab" + type_id: 0xcab227f8 + offset: 3136 +} member { id: 0xc16e0c1e name: "teardown" @@ -188104,6 +189457,12 @@ member { name: "trkid" type_id: 0x6720d32f } +member { + id: 0x028c1c9f + name: "true_list" + type_id: 0xdc39b636 + offset: 192 +} member { id: 0xfafe7459 name: "truesize" @@ -188388,6 +189747,12 @@ member { type_id: 0x914dbfdc offset: 96 } +member { + id: 0xd60cdd86 + name: "tsid" + type_id: 0xc9082b19 + offset: 32 +} member { id: 0xaa343f4c name: "tsize" @@ -190918,6 +192283,12 @@ member { type_id: 0xc9082b19 offset: 128 } +member { + id: 0x5c9fd9b4 + name: "type" + type_id: 0xc9082b19 + offset: 64 +} member { id: 0x5c9fdcc7 name: "type" @@ -191207,6 +192578,12 @@ member { offset: 27 bitsize: 2 } +member { + id: 0x737fb73e + name: "type_attr_map_array" + type_id: 0x2b3a75d9 + offset: 4288 +} member { id: 0xf0496fa3 name: "type_aux" @@ -191344,6 +192721,12 @@ member { type_id: 0xf313e71a offset: 352 } +member { + id: 0xe2794a8c + name: "type_names" + type_id: 0x2a5ed1c1 + offset: 256 +} member { id: 0x1ea46e33 name: "type_nb" @@ -191403,6 +192786,12 @@ member { type_id: 0x3db8d8c8 offset: 60096 } +member { + id: 0xe75ebaee + name: "type_val_to_struct" + type_id: 0x0f4b7529 + offset: 2368 +} member { id: 0xef96bf4c name: "type_warn_dw" @@ -191439,6 +192828,17 @@ member { type_id: 0x914dbfdc offset: 16 } +member { + id: 0xf4145411 + name: "types" + type_id: 0x86a931f9 +} +member { + id: 0xf4145cd8 + name: "types" + type_id: 0x86a931f9 + offset: 192 +} member { id: 0xf49ecb47 name: "types" @@ -191527,6 +192927,11 @@ member { type_id: 0x6d504440 offset: 128 } +member { + id: 0xec1659ba + name: "u" + type_id: 0x6905d706 +} member { id: 0xec1fd483 name: "u" @@ -191551,6 +192956,11 @@ member { type_id: 0x5574fba9 offset: 128 } +member { + id: 0xec2ac37d + name: "u" + type_id: 0x559f10ea +} member { id: 0xec2ecdca name: "u" @@ -194726,6 +196136,11 @@ member { type_id: 0xc9082b19 offset: 64 } +member { + id: 0x04fb362d + name: "user" + type_id: 0xc9082b19 +} member { id: 0x04fb3686 name: "user" @@ -194916,6 +196331,12 @@ member { type_id: 0x2c2bf57a offset: 2496 } +member { + id: 0x5be84f8f + name: "user_val_to_struct" + type_id: 0x086a88e1 + offset: 2304 +} member { id: 0x3b4f65dc name: "user_waits" @@ -195414,6 +196835,12 @@ member { name: "v" type_id: 0x09f9643d } +member { + id: 0x28775171 + name: "v" + type_id: 0x48fb1ff5 + offset: 256 +} member { id: 0x28d9847a name: "v" @@ -195865,6 +197292,12 @@ member { type_id: 0x2c61a903 offset: 768 } +member { + id: 0xe6a3222b + name: "validatetrans" + type_id: 0x1bab96d2 + offset: 448 +} member { id: 0xe2a9ed02 name: "validation_type" @@ -195988,6 +197421,11 @@ member { type_id: 0xb3e7bac9 offset: 8 } +member { + id: 0xa0c154ef + name: "value" + type_id: 0xc9082b19 +} member { id: 0xa0c72311 name: "value" @@ -196015,6 +197453,11 @@ member { type_id: 0xe276adef offset: 64 } +member { + id: 0xa0ee727b + name: "value" + type_id: 0xe62ebf07 +} member { id: 0xdf220102 name: "value" @@ -202724,17 +204167,39 @@ member { type_id: 0x5d9a121f offset: 736 } +member { + id: 0x48bcaa45 + name: "xp" + type_id: 0x18ec8d59 +} member { id: 0xb802c69a name: "xp_net" type_id: 0xb335d16f } +member { + id: 0x6f74e856 + name: "xp_node" + type_id: 0x0819c1d1 + offset: 256 +} member { id: 0x7c0b3c9f name: "xpanstep" type_id: 0xe8034002 offset: 320 } +member { + id: 0x0989f76b + name: "xpd_head" + type_id: 0xd3c80119 + offset: 320 +} +member { + id: 0xa7075a62 + name: "xperms" + type_id: 0x1e641f1b +} member { id: 0x75da330f name: "xpn" @@ -204291,6 +205756,16 @@ struct_union { member_id: 0x569cedab } } +struct_union { + id: 0x0e09b329 + kind: STRUCT + definition { + bytesize: 16 + member_id: 0x592ba09a + member_id: 0xbc5b3492 + member_id: 0x2467cbde + } +} struct_union { id: 0x0e50ff6f kind: STRUCT @@ -204643,6 +206118,15 @@ struct_union { member_id: 0xaf6f4ac0 } } +struct_union { + id: 0x1162939f + kind: STRUCT + definition { + bytesize: 32 + member_id: 0x2493d07f + member_id: 0xa88d6ff6 + } +} struct_union { id: 0x11676430 kind: STRUCT @@ -204653,6 +206137,15 @@ struct_union { member_id: 0x20f663f9 } } +struct_union { + id: 0x117f4f93 + kind: STRUCT + definition { + bytesize: 8 + member_id: 0x24e4d74d + member_id: 0xa8fa6c3d + } +} struct_union { id: 0x1200e6db kind: STRUCT @@ -206532,6 +208025,16 @@ struct_union { member_id: 0x6ec6b7fe } } +struct_union { + id: 0x2f5f7542 + kind: STRUCT + definition { + bytesize: 6 + member_id: 0xdcf61242 + member_id: 0x3af6d631 + member_id: 0x22f0b41b + } +} struct_union { id: 0x2f802e03 kind: STRUCT @@ -207114,6 +208617,15 @@ struct_union { member_id: 0xb7357bee } } +struct_union { + id: 0x39ffc4a3 + kind: STRUCT + definition { + bytesize: 16 + member_id: 0x8606d3a0 + member_id: 0x48d2413e + } +} struct_union { id: 0x3a2e44f7 kind: STRUCT @@ -207827,6 +209339,15 @@ struct_union { member_id: 0x5f7a4496 } } +struct_union { + id: 0x48fb1ff5 + kind: UNION + definition { + bytesize: 4 + member_id: 0x788c9e45 + member_id: 0x8b969425 + } +} struct_union { id: 0x48ff9190 kind: UNION @@ -208536,6 +210057,19 @@ struct_union { member_id: 0x53d434cb } } +struct_union { + id: 0x559f10ea + kind: UNION + definition { + bytesize: 32 + member_id: 0x0ddfefbb + member_id: 0x48d446d8 + member_id: 0x0f6471e1 + member_id: 0x3599c2c8 + member_id: 0x6bb5d251 + member_id: 0xe352e743 + } +} struct_union { id: 0x55ba3ec3 kind: UNION @@ -209613,6 +211147,15 @@ struct_union { member_id: 0xffe56b33 } } +struct_union { + id: 0x6905d706 + kind: UNION + definition { + bytesize: 8 + member_id: 0xff5b2c47 + member_id: 0xa7075a62 + } +} struct_union { id: 0x69066ca6 kind: UNION @@ -212200,6 +213743,66 @@ struct_union { member_id: 0xc4fa59e8 } } +struct_union { + id: 0xb65e540b + kind: STRUCT + name: "av_decision" + definition { + bytesize: 20 + member_id: 0xcf92c78a + member_id: 0x242a71d3 + member_id: 0x3a9cc23a + member_id: 0x792b5ed3 + member_id: 0x2da185b7 + } +} +struct_union { + id: 0x22e22107 + kind: STRUCT + name: "avc_cache" + definition { + bytesize: 6160 + member_id: 0x4fe96ca2 + member_id: 0xdd8a193d + member_id: 0xff719763 + member_id: 0x7d99680b + member_id: 0x41995401 + } +} +struct_union { + id: 0x25802b70 + kind: STRUCT + name: "avc_entry" + definition { + bytesize: 40 + member_id: 0xb08e32fc + member_id: 0xd60cdd86 + member_id: 0x51579d7e + member_id: 0xce3c6bac + member_id: 0x6f74e856 + } +} +struct_union { + id: 0x53b77d6a + kind: STRUCT + name: "avc_node" + definition { + bytesize: 72 + member_id: 0x1ffcf224 + member_id: 0x7c9a87a5 + member_id: 0xbc563875 + } +} +struct_union { + id: 0x0a27e1da + kind: STRUCT + name: "avc_xperms_node" + definition { + bytesize: 56 + member_id: 0x48bcaa45 + member_id: 0x0989f76b + } +} struct_union { id: 0xeac6164c kind: STRUCT @@ -212210,6 +213813,61 @@ struct_union { member_id: 0xe9951d59 } } +struct_union { + id: 0xcab227f8 + kind: STRUCT + name: "avtab" + definition { + bytesize: 24 + member_id: 0xf2863c10 + member_id: 0x7cc2460f + member_id: 0x51460e20 + member_id: 0xa8fa68c4 + } +} +struct_union { + id: 0x4fda69a2 + kind: STRUCT + name: "avtab_datum" + definition { + bytesize: 8 + member_id: 0xec1659ba + } +} +struct_union { + id: 0x53d09af0 + kind: STRUCT + name: "avtab_extended_perms" + definition { + bytesize: 36 + member_id: 0x5f3a1a61 + member_id: 0xd467c584 + member_id: 0xdbb0c417 + } +} +struct_union { + id: 0x4d57407e + kind: STRUCT + name: "avtab_key" + definition { + bytesize: 8 + member_id: 0x7f0d6cd1 + member_id: 0x5ada8db3 + member_id: 0x5d352698 + member_id: 0x5f82076d + } +} +struct_union { + id: 0x0f4b21b6 + kind: STRUCT + name: "avtab_node" + definition { + bytesize: 24 + member_id: 0x201b5dee + member_id: 0x13afcd46 + member_id: 0x11fa4bec + } +} struct_union { id: 0x89935f7e kind: STRUCT @@ -217051,6 +218709,24 @@ struct_union { member_id: 0xacd4aa03 } } +struct_union { + id: 0x48a13124 + kind: STRUCT + name: "class_datum" + definition { + bytesize: 72 + member_id: 0xa0c154ef + member_id: 0x7372cfc3 + member_id: 0xe994f7e2 + member_id: 0xf05f0781 + member_id: 0xfd724d73 + member_id: 0xe6a3222b + member_id: 0x932e00b0 + member_id: 0x7c01b61e + member_id: 0x98b80a03 + member_id: 0x7ad0edec + } +} struct_union { id: 0xfa6f578b kind: STRUCT @@ -217353,6 +219029,16 @@ struct_union { member_id: 0x348aae90 } } +struct_union { + id: 0x52b2a4f5 + kind: STRUCT + name: "common_datum" + definition { + bytesize: 32 + member_id: 0xa0c154ef + member_id: 0xf05f0ba9 + } +} struct_union { id: 0x32c940eb kind: STRUCT @@ -217528,6 +219214,58 @@ struct_union { member_id: 0xd168c688 } } +struct_union { + id: 0xdc39b636 + kind: STRUCT + name: "cond_av_list" + definition { + bytesize: 16 + member_id: 0x627963b5 + member_id: 0xb8ccd99c + } +} +struct_union { + id: 0xbdd82378 + kind: STRUCT + name: "cond_bool_datum" + definition { + bytesize: 8 + member_id: 0xa0ee727b + member_id: 0x7294d1e9 + } +} +struct_union { + id: 0xdf3bd046 + kind: STRUCT + name: "cond_expr" + definition { + bytesize: 16 + member_id: 0x62527a67 + member_id: 0xb8ccd99c + } +} +struct_union { + id: 0xa525b840 + kind: STRUCT + name: "cond_expr_node" + definition { + bytesize: 8 + member_id: 0xa0783f48 + member_id: 0xbfc5857a + } +} +struct_union { + id: 0x09e98633 + kind: STRUCT + name: "cond_node" + definition { + bytesize: 56 + member_id: 0x0cc4772a + member_id: 0x713c7886 + member_id: 0x028c1c9f + member_id: 0x22c3bf72 + } +} struct_union { id: 0xe145bd36 kind: STRUCT @@ -217655,6 +219393,45 @@ struct_union { member_id: 0x11f25516 } } +struct_union { + id: 0x21a6617d + kind: STRUCT + name: "constraint_expr" + definition { + bytesize: 48 + member_id: 0xa0783f48 + member_id: 0x8ccdaf26 + member_id: 0xf03ba7f6 + member_id: 0x5542647f + member_id: 0xe2794a8c + member_id: 0x11f1feb9 + } +} +struct_union { + id: 0x44eebdd5 + kind: STRUCT + name: "constraint_node" + definition { + bytesize: 24 + member_id: 0xf0063172 + member_id: 0x71e1baf7 + member_id: 0x11e8a28b + } +} +struct_union { + id: 0xa1416fb0 + kind: STRUCT + name: "context" + definition { + bytesize: 72 + member_id: 0x04fb362d + member_id: 0xc0218791 + member_id: 0x5c9fd9b4 + member_id: 0xb8ccd4fe + member_id: 0x0e5c14b2 + member_id: 0x3a3545b3 + } +} struct_union { id: 0xef60ad88 kind: STRUCT @@ -222543,6 +224320,27 @@ struct_union { member_id: 0x9047fe65 } } +struct_union { + id: 0x86a931f9 + kind: STRUCT + name: "ebitmap" + definition { + bytesize: 16 + member_id: 0x0f56d7ac + member_id: 0x24b8b0fd + } +} +struct_union { + id: 0xa524ed45 + kind: STRUCT + name: "ebitmap_node" + definition { + bytesize: 64 + member_id: 0x11d0d9dd + member_id: 0xb0b6f056 + member_id: 0xba5cc544 + } +} struct_union { id: 0xed9e4341 kind: STRUCT @@ -223652,6 +225450,25 @@ struct_union { member_id: 0xff67f40b } } +struct_union { + id: 0x18ec8d59 + kind: STRUCT + name: "extended_perms" + definition { + bytesize: 36 + member_id: 0xb89498e9 + member_id: 0x922207d0 + } +} +struct_union { + id: 0xc4d82b11 + kind: STRUCT + name: "extended_perms_data" + definition { + bytesize: 32 + member_id: 0xa6673206 + } +} struct_union { id: 0xbdd1c219 kind: STRUCT @@ -225821,6 +227638,17 @@ struct_union { member_id: 0x3bd41bef } } +struct_union { + id: 0x91717a9b + kind: STRUCT + name: "genfs" + definition { + bytesize: 24 + member_id: 0x51d40905 + member_id: 0xb57b63c2 + member_id: 0x11ddc57a + } +} struct_union { id: 0x79013954 kind: STRUCT @@ -226485,6 +228313,28 @@ struct_union { member_id: 0x85f3de85 } } +struct_union { + id: 0x26a23d9b + kind: STRUCT + name: "hashtab" + definition { + bytesize: 16 + member_id: 0xf28957eb + member_id: 0xd9b710b8 + member_id: 0x7cc24b6d + } +} +struct_union { + id: 0xf9f49fb7 + kind: STRUCT + name: "hashtab_node" + definition { + bytesize: 24 + member_id: 0x204eb7cb + member_id: 0x13f8aa4a + member_id: 0x11c7e403 + } +} struct_union { id: 0x6101d583 kind: STRUCT @@ -236793,6 +238643,25 @@ struct_union { member_id: 0x878f4f9a } } +struct_union { + id: 0xf681317f + kind: STRUCT + name: "mls_level" + definition { + bytesize: 24 + member_id: 0xdd7d0bae + member_id: 0x1133d766 + } +} +struct_union { + id: 0xe0987ef0 + kind: STRUCT + name: "mls_range" + definition { + bytesize: 48 + member_id: 0x86ebc61e + } +} struct_union { id: 0x51c04992 kind: STRUCT @@ -240351,6 +242220,19 @@ struct_union { member_id: 0x6fcf0a57 } } +struct_union { + id: 0xad386ff8 + kind: STRUCT + name: "ocontext" + definition { + bytesize: 200 + member_id: 0xec2ac37d + member_id: 0x28775171 + member_id: 0x41f3c646 + member_id: 0x086ca956 + member_id: 0x11d2d41a + } +} struct_union { id: 0x76b1559f kind: STRUCT @@ -242904,6 +244786,45 @@ struct_union { member_id: 0x98b9a279 } } +struct_union { + id: 0x9146342b + kind: STRUCT + name: "policydb" + definition { + bytesize: 600 + member_id: 0x3219aca6 + member_id: 0x395073a8 + member_id: 0x6fcc260e + member_id: 0x56e2856b + member_id: 0x04a57576 + member_id: 0x3ebbdd01 + member_id: 0x9361a429 + member_id: 0x5be84f8f + member_id: 0xe75ebaee + member_id: 0xd7fbd304 + member_id: 0x3981996e + member_id: 0x0048fc1f + member_id: 0xe3a3c2c5 + member_id: 0xd79237c9 + member_id: 0x9fd51a6e + member_id: 0x249ad332 + member_id: 0x75447ac6 + member_id: 0x56da2358 + member_id: 0xf14b14bf + member_id: 0x67879250 + member_id: 0x4a8a7a23 + member_id: 0x2f5e77ea + member_id: 0x737fb73e + member_id: 0x37828654 + member_id: 0x616c799d + member_id: 0xb8f1ea33 + member_id: 0x23820e22 + member_id: 0xe91e5dbc + member_id: 0x2aaa0939 + member_id: 0x055eb011 + member_id: 0x9e219cb6 + } +} struct_union { id: 0x9122057b kind: STRUCT @@ -246049,6 +247970,29 @@ struct_union { member_id: 0x73780674 } } +struct_union { + id: 0x70755111 + kind: STRUCT + name: "role_allow" + definition { + bytesize: 16 + member_id: 0xc0218aaa + member_id: 0xa3831cac + member_id: 0x11e58953 + } +} +struct_union { + id: 0xaeb84542 + kind: STRUCT + name: "role_datum" + definition { + bytesize: 40 + member_id: 0xa0c154ef + member_id: 0x41a916e7 + member_id: 0xd2c2119f + member_id: 0xf4145cd8 + } +} struct_union { id: 0xcecb0ebd kind: STRUCT @@ -248127,6 +250071,68 @@ struct_union { member_id: 0xa2420c98 } } +struct_union { + id: 0xc8601982 + kind: STRUCT + name: "selinux_avc" + definition { + bytesize: 6168 + member_id: 0xac537364 + member_id: 0x4133d93e + } +} +struct_union { + id: 0x4bc42bec + kind: STRUCT + name: "selinux_map" + definition { + bytesize: 16 + member_id: 0x5dcf7d96 + member_id: 0xd9ef552c + } +} +struct_union { + id: 0xbde6ed0a + kind: STRUCT + name: "selinux_mapping" + definition { + bytesize: 136 + member_id: 0xa099117b + member_id: 0xbe3e9d70 + member_id: 0xdb129b64 + } +} +struct_union { + id: 0xf8edba3f + kind: STRUCT + name: "selinux_policy" + definition { + bytesize: 632 + member_id: 0x71a9d2d2 + member_id: 0xbb7445e4 + member_id: 0x8dbdb056 + member_id: 0xac824246 + } +} +struct_union { + id: 0x383e783f + kind: STRUCT + name: "selinux_state" + definition { + bytesize: 104 + member_id: 0x0eb6d2c5 + member_id: 0x666c167f + member_id: 0xd56295db + member_id: 0x0d6726b0 + member_id: 0x395a2e99 + member_id: 0x6fc674e0 + member_id: 0xd41c6df7 + member_id: 0x8e288971 + member_id: 0x0a7701ba + member_id: 0x60ddb117 + member_id: 0x478ff8c9 + } +} struct_union { id: 0x6e3b7d7f kind: STRUCT @@ -248633,6 +250639,99 @@ struct_union { member_id: 0x8df0341e } } +struct_union { + id: 0x166c7a96 + kind: STRUCT + name: "sidtab" + definition { + bytesize: 7208 + member_id: 0xb97636cd + member_id: 0x65ec5744 + member_id: 0xb5c7762e + member_id: 0xb8c67f5c + member_id: 0x2d1feee5 + member_id: 0x10ef1bf4 + member_id: 0xfb7d6571 + member_id: 0x6847c1f3 + member_id: 0xfa661c0d + member_id: 0x3ac44cab + } +} +struct_union { + id: 0x536fcdfa + kind: STRUCT + name: "sidtab_convert_params" + definition { + bytesize: 24 + member_id: 0x21202e0b + member_id: 0x3423032e + member_id: 0xb3add302 + } +} +struct_union { + id: 0xd79dd5b3 + kind: STRUCT + name: "sidtab_entry" + definition { + bytesize: 104 + member_id: 0x08fb4d67 + member_id: 0x63f7869f + member_id: 0x41167d14 + member_id: 0x3b4729d9 + member_id: 0x7c9a825f + } +} +struct_union { + id: 0x4027b0c0 + kind: UNION + name: "sidtab_entry_inner" + definition { + bytesize: 8 + member_id: 0x1db8f0e1 + member_id: 0xc0d22edd + } +} +struct_union { + id: 0x585c2d3c + kind: STRUCT + name: "sidtab_isid_entry" + definition { + bytesize: 112 + member_id: 0x3db96022 + member_id: 0x4d83d109 + } +} +struct_union { + id: 0x0aaf9a0a + kind: STRUCT + name: "sidtab_node_inner" + definition { + bytesize: 4096 + member_id: 0xbedcc7b7 + } +} +struct_union { + id: 0x2ca85530 + kind: STRUCT + name: "sidtab_node_leaf" + definition { + bytesize: 4056 + member_id: 0xbe09c685 + } +} +struct_union { + id: 0xcd921577 + kind: STRUCT + name: "sidtab_str_cache" + definition { + bytesize: 48 + member_id: 0xe2ce8a90 + member_id: 0x7974d3dd + member_id: 0x720e051d + member_id: 0xb8ccdaba + member_id: 0x3afbe345 + } +} struct_union { id: 0xff9dc6cd kind: STRUCT @@ -252555,6 +254654,16 @@ struct_union { member_id: 0xb862f266 } } +struct_union { + id: 0x9036114e + kind: STRUCT + name: "symtab" + definition { + bytesize: 24 + member_id: 0xb6cd92ad + member_id: 0xb4f51360 + } +} struct_union { id: 0xf5cf19c0 kind: STRUCT @@ -254970,6 +257079,29 @@ struct_union { kind: STRUCT name: "tuner_setup" } +struct_union { + id: 0x77f42e7c + kind: STRUCT + name: "type_datum" + definition { + bytesize: 12 + member_id: 0xa0c154ef + member_id: 0x41a916e7 + member_id: 0xacb061a5 + member_id: 0xa926c7e0 + } +} +struct_union { + id: 0x833ba199 + kind: STRUCT + name: "type_set" + definition { + bytesize: 40 + member_id: 0xf4145411 + member_id: 0xcf8ca44d + member_id: 0x2da18cde + } +} struct_union { id: 0xf1a685d1 kind: STRUCT @@ -258031,6 +260163,19 @@ struct_union { member_id: 0x2d5bf612 } } +struct_union { + id: 0x05ebf2f3 + kind: STRUCT + name: "user_datum" + definition { + bytesize: 96 + member_id: 0xa0c154ef + member_id: 0x41a916e7 + member_id: 0x39f20f43 + member_id: 0x0e5c15b9 + member_id: 0x5898f7bd + } +} struct_union { id: 0xd19129ce kind: STRUCT @@ -304056,6 +306201,14 @@ function { parameter_id: 0x6720d32f parameter_id: 0x6720d32f } +function { + id: 0x95be13f6 + return_type_id: 0x6720d32f + parameter_id: 0x22c0624b + parameter_id: 0x22c0624b + parameter_id: 0x18bd6530 + parameter_id: 0xf1a6dfed +} function { id: 0x95bed865 return_type_id: 0x6720d32f @@ -308699,6 +310852,14 @@ function { parameter_id: 0x6720d32f parameter_id: 0x31c0ce8c } +function { + id: 0x9a3f7770 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x6720d32f + parameter_id: 0x35612b46 + parameter_id: 0x4585663f +} function { id: 0x9a3faf0d return_type_id: 0x6720d32f @@ -309907,6 +312068,20 @@ function { parameter_id: 0x18ea6ae3 parameter_id: 0x3ee42466 } +function { + id: 0x9b427bba + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x387626d3 + parameter_id: 0x30650ba6 +} +function { + id: 0x9b432d7a + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x38af3519 + parameter_id: 0x38af3519 +} function { id: 0x9b43bd7f return_type_id: 0x6720d32f @@ -309969,6 +312144,15 @@ function { parameter_id: 0x3c01aef6 parameter_id: 0x38d23361 } +function { + id: 0x9b478d6a + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x390ad61e + parameter_id: 0x33756485 + parameter_id: 0x33756485 + parameter_id: 0x33756485 +} function { id: 0x9b478eda return_type_id: 0x6720d32f @@ -310024,6 +312208,12 @@ function { parameter_id: 0x1a8d1bcb parameter_id: 0x1a080f6e } +function { + id: 0x9b4b913b + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x390ad61e +} function { id: 0x9b4bcb26 return_type_id: 0x6720d32f @@ -310035,6 +312225,12 @@ function { parameter_id: 0x1830dd64 parameter_id: 0x31c0ce8c } +function { + id: 0x9b4d06b7 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x38af3519 +} function { id: 0x9b4d6cf8 return_type_id: 0x6720d32f @@ -310189,12 +312385,24 @@ function { parameter_id: 0x13580d6c parameter_id: 0x13580d6c } +function { + id: 0x9b57e4f6 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x3e17a54c +} function { id: 0x9b57f8b7 return_type_id: 0x6720d32f parameter_id: 0x18bd6530 parameter_id: 0x3e10b518 } +function { + id: 0x9b585c8d + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x3df9bbb6 +} function { id: 0x9b5888dd return_type_id: 0x6720d32f @@ -310612,6 +312820,15 @@ function { parameter_id: 0x16239d0c parameter_id: 0x1ca06989 } +function { + id: 0x9b7c44ce + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x38af3519 + parameter_id: 0xc9082b19 + parameter_id: 0xc9082b19 + parameter_id: 0x914dbfdc +} function { id: 0x9b7c6e74 return_type_id: 0x6720d32f @@ -323836,6 +326053,15 @@ elf_symbol { type_id: 0x9bdfaf3f full_name: "__traceiter_android_rvh_check_preempt_wakeup_ignore" } +elf_symbol { + id: 0xfd6e4093 + name: "__traceiter_android_rvh_commit_creds" + is_defined: true + symbol_type: FUNCTION + crc: 0x8354f6b9 + type_id: 0x9b427bba + full_name: "__traceiter_android_rvh_commit_creds" +} elf_symbol { id: 0xf11256cf name: "__traceiter_android_rvh_cpu_cgroup_attach" @@ -323989,6 +326215,15 @@ elf_symbol { type_id: 0x9b96d02c full_name: "__traceiter_android_rvh_entity_tick" } +elf_symbol { + id: 0x6740fa4e + name: "__traceiter_android_rvh_exit_creds" + is_defined: true + symbol_type: FUNCTION + crc: 0xa88ba6d8 + type_id: 0x9b427bba + full_name: "__traceiter_android_rvh_exit_creds" +} elf_symbol { id: 0xf94ce10d name: "__traceiter_android_rvh_find_busiest_group" @@ -324115,6 +326350,15 @@ elf_symbol { type_id: 0x9bdbdcc4 full_name: "__traceiter_android_rvh_new_task_stats" } +elf_symbol { + id: 0xb51338de + name: "__traceiter_android_rvh_override_creds" + is_defined: true + symbol_type: FUNCTION + crc: 0xbe78f805 + type_id: 0x9b427bba + full_name: "__traceiter_android_rvh_override_creds" +} elf_symbol { id: 0xc463ba81 name: "__traceiter_android_rvh_panic_unhandled" @@ -324169,6 +326413,15 @@ elf_symbol { type_id: 0x9b46543b full_name: "__traceiter_android_rvh_report_bug" } +elf_symbol { + id: 0xde725472 + name: "__traceiter_android_rvh_revert_creds" + is_defined: true + symbol_type: FUNCTION + crc: 0x2aea9962 + type_id: 0x9b427bba + full_name: "__traceiter_android_rvh_revert_creds" +} elf_symbol { id: 0xd90a9a58 name: "__traceiter_android_rvh_rtmutex_prepare_setprio" @@ -324331,6 +326584,51 @@ elf_symbol { type_id: 0x9bc391f6 full_name: "__traceiter_android_rvh_select_task_rq_rt" } +elf_symbol { + id: 0x5d194c5c + name: "__traceiter_android_rvh_selinux_avc_insert" + is_defined: true + symbol_type: FUNCTION + crc: 0x7b36fc65 + type_id: 0x9b4d06b7 + full_name: "__traceiter_android_rvh_selinux_avc_insert" +} +elf_symbol { + id: 0x7765e85b + name: "__traceiter_android_rvh_selinux_avc_lookup" + is_defined: true + symbol_type: FUNCTION + crc: 0x11d93a3b + type_id: 0x9b7c44ce + full_name: "__traceiter_android_rvh_selinux_avc_lookup" +} +elf_symbol { + id: 0xb7214df9 + name: "__traceiter_android_rvh_selinux_avc_node_delete" + is_defined: true + symbol_type: FUNCTION + crc: 0x0e5e515c + type_id: 0x9b4d06b7 + full_name: "__traceiter_android_rvh_selinux_avc_node_delete" +} +elf_symbol { + id: 0x2720fa46 + name: "__traceiter_android_rvh_selinux_avc_node_replace" + is_defined: true + symbol_type: FUNCTION + crc: 0xfaf0424d + type_id: 0x9b432d7a + full_name: "__traceiter_android_rvh_selinux_avc_node_replace" +} +elf_symbol { + id: 0x9f6c2b96 + name: "__traceiter_android_rvh_selinux_is_initialized" + is_defined: true + symbol_type: FUNCTION + crc: 0x94da738b + type_id: 0x9b57e4f6 + full_name: "__traceiter_android_rvh_selinux_is_initialized" +} elf_symbol { id: 0x28eb5989 name: "__traceiter_android_rvh_set_balance_anon_file_reclaim" @@ -324349,6 +326647,42 @@ elf_symbol { type_id: 0x9b67b049 full_name: "__traceiter_android_rvh_set_cpus_allowed_by_task" } +elf_symbol { + id: 0xcac6b03d + name: "__traceiter_android_rvh_set_module_core_rw_nx" + is_defined: true + symbol_type: FUNCTION + crc: 0x4a555c81 + type_id: 0x9b585c8d + full_name: "__traceiter_android_rvh_set_module_core_rw_nx" +} +elf_symbol { + id: 0x4a5f5242 + name: "__traceiter_android_rvh_set_module_init_rw_nx" + is_defined: true + symbol_type: FUNCTION + crc: 0x03aa972b + type_id: 0x9b585c8d + full_name: "__traceiter_android_rvh_set_module_init_rw_nx" +} +elf_symbol { + id: 0x08cd7e9d + name: "__traceiter_android_rvh_set_module_permit_after_init" + is_defined: true + symbol_type: FUNCTION + crc: 0x8524fb30 + type_id: 0x9b585c8d + full_name: "__traceiter_android_rvh_set_module_permit_after_init" +} +elf_symbol { + id: 0x9e97904b + name: "__traceiter_android_rvh_set_module_permit_before_init" + is_defined: true + symbol_type: FUNCTION + crc: 0x90064ff2 + type_id: 0x9b585c8d + full_name: "__traceiter_android_rvh_set_module_permit_before_init" +} elf_symbol { id: 0xc6a28b4a name: "__traceiter_android_rvh_set_task_cpu" @@ -324547,6 +326881,33 @@ elf_symbol { type_id: 0x9a1a471c full_name: "__traceiter_android_vh_build_sched_domains" } +elf_symbol { + id: 0x5012fcd8 + name: "__traceiter_android_vh_check_bpf_syscall" + is_defined: true + symbol_type: FUNCTION + crc: 0x3ac93501 + type_id: 0x9a3f7770 + full_name: "__traceiter_android_vh_check_bpf_syscall" +} +elf_symbol { + id: 0x67bab494 + name: "__traceiter_android_vh_check_file_open" + is_defined: true + symbol_type: FUNCTION + crc: 0x641bf8af + type_id: 0x9b4b913b + full_name: "__traceiter_android_vh_check_file_open" +} +elf_symbol { + id: 0x42428033 + name: "__traceiter_android_vh_check_mmap_file" + is_defined: true + symbol_type: FUNCTION + crc: 0x12bd80d1 + type_id: 0x9b478d6a + full_name: "__traceiter_android_vh_check_mmap_file" +} elf_symbol { id: 0x005c7625 name: "__traceiter_android_vh_check_uninterrupt_tasks" @@ -325330,6 +327691,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_check_preempt_wakeup_ignore" } +elf_symbol { + id: 0xf63515c9 + name: "__tracepoint_android_rvh_commit_creds" + is_defined: true + symbol_type: OBJECT + crc: 0x3026d92c + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_commit_creds" +} elf_symbol { id: 0xf4fe0429 name: "__tracepoint_android_rvh_cpu_cgroup_attach" @@ -325483,6 +327853,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_entity_tick" } +elf_symbol { + id: 0xb71e231c + name: "__tracepoint_android_rvh_exit_creds" + is_defined: true + symbol_type: OBJECT + crc: 0xe5dee2f1 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_exit_creds" +} elf_symbol { id: 0xb05fc507 name: "__tracepoint_android_rvh_find_busiest_group" @@ -325609,6 +327988,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_new_task_stats" } +elf_symbol { + id: 0xdf21a7cc + name: "__tracepoint_android_rvh_override_creds" + is_defined: true + symbol_type: OBJECT + crc: 0xb1fb08b1 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_override_creds" +} elf_symbol { id: 0xeea6bf23 name: "__tracepoint_android_rvh_panic_unhandled" @@ -325663,6 +328051,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_report_bug" } +elf_symbol { + id: 0x3f328d3c + name: "__tracepoint_android_rvh_revert_creds" + is_defined: true + symbol_type: OBJECT + crc: 0x031591c5 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_revert_creds" +} elf_symbol { id: 0x69e37d02 name: "__tracepoint_android_rvh_rtmutex_prepare_setprio" @@ -325825,6 +328222,51 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_select_task_rq_rt" } +elf_symbol { + id: 0x33183ab6 + name: "__tracepoint_android_rvh_selinux_avc_insert" + is_defined: true + symbol_type: OBJECT + crc: 0x2891acea + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_selinux_avc_insert" +} +elf_symbol { + id: 0x76b00d41 + name: "__tracepoint_android_rvh_selinux_avc_lookup" + is_defined: true + symbol_type: OBJECT + crc: 0x95198ed9 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_selinux_avc_lookup" +} +elf_symbol { + id: 0x9d9301cb + name: "__tracepoint_android_rvh_selinux_avc_node_delete" + is_defined: true + symbol_type: OBJECT + crc: 0x080dcc20 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_selinux_avc_node_delete" +} +elf_symbol { + id: 0xef003404 + name: "__tracepoint_android_rvh_selinux_avc_node_replace" + is_defined: true + symbol_type: OBJECT + crc: 0xff9e1a23 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_selinux_avc_node_replace" +} +elf_symbol { + id: 0x78daed28 + name: "__tracepoint_android_rvh_selinux_is_initialized" + is_defined: true + symbol_type: OBJECT + crc: 0x5cee2186 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_selinux_is_initialized" +} elf_symbol { id: 0x6d8ed263 name: "__tracepoint_android_rvh_set_balance_anon_file_reclaim" @@ -325843,6 +328285,42 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_set_cpus_allowed_by_task" } +elf_symbol { + id: 0xda52fd4f + name: "__tracepoint_android_rvh_set_module_core_rw_nx" + is_defined: true + symbol_type: OBJECT + crc: 0xfcc936fc + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_set_module_core_rw_nx" +} +elf_symbol { + id: 0x86f03c84 + name: "__tracepoint_android_rvh_set_module_init_rw_nx" + is_defined: true + symbol_type: OBJECT + crc: 0x6f20e85f + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_set_module_init_rw_nx" +} +elf_symbol { + id: 0x498fea3f + name: "__tracepoint_android_rvh_set_module_permit_after_init" + is_defined: true + symbol_type: OBJECT + crc: 0x00253a61 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_set_module_permit_after_init" +} +elf_symbol { + id: 0xf79a8829 + name: "__tracepoint_android_rvh_set_module_permit_before_init" + is_defined: true + symbol_type: OBJECT + crc: 0xb03e867d + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_set_module_permit_before_init" +} elf_symbol { id: 0xc5049f7c name: "__tracepoint_android_rvh_set_task_cpu" @@ -326041,6 +328519,33 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_build_sched_domains" } +elf_symbol { + id: 0x678bb5ba + name: "__tracepoint_android_vh_check_bpf_syscall" + is_defined: true + symbol_type: OBJECT + crc: 0xcbe6df73 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_check_bpf_syscall" +} +elf_symbol { + id: 0xf1ec5ef2 + name: "__tracepoint_android_vh_check_file_open" + is_defined: true + symbol_type: OBJECT + crc: 0x572318b3 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_check_file_open" +} +elf_symbol { + id: 0x9620eac1 + name: "__tracepoint_android_vh_check_mmap_file" + is_defined: true + symbol_type: OBJECT + crc: 0xc12a5dbb + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_check_mmap_file" +} elf_symbol { id: 0x5cc4ca5b name: "__tracepoint_android_vh_check_uninterrupt_tasks" @@ -370766,6 +373271,10 @@ symbols { key: "__traceiter_android_rvh_check_preempt_wakeup_ignore" value: 0x5e9397c4 } + symbol { + key: "__traceiter_android_rvh_commit_creds" + value: 0xfd6e4093 + } symbol { key: "__traceiter_android_rvh_cpu_cgroup_attach" value: 0xf11256cf @@ -370834,6 +373343,10 @@ symbols { key: "__traceiter_android_rvh_entity_tick" value: 0xebecb2ce } + symbol { + key: "__traceiter_android_rvh_exit_creds" + value: 0x6740fa4e + } symbol { key: "__traceiter_android_rvh_find_busiest_group" value: 0xf94ce10d @@ -370890,6 +373403,10 @@ symbols { key: "__traceiter_android_rvh_new_task_stats" value: 0x0d22882d } + symbol { + key: "__traceiter_android_rvh_override_creds" + value: 0xb51338de + } symbol { key: "__traceiter_android_rvh_panic_unhandled" value: 0xc463ba81 @@ -370914,6 +373431,10 @@ symbols { key: "__traceiter_android_rvh_report_bug" value: 0xaedef3a2 } + symbol { + key: "__traceiter_android_rvh_revert_creds" + value: 0xde725472 + } symbol { key: "__traceiter_android_rvh_rtmutex_prepare_setprio" value: 0xd90a9a58 @@ -370986,6 +373507,26 @@ symbols { key: "__traceiter_android_rvh_select_task_rq_rt" value: 0x4c24a4be } + symbol { + key: "__traceiter_android_rvh_selinux_avc_insert" + value: 0x5d194c5c + } + symbol { + key: "__traceiter_android_rvh_selinux_avc_lookup" + value: 0x7765e85b + } + symbol { + key: "__traceiter_android_rvh_selinux_avc_node_delete" + value: 0xb7214df9 + } + symbol { + key: "__traceiter_android_rvh_selinux_avc_node_replace" + value: 0x2720fa46 + } + symbol { + key: "__traceiter_android_rvh_selinux_is_initialized" + value: 0x9f6c2b96 + } symbol { key: "__traceiter_android_rvh_set_balance_anon_file_reclaim" value: 0x28eb5989 @@ -370994,6 +373535,22 @@ symbols { key: "__traceiter_android_rvh_set_cpus_allowed_by_task" value: 0xbe8d73f2 } + symbol { + key: "__traceiter_android_rvh_set_module_core_rw_nx" + value: 0xcac6b03d + } + symbol { + key: "__traceiter_android_rvh_set_module_init_rw_nx" + value: 0x4a5f5242 + } + symbol { + key: "__traceiter_android_rvh_set_module_permit_after_init" + value: 0x08cd7e9d + } + symbol { + key: "__traceiter_android_rvh_set_module_permit_before_init" + value: 0x9e97904b + } symbol { key: "__traceiter_android_rvh_set_task_cpu" value: 0xc6a28b4a @@ -371082,6 +373639,18 @@ symbols { key: "__traceiter_android_vh_build_sched_domains" value: 0xe479b209 } + symbol { + key: "__traceiter_android_vh_check_bpf_syscall" + value: 0x5012fcd8 + } + symbol { + key: "__traceiter_android_vh_check_file_open" + value: 0x67bab494 + } + symbol { + key: "__traceiter_android_vh_check_mmap_file" + value: 0x42428033 + } symbol { key: "__traceiter_android_vh_check_uninterrupt_tasks" value: 0x005c7625 @@ -371430,6 +373999,10 @@ symbols { key: "__tracepoint_android_rvh_check_preempt_wakeup_ignore" value: 0x070d1e2a } + symbol { + key: "__tracepoint_android_rvh_commit_creds" + value: 0xf63515c9 + } symbol { key: "__tracepoint_android_rvh_cpu_cgroup_attach" value: 0xf4fe0429 @@ -371498,6 +374071,10 @@ symbols { key: "__tracepoint_android_rvh_entity_tick" value: 0x4a5c5988 } + symbol { + key: "__tracepoint_android_rvh_exit_creds" + value: 0xb71e231c + } symbol { key: "__tracepoint_android_rvh_find_busiest_group" value: 0xb05fc507 @@ -371554,6 +374131,10 @@ symbols { key: "__tracepoint_android_rvh_new_task_stats" value: 0x62726c6f } + symbol { + key: "__tracepoint_android_rvh_override_creds" + value: 0xdf21a7cc + } symbol { key: "__tracepoint_android_rvh_panic_unhandled" value: 0xeea6bf23 @@ -371578,6 +374159,10 @@ symbols { key: "__tracepoint_android_rvh_report_bug" value: 0x1a849f34 } + symbol { + key: "__tracepoint_android_rvh_revert_creds" + value: 0x3f328d3c + } symbol { key: "__tracepoint_android_rvh_rtmutex_prepare_setprio" value: 0x69e37d02 @@ -371650,6 +374235,26 @@ symbols { key: "__tracepoint_android_rvh_select_task_rq_rt" value: 0xec4d6758 } + symbol { + key: "__tracepoint_android_rvh_selinux_avc_insert" + value: 0x33183ab6 + } + symbol { + key: "__tracepoint_android_rvh_selinux_avc_lookup" + value: 0x76b00d41 + } + symbol { + key: "__tracepoint_android_rvh_selinux_avc_node_delete" + value: 0x9d9301cb + } + symbol { + key: "__tracepoint_android_rvh_selinux_avc_node_replace" + value: 0xef003404 + } + symbol { + key: "__tracepoint_android_rvh_selinux_is_initialized" + value: 0x78daed28 + } symbol { key: "__tracepoint_android_rvh_set_balance_anon_file_reclaim" value: 0x6d8ed263 @@ -371658,6 +374263,22 @@ symbols { key: "__tracepoint_android_rvh_set_cpus_allowed_by_task" value: 0x4bc6b114 } + symbol { + key: "__tracepoint_android_rvh_set_module_core_rw_nx" + value: 0xda52fd4f + } + symbol { + key: "__tracepoint_android_rvh_set_module_init_rw_nx" + value: 0x86f03c84 + } + symbol { + key: "__tracepoint_android_rvh_set_module_permit_after_init" + value: 0x498fea3f + } + symbol { + key: "__tracepoint_android_rvh_set_module_permit_before_init" + value: 0xf79a8829 + } symbol { key: "__tracepoint_android_rvh_set_task_cpu" value: 0xc5049f7c @@ -371746,6 +374367,18 @@ symbols { key: "__tracepoint_android_vh_build_sched_domains" value: 0x0d3c7607 } + symbol { + key: "__tracepoint_android_vh_check_bpf_syscall" + value: 0x678bb5ba + } + symbol { + key: "__tracepoint_android_vh_check_file_open" + value: 0xf1ec5ef2 + } + symbol { + key: "__tracepoint_android_vh_check_mmap_file" + value: 0x9620eac1 + } symbol { key: "__tracepoint_android_vh_check_uninterrupt_tasks" value: 0x5cc4ca5b diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index 00c56716604f..6d4656fdc6c9 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -2043,12 +2043,44 @@ trace_event_raw_init trace_event_reg trace_handle_return + __traceiter_android_rvh_commit_creds + __traceiter_android_rvh_exit_creds + __traceiter_android_rvh_override_creds + __traceiter_android_rvh_revert_creds + __traceiter_android_rvh_selinux_avc_insert + __traceiter_android_rvh_selinux_avc_node_delete + __traceiter_android_rvh_selinux_avc_node_replace + __traceiter_android_rvh_selinux_avc_lookup + __traceiter_android_rvh_selinux_is_initialized + __traceiter_android_rvh_set_module_permit_before_init + __traceiter_android_rvh_set_module_permit_after_init + __traceiter_android_rvh_set_module_core_rw_nx + __traceiter_android_rvh_set_module_init_rw_nx + __traceiter_android_vh_check_mmap_file + __traceiter_android_vh_check_file_open + __traceiter_android_vh_check_bpf_syscall __traceiter_android_vh_ufs_clock_scaling __traceiter_gpu_mem_total __traceiter_mmap_lock_acquire_returned __traceiter_mmap_lock_released __traceiter_mmap_lock_start_locking trace_output_call + __tracepoint_android_rvh_commit_creds + __tracepoint_android_rvh_exit_creds + __tracepoint_android_rvh_override_creds + __tracepoint_android_rvh_revert_creds + __tracepoint_android_rvh_selinux_avc_insert + __tracepoint_android_rvh_selinux_avc_node_delete + __tracepoint_android_rvh_selinux_avc_node_replace + __tracepoint_android_rvh_selinux_avc_lookup + __tracepoint_android_rvh_selinux_is_initialized + __tracepoint_android_rvh_set_module_permit_before_init + __tracepoint_android_rvh_set_module_permit_after_init + __tracepoint_android_rvh_set_module_core_rw_nx + __tracepoint_android_rvh_set_module_init_rw_nx + __tracepoint_android_vh_check_mmap_file + __tracepoint_android_vh_check_file_open + __tracepoint_android_vh_check_bpf_syscall __tracepoint_android_vh_ufs_clock_scaling __tracepoint_gpu_mem_total __tracepoint_mmap_lock_acquire_returned