From 7668cef283864085203848eb486b1e1de4debb68 Mon Sep 17 00:00:00 2001 From: Lee Jones Date: Mon, 19 Jun 2023 14:41:36 +0100 Subject: [PATCH 001/114] ANDROID: HID: Only utilise UHID provided exports if UHID is enabled Commit "ANDROID: HID; Over-ride default maximum buffer size when using UHID" provided a means for the UHID driver to offer an alternative (smaller) report buffer size when dealing with user-space. The method used was an Android-only solution designed to prevent the KMI ABI from being broken (nb: the upstream solution was cleaner, but broke the ABI). Since this solution involved consuming resources exported by a subordinate driver, that driver would have to be enabled for the export to take place. Since all of our default configs enable UHID, an issue was not detected. However, for more specific kernel configs, where HID is enabled, but UHID is not, this leads to compile-time undefined symbol errors: ld.lld: error: undefined symbol: uhid_hid_driver This patch relies on the compiler to leave out unutilised sections of the code if the associated resources are not available. Bug: 260007429 Reported-by: Paul Lawrence Reported-by: Nathan Chancellor Signed-off-by: Lee Jones Change-Id: I80b1aa7454c89d5c5e21f0268252ffb666efab97 --- drivers/hid/hid-core.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index e012a4382ea3..f017b457f222 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -293,7 +293,7 @@ static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsign offset = report->size; report->size += parser->global.report_size * parser->global.report_count; - if (parser->device->ll_driver == &uhid_hid_driver) + if (IS_ENABLED(CONFIG_UHID) && parser->device->ll_driver == &uhid_hid_driver) max_buffer_size = UHID_DATA_MAX; /* Total size check: Allow for possible report index byte */ @@ -1987,7 +1987,7 @@ int hid_report_raw_event(struct hid_device *hid, enum hid_report_type type, u8 * rsize = hid_compute_report_size(report); - if (hid->ll_driver == &uhid_hid_driver) + if (IS_ENABLED(CONFIG_UHID) && hid->ll_driver == &uhid_hid_driver) max_buffer_size = UHID_DATA_MAX; if (report_enum->numbered && rsize >= max_buffer_size) @@ -2398,7 +2398,7 @@ int hid_hw_raw_request(struct hid_device *hdev, { unsigned int max_buffer_size = HID_MAX_BUFFER_SIZE; - if (hdev->ll_driver == &uhid_hid_driver) + if (IS_ENABLED(CONFIG_UHID) && hdev->ll_driver == &uhid_hid_driver) max_buffer_size = UHID_DATA_MAX; if (len < 1 || len > max_buffer_size || !buf) @@ -2422,7 +2422,7 @@ int hid_hw_output_report(struct hid_device *hdev, __u8 *buf, size_t len) { unsigned int max_buffer_size = HID_MAX_BUFFER_SIZE; - if (hdev->ll_driver == &uhid_hid_driver) + if (IS_ENABLED(CONFIG_UHID) && hdev->ll_driver == &uhid_hid_driver) max_buffer_size = UHID_DATA_MAX; if (len < 1 || len > max_buffer_size || !buf) From 97a56a07e9917610e32633b8933d7474dd1bf00a Mon Sep 17 00:00:00 2001 From: "cathy.cai" Date: Tue, 20 Jun 2023 10:25:57 +0800 Subject: [PATCH 002/114] ANDROID: ABI: Update symbols to unisoc whitelist Update whitelist for the symbols used by the unisoc device and update the ABI representation accordingly. 5 function symbol(s) added 'void inet_proto_csum_replace4(__sum16*, struct sk_buff*, __be32, __be32, bool)' 'struct nf_conntrack_tuple_hash* nf_conntrack_find_get(struct net*, const struct nf_conntrack_zone*, const struct nf_conntrack_tuple*)' 'void nf_ct_destroy(struct nf_conntrack*)' 'int pskb_trim_rcsum_slow(struct sk_buff*, unsigned int)' 'struct rt6_info* rt6_lookup(struct net*, const struct in6_addr*, const struct in6_addr*, int, const struct sk_buff*, int)' Bug: 287899373 Change-Id: I30fb1f57ef9eb4f4f72f64471bb71da23b2a9a90 Signed-off-by: canting cai --- android/abi_gki_aarch64.stg | 123 +++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_unisoc | 5 ++ 2 files changed, 128 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 2476e2318697..b4fb4f5fe7e8 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -26351,6 +26351,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc6171ee9 } +pointer_reference { + id: 0x3b19594b + kind: POINTER + pointee_type_id: 0xc62583b0 +} pointer_reference { id: 0x3b19ae48 kind: POINTER @@ -27046,6 +27051,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd96df1ac } +pointer_reference { + id: 0x3ccb45d9 + kind: POINTER + pointee_type_id: 0xd96df1fa +} pointer_reference { id: 0x3ccbbab7 kind: POINTER @@ -27881,6 +27891,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd1f5399e } +pointer_reference { + id: 0x3eee6a0e + kind: POINTER + pointee_type_id: 0xd1f94ea7 +} pointer_reference { id: 0x3ef473d4 kind: POINTER @@ -28186,6 +28201,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd50238af } +pointer_reference { + id: 0x3fd547b8 + kind: POINTER + pointee_type_id: 0xd515f87f +} pointer_reference { id: 0x3fdb8740 kind: POINTER @@ -30591,6 +30611,11 @@ qualified { qualifier: CONST qualified_type_id: 0x6798ba36 } +qualified { + id: 0xc62583b0 + qualifier: CONST + qualified_type_id: 0x68d1b84a +} qualified { id: 0xc6265fbd qualifier: CONST @@ -31401,6 +31426,11 @@ qualified { qualifier: CONST qualified_type_id: 0x244f5434 } +qualified { + id: 0xd515f87f + qualifier: CONST + qualified_type_id: 0x24105774 +} qualified { id: 0xd52ecd52 qualifier: CONST @@ -74470,6 +74500,12 @@ member { name: "dir" type_id: 0x23f09c34 } +member { + id: 0x2edf726f + name: "dir" + type_id: 0x295c7202 + offset: 24 +} member { id: 0x2ee42a6c name: "dir" @@ -238152,6 +238188,17 @@ struct_union { member_id: 0x44304fff } } +struct_union { + id: 0x68d1b84a + kind: STRUCT + name: "nf_conntrack_zone" + definition { + bytesize: 4 + member_id: 0xccbe612e + member_id: 0x2d41d692 + member_id: 0x2edf726f + } +} struct_union { id: 0x5f7df287 kind: STRUCT @@ -286798,6 +286845,16 @@ function { return_type_id: 0x48b5725f parameter_id: 0x238b8721 } +function { + id: 0x187ccd99 + return_type_id: 0x17b5cc93 + parameter_id: 0x0ca27481 + parameter_id: 0x3b461cc8 + parameter_id: 0x3b461cc8 + parameter_id: 0x6720d32f + parameter_id: 0x3e6396e0 + parameter_id: 0x6720d32f +} function { id: 0x187d7a7f return_type_id: 0x48b5725f @@ -290908,6 +290965,15 @@ function { parameter_id: 0x120540d1 parameter_id: 0x0b8758d9 } +function { + id: 0x1f0df99a + return_type_id: 0x48b5725f + parameter_id: 0x3eee6a0e + parameter_id: 0x054f691a + parameter_id: 0xe276adef + parameter_id: 0xe276adef + parameter_id: 0x6d7f5ff6 +} function { id: 0x1f0fd39d return_type_id: 0x48b5725f @@ -295195,6 +295261,13 @@ function { return_type_id: 0x0130219f parameter_id: 0x0130219f } +function { + id: 0x65a73fe6 + return_type_id: 0x3ccb45d9 + parameter_id: 0x0ca27481 + parameter_id: 0x3b19594b + parameter_id: 0x3fd547b8 +} function { id: 0x65d68df5 return_type_id: 0x1977e57b @@ -350951,6 +351024,15 @@ elf_symbol { type_id: 0x9882219f full_name: "inet_ioctl" } +elf_symbol { + id: 0x601b2cac + name: "inet_proto_csum_replace4" + is_defined: true + symbol_type: FUNCTION + crc: 0x8ea3f5f8 + type_id: 0x1f0df99a + full_name: "inet_proto_csum_replace4" +} elf_symbol { id: 0x7ded1ffe name: "init_dummy_netdev" @@ -357257,6 +357339,15 @@ elf_symbol { type_id: 0x104c9db8 full_name: "nf_conntrack_destroy" } +elf_symbol { + id: 0x8b0d44a9 + name: "nf_conntrack_find_get" + is_defined: true + symbol_type: FUNCTION + crc: 0x1c96002d + type_id: 0x65a73fe6 + full_name: "nf_conntrack_find_get" +} elf_symbol { id: 0xb2e54d47 name: "nf_ct_attach" @@ -357275,6 +357366,15 @@ elf_symbol { type_id: 0xf33b99db full_name: "nf_ct_delete" } +elf_symbol { + id: 0xb4e99805 + name: "nf_ct_destroy" + is_defined: true + symbol_type: FUNCTION + crc: 0x3b08a8f0 + type_id: 0x104c9db8 + full_name: "nf_ct_destroy" +} elf_symbol { id: 0x43078d96 name: "nf_register_net_hooks" @@ -363245,6 +363345,15 @@ elf_symbol { type_id: 0x57c99e27 full_name: "pskb_put" } +elf_symbol { + id: 0x3758c51f + name: "pskb_trim_rcsum_slow" + is_defined: true + symbol_type: FUNCTION + crc: 0xda1052b5 + type_id: 0x9dc52cf1 + full_name: "pskb_trim_rcsum_slow" +} elf_symbol { id: 0xea6abe92 name: "pstore_register" @@ -366224,6 +366333,15 @@ elf_symbol { type_id: 0x8e47c273 full_name: "rps_needed" } +elf_symbol { + id: 0xec5e9065 + name: "rt6_lookup" + is_defined: true + symbol_type: FUNCTION + crc: 0x1ea53a03 + type_id: 0x187ccd99 + full_name: "rt6_lookup" +} elf_symbol { id: 0x264c5308 name: "rt_mutex_lock" @@ -384335,6 +384453,7 @@ interface { symbol_id: 0xbf4f0b58 symbol_id: 0x6e6a2ec5 symbol_id: 0xca2771be + symbol_id: 0x601b2cac symbol_id: 0x7ded1ffe symbol_id: 0xe42479db symbol_id: 0xd8b14976 @@ -385036,8 +385155,10 @@ interface { symbol_id: 0xbbd2a0ab symbol_id: 0x57abe80f symbol_id: 0xc8ea3547 + symbol_id: 0x8b0d44a9 symbol_id: 0xb2e54d47 symbol_id: 0x1b589c40 + symbol_id: 0xb4e99805 symbol_id: 0x43078d96 symbol_id: 0x619db28f symbol_id: 0x36bc8d13 @@ -385701,6 +385822,7 @@ interface { symbol_id: 0x7fc27c29 symbol_id: 0x9dc0e748 symbol_id: 0x2251af59 + symbol_id: 0x3758c51f symbol_id: 0xea6abe92 symbol_id: 0xbbb52558 symbol_id: 0x5b447f09 @@ -386032,6 +386154,7 @@ interface { symbol_id: 0x74c27ecd symbol_id: 0x80913de9 symbol_id: 0xbffd1c46 + symbol_id: 0xec5e9065 symbol_id: 0x264c5308 symbol_id: 0x205145e9 symbol_id: 0x0eff96d9 diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc index f2724b1aa984..a9aa06c78dc0 100644 --- a/android/abi_gki_aarch64_unisoc +++ b/android/abi_gki_aarch64_unisoc @@ -181,6 +181,7 @@ __dynamic_dev_dbg __dynamic_netdev_dbg __dynamic_pr_debug + inet_proto_csum_replace4 init_task enable_irq eth_mac_addr @@ -354,6 +355,8 @@ netlink_unicast net_ratelimit nf_conntrack_destroy + nf_conntrack_find_get + nf_ct_destroy nla_memcpy __nla_parse nla_put @@ -437,6 +440,7 @@ __pskb_copy_fclone pskb_expand_head __pskb_pull_tail + pskb_trim_rcsum_slow put_cmsg put_device __put_net @@ -498,6 +502,7 @@ request_threaded_irq return_address root_task_group + rt6_lookup rtc_time64_to_tm rtnl_is_locked rtnl_link_register From d28f02c47b770834498ad556ed17c9450e03e5ff Mon Sep 17 00:00:00 2001 From: Yifan Hong Date: Fri, 16 Jun 2023 17:10:23 -0700 Subject: [PATCH 003/114] ANDROID: Delete MODULES_LIST from build configs. They are controlled by kernel_images.modules_list, which is set by define_common_kernels already. The flags in build.configs has no effect. Test: TH Bug: 287697703 Signed-off-by: Yifan Hong (cherry picked from https://android-review.googlesource.com/q/commit:9bf4e4620ecc801c7eb824210595d9777b4a2ff8) Merged-In: I1e322529476b4db67a1574393819900bdbd41311 Change-Id: I1e322529476b4db67a1574393819900bdbd41311 --- build.config.gki.aarch64 | 1 - build.config.gki.riscv64 | 1 - build.config.gki.x86_64 | 1 - 3 files changed, 3 deletions(-) diff --git a/build.config.gki.aarch64 b/build.config.gki.aarch64 index 45c5199d471a..d3980621c116 100644 --- a/build.config.gki.aarch64 +++ b/build.config.gki.aarch64 @@ -8,7 +8,6 @@ arch/arm64/boot/Image.gz " BUILD_SYSTEM_DLKM=1 -MODULES_LIST=${ROOT_DIR}/${KERNEL_DIR}/android/gki_system_dlkm_modules BUILD_GKI_CERTIFICATION_TOOLS=1 diff --git a/build.config.gki.riscv64 b/build.config.gki.riscv64 index c216a0472794..91070684eb7a 100644 --- a/build.config.gki.riscv64 +++ b/build.config.gki.riscv64 @@ -8,7 +8,6 @@ arch/riscv/boot/Image.gz " BUILD_SYSTEM_DLKM=1 -MODULES_LIST=${ROOT_DIR}/${KERNEL_DIR}/android/gki_system_dlkm_modules BUILD_GKI_CERTIFICATION_TOOLS=1 diff --git a/build.config.gki.x86_64 b/build.config.gki.x86_64 index 93f492cabec8..20092cc5e122 100644 --- a/build.config.gki.x86_64 +++ b/build.config.gki.x86_64 @@ -3,7 +3,6 @@ . ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki BUILD_SYSTEM_DLKM=1 -MODULES_LIST=${ROOT_DIR}/${KERNEL_DIR}/android/gki_system_dlkm_modules BUILD_GKI_CERTIFICATION_TOOLS=1 From a97d54b54db5ac962891a58aee02e665f28a557e Mon Sep 17 00:00:00 2001 From: Jaskaran Singh Date: Wed, 21 Jun 2023 11:26:45 +0530 Subject: [PATCH 004/114] ANDROID: GKI: Increase CMA areas to 32 Current usecases require more than 16 CMA areas. Hence increase the number of CMA areas to 32. Bug: 287582821 Change-Id: I50439ee2a3e16d62fdf6c77b99f4779f3af430d6 Signed-off-by: Pratyush Brahma Signed-off-by: Jaskaran Singh --- arch/arm64/configs/gki_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index 29782a39fffa..a2ea28d82689 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -115,7 +115,7 @@ CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y CONFIG_CLEANCACHE=y CONFIG_CMA=y CONFIG_CMA_DEBUGFS=y -CONFIG_CMA_AREAS=16 +CONFIG_CMA_AREAS=32 # CONFIG_ZONE_DMA is not set CONFIG_ZONE_DEVICE=y CONFIG_ANON_VMA_NAME=y From b8ef5bfbee8ca7fa98b3acf8ef4a70cce616b336 Mon Sep 17 00:00:00 2001 From: Paul Lawrence Date: Wed, 7 Jun 2023 10:19:01 -0700 Subject: [PATCH 005/114] ANDROID: fuse-bpf: Ensure bpf field can never be nulled By putting and nulling fuse_inode's bpf field in fuse_evict_inode, we left a race condition - this inode can still be active. Do not put the bpf program until we are doing the final free in fuse_free_inode. This was the root cause of the reported bug. The backing inode cannot be put in fuse_free_inode, since put_inode can sleep and this is called from an RCU handler. But the backing inode cannot be freed until an RCU interval, so move the put_inode to the same location as in overlayfs, which is destroy_inode. Remove a path in fuse_handle_bpf_prog whereby bpf can be nulled out. When we want to be able to null/change the bpf_prog in the future, we will have to use a mutex or maybe RCU to protect existing users. But until this time, ban this path. Bug: 284450048 Test: fuse_test passes, Pixel 6 passes basic tests Change-Id: Ie6844242f279a5b202eb021eac5a2dd3d08bf09d Signed-off-by: Paul Lawrence --- fs/fuse/backing.c | 8 +++----- fs/fuse/inode.c | 23 ++++++++++++++++------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/fs/fuse/backing.c b/fs/fuse/backing.c index 269a4dfd76d8..6b9c29fe439e 100644 --- a/fs/fuse/backing.c +++ b/fs/fuse/backing.c @@ -1224,14 +1224,12 @@ int fuse_handle_bpf_prog(struct fuse_entry_bpf *feb, struct inode *parent, } /* Cannot change existing program */ - if (*bpf && new_bpf) { - bpf_prog_put(new_bpf); + if (*bpf) { + if (new_bpf) + bpf_prog_put(new_bpf); return new_bpf == *bpf ? 0 : -EINVAL; } - if (*bpf) - bpf_prog_put(*bpf); - *bpf = new_bpf; return 0; } diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index 1f593230bd4a..697e7b5b8319 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c @@ -113,6 +113,10 @@ static void fuse_free_inode(struct inode *inode) kfree(fi->forget); #ifdef CONFIG_FUSE_DAX kfree(fi->dax); +#endif +#ifdef CONFIG_FUSE_BPF + if (fi->bpf) + bpf_prog_put(fi->bpf); #endif kmem_cache_free(fuse_inode_cachep, fi); } @@ -123,13 +127,6 @@ static void fuse_evict_inode(struct inode *inode) /* Will write inode on close/munmap and in all other dirtiers */ WARN_ON(inode->i_state & I_DIRTY_INODE); - -#ifdef CONFIG_FUSE_BPF - iput(fi->backing_inode); - if (fi->bpf) - bpf_prog_put(fi->bpf); - fi->bpf = NULL; -#endif truncate_inode_pages_final(&inode->i_data); clear_inode(inode); if (inode->i_sb->s_flags & SB_ACTIVE) { @@ -149,6 +146,15 @@ static void fuse_evict_inode(struct inode *inode) } } +#ifdef CONFIG_FUSE_BPF +static void fuse_destroy_inode(struct inode *inode) +{ + struct fuse_inode *fi = get_fuse_inode(inode); + + iput(fi->backing_inode); +} +#endif + static int fuse_reconfigure(struct fs_context *fsc) { struct super_block *sb = fsc->root->d_sb; @@ -1209,6 +1215,9 @@ static const struct export_operations fuse_export_operations = { static const struct super_operations fuse_super_operations = { .alloc_inode = fuse_alloc_inode, +#ifdef CONFIG_FUSE_BPF + .destroy_inode = fuse_destroy_inode, +#endif .free_inode = fuse_free_inode, .evict_inode = fuse_evict_inode, .write_inode = fuse_write_inode, From 9ea87136d184cb4747e6fef7f9cac152687c566f Mon Sep 17 00:00:00 2001 From: Paul Lawrence Date: Wed, 14 Jun 2023 11:55:53 -0700 Subject: [PATCH 006/114] ANDROID: fuse-bpf: Move FUSE_RELEASE to correct place The existing fuse-bpf freeing logic would free the fuse_file struct immediately. However, this would break readahead. Move freeing logic to the same place as done in classic fuse. Bug: 286287652 Test: fuse_test passes, android boots, cts tests run Change-Id: If13519f0e956a8da0dc98e7ac4aed2036070e969 Signed-off-by: Paul Lawrence --- fs/fuse/backing.c | 40 +++++-------------------- fs/fuse/dir.c | 11 ------- fs/fuse/file.c | 74 +++++++++++++++++++++++++---------------------- fs/fuse/fuse_i.h | 9 ++---- 4 files changed, 50 insertions(+), 84 deletions(-) diff --git a/fs/fuse/backing.c b/fs/fuse/backing.c index 6b9c29fe439e..42ae8188028c 100644 --- a/fs/fuse/backing.c +++ b/fs/fuse/backing.c @@ -295,44 +295,19 @@ void *fuse_create_open_finalize( } int fuse_release_initialize(struct fuse_bpf_args *fa, struct fuse_release_in *fri, - struct inode *inode, struct file *file) + struct inode *inode, struct fuse_file *ff) { - struct fuse_file *fuse_file = file->private_data; - /* Always put backing file whatever bpf/userspace says */ - fput(fuse_file->backing_file); + fput(ff->backing_file); *fri = (struct fuse_release_in) { - .fh = ((struct fuse_file *)(file->private_data))->fh, + .fh = ff->fh, }; *fa = (struct fuse_bpf_args) { .nodeid = get_fuse_inode(inode)->nodeid, - .opcode = FUSE_RELEASE, - .in_numargs = 1, - .in_args[0].size = sizeof(*fri), - .in_args[0].value = fri, - }; - - return 0; -} - -int fuse_releasedir_initialize(struct fuse_bpf_args *fa, - struct fuse_release_in *fri, - struct inode *inode, struct file *file) -{ - struct fuse_file *fuse_file = file->private_data; - - /* Always put backing file whatever bpf/userspace says */ - fput(fuse_file->backing_file); - - *fri = (struct fuse_release_in) { - .fh = ((struct fuse_file *)(file->private_data))->fh, - }; - - *fa = (struct fuse_bpf_args) { - .nodeid = get_fuse_inode(inode)->nodeid, - .opcode = FUSE_RELEASEDIR, + .opcode = S_ISDIR(inode->i_mode) ? FUSE_RELEASEDIR + : FUSE_RELEASE, .in_numargs = 1, .in_args[0].size = sizeof(*fri), .in_args[0].value = fri, @@ -342,15 +317,14 @@ int fuse_releasedir_initialize(struct fuse_bpf_args *fa, } int fuse_release_backing(struct fuse_bpf_args *fa, - struct inode *inode, struct file *file) + struct inode *inode, struct fuse_file *ff) { return 0; } void *fuse_release_finalize(struct fuse_bpf_args *fa, - struct inode *inode, struct file *file) + struct inode *inode, struct fuse_file *ff) { - fuse_file_free(file->private_data); return NULL; } diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index dd184a36dc55..933e4a727505 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -1790,17 +1790,6 @@ static int fuse_dir_open(struct inode *inode, struct file *file) static int fuse_dir_release(struct inode *inode, struct file *file) { -#ifdef CONFIG_FUSE_BPF - struct fuse_err_ret fer; - - fer = fuse_bpf_backing(inode, struct fuse_release_in, - fuse_releasedir_initialize, fuse_release_backing, - fuse_release_finalize, - inode, file); - if (fer.ret) - return PTR_ERR(fer.result); -#endif - fuse_release_common(file, true); return 0; } diff --git a/fs/fuse/file.c b/fs/fuse/file.c index d37f90b3c59f..923a0fbc698f 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -104,25 +104,39 @@ static void fuse_release_end(struct fuse_mount *fm, struct fuse_args *args, kfree(ra); } -static void fuse_file_put(struct fuse_file *ff, bool sync, bool isdir) +static void fuse_file_put(struct inode *inode, struct fuse_file *ff, + bool sync, bool isdir) { - if (refcount_dec_and_test(&ff->count)) { - struct fuse_args *args = &ff->release_args->args; + struct fuse_args *args = &ff->release_args->args; +#ifdef CONFIG_FUSE_BPF + struct fuse_err_ret fer; +#endif - if (isdir ? ff->fm->fc->no_opendir : ff->fm->fc->no_open) { - /* Do nothing when client does not implement 'open' */ - fuse_release_end(ff->fm, args, 0); - } else if (sync) { - fuse_simple_request(ff->fm, args); - fuse_release_end(ff->fm, args, 0); - } else { - args->end = fuse_release_end; - if (fuse_simple_background(ff->fm, args, - GFP_KERNEL | __GFP_NOFAIL)) - fuse_release_end(ff->fm, args, -ENOTCONN); - } - kfree(ff); + if (!refcount_dec_and_test(&ff->count)) + return; + +#ifdef CONFIG_FUSE_BPF + fer = fuse_bpf_backing(inode, struct fuse_release_in, + fuse_release_initialize, fuse_release_backing, + fuse_release_finalize, + inode, ff); + if (fer.ret) { + fuse_release_end(ff->fm, args, 0); + } else +#endif + if (isdir ? ff->fm->fc->no_opendir : ff->fm->fc->no_open) { + /* Do nothing when client does not implement 'open' */ + fuse_release_end(ff->fm, args, 0); + } else if (sync) { + fuse_simple_request(ff->fm, args); + fuse_release_end(ff->fm, args, 0); + } else { + args->end = fuse_release_end; + if (fuse_simple_background(ff->fm, args, + GFP_KERNEL | __GFP_NOFAIL)) + fuse_release_end(ff->fm, args, -ENOTCONN); } + kfree(ff); } struct fuse_file *fuse_file_open(struct fuse_mount *fm, u64 nodeid, @@ -343,7 +357,7 @@ void fuse_file_release(struct inode *inode, struct fuse_file *ff, * synchronous RELEASE is allowed (and desirable) in this case * because the server can be trusted not to screw up. */ - fuse_file_put(ff, ff->fm->fc->destroy, isdir); + fuse_file_put(ra->inode, ff, ff->fm->fc->destroy, isdir); } void fuse_release_common(struct file *file, bool isdir) @@ -361,17 +375,6 @@ static int fuse_release(struct inode *inode, struct file *file) { struct fuse_conn *fc = get_fuse_conn(inode); -#ifdef CONFIG_FUSE_BPF - struct fuse_err_ret fer; - - fer = fuse_bpf_backing(inode, struct fuse_release_in, - fuse_release_initialize, fuse_release_backing, - fuse_release_finalize, - inode, file); - if (fer.ret) - return PTR_ERR(fer.result); -#endif - /* * Dirty pages might remain despite write_inode_now() call from * fuse_flush() due to writes racing with the close. @@ -394,7 +397,7 @@ void fuse_sync_release(struct fuse_inode *fi, struct fuse_file *ff, * iput(NULL) is a no-op and since the refcount is 1 and everything's * synchronous, we are fine with not doing igrab() here" */ - fuse_file_put(ff, true, false); + fuse_file_put(&fi->inode, ff, true, false); } EXPORT_SYMBOL_GPL(fuse_sync_release); @@ -972,8 +975,11 @@ static void fuse_readpages_end(struct fuse_mount *fm, struct fuse_args *args, unlock_page(page); put_page(page); } - if (ia->ff) - fuse_file_put(ia->ff, false, false); + if (ia->ff) { + WARN_ON(!mapping); + fuse_file_put(mapping ? mapping->host : NULL, ia->ff, + false, false); + } fuse_io_free(ia); } @@ -1716,7 +1722,7 @@ static void fuse_writepage_free(struct fuse_writepage_args *wpa) __free_page(ap->pages[i]); if (wpa->ia.ff) - fuse_file_put(wpa->ia.ff, false, false); + fuse_file_put(wpa->inode, wpa->ia.ff, false, false); kfree(ap->pages); kfree(wpa); @@ -1971,7 +1977,7 @@ int fuse_write_inode(struct inode *inode, struct writeback_control *wbc) ff = __fuse_write_file_get(fi); err = fuse_flush_times(inode, ff); if (ff) - fuse_file_put(ff, false, false); + fuse_file_put(inode, ff, false, false); return err; } @@ -2369,7 +2375,7 @@ static int fuse_writepages(struct address_space *mapping, fuse_writepages_send(&data); } if (data.ff) - fuse_file_put(data.ff, false, false); + fuse_file_put(inode, data.ff, false, false); kfree(data.orig_pages); out: diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index a659c89cc685..af20800db6c2 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -1536,14 +1536,11 @@ void *fuse_link_finalize(struct fuse_bpf_args *fa, struct dentry *entry, struct inode *dir, struct dentry *newent); int fuse_release_initialize(struct fuse_bpf_args *fa, struct fuse_release_in *fri, - struct inode *inode, struct file *file); -int fuse_releasedir_initialize(struct fuse_bpf_args *fa, - struct fuse_release_in *fri, - struct inode *inode, struct file *file); + struct inode *inode, struct fuse_file *ff); int fuse_release_backing(struct fuse_bpf_args *fa, - struct inode *inode, struct file *file); + struct inode *inode, struct fuse_file *ff); void *fuse_release_finalize(struct fuse_bpf_args *fa, - struct inode *inode, struct file *file); + struct inode *inode, struct fuse_file *ff); int fuse_flush_initialize(struct fuse_bpf_args *fa, struct fuse_flush_in *ffi, struct file *file, fl_owner_t id); From 734b06dabf642c77cdabc0593c3c68050338cade Mon Sep 17 00:00:00 2001 From: John Scheible Date: Tue, 20 Jun 2023 16:15:53 -0700 Subject: [PATCH 007/114] ANDROID: ABI: Update pixel symbol list 1 function symbol(s) added 'int __trace_bputs(unsigned long, const char*)' Bug: 288168318 Change-Id: Ife295cef423cbc98f56f85c534bfc73100af6faf Signed-off-by: John Scheible --- android/abi_gki_aarch64.stg | 16 ++++++++++++++++ android/abi_gki_aarch64_pixel | 2 ++ 2 files changed, 18 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index b4fb4f5fe7e8..ce1082eb8345 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -299066,6 +299066,12 @@ function { parameter_id: 0x3c07fb40 parameter_id: 0xc9082b19 } +function { + id: 0x91a5f8da + return_type_id: 0x6720d32f + parameter_id: 0x33756485 + parameter_id: 0x3e10b518 +} function { id: 0x91a610ef return_type_id: 0x6720d32f @@ -324690,6 +324696,15 @@ elf_symbol { type_id: 0x918cb258 full_name: "__trace_bprintk" } +elf_symbol { + id: 0x46adfea4 + name: "__trace_bputs" + is_defined: true + symbol_type: FUNCTION + crc: 0xb1e25684 + type_id: 0x91a5f8da + full_name: "__trace_bputs" +} elf_symbol { id: 0x233d8b34 name: "__trace_puts" @@ -381528,6 +381543,7 @@ interface { symbol_id: 0xdb99fd00 symbol_id: 0xf7de9a97 symbol_id: 0x6356c7e1 + symbol_id: 0x46adfea4 symbol_id: 0x233d8b34 symbol_id: 0xa5905957 symbol_id: 0x17dfc6db diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index 06d7a6c7e801..e2e51a93aca6 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -1959,6 +1959,8 @@ topology_update_thermal_pressure _totalram_pages touch_softlockup_watchdog + __trace_bprintk + __trace_bputs trace_event_buffer_commit trace_event_buffer_reserve trace_event_printf From 64e4b4d31ba5ae8edd2824176a1f02732fa6244e Mon Sep 17 00:00:00 2001 From: Yifan Hong Date: Fri, 16 Jun 2023 17:05:00 -0700 Subject: [PATCH 008/114] ANDROID: kleaf: android/gki_system_dlkm_modules is generated. modules.bzl is the source of truth for the list of GKI modules. There is no need to keep two lists. Test: TH Bug: 287697703 Signed-off-by: Yifan Hong (cherry picked from https://android-review.googlesource.com/q/commit:a8a61755f67730af45d50f6173a4eedbcefa1c87) Merged-In: I8953e92696833cf8ec27aa80724ec468c08736f1 Change-Id: I8953e92696833cf8ec27aa80724ec468c08736f1 --- BUILD.bazel | 10 ++++++ android/gki_system_dlkm_modules | 59 --------------------------------- 2 files changed, 10 insertions(+), 59 deletions(-) delete mode 100644 android/gki_system_dlkm_modules diff --git a/BUILD.bazel b/BUILD.bazel index 786d7193b7f8..9c9e8cb28813 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 # Copyright (C) 2021 The Android Open Source Project +load("@bazel_skylib//rules:write_file.bzl", "write_file") load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir") load("//build/kernel/kleaf:common_kernels.bzl", "define_common_kernels", "define_db845c") load("//build/kernel/kleaf:kernel.bzl", "ddk_headers", "kernel_build", "kernel_images", "kernel_modules_install") @@ -31,6 +32,15 @@ _GKI_X86_64_MAKE_GOALS = [ "modules", ] +write_file( + name = "gki_system_dlkm_modules", + out = "android/gki_system_dlkm_modules", + content = COMMON_GKI_MODULES_LIST + [ + # Ensure new line at the end. + "", + ], +) + filegroup( name = "aarch64_additional_kmi_symbol_lists", srcs = [ diff --git a/android/gki_system_dlkm_modules b/android/gki_system_dlkm_modules deleted file mode 100644 index 70befe1a9dcf..000000000000 --- a/android/gki_system_dlkm_modules +++ /dev/null @@ -1,59 +0,0 @@ -drivers/block/zram/zram.ko -drivers/bluetooth/btbcm.ko -drivers/bluetooth/btqca.ko -drivers/bluetooth/btsdio.ko -drivers/bluetooth/hci_uart.ko -drivers/net/can/dev/can-dev.ko -drivers/net/can/slcan/slcan.ko -drivers/net/can/vcan.ko -drivers/net/mii.ko -drivers/net/ppp/bsd_comp.ko -drivers/net/ppp/ppp_deflate.ko -drivers/net/ppp/ppp_generic.ko -drivers/net/ppp/ppp_mppe.ko -drivers/net/ppp/pppox.ko -drivers/net/ppp/pptp.ko -drivers/net/slip/slhc.ko -drivers/net/usb/aqc111.ko -drivers/net/usb/asix.ko -drivers/net/usb/ax88179_178a.ko -drivers/net/usb/cdc_eem.ko -drivers/net/usb/cdc_ether.ko -drivers/net/usb/cdc_ncm.ko -drivers/net/usb/r8152.ko -drivers/net/usb/r8153_ecm.ko -drivers/net/usb/rtl8150.ko -drivers/net/usb/usbnet.ko -drivers/usb/class/cdc-acm.ko -drivers/usb/serial/ftdi_sio.ko -drivers/usb/serial/usbserial.ko -kernel/kheaders.ko -lib/crypto/libarc4.ko -mm/zsmalloc.ko -net/6lowpan/6lowpan.ko -net/6lowpan/nhc_dest.ko -net/6lowpan/nhc_fragment.ko -net/6lowpan/nhc_hop.ko -net/6lowpan/nhc_ipv6.ko -net/6lowpan/nhc_mobility.ko -net/6lowpan/nhc_routing.ko -net/6lowpan/nhc_udp.ko -net/8021q/8021q.ko -net/bluetooth/bluetooth.ko -net/bluetooth/hidp/hidp.ko -net/bluetooth/rfcomm/rfcomm.ko -net/can/can.ko -net/can/can-bcm.ko -net/can/can-gw.ko -net/can/can-raw.ko -net/ieee802154/6lowpan/ieee802154_6lowpan.ko -net/ieee802154/ieee802154.ko -net/ieee802154/ieee802154_socket.ko -net/l2tp/l2tp_core.ko -net/l2tp/l2tp_ppp.ko -net/mac802154/mac802154.ko -net/nfc/nfc.ko -net/rfkill/rfkill.ko -net/tipc/diag.ko -net/tipc/tipc.ko - From 275048c878cfd0026f4a12e4924e478aad28b4c3 Mon Sep 17 00:00:00 2001 From: fengqi Date: Thu, 22 Jun 2023 11:11:05 +0800 Subject: [PATCH 009/114] ANDROID: GKI: update symbol list file for xiaomi INFO: ABI DIFFERENCES HAVE BEEN DETECTED! INFO: 1 function symbol(s) added 'int param_set_uint_minmax(const char*, const struct kernel_param*, unsigned int, unsigned int)' Bug: 288308524 Change-Id: If5f11f762b6f870d8ab2d264eb0a4a2febe62e65 Signed-off-by: fengqi --- android/abi_gki_aarch64.stg | 18 ++++++++++++++++++ android/abi_gki_aarch64_xiaomi | 13 +++++++++++++ 2 files changed, 31 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index ce1082eb8345..a27200a08d42 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -300844,6 +300844,14 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3d3b5dd7 } +function { + id: 0x92d2af21 + return_type_id: 0x6720d32f + parameter_id: 0x3e10b518 + parameter_id: 0x3185812b + parameter_id: 0x4585663f + parameter_id: 0x4585663f +} function { id: 0x92d3b873 return_type_id: 0x6720d32f @@ -359742,6 +359750,15 @@ elf_symbol { type_id: 0x92c2d86d full_name: "param_set_uint" } +elf_symbol { + id: 0xe48076c0 + name: "param_set_uint_minmax" + is_defined: true + symbol_type: FUNCTION + crc: 0x4d337ca1 + type_id: 0x92d2af21 + full_name: "param_set_uint_minmax" +} elf_symbol { id: 0x1eafdf64 name: "param_set_ulong" @@ -385436,6 +385453,7 @@ interface { symbol_id: 0x34de6be7 symbol_id: 0x9cc61d04 symbol_id: 0x07e4f5ea + symbol_id: 0xe48076c0 symbol_id: 0x1eafdf64 symbol_id: 0x67d6372c symbol_id: 0x0a48d5ac diff --git a/android/abi_gki_aarch64_xiaomi b/android/abi_gki_aarch64_xiaomi index 0435b3d6b107..953deafcc133 100644 --- a/android/abi_gki_aarch64_xiaomi +++ b/android/abi_gki_aarch64_xiaomi @@ -144,6 +144,9 @@ sbitmap_weight scsi_done scsi_remove_device + param_get_bool + blk_mq_unique_tag + param_set_uint_minmax #required by mi_sched.ko __traceiter_android_vh_scheduler_tick @@ -231,6 +234,9 @@ #required by touch module power_supply_is_system_supplied +#required by mi-power.ko + class_create_file_ns + #required by mi_mempool.ko __traceiter_android_vh_alloc_pages_reclaim_bypass __traceiter_android_vh_alloc_pages_failure_bypass @@ -255,3 +261,10 @@ tty_port_close_start tty_port_lower_dtr_rts tty_port_close_end + +#required by mtdoops.ko + of_node_name_prefix + bdi_unregister + +#required by dispaly.ko + mipi_dsi_dcs_set_display_off From 32c2d42ee1f15c3657f242c0710a635de3dda58a Mon Sep 17 00:00:00 2001 From: Ulises Mendez Martinez Date: Tue, 11 Apr 2023 10:52:32 +0000 Subject: [PATCH 010/114] ANDROID: rockpi4: Fix build when using --kgdb * CONFIG_WATCHDOG is disabled when compiling with --kgdb option, hence the list of modules produced is adjusted conditionally on its value. Bug: 270320056 Change-Id: I4db55fdf6b91a65209d2e0ae3bbb5f384c7eca22 Signed-off-by: Ulises Mendez Martinez --- BUILD.bazel | 136 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 86 insertions(+), 50 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index 9c9e8cb28813..f3725793b14a 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -311,9 +311,64 @@ define_db845c( ], ) +_ROCKPI4_MODULE_OUTS = [ + # keep sorted + "drivers/block/virtio_blk.ko", + "drivers/char/hw_random/virtio-rng.ko", + "drivers/clk/clk-rk808.ko", + "drivers/cpufreq/cpufreq-dt.ko", + "drivers/dma/pl330.ko", + "drivers/gpu/drm/bridge/analogix/analogix_dp.ko", + "drivers/gpu/drm/bridge/synopsys/dw-hdmi.ko", + "drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.ko", + "drivers/gpu/drm/display/drm_display_helper.ko", + "drivers/gpu/drm/drm_dma_helper.ko", + "drivers/gpu/drm/rockchip/rockchipdrm.ko", + "drivers/i2c/busses/i2c-rk3x.ko", + "drivers/iio/adc/rockchip_saradc.ko", + "drivers/iio/buffer/industrialio-triggered-buffer.ko", + "drivers/iio/buffer/kfifo_buf.ko", + "drivers/mfd/rk808.ko", + "drivers/mmc/core/pwrseq_simple.ko", + "drivers/mmc/host/cqhci.ko", + "drivers/mmc/host/dw_mmc.ko", + "drivers/mmc/host/dw_mmc-pltfm.ko", + "drivers/mmc/host/dw_mmc-rockchip.ko", + "drivers/mmc/host/sdhci-of-arasan.ko", + "drivers/net/ethernet/stmicro/stmmac/dwmac-rk.ko", + "drivers/net/ethernet/stmicro/stmmac/stmmac.ko", + "drivers/net/ethernet/stmicro/stmmac/stmmac-platform.ko", + "drivers/net/net_failover.ko", + "drivers/net/pcs/pcs_xpcs.ko", + "drivers/net/virtio_net.ko", + "drivers/pci/controller/pcie-rockchip-host.ko", + "drivers/phy/rockchip/phy-rockchip-emmc.ko", + "drivers/phy/rockchip/phy-rockchip-inno-usb2.ko", + "drivers/phy/rockchip/phy-rockchip-pcie.ko", + "drivers/phy/rockchip/phy-rockchip-typec.ko", + "drivers/pwm/pwm-rockchip.ko", + "drivers/regulator/fan53555.ko", + "drivers/regulator/pwm-regulator.ko", + "drivers/regulator/rk808-regulator.ko", + "drivers/rtc/rtc-rk808.ko", + "drivers/soc/rockchip/io-domain.ko", + "drivers/thermal/rockchip_thermal.ko", + "drivers/usb/host/ohci-hcd.ko", + "drivers/usb/host/ohci-platform.ko", + "drivers/virtio/virtio_pci.ko", + "drivers/virtio/virtio_pci_legacy_dev.ko", + "drivers/virtio/virtio_pci_modern_dev.ko", + "net/core/failover.ko", +] + +_ROCKPI4_WATCHDOG_MODULE_OUTS = [ + # keep sorted + "drivers/watchdog/dw_wdt.ko", +] + # TODO(b/258259749): Convert rockpi4 to mixed build kernel_build( - name = "rockpi4", + name = "rockpi4_no_kgdb", outs = [ "Image", "System.map", @@ -330,56 +385,37 @@ kernel_build( "modules", "rk3399-rock-pi-4b.dtb", ], - module_outs = COMMON_GKI_MODULES_LIST + [ - # keep sorted - "drivers/block/virtio_blk.ko", - "drivers/char/hw_random/virtio-rng.ko", - "drivers/clk/clk-rk808.ko", - "drivers/cpufreq/cpufreq-dt.ko", - "drivers/dma/pl330.ko", - "drivers/gpu/drm/bridge/analogix/analogix_dp.ko", - "drivers/gpu/drm/bridge/synopsys/dw-hdmi.ko", - "drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.ko", - "drivers/gpu/drm/display/drm_display_helper.ko", - "drivers/gpu/drm/drm_dma_helper.ko", - "drivers/gpu/drm/rockchip/rockchipdrm.ko", - "drivers/i2c/busses/i2c-rk3x.ko", - "drivers/iio/adc/rockchip_saradc.ko", - "drivers/iio/buffer/industrialio-triggered-buffer.ko", - "drivers/iio/buffer/kfifo_buf.ko", - "drivers/mfd/rk808.ko", - "drivers/mmc/core/pwrseq_simple.ko", - "drivers/mmc/host/cqhci.ko", - "drivers/mmc/host/dw_mmc.ko", - "drivers/mmc/host/dw_mmc-pltfm.ko", - "drivers/mmc/host/dw_mmc-rockchip.ko", - "drivers/mmc/host/sdhci-of-arasan.ko", - "drivers/net/ethernet/stmicro/stmmac/dwmac-rk.ko", - "drivers/net/ethernet/stmicro/stmmac/stmmac.ko", - "drivers/net/ethernet/stmicro/stmmac/stmmac-platform.ko", - "drivers/net/net_failover.ko", - "drivers/net/pcs/pcs_xpcs.ko", - "drivers/net/virtio_net.ko", - "drivers/pci/controller/pcie-rockchip-host.ko", - "drivers/phy/rockchip/phy-rockchip-emmc.ko", - "drivers/phy/rockchip/phy-rockchip-inno-usb2.ko", - "drivers/phy/rockchip/phy-rockchip-pcie.ko", - "drivers/phy/rockchip/phy-rockchip-typec.ko", - "drivers/pwm/pwm-rockchip.ko", - "drivers/regulator/fan53555.ko", - "drivers/regulator/pwm-regulator.ko", - "drivers/regulator/rk808-regulator.ko", - "drivers/rtc/rtc-rk808.ko", - "drivers/soc/rockchip/io-domain.ko", - "drivers/thermal/rockchip_thermal.ko", - "drivers/usb/host/ohci-hcd.ko", - "drivers/usb/host/ohci-platform.ko", - "drivers/virtio/virtio_pci.ko", - "drivers/virtio/virtio_pci_legacy_dev.ko", - "drivers/virtio/virtio_pci_modern_dev.ko", - "drivers/watchdog/dw_wdt.ko", - "net/core/failover.ko", + module_outs = COMMON_GKI_MODULES_LIST + _ROCKPI4_MODULE_OUTS + _ROCKPI4_WATCHDOG_MODULE_OUTS, +) + +# TODO(b/258259749): Convert rockpi4 to mixed build +kernel_build( + name = "rockpi4_with_kgdb", + outs = [ + "Image", + "System.map", + "modules.builtin", + "modules.builtin.modinfo", + "rk3399-rock-pi-4b.dtb", + "vmlinux", + "vmlinux.symvers", ], + build_config = "build.config.rockpi4", + dtstree = "//common-modules/virtual-device:rockpi4_dts", + make_goals = [ + "Image", + "modules", + "rk3399-rock-pi-4b.dtb", + ], + module_outs = COMMON_GKI_MODULES_LIST + _ROCKPI4_MODULE_OUTS, +) + +alias( + name = "rockpi4", + actual = select({ + "//build/kernel/kleaf:kgdb_is_true": "rockpi4_with_kgdb", + "//conditions:default": "rockpi4_no_kgdb", + }), ) kernel_modules_install( From 9afd7b261a12676cacb4b4705f3491a12bc3e48c Mon Sep 17 00:00:00 2001 From: LongPing Wei Date: Mon, 19 Jun 2023 20:25:03 +0800 Subject: [PATCH 011/114] ANDROID: Export memcg functions to allow module to add new files Export cgroup_add_dfl_cftypes to allow vendor module to expose additional files in the memory cgroup-v2 hierarchy. Bug: 287922632 Change-Id: I103b983fbb46ff7a45cfc57f5657142a1bbd3d68 Signed-off-by: LongPing Wei --- kernel/cgroup/cgroup.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index e4045593ea2b..c827832ff7a2 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -4443,6 +4443,7 @@ int cgroup_add_dfl_cftypes(struct cgroup_subsys *ss, struct cftype *cfts) cft->flags |= __CFTYPE_ONLY_ON_DFL; return cgroup_add_cftypes(ss, cfts); } +EXPORT_SYMBOL_GPL(cgroup_add_dfl_cftypes); /** * cgroup_add_legacy_cftypes - add an array of cftypes for legacy hierarchies From 947e7c1d72c09f7d0a12727adcd579f4405babe6 Mon Sep 17 00:00:00 2001 From: LongPing Wei Date: Mon, 19 Jun 2023 21:00:46 +0800 Subject: [PATCH 012/114] ANDROID: GKI: Update symbols to symbol list 1 function symbol(s) added 'int cgroup_add_dfl_cftypes(struct cgroup_subsys*, struct cftype*)' Bug: 287922632 Change-Id: I38cf93237bd78c7577ad948f9495d491d9f62389 Signed-off-by: LongPing Wei --- android/abi_gki_aarch64.stg | 10 ++++++++++ android/abi_gki_aarch64_oplus | 1 + 2 files changed, 11 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index a27200a08d42..c817ff9a9caa 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -334796,6 +334796,15 @@ elf_symbol { type_id: 0x1e99dfd1 full_name: "cec_unregister_adapter" } +elf_symbol { + id: 0x4d06ba53 + name: "cgroup_add_dfl_cftypes" + is_defined: true + symbol_type: FUNCTION + crc: 0x86093f58 + type_id: 0x9f4f3809 + full_name: "cgroup_add_dfl_cftypes" +} elf_symbol { id: 0x3c85cae0 name: "cgroup_add_legacy_cftypes" @@ -382682,6 +382691,7 @@ interface { symbol_id: 0xc4e53e95 symbol_id: 0xba1a33c8 symbol_id: 0xe2dc88d9 + symbol_id: 0x4d06ba53 symbol_id: 0x3c85cae0 symbol_id: 0x4ce62869 symbol_id: 0x6d77f512 diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index a5812def9b5b..e06e98d72020 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -8,6 +8,7 @@ blk_rq_map_user blk_rq_map_user_iov blk_start_plug + cgroup_add_dfl_cftypes cgroup_add_legacy_cftypes console_printk cpufreq_frequency_table_get_index From ec0fc55aa4de3ec739a4882d9bf0383ed1d2a046 Mon Sep 17 00:00:00 2001 From: Ulises Mendez Martinez Date: Thu, 22 Jun 2023 14:08:27 +0000 Subject: [PATCH 013/114] ANDROID: db845c: Local define for db845c targets Generally DAMP is a best practice in Bazel, for this specific case, it helps with: * Better target discoverability and auto-completion. * It's possible to use `select` for KGDB fixes later on without encountering name expectations broken. Bug: 256196368 Bug: 270320056 Change-Id: I300404a9b2b4b7c6569145a942ecb445d23e8e9a Signed-off-by: Ulises Mendez Martinez --- BUILD.bazel | 70 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 62 insertions(+), 8 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index f3725793b14a..6e647f8b58e4 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -3,8 +3,16 @@ load("@bazel_skylib//rules:write_file.bzl", "write_file") load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir") -load("//build/kernel/kleaf:common_kernels.bzl", "define_common_kernels", "define_db845c") -load("//build/kernel/kleaf:kernel.bzl", "ddk_headers", "kernel_build", "kernel_images", "kernel_modules_install") +load("//build/kernel/kleaf:common_kernels.bzl", "define_common_kernels") +load( + "//build/kernel/kleaf:kernel.bzl", + "ddk_headers", + "kernel_abi", + "kernel_build", + "kernel_images", + "kernel_modules_install", + "merged_kernel_uapi_headers", +) load(":modules.bzl", "COMMON_GKI_MODULES_LIST") package( @@ -107,15 +115,18 @@ define_common_kernels(target_configs = { }, }) -define_db845c( +kernel_build( name = "db845c", outs = [ "arch/arm64/boot/dts/qcom/qrb5165-rb5.dtb", "arch/arm64/boot/dts/qcom/sdm845-db845c.dtb", "arch/arm64/boot/dts/qcom/sm8450-qrd.dtb", ], - define_abi_targets = True, - kmi_symbol_list = "//common:android/abi_gki_aarch64_db845c", + # Enable mixed build. + base_kernel = ":kernel_aarch64", + build_config = "build.config.db845c", + collect_unstripped_modules = True, + kmi_symbol_list = "android/abi_gki_aarch64_db845c", make_goals = [ "modules", "qcom/sdm845-db845c.dtb", @@ -309,6 +320,47 @@ define_db845c( "sound/soc/qcom/snd-soc-sdm845.ko", "sound/soc/qcom/snd-soc-sm8250.ko", ], + strip_modules = True, +) + +kernel_abi( + name = "db845c_abi", + kernel_build = ":db845c", + kmi_symbol_list_add_only = True, +) + +kernel_modules_install( + name = "db845c_modules_install", + kernel_build = ":db845c", +) + +merged_kernel_uapi_headers( + name = "db845c_merged_kernel_uapi_headers", + kernel_build = ":db845c", +) + +kernel_images( + name = "db845c_images", + build_initramfs = True, + kernel_build = ":db845c", + kernel_modules_install = ":db845c_modules_install", +) + +copy_to_dist_dir( + name = "db845c_dist", + data = [ + ":db845c", + ":db845c_images", + ":db845c_modules_install", + ":db845c_merged_kernel_uapi_headers", + # Mixed build: Additional GKI artifacts. + ":kernel_aarch64", + ":kernel_aarch64_modules", + ":kernel_aarch64_additional_artifacts", + ], + dist_dir = "out/db845/dist", + flat = True, + log = "info", ) _ROCKPI4_MODULE_OUTS = [ @@ -386,6 +438,7 @@ kernel_build( "rk3399-rock-pi-4b.dtb", ], module_outs = COMMON_GKI_MODULES_LIST + _ROCKPI4_MODULE_OUTS + _ROCKPI4_WATCHDOG_MODULE_OUTS, + visibility = ["//visibility:private"], ) # TODO(b/258259749): Convert rockpi4 to mixed build @@ -408,6 +461,7 @@ kernel_build( "rk3399-rock-pi-4b.dtb", ], module_outs = COMMON_GKI_MODULES_LIST + _ROCKPI4_MODULE_OUTS, + visibility = ["//visibility:private"], ) alias( @@ -420,14 +474,14 @@ alias( kernel_modules_install( name = "rockpi4_modules_install", - kernel_build = "//common:rockpi4", + kernel_build = ":rockpi4", ) kernel_images( name = "rockpi4_images", build_initramfs = True, - kernel_build = "//common:rockpi4", - kernel_modules_install = "//common:rockpi4_modules_install", + kernel_build = ":rockpi4", + kernel_modules_install = ":rockpi4_modules_install", ) copy_to_dist_dir( From 21061b7d0f47b226b8a2f88165350a38f85df01e Mon Sep 17 00:00:00 2001 From: Jaegeuk Kim Date: Tue, 13 Jun 2023 16:12:23 -0700 Subject: [PATCH 014/114] FROMLIST: f2fs: remove i_xattr_sem to avoid deadlock and fix the original issue This reverts commit 27161f13e3c3 "f2fs: avoid race in between read xattr & write xattr". That introduced a deadlock case: Thread #1: [122554.641906][ T92] f2fs_getxattr+0xd4/0x5fc -> waiting for f2fs_down_read(&F2FS_I(inode)->i_xattr_sem); [122554.641927][ T92] __f2fs_get_acl+0x50/0x284 [122554.641948][ T92] f2fs_init_acl+0x84/0x54c [122554.641969][ T92] f2fs_init_inode_metadata+0x460/0x5f0 [122554.641990][ T92] f2fs_add_inline_entry+0x11c/0x350 -> Locked dir->inode_page by f2fs_get_node_page() [122554.642009][ T92] f2fs_do_add_link+0x100/0x1e4 [122554.642025][ T92] f2fs_create+0xf4/0x22c [122554.642047][ T92] vfs_create+0x130/0x1f4 Thread #2: [123996.386358][ T92] __get_node_page+0x8c/0x504 -> waiting for dir->inode_page lock [123996.386383][ T92] read_all_xattrs+0x11c/0x1f4 [123996.386405][ T92] __f2fs_setxattr+0xcc/0x528 [123996.386424][ T92] f2fs_setxattr+0x158/0x1f4 -> f2fs_down_write(&F2FS_I(inode)->i_xattr_sem); [123996.386443][ T92] __f2fs_set_acl+0x328/0x430 [123996.386618][ T92] f2fs_set_acl+0x38/0x50 [123996.386642][ T92] posix_acl_chmod+0xc8/0x1c8 [123996.386669][ T92] f2fs_setattr+0x5e0/0x6bc [123996.386689][ T92] notify_change+0x4d8/0x580 [123996.386717][ T92] chmod_common+0xd8/0x184 [123996.386748][ T92] do_fchmodat+0x60/0x124 [123996.386766][ T92] __arm64_sys_fchmodat+0x28/0x3c Let's take a look at the original issue back. Thread A: Thread B: -f2fs_getxattr -lookup_all_xattrs -xnid = F2FS_I(inode)->i_xattr_nid; -f2fs_setxattr -__f2fs_setxattr -write_all_xattrs -truncate_xattr_node ... ... -write_checkpoint ... ... -alloc_nid <- nid reuse -get_node_page -f2fs_bug_on <- nid != node_footer->nid I think we don't need to truncate xattr pages eagerly which introduces lots of data races without big benefits. Bug: 280545073 Cc: Link: https://lore.kernel.org/linux-f2fs-devel/20230613233940.3643362-1-jaegeuk@kernel.org/T/#u Signed-off-by: Jaegeuk Kim Change-Id: Ifdbaf7defa50b479d82d2c945aa9d48e2e2317ed --- fs/f2fs/f2fs.h | 1 - fs/f2fs/super.c | 1 - fs/f2fs/xattr.c | 31 ++++++++----------------------- 3 files changed, 8 insertions(+), 25 deletions(-) diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index 911bea200217..deb7f7eb1f93 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -837,7 +837,6 @@ struct f2fs_inode_info { /* avoid racing between foreground op and gc */ struct f2fs_rwsem i_gc_rwsem[2]; - struct f2fs_rwsem i_xattr_sem; /* avoid racing between reading and changing EAs */ int i_extra_isize; /* size of extra space located in i_addr */ kprojid_t i_projid; /* id for project quota */ diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index fcd22e2dc17d..17b4f1ecabf7 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -1396,7 +1396,6 @@ static struct inode *f2fs_alloc_inode(struct super_block *sb) INIT_LIST_HEAD(&fi->gdirty_list); init_f2fs_rwsem(&fi->i_gc_rwsem[READ]); init_f2fs_rwsem(&fi->i_gc_rwsem[WRITE]); - init_f2fs_rwsem(&fi->i_xattr_sem); /* Will be used by directory only */ fi->i_dir_level = F2FS_SB(sb)->dir_level; diff --git a/fs/f2fs/xattr.c b/fs/f2fs/xattr.c index dc2e8637189e..46b7f0a4c269 100644 --- a/fs/f2fs/xattr.c +++ b/fs/f2fs/xattr.c @@ -432,7 +432,7 @@ static inline int write_all_xattrs(struct inode *inode, __u32 hsize, { struct f2fs_sb_info *sbi = F2FS_I_SB(inode); size_t inline_size = inline_xattr_size(inode); - struct page *in_page = NULL; + struct page *in_page = ipage; void *xattr_addr; void *inline_addr = NULL; struct page *xpage; @@ -445,29 +445,19 @@ static inline int write_all_xattrs(struct inode *inode, __u32 hsize, /* write to inline xattr */ if (inline_size) { - if (ipage) { - inline_addr = inline_xattr_addr(inode, ipage); - } else { + if (!in_page) { in_page = f2fs_get_node_page(sbi, inode->i_ino); if (IS_ERR(in_page)) { f2fs_alloc_nid_failed(sbi, new_nid); return PTR_ERR(in_page); } - inline_addr = inline_xattr_addr(inode, in_page); } + inline_addr = inline_xattr_addr(inode, in_page); - f2fs_wait_on_page_writeback(ipage ? ipage : in_page, - NODE, true, true); - /* no need to use xattr node block */ + f2fs_wait_on_page_writeback(in_page, NODE, true, true); if (hsize <= inline_size) { - err = f2fs_truncate_xattr_node(inode); - f2fs_alloc_nid_failed(sbi, new_nid); - if (err) { - f2fs_put_page(in_page, 1); - return err; - } memcpy(inline_addr, txattr_addr, inline_size); - set_page_dirty(ipage ? ipage : in_page); + set_page_dirty(in_page); goto in_page_out; } } @@ -501,12 +491,13 @@ static inline int write_all_xattrs(struct inode *inode, __u32 hsize, memcpy(xattr_addr, txattr_addr + inline_size, VALID_XATTR_BLOCK_SIZE); if (inline_size) - set_page_dirty(ipage ? ipage : in_page); + set_page_dirty(in_page); set_page_dirty(xpage); f2fs_put_page(xpage, 1); in_page_out: - f2fs_put_page(in_page, 1); + if (in_page != ipage) + f2fs_put_page(in_page, 1); return err; } @@ -527,10 +518,8 @@ int f2fs_getxattr(struct inode *inode, int index, const char *name, if (len > F2FS_NAME_LEN) return -ERANGE; - f2fs_down_read(&F2FS_I(inode)->i_xattr_sem); error = lookup_all_xattrs(inode, ipage, index, len, name, &entry, &base_addr, &base_size, &is_inline); - f2fs_up_read(&F2FS_I(inode)->i_xattr_sem); if (error) return error; @@ -564,9 +553,7 @@ ssize_t f2fs_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size) int error; size_t rest = buffer_size; - f2fs_down_read(&F2FS_I(inode)->i_xattr_sem); error = read_all_xattrs(inode, NULL, &base_addr); - f2fs_up_read(&F2FS_I(inode)->i_xattr_sem); if (error) return error; @@ -794,9 +781,7 @@ int f2fs_setxattr(struct inode *inode, int index, const char *name, f2fs_balance_fs(sbi, true); f2fs_lock_op(sbi); - f2fs_down_write(&F2FS_I(inode)->i_xattr_sem); err = __f2fs_setxattr(inode, index, name, value, size, ipage, flags); - f2fs_up_write(&F2FS_I(inode)->i_xattr_sem); f2fs_unlock_op(sbi); f2fs_update_time(sbi, REQ_TIME); From fa9645687ea537ad8e29287f3ef08396bc4baaba Mon Sep 17 00:00:00 2001 From: Yifan Hong Date: Thu, 15 Jun 2023 14:10:14 -0700 Subject: [PATCH 015/114] FROMLIST: kheaders: dereferences the source tree When the kernel is built inside a sandbox container, a forest of symlinks to the source files may be created in the container. In this case, the generated kheaders.tar.xz should follow these symlinks to access the source files, instead of packing the symlinks themselves. Test: manual (add kheaders_data.tar.xz to the output, then examine the contents) Bug: 276339429 Fixes: b0acbba3f489 ("Revert "Revert "Revert "FROMLIST: kheaders: Follow symlinks to source files."""") Link: https://lore.kernel.org/lkml/20230420010029.2702543-1-elsk@google.com/ Signed-off-by: Yifan Hong (cherry picked from https://android-review.googlesource.com/q/commit:28fa7afc424f3dc53358c0e9b080433d78f0cd54) Merged-In: Ie4db22dfa13d05fdccb3ad8f4fae2fe3fead994e Change-Id: Ie4db22dfa13d05fdccb3ad8f4fae2fe3fead994e --- kernel/gen_kheaders.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/gen_kheaders.sh b/kernel/gen_kheaders.sh index 473036b43c83..bb8945ca53cd 100755 --- a/kernel/gen_kheaders.sh +++ b/kernel/gen_kheaders.sh @@ -66,7 +66,7 @@ if [ "$building_out_of_srctree" ]; then cd $srctree for f in $dir_list do find "$f" -name "*.h"; - done | cpio --quiet -pd $cpio_dir + done | cpio --quiet -L -pd $cpio_dir ) fi @@ -74,7 +74,7 @@ fi # of tree builds having stale headers in srctree. Just silence CPIO for now. for f in $dir_list; do find "$f" -name "*.h"; -done | cpio --quiet -pdu $cpio_dir >/dev/null 2>&1 +done | cpio --quiet -L -pdu $cpio_dir >/dev/null 2>&1 # Remove comments except SDPX lines find $cpio_dir -type f -print0 | From 50c99c83e29b202ddd8fb27935684008e8d92172 Mon Sep 17 00:00:00 2001 From: Wesley Cheng Date: Mon, 22 May 2023 18:42:07 -0700 Subject: [PATCH 016/114] FROMGIT: usb: host: xhci: Do not re-initialize the XHCI HC if being removed During XHCI resume, if there was a host controller error detected the routine will attempt to re-initialize the XHCI HC, so that it can return back to an operational state. If the XHCI host controller is being removed, this sequence would be already handled within the XHCI halt path, leading to a duplicate set of reg ops/calls. In addition, since the XHCI bus is being removed, the overhead added in restarting the HCD is unnecessary. Check for the XHC state before setting the reinit_xhc parameter, which is responsible for triggering the restart. Signed-off-by: Wesley Cheng Message-ID: <20230531222719.14143-2-quic_wcheng@quicinc.com> Signed-off-by: Greg Kroah-Hartman Bug: 285037166 (cherry picked from commit fb2ce17874cf3c3c183e5fd75144ffbe2313bf31 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing) Change-Id: Iaaf20e855930b67b356e34286991411f74af2d60 Signed-off-by: Wesley Cheng --- drivers/usb/host/xhci.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 37150680cc41..9304e0d42982 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -1194,7 +1194,8 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated) temp = readl(&xhci->op_regs->status); /* re-initialize the HC on Restore Error, or Host Controller Error */ - if (temp & (STS_SRE | STS_HCE)) { + if ((temp & (STS_SRE | STS_HCE)) && + !(xhci->xhc_state & XHCI_STATE_REMOVING)) { reinit_xhc = true; if (!xhci->broken_suspend) xhci_warn(xhci, "xHC error in resume, USBSTS 0x%x, Reinit\n", temp); From a39af6210e9149ad436fb9f78de922346cb85852 Mon Sep 17 00:00:00 2001 From: Wesley Cheng Date: Wed, 31 May 2023 15:27:19 -0700 Subject: [PATCH 017/114] FROMGIT: usb: host: xhci-plat: Set XHCI_STATE_REMOVING before resuming XHCI HC There are situations during the xhci_resume() sequence, which allows for re-initializing of the XHCI HC. However, in case the HCD is being removed, these operations may not be needed. Set the removal state before issuing the runtime PM get on the XHCI device, so that the XHCI resume routine will know when to bypass the re-init logic. Signed-off-by: Wesley Cheng Message-ID: <20230531222719.14143-3-quic_wcheng@quicinc.com> Signed-off-by: Greg Kroah-Hartman Bug: 285037166 (cherry picked from commit 18af4b5c97915a6daef9de28a30ae1d3786bc2ac https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing) Change-Id: I59ca78320bb2705c8aed8a9823de5a955ff97b0c Signed-off-by: Wesley Cheng --- drivers/usb/host/xhci-plat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c index 2ef716fc3212..a68493b6f466 100644 --- a/drivers/usb/host/xhci-plat.c +++ b/drivers/usb/host/xhci-plat.c @@ -436,8 +436,8 @@ static int xhci_plat_remove(struct platform_device *dev) struct clk *reg_clk = xhci->reg_clk; struct usb_hcd *shared_hcd = xhci->shared_hcd; - pm_runtime_get_sync(&dev->dev); xhci->xhc_state |= XHCI_STATE_REMOVING; + pm_runtime_get_sync(&dev->dev); if (shared_hcd) { usb_remove_hcd(shared_hcd); From 054ab3ab0084ce25c9fc09e7fb0dc04ba477db4a Mon Sep 17 00:00:00 2001 From: Ulises Mendez Martinez Date: Fri, 23 Jun 2023 10:03:10 +0000 Subject: [PATCH 018/114] ANDROID: db845c: Fix build when using --kgdb * CONFIG_WATCHDOG is disabled when compiling with --kgdb option, hence the list of modules produced is adjusted conditionally. Bug: 270320056 Change-Id: I0eafb118836e6a31dc3b0392ab7d60b5597b9367 Signed-off-by: Ulises Mendez Martinez --- BUILD.bazel | 409 ++++++++++++++++++++++++++++------------------------ 1 file changed, 221 insertions(+), 188 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index 6e647f8b58e4..440ac7e610b2 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -115,8 +115,199 @@ define_common_kernels(target_configs = { }, }) +_DB845C_MODULE_OUTS = [ + # keep sorted + "crypto/michael_mic.ko", + "drivers/base/regmap/regmap-sdw.ko", + "drivers/base/regmap/regmap-slimbus.ko", + "drivers/bus/mhi/host/mhi.ko", + "drivers/clk/qcom/clk-qcom.ko", + "drivers/clk/qcom/clk-rpmh.ko", + "drivers/clk/qcom/clk-spmi-pmic-div.ko", + "drivers/clk/qcom/dispcc-sdm845.ko", + "drivers/clk/qcom/dispcc-sm8250.ko", + "drivers/clk/qcom/gcc-sdm845.ko", + "drivers/clk/qcom/gcc-sm8250.ko", + "drivers/clk/qcom/gcc-sm8450.ko", + "drivers/clk/qcom/gpucc-sdm845.ko", + "drivers/clk/qcom/gpucc-sm8250.ko", + "drivers/clk/qcom/lpass-gfm-sm8250.ko", + "drivers/clk/qcom/videocc-sdm845.ko", + "drivers/clk/qcom/videocc-sm8250.ko", + "drivers/cpufreq/qcom-cpufreq-hw.ko", + "drivers/dma-buf/heaps/system_heap.ko", + "drivers/dma/qcom/bam_dma.ko", + "drivers/dma/qcom/gpi.ko", + "drivers/extcon/extcon-usb-gpio.ko", + "drivers/firmware/qcom-scm.ko", + "drivers/gpio/gpio-wcd934x.ko", + "drivers/gpu/drm/bridge/display-connector.ko", + "drivers/gpu/drm/bridge/lontium-lt9611.ko", + "drivers/gpu/drm/bridge/lontium-lt9611uxc.ko", + "drivers/gpu/drm/display/drm_display_helper.ko", + "drivers/gpu/drm/display/drm_dp_aux_bus.ko", + "drivers/gpu/drm/msm/msm.ko", + "drivers/gpu/drm/scheduler/gpu-sched.ko", + "drivers/hwspinlock/qcom_hwspinlock.ko", + "drivers/i2c/busses/i2c-designware-core.ko", + "drivers/i2c/busses/i2c-designware-platform.ko", + "drivers/i2c/busses/i2c-qcom-geni.ko", + "drivers/i2c/busses/i2c-qup.ko", + "drivers/i2c/busses/i2c-rk3x.ko", + "drivers/i2c/i2c-dev.ko", + "drivers/i2c/i2c-mux.ko", + "drivers/i2c/muxes/i2c-mux-pca954x.ko", + "drivers/iio/adc/qcom-spmi-adc5.ko", + "drivers/iio/adc/qcom-vadc-common.ko", + "drivers/input/misc/pm8941-pwrkey.ko", + "drivers/interconnect/qcom/icc-bcm-voter.ko", + "drivers/interconnect/qcom/icc-osm-l3.ko", + "drivers/interconnect/qcom/icc-rpmh.ko", + "drivers/interconnect/qcom/qnoc-sdm845.ko", + "drivers/interconnect/qcom/qnoc-sm8250.ko", + "drivers/interconnect/qcom/qnoc-sm8450.ko", + "drivers/iommu/arm/arm-smmu/arm_smmu.ko", + "drivers/irqchip/qcom-pdc.ko", + "drivers/leds/rgb/leds-qcom-lpg.ko", + "drivers/mailbox/qcom-apcs-ipc-mailbox.ko", + "drivers/mailbox/qcom-ipcc.ko", + "drivers/media/platform/qcom/venus/venus-core.ko", + "drivers/media/platform/qcom/venus/venus-dec.ko", + "drivers/media/platform/qcom/venus/venus-enc.ko", + "drivers/mfd/qcom-spmi-pmic.ko", + "drivers/mfd/wcd934x.ko", + "drivers/misc/fastrpc.ko", + "drivers/mmc/host/cqhci.ko", + "drivers/mmc/host/sdhci-msm.ko", + "drivers/net/can/spi/mcp251xfd/mcp251xfd.ko", + "drivers/net/wireless/ath/ath.ko", + "drivers/net/wireless/ath/ath10k/ath10k_core.ko", + "drivers/net/wireless/ath/ath10k/ath10k_pci.ko", + "drivers/net/wireless/ath/ath10k/ath10k_snoc.ko", + "drivers/net/wireless/ath/ath11k/ath11k.ko", + "drivers/net/wireless/ath/ath11k/ath11k_ahb.ko", + "drivers/net/wireless/ath/ath11k/ath11k_pci.ko", + "drivers/nvmem/nvmem_qfprom.ko", + "drivers/phy/qualcomm/phy-qcom-qmp-combo.ko", + "drivers/phy/qualcomm/phy-qcom-qmp-pcie.ko", + "drivers/phy/qualcomm/phy-qcom-qmp-pcie-msm8996.ko", + "drivers/phy/qualcomm/phy-qcom-qmp-ufs.ko", + "drivers/phy/qualcomm/phy-qcom-qmp-usb.ko", + "drivers/phy/qualcomm/phy-qcom-qusb2.ko", + "drivers/phy/qualcomm/phy-qcom-snps-femto-v2.ko", + "drivers/phy/qualcomm/phy-qcom-usb-hs.ko", + "drivers/pinctrl/qcom/pinctrl-lpass-lpi.ko", + "drivers/pinctrl/qcom/pinctrl-msm.ko", + "drivers/pinctrl/qcom/pinctrl-sdm845.ko", + "drivers/pinctrl/qcom/pinctrl-sm8250.ko", + "drivers/pinctrl/qcom/pinctrl-sm8250-lpass-lpi.ko", + "drivers/pinctrl/qcom/pinctrl-sm8450.ko", + "drivers/pinctrl/qcom/pinctrl-spmi-gpio.ko", + "drivers/pinctrl/qcom/pinctrl-spmi-mpp.ko", + "drivers/power/reset/qcom-pon.ko", + "drivers/power/reset/reboot-mode.ko", + "drivers/power/reset/syscon-reboot-mode.ko", + "drivers/regulator/gpio-regulator.ko", + "drivers/regulator/qcom-rpmh-regulator.ko", + "drivers/regulator/qcom_spmi-regulator.ko", + "drivers/regulator/qcom_usb_vbus-regulator.ko", + "drivers/remoteproc/qcom_common.ko", + "drivers/remoteproc/qcom_pil_info.ko", + "drivers/remoteproc/qcom_q6v5.ko", + "drivers/remoteproc/qcom_q6v5_adsp.ko", + "drivers/remoteproc/qcom_q6v5_mss.ko", + "drivers/remoteproc/qcom_q6v5_pas.ko", + "drivers/remoteproc/qcom_q6v5_wcss.ko", + "drivers/remoteproc/qcom_sysmon.ko", + "drivers/reset/reset-qcom-aoss.ko", + "drivers/reset/reset-qcom-pdc.ko", + "drivers/rpmsg/qcom_glink.ko", + "drivers/rpmsg/qcom_glink_rpm.ko", + "drivers/rpmsg/qcom_glink_smem.ko", + "drivers/rpmsg/qcom_smd.ko", + "drivers/rpmsg/rpmsg_ns.ko", + "drivers/rtc/rtc-pm8xxx.ko", + "drivers/slimbus/slim-qcom-ngd-ctrl.ko", + "drivers/slimbus/slimbus.ko", + "drivers/soc/qcom/apr.ko", + "drivers/soc/qcom/cmd-db.ko", + "drivers/soc/qcom/cpr.ko", + "drivers/soc/qcom/llcc-qcom.ko", + "drivers/soc/qcom/mdt_loader.ko", + "drivers/soc/qcom/pdr_interface.ko", + "drivers/soc/qcom/qcom_aoss.ko", + "drivers/soc/qcom/qcom_rpmh.ko", + "drivers/soc/qcom/qmi_helpers.ko", + "drivers/soc/qcom/rmtfs_mem.ko", + "drivers/soc/qcom/rpmhpd.ko", + "drivers/soc/qcom/smem.ko", + "drivers/soc/qcom/smp2p.ko", + "drivers/soc/qcom/smsm.ko", + "drivers/soc/qcom/socinfo.ko", + "drivers/soc/qcom/spm.ko", + "drivers/soundwire/soundwire-bus.ko", + "drivers/soundwire/soundwire-qcom.ko", + "drivers/spi/spi-geni-qcom.ko", + "drivers/spi/spi-pl022.ko", + "drivers/spi/spi-qcom-qspi.ko", + "drivers/spi/spi-qup.ko", + "drivers/spmi/spmi-pmic-arb.ko", + "drivers/thermal/qcom/lmh.ko", + "drivers/thermal/qcom/qcom-spmi-adc-tm5.ko", + "drivers/thermal/qcom/qcom-spmi-temp-alarm.ko", + "drivers/thermal/qcom/qcom_tsens.ko", + "drivers/tty/serial/msm_serial.ko", + "drivers/ufs/host/ufs_qcom.ko", + "drivers/usb/common/ulpi.ko", + "drivers/usb/host/ohci-hcd.ko", + "drivers/usb/host/ohci-pci.ko", + "drivers/usb/host/ohci-platform.ko", + "drivers/usb/typec/qcom-pmic-typec.ko", + "net/mac80211/mac80211.ko", + "net/qrtr/qrtr.ko", + "net/qrtr/qrtr-mhi.ko", + "net/qrtr/qrtr-smd.ko", + "net/qrtr/qrtr-tun.ko", + "net/wireless/cfg80211.ko", + "sound/soc/codecs/snd-soc-dmic.ko", + "sound/soc/codecs/snd-soc-hdmi-codec.ko", + "sound/soc/codecs/snd-soc-lpass-macro-common.ko", + "sound/soc/codecs/snd-soc-lpass-va-macro.ko", + "sound/soc/codecs/snd-soc-lpass-wsa-macro.ko", + "sound/soc/codecs/snd-soc-max98927.ko", + "sound/soc/codecs/snd-soc-rl6231.ko", + "sound/soc/codecs/snd-soc-rt5663.ko", + "sound/soc/codecs/snd-soc-wcd-mbhc.ko", + "sound/soc/codecs/snd-soc-wcd9335.ko", + "sound/soc/codecs/snd-soc-wcd934x.ko", + "sound/soc/codecs/snd-soc-wsa881x.ko", + "sound/soc/qcom/qdsp6/q6adm.ko", + "sound/soc/qcom/qdsp6/q6afe.ko", + "sound/soc/qcom/qdsp6/q6afe-clocks.ko", + "sound/soc/qcom/qdsp6/q6afe-dai.ko", + "sound/soc/qcom/qdsp6/q6apm-dai.ko", + "sound/soc/qcom/qdsp6/q6apm-lpass-dais.ko", + "sound/soc/qcom/qdsp6/q6asm.ko", + "sound/soc/qcom/qdsp6/q6asm-dai.ko", + "sound/soc/qcom/qdsp6/q6core.ko", + "sound/soc/qcom/qdsp6/q6prm.ko", + "sound/soc/qcom/qdsp6/q6prm-clocks.ko", + "sound/soc/qcom/qdsp6/q6routing.ko", + "sound/soc/qcom/qdsp6/snd-q6apm.ko", + "sound/soc/qcom/qdsp6/snd-q6dsp-common.ko", + "sound/soc/qcom/snd-soc-qcom-common.ko", + "sound/soc/qcom/snd-soc-qcom-sdw.ko", + "sound/soc/qcom/snd-soc-sdm845.ko", + "sound/soc/qcom/snd-soc-sm8250.ko", +] + +_DB845C_WATCHDOG_MODULE_OUTS = [ + "drivers/watchdog/pm8916_wdt.ko", + "drivers/watchdog/qcom-wdt.ko", +] + kernel_build( - name = "db845c", + name = "db845c_no_kgdb", outs = [ "arch/arm64/boot/dts/qcom/qrb5165-rb5.dtb", "arch/arm64/boot/dts/qcom/sdm845-db845c.dtb", @@ -133,196 +324,38 @@ kernel_build( "qcom/qrb5165-rb5.dtb", "qcom/sm8450-qrd.dtb", ], - module_outs = [ - # keep sorted - "crypto/michael_mic.ko", - "drivers/base/regmap/regmap-sdw.ko", - "drivers/base/regmap/regmap-slimbus.ko", - "drivers/bus/mhi/host/mhi.ko", - "drivers/clk/qcom/clk-qcom.ko", - "drivers/clk/qcom/clk-rpmh.ko", - "drivers/clk/qcom/clk-spmi-pmic-div.ko", - "drivers/clk/qcom/dispcc-sdm845.ko", - "drivers/clk/qcom/dispcc-sm8250.ko", - "drivers/clk/qcom/gcc-sdm845.ko", - "drivers/clk/qcom/gcc-sm8250.ko", - "drivers/clk/qcom/gcc-sm8450.ko", - "drivers/clk/qcom/gpucc-sdm845.ko", - "drivers/clk/qcom/gpucc-sm8250.ko", - "drivers/clk/qcom/lpass-gfm-sm8250.ko", - "drivers/clk/qcom/videocc-sdm845.ko", - "drivers/clk/qcom/videocc-sm8250.ko", - "drivers/cpufreq/qcom-cpufreq-hw.ko", - "drivers/dma-buf/heaps/system_heap.ko", - "drivers/dma/qcom/bam_dma.ko", - "drivers/dma/qcom/gpi.ko", - "drivers/extcon/extcon-usb-gpio.ko", - "drivers/firmware/qcom-scm.ko", - "drivers/gpio/gpio-wcd934x.ko", - "drivers/gpu/drm/bridge/display-connector.ko", - "drivers/gpu/drm/bridge/lontium-lt9611.ko", - "drivers/gpu/drm/bridge/lontium-lt9611uxc.ko", - "drivers/gpu/drm/display/drm_display_helper.ko", - "drivers/gpu/drm/display/drm_dp_aux_bus.ko", - "drivers/gpu/drm/msm/msm.ko", - "drivers/gpu/drm/scheduler/gpu-sched.ko", - "drivers/hwspinlock/qcom_hwspinlock.ko", - "drivers/i2c/busses/i2c-designware-core.ko", - "drivers/i2c/busses/i2c-designware-platform.ko", - "drivers/i2c/busses/i2c-qcom-geni.ko", - "drivers/i2c/busses/i2c-qup.ko", - "drivers/i2c/busses/i2c-rk3x.ko", - "drivers/i2c/i2c-dev.ko", - "drivers/i2c/i2c-mux.ko", - "drivers/i2c/muxes/i2c-mux-pca954x.ko", - "drivers/iio/adc/qcom-spmi-adc5.ko", - "drivers/iio/adc/qcom-vadc-common.ko", - "drivers/input/misc/pm8941-pwrkey.ko", - "drivers/interconnect/qcom/icc-bcm-voter.ko", - "drivers/interconnect/qcom/icc-osm-l3.ko", - "drivers/interconnect/qcom/icc-rpmh.ko", - "drivers/interconnect/qcom/qnoc-sdm845.ko", - "drivers/interconnect/qcom/qnoc-sm8250.ko", - "drivers/interconnect/qcom/qnoc-sm8450.ko", - "drivers/iommu/arm/arm-smmu/arm_smmu.ko", - "drivers/irqchip/qcom-pdc.ko", - "drivers/leds/rgb/leds-qcom-lpg.ko", - "drivers/mailbox/qcom-apcs-ipc-mailbox.ko", - "drivers/mailbox/qcom-ipcc.ko", - "drivers/media/platform/qcom/venus/venus-core.ko", - "drivers/media/platform/qcom/venus/venus-dec.ko", - "drivers/media/platform/qcom/venus/venus-enc.ko", - "drivers/mfd/qcom-spmi-pmic.ko", - "drivers/mfd/wcd934x.ko", - "drivers/misc/fastrpc.ko", - "drivers/mmc/host/cqhci.ko", - "drivers/mmc/host/sdhci-msm.ko", - "drivers/net/can/spi/mcp251xfd/mcp251xfd.ko", - "drivers/net/wireless/ath/ath.ko", - "drivers/net/wireless/ath/ath10k/ath10k_core.ko", - "drivers/net/wireless/ath/ath10k/ath10k_pci.ko", - "drivers/net/wireless/ath/ath10k/ath10k_snoc.ko", - "drivers/net/wireless/ath/ath11k/ath11k.ko", - "drivers/net/wireless/ath/ath11k/ath11k_ahb.ko", - "drivers/net/wireless/ath/ath11k/ath11k_pci.ko", - "drivers/nvmem/nvmem_qfprom.ko", - "drivers/phy/qualcomm/phy-qcom-qmp-combo.ko", - "drivers/phy/qualcomm/phy-qcom-qmp-pcie.ko", - "drivers/phy/qualcomm/phy-qcom-qmp-pcie-msm8996.ko", - "drivers/phy/qualcomm/phy-qcom-qmp-ufs.ko", - "drivers/phy/qualcomm/phy-qcom-qmp-usb.ko", - "drivers/phy/qualcomm/phy-qcom-qusb2.ko", - "drivers/phy/qualcomm/phy-qcom-snps-femto-v2.ko", - "drivers/phy/qualcomm/phy-qcom-usb-hs.ko", - "drivers/pinctrl/qcom/pinctrl-lpass-lpi.ko", - "drivers/pinctrl/qcom/pinctrl-msm.ko", - "drivers/pinctrl/qcom/pinctrl-sdm845.ko", - "drivers/pinctrl/qcom/pinctrl-sm8250.ko", - "drivers/pinctrl/qcom/pinctrl-sm8250-lpass-lpi.ko", - "drivers/pinctrl/qcom/pinctrl-sm8450.ko", - "drivers/pinctrl/qcom/pinctrl-spmi-gpio.ko", - "drivers/pinctrl/qcom/pinctrl-spmi-mpp.ko", - "drivers/power/reset/qcom-pon.ko", - "drivers/power/reset/reboot-mode.ko", - "drivers/power/reset/syscon-reboot-mode.ko", - "drivers/regulator/gpio-regulator.ko", - "drivers/regulator/qcom-rpmh-regulator.ko", - "drivers/regulator/qcom_spmi-regulator.ko", - "drivers/regulator/qcom_usb_vbus-regulator.ko", - "drivers/remoteproc/qcom_common.ko", - "drivers/remoteproc/qcom_pil_info.ko", - "drivers/remoteproc/qcom_q6v5.ko", - "drivers/remoteproc/qcom_q6v5_adsp.ko", - "drivers/remoteproc/qcom_q6v5_mss.ko", - "drivers/remoteproc/qcom_q6v5_pas.ko", - "drivers/remoteproc/qcom_q6v5_wcss.ko", - "drivers/remoteproc/qcom_sysmon.ko", - "drivers/reset/reset-qcom-aoss.ko", - "drivers/reset/reset-qcom-pdc.ko", - "drivers/rpmsg/qcom_glink.ko", - "drivers/rpmsg/qcom_glink_rpm.ko", - "drivers/rpmsg/qcom_glink_smem.ko", - "drivers/rpmsg/qcom_smd.ko", - "drivers/rpmsg/rpmsg_ns.ko", - "drivers/rtc/rtc-pm8xxx.ko", - "drivers/slimbus/slim-qcom-ngd-ctrl.ko", - "drivers/slimbus/slimbus.ko", - "drivers/soc/qcom/apr.ko", - "drivers/soc/qcom/cmd-db.ko", - "drivers/soc/qcom/cpr.ko", - "drivers/soc/qcom/llcc-qcom.ko", - "drivers/soc/qcom/mdt_loader.ko", - "drivers/soc/qcom/pdr_interface.ko", - "drivers/soc/qcom/qcom_aoss.ko", - "drivers/soc/qcom/qcom_rpmh.ko", - "drivers/soc/qcom/qmi_helpers.ko", - "drivers/soc/qcom/rmtfs_mem.ko", - "drivers/soc/qcom/rpmhpd.ko", - "drivers/soc/qcom/smem.ko", - "drivers/soc/qcom/smp2p.ko", - "drivers/soc/qcom/smsm.ko", - "drivers/soc/qcom/socinfo.ko", - "drivers/soc/qcom/spm.ko", - "drivers/soundwire/soundwire-bus.ko", - "drivers/soundwire/soundwire-qcom.ko", - "drivers/spi/spi-geni-qcom.ko", - "drivers/spi/spi-pl022.ko", - "drivers/spi/spi-qcom-qspi.ko", - "drivers/spi/spi-qup.ko", - "drivers/spmi/spmi-pmic-arb.ko", - "drivers/thermal/qcom/lmh.ko", - "drivers/thermal/qcom/qcom-spmi-adc-tm5.ko", - "drivers/thermal/qcom/qcom-spmi-temp-alarm.ko", - "drivers/thermal/qcom/qcom_tsens.ko", - "drivers/tty/serial/msm_serial.ko", - "drivers/ufs/host/ufs_qcom.ko", - "drivers/usb/common/ulpi.ko", - "drivers/usb/host/ohci-hcd.ko", - "drivers/usb/host/ohci-pci.ko", - "drivers/usb/host/ohci-platform.ko", - "drivers/usb/typec/qcom-pmic-typec.ko", - "drivers/watchdog/pm8916_wdt.ko", - "drivers/watchdog/qcom-wdt.ko", - "net/mac80211/mac80211.ko", - "net/qrtr/qrtr.ko", - "net/qrtr/qrtr-mhi.ko", - "net/qrtr/qrtr-smd.ko", - "net/qrtr/qrtr-tun.ko", - "net/wireless/cfg80211.ko", - "sound/soc/codecs/snd-soc-dmic.ko", - "sound/soc/codecs/snd-soc-hdmi-codec.ko", - "sound/soc/codecs/snd-soc-lpass-macro-common.ko", - "sound/soc/codecs/snd-soc-lpass-va-macro.ko", - "sound/soc/codecs/snd-soc-lpass-wsa-macro.ko", - "sound/soc/codecs/snd-soc-max98927.ko", - "sound/soc/codecs/snd-soc-rl6231.ko", - "sound/soc/codecs/snd-soc-rt5663.ko", - "sound/soc/codecs/snd-soc-wcd-mbhc.ko", - "sound/soc/codecs/snd-soc-wcd9335.ko", - "sound/soc/codecs/snd-soc-wcd934x.ko", - "sound/soc/codecs/snd-soc-wsa881x.ko", - "sound/soc/qcom/qdsp6/q6adm.ko", - "sound/soc/qcom/qdsp6/q6afe.ko", - "sound/soc/qcom/qdsp6/q6afe-clocks.ko", - "sound/soc/qcom/qdsp6/q6afe-dai.ko", - "sound/soc/qcom/qdsp6/q6apm-dai.ko", - "sound/soc/qcom/qdsp6/q6apm-lpass-dais.ko", - "sound/soc/qcom/qdsp6/q6asm.ko", - "sound/soc/qcom/qdsp6/q6asm-dai.ko", - "sound/soc/qcom/qdsp6/q6core.ko", - "sound/soc/qcom/qdsp6/q6prm.ko", - "sound/soc/qcom/qdsp6/q6prm-clocks.ko", - "sound/soc/qcom/qdsp6/q6routing.ko", - "sound/soc/qcom/qdsp6/snd-q6apm.ko", - "sound/soc/qcom/qdsp6/snd-q6dsp-common.ko", - "sound/soc/qcom/snd-soc-qcom-common.ko", - "sound/soc/qcom/snd-soc-qcom-sdw.ko", - "sound/soc/qcom/snd-soc-sdm845.ko", - "sound/soc/qcom/snd-soc-sm8250.ko", - ], + module_outs = _DB845C_MODULE_OUTS + _DB845C_WATCHDOG_MODULE_OUTS, strip_modules = True, ) +kernel_build( + name = "db845c_with_kgdb", + outs = [ + "arch/arm64/boot/dts/qcom/qrb5165-rb5.dtb", + "arch/arm64/boot/dts/qcom/sdm845-db845c.dtb", + "arch/arm64/boot/dts/qcom/sm8450-qrd.dtb", + ], + # Enable mixed build. + base_kernel = ":kernel_aarch64", + build_config = "build.config.db845c", + make_goals = [ + "modules", + "qcom/sdm845-db845c.dtb", + "qcom/qrb5165-rb5.dtb", + "qcom/sm8450-qrd.dtb", + ], + module_outs = _DB845C_MODULE_OUTS, + strip_modules = True, +) + +alias( + name = "db845c", + actual = select({ + "//build/kernel/kleaf:kgdb_is_true": "db845c_with_kgdb", + "//conditions:default": "db845c_no_kgdb", + }), +) + kernel_abi( name = "db845c_abi", kernel_build = ":db845c", From 1499ddcb78f5971061d4ce227f29e8ffcf2f7ea6 Mon Sep 17 00:00:00 2001 From: Lee Jones Date: Thu, 8 Jun 2023 08:29:03 +0100 Subject: [PATCH 019/114] UPSTREAM: net/sched: cls_u32: Fix reference counter leak leading to overflow [ Upstream commit 04c55383fa5689357bcdd2c8036725a55ed632bc ] In the event of a failure in tcf_change_indev(), u32_set_parms() will immediately return without decrementing the recently incremented reference counter. If this happens enough times, the counter will rollover and the reference freed, leading to a double free which can be used to do 'bad things'. In order to prevent this, move the point of possible failure above the point where the reference counter is incremented. Also save any meaningful return values to be applied to the return data at the appropriate point in time. This issue was caught with KASAN. Bug: 273251569 Fixes: 705c7091262d ("net: sched: cls_u32: no need to call tcf_exts_change for newly allocated struct") Suggested-by: Eric Dumazet Signed-off-by: Lee Jones Reviewed-by: Eric Dumazet Acked-by: Jamal Hadi Salim Signed-off-by: David S. Miller Signed-off-by: Sasha Levin (cherry picked from commit 07f9cc229b44cbcee6385802d390091d915f38c3) Signed-off-by: Lee Jones Change-Id: I95524bfda9a08a40b3d54515e528419dba18dc55 --- net/sched/cls_u32.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index 34d25f7a0687..a3477537c102 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c @@ -716,13 +716,19 @@ static int u32_set_parms(struct net *net, struct tcf_proto *tp, struct nlattr *est, u32 flags, u32 fl_flags, struct netlink_ext_ack *extack) { - int err; + int err, ifindex = -1; err = tcf_exts_validate_ex(net, tp, tb, est, &n->exts, flags, fl_flags, extack); if (err < 0) return err; + if (tb[TCA_U32_INDEV]) { + ifindex = tcf_change_indev(net, tb[TCA_U32_INDEV], extack); + if (ifindex < 0) + return -EINVAL; + } + if (tb[TCA_U32_LINK]) { u32 handle = nla_get_u32(tb[TCA_U32_LINK]); struct tc_u_hnode *ht_down = NULL, *ht_old; @@ -757,13 +763,9 @@ static int u32_set_parms(struct net *net, struct tcf_proto *tp, tcf_bind_filter(tp, &n->res, base); } - if (tb[TCA_U32_INDEV]) { - int ret; - ret = tcf_change_indev(net, tb[TCA_U32_INDEV], extack); - if (ret < 0) - return -EINVAL; - n->ifindex = ret; - } + if (ifindex >= 0) + n->ifindex = ifindex; + return 0; } From 51cb1e1cfd27ea991f9f8cfb309652809a5368f7 Mon Sep 17 00:00:00 2001 From: fengqi Date: Mon, 26 Jun 2023 19:13:44 +0800 Subject: [PATCH 020/114] ANDROID: GKI: update symbol list file for xiaomi INFO: ABI DIFFERENCES HAVE BEEN DETECTED! INFO: 1 function symbol(s) added 'struct device_node* of_find_all_nodes(struct device_node*)' Bug: 288843707 Change-Id: Ic3c372473220a6407052cb5d1136601633359fe6 Signed-off-by: fengqi --- android/abi_gki_aarch64.stg | 10 ++++++++++ android/abi_gki_aarch64_xiaomi | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index c817ff9a9caa..6f1a18d14617 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -358316,6 +358316,15 @@ elf_symbol { type_id: 0x91a3a43e full_name: "of_drm_get_panel_orientation" } +elf_symbol { + id: 0x33b9622b + name: "of_find_all_nodes" + is_defined: true + symbol_type: FUNCTION + crc: 0x65267db7 + type_id: 0x7bef1e3b + full_name: "of_find_all_nodes" +} elf_symbol { id: 0x985c43d8 name: "of_find_backlight_by_node" @@ -385303,6 +385312,7 @@ interface { symbol_id: 0xd37bdc53 symbol_id: 0x1d42003f symbol_id: 0xf3b2b115 + symbol_id: 0x33b9622b symbol_id: 0x985c43d8 symbol_id: 0xd5545a99 symbol_id: 0x9f89ff97 diff --git a/android/abi_gki_aarch64_xiaomi b/android/abi_gki_aarch64_xiaomi index 953deafcc133..492daebc8c65 100644 --- a/android/abi_gki_aarch64_xiaomi +++ b/android/abi_gki_aarch64_xiaomi @@ -268,3 +268,7 @@ #required by dispaly.ko mipi_dsi_dcs_set_display_off + +#required by debug_ext.ko + of_find_all_nodes + From 43d7226c5f912b4e89295ad1cea0d99c826d6902 Mon Sep 17 00:00:00 2001 From: Di Shen Date: Tue, 27 Jun 2023 10:03:41 +0800 Subject: [PATCH 021/114] ANDROID: add a symbol to unisoc symbol list To implement the devfreq cooling device registration by energy model, it should add devfreq_cooling_em_register to symbol list. 1 function symbol(s) added 'struct thermal_cooling_device* devfreq_cooling_em_register(struct devfreq*, struct devfreq_cooling_power*)' Bug: 288934529 Signed-off-by: Di Shen Change-Id: I168a5bf1130edd7e53f107deb5c606fc98a95953 --- android/abi_gki_aarch64.stg | 16 ++++++++++++++++ android/abi_gki_aarch64_unisoc | 3 +++ 2 files changed, 19 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 6f1a18d14617..d0df19de0403 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -293293,6 +293293,12 @@ function { parameter_id: 0x3382a638 parameter_id: 0x38d23361 } +function { + id: 0x4132c986 + return_type_id: 0x04ca9246 + parameter_id: 0x276a1779 + parameter_id: 0x162ee618 +} function { id: 0x416927bc return_type_id: 0x00c83ba6 @@ -338579,6 +338585,15 @@ elf_symbol { type_id: 0x91cab466 full_name: "devfreq_add_governor" } +elf_symbol { + id: 0x15eb01e7 + name: "devfreq_cooling_em_register" + is_defined: true + symbol_type: FUNCTION + crc: 0xa153b759 + type_id: 0x4132c986 + full_name: "devfreq_cooling_em_register" +} elf_symbol { id: 0x647c0881 name: "devfreq_cooling_unregister" @@ -383121,6 +383136,7 @@ interface { symbol_id: 0xfc7749bc symbol_id: 0x55a1ee95 symbol_id: 0x04c32c7c + symbol_id: 0x15eb01e7 symbol_id: 0x647c0881 symbol_id: 0x19e74e36 symbol_id: 0xdb9d4783 diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc index a9aa06c78dc0..74799770e689 100644 --- a/android/abi_gki_aarch64_unisoc +++ b/android/abi_gki_aarch64_unisoc @@ -1656,6 +1656,9 @@ dev_pm_opp_add update_devfreq +# required by sprd_thermal_ctl.ko + devfreq_cooling_em_register + # required by sprd_hwspinlock.ko devm_hwspin_lock_register From ff8496749db9c34c8a8c0056e4701e2c4a693bd7 Mon Sep 17 00:00:00 2001 From: chenzhiwei Date: Thu, 22 Jun 2023 14:39:09 +0800 Subject: [PATCH 022/114] ANDROID: vendor_hooks: vendor hook for MM 2 Vendor hooks add: trace_android_vh_free_one_page_bypass trace_android_vh_rmqueue_smallest_bypass Add vendor hook points in __free_one_page and __rmqueue to manager some customized pages instead of freeing/allocating. Bug: 286350069 Change-Id: If63e164c02a279f4f14ebd8603f49c58ba0fbc8a Signed-off-by: chenzhiwei --- drivers/android/vendor_hooks.c | 2 ++ include/trace/hooks/mm.h | 7 +++++++ mm/page_alloc.c | 13 ++++++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index c2af4cefe2f6..37aa4bba1726 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -307,3 +307,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_init_aes_encrypt); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_skip_swap_map_write); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_post_image_save); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_cold_pageout_skip); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rmqueue_smallest_bypass); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_one_page_bypass); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index fb0bc38380fa..cf27ab461c4e 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -122,6 +122,13 @@ DECLARE_HOOK(android_vh_mem_cgroup_css_online, DECLARE_HOOK(android_vh_mem_cgroup_css_offline, TP_PROTO(struct cgroup_subsys_state *css, struct mem_cgroup *memcg), TP_ARGS(css, memcg)); +DECLARE_HOOK(android_vh_rmqueue_smallest_bypass, + TP_PROTO(struct page **page, struct zone *zone, int order, int migratetype), + TP_ARGS(page, zone, order, migratetype)); +DECLARE_HOOK(android_vh_free_one_page_bypass, + TP_PROTO(struct page *page, struct zone *zone, int order, int migratetype, + int fpi_flags, bool *bypass), + TP_ARGS(page, zone, order, migratetype, fpi_flags, bypass)); #endif /* _TRACE_HOOK_MM_H */ diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 856b0009b21f..c6358579527e 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1141,6 +1141,13 @@ static inline void __free_one_page(struct page *page, unsigned long combined_pfn; struct page *buddy; bool to_tail; + bool bypass = false; + + trace_android_vh_free_one_page_bypass(page, zone, order, + migratetype, (int)fpi_flags, &bypass); + + if (bypass) + return; VM_BUG_ON(!zone_is_initialized(zone)); VM_BUG_ON_PAGE(page->flags & PAGE_FLAGS_CHECK_AT_PREP, page); @@ -3129,7 +3136,11 @@ static __always_inline struct page * __rmqueue(struct zone *zone, unsigned int order, int migratetype, unsigned int alloc_flags) { - struct page *page; + struct page *page = NULL; + + trace_android_vh_rmqueue_smallest_bypass(&page, zone, order, migratetype); + if (page) + return page; retry: page = __rmqueue_smallest(zone, order, migratetype); From 79b7e0db16c768eb73d8b4e46c93ace905a5433f Mon Sep 17 00:00:00 2001 From: chenzhiwei Date: Tue, 27 Jun 2023 10:43:30 +0800 Subject: [PATCH 023/114] ANDROID: GKI: Update symbol list for xiaomi Two new vendor hooks symbol relationship 2 function symbol(s) added 'int __traceiter_android_vh_free_one_page_bypass(void *, struct page *, struct zone *, int, int, int, bool *)' 'int __traceiter_android_vh_rmqueue_smallest_bypass(void *, struct page * *, struct zone *, int, int)' 2 variable symbol(s) added 'struct tracepoint __tracepoint_android_vh_free_one_page_bypass' 'struct tracepoint __tracepoint_android_vh_rmqueue_smallest_bypass' Bug: 286350069 Change-Id: Ic06582720b7b45a2c6728b604310f638fde29b31 Signed-off-by: chenzhiwei --- android/abi_gki_aarch64.stg | 60 ++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_xiaomi | 5 +++ 2 files changed, 65 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index d0df19de0403..d50d01b9af54 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -309772,6 +309772,15 @@ function { parameter_id: 0x92233392 parameter_id: 0x92233392 } +function { + id: 0x9b80645e + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x0b30ee00 + parameter_id: 0x0a63398f + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f +} function { id: 0x9b82fce2 return_type_id: 0x6720d32f @@ -310428,6 +310437,17 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x064d6086 } +function { + id: 0x9bb6ab04 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x06835e9c + parameter_id: 0x0a63398f + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0x11cfee5a +} function { id: 0x9bb6c325 return_type_id: 0x6720d32f @@ -326285,6 +326305,15 @@ elf_symbol { type_id: 0x9a1e34e7 full_name: "__traceiter_android_vh_file_is_tiny_bypass" } +elf_symbol { + id: 0xc189c2a7 + name: "__traceiter_android_vh_free_one_page_bypass" + is_defined: true + symbol_type: FUNCTION + crc: 0x790c91fa + type_id: 0x9bb6ab04 + full_name: "__traceiter_android_vh_free_one_page_bypass" +} elf_symbol { id: 0x5ecff02f name: "__traceiter_android_vh_free_task" @@ -326843,6 +326872,15 @@ elf_symbol { type_id: 0x9bd7019d full_name: "__traceiter_android_vh_record_rwsem_lock_starttime" } +elf_symbol { + id: 0x8d62858f + name: "__traceiter_android_vh_rmqueue_smallest_bypass" + is_defined: true + symbol_type: FUNCTION + crc: 0x9969b000 + type_id: 0x9b80645e + full_name: "__traceiter_android_vh_rmqueue_smallest_bypass" +} elf_symbol { id: 0xcef5d79f name: "__traceiter_android_vh_rproc_recovery" @@ -329390,6 +329428,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_file_is_tiny_bypass" } +elf_symbol { + id: 0x04a824b5 + name: "__tracepoint_android_vh_free_one_page_bypass" + is_defined: true + symbol_type: OBJECT + crc: 0xb8e1bbb2 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_free_one_page_bypass" +} elf_symbol { id: 0xe6918e09 name: "__tracepoint_android_vh_free_task" @@ -329948,6 +329995,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_record_rwsem_lock_starttime" } +elf_symbol { + id: 0x04365139 + name: "__tracepoint_android_vh_rmqueue_smallest_bypass" + is_defined: true + symbol_type: OBJECT + crc: 0x48db8869 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_rmqueue_smallest_bypass" +} elf_symbol { id: 0xd94bc301 name: "__tracepoint_android_vh_rproc_recovery" @@ -381768,6 +381824,7 @@ interface { symbol_id: 0xf586d5b6 symbol_id: 0x1f554c2a symbol_id: 0x93a4717b + symbol_id: 0xc189c2a7 symbol_id: 0x5ecff02f symbol_id: 0xe3ce1f52 symbol_id: 0x3272ce60 @@ -381830,6 +381887,7 @@ interface { symbol_id: 0x0fa39b81 symbol_id: 0x92518ec5 symbol_id: 0x9792c22e + symbol_id: 0x8d62858f symbol_id: 0xcef5d79f symbol_id: 0x91384eff symbol_id: 0x3ef508a2 @@ -382113,6 +382171,7 @@ interface { symbol_id: 0xe7584e1c symbol_id: 0x0d418d38 symbol_id: 0x50a83025 + symbol_id: 0x04a824b5 symbol_id: 0xe6918e09 symbol_id: 0x4d4fd1cc symbol_id: 0xace80c56 @@ -382175,6 +382234,7 @@ interface { symbol_id: 0xef7ad117 symbol_id: 0x4568ff8f symbol_id: 0xe918e2ec + symbol_id: 0x04365139 symbol_id: 0xd94bc301 symbol_id: 0x3fc5ffc9 symbol_id: 0xa3915d70 diff --git a/android/abi_gki_aarch64_xiaomi b/android/abi_gki_aarch64_xiaomi index 492daebc8c65..94a9eb7acd81 100644 --- a/android/abi_gki_aarch64_xiaomi +++ b/android/abi_gki_aarch64_xiaomi @@ -272,3 +272,8 @@ #required by debug_ext.ko of_find_all_nodes +# required by mi_mem_center.ko + __traceiter_android_vh_rmqueue_smallest_bypass + __tracepoint_android_vh_rmqueue_smallest_bypass + __traceiter_android_vh_free_one_page_bypass + __tracepoint_android_vh_free_one_page_bypass From 5af5006061ec85dd4c382798c2b4a8026c69bd24 Mon Sep 17 00:00:00 2001 From: Krishna Kurapati Date: Wed, 10 May 2023 13:22:51 +0530 Subject: [PATCH 024/114] FROMGIT: usb: dwc3: gadget: Bail out in pullup if soft reset timeout happens If the core soft reset timeout happens, avoid setting up event buffers and starting gadget as the writes to these registers may not reflect when in reset and setting the run stop bit can lead the controller to access wrong event buffer address resulting in a crash. Signed-off-by: Krishna Kurapati Acked-by: Thinh Nguyen Link: https://lore.kernel.org/r/20230510075252.31023-2-quic_kriskura@quicinc.com Signed-off-by: Greg Kroah-Hartman Bug: 275538389 (cherry picked from commit 813f44d57e19ccaa7330e829bd913515be42719d https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-next) Change-Id: Ieb7fe9f6d0dc64814cf6f9b86d5ee188d07de537 Signed-off-by: Wesley Cheng --- drivers/usb/dwc3/gadget.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index a3e39bacbdd7..87bcd569fbb4 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2645,13 +2645,16 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on) * device-initiated disconnect requires a core soft reset * (DCTL.CSftRst) before enabling the run/stop bit. */ - dwc3_core_soft_reset(dwc); + ret = dwc3_core_soft_reset(dwc); + if (ret) + goto done; dwc3_event_buffers_setup(dwc); __dwc3_gadget_start(dwc); ret = dwc3_gadget_run_stop(dwc, true); } +done: pm_runtime_put(dwc->dev); return ret; From 251aa28d1640b0ece15c4d4bd074d0449e858f90 Mon Sep 17 00:00:00 2001 From: Krishna Kurapati Date: Wed, 10 May 2023 13:22:52 +0530 Subject: [PATCH 025/114] BACKPORT: FROMGIT: usb: gadget: udc: Handle gadget_connect failure during bind operation In the event, gadget_connect call (which invokes pullup) fails, propagate the error to udc bind operation which inturn sends the error to configfs. The userspace can then retry enumeartion if it chooses to. Signed-off-by: Krishna Kurapati Acked-by: Alan Stern Link: https://lore.kernel.org/r/20230510075252.31023-3-quic_kriskura@quicinc.com Signed-off-by: Greg Kroah-Hartman Bug: 275538389 (cherry picked from commit d34f9bafa78da2a561c67d9daf55fc4d1d80edf0 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-next) [wcheng: Fixed some merge conflicts in usb_udc_connect_control] Change-Id: I3068fc6f679ec236fa700c4cb5dd56238dacb5ac Signed-off-by: Wesley Cheng --- drivers/usb/gadget/udc/core.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c index 99f40611f459..9568b13c05f4 100644 --- a/drivers/usb/gadget/udc/core.c +++ b/drivers/usb/gadget/udc/core.c @@ -1094,12 +1094,16 @@ EXPORT_SYMBOL_GPL(usb_gadget_set_state); /* ------------------------------------------------------------------------- */ /* Acquire connect_lock before calling this function. */ -static void usb_udc_connect_control_locked(struct usb_udc *udc) __must_hold(&udc->connect_lock) +static int usb_udc_connect_control_locked(struct usb_udc *udc) __must_hold(&udc->connect_lock) { + int ret; + if (udc->vbus) - usb_gadget_connect_locked(udc->gadget); + ret = usb_gadget_connect_locked(udc->gadget); else - usb_gadget_disconnect_locked(udc->gadget); + ret = usb_gadget_disconnect_locked(udc->gadget); + + return ret; } static void vbus_event_work(struct work_struct *work) @@ -1573,12 +1577,21 @@ static int gadget_bind_driver(struct device *dev) } usb_gadget_enable_async_callbacks(udc); udc->allow_connect = true; - usb_udc_connect_control_locked(udc); + ret = usb_udc_connect_control_locked(udc); + if (ret) + goto err_connect_control; + mutex_unlock(&udc->connect_lock); kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); return 0; + err_connect_control: + usb_gadget_disable_async_callbacks(udc); + if (gadget->irq) + synchronize_irq(gadget->irq); + usb_gadget_udc_stop_locked(udc); + err_start: driver->unbind(udc->gadget); From 05ba0cb850a9d6cd9df80bc4a715ef9196cc3497 Mon Sep 17 00:00:00 2001 From: Junki Min Date: Tue, 27 Jun 2023 11:29:55 +0900 Subject: [PATCH 026/114] ANDROID: ABI: Update symbol for Exynos SoC Update symbols for Exynos DRM driver 1 function symbol(s) added 'void ttm_eu_fence_buffer_objects(struct ww_acquire_ctx*, struct list_head*, struct dma_fence*)' Bug: 289006378 Change-Id: I9d45891bd1687ffc52b754501a57eca0ec67ae22 Signed-off-by: Junki Min --- android/abi_gki_aarch64.stg | 17 ++++++++++ android/abi_gki_aarch64_exynos | 61 +++++++++++++++++++++++++++++++++- 2 files changed, 77 insertions(+), 1 deletion(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index d50d01b9af54..dad357cc9972 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -288307,6 +288307,13 @@ function { parameter_id: 0x2c32dd96 parameter_id: 0x3e6239e1 } +function { + id: 0x1b6dacf7 + return_type_id: 0x48b5725f + parameter_id: 0x2c32dd96 + parameter_id: 0x3e6239e1 + parameter_id: 0x030b9acf +} function { id: 0x1b71ad71 return_type_id: 0x48b5725f @@ -373928,6 +373935,15 @@ elf_symbol { type_id: 0x1b6d6e11 full_name: "ttm_eu_backoff_reservation" } +elf_symbol { + id: 0x42083e9a + name: "ttm_eu_fence_buffer_objects" + is_defined: true + symbol_type: FUNCTION + crc: 0x844d1fc4 + type_id: 0x1b6dacf7 + full_name: "ttm_eu_fence_buffer_objects" +} elf_symbol { id: 0x697b29f0 name: "ttm_eu_reserve_buffers" @@ -387115,6 +387131,7 @@ interface { symbol_id: 0x7d656c6a symbol_id: 0x19abe185 symbol_id: 0x07c1d025 + symbol_id: 0x42083e9a symbol_id: 0x697b29f0 symbol_id: 0x88860085 symbol_id: 0x27015d04 diff --git a/android/abi_gki_aarch64_exynos b/android/abi_gki_aarch64_exynos index 19441f4ee7d8..a816fd5a8291 100644 --- a/android/abi_gki_aarch64_exynos +++ b/android/abi_gki_aarch64_exynos @@ -605,6 +605,7 @@ of_reserved_mem_lookup of_root of_thermal_get_ntrips + on_each_cpu_cond_mask panic panic_notifier_list param_array_ops @@ -1452,6 +1453,7 @@ # required by exynos-hypervisor.ko __arm_smccc_hvc + kimage_vaddr __pkvm_load_el2_module __pkvm_register_el2_call @@ -1744,7 +1746,6 @@ bitmap_alloc kobj_sysfs_ops kstrtou16 - on_each_cpu_cond_mask # required by nanohub.ko arch_timer_read_counter @@ -2228,6 +2229,7 @@ ttm_device_fini ttm_device_init ttm_eu_backoff_reservation + ttm_eu_fence_buffer_objects ttm_eu_reserve_buffers ttm_glob ttm_lru_bulk_move_tail @@ -2440,3 +2442,60 @@ cpufreq_quick_get_max kthread_bind_mask stpcpy + +# preserved by --additions-only + __alloc_percpu_gfp + arc4_crypt + arc4_setkey + __cpu_present_mask + crc32_be + crypto_aead_decrypt + crypto_aead_encrypt + crypto_aead_setauthsize + crypto_aead_setkey + crypto_alloc_aead + crypto_alloc_skcipher + __crypto_memneq + crypto_shash_finup + crypto_shash_setkey + crypto_skcipher_decrypt + crypto_skcipher_encrypt + crypto_skcipher_setkey + __crypto_xor + dev_fetch_sw_netstats + drm_dev_has_vblank + eth_mac_addr + ethtool_op_get_link + get_random_u16 + __hw_addr_init + __hw_addr_sync + __hw_addr_unsync + kernel_param_lock + kernel_param_unlock + kfree_skb_list_reason + ktime_get_seconds + memmove + netdev_info + netdev_set_default_ethtool_ops + netif_receive_skb_list + net_ratelimit + pskb_expand_head + ___pskb_trim + rhashtable_free_and_destroy + rhashtable_insert_slow + rhltable_init + __rht_bucket_nested + rht_bucket_nested + rht_bucket_nested_insert + round_jiffies + round_jiffies_relative + round_jiffies_up + sg_init_one + skb_checksum_help + skb_clone_sk + skb_complete_wifi_ack + skb_ensure_writable + __skb_get_hash + __skb_gso_segment + tasklet_unlock_wait + unregister_netdevice_many From e3a72785daf6fba453eafb39f348494c76d00b0a Mon Sep 17 00:00:00 2001 From: Di Shen Date: Wed, 28 Jun 2023 13:45:02 +0800 Subject: [PATCH 027/114] ANDROID: thermal: Add hook to enable/disable thermal power throttle By default, thermal power throttle is always enable, but sometimes it need to be disabled for a period of time, so add it to meet platform thermal requirement. Bug: 209386157 Signed-off-by: Jeson Gao Signed-off-by: Di Shen Change-Id: If9c53a9669eec8e2821d837cfa3c660a9cfbf934 (cherry picked from commit 64999249d5fecc79805fd799bdf71bc5b554efc1) --- drivers/android/vendor_hooks.c | 1 + drivers/thermal/gov_power_allocator.c | 5 ++++- include/trace/hooks/thermal.h | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 37aa4bba1726..badd371e142d 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -291,6 +291,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_register); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_unregister); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_thermal_zone_device); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_power_cap); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_enable_thermal_power_throttle); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_reclaim_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_failure_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_pageout_swap_entry); diff --git a/drivers/thermal/gov_power_allocator.c b/drivers/thermal/gov_power_allocator.c index 5471c9091f5f..b851d7cf0968 100644 --- a/drivers/thermal/gov_power_allocator.c +++ b/drivers/thermal/gov_power_allocator.c @@ -704,6 +704,7 @@ static int power_allocator_throttle(struct thermal_zone_device *tz, int trip) int switch_on_temp, control_temp; struct power_allocator_params *params = tz->governor_data; bool update; + bool enable = true; lockdep_assert_held(&tz->lock); @@ -714,9 +715,11 @@ static int power_allocator_throttle(struct thermal_zone_device *tz, int trip) if (trip != params->trip_max_desired_temperature) return 0; + trace_android_vh_enable_thermal_power_throttle(&enable); + ret = tz->ops->get_trip_temp(tz, params->trip_switch_on, &switch_on_temp); - if (!ret && (tz->temperature < switch_on_temp)) { + if ((!ret && (tz->temperature < switch_on_temp)) || !enable) { update = (tz->last_temperature >= switch_on_temp); tz->passive = 0; reset_pid_controller(params); diff --git a/include/trace/hooks/thermal.h b/include/trace/hooks/thermal.h index dd42f1d6766a..3e928aa1920d 100644 --- a/include/trace/hooks/thermal.h +++ b/include/trace/hooks/thermal.h @@ -48,6 +48,10 @@ DECLARE_HOOK(android_vh_thermal_power_cap, TP_PROTO(u32 *power_range), TP_ARGS(power_range)); +DECLARE_HOOK(android_vh_enable_thermal_power_throttle, + TP_PROTO(bool *enable), + TP_ARGS(enable)); + #endif /* _TRACE_HOOK_THERMAL_H */ /* This part must be outside protection */ #include From 9a9c876461146b30a6408dfea6555d0f0f4e55a9 Mon Sep 17 00:00:00 2001 From: Di Shen Date: Wed, 28 Jun 2023 17:42:21 +0800 Subject: [PATCH 028/114] ANDROID: update symbol list for unisoc vendor hook 1 function symbol(s) added 'int __traceiter_android_vh_enable_thermal_power_throttle(void*, bool*)' 1 variable symbol(s) added 'struct tracepoint __tracepoint_android_vh_enable_thermal_power_throttle' Bug: 209386157 Signed-off-by: Di Shen Change-Id: Ic3cca712b40766e93fc5e38215a0b87561acbf58 --- android/abi_gki_aarch64.stg | 20 ++++++++++++++++++++ android/abi_gki_aarch64_unisoc | 2 ++ 2 files changed, 22 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index dad357cc9972..a7775d369d66 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -326285,6 +326285,15 @@ elf_symbol { type_id: 0x9bdc9aae full_name: "__traceiter_android_vh_dup_task_struct" } +elf_symbol { + id: 0x7ebac47a + name: "__traceiter_android_vh_enable_thermal_power_throttle" + is_defined: true + symbol_type: FUNCTION + crc: 0xc7fd7b7d + type_id: 0x9be885da + full_name: "__traceiter_android_vh_enable_thermal_power_throttle" +} elf_symbol { id: 0xf586d5b6 name: "__traceiter_android_vh_encrypt_page" @@ -329408,6 +329417,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_dup_task_struct" } +elf_symbol { + id: 0x188eab44 + name: "__tracepoint_android_vh_enable_thermal_power_throttle" + is_defined: true + symbol_type: OBJECT + crc: 0x13db5a5d + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_enable_thermal_power_throttle" +} elf_symbol { id: 0xe7584e1c name: "__tracepoint_android_vh_encrypt_page" @@ -381837,6 +381855,7 @@ interface { symbol_id: 0x9dbd7b92 symbol_id: 0x42312ccc symbol_id: 0xf432d1c9 + symbol_id: 0x7ebac47a symbol_id: 0xf586d5b6 symbol_id: 0x1f554c2a symbol_id: 0x93a4717b @@ -382184,6 +382203,7 @@ interface { symbol_id: 0xe2d7542c symbol_id: 0x988719fa symbol_id: 0x732a182b + symbol_id: 0x188eab44 symbol_id: 0xe7584e1c symbol_id: 0x0d418d38 symbol_id: 0x50a83025 diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc index 74799770e689..ffe63b898cde 100644 --- a/android/abi_gki_aarch64_unisoc +++ b/android/abi_gki_aarch64_unisoc @@ -693,6 +693,7 @@ __traceiter_android_vh_cpufreq_target __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit + __traceiter_android_vh_enable_thermal_power_throttle __traceiter_android_vh_get_thermal_zone_device __traceiter_android_vh_modify_thermal_request_freq __traceiter_android_vh_modify_thermal_target_freq @@ -770,6 +771,7 @@ __tracepoint_android_vh_cpufreq_target __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit + __tracepoint_android_vh_enable_thermal_power_throttle __tracepoint_android_vh_get_thermal_zone_device __tracepoint_android_vh_modify_thermal_request_freq __tracepoint_android_vh_modify_thermal_target_freq From 80ac9236949e72dee9339c97705bcb50180f7402 Mon Sep 17 00:00:00 2001 From: "t.feng" Date: Wed, 10 May 2023 11:50:44 +0800 Subject: [PATCH 029/114] UPSTREAM: ipvlan:Fix out-of-bounds caused by unclear skb->cb [ Upstream commit 90cbed5247439a966b645b34eb0a2e037836ea8e ] If skb enqueue the qdisc, fq_skb_cb(skb)->time_to_send is changed which is actually skb->cb, and IPCB(skb_in)->opt will be used in __ip_options_echo. It is possible that memcpy is out of bounds and lead to stack overflow. We should clear skb->cb before ip_local_out or ip6_local_out. v2: 1. clean the stack info 2. use IPCB/IP6CB instead of skb->cb crash on stable-5.10(reproduce in kasan kernel). Stack info: [ 2203.651571] BUG: KASAN: stack-out-of-bounds in __ip_options_echo+0x589/0x800 [ 2203.653327] Write of size 4 at addr ffff88811a388f27 by task swapper/3/0 [ 2203.655460] CPU: 3 PID: 0 Comm: swapper/3 Kdump: loaded Not tainted 5.10.0-60.18.0.50.h856.kasan.eulerosv2r11.x86_64 #1 [ 2203.655466] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.10.2-0-g5f4c7b1-20181220_000000-szxrtosci10000 04/01/2014 [ 2203.655475] Call Trace: [ 2203.655481] [ 2203.655501] dump_stack+0x9c/0xd3 [ 2203.655514] print_address_description.constprop.0+0x19/0x170 [ 2203.655530] __kasan_report.cold+0x6c/0x84 [ 2203.655586] kasan_report+0x3a/0x50 [ 2203.655594] check_memory_region+0xfd/0x1f0 [ 2203.655601] memcpy+0x39/0x60 [ 2203.655608] __ip_options_echo+0x589/0x800 [ 2203.655654] __icmp_send+0x59a/0x960 [ 2203.655755] nf_send_unreach+0x129/0x3d0 [nf_reject_ipv4] [ 2203.655763] reject_tg+0x77/0x1bf [ipt_REJECT] [ 2203.655772] ipt_do_table+0x691/0xa40 [ip_tables] [ 2203.655821] nf_hook_slow+0x69/0x100 [ 2203.655828] __ip_local_out+0x21e/0x2b0 [ 2203.655857] ip_local_out+0x28/0x90 [ 2203.655868] ipvlan_process_v4_outbound+0x21e/0x260 [ipvlan] [ 2203.655931] ipvlan_xmit_mode_l3+0x3bd/0x400 [ipvlan] [ 2203.655967] ipvlan_queue_xmit+0xb3/0x190 [ipvlan] [ 2203.655977] ipvlan_start_xmit+0x2e/0xb0 [ipvlan] [ 2203.655984] xmit_one.constprop.0+0xe1/0x280 [ 2203.655992] dev_hard_start_xmit+0x62/0x100 [ 2203.656000] sch_direct_xmit+0x215/0x640 [ 2203.656028] __qdisc_run+0x153/0x1f0 [ 2203.656069] __dev_queue_xmit+0x77f/0x1030 [ 2203.656173] ip_finish_output2+0x59b/0xc20 [ 2203.656244] __ip_finish_output.part.0+0x318/0x3d0 [ 2203.656312] ip_finish_output+0x168/0x190 [ 2203.656320] ip_output+0x12d/0x220 [ 2203.656357] __ip_queue_xmit+0x392/0x880 [ 2203.656380] __tcp_transmit_skb+0x1088/0x11c0 [ 2203.656436] __tcp_retransmit_skb+0x475/0xa30 [ 2203.656505] tcp_retransmit_skb+0x2d/0x190 [ 2203.656512] tcp_retransmit_timer+0x3af/0x9a0 [ 2203.656519] tcp_write_timer_handler+0x3ba/0x510 [ 2203.656529] tcp_write_timer+0x55/0x180 [ 2203.656542] call_timer_fn+0x3f/0x1d0 [ 2203.656555] expire_timers+0x160/0x200 [ 2203.656562] run_timer_softirq+0x1f4/0x480 [ 2203.656606] __do_softirq+0xfd/0x402 [ 2203.656613] asm_call_irq_on_stack+0x12/0x20 [ 2203.656617] [ 2203.656623] do_softirq_own_stack+0x37/0x50 [ 2203.656631] irq_exit_rcu+0x134/0x1a0 [ 2203.656639] sysvec_apic_timer_interrupt+0x36/0x80 [ 2203.656646] asm_sysvec_apic_timer_interrupt+0x12/0x20 [ 2203.656654] RIP: 0010:default_idle+0x13/0x20 [ 2203.656663] Code: 89 f0 5d 41 5c 41 5d 41 5e c3 cc cc cc cc cc cc cc cc cc cc cc cc cc 0f 1f 44 00 00 0f 1f 44 00 00 0f 00 2d 9f 32 57 00 fb f4 cc cc cc cc 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 41 54 be 08 [ 2203.656668] RSP: 0018:ffff88810036fe78 EFLAGS: 00000256 [ 2203.656676] RAX: ffffffffaf2a87f0 RBX: ffff888100360000 RCX: ffffffffaf290191 [ 2203.656681] RDX: 0000000000098b5e RSI: 0000000000000004 RDI: ffff88811a3c4f60 [ 2203.656686] RBP: 0000000000000000 R08: 0000000000000001 R09: ffff88811a3c4f63 [ 2203.656690] R10: ffffed10234789ec R11: 0000000000000001 R12: 0000000000000003 [ 2203.656695] R13: ffff888100360000 R14: 0000000000000000 R15: 0000000000000000 [ 2203.656729] default_idle_call+0x5a/0x150 [ 2203.656735] cpuidle_idle_call+0x1c6/0x220 [ 2203.656780] do_idle+0xab/0x100 [ 2203.656786] cpu_startup_entry+0x19/0x20 [ 2203.656793] secondary_startup_64_no_verify+0xc2/0xcb [ 2203.657409] The buggy address belongs to the page: [ 2203.658648] page:0000000027a9842f refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x11a388 [ 2203.658665] flags: 0x17ffffc0001000(reserved|node=0|zone=2|lastcpupid=0x1fffff) [ 2203.658675] raw: 0017ffffc0001000 ffffea000468e208 ffffea000468e208 0000000000000000 [ 2203.658682] raw: 0000000000000000 0000000000000000 00000001ffffffff 0000000000000000 [ 2203.658686] page dumped because: kasan: bad access detected To reproduce(ipvlan with IPVLAN_MODE_L3): Env setting: ======================================================= modprobe ipvlan ipvlan_default_mode=1 sysctl net.ipv4.conf.eth0.forwarding=1 iptables -t nat -A POSTROUTING -s 20.0.0.0/255.255.255.0 -o eth0 -j MASQUERADE ip link add gw link eth0 type ipvlan ip -4 addr add 20.0.0.254/24 dev gw ip netns add net1 ip link add ipv1 link eth0 type ipvlan ip link set ipv1 netns net1 ip netns exec net1 ip link set ipv1 up ip netns exec net1 ip -4 addr add 20.0.0.4/24 dev ipv1 ip netns exec net1 route add default gw 20.0.0.254 ip netns exec net1 tc qdisc add dev ipv1 root netem loss 10% ifconfig gw up iptables -t filter -A OUTPUT -p tcp --dport 8888 -j REJECT --reject-with icmp-port-unreachable ======================================================= And then excute the shell(curl any address of eth0 can reach): for((i=1;i<=100000;i++)) do ip netns exec net1 curl x.x.x.x:8888 done ======================================================= Bug: 289225588 Fixes: 2ad7bf363841 ("ipvlan: Initial check-in of the IPVLAN driver.") Signed-off-by: "t.feng" Suggested-by: Florian Westphal Reviewed-by: Paolo Abeni Signed-off-by: David S. Miller Signed-off-by: Sasha Levin (cherry picked from commit 610a433810b277b3b77389733c07d22e8af68de2) Signed-off-by: Lee Jones Change-Id: I08a12f6e3b1614210867cd23e9071918dc380faf --- drivers/net/ipvlan/ipvlan_core.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/ipvlan/ipvlan_core.c b/drivers/net/ipvlan/ipvlan_core.c index bb1c298c1e78..2de3bd3b0c27 100644 --- a/drivers/net/ipvlan/ipvlan_core.c +++ b/drivers/net/ipvlan/ipvlan_core.c @@ -436,6 +436,9 @@ static int ipvlan_process_v4_outbound(struct sk_buff *skb) goto err; } skb_dst_set(skb, &rt->dst); + + memset(IPCB(skb), 0, sizeof(*IPCB(skb))); + err = ip_local_out(net, skb->sk, skb); if (unlikely(net_xmit_eval(err))) dev->stats.tx_errors++; @@ -474,6 +477,9 @@ static int ipvlan_process_v6_outbound(struct sk_buff *skb) goto err; } skb_dst_set(skb, dst); + + memset(IP6CB(skb), 0, sizeof(*IP6CB(skb))); + err = ip6_local_out(net, skb->sk, skb); if (unlikely(net_xmit_eval(err))) dev->stats.tx_errors++; From bb732365f7ad44aab1eaed253cd130f9b49679da Mon Sep 17 00:00:00 2001 From: Prasad Sodagudi Date: Wed, 28 Oct 2020 18:26:21 -0700 Subject: [PATCH 030/114] ANDROID: android: Create debug_symbols driver Introduce new API to expose symbols useful for debugging the GKI kernel. Symbols exported from this driver would be difficult to maintain via the traditional EXPORT_SYMBOL_GPL. Bug: 199236943 Signed-off-by: Elliot Berman Signed-off-by: Prasad Sodagudi Signed-off-by: Yogesh Lal Bug: 287890135 Signed-off-by: Xuewen Yan [ delete some unused symbols and add _text/_end ] Change-Id: I1cadb409289ca9ce36b0084efc9ac46f6bec6741 --- drivers/android/Kconfig | 11 +++ drivers/android/Makefile | 1 + drivers/android/android_debug_symbols.c | 96 +++++++++++++++++++++++++ include/linux/android_debug_symbols.h | 47 ++++++++++++ 4 files changed, 155 insertions(+) create mode 100644 drivers/android/android_debug_symbols.c create mode 100644 include/linux/android_debug_symbols.h diff --git a/drivers/android/Kconfig b/drivers/android/Kconfig index c5e063b723dd..c3a49e538988 100644 --- a/drivers/android/Kconfig +++ b/drivers/android/Kconfig @@ -47,6 +47,17 @@ config ANDROID_BINDER_IPC_SELFTEST exhaustively with combinations of various buffer sizes and alignments. +config ANDROID_DEBUG_SYMBOLS + bool "Android Debug Symbols" + help + Enables export of debug symbols that are useful for offline debugging + of a kernel. These symbols would be used in vendor modules to find + addresses of the core kernel symbols for vendor extensions. + + This driver is statically compiled into kernel and maintains all the + required symbol addresses for vendor modules and provides necessary + interface vendor modules. + config ANDROID_VENDOR_HOOKS bool "Android Vendor Hooks" depends on TRACEPOINTS diff --git a/drivers/android/Makefile b/drivers/android/Makefile index 9b89e4ba00a1..97cddb531ee0 100644 --- a/drivers/android/Makefile +++ b/drivers/android/Makefile @@ -4,5 +4,6 @@ ccflags-y += -I$(src) # needed for trace events obj-$(CONFIG_ANDROID_BINDERFS) += binderfs.o obj-$(CONFIG_ANDROID_BINDER_IPC) += binder.o binder_alloc.o obj-$(CONFIG_ANDROID_BINDER_IPC_SELFTEST) += binder_alloc_selftest.o +obj-$(CONFIG_ANDROID_DEBUG_SYMBOLS) += android_debug_symbols.o obj-$(CONFIG_ANDROID_VENDOR_HOOKS) += vendor_hooks.o obj-$(CONFIG_ANDROID_DEBUG_KINFO) += debug_kinfo.o diff --git a/drivers/android/android_debug_symbols.c b/drivers/android/android_debug_symbols.c new file mode 100644 index 000000000000..189fa0d8c141 --- /dev/null +++ b/drivers/android/android_debug_symbols.c @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/* + * Copyright (c) 2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2023, Unisoc (Shanghai) Technologies Co., Ltd + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include "../../mm/slab.h" +#include + +struct ads_entry { + char *name; + void *addr; +}; + +#define _ADS_ENTRY(index, symbol) \ + [index] = { .name = #symbol, .addr = (void *)symbol } +#define ADS_ENTRY(index, symbol) _ADS_ENTRY(index, symbol) + +#define _ADS_PER_CPU_ENTRY(index, symbol) \ + [index] = { .name = #symbol, .addr = (void *)&symbol } +#define ADS_PER_CPU_ENTRY(index, symbol) _ADS_PER_CPU_ENTRY(index, symbol) + +/* + * This module maintains static array of symbol and address information. + * Add all required core kernel symbols and their addresses into ads_entries[] array, + * so that vendor modules can query and to find address of non-exported symbol. + */ +static const struct ads_entry ads_entries[ADS_END] = { + ADS_ENTRY(ADS_SDATA, _sdata), + ADS_ENTRY(ADS_BSS_END, __bss_stop), + ADS_ENTRY(ADS_PER_CPU_START, __per_cpu_start), + ADS_ENTRY(ADS_PER_CPU_END, __per_cpu_end), + ADS_ENTRY(ADS_TEXT, _text), + ADS_ENTRY(ADS_SEND, _end), + ADS_ENTRY(ADS_LINUX_BANNER, linux_banner), + ADS_ENTRY(ADS_TOTAL_CMA, &totalcma_pages), + ADS_ENTRY(ADS_SLAB_CACHES, &slab_caches), + ADS_ENTRY(ADS_SLAB_MUTEX, &slab_mutex), +}; + +/* + * ads_per_cpu_entries array contains all the per_cpu variable address information. + */ +static const struct ads_entry ads_per_cpu_entries[ADS_DEBUG_PER_CPU_END] = { +#ifdef CONFIG_ARM64 + ADS_PER_CPU_ENTRY(ADS_IRQ_STACK_PTR, irq_stack_ptr), +#endif +#ifdef CONFIG_X86 + ADS_PER_CPU_ENTRY(ADS_IRQ_STACK_PTR, hardirq_stack_ptr), +#endif +}; + +/* + * android_debug_symbol - Provide address inforamtion of debug symbol. + * @symbol: Index of debug symbol array. + * + * Return address of core kernel symbol on success and a negative errno will be + * returned in error cases. + * + */ +void *android_debug_symbol(enum android_debug_symbol symbol) +{ + if (symbol >= ADS_END) + return ERR_PTR(-EINVAL); + + return ads_entries[symbol].addr; +} +EXPORT_SYMBOL_NS_GPL(android_debug_symbol, MINIDUMP); + +/* + * android_debug_per_cpu_symbol - Provide address inforamtion of per cpu debug symbol. + * @symbol: Index of per cpu debug symbol array. + * + * Return address of core kernel symbol on success and a negative errno will be + * returned in error cases. + * + */ +void *android_debug_per_cpu_symbol(enum android_debug_per_cpu_symbol symbol) +{ + if (symbol >= ADS_DEBUG_PER_CPU_END) + return ERR_PTR(-EINVAL); + + return ads_per_cpu_entries[symbol].addr; +} +EXPORT_SYMBOL_NS_GPL(android_debug_per_cpu_symbol, MINIDUMP); + diff --git a/include/linux/android_debug_symbols.h b/include/linux/android_debug_symbols.h new file mode 100644 index 000000000000..92c0259e6f89 --- /dev/null +++ b/include/linux/android_debug_symbols.h @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) 2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2023, Unisoc (Shanghai) Technologies Co., Ltd + */ + +#ifndef _ANDROID_DEBUG_SYMBOLS_H +#define _ANDROID_DEBUG_SYMBOLS_H + +enum android_debug_symbol { + ADS_SDATA = 0, + ADS_BSS_END, + ADS_PER_CPU_START, + ADS_PER_CPU_END, + ADS_TEXT, + ADS_SEND, + ADS_LINUX_BANNER, + ADS_TOTAL_CMA, + ADS_SLAB_CACHES, + ADS_SLAB_MUTEX, + ADS_END +}; + +enum android_debug_per_cpu_symbol { + ADS_IRQ_STACK_PTR = 0, + ADS_DEBUG_PER_CPU_END +}; + +#ifdef CONFIG_ANDROID_DEBUG_SYMBOLS + +void *android_debug_symbol(enum android_debug_symbol symbol); +void *android_debug_per_cpu_symbol(enum android_debug_per_cpu_symbol symbol); + +#else /* !CONFIG_ANDROID_DEBUG_SYMBOLS */ + +static inline void *android_debug_symbol(enum android_debug_symbol symbol) +{ + return NULL; +} +static inline void *android_debug_per_cpu_symbol(enum android_debug_per_cpu_symbol symbol) +{ + return NULL; +} + +#endif /* CONFIG_ANDROID_DEBUG_SYMBOLS */ + +#endif /* _ANDROID_DEBUG_SYMBOLS_H */ From e27c6490bae0495104a52d7539e1b0a79d8f480a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20M=C3=A4nnich?= Date: Thu, 29 Jun 2023 12:33:45 +0000 Subject: [PATCH 031/114] Revert "ANDROID: android: Create debug_symbols driver" This reverts commit bb732365f7ad44aab1eaed253cd130f9b49679da. Reason for revert: breaks when enabled via config when building the target `//common-modules/virtual-device:virtual_device_arm_dist` ``` In file included from common/drivers/android/android_debug_symbols.c:12: common/arch/arm/include/asm/stacktrace.h:41:21: error: call to undeclared function 'in_entry_text'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] frame->ex_frame = in_entry_text(frame->pc); ^ In file included from common/drivers/android/android_debug_symbols.c:13: common/arch/arm/include/asm/sections.h:14:20: error: static declaration of 'in_entry_text' follows non-static declaration static inline bool in_entry_text(unsigned long addr) ^ common/arch/arm/include/asm/stacktrace.h:41:21: note: previous implicit declaration is here frame->ex_frame = in_entry_text(frame->pc); ^ ``` Change-Id: Id31003d4c9c60758f6038a63d40ffd7f8044cc9f Signed-off-by: Matthias Maennich --- drivers/android/Kconfig | 11 --- drivers/android/Makefile | 1 - drivers/android/android_debug_symbols.c | 96 ------------------------- include/linux/android_debug_symbols.h | 47 ------------ 4 files changed, 155 deletions(-) delete mode 100644 drivers/android/android_debug_symbols.c delete mode 100644 include/linux/android_debug_symbols.h diff --git a/drivers/android/Kconfig b/drivers/android/Kconfig index c3a49e538988..c5e063b723dd 100644 --- a/drivers/android/Kconfig +++ b/drivers/android/Kconfig @@ -47,17 +47,6 @@ config ANDROID_BINDER_IPC_SELFTEST exhaustively with combinations of various buffer sizes and alignments. -config ANDROID_DEBUG_SYMBOLS - bool "Android Debug Symbols" - help - Enables export of debug symbols that are useful for offline debugging - of a kernel. These symbols would be used in vendor modules to find - addresses of the core kernel symbols for vendor extensions. - - This driver is statically compiled into kernel and maintains all the - required symbol addresses for vendor modules and provides necessary - interface vendor modules. - config ANDROID_VENDOR_HOOKS bool "Android Vendor Hooks" depends on TRACEPOINTS diff --git a/drivers/android/Makefile b/drivers/android/Makefile index 97cddb531ee0..9b89e4ba00a1 100644 --- a/drivers/android/Makefile +++ b/drivers/android/Makefile @@ -4,6 +4,5 @@ ccflags-y += -I$(src) # needed for trace events obj-$(CONFIG_ANDROID_BINDERFS) += binderfs.o obj-$(CONFIG_ANDROID_BINDER_IPC) += binder.o binder_alloc.o obj-$(CONFIG_ANDROID_BINDER_IPC_SELFTEST) += binder_alloc_selftest.o -obj-$(CONFIG_ANDROID_DEBUG_SYMBOLS) += android_debug_symbols.o obj-$(CONFIG_ANDROID_VENDOR_HOOKS) += vendor_hooks.o obj-$(CONFIG_ANDROID_DEBUG_KINFO) += debug_kinfo.o diff --git a/drivers/android/android_debug_symbols.c b/drivers/android/android_debug_symbols.c deleted file mode 100644 index 189fa0d8c141..000000000000 --- a/drivers/android/android_debug_symbols.c +++ /dev/null @@ -1,96 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only - -/* - * Copyright (c) 2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2023, Unisoc (Shanghai) Technologies Co., Ltd - */ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include "../../mm/slab.h" -#include - -struct ads_entry { - char *name; - void *addr; -}; - -#define _ADS_ENTRY(index, symbol) \ - [index] = { .name = #symbol, .addr = (void *)symbol } -#define ADS_ENTRY(index, symbol) _ADS_ENTRY(index, symbol) - -#define _ADS_PER_CPU_ENTRY(index, symbol) \ - [index] = { .name = #symbol, .addr = (void *)&symbol } -#define ADS_PER_CPU_ENTRY(index, symbol) _ADS_PER_CPU_ENTRY(index, symbol) - -/* - * This module maintains static array of symbol and address information. - * Add all required core kernel symbols and their addresses into ads_entries[] array, - * so that vendor modules can query and to find address of non-exported symbol. - */ -static const struct ads_entry ads_entries[ADS_END] = { - ADS_ENTRY(ADS_SDATA, _sdata), - ADS_ENTRY(ADS_BSS_END, __bss_stop), - ADS_ENTRY(ADS_PER_CPU_START, __per_cpu_start), - ADS_ENTRY(ADS_PER_CPU_END, __per_cpu_end), - ADS_ENTRY(ADS_TEXT, _text), - ADS_ENTRY(ADS_SEND, _end), - ADS_ENTRY(ADS_LINUX_BANNER, linux_banner), - ADS_ENTRY(ADS_TOTAL_CMA, &totalcma_pages), - ADS_ENTRY(ADS_SLAB_CACHES, &slab_caches), - ADS_ENTRY(ADS_SLAB_MUTEX, &slab_mutex), -}; - -/* - * ads_per_cpu_entries array contains all the per_cpu variable address information. - */ -static const struct ads_entry ads_per_cpu_entries[ADS_DEBUG_PER_CPU_END] = { -#ifdef CONFIG_ARM64 - ADS_PER_CPU_ENTRY(ADS_IRQ_STACK_PTR, irq_stack_ptr), -#endif -#ifdef CONFIG_X86 - ADS_PER_CPU_ENTRY(ADS_IRQ_STACK_PTR, hardirq_stack_ptr), -#endif -}; - -/* - * android_debug_symbol - Provide address inforamtion of debug symbol. - * @symbol: Index of debug symbol array. - * - * Return address of core kernel symbol on success and a negative errno will be - * returned in error cases. - * - */ -void *android_debug_symbol(enum android_debug_symbol symbol) -{ - if (symbol >= ADS_END) - return ERR_PTR(-EINVAL); - - return ads_entries[symbol].addr; -} -EXPORT_SYMBOL_NS_GPL(android_debug_symbol, MINIDUMP); - -/* - * android_debug_per_cpu_symbol - Provide address inforamtion of per cpu debug symbol. - * @symbol: Index of per cpu debug symbol array. - * - * Return address of core kernel symbol on success and a negative errno will be - * returned in error cases. - * - */ -void *android_debug_per_cpu_symbol(enum android_debug_per_cpu_symbol symbol) -{ - if (symbol >= ADS_DEBUG_PER_CPU_END) - return ERR_PTR(-EINVAL); - - return ads_per_cpu_entries[symbol].addr; -} -EXPORT_SYMBOL_NS_GPL(android_debug_per_cpu_symbol, MINIDUMP); - diff --git a/include/linux/android_debug_symbols.h b/include/linux/android_debug_symbols.h deleted file mode 100644 index 92c0259e6f89..000000000000 --- a/include/linux/android_debug_symbols.h +++ /dev/null @@ -1,47 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * Copyright (c) 2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2023, Unisoc (Shanghai) Technologies Co., Ltd - */ - -#ifndef _ANDROID_DEBUG_SYMBOLS_H -#define _ANDROID_DEBUG_SYMBOLS_H - -enum android_debug_symbol { - ADS_SDATA = 0, - ADS_BSS_END, - ADS_PER_CPU_START, - ADS_PER_CPU_END, - ADS_TEXT, - ADS_SEND, - ADS_LINUX_BANNER, - ADS_TOTAL_CMA, - ADS_SLAB_CACHES, - ADS_SLAB_MUTEX, - ADS_END -}; - -enum android_debug_per_cpu_symbol { - ADS_IRQ_STACK_PTR = 0, - ADS_DEBUG_PER_CPU_END -}; - -#ifdef CONFIG_ANDROID_DEBUG_SYMBOLS - -void *android_debug_symbol(enum android_debug_symbol symbol); -void *android_debug_per_cpu_symbol(enum android_debug_per_cpu_symbol symbol); - -#else /* !CONFIG_ANDROID_DEBUG_SYMBOLS */ - -static inline void *android_debug_symbol(enum android_debug_symbol symbol) -{ - return NULL; -} -static inline void *android_debug_per_cpu_symbol(enum android_debug_per_cpu_symbol symbol) -{ - return NULL; -} - -#endif /* CONFIG_ANDROID_DEBUG_SYMBOLS */ - -#endif /* _ANDROID_DEBUG_SYMBOLS_H */ From 55f146682bc6b71b8def9844663a61d1df6d0dbf Mon Sep 17 00:00:00 2001 From: JaeHun Jung Date: Thu, 29 Jun 2023 07:45:13 +0900 Subject: [PATCH 032/114] ANDROID: GKI: USB: XHCI: add Android ABI padding to struct xhci_vendor_ops struct xhci_vendor_ops can be change when bug or new features. So, Add padding to struct xhci_vendor_opsin order to be able to handle any future problems easier. Bug: 156315379 Change-Id: I62fe5edeee9f5bcfe7834a82f3e35d11a54cf52f Signed-off-by: JaeHun Jung --- drivers/usb/host/xhci.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index 8841f06a1f5b..5d1c57bfd0af 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -2296,6 +2296,11 @@ struct xhci_vendor_ops { void (*alloc_container_ctx)(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx, int type, gfp_t flags); void (*free_container_ctx)(struct xhci_hcd *xhci, struct xhci_container_ctx *ctx); + + ANDROID_KABI_RESERVE(1); + ANDROID_KABI_RESERVE(2); + ANDROID_KABI_RESERVE(3); + ANDROID_KABI_RESERVE(4); }; struct xhci_vendor_ops *xhci_vendor_get_ops(struct xhci_hcd *xhci); From 4bbcece82320a9e621d42381126d2bc58c881256 Mon Sep 17 00:00:00 2001 From: Jindong Yue Date: Thu, 29 Jun 2023 10:10:37 +0800 Subject: [PATCH 033/114] ANDROID: sound: usb: Fix wrong behavior of vendor hooking The snd_vendor_set_pcm_intf() returns 0 if user does not implement related hook, then the code wrongly goes to "unlock" label and returns. A kernel panic is observed when recording with uvc camera: Unable to handle kernel paging request at virtual address ffffffc112dad130 Mem abort info: ESR = 0x0000000096000005 EC = 0x25: DABT (current EL), IL = 32 bits SET = 0, FnV = 0 EA = 0, S1PTW = 0 FSC = 0x05: level 1 translation fault Data abort info: ISV = 0, ISS = 0x00000005 CM = 0, WnR = 0 swapper pgtable: 4k pages, 39-bit VAs, pgdp=000000008204c000 [ffffffc112dad130] pgd=0000000000000000, p4d=0000000000000000, pud=0000000000000000 Internal error: Oops: 0000000096000005 [#1] PREEMPT SMP CPU: 0 PID: 1824 Comm: RenderThread Tainted: G C OE 6.1.25-android14-11-00106-g8aea35f10913-ab10346598 #1 Hardware name: NXP i.MX8ULP EVK (DT) pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : __memcpy+0x1a0/0x230 lr : retire_capture_urb+0x1d8/0x220 sp : ffffffc008003d90 x29: ffffffc008003db0 x28: 00000000ffffffc0 x27: 0000000000000040 x26: ffffffc012dad180 x25: ffffff804649fc00 x24: ffffff803ebacfe4 x23: 0000000000000000 x22: ffffff800626d390 x21: 0000000000000004 x20: 0000000000000040 x19: ffffff800626d2e8 x18: ffffffc008005040 x17: 00000000ceb13bd2 x16: 00000000ceb13bd2 x15: 0000000000004000 x14: 00000000017a0ec0 x13: 0000000000000004 x12: 000000000e1700a2 x11: 0000000000000000 x10: 0000000000000001 x9 : ffffffc01454e000 x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000000000 x5 : ffffffc11454e000 x4 : ffffffc112dad140 x3 : ffffffd98b3b2960 x2 : 00000000ffffffc0 x1 : ffffffc012dad180 x0 : ffffffc01454e040 Call trace: __memcpy+0x1a0/0x230 snd_complete_urb+0x3dc/0x624 __usb_hcd_giveback_urb+0xb0/0x138 usb_giveback_urb_bh+0x88/0x19c tasklet_action_common+0x1ac/0x4bc tasklet_hi_action+0x24/0x34 __do_softirq+0x11c/0x430 ____do_softirq+0x10/0x20 call_on_irq_stack+0x40/0x74 do_softirq_own_stack+0x1c/0x2c __irq_exit_rcu+0x6c/0xcc irq_exit_rcu+0x10/0x1c el0_interrupt+0x54/0x1d8 __el0_irq_handler_common+0x18/0x28 el0t_64_irq_handler+0x10/0x1c el0t_64_irq+0x1a0/0x1a4 Code: a93e24a8 a93f2caa d65f03c0 d503201f (a97f348c) ---[ end trace 0000000000000000 ]--- Kernel panic - not syncing: Oops: Fatal exception in interrupt SMP: stopping secondary CPUs Kernel Offset: 0x1982a00000 from 0xffffffc008000000 PHYS_OFFSET: 0x80000000 CPU features: 0x00,00000000,00100184,0000421b Bug: 289281539 Fixes: a7cd7a3dd770 ("ANDROID: sound: usb: Add vendor's hooking interface") Change-Id: If07d59e4f60555a968892b129be23f1890f96597 Signed-off-by: Jindong Yue --- sound/usb/pcm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index cc0903af6a7f..78e809241e19 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -671,7 +671,7 @@ static int snd_usb_pcm_prepare(struct snd_pcm_substream *substream) ret = snd_vendor_set_pcm_intf(iface, subs->data_endpoint->iface, subs->data_endpoint->altsetting, subs->direction, subs); - if (!ret) + if (ret) goto unlock; /* reset the pointer */ From cf0e6c7e098e27bdccff7f1bc9d4c61810517f0e Mon Sep 17 00:00:00 2001 From: Gavin Shan Date: Fri, 27 Jan 2023 07:54:48 +0800 Subject: [PATCH 034/114] BACKPORT: KVM: arm64: Add helper vgic_write_guest_lock() Currently, the unknown no-running-vcpu sites are reported when a dirty page is tracked by mark_page_dirty_in_slot(). Until now, the only known no-running-vcpu site is saving vgic/its tables through KVM_DEV_ARM_{VGIC_GRP_CTRL, ITS_SAVE_TABLES} command on KVM device "kvm-arm-vgic-its". Unfortunately, there are more unknown sites to be handled and no-running-vcpu context will be allowed in these sites: (1) KVM_DEV_ARM_{VGIC_GRP_CTRL, ITS_RESTORE_TABLES} command on KVM device "kvm-arm-vgic-its" to restore vgic/its tables. The vgic3 LPI pending status could be restored. (2) Save vgic3 pending table through KVM_DEV_ARM_{VGIC_GRP_CTRL, VGIC_SAVE_PENDING_TABLES} command on KVM device "kvm-arm-vgic-v3". In order to handle those unknown cases, we need a unified helper vgic_write_guest_lock(). struct vgic_dist::save_its_tables_in_progress is also renamed to struct vgic_dist::save_tables_in_progress. No functional change intended. Suggested-by: Oliver Upton Signed-off-by: Gavin Shan Reviewed-by: Oliver Upton Signed-off-by: Marc Zyngier Link: https://lore.kernel.org/r/20230126235451.469087-3-gshan@redhat.com (cherry picked from commit a23eaf9368aafa4defcc8904b20391b6ea07bb1e) [willdeacon@: Drop missing dirty-ring hunks] Signed-off-by: Will Deacon Bug: 278750073 Change-Id: Ie0dbb02e4f0f360b7554030e67c80d20ac8c1ca3 --- arch/arm64/kvm/vgic/vgic-its.c | 8 ++++---- arch/arm64/kvm/vgic/vgic.h | 11 +++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/arch/arm64/kvm/vgic/vgic-its.c b/arch/arm64/kvm/vgic/vgic-its.c index 733b53055f97..720324d93920 100644 --- a/arch/arm64/kvm/vgic/vgic-its.c +++ b/arch/arm64/kvm/vgic/vgic-its.c @@ -2187,7 +2187,7 @@ static int vgic_its_save_ite(struct vgic_its *its, struct its_device *dev, ((u64)ite->irq->intid << KVM_ITS_ITE_PINTID_SHIFT) | ite->collection->collection_id; val = cpu_to_le64(val); - return kvm_write_guest_lock(kvm, gpa, &val, ite_esz); + return vgic_write_guest_lock(kvm, gpa, &val, ite_esz); } /** @@ -2339,7 +2339,7 @@ static int vgic_its_save_dte(struct vgic_its *its, struct its_device *dev, (itt_addr_field << KVM_ITS_DTE_ITTADDR_SHIFT) | (dev->num_eventid_bits - 1)); val = cpu_to_le64(val); - return kvm_write_guest_lock(kvm, ptr, &val, dte_esz); + return vgic_write_guest_lock(kvm, ptr, &val, dte_esz); } /** @@ -2526,7 +2526,7 @@ static int vgic_its_save_cte(struct vgic_its *its, ((u64)collection->target_addr << KVM_ITS_CTE_RDBASE_SHIFT) | collection->collection_id); val = cpu_to_le64(val); - return kvm_write_guest_lock(its->dev->kvm, gpa, &val, esz); + return vgic_write_guest_lock(its->dev->kvm, gpa, &val, esz); } /* @@ -2607,7 +2607,7 @@ static int vgic_its_save_collection_table(struct vgic_its *its) */ val = 0; BUG_ON(cte_esz > sizeof(val)); - ret = kvm_write_guest_lock(its->dev->kvm, gpa, &val, cte_esz); + ret = vgic_write_guest_lock(its->dev->kvm, gpa, &val, cte_esz); return ret; } diff --git a/arch/arm64/kvm/vgic/vgic.h b/arch/arm64/kvm/vgic/vgic.h index d9f54ac08042..4973c8803cab 100644 --- a/arch/arm64/kvm/vgic/vgic.h +++ b/arch/arm64/kvm/vgic/vgic.h @@ -6,6 +6,7 @@ #define __KVM_ARM_VGIC_NEW_H__ #include +#include #define PRODUCT_ID_KVM 0x4b /* ASCII code K */ #define IMPLEMENTER_ARM 0x43b @@ -131,6 +132,16 @@ static inline bool vgic_irq_is_multi_sgi(struct vgic_irq *irq) return vgic_irq_get_lr_count(irq) > 1; } +static inline int vgic_write_guest_lock(struct kvm *kvm, gpa_t gpa, + const void *data, unsigned long len) +{ + int ret; + + ret = kvm_write_guest_lock(kvm, gpa, data, len); + + return ret; +} + /* * This struct provides an intermediate representation of the fields contained * in the GICH_VMCR and ICH_VMCR registers, such that code exporting the GIC From de6bb81c8b7cf0a98df423d0d66438c277590fa2 Mon Sep 17 00:00:00 2001 From: Oliver Upton Date: Mon, 27 Mar 2023 16:47:47 +0000 Subject: [PATCH 035/114] UPSTREAM: KVM: arm64: Use config_lock to protect vgic state Almost all of the vgic state is VM-scoped but accessed from the context of a vCPU. These accesses were serialized on the kvm->lock which cannot be nested within a vcpu->mutex critical section. Move over the vgic state to using the config_lock. Tweak the lock ordering where necessary to ensure that the config_lock is acquired after the vcpu->mutex. Acquire the config_lock in kvm_vgic_create() to avoid a race between the converted flows and GIC creation. Where necessary, continue to acquire kvm->lock to avoid a race with vCPU creation (i.e. flows that use lock_all_vcpus()). Finally, promote the locking expectations in comments to lockdep assertions and update the locking documentation for the config_lock as well as vcpu->mutex. Cc: stable@vger.kernel.org Signed-off-by: Oliver Upton Signed-off-by: Marc Zyngier Link: https://lore.kernel.org/r/20230327164747.2466958-5-oliver.upton@linux.dev (cherry picked from commit f00327731131d1b5aa6a1aa9f50bcf8d620ace4c) Signed-off-by: Will Deacon Bug: 278750073 Change-Id: I20403cc5b0ba6baff6ca3dd3e8db6f337602821e --- arch/arm64/kvm/vgic/vgic-debug.c | 8 ++--- arch/arm64/kvm/vgic/vgic-init.c | 36 ++++++++++++-------- arch/arm64/kvm/vgic/vgic-its.c | 18 ++++++---- arch/arm64/kvm/vgic/vgic-kvm-device.c | 47 ++++++++++++++++----------- arch/arm64/kvm/vgic/vgic-mmio-v3.c | 4 +-- arch/arm64/kvm/vgic/vgic-mmio.c | 12 +++---- arch/arm64/kvm/vgic/vgic-v4.c | 11 ++++--- arch/arm64/kvm/vgic/vgic.c | 12 ++++--- 8 files changed, 88 insertions(+), 60 deletions(-) diff --git a/arch/arm64/kvm/vgic/vgic-debug.c b/arch/arm64/kvm/vgic/vgic-debug.c index 78cde687383c..07aa0437125a 100644 --- a/arch/arm64/kvm/vgic/vgic-debug.c +++ b/arch/arm64/kvm/vgic/vgic-debug.c @@ -85,7 +85,7 @@ static void *vgic_debug_start(struct seq_file *s, loff_t *pos) struct kvm *kvm = s->private; struct vgic_state_iter *iter; - mutex_lock(&kvm->lock); + mutex_lock(&kvm->arch.config_lock); iter = kvm->arch.vgic.iter; if (iter) { iter = ERR_PTR(-EBUSY); @@ -104,7 +104,7 @@ static void *vgic_debug_start(struct seq_file *s, loff_t *pos) if (end_of_vgic(iter)) iter = NULL; out: - mutex_unlock(&kvm->lock); + mutex_unlock(&kvm->arch.config_lock); return iter; } @@ -132,12 +132,12 @@ static void vgic_debug_stop(struct seq_file *s, void *v) if (IS_ERR(v)) return; - mutex_lock(&kvm->lock); + mutex_lock(&kvm->arch.config_lock); iter = kvm->arch.vgic.iter; kfree(iter->lpi_array); kfree(iter); kvm->arch.vgic.iter = NULL; - mutex_unlock(&kvm->lock); + mutex_unlock(&kvm->arch.config_lock); } static void print_dist_state(struct seq_file *s, struct vgic_dist *dist) diff --git a/arch/arm64/kvm/vgic/vgic-init.c b/arch/arm64/kvm/vgic/vgic-init.c index f6d4f4052555..8c1d2d7128db 100644 --- a/arch/arm64/kvm/vgic/vgic-init.c +++ b/arch/arm64/kvm/vgic/vgic-init.c @@ -74,9 +74,6 @@ int kvm_vgic_create(struct kvm *kvm, u32 type) unsigned long i; int ret; - if (irqchip_in_kernel(kvm)) - return -EEXIST; - /* * This function is also called by the KVM_CREATE_IRQCHIP handler, * which had no chance yet to check the availability of the GICv2 @@ -87,10 +84,20 @@ int kvm_vgic_create(struct kvm *kvm, u32 type) !kvm_vgic_global_state.can_emulate_gicv2) return -ENODEV; + /* Must be held to avoid race with vCPU creation */ + lockdep_assert_held(&kvm->lock); + ret = -EBUSY; if (!lock_all_vcpus(kvm)) return ret; + mutex_lock(&kvm->arch.config_lock); + + if (irqchip_in_kernel(kvm)) { + ret = -EEXIST; + goto out_unlock; + } + kvm_for_each_vcpu(i, vcpu, kvm) { if (vcpu_has_run_once(vcpu)) goto out_unlock; @@ -118,6 +125,7 @@ int kvm_vgic_create(struct kvm *kvm, u32 type) INIT_LIST_HEAD(&kvm->arch.vgic.rd_regions); out_unlock: + mutex_unlock(&kvm->arch.config_lock); unlock_all_vcpus(kvm); return ret; } @@ -227,9 +235,9 @@ int kvm_vgic_vcpu_init(struct kvm_vcpu *vcpu) * KVM io device for the redistributor that belongs to this VCPU. */ if (dist->vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3) { - mutex_lock(&vcpu->kvm->lock); + mutex_lock(&vcpu->kvm->arch.config_lock); ret = vgic_register_redist_iodev(vcpu); - mutex_unlock(&vcpu->kvm->lock); + mutex_unlock(&vcpu->kvm->arch.config_lock); } return ret; } @@ -250,7 +258,6 @@ static void kvm_vgic_vcpu_enable(struct kvm_vcpu *vcpu) * The function is generally called when nr_spis has been explicitly set * by the guest through the KVM DEVICE API. If not nr_spis is set to 256. * vgic_initialized() returns true when this function has succeeded. - * Must be called with kvm->lock held! */ int vgic_init(struct kvm *kvm) { @@ -259,6 +266,8 @@ int vgic_init(struct kvm *kvm) int ret = 0, i; unsigned long idx; + lockdep_assert_held(&kvm->arch.config_lock); + if (vgic_initialized(kvm)) return 0; @@ -373,12 +382,13 @@ void kvm_vgic_vcpu_destroy(struct kvm_vcpu *vcpu) vgic_cpu->rd_iodev.base_addr = VGIC_ADDR_UNDEF; } -/* To be called with kvm->lock held */ static void __kvm_vgic_destroy(struct kvm *kvm) { struct kvm_vcpu *vcpu; unsigned long i; + lockdep_assert_held(&kvm->arch.config_lock); + vgic_debug_destroy(kvm); kvm_for_each_vcpu(i, vcpu, kvm) @@ -389,9 +399,9 @@ static void __kvm_vgic_destroy(struct kvm *kvm) void kvm_vgic_destroy(struct kvm *kvm) { - mutex_lock(&kvm->lock); + mutex_lock(&kvm->arch.config_lock); __kvm_vgic_destroy(kvm); - mutex_unlock(&kvm->lock); + mutex_unlock(&kvm->arch.config_lock); } /** @@ -414,9 +424,9 @@ int vgic_lazy_init(struct kvm *kvm) if (kvm->arch.vgic.vgic_model != KVM_DEV_TYPE_ARM_VGIC_V2) return -EBUSY; - mutex_lock(&kvm->lock); + mutex_lock(&kvm->arch.config_lock); ret = vgic_init(kvm); - mutex_unlock(&kvm->lock); + mutex_unlock(&kvm->arch.config_lock); } return ret; @@ -441,7 +451,7 @@ int kvm_vgic_map_resources(struct kvm *kvm) if (likely(vgic_ready(kvm))) return 0; - mutex_lock(&kvm->lock); + mutex_lock(&kvm->arch.config_lock); if (vgic_ready(kvm)) goto out; @@ -459,7 +469,7 @@ int kvm_vgic_map_resources(struct kvm *kvm) dist->ready = true; out: - mutex_unlock(&kvm->lock); + mutex_unlock(&kvm->arch.config_lock); return ret; } diff --git a/arch/arm64/kvm/vgic/vgic-its.c b/arch/arm64/kvm/vgic/vgic-its.c index 720324d93920..05c27aeaf020 100644 --- a/arch/arm64/kvm/vgic/vgic-its.c +++ b/arch/arm64/kvm/vgic/vgic-its.c @@ -2045,6 +2045,13 @@ static int vgic_its_attr_regs_access(struct kvm_device *dev, mutex_lock(&dev->kvm->lock); + if (!lock_all_vcpus(dev->kvm)) { + mutex_unlock(&dev->kvm->lock); + return -EBUSY; + } + + mutex_lock(&dev->kvm->arch.config_lock); + if (IS_VGIC_ADDR_UNDEF(its->vgic_its_base)) { ret = -ENXIO; goto out; @@ -2058,11 +2065,6 @@ static int vgic_its_attr_regs_access(struct kvm_device *dev, goto out; } - if (!lock_all_vcpus(dev->kvm)) { - ret = -EBUSY; - goto out; - } - addr = its->vgic_its_base + offset; len = region->access_flags & VGIC_ACCESS_64bit ? 8 : 4; @@ -2076,8 +2078,9 @@ static int vgic_its_attr_regs_access(struct kvm_device *dev, } else { *reg = region->its_read(dev->kvm, its, addr, len); } - unlock_all_vcpus(dev->kvm); out: + mutex_unlock(&dev->kvm->arch.config_lock); + unlock_all_vcpus(dev->kvm); mutex_unlock(&dev->kvm->lock); return ret; } @@ -2757,6 +2760,8 @@ static int vgic_its_ctrl(struct kvm *kvm, struct vgic_its *its, u64 attr) return -EBUSY; } + mutex_lock(&kvm->arch.config_lock); + switch (attr) { case KVM_DEV_ARM_ITS_CTRL_RESET: vgic_its_reset(kvm, its); @@ -2769,6 +2774,7 @@ static int vgic_its_ctrl(struct kvm *kvm, struct vgic_its *its, u64 attr) break; } + mutex_unlock(&kvm->arch.config_lock); unlock_all_vcpus(kvm); mutex_unlock(&its->its_lock); mutex_unlock(&kvm->lock); diff --git a/arch/arm64/kvm/vgic/vgic-kvm-device.c b/arch/arm64/kvm/vgic/vgic-kvm-device.c index edeac2380591..07e727023deb 100644 --- a/arch/arm64/kvm/vgic/vgic-kvm-device.c +++ b/arch/arm64/kvm/vgic/vgic-kvm-device.c @@ -46,7 +46,7 @@ int kvm_set_legacy_vgic_v2_addr(struct kvm *kvm, struct kvm_arm_device_addr *dev struct vgic_dist *vgic = &kvm->arch.vgic; int r; - mutex_lock(&kvm->lock); + mutex_lock(&kvm->arch.config_lock); switch (FIELD_GET(KVM_ARM_DEVICE_TYPE_MASK, dev_addr->id)) { case KVM_VGIC_V2_ADDR_TYPE_DIST: r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V2); @@ -68,7 +68,7 @@ int kvm_set_legacy_vgic_v2_addr(struct kvm *kvm, struct kvm_arm_device_addr *dev r = -ENODEV; } - mutex_unlock(&kvm->lock); + mutex_unlock(&kvm->arch.config_lock); return r; } @@ -102,7 +102,7 @@ static int kvm_vgic_addr(struct kvm *kvm, struct kvm_device_attr *attr, bool wri if (get_user(addr, uaddr)) return -EFAULT; - mutex_lock(&kvm->lock); + mutex_lock(&kvm->arch.config_lock); switch (attr->attr) { case KVM_VGIC_V2_ADDR_TYPE_DIST: r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V2); @@ -191,7 +191,7 @@ static int kvm_vgic_addr(struct kvm *kvm, struct kvm_device_attr *attr, bool wri } out: - mutex_unlock(&kvm->lock); + mutex_unlock(&kvm->arch.config_lock); if (!r && !write) r = put_user(addr, uaddr); @@ -227,7 +227,7 @@ static int vgic_set_common_attr(struct kvm_device *dev, (val & 31)) return -EINVAL; - mutex_lock(&dev->kvm->lock); + mutex_lock(&dev->kvm->arch.config_lock); if (vgic_ready(dev->kvm) || dev->kvm->arch.vgic.nr_spis) ret = -EBUSY; @@ -235,16 +235,16 @@ static int vgic_set_common_attr(struct kvm_device *dev, dev->kvm->arch.vgic.nr_spis = val - VGIC_NR_PRIVATE_IRQS; - mutex_unlock(&dev->kvm->lock); + mutex_unlock(&dev->kvm->arch.config_lock); return ret; } case KVM_DEV_ARM_VGIC_GRP_CTRL: { switch (attr->attr) { case KVM_DEV_ARM_VGIC_CTRL_INIT: - mutex_lock(&dev->kvm->lock); + mutex_lock(&dev->kvm->arch.config_lock); r = vgic_init(dev->kvm); - mutex_unlock(&dev->kvm->lock); + mutex_unlock(&dev->kvm->arch.config_lock); return r; case KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES: /* @@ -260,7 +260,10 @@ static int vgic_set_common_attr(struct kvm_device *dev, mutex_unlock(&dev->kvm->lock); return -EBUSY; } + + mutex_lock(&dev->kvm->arch.config_lock); r = vgic_v3_save_pending_tables(dev->kvm); + mutex_unlock(&dev->kvm->arch.config_lock); unlock_all_vcpus(dev->kvm); mutex_unlock(&dev->kvm->lock); return r; @@ -411,15 +414,17 @@ static int vgic_v2_attr_regs_access(struct kvm_device *dev, mutex_lock(&dev->kvm->lock); + if (!lock_all_vcpus(dev->kvm)) { + mutex_unlock(&dev->kvm->lock); + return -EBUSY; + } + + mutex_lock(&dev->kvm->arch.config_lock); + ret = vgic_init(dev->kvm); if (ret) goto out; - if (!lock_all_vcpus(dev->kvm)) { - ret = -EBUSY; - goto out; - } - switch (attr->group) { case KVM_DEV_ARM_VGIC_GRP_CPU_REGS: ret = vgic_v2_cpuif_uaccess(vcpu, is_write, addr, &val); @@ -432,8 +437,9 @@ static int vgic_v2_attr_regs_access(struct kvm_device *dev, break; } - unlock_all_vcpus(dev->kvm); out: + mutex_unlock(&dev->kvm->arch.config_lock); + unlock_all_vcpus(dev->kvm); mutex_unlock(&dev->kvm->lock); if (!ret && !is_write) @@ -569,12 +575,14 @@ static int vgic_v3_attr_regs_access(struct kvm_device *dev, mutex_lock(&dev->kvm->lock); - if (unlikely(!vgic_initialized(dev->kvm))) { - ret = -EBUSY; - goto out; + if (!lock_all_vcpus(dev->kvm)) { + mutex_unlock(&dev->kvm->lock); + return -EBUSY; } - if (!lock_all_vcpus(dev->kvm)) { + mutex_lock(&dev->kvm->arch.config_lock); + + if (unlikely(!vgic_initialized(dev->kvm))) { ret = -EBUSY; goto out; } @@ -609,8 +617,9 @@ static int vgic_v3_attr_regs_access(struct kvm_device *dev, break; } - unlock_all_vcpus(dev->kvm); out: + mutex_unlock(&dev->kvm->arch.config_lock); + unlock_all_vcpus(dev->kvm); mutex_unlock(&dev->kvm->lock); if (!ret && uaccess && !is_write) { diff --git a/arch/arm64/kvm/vgic/vgic-mmio-v3.c b/arch/arm64/kvm/vgic/vgic-mmio-v3.c index 91201f743033..472b18ac92a2 100644 --- a/arch/arm64/kvm/vgic/vgic-mmio-v3.c +++ b/arch/arm64/kvm/vgic/vgic-mmio-v3.c @@ -111,7 +111,7 @@ static void vgic_mmio_write_v3_misc(struct kvm_vcpu *vcpu, case GICD_CTLR: { bool was_enabled, is_hwsgi; - mutex_lock(&vcpu->kvm->lock); + mutex_lock(&vcpu->kvm->arch.config_lock); was_enabled = dist->enabled; is_hwsgi = dist->nassgireq; @@ -139,7 +139,7 @@ static void vgic_mmio_write_v3_misc(struct kvm_vcpu *vcpu, else if (!was_enabled && dist->enabled) vgic_kick_vcpus(vcpu->kvm); - mutex_unlock(&vcpu->kvm->lock); + mutex_unlock(&vcpu->kvm->arch.config_lock); break; } case GICD_TYPER: diff --git a/arch/arm64/kvm/vgic/vgic-mmio.c b/arch/arm64/kvm/vgic/vgic-mmio.c index b32d434c1d4a..a95f99b93dd6 100644 --- a/arch/arm64/kvm/vgic/vgic-mmio.c +++ b/arch/arm64/kvm/vgic/vgic-mmio.c @@ -527,13 +527,13 @@ unsigned long vgic_mmio_read_active(struct kvm_vcpu *vcpu, u32 intid = VGIC_ADDR_TO_INTID(addr, 1); u32 val; - mutex_lock(&vcpu->kvm->lock); + mutex_lock(&vcpu->kvm->arch.config_lock); vgic_access_active_prepare(vcpu, intid); val = __vgic_mmio_read_active(vcpu, addr, len); vgic_access_active_finish(vcpu, intid); - mutex_unlock(&vcpu->kvm->lock); + mutex_unlock(&vcpu->kvm->arch.config_lock); return val; } @@ -622,13 +622,13 @@ void vgic_mmio_write_cactive(struct kvm_vcpu *vcpu, { u32 intid = VGIC_ADDR_TO_INTID(addr, 1); - mutex_lock(&vcpu->kvm->lock); + mutex_lock(&vcpu->kvm->arch.config_lock); vgic_access_active_prepare(vcpu, intid); __vgic_mmio_write_cactive(vcpu, addr, len, val); vgic_access_active_finish(vcpu, intid); - mutex_unlock(&vcpu->kvm->lock); + mutex_unlock(&vcpu->kvm->arch.config_lock); } int vgic_mmio_uaccess_write_cactive(struct kvm_vcpu *vcpu, @@ -659,13 +659,13 @@ void vgic_mmio_write_sactive(struct kvm_vcpu *vcpu, { u32 intid = VGIC_ADDR_TO_INTID(addr, 1); - mutex_lock(&vcpu->kvm->lock); + mutex_lock(&vcpu->kvm->arch.config_lock); vgic_access_active_prepare(vcpu, intid); __vgic_mmio_write_sactive(vcpu, addr, len, val); vgic_access_active_finish(vcpu, intid); - mutex_unlock(&vcpu->kvm->lock); + mutex_unlock(&vcpu->kvm->arch.config_lock); } int vgic_mmio_uaccess_write_sactive(struct kvm_vcpu *vcpu, diff --git a/arch/arm64/kvm/vgic/vgic-v4.c b/arch/arm64/kvm/vgic/vgic-v4.c index a413718be92b..3bb003478060 100644 --- a/arch/arm64/kvm/vgic/vgic-v4.c +++ b/arch/arm64/kvm/vgic/vgic-v4.c @@ -232,9 +232,8 @@ int vgic_v4_request_vpe_irq(struct kvm_vcpu *vcpu, int irq) * @kvm: Pointer to the VM being initialized * * We may be called each time a vITS is created, or when the - * vgic is initialized. This relies on kvm->lock to be - * held. In both cases, the number of vcpus should now be - * fixed. + * vgic is initialized. In both cases, the number of vcpus + * should now be fixed. */ int vgic_v4_init(struct kvm *kvm) { @@ -243,6 +242,8 @@ int vgic_v4_init(struct kvm *kvm) int nr_vcpus, ret; unsigned long i; + lockdep_assert_held(&kvm->arch.config_lock); + if (!kvm_vgic_global_state.has_gicv4) return 0; /* Nothing to see here... move along. */ @@ -309,14 +310,14 @@ int vgic_v4_init(struct kvm *kvm) /** * vgic_v4_teardown - Free the GICv4 data structures * @kvm: Pointer to the VM being destroyed - * - * Relies on kvm->lock to be held. */ void vgic_v4_teardown(struct kvm *kvm) { struct its_vm *its_vm = &kvm->arch.vgic.its_vm; int i; + lockdep_assert_held(&kvm->arch.config_lock); + if (!its_vm->vpes) return; diff --git a/arch/arm64/kvm/vgic/vgic.c b/arch/arm64/kvm/vgic/vgic.c index 6189ad969675..c613b6aecccb 100644 --- a/arch/arm64/kvm/vgic/vgic.c +++ b/arch/arm64/kvm/vgic/vgic.c @@ -24,11 +24,13 @@ struct vgic_global kvm_vgic_global_state __ro_after_init = { /* * Locking order is always: * kvm->lock (mutex) - * its->cmd_lock (mutex) - * its->its_lock (mutex) - * vgic_cpu->ap_list_lock must be taken with IRQs disabled - * kvm->lpi_list_lock must be taken with IRQs disabled - * vgic_irq->irq_lock must be taken with IRQs disabled + * vcpu->mutex (mutex) + * kvm->arch.config_lock (mutex) + * its->cmd_lock (mutex) + * its->its_lock (mutex) + * vgic_cpu->ap_list_lock must be taken with IRQs disabled + * kvm->lpi_list_lock must be taken with IRQs disabled + * vgic_irq->irq_lock must be taken with IRQs disabled * * As the ap_list_lock might be taken from the timer interrupt handler, * we have to disable IRQs before taking this lock and everything lower From 04b12278ee8e12375bd48cf42b5275c6c2dc075a Mon Sep 17 00:00:00 2001 From: Oliver Upton Date: Mon, 27 Mar 2023 16:47:46 +0000 Subject: [PATCH 036/114] BACKPORT: KVM: arm64: Use config_lock to protect data ordered against KVM_RUN There are various bits of VM-scoped data that can only be configured before the first call to KVM_RUN, such as the hypercall bitmaps and the PMU. As these fields are protected by the kvm->lock and accessed while holding vcpu->mutex, this is yet another example of lock inversion. Change out the kvm->lock for kvm->arch.config_lock in all of these instances. Opportunistically simplify the locking mechanics of the PMU configuration by holding the config_lock for the entirety of kvm_arm_pmu_v3_set_attr(). Note that this also addresses a couple of bugs. There is an unguarded read of the PMU version in KVM_ARM_VCPU_PMU_V3_FILTER which could race with KVM_ARM_VCPU_PMU_V3_SET_PMU. Additionally, until now writes to the per-vCPU vPMU irq were not serialized VM-wide, meaning concurrent calls to KVM_ARM_VCPU_PMU_V3_IRQ could lead to a false positive in pmu_irq_is_valid(). Cc: stable@vger.kernel.org Tested-by: Jeremy Linton Signed-off-by: Oliver Upton Signed-off-by: Marc Zyngier Link: https://lore.kernel.org/r/20230327164747.2466958-4-oliver.upton@linux.dev (cherry picked from commit 4bba7f7def6f278266dadf845da472cfbfed784e) [willdeacon@: Fixed context conflict with moved pkvm trap init] Signed-off-by: Will Deacon Bug: 278750073 Change-Id: Ibafb1b975b48c854ab981c93f74de1ab582c314d --- arch/arm64/kvm/arm.c | 4 ++-- arch/arm64/kvm/guest.c | 2 ++ arch/arm64/kvm/hypercalls.c | 4 ++-- arch/arm64/kvm/pmu-emul.c | 23 ++++++----------------- 4 files changed, 12 insertions(+), 21 deletions(-) diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index a219e6ddf4f5..a56ec8c6abf0 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -711,9 +711,9 @@ int kvm_arch_vcpu_run_pid_change(struct kvm_vcpu *vcpu) static_branch_inc(&userspace_irqchip_in_use); } - mutex_lock(&kvm->lock); + mutex_lock(&kvm->arch.config_lock); set_bit(KVM_ARCH_FLAG_HAS_RAN_ONCE, &kvm->arch.flags); - mutex_unlock(&kvm->lock); + mutex_unlock(&kvm->arch.config_lock); return ret; } diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c index a3b31f2c7a6a..8ae9aafdd8d3 100644 --- a/arch/arm64/kvm/guest.c +++ b/arch/arm64/kvm/guest.c @@ -953,7 +953,9 @@ int kvm_arm_vcpu_arch_set_attr(struct kvm_vcpu *vcpu, switch (attr->group) { case KVM_ARM_VCPU_PMU_V3_CTRL: + mutex_lock(&vcpu->kvm->arch.config_lock); ret = kvm_arm_pmu_v3_set_attr(vcpu, attr); + mutex_unlock(&vcpu->kvm->arch.config_lock); break; case KVM_ARM_VCPU_TIMER_CTRL: ret = kvm_arm_timer_set_attr(vcpu, attr); diff --git a/arch/arm64/kvm/hypercalls.c b/arch/arm64/kvm/hypercalls.c index 6c052411123c..3e069361ecfc 100644 --- a/arch/arm64/kvm/hypercalls.c +++ b/arch/arm64/kvm/hypercalls.c @@ -409,7 +409,7 @@ static int kvm_arm_set_fw_reg_bmap(struct kvm_vcpu *vcpu, u64 reg_id, u64 val) if (val & ~fw_reg_features) return -EINVAL; - mutex_lock(&kvm->lock); + mutex_lock(&kvm->arch.config_lock); if (test_bit(KVM_ARCH_FLAG_HAS_RAN_ONCE, &kvm->arch.flags) && val != *fw_reg_bmap) { @@ -419,7 +419,7 @@ static int kvm_arm_set_fw_reg_bmap(struct kvm_vcpu *vcpu, u64 reg_id, u64 val) WRITE_ONCE(*fw_reg_bmap, val); out: - mutex_unlock(&kvm->lock); + mutex_unlock(&kvm->arch.config_lock); return ret; } diff --git a/arch/arm64/kvm/pmu-emul.c b/arch/arm64/kvm/pmu-emul.c index ed12c5355afb..c7e5f6a28c28 100644 --- a/arch/arm64/kvm/pmu-emul.c +++ b/arch/arm64/kvm/pmu-emul.c @@ -850,7 +850,7 @@ static int kvm_arm_pmu_v3_set_pmu(struct kvm_vcpu *vcpu, int pmu_id) struct arm_pmu *arm_pmu; int ret = -ENXIO; - mutex_lock(&kvm->lock); + lockdep_assert_held(&kvm->arch.config_lock); mutex_lock(&arm_pmus_lock); list_for_each_entry(entry, &arm_pmus, entry) { @@ -870,7 +870,6 @@ static int kvm_arm_pmu_v3_set_pmu(struct kvm_vcpu *vcpu, int pmu_id) } mutex_unlock(&arm_pmus_lock); - mutex_unlock(&kvm->lock); return ret; } @@ -878,22 +877,20 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr) { struct kvm *kvm = vcpu->kvm; + lockdep_assert_held(&kvm->arch.config_lock); + if (!kvm_vcpu_has_pmu(vcpu)) return -ENODEV; if (vcpu->arch.pmu.created) return -EBUSY; - mutex_lock(&kvm->lock); if (!kvm->arch.arm_pmu) { /* No PMU set, get the default one */ kvm->arch.arm_pmu = kvm_pmu_probe_armpmu(); - if (!kvm->arch.arm_pmu) { - mutex_unlock(&kvm->lock); + if (!kvm->arch.arm_pmu) return -ENODEV; - } } - mutex_unlock(&kvm->lock); switch (attr->attr) { case KVM_ARM_VCPU_PMU_V3_IRQ: { @@ -937,19 +934,13 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr) filter.action != KVM_PMU_EVENT_DENY)) return -EINVAL; - mutex_lock(&kvm->lock); - - if (test_bit(KVM_ARCH_FLAG_HAS_RAN_ONCE, &kvm->arch.flags)) { - mutex_unlock(&kvm->lock); + if (test_bit(KVM_ARCH_FLAG_HAS_RAN_ONCE, &kvm->arch.flags)) return -EBUSY; - } if (!kvm->arch.pmu_filter) { kvm->arch.pmu_filter = bitmap_alloc(nr_events, GFP_KERNEL_ACCOUNT); - if (!kvm->arch.pmu_filter) { - mutex_unlock(&kvm->lock); + if (!kvm->arch.pmu_filter) return -ENOMEM; - } /* * The default depends on the first applied filter. @@ -968,8 +959,6 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr) else bitmap_clear(kvm->arch.pmu_filter, filter.base_event, filter.nevents); - mutex_unlock(&kvm->lock); - return 0; } case KVM_ARM_VCPU_PMU_V3_SET_PMU: { From b39849bde63b6ac6bd26a9a80912e326dc96965d Mon Sep 17 00:00:00 2001 From: Oliver Upton Date: Mon, 27 Mar 2023 16:47:44 +0000 Subject: [PATCH 037/114] UPSTREAM: KVM: arm64: Avoid vcpu->mutex v. kvm->lock inversion in CPU_ON KVM/arm64 had the lock ordering backwards on vcpu->mutex and kvm->lock from the very beginning. One such example is the way vCPU resets are handled: the kvm->lock is acquired while handling a guest CPU_ON PSCI call. Add a dedicated lock to serialize writes to kvm_vcpu_arch::{mp_state, reset_state}. Promote all accessors of mp_state to {READ,WRITE}_ONCE() as readers do not acquire the mp_state_lock. While at it, plug yet another race by taking the mp_state_lock in the KVM_SET_MP_STATE ioctl handler. As changes to MP state are now guarded with a dedicated lock, drop the kvm->lock acquisition from the PSCI CPU_ON path. Similarly, move the reader of reset_state outside of the kvm->lock and instead protect it with the mp_state_lock. Note that writes to reset_state::reset have been demoted to regular stores as both readers and writers acquire the mp_state_lock. While the kvm->lock inversion still exists in kvm_reset_vcpu(), at least now PSCI CPU_ON no longer depends on it for serializing vCPU reset. Cc: stable@vger.kernel.org Tested-by: Jeremy Linton Signed-off-by: Oliver Upton Signed-off-by: Marc Zyngier Link: https://lore.kernel.org/r/20230327164747.2466958-2-oliver.upton@linux.dev (cherry picked from commit 0acc7239c20a8401b8968c2adace8f7c9b0295ae) Signed-off-by: Will Deacon Bug: 278750073 Change-Id: Iaec5533c5d73195eb5006262e4dcd84454cf5ebe --- arch/arm64/include/asm/kvm_host.h | 1 + arch/arm64/kvm/arm.c | 31 ++++++++++++++++++++++--------- arch/arm64/kvm/psci.c | 28 ++++++++++++++++------------ arch/arm64/kvm/reset.c | 9 +++++---- 4 files changed, 44 insertions(+), 25 deletions(-) diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h index 740a62f88a10..aebf5714a3b1 100644 --- a/arch/arm64/include/asm/kvm_host.h +++ b/arch/arm64/include/asm/kvm_host.h @@ -509,6 +509,7 @@ struct kvm_vcpu_arch { /* vcpu power state */ struct kvm_mp_state mp_state; + spinlock_t mp_state_lock; union { /* Cache some mmu pages needed inside spinlock regions */ diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index a56ec8c6abf0..91846d6ab448 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -423,6 +423,8 @@ int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu) { int err; + spin_lock_init(&vcpu->arch.mp_state_lock); + /* Force users to call KVM_ARM_VCPU_INIT */ vcpu->arch.target = -1; bitmap_zero(vcpu->arch.features, KVM_VCPU_MAX_FEATURES); @@ -566,34 +568,41 @@ void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu) vcpu->cpu = -1; } -void kvm_arm_vcpu_power_off(struct kvm_vcpu *vcpu) +static void __kvm_arm_vcpu_power_off(struct kvm_vcpu *vcpu) { - vcpu->arch.mp_state.mp_state = KVM_MP_STATE_STOPPED; + WRITE_ONCE(vcpu->arch.mp_state.mp_state, KVM_MP_STATE_STOPPED); kvm_make_request(KVM_REQ_SLEEP, vcpu); kvm_vcpu_kick(vcpu); } +void kvm_arm_vcpu_power_off(struct kvm_vcpu *vcpu) +{ + spin_lock(&vcpu->arch.mp_state_lock); + __kvm_arm_vcpu_power_off(vcpu); + spin_unlock(&vcpu->arch.mp_state_lock); +} + bool kvm_arm_vcpu_stopped(struct kvm_vcpu *vcpu) { - return vcpu->arch.mp_state.mp_state == KVM_MP_STATE_STOPPED; + return READ_ONCE(vcpu->arch.mp_state.mp_state) == KVM_MP_STATE_STOPPED; } static void kvm_arm_vcpu_suspend(struct kvm_vcpu *vcpu) { - vcpu->arch.mp_state.mp_state = KVM_MP_STATE_SUSPENDED; + WRITE_ONCE(vcpu->arch.mp_state.mp_state, KVM_MP_STATE_SUSPENDED); kvm_make_request(KVM_REQ_SUSPEND, vcpu); kvm_vcpu_kick(vcpu); } static bool kvm_arm_vcpu_suspended(struct kvm_vcpu *vcpu) { - return vcpu->arch.mp_state.mp_state == KVM_MP_STATE_SUSPENDED; + return READ_ONCE(vcpu->arch.mp_state.mp_state) == KVM_MP_STATE_SUSPENDED; } int kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu, struct kvm_mp_state *mp_state) { - *mp_state = vcpu->arch.mp_state; + *mp_state = READ_ONCE(vcpu->arch.mp_state); return 0; } @@ -603,12 +612,14 @@ int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu, { int ret = 0; + spin_lock(&vcpu->arch.mp_state_lock); + switch (mp_state->mp_state) { case KVM_MP_STATE_RUNNABLE: - vcpu->arch.mp_state = *mp_state; + WRITE_ONCE(vcpu->arch.mp_state, *mp_state); break; case KVM_MP_STATE_STOPPED: - kvm_arm_vcpu_power_off(vcpu); + __kvm_arm_vcpu_power_off(vcpu); break; case KVM_MP_STATE_SUSPENDED: kvm_arm_vcpu_suspend(vcpu); @@ -617,6 +628,8 @@ int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu, ret = -EINVAL; } + spin_unlock(&vcpu->arch.mp_state_lock); + return ret; } @@ -1327,7 +1340,7 @@ static int kvm_arch_vcpu_ioctl_vcpu_init(struct kvm_vcpu *vcpu, if (test_bit(KVM_ARM_VCPU_POWER_OFF, vcpu->arch.features)) kvm_arm_vcpu_power_off(vcpu); else - vcpu->arch.mp_state.mp_state = KVM_MP_STATE_RUNNABLE; + WRITE_ONCE(vcpu->arch.mp_state.mp_state, KVM_MP_STATE_RUNNABLE); return 0; } diff --git a/arch/arm64/kvm/psci.c b/arch/arm64/kvm/psci.c index 0f7001d726a2..70cabcea8a4f 100644 --- a/arch/arm64/kvm/psci.c +++ b/arch/arm64/kvm/psci.c @@ -46,6 +46,7 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu) struct vcpu_reset_state *reset_state; struct kvm *kvm = source_vcpu->kvm; struct kvm_vcpu *vcpu = NULL; + int ret = PSCI_RET_SUCCESS; unsigned long cpu_id; cpu_id = smccc_get_arg1(source_vcpu); @@ -60,11 +61,15 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu) */ if (!vcpu) return PSCI_RET_INVALID_PARAMS; + + spin_lock(&vcpu->arch.mp_state_lock); if (!kvm_arm_vcpu_stopped(vcpu)) { if (kvm_psci_version(source_vcpu) != KVM_ARM_PSCI_0_1) - return PSCI_RET_ALREADY_ON; + ret = PSCI_RET_ALREADY_ON; else - return PSCI_RET_INVALID_PARAMS; + ret = PSCI_RET_INVALID_PARAMS; + + goto out_unlock; } reset_state = &vcpu->arch.reset_state; @@ -80,7 +85,7 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu) */ reset_state->r0 = smccc_get_arg3(source_vcpu); - WRITE_ONCE(reset_state->reset, true); + reset_state->reset = true; kvm_make_request(KVM_REQ_VCPU_RESET, vcpu); /* @@ -92,7 +97,9 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu) vcpu->arch.mp_state.mp_state = KVM_MP_STATE_RUNNABLE; kvm_vcpu_wake_up(vcpu); - return PSCI_RET_SUCCESS; +out_unlock: + spin_unlock(&vcpu->arch.mp_state_lock); + return ret; } static unsigned long kvm_psci_vcpu_affinity_info(struct kvm_vcpu *vcpu) @@ -152,8 +159,11 @@ static void kvm_prepare_system_event(struct kvm_vcpu *vcpu, u32 type, u64 flags) * after this call is handled and before the VCPUs have been * re-initialized. */ - kvm_for_each_vcpu(i, tmp, vcpu->kvm) - tmp->arch.mp_state.mp_state = KVM_MP_STATE_STOPPED; + kvm_for_each_vcpu(i, tmp, vcpu->kvm) { + spin_lock(&tmp->arch.mp_state_lock); + WRITE_ONCE(tmp->arch.mp_state.mp_state, KVM_MP_STATE_STOPPED); + spin_unlock(&tmp->arch.mp_state_lock); + } kvm_make_all_cpus_request(vcpu->kvm, KVM_REQ_SLEEP); memset(&vcpu->run->system_event, 0, sizeof(vcpu->run->system_event)); @@ -201,7 +211,6 @@ static unsigned long kvm_psci_check_allowed_function(struct kvm_vcpu *vcpu, u32 static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu) { - struct kvm *kvm = vcpu->kvm; u32 psci_fn = smccc_get_function(vcpu); unsigned long val; int ret = 1; @@ -226,9 +235,7 @@ static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu) kvm_psci_narrow_to_32bit(vcpu); fallthrough; case PSCI_0_2_FN64_CPU_ON: - mutex_lock(&kvm->lock); val = kvm_psci_vcpu_on(vcpu); - mutex_unlock(&kvm->lock); break; case PSCI_0_2_FN_AFFINITY_INFO: kvm_psci_narrow_to_32bit(vcpu); @@ -367,7 +374,6 @@ static int kvm_psci_1_x_call(struct kvm_vcpu *vcpu, u32 minor) static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu) { - struct kvm *kvm = vcpu->kvm; u32 psci_fn = smccc_get_function(vcpu); unsigned long val; @@ -377,9 +383,7 @@ static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu) val = PSCI_RET_SUCCESS; break; case KVM_PSCI_FN_CPU_ON: - mutex_lock(&kvm->lock); val = kvm_psci_vcpu_on(vcpu); - mutex_unlock(&kvm->lock); break; default: val = PSCI_RET_NOT_SUPPORTED; diff --git a/arch/arm64/kvm/reset.c b/arch/arm64/kvm/reset.c index 2ede29175bf0..50349553bee9 100644 --- a/arch/arm64/kvm/reset.c +++ b/arch/arm64/kvm/reset.c @@ -230,15 +230,16 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu) mutex_lock(&vcpu->kvm->lock); ret = kvm_set_vm_width(vcpu); - if (!ret) { - reset_state = vcpu->arch.reset_state; - WRITE_ONCE(vcpu->arch.reset_state.reset, false); - } mutex_unlock(&vcpu->kvm->lock); if (ret) return ret; + spin_lock(&vcpu->arch.mp_state_lock); + reset_state = vcpu->arch.reset_state; + vcpu->arch.reset_state.reset = false; + spin_unlock(&vcpu->arch.mp_state_lock); + /* Reset PMU outside of the non-preemptible section */ kvm_pmu_vcpu_reset(vcpu); From b1bb8a0bc4df4ba3b81d2c4aec02aa2327bfdc00 Mon Sep 17 00:00:00 2001 From: Oliver Upton Date: Mon, 27 Mar 2023 16:47:45 +0000 Subject: [PATCH 038/114] BACKPORT: KVM: arm64: Avoid lock inversion when setting the VM register width kvm->lock must be taken outside of the vcpu->mutex. Of course, the locking documentation for KVM makes this abundantly clear. Nonetheless, the locking order in KVM/arm64 has been wrong for quite a while; we acquire the kvm->lock while holding the vcpu->mutex all over the shop. All was seemingly fine until commit 42a90008f890 ("KVM: Ensure lockdep knows about kvm->lock vs. vcpu->mutex ordering rule") caught us with our pants down, leading to lockdep barfing: ====================================================== WARNING: possible circular locking dependency detected 6.2.0-rc7+ #19 Not tainted ------------------------------------------------------ qemu-system-aar/859 is trying to acquire lock: ffff5aa69269eba0 (&host_kvm->lock){+.+.}-{3:3}, at: kvm_reset_vcpu+0x34/0x274 but task is already holding lock: ffff5aa68768c0b8 (&vcpu->mutex){+.+.}-{3:3}, at: kvm_vcpu_ioctl+0x8c/0xba0 which lock already depends on the new lock. Add a dedicated lock to serialize writes to VM-scoped configuration from the context of a vCPU. Protect the register width flags with the new lock, thus avoiding the need to grab the kvm->lock while holding vcpu->mutex in kvm_reset_vcpu(). Cc: stable@vger.kernel.org Reported-by: Jeremy Linton Link: https://lore.kernel.org/kvmarm/f6452cdd-65ff-34b8-bab0-5c06416da5f6@arm.com/ Tested-by: Jeremy Linton Signed-off-by: Oliver Upton Signed-off-by: Marc Zyngier Link: https://lore.kernel.org/r/20230327164747.2466958-3-oliver.upton@linux.dev (cherry picked from commit c43120afb5c66a3465c7468f5cf9806a26484cde) [willdeacon@: Fix context conflict with pKVM VM type check] Signed-off-by: Will Deacon Bug: 278750073 Change-Id: I26d65f63a5e56399ffc4d1f74f62e0c15b37eea1 --- arch/arm64/include/asm/kvm_host.h | 3 +++ arch/arm64/kvm/arm.c | 18 ++++++++++++++++++ arch/arm64/kvm/reset.c | 6 +++--- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h index aebf5714a3b1..8458311bd839 100644 --- a/arch/arm64/include/asm/kvm_host.h +++ b/arch/arm64/include/asm/kvm_host.h @@ -203,6 +203,9 @@ struct kvm_arch { /* Mandated version of PSCI */ u32 psci_version; + /* Protects VM-scoped configuration data */ + struct mutex config_lock; + /* * If we encounter a data abort without valid instruction syndrome * information, report this to user space. User space can (and diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index 91846d6ab448..c1d58bf4f76e 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -155,6 +155,16 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) if (type & ~KVM_VM_TYPE_MASK) return -EINVAL; + mutex_init(&kvm->arch.config_lock); + +#ifdef CONFIG_LOCKDEP + /* Clue in lockdep that the config_lock must be taken inside kvm->lock */ + mutex_lock(&kvm->lock); + mutex_lock(&kvm->arch.config_lock); + mutex_unlock(&kvm->arch.config_lock); + mutex_unlock(&kvm->lock); +#endif + ret = kvm_share_hyp(kvm, kvm + 1); if (ret) return ret; @@ -425,6 +435,14 @@ int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu) spin_lock_init(&vcpu->arch.mp_state_lock); +#ifdef CONFIG_LOCKDEP + /* Inform lockdep that the config_lock is acquired after vcpu->mutex */ + mutex_lock(&vcpu->mutex); + mutex_lock(&vcpu->kvm->arch.config_lock); + mutex_unlock(&vcpu->kvm->arch.config_lock); + mutex_unlock(&vcpu->mutex); +#endif + /* Force users to call KVM_ARM_VCPU_INIT */ vcpu->arch.target = -1; bitmap_zero(vcpu->arch.features, KVM_VCPU_MAX_FEATURES); diff --git a/arch/arm64/kvm/reset.c b/arch/arm64/kvm/reset.c index 50349553bee9..4b80f4e2b438 100644 --- a/arch/arm64/kvm/reset.c +++ b/arch/arm64/kvm/reset.c @@ -176,7 +176,7 @@ static int kvm_set_vm_width(struct kvm_vcpu *vcpu) is32bit = vcpu_has_feature(vcpu, KVM_ARM_VCPU_EL1_32BIT); - lockdep_assert_held(&kvm->lock); + lockdep_assert_held(&kvm->arch.config_lock); if (test_bit(KVM_ARCH_FLAG_REG_WIDTH_CONFIGURED, &kvm->arch.flags)) { /* @@ -228,9 +228,9 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu) int ret; bool loaded; - mutex_lock(&vcpu->kvm->lock); + mutex_lock(&vcpu->kvm->arch.config_lock); ret = kvm_set_vm_width(vcpu); - mutex_unlock(&vcpu->kvm->lock); + mutex_unlock(&vcpu->kvm->arch.config_lock); if (ret) return ret; From b5e26cd12f345acd0f6a987ce9d21d82504c9da9 Mon Sep 17 00:00:00 2001 From: Oliver Upton Date: Wed, 12 Apr 2023 06:27:33 +0000 Subject: [PATCH 039/114] UPSTREAM: KVM: arm64: vgic: Don't acquire its_lock before config_lock commit f00327731131 ("KVM: arm64: Use config_lock to protect vgic state") was meant to rectify a longstanding lock ordering issue in KVM where the kvm->lock is taken while holding vcpu->mutex. As it so happens, the aforementioned commit introduced yet another locking issue by acquiring the its_lock before acquiring the config lock. This is obviously wrong, especially considering that the lock ordering is well documented in vgic.c. Reshuffle the locks once more to take the config_lock before the its_lock. While at it, sprinkle in the lockdep hinting that has become popular as of late to keep lockdep apprised of our ordering. Cc: stable@vger.kernel.org Fixes: f00327731131 ("KVM: arm64: Use config_lock to protect vgic state") Signed-off-by: Oliver Upton Signed-off-by: Marc Zyngier Link: https://lore.kernel.org/r/20230412062733.988229-1-oliver.upton@linux.dev (cherry picked from commit 49e5d16b6fc003407a33a9961b4bcbb970bd1c76) Signed-off-by: Will Deacon Bug: 278750073 Change-Id: If3a7d338bbcc490a7545ace0a8c039bb5e1dcbf0 --- arch/arm64/kvm/vgic/vgic-its.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/arch/arm64/kvm/vgic/vgic-its.c b/arch/arm64/kvm/vgic/vgic-its.c index 05c27aeaf020..0ab87761d705 100644 --- a/arch/arm64/kvm/vgic/vgic-its.c +++ b/arch/arm64/kvm/vgic/vgic-its.c @@ -1958,6 +1958,16 @@ static int vgic_its_create(struct kvm_device *dev, u32 type) mutex_init(&its->its_lock); mutex_init(&its->cmd_lock); + /* Yep, even more trickery for lock ordering... */ +#ifdef CONFIG_LOCKDEP + mutex_lock(&dev->kvm->arch.config_lock); + mutex_lock(&its->cmd_lock); + mutex_lock(&its->its_lock); + mutex_unlock(&its->its_lock); + mutex_unlock(&its->cmd_lock); + mutex_unlock(&dev->kvm->arch.config_lock); +#endif + its->vgic_its_base = VGIC_ADDR_UNDEF; INIT_LIST_HEAD(&its->device_list); @@ -2752,15 +2762,14 @@ static int vgic_its_ctrl(struct kvm *kvm, struct vgic_its *its, u64 attr) return 0; mutex_lock(&kvm->lock); - mutex_lock(&its->its_lock); if (!lock_all_vcpus(kvm)) { - mutex_unlock(&its->its_lock); mutex_unlock(&kvm->lock); return -EBUSY; } mutex_lock(&kvm->arch.config_lock); + mutex_lock(&its->its_lock); switch (attr) { case KVM_DEV_ARM_ITS_CTRL_RESET: @@ -2774,9 +2783,9 @@ static int vgic_its_ctrl(struct kvm *kvm, struct vgic_its *its, u64 attr) break; } + mutex_unlock(&its->its_lock); mutex_unlock(&kvm->arch.config_lock); unlock_all_vcpus(kvm); - mutex_unlock(&its->its_lock); mutex_unlock(&kvm->lock); return ret; } From 486a8ab3ad42a30e93828b0be2b2b7ca52fe1ed3 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Brucker Date: Thu, 18 May 2023 11:09:15 +0100 Subject: [PATCH 040/114] UPSTREAM: KVM: arm64: vgic: Fix a circular locking issue Lockdep reports a circular lock dependency between the srcu and the config_lock: [ 262.179917] -> #1 (&kvm->srcu){.+.+}-{0:0}: [ 262.182010] __synchronize_srcu+0xb0/0x224 [ 262.183422] synchronize_srcu_expedited+0x24/0x34 [ 262.184554] kvm_io_bus_register_dev+0x324/0x50c [ 262.185650] vgic_register_redist_iodev+0x254/0x398 [ 262.186740] vgic_v3_set_redist_base+0x3b0/0x724 [ 262.188087] kvm_vgic_addr+0x364/0x600 [ 262.189189] vgic_set_common_attr+0x90/0x544 [ 262.190278] vgic_v3_set_attr+0x74/0x9c [ 262.191432] kvm_device_ioctl+0x2a0/0x4e4 [ 262.192515] __arm64_sys_ioctl+0x7ac/0x1ba8 [ 262.193612] invoke_syscall.constprop.0+0x70/0x1e0 [ 262.195006] do_el0_svc+0xe4/0x2d4 [ 262.195929] el0_svc+0x44/0x8c [ 262.196917] el0t_64_sync_handler+0xf4/0x120 [ 262.198238] el0t_64_sync+0x190/0x194 [ 262.199224] [ 262.199224] -> #0 (&kvm->arch.config_lock){+.+.}-{3:3}: [ 262.201094] __lock_acquire+0x2b70/0x626c [ 262.202245] lock_acquire+0x454/0x778 [ 262.203132] __mutex_lock+0x190/0x8b4 [ 262.204023] mutex_lock_nested+0x24/0x30 [ 262.205100] vgic_mmio_write_v3_misc+0x5c/0x2a0 [ 262.206178] dispatch_mmio_write+0xd8/0x258 [ 262.207498] __kvm_io_bus_write+0x1e0/0x350 [ 262.208582] kvm_io_bus_write+0xe0/0x1cc [ 262.209653] io_mem_abort+0x2ac/0x6d8 [ 262.210569] kvm_handle_guest_abort+0x9b8/0x1f88 [ 262.211937] handle_exit+0xc4/0x39c [ 262.212971] kvm_arch_vcpu_ioctl_run+0x90c/0x1c04 [ 262.214154] kvm_vcpu_ioctl+0x450/0x12f8 [ 262.215233] __arm64_sys_ioctl+0x7ac/0x1ba8 [ 262.216402] invoke_syscall.constprop.0+0x70/0x1e0 [ 262.217774] do_el0_svc+0xe4/0x2d4 [ 262.218758] el0_svc+0x44/0x8c [ 262.219941] el0t_64_sync_handler+0xf4/0x120 [ 262.221110] el0t_64_sync+0x190/0x194 Note that the current report, which can be triggered by the vgic_irq kselftest, is a triple chain that includes slots_lock, but after inverting the slots_lock/config_lock dependency, the actual problem reported above remains. In several places, the vgic code calls kvm_io_bus_register_dev(), which synchronizes the srcu, while holding config_lock (#1). And the MMIO handler takes the config_lock while holding the srcu read lock (#0). Break dependency #1, by registering the distributor and redistributors without holding config_lock. The ITS also uses kvm_io_bus_register_dev() but already relies on slots_lock to serialize calls. The distributor iodev is created on the first KVM_RUN call. Multiple threads will race for vgic initialization, and only the first one will see !vgic_ready() under the lock. To serialize those threads, rely on slots_lock rather than config_lock. Redistributors are created earlier, through KVM_DEV_ARM_VGIC_GRP_ADDR ioctls and vCPU creation. Similarly, serialize the iodev creation with slots_lock, and the rest with config_lock. Fixes: f00327731131 ("KVM: arm64: Use config_lock to protect vgic state") Signed-off-by: Jean-Philippe Brucker Reviewed-by: Oliver Upton Signed-off-by: Marc Zyngier Link: https://lore.kernel.org/r/20230518100914.2837292-2-jean-philippe@linaro.org (cherry picked from commit 59112e9c390be595224e427827475a6cd3726021) Signed-off-by: Will Deacon Bug: 278750073 Change-Id: Ib3b4846646f148af95746d786fc55b589b3217b6 --- arch/arm64/kvm/vgic/vgic-init.c | 25 ++++++++++++++++----- arch/arm64/kvm/vgic/vgic-kvm-device.c | 10 +++++++-- arch/arm64/kvm/vgic/vgic-mmio-v3.c | 31 ++++++++++++++++++--------- arch/arm64/kvm/vgic/vgic-mmio.c | 9 ++------ arch/arm64/kvm/vgic/vgic-v2.c | 6 ------ arch/arm64/kvm/vgic/vgic-v3.c | 7 ------ 6 files changed, 51 insertions(+), 37 deletions(-) diff --git a/arch/arm64/kvm/vgic/vgic-init.c b/arch/arm64/kvm/vgic/vgic-init.c index 8c1d2d7128db..37e74ca4dad8 100644 --- a/arch/arm64/kvm/vgic/vgic-init.c +++ b/arch/arm64/kvm/vgic/vgic-init.c @@ -235,9 +235,9 @@ int kvm_vgic_vcpu_init(struct kvm_vcpu *vcpu) * KVM io device for the redistributor that belongs to this VCPU. */ if (dist->vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3) { - mutex_lock(&vcpu->kvm->arch.config_lock); + mutex_lock(&vcpu->kvm->slots_lock); ret = vgic_register_redist_iodev(vcpu); - mutex_unlock(&vcpu->kvm->arch.config_lock); + mutex_unlock(&vcpu->kvm->slots_lock); } return ret; } @@ -446,11 +446,13 @@ int vgic_lazy_init(struct kvm *kvm) int kvm_vgic_map_resources(struct kvm *kvm) { struct vgic_dist *dist = &kvm->arch.vgic; + gpa_t dist_base; int ret = 0; if (likely(vgic_ready(kvm))) return 0; + mutex_lock(&kvm->slots_lock); mutex_lock(&kvm->arch.config_lock); if (vgic_ready(kvm)) goto out; @@ -463,13 +465,26 @@ int kvm_vgic_map_resources(struct kvm *kvm) else ret = vgic_v3_map_resources(kvm); - if (ret) + if (ret) { __kvm_vgic_destroy(kvm); - else - dist->ready = true; + goto out; + } + dist->ready = true; + dist_base = dist->vgic_dist_base; + mutex_unlock(&kvm->arch.config_lock); + + ret = vgic_register_dist_iodev(kvm, dist_base, + kvm_vgic_global_state.type); + if (ret) { + kvm_err("Unable to register VGIC dist MMIO regions\n"); + kvm_vgic_destroy(kvm); + } + mutex_unlock(&kvm->slots_lock); + return ret; out: mutex_unlock(&kvm->arch.config_lock); + mutex_unlock(&kvm->slots_lock); return ret; } diff --git a/arch/arm64/kvm/vgic/vgic-kvm-device.c b/arch/arm64/kvm/vgic/vgic-kvm-device.c index 07e727023deb..bf4b3d9631ce 100644 --- a/arch/arm64/kvm/vgic/vgic-kvm-device.c +++ b/arch/arm64/kvm/vgic/vgic-kvm-device.c @@ -102,7 +102,11 @@ static int kvm_vgic_addr(struct kvm *kvm, struct kvm_device_attr *attr, bool wri if (get_user(addr, uaddr)) return -EFAULT; - mutex_lock(&kvm->arch.config_lock); + /* + * Since we can't hold config_lock while registering the redistributor + * iodevs, take the slots_lock immediately. + */ + mutex_lock(&kvm->slots_lock); switch (attr->attr) { case KVM_VGIC_V2_ADDR_TYPE_DIST: r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V2); @@ -182,6 +186,7 @@ static int kvm_vgic_addr(struct kvm *kvm, struct kvm_device_attr *attr, bool wri if (r) goto out; + mutex_lock(&kvm->arch.config_lock); if (write) { r = vgic_check_iorange(kvm, *addr_ptr, addr, alignment, size); if (!r) @@ -189,9 +194,10 @@ static int kvm_vgic_addr(struct kvm *kvm, struct kvm_device_attr *attr, bool wri } else { addr = *addr_ptr; } + mutex_unlock(&kvm->arch.config_lock); out: - mutex_unlock(&kvm->arch.config_lock); + mutex_unlock(&kvm->slots_lock); if (!r && !write) r = put_user(addr, uaddr); diff --git a/arch/arm64/kvm/vgic/vgic-mmio-v3.c b/arch/arm64/kvm/vgic/vgic-mmio-v3.c index 472b18ac92a2..188d2187eede 100644 --- a/arch/arm64/kvm/vgic/vgic-mmio-v3.c +++ b/arch/arm64/kvm/vgic/vgic-mmio-v3.c @@ -769,10 +769,13 @@ int vgic_register_redist_iodev(struct kvm_vcpu *vcpu) struct vgic_io_device *rd_dev = &vcpu->arch.vgic_cpu.rd_iodev; struct vgic_redist_region *rdreg; gpa_t rd_base; - int ret; + int ret = 0; + + lockdep_assert_held(&kvm->slots_lock); + mutex_lock(&kvm->arch.config_lock); if (!IS_VGIC_ADDR_UNDEF(vgic_cpu->rd_iodev.base_addr)) - return 0; + goto out_unlock; /* * We may be creating VCPUs before having set the base address for the @@ -782,10 +785,12 @@ int vgic_register_redist_iodev(struct kvm_vcpu *vcpu) */ rdreg = vgic_v3_rdist_free_slot(&vgic->rd_regions); if (!rdreg) - return 0; + goto out_unlock; - if (!vgic_v3_check_base(kvm)) - return -EINVAL; + if (!vgic_v3_check_base(kvm)) { + ret = -EINVAL; + goto out_unlock; + } vgic_cpu->rdreg = rdreg; vgic_cpu->rdreg_index = rdreg->free_index; @@ -799,16 +804,20 @@ int vgic_register_redist_iodev(struct kvm_vcpu *vcpu) rd_dev->nr_regions = ARRAY_SIZE(vgic_v3_rd_registers); rd_dev->redist_vcpu = vcpu; - mutex_lock(&kvm->slots_lock); + mutex_unlock(&kvm->arch.config_lock); + ret = kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, rd_base, 2 * SZ_64K, &rd_dev->dev); - mutex_unlock(&kvm->slots_lock); - if (ret) return ret; + /* Protected by slots_lock */ rdreg->free_index++; return 0; + +out_unlock: + mutex_unlock(&kvm->arch.config_lock); + return ret; } static void vgic_unregister_redist_iodev(struct kvm_vcpu *vcpu) @@ -834,12 +843,10 @@ static int vgic_register_all_redist_iodevs(struct kvm *kvm) /* The current c failed, so iterate over the previous ones. */ int i; - mutex_lock(&kvm->slots_lock); for (i = 0; i < c; i++) { vcpu = kvm_get_vcpu(kvm, i); vgic_unregister_redist_iodev(vcpu); } - mutex_unlock(&kvm->slots_lock); } return ret; @@ -938,7 +945,9 @@ int vgic_v3_set_redist_base(struct kvm *kvm, u32 index, u64 addr, u32 count) { int ret; + mutex_lock(&kvm->arch.config_lock); ret = vgic_v3_alloc_redist_region(kvm, index, addr, count); + mutex_unlock(&kvm->arch.config_lock); if (ret) return ret; @@ -950,8 +959,10 @@ int vgic_v3_set_redist_base(struct kvm *kvm, u32 index, u64 addr, u32 count) if (ret) { struct vgic_redist_region *rdreg; + mutex_lock(&kvm->arch.config_lock); rdreg = vgic_v3_rdist_region_from_index(kvm, index); vgic_v3_free_redist_region(rdreg); + mutex_unlock(&kvm->arch.config_lock); return ret; } diff --git a/arch/arm64/kvm/vgic/vgic-mmio.c b/arch/arm64/kvm/vgic/vgic-mmio.c index a95f99b93dd6..eb5c58d785b9 100644 --- a/arch/arm64/kvm/vgic/vgic-mmio.c +++ b/arch/arm64/kvm/vgic/vgic-mmio.c @@ -1093,7 +1093,6 @@ int vgic_register_dist_iodev(struct kvm *kvm, gpa_t dist_base_address, enum vgic_type type) { struct vgic_io_device *io_device = &kvm->arch.vgic.dist_iodev; - int ret = 0; unsigned int len; switch (type) { @@ -1111,10 +1110,6 @@ int vgic_register_dist_iodev(struct kvm *kvm, gpa_t dist_base_address, io_device->iodev_type = IODEV_DIST; io_device->redist_vcpu = NULL; - mutex_lock(&kvm->slots_lock); - ret = kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, dist_base_address, - len, &io_device->dev); - mutex_unlock(&kvm->slots_lock); - - return ret; + return kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, dist_base_address, + len, &io_device->dev); } diff --git a/arch/arm64/kvm/vgic/vgic-v2.c b/arch/arm64/kvm/vgic/vgic-v2.c index 4e8bb90bd96f..846d6679c510 100644 --- a/arch/arm64/kvm/vgic/vgic-v2.c +++ b/arch/arm64/kvm/vgic/vgic-v2.c @@ -312,12 +312,6 @@ int vgic_v2_map_resources(struct kvm *kvm) return ret; } - ret = vgic_register_dist_iodev(kvm, dist->vgic_dist_base, VGIC_V2); - if (ret) { - kvm_err("Unable to register VGIC MMIO regions\n"); - return ret; - } - if (!static_branch_unlikely(&vgic_v2_cpuif_trap)) { ret = kvm_phys_addr_ioremap(kvm, dist->vgic_cpu_base, kvm_vgic_global_state.vcpu_base, diff --git a/arch/arm64/kvm/vgic/vgic-v3.c b/arch/arm64/kvm/vgic/vgic-v3.c index 8469155e08ff..5576c22c7e50 100644 --- a/arch/arm64/kvm/vgic/vgic-v3.c +++ b/arch/arm64/kvm/vgic/vgic-v3.c @@ -538,7 +538,6 @@ int vgic_v3_map_resources(struct kvm *kvm) { struct vgic_dist *dist = &kvm->arch.vgic; struct kvm_vcpu *vcpu; - int ret = 0; unsigned long c; kvm_for_each_vcpu(c, vcpu, kvm) { @@ -568,12 +567,6 @@ int vgic_v3_map_resources(struct kvm *kvm) return -EBUSY; } - ret = vgic_register_dist_iodev(kvm, dist->vgic_dist_base, VGIC_V3); - if (ret) { - kvm_err("Unable to register VGICv3 dist MMIO regions\n"); - return ret; - } - if (kvm_vgic_global_state.has_gicv4_1) vgic_v4_configure_vsgis(kvm); From b9d7d47d4a02b762267c5638cf2d8d88839329d3 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Brucker Date: Thu, 18 May 2023 11:09:16 +0100 Subject: [PATCH 041/114] UPSTREAM: KVM: arm64: vgic: Wrap vgic_its_create() with config_lock vgic_its_create() changes the vgic state without holding the config_lock, which triggers a lockdep warning in vgic_v4_init(): [ 358.667941] WARNING: CPU: 3 PID: 178 at arch/arm64/kvm/vgic/vgic-v4.c:245 vgic_v4_init+0x15c/0x7a8 ... [ 358.707410] vgic_v4_init+0x15c/0x7a8 [ 358.708550] vgic_its_create+0x37c/0x4a4 [ 358.709640] kvm_vm_ioctl+0x1518/0x2d80 [ 358.710688] __arm64_sys_ioctl+0x7ac/0x1ba8 [ 358.711960] invoke_syscall.constprop.0+0x70/0x1e0 [ 358.713245] do_el0_svc+0xe4/0x2d4 [ 358.714289] el0_svc+0x44/0x8c [ 358.715329] el0t_64_sync_handler+0xf4/0x120 [ 358.716615] el0t_64_sync+0x190/0x194 Wrap the whole of vgic_its_create() with config_lock since, in addition to calling vgic_v4_init(), it also modifies the global kvm->arch.vgic state. Fixes: f00327731131 ("KVM: arm64: Use config_lock to protect vgic state") Signed-off-by: Jean-Philippe Brucker Reviewed-by: Oliver Upton Signed-off-by: Marc Zyngier Link: https://lore.kernel.org/r/20230518100914.2837292-3-jean-philippe@linaro.org (cherry picked from commit 9cf2f840c439b6b23bd99f584f2917ca425ae406) Signed-off-by: Will Deacon Bug: 278750073 Change-Id: Id6319d5719181072b7202a814c71e9509c0ba865 --- arch/arm64/kvm/vgic/vgic-its.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/arch/arm64/kvm/vgic/vgic-its.c b/arch/arm64/kvm/vgic/vgic-its.c index 0ab87761d705..46ac071f71e1 100644 --- a/arch/arm64/kvm/vgic/vgic-its.c +++ b/arch/arm64/kvm/vgic/vgic-its.c @@ -1936,6 +1936,7 @@ void vgic_lpi_translation_cache_destroy(struct kvm *kvm) static int vgic_its_create(struct kvm_device *dev, u32 type) { + int ret; struct vgic_its *its; if (type != KVM_DEV_TYPE_ARM_VGIC_ITS) @@ -1945,9 +1946,12 @@ static int vgic_its_create(struct kvm_device *dev, u32 type) if (!its) return -ENOMEM; + mutex_lock(&dev->kvm->arch.config_lock); + if (vgic_initialized(dev->kvm)) { - int ret = vgic_v4_init(dev->kvm); + ret = vgic_v4_init(dev->kvm); if (ret < 0) { + mutex_unlock(&dev->kvm->arch.config_lock); kfree(its); return ret; } @@ -1960,12 +1964,10 @@ static int vgic_its_create(struct kvm_device *dev, u32 type) /* Yep, even more trickery for lock ordering... */ #ifdef CONFIG_LOCKDEP - mutex_lock(&dev->kvm->arch.config_lock); mutex_lock(&its->cmd_lock); mutex_lock(&its->its_lock); mutex_unlock(&its->its_lock); mutex_unlock(&its->cmd_lock); - mutex_unlock(&dev->kvm->arch.config_lock); #endif its->vgic_its_base = VGIC_ADDR_UNDEF; @@ -1986,7 +1988,11 @@ static int vgic_its_create(struct kvm_device *dev, u32 type) dev->private = its; - return vgic_its_set_abi(its, NR_ITS_ABIS - 1); + ret = vgic_its_set_abi(its, NR_ITS_ABIS - 1); + + mutex_unlock(&dev->kvm->arch.config_lock); + + return ret; } static void vgic_its_destroy(struct kvm_device *kvm_dev) From 8a717a85c5a1d5cf11c7539d9bff3c19018eb093 Mon Sep 17 00:00:00 2001 From: Marc Zyngier Date: Wed, 7 Jun 2023 15:38:44 +0100 Subject: [PATCH 042/114] UPSTREAM: KVM: arm64: Restore GICv2-on-GICv3 functionality When reworking the vgic locking, the vgic distributor registration got simplified, which was a very good cleanup. But just a tad too radical, as we now register the *native* vgic only, ignoring the GICv2-on-GICv3 that allows pre-historic VMs (or so I thought) to run. As it turns out, QEMU still defaults to GICv2 in some cases, and this breaks Nathan's setup! Fix it by propagating the *requested* vgic type rather than the host's version. Fixes: 59112e9c390b ("KVM: arm64: vgic: Fix a circular locking issue") Reported-by: Nathan Chancellor Tested-by: Nathan Chancellor Signed-off-by: Marc Zyngier link: https://lore.kernel.org/r/20230606221525.GA2269598@dev-arch.thelio-3990X (cherry picked from commit 1caa71a7a600f7781ce05ef1e84701c459653663) Signed-off-by: Will Deacon Bug: 278750073 Change-Id: I3a74c9de0afd9a38f4ca8dd5d4ce27d1937a5705 --- arch/arm64/kvm/vgic/vgic-init.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/arch/arm64/kvm/vgic/vgic-init.c b/arch/arm64/kvm/vgic/vgic-init.c index 37e74ca4dad8..f2f3bf4a04b0 100644 --- a/arch/arm64/kvm/vgic/vgic-init.c +++ b/arch/arm64/kvm/vgic/vgic-init.c @@ -446,6 +446,7 @@ int vgic_lazy_init(struct kvm *kvm) int kvm_vgic_map_resources(struct kvm *kvm) { struct vgic_dist *dist = &kvm->arch.vgic; + enum vgic_type type; gpa_t dist_base; int ret = 0; @@ -460,10 +461,13 @@ int kvm_vgic_map_resources(struct kvm *kvm) if (!irqchip_in_kernel(kvm)) goto out; - if (dist->vgic_model == KVM_DEV_TYPE_ARM_VGIC_V2) + if (dist->vgic_model == KVM_DEV_TYPE_ARM_VGIC_V2) { ret = vgic_v2_map_resources(kvm); - else + type = VGIC_V2; + } else { ret = vgic_v3_map_resources(kvm); + type = VGIC_V3; + } if (ret) { __kvm_vgic_destroy(kvm); @@ -473,8 +477,7 @@ int kvm_vgic_map_resources(struct kvm *kvm) dist_base = dist->vgic_dist_base; mutex_unlock(&kvm->arch.config_lock); - ret = vgic_register_dist_iodev(kvm, dist_base, - kvm_vgic_global_state.type); + ret = vgic_register_dist_iodev(kvm, dist_base, type); if (ret) { kvm_err("Unable to register VGIC dist MMIO regions\n"); kvm_vgic_destroy(kvm); From 58004e1d0e2715fd879fa83939e9edc71db60c9e Mon Sep 17 00:00:00 2001 From: Will Deacon Date: Thu, 29 Jun 2023 13:54:24 +0100 Subject: [PATCH 043/114] ANDROID: KVM: arm64: Remove 'struct kvm_vcpu' from the KMI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With the addition of 'struct pkvm_module_ops' to the Android-14 KMI, we inadvertently exposing a number of internal KVM data structures via the unused '__hyp_running_vcpu' member of 'struct kvm_cpu_context'. Fix up the KMI by making this field a 'void *' for everybody other than genksyms. Cc: Matthias Männich Cc: Quentin Perret Cc: Vincent Donnefort Cc: Greg Kroah-Hartman Bug: 288146090 Signed-off-by: Will Deacon Change-Id: I54b7fe055830e22e6118779617de2d9259501833 --- android/abi_gki_aarch64.stg | 6174 +---------------------------- arch/arm64/include/asm/kvm_host.h | 8 + 2 files changed, 11 insertions(+), 6171 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index a7775d369d66..265a6f1d6ab7 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -96,11 +96,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x2abdbda9 } -pointer_reference { - id: 0x004b03fc - kind: POINTER - pointee_type_id: 0x2b6ce96f -} pointer_reference { id: 0x004d68b7 kind: POINTER @@ -266,11 +261,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x2e029f76 } -pointer_reference { - id: 0x0110ab48 - kind: POINTER - pointee_type_id: 0x2e024bbc -} pointer_reference { id: 0x0113dde3 kind: POINTER @@ -561,11 +551,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x2259084f } -pointer_reference { - id: 0x02067bf4 - kind: POINTER - pointee_type_id: 0x2259094e -} pointer_reference { id: 0x0206e690 kind: POINTER @@ -1356,11 +1341,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x39a49b1e } -pointer_reference { - id: 0x04fb8f54 - kind: POINTER - pointee_type_id: 0x39aedbce -} pointer_reference { id: 0x05003835 kind: POINTER @@ -1466,11 +1446,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x3f3d7e85 } -pointer_reference { - id: 0x0561578b - kind: POINTER - pointee_type_id: 0x3fc5b8b3 -} pointer_reference { id: 0x0562c566 kind: POINTER @@ -1561,11 +1536,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x3c2755a3 } -pointer_reference { - id: 0x05a52bb0 - kind: POINTER - pointee_type_id: 0x3cd4485f -} pointer_reference { id: 0x05a5cdba kind: POINTER @@ -1766,11 +1736,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x33d83070 } -pointer_reference { - id: 0x0669d6b3 - kind: POINTER - pointee_type_id: 0x33e7bc51 -} pointer_reference { id: 0x066af716 kind: POINTER @@ -1941,11 +1906,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x36f1d1fd } -pointer_reference { - id: 0x073894f9 - kind: POINTER - pointee_type_id: 0x36a2b57a -} pointer_reference { id: 0x0742e5b4 kind: POINTER @@ -2351,11 +2311,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x0942f1ca } -pointer_reference { - id: 0x08dcfb76 - kind: POINTER - pointee_type_id: 0x09330b45 -} pointer_reference { id: 0x08e43718 kind: POINTER @@ -2556,11 +2511,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x0cfb4b7c } -pointer_reference { - id: 0x09af8dc9 - kind: POINTER - pointee_type_id: 0x0cfed1bb -} pointer_reference { id: 0x09bb9b7e kind: POINTER @@ -3006,11 +2956,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x07a79f04 } -pointer_reference { - id: 0x0b7a0b83 - kind: POINTER - pointee_type_id: 0x07a8c893 -} pointer_reference { id: 0x0b7c4f67 kind: POINTER @@ -3186,11 +3131,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1a770e0b } -pointer_reference { - id: 0x0c0e84bd - kind: POINTER - pointee_type_id: 0x1a7af469 -} pointer_reference { id: 0x0c0edcf8 kind: POINTER @@ -3211,26 +3151,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1a1051a0 } -pointer_reference { - id: 0x0c15b27a - kind: POINTER - pointee_type_id: 0x1a162f77 -} pointer_reference { id: 0x0c1663ae kind: POINTER pointee_type_id: 0x1a196826 } -pointer_reference { - id: 0x0c166597 - kind: POINTER - pointee_type_id: 0x1a1970c3 -} -pointer_reference { - id: 0x0c16b659 - kind: POINTER - pointee_type_id: 0x1a1a3ffb -} pointer_reference { id: 0x0c17a1e0 kind: POINTER @@ -3276,11 +3201,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1ad37d09 } -pointer_reference { - id: 0x0c252e30 - kind: POINTER - pointee_type_id: 0x1ad45e5f -} pointer_reference { id: 0x0c254fa0 kind: POINTER @@ -3346,11 +3266,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1a9663f9 } -pointer_reference { - id: 0x0c397826 - kind: POINTER - pointee_type_id: 0x1aa50604 -} pointer_reference { id: 0x0c3ac0b1 kind: POINTER @@ -3441,11 +3356,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1b5d6044 } -pointer_reference { - id: 0x0c47e7d1 - kind: POINTER - pointee_type_id: 0x1b5f79d9 -} pointer_reference { id: 0x0c485c36 kind: POINTER @@ -3541,11 +3451,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1b3b0652 } -pointer_reference { - id: 0x0c5f174a - kind: POINTER - pointee_type_id: 0x1b3cbbb4 -} pointer_reference { id: 0x0c5f67dd kind: POINTER @@ -4151,11 +4056,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x19b6a09f } -pointer_reference { - id: 0x0cfed1bb - kind: POINTER - pointee_type_id: 0x19bba071 -} pointer_reference { id: 0x0cffb85e kind: POINTER @@ -4816,11 +4716,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1c5ac86a } -pointer_reference { - id: 0x0d879e14 - kind: POINTER - pointee_type_id: 0x1c5e9ece -} pointer_reference { id: 0x0d881d5f kind: POINTER @@ -4901,11 +4796,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1c0e7d0f } -pointer_reference { - id: 0x0d947d59 - kind: POINTER - pointee_type_id: 0x1c1113fb -} pointer_reference { id: 0x0d956bfc kind: POINTER @@ -4916,11 +4806,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1c155f01 } -pointer_reference { - id: 0x0d97a2b2 - kind: POINTER - pointee_type_id: 0x1c1e6c54 -} pointer_reference { id: 0x0d97a54b kind: POINTER @@ -5316,11 +5201,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1dde0ec8 } -pointer_reference { - id: 0x0de80fb7 - kind: POINTER - pointee_type_id: 0x1de0d842 -} pointer_reference { id: 0x0de8f5e2 kind: POINTER @@ -5551,11 +5431,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x12d14004 } -pointer_reference { - id: 0x0e24c2f6 - kind: POINTER - pointee_type_id: 0x12d3ed44 -} pointer_reference { id: 0x0e2521ae kind: POINTER @@ -6441,11 +6316,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x11c092fa } -pointer_reference { - id: 0x0ee038bb - kind: POINTER - pointee_type_id: 0x11c00471 -} pointer_reference { id: 0x0ee0d5d1 kind: POINTER @@ -7176,11 +7046,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x17b5cc93 } -pointer_reference { - id: 0x0f7dbeee - kind: POINTER - pointee_type_id: 0x17b61d24 -} pointer_reference { id: 0x0f7dcc52 kind: POINTER @@ -7611,11 +7476,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x15a2be6d } -pointer_reference { - id: 0x0ff8ee0d - kind: POINTER - pointee_type_id: 0x15a35eaa -} pointer_reference { id: 0x0ff8f9af kind: POINTER @@ -7771,11 +7631,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x6b98fc5d } -pointer_reference { - id: 0x1076c35e - kind: POINTER - pointee_type_id: 0x6b9bebe6 -} pointer_reference { id: 0x1077b920 kind: POINTER @@ -7896,11 +7751,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x6f66da8d } -pointer_reference { - id: 0x114e61a5 - kind: POINTER - pointee_type_id: 0x6f796009 -} pointer_reference { id: 0x11575246 kind: POINTER @@ -7926,11 +7776,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x6fe4eb19 } -pointer_reference { - id: 0x116d36b8 - kind: POINTER - pointee_type_id: 0x6ff43c7f -} pointer_reference { id: 0x117a8adb kind: POINTER @@ -9616,11 +9461,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x4215681c } -pointer_reference { - id: 0x1a1575dd - kind: POINTER - pointee_type_id: 0x421531e8 -} pointer_reference { id: 0x1a29773f kind: POINTER @@ -10151,11 +9991,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x590737f8 } -pointer_reference { - id: 0x1cd322d1 - kind: POINTER - pointee_type_id: 0x590c6dd8 -} pointer_reference { id: 0x1cdba504 kind: POINTER @@ -10341,11 +10176,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x5fd666ab } -pointer_reference { - id: 0x1d65d221 - kind: POINTER - pointee_type_id: 0x5fd7ae1b -} pointer_reference { id: 0x1d6e33e5 kind: POINTER @@ -10726,16 +10556,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x509cd61e } -pointer_reference { - id: 0x1eba2d88 - kind: POINTER - pointee_type_id: 0x50a850bc -} -pointer_reference { - id: 0x1ebe4388 - kind: POINTER - pointee_type_id: 0x50b9e8bd -} pointer_reference { id: 0x1ed6200d kind: POINTER @@ -11041,11 +10861,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xaab0d999 } -pointer_reference { - id: 0x203cd5eb - kind: POINTER - pointee_type_id: 0xaab3b130 -} pointer_reference { id: 0x203e14bb kind: POINTER @@ -11166,11 +10981,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xae401000 } -pointer_reference { - id: 0x2101ca02 - kind: POINTER - pointee_type_id: 0xae47ce96 -} pointer_reference { id: 0x2105ad7e kind: POINTER @@ -11281,11 +11091,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xaf54cd38 } -pointer_reference { - id: 0x2145f7aa - kind: POINTER - pointee_type_id: 0xaf573835 -} pointer_reference { id: 0x214fd672 kind: POINTER @@ -12676,11 +12481,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x89378254 } -pointer_reference { - id: 0x28e1a5ae - kind: POINTER - pointee_type_id: 0x89c67026 -} pointer_reference { id: 0x28e1b8de kind: POINTER @@ -13236,11 +13036,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x8448d7e4 } -pointer_reference { - id: 0x2b8a97e8 - kind: POINTER - pointee_type_id: 0x846ab93f -} pointer_reference { id: 0x2b8cd86f kind: POINTER @@ -13726,11 +13521,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9aacb204 } -pointer_reference { - id: 0x2c3b9241 - kind: POINTER - pointee_type_id: 0x9aaeaf98 -} pointer_reference { id: 0x2c3be0fd kind: POINTER @@ -15701,11 +15491,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x99f3f8f0 } -pointer_reference { - id: 0x2ced036e - kind: POINTER - pointee_type_id: 0x99f4eb25 -} pointer_reference { id: 0x2ced2dfa kind: POINTER @@ -16681,11 +16466,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9fc9e6ec } -pointer_reference { - id: 0x2d62ee59 - kind: POINTER - pointee_type_id: 0x9fcb5ff8 -} pointer_reference { id: 0x2d630d01 kind: POINTER @@ -16876,16 +16656,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9fa3b723 } -pointer_reference { - id: 0x2d797d9d - kind: POINTER - pointee_type_id: 0x9fa510e8 -} -pointer_reference { - id: 0x2d797f87 - kind: POINTER - pointee_type_id: 0x9fa51880 -} pointer_reference { id: 0x2d7ae3a5 kind: POINTER @@ -18396,11 +18166,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x922dbdf3 } -pointer_reference { - id: 0x2e1b59dd - kind: POINTER - pointee_type_id: 0x922d81eb -} pointer_reference { id: 0x2e1d1da3 kind: POINTER @@ -18831,11 +18596,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x93e8e7b0 } -pointer_reference { - id: 0x2e6ac856 - kind: POINTER - pointee_type_id: 0x93ebc7c6 -} pointer_reference { id: 0x2e6c8788 kind: POINTER @@ -19156,11 +18916,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x90f57fd0 } -pointer_reference { - id: 0x2eae2318 - kind: POINTER - pointee_type_id: 0x90f86afe -} pointer_reference { id: 0x2eaed94d kind: POINTER @@ -19236,11 +18991,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x90adbc21 } -pointer_reference { - id: 0x2ebb6897 - kind: POINTER - pointee_type_id: 0x90ad44c2 -} pointer_reference { id: 0x2ebb9477 kind: POINTER @@ -19566,11 +19316,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x912037b8 } -pointer_reference { - id: 0x2ed842b7 - kind: POINTER - pointee_type_id: 0x9121ec42 -} pointer_reference { id: 0x2ed870a7 kind: POINTER @@ -19776,11 +19521,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x91e36693 } -pointer_reference { - id: 0x2ee94408 - kind: POINTER - pointee_type_id: 0x91e5f6bf -} pointer_reference { id: 0x2ee95f08 kind: POINTER @@ -20471,16 +20211,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x97012809 } -pointer_reference { - id: 0x2f509af6 - kind: POINTER - pointee_type_id: 0x97028d47 -} -pointer_reference { - id: 0x2f50a983 - kind: POINTER - pointee_type_id: 0x97024092 -} pointer_reference { id: 0x2f515c44 kind: POINTER @@ -20721,11 +20451,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0x97b2b8d0 } -pointer_reference { - id: 0x2f7f5489 - kind: POINTER - pointee_type_id: 0x97bdb4b8 -} pointer_reference { id: 0x2f805571 kind: POINTER @@ -22206,11 +21931,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xed640f62 } -pointer_reference { - id: 0x31cb364e - kind: POINTER - pointee_type_id: 0xed6c3fa4 -} pointer_reference { id: 0x31cbe3b8 kind: POINTER @@ -22351,11 +22071,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe2cebd77 } -pointer_reference { - id: 0x322509a0 - kind: POINTER - pointee_type_id: 0xe2d4c01c -} pointer_reference { id: 0x322c8c4b kind: POINTER @@ -22756,21 +22471,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe62af112 } -pointer_reference { - id: 0x331b3d77 - kind: POINTER - pointee_type_id: 0xe62c1341 -} pointer_reference { id: 0x331b9666 kind: POINTER pointee_type_id: 0xe62ebf07 } -pointer_reference { - id: 0x331e2c82 - kind: POINTER - pointee_type_id: 0xe6385497 -} pointer_reference { id: 0x331fc64d kind: POINTER @@ -22886,11 +22591,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe7643c7c } -pointer_reference { - id: 0x334b2254 - kind: POINTER - pointee_type_id: 0xe76c6fcf -} pointer_reference { id: 0x334c0532 kind: POINTER @@ -23786,11 +23486,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xfe81d85b } -pointer_reference { - id: 0x35324dc4 - kind: POINTER - pointee_type_id: 0xfe89d18d -} pointer_reference { id: 0x3536f126 kind: POINTER @@ -24046,11 +23741,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xfd600427 } -pointer_reference { - id: 0x35cc4540 - kind: POINTER - pointee_type_id: 0xfd71f39d -} pointer_reference { id: 0x35d0c5ee kind: POINTER @@ -24251,11 +23941,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf2a3d079 } -pointer_reference { - id: 0x363b9249 - kind: POINTER - pointee_type_id: 0xf2aeafb9 -} pointer_reference { id: 0x363f43e7 kind: POINTER @@ -24391,11 +24076,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf03663da } -pointer_reference { - id: 0x36a2b57a - kind: POINTER - pointee_type_id: 0xf0ca3374 -} pointer_reference { id: 0x36a41f54 kind: POINTER @@ -24551,11 +24231,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf18067ea } -pointer_reference { - id: 0x36f0529f - kind: POINTER - pointee_type_id: 0xf181ace2 -} pointer_reference { id: 0x36f0c7ee kind: POINTER @@ -24986,11 +24661,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf5228665 } -pointer_reference { - id: 0x37d96371 - kind: POINTER - pointee_type_id: 0xf5256b58 -} pointer_reference { id: 0x37dafd0a kind: POINTER @@ -25086,11 +24756,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf5b0198f } -pointer_reference { - id: 0x37fc9b61 - kind: POINTER - pointee_type_id: 0xf5b28b19 -} pointer_reference { id: 0x37fdbcb1 kind: POINTER @@ -25506,11 +25171,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc9cc379b } -pointer_reference { - id: 0x38e86333 - kind: POINTER - pointee_type_id: 0xc9e16a53 -} pointer_reference { id: 0x38ec2eab kind: POINTER @@ -26346,11 +26006,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc60bc51e } -pointer_reference { - id: 0x3b15fe1d - kind: POINTER - pointee_type_id: 0xc6171ee9 -} pointer_reference { id: 0x3b19594b kind: POINTER @@ -26621,16 +26276,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc48494d4 } -pointer_reference { - id: 0x3bc2a7f0 - kind: POINTER - pointee_type_id: 0xc54a795e -} -pointer_reference { - id: 0x3bc62241 - kind: POINTER - pointee_type_id: 0xc5586f9b -} pointer_reference { id: 0x3bc90e1f kind: POINTER @@ -26641,11 +26286,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc5640d2a } -pointer_reference { - id: 0x3bcbf8c5 - kind: POINTER - pointee_type_id: 0xc56f0588 -} pointer_reference { id: 0x3bccaec1 kind: POINTER @@ -26906,11 +26546,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdbcfcd34 } -pointer_reference { - id: 0x3c6958c4 - kind: POINTER - pointee_type_id: 0xdbe5858f -} pointer_reference { id: 0x3c6a6bbc kind: POINTER @@ -26941,11 +26576,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd84f47eb } -pointer_reference { - id: 0x3c88afe7 - kind: POINTER - pointee_type_id: 0xd8625902 -} pointer_reference { id: 0x3c88bbfa kind: POINTER @@ -27176,11 +26806,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdf713fb7 } -pointer_reference { - id: 0x3d5133eb - kind: POINTER - pointee_type_id: 0xdf042930 -} pointer_reference { id: 0x3d551c03 kind: POINTER @@ -27326,11 +26951,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdcc24511 } -pointer_reference { - id: 0x3da548f2 - kind: POINTER - pointee_type_id: 0xdcd5c554 -} pointer_reference { id: 0x3da9f5e9 kind: POINTER @@ -27626,11 +27246,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd298e888 } -pointer_reference { - id: 0x3e3a4a9e - kind: POINTER - pointee_type_id: 0xd2a9cce7 -} pointer_reference { id: 0x3e44cfd7 kind: POINTER @@ -27896,11 +27511,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd1f94ea7 } -pointer_reference { - id: 0x3ef473d4 - kind: POINTER - pointee_type_id: 0xd19129ce -} pointer_reference { id: 0x3ef55b88 kind: POINTER @@ -29016,11 +28626,6 @@ typedef { name: "gid_t" referred_type_id: 0x012a99e5 } -typedef { - id: 0x1b4ba19a - name: "gpa_t" - referred_type_id: 0x92233392 -} typedef { id: 0xa98dedee name: "gro_result_t" @@ -29221,16 +28826,6 @@ typedef { name: "kvm_pfn_t" referred_type_id: 0x5db53aa1 } -typedef { - id: 0x7eadb465 - name: "kvm_pgtable_force_pte_cb_t" - referred_type_id: 0x3c88afe7 -} -typedef { - id: 0xf2ecf779 - name: "kvm_pgtable_pte_is_counted_cb_t" - referred_type_id: 0x331e2c82 -} typedef { id: 0x6ee0bcff name: "kvm_pte_t" @@ -29481,11 +29076,6 @@ typedef { name: "pid_t" referred_type_id: 0x763389c7 } -typedef { - id: 0x16864222 - name: "pkvm_handle_t" - referred_type_id: 0x4585663f -} typedef { id: 0xf017819f name: "pm_message_t" @@ -30561,21 +30151,11 @@ qualified { qualifier: CONST qualified_type_id: 0x64a438fc } -qualified { - id: 0xc54a795e - qualifier: CONST - qualified_type_id: 0x656e53f1 -} qualified { id: 0xc5640d2a qualifier: CONST qualified_type_id: 0x65d78220 } -qualified { - id: 0xc56f0588 - qualifier: CONST - qualified_type_id: 0x65fba0a9 -} qualified { id: 0xc5725d9a qualifier: CONST @@ -31306,11 +30886,6 @@ qualified { qualifier: CONST qualified_type_id: 0x399c459b } -qualified { - id: 0xd2a9cce7 - qualifier: CONST - qualified_type_id: 0x3ae08515 -} qualified { id: 0xd2d7132a qualifier: CONST @@ -32726,11 +32301,6 @@ qualified { qualifier: CONST qualified_type_id: 0xc5d78b03 } -qualified { - id: 0xed6c3fa4 - qualifier: CONST - qualified_type_id: 0xc5f74818 -} qualified { id: 0xed856aa8 qualifier: CONST @@ -33036,11 +32606,6 @@ qualified { qualifier: CONST qualified_type_id: 0xa4cdaf1d } -qualified { - id: 0xf5256b58 - qualifier: CONST - qualified_type_id: 0xa4d21be9 -} qualified { id: 0xf52b12b6 qualifier: CONST @@ -33091,11 +32656,6 @@ qualified { qualifier: CONST qualified_type_id: 0xa687d0b4 } -qualified { - id: 0xf5b28b19 - qualifier: CONST - qualified_type_id: 0xa68d9aed -} qualified { id: 0xf5d07691 qualifier: CONST @@ -33725,11 +33285,6 @@ array { number_of_elements: 56 element_type_id: 0x384f7d7c } -array { - id: 0x01e90d51 - number_of_elements: 64 - element_type_id: 0xc9082b19 -} array { id: 0x01ef5f77 number_of_elements: 80 @@ -34480,11 +34035,6 @@ array { number_of_elements: 7 element_type_id: 0xb3e7bac9 } -array { - id: 0x4449c48b - number_of_elements: 32 - element_type_id: 0x421531e8 -} array { id: 0x4472656b number_of_elements: 16 @@ -34500,11 +34050,6 @@ array { number_of_elements: 2 element_type_id: 0xa047de54 } -array { - id: 0x44c5e79a - number_of_elements: 32 - element_type_id: 0x4025bdaf -} array { id: 0x44ef98e3 number_of_elements: 16 @@ -34580,11 +34125,6 @@ array { number_of_elements: 2 element_type_id: 0x99300838 } -array { - id: 0x4b27ac3d - number_of_elements: 16 - element_type_id: 0x1c51bab0 -} array { id: 0x4b395ad9 number_of_elements: 256 @@ -34620,11 +34160,6 @@ array { number_of_elements: 256 element_type_id: 0xc9082b19 } -array { - id: 0x4c3e1687 - number_of_elements: 2 - element_type_id: 0x825d5993 -} array { id: 0x4c4654d5 number_of_elements: 7 @@ -34755,11 +34290,6 @@ array { number_of_elements: 10 element_type_id: 0x92233392 } -array { - id: 0x53bf0b06 - number_of_elements: 32 - element_type_id: 0x1dce0fdd -} array { id: 0x5408a5f2 number_of_elements: 2 @@ -34905,11 +34435,6 @@ array { number_of_elements: 32 element_type_id: 0x21069feb } -array { - id: 0x5d2762c3 - number_of_elements: 2 - element_type_id: 0xc6388883 -} array { id: 0x5e18785f number_of_elements: 16 @@ -35185,11 +34710,6 @@ array { number_of_elements: 2 element_type_id: 0x064d6086 } -array { - id: 0x6d4372c7 - number_of_elements: 2 - element_type_id: 0x07a8c893 -} array { id: 0x6d472730 number_of_elements: 32 @@ -35245,21 +34765,11 @@ array { number_of_elements: 7 element_type_id: 0x1e18ac15 } -array { - id: 0x6fb0151f - number_of_elements: 32 - element_type_id: 0xedf277ba -} array { id: 0x6fde7229 number_of_elements: 2 element_type_id: 0x0ddccb29 } -array { - id: 0x70444415 - number_of_elements: 32 - element_type_id: 0x92233392 -} array { id: 0x70bb96a6 number_of_elements: 7 @@ -35365,11 +34875,6 @@ array { number_of_elements: 2 element_type_id: 0x6bc0e8a0 } -array { - id: 0x774f5f7f - number_of_elements: 16 - element_type_id: 0xedf277ba -} array { id: 0x77f6971e number_of_elements: 2 @@ -35755,11 +35260,6 @@ array { number_of_elements: 4 element_type_id: 0x0ab21434 } -array { - id: 0x8f5ceaee - number_of_elements: 4 - element_type_id: 0x0c47e7d1 -} array { id: 0x8fc9368a number_of_elements: 1 @@ -35770,11 +35270,6 @@ array { number_of_elements: 4 element_type_id: 0x0ee0f933 } -array { - id: 0x904f12e1 - number_of_elements: 9 - element_type_id: 0xedf277ba -} array { id: 0x91412a6e number_of_elements: 1 @@ -35840,11 +35335,6 @@ array { number_of_elements: 6 element_type_id: 0xdce3c92e } -array { - id: 0x9819cf84 - number_of_elements: 1 - element_type_id: 0xb740a439 -} array { id: 0x982afc69 number_of_elements: 6 @@ -35865,11 +35355,6 @@ array { number_of_elements: 31 element_type_id: 0x58757be8 } -array { - id: 0x9addce46 - number_of_elements: 6 - element_type_id: 0xedf277ba -} array { id: 0x9b2d4673 number_of_elements: 4 @@ -36130,11 +35615,6 @@ array { number_of_elements: 2048 element_type_id: 0xb3e7bac9 } -array { - id: 0xae993a3b - number_of_elements: 1 - element_type_id: 0x6d4372c7 -} array { id: 0xaf023c73 number_of_elements: 1 @@ -36230,11 +35710,6 @@ array { number_of_elements: 6 element_type_id: 0x5d8155a5 } -array { - id: 0xb717646a - number_of_elements: 1 - element_type_id: 0x0b7a0b83 -} array { id: 0xb7237aa3 number_of_elements: 1 @@ -36245,11 +35720,6 @@ array { number_of_elements: 4 element_type_id: 0xedf277ba } -array { - id: 0xb740a439 - number_of_elements: 988 - element_type_id: 0x6720d32f -} array { id: 0xb77dc255 number_of_elements: 31 @@ -36694,10 +36164,6 @@ array { number_of_elements: 14 element_type_id: 0x384f7d7c } -array { - id: 0xd2fe57e5 - element_type_id: 0x5b1f6457 -} array { id: 0xd3067a59 number_of_elements: 8 @@ -36711,10 +36177,6 @@ array { id: 0xd359db99 element_type_id: 0x5d8155a5 } -array { - id: 0xd39aff0d - element_type_id: 0x5e8dc7f4 -} array { id: 0xd3d96d30 number_of_elements: 8 @@ -36781,11 +36243,6 @@ array { id: 0xd9c2196b element_type_id: 0x77ee5e6d } -array { - id: 0xda277458 - number_of_elements: 15 - element_type_id: 0xb3e7bac9 -} array { id: 0xda50e95d number_of_elements: 42 @@ -37293,10 +36750,6 @@ array { number_of_elements: 5 element_type_id: 0x5a38311c } -array { - id: 0xffdb6969 - element_type_id: 0xef8b9e67 -} member { id: 0x205fa3df type_id: 0x0e50ff6f @@ -37376,10 +36829,6 @@ member { id: 0x22b4d212 type_id: 0x05fd3859 } -member { - id: 0x22c0fbbc - type_id: 0x042d9ee3 -} member { id: 0x22ce0593 type_id: 0x0416665f @@ -37392,10 +36841,6 @@ member { id: 0x230f36dc type_id: 0x0312ab60 } -member { - id: 0x233f54d1 - type_id: 0x03d32356 -} member { id: 0x2380a48f type_id: 0x012ce22f @@ -37683,10 +37128,6 @@ member { id: 0x2d400d39 type_id: 0x3a2e44f7 } -member { - id: 0x2d6cb85c - type_id: 0x3a9c9162 -} member { id: 0x2d71506c type_id: 0x3aeb31a3 @@ -37843,11 +37284,6 @@ member { type_id: 0x4db29c07 offset: 3584 } -member { - id: 0x30c18aff - type_id: 0x4c287de0 - offset: 96 -} member { id: 0x30d0761f type_id: 0x4c6fa86e @@ -38006,11 +37442,6 @@ member { type_id: 0x44e0bbd2 offset: 512 } -member { - id: 0x32f872a3 - type_id: 0x44cf9d95 - offset: 128 -} member { id: 0x32f92d43 type_id: 0x44cad962 @@ -38201,11 +37632,6 @@ member { type_id: 0x5e68e6b1 offset: 64 } -member { - id: 0x345b10fd - type_id: 0x5e422cfb - offset: 320 -} member { id: 0x345b12e5 type_id: 0x5e4227fb @@ -38258,11 +37684,6 @@ member { id: 0x34a07297 type_id: 0x5dafba4f } -member { - id: 0x34a3e933 - type_id: 0x5da1f3d6 - offset: 128 -} member { id: 0x34a73897 type_id: 0x5db28e31 @@ -38325,21 +37746,6 @@ member { id: 0x3522cd70 type_id: 0x5ba545d0 } -member { - id: 0x353b064f - type_id: 0x5bc27631 - offset: 320 -} -member { - id: 0x353d48f5 - type_id: 0x5bdb70e0 - offset: 192 -} -member { - id: 0x3551435a - type_id: 0x5a6b6efc - offset: 64 -} member { id: 0x3568359b type_id: 0x5a8e8177 @@ -38462,16 +37868,6 @@ member { type_id: 0x54b76778 offset: 64 } -member { - id: 0x36fb8f0a - type_id: 0x54c04e96 - offset: 256 -} -member { - id: 0x371515be - type_id: 0x537a3f0f - offset: 640 -} member { id: 0x3726cc57 type_id: 0x53b5414d @@ -38522,11 +37918,6 @@ member { id: 0x37f149da type_id: 0x50eb577a } -member { - id: 0x37f52c8e - type_id: 0x50fafc25 - offset: 66880 -} member { id: 0x3801ddd5 type_id: 0x6f2909ad @@ -38608,11 +37999,6 @@ member { type_id: 0x69066ca6 offset: 64 } -member { - id: 0x398b7926 - type_id: 0x6903870d - offset: 64 -} member { id: 0x39a6859a type_id: 0x69b475fe @@ -38717,10 +38103,6 @@ member { type_id: 0x63db5ef9 offset: 64 } -member { - id: 0x3b3d55bb - type_id: 0x63db26fc -} member { id: 0x3b65917c type_id: 0x62b835e0 @@ -39055,11 +38437,6 @@ member { type_id: 0x74c3ae4c offset: 1024 } -member { - id: 0x3f0e6b4d - type_id: 0x7317df8a - offset: 256 -} member { id: 0x3f155004 type_id: 0x737b0daa @@ -39172,10 +38549,6 @@ member { id: 0x3fd6133e type_id: 0x70763ce9 } -member { - id: 0x3fee6444 - type_id: 0x7097e100 -} member { id: 0x3ff2757d type_id: 0x70e783e8 @@ -39592,12 +38965,6 @@ member { name: "_80" type_id: 0x312fa971 } -member { - id: 0xfc4129b1 - name: "____srcu_idx" - type_id: 0x6720d32f - offset: 352 -} member { id: 0x36aedf4a name: "__align" @@ -39749,9 +39116,9 @@ member { offset: 576 } member { - id: 0x983c1d18 + id: 0x982c7c86 name: "__hyp_running_vcpu" - type_id: 0x08dcfb76 + type_id: 0x18bd6530 offset: 14528 } member { @@ -39787,12 +39154,6 @@ member { type_id: 0x1892e9b4 offset: 8 } -member { - id: 0xf0778c7b - name: "__memslots" - type_id: 0xae993a3b - offset: 960 -} member { id: 0x12f2249e name: "__multicast" @@ -40812,12 +40173,6 @@ member { type_id: 0x0baa70a7 offset: 32 } -member { - id: 0xb41bc738 - name: "abi_rev" - type_id: 0xc9082b19 - offset: 1152 -} member { id: 0x370a3acc name: "abort" @@ -41272,12 +40627,6 @@ member { type_id: 0x4585663f offset: 384 } -member { - id: 0xcb7a7a49 - name: "access_flags" - type_id: 0x4585663f - offset: 96 -} member { id: 0x4d798a84 name: "access_memory" @@ -41540,12 +40889,6 @@ member { type_id: 0xe62ebf07 offset: 128 } -member { - id: 0x1cafacfd - name: "acpi_cpuid" - type_id: 0x33756485 - offset: 4416 -} member { id: 0x4ff7664a name: "acpi_match" @@ -41844,12 +41187,6 @@ member { name: "active" type_id: 0x6d7f5ff6 } -member { - id: 0x224f240b - name: "active" - type_id: 0x6d7f5ff6 - offset: 496 -} member { id: 0x224f2849 name: "active" @@ -42141,12 +41478,6 @@ member { type_id: 0x33756485 offset: 128 } -member { - id: 0x8f0fcc44 - name: "active_source" - type_id: 0x295c7202 - offset: 680 -} member { id: 0xfa0d6c00 name: "active_spin_lock" @@ -42472,11 +41803,6 @@ member { type_id: 0x18bd6530 offset: 192 } -member { - id: 0x243694c7 - name: "addr" - type_id: 0x1b4ba19a -} member { id: 0x2440fa86 name: "addr" @@ -43821,12 +43147,6 @@ member { type_id: 0x1a12b190 offset: 320 } -member { - id: 0xaf409590 - name: "alloc_notifier" - type_id: 0x004b03fc - offset: 512 -} member { id: 0x75fd54b0 name: "alloc_pages" @@ -45875,12 +45195,6 @@ member { type_id: 0x92233392 offset: 8896 } -member { - id: 0xac8941f8 - name: "android_kabi_reserved3" - type_id: 0x92233392 - offset: 768 -} member { id: 0xac894244 name: "android_kabi_reserved3" @@ -46337,12 +45651,6 @@ member { type_id: 0x92233392 offset: 1664 } -member { - id: 0xe0f637f1 - name: "android_kabi_reserved4" - type_id: 0x92233392 - offset: 832 -} member { id: 0xe0f6381a name: "android_kabi_reserved4" @@ -46990,24 +46298,6 @@ member { name: "ap_addr" type_id: 0xf90dfce8 } -member { - id: 0xd96ad022 - name: "ap_list" - type_id: 0xd3c80119 - offset: 192 -} -member { - id: 0x18b67de8 - name: "ap_list_head" - type_id: 0xd3c80119 - offset: 31232 -} -member { - id: 0xc8f35c78 - name: "ap_list_lock" - type_id: 0xc8b17aa7 - offset: 31168 -} member { id: 0x6892c863 name: "ap_sme_capa" @@ -47087,12 +46377,6 @@ member { type_id: 0xe93b4eda offset: 128 } -member { - id: 0x5ba521f2 - name: "apic_base" - type_id: 0xedf277ba - offset: 192 -} member { id: 0x5581205d name: "apoll" @@ -47193,53 +46477,24 @@ member { offset: 1730 bitsize: 1 } -member { - id: 0x4a120f63 - name: "ar" - type_id: 0xb3e7bac9 - offset: 64 -} member { id: 0xa86038b6 name: "arbitration_lost" type_id: 0xe62ebf07 offset: 128 } -member { - id: 0xb81bb253 - name: "arch" - type_id: 0xb16454d0 - offset: 2048 -} -member { - id: 0xb81eae99 - name: "arch" - type_id: 0xb47f1c0e -} member { id: 0xb83316b3 name: "arch" type_id: 0x99ce8ef3 offset: 1600 } -member { - id: 0xb857a998 - name: "arch" - type_id: 0xfd71f39d - offset: 20672 -} member { id: 0xb864f388 name: "arch" type_id: 0xce25286b offset: 1728 } -member { - id: 0xb89f1d6b - name: "arch" - type_id: 0x35cc4540 - offset: 256 -} member { id: 0xb8cdfbab name: "arch" @@ -47528,18 +46783,6 @@ member { type_id: 0x4b3cad07 offset: 96 } -member { - id: 0x3496cf62 - name: "args" - type_id: 0xad7c0a89 - offset: 128 -} -member { - id: 0x34a16385 - name: "args" - type_id: 0x9addce46 - offset: 64 -} member { id: 0x34a5187e name: "args" @@ -47551,12 +46794,6 @@ member { type_id: 0x9ea2d4c7 offset: 64 } -member { - id: 0x34abfc7a - name: "args" - type_id: 0x904f12e1 - offset: 128 -} member { id: 0x34fb052c name: "args" @@ -47631,17 +46868,6 @@ member { name: "arm_mali_lpae_cfg" type_id: 0x34992343 } -member { - id: 0xdabb1c55 - name: "arm_nisv" - type_id: 0x102e0991 -} -member { - id: 0xce7b08c8 - name: "arm_pmu" - type_id: 0x331b3d77 - offset: 3008 -} member { id: 0xc71d2276 name: "arm_v7s_cfg" @@ -48781,12 +48007,6 @@ member { type_id: 0xdcbf4c2a offset: 64 } -member { - id: 0x8ce95ca0 - name: "attr" - type_id: 0xedf277ba - offset: 64 -} member { id: 0xa59eb82e name: "attr_g" @@ -48805,12 +48025,6 @@ member { type_id: 0x31f12dcf offset: 3008 } -member { - id: 0xf8037d37 - name: "attr_groups" - type_id: 0xe52f2f44 - offset: 4032 -} member { id: 0xf8e01779 name: "attr_groups" @@ -50655,12 +49869,6 @@ member { name: "base" type_id: 0x1b619644 } -member { - id: 0x85c1a1cb - name: "base" - type_id: 0x1b4ba19a - offset: 64 -} member { id: 0x85c253ee name: "base" @@ -50756,11 +49964,6 @@ member { type_id: 0x33756485 offset: 384 } -member { - id: 0xf9ecc4b7 - name: "base_addr" - type_id: 0x1b4ba19a -} member { id: 0x26b2f753 name: "base_btf" @@ -50807,18 +50010,6 @@ member { type_id: 0x295c7202 offset: 56 } -member { - id: 0x9232ba55 - name: "baser_coll_table" - type_id: 0x92233392 - offset: 576 -} -member { - id: 0x58199dc6 - name: "baser_device_table" - type_id: 0x92233392 - offset: 512 -} member { id: 0x70cac30d name: "bases" @@ -51326,12 +50517,6 @@ member { type_id: 0xd3c80119 offset: 5376 } -member { - id: 0x09a85b04 - name: "be" - type_id: 0x6d7f5ff6 - offset: 128 -} member { id: 0xd4e45e24 name: "be_bits" @@ -51522,12 +50707,6 @@ member { type_id: 0xe62ebf07 offset: 160 } -member { - id: 0xd0847011 - name: "bg_timer" - type_id: 0xcd7704bf - offset: 1664 -} member { id: 0x29a6b069 name: "bgid" @@ -52261,12 +51440,6 @@ member { type_id: 0x295c7202 offset: 8 } -member { - id: 0xbab5eab6 - name: "bits_per_irq" - type_id: 0x4585663f - offset: 64 -} member { id: 0x6cf5d11a name: "bits_per_lane_and_dclk_cycle" @@ -52719,12 +51892,6 @@ member { type_id: 0x6d7f5ff6 offset: 2184 } -member { - id: 0x8efec678 - name: "blocking" - type_id: 0x92233392 - offset: 6592 -} member { id: 0x48c48bbc name: "blocking_domain" @@ -53938,12 +53105,6 @@ member { type_id: 0xc9082b19 offset: 2624 } -member { - id: 0xe6502bd9 - name: "bucket_size" - type_id: 0xe62ebf07 - offset: 96 -} member { id: 0xff0ba4fe name: "buckets" @@ -55087,12 +54248,6 @@ member { type_id: 0x5d8155a5 offset: 32 } -member { - id: 0xfa427670 - name: "buses" - type_id: 0x8f5ceaee - offset: 19328 -} member { id: 0x854f5ea0 name: "busn_res" @@ -57062,12 +56217,6 @@ member { type_id: 0x6720d32f offset: 32 } -member { - id: 0xa779a4af - name: "capacity" - type_id: 0x6720d32f - offset: 192 -} member { id: 0xa7f37e69 name: "capacity" @@ -57487,12 +56636,6 @@ member { type_id: 0x18bd6530 offset: 320 } -member { - id: 0xd83a0eba - name: "cbaser" - type_id: 0x92233392 - offset: 1024 -} member { id: 0xd34c00a5 name: "cbovldmask" @@ -57914,12 +57057,6 @@ member { type_id: 0x6720d32f offset: 608 } -member { - id: 0x9608d64b - name: "cflags" - type_id: 0x295c7202 - offset: 15392 -} member { id: 0xd57ac3a1 name: "cfs" @@ -58372,12 +57509,6 @@ member { type_id: 0x2dbed6d8 offset: 19520 } -member { - id: 0x83d10832 - name: "change_pte" - type_id: 0x0c166597 - offset: 256 -} member { id: 0x8c70199e name: "change_queue_depth" @@ -59152,11 +58283,6 @@ member { name: "chip" type_id: 0xadd7ccb6 } -member { - id: 0xc6fa2a23 - name: "chip" - type_id: 0x9819cf84 -} member { id: 0x50c82005 name: "chip_data" @@ -59934,18 +59060,6 @@ member { type_id: 0x13580d6c offset: 14464 } -member { - id: 0x2d61ef43 - name: "clear_event_idx" - type_id: 0x0f7dbeee - offset: 2816 -} -member { - id: 0xe32eadd5 - name: "clear_flush_young" - type_id: 0x2f509af6 - offset: 64 -} member { id: 0x0d593536 name: "clear_list" @@ -60022,12 +59136,6 @@ member { type_id: 0x1f3c8679 offset: 384 } -member { - id: 0xf2531964 - name: "clear_young" - type_id: 0x2f509af6 - offset: 128 -} member { id: 0xf225f799 name: "cleared" @@ -61066,12 +60174,6 @@ member { type_id: 0xd3c80119 offset: 1280 } -member { - id: 0x28ddf56e - name: "cmd_lock" - type_id: 0xa7c362b0 - offset: 640 -} member { id: 0xc134320b name: "cmd_mask" @@ -61404,24 +60506,6 @@ member { type_id: 0x30fbef83 offset: 10880 } -member { - id: 0xe2ce2718 - name: "coalesced_mmio" - type_id: 0xffdb6969 - offset: 64 -} -member { - id: 0x48aab379 - name: "coalesced_mmio_ring" - type_id: 0x2ced036e - offset: 24640 -} -member { - id: 0x02a639fa - name: "coalesced_zones" - type_id: 0xd3c80119 - offset: 24768 -} member { id: 0x5406c379 name: "code" @@ -61584,12 +60668,6 @@ member { type_id: 0x6d7f5ff6 offset: 192 } -member { - id: 0x6710a2d3 - name: "col_idx" - type_id: 0x914dbfdc - offset: 928 -} member { id: 0x48c91cfd name: "collection" @@ -61602,12 +60680,6 @@ member { type_id: 0x4585663f offset: 32 } -member { - id: 0x5a9c1331 - name: "collection_list" - type_id: 0xd3c80119 - offset: 1728 -} member { id: 0xd205c634 name: "collection_size" @@ -62883,12 +61955,6 @@ member { name: "config" type_id: 0x92233392 } -member { - id: 0xd1469e0e - name: "config" - type_id: 0xe357f5b0 - offset: 704 -} member { id: 0xd1483d50 name: "config" @@ -63909,12 +62975,6 @@ member { type_id: 0x0baa70a7 offset: 96 } -member { - id: 0xfcd19375 - name: "control" - type_id: 0xedf277ba - offset: 64 -} member { id: 0xfcf56dc8 name: "control" @@ -64727,12 +63787,6 @@ member { name: "count" type_id: 0xc9082b19 } -member { - id: 0x65ec5e2d - name: "count" - type_id: 0xc9082b19 - offset: 128 -} member { id: 0x6a729dee name: "count_buckets" @@ -64866,23 +63920,11 @@ member { type_id: 0x21ebac93 offset: 256 } -member { - id: 0x9ba00ef7 - name: "cpl" - type_id: 0xe62ebf07 - offset: 32 -} member { id: 0x92c2a1ed name: "cpp" type_id: 0x861a0f9a } -member { - id: 0x0cc65d59 - name: "cptr_el2" - type_id: 0x92233392 - offset: 14976 -} member { id: 0x510c8cb9 name: "cpu" @@ -65000,12 +64042,6 @@ member { type_id: 0xe62ebf07 offset: 544 } -member { - id: 0x51e0ba6b - name: "cpu" - type_id: 0xe62ebf07 - offset: 64 -} member { id: 0x4c158848 name: "cpu_addr_fixup" @@ -65127,12 +64163,6 @@ member { type_id: 0x4585663f offset: 384 } -member { - id: 0x502de800 - name: "cpu_pm_nb" - type_id: 0x449a775b - offset: 3840 -} member { id: 0xd7b3f93b name: "cpu_pwqs" @@ -65651,12 +64681,6 @@ member { type_id: 0x2706dc09 offset: 2176 } -member { - id: 0x00fa5522 - name: "cr8" - type_id: 0xedf277ba - offset: 128 -} member { id: 0xf3e73479 name: "cra_alignmask" @@ -65793,18 +64817,6 @@ member { type_id: 0x70e54b38 offset: 64 } -member { - id: 0x110caede - name: "creadr" - type_id: 0xc9082b19 - offset: 1088 -} -member { - id: 0x0fad648a - name: "create" - type_id: 0x2e1b59dd - offset: 64 -} member { id: 0x0fae5380 name: "create" @@ -65880,18 +64892,6 @@ member { offset: 2720 bitsize: 1 } -member { - id: 0x92faaaee - name: "created" - type_id: 0x6d7f5ff6 - offset: 4448 -} -member { - id: 0x221ad62a - name: "created_vcpus" - type_id: 0x6720d32f - offset: 18752 -} member { id: 0xced3c28a name: "cred" @@ -66382,11 +65382,6 @@ member { type_id: 0x295c7202 offset: 656 } -member { - id: 0x5d7bf520 - name: "csr_num" - type_id: 0x33756485 -} member { id: 0xde0d95ff name: "css" @@ -66654,12 +65649,6 @@ member { type_id: 0x3747dc62 offset: 256 } -member { - id: 0x8ed30508 - name: "ctlr" - type_id: 0x74d29cf1 - offset: 31872 -} member { id: 0x7d794a79 name: "ctm" @@ -66965,11 +65954,6 @@ member { name: "ctxsize" type_id: 0x39ee9172 } -member { - id: 0x2723fe2c - name: "ctxt" - type_id: 0x6a241fb6 -} member { id: 0x91091e90 name: "cur" @@ -67589,12 +66573,6 @@ member { offset: 111 bitsize: 1 } -member { - id: 0x09c4ee83 - name: "cwriter" - type_id: 0xc9082b19 - offset: 1120 -} member { id: 0x9ed15d15 name: "cxl" @@ -68364,12 +67342,6 @@ member { type_id: 0xc8c766a0 offset: 64 } -member { - id: 0xff5aeac8 - name: "data" - type_id: 0xc8c766a0 - offset: 128 -} member { id: 0xff5b2c47 name: "data" @@ -68423,12 +67395,6 @@ member { type_id: 0xe06ae107 offset: 480 } -member { - id: 0xff7407e8 - name: "data" - type_id: 0xe62ebf07 - offset: 32 -} member { id: 0xff770e06 name: "data" @@ -68459,12 +67425,6 @@ member { type_id: 0xedf277ba offset: 64 } -member { - id: 0xff7fdfd9 - name: "data" - type_id: 0xedf277ba - offset: 128 -} member { id: 0xff886278 name: "data" @@ -68812,17 +67772,6 @@ member { name: "data" type_id: 0x764913b9 } -member { - id: 0xffe56b33 - name: "data" - type_id: 0x774f5f7f -} -member { - id: 0xffe56fd2 - name: "data" - type_id: 0x774f5f7f - offset: 64 -} member { id: 0xffe71c01 name: "data" @@ -69031,12 +67980,6 @@ member { type_id: 0x4585663f offset: 320 } -member { - id: 0x97a5dcff - name: "data_offset" - type_id: 0xedf277ba - offset: 64 -} member { id: 0x97a5dfa6 name: "data_offset" @@ -69359,18 +68302,6 @@ member { type_id: 0x36691375 offset: 64 } -member { - id: 0xd3a54092 - name: "db_bitmap" - type_id: 0x064d6086 - offset: 384 -} -member { - id: 0x3baa0bf3 - name: "db_lpi_base" - type_id: 0x22b36393 - offset: 320 -} member { id: 0xf540eeb1 name: "db_off" @@ -69389,17 +68320,6 @@ member { type_id: 0x18bd6530 offset: 59200 } -member { - id: 0x5cb6e321 - name: "dbg_bcr" - type_id: 0x774f5f7f -} -member { - id: 0xb8d95da8 - name: "dbg_bvr" - type_id: 0x774f5f7f - offset: 1024 -} member { id: 0x7a634154 name: "dbg_client_name" @@ -69436,18 +68356,6 @@ member { type_id: 0x0effb461 offset: 2944 } -member { - id: 0x6a57f232 - name: "dbg_wcr" - type_id: 0x774f5f7f - offset: 2048 -} -member { - id: 0x88756f7c - name: "dbg_wvr" - type_id: 0x774f5f7f - offset: 3072 -} member { id: 0x24017197 name: "dbi_base" @@ -69490,12 +68398,6 @@ member { type_id: 0x4585663f offset: 128 } -member { - id: 0x0a10a4f8 - name: "dcache_clean_inval_poc" - type_id: 0x0fc9cef8 - offset: 512 -} member { id: 0x14599da8 name: "dcbaa" @@ -69600,11 +68502,6 @@ member { type_id: 0x4585663f offset: 64 } -member { - id: 0xc747f834 - name: "dcr" - type_id: 0x24232993 -} member { id: 0xc74a8b1e name: "dcr" @@ -69617,11 +68514,6 @@ member { type_id: 0xb3e7bac9 offset: 8 } -member { - id: 0xf1c2dba4 - name: "dcrn" - type_id: 0xe62ebf07 -} member { id: 0x50d8a1f7 name: "dct_part_sizes" @@ -69877,11 +68769,6 @@ member { type_id: 0x0c8ded5e offset: 256 } -member { - id: 0x07307794 - name: "debug" - type_id: 0x366bef7d -} member { id: 0x073956d8 name: "debug" @@ -69960,12 +68847,6 @@ member { type_id: 0x49a73111 offset: 1792 } -member { - id: 0x7e662956 - name: "debug_ptr" - type_id: 0x1cd322d1 - offset: 15424 -} member { id: 0x2c8c53b8 name: "debug_rdesc" @@ -70044,12 +68925,6 @@ member { type_id: 0x120540d1 offset: 576 } -member { - id: 0x6425d0fe - name: "debugfs_dentry" - type_id: 0x120540d1 - offset: 26432 -} member { id: 0x35a0a098 name: "debugfs_dir" @@ -70242,12 +69117,6 @@ member { type_id: 0x120540d1 offset: 59008 } -member { - id: 0xcd446a90 - name: "debugfs_stat_data" - type_id: 0x073894f9 - offset: 26496 -} member { id: 0xa113b6ec name: "debugfs_tot_len" @@ -71389,12 +70258,6 @@ member { type_id: 0x0c4d6f90 offset: 128 } -member { - id: 0x8a59e26d - name: "dequeued" - type_id: 0xb3e7bac9 - offset: 128 -} member { id: 0x7f5400a8 name: "derive_sw_secret" @@ -71413,11 +70276,6 @@ member { type_id: 0xafb28cf7 offset: 16 } -member { - id: 0x87807fd8 - name: "desc" - type_id: 0x5a5219ed -} member { id: 0x8780fb54 name: "desc" @@ -71489,12 +70347,6 @@ member { type_id: 0x0483e6f8 offset: 1344 } -member { - id: 0x87e1eb87 - name: "desc" - type_id: 0x3bc2a7f0 - offset: 64 -} member { id: 0x87e3bc35 name: "desc" @@ -71863,12 +70715,6 @@ member { type_id: 0x0d8e07a0 offset: 384 } -member { - id: 0xa4fbb750 - name: "destroy" - type_id: 0x0d947d59 - offset: 192 -} member { id: 0xa4fbcad2 name: "destroy" @@ -71963,12 +70809,6 @@ member { type_id: 0x0f1728d9 offset: 256 } -member { - id: 0xa414c1a9 - name: "destructor" - type_id: 0x0ee038bb - offset: 128 -} member { id: 0xa414c5c8 name: "destructor" @@ -72242,12 +71082,6 @@ member { type_id: 0x3b04bead offset: 128 } -member { - id: 0xce062759 - name: "dev" - type_id: 0x3fc5b8b3 - offset: 256 -} member { id: 0xce0653f5 name: "dev" @@ -72347,12 +71181,6 @@ member { type_id: 0x326663cd offset: 256 } -member { - id: 0xce0bc034 - name: "dev" - type_id: 0x322509a0 - offset: 448 -} member { id: 0xce13618d name: "dev" @@ -72715,12 +71543,6 @@ member { type_id: 0x0258f96e offset: 2688 } -member { - id: 0xce3c8adf - name: "dev" - type_id: 0x0561578b - offset: 128 -} member { id: 0xce3fe2d9 name: "dev" @@ -72838,11 +71660,6 @@ member { name: "dev_cor_errs" type_id: 0x68bb0e75 } -member { - id: 0xa05ae8b2 - name: "dev_count" - type_id: 0x6720d32f -} member { id: 0xa64bb146 name: "dev_debug" @@ -73633,11 +72450,6 @@ member { name: "device_init" type_id: 0x2f4eca66 } -member { - id: 0xf5b742db - name: "device_irq_level" - type_id: 0xedf277ba -} member { id: 0x4432480f name: "device_is_available" @@ -73669,12 +72481,6 @@ member { offset: 194 bitsize: 1 } -member { - id: 0x5adf7097 - name: "device_list" - type_id: 0xd3c80119 - offset: 1600 -} member { id: 0x5adf788d name: "device_list" @@ -73900,12 +72706,6 @@ member { type_id: 0xd3c80119 offset: 64 } -member { - id: 0x33ed52b5 - name: "devices" - type_id: 0xd3c80119 - offset: 26240 -} member { id: 0x33ed531f name: "devices" @@ -74592,11 +73392,6 @@ member { offset: 41 bitsize: 1 } -member { - id: 0xa02b28d6 - name: "direction" - type_id: 0xb3e7bac9 -} member { id: 0xa069b1d1 name: "direction" @@ -74740,17 +73535,6 @@ member { type_id: 0x34407506 offset: 192 } -member { - id: 0x69efcf5e - name: "dirty_gfns" - type_id: 0x35324dc4 - offset: 128 -} -member { - id: 0x4647cbd4 - name: "dirty_index" - type_id: 0xc9082b19 -} member { id: 0xcd7da86d name: "dirty_inode" @@ -74781,18 +73565,6 @@ member { type_id: 0x33756485 offset: 2368 } -member { - id: 0x0741ce14 - name: "dirty_ring" - type_id: 0x95e9e529 - offset: 77248 -} -member { - id: 0x8de27dbd - name: "dirty_ring_size" - type_id: 0xc9082b19 - offset: 34336 -} member { id: 0xaa41fb92 name: "dirty_sleep" @@ -74840,12 +73612,6 @@ member { type_id: 0x0ff0075d offset: 832 } -member { - id: 0x0d828e0a - name: "disable" - type_id: 0x0f6acd3e - offset: 2688 -} member { id: 0x0d82e48b name: "disable" @@ -75443,12 +74209,6 @@ member { type_id: 0x0e5445cf offset: 128 } -member { - id: 0x1de22279 - name: "disr_el1" - type_id: 0x92233392 - offset: 192 -} member { id: 0x40f260d6 name: "dissector" @@ -75466,18 +74226,6 @@ member { type_id: 0x18bd6530 offset: 64 } -member { - id: 0x929175ec - name: "dist_id" - type_id: 0x6720d32f - offset: 96 -} -member { - id: 0x6fe87475 - name: "dist_iodev" - type_id: 0x60b9a60c - offset: 512 -} member { id: 0x29b12afa name: "div" @@ -78629,12 +77377,6 @@ member { type_id: 0xe62ebf07 offset: 32 } -member { - id: 0xd4f73d44 - name: "dy_eligible" - type_id: 0x6d7f5ff6 - offset: 8 -} member { id: 0x0ca6a6a3 name: "dying" @@ -79600,11 +78342,6 @@ member { offset: 2627 bitsize: 1 } -member { - id: 0x3ba0211e - name: "emulation_failure" - type_id: 0x1bf61cb5 -} member { id: 0x1d3635db name: "en_hw_timestamp" @@ -79700,12 +78437,6 @@ member { name: "enable" type_id: 0x33756485 } -member { - id: 0x98e86c88 - name: "enable" - type_id: 0x0f6acd3e - offset: 2624 -} member { id: 0x98e9418c name: "enable" @@ -80017,18 +78748,6 @@ member { type_id: 0x6d7f5ff6 offset: 9024 } -member { - id: 0x3a2d355a - name: "enabled" - type_id: 0x6d7f5ff6 - offset: 8 -} -member { - id: 0x3a2d3590 - name: "enabled" - type_id: 0x6d7f5ff6 - offset: 504 -} member { id: 0x3a2d367c name: "enabled" @@ -80041,18 +78760,6 @@ member { type_id: 0x6d7f5ff6 offset: 136 } -member { - id: 0x3a2d374f - name: "enabled" - type_id: 0x6d7f5ff6 - offset: 2240 -} -member { - id: 0x3a2d39cb - name: "enabled" - type_id: 0x6d7f5ff6 - offset: 448 -} member { id: 0x3a2d3a5d name: "enabled" @@ -80082,12 +78789,6 @@ member { name: "enabled" type_id: 0x6d7f5ff6 } -member { - id: 0x3a2d3f2e - name: "enabled" - type_id: 0x6d7f5ff6 - offset: 384 -} member { id: 0x3a34937f name: "enabled" @@ -80371,12 +79072,6 @@ member { type_id: 0x18bd6530 offset: 64 } -member { - id: 0x823c26d1 - name: "end" - type_id: 0x33756485 - offset: 192 -} member { id: 0x823c2af9 name: "end" @@ -81106,11 +79801,6 @@ member { type_id: 0x6720d32f offset: 4288 } -member { - id: 0xa2d43869 - name: "eoi" - type_id: 0x38ab0bc9 -} member { id: 0xa2dfe6ad name: "eoi" @@ -81300,16 +79990,6 @@ member { type_id: 0x04fd619c offset: 64 } -member { - id: 0x044a9f42 - name: "epr" - type_id: 0xe62ebf07 -} -member { - id: 0x04b5cf1e - name: "epr" - type_id: 0x197ee30b -} member { id: 0x4571d9d3 name: "eps" @@ -81512,11 +80192,6 @@ member { type_id: 0x914dbfdc offset: 1088 } -member { - id: 0x7fb53355 - name: "error" - type_id: 0xb3e7bac9 -} member { id: 0x7fb6e678 name: "error" @@ -81530,12 +80205,6 @@ member { offset: 6530 bitsize: 1 } -member { - id: 0x76c39912 - name: "error_code" - type_id: 0xe62ebf07 - offset: 32 -} member { id: 0x0b9ba55b name: "error_count" @@ -81721,16 +80390,6 @@ member { name: "esp_ip6_spec" type_id: 0x6df98672 } -member { - id: 0xfe44cfde - name: "esr_el2" - type_id: 0x92233392 -} -member { - id: 0x215cae19 - name: "esr_iss" - type_id: 0xedf277ba -} member { id: 0x951f933e name: "essid" @@ -81976,12 +80635,6 @@ member { name: "event" type_id: 0x82107bd5 } -member { - id: 0x0ad7602b - name: "event" - type_id: 0x98849204 - offset: 288 -} member { id: 0x0add8422 name: "event" @@ -82314,12 +80967,6 @@ member { type_id: 0xdfed0371 offset: 640 } -member { - id: 0x112c08c3 - name: "events" - type_id: 0xd9b5b8b6 - offset: 256 -} member { id: 0x113c8788 name: "events" @@ -82349,11 +80996,6 @@ member { type_id: 0x6d7f5ff6 offset: 1032 } -member { - id: 0x11a602db - name: "events" - type_id: 0x53bf0b06 -} member { id: 0x11c1079f name: "events" @@ -82389,17 +81031,6 @@ member { type_id: 0x0ee0f933 offset: 9984 } -member { - id: 0x97ab0bd6 - name: "events_guest" - type_id: 0xc9082b19 - offset: 32 -} -member { - id: 0xa9fd6a40 - name: "events_host" - type_id: 0xc9082b19 -} member { id: 0x5701ba28 name: "events_local_file" @@ -82454,12 +81085,6 @@ member { type_id: 0x374ce5e7 offset: 256 } -member { - id: 0x89066d93 - name: "evt_page" - type_id: 0xedf277ba - offset: 128 -} member { id: 0x6ad2f83c name: "evt_rx" @@ -82490,22 +81115,12 @@ member { type_id: 0x295c7202 offset: 256 } -member { - id: 0xbba39a9a - name: "ex" - type_id: 0x00e0bdde -} member { id: 0x9941f692 name: "exceed" type_id: 0x1a6854cd offset: 416 } -member { - id: 0x6245278e - name: "exception" - type_id: 0xe62ebf07 -} member { id: 0xc448ecdc name: "exception_arg" @@ -82870,12 +81485,6 @@ member { type_id: 0x92233392 offset: 2624 } -member { - id: 0x4f84d1da - name: "exit_reason" - type_id: 0xe62ebf07 - offset: 64 -} member { id: 0x4648209b name: "exit_request" @@ -82924,12 +81533,6 @@ member { type_id: 0x3fcbf304 offset: 1024 } -member { - id: 0x237f1104 - name: "exits" - type_id: 0x92233392 - offset: 7040 -} member { id: 0x964efc36 name: "exp" @@ -83209,12 +81812,6 @@ member { type_id: 0x33756485 offset: 640 } -member { - id: 0xdf3a40d2 - name: "exponent" - type_id: 0x007e8ce4 - offset: 32 -} member { id: 0x248e76cf name: "export" @@ -83491,11 +82088,6 @@ member { type_id: 0xe62ebf07 offset: 128 } -member { - id: 0xbf324d0a - name: "extension_id" - type_id: 0x33756485 -} member { id: 0x9478fd81 name: "extension_prog" @@ -83540,12 +82132,6 @@ member { offset: 64 bitsize: 1 } -member { - id: 0x15ff4fe5 - name: "external_debug_state" - type_id: 0x590c6dd8 - offset: 19584 -} member { id: 0x77b6c0c4 name: "external_facing" @@ -84015,11 +82601,6 @@ member { name: "fadvise_advice" type_id: 0xe62ebf07 } -member { - id: 0x73029e0c - name: "fail_entry" - type_id: 0x315223c4 -} member { id: 0x75d852d0 name: "failcnt" @@ -84148,18 +82729,6 @@ member { name: "family" type_id: 0xb3e7bac9 } -member { - id: 0xe9c99bd1 - name: "far" - type_id: 0xedf277ba - offset: 64 -} -member { - id: 0x550ab6b9 - name: "far_el2" - type_id: 0x92233392 - offset: 64 -} member { id: 0x0b6f4436 name: "fast_io" @@ -84272,12 +82841,6 @@ member { type_id: 0x25e44921 offset: 1280 } -member { - id: 0x7b6a6e0c - name: "fault" - type_id: 0xe41fd2fe - offset: 15104 -} member { id: 0x7bb750d9 name: "fault" @@ -84319,12 +82882,6 @@ member { type_id: 0x2e08aceb offset: 320 } -member { - id: 0x559b32a7 - name: "fault_ipa" - type_id: 0xedf277ba - offset: 64 -} member { id: 0x5a9c41ae name: "fault_param" @@ -84636,12 +83193,6 @@ member { name: "fc" type_id: 0x98ac6d35 } -member { - id: 0xb86505a9 - name: "fc" - type_id: 0xb3e7bac9 - offset: 80 -} member { id: 0x0cf29fc2 name: "fc_delete_all_nh" @@ -85323,12 +83874,6 @@ member { type_id: 0xb914bfab offset: 11712 } -member { - id: 0xc5a16f87 - name: "features" - type_id: 0xb914bfab - offset: 67264 -} member { id: 0xc5bc078c name: "features" @@ -86732,12 +85277,6 @@ member { name: "filter_list" type_id: 0x09451098 } -member { - id: 0x033b7284 - name: "filter_match" - type_id: 0x2c2ce191 - offset: 3328 -} member { id: 0x033b7c37 name: "filter_match" @@ -86943,11 +85482,6 @@ member { type_id: 0xe62ebf07 offset: 32 } -member { - id: 0x1f01199c - name: "first" - type_id: 0xe62ebf07 -} member { id: 0x1f2e3f08 name: "first" @@ -88027,12 +86561,6 @@ member { type_id: 0x33756485 offset: 2112 } -member { - id: 0x2d5bffb1 - name: "flags" - type_id: 0x33756485 - offset: 2880 -} member { id: 0x2d5bffb9 name: "flags" @@ -88138,12 +86666,6 @@ member { type_id: 0xe8034002 offset: 16 } -member { - id: 0x2d808bd3 - name: "flags" - type_id: 0xe8034002 - offset: 112 -} member { id: 0x2d808bdf name: "flags" @@ -88156,12 +86678,6 @@ member { type_id: 0xedf277ba offset: 448 } -member { - id: 0x2d8572c8 - name: "flags" - type_id: 0xedf277ba - offset: 64 -} member { id: 0x2d8573b6 name: "flags" @@ -88607,12 +87123,6 @@ member { type_id: 0xb3e7bac9 offset: 32 } -member { - id: 0x2ddb7ced - name: "flags" - type_id: 0xb3f81878 - offset: 256 -} member { id: 0x2de12263 name: "flags" @@ -89571,11 +88081,6 @@ member { type_id: 0x6d7f5ff6 offset: 19400 } -member { - id: 0x53106073 - name: "force_pte_cb" - type_id: 0x7eadb465 -} member { id: 0x9bf39d6f name: "force_reset" @@ -89841,12 +88346,6 @@ member { type_id: 0xd19129ce offset: 2432 } -member { - id: 0x06effd42 - name: "fp_state" - type_id: 0x7e388552 - offset: 15360 -} member { id: 0x13eb8d7b name: "fpcr" @@ -90633,12 +89132,6 @@ member { type_id: 0x0e504c4f offset: 832 } -member { - id: 0x3e423a64 - name: "free_index" - type_id: 0xc9082b19 - offset: 160 -} member { id: 0x6f43c6d6 name: "free_inode" @@ -90731,12 +89224,6 @@ member { type_id: 0x0e6750fa offset: 384 } -member { - id: 0xfc81ed63 - name: "free_notifier" - type_id: 0x0c0e84bd - offset: 576 -} member { id: 0x79d71685 name: "free_on_exit" @@ -90755,12 +89242,6 @@ member { type_id: 0x0e6713fe offset: 256 } -member { - id: 0xef540e05 - name: "free_pages_exact" - type_id: 0x0fc9cef8 - offset: 128 -} member { id: 0x54942a8c name: "free_pfn" @@ -91965,12 +90446,6 @@ member { name: "function" type_id: 0xabc38a13 } -member { - id: 0xad24c471 - name: "function_id" - type_id: 0x33756485 - offset: 64 -} member { id: 0x364a66b1 name: "function_num_map" @@ -92618,11 +91093,6 @@ member { type_id: 0x92233392 offset: 1984 } -member { - id: 0x694cfe41 - name: "generation" - type_id: 0x92233392 -} member { id: 0x699b5cf5 name: "generation" @@ -92645,16 +91115,6 @@ member { name: "generic" type_id: 0x09dc021e } -member { - id: 0x42aa8b1f - name: "generic" - type_id: 0x9008e757 -} -member { - id: 0x42be7fea - name: "generic" - type_id: 0x84fc1211 -} member { id: 0x42d6db26 name: "generic" @@ -92879,12 +91339,6 @@ member { type_id: 0x2c80812c offset: 320 } -member { - id: 0xbe7a98dd - name: "get_attr" - type_id: 0x2ee94408 - offset: 384 -} member { id: 0xd9eaaef2 name: "get_boot_addr" @@ -93196,12 +91650,6 @@ member { type_id: 0x0db9efe5 offset: 1600 } -member { - id: 0x09fd4226 - name: "get_event_idx" - type_id: 0x2c3b9241 - offset: 2752 -} member { id: 0xad0b27c9 name: "get_features" @@ -93394,12 +91842,6 @@ member { type_id: 0x2c582e60 offset: 576 } -member { - id: 0x682b5a38 - name: "get_input_level" - type_id: 0x334b2254 - offset: 64 -} member { id: 0x69c08ebc name: "get_intermediate" @@ -93721,12 +92163,6 @@ member { type_id: 0x0cbb9c80 offset: 320 } -member { - id: 0xcf22b6e3 - name: "get_page" - type_id: 0x0f3dfb90 - offset: 192 -} member { id: 0xacf61961 name: "get_params" @@ -94440,24 +92876,12 @@ member { type_id: 0x60282e68 offset: 1024 } -member { - id: 0xc25cb27c - name: "gfn_tree" - type_id: 0xeb923a9b - offset: 256 -} member { id: 0x8b338b1d name: "gfp" type_id: 0xf1a6dfed offset: 320 } -member { - id: 0xde99678b - name: "gfp_custom" - type_id: 0xf1a6dfed - offset: 64 -} member { id: 0x81a9f110 name: "gfp_flags" @@ -94499,12 +92923,6 @@ member { type_id: 0x6d7f5ff6 offset: 16 } -member { - id: 0x8e40fa3f - name: "gfp_zero" - type_id: 0xf1a6dfed - offset: 32 -} member { id: 0x3b2054a4 name: "gicd_typer" @@ -94799,23 +93217,6 @@ member { type_id: 0x03913382 offset: 64 } -member { - id: 0xc1d9a180 - name: "gpa" - type_id: 0x1b4ba19a -} -member { - id: 0xca660682 - name: "gpc_list" - type_id: 0xd3c80119 - offset: 18560 -} -member { - id: 0x46e189ff - name: "gpc_lock" - type_id: 0xf313e71a - offset: 18496 -} member { id: 0x4298e7ea name: "gpd_list_node" @@ -94906,11 +93307,6 @@ member { type_id: 0x3e096c25 offset: 2688 } -member { - id: 0x2bc76984 - name: "gprs" - type_id: 0x6fb0151f -} member { id: 0x1ef489e6 name: "grab" @@ -95103,12 +93499,6 @@ member { name: "group" type_id: 0xe145bd36 } -member { - id: 0xd37422b2 - name: "group" - type_id: 0xe62ebf07 - offset: 32 -} member { id: 0xd37a0cc8 name: "group" @@ -95150,12 +93540,6 @@ member { type_id: 0x2922a3d0 offset: 256 } -member { - id: 0xd3bb5c92 - name: "group" - type_id: 0x295c7202 - offset: 696 -} member { id: 0xd3be02c5 name: "group" @@ -95168,12 +93552,6 @@ member { type_id: 0x6720d32f offset: 2400 } -member { - id: 0xd3ff70d7 - name: "group" - type_id: 0x6d7f5ff6 - offset: 16 -} member { id: 0x26e58ea7 name: "group_caps" @@ -95495,18 +93873,6 @@ member { offset: 2817 bitsize: 1 } -member { - id: 0xd014eabd - name: "guest_debug" - type_id: 0x33756485 - offset: 512 -} -member { - id: 0x57b4f0b1 - name: "guest_debug_preserved" - type_id: 0x2d873b56 - offset: 66752 -} member { id: 0x3cad5ec0 name: "guid" @@ -95643,71 +94009,6 @@ member { type_id: 0xb24f0745 offset: 1024 } -member { - id: 0x0e3de808 - name: "halt_attempted_poll" - type_id: 0x92233392 - offset: 64 -} -member { - id: 0xd7979ded - name: "halt_poll_fail_hist" - type_id: 0x70444415 - offset: 2496 -} -member { - id: 0x5e1d7f8d - name: "halt_poll_fail_ns" - type_id: 0x92233392 - offset: 320 -} -member { - id: 0x5f0d9541 - name: "halt_poll_invalid" - type_id: 0x92233392 - offset: 128 -} -member { - id: 0xcffef03f - name: "halt_poll_ns" - type_id: 0x4585663f - offset: 1280 -} -member { - id: 0x47baacc5 - name: "halt_poll_success_hist" - type_id: 0x70444415 - offset: 448 -} -member { - id: 0xdc094b5c - name: "halt_poll_success_ns" - type_id: 0x92233392 - offset: 256 -} -member { - id: 0x0946dc8b - name: "halt_successful_poll" - type_id: 0x92233392 -} -member { - id: 0x2665d054 - name: "halt_wait_hist" - type_id: 0x70444415 - offset: 4544 -} -member { - id: 0xa1ad1dfd - name: "halt_wait_ns" - type_id: 0x92233392 - offset: 384 -} -member { - id: 0xe9b25d2a - name: "halt_wakeup" - type_id: 0x92233392 - offset: 192 -} member { id: 0xb805b270 name: "handle" @@ -95761,11 +94062,6 @@ member { type_id: 0x29bb2b33 offset: 7424 } -member { - id: 0xb8f5134f - name: "handle" - type_id: 0x16864222 -} member { id: 0xf4a652d3 name: "handle_break" @@ -95819,12 +94115,6 @@ member { type_id: 0x2dfb782b offset: 960 } -member { - id: 0x72a25545 - name: "handle_irq" - type_id: 0x0110ab48 - offset: 2560 -} member { id: 0x33f92e8a name: "handle_kick" @@ -96096,16 +94386,6 @@ member { name: "hardlink_flags" type_id: 0xe62ebf07 } -member { - id: 0xa4a87cc7 - name: "hardware_entry_failure_reason" - type_id: 0xedf277ba -} -member { - id: 0x6364e5fc - name: "hardware_exit_reason" - type_id: 0xedf277ba -} member { id: 0x7a882c59 name: "hardware_test" @@ -96137,12 +94417,6 @@ member { type_id: 0x6d7f5ff6 offset: 856 } -member { - id: 0x5d4925a5 - name: "has_attr" - type_id: 0x2ee94408 - offset: 448 -} member { id: 0x698e14ba name: "has_blocked_load" @@ -96276,12 +94550,6 @@ member { type_id: 0x6d7f5ff6 offset: 64 } -member { - id: 0x557bdab2 - name: "has_its" - type_id: 0x6d7f5ff6 - offset: 832 -} member { id: 0xe114c970 name: "has_ld_abs" @@ -96775,16 +95043,6 @@ member { type_id: 0x4585663f offset: 384 } -member { - id: 0xd9db4be5 - name: "hcall" - type_id: 0x033c2bb8 -} -member { - id: 0xd9dce494 - name: "hcall" - type_id: 0x04935a3e -} member { id: 0x4f00ad96 name: "hcc_params" @@ -96898,12 +95156,6 @@ member { type_id: 0x18bd6530 offset: 128 } -member { - id: 0xc4593e51 - name: "hcr_el2" - type_id: 0x92233392 - offset: 14848 -} member { id: 0xd39b1380 name: "hcs_params" @@ -97429,11 +95681,6 @@ member { type_id: 0x9249a64d offset: 256 } -member { - id: 0xb5e76888 - name: "head" - type_id: 0xbdd18903 -} member { id: 0x61e179fc name: "head_file" @@ -98421,12 +96668,6 @@ member { type_id: 0x18bd6530 offset: 64 } -member { - id: 0x2edd8c13 - name: "host_debug_state" - type_id: 0x385d66bc - offset: 23744 -} member { id: 0x31ca0bed name: "host_deinit" @@ -98451,12 +96692,6 @@ member { type_id: 0x4585663f offset: 3488 } -member { - id: 0x909d979f - name: "host_fpsimd_state" - type_id: 0x3ef473d4 - offset: 23680 -} member { id: 0xda2e02e2 name: "host_init" @@ -98468,12 +96703,6 @@ member { type_id: 0xb914bfab offset: 10112 } -member { - id: 0xc2defa03 - name: "host_irq" - type_id: 0x4585663f - offset: 608 -} member { id: 0xfb8e63cd name: "host_lock" @@ -98580,18 +96809,6 @@ member { offset: 2630 bitsize: 1 } -member { - id: 0xd7232081 - name: "host_timer_irq" - type_id: 0xc9082b19 - offset: 736 -} -member { - id: 0x0b3a6d95 - name: "host_timer_irq_flags" - type_id: 0xc9082b19 - offset: 768 -} member { id: 0x3f896917 name: "host_unshare_hyp" @@ -98755,12 +96972,6 @@ member { type_id: 0x0c9af3aa offset: 1408 } -member { - id: 0xd6cec4c2 - name: "hpfar_el2" - type_id: 0x92233392 - offset: 128 -} member { id: 0xa2d9b50c name: "hpi" @@ -98832,12 +97043,6 @@ member { type_id: 0xcd7704bf offset: 832 } -member { - id: 0x8a1ddc22 - name: "hrtimer" - type_id: 0xcd7704bf - offset: 128 -} member { id: 0x7e4bc277 name: "hrtimer_active" @@ -99022,17 +97227,6 @@ member { type_id: 0x6d7f5ff6 offset: 14016 } -member { - id: 0x8c045ea7 - name: "hsr" - type_id: 0xe62ebf07 -} -member { - id: 0x440037d1 - name: "hsr_high" - type_id: 0xe62ebf07 - offset: 32 -} member { id: 0x06e8b9a4 name: "hsub" @@ -99245,35 +97439,12 @@ member { type_id: 0x4a835590 offset: 256 } -member { - id: 0x130ace31 - name: "hva_tree" - type_id: 0xd0f3b5bf - offset: 128 -} -member { - id: 0x65c703ea - name: "hvc_exit_stat" - type_id: 0x92233392 - offset: 6656 -} member { id: 0x97368b37 name: "hw" type_id: 0xf181ace2 offset: 2816 } -member { - id: 0x97aa71b6 - name: "hw" - type_id: 0x6d7f5ff6 - offset: 512 -} -member { - id: 0x97c7b08c - name: "hw" - type_id: 0x00b57da4 -} member { id: 0x97cde891 name: "hw" @@ -99422,12 +97593,6 @@ member { type_id: 0xb3e7bac9 offset: 6672 } -member { - id: 0x2d3aa998 - name: "hw_events" - type_id: 0x1d65d221 - offset: 3648 -} member { id: 0x912b066b name: "hw_features" @@ -99501,12 +97666,6 @@ member { offset: 58112 bitsize: 1 } -member { - id: 0xf34e08bb - name: "hw_mmu" - type_id: 0x38e86333 - offset: 14784 -} member { id: 0xcc4e42e2 name: "hw_name" @@ -99745,12 +97904,6 @@ member { type_id: 0x2c3d3de2 offset: 1024 } -member { - id: 0xb62bb539 - name: "hwintid" - type_id: 0xc9082b19 - offset: 576 -} member { id: 0xeac4d9d6 name: "hwirq" @@ -99852,16 +98005,6 @@ member { type_id: 0x14e88d4b offset: 1920 } -member { - id: 0x32e7dee3 - name: "hypercall" - type_id: 0x2c32891d -} -member { - id: 0x8a1c8492 - name: "hyperv" - type_id: 0x7ff97877 -} member { id: 0xaf8a45d4 name: "hysteresis" @@ -100452,11 +98595,6 @@ member { type_id: 0x399c459b offset: 192 } -member { - id: 0x83618e44 - name: "ia_bits" - type_id: 0xc9082b19 -} member { id: 0x7af3be67 name: "ia_ctime" @@ -100601,12 +98739,6 @@ member { name: "ibss" type_id: 0x26eb875a } -member { - id: 0x27f5e987 - name: "icache_inval_pou" - type_id: 0x0fc9cef8 - offset: 576 -} member { id: 0x8b721752 name: "icanon" @@ -100743,11 +98875,6 @@ member { type_id: 0x1dd4b558 offset: 1664 } -member { - id: 0xa6e46395 - name: "icptcode" - type_id: 0xb3e7bac9 -} member { id: 0x9263012c name: "icq" @@ -101475,12 +99602,6 @@ member { type_id: 0xc9082b19 offset: 12864 } -member { - id: 0xba6f54b9 - name: "id_hash" - type_id: 0x394dcf37 - offset: 320 -} member { id: 0x05495988 name: "id_header" @@ -101670,12 +99791,6 @@ member { type_id: 0xe1a31370 offset: 9088 } -member { - id: 0x50f15a4b - name: "idai" - type_id: 0x6d7f5ff6 - offset: 32 -} member { id: 0xc093344b name: "ident" @@ -102027,11 +100142,6 @@ member { type_id: 0x16749208 offset: 16 } -member { - id: 0x3caea455 - name: "idx" - type_id: 0x295c7202 -} member { id: 0x3cc2707a name: "idx" @@ -102148,12 +100258,6 @@ member { offset: 27 bitsize: 1 } -member { - id: 0x7eaf49aa - name: "if_flag" - type_id: 0xb3e7bac9 - offset: 104 -} member { id: 0x7d1e2280 name: "if_flags" @@ -102388,12 +100492,6 @@ member { type_id: 0x33756485 offset: 2176 } -member { - id: 0x50f909b7 - name: "iflags" - type_id: 0x295c7202 - offset: 15400 -} member { id: 0x102491dd name: "ifname" @@ -102806,12 +100904,6 @@ member { offset: 1312 bitsize: 1 } -member { - id: 0xb85c9514 - name: "immediate_exit" - type_id: 0xb3e7bac9 - offset: 8 -} member { id: 0x0239d915 name: "imod_interval" @@ -102824,12 +100916,6 @@ member { type_id: 0xc9082b19 offset: 64 } -member { - id: 0x7a0e7466 - name: "implementation_rev" - type_id: 0xc9082b19 - offset: 64 -} member { id: 0xf089858f name: "implicit_fb" @@ -103108,11 +101194,6 @@ member { offset: 12098 bitsize: 1 } -member { - id: 0xd935af97 - name: "in_kernel" - type_id: 0x6d7f5ff6 -} member { id: 0xb2ce8b46 name: "in_len" @@ -103151,11 +101232,6 @@ member { name: "in_saddr" type_id: 0xa54936d5 } -member { - id: 0x3c4c15e8 - name: "in_spin_loop" - type_id: 0x6d7f5ff6 -} member { id: 0xd8c3755f name: "in_tx" @@ -103540,11 +101616,6 @@ member { type_id: 0xe62ebf07 offset: 128 } -member { - id: 0xadf00094 - name: "index" - type_id: 0xc9082b19 -} member { id: 0xadf006ed name: "index" @@ -104188,12 +102259,6 @@ member { type_id: 0x0f626ee5 offset: 1088 } -member { - id: 0x1ae7589a - name: "init" - type_id: 0x0d947d59 - offset: 128 -} member { id: 0x1ae79ef6 name: "init" @@ -104820,17 +102885,6 @@ member { type_id: 0x295c7202 offset: 160 } -member { - id: 0x73fbf26c - name: "input" - type_id: 0xedf277ba -} -member { - id: 0x73fbf68d - name: "input" - type_id: 0xedf277ba - offset: 64 -} member { id: 0x73fe0389 name: "input" @@ -105049,12 +103103,6 @@ member { type_id: 0x099fec03 offset: 12992 } -member { - id: 0xdac7f876 - name: "insn_bytes" - type_id: 0xda277458 - offset: 8 -} member { id: 0x7cdc8c52 name: "insn_cnt" @@ -105106,11 +103154,6 @@ member { type_id: 0xc9082b19 offset: 75936 } -member { - id: 0x8b19911e - name: "insn_size" - type_id: 0xb3e7bac9 -} member { id: 0x23399750 name: "insn_stack" @@ -105399,11 +103442,6 @@ member { name: "internal" type_id: 0x33756485 } -member { - id: 0xcf651311 - name: "internal" - type_id: 0x1bf62820 -} member { id: 0xeba68a32 name: "internal_addr" @@ -105770,18 +103808,6 @@ member { type_id: 0x3ae3ff84 offset: 1088 } -member { - id: 0x4a590e0a - name: "intid" - type_id: 0x6720d32f - offset: 160 -} -member { - id: 0x4af72c65 - name: "intid" - type_id: 0xc9082b19 - offset: 448 -} member { id: 0x5dfd62b5 name: "intr_cmd" @@ -105950,24 +103976,6 @@ member { type_id: 0x475137a2 offset: 576 } -member { - id: 0x6e9b1c0d - name: "invalidate_range" - type_id: 0x0c16b659 - offset: 448 -} -member { - id: 0x4f063390 - name: "invalidate_range_end" - type_id: 0x0c397826 - offset: 384 -} -member { - id: 0x0545c767 - name: "invalidate_range_start" - type_id: 0x2f7f5489 - offset: 320 -} member { id: 0xa4356576 name: "invalidate_seq" @@ -106034,11 +104042,6 @@ member { type_id: 0x6d7f5ff6 offset: 72 } -member { - id: 0x9d5b90f8 - name: "io" - type_id: 0x3050ef8f -} member { id: 0x7aee4108 name: "io_base" @@ -106111,18 +104114,6 @@ member { type_id: 0x3c5401fe offset: 192 } -member { - id: 0xadd5b431 - name: "io_int_parm" - type_id: 0xe62ebf07 - offset: 32 -} -member { - id: 0x1dac28b0 - name: "io_int_word" - type_id: 0xe62ebf07 - offset: 64 -} member { id: 0xfe460429 name: "io_is_busy" @@ -106369,12 +104360,6 @@ member { name: "iocb" type_id: 0x08b52b5b } -member { - id: 0x4d44694e - name: "ioctl" - type_id: 0x203cd5eb - offset: 512 -} member { id: 0x4d466701 name: "ioctl" @@ -106530,18 +104515,6 @@ member { type_id: 0x19c60038 offset: 6528 } -member { - id: 0xc33609f7 - name: "iodev" - type_id: 0x60b9a60c - offset: 128 -} -member { - id: 0x10f4be53 - name: "iodev_type" - type_id: 0xf101ec6d - offset: 192 -} member { id: 0x5a8c2ccc name: "iodone_cnt" @@ -106554,18 +104527,6 @@ member { type_id: 0x74d29cf1 offset: 3680 } -member { - id: 0x3103f4d5 - name: "ioeventfd_count" - type_id: 0x6720d32f - offset: 32 -} -member { - id: 0x0d7ae40f - name: "ioeventfds" - type_id: 0xd3c80119 - offset: 20288 -} member { id: 0x51cefec4 name: "iomap" @@ -107167,24 +105128,6 @@ member { type_id: 0xb3e7bac9 offset: 104 } -member { - id: 0xb21940c8 - name: "ipa" - type_id: 0xe8034002 - offset: 16 -} -member { - id: 0x73d7e0dc - name: "ipb" - type_id: 0xe62ebf07 - offset: 96 -} -member { - id: 0x73d7e464 - name: "ipb" - type_id: 0xe62ebf07 - offset: 32 -} member { id: 0x376c5a92 name: "ipc" @@ -107456,12 +105399,6 @@ member { type_id: 0x6720d32f offset: 4768 } -member { - id: 0x99159806 - name: "irq" - type_id: 0x6720d32f - offset: 160 -} member { id: 0x99159922 name: "irq" @@ -107474,12 +105411,6 @@ member { type_id: 0x6720d32f offset: 7584 } -member { - id: 0x99159c15 - name: "irq" - type_id: 0x6720d32f - offset: 2240 -} member { id: 0x99159c24 name: "irq" @@ -107599,17 +105530,6 @@ member { type_id: 0xfc0e1dbd offset: 4032 } -member { - id: 0x99949b8a - name: "irq" - type_id: 0xe62ebf07 -} -member { - id: 0x99abc34e - name: "irq" - type_id: 0xd9729a52 - offset: 64 -} member { id: 0x99c8e1eb name: "irq" @@ -107634,12 +105554,6 @@ member { type_id: 0x0e01e935 offset: 320 } -member { - id: 0x3b21a108 - name: "irq_ack_notifier_list" - type_id: 0x5e8dc7f4 - offset: 25344 -} member { id: 0x8dcdd781 name: "irq_base" @@ -107825,29 +105739,12 @@ member { type_id: 0x2b3a7da8 offset: 7360 } -member { - id: 0xd133b0b1 - name: "irq_level" - type_id: 0x6d7f5ff6 - offset: 4456 -} -member { - id: 0x8c92967c - name: "irq_lock" - type_id: 0xc8b17aa7 -} member { id: 0x8ca9364f name: "irq_lock" type_id: 0xf313e71a offset: 9088 } -member { - id: 0x8cfde860 - name: "irq_lock" - type_id: 0xa7c362b0 - offset: 24896 -} member { id: 0xa09e6601 name: "irq_managed" @@ -107891,12 +105788,6 @@ member { type_id: 0x0e01e935 offset: 1984 } -member { - id: 0x94f98f17 - name: "irq_num" - type_id: 0x6720d32f - offset: 4416 -} member { id: 0x740ba1b4 name: "irq_pending" @@ -107982,12 +105873,6 @@ member { type_id: 0x2d47c59a offset: 704 } -member { - id: 0x71efddfa - name: "irq_routing" - type_id: 0x2145f7aa - offset: 25280 -} member { id: 0x03f31823 name: "irq_safe" @@ -108031,12 +105916,6 @@ member { type_id: 0x0e01e935 offset: 128 } -member { - id: 0xb5417608 - name: "irq_srcu" - type_id: 0xa46efa19 - offset: 30400 -} member { id: 0xb989726e name: "irq_start_time" @@ -108110,12 +105989,6 @@ member { type_id: 0x2dff40fc offset: 4480 } -member { - id: 0x450927c5 - name: "irqfds" - type_id: 0x13064264 - offset: 19584 -} member { id: 0x53de8d1e name: "irqflags" @@ -108943,24 +106816,6 @@ member { type_id: 0xc93e017b offset: 176 } -member { - id: 0x1a818083 - name: "is_write" - type_id: 0xb3e7bac9 - offset: 160 -} -member { - id: 0x1a818982 - name: "is_write" - type_id: 0xb3e7bac9 - offset: 64 -} -member { - id: 0x1ad44087 - name: "is_write" - type_id: 0xe62ebf07 - offset: 64 -} member { id: 0x5f2e888d name: "is_yuv" @@ -109166,12 +107021,6 @@ member { type_id: 0xd9c2196b offset: 128 } -member { - id: 0xb75a0aec - name: "items" - type_id: 0xd3c80119 - offset: 64 -} member { id: 0xb7cc436a name: "items" @@ -109189,12 +107038,6 @@ member { type_id: 0x585b40a5 offset: 64 } -member { - id: 0x2b5908df - name: "iter" - type_id: 0x3bc62241 - offset: 1344 -} member { id: 0x2b68f74f name: "iter" @@ -109281,45 +107124,6 @@ member { type_id: 0xd0f3b5bf offset: 256 } -member { - id: 0x1caf0749 - name: "its" - type_id: 0x3c6958c4 -} -member { - id: 0x857bfedc - name: "its_lock" - type_id: 0xa7c362b0 - offset: 1216 -} -member { - id: 0x8e370213 - name: "its_read" - type_id: 0x05a52bb0 -} -member { - id: 0xa70b7acb - name: "its_vm" - type_id: 0x04fb8f54 - offset: 64 -} -member { - id: 0xa736298d - name: "its_vm" - type_id: 0x39aedbce - offset: 1408 -} -member { - id: 0xa9a971b2 - name: "its_vpe" - type_id: 0x19bba071 - offset: 1408 -} -member { - id: 0x8844b6fd - name: "its_write" - type_id: 0x0de80fb7 -} member { id: 0x7dc35cdf name: "itty" @@ -110406,12 +108210,6 @@ member { type_id: 0x42201dce offset: 128 } -member { - id: 0xd7f60431 - name: "kind" - type_id: 0xfd01d20e - offset: 128 -} member { id: 0x1862ef71 name: "klist_children" @@ -110453,12 +108251,6 @@ member { type_id: 0xd079ba20 offset: 5120 } -member { - id: 0x85e4ba6c - name: "kmem_cache" - type_id: 0x2efd5036 - offset: 128 -} member { id: 0x5fc74326 name: "kmem_cachep" @@ -110921,29 +108713,6 @@ member { name: "kvec" type_id: 0x39c0701e } -member { - id: 0x730e8b69 - name: "kvm" - type_id: 0x363b9249 -} -member { - id: 0x730e8f88 - name: "kvm" - type_id: 0x363b9249 - offset: 64 -} -member { - id: 0xaa4c4a21 - name: "kvm_dirty_regs" - type_id: 0xedf277ba - offset: 2368 -} -member { - id: 0x4b1e23b0 - name: "kvm_valid_regs" - type_id: 0xedf277ba - offset: 2304 -} member { id: 0x6f6286ef name: "kworker" @@ -111259,12 +109028,6 @@ member { type_id: 0xec0a20ff offset: 384 } -member { - id: 0x26892e85 - name: "last" - type_id: 0xe62ebf07 - offset: 32 -} member { id: 0x26a602b8 name: "last" @@ -111361,12 +109124,6 @@ member { type_id: 0x33756485 offset: 64 } -member { - id: 0x85550ce5 - name: "last_boosted_vcpu" - type_id: 0x6720d32f - offset: 18784 -} member { id: 0x191711ef name: "last_bstat" @@ -111875,11 +109632,6 @@ member { type_id: 0x495d0861 offset: 2112 } -member { - id: 0xb280959d - name: "last_steal" - type_id: 0x92233392 -} member { id: 0x4ac408b3 name: "last_switch_count" @@ -111986,36 +109738,12 @@ member { type_id: 0x914dbfdc offset: 2592 } -member { - id: 0xab7e4a6e - name: "last_used_slot" - type_id: 0x3d5133eb - offset: 77504 -} -member { - id: 0xabf33787 - name: "last_used_slot" - type_id: 0xb02b353a - offset: 64 -} -member { - id: 0x1838fabc - name: "last_used_slot_gen" - type_id: 0x92233392 - offset: 77568 -} member { id: 0x583801a8 name: "last_vblank_count" type_id: 0x92233392 offset: 384 } -member { - id: 0x9555d521 - name: "last_vcpu_ran" - type_id: 0x13580d6c - offset: 192 -} member { id: 0x9898696f name: "last_wakee" @@ -112927,18 +110655,6 @@ member { type_id: 0x4585663f offset: 896 } -member { - id: 0xb8405d0b - name: "len" - type_id: 0x4585663f - offset: 32 -} -member { - id: 0xb862f164 - name: "len" - type_id: 0x6720d32f - offset: 64 -} member { id: 0xb862f207 name: "len" @@ -113398,12 +111114,6 @@ member { type_id: 0xe62ebf07 offset: 224 } -member { - id: 0x865cec96 - name: "level" - type_id: 0xe62ebf07 - offset: 32 -} member { id: 0x8673c739 name: "level" @@ -113743,12 +111453,6 @@ member { type_id: 0xe62ebf07 offset: 384 } -member { - id: 0x2b9d91fc - name: "line_level" - type_id: 0x6d7f5ff6 - offset: 480 -} member { id: 0x17206248 name: "line_off" @@ -113921,11 +111625,6 @@ member { type_id: 0x633815f0 offset: 192 } -member { - id: 0x55f738dc - name: "link" - type_id: 0x49a73111 -} member { id: 0x55f9336e name: "link" @@ -115007,12 +112706,6 @@ member { type_id: 0x92233392 offset: 7296 } -member { - id: 0xbcb6da5b - name: "loaded" - type_id: 0x6d7f5ff6 - offset: 704 -} member { id: 0xbcc151ab name: "loaded" @@ -115650,12 +113343,6 @@ member { type_id: 0xa7c362b0 offset: 448 } -member { - id: 0x2d4b3b7e - name: "lock" - type_id: 0xa7c362b0 - offset: 18944 -} member { id: 0x2d4b3bb8 name: "lock" @@ -116381,17 +114068,6 @@ member { type_id: 0xc9082b19 offset: 76192 } -member { - id: 0x6dda6565 - name: "longmode" - type_id: 0xe62ebf07 - offset: 512 -} -member { - id: 0x6dda6e7d - name: "longmode" - type_id: 0xe62ebf07 -} member { id: 0xe77d91bb name: "longname" @@ -116793,48 +114469,6 @@ member { type_id: 0x4585663f offset: 32 } -member { - id: 0xeca52885 - name: "lpi_array" - type_id: 0x38d23361 - offset: 256 -} -member { - id: 0x43246e2d - name: "lpi_idx" - type_id: 0x6720d32f - offset: 192 -} -member { - id: 0x9ecea343 - name: "lpi_list" - type_id: 0xd3c80119 - offset: 64 -} -member { - id: 0x4d9128b0 - name: "lpi_list_count" - type_id: 0x6720d32f - offset: 1152 -} -member { - id: 0x9c466cf2 - name: "lpi_list_head" - type_id: 0xd3c80119 - offset: 1024 -} -member { - id: 0xbe693b59 - name: "lpi_list_lock" - type_id: 0xc8b17aa7 - offset: 960 -} -member { - id: 0xd5bf2684 - name: "lpi_translation_cache" - type_id: 0xd3c80119 - offset: 1216 -} member { id: 0x0a9f8132 name: "lpm_capable" @@ -117747,12 +115381,6 @@ member { type_id: 0x6d7f5ff6 offset: 128 } -member { - id: 0x69005a44 - name: "manual_dirty_log_protect" - type_id: 0x92233392 - offset: 26368 -} member { id: 0xac46515e name: "manual_mode_value" @@ -117813,12 +115441,6 @@ member { type_id: 0xd6298487 offset: 192 } -member { - id: 0x8d25e654 - name: "map" - type_id: 0xd39aff0d - offset: 31680 -} member { id: 0x8d4fb401 name: "map" @@ -118022,12 +115644,6 @@ member { type_id: 0x2c7bd73f offset: 576 } -member { - id: 0x308dee6b - name: "map_event" - type_id: 0x2c2ce191 - offset: 3264 -} member { id: 0x3d93c0fb name: "map_extra" @@ -120036,12 +117652,6 @@ member { type_id: 0x295c7202 offset: 7648 } -member { - id: 0xf60ae606 - name: "max_halt_poll_ns" - type_id: 0x4585663f - offset: 34304 -} member { id: 0x7e72c641 name: "max_hang_time" @@ -121160,12 +118770,6 @@ member { type_id: 0x4585663f offset: 45248 } -member { - id: 0x107724e0 - name: "max_vcpus" - type_id: 0x6720d32f - offset: 18720 -} member { id: 0xb15d2ccc name: "max_vfreq" @@ -121968,18 +119572,6 @@ member { type_id: 0x3b9c6e49 offset: 384 } -member { - id: 0x376609fd - name: "mdcr_el2" - type_id: 0x92233392 - offset: 14912 -} -member { - id: 0xdb73cbc4 - name: "mdcr_el2_host" - type_id: 0x92233392 - offset: 15040 -} member { id: 0xbb1af1d1 name: "mdev" @@ -122162,11 +119754,6 @@ member { type_id: 0x2ea66283 offset: 768 } -member { - id: 0xd7400399 - name: "mdscr_el1" - type_id: 0xc9082b19 -} member { id: 0x3e3e85fb name: "me" @@ -122724,12 +120311,6 @@ member { type_id: 0x1ed6200d offset: 1792 } -member { - id: 0x4f1355bb - name: "memslots" - type_id: 0xb717646a - offset: 18112 -} member { id: 0xbaa89f63 name: "memsw" @@ -124214,12 +121795,6 @@ member { type_id: 0x2953a412 offset: 192 } -member { - id: 0x3025d10a - name: "mm" - type_id: 0x1b36c7a2 - offset: 64 -} member { id: 0x3025d29c name: "mm" @@ -124237,12 +121812,6 @@ member { name: "mm" type_id: 0x1b36c7a2 } -member { - id: 0x3025d651 - name: "mm" - type_id: 0x1b36c7a2 - offset: 832 -} member { id: 0x3025dc29 name: "mm" @@ -124255,12 +121824,6 @@ member { type_id: 0x1b36c7a2 offset: 960 } -member { - id: 0x3025dd22 - name: "mm" - type_id: 0x1b36c7a2 - offset: 192 -} member { id: 0xf2c3ca3b name: "mm_account" @@ -124302,12 +121865,6 @@ member { name: "mm_mt" type_id: 0xa179a8c5 } -member { - id: 0xa69ad382 - name: "mm_ops" - type_id: 0x0d97a2b2 - offset: 128 -} member { id: 0x0abfe66e name: "mm_state" @@ -124367,12 +121924,6 @@ member { type_id: 0x2e1b3edd offset: 448 } -member { - id: 0x87fdbe87 - name: "mmap" - type_id: 0x2ed842b7 - offset: 576 -} member { id: 0x87fe4e24 name: "mmap" @@ -124593,11 +122144,6 @@ member { type_id: 0xc9082b19 offset: 32 } -member { - id: 0x4779a89b - name: "mmio" - type_id: 0x373a3dac -} member { id: 0x78030744 name: "mmio_always_on" @@ -124610,66 +122156,18 @@ member { name: "mmio_base" type_id: 0x18bd6530 } -member { - id: 0x41a58807 - name: "mmio_cur_fragment" - type_id: 0x6720d32f - offset: 1440 -} member { id: 0xdd74e29a name: "mmio_enabled" type_id: 0x178c0a08 offset: 64 } -member { - id: 0x22f5be35 - name: "mmio_exit_kernel" - type_id: 0x92233392 - offset: 6912 -} -member { - id: 0x3c9c64dc - name: "mmio_exit_user" - type_id: 0x92233392 - offset: 6848 -} -member { - id: 0x0abc4886 - name: "mmio_fragments" - type_id: 0x5d2762c3 - offset: 1536 -} -member { - id: 0xe4aa6cb8 - name: "mmio_is_write" - type_id: 0x6720d32f - offset: 1408 -} member { id: 0xdba12957 name: "mmio_len" type_id: 0xe62ebf07 offset: 512 } -member { - id: 0xb16b8efe - name: "mmio_needed" - type_id: 0x6720d32f - offset: 1344 -} -member { - id: 0x22a96429 - name: "mmio_nr_fragments" - type_id: 0x6720d32f - offset: 1472 -} -member { - id: 0xf337f353 - name: "mmio_read_completed" - type_id: 0x6720d32f - offset: 1376 -} member { id: 0x12cc7367 name: "mmio_start" @@ -124682,75 +122180,6 @@ member { type_id: 0xd3c80119 offset: 1280 } -member { - id: 0x6d5a2dc5 - name: "mmu" - type_id: 0x38e86333 - offset: 192 -} -member { - id: 0x6dab2c05 - name: "mmu" - type_id: 0xc9e16a53 -} -member { - id: 0x1c0c4ea6 - name: "mmu_invalidate_in_progress" - type_id: 0xfc0e1dbd - offset: 26048 -} -member { - id: 0xf7c73e7d - name: "mmu_invalidate_range_end" - type_id: 0x33756485 - offset: 26176 -} -member { - id: 0xc81d2fc7 - name: "mmu_invalidate_range_start" - type_id: 0x33756485 - offset: 26112 -} -member { - id: 0x59a47d0f - name: "mmu_invalidate_seq" - type_id: 0x33756485 - offset: 25984 -} -member { - id: 0x833819ed - name: "mmu_lock" - type_id: 0xf4933b90 -} -member { - id: 0x4938a60d - name: "mmu_notifier" - type_id: 0x846ab93f - offset: 25408 -} -member { - id: 0x18b48436 - name: "mmu_page_cache" - type_id: 0xa2ba72d6 -} -member { - id: 0x1a817692 - name: "mn_active_invalidate_count" - type_id: 0x33756485 - offset: 18368 -} -member { - id: 0x8174053d - name: "mn_invalidate_lock" - type_id: 0xf313e71a - offset: 18304 -} -member { - id: 0xf11c4ad7 - name: "mn_memslots_update_rcuwait" - type_id: 0xdba44af3 - offset: 18432 -} member { id: 0x32301a1f name: "mnt" @@ -125237,12 +122666,6 @@ member { type_id: 0x72d1d1c0 offset: 32 } -member { - id: 0x87fa34df - name: "mode" - type_id: 0x6720d32f - offset: 384 -} member { id: 0x87fa354d name: "mode" @@ -125913,22 +123336,6 @@ member { type_id: 0xe62ebf07 offset: 704 } -member { - id: 0xfc27981e - name: "mp_state" - type_id: 0xe62ebf07 -} -member { - id: 0xfcc328ac - name: "mp_state" - type_id: 0x029d28cb - offset: 66816 -} -member { - id: 0x34f49183 - name: "mpidr" - type_id: 0xc9082b19 -} member { id: 0x9410bf1b name: "mpls_features" @@ -126449,12 +123856,6 @@ member { type_id: 0x6720d32f offset: 64 } -member { - id: 0x67f93f00 - name: "msg_page" - type_id: 0xedf277ba - offset: 192 -} member { id: 0x91e9d7fd name: "msg_parser" @@ -126646,12 +124047,6 @@ member { name: "msiinfo" type_id: 0xa5e1bddf } -member { - id: 0x7abe829e - name: "msis_require_devid" - type_id: 0x6d7f5ff6 - offset: 104 -} member { id: 0x8e2397ea name: "msix_base" @@ -126708,16 +124103,6 @@ member { type_id: 0x295c7202 offset: 1408 } -member { - id: 0x324f2583 - name: "msr" - type_id: 0x079bc2f5 -} -member { - id: 0x32ae90fe - name: "msr" - type_id: 0xe62ebf07 -} member { id: 0xcf473d6a name: "msr_saved_flags" @@ -127601,12 +124986,6 @@ member { type_id: 0xca2a51af offset: 32 } -member { - id: 0x0d114fce - name: "name" - type_id: 0xca2a51af - offset: 128 -} member { id: 0x0d273c21 name: "name" @@ -127874,12 +125253,6 @@ member { type_id: 0x19ce8000 offset: 32 } -member { - id: 0x0dc6047f - name: "name" - type_id: 0x1d61e0cf - offset: 128 -} member { id: 0x0dc6099d name: "name" @@ -127982,12 +125355,6 @@ member { type_id: 0x0483e6f8 offset: 1280 } -member { - id: 0x0ddfea33 - name: "name" - type_id: 0x0483e6f8 - offset: 2432 -} member { id: 0x0ddfef10 name: "name" @@ -128451,12 +125818,6 @@ member { type_id: 0x4585663f offset: 64 } -member { - id: 0xb1e7f3ff - name: "nassgireq" - type_id: 0x6d7f5ff6 - offset: 392 -} member { id: 0x452670ab name: "nat_bysource" @@ -128711,12 +126072,6 @@ member { type_id: 0x3de3f5a1 offset: 1152 } -member { - id: 0xb7cbdc47 - name: "ndata" - type_id: 0xe62ebf07 - offset: 32 -} member { id: 0x4ce502de name: "ndctl" @@ -129979,12 +127334,6 @@ member { offset: 154 bitsize: 4 } -member { - id: 0xe719c8c0 - name: "new_value" - type_id: 0x33756485 - offset: 64 -} member { id: 0xe723c4b2 name: "new_value" @@ -131594,11 +128943,6 @@ member { offset: 2629 bitsize: 1 } -member { - id: 0x603fc5a7 - name: "nobjs" - type_id: 0x6720d32f -} member { id: 0x0934e011 name: "noboot" @@ -131645,12 +128989,6 @@ member { name: "node" type_id: 0x6c32e522 } -member { - id: 0x0f3ca933 - name: "node" - type_id: 0x49a73111 - offset: 3712 -} member { id: 0x0f3ca99f name: "node" @@ -131890,12 +129228,6 @@ member { type_id: 0x6720d32f offset: 52096 } -member { - id: 0xdeaef990 - name: "node_idx" - type_id: 0x6720d32f - offset: 8512 -} member { id: 0xd7b5832b name: "node_list" @@ -132408,11 +129740,6 @@ member { type_id: 0x2ead6653 offset: 256 } -member { - id: 0x56e50a84 - name: "notify" - type_id: 0x130fee63 -} member { id: 0x56f8e261 name: "notify" @@ -132833,11 +130160,6 @@ member { type_id: 0x74d29cf1 offset: 192 } -member { - id: 0xc2c8918f - name: "nr_cpus" - type_id: 0x6720d32f -} member { id: 0x98f55073 name: "nr_cpus_allowed" @@ -132850,12 +130172,6 @@ member { type_id: 0xc93e017b offset: 2416 } -member { - id: 0xb9a58615 - name: "nr_db_lpis" - type_id: 0x6720d32f - offset: 448 -} member { id: 0x244cd0bd name: "nr_deferred" @@ -133131,12 +130447,6 @@ member { type_id: 0xc9082b19 offset: 8160 } -member { - id: 0x2af96acc - name: "nr_lpis" - type_id: 0x6720d32f - offset: 64 -} member { id: 0x183eb746 name: "nr_maps" @@ -133161,12 +130471,6 @@ member { type_id: 0x607419c2 offset: 64 } -member { - id: 0x8a52dd6e - name: "nr_memslot_pages" - type_id: 0x33756485 - offset: 896 -} member { id: 0x02abbc80 name: "nr_migratepages" @@ -133261,12 +130565,6 @@ member { type_id: 0xfc0e1dbd offset: 768 } -member { - id: 0xe3b1b19e - name: "nr_pages" - type_id: 0x33756485 - offset: 64 -} member { id: 0xe3b1b2b8 name: "nr_pages" @@ -133416,12 +130714,6 @@ member { type_id: 0xc9082b19 offset: 704 } -member { - id: 0xddd1c1b9 - name: "nr_regions" - type_id: 0x6720d32f - offset: 224 -} member { id: 0x5a432fb1 name: "nr_relocs" @@ -133464,12 +130756,6 @@ member { type_id: 0xc93e017b offset: 192 } -member { - id: 0xf6e30a95 - name: "nr_rt_entries" - type_id: 0xc9082b19 - offset: 31616 -} member { id: 0xd6072070 name: "nr_running" @@ -133571,18 +130857,6 @@ member { type_id: 0x4585663f offset: 8640 } -member { - id: 0x5eb23b58 - name: "nr_spis" - type_id: 0x6720d32f - offset: 128 -} -member { - id: 0x5eb23fa1 - name: "nr_spis" - type_id: 0x6720d32f - offset: 32 -} member { id: 0x47396359 name: "nr_spread_over" @@ -133734,12 +131008,6 @@ member { name: "nr_vlan_devs" type_id: 0x4585663f } -member { - id: 0x6ba53b1d - name: "nr_vpes" - type_id: 0x6720d32f - offset: 256 -} member { id: 0xd52b9423 name: "nr_wakeups" @@ -134681,12 +131949,6 @@ member { type_id: 0x4585663f offset: 192 } -member { - id: 0xaeede60f - name: "num_events" - type_id: 0x6720d32f - offset: 3392 -} member { id: 0x7f574879 name: "num_exentries" @@ -134812,12 +132074,6 @@ member { type_id: 0xc9082b19 offset: 320 } -member { - id: 0xf95b9cd7 - name: "num_id_bits" - type_id: 0xc9082b19 - offset: 31936 -} member { id: 0x3e07f1e9 name: "num_ids" @@ -135260,12 +132516,6 @@ member { type_id: 0x5d8155a5 offset: 1920 } -member { - id: 0xbf52270e - name: "num_pri_bits" - type_id: 0xc9082b19 - offset: 31904 -} member { id: 0x4c06bbb4 name: "num_private" @@ -136142,12 +133392,6 @@ member { type_id: 0xd3c80119 offset: 448 } -member { - id: 0x2aa4f724 - name: "objects" - type_id: 0x0cbf60eb - offset: 256 -} member { id: 0x89cabbe4 name: "objects" @@ -136953,12 +134197,6 @@ member { type_id: 0xf67b8436 offset: 128 } -member { - id: 0x9bf12a52 - name: "offset" - type_id: 0xedf277ba - offset: 64 -} member { id: 0x9bf12eb3 name: "offset" @@ -137369,12 +134607,6 @@ member { type_id: 0x0483e6f8 offset: 9920 } -member { - id: 0xc21468d0 - name: "online_vcpus" - type_id: 0x74d29cf1 - offset: 18688 -} member { id: 0x7adb50ba name: "onlink" @@ -137978,12 +135210,6 @@ member { type_id: 0xecd302d8 offset: 1152 } -member { - id: 0xaf890e76 - name: "ops" - type_id: 0x02067bf4 - offset: 768 -} member { id: 0xaf8c0a54 name: "ops" @@ -138049,12 +135275,6 @@ member { type_id: 0x28b7a3b7 offset: 8704 } -member { - id: 0xafaa08ab - name: "ops" - type_id: 0x2101ca02 - offset: 128 -} member { id: 0xafaa22ec name: "ops" @@ -138096,12 +135316,6 @@ member { name: "ops" type_id: 0x3b991d29 } -member { - id: 0xafb0c299 - name: "ops" - type_id: 0x3bcbf8c5 - offset: 128 -} member { id: 0xafb0ea3a name: "ops" @@ -138489,11 +135703,6 @@ member { name: "ops" type_id: 0x31c93a7f } -member { - id: 0xafbacb95 - name: "ops" - type_id: 0x31cb364e -} member { id: 0xafbb0869 name: "ops" @@ -138559,11 +135768,6 @@ member { type_id: 0x379acd09 offset: 3392 } -member { - id: 0xafbcd9c0 - name: "ops" - type_id: 0x37d96371 -} member { id: 0xafbcdef5 name: "ops" @@ -139084,11 +136288,6 @@ member { type_id: 0xe62ebf07 offset: 96 } -member { - id: 0x35649aee - name: "osi" - type_id: 0x129d9eba -} member { id: 0x8d9b8608 name: "osid" @@ -139492,11 +136691,6 @@ member { type_id: 0x18bd6530 offset: 8000 } -member { - id: 0x39d6cdec - name: "overflow_work" - type_id: 0xb95bf932 -} member { id: 0x4c799d4b name: "overhead" @@ -139551,12 +136745,6 @@ member { type_id: 0x6d7f5ff6 offset: 13120 } -member { - id: 0x8dc5ba0f - name: "override_halt_poll_ns" - type_id: 0x6d7f5ff6 - offset: 34272 -} member { id: 0xf1d2ff61 name: "override_only" @@ -139736,12 +136924,6 @@ member { type_id: 0x18bd6530 offset: 256 } -member { - id: 0x4a85cb53 - name: "owner" - type_id: 0x18bd6530 - offset: 832 -} member { id: 0x4a85cf2e name: "owner" @@ -140396,24 +137578,12 @@ member { type_id: 0x7dc8196c offset: 44704 } -member { - id: 0x6b32a1dc - name: "pad" - type_id: 0xe62ebf07 - offset: 544 -} member { id: 0x6b32a238 name: "pad" type_id: 0xe62ebf07 offset: 32 } -member { - id: 0x6b32a680 - name: "pad" - type_id: 0xe62ebf07 - offset: 96 -} member { id: 0x6b32af03 name: "pad" @@ -140431,12 +137601,6 @@ member { type_id: 0x5d8155a5 offset: 1368 } -member { - id: 0x6b90bd2c - name: "pad" - type_id: 0x44377683 - offset: 8 -} member { id: 0x6bb3a9c1 name: "pad" @@ -140483,12 +137647,6 @@ member { type_id: 0x295c7202 offset: 16 } -member { - id: 0xbad0c2a3 - name: "pad2" - type_id: 0xe62ebf07 - offset: 32 -} member { id: 0xbaffe3eb name: "pad2" @@ -140578,11 +137736,6 @@ member { type_id: 0xb3e7bac9 offset: 24 } -member { - id: 0x646aaa85 - name: "padding" - type_id: 0x8ca7b4cd -} member { id: 0x64774c4f name: "padding" @@ -140595,11 +137748,6 @@ member { type_id: 0x914dbfdc offset: 16 } -member { - id: 0x6491fbda - name: "padding" - type_id: 0x77f6ebb4 -} member { id: 0x64a65d9f name: "padding" @@ -140635,12 +137783,6 @@ member { type_id: 0xb5c6bcdb offset: 32 } -member { - id: 0xd06a5757 - name: "padding1" - type_id: 0x8d58bd1a - offset: 16 -} member { id: 0x9481c1a2 name: "padding2" @@ -140746,12 +137888,6 @@ member { type_id: 0x1c3dbe5a offset: 2912 } -member { - id: 0x21516548 - name: "page_count" - type_id: 0x2c7bd73f - offset: 320 -} member { id: 0x3189af2e name: "page_done" @@ -141200,11 +138336,6 @@ member { type_id: 0x6720d32f offset: 288 } -member { - id: 0xae5a4181 - name: "papr_hcall" - type_id: 0x2c2be6c7 -} member { id: 0xfe407cce name: "par" @@ -141316,12 +138447,6 @@ member { type_id: 0xc9082b19 offset: 192 } -member { - id: 0x4b34b9aa - name: "params" - type_id: 0x9addce46 - offset: 192 -} member { id: 0x4b3911d5 name: "params" @@ -141346,12 +138471,6 @@ member { type_id: 0x18bd6530 offset: 128 } -member { - id: 0x4bf9b0b2 - name: "params" - type_id: 0x57d5dd0d - offset: 128 -} member { id: 0xe64a6945 name: "params_len" @@ -142324,12 +139443,6 @@ member { type_id: 0x04f0669a offset: 64 } -member { - id: 0x6d45f1ba - name: "pause" - type_id: 0x6d7f5ff6 - offset: 15416 -} member { id: 0x6d4faa04 name: "pause" @@ -142453,11 +139566,6 @@ member { type_id: 0x33756485 offset: 768 } -member { - id: 0xa5f74e1c - name: "pc" - type_id: 0x33756485 -} member { id: 0xa33342ec name: "pci" @@ -143229,12 +140337,6 @@ member { type_id: 0x06835e9c offset: 128 } -member { - id: 0x8109b274 - name: "pendbaser" - type_id: 0x92233392 - offset: 31808 -} member { id: 0xf91c8462 name: "pending" @@ -143336,18 +140438,6 @@ member { type_id: 0x4585663f offset: 6496 } -member { - id: 0x141c8cee - name: "pending_last" - type_id: 0x6d7f5ff6 - offset: 960 -} -member { - id: 0x004ca63d - name: "pending_latch" - type_id: 0x6d7f5ff6 - offset: 488 -} member { id: 0xe53a2590 name: "pending_link" @@ -143378,12 +140468,6 @@ member { type_id: 0x4585663f offset: 928 } -member { - id: 0x09b42908 - name: "pending_page" - type_id: 0xedf277ba - offset: 320 -} member { id: 0x8c0336f4 name: "pending_reset" @@ -143594,12 +140678,6 @@ member { type_id: 0x04fd619c offset: 7104 } -member { - id: 0x34c743f9 - name: "percpu_pmu" - type_id: 0x331b3d77 - offset: 2176 -} member { id: 0x4db3a084 name: "percpu_pvec_drained" @@ -143612,12 +140690,6 @@ member { type_id: 0x4585663f offset: 6208 } -member { - id: 0xf94346ab - name: "perf_event" - type_id: 0x1dce0fdd - offset: 64 -} member { id: 0xf96ca45e name: "perf_event" @@ -144159,30 +141231,12 @@ member { type_id: 0x6e1fde8f offset: 64 } -member { - id: 0x03a47022 - name: "pfr0_csv2" - type_id: 0x295c7202 - offset: 3136 -} -member { - id: 0x42988d63 - name: "pfr0_csv3" - type_id: 0x295c7202 - offset: 3144 -} member { id: 0x88830a16 name: "pg" type_id: 0x4585663f offset: 1184 } -member { - id: 0x331a3623 - name: "pgd" - type_id: 0x11281698 - offset: 64 -} member { id: 0x332a4920 name: "pgd" @@ -144199,24 +141253,12 @@ member { name: "pgd" type_id: 0xe381831a } -member { - id: 0x99236fa3 - name: "pgd_phys" - type_id: 0xbdd18903 - offset: 64 -} member { id: 0x2d272759 name: "pgdat" type_id: 0x03038214 offset: 11200 } -member { - id: 0xdd74def2 - name: "pgm_code" - type_id: 0xe62ebf07 - offset: 64 -} member { id: 0x2b8ac6b5 name: "pgmap" @@ -144287,12 +141329,6 @@ member { type_id: 0xc9082b19 offset: 224 } -member { - id: 0x7f170713 - name: "pgt" - type_id: 0x114e61a5 - offset: 128 -} member { id: 0x5a4cacba name: "pgtables_bytes" @@ -144611,11 +141647,6 @@ member { name: "phys_addr" type_id: 0xe8034002 } -member { - id: 0xbda607c1 - name: "phys_addr" - type_id: 0xedf277ba -} member { id: 0xbdabdba2 name: "phys_addr" @@ -144691,12 +141722,6 @@ member { name: "phys_id" type_id: 0x295c7202 } -member { - id: 0x66a97394 - name: "phys_to_virt" - type_id: 0x14e88d4b - offset: 384 -} member { id: 0xda31db2e name: "physfn" @@ -144984,12 +142009,6 @@ member { type_id: 0x18456730 offset: 192 } -member { - id: 0x74912d9b - name: "pid" - type_id: 0x18456730 - offset: 1088 -} member { id: 0x74912e66 name: "pid" @@ -145344,12 +142363,6 @@ member { type_id: 0xb3579875 offset: 640 } -member { - id: 0x037e99ae - name: "pinned_pages" - type_id: 0xeb923a9b - offset: 320 -} member { id: 0x88a70e08 name: "pinned_vm" @@ -145398,11 +142411,6 @@ member { type_id: 0x3a47ea7a offset: 768 } -member { - id: 0x782f8731 - name: "pio" - type_id: 0xe62ebf07 -} member { id: 0x999ac82a name: "pipe" @@ -145712,17 +142720,6 @@ member { type_id: 0x5d8155a5 offset: 192 } -member { - id: 0xe908f26f - name: "pkvm" - type_id: 0xf75540c7 - offset: 3392 -} -member { - id: 0xb403a636 - name: "pkvm_memcache" - type_id: 0xce6b97ea -} member { id: 0x451925c4 name: "placement" @@ -145811,12 +142808,6 @@ member { offset: 80 bitsize: 1 } -member { - id: 0x1a1fd0a0 - name: "plat_device" - type_id: 0x3f37d9d5 - offset: 3584 -} member { id: 0x38c654ae name: "platform_data" @@ -146068,30 +143059,12 @@ member { type_id: 0x6720d32f offset: 12768 } -member { - id: 0x15c30de0 - name: "pmc" - type_id: 0x44c5e79a - offset: 320 -} member { id: 0x6ed4d38c name: "pmc_width" type_id: 0xe8034002 offset: 384 } -member { - id: 0xca44b141 - name: "pmceid_bitmap" - type_id: 0xb914bfab - offset: 3456 -} -member { - id: 0x28894114 - name: "pmceid_ext_bitmap" - type_id: 0xb914bfab - offset: 3520 -} member { id: 0x56639b84 name: "pmd" @@ -146141,12 +143114,6 @@ member { type_id: 0x92233392 offset: 2368 } -member { - id: 0xa6727baa - name: "pmscr_el1" - type_id: 0x92233392 - offset: 4096 -} member { id: 0x98e24df0 name: "pmsr_capa" @@ -146182,17 +143149,6 @@ member { name: "pmu" type_id: 0x3b12c8e0 } -member { - id: 0x93b6279b - name: "pmu" - type_id: 0xbe704ca9 - offset: 62272 -} -member { - id: 0x93ce5218 - name: "pmu" - type_id: 0xc60bc51e -} member { id: 0x2cb55697 name: "pmu_cpu_context" @@ -146217,30 +143173,12 @@ member { type_id: 0x0d07014d offset: 768 } -member { - id: 0x3957d3b9 - name: "pmu_filter" - type_id: 0x064d6086 - offset: 2944 -} -member { - id: 0x03f344e6 - name: "pmu_lock" - type_id: 0xc8b17aa7 - offset: 2112 -} member { id: 0xbadfff7b name: "pmu_private" type_id: 0x18bd6530 offset: 1280 } -member { - id: 0xd81b71f1 - name: "pmuver" - type_id: 0x6720d32f - offset: 2496 -} member { id: 0x809d8aa2 name: "pmxops" @@ -147103,12 +144041,6 @@ member { type_id: 0xfe384bcc offset: 2432 } -member { - id: 0x48131453 - name: "port" - type_id: 0xe8034002 - offset: 16 -} member { id: 0x4848f266 name: "port" @@ -148587,12 +145519,6 @@ member { name: "preempt_count" type_id: 0x92233392 } -member { - id: 0xad12ae54 - name: "preempt_notifier" - type_id: 0x89c67026 - offset: 64 -} member { id: 0x44e4fcbb name: "preempt_notifiers" @@ -148605,12 +145531,6 @@ member { type_id: 0x92233392 offset: 704 } -member { - id: 0x1bd1d822 - name: "preempted" - type_id: 0x6d7f5ff6 - offset: 1936 -} member { id: 0xa093e6ac name: "preenable" @@ -149605,17 +146525,6 @@ member { type_id: 0x4585663f offset: 512 } -member { - id: 0x10cd0450 - name: "priority" - type_id: 0x295c7202 - offset: 688 -} -member { - id: 0x10cd0767 - name: "priority" - type_id: 0x295c7202 -} member { id: 0x10ebf2d4 name: "priority" @@ -150027,12 +146936,6 @@ member { type_id: 0x18bd6530 offset: 192 } -member { - id: 0x91796f71 - name: "private" - type_id: 0x18bd6530 - offset: 128 -} member { id: 0x91a931d3 name: "private" @@ -150249,12 +147152,6 @@ member { type_id: 0x0d89a697 offset: 3264 } -member { - id: 0xdbd2d18f - name: "private_irqs" - type_id: 0x4449c48b - offset: 2496 -} member { id: 0x78439144 name: "private_list" @@ -151420,12 +148317,6 @@ member { type_id: 0xfc0e1dbd offset: 2112 } -member { - id: 0x703b904f - name: "propbaser" - type_id: 0x92233392 - offset: 896 -} member { id: 0x29846bfc name: "propbit" @@ -151626,18 +148517,6 @@ member { type_id: 0xaf023c73 offset: 7616 } -member { - id: 0x7efa09f3 - name: "protected_hyp_mem" - type_id: 0x1f4573ef - offset: 128 -} -member { - id: 0x46e4dafc - name: "protected_shared_mem" - type_id: 0x1f4573ef - offset: 192 -} member { id: 0x5d16456b name: "proto" @@ -151975,12 +148854,6 @@ member { name: "psample_group" type_id: 0x0d436e43 } -member { - id: 0x2c10bf52 - name: "psci_version" - type_id: 0xc9082b19 - offset: 2816 -} member { id: 0x2bf0ee90 name: "psec" @@ -152106,12 +148979,6 @@ member { type_id: 0x34ef1514 offset: 64 } -member { - id: 0xedfdadd3 - name: "pstate_ss" - type_id: 0x6d7f5ff6 - offset: 32 -} member { id: 0x946deb91 name: "pstr" @@ -152169,18 +149036,6 @@ member { name: "pte" type_id: 0xc32dc55c } -member { - id: 0xeef9224d - name: "pte_is_counted_cb" - type_id: 0xf2ecf779 - offset: 64 -} -member { - id: 0x8661d99b - name: "pte_ops" - type_id: 0x2e6ac856 - offset: 320 -} member { id: 0xce442d14 name: "ptl" @@ -152603,12 +149458,6 @@ member { type_id: 0x2c0bb831 offset: 64 } -member { - id: 0x68c1b0bb - name: "put_page" - type_id: 0x0f3dfb90 - offset: 256 -} member { id: 0xee3c87e4 name: "put_port" @@ -152657,12 +149506,6 @@ member { type_id: 0x07941efa offset: 320 } -member { - id: 0x0f7f629e - name: "pvmfw_load_addr" - type_id: 0x1b4ba19a - offset: 384 -} member { id: 0x7cfddcb6 name: "pvt_info" @@ -153880,12 +150723,6 @@ member { type_id: 0xfc5791f4 offset: 128 } -member { - id: 0x766556ed - name: "r0" - type_id: 0x33756485 - offset: 64 -} member { id: 0x9e0af45c name: "r2w_factor" @@ -154077,12 +150914,6 @@ member { type_id: 0xe0987ef0 offset: 192 } -member { - id: 0x0e6e7fb8 - name: "range" - type_id: 0xd2fe57e5 - offset: 64 -} member { id: 0x0e957cc9 name: "range" @@ -155523,12 +152354,6 @@ member { type_id: 0x18bd6530 offset: 64 } -member { - id: 0xb5b5379c - name: "rd_iodev" - type_id: 0x60b9a60c - offset: 31360 -} member { id: 0x5761a9c9 name: "rd_lock" @@ -155546,11 +152371,6 @@ member { type_id: 0x3842259a offset: 3712 } -member { - id: 0xc63d4176 - name: "rd_regions" - type_id: 0xd3c80119 -} member { id: 0x39c535a2 name: "rd_table" @@ -155610,18 +152430,6 @@ member { type_id: 0xc9082b19 offset: 7040 } -member { - id: 0x525d4aae - name: "rdreg" - type_id: 0x116d36b8 - offset: 31680 -} -member { - id: 0xe932d634 - name: "rdreg_index" - type_id: 0xc9082b19 - offset: 31744 -} member { id: 0x4163d7c4 name: "rdy_queue" @@ -155739,11 +152547,6 @@ member { type_id: 0x0ea3bf3c offset: 640 } -member { - id: 0x485b3652 - name: "read" - type_id: 0x0669d6b3 -} member { id: 0x486528a2 name: "read" @@ -155762,11 +152565,6 @@ member { type_id: 0x33756485 offset: 1728 } -member { - id: 0x487026f9 - name: "read" - type_id: 0x2d797d9d -} member { id: 0x48703aa7 name: "read" @@ -155938,12 +152736,6 @@ member { type_id: 0x1bf16028 offset: 384 } -member { - id: 0x2635ef55 - name: "read_counter" - type_id: 0x1eba2d88 - offset: 2944 -} member { id: 0xa1b42c88 name: "read_dbi" @@ -156360,30 +153152,6 @@ member { type_id: 0x0e837004 offset: 384 } -member { - id: 0xa3f01223 - name: "ready" - type_id: 0x6d7f5ff6 - offset: 264 -} -member { - id: 0xa3f0172f - name: "ready" - type_id: 0x6d7f5ff6 - offset: 1944 -} -member { - id: 0xa3f017bd - name: "ready" - type_id: 0x6d7f5ff6 - offset: 8 -} -member { - id: 0x6bffa57c - name: "ready_for_interrupt_injection" - type_id: 0xb3e7bac9 - offset: 96 -} member { id: 0xb8c769bd name: "ready_list" @@ -156519,12 +153287,6 @@ member { name: "reason" type_id: 0xe62ebf07 } -member { - id: 0xbbfcbfdf - name: "reason" - type_id: 0xe62ebf07 - offset: 64 -} member { id: 0x63a5e94a name: "reattach_i3c_dev" @@ -156759,12 +153521,6 @@ member { type_id: 0x054f691a offset: 26176 } -member { - id: 0x32fffef6 - name: "recv_page" - type_id: 0xedf277ba - offset: 256 -} member { id: 0xc16c3147 name: "recv_seq" @@ -156881,11 +153637,6 @@ member { type_id: 0x92233392 offset: 640 } -member { - id: 0x325a63f3 - name: "redist_vcpu" - type_id: 0x08dcfb76 -} member { id: 0x9ff3b23a name: "redundant_pic_cnt" @@ -157455,12 +154206,6 @@ member { name: "refcount" type_id: 0x6f1daf87 } -member { - id: 0x05ec0a8d - name: "refcount" - type_id: 0x6f1daf87 - offset: 544 -} member { id: 0x05ec0d90 name: "refcount" @@ -157811,12 +154556,6 @@ member { name: "reg_offset" type_id: 0x4585663f } -member { - id: 0xddab36b7 - name: "reg_pmmir" - type_id: 0x92233392 - offset: 4352 -} member { id: 0x7288a0e4 name: "reg_read" @@ -158037,12 +154776,6 @@ member { type_id: 0xe62ebf07 offset: 64 } -member { - id: 0x4e19f41c - name: "regions" - type_id: 0x3e3a4a9e - offset: 128 -} member { id: 0xa45f1ee8 name: "register_default_trap_handler" @@ -158294,11 +155027,6 @@ member { type_id: 0x01222f7d offset: 320 } -member { - id: 0x80627a33 - name: "regs" - type_id: 0x590c6dd8 -} member { id: 0x80790d43 name: "regs" @@ -158320,11 +155048,6 @@ member { name: "regs" type_id: 0xd731b823 } -member { - id: 0x80f111bb - name: "regs" - type_id: 0xca67e5f6 -} member { id: 0x21d1f57f name: "regs_intr" @@ -158557,17 +155280,6 @@ member { type_id: 0x0c307972 offset: 192 } -member { - id: 0xae94e729 - name: "release" - type_id: 0x0c15b27a -} -member { - id: 0xae95664d - name: "release" - type_id: 0x0d947d59 - offset: 256 -} member { id: 0xae95b968 name: "release" @@ -159011,17 +155723,6 @@ member { type_id: 0xb3e7bac9 offset: 2056 } -member { - id: 0x8726cc6c - name: "remote_tlb_flush" - type_id: 0x92233392 -} -member { - id: 0xe4dfd298 - name: "remote_tlb_flush_requests" - type_id: 0x92233392 - offset: 64 -} member { id: 0x39638edc name: "remote_tx_win" @@ -160102,11 +156803,6 @@ member { type_id: 0x74d29cf1 offset: 5504 } -member { - id: 0xf6476a4c - name: "request_interrupt_window" - type_id: 0xb3e7bac9 -} member { id: 0x6fead5f8 name: "request_is_queued" @@ -160223,12 +156919,6 @@ member { type_id: 0x6720d32f offset: 3200 } -member { - id: 0x9f936789 - name: "requests" - type_id: 0x92233392 - offset: 448 -} member { id: 0x9fd286ba name: "requests" @@ -160397,18 +157087,6 @@ member { type_id: 0x21397e56 offset: 128 } -member { - id: 0xacf78dbd - name: "resampler_list" - type_id: 0xd3c80119 - offset: 192 -} -member { - id: 0x85260d3d - name: "resampler_lock" - type_id: 0xa7c362b0 - offset: 320 -} member { id: 0x1aa9410e name: "rescan" @@ -160931,12 +157609,6 @@ member { type_id: 0xb3e7bac9 offset: 152 } -member { - id: 0xd4d047b1 - name: "reserved" - type_id: 0xb3e7bac9 - offset: 72 -} member { id: 0xd4d15398 name: "reserved" @@ -161342,12 +158014,6 @@ member { type_id: 0x0c5ef833 offset: 576 } -member { - id: 0x62b29c82 - name: "reset" - type_id: 0x0f3dfb90 - offset: 3200 -} member { id: 0x62b2a267 name: "reset" @@ -161360,12 +158026,6 @@ member { type_id: 0x0ec90737 offset: 128 } -member { - id: 0x62d0d919 - name: "reset" - type_id: 0x6d7f5ff6 - offset: 136 -} member { id: 0x62d0da0e name: "reset" @@ -161469,12 +158129,6 @@ member { offset: 11178 bitsize: 1 } -member { - id: 0xcfe72c2d - name: "reset_index" - type_id: 0xc9082b19 - offset: 32 -} member { id: 0xb1b2f32e name: "reset_methods" @@ -161542,12 +158196,6 @@ member { type_id: 0x2ced3956 offset: 512 } -member { - id: 0xa700e1ff - name: "reset_state" - type_id: 0x3f42023f - offset: 67392 -} member { id: 0xa4c83369 name: "reset_time" @@ -161597,12 +158245,6 @@ member { type_id: 0x2e0f9112 offset: 128 } -member { - id: 0x3a956acf - name: "resident" - type_id: 0x6d7f5ff6 - offset: 256 -} member { id: 0x38e53c13 name: "residual_transfer_count" @@ -162020,18 +158662,6 @@ member { type_id: 0x6720d32f offset: 576 } -member { - id: 0x07c203de - name: "result" - type_id: 0xedf277ba - offset: 64 -} -member { - id: 0x07c20efd - name: "result" - type_id: 0xedf277ba - offset: 128 -} member { id: 0x07cb2b16 name: "result" @@ -162340,18 +158970,6 @@ member { type_id: 0x295c7202 offset: 320 } -member { - id: 0x517bb4e8 - name: "ret" - type_id: 0xedf277ba - offset: 64 -} -member { - id: 0x517bb77e - name: "ret" - type_id: 0xedf277ba - offset: 448 -} member { id: 0x51f16a64 name: "ret" @@ -162364,12 +158982,6 @@ member { type_id: 0x6720d32f offset: 32 } -member { - id: 0x51f63d7f - name: "ret" - type_id: 0x607419c2 - offset: 512 -} member { id: 0x4c003468 name: "ret_addr" @@ -162399,12 +159011,6 @@ member { type_id: 0xe448b2fe offset: 96 } -member { - id: 0xff72a66c - name: "ret_value" - type_id: 0x33756485 - offset: 192 -} member { id: 0xf64e43b1 name: "retimer" @@ -162933,12 +159539,6 @@ member { name: "ring_lock" type_id: 0xa7c362b0 } -member { - id: 0xa84d097f - name: "ring_lock" - type_id: 0xf313e71a - offset: 24704 -} member { id: 0x66a87345 name: "ring_mask" @@ -162968,21 +159568,6 @@ member { type_id: 0x16c47ce6 offset: 128 } -member { - id: 0x28cf1121 - name: "rip" - type_id: 0xedf277ba -} -member { - id: 0xb09d2ffa - name: "riscv_csr" - type_id: 0x0f0b7249 -} -member { - id: 0x112a2e09 - name: "riscv_sbi" - type_id: 0x378b9399 -} member { id: 0xef0151a4 name: "rlim" @@ -164575,12 +161160,6 @@ member { type_id: 0x33756485 offset: 3136 } -member { - id: 0x021fd03f - name: "run" - type_id: 0x3da548f2 - offset: 960 -} member { id: 0x2f68ddc4 name: "run_array" @@ -165772,12 +162351,6 @@ member { name: "s" type_id: 0xc9082b19 } -member { - id: 0x67846dd9 - name: "s" - type_id: 0x76df8305 - offset: 2432 -} member { id: 0x67c4eef4 name: "s" @@ -165836,31 +162409,6 @@ member { type_id: 0xd41e888f offset: 640 } -member { - id: 0x3fd31627 - name: "s390_reset_flags" - type_id: 0xedf277ba -} -member { - id: 0x2b1b8ef2 - name: "s390_sieic" - type_id: 0x31f9c69b -} -member { - id: 0x5fd2e3fb - name: "s390_stsi" - type_id: 0x114efe06 -} -member { - id: 0x66d41c47 - name: "s390_tsch" - type_id: 0x0ad62715 -} -member { - id: 0xd9d85a91 - name: "s390_ucontrol" - type_id: 0x19910c85 -} member { id: 0x87554dcf name: "s3d_ext_data" @@ -167575,11 +164123,6 @@ member { type_id: 0x4585663f offset: 28672 } -member { - id: 0xe0b448e4 - name: "sched_in" - type_id: 0x0c5f174a -} member { id: 0x03385852 name: "sched_info" @@ -167599,12 +164142,6 @@ member { type_id: 0x0faae5b1 offset: 128 } -member { - id: 0x7b24028f - name: "sched_out" - type_id: 0x0c252e30 - offset: 64 -} member { id: 0x848a6070 name: "sched_period" @@ -168505,12 +165042,6 @@ member { type_id: 0x80904a3b offset: 256 } -member { - id: 0xa39136f0 - name: "secure_access" - type_id: 0x6d7f5ff6 - offset: 3424 -} member { id: 0xb0199c94 name: "secure_elements" @@ -168774,18 +165305,6 @@ member { type_id: 0x7047fa95 offset: 832 } -member { - id: 0xebeb17cb - name: "sel1" - type_id: 0xb3e7bac9 - offset: 88 -} -member { - id: 0xaf6f4ac0 - name: "sel2" - type_id: 0xe8034002 - offset: 96 -} member { id: 0x72d71532 name: "sel_res" @@ -169023,12 +165542,6 @@ member { type_id: 0x2ee1b2db offset: 192 } -member { - id: 0xc2c18445 - name: "send_page" - type_id: 0xedf277ba - offset: 192 -} member { id: 0x42f73f70 name: "send_pkt" @@ -169942,12 +166455,6 @@ member { type_id: 0x2ca91a7b offset: 128 } -member { - id: 0x0bb97dbd - name: "set_attr" - type_id: 0x2ee94408 - offset: 320 -} member { id: 0xd1a721b7 name: "set_auto_vbus_discharge_threshold" @@ -170291,12 +166798,6 @@ member { type_id: 0x0d44ba38 offset: 128 } -member { - id: 0x3cc9ff38 - name: "set_event_filter" - type_id: 0x2ebb6897 - offset: 2880 -} member { id: 0xada2d6c5 name: "set_fecparam" @@ -171691,12 +168192,6 @@ member { type_id: 0x295c7202 offset: 240 } -member { - id: 0x4e4c2253 - name: "sflags" - type_id: 0x295c7202 - offset: 15408 -} member { id: 0x00c081a9 name: "sfmode" @@ -171926,18 +168421,6 @@ member { type_id: 0x18bd6530 offset: 576 } -member { - id: 0x57b79a32 - name: "sgi_config" - type_id: 0x4b27ac3d - offset: 128 -} -member { - id: 0xb049594d - name: "sgi_domain" - type_id: 0x18a2fb63 - offset: 64 -} member { id: 0x37a44b88 name: "sgid" @@ -172979,12 +169462,6 @@ member { type_id: 0x02097f03 offset: 128 } -member { - id: 0xbf28dc5b - name: "signal_exits" - type_id: 0x92233392 - offset: 6976 -} member { id: 0x7eb64f1d name: "signal_type" @@ -173033,18 +169510,6 @@ member { type_id: 0x18bd6530 offset: 64 } -member { - id: 0xd1201d45 - name: "sigset" - type_id: 0x02097f03 - offset: 1216 -} -member { - id: 0x54ebc83a - name: "sigset_active" - type_id: 0x6720d32f - offset: 1152 -} member { id: 0x08f6c3d8 name: "sigtrap" @@ -173441,12 +169906,6 @@ member { type_id: 0xedf277ba offset: 64 } -member { - id: 0xd99613f3 - name: "size" - type_id: 0xe8034002 - offset: 48 -} member { id: 0xd9961bae name: "size" @@ -173524,12 +169983,6 @@ member { type_id: 0xbdd18903 offset: 320 } -member { - id: 0xd9cdf02e - name: "size" - type_id: 0xb3e7bac9 - offset: 8 -} member { id: 0xd9eb71ce name: "size" @@ -175033,12 +171486,6 @@ member { type_id: 0x6720d32f offset: 512 } -member { - id: 0x68304f23 - name: "slot" - type_id: 0xe62ebf07 - offset: 32 -} member { id: 0x688c706c name: "slot" @@ -175186,24 +171633,12 @@ member { name: "slots" type_id: 0xa634ef38 } -member { - id: 0x59597675 - name: "slots_arch_lock" - type_id: 0xa7c362b0 - offset: 448 -} member { id: 0xdd8a193d name: "slots_lock" type_id: 0x8d536703 offset: 32768 } -member { - id: 0xdda08f2f - name: "slots_lock" - type_id: 0xa7c362b0 - offset: 64 -} member { id: 0x3e932eb1 name: "slow_charger_loop" @@ -175347,12 +171782,6 @@ member { name: "smc_hash" type_id: 0x3c4ed50c } -member { - id: 0xe4cebf61 - name: "smccc_feat" - type_id: 0x2c432ef9 - offset: 3200 -} member { id: 0x0697a2b0 name: "smem_len" @@ -175601,12 +172030,6 @@ member { name: "soft_byte_limit" type_id: 0xedf277ba } -member { - id: 0x275ed516 - name: "soft_limit" - type_id: 0xc9082b19 - offset: 96 -} member { id: 0x27a4adf4 name: "soft_limit" @@ -175797,12 +172220,6 @@ member { type_id: 0x8d58bd1a offset: 96 } -member { - id: 0xd707c4f8 - name: "source" - type_id: 0x295c7202 - offset: 672 -} member { id: 0xd71086bc name: "source" @@ -176188,12 +172605,6 @@ member { type_id: 0x6720d32f offset: 416 } -member { - id: 0x36ede007 - name: "spin_loop" - type_id: 0x174a7c6e - offset: 1920 -} member { id: 0x9a7d3066 name: "spinlock" @@ -176211,12 +172622,6 @@ member { type_id: 0x33756485 offset: 64 } -member { - id: 0xde92dea2 - name: "spis" - type_id: 0x1a1575dd - offset: 448 -} member { id: 0xe3c602fa name: "splen" @@ -176844,12 +173249,6 @@ member { type_id: 0x1c3dbe5a offset: 416 } -member { - id: 0x2b889279 - name: "srcu" - type_id: 0xa46efa19 - offset: 26560 -} member { id: 0x2b8894ec name: "srcu" @@ -177547,12 +173946,6 @@ member { type_id: 0x0d2a160e offset: 448 } -member { - id: 0x4616bb5f - name: "start" - type_id: 0x0d879e14 - offset: 3072 -} member { id: 0x46176449 name: "start" @@ -177576,12 +173969,6 @@ member { type_id: 0x33756485 offset: 192 } -member { - id: 0x46284ff6 - name: "start" - type_id: 0x33756485 - offset: 128 -} member { id: 0x462b6471 name: "start" @@ -177847,12 +174234,6 @@ member { name: "start_id" type_id: 0xe62ebf07 } -member { - id: 0x4c6ccc95 - name: "start_level" - type_id: 0xc9082b19 - offset: 32 -} member { id: 0x4ca5b709 name: "start_level" @@ -178106,24 +174487,12 @@ member { name: "stashed" type_id: 0xb02b353a } -member { - id: 0xb934c444 - name: "stat" - type_id: 0x8f4af0b6 - offset: 69760 -} member { id: 0xb936ff9f name: "stat" type_id: 0x8d724b7d offset: 768 } -member { - id: 0xb9403407 - name: "stat" - type_id: 0xfbb47533 - offset: 20416 -} member { id: 0xb9498bcf name: "stat" @@ -179155,18 +175524,6 @@ member { type_id: 0xe62ebf07 offset: 288 } -member { - id: 0xd657a07c - name: "stats_id" - type_id: 0x1d61e0cf - offset: 34384 -} -member { - id: 0xd657a20e - name: "stats_id" - type_id: 0x1d61e0cf - offset: 76864 -} member { id: 0x17c68b0c name: "stats_lock" @@ -179321,11 +175678,6 @@ member { name: "status" type_id: 0x02fc92e9 } -member { - id: 0x20688d61 - name: "status" - type_id: 0x0faae5b1 -} member { id: 0x2069471f name: "status" @@ -179391,12 +175743,6 @@ member { type_id: 0xe2f9425b offset: 2176 } -member { - id: 0x208adc31 - name: "status" - type_id: 0xedf277ba - offset: 128 -} member { id: 0x208f24c4 name: "status" @@ -179510,23 +175856,6 @@ member { type_id: 0x16f3caa7 offset: 384 } -member { - id: 0x368deee8 - name: "std_bmap" - type_id: 0x33756485 -} -member { - id: 0x17d504ad - name: "std_hyp_bmap" - type_id: 0x33756485 - offset: 64 -} -member { - id: 0x80093c04 - name: "steal" - type_id: 0x34ed11d4 - offset: 67584 -} member { id: 0x6a086ae6 name: "step" @@ -179685,12 +176014,6 @@ member { type_id: 0x0d2aaf9f offset: 320 } -member { - id: 0x6985f4f1 - name: "stop" - type_id: 0x0d879e14 - offset: 3136 -} member { id: 0x698616dc name: "stop" @@ -180460,17 +176783,6 @@ member { type_id: 0x42201dce offset: 224 } -member { - id: 0x4add8ec8 - name: "subchannel_id" - type_id: 0xe8034002 -} -member { - id: 0x34ac3a50 - name: "subchannel_nr" - type_id: 0xe8034002 - offset: 16 -} member { id: 0x2c4470df name: "subclass_code" @@ -180553,11 +176865,6 @@ member { name: "subdirs" type_id: 0x33756485 } -member { - id: 0x0ede87d4 - name: "suberror" - type_id: 0xe62ebf07 -} member { id: 0x31604159 name: "subformat" @@ -181161,18 +177468,6 @@ member { type_id: 0xc9082b19 offset: 32 } -member { - id: 0x86378461 - name: "supported_cpus" - type_id: 0x99caa0ae - offset: 3072 -} -member { - id: 0x86b24cf6 - name: "supported_cpus" - type_id: 0x1c04d361 - offset: 2368 -} member { id: 0x8d29a756 name: "supported_events" @@ -181720,12 +178015,6 @@ member { type_id: 0x92233392 offset: 8832 } -member { - id: 0xae35f89b - name: "svcr" - type_id: 0x92233392 - offset: 14720 -} member { id: 0x81787084 name: "svdm_version" @@ -181738,24 +178027,12 @@ member { type_id: 0xaca841ec offset: 7680 } -member { - id: 0x05e10aeb - name: "sve_max_vl" - type_id: 0x4585663f - offset: 14656 -} member { id: 0x2e0a3ab1 name: "sve_state" type_id: 0x18bd6530 offset: 5376 } -member { - id: 0x2e0a3f7d - name: "sve_state" - type_id: 0x18bd6530 - offset: 14592 -} member { id: 0x0faf2220 name: "svid" @@ -182481,22 +178758,6 @@ member { type_id: 0x104ad696 offset: 256 } -member { - id: 0x5debde6d - name: "syncr_busy" - type_id: 0x74d29cf1 - offset: 31776 -} -member { - id: 0x6f97ea5f - name: "syndbg" - type_id: 0x14e96be8 -} -member { - id: 0x545bc45d - name: "synic" - type_id: 0x14e96bc2 -} member { id: 0x8e7c5fc5 name: "synq_overflow_ts" @@ -183451,11 +179712,6 @@ member { type_id: 0x011d1743 offset: 384 } -member { - id: 0xb39193a3 - name: "system_event" - type_id: 0x0f6d86be -} member { id: 0x10e96a60 name: "system_load" @@ -184037,12 +180293,6 @@ member { name: "target" type_id: 0x6720d32f } -member { - id: 0xb3c5f85e - name: "target" - type_id: 0x6720d32f - offset: 67200 -} member { id: 0xb3da3bc9 name: "target" @@ -184253,23 +180503,12 @@ member { type_id: 0xc9082b19 offset: 2368 } -member { - id: 0x096d65bb - name: "target_vcpu" - type_id: 0x08dcfb76 - offset: 384 -} member { id: 0x16133746 name: "targets" type_id: 0x0d107c2b offset: 64 } -member { - id: 0x16377fa9 - name: "targets" - type_id: 0x295c7202 -} member { id: 0x167e5754 name: "targets" @@ -185147,18 +181386,6 @@ member { type_id: 0x0ee450d7 offset: 192 } -member { - id: 0xb6388968 - name: "teardown_mc" - type_id: 0xce6b97ea - offset: 64 -} -member { - id: 0xc6b10bc0 - name: "teardown_stage2_mc" - type_id: 0xce6b97ea - offset: 192 -} member { id: 0x1bd6a7d2 name: "technology" @@ -185370,12 +181597,6 @@ member { type_id: 0x6d7f5ff6 offset: 296 } -member { - id: 0xa10fc33f - name: "test_young" - type_id: 0x2f50a983 - offset: 192 -} member { id: 0x6ca576c7 name: "testinfo_len" @@ -186544,12 +182765,6 @@ member { type_id: 0xc9082b19 offset: 12864 } -member { - id: 0x0120b46e - name: "timer_cpu" - type_id: 0x2f1ca510 - offset: 59968 -} member { id: 0xf23824cb name: "timer_expires" @@ -186635,11 +182850,6 @@ member { type_id: 0x55314bfb offset: 9472 } -member { - id: 0x30902b47 - name: "timers" - type_id: 0x4c3e1687 -} member { id: 0x5742dd35 name: "timers_active" @@ -187654,11 +183864,6 @@ member { offset: 3370 bitsize: 1 } -member { - id: 0x6fe88545 - name: "tpr_access" - type_id: 0x12592f4f -} member { id: 0x14f2c5a7 name: "tq" @@ -187846,11 +184051,6 @@ member { name: "trans_event" type_id: 0x4901181a } -member { - id: 0x072855a4 - name: "trans_exc_code" - type_id: 0xedf277ba -} member { id: 0x58786d8a name: "trans_start" @@ -188291,12 +184491,6 @@ member { type_id: 0x3846864c offset: 6656 } -member { - id: 0x81d670ed - name: "trfcr_el1" - type_id: 0x92233392 - offset: 4160 -} member { id: 0xd1709568 name: "tricklecharge_current_ua" @@ -191756,12 +187950,6 @@ member { name: "u" type_id: 0x6905d706 } -member { - id: 0xec1fd483 - name: "u" - type_id: 0x608c0f38 - offset: 64 -} member { id: 0xec25b730 name: "u" @@ -191790,12 +187978,6 @@ member { type_id: 0x460e36a4 offset: 960 } -member { - id: 0xec3c82cc - name: "u" - type_id: 0x43da400a - offset: 64 -} member { id: 0xec3d71ae name: "u" @@ -191947,22 +188129,6 @@ member { type_id: 0x33756485 offset: 256 } -member { - id: 0x1a96b10c - name: "uaccess_its_write" - type_id: 0x2eae2318 -} -member { - id: 0x8638eb22 - name: "uaccess_read" - type_id: 0x0669d6b3 - offset: 256 -} -member { - id: 0x34f83972 - name: "uaccess_write" - type_id: 0x2d62ee59 -} member { id: 0x555ff25e name: "uaddr" @@ -194810,18 +190976,6 @@ member { name: "used_keys" type_id: 0x4585663f } -member { - id: 0x867737e5 - name: "used_lrs" - type_id: 0x4585663f - offset: 2144 -} -member { - id: 0x8677397b - name: "used_lrs" - type_id: 0x4585663f - offset: 2432 -} member { id: 0x59ccfd6e name: "used_map_cnt" @@ -194852,12 +191006,6 @@ member { type_id: 0xa7c362b0 offset: 6720 } -member { - id: 0x0170d376 - name: "used_mask" - type_id: 0xb914bfab - offset: 2048 -} member { id: 0xcd075131 name: "used_sems" @@ -195252,24 +191400,12 @@ member { type_id: 0x6720d32f offset: 960 } -member { - id: 0x85e876e9 - name: "users" - type_id: 0x4585663f - offset: 384 -} member { id: 0x85e87d65 name: "users" type_id: 0x4585663f offset: 4544 } -member { - id: 0x914f88a3 - name: "users_count" - type_id: 0xa722c13e - offset: 24576 -} member { id: 0xbb6c91c3 name: "usersize" @@ -195300,12 +191436,6 @@ member { type_id: 0xa7c362b0 offset: 8960 } -member { - id: 0xff77b3c7 - name: "userspace_pid" - type_id: 0x49b889e7 - offset: 34240 -} member { id: 0x959b553f name: "uses_need_wakeup" @@ -195625,12 +191755,6 @@ member { name: "v2" type_id: 0xe10a7e38 } -member { - id: 0x76466478 - name: "v2_groups_user_writable" - type_id: 0x6d7f5ff6 - offset: 96 -} member { id: 0x195445f8 name: "v4" @@ -195960,12 +192084,6 @@ member { type_id: 0x4585663f offset: 448 } -member { - id: 0x7e5c1bb6 - name: "valid_wakeup" - type_id: 0x6d7f5ff6 - offset: 1312 -} member { id: 0x2a0a55ed name: "validate" @@ -196557,47 +192675,6 @@ member { type_id: 0x2e0761ed offset: 192 } -member { - id: 0xa936a2d5 - name: "vcpu" - type_id: 0x08dcfb76 -} -member { - id: 0xa936a512 - name: "vcpu" - type_id: 0x08dcfb76 - offset: 320 -} -member { - id: 0xcd6e2d79 - name: "vcpu_array" - type_id: 0x80c20070 - offset: 18176 -} -member { - id: 0xf58a324e - name: "vcpu_debug_state" - type_id: 0x590c6dd8 - offset: 15488 -} -member { - id: 0x7c4a52b5 - name: "vcpu_id" - type_id: 0x6720d32f - offset: 288 -} -member { - id: 0x7c4a5fae - name: "vcpu_id" - type_id: 0x6720d32f - offset: 128 -} -member { - id: 0xbcb323c9 - name: "vcpu_idx" - type_id: 0x6720d32f - offset: 320 -} member { id: 0x522a42f5 name: "vd" @@ -196735,11 +192812,6 @@ member { type_id: 0x39e70eca offset: 640 } -member { - id: 0x831d3c48 - name: "vector" - type_id: 0xb3e7bac9 -} member { id: 0x8367d3d9 name: "vector" @@ -196837,12 +192909,6 @@ member { type_id: 0x3deeb8f4 offset: 11008 } -member { - id: 0xba785216 - name: "vendor_hyp_bmap" - type_id: 0x33756485 - offset: 128 -} member { id: 0x0b0b87f3 name: "vendor_id" @@ -197282,97 +193348,6 @@ member { type_id: 0x4456a43e offset: 1024 } -member { - id: 0xf510916c - name: "vgic" - type_id: 0x2c25c966 - offset: 384 -} -member { - id: 0xaa37d774 - name: "vgic_ap0r" - type_id: 0xbe0f19dc - offset: 96 -} -member { - id: 0x47207a3e - name: "vgic_ap1r" - type_id: 0xbe0f19dc - offset: 224 -} -member { - id: 0xc9dbb39f - name: "vgic_apr" - type_id: 0xc9082b19 - offset: 64 -} -member { - id: 0x76772152 - name: "vgic_cpu" - type_id: 0xe46534dd - offset: 27968 -} -member { - id: 0x082c701d - name: "vgic_cpu_base" - type_id: 0x1b4ba19a -} -member { - id: 0xc573cedf - name: "vgic_dist_base" - type_id: 0x1b4ba19a - offset: 192 -} -member { - id: 0x4a8c149d - name: "vgic_hcr" - type_id: 0xc9082b19 -} -member { - id: 0x0f936dd3 - name: "vgic_its_base" - type_id: 0x1b4ba19a -} -member { - id: 0xa73178a4 - name: "vgic_lr" - type_id: 0x01e90d51 - offset: 96 -} -member { - id: 0xa75822b6 - name: "vgic_lr" - type_id: 0x68bb0e75 - offset: 384 -} -member { - id: 0xe66fe569 - name: "vgic_model" - type_id: 0xc9082b19 - offset: 32 -} -member { - id: 0x28fa73a3 - name: "vgic_sre" - type_id: 0xc9082b19 - offset: 64 -} -member { - id: 0xd491835d - name: "vgic_v2" - type_id: 0x020c6b41 -} -member { - id: 0x166fabb0 - name: "vgic_v3" - type_id: 0xbfc414f5 -} -member { - id: 0x38bbfe42 - name: "vgic_vmcr" - type_id: 0xc9082b19 - offset: 32 -} member { id: 0x4e9808a4 name: "vht_cap" @@ -198213,12 +194188,6 @@ member { type_id: 0x1bf16028 offset: 448 } -member { - id: 0x40e6d42e - name: "virt_to_phys" - type_id: 0x0b71f929 - offset: 448 -} member { id: 0x47f05b51 name: "virtmem" @@ -198391,36 +194360,12 @@ member { type_id: 0x7584e7da offset: 16 } -member { - id: 0xd2927ea1 - name: "vlpi_count" - type_id: 0x7e71c857 - offset: 480 -} -member { - id: 0xd298d587 - name: "vlpi_count" - type_id: 0x74d29cf1 - offset: 128 -} member { id: 0x182c3eca name: "vm_addr_space_mm" type_id: 0x8f0e76d7 offset: 64 } -member { - id: 0x3046b926 - name: "vm_bugged" - type_id: 0x6d7f5ff6 - offset: 34368 -} -member { - id: 0x82dad882 - name: "vm_dead" - type_id: 0x6d7f5ff6 - offset: 34376 -} member { id: 0xc16704da name: "vm_end" @@ -198444,12 +194389,6 @@ member { name: "vm_flags" type_id: 0xd2d7132a } -member { - id: 0x5d9a7aad - name: "vm_list" - type_id: 0xd3c80119 - offset: 18816 -} member { id: 0x155d76e4 name: "vm_lock" @@ -198479,12 +194418,6 @@ member { type_id: 0xb0510713 offset: 64 } -member { - id: 0xd652df47 - name: "vm_node" - type_id: 0xd3c80119 - offset: 192 -} member { id: 0x5a0cf049 name: "vm_node_stat_diff" @@ -198649,12 +194582,6 @@ member { type_id: 0x4585663f offset: 4032 } -member { - id: 0x87ea4d5c - name: "vmapp_count" - type_id: 0x74d29cf1 - offset: 512 -} member { id: 0x7a9a7619 name: "vmapping_counter" @@ -198667,11 +194594,6 @@ member { type_id: 0x33756485 offset: 832 } -member { - id: 0x69149bd4 - name: "vmid" - type_id: 0x0c039fcc -} member { id: 0x69834c4a name: "vmid" @@ -198849,64 +194771,24 @@ member { type_id: 0x2f43a458 offset: 2560 } -member { - id: 0x3e9547ca - name: "vpe_db_lpi" - type_id: 0x22b36393 - offset: 192 -} -member { - id: 0x1b58edc6 - name: "vpe_id" - type_id: 0x914dbfdc - offset: 944 -} member { id: 0x891a8488 name: "vpe_l1_base" type_id: 0x18bd6530 offset: 384 } -member { - id: 0xa8c6574f - name: "vpe_lock" - type_id: 0xc8b17aa7 - offset: 896 -} -member { - id: 0x715799b8 - name: "vpe_proxy_event" - type_id: 0x6720d32f -} member { id: 0x1a9ae5dc name: "vpe_table_mask" type_id: 0x0d910d7f offset: 320 } -member { - id: 0xade8e87b - name: "vpes" - type_id: 0x09af8dc9 - offset: 192 -} -member { - id: 0x18a69b62 - name: "vprop_page" - type_id: 0x06835e9c - offset: 128 -} member { id: 0x991cc136 name: "vps" type_id: 0x3dbcdeab offset: 1344 } -member { - id: 0xdca92f00 - name: "vpt_page" - type_id: 0x06835e9c -} member { id: 0xc5916613 name: "vqmmc" @@ -199026,12 +194908,6 @@ member { type_id: 0x4585663f offset: 1344 } -member { - id: 0xf681ca11 - name: "vsesr_el2" - type_id: 0x92233392 - offset: 67328 -} member { id: 0x8d8f1051 name: "vsk" @@ -199121,12 +194997,6 @@ member { type_id: 0x16c1acc8 offset: 64 } -member { - id: 0x8b881e3c - name: "vtcr" - type_id: 0x92233392 - offset: 320 -} member { id: 0xc821afee name: "vtermno" @@ -199400,12 +195270,6 @@ member { type_id: 0x76e1f83e offset: 128 } -member { - id: 0x20f5a5f4 - name: "wait" - type_id: 0xdba44af3 - offset: 1024 -} member { id: 0x9c8dc12c name: "wait_blkd_tasks" @@ -200308,18 +196172,6 @@ member { type_id: 0x578f9c2b offset: 22080 } -member { - id: 0x33be0c85 - name: "wfe_exit_stat" - type_id: 0x92233392 - offset: 6720 -} -member { - id: 0xff2da133 - name: "wfi_exit_stat" - type_id: 0x92233392 - offset: 6784 -} member { id: 0x149f4f99 name: "wheel_accumulated" @@ -201520,11 +197372,6 @@ member { type_id: 0x0e00c9b9 offset: 384 } -member { - id: 0x340ef030 - name: "write" - type_id: 0x0e24c2f6 -} member { id: 0x3421983a name: "write" @@ -201561,12 +197408,6 @@ member { type_id: 0x2d82cfe3 offset: 1728 } -member { - id: 0x342da96c - name: "write" - type_id: 0x2d797f87 - offset: 64 -} member { id: 0x342db9a0 name: "write" @@ -201723,12 +197564,6 @@ member { type_id: 0x3fcbf304 offset: 7488 } -member { - id: 0x5f710844 - name: "write_counter" - type_id: 0x0ff8ee0d - offset: 3008 -} member { id: 0x074a81fd name: "write_dbi" @@ -201854,12 +197689,6 @@ member { type_id: 0xa7c362b0 offset: 7744 } -member { - id: 0x365e3956 - name: "write_mask" - type_id: 0x33756485 - offset: 128 -} member { id: 0x54db64f6 name: "write_merkle_tree_block" @@ -202554,11 +198383,6 @@ member { type_id: 0x1997574a offset: 19584 } -member { - id: 0xd9690496 - name: "xen" - type_id: 0x56bbf50a -} member { id: 0x768fe3f7 name: "xfer_completion" @@ -203236,17 +199060,6 @@ member { type_id: 0x18bd6530 offset: 5440 } -member { - id: 0xe15e2cfc - name: "zalloc_page" - type_id: 0x1ebe4388 -} -member { - id: 0x511e5f54 - name: "zalloc_pages_exact" - type_id: 0x1076c35e - offset: 64 -} member { id: 0x8aa8a43b name: "zc" @@ -203381,14 +199194,6 @@ struct_union { member_id: 0x317e66e0 } } -struct_union { - id: 0x00b57da4 - kind: STRUCT - definition { - bytesize: 8 - member_id: 0x6364e5fc - } -} struct_union { id: 0x00bf9506 kind: STRUCT @@ -203398,15 +199203,6 @@ struct_union { member_id: 0xb8ccd046 } } -struct_union { - id: 0x00e0bdde - kind: STRUCT - definition { - bytesize: 8 - member_id: 0x6245278e - member_id: 0x76c39912 - } -} struct_union { id: 0x01122cba kind: STRUCT @@ -203505,18 +199301,6 @@ struct_union { member_id: 0xdf6c70da } } -struct_union { - id: 0x033c2bb8 - kind: STRUCT - definition { - bytesize: 72 - member_id: 0x6dda6e7d - member_id: 0x9ba00ef7 - member_id: 0x73fbf68d - member_id: 0x07c20efd - member_id: 0x4b34b9aa - } -} struct_union { id: 0x0366c345 kind: STRUCT @@ -203546,17 +199330,6 @@ struct_union { member_id: 0xa2f022cd } } -struct_union { - id: 0x03d32356 - kind: STRUCT - definition { - bytesize: 72 - member_id: 0x6e4d805e - member_id: 0xb049594d - member_id: 0x57b79a32 - member_id: 0x87ea4d5c - } -} struct_union { id: 0x0416665f kind: STRUCT @@ -203568,15 +199341,6 @@ struct_union { member_id: 0xd44af669 } } -struct_union { - id: 0x042d9ee3 - kind: STRUCT - definition { - bytesize: 8 - member_id: 0x715799b8 - member_id: 0x50f15a4b - } -} struct_union { id: 0x048fc360 kind: STRUCT @@ -203586,16 +199350,6 @@ struct_union { member_id: 0x877591f3 } } -struct_union { - id: 0x04935a3e - kind: STRUCT - definition { - bytesize: 32 - member_id: 0x73fbf26c - member_id: 0x07c203de - member_id: 0x4bf9b0b2 - } -} struct_union { id: 0x04cbe228 kind: STRUCT @@ -203815,18 +199569,6 @@ struct_union { member_id: 0xc76cfdee } } -struct_union { - id: 0x079bc2f5 - kind: STRUCT - definition { - bytesize: 24 - member_id: 0x7fb53355 - member_id: 0x6b90bd2c - member_id: 0xbbfcbfdf - member_id: 0xaddf2f83 - member_id: 0xff7fdfd9 - } -} struct_union { id: 0x07ba491c kind: STRUCT @@ -204039,19 +199781,6 @@ struct_union { member_id: 0x4b4ac8f5 } } -struct_union { - id: 0x0ad62715 - kind: STRUCT - definition { - bytesize: 20 - member_id: 0x4add8ec8 - member_id: 0x34ac3a50 - member_id: 0xadd5b431 - member_id: 0x1dac28b0 - member_id: 0x73d7e0dc - member_id: 0x8a59e26d - } -} struct_union { id: 0x0b00a1fe kind: STRUCT @@ -204379,17 +200108,6 @@ struct_union { member_id: 0x2d857ee0 } } -struct_union { - id: 0x0f0b7249 - kind: STRUCT - definition { - bytesize: 32 - member_id: 0x5d7bf520 - member_id: 0xe719c8c0 - member_id: 0x365e3956 - member_id: 0xff72a66c - } -} struct_union { id: 0x0f29d6cf kind: STRUCT @@ -204452,16 +200170,6 @@ struct_union { member_id: 0x7440609a } } -struct_union { - id: 0x0f6d86be - kind: STRUCT - definition { - bytesize: 136 - member_id: 0x5cb0fbc1 - member_id: 0xb7cbdc47 - member_id: 0x398b7926 - } -} struct_union { id: 0x0f6e64b7 kind: STRUCT @@ -204499,15 +200207,6 @@ struct_union { member_id: 0x52944bcc } } -struct_union { - id: 0x102e0991 - kind: STRUCT - definition { - bytesize: 16 - member_id: 0x215cae19 - member_id: 0x559b32a7 - } -} struct_union { id: 0x105131fa kind: STRUCT @@ -204606,19 +200305,6 @@ struct_union { member_id: 0x3b3d4f5b } } -struct_union { - id: 0x114efe06 - kind: STRUCT - definition { - bytesize: 16 - member_id: 0x24c02d11 - member_id: 0x4a120f63 - member_id: 0xd4d047b1 - member_id: 0xb86505a9 - member_id: 0xebeb17cb - member_id: 0xaf6f4ac0 - } -} struct_union { id: 0x1162939f kind: STRUCT @@ -204646,16 +200332,6 @@ struct_union { member_id: 0xcf58d11f } } -struct_union { - id: 0x12592f4f - kind: STRUCT - definition { - bytesize: 16 - member_id: 0x28cf1121 - member_id: 0x1ad44087 - member_id: 0x6b32a680 - } -} struct_union { id: 0x125b2ca2 kind: STRUCT @@ -204673,14 +200349,6 @@ struct_union { member_id: 0x283653a1 } } -struct_union { - id: 0x129d9eba - kind: STRUCT - definition { - bytesize: 256 - member_id: 0x2bc76984 - } -} struct_union { id: 0x12af4722 kind: STRUCT @@ -204720,17 +200388,6 @@ struct_union { member_id: 0xa89e596a } } -struct_union { - id: 0x13064264 - kind: STRUCT - definition { - bytesize: 88 - member_id: 0x2d1fec85 - member_id: 0xb75a0aec - member_id: 0xacf78dbd - member_id: 0x85260d3d - } -} struct_union { id: 0x130b9b47 kind: STRUCT @@ -204742,14 +200399,6 @@ struct_union { member_id: 0x3c63eeb5 } } -struct_union { - id: 0x130fee63 - kind: STRUCT - definition { - bytesize: 4 - member_id: 0x2d8eaae1 - } -} struct_union { id: 0x13110934 kind: STRUCT @@ -204994,32 +200643,6 @@ struct_union { member_id: 0x35690218 } } -struct_union { - id: 0x14e96bc2 - kind: STRUCT - definition { - bytesize: 32 - member_id: 0x32ae90fe - member_id: 0xbad0c2a3 - member_id: 0xfcd19375 - member_id: 0x89066d93 - member_id: 0x67f93f00 - } -} -struct_union { - id: 0x14e96be8 - kind: STRUCT - definition { - bytesize: 48 - member_id: 0x32ae90fe - member_id: 0xbad0c2a3 - member_id: 0xfcd19375 - member_id: 0x208adc31 - member_id: 0xc2c18445 - member_id: 0x32fffef6 - member_id: 0x09b42908 - } -} struct_union { id: 0x153cf6a0 kind: STRUCT @@ -205133,15 +200756,6 @@ struct_union { member_id: 0x375980f6 } } -struct_union { - id: 0x174a7c6e - kind: STRUCT - definition { - bytesize: 2 - member_id: 0x3c4c15e8 - member_id: 0xd4f73d44 - } -} struct_union { id: 0x1764a0c5 kind: STRUCT @@ -205208,14 +200822,6 @@ struct_union { member_id: 0xf440fec0 } } -struct_union { - id: 0x197ee30b - kind: STRUCT - definition { - bytesize: 4 - member_id: 0x044a9f42 - } -} struct_union { id: 0x1983785b kind: STRUCT @@ -205225,15 +200831,6 @@ struct_union { member_id: 0x70959b33 } } -struct_union { - id: 0x19910c85 - kind: STRUCT - definition { - bytesize: 16 - member_id: 0x072855a4 - member_id: 0xdd74def2 - } -} struct_union { id: 0x19bb23ae kind: STRUCT @@ -205406,27 +201003,6 @@ struct_union { member_id: 0xf5eb6708 } } -struct_union { - id: 0x1bf61cb5 - kind: STRUCT - definition { - bytesize: 32 - member_id: 0x0ede87d4 - member_id: 0xb7cbdc47 - member_id: 0x2d8572c8 - member_id: 0x34a3e933 - } -} -struct_union { - id: 0x1bf62820 - kind: STRUCT - definition { - bytesize: 136 - member_id: 0x0ede87d4 - member_id: 0xb7cbdc47 - member_id: 0xffe56fd2 - } -} struct_union { id: 0x1c07f73e kind: STRUCT @@ -205455,16 +201031,6 @@ struct_union { member_id: 0x3a91b492 } } -struct_union { - id: 0x1c51bab0 - kind: STRUCT - definition { - bytesize: 3 - member_id: 0x10cd0767 - member_id: 0x3a2d355a - member_id: 0xd3ff70d7 - } -} struct_union { id: 0x1cac6f1f kind: STRUCT @@ -205805,16 +201371,6 @@ struct_union { member_id: 0x240de36e } } -struct_union { - id: 0x24232993 - kind: STRUCT - definition { - bytesize: 12 - member_id: 0xf1c2dba4 - member_id: 0xff7407e8 - member_id: 0x1a818982 - } -} struct_union { id: 0x244bebad kind: STRUCT @@ -206151,28 +201707,6 @@ struct_union { member_id: 0x521e7522 } } -struct_union { - id: 0x2c2be6c7 - kind: STRUCT - definition { - bytesize: 88 - member_id: 0xd14fc76e - member_id: 0x517bb4e8 - member_id: 0x34abfc7a - } -} -struct_union { - id: 0x2c32891d - kind: STRUCT - definition { - bytesize: 72 - member_id: 0xd14fc76e - member_id: 0x34a16385 - member_id: 0x517bb77e - member_id: 0x6dda6565 - member_id: 0x6b32a1dc - } -} struct_union { id: 0x2c5bdc0e kind: STRUCT @@ -206260,15 +201794,6 @@ struct_union { member_id: 0x2d19b169 } } -struct_union { - id: 0x2d873b56 - kind: STRUCT - definition { - bytesize: 8 - member_id: 0xd7400399 - member_id: 0xedfdadd3 - } -} struct_union { id: 0x2d9765d2 kind: STRUCT @@ -206431,18 +201956,6 @@ struct_union { member_id: 0x99ee293a } } -struct_union { - id: 0x3050ef8f - kind: STRUCT - definition { - bytesize: 16 - member_id: 0xa02b28d6 - member_id: 0xd9cdf02e - member_id: 0x48131453 - member_id: 0x65c37c40 - member_id: 0x97a5dcff - } -} struct_union { id: 0x30572148 kind: STRUCT @@ -206461,15 +201974,6 @@ struct_union { member_id: 0xffe24985 } } -struct_union { - id: 0x315223c4 - kind: STRUCT - definition { - bytesize: 16 - member_id: 0xa4a87cc7 - member_id: 0x51e0ba6b - } -} struct_union { id: 0x31c1859a kind: STRUCT @@ -206479,16 +201983,6 @@ struct_union { member_id: 0xf63f2604 } } -struct_union { - id: 0x31f9c69b - kind: STRUCT - definition { - bytesize: 8 - member_id: 0xa6e46395 - member_id: 0xb21940c8 - member_id: 0x73d7e464 - } -} struct_union { id: 0x31fe95e7 kind: STRUCT @@ -206636,15 +202130,6 @@ struct_union { member_id: 0x39ff19b6 } } -struct_union { - id: 0x34ed11d4 - kind: STRUCT - definition { - bytesize: 16 - member_id: 0xb280959d - member_id: 0x85c1a1cb - } -} struct_union { id: 0x3508486b kind: STRUCT @@ -206715,14 +202200,6 @@ struct_union { member_id: 0x95dacd96 } } -struct_union { - id: 0x366bef7d - kind: STRUCT - definition { - bytesize: 16 - member_id: 0xb81eae99 - } -} struct_union { id: 0x36acbefb kind: STRUCT @@ -206750,17 +202227,6 @@ struct_union { member_id: 0x3dbb56a7 } } -struct_union { - id: 0x373a3dac - kind: STRUCT - definition { - bytesize: 24 - member_id: 0xbda607c1 - member_id: 0xff5ae7eb - member_id: 0xb8e3f22b - member_id: 0x1a818083 - } -} struct_union { id: 0x375126bc kind: STRUCT @@ -206781,17 +202247,6 @@ struct_union { member_id: 0xd72d8bb2 } } -struct_union { - id: 0x378b9399 - kind: STRUCT - definition { - bytesize: 80 - member_id: 0xbf324d0a - member_id: 0xad24c471 - member_id: 0x3496cf62 - member_id: 0x51f63d7f - } -} struct_union { id: 0x37f08244 kind: STRUCT @@ -206818,16 +202273,6 @@ struct_union { member_id: 0x80f2085f } } -struct_union { - id: 0x385d66bc - kind: STRUCT - definition { - bytesize: 528 - member_id: 0x80627a33 - member_id: 0xa6727baa - member_id: 0x81d670ed - } -} struct_union { id: 0x3876ab11 kind: STRUCT @@ -206860,14 +202305,6 @@ struct_union { member_id: 0xf8a78792 } } -struct_union { - id: 0x38ab0bc9 - kind: STRUCT - definition { - bytesize: 1 - member_id: 0x831d3c48 - } -} struct_union { id: 0x38df449f kind: STRUCT @@ -206982,15 +202419,6 @@ struct_union { member_id: 0xbec140a3 } } -struct_union { - id: 0x3a9c9162 - kind: STRUCT - definition { - bytesize: 16 - member_id: 0x8b19911e - member_id: 0xdac7f876 - } -} struct_union { id: 0x3aa6e17c kind: STRUCT @@ -207453,16 +202881,6 @@ struct_union { member_id: 0xd17382fd } } -struct_union { - id: 0x43da400a - kind: UNION - definition { - bytesize: 48 - member_id: 0x545bc45d - member_id: 0xd9dce494 - member_id: 0x6f97ea5f - } -} struct_union { id: 0x444ac848 kind: UNION @@ -207509,15 +202927,6 @@ struct_union { member_id: 0x403c1936 } } -struct_union { - id: 0x44cf9d95 - kind: UNION - definition { - bytesize: 8 - member_id: 0x485b3652 - member_id: 0x8e370213 - } -} struct_union { id: 0x44e0bbd2 kind: UNION @@ -207832,15 +203241,6 @@ struct_union { member_id: 0x89460966 } } -struct_union { - id: 0x4c287de0 - kind: UNION - definition { - bytesize: 4 - member_id: 0x6b32af03 - member_id: 0x782f8731 - } -} struct_union { id: 0x4c6fa86e kind: UNION @@ -208116,15 +203516,6 @@ struct_union { member_id: 0x92f464d1 } } -struct_union { - id: 0x50fafc25 - kind: UNION - definition { - bytesize: 40 - member_id: 0x18b48436 - member_id: 0xb403a636 - } -} struct_union { id: 0x51d7edf0 kind: UNION @@ -208180,15 +203571,6 @@ struct_union { member_id: 0xfe834548 } } -struct_union { - id: 0x537a3f0f - kind: UNION - definition { - bytesize: 4 - member_id: 0x16377fa9 - member_id: 0x34f49183 - } -} struct_union { id: 0x53b5414d kind: UNION @@ -208267,15 +203649,6 @@ struct_union { member_id: 0x0936eae7 } } -struct_union { - id: 0x54c04e96 - kind: UNION - definition { - bytesize: 16 - member_id: 0x082c701d - member_id: 0xc63d4176 - } -} struct_union { id: 0x5509d7db kind: UNION @@ -208468,15 +203841,6 @@ struct_union { member_id: 0x95dac977 } } -struct_union { - id: 0x5a6b6efc - kind: UNION - definition { - bytesize: 8 - member_id: 0x325a63f3 - member_id: 0x1caf0749 - } -} struct_union { id: 0x5a8e8177 kind: UNION @@ -208561,24 +203925,6 @@ struct_union { member_id: 0x438c4950 } } -struct_union { - id: 0x5bc27631 - kind: UNION - definition { - bytesize: 8 - member_id: 0x34f83972 - member_id: 0x1a96b10c - } -} -struct_union { - id: 0x5bdb70e0 - kind: UNION - definition { - bytesize: 8 - member_id: 0x340ef030 - member_id: 0x8844b6fd - } -} struct_union { id: 0x5c3ef0a3 kind: UNION @@ -208696,14 +204042,6 @@ struct_union { member_id: 0x7f7538b5 } } -struct_union { - id: 0x5da1f3d6 - kind: UNION - definition { - bytesize: 16 - member_id: 0x2d6cb85c - } -} struct_union { id: 0x5dafba4f kind: UNION @@ -208777,15 +204115,6 @@ struct_union { member_id: 0x61467847 } } -struct_union { - id: 0x5e422cfb - kind: UNION - definition { - bytesize: 72 - member_id: 0x22c0fbbc - member_id: 0x233f54d1 - } -} struct_union { id: 0x5e53dc24 kind: UNION @@ -209066,14 +204395,6 @@ struct_union { member_id: 0x5cb0fbc1 } } -struct_union { - id: 0x608c0f38 - kind: UNION - definition { - bytesize: 72 - member_id: 0xd9db4be5 - } -} struct_union { id: 0x60a4ff34 kind: UNION @@ -209237,15 +204558,6 @@ struct_union { member_id: 0xab12835f } } -struct_union { - id: 0x63db26fc - kind: UNION - definition { - bytesize: 312 - member_id: 0xd491835d - member_id: 0x166fabb0 - } -} struct_union { id: 0x63db5ef9 kind: UNION @@ -209428,14 +204740,6 @@ struct_union { member_id: 0xd25d6541 } } -struct_union { - id: 0x6903870d - kind: UNION - definition { - bytesize: 128 - member_id: 0xffe56b33 - } -} struct_union { id: 0x6905d706 kind: UNION @@ -209745,15 +205049,6 @@ struct_union { member_id: 0x3c3764f7 } } -struct_union { - id: 0x7097e100 - kind: UNION - definition { - bytesize: 4 - member_id: 0x99949b8a - member_id: 0x20688d61 - } -} struct_union { id: 0x70e783e8 kind: UNION @@ -209918,42 +205213,6 @@ struct_union { member_id: 0x1ee6b6cd } } -struct_union { - id: 0x7317df8a - kind: UNION - definition { - bytesize: 256 - member_id: 0x97c7b08c - member_id: 0x73029e0c - member_id: 0xbba39a9a - member_id: 0x9d5b90f8 - member_id: 0x07307794 - member_id: 0x4779a89b - member_id: 0x32e7dee3 - member_id: 0x6fe88545 - member_id: 0x2b1b8ef2 - member_id: 0x3fd31627 - member_id: 0xd9d85a91 - member_id: 0xc747f834 - member_id: 0xcf651311 - member_id: 0x3ba0211e - member_id: 0x35649aee - member_id: 0xae5a4181 - member_id: 0x66d41c47 - member_id: 0x04b5cf1e - member_id: 0xb39193a3 - member_id: 0x5fd2e3fb - member_id: 0xa2d43869 - member_id: 0x8a1c8492 - member_id: 0xdabb1c55 - member_id: 0x324f2583 - member_id: 0xd9690496 - member_id: 0x112a2e09 - member_id: 0xb09d2ffa - member_id: 0x56e50a84 - member_id: 0x6491fbda - } -} struct_union { id: 0x734252fe kind: UNION @@ -210228,15 +205487,6 @@ struct_union { member_id: 0xbed29020 } } -struct_union { - id: 0x76df8305 - kind: UNION - definition { - bytesize: 2048 - member_id: 0x80f111bb - member_id: 0x646aaa85 - } -} struct_union { id: 0x7745c8ef kind: UNION @@ -211094,16 +206344,6 @@ struct_union { member_id: 0x2011e070 } } -struct_union { - id: 0x656e53f1 - kind: STRUCT - name: "_kvm_stats_desc" - definition { - bytesize: 64 - member_id: 0x87807fd8 - member_id: 0x0dc6047f - } -} struct_union { id: 0x459e900e kind: STRUCT @@ -211540,31 +206780,6 @@ struct_union { member_id: 0x396b4bac } } -struct_union { - id: 0x825d5993 - kind: STRUCT - name: "arch_timer_context" - definition { - bytesize: 104 - member_id: 0xa936a2d5 - member_id: 0x99abc34e - member_id: 0x8a1ddc22 - member_id: 0xbcb6da5b - member_id: 0xd7232081 - member_id: 0x0b3a6d95 - } -} -struct_union { - id: 0x2f1ca510 - kind: STRUCT - name: "arch_timer_cpu" - definition { - bytesize: 288 - member_id: 0x30902b47 - member_id: 0xd0847011 - member_id: 0x3a2d374f - } -} struct_union { id: 0x82e932a0 kind: STRUCT @@ -211599,42 +206814,6 @@ struct_union { definition { } } -struct_union { - id: 0xe62c1341 - kind: STRUCT - name: "arm_pmu" - definition { - bytesize: 560 - member_id: 0x93ce5218 - member_id: 0x86b24cf6 - member_id: 0x0ddfea33 - member_id: 0xd81b71f1 - member_id: 0x72a25545 - member_id: 0x98e86c88 - member_id: 0x0d828e0a - member_id: 0x09fd4226 - member_id: 0x2d61ef43 - member_id: 0x3cc9ff38 - member_id: 0x2635ef55 - member_id: 0x5f710844 - member_id: 0x4616bb5f - member_id: 0x6985f4f1 - member_id: 0x62b29c82 - member_id: 0x308dee6b - member_id: 0x033b7284 - member_id: 0xaeede60f - member_id: 0xa39136f0 - member_id: 0xca44b141 - member_id: 0x28894114 - member_id: 0x1a1fd0a0 - member_id: 0x2d3aa998 - member_id: 0x0f3ca933 - member_id: 0x502de800 - member_id: 0xf8037d37 - member_id: 0xddab36b7 - member_id: 0x1cafacfd - } -} struct_union { id: 0x48893aca kind: STRUCT @@ -231409,16 +226588,6 @@ struct_union { member_id: 0xb5c2b19d } } -struct_union { - id: 0x2259094e - kind: STRUCT - name: "irq_ops" - definition { - bytesize: 16 - member_id: 0x2d5bf13a - member_id: 0x682b5a38 - } -} struct_union { id: 0xb95bf932 kind: STRUCT @@ -231463,43 +226632,6 @@ struct_union { member_id: 0x50c461ff } } -struct_union { - id: 0x39aedbce - kind: STRUCT - name: "its_vm" - definition { - bytesize: 128 - member_id: 0x6e4d805e - member_id: 0xa719d61d - member_id: 0x18a69b62 - member_id: 0xade8e87b - member_id: 0x6ba53b1d - member_id: 0x3baa0bf3 - member_id: 0xd3a54092 - member_id: 0xb9a58615 - member_id: 0xd2927ea1 - } -} -struct_union { - id: 0x19bba071 - kind: STRUCT - name: "its_vpe" - definition { - bytesize: 128 - member_id: 0xdca92f00 - member_id: 0xa70b7acb - member_id: 0xd298d587 - member_id: 0x99159806 - member_id: 0x3e9547ca - member_id: 0x3a956acf - member_id: 0xa3f01223 - member_id: 0x345b10fd - member_id: 0xa8c6574f - member_id: 0x6710a2d3 - member_id: 0x1b58edc6 - member_id: 0x141c8cee - } -} struct_union { id: 0xb34a0d30 kind: STRUCT @@ -232736,83 +227868,6 @@ struct_union { member_id: 0x96845159 } } -struct_union { - id: 0xf2aeafb9 - kind: STRUCT - name: "kvm" - definition { - bytesize: 4352 - member_id: 0x833819ed - member_id: 0xdda08f2f - member_id: 0x59597675 - member_id: 0x3025d651 - member_id: 0x8a52dd6e - member_id: 0xf0778c7b - member_id: 0x4f1355bb - member_id: 0xcd6e2d79 - member_id: 0x8174053d - member_id: 0x1a817692 - member_id: 0xf11c4ad7 - member_id: 0x46e189ff - member_id: 0xca660682 - member_id: 0xc21468d0 - member_id: 0x107724e0 - member_id: 0x221ad62a - member_id: 0x85550ce5 - member_id: 0x5d9a7aad - member_id: 0x2d4b3b7e - member_id: 0xfa427670 - member_id: 0x450927c5 - member_id: 0x0d7ae40f - member_id: 0xb9403407 - member_id: 0xb857a998 - member_id: 0x914f88a3 - member_id: 0x48aab379 - member_id: 0xa84d097f - member_id: 0x02a639fa - member_id: 0x8cfde860 - member_id: 0x71efddfa - member_id: 0x3b21a108 - member_id: 0x4938a60d - member_id: 0x59a47d0f - member_id: 0x1c0c4ea6 - member_id: 0xc81d2fc7 - member_id: 0xf7c73e7d - member_id: 0x33ed52b5 - member_id: 0x69005a44 - member_id: 0x6425d0fe - member_id: 0xcd446a90 - member_id: 0x2b889279 - member_id: 0xb5417608 - member_id: 0xff77b3c7 - member_id: 0x8dc5ba0f - member_id: 0xf60ae606 - member_id: 0x8de27dbd - member_id: 0x3046b926 - member_id: 0x82dad882 - member_id: 0xd657a07c - } -} -struct_union { - id: 0xfd71f39d - kind: STRUCT - name: "kvm_arch" - definition { - bytesize: 488 - member_id: 0x6dab2c05 - member_id: 0x8b881e3c - member_id: 0xf510916c - member_id: 0x2c10bf52 - member_id: 0x2d5bffb1 - member_id: 0x3957d3b9 - member_id: 0xce7b08c8 - member_id: 0x86378461 - member_id: 0x03a47022 - member_id: 0x42988d63 - member_id: 0xe4cebf61 - member_id: 0xe908f26f - } -} struct_union { id: 0x99ce8ef3 kind: STRUCT @@ -232820,29 +227875,6 @@ struct_union { definition { } } -struct_union { - id: 0xef8b9e67 - kind: STRUCT - name: "kvm_coalesced_mmio" - definition { - bytesize: 24 - member_id: 0xbda607c1 - member_id: 0xb8e3ff08 - member_id: 0x30c18aff - member_id: 0xff5aeac8 - } -} -struct_union { - id: 0x99f4eb25 - kind: STRUCT - name: "kvm_coalesced_mmio_ring" - definition { - bytesize: 8 - member_id: 0x1f01199c - member_id: 0x26892e85 - member_id: 0xe2ce2718 - } -} struct_union { id: 0x6a241fb6 kind: STRUCT @@ -232856,181 +227888,7 @@ struct_union { member_id: 0x0763cc89 member_id: 0x5b05aaff member_id: 0x792a2a11 - member_id: 0x983c1d18 - } -} -struct_union { - id: 0xb47f1c0e - kind: STRUCT - name: "kvm_debug_exit_arch" - definition { - bytesize: 16 - member_id: 0x8c045ea7 - member_id: 0x440037d1 - member_id: 0xe9c99bd1 - } -} -struct_union { - id: 0xe2d4c01c - kind: STRUCT - name: "kvm_device" - definition { - bytesize: 40 - member_id: 0xafbacb95 - member_id: 0x730e8f88 - member_id: 0x91796f71 - member_id: 0xd652df47 - } -} -struct_union { - id: 0xc6171ee9 - kind: STRUCT - name: "kvm_device_attr" - definition { - bytesize: 24 - member_id: 0x2d8eaae1 - member_id: 0xd37422b2 - member_id: 0x8ce95ca0 - member_id: 0x24c024d3 - } -} -struct_union { - id: 0xc5f74818 - kind: STRUCT - name: "kvm_device_ops" - definition { - bytesize: 80 - member_id: 0x0de57ce8 - member_id: 0x0fad648a - member_id: 0x1ae7589a - member_id: 0xa4fbb750 - member_id: 0xae95664d - member_id: 0x0bb97dbd - member_id: 0xbe7a98dd - member_id: 0x5d4925a5 - member_id: 0x4d44694e - member_id: 0x87fdbe87 - } -} -struct_union { - id: 0xfe89d18d - kind: STRUCT - name: "kvm_dirty_gfn" - definition { - bytesize: 16 - member_id: 0x2d8eaae1 - member_id: 0x68304f23 - member_id: 0x9bf12a52 - } -} -struct_union { - id: 0x95e9e529 - kind: STRUCT - name: "kvm_dirty_ring" - definition { - bytesize: 32 - member_id: 0x4647cbd4 - member_id: 0xcfe72c2d - member_id: 0xd9b710b8 - member_id: 0x275ed516 - member_id: 0x69efcf5e - member_id: 0xad5e20a5 - } -} -struct_union { - id: 0x590c6dd8 - kind: STRUCT - name: "kvm_guest_debug_arch" - definition { - bytesize: 512 - member_id: 0x5cb6e321 - member_id: 0xb8d95da8 - member_id: 0x6a57f232 - member_id: 0x88756f7c - } -} -struct_union { - id: 0xce6b97ea - kind: STRUCT - name: "kvm_hyp_memcache" - definition { - bytesize: 16 - member_id: 0xb5e76888 - member_id: 0xe3b1b19e - } -} -struct_union { - id: 0x7ff97877 - kind: STRUCT - name: "kvm_hyperv_exit" - definition { - bytesize: 56 - member_id: 0x5cb0fbc1 - member_id: 0x6612cc37 - member_id: 0xec3c82cc - } -} -struct_union { - id: 0x1b5f79d9 - kind: STRUCT - name: "kvm_io_bus" - definition { - bytesize: 8 - member_id: 0xa05ae8b2 - member_id: 0x3103f4d5 - member_id: 0x0e6e7fb8 - } -} -struct_union { - id: 0x3fc5b8b3 - kind: STRUCT - name: "kvm_io_device" - definition { - bytesize: 8 - member_id: 0xafbcd9c0 - } -} -struct_union { - id: 0xa4d21be9 - kind: STRUCT - name: "kvm_io_device_ops" - definition { - bytesize: 24 - member_id: 0x487026f9 - member_id: 0x342da96c - member_id: 0xa414c1a9 - } -} -struct_union { - id: 0x5b1f6457 - kind: STRUCT - name: "kvm_io_range" - definition { - bytesize: 24 - member_id: 0x243694c7 - member_id: 0xb862f164 - member_id: 0xce3c8adf - } -} -struct_union { - id: 0xd9729a52 - kind: STRUCT - name: "kvm_irq_level" - definition { - bytesize: 8 - member_id: 0x3fee6444 - member_id: 0x865cec96 - } -} -struct_union { - id: 0xaf573835 - kind: STRUCT - name: "kvm_irq_routing_table" - definition { - bytesize: 3960 - member_id: 0xc6fa2a23 - member_id: 0xf6e30a95 - member_id: 0x8d25e654 + member_id: 0x982c7c86 } } struct_union { @@ -233052,390 +227910,6 @@ struct_union { member_id: 0x2ea5323b } } -struct_union { - id: 0x07a8c893 - kind: STRUCT - name: "kvm_memslots" - definition { - bytesize: 1072 - member_id: 0x694cfe41 - member_id: 0xabf33787 - member_id: 0x130ace31 - member_id: 0xc25cb27c - member_id: 0xba6f54b9 - member_id: 0xdeaef990 - } -} -struct_union { - id: 0xc6388883 - kind: STRUCT - name: "kvm_mmio_fragment" - definition { - bytesize: 24 - member_id: 0xc1d9a180 - member_id: 0xff8a9de8 - member_id: 0xb84059f2 - } -} -struct_union { - id: 0xa2ba72d6 - kind: STRUCT - name: "kvm_mmu_memory_cache" - definition { - bytesize: 40 - member_id: 0x603fc5a7 - member_id: 0x8e40fa3f - member_id: 0xde99678b - member_id: 0x85e4ba6c - member_id: 0xa779a4af - member_id: 0x2aa4f724 - } -} -struct_union { - id: 0x029d28cb - kind: STRUCT - name: "kvm_mp_state" - definition { - bytesize: 4 - member_id: 0xfc27981e - } -} -struct_union { - id: 0x6f796009 - kind: STRUCT - name: "kvm_pgtable" - definition { - bytesize: 48 - member_id: 0x83618e44 - member_id: 0x4c6ccc95 - member_id: 0x331a3623 - member_id: 0xa69ad382 - member_id: 0x6d5a2dc5 - member_id: 0x2ddb7ced - member_id: 0x8661d99b - } -} -struct_union { - id: 0x1c1e6c54 - kind: STRUCT - name: "kvm_pgtable_mm_ops" - definition { - bytesize: 80 - member_id: 0xe15e2cfc - member_id: 0x511e5f54 - member_id: 0xef540e05 - member_id: 0xcf22b6e3 - member_id: 0x68c1b0bb - member_id: 0x21516548 - member_id: 0x66a97394 - member_id: 0x40e6d42e - member_id: 0x0a10a4f8 - member_id: 0x27f5e987 - } -} -struct_union { - id: 0x93ebc7c6 - kind: STRUCT - name: "kvm_pgtable_pte_ops" - definition { - bytesize: 16 - member_id: 0x53106073 - member_id: 0xeef9224d - } -} -struct_union { - id: 0x4025bdaf - kind: STRUCT - name: "kvm_pmc" - definition { - bytesize: 16 - member_id: 0x3caea455 - member_id: 0xf94346ab - } -} -struct_union { - id: 0xbe704ca9 - kind: STRUCT - name: "kvm_pmu" - definition { - bytesize: 560 - member_id: 0x39d6cdec - member_id: 0x112c08c3 - member_id: 0x15c30de0 - member_id: 0x94f98f17 - member_id: 0x92faaaee - member_id: 0xd133b0b1 - } -} -struct_union { - id: 0xd9b5b8b6 - kind: STRUCT - name: "kvm_pmu_events" - definition { - bytesize: 8 - member_id: 0xa9fd6a40 - member_id: 0x97ab0bd6 - } -} -struct_union { - id: 0xf75540c7 - kind: STRUCT - name: "kvm_protected_vm" - definition { - bytesize: 64 - member_id: 0xb8f5134f - member_id: 0xb6388968 - member_id: 0xc6b10bc0 - member_id: 0x037e99ae - member_id: 0x0f7f629e - member_id: 0x3a2d39cb - } -} -struct_union { - id: 0xdcd5c554 - kind: STRUCT - name: "kvm_run" - definition { - bytesize: 2352 - member_id: 0xf6476a4c - member_id: 0xb85c9514 - member_id: 0xd06a5757 - member_id: 0x4f84d1da - member_id: 0x6bffa57c - member_id: 0x7eaf49aa - member_id: 0x2d808bd3 - member_id: 0x00fa5522 - member_id: 0x5ba521f2 - member_id: 0x3f0e6b4d - member_id: 0x4b1e23b0 - member_id: 0xaa4c4a21 - member_id: 0x67846dd9 - } -} -struct_union { - id: 0xc9e16a53 - kind: STRUCT - name: "kvm_s2_mmu" - definition { - bytesize: 40 - member_id: 0x69149bd4 - member_id: 0x99236fa3 - member_id: 0x7f170713 - member_id: 0x9555d521 - member_id: 0xb89f1d6b - } -} -struct_union { - id: 0x2c432ef9 - kind: STRUCT - name: "kvm_smccc_features" - definition { - bytesize: 24 - member_id: 0x368deee8 - member_id: 0x17d504ad - member_id: 0xba785216 - } -} -struct_union { - id: 0xf0ca3374 - kind: STRUCT - name: "kvm_stat_data" - definition { - bytesize: 24 - member_id: 0x730e8b69 - member_id: 0x87e1eb87 - member_id: 0xd7f60431 - } -} -struct_union { - id: 0x5a5219ed - kind: STRUCT - name: "kvm_stats_desc" - definition { - bytesize: 16 - member_id: 0x2d8eaae1 - member_id: 0xdf3a40d2 - member_id: 0xd99613f3 - member_id: 0x9bfaf69a - member_id: 0xe6502bd9 - member_id: 0x0d114fce - } -} -struct_union { - id: 0xca67e5f6 - kind: STRUCT - name: "kvm_sync_regs" - definition { - bytesize: 8 - member_id: 0xf5b742db - } -} -struct_union { - id: 0x09330b45 - kind: STRUCT - name: "kvm_vcpu" - definition { - bytesize: 9712 - member_id: 0x730e8b69 - member_id: 0xad12ae54 - member_id: 0x5161b04d - member_id: 0x7c4a52b5 - member_id: 0xbcb323c9 - member_id: 0xfc4129b1 - member_id: 0x87fa34df - member_id: 0x9f936789 - member_id: 0xd014eabd - member_id: 0xad898a70 - member_id: 0x021fd03f - member_id: 0x20f5a5f4 - member_id: 0x74912d9b - member_id: 0x54ebc83a - member_id: 0xd1201d45 - member_id: 0xcffef03f - member_id: 0x7e5c1bb6 - member_id: 0xb16b8efe - member_id: 0xf337f353 - member_id: 0xe4aa6cb8 - member_id: 0x41a58807 - member_id: 0x22a96429 - member_id: 0x0abc4886 - member_id: 0x36ede007 - member_id: 0x1bd1d822 - member_id: 0xa3f0172f - member_id: 0xb81bb253 - member_id: 0xb934c444 - member_id: 0xd657a20e - member_id: 0x0741ce14 - member_id: 0xab7e4a6e - member_id: 0x1838fabc - } -} -struct_union { - id: 0xb16454d0 - kind: STRUCT - name: "kvm_vcpu_arch" - definition { - bytesize: 8464 - member_id: 0x2723fe2c - member_id: 0x2e0a3f7d - member_id: 0x05e10aeb - member_id: 0xae35f89b - member_id: 0xf34e08bb - member_id: 0xc4593e51 - member_id: 0x376609fd - member_id: 0x0cc65d59 - member_id: 0xdb73cbc4 - member_id: 0x7b6a6e0c - member_id: 0x06effd42 - member_id: 0x9608d64b - member_id: 0x50f909b7 - member_id: 0x4e4c2253 - member_id: 0x6d45f1ba - member_id: 0x7e662956 - member_id: 0xf58a324e - member_id: 0x15ff4fe5 - member_id: 0x909d979f - member_id: 0x2edd8c13 - member_id: 0x76772152 - member_id: 0x0120b46e - member_id: 0x93b6279b - member_id: 0x57b4f0b1 - member_id: 0xfcc328ac - member_id: 0x37f52c8e - member_id: 0xb3c5f85e - member_id: 0xc5a16f87 - member_id: 0xf681ca11 - member_id: 0xa700e1ff - member_id: 0x80093c04 - } -} -struct_union { - id: 0xe41fd2fe - kind: STRUCT - name: "kvm_vcpu_fault_info" - definition { - bytesize: 32 - member_id: 0xfe44cfde - member_id: 0x550ab6b9 - member_id: 0xd6cec4c2 - member_id: 0x1de22279 - } -} -struct_union { - id: 0x8f4af0b6 - kind: STRUCT - name: "kvm_vcpu_stat" - definition { - bytesize: 888 - member_id: 0x42be7fea - member_id: 0x65c703ea - member_id: 0x33be0c85 - member_id: 0xff2da133 - member_id: 0x3c9c64dc - member_id: 0x22f5be35 - member_id: 0xbf28dc5b - member_id: 0x237f1104 - } -} -struct_union { - id: 0x84fc1211 - kind: STRUCT - name: "kvm_vcpu_stat_generic" - definition { - bytesize: 832 - member_id: 0x0946dc8b - member_id: 0x0e3de808 - member_id: 0x5f0d9541 - member_id: 0xe9b25d2a - member_id: 0xdc094b5c - member_id: 0x5e1d7f8d - member_id: 0xa1ad1dfd - member_id: 0x47baacc5 - member_id: 0xd7979ded - member_id: 0x2665d054 - member_id: 0x8efec678 - } -} -struct_union { - id: 0xfbb47533 - kind: STRUCT - name: "kvm_vm_stat" - definition { - bytesize: 32 - member_id: 0x42aa8b1f - member_id: 0x7efa09f3 - member_id: 0x46e4dafc - } -} -struct_union { - id: 0x9008e757 - kind: STRUCT - name: "kvm_vm_stat_generic" - definition { - bytesize: 16 - member_id: 0x8726cc6c - member_id: 0xe4dfd298 - } -} -struct_union { - id: 0x0c039fcc - kind: STRUCT - name: "kvm_vmid" - definition { - bytesize: 8 - member_id: 0xcc3069e2 - } -} -struct_union { - id: 0x56bbf50a - kind: STRUCT - name: "kvm_xen_exit" - definition { - bytesize: 80 - member_id: 0x5cb0fbc1 - member_id: 0xec1fd483 - } -} struct_union { id: 0x27179756 kind: STRUCT @@ -236033,58 +230507,6 @@ struct_union { member_id: 0xc5916613 } } -struct_union { - id: 0x846ab93f - kind: STRUCT - name: "mmu_notifier" - definition { - bytesize: 72 - member_id: 0x2d522361 - member_id: 0xafb0c299 - member_id: 0x3025dd22 - member_id: 0x95dac9dc - member_id: 0x85e876e9 - member_id: 0x2d081245 - member_id: 0x637602ba - } -} -struct_union { - id: 0x65fba0a9 - kind: STRUCT - name: "mmu_notifier_ops" - definition { - bytesize: 112 - member_id: 0xae94e729 - member_id: 0xe32eadd5 - member_id: 0xf2531964 - member_id: 0xa10fc33f - member_id: 0x83d10832 - member_id: 0x0545c767 - member_id: 0x4f063390 - member_id: 0x6e9b1c0d - member_id: 0xaf409590 - member_id: 0xfc81ed63 - member_id: 0x2d08134b - member_id: 0x63760b9f - member_id: 0xac8941f8 - member_id: 0xe0f637f1 - } -} -struct_union { - id: 0xa68d9aed - kind: STRUCT - name: "mmu_notifier_range" - definition { - bytesize: 48 - member_id: 0x23919a13 - member_id: 0x3025d10a - member_id: 0x46284ff6 - member_id: 0x823c26d1 - member_id: 0x2d2d0193 - member_id: 0x0ad7602b - member_id: 0x4a85cf2e - } -} struct_union { id: 0xd1ebc718 kind: STRUCT @@ -241853,19 +236275,6 @@ struct_union { member_id: 0x987465ac } } -struct_union { - id: 0x5fd7ae1b - kind: STRUCT - name: "pmu_hw_events" - definition { - bytesize: 288 - member_id: 0x11a602db - member_id: 0x0170d376 - member_id: 0x03f344e6 - member_id: 0x34c743f9 - member_id: 0x99159c15 - } -} struct_union { id: 0x0f15c20c kind: UNION @@ -242389,26 +236798,6 @@ struct_union { member_id: 0xcca579d8 } } -struct_union { - id: 0x89c67026 - kind: STRUCT - name: "preempt_notifier" - definition { - bytesize: 24 - member_id: 0x55f738dc - member_id: 0xafaa08ab - } -} -struct_union { - id: 0xae47ce96 - kind: STRUCT - name: "preempt_ops" - definition { - bytesize: 16 - member_id: 0xe0b448e4 - member_id: 0x7b24028f - } -} struct_union { id: 0x1331151e kind: STRUCT @@ -261251,18 +255640,6 @@ struct_union { member_id: 0x2d081124 } } -struct_union { - id: 0x3f42023f - kind: STRUCT - name: "vcpu_reset_state" - definition { - bytesize: 24 - member_id: 0xa5f74e1c - member_id: 0x766556ed - member_id: 0x09a85b04 - member_id: 0x62d0d919 - } -} struct_union { id: 0x9871ee6b kind: STRUCT @@ -261279,196 +255656,6 @@ struct_union { member_id: 0xe0f6333c } } -struct_union { - id: 0xe46534dd - kind: STRUCT - name: "vgic_cpu" - definition { - bytesize: 4000 - member_id: 0x3b3d55bb - member_id: 0xdbd2d18f - member_id: 0xc8f35c78 - member_id: 0x18b67de8 - member_id: 0xb5b5379c - member_id: 0x525d4aae - member_id: 0xe932d634 - member_id: 0x5debde6d - member_id: 0x8109b274 - member_id: 0x8ed30508 - member_id: 0xbf52270e - member_id: 0xf95b9cd7 - } -} -struct_union { - id: 0x2c25c966 - kind: STRUCT - name: "vgic_dist" - definition { - bytesize: 304 - member_id: 0xd935af97 - member_id: 0xa3f017bd - member_id: 0xd56295db - member_id: 0xe66fe569 - member_id: 0x7a0e7466 - member_id: 0x76466478 - member_id: 0x7abe829e - member_id: 0x5eb23b58 - member_id: 0xc573cedf - member_id: 0x36fb8f0a - member_id: 0x3a2d3f2e - member_id: 0xb1e7f3ff - member_id: 0xde92dea2 - member_id: 0x6fe87475 - member_id: 0x557bdab2 - member_id: 0x703b904f - member_id: 0xbe693b59 - member_id: 0x9c466cf2 - member_id: 0x4d9128b0 - member_id: 0xd5bf2684 - member_id: 0x2b5908df - member_id: 0xa736298d - } -} -struct_union { - id: 0x60b9a60c - kind: STRUCT - name: "vgic_io_device" - definition { - bytesize: 40 - member_id: 0xf9ecc4b7 - member_id: 0x3551435a - member_id: 0x4e19f41c - member_id: 0x10f4be53 - member_id: 0xddd1c1b9 - member_id: 0xce062759 - } -} -struct_union { - id: 0x421531e8 - kind: STRUCT - name: "vgic_irq" - definition { - bytesize: 112 - member_id: 0x8c92967c - member_id: 0x9ecea343 - member_id: 0xd96ad022 - member_id: 0xa936a512 - member_id: 0x096d65bb - member_id: 0x4af72c65 - member_id: 0x2b9d91fc - member_id: 0x004ca63d - member_id: 0x224f240b - member_id: 0x3a2d3590 - member_id: 0x97aa71b6 - member_id: 0x05ec0a8d - member_id: 0xb62bb539 - member_id: 0xc2defa03 - member_id: 0x371515be - member_id: 0xd707c4f8 - member_id: 0x8f0fcc44 - member_id: 0x10cd0450 - member_id: 0xd3bb5c92 - member_id: 0xd1469e0e - member_id: 0xaf890e76 - member_id: 0x4a85cb53 - } -} -struct_union { - id: 0xdbe5858f - kind: STRUCT - name: "vgic_its" - definition { - bytesize: 232 - member_id: 0x0f936dd3 - member_id: 0x3a2d3a5d - member_id: 0xc33609f7 - member_id: 0xce0bc034 - member_id: 0x58199dc6 - member_id: 0x9232ba55 - member_id: 0x28ddf56e - member_id: 0xd83a0eba - member_id: 0x110caede - member_id: 0x09c4ee83 - member_id: 0xb41bc738 - member_id: 0x857bfedc - member_id: 0x5adf7097 - member_id: 0x5a9c1331 - } -} -struct_union { - id: 0x6ff43c7f - kind: STRUCT - name: "vgic_redist_region" - definition { - bytesize: 40 - member_id: 0xadf00094 - member_id: 0x85c1a1cb - member_id: 0x65ec5e2d - member_id: 0x3e423a64 - member_id: 0x7c00e79b - } -} -struct_union { - id: 0x3ae08515 - kind: STRUCT - name: "vgic_register_region" - definition { - bytesize: 48 - member_id: 0x83dea94b - member_id: 0xb8405d0b - member_id: 0xbab5eab6 - member_id: 0xcb7a7a49 - member_id: 0x32f872a3 - member_id: 0x353d48f5 - member_id: 0x8638eb22 - member_id: 0x353b064f - } -} -struct_union { - id: 0xc5586f9b - kind: STRUCT - name: "vgic_state_iter" - definition { - bytesize: 40 - member_id: 0xc2c8918f - member_id: 0x5eb23fa1 - member_id: 0x2af96acc - member_id: 0x929175ec - member_id: 0x7c4a5fae - member_id: 0x4a590e0a - member_id: 0x43246e2d - member_id: 0xeca52885 - } -} -struct_union { - id: 0x020c6b41 - kind: STRUCT - name: "vgic_v2_cpu_if" - definition { - bytesize: 272 - member_id: 0x4a8c149d - member_id: 0x38bbfe42 - member_id: 0xc9dbb39f - member_id: 0xa73178a4 - member_id: 0x867737e5 - } -} -struct_union { - id: 0xbfc414f5 - kind: STRUCT - name: "vgic_v3_cpu_if" - definition { - bytesize: 312 - member_id: 0x4a8c149d - member_id: 0x38bbfe42 - member_id: 0x28fa73a3 - member_id: 0xaa37d774 - member_id: 0x47207a3e - member_id: 0xa75822b6 - member_id: 0xa9a971b2 - member_id: 0x8677397b - } -} struct_union { id: 0xcf6d5ce3 kind: STRUCT @@ -264665,23 +258852,6 @@ enumeration { } } } -enumeration { - id: 0x7e388552 - definition { - underlying_type_id: 0x4585663f - enumerator { - name: "FP_STATE_FREE" - } - enumerator { - name: "FP_STATE_HOST_OWNED" - value: 1 - } - enumerator { - name: "FP_STATE_GUEST_OWNED" - value: 2 - } - } -} enumeration { id: 0x09f65231 name: "OID" @@ -272633,28 +266803,6 @@ enumeration { } } } -enumeration { - id: 0xf101ec6d - name: "iodev_type" - definition { - underlying_type_id: 0x4585663f - enumerator { - name: "IODEV_CPUIF" - } - enumerator { - name: "IODEV_DIST" - value: 1 - } - enumerator { - name: "IODEV_REDIST" - value: 2 - } - enumerator { - name: "IODEV_ITS" - value: 3 - } - } -} enumeration { id: 0xe5b69de1 name: "iommu_cap" @@ -273147,35 +267295,6 @@ enumeration { } } } -enumeration { - id: 0xb3f81878 - name: "kvm_pgtable_stage2_flags" - definition { - underlying_type_id: 0x4585663f - enumerator { - name: "KVM_PGTABLE_S2_NOFWB" - value: 1 - } - enumerator { - name: "KVM_PGTABLE_S2_IDMAP" - value: 2 - } - } -} -enumeration { - id: 0xfd01d20e - name: "kvm_stat_kind" - definition { - underlying_type_id: 0x4585663f - enumerator { - name: "KVM_STAT_VM" - } - enumerator { - name: "KVM_STAT_VCPU" - value: 1 - } - } -} enumeration { id: 0x791ac8b7 name: "l2tp_encap_type" @@ -273547,44 +267666,6 @@ enumeration { } } } -enumeration { - id: 0x98849204 - name: "mmu_notifier_event" - definition { - underlying_type_id: 0x4585663f - enumerator { - name: "MMU_NOTIFY_UNMAP" - } - enumerator { - name: "MMU_NOTIFY_CLEAR" - value: 1 - } - enumerator { - name: "MMU_NOTIFY_PROTECTION_VMA" - value: 2 - } - enumerator { - name: "MMU_NOTIFY_PROTECTION_PAGE" - value: 3 - } - enumerator { - name: "MMU_NOTIFY_SOFT_DIRTY" - value: 4 - } - enumerator { - name: "MMU_NOTIFY_RELEASE" - value: 5 - } - enumerator { - name: "MMU_NOTIFY_MIGRATE" - value: 6 - } - enumerator { - name: "MMU_NOTIFY_EXCLUSIVE" - value: 7 - } - } -} enumeration { id: 0x73b81062 name: "mode_set_atomic" @@ -280341,20 +274422,6 @@ enumeration { } } } -enumeration { - id: 0xe357f5b0 - name: "vgic_irq_config" - definition { - underlying_type_id: 0x4585663f - enumerator { - name: "VGIC_CONFIG_EDGE" - } - enumerator { - name: "VGIC_CONFIG_LEVEL" - value: 1 - } - } -} enumeration { id: 0xacd8d043 name: "wb_reason" @@ -282687,11 +276754,6 @@ function { return_type_id: 0x48b5725f parameter_id: 0x049d4e97 } -function { - id: 0x11c00471 - return_type_id: 0x48b5725f - parameter_id: 0x0561578b -} function { id: 0x11c013b1 return_type_id: 0x48b5725f @@ -283442,14 +277504,6 @@ function { parameter_id: 0x0d7ce7cc parameter_id: 0x4585663f } -function { - id: 0x12d3ed44 - return_type_id: 0x48b5725f - parameter_id: 0x08dcfb76 - parameter_id: 0x1b4ba19a - parameter_id: 0x4585663f - parameter_id: 0x33756485 -} function { id: 0x12d43657 return_type_id: 0x48b5725f @@ -285226,12 +279280,6 @@ function { parameter_id: 0x14b9453b parameter_id: 0x052fac00 } -function { - id: 0x15a35eaa - return_type_id: 0x48b5725f - parameter_id: 0x1dce0fdd - parameter_id: 0x92233392 -} function { id: 0x15a61d9b return_type_id: 0x48b5725f @@ -286513,12 +280561,6 @@ function { parameter_id: 0x4585663f parameter_id: 0x4585663f } -function { - id: 0x17b61d24 - return_type_id: 0x48b5725f - parameter_id: 0x1d65d221 - parameter_id: 0x1dce0fdd -} function { id: 0x17b79b8a return_type_id: 0x48b5725f @@ -287603,12 +281645,6 @@ function { parameter_id: 0x33756485 parameter_id: 0x33756485 } -function { - id: 0x1a162f77 - return_type_id: 0x48b5725f - parameter_id: 0x2b8a97e8 - parameter_id: 0x1b36c7a2 -} function { id: 0x1a1815c7 return_type_id: 0x48b5725f @@ -287626,22 +281662,6 @@ function { parameter_id: 0x2cd31328 parameter_id: 0x6d7f5ff6 } -function { - id: 0x1a1970c3 - return_type_id: 0x48b5725f - parameter_id: 0x2b8a97e8 - parameter_id: 0x1b36c7a2 - parameter_id: 0x33756485 - parameter_id: 0xe0bb64fa -} -function { - id: 0x1a1a3ffb - return_type_id: 0x48b5725f - parameter_id: 0x2b8a97e8 - parameter_id: 0x1b36c7a2 - parameter_id: 0x33756485 - parameter_id: 0x33756485 -} function { id: 0x1a27e882 return_type_id: 0x48b5725f @@ -287768,11 +281788,6 @@ function { parameter_id: 0x2ba06eea parameter_id: 0x02128e8a } -function { - id: 0x1a7af469 - return_type_id: 0x48b5725f - parameter_id: 0x2b8a97e8 -} function { id: 0x1a7b957f return_type_id: 0x48b5725f @@ -287893,12 +281908,6 @@ function { parameter_id: 0x1259e377 parameter_id: 0xe276adef } -function { - id: 0x1aa50604 - return_type_id: 0x48b5725f - parameter_id: 0x2b8a97e8 - parameter_id: 0x37fc9b61 -} function { id: 0x1aa56a0d return_type_id: 0x48b5725f @@ -287996,12 +282005,6 @@ function { return_type_id: 0x48b5725f parameter_id: 0x292cb268 } -function { - id: 0x1ad45e5f - return_type_id: 0x48b5725f - parameter_id: 0x28e1a5ae - parameter_id: 0x1d19a9d5 -} function { id: 0x1ad5d81c return_type_id: 0x48b5725f @@ -288183,12 +282186,6 @@ function { return_type_id: 0x48b5725f parameter_id: 0x2e8ed696 } -function { - id: 0x1b3cbbb4 - return_type_id: 0x48b5725f - parameter_id: 0x28e1a5ae - parameter_id: 0x6720d32f -} function { id: 0x1b3d79eb return_type_id: 0x48b5725f @@ -288708,11 +282705,6 @@ function { parameter_id: 0x318f8bcb parameter_id: 0x3d2ef874 } -function { - id: 0x1c1113fb - return_type_id: 0x48b5725f - parameter_id: 0x322509a0 -} function { id: 0x1c155f01 return_type_id: 0x48b5725f @@ -288941,11 +282933,6 @@ function { parameter_id: 0x31b5a66f parameter_id: 0x2a670b41 } -function { - id: 0x1c5e9ece - return_type_id: 0x48b5725f - parameter_id: 0x331b3d77 -} function { id: 0x1c5ec399 return_type_id: 0x48b5725f @@ -289934,15 +283921,6 @@ function { return_type_id: 0x48b5725f parameter_id: 0x3518a6ab } -function { - id: 0x1de0d842 - return_type_id: 0x48b5725f - parameter_id: 0x363b9249 - parameter_id: 0x3c6958c4 - parameter_id: 0x1b4ba19a - parameter_id: 0x4585663f - parameter_id: 0x33756485 -} function { id: 0x1de33115 return_type_id: 0x48b5725f @@ -292056,11 +286034,6 @@ function { parameter_id: 0xeb0f6de6 parameter_id: 0x4585663f } -function { - id: 0x2b6ce96f - return_type_id: 0x2b8a97e8 - parameter_id: 0x1b36c7a2 -} function { id: 0x2b7baaf7 return_type_id: 0x002136b3 @@ -292217,11 +286190,6 @@ function { return_type_id: 0x0c2e195c parameter_id: 0x1b8590a8 } -function { - id: 0x2e024bbc - return_type_id: 0x40e51470 - parameter_id: 0x331b3d77 -} function { id: 0x2e14bb87 return_type_id: 0xa8fff47c @@ -292526,13 +286494,6 @@ function { parameter_id: 0x0ae4a2c7 parameter_id: 0x33756485 } -function { - id: 0x33e7bc51 - return_type_id: 0x33756485 - parameter_id: 0x08dcfb76 - parameter_id: 0x1b4ba19a - parameter_id: 0x4585663f -} function { id: 0x340d6f59 return_type_id: 0x33756485 @@ -293033,14 +286994,6 @@ function { parameter_id: 0xf435685e parameter_id: 0x1d19a9d5 } -function { - id: 0x3cd4485f - return_type_id: 0x33756485 - parameter_id: 0x363b9249 - parameter_id: 0x3c6958c4 - parameter_id: 0x1b4ba19a - parameter_id: 0x4585663f -} function { id: 0x3d0f6874 return_type_id: 0x1c3dbe5a @@ -293874,21 +287827,11 @@ function { return_type_id: 0x18bd6530 parameter_id: 0x18150d9f } -function { - id: 0x50a850bc - return_type_id: 0x92233392 - parameter_id: 0x1dce0fdd -} function { id: 0x50af222c return_type_id: 0x18bd6530 parameter_id: 0x18e64f74 } -function { - id: 0x50b9e8bd - return_type_id: 0x18bd6530 - parameter_id: 0x18bd6530 -} function { id: 0x50f3b181 return_type_id: 0x18ea6ae3 @@ -295522,11 +289465,6 @@ function { parameter_id: 0xc9082b19 parameter_id: 0x6720d32f } -function { - id: 0x6b9bebe6 - return_type_id: 0x18bd6530 - parameter_id: 0xf435685e -} function { id: 0x6bb7aee3 return_type_id: 0x7b6559c5 @@ -297892,12 +291830,6 @@ function { parameter_id: 0x6720d32f parameter_id: 0x6720d32f } -function { - id: 0x90ad44c2 - return_type_id: 0x6720d32f - parameter_id: 0x36f0529f - parameter_id: 0x246cd286 -} function { id: 0x90adbc21 return_type_id: 0x6720d32f @@ -298154,15 +292086,6 @@ function { return_type_id: 0x6720d32f parameter_id: 0x35d510c3 } -function { - id: 0x90f86afe - return_type_id: 0x6720d32f - parameter_id: 0x363b9249 - parameter_id: 0x3c6958c4 - parameter_id: 0x1b4ba19a - parameter_id: 0x4585663f - parameter_id: 0x33756485 -} function { id: 0x90fb83a9 return_type_id: 0x6720d32f @@ -298411,12 +292334,6 @@ function { parameter_id: 0x0277bf8a parameter_id: 0x07dcdbe1 } -function { - id: 0x9121ec42 - return_type_id: 0x6720d32f - parameter_id: 0x322509a0 - parameter_id: 0x0a134144 -} function { id: 0x91239923 return_type_id: 0x6720d32f @@ -299646,12 +293563,6 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x07dcdbe1 } -function { - id: 0x91e5f6bf - return_type_id: 0x6720d32f - parameter_id: 0x322509a0 - parameter_id: 0x3b15fe1d -} function { id: 0x91e70ccb return_type_id: 0x6720d32f @@ -300123,12 +294034,6 @@ function { parameter_id: 0x18ea6ae3 parameter_id: 0x0a134144 } -function { - id: 0x922d81eb - return_type_id: 0x6720d32f - parameter_id: 0x322509a0 - parameter_id: 0xc9082b19 -} function { id: 0x922dbdf3 return_type_id: 0x6720d32f @@ -304203,21 +298108,6 @@ function { parameter_id: 0x2edfae47 parameter_id: 0x32a623d7 } -function { - id: 0x97024092 - return_type_id: 0x6720d32f - parameter_id: 0x2b8a97e8 - parameter_id: 0x1b36c7a2 - parameter_id: 0x33756485 -} -function { - id: 0x97028d47 - return_type_id: 0x6720d32f - parameter_id: 0x2b8a97e8 - parameter_id: 0x1b36c7a2 - parameter_id: 0x33756485 - parameter_id: 0x33756485 -} function { id: 0x9702dcaf return_type_id: 0x2668e644 @@ -304584,12 +298474,6 @@ function { parameter_id: 0x21207103 parameter_id: 0x6d7f5ff6 } -function { - id: 0x97bdb4b8 - return_type_id: 0x6720d32f - parameter_id: 0x2b8a97e8 - parameter_id: 0x37fc9b61 -} function { id: 0x97c10137 return_type_id: 0x0611572c @@ -307820,12 +301704,6 @@ function { parameter_id: 0x198099dc parameter_id: 0x6d7f5ff6 } -function { - id: 0x9aaeaf98 - return_type_id: 0x6720d32f - parameter_id: 0x1d65d221 - parameter_id: 0x1dce0fdd -} function { id: 0x9aaf4bc3 return_type_id: 0x6720d32f @@ -316754,24 +310632,6 @@ function { parameter_id: 0x08a8dfa4 parameter_id: 0x0258f96e } -function { - id: 0x9fa510e8 - return_type_id: 0x6720d32f - parameter_id: 0x08dcfb76 - parameter_id: 0x0561578b - parameter_id: 0x1b4ba19a - parameter_id: 0x6720d32f - parameter_id: 0x18bd6530 -} -function { - id: 0x9fa51880 - return_type_id: 0x6720d32f - parameter_id: 0x08dcfb76 - parameter_id: 0x0561578b - parameter_id: 0x1b4ba19a - parameter_id: 0x6720d32f - parameter_id: 0x391f15ea -} function { id: 0x9fab680a return_type_id: 0x6720d32f @@ -316997,14 +310857,6 @@ function { parameter_id: 0x078316ff parameter_id: 0xeab68ea2 } -function { - id: 0x9fcb5ff8 - return_type_id: 0x6720d32f - parameter_id: 0x08dcfb76 - parameter_id: 0x1b4ba19a - parameter_id: 0x4585663f - parameter_id: 0x33756485 -} function { id: 0x9fcca68f return_type_id: 0x6720d32f @@ -317860,13 +311712,6 @@ function { parameter_id: 0x2e8d5f05 parameter_id: 0x3fe8ca70 } -function { - id: 0xaab3b130 - return_type_id: 0xfc0e1dbd - parameter_id: 0x322509a0 - parameter_id: 0x4585663f - parameter_id: 0x33756485 -} function { id: 0xaab8b473 return_type_id: 0xfc0e1dbd @@ -319521,13 +313366,6 @@ function { parameter_id: 0x6720d32f parameter_id: 0x6d7f5ff6 } -function { - id: 0xd8625902 - return_type_id: 0x6d7f5ff6 - parameter_id: 0x92233392 - parameter_id: 0x92233392 - parameter_id: 0x1908b154 -} function { id: 0xd88df0fd return_type_id: 0x2309ad3e @@ -319992,12 +313830,6 @@ function { parameter_id: 0x3a583251 parameter_id: 0x33756485 } -function { - id: 0xe6385497 - return_type_id: 0x6d7f5ff6 - parameter_id: 0x6ee0bcff - parameter_id: 0xc9082b19 -} function { id: 0xe63fffaa return_type_id: 0x2e8ad82b diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h index 8458311bd839..af442f82699d 100644 --- a/arch/arm64/include/asm/kvm_host.h +++ b/arch/arm64/include/asm/kvm_host.h @@ -203,8 +203,10 @@ struct kvm_arch { /* Mandated version of PSCI */ u32 psci_version; +#ifndef __GENKSYMS__ /* Protects VM-scoped configuration data */ struct mutex config_lock; +#endif /* * If we encounter a data abort without valid instruction syndrome @@ -353,7 +355,11 @@ struct kvm_cpu_context { u64 sys_regs[NR_SYS_REGS]; +#ifdef __GENKSYMS__ struct kvm_vcpu *__hyp_running_vcpu; +#else + void *__hyp_running_vcpu; +#endif }; struct kvm_host_data { @@ -512,7 +518,9 @@ struct kvm_vcpu_arch { /* vcpu power state */ struct kvm_mp_state mp_state; +#ifndef __GENKSYMS__ spinlock_t mp_state_lock; +#endif union { /* Cache some mmu pages needed inside spinlock regions */ From f54778f02120a4494249113288fe70cc01ea31f4 Mon Sep 17 00:00:00 2001 From: JaeHun Jung Date: Thu, 29 Jun 2023 08:52:20 +0900 Subject: [PATCH 044/114] ANDROID: ABI: update symbol list for exynos Update ABI symbol list for Exynos USB audio offloading 14 function symbol(s) added 'int snd_vendor_set_ops(struct snd_usb_audio_vendor_ops*)' 'int usb_choose_configuration(struct usb_device*)' 'int xhci_add_endpoint(struct usb_hcd*, struct usb_device*, struct usb_host_endpoint*)' 'int xhci_address_device(struct usb_hcd*, struct usb_device*)' 'int xhci_bus_resume(struct usb_hcd*)' 'int xhci_bus_suspend(struct usb_hcd*)' 'int xhci_check_trb_in_td_math(struct xhci_hcd*)' 'struct xhci_ep_ctx* xhci_get_ep_ctx(struct xhci_hcd*, struct xhci_container_ctx*, unsigned int)' 'struct xhci_slot_ctx* xhci_get_slot_ctx(struct xhci_hcd*, struct xhci_container_ctx*)' 'void xhci_initialize_ring_info(struct xhci_ring*, unsigned int)' 'void xhci_link_segments(struct xhci_segment*, struct xhci_segment*, enum xhci_ring_type, bool)' 'void xhci_remove_stream_mapping(struct xhci_ring*)' 'void xhci_segment_free(struct xhci_hcd*, struct xhci_segment*)' 'struct xhci_vendor_ops* xhci_vendor_get_ops(struct xhci_hcd*)' Bug: 156315379 Change-Id: I0dfdbb9384d6030bdbefc526bc2dd60c4bfaf8e5 Signed-off-by: JaeHun Jung --- android/abi_gki_aarch64.stg | 592 +++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_exynos | 40 ++- 2 files changed, 630 insertions(+), 2 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 265a6f1d6ab7..8cf2857dd8c4 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -696,6 +696,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x201aebe0 } +pointer_reference { + id: 0x0297eaff + kind: POINTER + pointee_type_id: 0x201f4d61 +} pointer_reference { id: 0x029d7f27 kind: POINTER @@ -7171,6 +7176,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1439657e } +pointer_reference { + id: 0x0f9e7cc3 + kind: POINTER + pointee_type_id: 0x14391590 +} pointer_reference { id: 0x0fa01494 kind: POINTER @@ -7226,6 +7236,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x14e1f000 } +pointer_reference { + id: 0x0faaab57 + kind: POINTER + pointee_type_id: 0x14ea4bc0 +} pointer_reference { id: 0x0fab66ce kind: POINTER @@ -7236,6 +7251,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x14ee5a71 } +pointer_reference { + id: 0x0fac28fc + kind: POINTER + pointee_type_id: 0x14f0456f +} pointer_reference { id: 0x0fac5cb3 kind: POINTER @@ -7281,6 +7301,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x14b4088f } +pointer_reference { + id: 0x0fbe0b29 + kind: POINTER + pointee_type_id: 0x14b8ca3b +} pointer_reference { id: 0x0fbe677e kind: POINTER @@ -10896,6 +10921,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xabc38a13 } +pointer_reference { + id: 0x20699068 + kind: POINTER + pointee_type_id: 0xabe6a73e +} pointer_reference { id: 0x206bf782 kind: POINTER @@ -12216,6 +12246,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xb60a3d7a } +pointer_reference { + id: 0x2718fd24 + kind: POINTER + pointee_type_id: 0xb623120e +} pointer_reference { id: 0x2731dd86 kind: POINTER @@ -14936,6 +14971,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x982f20ff } +pointer_reference { + id: 0x2c9dd50a + kind: POINTER + pointee_type_id: 0x9837b2b4 +} pointer_reference { id: 0x2c9f2c07 kind: POINTER @@ -15321,6 +15361,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9917165a } +pointer_reference { + id: 0x2cd8506c + kind: POINTER + pointee_type_id: 0x9921a72c +} pointer_reference { id: 0x2cda29dd kind: POINTER @@ -15931,6 +15976,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9e3f1247 } +pointer_reference { + id: 0x2d2076df + kind: POINTER + pointee_type_id: 0x9ec13de2 +} pointer_reference { id: 0x2d214d35 kind: POINTER @@ -17181,6 +17231,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9c8d1a40 } +pointer_reference { + id: 0x2db6fcd8 + kind: POINTER + pointee_type_id: 0x9c9b15ff +} pointer_reference { id: 0x2db71389 kind: POINTER @@ -18146,6 +18201,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x92233392 } +pointer_reference { + id: 0x2e19617e + kind: POINTER + pointee_type_id: 0x92256367 +} pointer_reference { id: 0x2e19d469 kind: POINTER @@ -20466,6 +20526,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9445ee80 } +pointer_reference { + id: 0x2f815de7 + kind: POINTER + pointee_type_id: 0x94459100 +} pointer_reference { id: 0x2f81f017 kind: POINTER @@ -22071,6 +22136,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe2cebd77 } +pointer_reference { + id: 0x322509a0 + kind: POINTER + pointee_type_id: 0xe2d4c01c +} +pointer_reference { + id: 0x3225ac75 + kind: POINTER + pointee_type_id: 0xe2d6574a +} pointer_reference { id: 0x322c8c4b kind: POINTER @@ -22931,6 +23006,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xfa774e1b } +pointer_reference { + id: 0x34104e47 + kind: POINTER + pointee_type_id: 0xfa01df81 +} pointer_reference { id: 0x3411dbb1 kind: POINTER @@ -22981,6 +23061,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xfaeafe16 } +pointer_reference { + id: 0x3431098c + kind: POINTER + pointee_type_id: 0xfa84c0ac +} pointer_reference { id: 0x34334e6d kind: POINTER @@ -27556,6 +27641,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd649efa3 } +pointer_reference { + id: 0x3f055728 + kind: POINTER + pointee_type_id: 0xd655ba3d +} pointer_reference { id: 0x3f063da2 kind: POINTER @@ -43040,6 +43130,12 @@ member { type_id: 0x1fe7f40f offset: 64 } +member { + id: 0x3f6534a2 + name: "alloc_container_ctx" + type_id: 0x0fac28fc + offset: 576 +} member { id: 0x21677719 name: "alloc_contig" @@ -43052,6 +43148,12 @@ member { type_id: 0x914dbfdc offset: 256 } +member { + id: 0x50156eb5 + name: "alloc_dcbaa" + type_id: 0x3f055728 + offset: 192 +} member { id: 0xfd6395d5 name: "alloc_desc_sz" @@ -43183,6 +43285,12 @@ member { type_id: 0x92233392 offset: 768 } +member { + id: 0xb2953bfa + name: "alloc_transfer_ring" + type_id: 0x20699068 + offset: 320 +} member { id: 0x7fa1c349 name: "allocate" @@ -44866,6 +44974,12 @@ member { type_id: 0x92233392 offset: 5184 } +member { + id: 0x63760909 + name: "android_kabi_reserved2" + type_id: 0x92233392 + offset: 256 +} member { id: 0x6376090e name: "android_kabi_reserved2" @@ -45459,6 +45573,12 @@ member { type_id: 0x92233392 offset: 1728 } +member { + id: 0xac894e91 + name: "android_kabi_reserved3" + type_id: 0x92233392 + offset: 320 +} member { id: 0xac894e97 name: "android_kabi_reserved3" @@ -45621,6 +45741,12 @@ member { type_id: 0x92233392 offset: 4672 } +member { + id: 0xe0f635d9 + name: "android_kabi_reserved4" + type_id: 0x92233392 + offset: 384 +} member { id: 0xe0f635ee name: "android_kabi_reserved4" @@ -70209,6 +70335,12 @@ member { type_id: 0x0c96a24a offset: 256 } +member { + id: 0x8001f399 + name: "deq" + type_id: 0x78f4e574 + offset: 64 +} member { id: 0x02f59ce0 name: "deq_seg" @@ -71785,12 +71917,23 @@ member { type_id: 0x1d33485a offset: 2432 } +member { + id: 0x1d443303 + name: "dev_info" + type_id: 0x0baa70a7 +} member { id: 0x1d86e345 name: "dev_info" type_id: 0xc97fa0d5 offset: 20608 } +member { + id: 0xb6174f2e + name: "dev_info2" + type_id: 0x0baa70a7 + offset: 32 +} member { id: 0x34b4b616 name: "dev_kobj" @@ -72021,6 +72164,12 @@ member { name: "dev_scratch" type_id: 0x33756485 } +member { + id: 0x6ba2a863 + name: "dev_state" + type_id: 0x0baa70a7 + offset: 96 +} member { id: 0x6bc4755d name: "dev_state" @@ -79915,6 +80064,17 @@ member { type_id: 0x4585663f offset: 64 } +member { + id: 0x43272c66 + name: "ep_info" + type_id: 0x0baa70a7 +} +member { + id: 0x3efdd095 + name: "ep_info2" + type_id: 0x0baa70a7 + offset: 32 +} member { id: 0x93a1b3b9 name: "ep_init" @@ -89048,6 +89208,12 @@ member { type_id: 0x696e069f offset: 768 } +member { + id: 0xd988303d + name: "free_container_ctx" + type_id: 0x0faaab57 + offset: 640 +} member { id: 0x3e10e356 name: "free_context" @@ -89060,6 +89226,12 @@ member { type_id: 0x99caa0ae offset: 64 } +member { + id: 0x77a0ad98 + name: "free_dcbaa" + type_id: 0x0f9e7cc3 + offset: 256 +} member { id: 0xcd8f3d51 name: "free_dev" @@ -89297,6 +89469,12 @@ member { type_id: 0x0e1f07df offset: 448 } +member { + id: 0x3965c2a5 + name: "free_transfer_ring" + type_id: 0x0fbe0b29 + offset: 384 +} member { id: 0x5584ef29 name: "free_upper_chunks" @@ -106743,6 +106921,12 @@ member { type_id: 0x6d7f5ff6 offset: 26432 } +member { + id: 0x62d4e2e8 + name: "is_usb_offload_enabled" + type_id: 0x3431098c + offset: 128 +} member { id: 0x567e927d name: "is_useropt" @@ -157645,6 +157829,12 @@ member { type_id: 0xb4d0b861 offset: 32 } +member { + id: 0xd4ed0237 + name: "reserved" + type_id: 0x8ea78f33 + offset: 128 +} member { id: 0xd4eef0a8 name: "reserved" @@ -166882,6 +167072,11 @@ member { type_id: 0x2ccfa873 offset: 1344 } +member { + id: 0x88f65c40 + name: "set_interface" + type_id: 0x2d2076df +} member { id: 0xce6643c0 name: "set_ios" @@ -167201,6 +167396,18 @@ member { type_id: 0x2ec73a64 offset: 1344 } +member { + id: 0x18766439 + name: "set_pcm_connection" + type_id: 0x2db6fcd8 + offset: 128 +} +member { + id: 0x58055805 + name: "set_pcm_intf" + type_id: 0x2f815de7 + offset: 64 +} member { id: 0xf0a8a677 name: "set_pd_rx" @@ -178507,6 +178714,12 @@ member { type_id: 0x5d8155a5 offset: 400 } +member { + id: 0x88a8ecb4 + name: "sync_dev_ctx" + type_id: 0x2c9dd50a + offset: 448 +} member { id: 0xaa5b83a9 name: "sync_dma" @@ -185128,6 +185341,12 @@ member { type_id: 0x39fc1b17 offset: 6224 } +member { + id: 0x8905c822 + name: "tt_info" + type_id: 0x0baa70a7 + offset: 64 +} member { id: 0x8909eca8 name: "tt_info" @@ -186152,6 +186371,12 @@ member { type_id: 0x6d7f5ff6 offset: 13088 } +member { + id: 0x67023990 + name: "tx_info" + type_id: 0x0baa70a7 + offset: 128 +} member { id: 0x489a6749 name: "tx_ir" @@ -190448,6 +190673,12 @@ member { type_id: 0xc9082b19 offset: 1216 } +member { + id: 0xc6a4da74 + name: "usb_offload_skip_urb" + type_id: 0x34104e47 + offset: 512 +} member { id: 0x171fc3a7 name: "usb_pd" @@ -192885,6 +193116,12 @@ member { name: "vendor" type_id: 0xa745d9ba } +member { + id: 0x19d3d4c2 + name: "vendor_cleanup" + type_id: 0x0f9e7cc3 + offset: 64 +} member { id: 0xb9270675 name: "vendor_cmds" @@ -192932,6 +193169,11 @@ member { type_id: 0x92233392 offset: 2816 } +member { + id: 0xcc0a44cd + name: "vendor_init" + type_id: 0x2cd8506c +} member { id: 0xc240aa08 name: "vendor_load" @@ -245298,6 +245540,21 @@ struct_union { member_id: 0xe0f63d43 } } +struct_union { + id: 0x201f4d61 + kind: STRUCT + name: "snd_usb_audio_vendor_ops" + definition { + bytesize: 56 + member_id: 0x88f65c40 + member_id: 0x58055805 + member_id: 0x18766439 + member_id: 0x2d081dfb + member_id: 0x63760909 + member_id: 0xac894e91 + member_id: 0xe0f635d9 + } +} struct_union { id: 0xb7b99e10 kind: STRUCT @@ -257851,6 +258108,19 @@ struct_union { member_id: 0xe0f63eed } } +struct_union { + id: 0xb623120e + kind: STRUCT + name: "xhci_ep_ctx" + definition { + bytesize: 32 + member_id: 0x43272c66 + member_id: 0x3efdd095 + member_id: 0x8001f399 + member_id: 0x67023990 + member_id: 0xd4738ef3 + } +} struct_union { id: 0x9d27bc05 kind: STRUCT @@ -258166,6 +258436,19 @@ struct_union { member_id: 0x2d0814a0 } } +struct_union { + id: 0xe2d6574a + kind: STRUCT + name: "xhci_slot_ctx" + definition { + bytesize: 32 + member_id: 0x1d443303 + member_id: 0xb6174f2e + member_id: 0x8905c822 + member_id: 0x6ba2a863 + member_id: 0xd4ed0237 + } +} struct_union { id: 0x051dcd31 kind: STRUCT @@ -258227,6 +258510,29 @@ struct_union { member_id: 0xa72ba76c } } +struct_union { + id: 0x92256367 + kind: STRUCT + name: "xhci_vendor_ops" + definition { + bytesize: 120 + member_id: 0xcc0a44cd + member_id: 0x19d3d4c2 + member_id: 0x62d4e2e8 + member_id: 0x50156eb5 + member_id: 0x77a0ad98 + member_id: 0xb2953bfa + member_id: 0x3965c2a5 + member_id: 0x88a8ecb4 + member_id: 0xc6a4da74 + member_id: 0x3f6534a2 + member_id: 0xd988303d + member_id: 0x2d08170f + member_id: 0x6376010c + member_id: 0xac894aec + member_id: 0xe0f63eed + } +} struct_union { id: 0xbafe14c8 kind: STRUCT @@ -271688,6 +271994,20 @@ enumeration { } } } +enumeration { + id: 0x9741c5fc + name: "snd_vendor_pcm_open_close" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "SOUND_PCM_CLOSE" + } + enumerator { + name: "SOUND_PCM_OPEN" + value: 1 + } + } +} enumeration { id: 0xbb98ef85 name: "sock_shutdown_cmd" @@ -278693,6 +279013,13 @@ function { parameter_id: 0x4585663f parameter_id: 0x13580d6c } +function { + id: 0x14b8ca3b + return_type_id: 0x48b5725f + parameter_id: 0x1285100d + parameter_id: 0x242fbc95 + parameter_id: 0x4585663f +} function { id: 0x14b97b66 return_type_id: 0x48b5725f @@ -278716,6 +279043,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x116785ed } +function { + id: 0x14c2c0fe + return_type_id: 0x48b5725f + parameter_id: 0x1285100d + parameter_id: 0x3ef55b88 +} function { id: 0x14c5cbad return_type_id: 0x48b5725f @@ -278824,12 +279157,26 @@ function { return_type_id: 0x48b5725f parameter_id: 0x11c449ec } +function { + id: 0x14ea4bc0 + return_type_id: 0x48b5725f + parameter_id: 0x1285100d + parameter_id: 0x34d79405 +} function { id: 0x14ed7da4 return_type_id: 0x48b5725f parameter_id: 0x1d44326e parameter_id: 0xc9082b19 } +function { + id: 0x14f0456f + return_type_id: 0x48b5725f + parameter_id: 0x1285100d + parameter_id: 0x34d79405 + parameter_id: 0x6720d32f + parameter_id: 0xf1a6dfed +} function { id: 0x14f27dac return_type_id: 0x48b5725f @@ -281162,6 +281509,11 @@ function { parameter_id: 0x2cf6d46d parameter_id: 0x18bd6530 } +function { + id: 0x18f4e52e + return_type_id: 0x48b5725f + parameter_id: 0x21b2d2f4 +} function { id: 0x18f8b885 return_type_id: 0x48b5725f @@ -281582,6 +281934,12 @@ function { parameter_id: 0x0130219f parameter_id: 0x6720d32f } +function { + id: 0x19e2f0b6 + return_type_id: 0x48b5725f + parameter_id: 0x21b2d2f4 + parameter_id: 0x4585663f +} function { id: 0x19e4b813 return_type_id: 0x48b5725f @@ -285529,6 +285887,14 @@ function { parameter_id: 0x3e10b518 parameter_id: 0xa52a0930 } +function { + id: 0x1fcbfdc9 + return_type_id: 0x48b5725f + parameter_id: 0x3ef55b88 + parameter_id: 0x3ef55b88 + parameter_id: 0x5268af9d + parameter_id: 0x6d7f5ff6 +} function { id: 0x1fcd1693 return_type_id: 0x48b5725f @@ -290131,6 +290497,11 @@ function { parameter_id: 0x6720d32f parameter_id: 0xf1a6dfed } +function { + id: 0x8039c229 + return_type_id: 0x2e19617e + parameter_id: 0x1285100d +} function { id: 0x80cf4911 return_type_id: 0x6720d32f @@ -296141,6 +296512,15 @@ function { parameter_id: 0x276a1779 parameter_id: 0x064d6086 } +function { + id: 0x94459100 + return_type_id: 0x6720d32f + parameter_id: 0x21069feb + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0x08ba388c +} function { id: 0x9445ee80 return_type_id: 0x6720d32f @@ -298864,6 +299244,12 @@ function { parameter_id: 0x33756485 parameter_id: 0x18bd6530 } +function { + id: 0x9837b2b4 + return_type_id: 0x6720d32f + parameter_id: 0x1285100d + parameter_id: 0x4585663f +} function { id: 0x983c5682 return_type_id: 0x6720d32f @@ -299534,6 +299920,12 @@ function { parameter_id: 0x203f3220 parameter_id: 0x0b0dddba } +function { + id: 0x98c001f4 + return_type_id: 0x3225ac75 + parameter_id: 0x1285100d + parameter_id: 0x34d79405 +} function { id: 0x98c44e7d return_type_id: 0x6720d32f @@ -299908,6 +300300,11 @@ function { parameter_id: 0x116785ed parameter_id: 0x3e10b518 } +function { + id: 0x9921a72c + return_type_id: 0x6720d32f + parameter_id: 0x1285100d +} function { id: 0x9927b218 return_type_id: 0x6720d32f @@ -306441,6 +306838,13 @@ function { parameter_id: 0x0b27dc43 parameter_id: 0x34c92288 } +function { + id: 0x9c9b15ff + return_type_id: 0x6720d32f + parameter_id: 0x0d7ce7cc + parameter_id: 0x9741c5fc + parameter_id: 0x6720d32f +} function { id: 0x9c9c5425 return_type_id: 0x6720d32f @@ -307203,6 +307607,11 @@ function { parameter_id: 0x10617cac parameter_id: 0xc9082b19 } +function { + id: 0x9d251990 + return_type_id: 0x6720d32f + parameter_id: 0x0297eaff +} function { id: 0x9d25c351 return_type_id: 0x6720d32f @@ -309605,6 +310014,14 @@ function { parameter_id: 0xc9082b19 parameter_id: 0x07dcdbe1 } +function { + id: 0x9ec13de2 + return_type_id: 0x6720d32f + parameter_id: 0x0d7ce7cc + parameter_id: 0x01ace255 + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f +} function { id: 0x9ec5d248 return_type_id: 0x6720d32f @@ -311790,6 +312207,15 @@ function { return_type_id: 0x1259e377 parameter_id: 0x292ab2e2 } +function { + id: 0xabe6a73e + return_type_id: 0x21b2d2f4 + parameter_id: 0x1285100d + parameter_id: 0xc9082b19 + parameter_id: 0x5268af9d + parameter_id: 0x4585663f + parameter_id: 0xf1a6dfed +} function { id: 0xabfb6aa8 return_type_id: 0x3dcee85d @@ -312965,6 +313391,13 @@ function { return_type_id: 0x0a9a051a parameter_id: 0x0258f96e } +function { + id: 0xcbd33190 + return_type_id: 0x2718fd24 + parameter_id: 0x1285100d + parameter_id: 0x34d79405 + parameter_id: 0x4585663f +} function { id: 0xcbea3bfa return_type_id: 0x65d74a06 @@ -313320,6 +313753,12 @@ function { parameter_id: 0x94ed3026 parameter_id: 0x0a193bb7 } +function { + id: 0xd655ba3d + return_type_id: 0x3b0b4c9d + parameter_id: 0x1285100d + parameter_id: 0xf1a6dfed +} function { id: 0xd673de47 return_type_id: 0x02eb105a @@ -315070,6 +315509,12 @@ function { return_type_id: 0x6d7f5ff6 parameter_id: 0x1d44326e } +function { + id: 0xfa01df81 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x1285100d + parameter_id: 0x0130219f +} function { id: 0xfa126b6a return_type_id: 0x6d7f5ff6 @@ -315102,6 +315547,13 @@ function { parameter_id: 0x3e909b01 parameter_id: 0x33756485 } +function { + id: 0xfa84c0ac + return_type_id: 0x6d7f5ff6 + parameter_id: 0x1285100d + parameter_id: 0x242fbc95 + parameter_id: 0x4585663f +} function { id: 0xfaa21496 return_type_id: 0x6d7f5ff6 @@ -364857,6 +365309,15 @@ elf_symbol { type_id: 0x9b2aae3f full_name: "snd_usb_power_domain_set" } +elf_symbol { + id: 0x25a85408 + name: "snd_vendor_set_ops" + is_defined: true + symbol_type: FUNCTION + crc: 0xadf3f0b9 + type_id: 0x9d251990 + full_name: "snd_vendor_set_ops" +} elf_symbol { id: 0x32cae5ee name: "snprintf" @@ -370053,6 +370514,15 @@ elf_symbol { type_id: 0xbf6cd8a9 full_name: "usb_calc_bus_time" } +elf_symbol { + id: 0x23a5ab99 + name: "usb_choose_configuration" + is_defined: true + symbol_type: FUNCTION + crc: 0xf7b90cc4 + type_id: 0x9edfdadc + full_name: "usb_choose_configuration" +} elf_symbol { id: 0x2a589f64 name: "usb_clear_halt" @@ -374724,6 +375194,24 @@ elf_symbol { type_id: 0x62e6e159 full_name: "xfrm_stateonly_find" } +elf_symbol { + id: 0x994cfb6c + name: "xhci_add_endpoint" + is_defined: true + symbol_type: FUNCTION + crc: 0x3a365b04 + type_id: 0x94ebfe13 + full_name: "xhci_add_endpoint" +} +elf_symbol { + id: 0x8c2045ca + name: "xhci_address_device" + is_defined: true + symbol_type: FUNCTION + crc: 0x945be478 + type_id: 0x94eb1868 + full_name: "xhci_address_device" +} elf_symbol { id: 0xdf73207c name: "xhci_alloc_command" @@ -374742,6 +375230,33 @@ elf_symbol { type_id: 0x99afdc89 full_name: "xhci_alloc_erst" } +elf_symbol { + id: 0x209bd6b9 + name: "xhci_bus_resume" + is_defined: true + symbol_type: FUNCTION + crc: 0x1a9d5630 + type_id: 0x94deebf7 + full_name: "xhci_bus_resume" +} +elf_symbol { + id: 0x68d92b40 + name: "xhci_bus_suspend" + is_defined: true + symbol_type: FUNCTION + crc: 0x78c05195 + type_id: 0x94deebf7 + full_name: "xhci_bus_suspend" +} +elf_symbol { + id: 0x520c06c0 + name: "xhci_check_trb_in_td_math" + is_defined: true + symbol_type: FUNCTION + crc: 0x6a82fc7a + type_id: 0x9921a72c + full_name: "xhci_check_trb_in_td_math" +} elf_symbol { id: 0xa6eac918 name: "xhci_free_command" @@ -374769,6 +375284,24 @@ elf_symbol { type_id: 0xcd9f7f34 full_name: "xhci_get_endpoint_index" } +elf_symbol { + id: 0xc9a9e8ab + name: "xhci_get_ep_ctx" + is_defined: true + symbol_type: FUNCTION + crc: 0xfb992afc + type_id: 0xcbd33190 + full_name: "xhci_get_ep_ctx" +} +elf_symbol { + id: 0xa2b73df4 + name: "xhci_get_slot_ctx" + is_defined: true + symbol_type: FUNCTION + crc: 0x5b7d19e7 + type_id: 0x98c001f4 + full_name: "xhci_get_slot_ctx" +} elf_symbol { id: 0x71f2808e name: "xhci_init_driver" @@ -374778,6 +375311,24 @@ elf_symbol { type_id: 0x14d9dc3c full_name: "xhci_init_driver" } +elf_symbol { + id: 0x246bf5fe + name: "xhci_initialize_ring_info" + is_defined: true + symbol_type: FUNCTION + crc: 0xdb8be866 + type_id: 0x19e2f0b6 + full_name: "xhci_initialize_ring_info" +} +elf_symbol { + id: 0x96be3ac9 + name: "xhci_link_segments" + is_defined: true + symbol_type: FUNCTION + crc: 0x9a727e20 + type_id: 0x1fcbfdc9 + full_name: "xhci_link_segments" +} elf_symbol { id: 0xfa57b81b name: "xhci_queue_stop_endpoint" @@ -374787,6 +375338,15 @@ elf_symbol { type_id: 0x99011cda full_name: "xhci_queue_stop_endpoint" } +elf_symbol { + id: 0x9d21209c + name: "xhci_remove_stream_mapping" + is_defined: true + symbol_type: FUNCTION + crc: 0x462a6e6b + type_id: 0x18f4e52e + full_name: "xhci_remove_stream_mapping" +} elf_symbol { id: 0x4603c1d4 name: "xhci_resume" @@ -374832,6 +375392,15 @@ elf_symbol { type_id: 0x94deebf7 full_name: "xhci_run" } +elf_symbol { + id: 0xcf411a0e + name: "xhci_segment_free" + is_defined: true + symbol_type: FUNCTION + crc: 0xd8efaa99 + type_id: 0x14c2c0fe + full_name: "xhci_segment_free" +} elf_symbol { id: 0xb834cd77 name: "xhci_suspend" @@ -374850,6 +375419,15 @@ elf_symbol { type_id: 0xb367c064 full_name: "xhci_trb_virt_to_dma" } +elf_symbol { + id: 0xd777027b + name: "xhci_vendor_get_ops" + is_defined: true + symbol_type: FUNCTION + crc: 0x773c097f + type_id: 0x8039c229 + full_name: "xhci_vendor_get_ops" +} elf_symbol { id: 0x23b2a72a name: "xp_alloc" @@ -380657,6 +381235,7 @@ interface { symbol_id: 0xd2e3da2e symbol_id: 0x14184fbf symbol_id: 0x3b425caf + symbol_id: 0x25a85408 symbol_id: 0x32cae5ee symbol_id: 0x0651ce31 symbol_id: 0x194db723 @@ -381235,6 +381814,7 @@ interface { symbol_id: 0xb9dd1d1a symbol_id: 0x3d66dcb8 symbol_id: 0x1f68a496 + symbol_id: 0x23a5ab99 symbol_id: 0x2a589f64 symbol_id: 0x7da41bc7 symbol_id: 0x795a4305 @@ -381754,20 +382334,32 @@ interface { symbol_id: 0x8f8f2df9 symbol_id: 0xeb912db7 symbol_id: 0x64876ecd + symbol_id: 0x994cfb6c + symbol_id: 0x8c2045ca symbol_id: 0xdf73207c symbol_id: 0xd232cbb1 + symbol_id: 0x209bd6b9 + symbol_id: 0x68d92b40 + symbol_id: 0x520c06c0 symbol_id: 0xa6eac918 symbol_id: 0xc46f1f1f symbol_id: 0xf30af7b3 + symbol_id: 0xc9a9e8ab + symbol_id: 0xa2b73df4 symbol_id: 0x71f2808e + symbol_id: 0x246bf5fe + symbol_id: 0x96be3ac9 symbol_id: 0xfa57b81b + symbol_id: 0x9d21209c symbol_id: 0x4603c1d4 symbol_id: 0x54c09325 symbol_id: 0xf1838f43 symbol_id: 0x9324879f symbol_id: 0xcde37345 + symbol_id: 0xcf411a0e symbol_id: 0xb834cd77 symbol_id: 0x5827485d + symbol_id: 0xd777027b symbol_id: 0x23b2a72a symbol_id: 0xf407269f symbol_id: 0xe0308dad diff --git a/android/abi_gki_aarch64_exynos b/android/abi_gki_aarch64_exynos index a816fd5a8291..88759b63b57b 100644 --- a/android/abi_gki_aarch64_exynos +++ b/android/abi_gki_aarch64_exynos @@ -634,6 +634,7 @@ perf_trace_run_bpf_submit phy_power_off phy_power_on + phy_set_mode_ext pinconf_generic_dt_node_to_map pinctrl_dev_get_drvdata pinctrl_lookup_state @@ -647,6 +648,7 @@ platform_driver_unregister platform_get_irq platform_get_irq_byname + platform_get_irq_byname_optional platform_get_resource platform_get_resource_byname __platform_register_drivers @@ -935,9 +937,11 @@ up_write usb_add_function usb_copy_descriptors + usb_enable_autosuspend usb_ep_autoconfig usb_function_register usb_function_unregister + usb_hcd_is_primary_hcd usb_hub_find_child usb_interface_id usb_put_function_instance @@ -1151,7 +1155,9 @@ __tracepoint_workqueue_execute_start # required by dwc3-exynos-usb.ko + device_create_managed_software_node platform_device_add + platform_device_add_resources platform_device_alloc platform_device_del platform_device_put @@ -1474,6 +1480,17 @@ # required by exynos-ssld.ko driver_register +# required by exynos-usb-audio-offloading.ko + snd_ctl_add + snd_ctl_new1 + snd_vendor_set_ops + __traceiter_android_rvh_audio_usb_offload_disconnect + __traceiter_android_vh_audio_usb_offload_connect + __tracepoint_android_rvh_audio_usb_offload_disconnect + __tracepoint_android_vh_audio_usb_offload_connect + usb_choose_configuration + usb_ifnum_to_if + # required by exynos9945_sound.ko clk_bulk_disable clk_bulk_enable @@ -2418,6 +2435,25 @@ kthread_complete_and_exit usb_speed_string +# required by xhci-exynos-audio.ko + dma_pool_alloc + dma_pool_free + __kmalloc_node + kmalloc_node_trace + xhci_add_endpoint + xhci_address_device + xhci_check_trb_in_td_math + xhci_get_endpoint_index + xhci_get_ep_ctx + xhci_get_slot_ctx + xhci_initialize_ring_info + xhci_link_segments + xhci_remove_stream_mapping + xhci_ring_alloc + xhci_segment_free + xhci_trb_virt_to_dma + xhci_vendor_get_ops + # required by xhci-exynos.ko device_property_read_u32_array device_set_wakeup_enable @@ -2428,10 +2464,10 @@ usb_add_hcd __usb_create_hcd usb_disabled - usb_enable_autosuspend - usb_hcd_is_primary_hcd usb_put_hcd usb_remove_hcd + xhci_bus_resume + xhci_bus_suspend xhci_gen_setup xhci_init_driver xhci_resume From dfabd2e38be31725210d182c5648b8c24157cef8 Mon Sep 17 00:00:00 2001 From: Xuewen Yan Date: Fri, 30 Jun 2023 15:42:25 +0800 Subject: [PATCH 045/114] ANDROID: android: Create debug_symbols driver Introduce new API to expose symbols useful for debugging the GKI kernel. Symbols exported from this driver would be difficult to maintain via the traditional EXPORT_SYMBOL_GPL. Bug: 199236943 Signed-off-by: Elliot Berman Signed-off-by: Prasad Sodagudi Signed-off-by: Yogesh Lal Signed-off-by: Xuewen Yan [ delete some unused symbols and add _text/_end ] The commit bb732365f7ad44aab1eaed253cd130f9b49679da had build error, so it was reverted. After fixed build error, restore the commit. Bug: 287890135 Change-Id: I95bc8f4203791d6857e126d87519b892c81057b0 Signed-off-by: Xuewen Yan --- drivers/android/Kconfig | 11 +++ drivers/android/Makefile | 1 + drivers/android/android_debug_symbols.c | 96 +++++++++++++++++++++++++ include/linux/android_debug_symbols.h | 47 ++++++++++++ 4 files changed, 155 insertions(+) create mode 100644 drivers/android/android_debug_symbols.c create mode 100644 include/linux/android_debug_symbols.h diff --git a/drivers/android/Kconfig b/drivers/android/Kconfig index c5e063b723dd..c3a49e538988 100644 --- a/drivers/android/Kconfig +++ b/drivers/android/Kconfig @@ -47,6 +47,17 @@ config ANDROID_BINDER_IPC_SELFTEST exhaustively with combinations of various buffer sizes and alignments. +config ANDROID_DEBUG_SYMBOLS + bool "Android Debug Symbols" + help + Enables export of debug symbols that are useful for offline debugging + of a kernel. These symbols would be used in vendor modules to find + addresses of the core kernel symbols for vendor extensions. + + This driver is statically compiled into kernel and maintains all the + required symbol addresses for vendor modules and provides necessary + interface vendor modules. + config ANDROID_VENDOR_HOOKS bool "Android Vendor Hooks" depends on TRACEPOINTS diff --git a/drivers/android/Makefile b/drivers/android/Makefile index 9b89e4ba00a1..97cddb531ee0 100644 --- a/drivers/android/Makefile +++ b/drivers/android/Makefile @@ -4,5 +4,6 @@ ccflags-y += -I$(src) # needed for trace events obj-$(CONFIG_ANDROID_BINDERFS) += binderfs.o obj-$(CONFIG_ANDROID_BINDER_IPC) += binder.o binder_alloc.o obj-$(CONFIG_ANDROID_BINDER_IPC_SELFTEST) += binder_alloc_selftest.o +obj-$(CONFIG_ANDROID_DEBUG_SYMBOLS) += android_debug_symbols.o obj-$(CONFIG_ANDROID_VENDOR_HOOKS) += vendor_hooks.o obj-$(CONFIG_ANDROID_DEBUG_KINFO) += debug_kinfo.o diff --git a/drivers/android/android_debug_symbols.c b/drivers/android/android_debug_symbols.c new file mode 100644 index 000000000000..4c0388575d57 --- /dev/null +++ b/drivers/android/android_debug_symbols.c @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/* + * Copyright (c) 2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2023, Unisoc (Shanghai) Technologies Co., Ltd + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include "../../mm/slab.h" +#include + +struct ads_entry { + char *name; + void *addr; +}; + +#define _ADS_ENTRY(index, symbol) \ + [index] = { .name = #symbol, .addr = (void *)symbol } +#define ADS_ENTRY(index, symbol) _ADS_ENTRY(index, symbol) + +#define _ADS_PER_CPU_ENTRY(index, symbol) \ + [index] = { .name = #symbol, .addr = (void *)&symbol } +#define ADS_PER_CPU_ENTRY(index, symbol) _ADS_PER_CPU_ENTRY(index, symbol) + +/* + * This module maintains static array of symbol and address information. + * Add all required core kernel symbols and their addresses into ads_entries[] array, + * so that vendor modules can query and to find address of non-exported symbol. + */ +static const struct ads_entry ads_entries[ADS_END] = { + ADS_ENTRY(ADS_SDATA, _sdata), + ADS_ENTRY(ADS_BSS_END, __bss_stop), + ADS_ENTRY(ADS_PER_CPU_START, __per_cpu_start), + ADS_ENTRY(ADS_PER_CPU_END, __per_cpu_end), + ADS_ENTRY(ADS_TEXT, _text), + ADS_ENTRY(ADS_SEND, _end), + ADS_ENTRY(ADS_LINUX_BANNER, linux_banner), + ADS_ENTRY(ADS_TOTAL_CMA, &totalcma_pages), + ADS_ENTRY(ADS_SLAB_CACHES, &slab_caches), + ADS_ENTRY(ADS_SLAB_MUTEX, &slab_mutex), +}; + +/* + * ads_per_cpu_entries array contains all the per_cpu variable address information. + */ +static const struct ads_entry ads_per_cpu_entries[ADS_DEBUG_PER_CPU_END] = { +#ifdef CONFIG_ARM64 + ADS_PER_CPU_ENTRY(ADS_IRQ_STACK_PTR, irq_stack_ptr), +#endif +#ifdef CONFIG_X86 + ADS_PER_CPU_ENTRY(ADS_IRQ_STACK_PTR, hardirq_stack_ptr), +#endif +}; + +/* + * android_debug_symbol - Provide address inforamtion of debug symbol. + * @symbol: Index of debug symbol array. + * + * Return address of core kernel symbol on success and a negative errno will be + * returned in error cases. + * + */ +void *android_debug_symbol(enum android_debug_symbol symbol) +{ + if (symbol >= ADS_END) + return ERR_PTR(-EINVAL); + + return ads_entries[symbol].addr; +} +EXPORT_SYMBOL_NS_GPL(android_debug_symbol, MINIDUMP); + +/* + * android_debug_per_cpu_symbol - Provide address inforamtion of per cpu debug symbol. + * @symbol: Index of per cpu debug symbol array. + * + * Return address of core kernel symbol on success and a negative errno will be + * returned in error cases. + * + */ +void *android_debug_per_cpu_symbol(enum android_debug_per_cpu_symbol symbol) +{ + if (symbol >= ADS_DEBUG_PER_CPU_END) + return ERR_PTR(-EINVAL); + + return ads_per_cpu_entries[symbol].addr; +} +EXPORT_SYMBOL_NS_GPL(android_debug_per_cpu_symbol, MINIDUMP); + diff --git a/include/linux/android_debug_symbols.h b/include/linux/android_debug_symbols.h new file mode 100644 index 000000000000..92c0259e6f89 --- /dev/null +++ b/include/linux/android_debug_symbols.h @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) 2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2023, Unisoc (Shanghai) Technologies Co., Ltd + */ + +#ifndef _ANDROID_DEBUG_SYMBOLS_H +#define _ANDROID_DEBUG_SYMBOLS_H + +enum android_debug_symbol { + ADS_SDATA = 0, + ADS_BSS_END, + ADS_PER_CPU_START, + ADS_PER_CPU_END, + ADS_TEXT, + ADS_SEND, + ADS_LINUX_BANNER, + ADS_TOTAL_CMA, + ADS_SLAB_CACHES, + ADS_SLAB_MUTEX, + ADS_END +}; + +enum android_debug_per_cpu_symbol { + ADS_IRQ_STACK_PTR = 0, + ADS_DEBUG_PER_CPU_END +}; + +#ifdef CONFIG_ANDROID_DEBUG_SYMBOLS + +void *android_debug_symbol(enum android_debug_symbol symbol); +void *android_debug_per_cpu_symbol(enum android_debug_per_cpu_symbol symbol); + +#else /* !CONFIG_ANDROID_DEBUG_SYMBOLS */ + +static inline void *android_debug_symbol(enum android_debug_symbol symbol) +{ + return NULL; +} +static inline void *android_debug_per_cpu_symbol(enum android_debug_per_cpu_symbol symbol) +{ + return NULL; +} + +#endif /* CONFIG_ANDROID_DEBUG_SYMBOLS */ + +#endif /* _ANDROID_DEBUG_SYMBOLS_H */ From 1047d4a5dfdba812fe9db2ebe4cf9396284c7b83 Mon Sep 17 00:00:00 2001 From: Yogesh Lal Date: Fri, 29 Oct 2021 16:20:20 +0530 Subject: [PATCH 046/114] ANDROID: defconfig: Enable debug_symbol driver Enable debug_symbol driver in gki_defconfig for getting symbol addresses exported by this driver. Bug: 199236943 Signed-off-by: Prasad Sodagudi Signed-off-by: Yogesh Lal Bug: 287890135 Signed-off-by: Xuewen Yan Change-Id: I1ca3bd2e867f3a739dfaae53b913f62dd79e9a26 --- 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 a2ea28d82689..271b64954fe5 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -575,6 +575,7 @@ CONFIG_GENERIC_PHY=y CONFIG_POWERCAP=y CONFIG_ANDROID_BINDER_IPC=y CONFIG_ANDROID_BINDERFS=y +CONFIG_ANDROID_DEBUG_SYMBOLS=y CONFIG_ANDROID_VENDOR_HOOKS=y CONFIG_ANDROID_DEBUG_KINFO=y CONFIG_LIBNVDIMM=y diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index 15f83e56b501..71c649731845 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -519,6 +519,7 @@ CONFIG_IIO_TRIGGER=y CONFIG_POWERCAP=y CONFIG_ANDROID_BINDER_IPC=y CONFIG_ANDROID_BINDERFS=y +CONFIG_ANDROID_DEBUG_SYMBOLS=y CONFIG_ANDROID_VENDOR_HOOKS=y CONFIG_ANDROID_DEBUG_KINFO=y CONFIG_LIBNVDIMM=y From 8cd2dc493a82385f2fcafb0e8ee971b70a5c3744 Mon Sep 17 00:00:00 2001 From: Xuewen Yan Date: Mon, 19 Jun 2023 14:24:03 +0800 Subject: [PATCH 047/114] ANDROID: ABI: add android_debug_symbol to whitelist 2 function symbol(s) added 'void* android_debug_per_cpu_symbol(enum android_debug_per_cpu_symbol)' 'void* android_debug_symbol(enum android_debug_symbol)' Bug: 287890135 Signed-off-by: Xuewen Yan Change-Id: I144dab4b100f38603b507a326c84a9c7a26af7c3 --- android/abi_gki_aarch64.stg | 96 ++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_unisoc | 2 + 2 files changed, 98 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 8cf2857dd8c4..f0397208df02 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -259600,6 +259600,70 @@ enumeration { } } } +enumeration { + id: 0x503181cf + name: "android_debug_per_cpu_symbol" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "ADS_IRQ_STACK_PTR" + } + enumerator { + name: "ADS_DEBUG_PER_CPU_END" + value: 1 + } + } +} +enumeration { + id: 0x705ce9b7 + name: "android_debug_symbol" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "ADS_SDATA" + } + enumerator { + name: "ADS_BSS_END" + value: 1 + } + enumerator { + name: "ADS_PER_CPU_START" + value: 2 + } + enumerator { + name: "ADS_PER_CPU_END" + value: 3 + } + enumerator { + name: "ADS_TEXT" + value: 4 + } + enumerator { + name: "ADS_SEND" + value: 5 + } + enumerator { + name: "ADS_LINUX_BANNER" + value: 6 + } + enumerator { + name: "ADS_TOTAL_CMA" + value: 7 + } + enumerator { + name: "ADS_SLAB_CACHES" + value: 8 + } + enumerator { + name: "ADS_SLAB_MUTEX" + value: 9 + } + enumerator { + name: "ADS_END" + value: 10 + } + } +} enumeration { id: 0x635e163e name: "arch_timer_erratum_match_type" @@ -287671,6 +287735,11 @@ function { parameter_id: 0x1d33485a parameter_id: 0x27a7c613 } +function { + id: 0x429ad182 + return_type_id: 0x18bd6530 + parameter_id: 0x503181cf +} function { id: 0x42a927f9 return_type_id: 0xc9082b19 @@ -287967,6 +288036,11 @@ function { parameter_id: 0x397d00ab parameter_id: 0x6720d32f } +function { + id: 0x4a818b9c + return_type_id: 0x18bd6530 + parameter_id: 0x705ce9b7 +} function { id: 0x4abfefa4 return_type_id: 0x0cbf60eb @@ -326482,6 +326556,26 @@ elf_symbol { type_id: 0x933f3b0e full_name: "amba_request_regions" } +elf_symbol { + id: 0x5653e7da + name: "android_debug_per_cpu_symbol" + is_defined: true + symbol_type: FUNCTION + crc: 0x8ee3d8d9 + namespace: "MINIDUMP" + type_id: 0x429ad182 + full_name: "android_debug_per_cpu_symbol" +} +elf_symbol { + id: 0xffaebc56 + name: "android_debug_symbol" + is_defined: true + symbol_type: FUNCTION + crc: 0x1d505a43 + namespace: "MINIDUMP" + type_id: 0x4a818b9c + full_name: "android_debug_symbol" +} elf_symbol { id: 0xd8dbec6e name: "android_rvh_probe_register" @@ -376922,6 +377016,8 @@ interface { symbol_id: 0x8480d9c1 symbol_id: 0xb7d7d836 symbol_id: 0xacb3d1d3 + symbol_id: 0x5653e7da + symbol_id: 0xffaebc56 symbol_id: 0xd8dbec6e symbol_id: 0x95eaf556 symbol_id: 0xf2d017ff diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc index ffe63b898cde..78d04400ec09 100644 --- a/android/abi_gki_aarch64_unisoc +++ b/android/abi_gki_aarch64_unisoc @@ -14,6 +14,8 @@ __alloc_skb alloc_workqueue alt_cb_patch_nops + android_debug_per_cpu_symbol + android_debug_symbol arch_freq_scale __arch_copy_from_user __arch_copy_to_user From ed2a228522b98300ecccd958506a9a2833eca780 Mon Sep 17 00:00:00 2001 From: Xuewen Yan Date: Tue, 27 Jun 2023 19:10:18 +0800 Subject: [PATCH 048/114] ANDROID: fix build error when use cpu_cgroup_online vh When register_trace_rvh_cpu_cgroup_online, it would report error: declaration of 'struct cgroup_subsys_state' will not be visible outside of this function: TP_PROTO(struct cgroup_subsys_state *css), So add declaration of 'struct cgroup_subsys_state' on the top of vh. Bug: 289018298 Fixes: 5f657b04f4f2 ("ANDROID: subsystem-specific vendor_hooks.c for sched") Change-Id: I3da0bee61b193ef9d998ebff79ceb91fec12ceff Signed-off-by: Xuewen Yan --- include/trace/hooks/cgroup.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/include/trace/hooks/cgroup.h b/include/trace/hooks/cgroup.h index 15582cc572bd..dc6b47dcb21d 100644 --- a/include/trace/hooks/cgroup.h +++ b/include/trace/hooks/cgroup.h @@ -8,6 +8,9 @@ #include struct task_struct; +struct cgroup_taskset; +struct cgroup_subsys; +struct cgroup_subsys_state; DECLARE_HOOK(android_vh_cgroup_set_task, TP_PROTO(int ret, struct task_struct *task), TP_ARGS(ret, task)); @@ -16,8 +19,6 @@ DECLARE_RESTRICTED_HOOK(android_rvh_refrigerator, TP_PROTO(bool f), TP_ARGS(f), 1); -struct cgroup_subsys; -struct cgroup_taskset; DECLARE_HOOK(android_vh_cgroup_attach, TP_PROTO(struct cgroup_subsys *ss, struct cgroup_taskset *tset), TP_ARGS(ss, tset)) @@ -25,8 +26,6 @@ DECLARE_RESTRICTED_HOOK(android_rvh_cgroup_force_kthread_migration, TP_PROTO(struct task_struct *tsk, struct cgroup *dst_cgrp, bool *force_migration), TP_ARGS(tsk, dst_cgrp, force_migration), 1); -struct cgroup_taskset; -struct cgroup_subsys; DECLARE_RESTRICTED_HOOK(android_rvh_cpuset_fork, TP_PROTO(struct task_struct *p, bool *inherit_cpus), From c7798367099d4f9ff13ee5abefe352e5b5fb3556 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Thu, 8 Jun 2023 02:32:02 +0200 Subject: [PATCH 049/114] UPSTREAM: netfilter: nf_tables: incorrect error path handling with NFT_MSG_NEWRULE [ Upstream commit 1240eb93f0616b21c675416516ff3d74798fdc97 ] In case of error when adding a new rule that refers to an anonymous set, deactivate expressions via NFT_TRANS_PREPARE state, not NFT_TRANS_RELEASE. Thus, the lookup expression marks anonymous sets as inactive in the next generation to ensure it is not reachable in this transaction anymore and decrement the set refcount as introduced by c1592a89942e ("netfilter: nf_tables: deactivate anonymous set from preparation phase"). The abort step takes care of undoing the anonymous set. This is also consistent with rule deletion, where NFT_TRANS_PREPARE is used. Note that this error path is exercised in the preparation step of the commit protocol. This patch replaces nf_tables_rule_release() by the deactivate and destroy calls, this time with NFT_TRANS_PREPARE. Due to this incorrect error handling, it is possible to access a dangling pointer to the anonymous set that remains in the transaction list. [1009.379054] BUG: KASAN: use-after-free in nft_set_lookup_global+0x147/0x1a0 [nf_tables] [1009.379106] Read of size 8 at addr ffff88816c4c8020 by task nft-rule-add/137110 [1009.379116] CPU: 7 PID: 137110 Comm: nft-rule-add Not tainted 6.4.0-rc4+ #256 [1009.379128] Call Trace: [1009.379132] [1009.379135] dump_stack_lvl+0x33/0x50 [1009.379146] ? nft_set_lookup_global+0x147/0x1a0 [nf_tables] [1009.379191] print_address_description.constprop.0+0x27/0x300 [1009.379201] kasan_report+0x107/0x120 [1009.379210] ? nft_set_lookup_global+0x147/0x1a0 [nf_tables] [1009.379255] nft_set_lookup_global+0x147/0x1a0 [nf_tables] [1009.379302] nft_lookup_init+0xa5/0x270 [nf_tables] [1009.379350] nf_tables_newrule+0x698/0xe50 [nf_tables] [1009.379397] ? nf_tables_rule_release+0xe0/0xe0 [nf_tables] [1009.379441] ? kasan_unpoison+0x23/0x50 [1009.379450] nfnetlink_rcv_batch+0x97c/0xd90 [nfnetlink] [1009.379470] ? nfnetlink_rcv_msg+0x480/0x480 [nfnetlink] [1009.379485] ? __alloc_skb+0xb8/0x1e0 [1009.379493] ? __alloc_skb+0xb8/0x1e0 [1009.379502] ? entry_SYSCALL_64_after_hwframe+0x46/0xb0 [1009.379509] ? unwind_get_return_address+0x2a/0x40 [1009.379517] ? write_profile+0xc0/0xc0 [1009.379524] ? avc_lookup+0x8f/0xc0 [1009.379532] ? __rcu_read_unlock+0x43/0x60 Bug: 289230343 Fixes: 958bee14d071 ("netfilter: nf_tables: use new transaction infrastructure to handle sets") Signed-off-by: Pablo Neira Ayuso Signed-off-by: Sasha Levin (cherry picked from commit 4aaa3b730d16c13cc3feaa127bfca1af201d969d) Signed-off-by: Lee Jones Change-Id: Ia62fea0e2c2c2cf944dde80751a9dfb85108e758 --- net/netfilter/nf_tables_api.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c index f82a61d92aa9..7a2cc24e9a33 100644 --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c @@ -3669,7 +3669,8 @@ static int nf_tables_newrule(struct sk_buff *skb, const struct nfnl_info *info, if (flow) nft_flow_rule_destroy(flow); err_release_rule: - nf_tables_rule_release(&ctx, rule); + nft_rule_expr_deactivate(&ctx, rule, NFT_TRANS_PREPARE); + nf_tables_rule_destroy(&ctx, rule); err_release_expr: for (i = 0; i < n; i++) { if (expr_info[i].ops) { From cbea99e1dec10d71186b757b871d94906bcb1aff Mon Sep 17 00:00:00 2001 From: Bean Huo Date: Sun, 8 Jan 2023 23:40:57 +0100 Subject: [PATCH 050/114] UPSTREAM: scsi: ufs: core: bsg: Fix cast to restricted __be16 warning Fix the following sparse endianness warning: "sparse warnings: drivers/ufs/core/ufs_bsg.c:91:25: sparse: sparse: cast to restricted __be16." For consistency with endianness annotations of other UFS data structures, change __u16/32 to __be16/32 in UFS ARPMB data structures. Bug: 254441685 Fixes: 6ff265fc5ef6 ("scsi: ufs: core: bsg: Add advanced RPMB support in ufs_bsg") Reported-by: kernel test robot Signed-off-by: Bean Huo Reviewed-by: Bart Van Assche Signed-off-by: Martin K. Petersen (cherry picked from commit e2cb6e8db69e96c1514c2992e2d4fd6c8c1b8820) Signed-off-by: Lee Jones Change-Id: I1c17034f9297722f4d6e0c39063434db675d5f36 --- include/uapi/scsi/scsi_bsg_ufs.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/uapi/scsi/scsi_bsg_ufs.h b/include/uapi/scsi/scsi_bsg_ufs.h index 5e4891fd99c2..ad6f5e1be2ab 100644 --- a/include/uapi/scsi/scsi_bsg_ufs.h +++ b/include/uapi/scsi/scsi_bsg_ufs.h @@ -97,18 +97,18 @@ struct utp_upiu_req { }; struct ufs_arpmb_meta { - __u16 req_resp_type; + __be16 req_resp_type; __u8 nonce[16]; - __u32 write_counter; - __u16 addr_lun; - __u16 block_count; - __u16 result; + __be32 write_counter; + __be16 addr_lun; + __be16 block_count; + __be16 result; } __attribute__((__packed__)); struct ufs_ehs { __u8 length; __u8 ehs_type; - __u16 ehssub_type; + __be16 ehssub_type; struct ufs_arpmb_meta meta; __u8 mac_key[32]; } __attribute__((__packed__)); From 820f96cba5c286340c367b9dfb9be03573d65ee0 Mon Sep 17 00:00:00 2001 From: Arnd Bergmann Date: Thu, 15 Dec 2022 17:54:24 +0100 Subject: [PATCH 051/114] UPSTREAM: tty: serial: qcom_geni: avoid duplicate struct member init When -Woverride-init is enabled in a build, gcc points out that qcom_geni_serial_pm_ops contains conflicting initializers: drivers/tty/serial/qcom_geni_serial.c:1586:20: error: initialized field overwritten [-Werror=override-init] 1586 | .restore = qcom_geni_serial_sys_hib_resume, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/tty/serial/qcom_geni_serial.c:1586:20: note: (near initialization for 'qcom_geni_serial_pm_ops.restore') drivers/tty/serial/qcom_geni_serial.c:1587:17: error: initialized field overwritten [-Werror=override-init] 1587 | .thaw = qcom_geni_serial_sys_hib_resume, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Open-code the initializers with the version that was already used, and use the pm_sleep_ptr() method to deal with unused ones, in place of the __maybe_unused annotation. Bug: 254441685 Fixes: 35781d8356a2 ("tty: serial: qcom-geni-serial: Add support for Hibernation feature") Signed-off-by: Arnd Bergmann Reviewed-by: Douglas Anderson Link: https://lore.kernel.org/r/20221215165453.1864836-1-arnd@kernel.org Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 5342ab0af45064cbdc773645b93ab70c24ee161f) Signed-off-by: Lee Jones Change-Id: Ic1a86bcbefe8592adae4a3f0338855590fc4b571 --- drivers/tty/serial/qcom_geni_serial.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c index 774de67bb98f..1f18b417c8de 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -1530,7 +1530,7 @@ static int qcom_geni_serial_remove(struct platform_device *pdev) return 0; } -static int __maybe_unused qcom_geni_serial_sys_suspend(struct device *dev) +static int qcom_geni_serial_sys_suspend(struct device *dev) { struct qcom_geni_serial_port *port = dev_get_drvdata(dev); struct uart_port *uport = &port->uport; @@ -1547,7 +1547,7 @@ static int __maybe_unused qcom_geni_serial_sys_suspend(struct device *dev) return uart_suspend_port(private_data->drv, uport); } -static int __maybe_unused qcom_geni_serial_sys_resume(struct device *dev) +static int qcom_geni_serial_sys_resume(struct device *dev) { int ret; struct qcom_geni_serial_port *port = dev_get_drvdata(dev); @@ -1595,10 +1595,12 @@ static int qcom_geni_serial_sys_hib_resume(struct device *dev) } static const struct dev_pm_ops qcom_geni_serial_pm_ops = { - SET_SYSTEM_SLEEP_PM_OPS(qcom_geni_serial_sys_suspend, - qcom_geni_serial_sys_resume) - .restore = qcom_geni_serial_sys_hib_resume, - .thaw = qcom_geni_serial_sys_hib_resume, + .suspend = pm_sleep_ptr(qcom_geni_serial_sys_suspend), + .resume = pm_sleep_ptr(qcom_geni_serial_sys_resume), + .freeze = pm_sleep_ptr(qcom_geni_serial_sys_suspend), + .poweroff = pm_sleep_ptr(qcom_geni_serial_sys_suspend), + .restore = pm_sleep_ptr(qcom_geni_serial_sys_hib_resume), + .thaw = pm_sleep_ptr(qcom_geni_serial_sys_hib_resume), }; static const struct of_device_id qcom_geni_serial_match_table[] = { From 3c60e58d7a618ba5337236b62f1d73c8dc91153a Mon Sep 17 00:00:00 2001 From: Jason Gunthorpe Date: Tue, 25 Apr 2023 16:04:15 -0300 Subject: [PATCH 052/114] UPSTREAM: iommu/amd: Add missing domain type checks Drivers are supposed to list the domain types they support in their domain_alloc() ops so when we add new domain types, like BLOCKING or SVA, they don't start breaking. This ended up providing an empty UNMANAGED domain when the core code asked for a BLOCKING domain, which happens to be the fallback for drivers that don't support it, but this is completely wrong for SVA. Check for the DMA types AMD supports and reject every other kind. Bug: 254441685 Fixes: 136467962e49 ("iommu: Add IOMMU SVA domain support") Signed-off-by: Jason Gunthorpe Reviewed-by: Vasant Hegde Reviewed-by: Kevin Tian Link: https://lore.kernel.org/r/0-v1-2ac37b893728+da-amd_check_types_jgg@nvidia.com Signed-off-by: Joerg Roedel (cherry picked from commit 29f54745f24547a84b18582e054df9bea1a7bf3e) Signed-off-by: Lee Jones Change-Id: Id103dd8992f7a094e47ab5878c969dafe5c26f25 --- drivers/iommu/amd/iommu.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 20adb9b323d8..d7676008ff57 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -2051,7 +2051,7 @@ static struct protection_domain *protection_domain_alloc(unsigned int type) { struct io_pgtable_ops *pgtbl_ops; struct protection_domain *domain; - int pgtable = amd_iommu_pgtable; + int pgtable; int mode = DEFAULT_PGTABLE_LEVEL; int ret; @@ -2068,6 +2068,10 @@ static struct protection_domain *protection_domain_alloc(unsigned int type) mode = PAGE_MODE_NONE; } else if (type == IOMMU_DOMAIN_UNMANAGED) { pgtable = AMD_IOMMU_V1; + } else if (type == IOMMU_DOMAIN_DMA || type == IOMMU_DOMAIN_DMA_FQ) { + pgtable = amd_iommu_pgtable; + } else { + return NULL; } switch (pgtable) { From d2dfb4ee11c361bec49543b6988a95b01f5cb38e Mon Sep 17 00:00:00 2001 From: Lee Jones Date: Wed, 14 Jun 2023 17:38:54 +0100 Subject: [PATCH 053/114] UPSTREAM: x86/mm: Avoid using set_pgd() outside of real PGD pages commit d082d48737c75d2b3cc1f972b8c8674c25131534 upstream. KPTI keeps around two PGDs: one for userspace and another for the kernel. Among other things, set_pgd() contains infrastructure to ensure that updates to the kernel PGD are reflected in the user PGD as well. One side-effect of this is that set_pgd() expects to be passed whole pages. Unfortunately, init_trampoline_kaslr() passes in a single entry: 'trampoline_pgd_entry'. When KPTI is on, set_pgd() will update 'trampoline_pgd_entry' (an 8-Byte globally stored [.bss] variable) and will then proceed to replicate that value into the non-existent neighboring user page (located +4k away), leading to the corruption of other global [.bss] stored variables. Fix it by directly assigning 'trampoline_pgd_entry' and avoiding set_pgd(). [ dhansen: tweak subject and changelog ] Bug: 274115504 Fixes: 0925dda5962e ("x86/mm/KASLR: Use only one PUD entry for real mode trampoline") Suggested-by: Dave Hansen Signed-off-by: Lee Jones Signed-off-by: Dave Hansen Cc: Link: https://lore.kernel.org/all/20230614163859.924309-1-lee@kernel.org/g Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 364fdcbb035bb910e58a2814708de72481256466) Signed-off-by: Lee Jones Change-Id: Idc1fc494d7ccb4a8a3765e1f46482583b528a584 --- arch/x86/mm/kaslr.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/x86/mm/kaslr.c b/arch/x86/mm/kaslr.c index 557f0fe25dff..37db264866b6 100644 --- a/arch/x86/mm/kaslr.c +++ b/arch/x86/mm/kaslr.c @@ -172,10 +172,10 @@ void __meminit init_trampoline_kaslr(void) set_p4d(p4d_tramp, __p4d(_KERNPG_TABLE | __pa(pud_page_tramp))); - set_pgd(&trampoline_pgd_entry, - __pgd(_KERNPG_TABLE | __pa(p4d_page_tramp))); + trampoline_pgd_entry = + __pgd(_KERNPG_TABLE | __pa(p4d_page_tramp)); } else { - set_pgd(&trampoline_pgd_entry, - __pgd(_KERNPG_TABLE | __pa(pud_page_tramp))); + trampoline_pgd_entry = + __pgd(_KERNPG_TABLE | __pa(pud_page_tramp)); } } From e84e043a3cf126b72031c840f67d95ad76e7b24f Mon Sep 17 00:00:00 2001 From: Hangyu Hua Date: Wed, 31 May 2023 18:28:04 +0800 Subject: [PATCH 054/114] UPSTREAM: net/sched: flower: fix possible OOB write in fl_set_geneve_opt() [ Upstream commit 4d56304e5827c8cc8cc18c75343d283af7c4825c ] If we send two TCA_FLOWER_KEY_ENC_OPTS_GENEVE packets and their total size is 252 bytes(key->enc_opts.len = 252) then key->enc_opts.len = opt->length = data_len / 4 = 0 when the third TCA_FLOWER_KEY_ENC_OPTS_GENEVE packet enters fl_set_geneve_opt. This bypasses the next bounds check and results in an out-of-bounds. Bug: 288660424 Fixes: 0a6e77784f49 ("net/sched: allow flower to match tunnel options") Signed-off-by: Hangyu Hua Reviewed-by: Simon Horman Reviewed-by: Pieter Jansen van Vuuren Link: https://lore.kernel.org/r/20230531102805.27090-1-hbh25y@gmail.com Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin (cherry picked from commit 45f47d2cf1142fbfe5d6fc39ad78f4aac058907c) Signed-off-by: Lee Jones Change-Id: I53c534b7d43f4c7da5a9f63556c79d35797aa598 --- net/sched/cls_flower.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index 25bc57ee6ea1..3de72e7c1075 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c @@ -1147,6 +1147,9 @@ static int fl_set_geneve_opt(const struct nlattr *nla, struct fl_flow_key *key, if (option_len > sizeof(struct geneve_opt)) data_len = option_len - sizeof(struct geneve_opt); + if (key->enc_opts.len > FLOW_DIS_TUN_OPTS_MAX - 4) + return -ERANGE; + opt = (struct geneve_opt *)&key->enc_opts.data[key->enc_opts.len]; memset(opt, 0xff, option_len); opt->length = data_len / 4; From c413cf731a9b9f57abee7f1e77525bb47c015b79 Mon Sep 17 00:00:00 2001 From: Zhang Zhengming Date: Wed, 19 Apr 2023 12:02:03 +0800 Subject: [PATCH 055/114] UPSTREAM: relayfs: fix out-of-bounds access in relay_file_read commit 43ec16f1450f4936025a9bdf1a273affdb9732c1 upstream. There is a crash in relay_file_read, as the var from point to the end of last subbuf. The oops looks something like: pc : __arch_copy_to_user+0x180/0x310 lr : relay_file_read+0x20c/0x2c8 Call trace: __arch_copy_to_user+0x180/0x310 full_proxy_read+0x68/0x98 vfs_read+0xb0/0x1d0 ksys_read+0x6c/0xf0 __arm64_sys_read+0x20/0x28 el0_svc_common.constprop.3+0x84/0x108 do_el0_svc+0x74/0x90 el0_svc+0x1c/0x28 el0_sync_handler+0x88/0xb0 el0_sync+0x148/0x180 We get the condition by analyzing the vmcore: 1). The last produced byte and last consumed byte both at the end of the last subbuf 2). A softirq calls function(e.g __blk_add_trace) to write relay buffer occurs when an program is calling relay_file_read_avail(). relay_file_read relay_file_read_avail relay_file_read_consume(buf, 0, 0); //interrupted by softirq who will write subbuf .... return 1; //read_start point to the end of the last subbuf read_start = relay_file_read_start_pos //avail is equal to subsize avail = relay_file_read_subbuf_avail //from points to an invalid memory address from = buf->start + read_start //system is crashed copy_to_user(buffer, from, avail) Bug: 288957094 Link: https://lkml.kernel.org/r/20230419040203.37676-1-zhang.zhengming@h3c.com Fixes: 8d62fdebdaf9 ("relay file read: start-pos fix") Signed-off-by: Zhang Zhengming Reviewed-by: Zhao Lei Reviewed-by: Zhou Kete Reviewed-by: Pengcheng Yang Cc: Jens Axboe Cc: Signed-off-by: Andrew Morton Signed-off-by: Greg Kroah-Hartman (cherry picked from commit f6ee841ff2169d7a7d045340ee72b2b9de9f06c5) Signed-off-by: Lee Jones Change-Id: Ibbdf65d8bf2268c3e8c09520f595167a2ed41e8b --- kernel/relay.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/relay.c b/kernel/relay.c index 28fbe2d1e54c..d9c2e4fa805b 100644 --- a/kernel/relay.c +++ b/kernel/relay.c @@ -989,7 +989,8 @@ static size_t relay_file_read_start_pos(struct rchan_buf *buf) size_t subbuf_size = buf->chan->subbuf_size; size_t n_subbufs = buf->chan->n_subbufs; size_t consumed = buf->subbufs_consumed % n_subbufs; - size_t read_pos = consumed * subbuf_size + buf->bytes_consumed; + size_t read_pos = (consumed * subbuf_size + buf->bytes_consumed) + % (n_subbufs * subbuf_size); read_subbuf = read_pos / subbuf_size; padding = buf->padding[read_subbuf]; From c9814a3af5dcaa78a06ca2ea6ef259ed73fa0c31 Mon Sep 17 00:00:00 2001 From: Ed Tsai Date: Wed, 14 Jun 2023 08:25:29 +0800 Subject: [PATCH 056/114] UPSTREAM: blk-mq: check on cpu id when there is only one ctx mapping commit f168420c62e7 ("blk-mq: don't redirect completion for hctx withs only one ctx mapping") When nvme applies a 1:1 mapping of hctx and ctx, there will be no remote request. But for ufs, the submission and completion queues could be asymmetric. (e.g. Multiple SQs share one CQ) Therefore, 1:1 mapping of hctx and ctx won't complete request on the submission cpu. In this situation, this nr_ctx check could violate the QUEUE_FLAG_SAME_FORCE, as a result, check on cpu id when there is only one ctx mapping. Bug: 267974767 Signed-off-by: Ed Tsai Signed-off-by: Po-Wen Kao Suggested-by: Keith Busch Reviewed-by: Christoph Hellwig Link: https://lore.kernel.org/r/20230614002529.6636-1-ed.tsai@mediatek.com [axboe: fixed up indentation] Signed-off-by: Jens Axboe (cherry picked from commit 30654614f3d27230200b1650f6025a2ce67900b4) Change-Id: If2b681b1c5163677b40c06735061406da88adc37 --- block/blk-mq.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/block/blk-mq.c b/block/blk-mq.c index 1ad3e4f494df..3a6abebda851 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -1188,8 +1188,9 @@ bool blk_mq_complete_request_remote(struct request *rq) * or a polled request, always complete locally, * it's pointless to redirect the completion. */ - if (rq->mq_hctx->nr_ctx == 1 || - rq->cmd_flags & REQ_POLLED) + if ((rq->mq_hctx->nr_ctx == 1 && + rq->mq_ctx->cpu == raw_smp_processor_id()) || + rq->cmd_flags & REQ_POLLED) return false; if (blk_mq_complete_need_ipi(rq)) { From 8740a92b2eb8eb0fc1cfb1cea9cf972dd3ab8c30 Mon Sep 17 00:00:00 2001 From: Po-Wen Kao Date: Tue, 14 Feb 2023 10:53:40 +0800 Subject: [PATCH 057/114] FROMLIST: scsi: ufs: core: Export symbols for MTK driver module Export symbols for MediaTek UFS driver's PM flow and irq handler. Bug: 267974767 Link: https://lore.kernel.org/all/20230701124442.10489-2-powen.kao@mediatek.com/ Signed-off-by: Po-Wen Kao Reviewed-by: Bart Van Assche Reviewed-by: Stanley Chu Change-Id: I2349545582f1da04c8cc66874e014afc02f095f8 --- drivers/ufs/core/ufs-mcq.c | 3 +++ include/ufs/ufshcd.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c index d5445084dfa7..9258bb085830 100644 --- a/drivers/ufs/core/ufs-mcq.c +++ b/drivers/ufs/core/ufs-mcq.c @@ -99,6 +99,7 @@ void ufshcd_mcq_config_mac(struct ufs_hba *hba, u32 max_active_cmds) val |= FIELD_PREP(MCQ_CFG_MAC_MASK, max_active_cmds); ufshcd_writel(hba, val, REG_UFS_MCQ_CFG); } +EXPORT_SYMBOL_GPL(ufshcd_mcq_config_mac); /** * ufshcd_mcq_req_to_hwq - find the hardware queue on which the @@ -249,6 +250,7 @@ u32 ufshcd_mcq_read_cqis(struct ufs_hba *hba, int i) { return readl(mcq_opr_base(hba, OPR_CQIS, i) + REG_CQIS); } +EXPORT_SYMBOL_GPL(ufshcd_mcq_read_cqis); void ufshcd_mcq_write_cqis(struct ufs_hba *hba, u32 val, int i) { @@ -402,6 +404,7 @@ void ufshcd_mcq_make_queues_operational(struct ufs_hba *hba) MCQ_CFG_n(REG_SQATTR, i)); } } +EXPORT_SYMBOL_GPL(ufshcd_mcq_make_queues_operational); void ufshcd_mcq_enable_esi(struct ufs_hba *hba) { diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h index c6962ac122ba..12965946d194 100644 --- a/include/ufs/ufshcd.h +++ b/include/ufs/ufshcd.h @@ -1297,11 +1297,14 @@ void ufshcd_parse_dev_ref_clk_freq(struct ufs_hba *hba, struct clk *refclk); void ufshcd_update_evt_hist(struct ufs_hba *hba, u32 id, u32 val); void ufshcd_hba_stop(struct ufs_hba *hba); void ufshcd_schedule_eh_work(struct ufs_hba *hba); +void ufshcd_mcq_config_mac(struct ufs_hba *hba, u32 max_active_cmds); +u32 ufshcd_mcq_read_cqis(struct ufs_hba *hba, int i); void ufshcd_mcq_write_cqis(struct ufs_hba *hba, u32 val, int i); unsigned long ufshcd_mcq_poll_cqe_nolock(struct ufs_hba *hba, struct ufs_hw_queue *hwq); unsigned long ufshcd_mcq_poll_cqe_lock(struct ufs_hba *hba, struct ufs_hw_queue *hwq); +void ufshcd_mcq_make_queues_operational(struct ufs_hba *hba); void ufshcd_mcq_enable_esi(struct ufs_hba *hba); void ufshcd_mcq_config_esi(struct ufs_hba *hba, struct msi_msg *msg); From dc64f5f480d84f873813633f9cb0e01a2d8ad078 Mon Sep 17 00:00:00 2001 From: Po-Wen Kao Date: Tue, 14 Feb 2023 16:59:22 +0800 Subject: [PATCH 058/114] FROMLIST: scsi: ufs: ufs-mediatek: Add MCQ support for MTK platform Add UFS MCQ vops and irq handler for MediaTek platform. PM flow is fixed accordingly. Bug: 267974767 Link: https://lore.kernel.org/all/20230701124442.10489-3-powen.kao@mediatek.com/ Signed-off-by: Po-Wen Kao Reviewed-by: Stanley Chu Suggested-by: AngeloGioacchino Del Regno Change-Id: Icc25a11db0dab95e45ed7bbce985bbd77e8fe79c --- drivers/ufs/host/ufs-mediatek.c | 174 +++++++++++++++++++++++++++++++- drivers/ufs/host/ufs-mediatek.h | 33 ++++++ 2 files changed, 205 insertions(+), 2 deletions(-) diff --git a/drivers/ufs/host/ufs-mediatek.c b/drivers/ufs/host/ufs-mediatek.c index 1541917939ff..603183082a56 100644 --- a/drivers/ufs/host/ufs-mediatek.c +++ b/drivers/ufs/host/ufs-mediatek.c @@ -27,8 +27,14 @@ #include #include "ufs-mediatek.h" +static int ufs_mtk_config_mcq(struct ufs_hba *hba, bool irq); + #define CREATE_TRACE_POINTS #include "ufs-mediatek-trace.h" +#undef CREATE_TRACE_POINTS + +#define MAX_SUPP_MAC 64 +#define MCQ_QUEUE_OFFSET(c) ((((c) >> 16) & 0xFF) * 0x200) static const struct ufs_dev_quirk ufs_mtk_dev_fixups[] = { { .wmanufacturerid = UFS_ANY_VENDOR, @@ -843,6 +849,38 @@ static void ufs_mtk_vreg_fix_vccqx(struct ufs_hba *hba) } } +static void ufs_mtk_init_mcq_irq(struct ufs_hba *hba) +{ + struct ufs_mtk_host *host = ufshcd_get_variant(hba); + struct platform_device *pdev; + int i; + int irq; + + host->mcq_nr_intr = UFSHCD_MAX_Q_NR; + pdev = container_of(hba->dev, struct platform_device, dev); + + for (i = 0; i < host->mcq_nr_intr; i++) { + /* irq index 0 is legacy irq, sq/cq irq start from index 1 */ + irq = platform_get_irq(pdev, i + 1); + if (irq < 0) { + host->mcq_intr_info[i].irq = MTK_MCQ_INVALID_IRQ; + dev_err(hba->dev, "get platform mcq irq fail: %d\n", i); + goto failed; + } + host->mcq_intr_info[i].hba = hba; + host->mcq_intr_info[i].irq = irq; + dev_info(hba->dev, "get platform mcq irq: %d, %d\n", i, irq); + } + + return; +failed: + /* invalidate irq info */ + for (i = 0; i < host->mcq_nr_intr; i++) + host->mcq_intr_info[i].irq = MTK_MCQ_INVALID_IRQ; + + host->mcq_nr_intr = 0; +} + /** * ufs_mtk_init - find other essential mmio bases * @hba: host controller instance @@ -879,6 +917,8 @@ static int ufs_mtk_init(struct ufs_hba *hba) /* Initialize host capability */ ufs_mtk_init_host_caps(hba); + ufs_mtk_init_mcq_irq(hba); + err = ufs_mtk_bind_mphy(hba); if (err) goto out_variant_clear; @@ -1176,7 +1216,17 @@ static int ufs_mtk_link_set_hpm(struct ufs_hba *hba) else return err; - err = ufshcd_make_hba_operational(hba); + if (!hba->mcq_enabled) { + err = ufshcd_make_hba_operational(hba); + } else { + ufs_mtk_config_mcq(hba, false); + ufshcd_mcq_make_queues_operational(hba); + ufshcd_mcq_config_mac(hba, hba->nutrs); + /* Enable MCQ mode */ + ufshcd_writel(hba, ufshcd_readl(hba, REG_UFS_MEM_CFG) | 0x1, + REG_UFS_MEM_CFG); + } + if (err) return err; @@ -1500,6 +1550,121 @@ static int ufs_mtk_clk_scale_notify(struct ufs_hba *hba, bool scale_up, return 0; } +static int ufs_mtk_get_hba_mac(struct ufs_hba *hba) +{ + return MAX_SUPP_MAC; +} + +static int ufs_mtk_op_runtime_config(struct ufs_hba *hba) +{ + struct ufshcd_mcq_opr_info_t *opr; + int i; + + hba->mcq_opr[OPR_SQD].offset = REG_UFS_MTK_SQD; + hba->mcq_opr[OPR_SQIS].offset = REG_UFS_MTK_SQIS; + hba->mcq_opr[OPR_CQD].offset = REG_UFS_MTK_CQD; + hba->mcq_opr[OPR_CQIS].offset = REG_UFS_MTK_CQIS; + + for (i = 0; i < OPR_MAX; i++) { + opr = &hba->mcq_opr[i]; + opr->stride = REG_UFS_MCQ_STRIDE; + opr->base = hba->mmio_base + opr->offset; + } + + return 0; +} + +static int ufs_mtk_mcq_config_resource(struct ufs_hba *hba) +{ + struct ufs_mtk_host *host = ufshcd_get_variant(hba); + + /* fail mcq initialization if interrupt is not filled properly */ + if (!host->mcq_nr_intr) { + dev_info(hba->dev, "IRQs not ready. MCQ disabled."); + return -EINVAL; + } + + hba->mcq_base = hba->mmio_base + MCQ_QUEUE_OFFSET(hba->mcq_capabilities); + return 0; +} + +static irqreturn_t ufs_mtk_mcq_intr(int irq, void *__intr_info) +{ + struct ufs_mtk_mcq_intr_info *mcq_intr_info = __intr_info; + struct ufs_hba *hba = mcq_intr_info->hba; + struct ufs_hw_queue *hwq; + u32 events; + int qid = mcq_intr_info->qid; + + hwq = &hba->uhq[qid]; + + events = ufshcd_mcq_read_cqis(hba, qid); + if (events) + ufshcd_mcq_write_cqis(hba, events, qid); + + if (events & UFSHCD_MCQ_CQIS_TAIL_ENT_PUSH_STS) + ufshcd_mcq_poll_cqe_lock(hba, hwq); + + return IRQ_HANDLED; +} + +static int ufs_mtk_config_mcq_irq(struct ufs_hba *hba) +{ + struct ufs_mtk_host *host = ufshcd_get_variant(hba); + u32 irq, i; + int ret; + + for (i = 0; i < host->mcq_nr_intr; i++) { + irq = host->mcq_intr_info[i].irq; + if (irq == MTK_MCQ_INVALID_IRQ) { + dev_err(hba->dev, "invalid irq. %d\n", i); + return -ENOPARAM; + } + + host->mcq_intr_info[i].qid = i; + ret = devm_request_irq(hba->dev, irq, ufs_mtk_mcq_intr, 0, UFSHCD, + &host->mcq_intr_info[i]); + + dev_dbg(hba->dev, "request irq %d intr %s\n", irq, ret ? "failed" : ""); + + if (ret) { + dev_err(hba->dev, "Cannot request irq %d\n", ret); + return ret; + } + } + + return 0; +} + +static int ufs_mtk_config_mcq(struct ufs_hba *hba, bool irq) +{ + struct ufs_mtk_host *host = ufshcd_get_variant(hba); + int ret = 0; + + if (!host->mcq_set_intr) { + /* Disable irq option register */ + ufshcd_rmwl(hba, MCQ_INTR_EN_MSK, 0, REG_UFS_MMIO_OPT_CTRL_0); + + if (irq) { + ret = ufs_mtk_config_mcq_irq(hba); + if (ret) + return ret; + } + + host->mcq_set_intr = true; + } + + ufshcd_rmwl(hba, MCQ_AH8, MCQ_AH8, REG_UFS_MMIO_OPT_CTRL_0); + ufshcd_rmwl(hba, MCQ_INTR_EN_MSK, MCQ_MULTI_INTR_EN, REG_UFS_MMIO_OPT_CTRL_0); + + return 0; +} + +static int ufs_mtk_config_esi(struct ufs_hba *hba) +{ + return ufs_mtk_config_mcq(hba, true); +} + /* * struct ufs_hba_mtk_vops - UFS MTK specific variant operations * @@ -1523,6 +1688,11 @@ static const struct ufs_hba_variant_ops ufs_hba_mtk_vops = { .event_notify = ufs_mtk_event_notify, .config_scaling_param = ufs_mtk_config_scaling_param, .clk_scale_notify = ufs_mtk_clk_scale_notify, + /* mcq vops */ + .get_hba_mac = ufs_mtk_get_hba_mac, + .op_runtime_config = ufs_mtk_op_runtime_config, + .mcq_config_resource = ufs_mtk_mcq_config_resource, + .config_esi = ufs_mtk_config_esi, }; /** @@ -1569,7 +1739,7 @@ static int ufs_mtk_probe(struct platform_device *pdev) out: if (err) - dev_info(dev, "probe failed %d\n", err); + dev_err(dev, "probe failed %d\n", err); of_node_put(reset_node); return err; diff --git a/drivers/ufs/host/ufs-mediatek.h b/drivers/ufs/host/ufs-mediatek.h index 2fc6d7b87694..f76e80d91729 100644 --- a/drivers/ufs/host/ufs-mediatek.h +++ b/drivers/ufs/host/ufs-mediatek.h @@ -10,11 +10,27 @@ #include #include +/* + * MCQ define and struct + */ +#define UFSHCD_MAX_Q_NR 8 +#define MTK_MCQ_INVALID_IRQ 0xFFFF + +/* REG_UFS_MMIO_OPT_CTRL_0 160h */ +#define EHS_EN BIT(0) +#define PFM_IMPV BIT(1) +#define MCQ_MULTI_INTR_EN BIT(2) +#define MCQ_CMB_INTR_EN BIT(3) +#define MCQ_AH8 BIT(4) + +#define MCQ_INTR_EN_MSK (MCQ_MULTI_INTR_EN | MCQ_CMB_INTR_EN) + /* * Vendor specific UFSHCI Registers */ #define REG_UFS_XOUFS_CTRL 0x140 #define REG_UFS_REFCLK_CTRL 0x144 +#define REG_UFS_MMIO_OPT_CTRL_0 0x160 #define REG_UFS_EXTREG 0x2100 #define REG_UFS_MPHYCTRL 0x2200 #define REG_UFS_MTK_IP_VER 0x2240 @@ -26,6 +42,13 @@ #define REG_UFS_DEBUG_SEL_B2 0x22D8 #define REG_UFS_DEBUG_SEL_B3 0x22DC +#define REG_UFS_MTK_SQD 0x2800 +#define REG_UFS_MTK_SQIS 0x2814 +#define REG_UFS_MTK_CQD 0x281C +#define REG_UFS_MTK_CQIS 0x2824 + +#define REG_UFS_MCQ_STRIDE 0x30 + /* * Ref-clk control * @@ -136,6 +159,12 @@ struct ufs_mtk_hw_ver { u8 major; }; +struct ufs_mtk_mcq_intr_info { + struct ufs_hba *hba; + u32 irq; + u8 qid; +}; + struct ufs_mtk_host { struct phy *mphy; struct pm_qos_request pm_qos_req; @@ -155,6 +184,10 @@ struct ufs_mtk_host { u16 ref_clk_ungating_wait_us; u16 ref_clk_gating_wait_us; u32 ip_ver; + + bool mcq_set_intr; + int mcq_nr_intr; + struct ufs_mtk_mcq_intr_info mcq_intr_info[UFSHCD_MAX_Q_NR]; }; /* From 2eb415874924cdca73d57ab2e194a16f8bf069e8 Mon Sep 17 00:00:00 2001 From: Stanley Chu Date: Tue, 6 Jun 2023 12:59:19 +0800 Subject: [PATCH 059/114] BACKPORT: scsi: ufs: mcq: Fix the incorrect OCS value for the device command In MCQ mode, when a device command uses a hardware queue shared with other commands, a race condition may occur in the following scenario: 1. A device command is completed in CQx with CQE entry "e". 2. The interrupt handler copies the "cqe" pointer to "hba->dev_cmd.cqe" and completes "hba->dev_cmd.complete". 3. The "ufshcd_wait_for_dev_cmd()" function is awakened and retrieves the OCS value from "hba->dev_cmd.cqe". However, there is a possibility that the CQE entry "e" will be overwritten by newly completed commands in CQx, resulting in an incorrect OCS value being received by "ufshcd_wait_for_dev_cmd()". To avoid this race condition, the OCS value should be immediately copied to the struct "lrb" of the device command. Then "ufshcd_wait_for_dev_cmd()" can retrieve the OCS value from the struct "lrb". Bug: 267974767 Fixes: 57b1c0ef89ac ("scsi: ufs: core: mcq: Add support to allocate multiple queues") Suggested-by: Can Guo Signed-off-by: Stanley Chu Link: https://lore.kernel.org/r/20230610021553.1213-2-powen.kao@mediatek.com Tested-by: Po-Wen Kao Reviewed-by: Bart Van Assche Signed-off-by: Martin K. Petersen Change-Id: I835e435c8a5fffa63b02bd1481f7b41d2a16e706 (cherry picked from commit 0fef6bb730c490fcdc4347dbd21646d3ffe62cf5) [powen: Keep hba->dev_cmd.cqe for KMI freeze] --- drivers/ufs/core/ufshcd.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 25e7f7c2d83b..88e636f850c8 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -3166,7 +3166,7 @@ static int ufshcd_wait_for_dev_cmd(struct ufs_hba *hba, * not trigger any race conditions. */ hba->dev_cmd.complete = NULL; - err = ufshcd_get_tr_ocs(lrbp, hba->dev_cmd.cqe); + err = ufshcd_get_tr_ocs(lrbp, NULL); if (!err) err = ufshcd_dev_cmd_completion(hba, lrbp); } else { @@ -3262,7 +3262,6 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba, goto out; hba->dev_cmd.complete = &wait; - hba->dev_cmd.cqe = NULL; ufshcd_add_query_upiu_trace(hba, UFS_QUERY_SEND, lrbp->ucd_req_ptr); @@ -5520,6 +5519,7 @@ void ufshcd_compl_one_cqe(struct ufs_hba *hba, int task_tag, { struct ufshcd_lrb *lrbp; struct scsi_cmnd *cmd; + enum utp_ocs ocs; lrbp = &hba->lrb[task_tag]; lrbp->compl_time_stamp = ktime_get(); @@ -5538,7 +5538,11 @@ void ufshcd_compl_one_cqe(struct ufs_hba *hba, int task_tag, lrbp->command_type == UTP_CMD_TYPE_UFS_STORAGE) { if (hba->dev_cmd.complete) { trace_android_vh_ufs_compl_command(hba, lrbp); - hba->dev_cmd.cqe = cqe; + if (cqe) { + ocs = le32_to_cpu(cqe->status) & MASK_OCS; + lrbp->utr_descriptor_ptr->header.dword_2 = + cpu_to_le32(ocs); + } ufshcd_add_command_trace(hba, task_tag, UFS_DEV_COMP); complete(hba->dev_cmd.complete); ufshcd_clk_scaling_update_busy(hba); From fcbb015efd3cd706bff51229d0ed6ec9dcac74fe Mon Sep 17 00:00:00 2001 From: Po-Wen Kao Date: Sat, 10 Jun 2023 10:15:52 +0800 Subject: [PATCH 060/114] UPSTREAM: scsi: ufs: core: Remove dedicated hwq for dev command This commit depends on "scsi: ufs: core: mcq: Fix the incorrect OCS value for the device command" which takes care of the OCS value of dev commands in MCQ mode. It is safe to share first hwq for dev command and I/O request here. Bug: 267974767 Tested-by: Po-Wen Kao Signed-off-by: Po-Wen Kao Link: https://lore.kernel.org/r/20230610021553.1213-3-powen.kao@mediatek.com Reviewed-by: Stanley Chu Reviewed-by: Bart Van Assche Signed-off-by: Martin K. Petersen (cherry picked from commit ccb23dc3435a0d9dbc07c5156a530a4aae6c851a) Change-Id: I73f1ad5bec71ac6e9efec1fd5231754be92d1b7c --- drivers/ufs/core/ufs-mcq.c | 14 ++++---------- drivers/ufs/core/ufshcd-priv.h | 1 - drivers/ufs/core/ufshcd.c | 4 ++-- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c index 9258bb085830..64bad535f79f 100644 --- a/drivers/ufs/core/ufs-mcq.c +++ b/drivers/ufs/core/ufs-mcq.c @@ -20,12 +20,10 @@ #define MAX_QUEUE_SUP GENMASK(7, 0) #define UFS_MCQ_MIN_RW_QUEUES 2 #define UFS_MCQ_MIN_READ_QUEUES 0 -#define UFS_MCQ_NUM_DEV_CMD_QUEUES 1 #define UFS_MCQ_MIN_POLL_QUEUES 0 #define QUEUE_EN_OFFSET 31 #define QUEUE_ID_OFFSET 16 -#define MAX_DEV_CMD_ENTRIES 2 #define MCQ_CFG_MAC_MASK GENMASK(16, 8) #define MCQ_QCFG_SIZE 0x40 #define MCQ_ENTRY_SIZE_IN_DWORD 8 @@ -116,8 +114,7 @@ struct ufs_hw_queue *ufshcd_mcq_req_to_hwq(struct ufs_hba *hba, u32 utag = blk_mq_unique_tag(req); u32 hwq = blk_mq_unique_tag_to_hwq(utag); - /* uhq[0] is used to serve device commands */ - return &hba->uhq[hwq + UFSHCD_MCQ_IO_QUEUE_OFFSET]; + return &hba->uhq[hwq]; } /** @@ -161,8 +158,7 @@ static int ufshcd_mcq_config_nr_queues(struct ufs_hba *hba) /* maxq is 0 based value */ hba_maxq = FIELD_GET(MAX_QUEUE_SUP, hba->mcq_capabilities) + 1; - tot_queues = UFS_MCQ_NUM_DEV_CMD_QUEUES + read_queues + poll_queues + - rw_queues; + tot_queues = read_queues + poll_queues + rw_queues; if (hba_maxq < tot_queues) { dev_err(hba->dev, "Total queues (%d) exceeds HC capacity (%d)\n", @@ -170,7 +166,7 @@ static int ufshcd_mcq_config_nr_queues(struct ufs_hba *hba) return -EOPNOTSUPP; } - rem = hba_maxq - UFS_MCQ_NUM_DEV_CMD_QUEUES; + rem = hba_maxq; if (rw_queues) { hba->nr_queues[HCTX_TYPE_DEFAULT] = rw_queues; @@ -196,7 +192,7 @@ static int ufshcd_mcq_config_nr_queues(struct ufs_hba *hba) for (i = 0; i < HCTX_MAX_TYPES; i++) host->nr_hw_queues += hba->nr_queues[i]; - hba->nr_hw_queues = host->nr_hw_queues + UFS_MCQ_NUM_DEV_CMD_QUEUES; + hba->nr_hw_queues = host->nr_hw_queues; return 0; } @@ -458,8 +454,6 @@ int ufshcd_mcq_init(struct ufs_hba *hba) /* The very first HW queue serves device commands */ hba->dev_cmd_queue = &hba->uhq[0]; - /* Give dev_cmd_queue the minimal number of entries */ - hba->dev_cmd_queue->max_entries = MAX_DEV_CMD_ENTRIES; host->host_tagset = 1; return 0; diff --git a/drivers/ufs/core/ufshcd-priv.h b/drivers/ufs/core/ufshcd-priv.h index 2541a52ecb8b..83cf0a47ec14 100644 --- a/drivers/ufs/core/ufshcd-priv.h +++ b/drivers/ufs/core/ufshcd-priv.h @@ -84,7 +84,6 @@ int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag); void ufshcd_release_scsi_cmd(struct ufs_hba *hba, struct ufshcd_lrb *lrbp); -#define UFSHCD_MCQ_IO_QUEUE_OFFSET 1 #define SD_ASCII_STD true #define SD_RAW false int ufshcd_read_string_desc(struct ufs_hba *hba, u8 desc_index, diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 88e636f850c8..1df28ecf6226 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -5596,7 +5596,7 @@ static int ufshcd_poll(struct Scsi_Host *shost, unsigned int queue_num) struct ufs_hw_queue *hwq; if (is_mcq_enabled(hba)) { - hwq = &hba->uhq[queue_num + UFSHCD_MCQ_IO_QUEUE_OFFSET]; + hwq = &hba->uhq[queue_num]; return ufshcd_mcq_poll_cqe_lock(hba, hwq); } @@ -5650,7 +5650,7 @@ static void ufshcd_mcq_compl_pending_transfer(struct ufs_hba *hba, utag = blk_mq_unique_tag(scsi_cmd_to_rq(cmd)); hwq_num = blk_mq_unique_tag_to_hwq(utag); - hwq = &hba->uhq[hwq_num + UFSHCD_MCQ_IO_QUEUE_OFFSET]; + hwq = &hba->uhq[hwq_num]; if (force_compl) { ufshcd_mcq_compl_all_cqes_lock(hba, hwq); From 35a9539d667e455ce7e12dc58bb794fd205f1e9e Mon Sep 17 00:00:00 2001 From: Po-Wen Kao Date: Wed, 14 Jun 2023 17:40:48 +0800 Subject: [PATCH 061/114] ANDROID: GKI: Update symbol list for MediatTek INFO: ABI DIFFERENCES HAVE BEEN DETECTED! INFO: 3 function symbol(s) added 'void ufshcd_mcq_config_mac(struct ufs_hba*, u32)' 'void ufshcd_mcq_make_queues_operational(struct ufs_hba*)' 'u32 ufshcd_mcq_read_cqis(struct ufs_hba*, int) Bug: 267974767 Change-Id: I9fc895406023a9456d13e502b8b7f3b09f352cfd Signed-off-by: Po-Wen Kao --- android/abi_gki_aarch64.stg | 41 ++++++++++++++++++++++++++++++++----- android/abi_gki_aarch64_mtk | 3 +++ 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index f0397208df02..1ed444ebefa5 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -22136,11 +22136,6 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe2cebd77 } -pointer_reference { - id: 0x322509a0 - kind: POINTER - pointee_type_id: 0xe2d4c01c -} pointer_reference { id: 0x3225ac75 kind: POINTER @@ -287863,6 +287858,12 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x3f54a013 } +function { + id: 0x45846d91 + return_type_id: 0xc9082b19 + parameter_id: 0x078316ff + parameter_id: 0x6720d32f +} function { id: 0x45a8a3c4 return_type_id: 0x00c83ba6 @@ -369699,6 +369700,15 @@ elf_symbol { type_id: 0x11ebebf2 full_name: "ufshcd_mcq_config_esi" } +elf_symbol { + id: 0x71dad1b2 + name: "ufshcd_mcq_config_mac" + is_defined: true + symbol_type: FUNCTION + crc: 0xd1787215 + type_id: 0x125cb480 + full_name: "ufshcd_mcq_config_mac" +} elf_symbol { id: 0x051c0489 name: "ufshcd_mcq_enable_esi" @@ -369708,6 +369718,15 @@ elf_symbol { type_id: 0x1178942c full_name: "ufshcd_mcq_enable_esi" } +elf_symbol { + id: 0x562c9a11 + name: "ufshcd_mcq_make_queues_operational" + is_defined: true + symbol_type: FUNCTION + crc: 0x1d22bd73 + type_id: 0x1178942c + full_name: "ufshcd_mcq_make_queues_operational" +} elf_symbol { id: 0x56d1da85 name: "ufshcd_mcq_poll_cqe_lock" @@ -369726,6 +369745,15 @@ elf_symbol { type_id: 0x30f8e5d3 full_name: "ufshcd_mcq_poll_cqe_nolock" } +elf_symbol { + id: 0xaefd3622 + name: "ufshcd_mcq_read_cqis" + is_defined: true + symbol_type: FUNCTION + crc: 0xeafc7b98 + type_id: 0x45846d91 + full_name: "ufshcd_mcq_read_cqis" +} elf_symbol { id: 0x3ecd46f0 name: "ufshcd_mcq_write_cqis" @@ -381809,9 +381837,12 @@ interface { symbol_id: 0xcd6f9634 symbol_id: 0xba7435fd symbol_id: 0xb59c5eaf + symbol_id: 0x71dad1b2 symbol_id: 0x051c0489 + symbol_id: 0x562c9a11 symbol_id: 0x56d1da85 symbol_id: 0xe74af45a + symbol_id: 0xaefd3622 symbol_id: 0x3ecd46f0 symbol_id: 0xde541a7b symbol_id: 0xe6e08555 diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index f3af0c1114ba..3ffc07d77c5e 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -2813,6 +2813,9 @@ ufshcd_init_pwr_dev_param ufshcd_link_recovery ufshcd_make_hba_operational + ufshcd_mcq_config_mac + ufshcd_mcq_make_queues_operational + ufshcd_mcq_read_cqis ufshcd_pltfrm_init ufshcd_query_attr ufshcd_query_descriptor_retry From 39385f756876e878de5cabd8e3d083e5a436bddd Mon Sep 17 00:00:00 2001 From: Zheng Wang Date: Mon, 13 Mar 2023 16:42:20 +0000 Subject: [PATCH 062/114] UPSTREAM: media: rkvdec: fix use after free bug in rkvdec_remove [ Upstream commit 3228cec23b8b29215e18090c6ba635840190993d ] In rkvdec_probe, rkvdec->watchdog_work is bound with rkvdec_watchdog_func. Then rkvdec_vp9_run may be called to start the work. If we remove the module which will call rkvdec_remove to make cleanup, there may be a unfinished work. The possible sequence is as follows, which will cause a typical UAF bug. Fix it by canceling the work before cleanup in rkvdec_remove. CPU0 CPU1 |rkvdec_watchdog_func rkvdec_remove | rkvdec_v4l2_cleanup| v4l2_m2m_release | kfree(m2m_dev); | | | v4l2_m2m_get_curr_priv | m2m_dev->curr_ctx //use Bug: 289003637 Fixes: cd33c830448b ("media: rkvdec: Add the rkvdec driver") Signed-off-by: Zheng Wang Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Sasha Levin (cherry picked from commit 6a17add9c61030683b9c1fc86878f00a2d318a95) Signed-off-by: Lee Jones Change-Id: Ibdf4667315d98ac1cd42545f61e271c291893edd --- drivers/staging/media/rkvdec/rkvdec.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c index 7bab7586918c..82806f198074 100644 --- a/drivers/staging/media/rkvdec/rkvdec.c +++ b/drivers/staging/media/rkvdec/rkvdec.c @@ -1066,6 +1066,8 @@ static int rkvdec_remove(struct platform_device *pdev) { struct rkvdec_dev *rkvdec = platform_get_drvdata(pdev); + cancel_delayed_work_sync(&rkvdec->watchdog_work); + rkvdec_v4l2_cleanup(rkvdec); pm_runtime_disable(&pdev->dev); pm_runtime_dont_use_autosuspend(&pdev->dev); From dd451f19f0e406b909372b233aa36f200a309e36 Mon Sep 17 00:00:00 2001 From: Jisheng Zhang Date: Wed, 24 May 2023 21:13:05 +0800 Subject: [PATCH 063/114] UPSTREAM: arm64: mm: pass original fault address to handle_mm_fault() in PER_VMA_LOCK block When reading the arm64's PER_VMA_LOCK support code, I found a bit difference between arm64 and other arch when calling handle_mm_fault() during VMA lock-based page fault handling: the fault address is masked before passing to handle_mm_fault(). This is also different from the usage in mmap_lock-based handling. I think we need to pass the original fault address to handle_mm_fault() as we did in commit 84c5e23edecd ("arm64: mm: Pass original fault address to handle_mm_fault()"). If we go through the code path further, we can find that the "masked" fault address can cause mismatched fault address between perf sw major/minor page fault sw event and perf page fault sw event: do_page_fault perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, ..., addr) // orig addr handle_mm_fault mm_account_fault perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, ...) // masked addr Bug: 254441685 Fixes: cd7f176aea5f ("arm64/mm: try VMA lock-based page fault handling first") Signed-off-by: Jisheng Zhang Reviewed-by: Suren Baghdasaryan Reviewed-by: Anshuman Khandual Acked-by: Catalin Marinas Link: https://lore.kernel.org/r/20230524131305.2808-1-jszhang@kernel.org Signed-off-by: Will Deacon (cherry picked from commit 0e2aba694866b451db0932a6706683c48379134c) Signed-off-by: Lee Jones Change-Id: Ie7622f6f7c0e9af5436361de85626e0465cef685 --- arch/arm64/mm/fault.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c index f4ab44e058b2..49e08cc145c0 100644 --- a/arch/arm64/mm/fault.c +++ b/arch/arm64/mm/fault.c @@ -626,8 +626,7 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr, vma_end_read(vma); goto lock_mmap; } - fault = handle_mm_fault(vma, addr & PAGE_MASK, - mm_flags | FAULT_FLAG_VMA_LOCK, regs); + fault = handle_mm_fault(vma, addr, mm_flags | FAULT_FLAG_VMA_LOCK, regs); vma_end_read(vma); if (!(fault & VM_FAULT_RETRY)) { From dc8c661b99a07db3eb207494847a3ffc236fc37a Mon Sep 17 00:00:00 2001 From: Venkata Rao Kakani Date: Fri, 23 Jun 2023 14:30:32 +0530 Subject: [PATCH 064/114] ANDROID: ABI: Add to QCOM symbols list Symbols updated to QCOM abi symbol list: fwnode_get_phy_node phylink_expects_phy Bug: 288516849 Change-Id: I3b86d0b864011b118fff9da3c4afb02e62abf4d7 Signed-off-by: Venkata Rao Kakani --- android/abi_gki_aarch64.stg | 25 +++++++++++++++++++++++++ android/abi_gki_aarch64_qcom | 2 ++ 2 files changed, 27 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 1ed444ebefa5..b9a9d2e0704f 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -314717,6 +314717,11 @@ function { parameter_id: 0x3de54f8a parameter_id: 0x358ff5b7 } +function { + id: 0xf10ce2b4 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x3ea2e6c1 +} function { id: 0xf1208847 return_type_id: 0x6d7f5ff6 @@ -341541,6 +341546,15 @@ elf_symbol { type_id: 0x36f1d1fd full_name: "fwnode_get_next_child_node" } +elf_symbol { + id: 0xff713254 + name: "fwnode_get_phy_node" + is_defined: true + symbol_type: FUNCTION + crc: 0xd42ed8cf + type_id: 0x3842a55f + full_name: "fwnode_get_phy_node" +} elf_symbol { id: 0x02e45228 name: "fwnode_gpiod_get_index" @@ -356025,6 +356039,15 @@ elf_symbol { type_id: 0x92acc9b8 full_name: "phylink_ethtool_set_wol" } +elf_symbol { + id: 0x03646fd6 + name: "phylink_expects_phy" + is_defined: true + symbol_type: FUNCTION + crc: 0x4278d56a + type_id: 0xf10ce2b4 + full_name: "phylink_expects_phy" +} elf_symbol { id: 0x2c092465 name: "phylink_fwnode_phy_connect" @@ -378708,6 +378731,7 @@ interface { symbol_id: 0x11780300 symbol_id: 0x183013c2 symbol_id: 0x55d636ec + symbol_id: 0xff713254 symbol_id: 0x02e45228 symbol_id: 0x90df3dac symbol_id: 0x98cceeb9 @@ -380317,6 +380341,7 @@ interface { symbol_id: 0xeab149af symbol_id: 0x0a235dd5 symbol_id: 0xa92902da + symbol_id: 0x03646fd6 symbol_id: 0x2c092465 symbol_id: 0x161b2b54 symbol_id: 0x707a35cb diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index 6a43499fb225..670a8a013bbe 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -1147,6 +1147,7 @@ fwnode_get_name fwnode_get_named_child_node fwnode_get_next_child_node + fwnode_get_phy_node fwnode_handle_get fwnode_handle_put fwnode_property_present @@ -2311,6 +2312,7 @@ phylink_ethtool_set_eee phylink_ethtool_set_pauseparam phylink_ethtool_set_wol + phylink_expects_phy phylink_fwnode_phy_connect phylink_generic_validate phylink_get_eee_err From f63b2625af7cfc4efcbfa1b2af2cb19b58b23065 Mon Sep 17 00:00:00 2001 From: Zheng Wang Date: Mon, 20 Mar 2023 14:29:31 +0800 Subject: [PATCH 065/114] UPSTREAM: usb: gadget: udc: renesas_usb3: Fix use after free bug in renesas_usb3_remove due to race condition [ Upstream commit 2b947f8769be8b8181dc795fd292d3e7120f5204 ] In renesas_usb3_probe, role_work is bound with renesas_usb3_role_work. renesas_usb3_start will be called to start the work. If we remove the driver which will call usbhs_remove, there may be an unfinished work. The possible sequence is as follows: CPU0 CPU1 renesas_usb3_role_work renesas_usb3_remove usb_role_switch_unregister device_unregister kfree(sw) //free usb3->role_sw usb_role_switch_set_role //use usb3->role_sw The usb3->role_sw could be freed under such circumstance and then used in usb_role_switch_set_role. This bug was found by static analysis. And note that removing a driver is a root-only operation, and should never happen in normal case. But the root user may directly remove the device which will also trigger the remove function. Fix it by canceling the work before cleanup in the renesas_usb3_remove. Bug: 289003615 Fixes: 39facfa01c9f ("usb: gadget: udc: renesas_usb3: Add register of usb role switch") Signed-off-by: Zheng Wang Reviewed-by: Yoshihiro Shimoda Link: https://lore.kernel.org/r/20230320062931.505170-1-zyytlz.wz@163.com Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin (cherry picked from commit df2380520926bdbc264cffab0f45da9a21f304c8) Signed-off-by: Lee Jones Change-Id: I79a1dbeba9a90ee5daf94648ef6a32207b283561 --- drivers/usb/gadget/udc/renesas_usb3.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c index 615ba0a6fbee..32c9e369216c 100644 --- a/drivers/usb/gadget/udc/renesas_usb3.c +++ b/drivers/usb/gadget/udc/renesas_usb3.c @@ -2596,6 +2596,7 @@ static int renesas_usb3_remove(struct platform_device *pdev) debugfs_remove_recursive(usb3->dentry); device_remove_file(&pdev->dev, &dev_attr_role); + cancel_work_sync(&usb3->role_work); usb_role_switch_unregister(usb3->role_sw); usb_del_gadget_udc(&usb3->gadget); From b57cdabd550760d0af7d42fc6a483e1ee7e24ffa Mon Sep 17 00:00:00 2001 From: Ulises Mendez Martinez Date: Tue, 27 Jun 2023 18:19:15 +0000 Subject: [PATCH 066/114] ANDROID: Set arch attribute for allmodconfig builds * This sets arch attribute for two builds: * kernel_x86_64_allmodconfig * kernel_arm_allmodconfig Bug: 272164611 Change-Id: Ica02082ef53e1b08523b47b879716e94330fe5c4 Signed-off-by: Ulises Mendez Martinez --- BUILD.bazel | 2 ++ 1 file changed, 2 insertions(+) diff --git a/BUILD.bazel b/BUILD.bazel index 440ac7e610b2..a20ac9aa540e 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -567,6 +567,7 @@ kernel_build( # Hack to actually check the build. # Otherwise, Bazel thinks that there are no output files, and skip building. outs = [".config"], + arch = "x86_64", build_config = "build.config.allmodconfig.x86_64", visibility = ["//visibility:private"], ) @@ -577,6 +578,7 @@ kernel_build( # Hack to actually check the build. # Otherwise, Bazel thinks that there are no output files, and skip building. outs = [".config"], + arch = "arm", build_config = "build.config.allmodconfig.arm", visibility = ["//visibility:private"], ) From 2e2b1f49826e3ea508a25038a957419e329c7fa2 Mon Sep 17 00:00:00 2001 From: John Scheible Date: Thu, 22 Jun 2023 12:09:08 -0700 Subject: [PATCH 067/114] ANDROID: ABI: Update pixel symbol list 3 function symbol(s) added 'unsigned long alloc_iova_fast(struct iova_domain*, unsigned long, unsigned long, bool)' 'void free_iova_fast(struct iova_domain*, unsigned long, unsigned long)' 'int iova_domain_init_rcaches(struct iova_domain*)' Bug: 288454198 Change-Id: Ib0dc3f0f7186eda7279ca3efefb0e41452845ecd Signed-off-by: John Scheible --- android/abi_gki_aarch64.stg | 43 +++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_pixel | 7 ++++++ 2 files changed, 50 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index b9a9d2e0704f..dcc288f39dba 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -287517,6 +287517,14 @@ function { parameter_id: 0x3e10b518 parameter_id: 0xf1a6dfed } +function { + id: 0x3e8d4bea + return_type_id: 0x33756485 + parameter_id: 0x3f84ee3c + parameter_id: 0x33756485 + parameter_id: 0x33756485 + parameter_id: 0x6d7f5ff6 +} function { id: 0x3e902c00 return_type_id: 0x0483e6f8 @@ -294722,6 +294730,11 @@ function { parameter_id: 0x3c0e9e79 parameter_id: 0x38d23361 } +function { + id: 0x9261d8a0 + return_type_id: 0x6720d32f + parameter_id: 0x3f84ee3c +} function { id: 0x92625532 return_type_id: 0x6720d32f @@ -326463,6 +326476,15 @@ elf_symbol { type_id: 0xca4b711f full_name: "alloc_io_pgtable_ops" } +elf_symbol { + id: 0x9cff6ebf + name: "alloc_iova_fast" + is_defined: true + symbol_type: FUNCTION + crc: 0x1565176f + type_id: 0x3e8d4bea + full_name: "alloc_iova_fast" +} elf_symbol { id: 0xcf6df527 name: "alloc_netdev_mqs" @@ -341276,6 +341298,15 @@ elf_symbol { type_id: 0x165a4073 full_name: "free_io_pgtable_ops" } +elf_symbol { + id: 0x998ad938 + name: "free_iova_fast" + is_defined: true + symbol_type: FUNCTION + crc: 0xdd8c10f6 + type_id: 0x1fb862d7 + full_name: "free_iova_fast" +} elf_symbol { id: 0x27e49ce0 name: "free_irq" @@ -346445,6 +346476,15 @@ elf_symbol { type_id: 0x189472bc full_name: "iov_iter_revert" } +elf_symbol { + id: 0x6c6beb07 + name: "iova_domain_init_rcaches" + is_defined: true + symbol_type: FUNCTION + crc: 0x0ff6a3a3 + type_id: 0x9261d8a0 + full_name: "iova_domain_init_rcaches" +} elf_symbol { id: 0x1be0f35f name: "ip6_dst_hoplimit" @@ -377056,6 +377096,7 @@ interface { symbol_id: 0xc8c5af1c symbol_id: 0xdeecf7a4 symbol_id: 0xeba70df6 + symbol_id: 0x9cff6ebf symbol_id: 0xcf6df527 symbol_id: 0x00374dfe symbol_id: 0xb77c96c5 @@ -378701,6 +378742,7 @@ interface { symbol_id: 0x0513219e symbol_id: 0x1b00ff86 symbol_id: 0x9b815cdc + symbol_id: 0x998ad938 symbol_id: 0x27e49ce0 symbol_id: 0xa0e729a5 symbol_id: 0xe330aff9 @@ -379275,6 +379317,7 @@ interface { symbol_id: 0x71726a83 symbol_id: 0xffb394c4 symbol_id: 0x48a6183b + symbol_id: 0x6c6beb07 symbol_id: 0x1be0f35f symbol_id: 0x5a7fbd45 symbol_id: 0x7837fb7f diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index e2e51a93aca6..73ea56df4c25 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -11,6 +11,7 @@ alarm_try_to_cancel alloc_chrdev_region alloc_etherdev_mqs + alloc_iova_fast alloc_netdev_mqs __alloc_pages alloc_pages_exact @@ -770,6 +771,7 @@ frame_vector_create frame_vector_destroy frame_vector_to_pages + free_iova_fast free_irq free_netdev __free_pages @@ -800,11 +802,13 @@ gen_pool_add_owner gen_pool_alloc_algo_owner gen_pool_avail + gen_pool_best_fit gen_pool_create gen_pool_destroy gen_pool_first_fit_align gen_pool_free_owner gen_pool_has_addr + gen_pool_set_algo gen_pool_size get_cpu_device get_cpu_idle_time @@ -921,6 +925,7 @@ inc_zone_page_state inet_csk_get_port init_dummy_netdev + init_iova_domain init_net init_pid_ns __init_rwsem @@ -990,6 +995,7 @@ io_schedule io_schedule_timeout iounmap + iova_domain_init_rcaches ip_compute_csum ip_send_check __irq_alloc_descs @@ -1492,6 +1498,7 @@ ___pskb_trim put_device put_disk + put_iova_domain __put_net put_pid put_sg_io_hdr From dfc69fd81cef1dc7f8e5effece6597366d45b2c0 Mon Sep 17 00:00:00 2001 From: Jaegeuk Kim Date: Wed, 5 Jul 2023 17:19:00 -0700 Subject: [PATCH 068/114] Revert "FROMLIST: f2fs: remove i_xattr_sem to avoid deadlock and fix the original issue" This reverts commit 21061b7d0f47b226b8a2f88165350a38f85df01e. Let's use the upstream version. Bug: 280545073 Bug: 279916414 Signed-off-by: Jaegeuk Kim Change-Id: Idcdc94d6bd6b6272535a49c8639517ef1bddb246 --- fs/f2fs/f2fs.h | 1 + fs/f2fs/super.c | 1 + fs/f2fs/xattr.c | 31 +++++++++++++++++++++++-------- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index deb7f7eb1f93..911bea200217 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -837,6 +837,7 @@ struct f2fs_inode_info { /* avoid racing between foreground op and gc */ struct f2fs_rwsem i_gc_rwsem[2]; + struct f2fs_rwsem i_xattr_sem; /* avoid racing between reading and changing EAs */ int i_extra_isize; /* size of extra space located in i_addr */ kprojid_t i_projid; /* id for project quota */ diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 17b4f1ecabf7..fcd22e2dc17d 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -1396,6 +1396,7 @@ static struct inode *f2fs_alloc_inode(struct super_block *sb) INIT_LIST_HEAD(&fi->gdirty_list); init_f2fs_rwsem(&fi->i_gc_rwsem[READ]); init_f2fs_rwsem(&fi->i_gc_rwsem[WRITE]); + init_f2fs_rwsem(&fi->i_xattr_sem); /* Will be used by directory only */ fi->i_dir_level = F2FS_SB(sb)->dir_level; diff --git a/fs/f2fs/xattr.c b/fs/f2fs/xattr.c index 46b7f0a4c269..dc2e8637189e 100644 --- a/fs/f2fs/xattr.c +++ b/fs/f2fs/xattr.c @@ -432,7 +432,7 @@ static inline int write_all_xattrs(struct inode *inode, __u32 hsize, { struct f2fs_sb_info *sbi = F2FS_I_SB(inode); size_t inline_size = inline_xattr_size(inode); - struct page *in_page = ipage; + struct page *in_page = NULL; void *xattr_addr; void *inline_addr = NULL; struct page *xpage; @@ -445,19 +445,29 @@ static inline int write_all_xattrs(struct inode *inode, __u32 hsize, /* write to inline xattr */ if (inline_size) { - if (!in_page) { + if (ipage) { + inline_addr = inline_xattr_addr(inode, ipage); + } else { in_page = f2fs_get_node_page(sbi, inode->i_ino); if (IS_ERR(in_page)) { f2fs_alloc_nid_failed(sbi, new_nid); return PTR_ERR(in_page); } + inline_addr = inline_xattr_addr(inode, in_page); } - inline_addr = inline_xattr_addr(inode, in_page); - f2fs_wait_on_page_writeback(in_page, NODE, true, true); + f2fs_wait_on_page_writeback(ipage ? ipage : in_page, + NODE, true, true); + /* no need to use xattr node block */ if (hsize <= inline_size) { + err = f2fs_truncate_xattr_node(inode); + f2fs_alloc_nid_failed(sbi, new_nid); + if (err) { + f2fs_put_page(in_page, 1); + return err; + } memcpy(inline_addr, txattr_addr, inline_size); - set_page_dirty(in_page); + set_page_dirty(ipage ? ipage : in_page); goto in_page_out; } } @@ -491,13 +501,12 @@ static inline int write_all_xattrs(struct inode *inode, __u32 hsize, memcpy(xattr_addr, txattr_addr + inline_size, VALID_XATTR_BLOCK_SIZE); if (inline_size) - set_page_dirty(in_page); + set_page_dirty(ipage ? ipage : in_page); set_page_dirty(xpage); f2fs_put_page(xpage, 1); in_page_out: - if (in_page != ipage) - f2fs_put_page(in_page, 1); + f2fs_put_page(in_page, 1); return err; } @@ -518,8 +527,10 @@ int f2fs_getxattr(struct inode *inode, int index, const char *name, if (len > F2FS_NAME_LEN) return -ERANGE; + f2fs_down_read(&F2FS_I(inode)->i_xattr_sem); error = lookup_all_xattrs(inode, ipage, index, len, name, &entry, &base_addr, &base_size, &is_inline); + f2fs_up_read(&F2FS_I(inode)->i_xattr_sem); if (error) return error; @@ -553,7 +564,9 @@ ssize_t f2fs_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size) int error; size_t rest = buffer_size; + f2fs_down_read(&F2FS_I(inode)->i_xattr_sem); error = read_all_xattrs(inode, NULL, &base_addr); + f2fs_up_read(&F2FS_I(inode)->i_xattr_sem); if (error) return error; @@ -781,7 +794,9 @@ int f2fs_setxattr(struct inode *inode, int index, const char *name, f2fs_balance_fs(sbi, true); f2fs_lock_op(sbi); + f2fs_down_write(&F2FS_I(inode)->i_xattr_sem); err = __f2fs_setxattr(inode, index, name, value, size, ipage, flags); + f2fs_up_write(&F2FS_I(inode)->i_xattr_sem); f2fs_unlock_op(sbi); f2fs_update_time(sbi, REQ_TIME); From a3d870148510cf9384fa4f2b06bd802da72967d5 Mon Sep 17 00:00:00 2001 From: wangshuai12 Date: Mon, 3 Jul 2023 14:04:53 +0800 Subject: [PATCH 069/114] ANDROID: GKI: update xiaomi symbol list ABI DIFFERENCES HAVE BEEN DETECTED! 6 function symbol(s) added 'void bio_associate_blkg_from_css(struct bio*, struct cgroup_subsys_state*)' 'void blk_mq_run_hw_queues(struct request_queue*, bool)' 'void blk_stat_disable_accounting(struct request_queue*)' 'struct io_cq* ioc_find_get_icq(struct request_queue*)' 'void* kmem_cache_alloc_node(struct kmem_cache*, gfp_t, int)' Bug: 289749222 Change-Id: Ia51bdf658ce180938890b7ea80f9c060baaef992 Signed-off-by: wangshuai12 --- android/abi_gki_aarch64.stg | 78 ++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_xiaomi | 28 ++++++++++++ 2 files changed, 106 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index dcc288f39dba..85359e3962db 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -279460,6 +279460,12 @@ function { parameter_id: 0x117e2995 parameter_id: 0x6720d32f } +function { + id: 0x155cca9b + return_type_id: 0x48b5725f + parameter_id: 0x15a30023 + parameter_id: 0x2b16c036 +} function { id: 0x156275ac return_type_id: 0x48b5725f @@ -285052,6 +285058,11 @@ function { parameter_id: 0x39c825ca parameter_id: 0x12eaeaa5 } +function { + id: 0x1ea499af + return_type_id: 0x48b5725f + parameter_id: 0x38f320f1 +} function { id: 0x1ea724c3 return_type_id: 0x48b5725f @@ -289482,6 +289493,13 @@ function { parameter_id: 0x6720d32f parameter_id: 0xf435685e } +function { + id: 0x5ef6b6b7 + return_type_id: 0x18bd6530 + parameter_id: 0x2efd5036 + parameter_id: 0xf1a6dfed + parameter_id: 0x6720d32f +} function { id: 0x5f133b10 return_type_id: 0x18a2fb63 @@ -327104,6 +327122,15 @@ elf_symbol { type_id: 0x15f0919b full_name: "bio_associate_blkg" } +elf_symbol { + id: 0xaa6c907e + name: "bio_associate_blkg_from_css" + is_defined: true + symbol_type: FUNCTION + crc: 0x73f8f3ea + type_id: 0x155cca9b + full_name: "bio_associate_blkg_from_css" +} elf_symbol { id: 0xb2553250 name: "bio_chain" @@ -327491,6 +327518,15 @@ elf_symbol { type_id: 0xc97bfe9f full_name: "blk_mq_rq_cpu" } +elf_symbol { + id: 0xff19eaec + name: "blk_mq_run_hw_queues" + is_defined: true + symbol_type: FUNCTION + crc: 0x7400eefe + type_id: 0x137d33fc + full_name: "blk_mq_run_hw_queues" +} elf_symbol { id: 0x49ee3f1e name: "blk_mq_sched_mark_restart_hctx" @@ -327905,6 +327941,15 @@ elf_symbol { type_id: 0x1eabf44d full_name: "blk_start_plug" } +elf_symbol { + id: 0x163b934e + name: "blk_stat_disable_accounting" + is_defined: true + symbol_type: FUNCTION + crc: 0x24fe2120 + type_id: 0x12c8ce83 + full_name: "blk_stat_disable_accounting" +} elf_symbol { id: 0xb78983c5 name: "blk_stat_enable_accounting" @@ -346062,6 +346107,15 @@ elf_symbol { type_id: 0x9823bcf6 full_name: "io_schedule_timeout" } +elf_symbol { + id: 0xfe45d0d9 + name: "ioc_find_get_icq" + is_defined: true + symbol_type: FUNCTION + crc: 0x91ab2f0b + type_id: 0xd9de6af9 + full_name: "ioc_find_get_icq" +} elf_symbol { id: 0xffca97cd name: "ioc_lookup_icq" @@ -347809,6 +347863,15 @@ elf_symbol { type_id: 0x5eef7e83 full_name: "kmem_cache_alloc" } +elf_symbol { + id: 0x86921e4b + name: "kmem_cache_alloc_node" + is_defined: true + symbol_type: FUNCTION + crc: 0xf1e19a13 + type_id: 0x5ef6b6b7 + full_name: "kmem_cache_alloc_node" +} elf_symbol { id: 0x56f23732 name: "kmem_cache_create" @@ -358059,6 +358122,15 @@ elf_symbol { type_id: 0x18d41dd9 full_name: "put_disk" } +elf_symbol { + id: 0x5db8ecdc + name: "put_io_context" + is_defined: true + symbol_type: FUNCTION + crc: 0xc9e0a706 + type_id: 0x1ea499af + full_name: "put_io_context" +} elf_symbol { id: 0x01768311 name: "put_iova_domain" @@ -377166,6 +377238,7 @@ interface { symbol_id: 0x49201db3 symbol_id: 0xacc709b0 symbol_id: 0x2b2698f0 + symbol_id: 0xaa6c907e symbol_id: 0xb2553250 symbol_id: 0xb389e6a5 symbol_id: 0x3a8604de @@ -377209,6 +377282,7 @@ interface { symbol_id: 0x1f81c0c0 symbol_id: 0xcebb0cec symbol_id: 0x27ae2b17 + symbol_id: 0xff19eaec symbol_id: 0x49ee3f1e symbol_id: 0x646a1dc6 symbol_id: 0xc40c1fbe @@ -377255,6 +377329,7 @@ interface { symbol_id: 0x835f3bf3 symbol_id: 0xdc30e4d6 symbol_id: 0xcb1ad79b + symbol_id: 0x163b934e symbol_id: 0xb78983c5 symbol_id: 0xe6192860 symbol_id: 0xf40ec9b3 @@ -379271,6 +379346,7 @@ interface { symbol_id: 0x6b8c216a symbol_id: 0x6f047c6e symbol_id: 0xd67bf9ed + symbol_id: 0xfe45d0d9 symbol_id: 0xffca97cd symbol_id: 0x99224733 symbol_id: 0xa4eabc87 @@ -379465,6 +379541,7 @@ interface { symbol_id: 0xa64fdec4 symbol_id: 0xcbec700e symbol_id: 0x394ce3dd + symbol_id: 0x86921e4b symbol_id: 0x56f23732 symbol_id: 0xa5a4fafa symbol_id: 0xc37ba22c @@ -380604,6 +380681,7 @@ interface { symbol_id: 0x11d4227b symbol_id: 0x71551ba9 symbol_id: 0x435b99c6 + symbol_id: 0x5db8ecdc symbol_id: 0x01768311 symbol_id: 0x1744651d symbol_id: 0x9103dd70 diff --git a/android/abi_gki_aarch64_xiaomi b/android/abi_gki_aarch64_xiaomi index 94a9eb7acd81..111f153fe638 100644 --- a/android/abi_gki_aarch64_xiaomi +++ b/android/abi_gki_aarch64_xiaomi @@ -189,6 +189,34 @@ io_cgrp_subsys_on_dfl_key ioc_lookup_icq bdi_dev_name + blk_mq_run_hw_queues + blkcg_policy_register + elv_register + blkcg_policy_unregister + elv_rb_former_request + elv_rb_latter_request + elevator_alloc + blk_stat_enable_accounting + blkcg_deactivate_policy + blk_stat_disable_accounting + sbitmap_queue_min_shallow_depth + blk_mq_sched_try_merge + elv_bio_merge_ok + elv_rb_find + elv_rb_del + elv_rb_add + elv_rqhash_del + ioc_find_get_icq + put_io_context + blk_mq_sched_try_insert_merge + elv_unregister + __tracepoint_block_rq_insert + elv_rqhash_add + __traceiter_block_rq_insert + kmem_cache_alloc_node + bio_associate_blkg_from_css + kernfs_path_from_node + blkcg_activate_policy #required by metis.ko module __traceiter_android_vh_rwsem_read_wait_start From dfd6ca25177991091af2f320361a1d667612e3c2 Mon Sep 17 00:00:00 2001 From: Jaegeuk Kim Date: Wed, 28 Jun 2023 01:00:56 -0700 Subject: [PATCH 070/114] UPSTREAM: f2fs: fix deadlock in i_xattr_sem and inode page lock Thread #1: [122554.641906][ T92] f2fs_getxattr+0xd4/0x5fc -> waiting for f2fs_down_read(&F2FS_I(inode)->i_xattr_sem); [122554.641927][ T92] __f2fs_get_acl+0x50/0x284 [122554.641948][ T92] f2fs_init_acl+0x84/0x54c [122554.641969][ T92] f2fs_init_inode_metadata+0x460/0x5f0 [122554.641990][ T92] f2fs_add_inline_entry+0x11c/0x350 -> Locked dir->inode_page by f2fs_get_node_page() [122554.642009][ T92] f2fs_do_add_link+0x100/0x1e4 [122554.642025][ T92] f2fs_create+0xf4/0x22c [122554.642047][ T92] vfs_create+0x130/0x1f4 Thread #2: [123996.386358][ T92] __get_node_page+0x8c/0x504 -> waiting for dir->inode_page lock [123996.386383][ T92] read_all_xattrs+0x11c/0x1f4 [123996.386405][ T92] __f2fs_setxattr+0xcc/0x528 [123996.386424][ T92] f2fs_setxattr+0x158/0x1f4 -> f2fs_down_write(&F2FS_I(inode)->i_xattr_sem); [123996.386443][ T92] __f2fs_set_acl+0x328/0x430 [123996.386618][ T92] f2fs_set_acl+0x38/0x50 [123996.386642][ T92] posix_acl_chmod+0xc8/0x1c8 [123996.386669][ T92] f2fs_setattr+0x5e0/0x6bc [123996.386689][ T92] notify_change+0x4d8/0x580 [123996.386717][ T92] chmod_common+0xd8/0x184 [123996.386748][ T92] do_fchmodat+0x60/0x124 [123996.386766][ T92] __arm64_sys_fchmodat+0x28/0x3c Bug: 280545073 Fixes: 27161f13e3c3 "f2fs: avoid race in between read xattr & write xattr" Cc: Signed-off-by: Jaegeuk Kim (cherry picked from commit 82d8a4f642421ece594542e1fabc689dcb094b1a) Change-Id: Iec383216e1887e11c69374d28e4ecdedda133919 --- fs/f2fs/dir.c | 9 ++++++++- fs/f2fs/xattr.c | 6 ++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c index 887e55988450..d635c58cf5a3 100644 --- a/fs/f2fs/dir.c +++ b/fs/f2fs/dir.c @@ -775,8 +775,15 @@ int f2fs_add_dentry(struct inode *dir, const struct f2fs_filename *fname, { int err = -EAGAIN; - if (f2fs_has_inline_dentry(dir)) + if (f2fs_has_inline_dentry(dir)) { + /* + * Should get i_xattr_sem to keep the lock order: + * i_xattr_sem -> inode_page lock used by f2fs_setxattr. + */ + f2fs_down_read(&F2FS_I(dir)->i_xattr_sem); err = f2fs_add_inline_entry(dir, fname, inode, ino, mode); + f2fs_up_read(&F2FS_I(dir)->i_xattr_sem); + } if (err == -EAGAIN) err = f2fs_add_regular_entry(dir, fname, inode, ino, mode); diff --git a/fs/f2fs/xattr.c b/fs/f2fs/xattr.c index dc2e8637189e..db3b641f2158 100644 --- a/fs/f2fs/xattr.c +++ b/fs/f2fs/xattr.c @@ -527,10 +527,12 @@ int f2fs_getxattr(struct inode *inode, int index, const char *name, if (len > F2FS_NAME_LEN) return -ERANGE; - f2fs_down_read(&F2FS_I(inode)->i_xattr_sem); + if (!ipage) + f2fs_down_read(&F2FS_I(inode)->i_xattr_sem); error = lookup_all_xattrs(inode, ipage, index, len, name, &entry, &base_addr, &base_size, &is_inline); - f2fs_up_read(&F2FS_I(inode)->i_xattr_sem); + if (!ipage) + f2fs_up_read(&F2FS_I(inode)->i_xattr_sem); if (error) return error; From dde9b1794ccc52552574d46140eedad8a7e8ddc0 Mon Sep 17 00:00:00 2001 From: "rong.wu" Date: Wed, 5 Jul 2023 16:48:47 +0800 Subject: [PATCH 071/114] ANDROID: update symbol for unisoc whitelist Add symbols for unisoc kernel6.1 driver 12 function symbol(s) added 'int devm_extcon_register_notifier_all(struct device*, struct extcon_dev*, struct notifier_block*)' 'void orderly_poweroff(bool)' 'void typec_altmode_attention(struct typec_altmode*, u32)' 'int typec_altmode_notify(struct typec_altmode*, unsigned long, void*)' 'void typec_altmode_update_active(struct typec_altmode*, bool)' 'int typec_altmode_vdm(struct typec_altmode*, u32, const u32*, int)' 'int typec_find_power_role(const char*)' 'struct typec_altmode* typec_match_altmode(struct typec_altmode**, size_t, u16, u8)' 'struct typec_altmode* typec_partner_register_altmode(struct typec_partner*, const struct typec_altmode_desc*)' 'struct typec_altmode* typec_port_register_altmode(struct typec_port*, const struct typec_altmode_desc*)' 'int typec_set_mode(struct typec_port*, int)' 'void typec_unregister_altmode(struct typec_altmode*)' Bug: 289971968 Change-Id: Ieeaee083d5537fe7b71796b6fb1a212510de2c11 Signed-off-by: rong.wu --- android/abi_gki_aarch64.stg | 168 +++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_unisoc | 18 ++++ 2 files changed, 186 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 85359e3962db..77a3e8573486 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -1911,6 +1911,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x36f1d1fd } +pointer_reference { + id: 0x072e5f93 + kind: POINTER + pointee_type_id: 0x36f998d3 +} pointer_reference { id: 0x0742e5b4 kind: POINTER @@ -275483,6 +275488,11 @@ function { parameter_id: 0x3b04bead parameter_id: 0xf435685e } +function { + id: 0x0bc7866e + return_type_id: 0x48b5725f + parameter_id: 0x6d7f5ff6 +} function { id: 0x0bdc9e9d return_type_id: 0x48b5725f @@ -283482,6 +283492,12 @@ function { parameter_id: 0x33756485 parameter_id: 0x33756485 } +function { + id: 0x1c93cad8 + return_type_id: 0x48b5725f + parameter_id: 0x36f998d3 + parameter_id: 0x6d7f5ff6 +} function { id: 0x1c941374 return_type_id: 0x2060db23 @@ -283966,6 +283982,11 @@ function { parameter_id: 0x35c3dd06 parameter_id: 0x335d253d } +function { + id: 0x1d2637a7 + return_type_id: 0x48b5725f + parameter_id: 0x36f998d3 +} function { id: 0x1d27ccfe return_type_id: 0x48b5725f @@ -308146,6 +308167,13 @@ function { parameter_id: 0x054f691a parameter_id: 0x6720d32f } +function { + id: 0x9d50188a + return_type_id: 0x6720d32f + parameter_id: 0x0258f96e + parameter_id: 0x100a15ee + parameter_id: 0x1bb6a471 +} function { id: 0x9d51e53b return_type_id: 0x6720d32f @@ -313762,6 +313790,14 @@ function { parameter_id: 0x4585663f parameter_id: 0x1bf16028 } +function { + id: 0xd001e6e1 + return_type_id: 0x36f998d3 + parameter_id: 0x072e5f93 + parameter_id: 0xf435685e + parameter_id: 0x914dbfdc + parameter_id: 0x295c7202 +} function { id: 0xd015e7bc return_type_id: 0x0ae4a2c7 @@ -313891,6 +313927,12 @@ function { id: 0xd6c91a51 return_type_id: 0x02eb105a } +function { + id: 0xd6e94dc1 + return_type_id: 0x36f998d3 + parameter_id: 0x105c8027 + parameter_id: 0x300fdc99 +} function { id: 0xd742e545 return_type_id: 0x26ad5dc1 @@ -314137,6 +314179,12 @@ function { parameter_id: 0x4585663f parameter_id: 0x4585663f } +function { + id: 0xdf267053 + return_type_id: 0x36f998d3 + parameter_id: 0x3760766d + parameter_id: 0x300fdc99 +} function { id: 0xdf475327 return_type_id: 0x030b9acf @@ -334008,6 +334056,15 @@ elf_symbol { type_id: 0x9d47faa0 full_name: "devm_extcon_register_notifier" } +elf_symbol { + id: 0xf4b697c0 + name: "devm_extcon_register_notifier_all" + is_defined: true + symbol_type: FUNCTION + crc: 0xa0b271d0 + type_id: 0x9d50188a + full_name: "devm_extcon_register_notifier_all" +} elf_symbol { id: 0x9218e37d name: "devm_free_irq" @@ -353943,6 +354000,15 @@ elf_symbol { type_id: 0x91296bda full_name: "open_candev" } +elf_symbol { + id: 0x67bce5b1 + name: "orderly_poweroff" + is_defined: true + symbol_type: FUNCTION + crc: 0x56256e8a + type_id: 0x0bc7866e + full_name: "orderly_poweroff" +} elf_symbol { id: 0x57ecab02 name: "out_of_line_wait_on_bit" @@ -369115,6 +369181,42 @@ elf_symbol { type_id: 0xc564dee2 full_name: "tty_write_room" } +elf_symbol { + id: 0xfb5efe2e + name: "typec_altmode_attention" + is_defined: true + symbol_type: FUNCTION + crc: 0x398e7f4f + type_id: 0x1e02170b + full_name: "typec_altmode_attention" +} +elf_symbol { + id: 0x58687602 + name: "typec_altmode_notify" + is_defined: true + symbol_type: FUNCTION + crc: 0xabc1a359 + type_id: 0x90f57fd0 + full_name: "typec_altmode_notify" +} +elf_symbol { + id: 0xe7fb597f + name: "typec_altmode_update_active" + is_defined: true + symbol_type: FUNCTION + crc: 0xa9986484 + type_id: 0x1c93cad8 + full_name: "typec_altmode_update_active" +} +elf_symbol { + id: 0xe6cbb47e + name: "typec_altmode_vdm" + is_defined: true + symbol_type: FUNCTION + crc: 0xe01054ea + type_id: 0x93177804 + full_name: "typec_altmode_vdm" +} elf_symbol { id: 0x0d23e13a name: "typec_find_port_data_role" @@ -369133,6 +369235,15 @@ elf_symbol { type_id: 0x9204ce69 full_name: "typec_find_port_power_role" } +elf_symbol { + id: 0xe9d634b5 + name: "typec_find_power_role" + is_defined: true + symbol_type: FUNCTION + crc: 0x2d1e301d + type_id: 0x9204ce69 + full_name: "typec_find_power_role" +} elf_symbol { id: 0x84b20708 name: "typec_get_drvdata" @@ -369142,6 +369253,15 @@ elf_symbol { type_id: 0x5b4eac6a full_name: "typec_get_drvdata" } +elf_symbol { + id: 0xb8c4fc82 + name: "typec_match_altmode" + is_defined: true + symbol_type: FUNCTION + crc: 0x3fa48e72 + type_id: 0xd001e6e1 + full_name: "typec_match_altmode" +} elf_symbol { id: 0x8fafe0a6 name: "typec_mux_get_drvdata" @@ -369187,6 +369307,15 @@ elf_symbol { type_id: 0x1caf35fa full_name: "typec_mux_unregister" } +elf_symbol { + id: 0x6dffcd52 + name: "typec_partner_register_altmode" + is_defined: true + symbol_type: FUNCTION + crc: 0x853b52c9 + type_id: 0xd6e94dc1 + full_name: "typec_partner_register_altmode" +} elf_symbol { id: 0xe9bfa224 name: "typec_partner_set_identity" @@ -369214,6 +369343,15 @@ elf_symbol { type_id: 0x163dd09d full_name: "typec_partner_set_svdm_version" } +elf_symbol { + id: 0x4fe4e1e0 + name: "typec_port_register_altmode" + is_defined: true + symbol_type: FUNCTION + crc: 0x545d0306 + type_id: 0xdf267053 + full_name: "typec_port_register_altmode" +} elf_symbol { id: 0x22d09ebb name: "typec_register_partner" @@ -369241,6 +369379,15 @@ elf_symbol { type_id: 0x1e585388 full_name: "typec_set_data_role" } +elf_symbol { + id: 0x7e6ad5ea + name: "typec_set_mode" + is_defined: true + symbol_type: FUNCTION + crc: 0x8519551e + type_id: 0x91c47df8 + full_name: "typec_set_mode" +} elf_symbol { id: 0xfb60a10e name: "typec_set_orientation" @@ -369304,6 +369451,15 @@ elf_symbol { type_id: 0x1197e2e5 full_name: "typec_switch_unregister" } +elf_symbol { + id: 0xcbaf28c3 + name: "typec_unregister_altmode" + is_defined: true + symbol_type: FUNCTION + crc: 0x308ea05e + type_id: 0x1d2637a7 + full_name: "typec_unregister_altmode" +} elf_symbol { id: 0x098b2c4d name: "typec_unregister_partner" @@ -378004,6 +378160,7 @@ interface { symbol_id: 0xbcab4e4a symbol_id: 0xa77979a2 symbol_id: 0x56724950 + symbol_id: 0xf4b697c0 symbol_id: 0x9218e37d symbol_id: 0xc8de14e8 symbol_id: 0xaf5de696 @@ -380217,6 +380374,7 @@ interface { symbol_id: 0xd9c8585e symbol_id: 0xa50d59b7 symbol_id: 0x224cb6b2 + symbol_id: 0x67bce5b1 symbol_id: 0x57ecab02 symbol_id: 0x27d0c7b6 symbol_id: 0x28b33064 @@ -381903,20 +382061,29 @@ interface { symbol_id: 0x6590f3a5 symbol_id: 0x8e95f895 symbol_id: 0x30438a62 + symbol_id: 0xfb5efe2e + symbol_id: 0x58687602 + symbol_id: 0xe7fb597f + symbol_id: 0xe6cbb47e symbol_id: 0x0d23e13a symbol_id: 0xd02d0c21 + symbol_id: 0xe9d634b5 symbol_id: 0x84b20708 + symbol_id: 0xb8c4fc82 symbol_id: 0x8fafe0a6 symbol_id: 0x6d4f7368 symbol_id: 0x29215b38 symbol_id: 0x1ee037b1 symbol_id: 0x13f409fa + symbol_id: 0x6dffcd52 symbol_id: 0xe9bfa224 symbol_id: 0x0df14bce symbol_id: 0xd6fc8732 + symbol_id: 0x4fe4e1e0 symbol_id: 0x22d09ebb symbol_id: 0xad69345e symbol_id: 0x381c401c + symbol_id: 0x7e6ad5ea symbol_id: 0xfb60a10e symbol_id: 0xc632b16e symbol_id: 0xe95b649e @@ -381924,6 +382091,7 @@ interface { symbol_id: 0xaab0b041 symbol_id: 0x5800606d symbol_id: 0xae69b1ad + symbol_id: 0xcbaf28c3 symbol_id: 0x098b2c4d symbol_id: 0x008276ec symbol_id: 0xe9c62c61 diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc index 78d04400ec09..6696e0016146 100644 --- a/android/abi_gki_aarch64_unisoc +++ b/android/abi_gki_aarch64_unisoc @@ -1453,6 +1453,9 @@ power_supply_put power_supply_temp2resist_simple +# required by sc27xx_pd.ko + devm_extcon_register_notifier_all + # required by sc27xx_typec.ko devm_extcon_dev_allocate devm_extcon_dev_register @@ -1552,6 +1555,9 @@ kthread_queue_work kthread_worker_fn +# required by sprd-charger-manager.ko + orderly_poweroff + # required by sprd-dma.ko dma_async_device_register dma_async_device_unregister @@ -1660,6 +1666,18 @@ dev_pm_opp_add update_devfreq +# required by sprd_tcpm.ko + typec_altmode_attention + typec_altmode_notify + typec_altmode_update_active + typec_altmode_vdm + typec_find_power_role + typec_match_altmode + typec_partner_register_altmode + typec_port_register_altmode + typec_set_mode + typec_unregister_altmode + # required by sprd_thermal_ctl.ko devfreq_cooling_em_register From 711f5d5bfe41fb50fb29c1dce2ee2e28dffefb68 Mon Sep 17 00:00:00 2001 From: Di Shen Date: Thu, 6 Jul 2023 15:19:21 +0800 Subject: [PATCH 072/114] ANDROID: update unisoc symbol list 2 function symbol(s) added 'struct thermal_zone_device* thermal_zone_device_register_with_trips(const char*, struct thermal_trip*, int, int, void*, struct thermal_zone_device_ops*, struct thermal_zone_params*, int, int)' 'int thermal_zone_unbind_cooling_device(struct thermal_zone_device*, int, struct thermal_cooling_device*)' Bug: 290155471 Signed-off-by: Di Shen Change-Id: I393758dcbe86897d6c7e9923ebccffd00ebc2d34 --- android/abi_gki_aarch64.stg | 40 ++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_unisoc | 10 +++++++++ 2 files changed, 50 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 77a3e8573486..a4be53638443 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -297625,6 +297625,13 @@ function { parameter_id: 0x6720d32f parameter_id: 0x13580d6c } +function { + id: 0x95a406a6 + return_type_id: 0x6720d32f + parameter_id: 0x26e55184 + parameter_id: 0x6720d32f + parameter_id: 0x04ca9246 +} function { id: 0x95a45e65 return_type_id: 0xb3e7bac9 @@ -315072,6 +315079,19 @@ function { return_type_id: 0x6d7f5ff6 parameter_id: 0x31fe2b41 } +function { + id: 0xf2e4f0d1 + return_type_id: 0x26e55184 + parameter_id: 0x3e10b518 + parameter_id: 0x0b4ebfc7 + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x28b7a3b7 + parameter_id: 0x043574da + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f +} function { id: 0xf2ee299f return_type_id: 0x6d7f5ff6 @@ -367786,6 +367806,15 @@ elf_symbol { type_id: 0xf354bbbc full_name: "thermal_zone_device_register" } +elf_symbol { + id: 0xed549fd4 + name: "thermal_zone_device_register_with_trips" + is_defined: true + symbol_type: FUNCTION + crc: 0xfcd9aad1 + type_id: 0xf2e4f0d1 + full_name: "thermal_zone_device_register_with_trips" +} elf_symbol { id: 0x73954c59 name: "thermal_zone_device_unregister" @@ -367822,6 +367851,15 @@ elf_symbol { type_id: 0xf2d19814 full_name: "thermal_zone_get_zone_by_name" } +elf_symbol { + id: 0x61ab1273 + name: "thermal_zone_unbind_cooling_device" + is_defined: true + symbol_type: FUNCTION + crc: 0x13f7391c + type_id: 0x95a406a6 + full_name: "thermal_zone_unbind_cooling_device" +} elf_symbol { id: 0x68e98442 name: "thread_group_cputime_adjusted" @@ -381906,10 +381944,12 @@ interface { symbol_id: 0x96242237 symbol_id: 0x571b278c symbol_id: 0x3272fe14 + symbol_id: 0xed549fd4 symbol_id: 0x73954c59 symbol_id: 0x0f9699eb symbol_id: 0x66782435 symbol_id: 0x793a755b + symbol_id: 0x61ab1273 symbol_id: 0x68e98442 symbol_id: 0x1cf36c3c symbol_id: 0x9fc8421c diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc index 6696e0016146..7b64ec3d7265 100644 --- a/android/abi_gki_aarch64_unisoc +++ b/android/abi_gki_aarch64_unisoc @@ -1679,7 +1679,16 @@ typec_unregister_altmode # required by sprd_thermal_ctl.ko + cpufreq_quick_get_max devfreq_cooling_em_register + devfreq_cooling_unregister + +# required by sprd_soc_thm.ko + thermal_of_zone_unregister + thermal_zone_bind_cooling_device + thermal_zone_device_register_with_trips + thermal_zone_device_update + thermal_zone_unbind_cooling_device # required by sprd_hwspinlock.ko devm_hwspin_lock_register @@ -1826,6 +1835,7 @@ sk_stop_timer sock_recvmsg sock_rfree + strcasecmp strchr strrchr sysctl_vals From d5feaf81637f4082804960a92039c5628ada117c Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Mon, 27 Mar 2023 21:15:05 -0700 Subject: [PATCH 073/114] UPSTREAM: fsverity: explicitly check for buffer overflow in build_merkle_tree() The new Merkle tree construction algorithm is a bit fragile in that it may overflow the 'root_hash' array if the tree actually generated does not match the calculated tree parameters. This should never happen unless there is a filesystem bug that allows the file size to change despite deny_write_access(), or a bug in the Merkle tree logic itself. Regardless, it's fairly easy to check for buffer overflow here, so let's do so. This is a robustness improvement only; this case is not currently known to be reachable. I've added a Fixes tag anyway, since I recommend that this be included in kernels that have the mentioned commit. Fixes: 56124d6c87fd ("fsverity: support enabling with tree block size < PAGE_SIZE") Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20230328041505.110162-1-ebiggers@kernel.org Signed-off-by: Eric Biggers (cherry picked from commit 39049b69ec9fc125fa1f314165dcc86f72cb72ec) Change-Id: I248fd8686a806f0099bed1ac83d52362af3e194e --- fs/verity/enable.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/fs/verity/enable.c b/fs/verity/enable.c index 3018f6d8403a..94c2bebfb756 100644 --- a/fs/verity/enable.c +++ b/fs/verity/enable.c @@ -14,6 +14,7 @@ struct block_buffer { u32 filled; + bool is_root_hash; u8 *data; }; @@ -25,6 +26,14 @@ static int hash_one_block(struct inode *inode, struct block_buffer *next = cur + 1; int err; + /* + * Safety check to prevent a buffer overflow in case of a filesystem bug + * that allows the file size to change despite deny_write_access(), or a + * bug in the Merkle tree logic itself + */ + if (WARN_ON_ONCE(next->is_root_hash && next->filled != 0)) + return -EINVAL; + /* Zero-pad the block if it's shorter than the block size. */ memset(&cur->data[cur->filled], 0, params->block_size - cur->filled); @@ -98,6 +107,7 @@ static int build_merkle_tree(struct file *filp, } } buffers[num_levels].data = root_hash; + buffers[num_levels].is_root_hash = true; BUILD_BUG_ON(sizeof(level_offset) != sizeof(params->level_start)); memcpy(level_offset, params->level_start, sizeof(level_offset)); From 8ecaef4d4bf8cf4810d7c5b7a355f28a6bf22a20 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Thu, 6 Apr 2023 14:31:11 -0700 Subject: [PATCH 074/114] UPSTREAM: fsverity: reject FS_IOC_ENABLE_VERITY on mode 3 fds Commit 56124d6c87fd ("fsverity: support enabling with tree block size < PAGE_SIZE") changed FS_IOC_ENABLE_VERITY to use __kernel_read() to read the file's data, instead of direct pagecache accesses. An unintended consequence of this is that the 'WARN_ON_ONCE(!(file->f_mode & FMODE_READ))' in __kernel_read() became reachable by fuzz tests. This happens if FS_IOC_ENABLE_VERITY is called on a fd opened with access mode 3, which means "ioctl access only". Arguably, FS_IOC_ENABLE_VERITY should work on ioctl-only fds. But ioctl-only fds are a weird Linux extension that is rarely used and that few people even know about. (The documentation for FS_IOC_ENABLE_VERITY even specifically says it requires O_RDONLY.) It's probably not worthwhile to make the ioctl internally open a new fd just to handle this case. Thus, just reject the ioctl on such fds for now. Fixes: 56124d6c87fd ("fsverity: support enabling with tree block size < PAGE_SIZE") Reported-by: syzbot+51177e4144d764827c45@syzkaller.appspotmail.com Link: https://syzkaller.appspot.com/bug?id=2281afcbbfa8fdb92f9887479cc0e4180f1c6b28 Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20230406215106.235829-1-ebiggers@kernel.org Reviewed-by: Christoph Hellwig Reviewed-by: Christian Brauner Signed-off-by: Eric Biggers (cherry picked from commit 04839139213cf60d4c5fc792214a08830e294ff8) Change-Id: I3043d7295d59c05f487c05258cb6bb0113357c6e --- fs/verity/enable.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fs/verity/enable.c b/fs/verity/enable.c index 94c2bebfb756..6e31d512d76a 100644 --- a/fs/verity/enable.c +++ b/fs/verity/enable.c @@ -358,6 +358,13 @@ int fsverity_ioctl_enable(struct file *filp, const void __user *uarg) err = file_permission(filp, MAY_WRITE); if (err) return err; + /* + * __kernel_read() is used while building the Merkle tree. So, we can't + * allow file descriptors that were opened for ioctl access only, using + * the special nonstandard access mode 3. O_RDONLY only, please! + */ + if (!(filp->f_mode & FMODE_READ)) + return -EBADF; if (IS_APPEND(inode)) return -EPERM; From c480e4e57628dd12af473b6b2ce85f8a26daa841 Mon Sep 17 00:00:00 2001 From: Chaitanya Pratapa Date: Wed, 5 Jul 2023 14:25:42 -0700 Subject: [PATCH 075/114] ANDROID: abi_gki_aarch64_qcom: Update symbol list Symbols added: gic_nonsecure_priorities iommu_map_atomic __traceiter_android_vh_check_hibernation_swap __traceiter_android_vh_free_task __traceiter_android_vh_ignore_dmabuf_vmap_bounds __traceiter_android_vh_init_aes_encrypt __tracepoint_android_vh_check_hibernation_swap __tracepoint_android_vh_free_task __tracepoint_android_vh_ignore_dmabuf_vmap_bounds __tracepoint_android_vh_init_aes_encrypt Bug: 290105632 Change-Id: Idd163544f3349e0a6f47ac97e9d62c73742f1a8a Signed-off-by: Chaitanya Pratapa --- android/abi_gki_aarch64.stg | 10 ++++++++++ android/abi_gki_aarch64_qcom | 19 ++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index a4be53638443..5f9d5ed49ae3 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -346481,6 +346481,15 @@ elf_symbol { type_id: 0x96c4a3ba full_name: "iommu_map" } +elf_symbol { + id: 0x3d770021 + name: "iommu_map_atomic" + is_defined: true + symbol_type: FUNCTION + crc: 0xf6ea81c3 + type_id: 0x96c4a3ba + full_name: "iommu_map_atomic" +} elf_symbol { id: 0x21c33dfe name: "iommu_map_sg" @@ -379574,6 +379583,7 @@ interface { symbol_id: 0x119c23e5 symbol_id: 0x9aea043a symbol_id: 0xbfb0ba46 + symbol_id: 0x3d770021 symbol_id: 0x21c33dfe symbol_id: 0x6c972a39 symbol_id: 0x5334a8b4 diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index 670a8a013bbe..fccc16537cf7 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -1235,10 +1235,10 @@ gh_rm_notifier_unregister gh_rm_register_platform_ops gh_rm_unregister_platform_ops + gic_nonsecure_priorities gic_v3_cpu_init gic_v3_dist_init gic_v3_dist_wait_for_rwp - gic_nonsecure_priorities gov_attr_set_init gov_attr_set_put governor_sysfs_ops @@ -1542,6 +1542,7 @@ iommu_group_set_iommudata iommu_iova_to_phys iommu_map + iommu_map_atomic iommu_map_sg iommu_present iommu_put_resv_regions @@ -3337,12 +3338,12 @@ __traceiter_android_vh_binder_set_priority __traceiter_android_vh_binder_wakeup_ilocked __traceiter_android_vh_build_sched_domains + __traceiter_android_vh_check_hibernation_swap __traceiter_android_vh_check_uninterrupt_tasks __traceiter_android_vh_check_uninterrupt_tasks_done __traceiter_android_vh_cpufreq_fast_switch __traceiter_android_vh_cpufreq_resolve_freq __traceiter_android_vh_cpufreq_target - __traceiter_android_vh_check_hibernation_swap __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit __traceiter_android_vh_cpuidle_psci_enter @@ -3350,20 +3351,20 @@ __traceiter_android_vh_disable_thermal_cooling_stats __traceiter_android_vh_do_wake_up_sync __traceiter_android_vh_dump_throttled_rt_tasks - __traceiter_android_vh_free_task __traceiter_android_vh_encrypt_page + __traceiter_android_vh_free_task __traceiter_android_vh_ftrace_dump_buffer __traceiter_android_vh_ftrace_format_check __traceiter_android_vh_ftrace_oops_enter __traceiter_android_vh_ftrace_oops_exit __traceiter_android_vh_ftrace_size_check - __traceiter_android_vh_ignore_dmabuf_vmap_bounds __traceiter_android_vh_gic_v3_suspend + __traceiter_android_vh_ignore_dmabuf_vmap_bounds + __traceiter_android_vh_init_aes_encrypt __traceiter_android_vh_ipi_stop __traceiter_android_vh_jiffies_update __traceiter_android_vh_kswapd_per_node __traceiter_android_vh_mpam_set - __traceiter_android_vh_init_aes_encrypt __traceiter_android_vh_post_image_save __traceiter_android_vh_printk_hotplug __traceiter_android_vh_rproc_recovery @@ -3480,12 +3481,12 @@ __tracepoint_android_vh_binder_set_priority __tracepoint_android_vh_binder_wakeup_ilocked __tracepoint_android_vh_build_sched_domains + __tracepoint_android_vh_check_hibernation_swap __tracepoint_android_vh_check_uninterrupt_tasks __tracepoint_android_vh_check_uninterrupt_tasks_done __tracepoint_android_vh_cpufreq_fast_switch __tracepoint_android_vh_cpufreq_resolve_freq __tracepoint_android_vh_cpufreq_target - __tracepoint_android_vh_check_hibernation_swap __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit __tracepoint_android_vh_cpuidle_psci_enter @@ -3493,20 +3494,20 @@ __tracepoint_android_vh_disable_thermal_cooling_stats __tracepoint_android_vh_do_wake_up_sync __tracepoint_android_vh_dump_throttled_rt_tasks - __tracepoint_android_vh_free_task __tracepoint_android_vh_encrypt_page + __tracepoint_android_vh_free_task __tracepoint_android_vh_ftrace_dump_buffer __tracepoint_android_vh_ftrace_format_check __tracepoint_android_vh_ftrace_oops_enter __tracepoint_android_vh_ftrace_oops_exit __tracepoint_android_vh_ftrace_size_check - __tracepoint_android_vh_ignore_dmabuf_vmap_bounds __tracepoint_android_vh_gic_v3_suspend + __tracepoint_android_vh_ignore_dmabuf_vmap_bounds + __tracepoint_android_vh_init_aes_encrypt __tracepoint_android_vh_ipi_stop __tracepoint_android_vh_jiffies_update __tracepoint_android_vh_kswapd_per_node __tracepoint_android_vh_mpam_set - __tracepoint_android_vh_init_aes_encrypt __tracepoint_android_vh_post_image_save __tracepoint_android_vh_printk_hotplug __tracepoint_android_vh_rproc_recovery From fc9c1ccbbf91b4625ba15a24d306327ce85256d0 Mon Sep 17 00:00:00 2001 From: Shreyas K K Date: Mon, 3 Jul 2023 19:37:06 +0530 Subject: [PATCH 076/114] ANDROID: abi_gki_aarch64_qcom: Add drm_plane_from_index and drm_gem_prime_export In qualcomm display drivers, we need to call this function to interface with the drm drivers. Add it to the symbol list. Leaf changes summary: 1 artifact changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 2 function symbol(s) added 'struct dma_buf* drm_gem_prime_export(struct drm_gem_object*, int)' 'struct drm_plane* drm_plane_from_index(struct drm_device*, int)' Bug: 289882890 Change-Id: Ie93e84725eb58337f7c96b277a597c96a80b4940 Signed-off-by: Shreyas K K --- android/abi_gki_aarch64.stg | 16 ++++++++++++++++ android/abi_gki_aarch64_qcom | 2 ++ 2 files changed, 18 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 5f9d5ed49ae3..af3f38536c95 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -316124,6 +316124,12 @@ function { parameter_id: 0x12c0ba43 parameter_id: 0x3f063da2 } +function { + id: 0xfee76c7c + return_type_id: 0x1b2ca025 + parameter_id: 0x3b04bead + parameter_id: 0x6720d32f +} function { id: 0xfeedb339 return_type_id: 0x6d7f5ff6 @@ -339683,6 +339689,15 @@ elf_symbol { type_id: 0x1653799a full_name: "drm_plane_enable_fb_damage_clips" } +elf_symbol { + id: 0xf06cd4b3 + name: "drm_plane_from_index" + is_defined: true + symbol_type: FUNCTION + crc: 0x1555a37a + type_id: 0xfee76c7c + full_name: "drm_plane_from_index" +} elf_symbol { id: 0x8984b2e1 name: "drm_poll" @@ -378828,6 +378843,7 @@ interface { symbol_id: 0xd08fdb4b symbol_id: 0x9082bb51 symbol_id: 0x87ced39a + symbol_id: 0xf06cd4b3 symbol_id: 0x8984b2e1 symbol_id: 0x22bf134d symbol_id: 0xee902d0d diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index fccc16537cf7..df8f0db3cc5c 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -951,6 +951,7 @@ drm_gem_object_init drm_gem_object_lookup drm_gem_object_release + drm_gem_prime_export drm_gem_prime_fd_to_handle drm_gem_prime_handle_to_fd drm_gem_private_object_init @@ -1018,6 +1019,7 @@ drm_panel_remove drm_plane_cleanup drm_plane_create_rotation_property + drm_plane_from_index drm_poll drm_prime_gem_destroy drm_prime_pages_to_sg From 0a2e9dd65c6b120bc6ad877bb51831a9ba9b8f7f Mon Sep 17 00:00:00 2001 From: "cathy.cai" Date: Fri, 7 Jul 2023 11:33:00 +0800 Subject: [PATCH 077/114] ANDROID: ABI: Update symbols to unisoc whitelist for ims_bridge module Update whitelist for the symbols used by the unisoc device in abi_gki_aarch64_unisoc. It mainly includes the whitelist of ims_bridge module. 9 function symbol(s) added 'void icmp6_send(struct sk_buff*, u8, u8, __u32, const struct in6_addr*, const struct inet6_skb_parm*)' '__be32 inet_select_addr(const struct net_device*, __be32, int)' 'int ip6_find_1stfragopt(struct sk_buff*, u8**)' 'struct dst_entry* ip6_route_output_flags(struct net*, const struct sock*, struct flowi6*, int)' 'int ipv6_dev_get_saddr(struct net*, const struct net_device*, const struct in6_addr*, unsigned int, struct in6_addr*)' '__be32 ipv6_select_ident(struct net*, const struct in6_addr*, const struct in6_addr*)' 'bool nf_ct_get_tuplepr(const struct sk_buff*, unsigned int, u_int16_t, struct net*, struct nf_conntrack_tuple*)' 'bool nf_ct_invert_tuple(struct nf_conntrack_tuple*, const struct nf_conntrack_tuple*)' 'struct xfrm_state_afinfo* xfrm_state_afinfo_get_rcu(unsigned int)' Bug: 289163929 Change-Id: I247dddb13459e2b1ac0159ce57f664f3f71ea661 Signed-off-by: canting cai --- android/abi_gki_aarch64.stg | 353 +++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_unisoc | 11 + 2 files changed, 364 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index af3f38536c95..8f48aca768e2 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -951,6 +951,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x24777eaf } +pointer_reference { + id: 0x03942c7a + kind: POINTER + pointee_type_id: 0x24105774 +} pointer_reference { id: 0x03965d61 kind: POINTER @@ -17406,6 +17411,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9d4e4357 } +pointer_reference { + id: 0x2dc3d72e + kind: POINTER + pointee_type_id: 0x9d4fba25 +} pointer_reference { id: 0x2dc3dd18 kind: POINTER @@ -22696,6 +22706,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe70e9a5b } +pointer_reference { + id: 0x33558def + kind: POINTER + pointee_type_id: 0xe716d120 +} pointer_reference { id: 0x335d253d kind: POINTER @@ -23186,6 +23201,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xfbdf50fc } +pointer_reference { + id: 0x346c7967 + kind: POINTER + pointee_type_id: 0xfbf10300 +} pointer_reference { id: 0x346d8a0d kind: POINTER @@ -33076,6 +33096,11 @@ qualified { qualifier: CONST qualified_type_id: 0x9f3af57a } +qualified { + id: 0xfbf10300 + qualifier: CONST + qualified_type_id: 0x9f83ba8a +} qualified { id: 0xfbf6cea8 qualifier: CONST @@ -76813,6 +76838,18 @@ member { type_id: 0x0625c03a offset: 160 } +member { + id: 0x94523a01 + name: "dst0" + type_id: 0xe8034002 + offset: 48 +} +member { + id: 0x5493d7f6 + name: "dst1" + type_id: 0xe8034002 + offset: 80 +} member { id: 0x59edf322 name: "dst_addr" @@ -76985,6 +77022,12 @@ member { name: "dstats" type_id: 0x2bcf25d1 } +member { + id: 0x38c1840e + name: "dsthao" + type_id: 0xe8034002 + offset: 144 +} member { id: 0x58e808e0 name: "dt" @@ -86832,6 +86875,12 @@ member { type_id: 0xe8034002 offset: 48 } +member { + id: 0x2d808edc + name: "flags" + type_id: 0xe8034002 + offset: 128 +} member { id: 0x2d85715e name: "flags" @@ -88668,6 +88717,12 @@ member { type_id: 0x0d554dfb offset: 192 } +member { + id: 0xce6a9610 + name: "frag_max_size" + type_id: 0xe8034002 + offset: 160 +} member { id: 0x9fdfc4ad name: "frag_off" @@ -100980,6 +101035,11 @@ member { type_id: 0xc9082b19 offset: 320 } +member { + id: 0xe8bad6da + name: "iif" + type_id: 0x6720d32f +} member { id: 0xaada75c0 name: "iifindex" @@ -109958,6 +110018,12 @@ member { type_id: 0x0d066629 offset: 192 } +member { + id: 0xab47d75e + name: "lastopt" + type_id: 0xe8034002 + offset: 96 +} member { id: 0xcc0a009b name: "lastuse" @@ -112956,6 +113022,12 @@ member { type_id: 0xd3c80119 offset: 30976 } +member { + id: 0x2a3c445d + name: "local_error" + type_id: 0x0e2bd379 + offset: 704 +} member { id: 0x9ddaf23a name: "local_fixed_chan" @@ -128587,6 +128659,12 @@ member { type_id: 0xc9082b19 offset: 64 } +member { + id: 0x25da85de + name: "nhoff" + type_id: 0xe8034002 + offset: 112 +} member { id: 0xd1269bee name: "nht" @@ -136703,6 +136781,12 @@ member { type_id: 0x2d4be55c offset: 192 } +member { + id: 0xdf6660f4 + name: "output" + type_id: 0x2d2736e0 + offset: 576 +} member { id: 0xdf666814 name: "output" @@ -148730,6 +148814,12 @@ member { type_id: 0x295c7202 offset: 64 } +member { + id: 0x5d4a9b23 + name: "proto" + type_id: 0x295c7202 + offset: 8 +} member { id: 0x5d4a9e3a name: "proto" @@ -150931,6 +151021,12 @@ member { type_id: 0x12bb35ff offset: 128 } +member { + id: 0x2940a2be + name: "ra" + type_id: 0x7584e7da + offset: 32 +} member { id: 0x0e79d07a name: "ra_chain" @@ -173456,6 +173552,12 @@ member { type_id: 0x1c3dbe5a offset: 416 } +member { + id: 0xcd809b0d + name: "srcrt" + type_id: 0xe8034002 + offset: 64 +} member { id: 0x2b8894ec name: "srcu" @@ -173665,6 +173767,12 @@ member { type_id: 0xe8034002 offset: 1584 } +member { + id: 0xc5c8b651 + name: "srhoff" + type_id: 0xe8034002 + offset: 176 +} member { id: 0x8e4ea0f1 name: "sriov" @@ -184542,6 +184650,12 @@ member { name: "transport" type_id: 0x19d71054 } +member { + id: 0xf2cb3293 + name: "transport_finish" + type_id: 0x2dc3d72e + offset: 640 +} member { id: 0x2a829378 name: "transport_header" @@ -187821,6 +187935,12 @@ member { offset: 27 bitsize: 2 } +member { + id: 0x7263c7bf + name: "type_ah" + type_id: 0x32b54b11 + offset: 384 +} member { id: 0x737fb73e name: "type_attr_map_array" @@ -187864,6 +187984,12 @@ member { type_id: 0xc9082b19 offset: 480 } +member { + id: 0xd4787e60 + name: "type_comp" + type_id: 0x32b54b11 + offset: 320 +} member { id: 0xb38ca977 name: "type_control" @@ -187876,6 +188002,18 @@ member { type_id: 0x18bd6530 offset: 448 } +member { + id: 0xf2fe58e1 + name: "type_dstopts" + type_id: 0x32b54b11 + offset: 512 +} +member { + id: 0xc64a2d69 + name: "type_esp" + type_id: 0x32b54b11 + offset: 128 +} member { id: 0xe6df641d name: "type_falling_val" @@ -187927,6 +188065,18 @@ member { offset: 616 bitsize: 1 } +member { + id: 0xec93386d + name: "type_ipip" + type_id: 0x32b54b11 + offset: 192 +} +member { + id: 0xf788152f + name: "type_ipip6" + type_id: 0x32b54b11 + offset: 256 +} member { id: 0xc29ac9a5 name: "type_iso" @@ -187988,6 +188138,12 @@ member { type_id: 0x3f5329f7 offset: 5952 } +member { + id: 0x797b9c35 + name: "type_offload_esp" + type_id: 0x3f5329f7 + offset: 64 +} member { id: 0x9d444403 name: "type_ops" @@ -188023,6 +188179,12 @@ member { type_id: 0x4585663f offset: 64 } +member { + id: 0x34322597 + name: "type_routing" + type_id: 0x32b54b11 + offset: 448 +} member { id: 0x4a3d814f name: "type_str_buf" @@ -224557,6 +224719,25 @@ struct_union { member_id: 0x66aa8ae5 } } +struct_union { + id: 0x9f83ba8a + kind: STRUCT + name: "inet6_skb_parm" + definition { + bytesize: 24 + member_id: 0xe8bad6da + member_id: 0x2940a2be + member_id: 0x94523a01 + member_id: 0xcd809b0d + member_id: 0x5493d7f6 + member_id: 0xab47d75e + member_id: 0x25da85de + member_id: 0x2d808edc + member_id: 0x38c1840e + member_id: 0xce6a9610 + member_id: 0xc5c8b651 + } +} struct_union { id: 0x89a37894 kind: STRUCT @@ -257917,6 +258098,27 @@ struct_union { member_id: 0xff8a95a5 } } +struct_union { + id: 0xe716d120 + kind: STRUCT + name: "xfrm_state_afinfo" + definition { + bytesize: 96 + member_id: 0x9e7cf46f + member_id: 0x5d4a9b23 + member_id: 0x797b9c35 + member_id: 0xc64a2d69 + member_id: 0xec93386d + member_id: 0xf788152f + member_id: 0xd4787e60 + member_id: 0x7263c7bf + member_id: 0x34322597 + member_id: 0xf2fe58e1 + member_id: 0xdf6660f4 + member_id: 0xf2cb3293 + member_id: 0x2a3c445d + } +} struct_union { id: 0xbc1c435b kind: STRUCT @@ -275257,6 +275459,13 @@ function { parameter_id: 0x0490bb4a parameter_id: 0x3e10b518 } +function { + id: 0x03ec98c8 + return_type_id: 0xe276adef + parameter_id: 0x3399c453 + parameter_id: 0xe276adef + parameter_id: 0x6720d32f +} function { id: 0x043864e3 return_type_id: 0x181ee594 @@ -275632,6 +275841,13 @@ function { parameter_id: 0x0258f96e parameter_id: 0x39cc14ac } +function { + id: 0x0f51af8b + return_type_id: 0xe276adef + parameter_id: 0x0ca27481 + parameter_id: 0x3b461cc8 + parameter_id: 0x3b461cc8 +} function { id: 0x0fe1d65c return_type_id: 0x17dabdcd @@ -276864,6 +277080,16 @@ function { return_type_id: 0x48b5725f parameter_id: 0x07f2af49 } +function { + id: 0x11673bbb + return_type_id: 0x48b5725f + parameter_id: 0x054f691a + parameter_id: 0x295c7202 + parameter_id: 0x295c7202 + parameter_id: 0xe62ebf07 + parameter_id: 0x3b461cc8 + parameter_id: 0x346c7967 +} function { id: 0x11691052 return_type_id: 0x48b5725f @@ -309853,6 +310079,15 @@ function { parameter_id: 0x33b77109 parameter_id: 0x0277bf8a } +function { + id: 0x9e69dafa + return_type_id: 0x6720d32f + parameter_id: 0x0ca27481 + parameter_id: 0x3399c453 + parameter_id: 0x3b461cc8 + parameter_id: 0x4585663f + parameter_id: 0x11d941b8 +} function { id: 0x9e6bce91 return_type_id: 0x6720d32f @@ -311759,6 +311994,14 @@ function { return_type_id: 0x0a1edf98 parameter_id: 0x2b8f13b3 } +function { + id: 0xa22a22cc + return_type_id: 0x1259e377 + parameter_id: 0x0ca27481 + parameter_id: 0x3861403d + parameter_id: 0x270c2906 + parameter_id: 0x6720d32f +} function { id: 0xa22b5357 return_type_id: 0x1259e377 @@ -313966,6 +314209,11 @@ function { parameter_id: 0x6720d32f parameter_id: 0x6720d32f } +function { + id: 0xd8e8dad0 + return_type_id: 0x33558def + parameter_id: 0x4585663f +} function { id: 0xd94d3717 return_type_id: 0x02eb105a @@ -314671,6 +314919,15 @@ function { parameter_id: 0x3c5396d4 parameter_id: 0x18bd6530 } +function { + id: 0xf0122aeb + return_type_id: 0x6d7f5ff6 + parameter_id: 0x3e6396e0 + parameter_id: 0x4585663f + parameter_id: 0xe2ce8d42 + parameter_id: 0x0ca27481 + parameter_id: 0x03942c7a +} function { id: 0xf0196dc4 return_type_id: 0x32a623d7 @@ -316094,6 +316351,12 @@ function { id: 0xfea45b04 return_type_id: 0x6d7f5ff6 } +function { + id: 0xfebe0504 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x03942c7a + parameter_id: 0x3fd547b8 +} function { id: 0xfec3d248 return_type_id: 0x6d7f5ff6 @@ -344939,6 +345202,15 @@ elf_symbol { type_id: 0x100e6fc8 full_name: "icc_sync_state" } +elf_symbol { + id: 0x309b98f1 + name: "icmp6_send" + is_defined: true + symbol_type: FUNCTION + crc: 0xa41c6eed + type_id: 0x11673bbb + full_name: "icmp6_send" +} elf_symbol { id: 0x58de8ff6 name: "ida_alloc_range" @@ -345722,6 +345994,15 @@ elf_symbol { type_id: 0x1f0df99a full_name: "inet_proto_csum_replace4" } +elf_symbol { + id: 0xea35f0d0 + name: "inet_select_addr" + is_defined: true + symbol_type: FUNCTION + crc: 0xb4915426 + type_id: 0x03ec98c8 + full_name: "inet_select_addr" +} elf_symbol { id: 0x7ded1ffe name: "init_dummy_netdev" @@ -346649,6 +346930,15 @@ elf_symbol { type_id: 0x99169bf2 full_name: "ip6_dst_hoplimit" } +elf_symbol { + id: 0xd9fe9b1d + name: "ip6_find_1stfragopt" + is_defined: true + symbol_type: FUNCTION + crc: 0xf459168d + type_id: 0x9cf9beaa + full_name: "ip6_find_1stfragopt" +} elf_symbol { id: 0x5a7fbd45 name: "ip6_local_out" @@ -346667,6 +346957,15 @@ elf_symbol { type_id: 0x9edc3d1c full_name: "ip6_route_me_harder" } +elf_symbol { + id: 0x807f9d22 + name: "ip6_route_output_flags" + is_defined: true + symbol_type: FUNCTION + crc: 0xc7f6396b + type_id: 0xa22a22cc + full_name: "ip6_route_output_flags" +} elf_symbol { id: 0x6cd920cf name: "ip_compute_csum" @@ -346757,6 +347056,15 @@ elf_symbol { type_id: 0xffbaa126 full_name: "ipv6_dev_find" } +elf_symbol { + id: 0x1e69bfb6 + name: "ipv6_dev_get_saddr" + is_defined: true + symbol_type: FUNCTION + crc: 0x255a1a5c + type_id: 0x9e69dafa + full_name: "ipv6_dev_get_saddr" +} elf_symbol { id: 0x274071bc name: "ipv6_ext_hdr" @@ -346775,6 +347083,15 @@ elf_symbol { type_id: 0x926eec8b full_name: "ipv6_find_hdr" } +elf_symbol { + id: 0xd70b3ff0 + name: "ipv6_select_ident" + is_defined: true + symbol_type: FUNCTION + crc: 0xfb276934 + type_id: 0x0f51af8b + full_name: "ipv6_select_ident" +} elf_symbol { id: 0x1f294d29 name: "ipv6_skip_exthdr" @@ -352100,6 +352417,24 @@ elf_symbol { type_id: 0x104c9db8 full_name: "nf_ct_destroy" } +elf_symbol { + id: 0x471faa17 + name: "nf_ct_get_tuplepr" + is_defined: true + symbol_type: FUNCTION + crc: 0xa5fac5ac + type_id: 0xf0122aeb + full_name: "nf_ct_get_tuplepr" +} +elf_symbol { + id: 0x82e37620 + name: "nf_ct_invert_tuple" + is_defined: true + symbol_type: FUNCTION + crc: 0xfe731af8 + type_id: 0xfebe0504 + full_name: "nf_ct_invert_tuple" +} elf_symbol { id: 0x43078d96 name: "nf_register_net_hooks" @@ -375651,6 +375986,15 @@ elf_symbol { type_id: 0xa2843be3 full_name: "xfrm_lookup" } +elf_symbol { + id: 0x6b55b9d2 + name: "xfrm_state_afinfo_get_rcu" + is_defined: true + symbol_type: FUNCTION + crc: 0xa60f4d57 + type_id: 0xd8e8dad0 + full_name: "xfrm_state_afinfo_get_rcu" +} elf_symbol { id: 0xeb912db7 name: "xfrm_state_lookup_byspi" @@ -379426,6 +379770,7 @@ interface { symbol_id: 0x92a80b79 symbol_id: 0x17b1a06d symbol_id: 0x5e075973 + symbol_id: 0x309b98f1 symbol_id: 0x58de8ff6 symbol_id: 0xb9a0744d symbol_id: 0x9c458796 @@ -379513,6 +379858,7 @@ interface { symbol_id: 0x6e6a2ec5 symbol_id: 0xca2771be symbol_id: 0x601b2cac + symbol_id: 0xea35f0d0 symbol_id: 0x7ded1ffe symbol_id: 0xe42479db symbol_id: 0xd8b14976 @@ -379616,8 +379962,10 @@ interface { symbol_id: 0x48a6183b symbol_id: 0x6c6beb07 symbol_id: 0x1be0f35f + symbol_id: 0xd9fe9b1d symbol_id: 0x5a7fbd45 symbol_id: 0x7837fb7f + symbol_id: 0x807f9d22 symbol_id: 0x6cd920cf symbol_id: 0x5234b1b5 symbol_id: 0xaed020d7 @@ -379628,8 +379976,10 @@ interface { symbol_id: 0x39f87265 symbol_id: 0xd35aa56c symbol_id: 0xfd0a8a39 + symbol_id: 0x1e69bfb6 symbol_id: 0x274071bc symbol_id: 0x8b22b24d + symbol_id: 0xd70b3ff0 symbol_id: 0x1f294d29 symbol_id: 0xc610fcd6 symbol_id: 0x915bc321 @@ -380222,6 +380572,8 @@ interface { symbol_id: 0xb2e54d47 symbol_id: 0x1b589c40 symbol_id: 0xb4e99805 + symbol_id: 0x471faa17 + symbol_id: 0x82e37620 symbol_id: 0x43078d96 symbol_id: 0x619db28f symbol_id: 0x36bc8d13 @@ -382839,6 +383191,7 @@ interface { symbol_id: 0x248b3536 symbol_id: 0x950a62ac symbol_id: 0x8f8f2df9 + symbol_id: 0x6b55b9d2 symbol_id: 0xeb912db7 symbol_id: 0x64876ecd symbol_id: 0x994cfb6c diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc index 7b64ec3d7265..af5313d11711 100644 --- a/android/abi_gki_aarch64_unisoc +++ b/android/abi_gki_aarch64_unisoc @@ -1213,6 +1213,17 @@ sock_common_recvmsg sock_common_setsockopt +# required by ims_bridge.ko + icmp6_send + inet_select_addr + ip6_find_1stfragopt + ip6_route_output_flags + ipv6_dev_get_saddr + ipv6_select_ident + nf_ct_get_tuplepr + nf_ct_invert_tuple + xfrm_state_afinfo_get_rcu + # required by kfifo_buf.ko devres_add __devres_alloc_node From c75c8311c8e70e23e95217c344093062a76bda24 Mon Sep 17 00:00:00 2001 From: "tianming.wang" Date: Mon, 10 Jul 2023 10:41:52 +0800 Subject: [PATCH 078/114] ANDROID: GKI: ABI: update whitelist for the kmsg_dump and native_hang symbols used by unisoc for kernel6.1 Add the symbols needed by kmsg_dump to abi_gki_aarch64_unisoc, and node_states needs to be updated to google symbols list: kmsg_dump_get_buffer, kmsg_dump_rewind, kmsg_dump_register, kmsg_dump_unregister. filp_open_block, get_zeroed_page, mem_section, node_states Add the symbols needed by native_hang_monitor to abi_gki_aarch64_unisoc access_process_vm, down, find_get_pid, find_task_by_vpid, mas_find, put_pid, send_sig_info, up 1 variable symbol(s) added 'nodemask_t node_states[6]' Bug: 290548918 Change-Id: I18f2c399ca0b6ad01ad9f1a976064d1c14af6577 Signed-off-by: tianming.wang --- android/abi_gki_aarch64.stg | 15 +++++++++++++++ android/abi_gki_aarch64_unisoc | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 8f48aca768e2..11e4abb27388 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -35195,6 +35195,11 @@ array { number_of_elements: 31 element_type_id: 0x3fcbf304 } +array { + id: 0x8483d98a + number_of_elements: 6 + element_type_id: 0x948a2888 +} array { id: 0x84f80ecf number_of_elements: 6 @@ -352741,6 +352746,15 @@ elf_symbol { type_id: 0x15334a4f full_name: "nla_strscpy" } +elf_symbol { + id: 0x39787440 + name: "node_states" + is_defined: true + symbol_type: OBJECT + crc: 0xe7b7da04 + type_id: 0x8483d98a + full_name: "node_states" +} elf_symbol { id: 0x7f258c4e name: "nonseekable_open" @@ -380608,6 +380622,7 @@ interface { symbol_id: 0x49027247 symbol_id: 0x85e07b67 symbol_id: 0x6359420c + symbol_id: 0x39787440 symbol_id: 0x7f258c4e symbol_id: 0x64e6aa0b symbol_id: 0x1560f116 diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc index af5313d11711..bb8ad74d357d 100644 --- a/android/abi_gki_aarch64_unisoc +++ b/android/abi_gki_aarch64_unisoc @@ -1,5 +1,6 @@ [abi_symbol_list] # commonly used symbols + access_process_vm add_cpu add_wait_queue add_wait_queue_exclusive @@ -173,6 +174,7 @@ dma_unmap_page_attrs do_trace_netlink_extack double_rq_lock + down down_read down_write driver_unregister @@ -194,7 +196,10 @@ eth_type_trans eth_validate_addr extcon_get_state + filp_open_block + find_get_pid _find_next_bit + find_task_by_vpid finish_wait flush_delayed_work flush_work @@ -220,6 +225,7 @@ get_device __get_free_pages get_random_bytes + get_zeroed_page gic_nonsecure_priorities gpiochip_disable_irq gpiochip_enable_irq @@ -289,6 +295,10 @@ kmem_cache_destroy kmem_cache_free kmemdup + kmsg_dump_get_buffer + kmsg_dump_register + kmsg_dump_rewind + kmsg_dump_unregister kobject_uevent kobject_uevent_env ksoftirqd @@ -313,11 +323,13 @@ log_post_write_mmio log_read_mmio log_write_mmio + mas_find mbox_chan_received_data mbox_chan_txdone memcpy memmove memset + mem_section memstart_addr migrate_swap misc_deregister @@ -365,6 +377,7 @@ nla_put_64bit nla_strscpy __nlmsg_put + node_states noop_llseek nr_cpu_ids ns_capable @@ -446,6 +459,7 @@ put_cmsg put_device __put_net + put_pid __put_task_struct queue_delayed_work_on queue_work_on @@ -520,6 +534,7 @@ scnprintf security_sk_clone security_sock_graft + send_sig_info seq_buf_printf seq_lseek seq_printf @@ -828,6 +843,7 @@ unregister_pernet_device unregister_pernet_subsys unregister_pm_notifier + up up_read up_write update_rq_clock From f3c6324daa3320e9639655e7de059b01ae51558c Mon Sep 17 00:00:00 2001 From: Jiss Jose Date: Tue, 11 Jul 2023 15:31:47 +0530 Subject: [PATCH 079/114] ANDROID: ABI: Update symbol for Exynos SoC Update symbols for Exynos GIC 400 based SOC 1 function symbol(s) added 'int __traceiter_android_vh_gic_set_affinity(void*, struct irq_data*, const struct cpumask*, bool, u8*, void*)' 1 variable symbol(s) added 'struct tracepoint __tracepoint_android_vh_gic_set_affinity' Bug: 290727714 Change-Id: Ie8adc70d83a9db13aa1a6befa655ec7d675baf81 Signed-off-by: Jiss Jose --- android/abi_gki_aarch64.stg | 30 ++++++++++++++++++++++++++++++ android/abi_gki_aarch64_exynos | 4 ++++ 2 files changed, 34 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 11e4abb27388..4a323c9731fc 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -304586,6 +304586,16 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x082be49e } +function { + id: 0x9b8fbd40 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x0b7c4f67 + parameter_id: 0x310ec01d + parameter_id: 0x6d7f5ff6 + parameter_id: 0x00c72527 + parameter_id: 0x18bd6530 +} function { id: 0x9b91093a return_type_id: 0x6720d32f @@ -321229,6 +321239,15 @@ elf_symbol { type_id: 0x9b342f25 full_name: "__traceiter_android_vh_get_thermal_zone_device" } +elf_symbol { + id: 0xdbe4202a + name: "__traceiter_android_vh_gic_set_affinity" + is_defined: true + symbol_type: FUNCTION + crc: 0xc710bc43 + type_id: 0x9b8fbd40 + full_name: "__traceiter_android_vh_gic_set_affinity" +} elf_symbol { id: 0x88586647 name: "__traceiter_android_vh_gic_v3_suspend" @@ -324361,6 +324380,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_get_thermal_zone_device" } +elf_symbol { + id: 0x60a121b4 + name: "__tracepoint_android_vh_gic_set_affinity" + is_defined: true + symbol_type: OBJECT + crc: 0x2b46dd56 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_gic_set_affinity" +} elf_symbol { id: 0xf18e312d name: "__tracepoint_android_vh_gic_v3_suspend" @@ -377121,6 +377149,7 @@ interface { symbol_id: 0x9fe60f0c symbol_id: 0x83b45f32 symbol_id: 0x1df03151 + symbol_id: 0xdbe4202a symbol_id: 0x88586647 symbol_id: 0xdb6662e8 symbol_id: 0x64c2fe7a @@ -377469,6 +377498,7 @@ interface { symbol_id: 0x828646be symbol_id: 0x4756cfec symbol_id: 0x8b7beb3b + symbol_id: 0x60a121b4 symbol_id: 0xf18e312d symbol_id: 0xf68497fa symbol_id: 0xb6603d58 diff --git a/android/abi_gki_aarch64_exynos b/android/abi_gki_aarch64_exynos index 88759b63b57b..909a71e86e10 100644 --- a/android/abi_gki_aarch64_exynos +++ b/android/abi_gki_aarch64_exynos @@ -1723,6 +1723,10 @@ __traceiter_android_rvh_gic_v3_set_affinity __tracepoint_android_rvh_gic_v3_set_affinity +# required by irq-gic-vh.ko + __traceiter_android_vh_gic_set_affinity + __tracepoint_android_vh_gic_set_affinity + # required by is-actuator-ak737x.ko v4l2_i2c_subdev_init From 30807bebbfb6fe240c791405997d84a5728db53a Mon Sep 17 00:00:00 2001 From: wang qiankun Date: Tue, 11 Jul 2023 22:11:07 +0800 Subject: [PATCH 080/114] ANDROID: GKI: update the ABI symbol list INFO: ABI DIFFERENCES HAVE BEEN DETECTED! INFO: 1 function symbol(s) added 'void cpufreq_update_policy(unsigned int)' Bug: 290900322 Change-Id: Idcebf20a17a642e2b08021772a45003797062edd Signed-off-by: wang qiankun --- android/abi_gki_aarch64.stg | 10 ++++++++++ android/abi_gki_aarch64_xiaomi | 1 + 2 files changed, 11 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 4a323c9731fc..62123cb02e9d 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -331412,6 +331412,15 @@ elf_symbol { type_id: 0x01f9081c full_name: "cpufreq_update_limits" } +elf_symbol { + id: 0x4b049d5c + name: "cpufreq_update_policy" + is_defined: true + symbol_type: FUNCTION + crc: 0xc37f9c6e + type_id: 0x01f9081c + full_name: "cpufreq_update_policy" +} elf_symbol { id: 0x0c67e2fe name: "cpufreq_update_util_data" @@ -378280,6 +378289,7 @@ interface { symbol_id: 0x131ff67b symbol_id: 0xbbbf4eda symbol_id: 0xb6965ce8 + symbol_id: 0x4b049d5c symbol_id: 0x0c67e2fe symbol_id: 0xc6155c06 symbol_id: 0xce563c27 diff --git a/android/abi_gki_aarch64_xiaomi b/android/abi_gki_aarch64_xiaomi index 111f153fe638..b0e34e78b178 100644 --- a/android/abi_gki_aarch64_xiaomi +++ b/android/abi_gki_aarch64_xiaomi @@ -236,6 +236,7 @@ __tracepoint_android_rvh_set_cpus_allowed_comm __tracepoint_android_rvh_dequeue_task cpuset_cpus_allowed + cpufreq_update_policy #required by millet.ko __traceiter_android_vh_binder_wait_for_work From 55679fd0a8cb5905c5d329e1f2cbf5a95eac0832 Mon Sep 17 00:00:00 2001 From: YOUNGJIN JOO Date: Tue, 11 Jul 2023 10:08:30 +0900 Subject: [PATCH 081/114] ANDROID: ABI: update symbol list for galaxy 7 function symbol(s) added 'struct fwnode_handle* __irq_domain_alloc_fwnode(unsigned int, int, const char *, phys_addr_t*)' 'struct clk* devm_clk_get_optional_enabled(struct device*, const char*)' 'void irq_domain_free_fwnode(struct fwnode_handle*)' 'int phy_connect_direct(struct net_device*, struct phy_device*, void(*)(struct net_device*), phy_interface_t)' 'struct phy_device* phy_find_first(struct mii_bus*)' 'void phy_get_pause(struct phy_device*, bool*, bool*)' 'int platform_get_ethdev_address(struct device*, struct net_device*)' 1 variable symbol(s) added 'struct irq_chip dummy_irq_chip' Bug: 290659898 Change-Id: I2f5e38013090ab9c5c6391de16d9b94802179ca5 Signed-off-by: YOUNGJIN JOO --- android/abi_gki_aarch64.stg | 114 +++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_galaxy | 25 +++++--- 2 files changed, 131 insertions(+), 8 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 62123cb02e9d..45c6af6025a6 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -283717,6 +283717,13 @@ function { parameter_id: 0x3760766d parameter_id: 0x7194a543 } +function { + id: 0x1c86b5f0 + return_type_id: 0x48b5725f + parameter_id: 0x3176a085 + parameter_id: 0x11cfee5a + parameter_id: 0x11cfee5a +} function { id: 0x1c88dd20 return_type_id: 0x48b5725f @@ -286657,6 +286664,14 @@ function { parameter_id: 0x25ffeea5 parameter_id: 0x0258f96e } +function { + id: 0x299442f2 + return_type_id: 0x0490bb4a + parameter_id: 0x4585663f + parameter_id: 0x6720d32f + parameter_id: 0x3e10b518 + parameter_id: 0x25e45be7 +} function { id: 0x29da83bb return_type_id: 0x042af17e @@ -294347,6 +294362,14 @@ function { return_type_id: 0x6720d32f parameter_id: 0x31ad3cde } +function { + id: 0x91ec6dfe + return_type_id: 0x6720d32f + parameter_id: 0x32a623d7 + parameter_id: 0x3176a085 + parameter_id: 0x0d9c4ffe + parameter_id: 0xeeed68e6 +} function { id: 0x91ed8ab4 return_type_id: 0x6720d32f @@ -309389,6 +309412,12 @@ function { parameter_id: 0x2cdbb77a parameter_id: 0xf435685e } +function { + id: 0x9ddc45fb + return_type_id: 0x6720d32f + parameter_id: 0x0258f96e + parameter_id: 0x32a623d7 +} function { id: 0x9ddc5532 return_type_id: 0x6720d32f @@ -313186,6 +313215,11 @@ function { return_type_id: 0x0a747547 parameter_id: 0x315b7e01 } +function { + id: 0xbeab1c63 + return_type_id: 0x3176a085 + parameter_id: 0x35d510c3 +} function { id: 0xbec298be return_type_id: 0x3176a085 @@ -318098,6 +318132,15 @@ elf_symbol { type_id: 0x5f133b10 full_name: "__irq_domain_add" } +elf_symbol { + id: 0xc37fd40e + name: "__irq_domain_alloc_fwnode" + is_defined: true + symbol_type: FUNCTION + crc: 0xdc739bfc + type_id: 0x299442f2 + full_name: "__irq_domain_alloc_fwnode" +} elf_symbol { id: 0xe064ac65 name: "__irq_resolve_mapping" @@ -334225,6 +334268,15 @@ elf_symbol { type_id: 0xa671941e full_name: "devm_clk_get_optional" } +elf_symbol { + id: 0x8837a38c + name: "devm_clk_get_optional_enabled" + is_defined: true + symbol_type: FUNCTION + crc: 0xab66b87e + type_id: 0xa671941e + full_name: "devm_clk_get_optional_enabled" +} elf_symbol { id: 0x0d9ec99a name: "devm_clk_hw_register" @@ -340588,6 +340640,15 @@ elf_symbol { type_id: 0x140e294e full_name: "dst_release" } +elf_symbol { + id: 0xe09fd784 + name: "dummy_irq_chip" + is_defined: true + symbol_type: OBJECT + crc: 0x06ae18cc + type_id: 0xadd7ccb6 + full_name: "dummy_irq_chip" +} elf_symbol { id: 0xded28924 name: "dump_backtrace" @@ -347368,6 +347429,15 @@ elf_symbol { type_id: 0x9abe486f full_name: "irq_domain_disconnect_hierarchy" } +elf_symbol { + id: 0x3fa49947 + name: "irq_domain_free_fwnode" + is_defined: true + symbol_type: FUNCTION + crc: 0x36fc4cbc + type_id: 0x11bc7f41 + full_name: "irq_domain_free_fwnode" +} elf_symbol { id: 0x327b1cbb name: "irq_domain_free_irqs_common" @@ -356017,6 +356087,15 @@ elf_symbol { type_id: 0xbf8f4ed4 full_name: "phy_connect" } +elf_symbol { + id: 0x866cf90c + name: "phy_connect_direct" + is_defined: true + symbol_type: FUNCTION + crc: 0xa779f726 + type_id: 0x91ec6dfe + full_name: "phy_connect_direct" +} elf_symbol { id: 0x5ebc16d0 name: "phy_disconnect" @@ -356134,6 +356213,15 @@ elf_symbol { type_id: 0x9f7fc723 full_name: "phy_exit" } +elf_symbol { + id: 0x6cf83bd0 + name: "phy_find_first" + is_defined: true + symbol_type: FUNCTION + crc: 0x8d92c7a5 + type_id: 0xbeab1c63 + full_name: "phy_find_first" +} elf_symbol { id: 0x0dfe21ad name: "phy_get" @@ -356143,6 +356231,15 @@ elf_symbol { type_id: 0x1154b37f full_name: "phy_get" } +elf_symbol { + id: 0x7de90fab + name: "phy_get_pause" + is_defined: true + symbol_type: FUNCTION + crc: 0x7d110178 + type_id: 0x1c86b5f0 + full_name: "phy_get_pause" +} elf_symbol { id: 0x30e87de6 name: "phy_init" @@ -357358,6 +357455,15 @@ elf_symbol { type_id: 0xad77a8f0 full_name: "platform_find_device_by_driver" } +elf_symbol { + id: 0x072cf683 + name: "platform_get_ethdev_address" + is_defined: true + symbol_type: FUNCTION + crc: 0x89592771 + type_id: 0x9ddc45fb + full_name: "platform_get_ethdev_address" +} elf_symbol { id: 0xb11c92aa name: "platform_get_irq" @@ -376809,6 +376915,7 @@ interface { symbol_id: 0x1c57a05b symbol_id: 0xdf2d2827 symbol_id: 0x70f1b87e + symbol_id: 0xc37fd40e symbol_id: 0xe064ac65 symbol_id: 0xafc169af symbol_id: 0xcaf40f72 @@ -378602,6 +378709,7 @@ interface { symbol_id: 0xf770e060 symbol_id: 0xfe156c9a symbol_id: 0xf569682d + symbol_id: 0x8837a38c symbol_id: 0x0d9ec99a symbol_id: 0x61438d3a symbol_id: 0xdeeb802d @@ -379307,6 +379415,7 @@ interface { symbol_id: 0x383fe893 symbol_id: 0xa9bf10bc symbol_id: 0xc70188be + symbol_id: 0xe09fd784 symbol_id: 0xded28924 symbol_id: 0xe3421d56 symbol_id: 0xda364c85 @@ -380060,6 +380169,7 @@ interface { symbol_id: 0x5e13f2f1 symbol_id: 0x135db1d2 symbol_id: 0xba41ecd4 + symbol_id: 0x3fa49947 symbol_id: 0x327b1cbb symbol_id: 0x61a826d2 symbol_id: 0x3cc69c51 @@ -381021,6 +381131,7 @@ interface { symbol_id: 0x81e2991f symbol_id: 0xc278f4fa symbol_id: 0x9c15bd7a + symbol_id: 0x866cf90c symbol_id: 0x5ebc16d0 symbol_id: 0xb39736f6 symbol_id: 0x9d35d830 @@ -381034,7 +381145,9 @@ interface { symbol_id: 0x992e8b3c symbol_id: 0xcd9e585e symbol_id: 0x69eeb51b + symbol_id: 0x6cf83bd0 symbol_id: 0x0dfe21ad + symbol_id: 0x7de90fab symbol_id: 0x30e87de6 symbol_id: 0x6fc1e83f symbol_id: 0x0e1df21c @@ -381170,6 +381283,7 @@ interface { symbol_id: 0xe8ed13a6 symbol_id: 0x2c91b5be symbol_id: 0xf8b12136 + symbol_id: 0x072cf683 symbol_id: 0xb11c92aa symbol_id: 0xaa322a74 symbol_id: 0x0d9f5d07 diff --git a/android/abi_gki_aarch64_galaxy b/android/abi_gki_aarch64_galaxy index 76989b7b20b3..ebe4fa10620a 100644 --- a/android/abi_gki_aarch64_galaxy +++ b/android/abi_gki_aarch64_galaxy @@ -62,6 +62,7 @@ _dev_info __devm_alloc_percpu devm_bitmap_zalloc + devm_clk_get_optional_enabled devm_gen_pool_create devm_gpiod_get_index devm_ioremap @@ -77,6 +78,7 @@ dma_alloc_attrs dma_free_attrs down_write + dummy_irq_chip elevator_alloc elv_bio_merge_ok elv_rb_add @@ -129,6 +131,7 @@ I_BDEV iio_channel_get iio_channel_release + iio_read_channel_raw init_task init_timer_key input_close_device @@ -140,6 +143,8 @@ ioremap_prot iounmap iov_iter_kvec + __irq_domain_alloc_fwnode + irq_domain_free_fwnode jiffies kasan_flag_enabled kasprintf @@ -218,12 +223,16 @@ param_ops_ullong param_set_uint __per_cpu_offset + phy_connect_direct + phy_find_first + phy_get_pause phy_resolve_aneg_linkmode phy_start_aneg pinctrl_get pinctrl_put __platform_driver_register platform_driver_unregister + platform_get_ethdev_address preempt_schedule print_hex_dump _printk @@ -311,8 +320,10 @@ __traceiter_android_vh_is_fpsimd_save __traceiter_android_vh_madvise_pageout_swap_entry __traceiter_android_vh_madvise_swapin_walk_pmd_entry + __traceiter_android_vh_meminfo_cache_adjust __traceiter_android_vh_mutex_wait_finish __traceiter_android_vh_mutex_wait_start + __traceiter_android_vh_process_madvise_end __traceiter_android_vh_ptype_head __traceiter_android_vh_rtmutex_wait_finish __traceiter_android_vh_rtmutex_wait_start @@ -320,16 +331,14 @@ __traceiter_android_vh_rwsem_read_wait_start __traceiter_android_vh_rwsem_write_wait_finish __traceiter_android_vh_rwsem_write_wait_start - __traceiter_android_vh_process_madvise_end __traceiter_android_vh_sched_show_task __traceiter_android_vh_show_smap + __traceiter_android_vh_si_mem_available_adjust + __traceiter_android_vh_si_meminfo_adjust __traceiter_android_vh_smaps_pte_entry __traceiter_android_vh_try_to_freeze_todo __traceiter_android_vh_try_to_freeze_todo_unfrozen __traceiter_android_vh_watchdog_timer_softlockup - __traceiter_android_vh_meminfo_cache_adjust - __traceiter_android_vh_si_mem_available_adjust - __traceiter_android_vh_si_meminfo_adjust __traceiter_block_rq_insert __traceiter_console __traceiter_hrtimer_expire_entry @@ -352,8 +361,10 @@ __tracepoint_android_vh_is_fpsimd_save __tracepoint_android_vh_madvise_pageout_swap_entry __tracepoint_android_vh_madvise_swapin_walk_pmd_entry + __tracepoint_android_vh_meminfo_cache_adjust __tracepoint_android_vh_mutex_wait_finish __tracepoint_android_vh_mutex_wait_start + __tracepoint_android_vh_process_madvise_end __tracepoint_android_vh_ptype_head __tracepoint_android_vh_rtmutex_wait_finish __tracepoint_android_vh_rtmutex_wait_start @@ -361,16 +372,14 @@ __tracepoint_android_vh_rwsem_read_wait_start __tracepoint_android_vh_rwsem_write_wait_finish __tracepoint_android_vh_rwsem_write_wait_start - __tracepoint_android_vh_process_madvise_end __tracepoint_android_vh_sched_show_task __tracepoint_android_vh_show_smap + __tracepoint_android_vh_si_mem_available_adjust + __tracepoint_android_vh_si_meminfo_adjust __tracepoint_android_vh_smaps_pte_entry __tracepoint_android_vh_try_to_freeze_todo __tracepoint_android_vh_try_to_freeze_todo_unfrozen __tracepoint_android_vh_watchdog_timer_softlockup - __tracepoint_android_vh_meminfo_cache_adjust - __tracepoint_android_vh_si_mem_available_adjust - __tracepoint_android_vh_si_meminfo_adjust __tracepoint_block_rq_insert __tracepoint_console __tracepoint_hrtimer_expire_entry From 44ee9eef2157ff706ec348f97bdb70b477c9b1b2 Mon Sep 17 00:00:00 2001 From: Jindong Yue Date: Mon, 10 Jul 2023 10:54:40 +0800 Subject: [PATCH 082/114] ANDROID: usb: xhci-plat: Fix double-free in xhci_plat_remove Remove the duplicate usb_put_hcd(shared_hcd) to fix following warning when unplugging the usb mouse. ------------[ cut here ]------------ refcount_t: underflow; use-after-free. WARNING: CPU: 4 PID: 153 at lib/refcount.c:28 refcount_warn_saturate+0xf8/0x138 Call trace: refcount_warn_saturate+0xf8/0x138 usb_put_hcd+0xbc/0xc4 xhci_plat_remove+0x124/0x1e4 platform_remove+0x40/0x78 Bug: 290507071 Fixes: 90ab8e7f988d ("ANDROID: usb: host: add xhci hooks for USB offload") Change-Id: Id840b6dcb69600658557c7a33e59c318f66160f5 Signed-off-by: Jindong Yue --- drivers/usb/host/xhci-plat.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c index a68493b6f466..42909318609c 100644 --- a/drivers/usb/host/xhci-plat.c +++ b/drivers/usb/host/xhci-plat.c @@ -453,7 +453,6 @@ static int xhci_plat_remove(struct platform_device *dev) xhci_vendor_cleanup(xhci); - usb_put_hcd(shared_hcd); clk_disable_unprepare(clk); clk_disable_unprepare(reg_clk); usb_put_hcd(hcd); From b39a3be50a56891f7538cfcbe729b5434b8890c5 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Sat, 11 Mar 2023 00:43:29 +0100 Subject: [PATCH 083/114] UPSTREAM: kasan: drop empty tagging-related defines mm/kasan/kasan.h provides a number of empty defines for a few arch-specific tagging-related routines, in case the architecture code didn't define them. The original idea was to simplify integration in case another architecture starts supporting memory tagging. However, right now, if any of those routines are not provided by an architecture, Hardware Tag-Based KASAN won't work. Drop the empty defines, as it would be better to get compiler errors rather than runtime crashes when adding support for a new architecture. Also drop empty hw_enable_tagging_sync/async/asymm defines for !CONFIG_KASAN_HW_TAGS case, as those are only used in mm/kasan/hw_tags.c. Link: https://lkml.kernel.org/r/bc919c144f8684a7fd9ba70c356ac2a75e775e29.1678491668.git.andreyknvl@google.com Signed-off-by: Andrey Konovalov Cc: Alexander Potapenko Cc: Andrey Ryabinin Cc: Catalin Marinas [arm64] Cc: Dmitry Vyukov Cc: Evgenii Stepanov Cc: Marco Elver Cc: Peter Collingbourne Cc: Vincenzo Frascino Cc: Weizhao Ouyang Cc: Will Deacon Signed-off-by: Andrew Morton Bug: 254721825 (cherry picked from commit e34f1e2ee0982a0ebed9e71f18d1b9529df43cd5) Signed-off-by: Andrey Konovalov Change-Id: I22911baac04cc56db2a08250e8eb47a0d4ee6128 --- mm/kasan/kasan.h | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h index 8b6e09839d8d..e677dc8101e4 100644 --- a/mm/kasan/kasan.h +++ b/mm/kasan/kasan.h @@ -401,28 +401,6 @@ static inline const void *arch_kasan_set_tag(const void *addr, u8 tag) #ifdef CONFIG_KASAN_HW_TAGS -#ifndef arch_enable_tagging_sync -#define arch_enable_tagging_sync() -#endif -#ifndef arch_enable_tagging_async -#define arch_enable_tagging_async() -#endif -#ifndef arch_enable_tagging_asymm -#define arch_enable_tagging_asymm() -#endif -#ifndef arch_force_async_tag_fault -#define arch_force_async_tag_fault() -#endif -#ifndef arch_get_random_tag -#define arch_get_random_tag() (0xFF) -#endif -#ifndef arch_get_mem_tag -#define arch_get_mem_tag(addr) (0xFF) -#endif -#ifndef arch_set_mem_tag_range -#define arch_set_mem_tag_range(addr, size, tag, init) ((void *)(addr)) -#endif - #define hw_enable_tagging_sync() arch_enable_tagging_sync() #define hw_enable_tagging_async() arch_enable_tagging_async() #define hw_enable_tagging_asymm() arch_enable_tagging_asymm() @@ -436,10 +414,6 @@ void kasan_enable_tagging(void); #else /* CONFIG_KASAN_HW_TAGS */ -#define hw_enable_tagging_sync() -#define hw_enable_tagging_async() -#define hw_enable_tagging_asymm() - static inline void kasan_enable_tagging(void) { } #endif /* CONFIG_KASAN_HW_TAGS */ From 553be6e70d08d8b88a7c3e694e8a562f8ba2cbc8 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Sat, 11 Mar 2023 00:43:30 +0100 Subject: [PATCH 084/114] BACKPORT: kasan, arm64: rename tagging-related routines (Backport: no real conflicts, neighboring lines changed.) Rename arch_enable_tagging_sync/async/asymm to arch_enable_tag_checks_sync/async/asymm, as the new name better reflects their function. Also rename kasan_enable_tagging to kasan_enable_hw_tags for the same reason. Link: https://lkml.kernel.org/r/069ef5b77715c1ac8d69b186725576c32b149491.1678491668.git.andreyknvl@google.com Signed-off-by: Andrey Konovalov Cc: Alexander Potapenko Cc: Andrey Ryabinin Cc: Catalin Marinas Cc: Dmitry Vyukov Cc: Evgenii Stepanov Cc: Marco Elver Cc: Peter Collingbourne Cc: Vincenzo Frascino Cc: Weizhao Ouyang Cc: Will Deacon Signed-off-by: Andrew Morton Bug: 254721825 (cherry picked from commit 0eafff1c5a56893ca9708fb8ff1327a738b242e9) Signed-off-by: Andrey Konovalov Change-Id: Idbb7c99b798843dd8909528cc29d2fe883108b9f --- arch/arm64/include/asm/memory.h | 6 +++--- mm/kasan/hw_tags.c | 12 ++++++------ mm/kasan/kasan.h | 10 +++++----- mm/kasan/kasan_test.c | 2 +- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h index 57fc7f17d9c8..7185d7961c2a 100644 --- a/arch/arm64/include/asm/memory.h +++ b/arch/arm64/include/asm/memory.h @@ -253,9 +253,9 @@ static inline const void *__tag_set(const void *addr, u8 tag) } #ifdef CONFIG_KASAN_HW_TAGS -#define arch_enable_tagging_sync() mte_enable_kernel_sync() -#define arch_enable_tagging_async() mte_enable_kernel_async() -#define arch_enable_tagging_asymm() mte_enable_kernel_asymm() +#define arch_enable_tag_checks_sync() mte_enable_kernel_sync() +#define arch_enable_tag_checks_async() mte_enable_kernel_async() +#define arch_enable_tag_checks_asymm() mte_enable_kernel_asymm() #define arch_force_async_tag_fault() mte_check_tfsr_exit() #define arch_get_random_tag() mte_get_random_tag() #define arch_get_mem_tag(addr) mte_get_mem_tag(addr) diff --git a/mm/kasan/hw_tags.c b/mm/kasan/hw_tags.c index d1bcb0205327..b092e37b69a7 100644 --- a/mm/kasan/hw_tags.c +++ b/mm/kasan/hw_tags.c @@ -205,7 +205,7 @@ void kasan_init_hw_tags_cpu(void) * Enable async or asymm modes only when explicitly requested * through the command line. */ - kasan_enable_tagging(); + kasan_enable_hw_tags(); } /* kasan_init_hw_tags() is called once on boot CPU. */ @@ -373,19 +373,19 @@ void __kasan_poison_vmalloc(const void *start, unsigned long size) #endif -void kasan_enable_tagging(void) +void kasan_enable_hw_tags(void) { if (kasan_arg_mode == KASAN_ARG_MODE_ASYNC) - hw_enable_tagging_async(); + hw_enable_tag_checks_async(); else if (kasan_arg_mode == KASAN_ARG_MODE_ASYMM) - hw_enable_tagging_asymm(); + hw_enable_tag_checks_asymm(); else - hw_enable_tagging_sync(); + hw_enable_tag_checks_sync(); } #if IS_ENABLED(CONFIG_KASAN_KUNIT_TEST) -EXPORT_SYMBOL_GPL(kasan_enable_tagging); +EXPORT_SYMBOL_GPL(kasan_enable_hw_tags); void kasan_force_async_fault(void) { diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h index e677dc8101e4..7285e18b949c 100644 --- a/mm/kasan/kasan.h +++ b/mm/kasan/kasan.h @@ -401,20 +401,20 @@ static inline const void *arch_kasan_set_tag(const void *addr, u8 tag) #ifdef CONFIG_KASAN_HW_TAGS -#define hw_enable_tagging_sync() arch_enable_tagging_sync() -#define hw_enable_tagging_async() arch_enable_tagging_async() -#define hw_enable_tagging_asymm() arch_enable_tagging_asymm() +#define hw_enable_tag_checks_sync() arch_enable_tag_checks_sync() +#define hw_enable_tag_checks_async() arch_enable_tag_checks_async() +#define hw_enable_tag_checks_asymm() arch_enable_tag_checks_asymm() #define hw_force_async_tag_fault() arch_force_async_tag_fault() #define hw_get_random_tag() arch_get_random_tag() #define hw_get_mem_tag(addr) arch_get_mem_tag(addr) #define hw_set_mem_tag_range(addr, size, tag, init) \ arch_set_mem_tag_range((addr), (size), (tag), (init)) -void kasan_enable_tagging(void); +void kasan_enable_hw_tags(void); #else /* CONFIG_KASAN_HW_TAGS */ -static inline void kasan_enable_tagging(void) { } +static inline void kasan_enable_hw_tags(void) { } #endif /* CONFIG_KASAN_HW_TAGS */ diff --git a/mm/kasan/kasan_test.c b/mm/kasan/kasan_test.c index 0d59098f0876..875553961eeb 100644 --- a/mm/kasan/kasan_test.c +++ b/mm/kasan/kasan_test.c @@ -107,7 +107,7 @@ static void kasan_test_exit(struct kunit *test) kasan_sync_fault_possible()) { \ if (READ_ONCE(test_status.report_found) && \ READ_ONCE(test_status.sync_fault)) \ - kasan_enable_tagging(); \ + kasan_enable_hw_tags(); \ migrate_enable(); \ } \ WRITE_ONCE(test_status.report_found, false); \ From da926e6077d8911f0a44f23c311206b3554d75bf Mon Sep 17 00:00:00 2001 From: Vincenzo Frascino Date: Sat, 11 Mar 2023 00:43:31 +0100 Subject: [PATCH 085/114] UPSTREAM: arm64: mte: rename TCO routines The TCO related routines are used in uaccess methods and load_unaligned_zeropad() but are unrelated to both even if the naming suggest otherwise. Improve the readability of the code moving the away from uaccess.h and pre-pending them with "mte". [andreyknvl@google.com: drop __ from mte_disable/enable_tco names] Link: https://lkml.kernel.org/r/74d26337b2360733956114069e96ff11c296a944.1680114854.git.andreyknvl@google.com Link: https://lkml.kernel.org/r/a48e7adce1248c0f9603a457776d59daa0ef734b.1678491668.git.andreyknvl@google.com Signed-off-by: Vincenzo Frascino Signed-off-by: Catalin Marinas Signed-off-by: Andrey Konovalov Cc: Alexander Potapenko Cc: Andrey Ryabinin Cc: Dmitry Vyukov Cc: Evgenii Stepanov Cc: Marco Elver Cc: Peter Collingbourne Cc: Weizhao Ouyang Cc: Will Deacon Signed-off-by: Andrew Morton Bug: 254721825 (cherry picked from commit 2cc029a08493b08581a2f12a584b9e0ef6d7891e) Signed-off-by: Andrey Konovalov Change-Id: Icb37f3338fd99204bc1029f7cf8e1165a311a2fa --- arch/arm64/include/asm/mte-kasan.h | 81 +++++++++++++++++++++++++ arch/arm64/include/asm/mte.h | 12 ---- arch/arm64/include/asm/uaccess.h | 66 +++----------------- arch/arm64/include/asm/word-at-a-time.h | 4 +- 4 files changed, 93 insertions(+), 70 deletions(-) diff --git a/arch/arm64/include/asm/mte-kasan.h b/arch/arm64/include/asm/mte-kasan.h index 9f79425fc65a..2e98028c1965 100644 --- a/arch/arm64/include/asm/mte-kasan.h +++ b/arch/arm64/include/asm/mte-kasan.h @@ -13,8 +13,73 @@ #include +#ifdef CONFIG_KASAN_HW_TAGS + +/* Whether the MTE asynchronous mode is enabled. */ +DECLARE_STATIC_KEY_FALSE(mte_async_or_asymm_mode); + +static inline bool system_uses_mte_async_or_asymm_mode(void) +{ + return static_branch_unlikely(&mte_async_or_asymm_mode); +} + +#else /* CONFIG_KASAN_HW_TAGS */ + +static inline bool system_uses_mte_async_or_asymm_mode(void) +{ + return false; +} + +#endif /* CONFIG_KASAN_HW_TAGS */ + #ifdef CONFIG_ARM64_MTE +/* + * The Tag Check Flag (TCF) mode for MTE is per EL, hence TCF0 + * affects EL0 and TCF affects EL1 irrespective of which TTBR is + * used. + * The kernel accesses TTBR0 usually with LDTR/STTR instructions + * when UAO is available, so these would act as EL0 accesses using + * TCF0. + * However futex.h code uses exclusives which would be executed as + * EL1, this can potentially cause a tag check fault even if the + * user disables TCF0. + * + * To address the problem we set the PSTATE.TCO bit in uaccess_enable() + * and reset it in uaccess_disable(). + * + * The Tag check override (TCO) bit disables temporarily the tag checking + * preventing the issue. + */ +static inline void mte_disable_tco(void) +{ + asm volatile(ALTERNATIVE("nop", SET_PSTATE_TCO(0), + ARM64_MTE, CONFIG_KASAN_HW_TAGS)); +} + +static inline void mte_enable_tco(void) +{ + asm volatile(ALTERNATIVE("nop", SET_PSTATE_TCO(1), + ARM64_MTE, CONFIG_KASAN_HW_TAGS)); +} + +/* + * These functions disable tag checking only if in MTE async mode + * since the sync mode generates exceptions synchronously and the + * nofault or load_unaligned_zeropad can handle them. + */ +static inline void __mte_disable_tco_async(void) +{ + if (system_uses_mte_async_or_asymm_mode()) + mte_disable_tco(); +} + +static inline void __mte_enable_tco_async(void) +{ + if (system_uses_mte_async_or_asymm_mode()) + mte_enable_tco(); +} + /* * These functions are meant to be only used from KASAN runtime through * the arch_*() interface defined in asm/memory.h. @@ -138,6 +203,22 @@ void mte_enable_kernel_asymm(void); #else /* CONFIG_ARM64_MTE */ +static inline void mte_disable_tco(void) +{ +} + +static inline void mte_enable_tco(void) +{ +} + +static inline void __mte_disable_tco_async(void) +{ +} + +static inline void __mte_enable_tco_async(void) +{ +} + static inline u8 mte_get_ptr_tag(void *ptr) { return 0xFF; diff --git a/arch/arm64/include/asm/mte.h b/arch/arm64/include/asm/mte.h index 684fb1f85498..9341cc2452a3 100644 --- a/arch/arm64/include/asm/mte.h +++ b/arch/arm64/include/asm/mte.h @@ -145,14 +145,6 @@ static inline void mte_disable_tco_entry(struct task_struct *task) } #ifdef CONFIG_KASAN_HW_TAGS -/* Whether the MTE asynchronous mode is enabled. */ -DECLARE_STATIC_KEY_FALSE(mte_async_or_asymm_mode); - -static inline bool system_uses_mte_async_or_asymm_mode(void) -{ - return static_branch_unlikely(&mte_async_or_asymm_mode); -} - void mte_check_tfsr_el1(void); static inline void mte_check_tfsr_entry(void) @@ -179,10 +171,6 @@ static inline void mte_check_tfsr_exit(void) mte_check_tfsr_el1(); } #else -static inline bool system_uses_mte_async_or_asymm_mode(void) -{ - return false; -} static inline void mte_check_tfsr_el1(void) { } diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h index 5c7b2f9d5913..30ea7b5c3ccb 100644 --- a/arch/arm64/include/asm/uaccess.h +++ b/arch/arm64/include/asm/uaccess.h @@ -136,55 +136,9 @@ static inline void __uaccess_enable_hw_pan(void) CONFIG_ARM64_PAN)); } -/* - * The Tag Check Flag (TCF) mode for MTE is per EL, hence TCF0 - * affects EL0 and TCF affects EL1 irrespective of which TTBR is - * used. - * The kernel accesses TTBR0 usually with LDTR/STTR instructions - * when UAO is available, so these would act as EL0 accesses using - * TCF0. - * However futex.h code uses exclusives which would be executed as - * EL1, this can potentially cause a tag check fault even if the - * user disables TCF0. - * - * To address the problem we set the PSTATE.TCO bit in uaccess_enable() - * and reset it in uaccess_disable(). - * - * The Tag check override (TCO) bit disables temporarily the tag checking - * preventing the issue. - */ -static inline void __uaccess_disable_tco(void) -{ - asm volatile(ALTERNATIVE("nop", SET_PSTATE_TCO(0), - ARM64_MTE, CONFIG_KASAN_HW_TAGS)); -} - -static inline void __uaccess_enable_tco(void) -{ - asm volatile(ALTERNATIVE("nop", SET_PSTATE_TCO(1), - ARM64_MTE, CONFIG_KASAN_HW_TAGS)); -} - -/* - * These functions disable tag checking only if in MTE async mode - * since the sync mode generates exceptions synchronously and the - * nofault or load_unaligned_zeropad can handle them. - */ -static inline void __uaccess_disable_tco_async(void) -{ - if (system_uses_mte_async_or_asymm_mode()) - __uaccess_disable_tco(); -} - -static inline void __uaccess_enable_tco_async(void) -{ - if (system_uses_mte_async_or_asymm_mode()) - __uaccess_enable_tco(); -} - static inline void uaccess_disable_privileged(void) { - __uaccess_disable_tco(); + mte_disable_tco(); if (uaccess_ttbr0_disable()) return; @@ -194,7 +148,7 @@ static inline void uaccess_disable_privileged(void) static inline void uaccess_enable_privileged(void) { - __uaccess_enable_tco(); + mte_enable_tco(); if (uaccess_ttbr0_enable()) return; @@ -302,8 +256,8 @@ do { \ #define get_user __get_user /* - * We must not call into the scheduler between __uaccess_enable_tco_async() and - * __uaccess_disable_tco_async(). As `dst` and `src` may contain blocking + * We must not call into the scheduler between __mte_enable_tco_async() and + * __mte_disable_tco_async(). As `dst` and `src` may contain blocking * functions, we must evaluate these outside of the critical section. */ #define __get_kernel_nofault(dst, src, type, err_label) \ @@ -312,10 +266,10 @@ do { \ __typeof__(src) __gkn_src = (src); \ int __gkn_err = 0; \ \ - __uaccess_enable_tco_async(); \ + __mte_enable_tco_async(); \ __raw_get_mem("ldr", *((type *)(__gkn_dst)), \ (__force type *)(__gkn_src), __gkn_err, K); \ - __uaccess_disable_tco_async(); \ + __mte_disable_tco_async(); \ \ if (unlikely(__gkn_err)) \ goto err_label; \ @@ -388,8 +342,8 @@ do { \ #define put_user __put_user /* - * We must not call into the scheduler between __uaccess_enable_tco_async() and - * __uaccess_disable_tco_async(). As `dst` and `src` may contain blocking + * We must not call into the scheduler between __mte_enable_tco_async() and + * __mte_disable_tco_async(). As `dst` and `src` may contain blocking * functions, we must evaluate these outside of the critical section. */ #define __put_kernel_nofault(dst, src, type, err_label) \ @@ -398,10 +352,10 @@ do { \ __typeof__(src) __pkn_src = (src); \ int __pkn_err = 0; \ \ - __uaccess_enable_tco_async(); \ + __mte_enable_tco_async(); \ __raw_put_mem("str", *((type *)(__pkn_src)), \ (__force type *)(__pkn_dst), __pkn_err, K); \ - __uaccess_disable_tco_async(); \ + __mte_disable_tco_async(); \ \ if (unlikely(__pkn_err)) \ goto err_label; \ diff --git a/arch/arm64/include/asm/word-at-a-time.h b/arch/arm64/include/asm/word-at-a-time.h index 1c8e4f2490bf..f3b151ed0d7a 100644 --- a/arch/arm64/include/asm/word-at-a-time.h +++ b/arch/arm64/include/asm/word-at-a-time.h @@ -55,7 +55,7 @@ static inline unsigned long load_unaligned_zeropad(const void *addr) { unsigned long ret; - __uaccess_enable_tco_async(); + __mte_enable_tco_async(); /* Load word from unaligned pointer addr */ asm( @@ -65,7 +65,7 @@ static inline unsigned long load_unaligned_zeropad(const void *addr) : "=&r" (ret) : "r" (addr), "Q" (*(unsigned long *)addr)); - __uaccess_disable_tco_async(); + __mte_disable_tco_async(); return ret; } From c0226bf0c75f48d9da1d232b0245cb47a4c9c878 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Sat, 11 Mar 2023 00:43:32 +0100 Subject: [PATCH 086/114] UPSTREAM: kasan, arm64: add arch_suppress_tag_checks_start/stop Add two new tagging-related routines arch_suppress_tag_checks_start/stop that suppress MTE tag checking via the TCO register. These rouines are used in the next patch. [andreyknvl@google.com: drop __ from mte_disable/enable_tco names] Link: https://lkml.kernel.org/r/7ad5e5a9db79e3aba08d8f43aca24350b04080f6.1680114854.git.andreyknvl@google.com Link: https://lkml.kernel.org/r/75a362551c3c54b70ae59a3492cabb51c105fa6b.1678491668.git.andreyknvl@google.com Signed-off-by: Andrey Konovalov Cc: Alexander Potapenko Cc: Andrey Ryabinin Cc: Catalin Marinas Cc: Dmitry Vyukov Cc: Evgenii Stepanov Cc: Marco Elver Cc: Peter Collingbourne Cc: Vincenzo Frascino Cc: Weizhao Ouyang Cc: Will Deacon Signed-off-by: Andrew Morton Bug: 254721825 (cherry picked from commit 0d3c9468bef98f703c369ced4ec61b0d4a5210ee) Signed-off-by: Andrey Konovalov Change-Id: I6aa222a78aa299280f334a4a216bc7719af5a2ef --- arch/arm64/include/asm/memory.h | 2 ++ mm/kasan/kasan.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h index 7185d7961c2a..ffaa502a4d42 100644 --- a/arch/arm64/include/asm/memory.h +++ b/arch/arm64/include/asm/memory.h @@ -256,6 +256,8 @@ static inline const void *__tag_set(const void *addr, u8 tag) #define arch_enable_tag_checks_sync() mte_enable_kernel_sync() #define arch_enable_tag_checks_async() mte_enable_kernel_async() #define arch_enable_tag_checks_asymm() mte_enable_kernel_asymm() +#define arch_suppress_tag_checks_start() mte_enable_tco() +#define arch_suppress_tag_checks_stop() mte_disable_tco() #define arch_force_async_tag_fault() mte_check_tfsr_exit() #define arch_get_random_tag() mte_get_random_tag() #define arch_get_mem_tag(addr) mte_get_mem_tag(addr) diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h index 7285e18b949c..6db6638d7e3b 100644 --- a/mm/kasan/kasan.h +++ b/mm/kasan/kasan.h @@ -404,6 +404,8 @@ static inline const void *arch_kasan_set_tag(const void *addr, u8 tag) #define hw_enable_tag_checks_sync() arch_enable_tag_checks_sync() #define hw_enable_tag_checks_async() arch_enable_tag_checks_async() #define hw_enable_tag_checks_asymm() arch_enable_tag_checks_asymm() +#define hw_suppress_tag_checks_start() arch_suppress_tag_checks_start() +#define hw_suppress_tag_checks_stop() arch_suppress_tag_checks_stop() #define hw_force_async_tag_fault() arch_force_async_tag_fault() #define hw_get_random_tag() arch_get_random_tag() #define hw_get_mem_tag(addr) arch_get_mem_tag(addr) From 7c2b6c7b56d6d05d04de9e03d3fcad87f670d907 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Sat, 11 Mar 2023 00:43:33 +0100 Subject: [PATCH 087/114] UPSTREAM: kasan: suppress recursive reports for HW_TAGS KASAN suppresses reports for bad accesses done by the KASAN reporting code. The reporting code might access poisoned memory for reporting purposes. Software KASAN modes do this by suppressing reports during reporting via current->kasan_depth, the same way they suppress reports during accesses to poisoned slab metadata. Hardware Tag-Based KASAN does not use current->kasan_depth, and instead resets pointer tags for accesses to poisoned memory done by the reporting code. Despite that, a recursive report can still happen: 1. On hardware with faulty MTE support. This was observed by Weizhao Ouyang on a faulty hardware that caused memory tags to randomly change from time to time. 2. Theoretically, due to a previous MTE-undetected memory corruption. A recursive report can happen via: 1. Accessing a pointer with a non-reset tag in the reporting code, e.g. slab->slab_cache, which is what Weizhao Ouyang observed. 2. Theoretically, via external non-annotated routines, e.g. stackdepot. To resolve this issue, resetting tags for all of the pointers in the reporting code and all the used external routines would be impractical. Instead, disable tag checking done by the CPU for the duration of KASAN reporting for Hardware Tag-Based KASAN. Without this fix, Hardware Tag-Based KASAN reporting code might deadlock. [andreyknvl@google.com: disable preemption instead of migration, fix comment typo] Link: https://lkml.kernel.org/r/d14417c8bc5eea7589e99381203432f15c0f9138.1680114854.git.andreyknvl@google.com Link: https://lkml.kernel.org/r/59f433e00f7fa985e8bf9f7caf78574db16b67ab.1678491668.git.andreyknvl@google.com Fixes: 2e903b914797 ("kasan, arm64: implement HW_TAGS runtime") Signed-off-by: Andrey Konovalov Reported-by: Weizhao Ouyang Reviewed-by: Marco Elver Cc: Alexander Potapenko Cc: Andrey Ryabinin Cc: Catalin Marinas Cc: Dmitry Vyukov Cc: Evgenii Stepanov Cc: Peter Collingbourne Cc: Vincenzo Frascino Cc: Will Deacon Signed-off-by: Andrew Morton Bug: 254721825 (cherry picked from commit c6a690e0c978bda8106e7a489c13323f90b087d0) Signed-off-by: Andrey Konovalov Change-Id: Ifc5daf66f57dd16e85de73257cc0966565836269 --- mm/kasan/report.c | 59 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 48 insertions(+), 11 deletions(-) diff --git a/mm/kasan/report.c b/mm/kasan/report.c index cc98dfdd3ed2..dfe686be59df 100644 --- a/mm/kasan/report.c +++ b/mm/kasan/report.c @@ -73,10 +73,18 @@ static int __init kasan_set_multi_shot(char *str) __setup("kasan_multi_shot", kasan_set_multi_shot); /* - * Used to suppress reports within kasan_disable/enable_current() critical - * sections, which are used for marking accesses to slab metadata. + * This function is used to check whether KASAN reports are suppressed for + * software KASAN modes via kasan_disable/enable_current() critical sections. + * + * This is done to avoid: + * 1. False-positive reports when accessing slab metadata, + * 2. Deadlocking when poisoned memory is accessed by the reporting code. + * + * Hardware Tag-Based KASAN instead relies on: + * For #1: Resetting tags via kasan_reset_tag(). + * For #2: Suppression of tag checks via CPU, see report_suppress_start/end(). */ -static bool report_suppressed(void) +static bool report_suppressed_sw(void) { #if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS) if (current->kasan_depth) @@ -85,6 +93,30 @@ static bool report_suppressed(void) return false; } +static void report_suppress_start(void) +{ +#ifdef CONFIG_KASAN_HW_TAGS + /* + * Disable preemption for the duration of printing a KASAN report, as + * hw_suppress_tag_checks_start() disables checks on the current CPU. + */ + preempt_disable(); + hw_suppress_tag_checks_start(); +#else + kasan_disable_current(); +#endif +} + +static void report_suppress_stop(void) +{ +#ifdef CONFIG_KASAN_HW_TAGS + hw_suppress_tag_checks_stop(); + preempt_enable(); +#else + kasan_enable_current(); +#endif +} + /* * Used to avoid reporting more than one KASAN bug unless kasan_multi_shot * is enabled. Note that KASAN tests effectively enable kasan_multi_shot @@ -152,7 +184,7 @@ static void start_report(unsigned long *flags, bool sync) /* Do not allow LOCKDEP mangling KASAN reports. */ lockdep_off(); /* Make sure we don't end up in loop. */ - kasan_disable_current(); + report_suppress_start(); spin_lock_irqsave(&report_lock, *flags); pr_err("==================================================================\n"); } @@ -170,7 +202,7 @@ static void end_report(unsigned long *flags, void *addr) panic("kasan.fault=panic set ...\n"); add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE); lockdep_on(); - kasan_enable_current(); + report_suppress_stop(); } static void print_error_description(struct kasan_report_info *info) @@ -439,9 +471,13 @@ void kasan_report_invalid_free(void *ptr, unsigned long ip, enum kasan_report_ty struct kasan_report_info info; /* - * Do not check report_suppressed(), as an invalid-free cannot be - * caused by accessing slab metadata and thus should not be - * suppressed by kasan_disable/enable_current() critical sections. + * Do not check report_suppressed_sw(), as an invalid-free cannot be + * caused by accessing poisoned memory and thus should not be suppressed + * by kasan_disable/enable_current() critical sections. + * + * Note that for Hardware Tag-Based KASAN, kasan_report_invalid_free() + * is triggered by explicit tag checks and not by the ones performed by + * the CPU. Thus, reporting invalid-free is not suppressed as well. */ if (unlikely(!report_enabled())) return; @@ -476,7 +512,7 @@ bool kasan_report(unsigned long addr, size_t size, bool is_write, unsigned long irq_flags; struct kasan_report_info info; - if (unlikely(report_suppressed()) || unlikely(!report_enabled())) { + if (unlikely(report_suppressed_sw()) || unlikely(!report_enabled())) { ret = false; goto out; } @@ -508,8 +544,9 @@ void kasan_report_async(void) unsigned long flags; /* - * Do not check report_suppressed(), as kasan_disable/enable_current() - * critical sections do not affect Hardware Tag-Based KASAN. + * Do not check report_suppressed_sw(), as + * kasan_disable/enable_current() critical sections do not affect + * Hardware Tag-Based KASAN. */ if (unlikely(!report_enabled())) return; From 8726a2d930a815066b7a0ed8a4d4c560fbc4d114 Mon Sep 17 00:00:00 2001 From: Xiaopeng Bai Date: Thu, 14 Apr 2022 16:22:43 +0800 Subject: [PATCH 088/114] ANDROID: GKI: regmap: Add regmap vendor hook for of_syscon_register For global registers access, UNISOC have one special method called set/clear mechanism that would avoid using hardware spinlock. But now regmap framework does not support our set/clear mechanism, so add vendor hook to support this feature. Bug: 228907258 Signed-off-by: Xiaopeng Bai Change-Id: I9a6651f07a048ffebd5c2d8e369a4e7b374bc182 (cherry picked from commit 53e342c183af58f03bd1445838a3f499e7fbd191) --- drivers/android/vendor_hooks.c | 2 ++ drivers/mfd/syscon.c | 2 ++ include/trace/hooks/regmap.h | 24 ++++++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 include/trace/hooks/regmap.h diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index badd371e142d..482830505f1b 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -66,6 +66,7 @@ #include #include #include +#include /* * Export tracepoints that act as a bare tracehook (ie: have no trace event @@ -310,3 +311,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_post_image_save); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_cold_pageout_skip); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rmqueue_smallest_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_one_page_bypass); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_regmap_update); diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c index bdb2ce7ff03b..0871c97ae51a 100644 --- a/drivers/mfd/syscon.c +++ b/drivers/mfd/syscon.c @@ -22,6 +22,7 @@ #include #include #include +#include static struct platform_driver syscon_driver; @@ -128,6 +129,7 @@ static struct syscon *of_syscon_register(struct device_node *np, bool check_clk) } } + trace_android_vh_regmap_update(&syscon_config, regmap); syscon->regmap = regmap; syscon->np = np; diff --git a/include/trace/hooks/regmap.h b/include/trace/hooks/regmap.h new file mode 100644 index 000000000000..cb6fc43d3472 --- /dev/null +++ b/include/trace/hooks/regmap.h @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM regmap +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH trace/hooks + +#if !defined(_TRACE_HOOK_REGMAP_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_REGMAP_H +#include + +struct regmap_config; +struct regmap; + +/* + * Following tracepoints are not exported in tracefs and provide a + * mechanism for vendor modules to hook and extend functionality + */ +DECLARE_HOOK(android_vh_regmap_update, + TP_PROTO(const struct regmap_config *config, struct regmap *map), + TP_ARGS(config, map)); + +#endif /* _TRACE_HOOK_REGMAP_H */ +/* This part must be outside protection */ +#include From 214e6f268b6a576c603d01a27410192c1e03e942 Mon Sep 17 00:00:00 2001 From: lambert wang Date: Wed, 12 Jul 2023 20:55:17 +0800 Subject: [PATCH 089/114] ANDROID: GKI: Add WWAN as GKI protected module CONFIG_WWAN=m : WWAN driver core. This driver provides a common framework for WWAN drivers. Required to integrate modem devices with WWAN subsystem. Selects CONFIG_WWAN_DEBUGFS=y; override to disable it until it is required in the future. Bug: 287170531 Change-Id: I18517a7aca17cfb5bdbb7ad0399fcb92c575a48e Signed-off-by: lambert wang --- android/abi_gki_protected_exports_aarch64 | 12 +++++++++++- android/abi_gki_protected_exports_x86_64 | 12 +++++++++++- android/gki_aarch64_protected_modules | 1 + android/gki_x86_64_protected_modules | 1 + arch/arm64/configs/gki_defconfig | 2 ++ arch/x86/configs/gki_defconfig | 2 ++ modules.bzl | 1 + 7 files changed, 29 insertions(+), 2 deletions(-) diff --git a/android/abi_gki_protected_exports_aarch64 b/android/abi_gki_protected_exports_aarch64 index 6b40237c253a..e4792af0a0ef 100644 --- a/android/abi_gki_protected_exports_aarch64 +++ b/android/abi_gki_protected_exports_aarch64 @@ -334,4 +334,14 @@ wpan_phy_for_each wpan_phy_free wpan_phy_new wpan_phy_register -wpan_phy_unregister \ No newline at end of file +wpan_phy_unregister +wwan_create_port +wwan_get_debugfs_dir +wwan_port_get_drvdata +wwan_port_rx +wwan_port_txoff +wwan_port_txon +wwan_put_debugfs_dir +wwan_register_ops +wwan_remove_port +wwan_unregister_ops \ No newline at end of file diff --git a/android/abi_gki_protected_exports_x86_64 b/android/abi_gki_protected_exports_x86_64 index 6b40237c253a..e4792af0a0ef 100644 --- a/android/abi_gki_protected_exports_x86_64 +++ b/android/abi_gki_protected_exports_x86_64 @@ -334,4 +334,14 @@ wpan_phy_for_each wpan_phy_free wpan_phy_new wpan_phy_register -wpan_phy_unregister \ No newline at end of file +wpan_phy_unregister +wwan_create_port +wwan_get_debugfs_dir +wwan_port_get_drvdata +wwan_port_rx +wwan_port_txoff +wwan_port_txon +wwan_put_debugfs_dir +wwan_register_ops +wwan_remove_port +wwan_unregister_ops \ No newline at end of file diff --git a/android/gki_aarch64_protected_modules b/android/gki_aarch64_protected_modules index 2a232a69f4a5..d6b0777dd474 100644 --- a/android/gki_aarch64_protected_modules +++ b/android/gki_aarch64_protected_modules @@ -23,6 +23,7 @@ drivers/net/usb/r8152.ko drivers/net/usb/r8153_ecm.ko drivers/net/usb/rtl8150.ko drivers/net/usb/usbnet.ko +drivers/net/wwan/wwan.ko drivers/usb/class/cdc-acm.ko drivers/usb/serial/ftdi_sio.ko drivers/usb/serial/usbserial.ko diff --git a/android/gki_x86_64_protected_modules b/android/gki_x86_64_protected_modules index 2a232a69f4a5..d6b0777dd474 100644 --- a/android/gki_x86_64_protected_modules +++ b/android/gki_x86_64_protected_modules @@ -23,6 +23,7 @@ drivers/net/usb/r8152.ko drivers/net/usb/r8153_ecm.ko drivers/net/usb/rtl8150.ko drivers/net/usb/usbnet.ko +drivers/net/wwan/wwan.ko drivers/usb/class/cdc-acm.ko drivers/usb/serial/ftdi_sio.ko drivers/usb/serial/usbserial.ko diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index 271b64954fe5..a354cff562ed 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -365,6 +365,8 @@ CONFIG_USB_NET_AQC111=m # CONFIG_WLAN_VENDOR_TI is not set # CONFIG_WLAN_VENDOR_ZYDAS is not set # CONFIG_WLAN_VENDOR_QUANTENNA is not set +CONFIG_WWAN=m +# CONFIG_WWAN_DEBUGFS is not set CONFIG_INPUT_EVDEV=y CONFIG_KEYBOARD_GPIO=y # CONFIG_MOUSE_PS2 is not set diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index 71c649731845..6307a0128691 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -351,6 +351,8 @@ CONFIG_USB_NET_AQC111=m # CONFIG_WLAN_VENDOR_TI is not set # CONFIG_WLAN_VENDOR_ZYDAS is not set # CONFIG_WLAN_VENDOR_QUANTENNA is not set +CONFIG_WWAN=m +# CONFIG_WWAN_DEBUGFS is not set CONFIG_INPUT_EVDEV=y CONFIG_KEYBOARD_GPIO=y # CONFIG_MOUSE_PS2 is not set diff --git a/modules.bzl b/modules.bzl index 5d3d31af91f7..868ef5ed2bd3 100644 --- a/modules.bzl +++ b/modules.bzl @@ -34,6 +34,7 @@ COMMON_GKI_MODULES_LIST = [ "drivers/net/usb/r8153_ecm.ko", "drivers/net/usb/rtl8150.ko", "drivers/net/usb/usbnet.ko", + "drivers/net/wwan/wwan.ko", "drivers/usb/class/cdc-acm.ko", "drivers/usb/serial/ftdi_sio.ko", "drivers/usb/serial/usbserial.ko", From 22e008d6d5562feaab2043b7f3f7c6b7d5f81938 Mon Sep 17 00:00:00 2001 From: Liujie Xie Date: Wed, 12 Jul 2023 15:40:52 +0800 Subject: [PATCH 090/114] ANDROID: vendor_hooks: Supplement the missing hook call point. As a supplement to commit 6c1c1552e610 ("ANDROID: vendor_hook: add hooks to protect locking-tsk in cpu scheduler"). In rwsem read, we missed a lock-holding scenario, add it now. Bug: 290868674 Change-Id: I718dd942b24b330a79283fc241dcbf47cc34c0c5 Signed-off-by: Liujie Xie --- kernel/locking/rwsem.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c index 1988ac0dc3b3..aa85792d352e 100644 --- a/kernel/locking/rwsem.c +++ b/kernel/locking/rwsem.c @@ -1078,6 +1078,8 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int stat raw_spin_unlock_irq(&sem->wait_lock); rwsem_set_reader_owned(sem); lockevent_inc(rwsem_rlock_fast); + trace_android_vh_record_rwsem_lock_starttime( + current, jiffies); return sem; } adjustment += RWSEM_FLAG_WAITERS; From 47e02fe1efcd0f5b4b2f4c7be79dda1c9779eb1a Mon Sep 17 00:00:00 2001 From: Dezhi Huang Date: Tue, 4 Jul 2023 21:17:23 +0800 Subject: [PATCH 091/114] UPSTREAM: dma-remap: use kvmalloc_array/kvfree for larger dma memory remap If dma_direct_alloc() alloc memory in size of 64MB, the inner function dma_common_contiguous_remap() will allocate 128KB memory by invoking the function kmalloc_array(). and the kmalloc_array seems to fail to try to allocate 128KB mem. Call trace: [14977.928623] qcrosvm: page allocation failure: order:5, mode:0x40cc0 [14977.928638] dump_backtrace.cfi_jt+0x0/0x8 [14977.928647] dump_stack_lvl+0x80/0xb8 [14977.928652] warn_alloc+0x164/0x200 [14977.928657] __alloc_pages_slowpath+0x9f0/0xb4c [14977.928660] __alloc_pages+0x21c/0x39c [14977.928662] kmalloc_order+0x48/0x108 [14977.928666] kmalloc_order_trace+0x34/0x154 [14977.928668] __kmalloc+0x548/0x7e4 [14977.928673] dma_direct_alloc+0x11c/0x4f8 [14977.928678] dma_alloc_attrs+0xf4/0x138 [14977.928680] gh_vm_ioctl_set_fw_name+0x3c4/0x610 [gunyah] [14977.928698] gh_vm_ioctl+0x90/0x14c [gunyah] [14977.928705] __arm64_sys_ioctl+0x184/0x210 work around by doing kvmalloc_array instead. Signed-off-by: Gao Xu Reviewed-by: Suren Baghdasaryan Signed-off-by: Christoph Hellwig Bug: 279161171 (cherry picked from commit 51ff97d54f02b4444dfc42e380ac4c058e12d5dd) Change-Id: I665c0a2b06f5a97cef297c1d5a6618373b513299 Signed-off-by: Dezhi Huang --- kernel/dma/remap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/dma/remap.c b/kernel/dma/remap.c index b4526668072e..27596f3b4aef 100644 --- a/kernel/dma/remap.c +++ b/kernel/dma/remap.c @@ -43,13 +43,13 @@ void *dma_common_contiguous_remap(struct page *page, size_t size, void *vaddr; int i; - pages = kmalloc_array(count, sizeof(struct page *), GFP_KERNEL); + pages = kvmalloc_array(count, sizeof(struct page *), GFP_KERNEL); if (!pages) return NULL; for (i = 0; i < count; i++) pages[i] = nth_page(page, i); vaddr = vmap(pages, count, VM_DMA_COHERENT, prot); - kfree(pages); + kvfree(pages); return vaddr; } From 270ca058822f5593752b552cd488f87c06079af0 Mon Sep 17 00:00:00 2001 From: Chun-Hung Wu Date: Mon, 10 Jul 2023 19:35:43 +0800 Subject: [PATCH 092/114] ANDROID: Update symbol list for mtk 1 function symbol(s) added 'bool sk_capable(const struct sock*, int)' This symbol is needed by bluetooth.ko. Bug: 290584277 Change-Id: I9d8b42057d263f451caa36b7d176bdf2560cce38 Signed-off-by: Chun-Hung Wu --- android/abi_gki_aarch64.stg | 10 ++++++++++ android/abi_gki_aarch64_mtk | 27 +++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 45c6af6025a6..fcd6a2d5773c 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -363837,6 +363837,15 @@ elf_symbol { type_id: 0x6ecc6402 full_name: "sk_alloc" } +elf_symbol { + id: 0x1295815b + name: "sk_capable" + is_defined: true + symbol_type: FUNCTION + crc: 0x9bced1ab + type_id: 0xf1208847 + full_name: "sk_capable" +} elf_symbol { id: 0xd7cc5056 name: "sk_common_release" @@ -381992,6 +382001,7 @@ interface { symbol_id: 0x4f6b19f1 symbol_id: 0xd4ea779d symbol_id: 0x67a38bc7 + symbol_id: 0x1295815b symbol_id: 0xd7cc5056 symbol_id: 0x40df740b symbol_id: 0x89a97545 diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index 3ffc07d77c5e..e3872c033f45 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -98,10 +98,10 @@ blocking_notifier_call_chain blocking_notifier_chain_register blocking_notifier_chain_unregister + bpf_trace_run1 bpf_trace_run10 bpf_trace_run11 bpf_trace_run12 - bpf_trace_run1 bpf_trace_run2 bpf_trace_run3 bpf_trace_run4 @@ -690,8 +690,11 @@ 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_destroy_state + __drm_atomic_helper_connector_duplicate_state drm_atomic_helper_connector_duplicate_state + __drm_atomic_helper_connector_reset drm_atomic_helper_connector_reset __drm_atomic_helper_crtc_destroy_state __drm_atomic_helper_crtc_duplicate_state @@ -1089,6 +1092,7 @@ ida_destroy ida_free idr_alloc + idr_alloc_cyclic idr_alloc_u32 idr_destroy idr_find @@ -1180,6 +1184,7 @@ iommu_report_device_fault iommu_unmap ioremap_prot + io_schedule_timeout iounmap iov_iter_init iov_iter_kvec @@ -1235,9 +1240,9 @@ is_vmalloc_addr iterate_dir iterate_fd + jiffies jiffies_64_to_clock_t jiffies64_to_nsecs - jiffies jiffies_to_msecs jiffies_to_usecs kasan_flag_enabled @@ -1430,8 +1435,8 @@ memremap memscan mem_section - memset64 memset + memset64 __memset_io memstart_addr memunmap @@ -1563,8 +1568,8 @@ nla_find nla_memcpy __nla_parse - nla_put_64bit nla_put + nla_put_64bit nla_put_nohdr nla_reserve nla_strscpy @@ -1687,6 +1692,8 @@ out_of_line_wait_on_bit_timeout overflowuid page_endio + page_pinner_inited + __page_pinner_put_page page_pool_alloc_pages page_pool_create page_pool_destroy @@ -1856,6 +1863,7 @@ pm_runtime_force_suspend pm_runtime_get_if_active __pm_runtime_idle + pm_runtime_irq_safe __pm_runtime_resume pm_runtime_set_autosuspend_delay __pm_runtime_set_status @@ -2061,6 +2069,7 @@ remove_proc_subtree remove_wait_queue request_firmware + request_firmware_direct request_firmware_nowait __request_module __request_percpu_irq @@ -2123,6 +2132,7 @@ rtnl_unregister rtnl_unregister_all runqueues + sbitmap_weight sched_clock sched_clock_register sched_feat_keys @@ -2145,11 +2155,13 @@ scnprintf scsi_autopm_get_device scsi_autopm_put_device + scsi_block_requests scsi_device_get scsi_device_put scsi_execute_cmd __scsi_iterate_devices scsi_print_sense_hdr + scsi_unblock_requests sdio_claim_host sdio_claim_irq sdio_disable_func @@ -2283,6 +2295,7 @@ skb_try_coalesce skb_tstamp_tx skb_unlink + sk_capable sk_common_release sk_error_report sk_filter_trim_cap @@ -2501,6 +2514,7 @@ tasklist_lock __task_pid_nr_ns __task_rq_lock + task_rq_lock thermal_cooling_device_unregister thermal_of_cooling_device_register thermal_pressure @@ -2576,6 +2590,7 @@ __traceiter_android_rvh_tick_entry __traceiter_android_rvh_try_to_wake_up __traceiter_android_rvh_try_to_wake_up_success + __traceiter_android_rvh_uclamp_eff_get __traceiter_android_rvh_update_cpu_capacity __traceiter_android_rvh_wake_up_new_task __traceiter_android_vh_alter_futex_plist_add @@ -2670,6 +2685,7 @@ __tracepoint_android_rvh_tick_entry __tracepoint_android_rvh_try_to_wake_up __tracepoint_android_rvh_try_to_wake_up_success + __tracepoint_android_rvh_uclamp_eff_get __tracepoint_android_rvh_update_cpu_capacity __tracepoint_android_rvh_wake_up_new_task __tracepoint_android_vh_alter_futex_plist_add @@ -2801,6 +2817,7 @@ udp_tunnel6_xmit_skb udp_tunnel_sock_release udp_tunnel_xmit_skb + ufshcd_config_pwr_mode ufshcd_delay_us ufshcd_dme_configure_adapt ufshcd_dme_get_attr @@ -2810,6 +2827,7 @@ ufshcd_get_pwr_dev_param ufshcd_hba_enable ufshcd_hba_stop + ufshcd_hold ufshcd_init_pwr_dev_param ufshcd_link_recovery ufshcd_make_hba_operational @@ -2821,6 +2839,7 @@ ufshcd_query_descriptor_retry ufshcd_query_flag ufshcd_read_desc_param + ufshcd_release ufshcd_remove ufshcd_resume_complete ufshcd_runtime_resume From 5e7421101fe26bf133be95cfbe59d1567ba80392 Mon Sep 17 00:00:00 2001 From: Junki Min Date: Wed, 12 Jul 2023 14:18:36 +0900 Subject: [PATCH 093/114] ANDROID: ABI: Update symbol for Exynos SoC Update symbols for Exynos DRM/GPU driver 5 function symbol(s) added 'int __traceiter_android_vh_meminfo_proc_show(void*, struct seq_file*)' 'void copy_highpage(struct page*, struct page*)' 'void mark_page_accessed(struct page*)' 'void ttm_bo_unmap_virtual(struct ttm_buffer_object*)' 'int ttm_bo_wait(struct ttm_buffer_object*, bool, bool)' 1 variable symbol(s) added 'struct tracepoint __tracepoint_android_vh_meminfo_proc_show' Bug: 290865075 Change-Id: I0ed0a853902e0ca277e3ea061a2124a48de17100 Signed-off-by: Junki Min --- android/abi_gki_aarch64.stg | 73 ++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_exynos | 25 ++++++++---- 2 files changed, 91 insertions(+), 7 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index fcd6a2d5773c..a10414339e68 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -276956,6 +276956,12 @@ function { parameter_id: 0x4585663f parameter_id: 0x18bd6530 } +function { + id: 0x11228b4e + return_type_id: 0x48b5725f + parameter_id: 0x06835e9c + parameter_id: 0x06835e9c +} function { id: 0x11248ef2 return_type_id: 0xd5cc9c9a @@ -297507,6 +297513,13 @@ function { parameter_id: 0x26ee682a parameter_id: 0x4585663f } +function { + id: 0x95353072 + return_type_id: 0x6720d32f + parameter_id: 0x246dc7d4 + parameter_id: 0x6d7f5ff6 + parameter_id: 0x6d7f5ff6 +} function { id: 0x9535de1a return_type_id: 0x6720d32f @@ -321471,6 +321484,15 @@ elf_symbol { type_id: 0x9bb68fe1 full_name: "__traceiter_android_vh_meminfo_cache_adjust" } +elf_symbol { + id: 0xea8ce2b0 + name: "__traceiter_android_vh_meminfo_proc_show" + is_defined: true + symbol_type: FUNCTION + crc: 0xbe919740 + type_id: 0x9bb62df9 + full_name: "__traceiter_android_vh_meminfo_proc_show" +} elf_symbol { id: 0xe44dacb1 name: "__traceiter_android_vh_mmap_region" @@ -324612,6 +324634,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_meminfo_cache_adjust" } +elf_symbol { + id: 0xa5b4e5b2 + name: "__tracepoint_android_vh_meminfo_proc_show" + is_defined: true + symbol_type: OBJECT + crc: 0xd7997ac2 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_meminfo_proc_show" +} elf_symbol { id: 0xb6da564f name: "__tracepoint_android_vh_mmap_region" @@ -330933,6 +330964,15 @@ elf_symbol { type_id: 0xa1d613d8 full_name: "copy_from_kernel_nofault" } +elf_symbol { + id: 0xd71898b4 + name: "copy_highpage" + is_defined: true + symbol_type: FUNCTION + crc: 0x54d1223a + type_id: 0x11228b4e + full_name: "copy_highpage" +} elf_symbol { id: 0xd89255c2 name: "cpu_all_bits" @@ -350040,6 +350080,15 @@ elf_symbol { type_id: 0xf1236ad6 full_name: "mac_pton" } +elf_symbol { + id: 0x5a1c51ee + name: "mark_page_accessed" + is_defined: true + symbol_type: FUNCTION + crc: 0x1265d1cb + type_id: 0x11388634 + full_name: "mark_page_accessed" +} elf_symbol { id: 0xe4eac6bd name: "mas_empty_area_rev" @@ -368988,6 +369037,15 @@ elf_symbol { type_id: 0x15000153 full_name: "ttm_bo_unlock_delayed_workqueue" } +elf_symbol { + id: 0xf35fc966 + name: "ttm_bo_unmap_virtual" + is_defined: true + symbol_type: FUNCTION + crc: 0xb6ff6422 + type_id: 0x19832066 + full_name: "ttm_bo_unmap_virtual" +} elf_symbol { id: 0x05d29e21 name: "ttm_bo_unpin" @@ -369078,6 +369136,15 @@ elf_symbol { type_id: 0x197f4904 full_name: "ttm_bo_vunmap" } +elf_symbol { + id: 0x46252c06 + name: "ttm_bo_wait" + is_defined: true + symbol_type: FUNCTION + crc: 0xe6de126c + type_id: 0x95353072 + full_name: "ttm_bo_wait" +} elf_symbol { id: 0x7d656c6a name: "ttm_device_fini" @@ -377295,6 +377362,7 @@ interface { symbol_id: 0x96b60e0b symbol_id: 0x3431d426 symbol_id: 0x8c174a7d + symbol_id: 0xea8ce2b0 symbol_id: 0xe44dacb1 symbol_id: 0x5612c9d1 symbol_id: 0xa77effd1 @@ -377644,6 +377712,7 @@ interface { symbol_id: 0x78341cfd symbol_id: 0xac62c748 symbol_id: 0xa2bd1edf + symbol_id: 0xa5b4e5b2 symbol_id: 0xb6da564f symbol_id: 0x41c8d09b symbol_id: 0xe2ad11db @@ -378347,6 +378416,7 @@ interface { symbol_id: 0xca337eb1 symbol_id: 0x9e7d8d76 symbol_id: 0x610edc84 + symbol_id: 0xd71898b4 symbol_id: 0xd89255c2 symbol_id: 0x962b6a68 symbol_id: 0x33bbeca6 @@ -380468,6 +380538,7 @@ interface { symbol_id: 0x01bea327 symbol_id: 0x4f31c756 symbol_id: 0x7bd17841 + symbol_id: 0x5a1c51ee symbol_id: 0xe4eac6bd symbol_id: 0x602510fe symbol_id: 0x304a5133 @@ -382574,6 +382645,7 @@ interface { symbol_id: 0xf57e37fe symbol_id: 0xb0b2d21a symbol_id: 0xd755dcd0 + symbol_id: 0xf35fc966 symbol_id: 0x05d29e21 symbol_id: 0x370666f8 symbol_id: 0xaf95f073 @@ -382584,6 +382656,7 @@ interface { symbol_id: 0x17314b18 symbol_id: 0xfa2cb6b6 symbol_id: 0xc4fae65d + symbol_id: 0x46252c06 symbol_id: 0x7d656c6a symbol_id: 0x19abe185 symbol_id: 0x07c1d025 diff --git a/android/abi_gki_aarch64_exynos b/android/abi_gki_aarch64_exynos index 909a71e86e10..d15fd6bb5ad6 100644 --- a/android/abi_gki_aarch64_exynos +++ b/android/abi_gki_aarch64_exynos @@ -220,6 +220,7 @@ dma_fence_release dma_fence_remove_callback dma_fence_signal + dma_fence_signal_locked dma_fence_wait_timeout dma_free_attrs dma_heap_buffer_alloc @@ -322,6 +323,7 @@ enable_irq eth_type_trans fd_install + fget _find_first_bit _find_last_bit _find_next_and_bit @@ -467,10 +469,12 @@ kmemdup kobject_add kobject_create_and_add + kobject_get kobject_init kobject_init_and_add kobject_put kobject_uevent_env + kobj_sysfs_ops krealloc kstrdup kstrndup @@ -1384,7 +1388,6 @@ drm_crtc_enable_color_mgmt drm_crtc_handle_vblank drm_crtc_vblank_get - drm_dev_has_vblank drm_display_mode_to_videomode drm_edid_to_sad drm_format_info @@ -1765,7 +1768,6 @@ # required by mpam_arch.ko bitmap_alloc - kobj_sysfs_ops kstrtou16 # required by nanohub.ko @@ -1789,8 +1791,6 @@ cpuidle_resume_and_unlock dev_pm_opp_find_freq_floor dma_fence_free - dma_fence_signal_locked - fget vsprintf # required by pablo-icpu.ko @@ -1851,7 +1851,6 @@ pci_generic_config_write pci_get_device pci_rescan_bus - platform_get_irq_byname_optional # required by pinctrl-samsung-core.ko fwnode_handle_put @@ -2003,7 +2002,6 @@ vprintk_emit # required by scsc_mx.ko - kobject_get kobject_uevent # required by scsc_platform_mif.ko @@ -2087,6 +2085,7 @@ backlight_device_unregister __bitmap_xor capable + copy_highpage devfreq_monitor_resume devfreq_monitor_start devfreq_monitor_stop @@ -2187,12 +2186,15 @@ idr_get_next idr_replace jiffies64_to_msecs + mark_page_accessed memremap memunmap mmu_notifier_synchronize page_pinner_inited __page_pinner_put_page + param_get_charp param_ops_hexint + param_set_charp pci_assign_unassigned_bus_resources pci_bus_resource_n pcie_bandwidth_available @@ -2218,13 +2220,19 @@ rb_first_postorder __rb_insert_augmented rb_next_postorder + reclaim_shmem_address_space request_firmware_into_buf seq_putc seq_write + set_page_dirty sg_alloc_table_from_pages_segment + shmem_file_setup + shmem_read_mapping_page_gfp si_meminfo sysfs_remove_files + __traceiter_android_vh_meminfo_proc_show __traceiter_gpu_mem_total + __tracepoint_android_vh_meminfo_proc_show __tracepoint_gpu_mem_total ttm_bo_eviction_valuable ttm_bo_init_reserved @@ -2239,6 +2247,7 @@ ttm_bo_put ttm_bo_set_bulk_move ttm_bo_unlock_delayed_workqueue + ttm_bo_unmap_virtual ttm_bo_unpin ttm_bo_validate ttm_bo_vm_access @@ -2247,6 +2256,7 @@ ttm_bo_vm_fault_reserved ttm_bo_vm_open ttm_bo_vm_reserve + ttm_bo_wait ttm_device_fini ttm_device_init ttm_eu_backoff_reservation @@ -2415,7 +2425,7 @@ ufshcd_dme_get_attr ufshcd_dme_set_attr ufshcd_hold - ufshcd_mcq_poll_cqe_nolock + ufshcd_mcq_poll_cqe_lock ufshcd_mcq_write_cqis ufshcd_pltfrm_init ufshcd_release @@ -2538,4 +2548,5 @@ __skb_get_hash __skb_gso_segment tasklet_unlock_wait + ufshcd_mcq_poll_cqe_nolock unregister_netdevice_many From a24911abfd5503fb88521084aa3bfbd068341f34 Mon Sep 17 00:00:00 2001 From: Jiss Jose Date: Fri, 14 Jul 2023 13:14:24 +0530 Subject: [PATCH 094/114] ANDROID: Update symbol for Exynos SoC Added symbol list for exynos mmc driver 1 function symbol(s) added 'int device_property_read_string_array(struct device*, const char*, const char**, size_t)' Bug: 291187964 Change-Id: I79c289861ae01304d5da5c5887227e11330f1175 Signed-off-by: Jiss Jose --- android/abi_gki_aarch64.stg | 18 ++++++++++++++++++ android/abi_gki_aarch64_exynos | 27 +++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index a10414339e68..6e070ff4db69 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -309627,6 +309627,14 @@ function { return_type_id: 0x6720d32f parameter_id: 0x01ae1e33 } +function { + id: 0x9dec0a70 + return_type_id: 0x6720d32f + parameter_id: 0x0258f96e + parameter_id: 0x3e10b518 + parameter_id: 0x051414e1 + parameter_id: 0xf435685e +} function { id: 0x9dec5d8d return_type_id: 0x6720d32f @@ -334038,6 +334046,15 @@ elf_symbol { type_id: 0x9defdaa5 full_name: "device_property_read_string" } +elf_symbol { + id: 0xe592ed14 + name: "device_property_read_string_array" + is_defined: true + symbol_type: FUNCTION + crc: 0x1caa071f + type_id: 0x9dec0a70 + full_name: "device_property_read_string_array" +} elf_symbol { id: 0x90a9db6c name: "device_property_read_u16_array" @@ -378758,6 +378775,7 @@ interface { symbol_id: 0xd0ac64f7 symbol_id: 0xa1e3330b symbol_id: 0x85ab844f + symbol_id: 0xe592ed14 symbol_id: 0x90a9db6c symbol_id: 0xde1fbc57 symbol_id: 0xa161f29a diff --git a/android/abi_gki_aarch64_exynos b/android/abi_gki_aarch64_exynos index d15fd6bb5ad6..a3b16126c54e 100644 --- a/android/abi_gki_aarch64_exynos +++ b/android/abi_gki_aarch64_exynos @@ -662,6 +662,8 @@ __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 @@ -1158,6 +1160,28 @@ __tracepoint_workqueue_execute_end __tracepoint_workqueue_execute_start +# required by dw_mmc-exynos.ko + mmc_wait_for_req + +# required by dw_mmc.ko + debugfs_create_x64 + device_property_read_string_array + dma_map_sg_attrs + mmc_add_host + mmc_alloc_host + mmc_can_gpio_cd + mmc_detect_change + mmc_free_host + mmc_gpio_get_cd + mmc_gpio_get_ro + mmc_of_parse + mmc_regulator_get_supply + mmc_regulator_set_ocr + mmc_regulator_set_vqmmc + mmc_remove_host + mmc_request_done + sdio_signal_irq + # required by dwc3-exynos-usb.ko device_create_managed_software_node platform_device_add @@ -1536,6 +1560,9 @@ __tracepoint_clock_set_rate update_devfreq +# required by exynos_esca.ko + debugfs_lookup + # required by exynos_mct_v3.ko clockevents_config_and_register __clocksource_register_scale From f6707f352b54d12dcfb0b2b28110faebd03ee923 Mon Sep 17 00:00:00 2001 From: Daniel Mentz Date: Wed, 23 Dec 2020 16:02:50 -0800 Subject: [PATCH 095/114] ANDROID: sched: Export sched_domains_mutex for lockdep If CONFIG_LOCKDEP is enabled, export `sched_domains_mutex` as it is indirectly accessed by the macro `for_each_domain()`. This allows vendors to call the `for_each_domain()` macro with CONFIG_LOCKDEP enabled via the GKI_BUILD_CONFIG_FRAGMENT. Bug: 176254015 Signed-off-by: Daniel Mentz Change-Id: Ia9f2989de41b2224c63855f2fd129cbeeac4f195 Signed-off-by: Will McVicker (cherry picked from commit 7171a5de9832b53122a9787586e18e9523b5b47e) (cherry picked from commit e2cdae06e22e6cfdbae696c5e40ad159a2cf9639) --- kernel/sched/topology.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c index c480058808bc..b60c3e178c31 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c @@ -6,6 +6,9 @@ #include DEFINE_MUTEX(sched_domains_mutex); +#ifdef CONFIG_LOCKDEP +EXPORT_SYMBOL_GPL(sched_domains_mutex); +#endif /* Protected by sched_domains_mutex: */ static cpumask_var_t sched_domains_tmpmask; From 1b7f1102787c7d66e57cd9ef5c06694f835431bc Mon Sep 17 00:00:00 2001 From: Bumyong Lee Date: Fri, 14 Jul 2023 14:40:47 +0900 Subject: [PATCH 096/114] ANDROID: add initial symbol list file for ExynosAuto SoCs This commit is for adding initial symbol list form ExynosAuto SoCs. "abi_gki_aarch64_exynosauto" is generated from minimal configs for build. Bug: 291172090 Signed-off-by: Bumyong Lee Change-Id: I9114e0ec6881d7d5bdbe61e505e21a379801f69d --- BUILD.bazel | 1 + android/abi_gki_aarch64_exynosauto | 156 +++++++++++++++++++++++++++++ 2 files changed, 157 insertions(+) create mode 100644 android/abi_gki_aarch64_exynosauto diff --git a/BUILD.bazel b/BUILD.bazel index a20ac9aa540e..b148c002b107 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -55,6 +55,7 @@ filegroup( # keep sorted "android/abi_gki_aarch64_db845c", "android/abi_gki_aarch64_exynos", + "android/abi_gki_aarch64_exynosauto", "android/abi_gki_aarch64_galaxy", "android/abi_gki_aarch64_honor", "android/abi_gki_aarch64_imx", diff --git a/android/abi_gki_aarch64_exynosauto b/android/abi_gki_aarch64_exynosauto new file mode 100644 index 000000000000..da26fd1faca5 --- /dev/null +++ b/android/abi_gki_aarch64_exynosauto @@ -0,0 +1,156 @@ +[abi_symbol_list] +# commonly used symbols + clk_prepare + clk_unprepare + _dev_err + _dev_info + devm_kmalloc + devm_request_threaded_irq + _dev_warn + dma_set_coherent_mask + dma_set_mask + kfree + kmalloc_caches + kmalloc_trace + __list_add_valid + log_post_read_mmio + log_post_write_mmio + log_read_mmio + log_write_mmio + module_layout + of_find_property + of_property_read_variable_u32_array + __platform_driver_register + _printk + __put_task_struct + _raw_spin_lock_irqsave + _raw_spin_unlock_irqrestore + snprintf + __stack_chk_fail + +# required by exynos-chipid_v2.ko + kasprintf + of_device_is_available + of_find_matching_node_and_match + of_find_node_opts_by_path + of_iomap + of_property_read_string + soc_device_register + subsys_system_register + +# required by exynos_tty.ko + atomic_notifier_chain_register + clk_disable + clk_enable + clk_get_rate + clk_set_rate + __const_udelay + dev_driver_string + device_create_file + devm_clk_get + devm_ioremap + devm_kfree + devm_pinctrl_get + disable_irq_nosync + dma_get_slave_caps + dma_map_page_attrs + dma_release_channel + dma_request_chan + dma_sync_single_for_cpu + dma_sync_single_for_device + dma_unmap_page_attrs + do_SAK + enable_irq + free_irq + gic_nonsecure_priorities + handle_sysrq + iomem_resource + is_vmalloc_addr + jiffies + kmalloc_large + of_alias_get_id + of_get_property + of_match_node + oops_in_progress + panic_notifier_list + pinctrl_lookup_state + pinctrl_select_state + platform_driver_unregister + platform_get_irq + platform_get_resource + _raw_spin_trylock + register_console + regmap_read + regmap_update_bits_base + __release_region + __request_region + request_threaded_irq + sched_clock + sg_init_table + sscanf + syscon_regmap_lookup_by_phandle + sysrq_mask + tty_flip_buffer_push + tty_insert_flip_string_fixed_flag + tty_kref_put + tty_port_tty_get + uart_add_one_port + uart_console_write + uart_get_baud_rate + uart_parse_options + uart_register_driver + uart_remove_one_port + uart_resume_port + uart_set_options + uart_suspend_port + uart_try_toggle_sysrq + uart_unregister_driver + uart_update_timeout + uart_write_wakeup + __warn_printk + +# required by pl330.ko + alt_cb_patch_nops + amba_driver_register + amba_driver_unregister + debugfs_create_file + dev_err_probe + devm_free_irq + devm_ioremap_resource + __devm_reset_control_get + dma_alloc_attrs + dma_async_device_register + dma_async_device_unregister + dma_async_tx_descriptor_init + dmaengine_unmap_put + dma_free_attrs + dma_get_slave_channel + dma_map_resource + dma_unmap_resource + __kmalloc + ktime_get_mono_fast_ns + __list_del_entry_valid + loops_per_jiffy + of_dma_controller_free + of_dma_controller_register + pm_runtime_force_resume + pm_runtime_force_suspend + pm_runtime_irq_safe + __pm_runtime_resume + pm_runtime_set_autosuspend_delay + __pm_runtime_suspend + __pm_runtime_use_autosuspend + _raw_spin_lock + _raw_spin_unlock + reset_control_assert + reset_control_deassert + seq_lseek + seq_printf + seq_puts + seq_read + sg_next + single_open + single_release + tasklet_kill + __tasklet_schedule + tasklet_setup From 7f0f58f97b7865d03159445cd9c72246c6c06e35 Mon Sep 17 00:00:00 2001 From: Yang Yang Date: Fri, 14 Jul 2023 17:24:15 +0800 Subject: [PATCH 097/114] ANDROID: Update symbol list for VIVO 15 function symbol(s) added 'int __sbitmap_queue_get(struct sbitmap_queue*)' 'bool blk_bio_list_merge(struct request_queue*, struct list_head*, struct bio*, unsigned int)' 'int blk_mq_debugfs_rq_show(struct seq_file*, void*)' 'void blk_mq_run_hw_queue(struct blk_mq_hw_ctx*, bool)' 'void sbitmap_add_wait_queue(struct sbitmap_queue*, struct sbq_wait_state*, struct sbq_wait*)' 'bool sbitmap_any_bit_set(const struct sbitmap*)' 'void sbitmap_del_wait_queue(struct sbq_wait*)' 'int sbitmap_init_node(struct sbitmap*, unsigned int, int, gfp_t, int, bool, bool)' 'void sbitmap_queue_clear(struct sbitmap_queue*, unsigned int, unsigned int)' 'int sbitmap_queue_init_node(struct sbitmap_queue*, unsigned int, int, bool, gfp_t, int)' 'void sbitmap_queue_resize(struct sbitmap_queue*, unsigned int)' 'void sbitmap_queue_show(struct sbitmap_queue*, struct seq_file*)' 'struct list_head* seq_list_next(void*, struct list_head*, loff_t*)' 'struct list_head* seq_list_start(struct list_head*, loff_t)' 'int timer_reduce(struct timer_list*, unsigned long)' Bug: 291519378 Change-Id: Ifcd031f72f6ce45eb25b1b2398cc9f6e5231d82e Signed-off-by: Yang Yang --- android/abi_gki_aarch64.stg | 264 +++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_vivo | 24 ++++ 2 files changed, 288 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 6e070ff4db69..41f0eecb2f04 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -11321,6 +11321,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xa3652854 } +pointer_reference { + id: 0x22561ecb + kind: POINTER + pointee_type_id: 0xa3189db3 +} pointer_reference { id: 0x2259084f kind: POINTER @@ -11356,6 +11361,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xa3adbe6c } +pointer_reference { + id: 0x228954ca + kind: POINTER + pointee_type_id: 0xa065b5b5 +} pointer_reference { id: 0x228d1fdb kind: POINTER @@ -163970,6 +163980,11 @@ member { type_id: 0x18bd6530 offset: 256 } +member { + id: 0xd440bc7f + name: "sbq" + type_id: 0x12e24ee1 +} member { id: 0x693c7182 name: "sbrn" @@ -195584,6 +195599,12 @@ member { type_id: 0x347ff86e offset: 192 } +member { + id: 0x201ba432 + name: "wait" + type_id: 0x35a67227 + offset: 64 +} member { id: 0x201ba81a name: "wait" @@ -241008,6 +241029,16 @@ struct_union { member_id: 0xf225f799 } } +struct_union { + id: 0xa065b5b5 + kind: STRUCT + name: "sbq_wait" + definition { + bytesize: 48 + member_id: 0xd440bc7f + member_id: 0x201ba432 + } +} struct_union { id: 0x2c37cb88 kind: STRUCT @@ -278962,6 +278993,13 @@ function { parameter_id: 0x1d19a9d5 parameter_id: 0xfc0e1dbd } +function { + id: 0x142e1753 + return_type_id: 0x48b5725f + parameter_id: 0x12e24ee1 + parameter_id: 0x019dcb45 + parameter_id: 0x228954ca +} function { id: 0x142e3633 return_type_id: 0x48b5725f @@ -278973,6 +279011,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x1285100d } +function { + id: 0x143955b1 + return_type_id: 0x48b5725f + parameter_id: 0x12e24ee1 + parameter_id: 0x0665e6b6 +} function { id: 0x1439657e return_type_id: 0x48b5725f @@ -279578,6 +279622,13 @@ function { return_type_id: 0x33756485 parameter_id: 0x92233392 } +function { + id: 0x1527b6ea + return_type_id: 0x48b5725f + parameter_id: 0x12e24ee1 + parameter_id: 0x4585663f + parameter_id: 0x4585663f +} function { id: 0x152d3031 return_type_id: 0x48b5725f @@ -281449,6 +281500,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x22cee855 } +function { + id: 0x183a04a1 + return_type_id: 0x48b5725f + parameter_id: 0x228954ca +} function { id: 0x184069d1 return_type_id: 0x48b5725f @@ -282156,6 +282212,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x24d8c7ab } +function { + id: 0x19af92ca + return_type_id: 0x48b5725f + parameter_id: 0x2208f89a + parameter_id: 0x6d7f5ff6 +} function { id: 0x19b6a09f return_type_id: 0x48b5725f @@ -296798,6 +296860,17 @@ function { parameter_id: 0x25b73daa parameter_id: 0x3e10b518 } +function { + id: 0x941967cc + return_type_id: 0x6720d32f + parameter_id: 0x22561ecb + parameter_id: 0x4585663f + parameter_id: 0x6720d32f + parameter_id: 0xf1a6dfed + parameter_id: 0x6720d32f + parameter_id: 0x6d7f5ff6 + parameter_id: 0x6d7f5ff6 +} function { id: 0x941d79a6 return_type_id: 0x6720d32f @@ -299645,6 +299718,16 @@ function { parameter_id: 0x33756485 parameter_id: 0x18bd6530 } +function { + id: 0x98362533 + return_type_id: 0x6720d32f + parameter_id: 0x12e24ee1 + parameter_id: 0x4585663f + parameter_id: 0x6720d32f + parameter_id: 0x6d7f5ff6 + parameter_id: 0xf1a6dfed + parameter_id: 0x6720d32f +} function { id: 0x9837b2b4 return_type_id: 0x6720d32f @@ -300809,6 +300892,11 @@ function { parameter_id: 0x104d069a parameter_id: 0x295c7202 } +function { + id: 0x99387097 + return_type_id: 0x6720d32f + parameter_id: 0x12e24ee1 +} function { id: 0x9939118b return_type_id: 0x6720d32f @@ -315208,6 +315296,12 @@ function { return_type_id: 0x6d7f5ff6 parameter_id: 0x3c2755a3 } +function { + id: 0xf1ae1eac + return_type_id: 0x3e6239e1 + parameter_id: 0x3e6239e1 + parameter_id: 0x27a7c613 +} function { id: 0xf1b060ff return_type_id: 0x6d7f5ff6 @@ -315498,6 +315592,11 @@ function { parameter_id: 0x0ee13889 parameter_id: 0x358ff5b7 } +function { + id: 0xf34d29c1 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x37a5cb14 +} function { id: 0xf354bbbc return_type_id: 0x26e55184 @@ -315932,6 +316031,13 @@ function { parameter_id: 0x188b9e81 parameter_id: 0x3ea31487 } +function { + id: 0xf87e0015 + return_type_id: 0x3e6239e1 + parameter_id: 0x18bd6530 + parameter_id: 0x3e6239e1 + parameter_id: 0x0379c823 +} function { id: 0xf87eb23d return_type_id: 0x6d7f5ff6 @@ -316147,6 +316253,14 @@ function { parameter_id: 0x4585663f parameter_id: 0x4585663f } +function { + id: 0xfc093226 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x09427c40 + parameter_id: 0x3e6239e1 + parameter_id: 0x15a30023 + parameter_id: 0x4585663f +} function { id: 0xfc2e3179 return_type_id: 0x6d7f5ff6 @@ -319161,6 +319275,15 @@ elf_symbol { type_id: 0x1dbb54c5 full_name: "__rt_mutex_init" } +elf_symbol { + id: 0x99aa632e + name: "__sbitmap_queue_get" + is_defined: true + symbol_type: FUNCTION + crc: 0x0a991166 + type_id: 0x99387097 + full_name: "__sbitmap_queue_get" +} elf_symbol { id: 0xe68925b8 name: "__scsi_add_device" @@ -327781,6 +327904,15 @@ elf_symbol { type_id: 0x1738d1f7 full_name: "blk_abort_request" } +elf_symbol { + id: 0x1516f6b7 + name: "blk_bio_list_merge" + is_defined: true + symbol_type: FUNCTION + crc: 0x693f756e + type_id: 0xfc093226 + full_name: "blk_bio_list_merge" +} elf_symbol { id: 0x4ffac461 name: "blk_crypto_keyslot_index" @@ -327871,6 +328003,15 @@ elf_symbol { type_id: 0x1738d1f7 full_name: "blk_mq_complete_request" } +elf_symbol { + id: 0x0467bac1 + name: "blk_mq_debugfs_rq_show" + is_defined: true + symbol_type: FUNCTION + crc: 0xec127399 + type_id: 0x9c7b6f16 + full_name: "blk_mq_debugfs_rq_show" +} elf_symbol { id: 0x6458d26a name: "blk_mq_destroy_queue" @@ -327970,6 +328111,15 @@ elf_symbol { type_id: 0xc97bfe9f full_name: "blk_mq_rq_cpu" } +elf_symbol { + id: 0xff90ba37 + name: "blk_mq_run_hw_queue" + is_defined: true + symbol_type: FUNCTION + crc: 0x46c2c44f + type_id: 0x19af92ca + full_name: "blk_mq_run_hw_queue" +} elf_symbol { id: 0xff19eaec name: "blk_mq_run_hw_queues" @@ -361931,6 +362081,60 @@ elf_symbol { type_id: 0x1192ec84 full_name: "sb800_prefetch" } +elf_symbol { + id: 0x806f167c + name: "sbitmap_add_wait_queue" + is_defined: true + symbol_type: FUNCTION + crc: 0x4981b0e2 + type_id: 0x142e1753 + full_name: "sbitmap_add_wait_queue" +} +elf_symbol { + id: 0xf13ba64e + name: "sbitmap_any_bit_set" + is_defined: true + symbol_type: FUNCTION + crc: 0x499f6a97 + type_id: 0xf34d29c1 + full_name: "sbitmap_any_bit_set" +} +elf_symbol { + id: 0xe4f77cb7 + name: "sbitmap_del_wait_queue" + is_defined: true + symbol_type: FUNCTION + crc: 0xfab6c92b + type_id: 0x183a04a1 + full_name: "sbitmap_del_wait_queue" +} +elf_symbol { + id: 0x12f98f54 + name: "sbitmap_init_node" + is_defined: true + symbol_type: FUNCTION + crc: 0x8be9a5cf + type_id: 0x941967cc + full_name: "sbitmap_init_node" +} +elf_symbol { + id: 0x85d0ffae + name: "sbitmap_queue_clear" + is_defined: true + symbol_type: FUNCTION + crc: 0xcfb42d08 + type_id: 0x1527b6ea + full_name: "sbitmap_queue_clear" +} +elf_symbol { + id: 0xe160a711 + name: "sbitmap_queue_init_node" + is_defined: true + symbol_type: FUNCTION + crc: 0xe4bd68f7 + type_id: 0x98362533 + full_name: "sbitmap_queue_init_node" +} elf_symbol { id: 0x4513114c name: "sbitmap_queue_min_shallow_depth" @@ -361940,6 +362144,24 @@ elf_symbol { type_id: 0x1536d7b3 full_name: "sbitmap_queue_min_shallow_depth" } +elf_symbol { + id: 0x3af97828 + name: "sbitmap_queue_resize" + is_defined: true + symbol_type: FUNCTION + crc: 0x67a07059 + type_id: 0x1536d7b3 + full_name: "sbitmap_queue_resize" +} +elf_symbol { + id: 0x6375c31d + name: "sbitmap_queue_show" + is_defined: true + symbol_type: FUNCTION + crc: 0xee37b200 + type_id: 0x143955b1 + full_name: "sbitmap_queue_show" +} elf_symbol { id: 0x56cb7a36 name: "sbitmap_weight" @@ -362993,6 +363215,24 @@ elf_symbol { type_id: 0x42749d40 full_name: "seq_hlist_start_head" } +elf_symbol { + id: 0xe5f1a4c5 + name: "seq_list_next" + is_defined: true + symbol_type: FUNCTION + crc: 0xe7d4daac + type_id: 0xf87e0015 + full_name: "seq_list_next" +} +elf_symbol { + id: 0x1405c2fb + name: "seq_list_start" + is_defined: true + symbol_type: FUNCTION + crc: 0xff1e9dd8 + type_id: 0xf1ae1eac + full_name: "seq_list_start" +} elf_symbol { id: 0xe0349007 name: "seq_lseek" @@ -368523,6 +368763,15 @@ elf_symbol { type_id: 0x90e86d28 full_name: "timer_of_init" } +elf_symbol { + id: 0x5da495c5 + name: "timer_reduce" + is_defined: true + symbol_type: FUNCTION + crc: 0x75c21753 + type_id: 0x92c0b65c + full_name: "timer_reduce" +} elf_symbol { id: 0xdc3e523b name: "timer_unstable_counter_workaround" @@ -377120,6 +377369,7 @@ interface { symbol_id: 0x2b453adc symbol_id: 0xd5276fa4 symbol_id: 0x98379aaf + symbol_id: 0x99aa632e symbol_id: 0xe68925b8 symbol_id: 0x6e3bb1cf symbol_id: 0x0166be18 @@ -378078,6 +378328,7 @@ interface { symbol_id: 0xb5b2d835 symbol_id: 0x226328f4 symbol_id: 0x0b5d5f1c + symbol_id: 0x1516f6b7 symbol_id: 0x4ffac461 symbol_id: 0xad8bab96 symbol_id: 0x528ef002 @@ -378088,6 +378339,7 @@ interface { symbol_id: 0x0d1fc920 symbol_id: 0xd34c6466 symbol_id: 0x51c471d6 + symbol_id: 0x0467bac1 symbol_id: 0x6458d26a symbol_id: 0x2e876bee symbol_id: 0x1996f188 @@ -378099,6 +378351,7 @@ interface { symbol_id: 0x1f81c0c0 symbol_id: 0xcebb0cec symbol_id: 0x27ae2b17 + symbol_id: 0xff90ba37 symbol_id: 0xff19eaec symbol_id: 0x49ee3f1e symbol_id: 0x646a1dc6 @@ -381871,7 +382124,15 @@ interface { symbol_id: 0x8fb082a6 symbol_id: 0x570df167 symbol_id: 0x84f045c2 + symbol_id: 0x806f167c + symbol_id: 0xf13ba64e + symbol_id: 0xe4f77cb7 + symbol_id: 0x12f98f54 + symbol_id: 0x85d0ffae + symbol_id: 0xe160a711 symbol_id: 0x4513114c + symbol_id: 0x3af97828 + symbol_id: 0x6375c31d symbol_id: 0x56cb7a36 symbol_id: 0xe8c754b0 symbol_id: 0x12fb2fd6 @@ -381989,6 +382250,8 @@ interface { symbol_id: 0xb2b0c8fa symbol_id: 0xfb710d3e symbol_id: 0x0af60b8b + symbol_id: 0xe5f1a4c5 + symbol_id: 0x1405c2fb symbol_id: 0xe0349007 symbol_id: 0xfae0b182 symbol_id: 0x9ef87854 @@ -382604,6 +382867,7 @@ interface { symbol_id: 0x6642e9e1 symbol_id: 0x4063e8a2 symbol_id: 0x78e97bdd + symbol_id: 0x5da495c5 symbol_id: 0xdc3e523b symbol_id: 0x3934d205 symbol_id: 0xa603e7df diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo index 934892f00111..69d634eb4fa5 100644 --- a/android/abi_gki_aarch64_vivo +++ b/android/abi_gki_aarch64_vivo @@ -164,6 +164,7 @@ __kfifo_to_user __kfifo_to_user_r __kmalloc + __kmalloc_node __kmalloc_node_track_caller __kthread_init_worker __list_add_valid @@ -240,6 +241,7 @@ __reset_control_get __rht_bucket_nested __rt_mutex_init + __sbitmap_queue_get __scsi_add_device __scsi_iterate_devices __scsi_print_sense @@ -430,6 +432,7 @@ __traceiter_android_vh_update_topology_flags_workfn __traceiter_android_vh_watchdog_timer_softlockup __traceiter_binder_transaction_received + __traceiter_block_rq_insert __traceiter_clock_set_rate __traceiter_console __traceiter_cpu_frequency_limits @@ -598,6 +601,7 @@ __tracepoint_android_vh_update_topology_flags_workfn __tracepoint_android_vh_watchdog_timer_softlockup __tracepoint_binder_transaction_received + __tracepoint_block_rq_insert __tracepoint_clock_set_rate __tracepoint_console __tracepoint_cpu_frequency_limits @@ -798,12 +802,14 @@ bitmap_release_region bitmap_to_arr32 bitmap_zalloc + blk_bio_list_merge blk_execute_rq blk_execute_rq_nowait blk_mq_alloc_request blk_mq_alloc_sq_tag_set blk_mq_alloc_tag_set blk_mq_complete_request + blk_mq_debugfs_rq_show blk_mq_end_request blk_mq_end_request_batch blk_mq_free_request @@ -814,6 +820,7 @@ blk_mq_quiesce_queue blk_mq_requeue_request blk_mq_rq_cpu + blk_mq_run_hw_queue blk_mq_start_request blk_mq_start_stopped_hw_queues blk_mq_stop_hw_queue @@ -843,6 +850,8 @@ blk_rq_map_user_io blk_rq_map_user_iov blk_rq_unmap_user + blk_stat_disable_accounting + blk_stat_enable_accounting blk_status_to_errno blk_update_request blkdev_get_by_dev @@ -1986,6 +1995,9 @@ edac_device_free_ctl_info edac_device_handle_ce_count edac_device_handle_ue_count + elv_register + elv_unregister + elevator_alloc em_cpu_get emergency_restart enable_irq @@ -3832,6 +3844,15 @@ safe_candev_priv sampling_rate_store sb800_prefetch + sbitmap_add_wait_queue + sbitmap_any_bit_set + sbitmap_del_wait_queue + sbitmap_init_node + sbitmap_queue_clear + sbitmap_queue_init_node + sbitmap_queue_min_shallow_depth + sbitmap_queue_resize + sbitmap_queue_show scatterwalk_ffwd scatterwalk_map_and_copy sched_clock @@ -3924,6 +3945,8 @@ seq_hex_dump seq_hlist_next seq_hlist_start_head + seq_list_next + seq_list_start seq_lseek seq_open seq_printf @@ -4419,6 +4442,7 @@ timecounter_cyc2time timecounter_init timecounter_read + timer_reduce timer_unstable_counter_workaround timespec64_to_jiffies tipc_dump_done From a16d62a2960b9f3c3e809d8051accf68826f3d32 Mon Sep 17 00:00:00 2001 From: Will Deacon Date: Mon, 17 Jul 2023 13:30:12 +0100 Subject: [PATCH 098/114] ANDROID: KVM: arm64: Fix MMU context save/restore over TLB invalidation The 'mmu' parameter to enter_vmid_context() represents the target MMU to switch to, so we should stash away the current MMU for restoration by exit_vmid_context() rather than the one we're about to switch to! Bug: 291568386 Fixes: 47318559bc51 ("ANDROID: KVM: arm64: Support TLB invalidation in guest context") Tested-by: Mostafa Saleh Reported-by: Mostafa Saleh Signed-off-by: Will Deacon Change-Id: I5d76c159424e32a6d70c598d0007f98ea80c1db4 --- arch/arm64/kvm/hyp/nvhe/tlb.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/arch/arm64/kvm/hyp/nvhe/tlb.c b/arch/arm64/kvm/hyp/nvhe/tlb.c index 35092e154614..692bd7f881f1 100644 --- a/arch/arm64/kvm/hyp/nvhe/tlb.c +++ b/arch/arm64/kvm/hyp/nvhe/tlb.c @@ -32,13 +32,19 @@ static void enter_vmid_context(struct kvm_s2_mmu *mmu, * to do. */ if (vcpu) { + /* We're in guest context */ if (mmu == vcpu->arch.hw_mmu || WARN_ON(mmu != host_s2_mmu)) return; - } else if (mmu == host_s2_mmu) { - return; + + cxt->mmu = vcpu->arch.hw_mmu; + } else { + /* We're in host context */ + if (mmu == host_s2_mmu) + return; + + cxt->mmu = host_s2_mmu; } - cxt->mmu = mmu; if (cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) { u64 val; From facf08fa5f60f95eae648c6eff47c368ce692771 Mon Sep 17 00:00:00 2001 From: Bob Peterson Date: Fri, 28 Apr 2023 12:07:46 -0400 Subject: [PATCH 099/114] UPSTREAM: gfs2: Don't deref jdesc in evict [ Upstream commit 504a10d9e46bc37b23d0a1ae2f28973c8516e636 ] On corrupt gfs2 file systems the evict code can try to reference the journal descriptor structure, jdesc, after it has been freed and set to NULL. The sequence of events is: init_journal() ... fail_jindex: gfs2_jindex_free(sdp); <------frees journals, sets jdesc = NULL if (gfs2_holder_initialized(&ji_gh)) gfs2_glock_dq_uninit(&ji_gh); fail: iput(sdp->sd_jindex); <--references jdesc in evict_linked_inode evict() gfs2_evict_inode() evict_linked_inode() ret = gfs2_trans_begin(sdp, 0, sdp->sd_jdesc->jd_blocks); <------references the now freed/zeroed sd_jdesc pointer. The call to gfs2_trans_begin is done because the truncate_inode_pages call can cause gfs2 events that require a transaction, such as removing journaled data (jdata) blocks from the journal. This patch fixes the problem by adding a check for sdp->sd_jdesc to function gfs2_evict_inode. In theory, this should only happen to corrupt gfs2 file systems, when gfs2 detects the problem, reports it, then tries to evict all the system inodes it has read in up to that point. Bug: 289870854 Reported-by: Yang Lan Signed-off-by: Bob Peterson Signed-off-by: Andreas Gruenbacher Signed-off-by: Sasha Levin (cherry picked from commit 5ae4a618a1558d2b536fdd5d42e53d3e2d73870c) Signed-off-by: Lee Jones Change-Id: I501e8631e1b60479023f5e6ad957540f9e10bcd5 --- fs/gfs2/super.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c index 2015bd05cba1..9d27aa8bd2bc 100644 --- a/fs/gfs2/super.c +++ b/fs/gfs2/super.c @@ -1380,6 +1380,14 @@ static void gfs2_evict_inode(struct inode *inode) if (inode->i_nlink || sb_rdonly(sb)) goto out; + /* + * In case of an incomplete mount, gfs2_evict_inode() may be called for + * system files without having an active journal to write to. In that + * case, skip the filesystem evict. + */ + if (!sdp->sd_jdesc) + goto out; + gfs2_holder_mark_uninitialized(&gh); ret = evict_should_delete(inode, &gh); if (ret == SHOULD_DEFER_EVICTION) From 9b655e9328416db65ae90a57fcadf9b2265bb646 Mon Sep 17 00:00:00 2001 From: Lee Jones Date: Tue, 11 Jul 2023 17:20:13 +0000 Subject: [PATCH 100/114] ANDROID: Incremental fs: Allocate data buffer based on input request size Presently the data buffer used to return the per-UID timeout description is created based on information provided by the user. It is expected that the user populates a variable called 'timeouts_array_size' which is heavily scrutinised to ensure the value provided is appropriate i.e. smaller than the largest possible value but large enough to contain all of the data we wish to pass back. The issue is that the aforementioned scrutiny is imposed on a different variable to the one expected. Contrary to expectation, the data buffer is actually being allocated to the size specified in a variable named 'timeouts_array_size_out'. A variable originally designed to only contain the output information i.e. the size of the data actually copied to the user for consumption. This value is also user provided and is not given the same level of scrutiny as the former. The fix in this case is simple. Ignore 'timeouts_array_size_out' until it is time to populate (over-write) it ourselves and use 'timeouts_array_size' to shape the buffer as intended. Bug: 281547360 Change-Id: I95e12879a33a2355f9e4bc0ce2bfc3f229141aa8 Signed-off-by: Lee Jones (cherry picked from commit 5a4d20a3eb4e651f88ed2f1f08cee066639ca801) --- fs/incfs/pseudo_files.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/incfs/pseudo_files.c b/fs/incfs/pseudo_files.c index 57c3353666ee..814d7063581a 100644 --- a/fs/incfs/pseudo_files.c +++ b/fs/incfs/pseudo_files.c @@ -918,10 +918,10 @@ static long ioctl_get_read_timeouts(struct mount_info *mi, void __user *arg) if (copy_from_user(&args, args_usr_ptr, sizeof(args))) return -EINVAL; - if (args.timeouts_array_size_out > INCFS_DATA_FILE_BLOCK_SIZE) + if (args.timeouts_array_size > INCFS_DATA_FILE_BLOCK_SIZE) return -EINVAL; - buffer = kzalloc(args.timeouts_array_size_out, GFP_NOFS); + buffer = kzalloc(args.timeouts_array_size, GFP_NOFS); if (!buffer) return -ENOMEM; From 6c695fad68dc262b1d1d2f37d3f443f0a4038605 Mon Sep 17 00:00:00 2001 From: Daniel Rosenberg Date: Fri, 7 Jul 2023 16:07:09 -0700 Subject: [PATCH 101/114] ANDROID: fuse-bpf: Add partial flock support This adds passthrough support for flock on fuse-bpf files. It does not give any control via a bpf filter. The flock will act as though it was taken on the lower file. Bug: 289882899 Test: fuse_test -t32 (flock_test) Change-Id: Iba0b9630766cedbd3195532c5e929891593cfe30 Signed-off-by: Daniel Rosenberg --- fs/fuse/backing.c | 14 ++++++ fs/fuse/file.c | 8 +++- fs/fuse/fuse_i.h | 1 + .../selftests/filesystems/fuse/fuse_test.c | 46 +++++++++++++++++++ 4 files changed, 68 insertions(+), 1 deletion(-) diff --git a/fs/fuse/backing.c b/fs/fuse/backing.c index 42ae8188028c..931c3397133c 100644 --- a/fs/fuse/backing.c +++ b/fs/fuse/backing.c @@ -966,6 +966,20 @@ void *fuse_file_write_iter_finalize(struct fuse_bpf_args *fa, return ERR_PTR(fwio->ret); } +int fuse_file_flock_backing(struct file *file, int cmd, struct file_lock *fl) +{ + struct fuse_file *ff = file->private_data; + struct file *backing_file = ff->backing_file; + int error; + + fl->fl_file = backing_file; + if (backing_file->f_op->flock) + error = backing_file->f_op->flock(backing_file, cmd, fl); + else + error = locks_lock_file_wait(backing_file, fl); + return error; +} + ssize_t fuse_backing_mmap(struct file *file, struct vm_area_struct *vma) { int ret; diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 923a0fbc698f..6608de8bea12 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -2695,12 +2695,18 @@ static int fuse_file_flock(struct file *file, int cmd, struct file_lock *fl) { struct inode *inode = file_inode(file); struct fuse_conn *fc = get_fuse_conn(inode); + struct fuse_file *ff = file->private_data; int err; +#ifdef CONFIG_FUSE_BPF + /* TODO - this is simply passthrough, not a proper BPF filter */ + if (ff->backing_file) + return fuse_file_flock_backing(file, cmd, fl); +#endif + if (fc->no_flock) { err = locks_lock_file_wait(file, fl); } else { - struct fuse_file *ff = file->private_data; /* emulate flock with POSIX locks */ ff->flock = true; diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index af20800db6c2..475442c9ad7e 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -1664,6 +1664,7 @@ int fuse_file_write_iter_backing(struct fuse_bpf_args *fa, void *fuse_file_write_iter_finalize(struct fuse_bpf_args *fa, struct kiocb *iocb, struct iov_iter *from); +int fuse_file_flock_backing(struct file *file, int cmd, struct file_lock *fl); ssize_t fuse_backing_mmap(struct file *file, struct vm_area_struct *vma); int fuse_file_fallocate_initialize(struct fuse_bpf_args *fa, diff --git a/tools/testing/selftests/filesystems/fuse/fuse_test.c b/tools/testing/selftests/filesystems/fuse/fuse_test.c index a52a9db1014c..bdb70e23b349 100644 --- a/tools/testing/selftests/filesystems/fuse/fuse_test.c +++ b/tools/testing/selftests/filesystems/fuse/fuse_test.c @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -1336,6 +1337,50 @@ static int mmap_test(const char *mount_dir) return result; } +static int flock_test(const char *mount_dir) +{ + const char *file = "file"; + int result = TEST_FAILURE; + int src_fd = -1; + int fuse_dev = -1; + int fd = -1, fd2 = -1; + int backing_fd = -1; + char *addr = NULL; + + TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC), + src_fd != -1); + TESTEQUAL(mount_fuse(mount_dir, -1, src_fd, &fuse_dev), 0); + TEST(fd = s_open(s_path(s(mount_dir), s(file)), + O_CREAT | O_RDWR | O_CLOEXEC, 0777), + fd != -1); + TEST(fd2 = s_open(s_path(s(mount_dir), s(file)), + O_RDWR | O_CLOEXEC, 0777), + fd2 != -1); + TESTSYSCALL(flock(fd, LOCK_EX | LOCK_NB)); + TESTCONDERR((flock(fd2, LOCK_EX | LOCK_NB)) == -1); + TESTCOND(errno == EAGAIN); + TESTSYSCALL(flock(fd, LOCK_UN)); + TESTSYSCALL(flock(fd2, LOCK_EX | LOCK_NB)); + TEST(backing_fd = s_open(s_path(s(ft_src), s(file)), + O_RDONLY | O_CLOEXEC), + backing_fd != -1); + TESTCONDERR((flock(backing_fd, LOCK_EX | LOCK_NB)) == -1); + TESTCOND(errno == EAGAIN); + close(fd2); + fd2 = 0; + TESTSYSCALL(flock(backing_fd, LOCK_EX | LOCK_NB)); + + result = TEST_SUCCESS; +out: + close(fd); + close(fd2); + close(backing_fd); + umount(mount_dir); + close(fuse_dev); + close(src_fd); + return result; +} + static int readdir_perms_test(const char *mount_dir) { int result = TEST_FAILURE; @@ -2091,6 +2136,7 @@ int main(int argc, char *argv[]) MAKE_TEST(bpf_test_no_readdirplus_without_nodeid), MAKE_TEST(bpf_test_revalidate_handle_backing_fd), MAKE_TEST(bpf_test_lookup_postfilter), + MAKE_TEST(flock_test), }; #undef MAKE_TEST From 603eba8de32231bdf343dd51460ac93344b02e37 Mon Sep 17 00:00:00 2001 From: Kyongho Cho Date: Mon, 24 Jul 2023 13:17:51 -0700 Subject: [PATCH 102/114] ANDROID: drm/ttm: export ttm_tt_unpopulate() Xclipse GPU driver depends on TTM for graphics buffer allocation and management. It is required by customers to add graphics memory swap to improve overall memory efficiency. However TTM's swap feature can't be used since it selects victim buffer by LRU and we can't choose a specific buffer to swap. Xclipse GPU driver implements its own swap feature by means of APIs of TTM. But the problem is TTM's buffer allocations statistics in ttm_tt.c which are local to that file. Whenever a graphic buffer is swapped out, the size of total page allocation should be decreased but it is not possible from the outside of ttm_tt.c. If the statistics is not maintained well, TTM ends up swapping out TTM buffers globally which is unexpected. Bug: 291101811 Bug: 293812967 Change-Id: I143c705834bcc196432c3ef59b49c9ec31f2e971 Signed-off-by: Kyongho Cho (cherry picked from commit 7edb035c79ac74397f9f09cf3775e6e751c3cd40) --- drivers/gpu/drm/ttm/ttm_tt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c index d505603930a7..c9c297af53a7 100644 --- a/drivers/gpu/drm/ttm/ttm_tt.c +++ b/drivers/gpu/drm/ttm/ttm_tt.c @@ -370,6 +370,7 @@ void ttm_tt_unpopulate(struct ttm_device *bdev, struct ttm_tt *ttm) ttm->page_flags &= ~TTM_TT_FLAG_PRIV_POPULATED; } +EXPORT_SYMBOL_GPL(ttm_tt_unpopulate); #ifdef CONFIG_DEBUG_FS From 84e746a23a796677975090a9157c1000b02e2d02 Mon Sep 17 00:00:00 2001 From: Kyongho Cho Date: Thu, 13 Jul 2023 00:21:16 -0700 Subject: [PATCH 103/114] ANDROID: ABI: update symbol list for Xclipse GPU 1 function symbol(s) added 'void ttm_tt_unpopulate(struct ttm_device*, struct ttm_tt*)' Bug: 291101811 Bug: 293812967 Change-Id: I0be29227b37734304f00fc7b8e2612a0fa6c3fff Signed-off-by: Kyongho Cho (cherry picked from commit db2c29e53dfe6a11d4565b5a462c6a640bf714ed) --- android/abi_gki_aarch64.stg | 10 ++++++++++ android/abi_gki_aarch64_exynos | 1 + 2 files changed, 11 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 41f0eecb2f04..8b17f4f7018a 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -369591,6 +369591,15 @@ elf_symbol { type_id: 0x1210f89b full_name: "ttm_tt_fini" } +elf_symbol { + id: 0xcbabaff3 + name: "ttm_tt_unpopulate" + is_defined: true + symbol_type: FUNCTION + crc: 0xa5cacfb1 + type_id: 0x14b4088f + full_name: "ttm_tt_unpopulate" +} elf_symbol { id: 0x0b4dd20d name: "tty_chars_in_buffer" @@ -382959,6 +382968,7 @@ interface { symbol_id: 0x677985f3 symbol_id: 0x6c2259cd symbol_id: 0xacf009d6 + symbol_id: 0xcbabaff3 symbol_id: 0x0b4dd20d symbol_id: 0xae3ac3f6 symbol_id: 0xa7c71d5a diff --git a/android/abi_gki_aarch64_exynos b/android/abi_gki_aarch64_exynos index a3b16126c54e..e30927aa26b1 100644 --- a/android/abi_gki_aarch64_exynos +++ b/android/abi_gki_aarch64_exynos @@ -2304,6 +2304,7 @@ ttm_resource_manager_usage ttm_sg_tt_init ttm_tt_fini + ttm_tt_unpopulate vm_get_page_prot __wake_up_locked ww_mutex_lock_interruptible From a58bd03093774d5ad8a0342bf6238dfde24a4203 Mon Sep 17 00:00:00 2001 From: Lorenzo Pieralisi Date: Tue, 4 Jul 2023 17:50:34 +0200 Subject: [PATCH 104/114] BACKPORT: FROMGIT: irqchip/gic-v3: Workaround for GIC-700 erratum 2941627 GIC700 erratum 2941627 may cause GIC-700 missing SPIs wake requests when SPIs are deactivated while targeting a sleeping CPU - ie a CPU for which the redistributor: GICR_WAKER.ProcessorSleep == 1 This runtime situation can happen if an SPI that has been activated on a core is retargeted to a different core, it becomes pending and the target core subsequently enters a power state quiescing the respective redistributor. When this situation is hit, the de-activation carried out on the core that activated the SPI (through either ICC_EOIR1_EL1 or ICC_DIR_EL1 register writes) does not trigger a wake requests for the sleeping GIC redistributor even if the SPI is pending. Work around the erratum by de-activating the SPI using the redistributor GICD_ICACTIVER register if the runtime conditions require it (ie the IRQ was retargeted between activation and de-activation). Bug: 292459437 Bug: 294180741 Change-Id: Ide915b8c925a631a7fc9ccebca19d9175def162e Signed-off-by: Lorenzo Pieralisi Signed-off-by: Marc Zyngier Link: https://lore.kernel.org/r/20230704155034.148262-1-lpieralisi@kernel.org (cherry picked from commit 6fe5c68ee6a1aae0ef291a56001e7888de547fa2 https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git irq/irqchip-fixes) Signed-off-by: Carlos Galo (cherry picked from commit d3b37a712ab7a5d73a2c66156debe2e3d48df007) --- Documentation/arm64/silicon-errata.rst | 3 ++ drivers/irqchip/irq-gic-v3.c | 62 +++++++++++++++++++++++++- 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/Documentation/arm64/silicon-errata.rst b/Documentation/arm64/silicon-errata.rst index 808ade4cc008..3283f49006d6 100644 --- a/Documentation/arm64/silicon-errata.rst +++ b/Documentation/arm64/silicon-errata.rst @@ -139,6 +139,9 @@ stable kernels. | ARM | MMU-500 | #841119,826419 | N/A | +----------------+-----------------+-----------------+-----------------------------+ +----------------+-----------------+-----------------+-----------------------------+ +| ARM | GIC-700 | #2941627 | ARM64_ERRATUM_2941627 | ++----------------+-----------------+-----------------+-----------------------------+ ++----------------+-----------------+-----------------+-----------------------------+ | Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_845719 | +----------------+-----------------+-----------------+-----------------------------+ | Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_843419 | diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c index 1684d19d46fb..a9d3d0e45d28 100644 --- a/drivers/irqchip/irq-gic-v3.c +++ b/drivers/irqchip/irq-gic-v3.c @@ -50,6 +50,8 @@ struct redist_region { static struct gic_chip_data_v3 gic_data __read_mostly; static DEFINE_STATIC_KEY_TRUE(supports_deactivate_key); +static DEFINE_STATIC_KEY_FALSE(gic_arm64_2941627_erratum); + #define GIC_ID_NR (1U << GICD_TYPER_ID_BITS(gic_data.rdists.gicd_typer)) #define GIC_LINE_NR min(GICD_TYPER_SPIS(gic_data.rdists.gicd_typer), 1020U) #define GIC_ESPI_NR GICD_TYPER_ESPIS(gic_data.rdists.gicd_typer) @@ -547,10 +549,39 @@ static void gic_irq_nmi_teardown(struct irq_data *d) gic_irq_set_prio(d, GICD_INT_DEF_PRI); } +static bool gic_arm64_erratum_2941627_needed(struct irq_data *d) +{ + enum gic_intid_range range; + + if (!static_branch_unlikely(&gic_arm64_2941627_erratum)) + return false; + + range = get_intid_range(d); + + /* + * The workaround is needed if the IRQ is an SPI and + * the target cpu is different from the one we are + * executing on. + */ + return (range == SPI_RANGE || range == ESPI_RANGE) && + !cpumask_test_cpu(raw_smp_processor_id(), + irq_data_get_effective_affinity_mask(d)); +} + static void gic_eoi_irq(struct irq_data *d) { write_gicreg(gic_irq(d), ICC_EOIR1_EL1); isb(); + + if (gic_arm64_erratum_2941627_needed(d)) { + /* + * Make sure the GIC stream deactivate packet + * issued by ICC_EOIR1_EL1 has completed before + * deactivating through GICD_IACTIVER. + */ + dsb(sy); + gic_poke_irq(d, GICD_ICACTIVER); + } } static void gic_eoimode1_eoi_irq(struct irq_data *d) @@ -561,7 +592,11 @@ static void gic_eoimode1_eoi_irq(struct irq_data *d) */ if (gic_irq(d) >= 8192 || irqd_is_forwarded_to_vcpu(d)) return; - gic_write_dir(gic_irq(d)); + + if (!gic_arm64_erratum_2941627_needed(d)) + gic_write_dir(gic_irq(d)); + else + gic_poke_irq(d, GICD_ICACTIVER); } static int gic_set_type(struct irq_data *d, unsigned int type) @@ -1747,6 +1782,12 @@ static bool gic_enable_quirk_hip06_07(void *data) return false; } +static bool gic_enable_quirk_arm64_2941627(void *data) +{ + static_branch_enable(&gic_arm64_2941627_erratum); + return true; +} + static const struct gic_quirk gic_quirks[] = { { .desc = "GICv3: Qualcomm MSM8996 broken firmware", @@ -1778,6 +1819,25 @@ static const struct gic_quirk gic_quirks[] = { .mask = 0xe8f00fff, .init = gic_enable_quirk_cavium_38539, }, + { + /* + * GIC-700: 2941627 workaround - IP variant [0,1] + * + */ + .desc = "GICv3: ARM64 erratum 2941627", + .iidr = 0x0400043b, + .mask = 0xff0e0fff, + .init = gic_enable_quirk_arm64_2941627, + }, + { + /* + * GIC-700: 2941627 workaround - IP variant [2] + */ + .desc = "GICv3: ARM64 erratum 2941627", + .iidr = 0x0402043b, + .mask = 0xff0f0fff, + .init = gic_enable_quirk_arm64_2941627, + }, { } }; From 886f4b317ef198a14020e218b2f78cdc9b963b24 Mon Sep 17 00:00:00 2001 From: Giuliano Procida Date: Wed, 2 Aug 2023 15:48:56 +0100 Subject: [PATCH 105/114] ANDROID: ABI: Update STG ABI to format version 2 If you have trouble reading this new file format, please refresh your prebuilt version of STG with repo sync. Bug: 294213765 Change-Id: I4d7ee716231956c5f4da1343cc0db5170aaaa3b1 Signed-off-by: Giuliano Procida (cherry picked from commit 29e2f3e3d1968adeff803689cb21434b9f12e3be) --- android/abi_gki_aarch64.stg | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 9c4e9ff33db0..fe856546d451 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -1,10 +1,12 @@ -version: 0x00000001 +version: 0x00000002 root_id: 0x84ea5130 -void { +special { id: 0x48b5725f + kind: VOID } -variadic { +special { id: 0xa52a0930 + kind: VARIADIC } pointer_reference { id: 0x0006db1d From 362955f0da5866426ae2ef38c4a3cc9f01437f0c Mon Sep 17 00:00:00 2001 From: kamasali Satyanarayan Date: Wed, 19 Jul 2023 14:57:13 +0530 Subject: [PATCH 106/114] ANDROID: GKI: Update abi_gki_aarch64_qcom Update abi_gki_aarch64_qcom with symbols needed for GCM_AES feature. Leaf changes summary: 3 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 2 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variables 2 Added functions: [A] 'function void crypto_inc(u8*, unsigned int)' [A] 'function void gf128mul_lle(be128*, const be128*)' 1 Added function symbol not referenced by debug info: [A] copy_page Bug: 279879797 Bug: 295000977 Change-Id: I4b735b3517a4cd41c94731577a2b5ba6febaceed Signed-off-by: kamasali Satyanarayan (cherry picked from commit 6eb48b89a513f80885fee2bffda0780aba392b23) --- android/abi_gki_aarch64.stg | 80 ++++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_qcom | 3 ++ 2 files changed, 83 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 8b17f4f7018a..e4360cd86e9f 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -12896,6 +12896,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x83286178 } +pointer_reference { + id: 0x2a5e3596 + kind: POINTER + pointee_type_id: 0x833830c5 +} pointer_reference { id: 0x2a5ed1c1 kind: POINTER @@ -23786,6 +23791,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xfcc23ab7 } +pointer_reference { + id: 0x35a7c1c3 + kind: POINTER + pointee_type_id: 0xfcdfe193 +} pointer_reference { id: 0x35ab6b03 kind: POINTER @@ -28336,6 +28346,11 @@ typedef { name: "bdaddr_t" referred_type_id: 0x0b690cd3 } +typedef { + id: 0x833830c5 + name: "be128" + referred_type_id: 0x3857842d +} typedef { id: 0x117ba19a name: "bh_end_io_t" @@ -33156,6 +33171,11 @@ qualified { qualifier: CONST qualified_type_id: 0x834f5c57 } +qualified { + id: 0xfcdfe193 + qualifier: CONST + qualified_type_id: 0x833830c5 +} qualified { id: 0xfd03f127 qualifier: CONST @@ -40205,6 +40225,11 @@ member { name: "a" type_id: 0xb02b353a } +member { + id: 0x80a3e3d3 + name: "a" + type_id: 0x7877cd32 +} member { id: 0x80f2085f name: "a" @@ -49135,6 +49160,12 @@ member { name: "b" type_id: 0x38df449f } +member { + id: 0x4ce00bb0 + name: "b" + type_id: 0x7877cd32 + offset: 64 +} member { id: 0x4cf8b2b0 name: "b" @@ -202703,6 +202734,15 @@ struct_union { member_id: 0x80f2085f } } +struct_union { + id: 0x3857842d + kind: STRUCT + definition { + bytesize: 16 + member_id: 0x80a3e3d3 + member_id: 0x4ce00bb0 + } +} struct_union { id: 0x3876ab11 kind: STRUCT @@ -277411,6 +277451,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x049d4e97 } +function { + id: 0x11bf8d42 + return_type_id: 0x48b5725f + parameter_id: 0x00c72527 + parameter_id: 0x4585663f +} function { id: 0x11c013b1 return_type_id: 0x48b5725f @@ -282742,6 +282788,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x2936263d } +function { + id: 0x1ad943f1 + return_type_id: 0x48b5725f + parameter_id: 0x2a5e3596 + parameter_id: 0x35a7c1c3 +} function { id: 0x1ad9d0a2 return_type_id: 0x48b5725f @@ -331131,6 +331183,13 @@ elf_symbol { type_id: 0x11228b4e full_name: "copy_highpage" } +elf_symbol { + id: 0xc1167624 + name: "copy_page" + is_defined: true + symbol_type: FUNCTION + crc: 0x4d0d163d +} elf_symbol { id: 0xd89255c2 name: "cpu_all_bits" @@ -332072,6 +332131,15 @@ elf_symbol { type_id: 0x9112accf full_name: "crypto_has_alg" } +elf_symbol { + id: 0x80e1f666 + name: "crypto_inc" + is_defined: true + symbol_type: FUNCTION + crc: 0x3ef051c8 + type_id: 0x11bf8d42 + full_name: "crypto_inc" +} elf_symbol { id: 0x62173925 name: "crypto_init_queue" @@ -343406,6 +343474,15 @@ elf_symbol { type_id: 0x11a59ba3 full_name: "getboottime64" } +elf_symbol { + id: 0x112db471 + name: "gf128mul_lle" + is_defined: true + symbol_type: FUNCTION + crc: 0x9e13f6f6 + type_id: 0x1ad943f1 + full_name: "gf128mul_lle" +} elf_symbol { id: 0xfe79963a name: "gfn_to_pfn_memslot" @@ -378696,6 +378773,7 @@ interface { symbol_id: 0x9e7d8d76 symbol_id: 0x610edc84 symbol_id: 0xd71898b4 + symbol_id: 0xc1167624 symbol_id: 0xd89255c2 symbol_id: 0x962b6a68 symbol_id: 0x33bbeca6 @@ -378801,6 +378879,7 @@ interface { symbol_id: 0xbf39e9a5 symbol_id: 0x4d4a15b0 symbol_id: 0xfc625698 + symbol_id: 0x80e1f666 symbol_id: 0x62173925 symbol_id: 0x053cd2eb symbol_id: 0xd1471c13 @@ -380058,6 +380137,7 @@ interface { symbol_id: 0x4ba4e06f symbol_id: 0xbac82e84 symbol_id: 0xa8319a8c + symbol_id: 0x112db471 symbol_id: 0xfe79963a symbol_id: 0xbc19d975 symbol_id: 0x6dc59ee7 diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index df8f0db3cc5c..701cc17236df 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -340,6 +340,7 @@ contig_page_data _copy_from_iter copy_from_kernel_nofault + copy_page __copy_overflow _copy_to_iter __cpu_active_mask @@ -429,6 +430,7 @@ crypto_get_default_rng crypto_has_ahash crypto_has_alg + crypto_inc crypto_init_queue __crypto_memneq crypto_put_default_rng @@ -1232,6 +1234,7 @@ get_user_ifreq get_user_pages get_zeroed_page + gf128mul_lle gh_rm_call gh_rm_notifier_register gh_rm_notifier_unregister From 00ff53e1e06236335c32a14a7bcb87ea5ce2cc0d Mon Sep 17 00:00:00 2001 From: Kalesh Singh Date: Tue, 1 Aug 2023 19:56:02 -0700 Subject: [PATCH 107/114] FROMGIT: Multi-gen LRU: Fix per-zone reclaim MGLRU has a LRU list for each zone for each type (anon/file) in each generation: long nr_pages[MAX_NR_GENS][ANON_AND_FILE][MAX_NR_ZONES]; The min_seq (oldest generation) can progress independently for each type but the max_seq (youngest generation) is shared for both anon and file. This is to maintain a common frame of reference. In order for eviction to advance the min_seq of a type, all the per-zone lists in the oldest generation of that type must be empty. The eviction logic only considers pages from eligible zones for eviction or promotion. scan_folios() { ... for (zone = sc->reclaim_idx; zone >= 0; zone--) { ... sort_folio(); // Promote ... isolate_folio(); // Evict } ... } Consider the system has the movable zone configured and default 4 generations. The current state of the system is as shown below (only illustrating one type for simplicity): Type: ANON Zone DMA32 Normal Movable Device Gen 0 0 0 4GB 0 Gen 1 0 1GB 1MB 0 Gen 2 1MB 4GB 1MB 0 Gen 3 1MB 1MB 1MB 0 Now consider there is a GFP_KERNEL allocation request (eligible zone index <= Normal), evict_folios() will return without doing any work since there are no pages to scan in the eligible zones of the oldest generation. Reclaim won't make progress until triggered from a ZONE_MOVABLE allocation request; which may not happen soon if there is a lot of free memory in the movable zone. This can lead to OOM kills, although there is 1GB pages in the Normal zone of Gen 1 that we have not yet tried to reclaim. This issue is not seen in the conventional active/inactive LRU since there are no per-zone lists. If there are no (not enough) folios to scan in the eligible zones, move folios from ineligible zone (zone_index > reclaim_index) to the next generation. This allows for the progression of min_seq and reclaiming from the next generation (Gen 1). Qualcomm, Mediatek and raspberrypi [1] discovered this issue independently. [1] https://github.com/raspberrypi/linux/issues/5395 Link: https://lkml.kernel.org/r/20230802025606.346758-1-kaleshsingh@google.com Fixes: ac35a4902374 ("mm: multi-gen LRU: minimal implementation") Change-Id: I5bbf44bd7ffe42f4347df4be59a75c1603c9b947 Signed-off-by: Kalesh Singh Reported-by: Charan Teja Kalla Reported-by: Lecopzer Chen Tested-by: AngeloGioacchino Del Regno [mediatek] Tested-by: Charan Teja Kalla Cc: Yu Zhao Cc: Barry Song Cc: Brian Geffon Cc: Jan Alexander Steffens (heftig) Cc: Matthias Brugger Cc: Oleksandr Natalenko Cc: Qi Zheng Cc: Steven Barrett Cc: Suleiman Souhlal Cc: Suren Baghdasaryan Cc: Aneesh Kumar K V Cc: Signed-off-by: Andrew Morton (cherry picked from commit 1462260adc41c5974362cb54ff577c2a15b8c7b2 https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable) Bug: 295078665 Bug: 288383787 Bug: 291719697 Signed-off-by: Kalesh Singh (cherry picked from commit a7adb988970e13c42f3c7ca4fe157c35e8e885fe) --- mm/vmscan.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index cd4323f336a6..cfde79671c01 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4789,7 +4789,8 @@ static int lru_gen_memcg_seg(struct lruvec *lruvec) * the eviction ******************************************************************************/ -static bool sort_folio(struct lruvec *lruvec, struct folio *folio, int tier_idx) +static bool sort_folio(struct lruvec *lruvec, struct folio *folio, struct scan_control *sc, + int tier_idx) { bool success; int gen = folio_lru_gen(folio); @@ -4839,6 +4840,13 @@ static bool sort_folio(struct lruvec *lruvec, struct folio *folio, int tier_idx) return true; } + /* ineligible */ + if (zone > sc->reclaim_idx) { + gen = folio_inc_gen(lruvec, folio, false); + list_move_tail(&folio->lru, &lrugen->folios[gen][type][zone]); + return true; + } + /* waiting for writeback */ if (folio_test_locked(folio) || folio_test_writeback(folio) || (type == LRU_GEN_FILE && folio_test_dirty(folio))) { @@ -4887,7 +4895,8 @@ static bool isolate_folio(struct lruvec *lruvec, struct folio *folio, struct sca static int scan_folios(struct lruvec *lruvec, struct scan_control *sc, int type, int tier, struct list_head *list) { - int gen, zone; + int i; + int gen; enum vm_event_item item; int sorted = 0; int scanned = 0; @@ -4903,9 +4912,10 @@ static int scan_folios(struct lruvec *lruvec, struct scan_control *sc, gen = lru_gen_from_seq(lrugen->min_seq[type]); - for (zone = sc->reclaim_idx; zone >= 0; zone--) { + for (i = MAX_NR_ZONES; i > 0; i--) { LIST_HEAD(moved); int skipped = 0; + int zone = (sc->reclaim_idx + i) % MAX_NR_ZONES; struct list_head *head = &lrugen->folios[gen][type][zone]; while (!list_empty(head)) { @@ -4919,7 +4929,7 @@ static int scan_folios(struct lruvec *lruvec, struct scan_control *sc, scanned += delta; - if (sort_folio(lruvec, folio, tier)) + if (sort_folio(lruvec, folio, sc, tier)) sorted += delta; else if (isolate_folio(lruvec, folio, sc)) { list_add(&folio->lru, list); From 6ad0f047f2e9c8fcddd40e33aee2711798f22564 Mon Sep 17 00:00:00 2001 From: Jindong Yue Date: Tue, 1 Aug 2023 17:49:42 +0900 Subject: [PATCH 108/114] ANDROID: ABI: Update symbol list for imx 2 function symbol(s) added 'bool kthread_freezable_should_stop(bool*)' 'int v4l2_enum_dv_timings_cap(struct v4l2_enum_dv_timings*, const struct v4l2_dv_timings_cap*, v4l2_check_dv_timings_fnc*, void*)' Bug: 283014063 Bug: 294459321 Change-Id: Ib4f8f9c67277501dcaa2fa5d8f2867d5fa670de3 Signed-off-by: Jindong Yue (cherry picked from commit 3bd3d137019f24d73379e14e9a5384cd72d567a6) --- android/abi_gki_aarch64.stg | 59 +++++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_imx | 19 ++++++++++++ 2 files changed, 78 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index e4360cd86e9f..195230e7b2f7 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -17846,6 +17846,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9de31a69 } +pointer_reference { + id: 0x2de928d9 + kind: POINTER + pointee_type_id: 0x9de445fa +} pointer_reference { id: 0x2de9a54b kind: POINTER @@ -26416,6 +26421,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc5725d9a } +pointer_reference { + id: 0x3bcd0c02 + kind: POINTER + pointee_type_id: 0xc574d697 +} pointer_reference { id: 0x3bd2bf42 kind: POINTER @@ -29941,6 +29951,11 @@ typedef { name: "uuid_t" referred_type_id: 0x0b526877 } +typedef { + id: 0x9de445fa + name: "v4l2_check_dv_timings_fnc" + referred_type_id: 0xf2553153 +} typedef { id: 0x7c355df7 name: "v4l2_ctrl_notify_fnc" @@ -30296,6 +30311,11 @@ qualified { qualifier: CONST qualified_type_id: 0x658ec0e0 } +qualified { + id: 0xc574d697 + qualifier: CONST + qualified_type_id: 0x6594ecd4 +} qualified { id: 0xc596e113 qualifier: CONST @@ -292788,6 +292808,14 @@ function { return_type_id: 0x6720d32f parameter_id: 0x34e62f02 } +function { + id: 0x90bd2dd7 + return_type_id: 0x6720d32f + parameter_id: 0x376789dd + parameter_id: 0x3bcd0c02 + parameter_id: 0x2de928d9 + parameter_id: 0x18bd6530 +} function { id: 0x90bfa7c3 return_type_id: 0x6720d32f @@ -315495,6 +315523,12 @@ function { return_type_id: 0x6d7f5ff6 parameter_id: 0x33d0e528 } +function { + id: 0xf2553153 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x324e7f0f + parameter_id: 0x18bd6530 +} function { id: 0xf25d597f return_type_id: 0x6d7f5ff6 @@ -316234,6 +316268,11 @@ function { parameter_id: 0x11cfee5a parameter_id: 0x064d6086 } +function { + id: 0xfad7a092 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x11cfee5a +} function { id: 0xfaddfa97 return_type_id: 0x6d7f5ff6 @@ -349298,6 +349337,15 @@ elf_symbol { type_id: 0x1dbb8bb2 full_name: "kthread_flush_worker" } +elf_symbol { + id: 0x2fbecafd + name: "kthread_freezable_should_stop" + is_defined: true + symbol_type: FUNCTION + crc: 0xca7d8764 + type_id: 0xfad7a092 + full_name: "kthread_freezable_should_stop" +} elf_symbol { id: 0x49232ca9 name: "kthread_mod_delayed_work" @@ -373691,6 +373739,15 @@ elf_symbol { type_id: 0x10e93841 full_name: "v4l2_device_unregister_subdev" } +elf_symbol { + id: 0x5c266e47 + name: "v4l2_enum_dv_timings_cap" + is_defined: true + symbol_type: FUNCTION + crc: 0x922ecd29 + type_id: 0x90bd2dd7 + full_name: "v4l2_enum_dv_timings_cap" +} elf_symbol { id: 0xd40ec4d6 name: "v4l2_event_dequeue" @@ -380784,6 +380841,7 @@ interface { symbol_id: 0xeae01788 symbol_id: 0x84839142 symbol_id: 0xa9c37a1d + symbol_id: 0x2fbecafd symbol_id: 0x49232ca9 symbol_id: 0xec609d3e symbol_id: 0x44f92a6d @@ -383495,6 +383553,7 @@ interface { symbol_id: 0xdc3fca57 symbol_id: 0x23051526 symbol_id: 0xad9b8781 + symbol_id: 0x5c266e47 symbol_id: 0xd40ec4d6 symbol_id: 0xcd00be9c symbol_id: 0xef302a24 diff --git a/android/abi_gki_aarch64_imx b/android/abi_gki_aarch64_imx index ac16191a3545..478cb5cab475 100644 --- a/android/abi_gki_aarch64_imx +++ b/android/abi_gki_aarch64_imx @@ -822,6 +822,7 @@ flush_delayed_work flush_work __flush_workqueue + __folio_put fortify_panic fput free_candev @@ -969,7 +970,9 @@ i2c_smbus_read_i2c_block_data i2c_smbus_write_byte i2c_smbus_write_byte_data + __i2c_smbus_xfer i2c_smbus_xfer + __i2c_transfer i2c_transfer i2c_transfer_buffer_flags i2c_unregister_device @@ -1143,6 +1146,7 @@ kstrtoull kthread_bind kthread_create_on_node + kthread_freezable_should_stop kthread_park kthread_parkme kthread_should_park @@ -1324,6 +1328,9 @@ nsecs_to_jiffies ns_to_timespec64 __num_online_cpus + nvmem_cell_get + nvmem_cell_put + nvmem_cell_read nvmem_cell_read_u32 nvmem_cell_read_u64 nvmem_device_read @@ -1377,6 +1384,7 @@ of_gen_pool_get of_get_child_by_name of_get_compatible_child + of_get_cpu_node of_get_display_timing of_get_i2c_adapter_by_node of_get_mac_address @@ -1442,6 +1450,8 @@ of_usb_update_otg_caps oops_in_progress open_candev + page_pinner_inited + __page_pinner_put_page page_pool_alloc_pages page_pool_create page_pool_destroy @@ -1586,6 +1596,7 @@ platform_irqchip_probe platform_irq_count platform_msi_create_irq_domain + pm_genpd_add_subdomain pm_genpd_init pm_genpd_remove pm_genpd_remove_device @@ -1597,6 +1608,7 @@ pm_runtime_forbid pm_runtime_force_resume pm_runtime_force_suspend + pm_runtime_get_if_active __pm_runtime_idle pm_runtime_no_callbacks __pm_runtime_resume @@ -1796,10 +1808,14 @@ rtc_time64_to_tm rtc_tm_to_time64 rtc_update_irq + rt_mutex_lock + rt_mutex_trylock + rt_mutex_unlock rtnl_is_locked rtnl_lock rtnl_unlock sched_clock + sched_setattr_nocheck sched_set_fifo_low schedule schedule_hrtimeout @@ -2248,6 +2264,7 @@ __v4l2_device_register_subdev_nodes v4l2_device_unregister v4l2_device_unregister_subdev + v4l2_enum_dv_timings_cap v4l2_event_dequeue v4l2_event_pending v4l2_event_queue @@ -2298,6 +2315,7 @@ v4l2_m2m_unregister_media_controller v4l2_m2m_update_start_streaming_state v4l2_m2m_update_stop_streaming_state + v4l2_match_dv_timings v4l2_s_parm_cap v4l2_src_change_event_subscribe v4l2_subdev_call_wrappers @@ -2414,6 +2432,7 @@ xdp_do_redirect xdp_master_redirect xdp_return_frame + xdp_return_frame_rx_napi xdp_rxq_info_is_reg __xdp_rxq_info_reg xdp_rxq_info_reg_mem_model From 714fa9ba62c945b98806e7c00f9d54386f29414e Mon Sep 17 00:00:00 2001 From: lambert wang Date: Fri, 21 Jul 2023 08:24:24 +0800 Subject: [PATCH 109/114] ANDROID: GKI: Update mtk ABI symbol list 6 function symbol(s) added 'struct device* device_find_child_by_name(struct device*, const char*)' 'void pci_free_irq(struct pci_dev*, unsigned int, void*)' 'int pci_request_irq(struct pci_dev*, unsigned int, irq_handler_t, irq_handler_t, void*, const char*, ...)' 'int pm_schedule_suspend(struct device*, unsigned int)' 'int rtnl_configure_link(struct net_device*, const struct ifinfomsg*)' 'struct net_device* rtnl_create_link(struct net*, const char*, unsigned char, const struct rtnl_link_ops*, struct nlattr**, struct netlink_ext_ack*)' in which: * device_find_child_by_name/rtnl_configure_link/rtnl_create_link are needed by wwan.ko. Bug: 291865296 Bug: 294798992 Change-Id: I38b8a69313667318944387e1a19287b9c01cafee Signed-off-by: zhaoping shu Signed-off-by: xiayu zhang Signed-off-by: ivan yang Signed-off-by: lambert wang (cherry picked from commit ca372ba9e750c31045f366e262db01ef8663c7aa) --- android/abi_gki_aarch64.stg | 153 ++++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_mtk | 24 ++++++ 2 files changed, 177 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 195230e7b2f7..5bc3b1342cf1 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -27451,6 +27451,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd06de2a9 } +pointer_reference { + id: 0x3e8d7c9a + kind: POINTER + pointee_type_id: 0xd07514f5 +} pointer_reference { id: 0x3e8e572f kind: POINTER @@ -30891,6 +30896,11 @@ qualified { qualifier: CONST qualified_type_id: 0x30a49fb4 } +qualified { + id: 0xd07514f5 + qualifier: CONST + qualified_type_id: 0x3193e55d +} qualified { id: 0xd08a0c68 qualifier: CONST @@ -39296,6 +39306,12 @@ member { name: "__i_nlink" type_id: 0x4585663f } +member { + id: 0xed0c7bc2 + name: "__ifi_pad" + type_id: 0x5d8155a5 + offset: 8 +} member { id: 0x1d90045d name: "__iter_idx" @@ -100762,6 +100778,35 @@ member { type_id: 0x0fa767da offset: 448 } +member { + id: 0x49aaa6b3 + name: "ifi_change" + type_id: 0x4585663f + offset: 96 +} +member { + id: 0xccfc5cc3 + name: "ifi_family" + type_id: 0x5d8155a5 +} +member { + id: 0xe5765ac4 + name: "ifi_flags" + type_id: 0x4585663f + offset: 64 +} +member { + id: 0x95c94564 + name: "ifi_index" + type_id: 0x6720d32f + offset: 32 +} +member { + id: 0x58fe8d2e + name: "ifi_type" + type_id: 0xc93e017b + offset: 16 +} member { id: 0x9056806a name: "ifindex" @@ -224341,6 +224386,20 @@ struct_union { member_id: 0x95dac005 } } +struct_union { + id: 0x3193e55d + kind: STRUCT + name: "ifinfomsg" + definition { + bytesize: 16 + member_id: 0xccfc5cc3 + member_id: 0xed0c7bc2 + member_id: 0x58fe8d2e + member_id: 0x95c94564 + member_id: 0xe5765ac4 + member_id: 0x49aaa6b3 + } +} struct_union { id: 0x41f1df67 kind: STRUCT @@ -280172,6 +280231,13 @@ function { return_type_id: 0x48b5725f parameter_id: 0x15a30023 } +function { + id: 0x15f1cac1 + return_type_id: 0x48b5725f + parameter_id: 0x11e6864c + parameter_id: 0x4585663f + parameter_id: 0x18bd6530 +} function { id: 0x15f330e3 return_type_id: 0x48b5725f @@ -294318,6 +294384,12 @@ function { parameter_id: 0x32a623d7 parameter_id: 0x3e10b518 } +function { + id: 0x91d35e28 + return_type_id: 0x6720d32f + parameter_id: 0x32a623d7 + parameter_id: 0x3e8d7c9a +} function { id: 0x91d5541c return_type_id: 0x6720d32f @@ -300578,6 +300650,17 @@ function { return_type_id: 0x6720d32f parameter_id: 0x156a41de } +function { + id: 0x98da7fb1 + return_type_id: 0x6720d32f + parameter_id: 0x11e6864c + parameter_id: 0x4585663f + parameter_id: 0xd92b1d75 + parameter_id: 0xd92b1d75 + parameter_id: 0x18bd6530 + parameter_id: 0x3e10b518 + parameter_id: 0xa52a0930 +} function { id: 0x98de7695 return_type_id: 0x6720d32f @@ -316752,6 +316835,16 @@ function { return_type_id: 0x6d7f5ff6 parameter_id: 0x040d1b01 } +function { + id: 0xffb4ff33 + return_type_id: 0x32a623d7 + parameter_id: 0x0ca27481 + parameter_id: 0x3e10b518 + parameter_id: 0x5d8155a5 + parameter_id: 0x337b7b81 + parameter_id: 0x0277bf8a + parameter_id: 0x07dcdbe1 +} function { id: 0xffbaa126 return_type_id: 0x32a623d7 @@ -334105,6 +334198,15 @@ elf_symbol { type_id: 0xadd088bd full_name: "device_find_child" } +elf_symbol { + id: 0x01805ccc + name: "device_find_child_by_name" + is_defined: true + symbol_type: FUNCTION + crc: 0xfe92284a + type_id: 0xad414cb1 + full_name: "device_find_child_by_name" +} elf_symbol { id: 0xd81e7ab3 name: "device_for_each_child" @@ -355582,6 +355684,15 @@ elf_symbol { type_id: 0x578fa618 full_name: "pci_find_next_capability" } +elf_symbol { + id: 0x08190210 + name: "pci_free_irq" + is_defined: true + symbol_type: FUNCTION + crc: 0xdaf171ab + type_id: 0x15f1cac1 + full_name: "pci_free_irq" +} elf_symbol { id: 0x8ffabaa9 name: "pci_free_irq_vectors" @@ -355879,6 +355990,15 @@ elf_symbol { type_id: 0x185a3adc full_name: "pci_remove_root_bus" } +elf_symbol { + id: 0xf6896e34 + name: "pci_request_irq" + is_defined: true + symbol_type: FUNCTION + crc: 0x17161b4b + type_id: 0x98da7fb1 + full_name: "pci_request_irq" +} elf_symbol { id: 0x324ff23b name: "pci_request_region" @@ -358174,6 +358294,15 @@ elf_symbol { type_id: 0x1192ec84 full_name: "pm_runtime_set_autosuspend_delay" } +elf_symbol { + id: 0xe263dcb4 + name: "pm_schedule_suspend" + is_defined: true + symbol_type: FUNCTION + crc: 0xe5c44150 + type_id: 0x9c00c8ec + full_name: "pm_schedule_suspend" +} elf_symbol { id: 0x59caaeac name: "pm_stay_awake" @@ -362080,6 +362209,24 @@ elf_symbol { type_id: 0x90657259 full_name: "rtc_valid_tm" } +elf_symbol { + id: 0x19b7aeab + name: "rtnl_configure_link" + is_defined: true + symbol_type: FUNCTION + crc: 0x85c289df + type_id: 0x91d35e28 + full_name: "rtnl_configure_link" +} +elf_symbol { + id: 0xfccc22f4 + name: "rtnl_create_link" + is_defined: true + symbol_type: FUNCTION + crc: 0x817f3567 + type_id: 0xffb4ff33 + full_name: "rtnl_create_link" +} elf_symbol { id: 0x50b92bc4 name: "rtnl_is_locked" @@ -379151,6 +379298,7 @@ interface { symbol_id: 0xe85fa1f1 symbol_id: 0xe6df6df5 symbol_id: 0x0b165427 + symbol_id: 0x01805ccc symbol_id: 0xd81e7ab3 symbol_id: 0x3b013a69 symbol_id: 0x0576df29 @@ -381535,6 +381683,7 @@ interface { symbol_id: 0x27f20808 symbol_id: 0x63876663 symbol_id: 0xdea420f5 + symbol_id: 0x08190210 symbol_id: 0x8ffabaa9 symbol_id: 0x50bce06e symbol_id: 0x133a7a3e @@ -381568,6 +381717,7 @@ interface { symbol_id: 0x5b0002a1 symbol_id: 0x2c8694e0 symbol_id: 0xa21a61f0 + symbol_id: 0xf6896e34 symbol_id: 0x324ff23b symbol_id: 0xde0961b5 symbol_id: 0x93ed1ac4 @@ -381823,6 +381973,7 @@ interface { symbol_id: 0x878b97bb symbol_id: 0x1f3f17bd symbol_id: 0x53f4166f + symbol_id: 0xe263dcb4 symbol_id: 0x59caaeac symbol_id: 0x64f92138 symbol_id: 0x2e13b831 @@ -382257,6 +382408,8 @@ interface { symbol_id: 0xa4ad8391 symbol_id: 0x5c1197ba symbol_id: 0x22e1072c + symbol_id: 0x19b7aeab + symbol_id: 0xfccc22f4 symbol_id: 0x50b92bc4 symbol_id: 0x8c0dd14a symbol_id: 0x3480e8df diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index e3872c033f45..9a933b3f74c6 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -395,6 +395,7 @@ device_del device_destroy device_find_child + device_find_child_by_name device_for_each_child device_get_child_node_count device_get_match_data @@ -1200,6 +1201,7 @@ ip_send_check __ipv6_addr_type ipv6_dev_find + ipv6_ext_hdr ipv6_skip_exthdr ipv6_stub __irq_apply_affinity_hint @@ -1337,10 +1339,14 @@ kthread_flush_work kthread_flush_worker __kthread_init_worker + kthread_park + kthread_parkme kthread_queue_delayed_work kthread_queue_work + kthread_should_park kthread_should_stop kthread_stop + kthread_unpark kthread_worker_fn ktime_get ktime_get_coarse_with_offset @@ -1692,6 +1698,7 @@ out_of_line_wait_on_bit_timeout overflowuid page_endio + page_frag_free page_pinner_inited __page_pinner_put_page page_pool_alloc_pages @@ -1715,6 +1722,7 @@ param_ops_uint param_ops_ullong param_ops_ulong + param_ops_ushort param_set_bool param_set_charp param_set_uint @@ -1722,18 +1730,25 @@ pci_alloc_irq_vectors_affinity pci_ats_supported pci_bus_type + pci_clear_master pci_device_group + pci_device_is_present pci_dev_put pci_disable_ats pci_disable_device + pcie_capability_clear_and_set_word + pcie_capability_read_word pci_enable_ats pci_find_ext_capability + pci_free_irq pci_free_irq_vectors pci_generic_config_read32 pci_generic_config_write32 pci_get_slot pci_host_probe pci_irq_vector + pci_load_and_free_saved_state + pci_load_saved_state pci_lock_rescan_remove pcim_enable_device pcim_iomap_regions @@ -1747,10 +1762,12 @@ pci_read_config_word __pci_register_driver pci_remove_root_bus + pci_request_irq pci_restore_state pci_save_state pci_set_master pci_stop_root_bus + pci_store_saved_state pci_unlock_rescan_remove pci_unregister_driver pci_write_config_dword @@ -1869,6 +1886,7 @@ __pm_runtime_set_status __pm_runtime_suspend __pm_runtime_use_autosuspend + pm_schedule_suspend __pm_stay_awake pm_stay_awake pm_suspend_default_s2idle @@ -1933,9 +1951,11 @@ queue_delayed_work_on queue_work_on radix_tree_delete + radix_tree_gang_lookup radix_tree_insert radix_tree_lookup radix_tree_maybe_preload + radix_tree_next_chunk radix_tree_tagged ___ratelimit raw_notifier_call_chain @@ -2123,6 +2143,8 @@ rtc_tm_to_time64 rtc_update_irq rtc_valid_tm + rtnl_configure_link + rtnl_create_link rtnl_is_locked rtnl_link_register rtnl_link_unregister @@ -2526,6 +2548,7 @@ timecounter_init timecounter_read timer_of_init + timer_reduce timer_unstable_counter_workaround topology_clear_scale_freq_source topology_update_thermal_pressure @@ -2733,6 +2756,7 @@ __tracepoint_task_newtask trace_print_array_seq trace_print_flags_seq + trace_print_hex_seq trace_print_symbols_seq __trace_puts trace_raw_output_prep From c5c84f48b7682058cc366dbc39baa6775cac71f7 Mon Sep 17 00:00:00 2001 From: Junki Min Date: Fri, 4 Aug 2023 15:01:02 +0900 Subject: [PATCH 110/114] ANDROID: ABI: Update symbol for Exynos SoC Update symbols for Exynos WLBT driver. 1 function symbol(s) added 'unsigned long __find_nth_bit(const unsigned long*, unsigned long, unsigned long)' Bug: 294470344 Bug: 295107610 Change-Id: I9f8d9d20f643b34bbc475dde468dbaa11f56e667 Signed-off-by: Junki Min (cherry picked from commit 960d9828eee1f1e74682e84cbab856bdb0c9d126) --- android/abi_gki_aarch64.stg | 10 ++++++++++ android/abi_gki_aarch64_exynos | 17 +++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 5bc3b1342cf1..cb453216f82d 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -318081,6 +318081,15 @@ elf_symbol { type_id: 0x20cd94dc full_name: "__fdget" } +elf_symbol { + id: 0xaf8ee687 + name: "__find_nth_bit" + is_defined: true + symbol_type: FUNCTION + crc: 0x3eccbe2c + type_id: 0x3ec500b9 + full_name: "__find_nth_bit" +} elf_symbol { id: 0x746a66fc name: "__flush_workqueue" @@ -377506,6 +377515,7 @@ interface { symbol_id: 0x80f1cf36 symbol_id: 0x3e32c80e symbol_id: 0x5298aa39 + symbol_id: 0xaf8ee687 symbol_id: 0x746a66fc symbol_id: 0x47a334c4 symbol_id: 0xebf4b11f diff --git a/android/abi_gki_aarch64_exynos b/android/abi_gki_aarch64_exynos index e30927aa26b1..d8c9ffac57b6 100644 --- a/android/abi_gki_aarch64_exynos +++ b/android/abi_gki_aarch64_exynos @@ -42,6 +42,7 @@ blocking_notifier_chain_register blocking_notifier_chain_unregister bpf_trace_run1 + bpf_trace_run10 bpf_trace_run2 bpf_trace_run3 bpf_trace_run4 @@ -325,6 +326,7 @@ fd_install fget _find_first_bit + _find_first_zero_bit _find_last_bit _find_next_and_bit _find_next_bit @@ -701,6 +703,7 @@ ___ratelimit raw_notifier_call_chain raw_notifier_chain_register + raw_notifier_chain_unregister _raw_read_lock _raw_read_unlock _raw_spin_lock @@ -1025,7 +1028,6 @@ ww_mutex_unlock # required by cfg80211.ko - bpf_trace_run10 csum_partial debugfs_rename __dev_change_net_namespace @@ -1227,8 +1229,10 @@ match_string memory_read_from_buffer migrate_swap + perf_event_create_kernel_counter + perf_event_enable + perf_event_read_local pick_highest_pushable_task - raw_notifier_chain_unregister raw_spin_rq_lock_nested raw_spin_rq_unlock _raw_write_trylock @@ -1272,6 +1276,7 @@ __traceiter_android_vh_binder_restore_priority __traceiter_android_vh_binder_set_priority __traceiter_android_vh_binder_wakeup_ilocked + __traceiter_android_vh_jiffies_update __traceiter_android_vh_scheduler_tick __traceiter_android_vh_syscall_prctl_finished __traceiter_binder_transaction_received @@ -1302,6 +1307,7 @@ __tracepoint_android_vh_binder_restore_priority __tracepoint_android_vh_binder_set_priority __tracepoint_android_vh_binder_wakeup_ilocked + __tracepoint_android_vh_jiffies_update __tracepoint_android_vh_scheduler_tick __tracepoint_android_vh_syscall_prctl_finished __tracepoint_binder_transaction_received @@ -2048,6 +2054,9 @@ # required by scsc_wlan.ko arp_tbl + __cpuhp_remove_state + __cpuhp_state_add_instance + __cpuhp_state_remove_instance dev_addr_mod dev_alloc_name __dev_queue_xmit @@ -2056,6 +2065,7 @@ dql_reset dst_release ether_setup + __find_nth_bit for_each_kernel_tracepoint in4_pton in6_pton @@ -2200,7 +2210,6 @@ drm_syncobj_get_handle drm_syncobj_replace_fence __fdget - _find_first_zero_bit __folio_put get_random_u32 __get_task_comm @@ -2261,7 +2270,6 @@ __traceiter_gpu_mem_total __tracepoint_android_vh_meminfo_proc_show __tracepoint_gpu_mem_total - ttm_bo_eviction_valuable ttm_bo_init_reserved ttm_bo_kmap ttm_bo_kunmap @@ -2576,5 +2584,6 @@ __skb_get_hash __skb_gso_segment tasklet_unlock_wait + ttm_bo_eviction_valuable ufshcd_mcq_poll_cqe_nolock unregister_netdevice_many From 90bc763c0c6ad99d9dd31d6f633335cbbba5d2bf Mon Sep 17 00:00:00 2001 From: davidchao Date: Mon, 1 Feb 2021 16:46:13 +0800 Subject: [PATCH 111/114] ANDROID: thermal: Add vendor thermal genl check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add vendor enable_thermal_genl_check logic. Filter on-die tz genl event. To avoid thermal-hal being woken up all the time by thermal genl events, only the selected thermal_zone and cooling_device can send events from kernel. Bug: 170682696 Bug: 291846209 Test: boot and thermal-hal can receive thermal genl events from kernel Change-Id: Idb3f4b07a2a2740c01d8785910878bfe6edc832d Signed-off-by: davidchao Signed-off-by: Will McVicker (cherry picked from commit 6ca2ff04a1b85c0145c965ab8562cd8072b4f3f5) Bug: 287008367 Bug: 295178116 Signed-off-by: André Draszik --- drivers/android/vendor_hooks.c | 1 + drivers/thermal/thermal_netlink.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 482830505f1b..0a30c8cbe7bd 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -312,3 +312,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_cold_pageout_skip); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rmqueue_smallest_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_one_page_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_regmap_update); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_enable_thermal_genl_check); diff --git a/drivers/thermal/thermal_netlink.c b/drivers/thermal/thermal_netlink.c index e2d78a996b5f..468eaae5ca82 100644 --- a/drivers/thermal/thermal_netlink.c +++ b/drivers/thermal/thermal_netlink.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include "thermal_core.h" @@ -274,6 +275,11 @@ static int thermal_genl_send_event(enum thermal_genl_event event, struct sk_buff *msg; int ret = -EMSGSIZE; void *hdr; + int enable_thermal_genl = 1; + + trace_android_vh_enable_thermal_genl_check(event, p->tz_id, &enable_thermal_genl); + if (!enable_thermal_genl) + return 0; msg = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); if (!msg) From 66f772a2f339451ae6e5e4f3ae7e17a83d8e8a96 Mon Sep 17 00:00:00 2001 From: Will McVicker Date: Wed, 19 Jul 2023 15:22:06 -0700 Subject: [PATCH 112/114] ANDROID: GKI: Update pixel symbol list for thermal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the following symbol to allow vendor module to filter on-die tz genl event. This helps avoid thermal-hal being woken up all the time by thermal genl events, only the selected thermal_zone and cooling_device can send events from kernel. 1 function symbol(s) added 'int __traceiter_android_vh_enable_thermal_genl_check(void*, int, int, int*)' 1 variable symbol(s) added 'struct tracepoint __tracepoint_android_vh_enable_thermal_genl_check' Bug: 291846209 Change-Id: I763595ff1366196c6a16ff57d608042743fbe9fd Signed-off-by: Will McVicker (cherry picked from commit 3a8999c6830ef79a8d00301b633ae06899fc9b96) Bug: 287008367 Bug: 295178116 Signed-off-by: André Draszik --- android/abi_gki_aarch64.stg | 28 ++++++++++++++++++++++++++++ android/abi_gki_aarch64_pixel | 2 ++ 2 files changed, 30 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index cb453216f82d..a2076b03b434 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -302067,6 +302067,14 @@ function { parameter_id: 0x6720d32f parameter_id: 0x3c2755a3 } +function { + id: 0x9a2abc7b + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0x13580d6c +} function { id: 0x9a2af11b return_type_id: 0x6720d32f @@ -321412,6 +321420,15 @@ elf_symbol { type_id: 0x9bdc9aae full_name: "__traceiter_android_vh_dup_task_struct" } +elf_symbol { + id: 0xdcaa59a3 + name: "__traceiter_android_vh_enable_thermal_genl_check" + is_defined: true + symbol_type: FUNCTION + crc: 0xc39a1e16 + type_id: 0x9a2abc7b + full_name: "__traceiter_android_vh_enable_thermal_genl_check" +} elf_symbol { id: 0x7ebac47a name: "__traceiter_android_vh_enable_thermal_power_throttle" @@ -324562,6 +324579,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_dup_task_struct" } +elf_symbol { + id: 0x54b2cd01 + name: "__tracepoint_android_vh_enable_thermal_genl_check" + is_defined: true + symbol_type: OBJECT + crc: 0x29cc54bf + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_enable_thermal_genl_check" +} elf_symbol { id: 0x188eab44 name: "__tracepoint_android_vh_enable_thermal_power_throttle" @@ -377885,6 +377911,7 @@ interface { symbol_id: 0x9dbd7b92 symbol_id: 0x42312ccc symbol_id: 0xf432d1c9 + symbol_id: 0xdcaa59a3 symbol_id: 0x7ebac47a symbol_id: 0xf586d5b6 symbol_id: 0x1f554c2a @@ -378235,6 +378262,7 @@ interface { symbol_id: 0xe2d7542c symbol_id: 0x988719fa symbol_id: 0x732a182b + symbol_id: 0x54b2cd01 symbol_id: 0x188eab44 symbol_id: 0xe7584e1c symbol_id: 0x0d418d38 diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index 73ea56df4c25..63a91761992d 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -1977,6 +1977,7 @@ __traceiter_android_rvh_typec_tcpci_get_vbus __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit + __traceiter_android_vh_enable_thermal_genl_check __traceiter_android_vh_ipi_stop __traceiter_android_vh_scheduler_tick __traceiter_android_vh_sysrq_crash @@ -2005,6 +2006,7 @@ __tracepoint_android_rvh_typec_tcpci_get_vbus __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit + __tracepoint_android_vh_enable_thermal_genl_check __tracepoint_android_vh_ipi_stop __tracepoint_android_vh_scheduler_tick __tracepoint_android_vh_sysrq_crash From 13fe53c62dac0aa05da906f608047a341f862632 Mon Sep 17 00:00:00 2001 From: Giuliano Procida Date: Wed, 2 Aug 2023 15:48:56 +0100 Subject: [PATCH 113/114] ANDROID: ABI: Update STG ABI to format version 2 If you have trouble reading this new file format, please refresh your prebuilt version of STG with repo sync. Bug: 294213765 Change-Id: I4d7ee716231956c5f4da1343cc0db5170aaaa3b1 Signed-off-by: Giuliano Procida (cherry picked from commit 29e2f3e3d1968adeff803689cb21434b9f12e3be) --- android/abi_gki_aarch64.stg | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index a2076b03b434..8086b4e2dba3 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -1,10 +1,12 @@ -version: 0x00000001 +version: 0x00000002 root_id: 0x84ea5130 -void { +special { id: 0x48b5725f + kind: VOID } -variadic { +special { id: 0xa52a0930 + kind: VARIADIC } pointer_reference { id: 0x0006db1d From 71e862d942c4c068518f56d6b797e9c16b41caee Mon Sep 17 00:00:00 2001 From: John Moon Date: Thu, 17 Aug 2023 08:20:27 -0700 Subject: [PATCH 114/114] ANDROID: build: Add --nocheck_bzl_visibility Currently, we use a few internal Kleaf rules from our custom Bazel rules. A recent upstream change restricted visibility of these rules which causes build errors like: Starlark file //build/kernel/kleaf/impl:common_providers.bzl is not visible for loading from package //. Check the file's `visibility()` declaration. While we work to transition to supported Kleaf APIs, let's pass --nocheck_bzl_visbility to the build so that we can continue using the private Kleaf APIs. This change should be reverted after migrating to the Kleaf public APIs. Change-Id: I1cb807e9e97706e57296be9684842e5e972430ac Signed-off-by: John Moon --- build_with_bazel.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build_with_bazel.py b/build_with_bazel.py index 2877001001e4..e28a97f22cab 100755 --- a/build_with_bazel.py +++ b/build_with_bazel.py @@ -147,6 +147,7 @@ class BazelBuilder: "query", "--ui_event_filters=-info", "--noshow_progress", + "--nocheck_bzl_visibility", query, ] @@ -286,6 +287,7 @@ class BazelBuilder: self.user_opts.extend([ "--user_kmi_symbol_lists=//msm-kernel:android/abi_gki_aarch64_qcom", "--ignore_missing_projects", + "--nocheck_bzl_visibility", ]) if self.dry_run: