diff --git a/BUILD.bazel b/BUILD.bazel index d16cef6dbcae..1035027d3f17 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -15,7 +15,7 @@ load( "kernel_modules_install", "merged_kernel_uapi_headers", ) -load(":modules.bzl", "COMMON_GKI_MODULES_LIST") +load(":modules.bzl", "get_gki_modules_list") package( default_visibility = [ @@ -47,10 +47,49 @@ checkpatch( checkpatch_pl = "scripts/checkpatch.pl", ) -write_file( +# Deprecated - Use arch specific files from below. +alias( name = "gki_system_dlkm_modules", - out = "android/gki_system_dlkm_modules", - content = COMMON_GKI_MODULES_LIST + [ + actual = "gki_system_dlkm_modules_arm64", + deprecation = """ + Common list for all architectures is deprecated. + Instead use the file corresponding to the architecture used: + i.e. `gki_system_dlkm_modules_{arch}` + """, +) + +alias( + name = "android/gki_system_dlkm_modules", + actual = "android/gki_system_dlkm_modules_arm64", + deprecation = """ + Common list for all architectures is deprecated. + Instead use the file corresponding to the architecture used: + i.e. `gki_system_dlkm_modules_{arch}` + """, +) + +write_file( + name = "gki_system_dlkm_modules_arm64", + out = "android/gki_system_dlkm_modules_arm64", + content = get_gki_modules_list("arm64") + [ + # Ensure new line at the end. + "", + ], +) + +write_file( + name = "gki_system_dlkm_modules_x86_64", + out = "android/gki_system_dlkm_modules_x86_64", + content = get_gki_modules_list("x86_64") + [ + # Ensure new line at the end. + "", + ], +) + +write_file( + name = "gki_system_dlkm_modules_risc64", + out = "android/gki_system_dlkm_modules_riscv64", + content = get_gki_modules_list("riscv64") + [ # Ensure new line at the end. "", ], @@ -60,16 +99,20 @@ filegroup( name = "aarch64_additional_kmi_symbol_lists", srcs = [ # keep sorted + "android/abi_gki_aarch64_asus", "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", + "android/abi_gki_aarch64_meizu", "android/abi_gki_aarch64_mtk", "android/abi_gki_aarch64_oplus", "android/abi_gki_aarch64_pixel", "android/abi_gki_aarch64_qcom", + "android/abi_gki_aarch64_rockchip", + "android/abi_gki_aarch64_tuxera", "android/abi_gki_aarch64_unisoc", "android/abi_gki_aarch64_virtual_device", "android/abi_gki_aarch64_vivo", @@ -81,7 +124,7 @@ filegroup( define_common_kernels(target_configs = { "kernel_aarch64": { "kmi_symbol_list_strict_mode": True, - "module_implicit_outs": COMMON_GKI_MODULES_LIST, + "module_implicit_outs": get_gki_modules_list("arm64"), "kmi_symbol_list": "android/abi_gki_aarch64", "kmi_symbol_list_add_only": True, "additional_kmi_symbol_lists": [":aarch64_additional_kmi_symbol_lists"], @@ -91,12 +134,12 @@ define_common_kernels(target_configs = { }, "kernel_aarch64_16k": { "kmi_symbol_list_strict_mode": False, - "module_implicit_outs": COMMON_GKI_MODULES_LIST, + "module_implicit_outs": get_gki_modules_list("arm64"), "make_goals": _GKI_AARCH64_MAKE_GOALS, }, "kernel_aarch64_debug": { "kmi_symbol_list_strict_mode": False, - "module_implicit_outs": COMMON_GKI_MODULES_LIST, + "module_implicit_outs": get_gki_modules_list("arm64"), "kmi_symbol_list": "android/abi_gki_aarch64", "kmi_symbol_list_add_only": True, "additional_kmi_symbol_lists": [":aarch64_additional_kmi_symbol_lists"], @@ -106,19 +149,19 @@ define_common_kernels(target_configs = { }, "kernel_riscv64": { "kmi_symbol_list_strict_mode": False, - "module_implicit_outs": COMMON_GKI_MODULES_LIST, + "module_implicit_outs": get_gki_modules_list("riscv64"), "make_goals": _GKI_RISCV64_MAKE_GOALS, }, "kernel_x86_64": { "kmi_symbol_list_strict_mode": False, - "module_implicit_outs": COMMON_GKI_MODULES_LIST, + "module_implicit_outs": get_gki_modules_list("x86_64"), "protected_exports_list": "android/abi_gki_protected_exports_x86_64", "protected_modules_list": "android/gki_x86_64_protected_modules", "make_goals": _GKI_X86_64_MAKE_GOALS, }, "kernel_x86_64_debug": { "kmi_symbol_list_strict_mode": False, - "module_implicit_outs": COMMON_GKI_MODULES_LIST, + "module_implicit_outs": get_gki_modules_list("x86_64"), "protected_exports_list": "android/abi_gki_protected_exports_x86_64", "protected_modules_list": "android/gki_x86_64_protected_modules", "make_goals": _GKI_X86_64_MAKE_GOALS, @@ -575,7 +618,7 @@ kernel_build( "modules", "rk3399-rock-pi-4b.dtb", ], - module_outs = COMMON_GKI_MODULES_LIST + _ROCKPI4_MODULE_OUTS + _ROCKPI4_WATCHDOG_MODULE_OUTS, + module_outs = get_gki_modules_list("arm64") + _ROCKPI4_MODULE_OUTS + _ROCKPI4_WATCHDOG_MODULE_OUTS, visibility = ["//visibility:private"], ) @@ -598,7 +641,7 @@ kernel_build( "modules", "rk3399-rock-pi-4b.dtb", ], - module_outs = COMMON_GKI_MODULES_LIST + _ROCKPI4_MODULE_OUTS, + module_outs = get_gki_modules_list("arm64") + _ROCKPI4_MODULE_OUTS, visibility = ["//visibility:private"], ) diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb index d71ce6cc1c7c..b93c5ad0cccd 100644 --- a/Documentation/ABI/testing/sysfs-bus-usb +++ b/Documentation/ABI/testing/sysfs-bus-usb @@ -264,6 +264,17 @@ Description: attached to the port will not be detected, initialized, or enumerated. +What: /sys/bus/usb/devices/...//port/early_stop +Date: Sep 2022 +Contact: Ray Chi +Description: + Some USB hosts have some watchdog mechanisms so that the device + may enter ramdump if it takes a long time during port initialization. + This attribute allows each port just has two attempts so that the + port initialization will be failed quickly. In addition, if a port + which is marked with early_stop has failed to initialize, it will ignore + all future connections until this attribute is clear. + What: /sys/bus/usb/devices/...//port/state Date: June 2023 Contact: Roy Luo diff --git a/Documentation/admin-guide/cgroup-v2.rst b/Documentation/admin-guide/cgroup-v2.rst index dc254a3cb956..632bba4e8a1d 100644 --- a/Documentation/admin-guide/cgroup-v2.rst +++ b/Documentation/admin-guide/cgroup-v2.rst @@ -2015,31 +2015,33 @@ that attribute: no-change Do not modify the I/O priority class. - none-to-rt - For requests that do not have an I/O priority class (NONE), - change the I/O priority class into RT. Do not modify - the I/O priority class of other requests. + promote-to-rt + For requests that have a non-RT I/O priority class, change it into RT. + Also change the priority level of these requests to 4. Do not modify + the I/O priority of requests that have priority class RT. restrict-to-be For requests that do not have an I/O priority class or that have I/O - priority class RT, change it into BE. Do not modify the I/O priority - class of requests that have priority class IDLE. + priority class RT, change it into BE. Also change the priority level + of these requests to 0. Do not modify the I/O priority class of + requests that have priority class IDLE. idle Change the I/O priority class of all requests into IDLE, the lowest I/O priority class. + none-to-rt + Deprecated. Just an alias for promote-to-rt. + The following numerical values are associated with the I/O priority policies: -+-------------+---+ -| no-change | 0 | -+-------------+---+ -| none-to-rt | 1 | -+-------------+---+ -| rt-to-be | 2 | -+-------------+---+ -| all-to-idle | 3 | -+-------------+---+ ++----------------+---+ +| no-change | 0 | ++----------------+---+ +| rt-to-be | 2 | ++----------------+---+ +| all-to-idle | 3 | ++----------------+---+ The numerical value that corresponds to each I/O priority class is as follows: @@ -2055,9 +2057,13 @@ The numerical value that corresponds to each I/O priority class is as follows: The algorithm to set the I/O priority class for a request is as follows: -- Translate the I/O priority class policy into a number. -- Change the request I/O priority class into the maximum of the I/O priority - class policy number and the numerical I/O priority class. +- If I/O priority class policy is promote-to-rt, change the request I/O + priority class to IOPRIO_CLASS_RT and change the request I/O priority + level to 4. +- If I/O priorityt class is not promote-to-rt, translate the I/O priority + class policy into a number, then change the request I/O priority class + into the maximum of the I/O priority class policy number and the numerical + I/O priority class. PID --- diff --git a/Documentation/devicetree/bindings/hypervisor/mediatek,geniezone-hyp.yaml b/Documentation/devicetree/bindings/hypervisor/mediatek,geniezone-hyp.yaml new file mode 100644 index 000000000000..ab89a4c310cb --- /dev/null +++ b/Documentation/devicetree/bindings/hypervisor/mediatek,geniezone-hyp.yaml @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/hypervisor/mediatek,geniezone-hyp.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: MediaTek GenieZone hypervisor + +maintainers: + - Yingshiuan Pan + +description: + This interface is designed for integrating GenieZone hypervisor into Android + Virtualization Framework(AVF) along with Crosvm as a VMM. + It acts like a wrapper for every hypercall to GenieZone hypervisor in + order to control guest VM lifecycles and virtual interrupt injections. + +properties: + compatible: + const: mediatek,geniezone-hyp + +required: + - compatible + +additionalProperties: false + +examples: + - | + hypervisor { + compatible = "mediatek,geniezone-hyp"; + }; diff --git a/Documentation/devicetree/bindings/reserved-memory/reserved-memory.yaml b/Documentation/devicetree/bindings/reserved-memory/reserved-memory.yaml index 44f72bcf1782..010219138858 100644 --- a/Documentation/devicetree/bindings/reserved-memory/reserved-memory.yaml +++ b/Documentation/devicetree/bindings/reserved-memory/reserved-memory.yaml @@ -52,6 +52,30 @@ properties: Address and Length pairs. Specifies regions of memory that are acceptable to allocate from. + iommu-addresses: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: > + A list of phandle and specifier pairs that describe static IO virtual + address space mappings and carveouts associated with a given reserved + memory region. The phandle in the first cell refers to the device for + which the mapping or carveout is to be created. + + The specifier consists of an address/size pair and denotes the IO + virtual address range of the region for the given device. The exact + format depends on the values of the "#address-cells" and "#size-cells" + properties of the device referenced via the phandle. + + When used in combination with a "reg" property, an IOVA mapping is to + be established for this memory region. One example where this can be + useful is to create an identity mapping for physical memory that the + firmware has configured some hardware to access (such as a bootsplash + framebuffer). + + If no "reg" property is specified, the "iommu-addresses" property + defines carveout regions in the IOVA space for the given device. This + can be useful if a certain memory region should not be mapped through + the IOMMU. + no-map: type: boolean description: > @@ -89,12 +113,69 @@ allOf: - no-map oneOf: - - required: - - reg + - oneOf: + - required: + - reg - - required: - - size + - required: + - size + + - oneOf: + # IOMMU reservations + - required: + - iommu-addresses + + # IOMMU mappings + - required: + - reg + - iommu-addresses additionalProperties: true +examples: + - | + / { + compatible = "foo"; + model = "foo"; + + #address-cells = <2>; + #size-cells = <2>; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + adsp_resv: reservation-adsp { + /* + * Restrict IOVA mappings for ADSP buffers to the 512 MiB region + * from 0x40000000 - 0x5fffffff. Anything outside is reserved by + * the ADSP for I/O memory and private memory allocations. + */ + iommu-addresses = <&adsp 0x0 0x00000000 0x00 0x40000000>, + <&adsp 0x0 0x60000000 0xff 0xa0000000>; + }; + + fb: framebuffer@90000000 { + reg = <0x0 0x90000000 0x0 0x00800000>; + iommu-addresses = <&dc0 0x0 0x90000000 0x0 0x00800000>; + }; + }; + + bus@0 { + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x0 0x0 0x40000000>; + + adsp: adsp@2990000 { + reg = <0x2990000 0x2000>; + memory-region = <&adsp_resv>; + }; + + dc0: display@15200000 { + reg = <0x15200000 0x10000>; + memory-region = <&fb>; + }; + }; + }; ... diff --git a/Documentation/filesystems/erofs.rst b/Documentation/filesystems/erofs.rst index 05e03d54af1a..df681e4391c0 100644 --- a/Documentation/filesystems/erofs.rst +++ b/Documentation/filesystems/erofs.rst @@ -34,8 +34,14 @@ Here is the main features of EROFS: - Little endian on-disk design; - - 4KiB block size and 32-bit block addresses, therefore 16TiB address space - at most for now; + - Block-based distribution and file-based distribution over fscache are + supported; + + - Support multiple devices to refer to external blobs, which can be used + for container images; + + - 32-bit block addresses for each device, therefore 16TiB address space at + most with 4KiB block size for now; - Two inode layouts for different requirements: diff --git a/Documentation/virt/geniezone/introduction.rst b/Documentation/virt/geniezone/introduction.rst new file mode 100644 index 000000000000..fb9fa41bcfb8 --- /dev/null +++ b/Documentation/virt/geniezone/introduction.rst @@ -0,0 +1,86 @@ +.. SPDX-License-Identifier: GPL-2.0 + +====================== +GenieZone Introduction +====================== + +Overview +======== +GenieZone hypervisor(gzvm) is a type-1 hypervisor that supports various virtual +machine types and provides security features such as TEE-like scenarios and +secure boot. It can create guest VMs for security use cases and has +virtualization capabilities for both platform and interrupt. Although the +hypervisor can be booted independently, it requires the assistance of GenieZone +hypervisor kernel driver(gzvm-ko) to leverage the ability of Linux kernel for +vCPU scheduling, memory management, inter-VM communication and virtio backend +support. + +Supported Architecture +====================== +GenieZone now only supports MediaTek ARM64 SoC. + +Features +======== + +- vCPU Management + +VM manager aims to provide vCPUs on the basis of time sharing on physical CPUs. +It requires Linux kernel in host VM for vCPU scheduling and VM power management. + +- Memory Management + +Direct use of physical memory from VMs is forbidden and designed to be dictated +to the privilege models managed by GenieZone hypervisor for security reason. +With the help of gzvm-ko, the hypervisor would be able to manipulate memory as +objects. + +- Virtual Platform + +We manage to emulate a virtual mobile platform for guest OS running on guest +VM. The platform supports various architecture-defined devices, such as +virtual arch timer, GIC, MMIO, PSCI, and exception watching...etc. + +- Inter-VM Communication + +Communication among guest VMs was provided mainly on RPC. More communication +mechanisms were to be provided in the future based on VirtIO-vsock. + +- Device Virtualization + +The solution is provided using the well-known VirtIO. The gzvm-ko would +redirect MMIO traps back to VMM where the virtual devices are mostly emulated. +Ioeventfd is implemented using eventfd for signaling host VM that some IO +events in guest VMs need to be processed. + +- Interrupt virtualization + +All Interrupts during some guest VMs running would be handled by GenieZone +hypervisor with the help of gzvm-ko, both virtual and physical ones. In case +there's no guest VM running out there, physical interrupts would be handled by +host VM directly for performance reason. Irqfd is also implemented using +eventfd for accepting vIRQ requests in gzvm-ko. + +Platform architecture component +=============================== + +- vm + +The vm component is responsible for setting up the capability and memory +management for the protected VMs. The capability is mainly about the lifecycle +control and boot context initialization. And the memory management is highly +integrated with ARM 2-stage translation tables to convert VA to IPA to PA under +proper security measures required by protected VMs. + +- vcpu + +The vcpu component is the core of virtualizing aarch64 physical CPU runnable, +and it controls the vCPU lifecycle including creating, running and destroying. +With self-defined exit handler, the vm component would be able to act +accordingly before terminated. + +- vgic + +The vgic component exposes control interfaces to Linux kernel via irqchip, and +we intend to support all SPI, PPI, and SGI. When it comes to virtual +interrupts, the GenieZone hypervisor would write to list registers and trigger +vIRQ injection in guest VMs via GIC. diff --git a/Documentation/virt/index.rst b/Documentation/virt/index.rst index 418d540f5484..9e73018d6a8c 100644 --- a/Documentation/virt/index.rst +++ b/Documentation/virt/index.rst @@ -16,6 +16,7 @@ Linux Virtualization Support coco/sev-guest hyperv/index gunyah/index + geniezone/introduction .. only:: html and subproject diff --git a/MAINTAINERS b/MAINTAINERS index 6fd6d02893b8..cfbf50390ac5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -8665,6 +8665,19 @@ F: include/vdso/ F: kernel/time/vsyscall.c F: lib/vdso/ +GENIEZONE HYPERVISOR DRIVER +M: Yingshiuan Pan +M: Ze-Yu Wang +M: Yi-De Wu +F: Documentation/devicetree/bindings/hypervisor/mediatek,geniezone-hyp.yaml +F: Documentation/virt/geniezone/ +F: arch/arm64/geniezone/ +F: arch/arm64/include/uapi/asm/gzvm_arch.h +F: drivers/virt/geniezone/ +F: include/linux/gzvm_drv.h +F include/uapi/asm-generic/gzvm_arch.h +F: include/uapi/linux/gzvm.h + GENWQE (IBM Generic Workqueue Card) M: Frank Haverkamp S: Supported diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index b14e8d1a06f5..0e606f7fb2ae 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -158,6 +158,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x285ee61e } +pointer_reference { + id: 0x0087f4f8 + kind: POINTER + pointee_type_id: 0x285f357e +} pointer_reference { id: 0x0092c032 kind: POINTER @@ -223,6 +228,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x292a6e73 } +pointer_reference { + id: 0x00daeb4b + kind: POINTER + pointee_type_id: 0x292b4bb0 +} pointer_reference { id: 0x00dd92af kind: POINTER @@ -573,6 +583,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x225b7cde } +pointer_reference { + id: 0x0206e829 + kind: POINTER + pointee_type_id: 0x225b463b +} pointer_reference { id: 0x020c1a12 kind: POINTER @@ -878,6 +893,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x27461240 } +pointer_reference { + id: 0x034b35b4 + kind: POINTER + pointee_type_id: 0x276c304c +} pointer_reference { id: 0x035330ac kind: POINTER @@ -1828,6 +1848,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x30293561 } +pointer_reference { + id: 0x06a428cc + kind: POINTER + pointee_type_id: 0x30d045ac +} pointer_reference { id: 0x06afdad0 kind: POINTER @@ -1983,6 +2008,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x37265f81 } +pointer_reference { + id: 0x076327a3 + kind: POINTER + pointee_type_id: 0x37cc7810 +} pointer_reference { id: 0x07665a1f kind: POINTER @@ -2498,6 +2528,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x0f54a4fe } +pointer_reference { + id: 0x0945c216 + kind: POINTER + pointee_type_id: 0x0f57eec7 +} pointer_reference { id: 0x09483d5e kind: POINTER @@ -2573,6 +2608,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x0cfb4b7c } +pointer_reference { + id: 0x09b53a9f + kind: POINTER + pointee_type_id: 0x0c940ce3 +} pointer_reference { id: 0x09bb9b7e kind: POINTER @@ -2608,6 +2648,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x0dd91f48 } +pointer_reference { + id: 0x09eee7e5 + kind: POINTER + pointee_type_id: 0x0dfb7909 +} pointer_reference { id: 0x09f1b886 kind: POINTER @@ -3348,6 +3393,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1a8d07bb } +pointer_reference { + id: 0x0c33de94 + kind: POINTER + pointee_type_id: 0x1a8f9ccc +} pointer_reference { id: 0x0c3509f9 kind: POINTER @@ -3448,6 +3498,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1b5d6044 } +pointer_reference { + id: 0x0c483694 + kind: POINTER + pointee_type_id: 0x1b603ccd +} pointer_reference { id: 0x0c485c36 kind: POINTER @@ -3488,6 +3543,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1b77cf3e } +pointer_reference { + id: 0x0c5168e8 + kind: POINTER + pointee_type_id: 0x1b05453e +} pointer_reference { id: 0x0c55d62d kind: POINTER @@ -3648,6 +3708,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1b841a62 } +pointer_reference { + id: 0x0c715d8d + kind: POINTER + pointee_type_id: 0x1b8590a8 +} pointer_reference { id: 0x0c74ddbe kind: POINTER @@ -3983,6 +4048,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x197157bd } +pointer_reference { + id: 0x0ccdc0f9 + kind: POINTER + pointee_type_id: 0x1977e57b +} pointer_reference { id: 0x0cce6a6a kind: POINTER @@ -4083,6 +4153,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x19d93429 } +pointer_reference { + id: 0x0ce80834 + kind: POINTER + pointee_type_id: 0x19e0c64c +} pointer_reference { id: 0x0ce9a2bb kind: POINTER @@ -4468,6 +4543,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1e9be71c } +pointer_reference { + id: 0x0d36eefe + kind: POINTER + pointee_type_id: 0x1e9b5d67 +} pointer_reference { id: 0x0d370eee kind: POINTER @@ -4598,6 +4678,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1f060fb8 } +pointer_reference { + id: 0x0d52f144 + kind: POINTER + pointee_type_id: 0x1f0b238f +} pointer_reference { id: 0x0d53cd40 kind: POINTER @@ -4633,6 +4718,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1f202bf3 } +pointer_reference { + id: 0x0d599e4a + kind: POINTER + pointee_type_id: 0x1f269fb6 +} pointer_reference { id: 0x0d5a6860 kind: POINTER @@ -4688,6 +4778,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1fde992a } +pointer_reference { + id: 0x0d6927be + kind: POINTER + pointee_type_id: 0x1fe47867 +} pointer_reference { id: 0x0d6b4ee3 kind: POINTER @@ -4698,6 +4793,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1fee56e5 } +pointer_reference { + id: 0x0d6c28a3 + kind: POINTER + pointee_type_id: 0x1ff04410 +} pointer_reference { id: 0x0d6cb897 kind: POINTER @@ -5103,6 +5203,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1c88dd20 } +pointer_reference { + id: 0x0db22504 + kind: POINTER + pointee_type_id: 0x1c88728f +} pointer_reference { id: 0x0db25a6d kind: POINTER @@ -5158,6 +5263,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1cbe3d95 } +pointer_reference { + id: 0x0dc11255 + kind: POINTER + pointee_type_id: 0x1d44afc8 +} pointer_reference { id: 0x0dc35132 kind: POINTER @@ -5523,6 +5633,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x12c0cb4c } +pointer_reference { + id: 0x0e211675 + kind: POINTER + pointee_type_id: 0x12c4bf48 +} pointer_reference { id: 0x0e211c44 kind: POINTER @@ -5533,6 +5648,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x12c79320 } +pointer_reference { + id: 0x0e2271e2 + kind: POINTER + pointee_type_id: 0x12c92116 +} pointer_reference { id: 0x0e22e25f kind: POINTER @@ -6708,6 +6828,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x167c181d } +pointer_reference { + id: 0x0f12d1e7 + kind: POINTER + pointee_type_id: 0x160ba102 +} pointer_reference { id: 0x0f161b41 kind: POINTER @@ -7058,6 +7183,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x17d51999 } +pointer_reference { + id: 0x0f65ebe2 + kind: POINTER + pointee_type_id: 0x17d74917 +} pointer_reference { id: 0x0f67218c kind: POINTER @@ -7483,6 +7613,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x154ed535 } +pointer_reference { + id: 0x0fc3c654 + kind: POINTER + pointee_type_id: 0x154fffcf +} pointer_reference { id: 0x0fc46487 kind: POINTER @@ -7968,6 +8103,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x6fb840c8 } +pointer_reference { + id: 0x117e85f5 + kind: POINTER + pointee_type_id: 0x6fbaf148 +} pointer_reference { id: 0x118d97cb kind: POINTER @@ -8158,6 +8298,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x6054a6ab } +pointer_reference { + id: 0x128a8a58 + kind: POINTER + pointee_type_id: 0x606acffd +} pointer_reference { id: 0x1291c430 kind: POINTER @@ -8283,6 +8428,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x668004f3 } +pointer_reference { + id: 0x13323bbb + kind: POINTER + pointee_type_id: 0x66880871 +} pointer_reference { id: 0x1333434c kind: POINTER @@ -8453,6 +8603,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x7a249348 } +pointer_reference { + id: 0x14199568 + kind: POINTER + pointee_type_id: 0x7a26b33d +} pointer_reference { id: 0x141d28a8 kind: POINTER @@ -8528,6 +8683,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x7bdc8a60 } +pointer_reference { + id: 0x146a39bf + kind: POINTER + pointee_type_id: 0x7be80061 +} pointer_reference { id: 0x14731fc7 kind: POINTER @@ -8928,6 +9088,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x708fc0fe } +pointer_reference { + id: 0x16b45c7f + kind: POINTER + pointee_type_id: 0x70919762 +} pointer_reference { id: 0x16b46fbd kind: POINTER @@ -8938,6 +9103,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x71511504 } +pointer_reference { + id: 0x16c5c0ab + kind: POINTER + pointee_type_id: 0x7157e430 +} pointer_reference { id: 0x16df644d kind: POINTER @@ -10348,6 +10518,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x5f502f26 } +pointer_reference { + id: 0x1d44afc8 + kind: POINTER + pointee_type_id: 0x5f5259bd +} pointer_reference { id: 0x1d44eec5 kind: POINTER @@ -10408,6 +10583,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x5fd666ab } +pointer_reference { + id: 0x1d6b5d95 + kind: POINTER + pointee_type_id: 0x5fed90c9 +} pointer_reference { id: 0x1d6e33e5 kind: POINTER @@ -10693,6 +10873,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x5057492d } +pointer_reference { + id: 0x1e85f467 + kind: POINTER + pointee_type_id: 0x50573700 +} pointer_reference { id: 0x1e870478 kind: POINTER @@ -11198,6 +11383,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xa8a462e4 } +pointer_reference { + id: 0x20bba379 + kind: POINTER + pointee_type_id: 0xa8ae6b7a +} pointer_reference { id: 0x20d23755 kind: POINTER @@ -11783,6 +11973,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xa405746d } +pointer_reference { + id: 0x239187d3 + kind: POINTER + pointee_type_id: 0xa406f9d2 +} pointer_reference { id: 0x23947191 kind: POINTER @@ -11998,6 +12193,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xb837e52e } +pointer_reference { + id: 0x24a22acc + kind: POINTER + pointee_type_id: 0xb8c84daf +} pointer_reference { id: 0x24bbc433 kind: POINTER @@ -12063,6 +12263,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xb99f29b6 } +pointer_reference { + id: 0x24f9cd24 + kind: POINTER + pointee_type_id: 0xb9a7d20f +} pointer_reference { id: 0x250095e2 kind: POINTER @@ -12328,6 +12533,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xb0090c73 } +pointer_reference { + id: 0x2696c21b + kind: POINTER + pointee_type_id: 0xb01beef1 +} pointer_reference { id: 0x269af4e9 kind: POINTER @@ -12678,6 +12888,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x8b3c441e } +pointer_reference { + id: 0x285f357e + kind: POINTER + pointee_type_id: 0x8b3c3364 +} pointer_reference { id: 0x2862f859 kind: POINTER @@ -12708,6 +12923,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x88c7ff3b } +pointer_reference { + id: 0x28a3a74b + kind: POINTER + pointee_type_id: 0x88ce7bb2 +} pointer_reference { id: 0x28ac1164 kind: POINTER @@ -12993,6 +13213,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x8d58e470 } +pointer_reference { + id: 0x29c64ab1 + kind: POINTER + pointee_type_id: 0x8d59cc59 +} pointer_reference { id: 0x29ccb7ed kind: POINTER @@ -13373,6 +13598,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x84ef9574 } +pointer_reference { + id: 0x2bae2afe + kind: POINTER + pointee_type_id: 0x84f84d67 +} pointer_reference { id: 0x2bb01e4c kind: POINTER @@ -13398,6 +13628,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x84be8096 } +pointer_reference { + id: 0x2bc65a97 + kind: POINTER + pointee_type_id: 0x85598cc2 +} pointer_reference { id: 0x2bc93f35 kind: POINTER @@ -14158,6 +14393,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9b022eae } +pointer_reference { + id: 0x2c50e503 + kind: POINTER + pointee_type_id: 0x9b037291 +} pointer_reference { id: 0x2c510476 kind: POINTER @@ -14953,6 +15193,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9bbdba09 } +pointer_reference { + id: 0x2c7fb451 + kind: POINTER + pointee_type_id: 0x9bbe37da +} pointer_reference { id: 0x2c7ffaf6 kind: POINTER @@ -15333,6 +15578,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x98f1d602 } +pointer_reference { + id: 0x2cacacc0 + kind: POINTER + pointee_type_id: 0x98f2559e +} pointer_reference { id: 0x2caea882 kind: POINTER @@ -15363,6 +15613,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x98881e2d } +pointer_reference { + id: 0x2cb2c9fe + kind: POINTER + pointee_type_id: 0x988bc164 +} pointer_reference { id: 0x2cb3cf30 kind: POINTER @@ -15613,6 +15868,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9921a72c } +pointer_reference { + id: 0x2cd8a9c9 + kind: POINTER + pointee_type_id: 0x992241b9 +} pointer_reference { id: 0x2cd9dff0 kind: POINTER @@ -16043,6 +16303,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9e4766bb } +pointer_reference { + id: 0x2d01fcba + kind: POINTER + pointee_type_id: 0x9e471477 +} pointer_reference { id: 0x2d0240fc kind: POINTER @@ -16208,6 +16473,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9e071849 } +pointer_reference { + id: 0x2d12100b + kind: POINTER + pointee_type_id: 0x9e08a6b2 +} pointer_reference { id: 0x2d126960 kind: POINTER @@ -16573,6 +16843,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9e8fd7cb } +pointer_reference { + id: 0x2d34349d + kind: POINTER + pointee_type_id: 0x9e9034ea +} pointer_reference { id: 0x2d3466af kind: POINTER @@ -16623,6 +16898,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9eb7e15e } +pointer_reference { + id: 0x2d3dc4f9 + kind: POINTER + pointee_type_id: 0x9eb7f57a +} pointer_reference { id: 0x2d3df092 kind: POINTER @@ -16818,6 +17098,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9f1dcaea } +pointer_reference { + id: 0x2d591a0e + kind: POINTER + pointee_type_id: 0x9f248ea4 +} pointer_reference { id: 0x2d594ead kind: POINTER @@ -16933,6 +17218,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9fd1a709 } +pointer_reference { + id: 0x2d645d4d + kind: POINTER + pointee_type_id: 0x9fd193aa +} pointer_reference { id: 0x2d646f41 kind: POINTER @@ -17093,6 +17383,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9f9d90bf } +pointer_reference { + id: 0x2d77f22a + kind: POINTER + pointee_type_id: 0x9f9f2e37 +} pointer_reference { id: 0x2d7870f7 kind: POINTER @@ -18618,11 +18913,21 @@ pointer_reference { kind: POINTER pointee_type_id: 0x92075c0f } +pointer_reference { + id: 0x2e133d23 + kind: POINTER + pointee_type_id: 0x920c1213 +} pointer_reference { id: 0x2e136b7a kind: POINTER pointee_type_id: 0x920d4b76 } +pointer_reference { + id: 0x2e137a28 + kind: POINTER + pointee_type_id: 0x920d0e3f +} pointer_reference { id: 0x2e1466a0 kind: POINTER @@ -18638,6 +18943,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9215c28e } +pointer_reference { + id: 0x2e157919 + kind: POINTER + pointee_type_id: 0x921502fa +} pointer_reference { id: 0x2e160375 kind: POINTER @@ -18743,6 +19053,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x92d3b873 } +pointer_reference { + id: 0x2e2690ae + kind: POINTER + pointee_type_id: 0x92daa424 +} pointer_reference { id: 0x2e27223f kind: POINTER @@ -18798,6 +19113,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x92fce902 } +pointer_reference { + id: 0x2e2f0b11 + kind: POINTER + pointee_type_id: 0x92fccadb +} pointer_reference { id: 0x2e2ff28a kind: POINTER @@ -18823,6 +19143,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x92878d53 } +pointer_reference { + id: 0x2e323a43 + kind: POINTER + pointee_type_id: 0x92880f91 +} pointer_reference { id: 0x2e334b9e kind: POINTER @@ -18838,6 +19163,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x929702b9 } +pointer_reference { + id: 0x2e360c76 + kind: POINTER + pointee_type_id: 0x9298d745 +} pointer_reference { id: 0x2e36aac4 kind: POINTER @@ -18858,6 +19188,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x92a82deb } +pointer_reference { + id: 0x2e3aa811 + kind: POINTER + pointee_type_id: 0x92aa46db +} pointer_reference { id: 0x2e3afbd5 kind: POINTER @@ -18873,11 +19208,21 @@ pointer_reference { kind: POINTER pointee_type_id: 0x92ae55cd } +pointer_reference { + id: 0x2e3beeb2 + kind: POINTER + pointee_type_id: 0x92af5c55 +} pointer_reference { id: 0x2e3de161 kind: POINTER pointee_type_id: 0x92b76318 } +pointer_reference { + id: 0x2e3f95bc + kind: POINTER + pointee_type_id: 0x92beb06d +} pointer_reference { id: 0x2e3fe61b kind: POINTER @@ -19158,6 +19503,16 @@ pointer_reference { kind: POINTER pointee_type_id: 0x93e8e7b0 } +pointer_reference { + id: 0x2e6a357b + kind: POINTER + pointee_type_id: 0x93e83373 +} +pointer_reference { + id: 0x2e6a35a0 + kind: POINTER + pointee_type_id: 0x93e8301d +} pointer_reference { id: 0x2e6c8788 kind: POINTER @@ -19208,6 +19563,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x93907678 } +pointer_reference { + id: 0x2e747a05 + kind: POINTER + pointee_type_id: 0x93910e88 +} pointer_reference { id: 0x2e7505e0 kind: POINTER @@ -19528,6 +19888,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9090fcd9 } +pointer_reference { + id: 0x2eb464c1 + kind: POINTER + pointee_type_id: 0x90917599 +} pointer_reference { id: 0x2eb4795d kind: POINTER @@ -20563,6 +20928,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x96d126d3 } +pointer_reference { + id: 0x2f24a589 + kind: POINTER + pointee_type_id: 0x96d270ba +} pointer_reference { id: 0x2f25d7c2 kind: POINTER @@ -21028,6 +21398,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x97b2b8d0 } +pointer_reference { + id: 0x2f802886 + kind: POINTER + pointee_type_id: 0x94404485 +} pointer_reference { id: 0x2f805571 kind: POINTER @@ -21563,6 +21938,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9511594d } +pointer_reference { + id: 0x2fd4f232 + kind: POINTER + pointee_type_id: 0x95132e54 +} pointer_reference { id: 0x2fd86c98 kind: POINTER @@ -21898,6 +22278,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xeabee0bd } +pointer_reference { + id: 0x30408c71 + kind: POINTER + pointee_type_id: 0xeb42d758 +} pointer_reference { id: 0x3043f6b1 kind: POINTER @@ -21963,6 +22348,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xebd0e7ee } +pointer_reference { + id: 0x3064f970 + kind: POINTER + pointee_type_id: 0xebd3035e +} pointer_reference { id: 0x30650ba6 kind: POINTER @@ -22413,6 +22803,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xef9a648b } +pointer_reference { + id: 0x31790b1e + kind: POINTER + pointee_type_id: 0xefa4cae6 +} pointer_reference { id: 0x31829648 kind: POINTER @@ -22728,6 +23123,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe3685372 } +pointer_reference { + id: 0x324ddec3 + kind: POINTER + pointee_type_id: 0xe3779d93 +} pointer_reference { id: 0x324e6996 kind: POINTER @@ -22998,6 +23398,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe1c969cb } +pointer_reference { + id: 0x32e4574b + kind: POINTER + pointee_type_id: 0xe1d1bbb1 +} pointer_reference { id: 0x32e49390 kind: POINTER @@ -23083,6 +23488,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe620f747 } +pointer_reference { + id: 0x331a1d7a + kind: POINTER + pointee_type_id: 0xe6289375 +} pointer_reference { id: 0x331a85e3 kind: POINTER @@ -24248,6 +24658,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xfff5e6f7 } +pointer_reference { + id: 0x356e4b27 + kind: POINTER + pointee_type_id: 0xfff9ca03 +} pointer_reference { id: 0x35737846 kind: POINTER @@ -24528,6 +24943,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xfda4bf28 } +pointer_reference { + id: 0x35feb7e2 + kind: POINTER + pointee_type_id: 0xfdba3915 +} pointer_reference { id: 0x36042134 kind: POINTER @@ -24588,6 +25008,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf2c78cfb } +pointer_reference { + id: 0x3622fa2a + kind: POINTER + pointee_type_id: 0xf2cb0e35 +} pointer_reference { id: 0x3626871f kind: POINTER @@ -24653,6 +25078,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf3dea95c } +pointer_reference { + id: 0x3667e19e + kind: POINTER + pointee_type_id: 0xf3df60e5 +} pointer_reference { id: 0x3668642a kind: POINTER @@ -24938,6 +25368,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf1938ae0 } +pointer_reference { + id: 0x36f98e5c + kind: POINTER + pointee_type_id: 0xf1a6dfed +} pointer_reference { id: 0x36f998d3 kind: POINTER @@ -25478,6 +25913,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xca5a7101 } +pointer_reference { + id: 0x380882e7 + kind: POINTER + pointee_type_id: 0xca62ed00 +} pointer_reference { id: 0x3808938b kind: POINTER @@ -25493,6 +25933,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xca69055f } +pointer_reference { + id: 0x380c33d1 + kind: POINTER + pointee_type_id: 0xca7029d8 +} pointer_reference { id: 0x381472e2 kind: POINTER @@ -26213,6 +26658,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xcc81b8d3 } +pointer_reference { + id: 0x39b2ba38 + kind: POINTER + pointee_type_id: 0xcc8a0e7e +} pointer_reference { id: 0x39b425bc kind: POINTER @@ -26568,6 +27018,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc032f3e5 } +pointer_reference { + id: 0x3a9d5bb9 + kind: POINTER + pointee_type_id: 0xc035887a +} pointer_reference { id: 0x3aac87ab kind: POINTER @@ -26883,6 +27338,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc733e2de } +pointer_reference { + id: 0x3b622f67 + kind: POINTER + pointee_type_id: 0xc7c85b01 +} pointer_reference { id: 0x3b66c89b kind: POINTER @@ -26983,6 +27443,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc4e323c9 } +pointer_reference { + id: 0x3ba909c1 + kind: POINTER + pointee_type_id: 0xc4e4c198 +} pointer_reference { id: 0x3baacc82 kind: POINTER @@ -26993,6 +27458,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc4f6e4f3 } +pointer_reference { + id: 0x3bb0740c + kind: POINTER + pointee_type_id: 0xc48136af +} pointer_reference { id: 0x3bb11c92 kind: POINTER @@ -27023,6 +27493,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc50a1b96 } +pointer_reference { + id: 0x3bd6fa3a + kind: POINTER + pointee_type_id: 0xc51b0e75 +} pointer_reference { id: 0x3bd9eb0b kind: POINTER @@ -27048,6 +27523,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc5d356cb } +pointer_reference { + id: 0x3be6380c + kind: POINTER + pointee_type_id: 0xc5d806af +} pointer_reference { id: 0x3be64ffd kind: POINTER @@ -27058,6 +27538,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc5e27af4 } +pointer_reference { + id: 0x3beb3e50 + kind: POINTER + pointee_type_id: 0xc5ec1fdd +} pointer_reference { id: 0x3bedc96c kind: POINTER @@ -27183,6 +27668,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdb44b469 } +pointer_reference { + id: 0x3c417e01 + kind: POINTER + pointee_type_id: 0xdb451e9a +} pointer_reference { id: 0x3c41c19b kind: POINTER @@ -27288,6 +27778,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdbcfcd34 } +pointer_reference { + id: 0x3c692b7e + kind: POINTER + pointee_type_id: 0xdbe44b66 +} pointer_reference { id: 0x3c6a6bbc kind: POINTER @@ -27488,6 +27983,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xde680909 } +pointer_reference { + id: 0x3d1364e9 + kind: POINTER + pointee_type_id: 0xde0d753a +} pointer_reference { id: 0x3d1ec847 kind: POINTER @@ -27553,6 +28053,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdf713fb7 } +pointer_reference { + id: 0x3d52d75b + kind: POINTER + pointee_type_id: 0xdf0bbbf0 +} pointer_reference { id: 0x3d551c03 kind: POINTER @@ -27878,6 +28383,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xddfa054d } +pointer_reference { + id: 0x3df0a7d3 + kind: POINTER + pointee_type_id: 0xdd8279d0 +} pointer_reference { id: 0x3df7e337 kind: POINTER @@ -27888,6 +28398,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdda60846 } +pointer_reference { + id: 0x3dfac2ad + kind: POINTER + pointee_type_id: 0xddabec2b +} pointer_reference { id: 0x3e001c39 kind: POINTER @@ -27988,6 +28503,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd2e61f73 } +pointer_reference { + id: 0x3e2a5e3d + kind: POINTER + pointee_type_id: 0xd2e99e69 +} pointer_reference { id: 0x3e2de599 kind: POINTER @@ -28393,6 +28913,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd69f81c9 } +pointer_reference { + id: 0x3f387468 + kind: POINTER + pointee_type_id: 0xd6a1373c +} pointer_reference { id: 0x3f3cd89a kind: POINTER @@ -29033,11 +29558,21 @@ typedef { name: "blk_opf_t" referred_type_id: 0xe62ebf07 } +typedef { + id: 0x1684c624 + name: "blk_plug_cb_fn" + referred_type_id: 0x0c5168e8 +} typedef { id: 0x3cc4e4dd name: "blk_qc_t" referred_type_id: 0x4585663f } +typedef { + id: 0xa47a28f3 + name: "blk_short_t" + referred_type_id: 0x914dbfdc +} typedef { id: 0x7be80061 name: "blk_status_t" @@ -29253,6 +29788,126 @@ typedef { name: "dev_t" referred_type_id: 0xe83041c0 } +typedef { + id: 0xb8c84daf + name: "dio_iodone_t" + referred_type_id: 0x9f043139 +} +typedef { + id: 0x30d045ac + name: "dio_submit_t" + referred_type_id: 0x15976e28 +} +typedef { + id: 0x7722f5fe + name: "dm_busy_fn" + referred_type_id: 0x2e2f0b11 +} +typedef { + id: 0x81034bb7 + name: "dm_clone_and_map_request_fn" + referred_type_id: 0x2e323a43 +} +typedef { + id: 0xec2f5289 + name: "dm_ctr_fn" + referred_type_id: 0x2e6a357b +} +typedef { + id: 0x5833b757 + name: "dm_dax_direct_access_fn" + referred_type_id: 0x20bba379 +} +typedef { + id: 0xdbb955db + name: "dm_dax_recovery_write_fn" + referred_type_id: 0x2cb2c9fe +} +typedef { + id: 0xc272516a + name: "dm_dax_zero_page_range_fn" + referred_type_id: 0x2e133d23 +} +typedef { + id: 0xdee852ab + name: "dm_dtr_fn" + referred_type_id: 0x0d6927be +} +typedef { + id: 0x72f27b5e + name: "dm_endio_fn" + referred_type_id: 0x2e3beeb2 +} +typedef { + id: 0x5d27fec1 + name: "dm_io_hints_fn" + referred_type_id: 0x0d52f144 +} +typedef { + id: 0x4944b34e + name: "dm_iterate_devices_fn" + referred_type_id: 0x2eb464c1 +} +typedef { + id: 0x7abd5475 + name: "dm_map_fn" + referred_type_id: 0x2e3aa811 +} +typedef { + id: 0x4a37c87b + name: "dm_message_fn" + referred_type_id: 0x2e6a35a0 +} +typedef { + id: 0x540fc033 + name: "dm_postsuspend_fn" + referred_type_id: 0x0d6927be +} +typedef { + id: 0xb5818a23 + name: "dm_prepare_ioctl_fn" + referred_type_id: 0x2e2690ae +} +typedef { + id: 0xcd86b17c + name: "dm_preresume_fn" + referred_type_id: 0x2e2f0b11 +} +typedef { + id: 0xeab0ac41 + name: "dm_presuspend_fn" + referred_type_id: 0x0d6927be +} +typedef { + id: 0xa3284d98 + name: "dm_presuspend_undo_fn" + referred_type_id: 0x0d6927be +} +typedef { + id: 0x1ce28cf1 + name: "dm_release_clone_request_fn" + referred_type_id: 0x0f65ebe2 +} +typedef { + id: 0xb0c08c5a + name: "dm_report_zones_fn" + referred_type_id: 0x2e157919 +} +typedef { + id: 0xabcaeaec + name: "dm_request_endio_fn" + referred_type_id: 0x2e360c76 +} +typedef { + id: 0x77a6dd29 + name: "dm_resume_fn" + referred_type_id: 0x0d6927be +} +typedef { + id: 0xba528163 + name: "dm_status_fn" + referred_type_id: 0x0d599e4a +} typedef { id: 0xe02e14d6 name: "dma_addr_t" @@ -29393,6 +30048,11 @@ typedef { name: "genpool_algo_t" referred_type_id: 0x06afdad0 } +typedef { + id: 0x98f2559e + name: "get_block_t" + referred_type_id: 0x982488f7 +} typedef { id: 0x244afa25 name: "gfn_t" @@ -29438,6 +30098,11 @@ typedef { name: "hfn_t" referred_type_id: 0x92233392 } +typedef { + id: 0xd57eb7ba + name: "initxattrs" + referred_type_id: 0x2c7fb451 +} typedef { id: 0xee72cbfc name: "ino_t" @@ -29483,6 +30148,11 @@ typedef { name: "iommu_fault_handler_t" referred_type_id: 0x2f184276 } +typedef { + id: 0x0b098126 + name: "irq_cpustat_t" + referred_type_id: 0x3b85198b +} typedef { id: 0xb0c2eb21 name: "irq_flow_handler_t" @@ -29513,6 +30183,11 @@ typedef { name: "isolate_mode_t" referred_type_id: 0x4585663f } +typedef { + id: 0x9ae406d4 + name: "iterate_devices_callout_fn" + referred_type_id: 0x2e3f95bc +} typedef { id: 0xc6154084 name: "iw_handler" @@ -30363,6 +31038,11 @@ typedef { name: "ssize_t" referred_type_id: 0x2da051ab } +typedef { + id: 0x34e17987 + name: "status_type_t" + referred_type_id: 0x42178190 +} typedef { id: 0x6c15168b name: "substring_t" @@ -30708,6 +31388,11 @@ typedef { name: "xa_mark_t" referred_type_id: 0x4585663f } +typedef { + id: 0xa7efd65a + name: "xa_update_node_t" + referred_type_id: 0x0d6c28a3 +} typedef { id: 0x313397f7 name: "xfrm_address_t" @@ -30753,6 +31438,11 @@ qualified { qualifier: CONST qualified_type_id: 0x70d15e47 } +qualified { + id: 0xc035887a + qualifier: CONST + qualified_type_id: 0x70919762 +} qualified { id: 0xc04414ae qualifier: CONST @@ -30913,6 +31603,11 @@ qualified { qualifier: CONST qualified_type_id: 0x6101d583 } +qualified { + id: 0xc48136af + qualifier: CONST + qualified_type_id: 0x62436c35 +} qualified { id: 0xc48494d4 qualifier: CONST @@ -30983,6 +31678,11 @@ qualified { qualifier: CONST qualified_type_id: 0x67ce5d5b } +qualified { + id: 0xc5ec1fdd + qualifier: CONST + qualified_type_id: 0x67f7c9ff +} qualified { id: 0xc5f7c32f qualifier: CONST @@ -31098,6 +31798,11 @@ qualified { qualifier: CONST qualified_type_id: 0x6e373489 } +qualified { + id: 0xc7c85b01 + qualifier: CONST + qualified_type_id: 0x6f66da8d +} qualified { id: 0xc7dbc4f1 qualifier: CONST @@ -31868,6 +32573,11 @@ qualified { qualifier: CONST qualified_type_id: 0x29d16967 } +qualified { + id: 0xd6a1373c + qualifier: CONST + qualified_type_id: 0x2ac36a79 +} qualified { id: 0xd6b384f7 qualifier: CONST @@ -32313,6 +33023,11 @@ qualified { qualifier: CONST qualified_type_id: 0x07afa3be } +qualified { + id: 0xde0d753a + qualifier: CONST + qualified_type_id: 0x08726260 +} qualified { id: 0xde3bc780 qualifier: CONST @@ -32598,6 +33313,11 @@ qualified { qualifier: CONST qualified_type_id: 0xfde6fb43 } +qualified { + id: 0xe3779d93 + qualifier: CONST + qualified_type_id: 0xfd99c0c6 +} qualified { id: 0xe3791aa0 qualifier: CONST @@ -33038,6 +33758,11 @@ qualified { qualifier: CONST qualified_type_id: 0xdf042930 } +qualified { + id: 0xebd3035e + qualifier: CONST + qualified_type_id: 0xdf0bbbf0 +} qualified { id: 0xebd4c806 qualifier: CONST @@ -33403,6 +34128,11 @@ qualified { qualifier: CONST qualified_type_id: 0xbe067d4b } +qualified { + id: 0xf3df60e5 + qualifier: CONST + qualified_type_id: 0xbf3a351e +} qualified { id: 0xf3e17637 qualifier: CONST @@ -34068,6 +34798,11 @@ qualified { qualifier: CONST qualified_type_id: 0x8f902d54 } +qualified { + id: 0xfff9ca03 + qualifier: CONST + qualified_type_id: 0x8fa09e85 +} primitive { id: 0x15053314 name: "double" @@ -34882,6 +35617,11 @@ array { number_of_elements: 2 element_type_id: 0xbcedc070 } +array { + id: 0x439cf6d8 + number_of_elements: 16 + element_type_id: 0x3ebcd127 +} array { id: 0x43acdd98 number_of_elements: 32 @@ -35312,6 +36052,11 @@ array { number_of_elements: 32 element_type_id: 0x21069feb } +array { + id: 0x5d529b1e + number_of_elements: 16 + element_type_id: 0x4585663f +} array { id: 0x5e18785f number_of_elements: 16 @@ -36892,6 +37637,10 @@ array { id: 0xc81b91b5 element_type_id: 0x30887d17 } +array { + id: 0xc82f70f4 + element_type_id: 0x305bf810 +} array { id: 0xc8c766a0 number_of_elements: 8 @@ -36935,6 +37684,10 @@ array { number_of_elements: 26 element_type_id: 0x295c7202 } +array { + id: 0xcb703345 + element_type_id: 0x3d26f6d4 +} array { id: 0xcbd8574f element_type_id: 0x3f8766fd @@ -37562,6 +38315,11 @@ array { number_of_elements: 15 element_type_id: 0x384f7d7c } +array { + id: 0xf95ab7ac + number_of_elements: 15 + element_type_id: 0x3e10b518 +} array { id: 0xf95fb1e4 number_of_elements: 8 @@ -37960,6 +38718,10 @@ member { type_id: 0x2aa8f2af offset: 4608 } +member { + id: 0x297a76bf + type_id: 0x2ac7aaed +} member { id: 0x2a406106 type_id: 0x262ff409 @@ -38120,6 +38882,11 @@ member { type_id: 0x4f2326f3 offset: 1280 } +member { + id: 0x300b2d2f + type_id: 0x4f02e8cc + offset: 512 +} member { id: 0x300b75af type_id: 0x4f03a6ae @@ -38129,6 +38896,11 @@ member { type_id: 0x4f10779f offset: 192 } +member { + id: 0x3024ec51 + type_id: 0x4fbdc803 + offset: 28800 +} member { id: 0x302f914f type_id: 0x4f903dda @@ -38642,6 +39414,11 @@ member { type_id: 0x5cac5fcc offset: 896 } +member { + id: 0x34e0ff3c + type_id: 0x5cad8df0 + offset: 62784 +} member { id: 0x34fb349d type_id: 0x5cc2a264 @@ -38957,6 +39734,11 @@ member { type_id: 0x68d21466 offset: 256 } +member { + id: 0x3a3b9c87 + type_id: 0x67c0081f + offset: 1984 +} member { id: 0x3a3e30f1 type_id: 0x67d69fb5 @@ -40420,6 +41202,11 @@ member { name: "__sk_common" type_id: 0x61a74d47 } +member { + id: 0x8fa57542 + name: "__softirq_pending" + type_id: 0x4585663f +} member { id: 0x11319dfd name: "__stack" @@ -41620,6 +42407,12 @@ member { type_id: 0x5d8155a5 offset: 19520 } +member { + id: 0xc0138ce8 + name: "accessed" + type_id: 0x4585663f + offset: 608 +} member { id: 0x6311fd99 name: "accessory" @@ -41656,6 +42449,13 @@ member { type_id: 0x92233392 offset: 2432 } +member { + id: 0x1a19769d + name: "accounts_remapped_io" + type_id: 0x6d7f5ff6 + offset: 580 + bitsize: 1 +} member { id: 0x542cf718 name: "acct" @@ -43575,6 +44375,12 @@ member { type_id: 0x18bd6530 offset: 384 } +member { + id: 0xd5613ffc + name: "afbc_size" + type_id: 0xc9082b19 + offset: 1760 +} member { id: 0x9aeabf13 name: "afc" @@ -43744,6 +44550,11 @@ member { type_id: 0x6720d32f offset: 576 } +member { + id: 0x2777335c + name: "alg" + type_id: 0xdabf4001 +} member { id: 0x2784b70a name: "alg" @@ -43825,6 +44636,12 @@ member { name: "algorithm_id" type_id: 0x295c7202 } +member { + id: 0x25050ebe + name: "alias" + type_id: 0x3e10b518 + offset: 64 +} member { id: 0x33075cab name: "align" @@ -43885,6 +44702,24 @@ member { type_id: 0x0b395893 offset: 8192 } +member { + id: 0xdeafe619 + name: "aligned_height" + type_id: 0xc9082b19 + offset: 1696 +} +member { + id: 0x6db01f09 + name: "aligned_width" + type_id: 0xc9082b19 + offset: 1664 +} +member { + id: 0x9d7710c5 + name: "alignmask" + type_id: 0x4585663f + offset: 1152 +} member { id: 0x361dfe02 name: "alignment" @@ -44074,6 +44909,12 @@ member { type_id: 0x1fe7f40f offset: 64 } +member { + id: 0xa0650951 + name: "alloc_callback" + type_id: 0x0c33de94 + offset: 960 +} member { id: 0x3f6534a2 name: "alloc_container_ctx" @@ -45096,12 +45937,6 @@ member { type_id: 0x92233392 offset: 14976 } -member { - id: 0x2d081576 - name: "android_kabi_reserved1" - type_id: 0x92233392 - offset: 62784 -} member { id: 0x2d081599 name: "android_kabi_reserved1" @@ -45162,12 +45997,6 @@ member { type_id: 0x92233392 offset: 704 } -member { - id: 0x2d081767 - name: "android_kabi_reserved1" - type_id: 0x92233392 - offset: 28800 -} member { id: 0x2d0817b6 name: "android_kabi_reserved1" @@ -46169,6 +46998,12 @@ member { type_id: 0x92233392 offset: 3008 } +member { + id: 0x63760fd1 + name: "android_kabi_reserved2" + type_id: 0x92233392 + offset: 1792 +} member { id: 0x63760fdb name: "android_kabi_reserved2" @@ -47847,6 +48682,11 @@ member { type_id: 0x6720d32f offset: 704 } +member { + id: 0x2075b8f0 + name: "argc" + type_id: 0x4585663f +} member { id: 0x6fcff76c name: "argmin" @@ -47928,6 +48768,12 @@ member { name: "argv" type_id: 0x13e50c8a } +member { + id: 0xe8735870 + name: "argv" + type_id: 0x0bb0c019 + offset: 64 +} member { id: 0xe8f87d89 name: "argv" @@ -48417,6 +49263,12 @@ member { type_id: 0x9e8abf4f offset: 192 } +member { + id: 0x5ee21ccd + name: "async_write_error" + type_id: 0x6720d32f + offset: 1792 +} member { id: 0xd1b258a6 name: "at" @@ -50918,6 +51770,17 @@ member { name: "base" type_id: 0xec967f20 } +member { + id: 0x85378cb8 + name: "base" + type_id: 0xed62338c +} +member { + id: 0x8544c9f4 + name: "base" + type_id: 0x9e2c67f2 + offset: 512 +} member { id: 0x85481c0d name: "base" @@ -51067,6 +51930,12 @@ member { type_id: 0x2ac43c51 offset: 128 } +member { + id: 0x85f3d282 + name: "base" + type_id: 0x293b162f + offset: 1024 +} member { id: 0x85f3de85 name: "base" @@ -51223,6 +52092,11 @@ member { type_id: 0x0faae5b1 offset: 58880 } +member { + id: 0xcacb97d2 + name: "battery_charge_status" + type_id: 0x0faae5b1 +} member { id: 0x68976a7a name: "battery_max" @@ -51620,6 +52494,12 @@ member { name: "bdev" type_id: 0x0c2e195c } +member { + id: 0x51f02b11 + name: "bdev" + type_id: 0x0c2e195c + offset: 832 +} member { id: 0x51f02ed6 name: "bdev" @@ -51763,6 +52643,12 @@ member { type_id: 0x2eda6351 offset: 1664 } +member { + id: 0x38c2e7fb + name: "begin" + type_id: 0xd0b3a203 + offset: 128 +} member { id: 0x21bcbcbc name: "begin_cpu_access" @@ -51898,6 +52784,12 @@ member { type_id: 0xa5960bec offset: 192 } +member { + id: 0x5e2b88f3 + name: "bh" + type_id: 0xa5960bec + offset: 832 +} member { id: 0xb592ec0b name: "bhash" @@ -52346,6 +53238,12 @@ member { type_id: 0x200a0749 offset: 768 } +member { + id: 0xccd15e20 + name: "bios" + type_id: 0x200a0749 + offset: 576 +} member { id: 0x24640f13 name: "bios_limit" @@ -52922,6 +53820,12 @@ member { type_id: 0x24159bc9 offset: 192 } +member { + id: 0x4280b12f + name: "block" + type_id: 0xd0b3a203 + offset: 448 +} member { id: 0x42990dd1 name: "block" @@ -52958,6 +53862,12 @@ member { type_id: 0x861a0f9a offset: 112 } +member { + id: 0xdb864134 + name: "block_height" + type_id: 0xc9082b19 + offset: 1632 +} member { id: 0x215a13ec name: "block_len" @@ -53000,6 +53910,12 @@ member { type_id: 0x4585663f offset: 160 } +member { + id: 0x3c120643 + name: "block_size" + type_id: 0x4585663f + offset: 896 +} member { id: 0xb034a057 name: "block_start" @@ -53018,6 +53934,12 @@ member { type_id: 0x861a0f9a offset: 104 } +member { + id: 0x3b9c97de + name: "block_width" + type_id: 0xc9082b19 + offset: 1600 +} member { id: 0x82470e87 name: "blocked" @@ -53107,6 +54029,12 @@ member { type_id: 0x4585663f offset: 224 } +member { + id: 0x89cc162f + name: "blocksize" + type_id: 0x4585663f + offset: 1088 +} member { id: 0x9d6f12e1 name: "blue" @@ -53203,6 +54131,12 @@ member { type_id: 0xb3e7bac9 offset: 40 } +member { + id: 0x6b1b4f66 + name: "bmNtbFormatsSupported" + type_id: 0x9bd401b6 + offset: 16 +} member { id: 0xb0e7ec93 name: "bmSublinkSpeedAttr" @@ -53994,6 +54928,11 @@ member { type_id: 0xe62ebf07 offset: 288 } +member { + id: 0x9929500d + name: "bs" + type_id: 0x200a0749 +} member { id: 0xff1a115d name: "bsg_dev" @@ -54644,6 +55583,12 @@ member { name: "buffer" type_id: 0x0483e6f8 } +member { + id: 0x33decf44 + name: "buffer" + type_id: 0x00c72527 + offset: 832 +} member { id: 0x33e6ba8e name: "buffer" @@ -54824,6 +55769,12 @@ member { type_id: 0x0baa70a7 offset: 736 } +member { + id: 0x215141b0 + name: "buffer_tree" + type_id: 0xeb923a9b + offset: 1472 +} member { id: 0xe613256f name: "buffered" @@ -54848,6 +55799,12 @@ member { type_id: 0xd3c80119 offset: 576 } +member { + id: 0xc0824dc3 + name: "buffers" + type_id: 0xd3c80119 + offset: 640 +} member { id: 0x803be3e4 name: "buffersize" @@ -55474,6 +56431,12 @@ member { type_id: 0x74d29cf1 offset: 992 } +member { + id: 0x60a635ef + name: "busy" + type_id: 0x7722f5fe + offset: 1344 +} member { id: 0x60bc6a32 name: "busy" @@ -56054,6 +57017,12 @@ member { type_id: 0x295c7202 offset: 16 } +member { + id: 0x0f75b561 + name: "c" + type_id: 0x2d01fcba + offset: 960 +} member { id: 0x0fa4ebff name: "c" @@ -56698,6 +57667,12 @@ member { name: "callback" type_id: 0x0ed1d747 } +member { + id: 0x56f376f1 + name: "callback" + type_id: 0x1684c624 + offset: 128 +} member { id: 0x56a72054 name: "callback_head" @@ -57933,6 +58908,12 @@ member { type_id: 0x60ca2c23 offset: 32 } +member { + id: 0xbf43ebf0 + name: "cdc_filter" + type_id: 0x914dbfdc + offset: 1936 +} member { id: 0x058b41dc name: "cdev" @@ -58966,6 +59947,12 @@ member { type_id: 0x32941b2b offset: 128 } +member { + id: 0x26d4a9a4 + name: "char2uni" + type_id: 0x2e137a28 + offset: 192 +} member { id: 0xfdbbc663 name: "char_dev" @@ -59072,6 +60059,23 @@ member { type_id: 0x3bc90e1f offset: 704 } +member { + id: 0x551378c2 + name: "charset" + type_id: 0x3e10b518 +} +member { + id: 0x6322a32f + name: "charset2lower" + type_id: 0x384c5795 + offset: 256 +} +member { + id: 0x06048b6e + name: "charset2upper" + type_id: 0x384c5795 + offset: 320 +} member { id: 0x9e156774 name: "check" @@ -59541,6 +60545,18 @@ member { type_id: 0x2b8f13b3 offset: 256 } +member { + id: 0x1024996f + name: "chosen" + type_id: 0x1d19a9d5 + offset: 320 +} +member { + id: 0x3d099644 + name: "chosen_points" + type_id: 0xfc0e1dbd + offset: 384 +} member { id: 0x697fbc8c name: "chrdev" @@ -60421,6 +61437,12 @@ member { type_id: 0x18bd6530 offset: 3456 } +member { + id: 0xf4c5928f + name: "client_list" + type_id: 0xd3c80119 + offset: 1856 +} member { id: 0xa9f3f07b name: "client_ops" @@ -60954,12 +61976,24 @@ member { name: "clockid" type_id: 0x4478ba6b } +member { + id: 0xf6b3df73 + name: "clone" + type_id: 0x7ccce612 + offset: 320 +} member { id: 0xf6c2da43 name: "clone" type_id: 0x0dc966bc offset: 448 } +member { + id: 0xe7b15fc6 + name: "clone_and_map_rq" + type_id: 0x81034bb7 + offset: 512 +} member { id: 0xcf60e1c3 name: "cloned" @@ -61062,6 +62096,12 @@ member { type_id: 0x0e1719d7 offset: 64 } +member { + id: 0xcd7ec6ac + name: "close" + type_id: 0x0d36eefe + offset: 2304 +} member { id: 0xcd7edc4f name: "close" @@ -63951,6 +64991,12 @@ member { type_id: 0x6720d32f offset: 384 } +member { + id: 0xaf3405ec + name: "constraint" + type_id: 0x6df42b18 + offset: 448 +} member { id: 0x02afc8a1 name: "constraint_set_flags" @@ -64252,6 +65298,12 @@ member { type_id: 0x2bb39ba6 offset: 2176 } +member { + id: 0xfc1d642c + name: "control" + type_id: 0x21069feb + offset: 1472 +} member { id: 0xfc37c610 name: "control" @@ -65186,6 +66238,12 @@ member { type_id: 0x07d29d85 offset: 320 } +member { + id: 0xb91305cd + name: "counts" + type_id: 0x5d529b1e + offset: 128 +} member { id: 0x70db1c35 name: "coupled_rdevs" @@ -66552,6 +67610,12 @@ member { type_id: 0x0815495d offset: 37248 } +member { + id: 0x5497e4e5 + name: "crypto_profile" + type_id: 0x08956bf0 + offset: 2304 +} member { id: 0x5497e671 name: "crypto_profile" @@ -67004,6 +68068,12 @@ member { type_id: 0x0f3dfb90 offset: 576 } +member { + id: 0x64f1a684 + name: "ctr" + type_id: 0xec2f5289 + offset: 320 +} member { id: 0x6900647d name: "ctrl" @@ -67982,6 +69052,12 @@ member { type_id: 0xc93e017b offset: 16 } +member { + id: 0xc325cba2 + name: "d" + type_id: 0x3f0185ef + offset: 128 +} member { id: 0x8b60974a name: "d1_support" @@ -68296,6 +69372,12 @@ member { type_id: 0xd3c80119 offset: 1280 } +member { + id: 0xcc4dd9fb + name: "d_sz" + type_id: 0xf435685e + offset: 640 +} member { id: 0x8fb0e835 name: "d_term_en" @@ -69064,6 +70146,12 @@ member { type_id: 0x20fd6195 offset: 64 } +member { + id: 0xffb32814 + name: "data" + type_id: 0x21069feb + offset: 1536 +} member { id: 0xffb530a9 name: "data" @@ -69341,6 +70429,12 @@ member { type_id: 0x18bd6530 offset: 128 } +member { + id: 0x109b80af + name: "data_mode" + type_id: 0x5d8155a5 + offset: 576 +} member { id: 0x970da8c8 name: "data_offset" @@ -69657,6 +70751,18 @@ member { type_id: 0x18bd6530 offset: 64 } +member { + id: 0x57d05926 + name: "dax_dev" + type_id: 0x35abdbf6 + offset: 1920 +} +member { + id: 0x57d05c19 + name: "dax_dev" + type_id: 0x35abdbf6 + offset: 64 +} member { id: 0x57d05f3f name: "dax_dev" @@ -69669,6 +70775,12 @@ member { type_id: 0xe1a31370 offset: 7680 } +member { + id: 0x830b1efa + name: "dax_recovery_write" + type_id: 0xdbb955db + offset: 1664 +} member { id: 0x08509b5c name: "dax_seed" @@ -69681,6 +70793,12 @@ member { type_id: 0x36691375 offset: 64 } +member { + id: 0xc7158a13 + name: "dax_zero_page_range" + type_id: 0xc272516a + offset: 1600 +} member { id: 0xf540eeb1 name: "db_off" @@ -70148,6 +71266,12 @@ member { type_id: 0x6720d32f offset: 256 } +member { + id: 0x74a266cc + name: "debounce_time" + type_id: 0x4585663f + offset: 96 +} member { id: 0x070a913d name: "debug" @@ -70573,6 +71697,12 @@ member { type_id: 0x2ed391e2 offset: 192 } +member { + id: 0x70fa6b40 + name: "decrypt" + type_id: 0x2cd8a9c9 + offset: 192 +} member { id: 0x70fa8381 name: "decrypt" @@ -70926,6 +72056,12 @@ member { type_id: 0xd3c80119 offset: 1408 } +member { + id: 0xf0efa471 + name: "deferred" + type_id: 0x59cf4672 + offset: 2880 +} member { id: 0x17c292e0 name: "deferred_cmd" @@ -70950,6 +72086,12 @@ member { type_id: 0x5e8dc7f4 offset: 576 } +member { + id: 0xa9cf9302 + name: "deferred_lock" + type_id: 0xf313e71a + offset: 2816 +} member { id: 0x94bc1785 name: "deferred_probe" @@ -71220,6 +72362,16 @@ member { type_id: 0x6d7f5ff6 offset: 3072 } +member { + id: 0xc43f5f8d + name: "delayed_ndp16" + type_id: 0x3ba909c1 +} +member { + id: 0xd408f584 + name: "delayed_ndp32" + type_id: 0x35feb7e2 +} member { id: 0x506f3dc2 name: "delayed_runtime" @@ -71578,6 +72730,12 @@ member { type_id: 0x4585663f offset: 2368 } +member { + id: 0x1b2184e9 + name: "depth" + type_id: 0x4585663f + offset: 96 +} member { id: 0x1b218a1d name: "depth" @@ -71763,6 +72921,12 @@ member { type_id: 0x0483e6f8 offset: 1344 } +member { + id: 0x87e0b654 + name: "desc" + type_id: 0x3a9d5bb9 + offset: 7872 +} member { id: 0x87e3bc35 name: "desc" @@ -72805,6 +73969,12 @@ member { type_id: 0x1042c9d1 offset: 192 } +member { + id: 0xce34257f + name: "dev" + type_id: 0x0dc9e98b + offset: 1152 +} member { id: 0xce3495b5 name: "dev" @@ -73260,6 +74430,12 @@ member { type_id: 0xd3c80119 offset: 832 } +member { + id: 0x770654c6 + name: "dev_mac" + type_id: 0xabf64f28 + offset: 1544 +} member { id: 0x31c5367f name: "dev_mapping" @@ -74163,6 +75339,12 @@ member { type_id: 0xd3c80119 offset: 3328 } +member { + id: 0x33ed565c + name: "devices" + type_id: 0xd3c80119 + offset: 1984 +} member { id: 0x33ed5762 name: "devices" @@ -74338,6 +75520,12 @@ member { type_id: 0x0537192f offset: 192 } +member { + id: 0x1ea56ad0 + name: "devnode" + type_id: 0x053432a7 + offset: 64 +} member { id: 0x1ea56fa3 name: "devnode" @@ -74842,6 +76030,12 @@ member { type_id: 0x0f08e52a offset: 704 } +member { + id: 0x6b820536 + name: "direct_access" + type_id: 0x5833b757 + offset: 1536 +} member { id: 0x6bfa0272 name: "direct_access" @@ -74991,6 +76185,12 @@ member { type_id: 0x064d6086 offset: 1536 } +member { + id: 0x077f45a8 + name: "dirty_end" + type_id: 0x4585663f + offset: 864 +} member { id: 0xcaa4df71 name: "dirty_exceeded" @@ -75039,6 +76239,12 @@ member { type_id: 0x33756485 offset: 5312 } +member { + id: 0x522ab1e5 + name: "dirty_start" + type_id: 0x4585663f + offset: 832 +} member { id: 0xd7a3d362 name: "dis_hw_timestamp" @@ -75104,6 +76310,12 @@ member { type_id: 0x2d078518 offset: 960 } +member { + id: 0x0da0f708 + name: "disable" + type_id: 0x2d12100b + offset: 64 +} member { id: 0x0da0f771 name: "disable" @@ -75378,6 +76590,13 @@ member { type_id: 0x1f3c8679 offset: 1792 } +member { + id: 0x7a833cf4 + name: "discards_supported" + type_id: 0x6d7f5ff6 + offset: 577 + bitsize: 1 +} member { id: 0x513a35c9 name: "disconn_cfm" @@ -75558,6 +76777,12 @@ member { type_id: 0x2131312a offset: 128 } +member { + id: 0x6071aa84 + name: "disk" + type_id: 0x2131312a + offset: 1856 +} member { id: 0xe00832b6 name: "disk_events_disable_depth" @@ -75880,6 +77105,12 @@ member { type_id: 0x99caa0ae offset: 384 } +member { + id: 0x56ecab6c + name: "dm_io" + type_id: 0x09b53a9f + offset: 1216 +} member { id: 0x811af440 name: "dma" @@ -76853,12 +78084,24 @@ member { name: "dp" type_id: 0x80ba3719 } +member { + id: 0x55f0c48b + name: "dp" + type_id: 0x3f0185ef + offset: 320 +} member { id: 0x1e95895b name: "dp_subconnector_property" type_id: 0x2a670b41 offset: 7424 } +member { + id: 0x086093bd + name: "dp_sz" + type_id: 0xf435685e + offset: 832 +} member { id: 0x93b48e83 name: "dpa" @@ -76923,6 +78166,18 @@ member { offset: 1034 bitsize: 1 } +member { + id: 0xab0f277e + name: "dpe16" + type_id: 0xc82f70f4 + offset: 64 +} +member { + id: 0x015a8ae1 + name: "dpe32" + type_id: 0xcb703345 + offset: 128 +} member { id: 0x32a55865 name: "dpipe_headers" @@ -76997,6 +78252,12 @@ member { type_id: 0x3e79e71f offset: 1056 } +member { + id: 0x12302e1a + name: "dq" + type_id: 0x3f0185ef + offset: 384 +} member { id: 0x535fdeda name: "dq_count" @@ -77080,6 +78341,12 @@ member { type_id: 0x26ee682a offset: 960 } +member { + id: 0x8d88c04b + name: "dq_sz" + type_id: 0xf435685e + offset: 896 +} member { id: 0xdae271b1 name: "dqb_bhardlimit" @@ -77926,6 +79193,12 @@ member { type_id: 0x18bd6530 offset: 192 } +member { + id: 0xbf6a10c0 + name: "drvflags" + type_id: 0x6720d32f + offset: 1824 +} member { id: 0xacd4449f name: "drvpriv" @@ -78141,12 +79414,24 @@ member { type_id: 0x6d25e07f offset: 128 } +member { + id: 0xbbab7e83 + name: "dst" + type_id: 0x5ade635b + offset: 128 +} member { id: 0xbbb264ba name: "dst" type_id: 0x43c73e81 offset: 896 } +member { + id: 0xbbe061af + name: "dst" + type_id: 0x11cffa09 + offset: 448 +} member { id: 0xbbe06e11 name: "dst" @@ -78261,6 +79546,12 @@ member { type_id: 0x6d7f5ff6 offset: 168 } +member { + id: 0x352c27f4 + name: "dst_len" + type_id: 0x4585663f + offset: 544 +} member { id: 0x35da4011 name: "dst_len" @@ -78459,6 +79750,12 @@ member { name: "dtr" type_id: 0x6d7f5ff6 } +member { + id: 0xb0de17e8 + name: "dtr" + type_id: 0xdee852ab + offset: 384 +} member { id: 0xc9708f00 name: "dtr_rts" @@ -78812,6 +80109,12 @@ member { name: "duration" type_id: 0xc9082b19 } +member { + id: 0x5e3459b5 + name: "duration_ns" + type_id: 0xd5df6730 + offset: 64 +} member { id: 0xd5562c37 name: "duty" @@ -78889,6 +80192,46 @@ member { name: "dwDTERate" type_id: 0x0baa70a7 } +member { + id: 0x09ca9dd2 + name: "dwDatagramIndex" + type_id: 0x0baa70a7 +} +member { + id: 0x348d64a1 + name: "dwDatagramLength" + type_id: 0x0baa70a7 + offset: 32 +} +member { + id: 0x6e82996c + name: "dwNextNdpIndex" + type_id: 0x0baa70a7 + offset: 64 +} +member { + id: 0x7000a99b + name: "dwNtbInMaxSize" + type_id: 0x0baa70a7 + offset: 32 +} +member { + id: 0xc1f69c16 + name: "dwNtbOutMaxSize" + type_id: 0x0baa70a7 + offset: 128 +} +member { + id: 0x46e37740 + name: "dwReserved12" + type_id: 0x0baa70a7 + offset: 96 +} +member { + id: 0x1e7efd51 + name: "dwSignature" + type_id: 0x0baa70a7 +} member { id: 0x301130d9 name: "dword_0" @@ -79054,6 +80397,12 @@ member { type_id: 0x007e8ce4 offset: 32 } +member { + id: 0x87e623f5 + name: "e" + type_id: 0x3f0185ef + offset: 64 +} member { id: 0x8d6d2188 name: "e1000_base_cx" @@ -79167,6 +80516,12 @@ member { type_id: 0xc93e017b offset: 16 } +member { + id: 0xab258a23 + name: "e_sz" + type_id: 0xf435685e + offset: 576 +} member { id: 0x8c50076a name: "e_tag" @@ -79940,6 +81295,13 @@ member { type_id: 0x6720d32f offset: 8512 } +member { + id: 0x4ccb6a85 + name: "emulate_zone_append" + type_id: 0x6d7f5ff6 + offset: 579 + bitsize: 1 +} member { id: 0x030a11d9 name: "emulated" @@ -80008,6 +81370,11 @@ member { type_id: 0x2d078518 offset: 896 } +member { + id: 0x98ca1d0f + name: "enable" + type_id: 0x2d12100b +} member { id: 0x98ca2102 name: "enable" @@ -80097,6 +81464,12 @@ member { type_id: 0x74d29cf1 offset: 22144 } +member { + id: 0x7a5a9024 + name: "enable_count" + type_id: 0xc9082b19 + offset: 7808 +} member { id: 0x7a5a9508 name: "enable_count" @@ -80666,6 +82039,12 @@ member { type_id: 0x2c316317 offset: 64 } +member { + id: 0x893e9a51 + name: "encrypt" + type_id: 0x2cd8a9c9 + offset: 128 +} member { id: 0x897f3adb name: "encrypt" @@ -80792,6 +82171,18 @@ member { type_id: 0x3b5cc110 offset: 2368 } +member { + id: 0xec2a10b4 + name: "end_io" + type_id: 0x0c483694 + offset: 1152 +} +member { + id: 0xec54a25c + name: "end_io" + type_id: 0x72f27b5e + offset: 640 +} member { id: 0xb9877618 name: "end_io_data" @@ -81785,6 +83176,18 @@ member { type_id: 0x39470e64 offset: 1152 } +member { + id: 0x7f0253e8 + name: "error" + type_id: 0x0483e6f8 + offset: 64 +} +member { + id: 0x7f025c11 + name: "error" + type_id: 0x0483e6f8 + offset: 512 +} member { id: 0x7f4352ad name: "error" @@ -82108,6 +83511,12 @@ member { type_id: 0xb3e7bac9 offset: 112 } +member { + id: 0x48630da5 + name: "ether_desc" + type_id: 0x3f387468 + offset: 1408 +} member { id: 0xedf651c0 name: "ether_spec" @@ -82358,6 +83767,12 @@ member { name: "event_cmd" type_id: 0x8b7a3a75 } +member { + id: 0x5138cba7 + name: "event_context" + type_id: 0x18bd6530 + offset: 2176 +} member { id: 0x93a48b9c name: "event_count" @@ -82393,6 +83808,12 @@ member { type_id: 0xc93e017b offset: 368 } +member { + id: 0xd4abd33d + name: "event_fn" + type_id: 0x0f3dfb90 + offset: 2112 +} member { id: 0x50510202 name: "event_handler" @@ -82518,6 +83939,12 @@ member { type_id: 0x0e4e664a offset: 1344 } +member { + id: 0x56ec2c77 + name: "event_nr" + type_id: 0x74d29cf1 + offset: 3712 +} member { id: 0x5d544312 name: "event_read_lock" @@ -82554,6 +83981,12 @@ member { type_id: 0xcd74e255 offset: 1984 } +member { + id: 0x8daeae65 + name: "event_type" + type_id: 0xc9082b19 + offset: 64 +} member { id: 0x8dfc7230 name: "event_type" @@ -82608,6 +84041,12 @@ member { offset: 64 bitsize: 1 } +member { + id: 0x9f773f87 + name: "eventq" + type_id: 0x03913382 + offset: 3520 +} member { id: 0x110fb720 name: "events" @@ -83030,6 +84469,12 @@ member { type_id: 0x0d301752 offset: 1792 } +member { + id: 0x0d2e2ebd + name: "exit" + type_id: 0x0e2271e2 + offset: 512 +} member { id: 0x0d2e75d7 name: "exit" @@ -83459,6 +84904,11 @@ member { type_id: 0x4585663f offset: 608 } +member { + id: 0xbd3cd538 + name: "expkey" + type_id: 0x668e8237 +} member { id: 0x01992270 name: "explicit_contract" @@ -85595,6 +87045,11 @@ member { type_id: 0x4585663f offset: 1664 } +member { + id: 0xc504f94b + name: "features" + type_id: 0x1c898f28 +} member { id: 0xc531247f name: "features" @@ -87448,6 +88903,18 @@ member { type_id: 0x6720d32f offset: 8032 } +member { + id: 0x7fd91e93 + name: "fixed_in_len" + type_id: 0xc9082b19 + offset: 2048 +} +member { + id: 0x09807f7a + name: "fixed_out_len" + type_id: 0xc9082b19 + offset: 2016 +} member { id: 0x2899a5e8 name: "fixed_rate" @@ -87798,6 +89265,12 @@ member { type_id: 0x6720d32f offset: 128 } +member { + id: 0x2d0fadac + name: "flags" + type_id: 0x6720d32f + offset: 1056 +} member { id: 0x2d0fadff name: "flags" @@ -88874,6 +90347,12 @@ member { type_id: 0xd41e888f offset: 128 } +member { + id: 0x2dccf0c8 + name: "flags" + type_id: 0xa47a28f3 + offset: 16 +} member { id: 0x2dd0356f name: "flags" @@ -89524,6 +91003,13 @@ member { offset: 1 bitsize: 1 } +member { + id: 0xa1b9c8d2 + name: "flush_supported" + type_id: 0x6d7f5ff6 + offset: 576 + bitsize: 1 +} member { id: 0x702e33bb name: "flush_to" @@ -90863,6 +92349,11 @@ member { type_id: 0x0d364e53 offset: 320 } +member { + id: 0xfeafbaf6 + name: "free" + type_id: 0x0db22504 +} member { id: 0xfeafc015 name: "free" @@ -90893,6 +92384,12 @@ member { type_id: 0x0f3dfb90 offset: 1600 } +member { + id: 0x6458e4c6 + name: "free_buffer_wait" + type_id: 0x03913382 + offset: 1536 +} member { id: 0xc583ca0b name: "free_buffers" @@ -92133,6 +93630,12 @@ member { type_id: 0x3af3fd37 offset: 192 } +member { + id: 0xaab5e3db + name: "func_desc" + type_id: 0x3beb3e50 + offset: 1216 +} member { id: 0x74d098cf name: "func_id" @@ -92687,6 +94190,12 @@ member { type_id: 0x25653b02 offset: 1728 } +member { + id: 0x1875f880 + name: "gadget" + type_id: 0x25653b02 + offset: 192 +} member { id: 0x2c80bff4 name: "gadget_driver" @@ -93121,6 +94630,12 @@ member { type_id: 0x0a0607fc offset: 2368 } +member { + id: 0x3a26f97c + name: "geometry" + type_id: 0x4db3b057 + offset: 2240 +} member { id: 0x3a570a9f name: "geometry" @@ -93567,6 +95082,12 @@ member { type_id: 0x0db9efe5 offset: 1600 } +member { + id: 0xd77c9cbe + name: "get_event" + type_id: 0x2d3dc4f9 + offset: 256 +} member { id: 0xad0b27c9 name: "get_features" @@ -94852,6 +96373,12 @@ member { name: "gfp_mask" type_id: 0xf1a6dfed } +member { + id: 0xa4b05168 + name: "gfp_mask" + type_id: 0xe0785a59 + offset: 192 +} member { id: 0xa4b05766 name: "gfp_mask" @@ -94966,6 +96493,12 @@ member { type_id: 0xd3c80119 offset: 7360 } +member { + id: 0xc81f8729 + name: "global_list" + type_id: 0xd3c80119 + offset: 320 +} member { id: 0x523f440f name: "global_node" @@ -97534,6 +99067,11 @@ member { type_id: 0x3e6239e1 offset: 64 } +member { + id: 0xb56701d9 + name: "head" + type_id: 0x3db8d8c8 +} member { id: 0xb568e1b3 name: "head" @@ -97750,6 +99288,18 @@ member { type_id: 0xc93e017b offset: 480 } +member { + id: 0x7a0a7faf + name: "header_len" + type_id: 0xc9082b19 + offset: 1952 +} +member { + id: 0x7a86fcdb + name: "header_len" + type_id: 0x4585663f + offset: 864 +} member { id: 0x7aa45c87 name: "header_len" @@ -98272,6 +99822,12 @@ member { type_id: 0xc5d9d969 offset: 864 } +member { + id: 0x6da33f40 + name: "highs" + type_id: 0x3ebcd127 + offset: 1728 +} member { id: 0x06f8b424 name: "highspeed" @@ -98467,6 +100023,12 @@ member { type_id: 0x3a47ea7a offset: 1152 } +member { + id: 0xffe3e6f3 + name: "hold_count" + type_id: 0x4585663f + offset: 640 +} member { id: 0x72254387 name: "hold_queue" @@ -98502,6 +100064,12 @@ member { type_id: 0x35dc1d5d offset: 6976 } +member { + id: 0x1f2404cf + name: "holders" + type_id: 0x74d29cf1 + offset: 1536 +} member { id: 0xf82bbc03 name: "holders_dir" @@ -98748,6 +100316,12 @@ member { type_id: 0x3654c061 offset: 448 } +member { + id: 0x4af00a54 + name: "host_mac" + type_id: 0xabf64f28 + offset: 1496 +} member { id: 0x0b5b9055 name: "host_no" @@ -102784,6 +104358,12 @@ member { type_id: 0x42201dce offset: 1376 } +member { + id: 0x41e064b8 + name: "ifname_set" + type_id: 0x6d7f5ff6 + offset: 1488 +} member { id: 0xe955f32e name: "ifr_ifrn" @@ -103189,6 +104769,24 @@ member { offset: 1312 bitsize: 1 } +member { + id: 0x63660872 + name: "immutable_target" + type_id: 0x3df0a7d3 + offset: 1600 +} +member { + id: 0xfa2d1749 + name: "immutable_target_type" + type_id: 0x3622fa2a + offset: 1856 +} +member { + id: 0xfa2d1f78 + name: "immutable_target_type" + type_id: 0x3622fa2a + offset: 1664 +} member { id: 0x0239d915 name: "imod_interval" @@ -103296,6 +104894,12 @@ member { type_id: 0xff8884d8 offset: 64 } +member { + id: 0x5c6f2950 + name: "in" + type_id: 0xc440583a + offset: 256 +} member { id: 0x5c99cb61 name: "in" @@ -103403,6 +105007,12 @@ member { offset: 34 bitsize: 1 } +member { + id: 0x37e14132 + name: "in_ep" + type_id: 0x0e2680c2 + offset: 1792 +} member { id: 0xe760cbcd name: "in_epnum" @@ -103724,6 +105334,12 @@ member { name: "index" type_id: 0x5fb59157 } +member { + id: 0xad7a9230 + name: "index" + type_id: 0x439cf6d8 + offset: 640 +} member { id: 0xad7c80e2 name: "index" @@ -104542,6 +106158,12 @@ member { type_id: 0x2d5e4b40 offset: 1408 } +member { + id: 0x1ac7a60f + name: "init" + type_id: 0x2d645d4d + offset: 448 +} member { id: 0x1ac7a665 name: "init" @@ -104883,6 +106505,13 @@ member { type_id: 0x2c197132 offset: 512 } +member { + id: 0xf51d09e4 + name: "init_tio_pdu" + type_id: 0x6d7f5ff6 + offset: 3936 + bitsize: 1 +} member { id: 0x29079611 name: "init_valid_mask" @@ -105678,12 +107307,26 @@ member { type_id: 0xd41e888f offset: 480 } +member { + id: 0xe590115b + name: "integrity_added" + type_id: 0x4585663f + offset: 1922 + bitsize: 1 +} member { id: 0xb37c96b5 name: "integrity_failed" type_id: 0xe62ebf07 offset: 64 } +member { + id: 0x6f52824f + name: "integrity_supported" + type_id: 0x6d7f5ff6 + offset: 1920 + bitsize: 1 +} member { id: 0x31cd18d3 name: "intensity" @@ -105754,6 +107397,12 @@ member { type_id: 0x914dbfdc offset: 1856 } +member { + id: 0x3cd46820 + name: "interface_ptr" + type_id: 0x18bd6530 + offset: 3456 +} member { id: 0x54b2e4db name: "interfaces" @@ -105861,6 +107510,12 @@ member { type_id: 0x6720d32f offset: 576 } +member { + id: 0x1eb686c0 + name: "internal_suspend_count" + type_id: 0x4585663f + offset: 4672 +} member { id: 0x52285a55 name: "internal_tag" @@ -106437,6 +108092,18 @@ member { type_id: 0x6d7f5ff6 offset: 72 } +member { + id: 0x9d69c21e + name: "io" + type_id: 0x0206e829 + offset: 64 +} +member { + id: 0x5fad2d83 + name: "io_barrier" + type_id: 0xa46efa19 + offset: 6400 +} member { id: 0x7aee4108 name: "io_base" @@ -106455,6 +108122,12 @@ member { type_id: 0x80c20070 offset: 1792 } +member { + id: 0x627115f2 + name: "io_bs" + type_id: 0x200a0749 + offset: 2112 +} member { id: 0x65b934f9 name: "io_buffers_cache" @@ -106497,6 +108170,12 @@ member { type_id: 0x38f320f1 offset: 19456 } +member { + id: 0x43d5e607 + name: "io_count" + type_id: 0x74d29cf1 + offset: 416 +} member { id: 0xa3dbd5d1 name: "io_dev" @@ -106509,6 +108188,12 @@ member { type_id: 0x3c5401fe offset: 192 } +member { + id: 0x4b3c38dc + name: "io_hints" + type_id: 0x5d27fec1 + offset: 1472 +} member { id: 0xfe460429 name: "io_is_busy" @@ -107041,6 +108726,12 @@ member { type_id: 0x25eef749 offset: 64 } +member { + id: 0x694d3c49 + name: "ioport" + type_id: 0x29c64ab1 + offset: 1728 +} member { id: 0x695e350f name: "ioport" @@ -108707,6 +110398,12 @@ member { offset: 745 bitsize: 2 } +member { + id: 0x100aab74 + name: "is_fixed" + type_id: 0x6d7f5ff6 + offset: 1984 +} member { id: 0x3952b157 name: "is_frozen" @@ -108934,6 +110631,12 @@ member { offset: 6533 bitsize: 1 } +member { + id: 0xbc20bf07 + name: "is_ndp16" + type_id: 0x295c7202 + offset: 1920 +} member { id: 0x1f3c147c name: "is_nested" @@ -109297,6 +111000,12 @@ member { type_id: 0x6d7f5ff6 offset: 168 } +member { + id: 0x56acdda7 + name: "is_zlp_ok" + type_id: 0x6d7f5ff6 + offset: 1920 +} member { id: 0xfa661c0d name: "isids" @@ -109580,6 +111289,12 @@ member { type_id: 0x2c4043e6 offset: 448 } +member { + id: 0x5a8eeaf5 + name: "iterate_devices" + type_id: 0x4944b34e + offset: 1408 +} member { id: 0x7b221f4e name: "iterate_shared" @@ -109610,6 +111325,12 @@ member { type_id: 0x2efe8065 offset: 1408 } +member { + id: 0x56ccb987 + name: "iv" + type_id: 0x18bd6530 + offset: 960 +} member { id: 0x56d4cc43 name: "iv" @@ -109628,6 +111349,12 @@ member { type_id: 0x6720d32f offset: 192 } +member { + id: 0x8320112b + name: "ivsize" + type_id: 0x4585663f + offset: 1024 +} member { id: 0x832017a6 name: "ivsize" @@ -109681,6 +111408,12 @@ member { type_id: 0x2c7bd73f offset: 1792 } +member { + id: 0x9f7caab9 + name: "jack_type" + type_id: 0x4585663f + offset: 64 +} member { id: 0x5d9c18bc name: "jack_zones" @@ -110914,6 +112647,12 @@ member { type_id: 0x141ef775 offset: 6144 } +member { + id: 0xd68a69a4 + name: "kobj_holder" + type_id: 0xa1319a08 + offset: 5376 +} member { id: 0x84231c09 name: "kobj_type" @@ -111525,6 +113264,12 @@ member { type_id: 0x33756485 offset: 256 } +member { + id: 0x2660c5df + name: "last" + type_id: 0x0fc3c654 + offset: 512 +} member { id: 0x2667209c name: "last" @@ -111567,6 +113312,12 @@ member { type_id: 0x92233392 offset: 384 } +member { + id: 0x8c1c72c6 + name: "last_accessed" + type_id: 0x33756485 + offset: 768 +} member { id: 0x46917fc8 name: "last_ack" @@ -112098,6 +113849,12 @@ member { type_id: 0x054f691a offset: 1088 } +member { + id: 0xaac934df + name: "last_rw" + type_id: 0x4585663f + offset: 64 +} member { id: 0xa444a488 name: "last_sample_time" @@ -112110,6 +113867,11 @@ member { type_id: 0x92233392 offset: 10560 } +member { + id: 0x0d364652 + name: "last_sector" + type_id: 0xd0b3a203 +} member { id: 0x02f7d82f name: "last_sector_bug" @@ -113363,6 +115125,12 @@ member { name: "len" type_id: 0xc93e017b } +member { + id: 0xb8d56e3d + name: "len" + type_id: 0xd0b3a203 + offset: 192 +} member { id: 0xb8e3f22b name: "len" @@ -113452,6 +115220,12 @@ member { type_id: 0x33756485 offset: 64 } +member { + id: 0x399dce5b + name: "len_ptr" + type_id: 0x1bf16028 + offset: 192 +} member { id: 0xf7528eb9 name: "len_so_far" @@ -113923,6 +115697,13 @@ member { type_id: 0x4585663f offset: 1664 } +member { + id: 0x8bbdb526 + name: "limit_swap_bios" + type_id: 0x6d7f5ff6 + offset: 578 + bitsize: 1 +} member { id: 0x6270d42c name: "limit_valid" @@ -114659,6 +116440,12 @@ member { type_id: 0xd3c80119 offset: 512 } +member { + id: 0x7c00e44f + name: "list" + type_id: 0xd3c80119 + offset: 1856 +} member { id: 0x7c00e5d1 name: "list" @@ -114979,6 +116766,12 @@ member { type_id: 0xd3c80119 offset: 256 } +member { + id: 0x76367e75 + name: "list_mode" + type_id: 0x5d8155a5 + offset: 584 +} member { id: 0xd773d1c8 name: "list_node" @@ -115280,6 +117073,11 @@ member { type_id: 0x2ef03743 offset: 192 } +member { + id: 0xd4c95c39 + name: "load_count" + type_id: 0x33756485 +} member { id: 0x387efce1 name: "load_fw" @@ -115893,6 +117691,12 @@ member { type_id: 0xa7c362b0 offset: 9728 } +member { + id: 0x2d4b3012 + name: "lock" + type_id: 0xa7c362b0 + offset: 7424 +} member { id: 0x2d4b30cc name: "lock" @@ -117179,6 +118983,12 @@ member { type_id: 0x360c66c5 offset: 2752 } +member { + id: 0x545a8863 + name: "lru" + type_id: 0x585b40a5 + offset: 448 +} member { id: 0x5484b289 name: "lru" @@ -117214,6 +119024,12 @@ member { type_id: 0x74d29cf1 offset: 49152 } +member { + id: 0x94eba612 + name: "lru_list" + type_id: 0xd3c80119 + offset: 192 +} member { id: 0x50d1f6aa name: "lru_lock" @@ -117762,6 +119578,11 @@ member { name: "magic" type_id: 0xe8034002 } +member { + id: 0xd6baf777 + name: "magic" + type_id: 0xc93e017b +} member { id: 0xd6e31323 name: "magic" @@ -118111,6 +119932,12 @@ member { type_id: 0xb9c7723b offset: 1216 } +member { + id: 0x8d8ccb94 + name: "map" + type_id: 0x7abd5475 + offset: 448 +} member { id: 0x8dbdb056 name: "map" @@ -118168,6 +119995,12 @@ member { type_id: 0x1bf16028 offset: 1664 } +member { + id: 0x8deec674 + name: "map" + type_id: 0x18bd6530 + offset: 896 +} member { id: 0x8df0341e name: "map" @@ -120061,6 +121894,12 @@ member { type_id: 0xe8034002 offset: 64 } +member { + id: 0x3a33fdde + name: "max_datagram_size" + type_id: 0xc9082b19 + offset: 2272 +} member { id: 0x6252d912 name: "max_dec_size" @@ -120496,6 +122335,12 @@ member { type_id: 0x33756485 offset: 256 } +member { + id: 0x09343eea + name: "max_io_len" + type_id: 0x1c3dbe5a + offset: 256 +} member { id: 0xf058f4c8 name: "max_keysize" @@ -120604,6 +122449,12 @@ member { type_id: 0x4585663f offset: 2336 } +member { + id: 0xeaccae16 + name: "max_mv" + type_id: 0x4585663f + offset: 32 +} member { id: 0x7b864e19 name: "max_native_cs" @@ -120616,6 +122467,12 @@ member { type_id: 0x6720d32f offset: 160 } +member { + id: 0x90a7314a + name: "max_ndp_size" + type_id: 0xc9082b19 + offset: 1888 +} member { id: 0x4f305ba6 name: "max_newidle_lb_cost" @@ -121205,6 +123062,12 @@ member { type_id: 0x4585663f offset: 64 } +member { + id: 0xcfd59103 + name: "max_size" + type_id: 0x39b2ba38 + offset: 384 +} member { id: 0xc288bba2 name: "max_slices" @@ -121909,6 +123772,18 @@ member { type_id: 0xa84ab8c0 offset: 32 } +member { + id: 0x12ebc87a + name: "mbim_desc" + type_id: 0x324ddec3 + offset: 1280 +} +member { + id: 0x605196d3 + name: "mbim_extended_desc" + type_id: 0x3b622f67 + offset: 1344 +} member { id: 0xaea16832 name: "mbox" @@ -122361,6 +124236,17 @@ member { type_id: 0x4585663f offset: 640 } +member { + id: 0xff5d592e + name: "md" + type_id: 0x2d77f22a +} +member { + id: 0xff5d5e59 + name: "md" + type_id: 0x2d77f22a + offset: 448 +} member { id: 0x966b766d name: "md_dst" @@ -123094,6 +124980,18 @@ member { type_id: 0x064d6086 offset: 2240 } +member { + id: 0x1f686bd1 + name: "mempools" + type_id: 0x32e4574b + offset: 5312 +} +member { + id: 0x1f686eb8 + name: "mempools" + type_id: 0x32e4574b + offset: 2240 +} member { id: 0xebf8e0ed name: "memregion" @@ -123158,6 +125056,11 @@ member { type_id: 0x0f78a6c8 offset: 128 } +member { + id: 0x037856c6 + name: "merged" + type_id: 0x6d7f5ff6 +} member { id: 0x5052f78e name: "merges" @@ -123193,6 +125096,12 @@ member { type_id: 0xb3e7bac9 offset: 5448 } +member { + id: 0x9de5400c + name: "message" + type_id: 0x4a37c87b + offset: 1152 +} member { id: 0x8cf2c6b7 name: "message_id" @@ -123929,6 +125838,11 @@ member { type_id: 0x4585663f offset: 2304 } +member { + id: 0xa07cb245 + name: "min_mv" + type_id: 0x4585663f +} member { id: 0x31458425 name: "min_nr" @@ -124055,6 +125969,12 @@ member { type_id: 0xb3e7bac9 offset: 7080 } +member { + id: 0x7cb10669 + name: "min_tx_pkt" + type_id: 0x914dbfdc + offset: 2400 +} member { id: 0x47fc27ee name: "min_tx_rate" @@ -124176,6 +126096,12 @@ member { type_id: 0x0faae5b1 offset: 320 } +member { + id: 0xf910802f + name: "minimum_buffers" + type_id: 0x4585663f + offset: 1440 +} member { id: 0x0eef50fa name: "miniq_egress" @@ -124277,6 +126203,12 @@ member { type_id: 0xc9082b19 offset: 3680 } +member { + id: 0xa298fce5 + name: "minor_base" + type_id: 0x6720d32f + offset: 192 +} member { id: 0x850041c9 name: "minor_class" @@ -125302,6 +127234,18 @@ member { type_id: 0x5adf57ae offset: 7680 } +member { + id: 0x87085ac9 + name: "mode" + type_id: 0x9547a3da + offset: 1952 +} +member { + id: 0x87085bff + name: "mode" + type_id: 0x9547a3da + offset: 128 +} member { id: 0x8709c295 name: "mode" @@ -127069,6 +129013,12 @@ member { type_id: 0x0f626ee5 offset: 640 } +member { + id: 0x3a21c0f4 + name: "mtx" + type_id: 0xf313e71a + offset: 1760 +} member { id: 0x3a75162c name: "mtx" @@ -127447,6 +129397,11 @@ member { type_id: 0x1592957f offset: 2688 } +member { + id: 0x4659cf92 + name: "n" + type_id: 0x3f0185ef +} member { id: 0xc101e64f name: "n2" @@ -127513,6 +129468,12 @@ member { type_id: 0x33756485 offset: 2240 } +member { + id: 0x04227360 + name: "n_buffers" + type_id: 0x607419c2 + offset: 704 +} member { id: 0x650782f7 name: "n_channels" @@ -127761,6 +129722,12 @@ member { type_id: 0xe62ebf07 offset: 32 } +member { + id: 0x0cc91dc5 + name: "n_sz" + type_id: 0xf435685e + offset: 512 +} member { id: 0xdc10e384 name: "n_tables" @@ -128014,6 +129981,12 @@ member { name: "name" type_id: 0x4d65b854 } +member { + id: 0x0d9941a0 + name: "name" + type_id: 0x42201dce + offset: 160 +} member { id: 0x0d9944ca name: "name" @@ -128044,6 +130017,12 @@ member { type_id: 0x42201dce offset: 672 } +member { + id: 0x0d994b65 + name: "name" + type_id: 0x42201dce + offset: 1728 +} member { id: 0x0d994c40 name: "name" @@ -128758,6 +130737,12 @@ member { offset: 8135 bitsize: 1 } +member { + id: 0xf79a533a + name: "native_mode" + type_id: 0x4585663f + offset: 32 +} member { id: 0x24fa7507 name: "native_pcie_hotplug" @@ -128856,6 +130841,11 @@ member { type_id: 0x6720d32f offset: 320 } +member { + id: 0x11638e21 + name: "ncm_parm" + type_id: 0xc4793083 +} member { id: 0xe5f6efa3 name: "ncmd_timer" @@ -129633,6 +131623,12 @@ member { type_id: 0xc9082b19 offset: 32 } +member { + id: 0x9460fdf7 + name: "need_reserved_buffers" + type_id: 0x4585663f + offset: 1408 +} member { id: 0xa5ad7a15 name: "need_retune" @@ -129657,6 +131653,12 @@ member { type_id: 0x6d7f5ff6 offset: 8 } +member { + id: 0x247d2bc2 + name: "need_shrink" + type_id: 0xb02b353a + offset: 2880 +} member { id: 0x394e18c1 name: "need_sync" @@ -129720,6 +131722,13 @@ member { offset: 325 bitsize: 1 } +member { + id: 0xf55a45f8 + name: "needs_bio_set_dev" + type_id: 0x6d7f5ff6 + offset: 581 + bitsize: 1 +} member { id: 0x87f2640c name: "needs_force_resume" @@ -129924,6 +131933,12 @@ member { type_id: 0x0ca27481 offset: 704 } +member { + id: 0x723de0ca + name: "net" + type_id: 0x32a623d7 + offset: 128 +} member { id: 0x723dee2d name: "net" @@ -130557,6 +132572,12 @@ member { type_id: 0x0379fcff offset: 128 } +member { + id: 0x11f10efe + name: "next" + type_id: 0x0206e829 + offset: 192 +} member { id: 0x11f1c380 name: "next" @@ -130580,6 +132601,12 @@ member { type_id: 0x015f6fbc offset: 896 } +member { + id: 0x11f3dd43 + name: "next" + type_id: 0x00daeb4b + offset: 448 +} member { id: 0x11f3fee9 name: "next" @@ -130867,6 +132894,12 @@ member { type_id: 0x2e8d5f05 offset: 1856 } +member { + id: 0x7cd3c1cb + name: "next_sector" + type_id: 0xd0b3a203 + offset: 64 +} member { id: 0x430d2e4c name: "next_seq" @@ -131800,6 +133833,18 @@ member { offset: 275 bitsize: 1 } +member { + id: 0x59c1c7cb + name: "no_skb_reserve" + type_id: 0x6d7f5ff6 + offset: 1480 +} +member { + id: 0xec4c530d + name: "no_sleep" + type_id: 0x6d7f5ff6 + offset: 416 +} member { id: 0x1ccebffc name: "no_start_on_add" @@ -132267,6 +134312,12 @@ member { type_id: 0x6d7f5ff6 offset: 8696 } +member { + id: 0x788bc17d + name: "nodemask" + type_id: 0x2fb2b385 + offset: 64 +} member { id: 0x8b5fc0c2 name: "nodename" @@ -134079,6 +136130,12 @@ member { type_id: 0x6720d32f offset: 51840 } +member { + id: 0x42b6c2d1 + name: "nr_zones" + type_id: 0x4585663f + offset: 10240 +} member { id: 0x42b6ca98 name: "nr_zones" @@ -134492,6 +136549,12 @@ member { type_id: 0x295c7202 offset: 40 } +member { + id: 0x197cb73f + name: "num_allocated" + type_id: 0x4585663f + offset: 1696 +} member { id: 0xf074f928 name: "num_alt_modes" @@ -134872,6 +136935,12 @@ member { type_id: 0xc9082b19 offset: 64 } +member { + id: 0xe8ffd602 + name: "num_discard_bios" + type_id: 0x4585663f + offset: 320 +} member { id: 0x9494166e name: "num_domains" @@ -134991,6 +137060,12 @@ member { type_id: 0x6720d32f offset: 7552 } +member { + id: 0xf997f643 + name: "num_flush_bios" + type_id: 0x4585663f + offset: 288 +} member { id: 0x7bcccefc name: "num_formats" @@ -135724,6 +137799,12 @@ member { type_id: 0x27a7c613 offset: 128 } +member { + id: 0x772e5751 + name: "num_secure_erase_bios" + type_id: 0x4585663f + offset: 352 +} member { id: 0xab5509da name: "num_segs" @@ -135880,6 +137961,12 @@ member { type_id: 0x4585663f offset: 64 } +member { + id: 0x0e2a551a + name: "num_targets" + type_id: 0x4585663f + offset: 1664 +} member { id: 0x72a5b6f7 name: "num_tbps" @@ -135917,6 +138004,11 @@ member { offset: 1177 bitsize: 7 } +member { + id: 0x349420c4 + name: "num_timings" + type_id: 0x4585663f +} member { id: 0x8026d50a name: "num_total_plane" @@ -136048,6 +138140,12 @@ member { type_id: 0x4585663f offset: 7616 } +member { + id: 0x4fa0a319 + name: "num_write_zeroes_bios" + type_id: 0x4585663f + offset: 384 +} member { id: 0xd474418d name: "numa_node" @@ -136084,6 +138182,12 @@ member { type_id: 0x6720d32f offset: 8480 } +member { + id: 0x0f379684 + name: "numa_node_id" + type_id: 0x6720d32f + offset: 1440 +} member { id: 0x35834d78 name: "numa_pwq_tbl" @@ -137175,6 +139279,12 @@ member { type_id: 0xdd6eef0a offset: 128 } +member { + id: 0x9bd5d3ca + name: "offset" + type_id: 0xc9082b19 + offset: 1728 +} member { id: 0x9bd5d4ef name: "offset" @@ -137327,6 +139437,12 @@ member { type_id: 0x42201dce offset: 832 } +member { + id: 0xe5a6cde2 + name: "oiv" + type_id: 0x00c72527 + offset: 896 +} member { id: 0x1e0dc421 name: "okfn" @@ -137381,6 +139497,12 @@ member { type_id: 0xe62ebf07 offset: 96 } +member { + id: 0x1293b17d + name: "old_sector" + type_id: 0xd0b3a203 + offset: 256 +} member { id: 0xa9aee94d name: "old_sk_destruct" @@ -137986,6 +140108,12 @@ member { type_id: 0x11cfee5a offset: 960 } +member { + id: 0xadb9bed8 + name: "open" + type_id: 0x0d36eefe + offset: 2240 +} member { id: 0xadba96dc name: "open" @@ -138009,6 +140137,12 @@ member { type_id: 0x6720d32f offset: 64 } +member { + id: 0x3961e57f + name: "open_count" + type_id: 0x74d29cf1 + offset: 1568 +} member { id: 0x3961e85c name: "open_count" @@ -138853,6 +140987,12 @@ member { type_id: 0x3542336e offset: 576 } +member { + id: 0xafbe6621 + name: "ops" + type_id: 0x356e4b27 + offset: 192 +} member { id: 0xafbed153 name: "ops" @@ -139107,6 +141247,12 @@ member { type_id: 0x2360e10b offset: 256 } +member { + id: 0xb51c2507 + name: "order" + type_id: 0xc5d9d969 + offset: 224 +} member { id: 0xb53fd5a4 name: "order" @@ -139196,6 +141342,24 @@ member { name: "orig_addr" type_id: 0xbdd18903 } +member { + id: 0xd07b78d9 + name: "orig_bio" + type_id: 0x15a30023 + offset: 512 +} +member { + id: 0x17637816 + name: "orig_cb" + type_id: 0xfc2c3062 + offset: 192 +} +member { + id: 0x9772cb65 + name: "orig_data" + type_id: 0x18bd6530 + offset: 128 +} member { id: 0x25ffe762 name: "orig_description" @@ -139467,6 +141631,12 @@ member { type_id: 0xff8884d8 offset: 160 } +member { + id: 0xb335975f + name: "out" + type_id: 0xc440583a + offset: 448 +} member { id: 0xb396f982 name: "out" @@ -139520,6 +141690,12 @@ member { type_id: 0x34d79405 offset: 128 } +member { + id: 0xbdac13df + name: "out_ep" + type_id: 0x0e2680c2 + offset: 1856 +} member { id: 0x4b42e885 name: "out_epnum" @@ -140345,6 +142521,12 @@ member { type_id: 0x3d7c93df offset: 896 } +member { + id: 0xa68e47c8 + name: "p" + type_id: 0x3f0185ef + offset: 192 +} member { id: 0xa6984880 name: "p" @@ -140572,6 +142754,12 @@ member { name: "p_s64" type_id: 0x0113dde3 } +member { + id: 0x73d7a8f4 + name: "p_sz" + type_id: 0xf435685e + offset: 704 +} member { id: 0x5fce0bc2 name: "p_u16" @@ -140858,6 +143046,12 @@ member { type_id: 0xe8034002 offset: 80 } +member { + id: 0x642f0821 + name: "padding" + type_id: 0xc9082b19 + offset: 32 +} member { id: 0x64367ab0 name: "padding" @@ -140981,6 +143175,17 @@ member { type_id: 0x06835e9c offset: 640 } +member { + id: 0x32051484 + name: "page" + type_id: 0x00c72527 +} +member { + id: 0x32051c2a + name: "page" + type_id: 0x00c72527 + offset: 768 +} member { id: 0x322121cd name: "page" @@ -143589,6 +145794,12 @@ member { type_id: 0x74d29cf1 offset: 256 } +member { + id: 0x4c3543b9 + name: "pending_io" + type_id: 0x064d6086 + offset: 2176 +} member { id: 0x9f9c13ba name: "pending_irq" @@ -143765,6 +145976,12 @@ member { type_id: 0x2f5f8053 offset: 768 } +member { + id: 0x319b41b8 + name: "per_io_data_size" + type_id: 0x4585663f + offset: 416 +} member { id: 0xd61b14f9 name: "per_parent_data" @@ -144793,6 +147010,11 @@ member { name: "phys" type_id: 0x5abe7554 } +member { + id: 0x304c83ff + name: "phys" + type_id: 0x14ca5b0f +} member { id: 0x3065f315 name: "phys" @@ -147163,6 +149385,11 @@ member { type_id: 0xb914bfab offset: 10048 } +member { + id: 0xde69b270 + name: "pool" + type_id: 0xe97fe194 +} member { id: 0xde82c205 name: "pool" @@ -147708,6 +149935,12 @@ member { type_id: 0x2dde023d offset: 3648 } +member { + id: 0x4b911741 + name: "port_usb" + type_id: 0x380c33d1 + offset: 64 +} member { id: 0xabdfb454 name: "port_write_buf" @@ -147995,6 +150228,12 @@ member { type_id: 0x2c78b884 offset: 64 } +member { + id: 0xc58884a8 + name: "postsuspend" + type_id: 0x540fc033 + offset: 896 +} member { id: 0x5016a0d8 name: "potential_contaminant" @@ -148777,6 +151016,12 @@ member { type_id: 0x2c831d6e offset: 704 } +member { + id: 0x552de7df + name: "precise_timestamps" + type_id: 0x6d7f5ff6 + offset: 576 +} member { id: 0x5f1f9d63 name: "precision" @@ -149106,6 +151351,12 @@ member { type_id: 0x2ea6d809 offset: 832 } +member { + id: 0xd1d88fb4 + name: "prepare_ioctl" + type_id: 0xb5818a23 + offset: 1216 +} member { id: 0x25513c26 name: "prepare_late" @@ -149219,6 +151470,12 @@ member { type_id: 0x287dadb4 offset: 3648 } +member { + id: 0xc22f1b4d + name: "preresume" + type_id: 0xcd86b17c + offset: 960 +} member { id: 0x34aa29cb name: "present" @@ -149261,6 +151518,18 @@ member { type_id: 0x6d7f5ff6 offset: 6312 } +member { + id: 0x542288b2 + name: "presuspend" + type_id: 0xeab0ac41 + offset: 768 +} +member { + id: 0x8a92bcd2 + name: "presuspend_undo" + type_id: 0xa3284d98 + offset: 832 +} member { id: 0xedbb0da6 name: "pretimeout" @@ -153086,6 +155355,12 @@ member { name: "q" type_id: 0x407489b0 } +member { + id: 0xe94def1c + name: "q" + type_id: 0x3f0185ef + offset: 256 +} member { id: 0xe95c6150 name: "q" @@ -153137,6 +155412,12 @@ member { name: "q_node" type_id: 0xd3c80119 } +member { + id: 0x30c8a340 + name: "q_sz" + type_id: 0xf435685e + offset: 768 +} member { id: 0xc5c43282 name: "q_usage_counter" @@ -153237,6 +155518,18 @@ member { type_id: 0x295c7202 offset: 1056 } +member { + id: 0x060b5e2a + name: "qinv" + type_id: 0x3f0185ef + offset: 448 +} +member { + id: 0x112d65f6 + name: "qinv_sz" + type_id: 0xf435685e + offset: 960 +} member { id: 0x9b5b8e67 name: "qlen" @@ -153306,6 +155599,12 @@ member { name: "qmenu_int" type_id: 0x3f74bbde } +member { + id: 0x143073ec + name: "qmult" + type_id: 0x4585663f + offset: 832 +} member { id: 0x91da22df name: "qnbytes" @@ -153613,6 +155912,12 @@ member { name: "queue" type_id: 0x09427c40 } +member { + id: 0xaddb4c9f + name: "queue" + type_id: 0x09427c40 + offset: 1472 +} member { id: 0xaddb4cea name: "queue" @@ -156382,6 +158687,12 @@ member { type_id: 0x2e103219 offset: 256 } +member { + id: 0xffa6c51e + name: "read_error" + type_id: 0x7be80061 + offset: 592 +} member { id: 0x26d2a405 name: "read_event_config" @@ -159218,6 +161529,12 @@ member { type_id: 0x2f8ebbca offset: 64 } +member { + id: 0x2e40d714 + name: "release_clone_rq" + type_id: 0x1ce28cf1 + offset: 576 +} member { id: 0x06fc76ed name: "release_completion" @@ -160194,6 +162511,12 @@ member { name: "report_type" type_id: 0xe62ebf07 } +member { + id: 0x0d0ed2a2 + name: "report_zones" + type_id: 0xb0c08c5a + offset: 1280 +} member { id: 0x0d9120ed name: "report_zones" @@ -160312,6 +162635,12 @@ member { type_id: 0x5e8dc7f4 offset: 704 } +member { + id: 0x41836813 + name: "req_lock" + type_id: 0xf313e71a + offset: 256 +} member { id: 0x41d7be50 name: "req_lock" @@ -160481,6 +162810,12 @@ member { type_id: 0x4585663f offset: 32 } +member { + id: 0xa9e8c522 + name: "reqsize" + type_id: 0x4585663f + offset: 576 +} member { id: 0xa9e8c748 name: "reqsize" @@ -160772,6 +163107,12 @@ member { type_id: 0x0f79fcf8 offset: 256 } +member { + id: 0xee14c6d9 + name: "requeue_list" + type_id: 0x0206e829 + offset: 3392 +} member { id: 0xeec50ace name: "requeue_list" @@ -160796,6 +163137,12 @@ member { type_id: 0x1f3c8679 offset: 18752 } +member { + id: 0x37483f88 + name: "requeue_work" + type_id: 0x1f3c8679 + offset: 3008 +} member { id: 0x37a61301 name: "requeue_work" @@ -161703,6 +164050,12 @@ member { type_id: 0x295c7202 offset: 8 } +member { + id: 0x9a257ac5 + name: "reserved_buffers" + type_id: 0xd3c80119 + offset: 1280 +} member { id: 0xaa963da5 name: "reserved_char" @@ -161762,6 +164115,12 @@ member { type_id: 0x2d255333 offset: 256 } +member { + id: 0x6290b59b + name: "reset" + type_id: 0x2d12100b + offset: 128 +} member { id: 0x6290e8f3 name: "reset" @@ -162675,6 +165034,12 @@ member { type_id: 0x2c18712b offset: 2624 } +member { + id: 0xcae841ae + name: "resume" + type_id: 0x77a6dd29 + offset: 1024 +} member { id: 0xa4d8edf6 name: "resume_done" @@ -164146,6 +166511,12 @@ member { type_id: 0xd5df6730 offset: 28544 } +member { + id: 0x37cf0b9e + name: "rq_end_io" + type_id: 0xabcaeaec + offset: 704 +} member { id: 0x97cc8149 name: "rq_flags" @@ -165727,6 +168098,12 @@ member { type_id: 0x33756485 offset: 64 } +member { + id: 0xc2e1d78f + name: "rx_frames" + type_id: 0x578f9c2b + offset: 640 +} member { id: 0xa87a1b62 name: "rx_frames_delta" @@ -165839,6 +168216,12 @@ member { name: "rx_mask" type_id: 0x7dbd382e } +member { + id: 0xa064e9a8 + name: "rx_max" + type_id: 0xc9082b19 + offset: 2112 +} member { id: 0xfd4774fd name: "rx_max_coalesced_frames" @@ -165945,6 +168328,12 @@ member { type_id: 0xedf277ba offset: 1472 } +member { + id: 0xb3ff3714 + name: "rx_ntbs" + type_id: 0x92233392 + offset: 2816 +} member { id: 0x9fdf2166 name: "rx_oos_packets" @@ -165980,6 +168369,12 @@ member { type_id: 0xedf277ba offset: 704 } +member { + id: 0xa15b4dcc + name: "rx_overhead" + type_id: 0x92233392 + offset: 2752 +} member { id: 0x6a136bc1 name: "rx_packets" @@ -166054,6 +168449,12 @@ member { name: "rx_read" type_id: 0x2de3e088 } +member { + id: 0xd3d22e9f + name: "rx_reqs" + type_id: 0xd3c80119 + offset: 448 +} member { id: 0xb906969b name: "rx_reserved" @@ -166105,6 +168506,12 @@ member { name: "rx_sc_stats" type_id: 0x3f75f4e8 } +member { + id: 0x32a32199 + name: "rx_seq" + type_id: 0x914dbfdc + offset: 2384 +} member { id: 0xa6aa7bdf name: "rx_seq_discards" @@ -166390,6 +168797,11 @@ member { name: "s" type_id: 0x36592664 } +member { + id: 0x67c7a307 + name: "s" + type_id: 0x3514d59f +} member { id: 0x67c839a9 name: "s" @@ -167620,6 +170032,11 @@ member { type_id: 0x92233392 offset: 64 } +member { + id: 0x653b6170 + name: "saved_state" + type_id: 0x4585663f +} member { id: 0x72f4c281 name: "saved_syn" @@ -169185,6 +171602,12 @@ member { type_id: 0xd0b3a203 offset: 384 } +member { + id: 0xf705dc19 + name: "sector_offset" + type_id: 0x4585663f + offset: 576 +} member { id: 0x173ce3ee name: "sector_size" @@ -169197,6 +171620,12 @@ member { type_id: 0x4585663f offset: 320 } +member { + id: 0x3721dfe0 + name: "sectors" + type_id: 0x4585663f + offset: 608 +} member { id: 0x3739d0c7 name: "sectors" @@ -169209,6 +171638,12 @@ member { type_id: 0x80904a3b offset: 256 } +member { + id: 0x0b50257c + name: "sectors_per_block_bits" + type_id: 0x29b77961 + offset: 928 +} member { id: 0xb0199c94 name: "secure_elements" @@ -171019,6 +173454,12 @@ member { type_id: 0x0d44ba38 offset: 128 } +member { + id: 0x87f98767 + name: "set_event" + type_id: 0x2d12100b + offset: 192 +} member { id: 0xada2d6c5 name: "set_fecparam" @@ -171558,6 +173999,12 @@ member { type_id: 0x2e136b7a offset: 1856 } +member { + id: 0x4117392b + name: "set_priv_key" + type_id: 0x2d591a0e + offset: 320 +} member { id: 0x9fa5cb5f name: "set_promiscuous_mode" @@ -171588,6 +174035,12 @@ member { type_id: 0x2ec0f499 offset: 320 } +member { + id: 0xfd2d3002 + name: "set_pub_key" + type_id: 0x2d591a0e + offset: 256 +} member { id: 0xff542925 name: "set_pull_down" @@ -173295,6 +175748,18 @@ member { offset: 22113 bitsize: 1 } +member { + id: 0x133be164 + name: "shrink_work" + type_id: 0x1f3c8679 + offset: 2496 +} +member { + id: 0x868ca1f0 + name: "shrinker" + type_id: 0xb4975242 + offset: 1984 +} member { id: 0x868caa9e name: "shrinker" @@ -173714,6 +176179,11 @@ member { type_id: 0x4050ae51 offset: 24 } +member { + id: 0x9063e9c1 + name: "sign" + type_id: 0x2cd8a9c9 +} member { id: 0x90777e15 name: "sign" @@ -173890,6 +176360,13 @@ member { name: "single_show" type_id: 0x2d8ee262 } +member { + id: 0xdf12b226 + name: "singleton" + type_id: 0x6d7f5ff6 + offset: 1921 + bitsize: 1 +} member { id: 0x5c8384f3 name: "sink" @@ -175493,6 +177970,18 @@ member { type_id: 0x2efd5036 offset: 64 } +member { + id: 0xd9ef0498 + name: "slab_buffer" + type_id: 0x2efd5036 + offset: 1088 +} +member { + id: 0x031120c5 + name: "slab_cache" + type_id: 0x2efd5036 + offset: 1152 +} member { id: 0x031126d0 name: "slab_cache" @@ -177078,6 +179567,12 @@ member { name: "spinlock" type_id: 0xf313e71a } +member { + id: 0x9a7d31f4 + name: "spinlock" + type_id: 0xf313e71a + offset: 384 +} member { id: 0x9a7d37a1 name: "spinlock" @@ -177480,6 +179975,12 @@ member { type_id: 0x11cffa09 offset: 448 } +member { + id: 0x4427a46d + name: "src" + type_id: 0x11cffa09 + offset: 384 +} member { id: 0x4427ac3d name: "src" @@ -177507,6 +180008,11 @@ member { name: "src" type_id: 0x6d25e07f } +member { + id: 0x446cb466 + name: "src" + type_id: 0x5ade635b +} member { id: 0x4475a595 name: "src" @@ -177627,6 +180133,12 @@ member { type_id: 0xb3e7bac9 offset: 16 } +member { + id: 0xe29869f3 + name: "src_len" + type_id: 0x4585663f + offset: 512 +} member { id: 0x031b1a4e name: "src_maxburst" @@ -178628,6 +181140,18 @@ member { type_id: 0xbdd18903 offset: 128 } +member { + id: 0x46cb8735 + name: "start" + type_id: 0xd0b3a203 + offset: 320 +} +member { + id: 0x46cb87d7 + name: "start" + type_id: 0xd0b3a203 + offset: 1728 +} member { id: 0x46d23b7b name: "start" @@ -178878,6 +181402,12 @@ member { type_id: 0x33756485 offset: 2112 } +member { + id: 0xa3682aac + name: "start_time" + type_id: 0x33756485 + offset: 64 +} member { id: 0xa3c97b9b name: "start_time" @@ -179341,6 +181871,12 @@ member { type_id: 0x33756485 offset: 1664 } +member { + id: 0x72c08b58 + name: "state" + type_id: 0x33756485 + offset: 704 +} member { id: 0x72c08d84 name: "state" @@ -180012,6 +182548,12 @@ member { type_id: 0x29b1eb4b offset: 256 } +member { + id: 0xb95d079c + name: "stats" + type_id: 0x286f60a3 + offset: 4032 +} member { id: 0xb96dd5c1 name: "stats" @@ -180059,6 +182601,12 @@ member { type_id: 0x815cddc3 offset: 1664 } +member { + id: 0x96627cf8 + name: "stats_aux" + type_id: 0xb4683157 + offset: 256 +} member { id: 0x4fb8f148 name: "stats_block_coalesce_usecs" @@ -180136,6 +182684,12 @@ member { type_id: 0x6720d32f offset: 96 } +member { + id: 0x201cce16 + name: "status" + type_id: 0x7be80061 + offset: 384 +} member { id: 0x2022a603 name: "status" @@ -180307,6 +182861,12 @@ member { type_id: 0xc9082b19 offset: 64 } +member { + id: 0x20dd7873 + name: "status" + type_id: 0xba528163 + offset: 1088 +} member { id: 0x20fcc1ce name: "status" @@ -180685,6 +183245,12 @@ member { name: "stop" type_id: 0x6720d32f } +member { + id: 0x69fcaeb3 + name: "stop" + type_id: 0x74d29cf1 + offset: 1792 +} member { id: 0x02ed8160 name: "stop_count" @@ -181172,6 +183738,12 @@ member { type_id: 0x4585663f offset: 45344 } +member { + id: 0x5e10ffff + name: "stride" + type_id: 0x4585663f + offset: 1120 +} member { id: 0x5e325618 name: "stride" @@ -182117,6 +184689,12 @@ member { offset: 130 bitsize: 1 } +member { + id: 0x07459e81 + name: "supports_multi_frame" + type_id: 0x6d7f5ff6 + offset: 2080 +} member { id: 0x2138b2e5 name: "supports_op" @@ -182390,6 +184968,11 @@ member { type_id: 0x2dd58efa offset: 512 } +member { + id: 0x13692fb1 + name: "suspend_lock" + type_id: 0xa7c362b0 +} member { id: 0x86f0bc08 name: "suspend_noirq" @@ -182694,6 +185277,24 @@ member { type_id: 0x2fd46ff4 offset: 1088 } +member { + id: 0x69e5d3c9 + name: "swap_bios" + type_id: 0x6720d32f + offset: 4704 +} +member { + id: 0xcec5b332 + name: "swap_bios_lock" + type_id: 0xa7c362b0 + offset: 4928 +} +member { + id: 0xec6548f1 + name: "swap_bios_semaphore" + type_id: 0x6e3b7d7f + offset: 4736 +} member { id: 0xc43ef2ec name: "swap_complete" @@ -184466,6 +187067,11 @@ member { name: "table" type_id: 0x28d027d4 } +member { + id: 0xb6c41435 + name: "table" + type_id: 0x2f24a589 +} member { id: 0xb6cd92ad name: "table" @@ -184492,6 +187098,18 @@ member { type_id: 0x6720d32f offset: 672 } +member { + id: 0x0d77c97c + name: "table_devices" + type_id: 0xd3c80119 + offset: 768 +} +member { + id: 0x72b151f9 + name: "table_devices_lock" + type_id: 0xa7c362b0 + offset: 384 +} member { id: 0x4df2d47b name: "table_fulls" @@ -184600,6 +187218,12 @@ member { type_id: 0x99433372 offset: 128 } +member { + id: 0x0de002cb + name: "tag_set" + type_id: 0x2cc0f57b + offset: 3968 +} member { id: 0x0de00aa5 name: "tag_set" @@ -184937,6 +187561,12 @@ member { type_id: 0x66f6fc33 offset: 256 } +member { + id: 0x6669afd1 + name: "target_bio_nr" + type_id: 0x4585663f + offset: 32 +} member { id: 0xa2d76a12 name: "target_blocked" @@ -185124,6 +187754,12 @@ member { type_id: 0x0d107c2b offset: 64 } +member { + id: 0x1623d50f + name: "targets" + type_id: 0x3df0a7d3 + offset: 1792 +} member { id: 0x167e5754 name: "targets" @@ -186377,6 +189013,11 @@ member { type_id: 0x49b889e7 offset: 12704 } +member { + id: 0x7cd9a358 + name: "tgt" + type_id: 0x3df0a7d3 +} member { id: 0x07611cab name: "tgt_index" @@ -186778,6 +189419,12 @@ member { type_id: 0x09427c40 offset: 23232 } +member { + id: 0x1e282dde + name: "ti" + type_id: 0x3df0a7d3 + offset: 128 +} member { id: 0xe879699b name: "tick" @@ -187507,6 +190154,12 @@ member { type_id: 0x0cd0749c offset: 832 } +member { + id: 0xbd73b897 + name: "timer_interval" + type_id: 0xc9082b19 + offset: 1856 +} member { id: 0x64abf1a3 name: "timer_intv" @@ -187679,6 +190332,12 @@ member { type_id: 0x5d8155a5 offset: 128 } +member { + id: 0x1f55657f + name: "timings" + type_id: 0x0ce80834 + offset: 64 +} member { id: 0x1f6734de name: "timings" @@ -187696,6 +190355,12 @@ member { name: "timings" type_id: 0x9699a1e3 } +member { + id: 0x2c593fc1 + name: "tio" + type_id: 0xd16b19a7 + offset: 640 +} member { id: 0x73627a10 name: "tiocmget" @@ -188114,6 +190779,12 @@ member { type_id: 0x24373219 offset: 512 } +member { + id: 0x896faa0d + name: "todo" + type_id: 0x33756485 + offset: 1408 +} member { id: 0x898f1b47 name: "todo" @@ -188352,6 +191023,12 @@ member { type_id: 0xb02b353a offset: 704 } +member { + id: 0x9d16fe6e + name: "total" + type_id: 0x4585663f + offset: 576 +} member { id: 0x9d2cc35c name: "total" @@ -188410,6 +191087,12 @@ member { type_id: 0x295c7202 offset: 112 } +member { + id: 0xb46976b5 + name: "total_count" + type_id: 0x33756485 + offset: 64 +} member { id: 0x5d3c1feb name: "total_frames" @@ -188544,6 +191227,12 @@ member { type_id: 0x21d43a7b offset: 704 } +member { + id: 0x7248bb69 + name: "totalpages" + type_id: 0x33756485 + offset: 256 +} member { id: 0x0d628d12 name: "totalram" @@ -190892,6 +193581,30 @@ member { type_id: 0xe8034002 offset: 1200 } +member { + id: 0xc168d729 + name: "tx_curr_frame_num" + type_id: 0xc9082b19 + offset: 2080 +} +member { + id: 0x086ff8ab + name: "tx_curr_frame_payload" + type_id: 0xc9082b19 + offset: 2432 +} +member { + id: 0x38ca06c6 + name: "tx_curr_size" + type_id: 0xc9082b19 + offset: 2176 +} +member { + id: 0x5d898398 + name: "tx_curr_skb" + type_id: 0x054f691a + offset: 1600 +} member { id: 0x54a31621 name: "tx_custom_high_usecs" @@ -191145,6 +193858,18 @@ member { type_id: 0xc9082b19 offset: 13152 } +member { + id: 0x61a8790c + name: "tx_low_mem_max_cnt" + type_id: 0xc9082b19 + offset: 2208 +} +member { + id: 0xa94058b8 + name: "tx_low_mem_val" + type_id: 0xc9082b19 + offset: 2240 +} member { id: 0xa6a7625f name: "tx_lpi_enabled" @@ -191169,6 +193894,12 @@ member { type_id: 0x92233392 offset: 384 } +member { + id: 0x6dd1b0db + name: "tx_max" + type_id: 0xc9082b19 + offset: 2144 +} member { id: 0x55810d6d name: "tx_max_coalesced_frames" @@ -191193,6 +193924,12 @@ member { type_id: 0xe62ebf07 offset: 512 } +member { + id: 0x24dde6e5 + name: "tx_max_datagrams" + type_id: 0x914dbfdc + offset: 2304 +} member { id: 0x7992b00c name: "tx_max_pending" @@ -191234,6 +193971,12 @@ member { name: "tx_mode" type_id: 0xb3e7bac9 } +member { + id: 0xd6166cf3 + name: "tx_modulus" + type_id: 0x914dbfdc + offset: 2336 +} member { id: 0x962013d6 name: "tx_msg" @@ -191259,6 +194002,24 @@ member { offset: 579 bitsize: 3 } +member { + id: 0x85dc3e67 + name: "tx_ndp_modulus" + type_id: 0x914dbfdc + offset: 2352 +} +member { + id: 0xe0d8421b + name: "tx_ntbs" + type_id: 0x92233392 + offset: 2688 +} +member { + id: 0xa8317855 + name: "tx_overhead" + type_id: 0x92233392 + offset: 2624 +} member { id: 0x9206d03d name: "tx_packets" @@ -191370,6 +194131,12 @@ member { type_id: 0xc93e017b offset: 944 } +member { + id: 0x32c7bb3d + name: "tx_qlen" + type_id: 0x74d29cf1 + offset: 576 +} member { id: 0x580681a6 name: "tx_queue_len" @@ -191382,6 +194149,54 @@ member { type_id: 0x33756485 offset: 11328 } +member { + id: 0xc1b8b7af + name: "tx_reason_max_datagram" + type_id: 0xc9082b19 + offset: 2560 +} +member { + id: 0x29c64945 + name: "tx_reason_ndp_full" + type_id: 0xc9082b19 + offset: 2496 +} +member { + id: 0xaec5023b + name: "tx_reason_ntb_full" + type_id: 0xc9082b19 + offset: 2464 +} +member { + id: 0x618af26f + name: "tx_reason_timeout" + type_id: 0xc9082b19 + offset: 2528 +} +member { + id: 0x8d6eed3e + name: "tx_rem_sign" + type_id: 0x0baa70a7 + offset: 1728 +} +member { + id: 0x2d67c2b0 + name: "tx_rem_skb" + type_id: 0x054f691a + offset: 1664 +} +member { + id: 0x8c376a11 + name: "tx_remainder" + type_id: 0x914dbfdc + offset: 2320 +} +member { + id: 0xafc385cf + name: "tx_reqs" + type_id: 0xd3c80119 + offset: 320 +} member { id: 0x5f95d285 name: "tx_reserved" @@ -191439,6 +194254,12 @@ member { type_id: 0x054f691a offset: 6528 } +member { + id: 0x163cb0a1 + name: "tx_seq" + type_id: 0x914dbfdc + offset: 2368 +} member { id: 0x2862bcb8 name: "tx_sg" @@ -191530,6 +194351,18 @@ member { type_id: 0xc9082b19 offset: 13024 } +member { + id: 0xa25bc850 + name: "tx_timer" + type_id: 0xcd7704bf + offset: 256 +} +member { + id: 0xf9c0c1b7 + name: "tx_timer_pending" + type_id: 0xc9082b19 + offset: 2048 +} member { id: 0x5343bc40 name: "tx_toggle" @@ -192037,6 +194870,12 @@ member { name: "type" type_id: 0x368ec5cb } +member { + id: 0x5c60f365 + name: "type" + type_id: 0x3622fa2a + offset: 64 +} member { id: 0x5c61158d name: "type" @@ -192326,6 +195165,18 @@ member { type_id: 0xfdb649ac offset: 32 } +member { + id: 0x5cab8146 + name: "type" + type_id: 0xfd56cb64 + offset: 1408 +} +member { + id: 0x5cab8754 + name: "type" + type_id: 0xfd56cb64 + offset: 64 +} member { id: 0x5cac8829 name: "type" @@ -192736,6 +195587,12 @@ member { type_id: 0xf313e71a offset: 352 } +member { + id: 0xc5f5f87e + name: "type_lock" + type_id: 0xa7c362b0 + offset: 1024 +} member { id: 0xe2794a8c name: "type_names" @@ -193617,12 +196474,30 @@ member { type_id: 0x2de090d3 offset: 448 } +member { + id: 0x1704d15b + name: "uevent_list" + type_id: 0xd3c80119 + offset: 3776 +} +member { + id: 0xdc003eed + name: "uevent_lock" + type_id: 0xf313e71a + offset: 3904 +} member { id: 0x7a23f532 name: "uevent_ops" type_id: 0x3fdb8af3 offset: 960 } +member { + id: 0x271c2c01 + name: "uevent_seq" + type_id: 0x74d29cf1 + offset: 3744 +} member { id: 0x069b6afd name: "uevent_sock" @@ -194143,6 +197018,12 @@ member { type_id: 0x0f626ee5 offset: 1408 } +member { + id: 0xe6eaad3f + name: "uni2char" + type_id: 0x2d34349d + offset: 128 +} member { id: 0xb7a98fcb name: "uniq" @@ -194738,6 +197619,18 @@ member { type_id: 0x29b77961 offset: 11784 } +member { + id: 0x7f0a76c2 + name: "unwrap" + type_id: 0x2e747a05 + offset: 960 +} +member { + id: 0x7f0a7bae + name: "unwrap" + type_id: 0x2e747a05 + offset: 2176 +} member { id: 0xa37704a2 name: "unx" @@ -197364,6 +200257,12 @@ member { type_id: 0x0483e6f8 offset: 64 } +member { + id: 0xa010e540 + name: "value" + type_id: 0x18bd6530 + offset: 64 +} member { id: 0xa010e863 name: "value" @@ -197495,6 +200394,12 @@ member { name: "value64" type_id: 0xdd6eef0a } +member { + id: 0x9bef952d + name: "value_len" + type_id: 0xf435685e + offset: 128 +} member { id: 0x0e144f7f name: "value_offset" @@ -198188,6 +201093,12 @@ member { type_id: 0x6d7f5ff6 offset: 1216 } +member { + id: 0xf584ce40 + name: "verify" + type_id: 0x2cd8a9c9 + offset: 64 +} member { id: 0xf586d6a4 name: "verify" @@ -198295,6 +201206,12 @@ member { type_id: 0x3e10b518 offset: 128 } +member { + id: 0xa662981f + name: "version" + type_id: 0x03a4acbb + offset: 192 +} member { id: 0xa66a9aeb name: "version" @@ -199327,6 +202244,11 @@ member { type_id: 0xc9082b19 offset: 96 } +member { + id: 0xde7997b9 + name: "virt" + type_id: 0x14e40ca3 +} member { id: 0xc21c7538 name: "virt_base" @@ -200241,6 +203163,17 @@ member { type_id: 0x9bd401b6 offset: 32 } +member { + id: 0xdd4cd36f + name: "wDatagramIndex" + type_id: 0x9bd401b6 +} +member { + id: 0x3643720a + name: "wDatagramLength" + type_id: 0x9bd401b6 + offset: 16 +} member { id: 0x3b766446 name: "wFunctionalitySupport" @@ -200259,6 +203192,17 @@ member { type_id: 0x9bd401b6 offset: 48 } +member { + id: 0x070c8108 + name: "wLength" + type_id: 0x9bd401b6 + offset: 32 +} +member { + id: 0x070c8c33 + name: "wLength" + type_id: 0x9bd401b6 +} member { id: 0xb75b254f name: "wMTU" @@ -200295,18 +203239,78 @@ member { type_id: 0x9bd401b6 offset: 64 } +member { + id: 0x2726a674 + name: "wNdpInAlignment" + type_id: 0x9bd401b6 + offset: 96 +} +member { + id: 0x8464bb02 + name: "wNdpInDivisor" + type_id: 0x9bd401b6 + offset: 64 +} +member { + id: 0x2c655b0e + name: "wNdpInPayloadRemainder" + type_id: 0x9bd401b6 + offset: 80 +} +member { + id: 0x13c51648 + name: "wNdpOutAlignment" + type_id: 0x9bd401b6 + offset: 192 +} +member { + id: 0x5a711378 + name: "wNdpOutDivisor" + type_id: 0x9bd401b6 + offset: 160 +} +member { + id: 0xcf666fe6 + name: "wNdpOutPayloadRemainder" + type_id: 0x9bd401b6 + offset: 176 +} +member { + id: 0x28625ee1 + name: "wNextNdpIndex" + type_id: 0x9bd401b6 + offset: 48 +} +member { + id: 0x364cd8ff + name: "wNtbOutMaxDatagrams" + type_id: 0x9bd401b6 + offset: 208 +} member { id: 0xd6499e1b name: "wNumberMCFilters" type_id: 0x9bd401b6 offset: 80 } +member { + id: 0x0550cff2 + name: "wPadding1" + type_id: 0x9bd401b6 + offset: 112 +} member { id: 0x84d40eb1 name: "wReserved" type_id: 0x9bd401b6 offset: 80 } +member { + id: 0xe3bc934c + name: "wReserved6" + type_id: 0x9bd401b6 + offset: 48 +} member { id: 0xeffe0b79 name: "wReseved" @@ -200409,6 +203413,12 @@ member { type_id: 0x03913382 offset: 7488 } +member { + id: 0x202d9516 + name: "wait" + type_id: 0x03913382 + offset: 1984 +} member { id: 0x202d9556 name: "wait" @@ -201913,6 +204923,12 @@ member { name: "work" type_id: 0x3835dcc0 } +member { + id: 0xd6e660a8 + name: "work" + type_id: 0x1f3c8679 + offset: 1024 +} member { id: 0xd6e661ca name: "work" @@ -201931,6 +204947,12 @@ member { type_id: 0x1f3c8679 offset: 2176 } +member { + id: 0xd6e6623f + name: "work" + type_id: 0x1f3c8679 + offset: 2432 +} member { id: 0xd6e66356 name: "work" @@ -202385,6 +205407,12 @@ member { type_id: 0x13f8b706 offset: 1152 } +member { + id: 0x22fae506 + name: "wq" + type_id: 0x13f8b706 + offset: 2368 +} member { id: 0x22fae76b name: "wq" @@ -202474,6 +205502,18 @@ member { type_id: 0x03913382 offset: 576 } +member { + id: 0xb361ca71 + name: "wrap" + type_id: 0x13323bbb + offset: 896 +} +member { + id: 0xb361ce95 + name: "wrap" + type_id: 0x13323bbb + offset: 2112 +} member { id: 0x48aef34d name: "wrap_around" @@ -202738,6 +205778,12 @@ member { type_id: 0xedf277ba offset: 2048 } +member { + id: 0x6cd173ed + name: "write_callback" + type_id: 0x0c33de94 + offset: 1024 +} member { id: 0xf2bc2b47 name: "write_char" @@ -202785,6 +205831,18 @@ member { type_id: 0x2c691ecf offset: 384 } +member { + id: 0xdc734cb7 + name: "write_end" + type_id: 0x4585663f + offset: 928 +} +member { + id: 0x6d2dbcdf + name: "write_error" + type_id: 0x7be80061 + offset: 600 +} member { id: 0x2d1f9b2d name: "write_event_config" @@ -202881,6 +205939,12 @@ member { type_id: 0x0dee87ef offset: 192 } +member { + id: 0x32aed56a + name: "write_list" + type_id: 0xd3c80119 + offset: 1024 +} member { id: 0x3b7c6234 name: "write_lock" @@ -203003,6 +206067,12 @@ member { type_id: 0x7ca48629 offset: 1856 } +member { + id: 0xb4ed2fb3 + name: "write_start" + type_id: 0x4585663f + offset: 896 +} member { id: 0x8b22f978 name: "write_started" @@ -203458,6 +206528,11 @@ member { type_id: 0x5d8155a5 offset: 1472 } +member { + id: 0x2d4312a7 + name: "xa" + type_id: 0x2aa0b9bb +} member { id: 0x2de9701e name: "xa" @@ -203475,6 +206550,12 @@ member { type_id: 0x80c20070 offset: 1216 } +member { + id: 0x4487c243 + name: "xa_alloc" + type_id: 0x3da0560e + offset: 256 +} member { id: 0x8c0b8c3b name: "xa_flags" @@ -203487,11 +206568,59 @@ member { type_id: 0x18bd6530 offset: 64 } +member { + id: 0x443272df + name: "xa_index" + type_id: 0x33756485 + offset: 64 +} member { id: 0x310049ee name: "xa_lock" type_id: 0xf313e71a } +member { + id: 0x13932b74 + name: "xa_lru" + type_id: 0x3dfac2ad + offset: 384 +} +member { + id: 0xa6e487bd + name: "xa_node" + type_id: 0x3da0560e + offset: 192 +} +member { + id: 0xade1378e + name: "xa_offset" + type_id: 0x5d8155a5 + offset: 144 +} +member { + id: 0xb6a1c909 + name: "xa_pad" + type_id: 0x5d8155a5 + offset: 152 +} +member { + id: 0xfbb0a625 + name: "xa_shift" + type_id: 0x5d8155a5 + offset: 128 +} +member { + id: 0xb55e6ff0 + name: "xa_sibs" + type_id: 0x5d8155a5 + offset: 136 +} +member { + id: 0x1ec9237c + name: "xa_update" + type_id: 0xa7efd65a + offset: 320 +} member { id: 0xdbe05ee6 name: "xacterrs" @@ -204308,6 +207437,12 @@ member { type_id: 0x6d7f5ff6 offset: 328 } +member { + id: 0xf36870ee + name: "zlp" + type_id: 0x6d7f5ff6 + offset: 1472 +} member { id: 0x8134c684 name: "zombie" @@ -204337,6 +207472,12 @@ member { type_id: 0x18bd6530 offset: 64 } +member { + id: 0x7e8b2a1f + name: "zone_idx" + type_id: 0x4585663f + offset: 256 +} member { id: 0x7ea98be0 name: "zone_idx" @@ -204367,6 +207508,11 @@ member { type_id: 0xc0a0d1f0 offset: 864 } +member { + id: 0x15c9fb88 + name: "zonelist" + type_id: 0x1e85f467 +} member { id: 0xc2f31ff3 name: "zpos" @@ -204392,6 +207538,12 @@ member { type_id: 0x2efd5036 offset: 16448 } +member { + id: 0x2137fd7f + name: "zwp_offset" + type_id: 0x1bf16028 + offset: 10304 +} member { id: 0x6006a5e2 name: "zx_wakeup_clear_needed" @@ -205897,6 +209049,24 @@ struct_union { member_id: 0x35690218 } } +struct_union { + id: 0x14ca5b0f + kind: STRUCT + definition { + bytesize: 16 + member_id: 0x320350ff + member_id: 0x9b2fad41 + } +} +struct_union { + id: 0x14e40ca3 + kind: STRUCT + definition { + bytesize: 16 + member_id: 0x32051484 + member_id: 0x243566e2 + } +} struct_union { id: 0x153cf6a0 kind: STRUCT @@ -206927,6 +210097,15 @@ struct_union { member_id: 0x1124a364 } } +struct_union { + id: 0x2ac7aaed + kind: STRUCT + definition { + bytesize: 8 + member_id: 0xcacb97d2 + member_id: 0x642f0821 + } +} struct_union { id: 0x2b189f72 kind: STRUCT @@ -207443,6 +210622,15 @@ struct_union { member_id: 0x8f0ea6b7 } } +struct_union { + id: 0x3514d59f + kind: STRUCT + definition { + bytesize: 512 + member_id: 0xb56701d9 + member_id: 0x8544c9f4 + } +} struct_union { id: 0x352630a5 kind: STRUCT @@ -207785,6 +210973,14 @@ struct_union { member_id: 0xc446e43e } } +struct_union { + id: 0x3b85198b + kind: STRUCT + definition { + bytesize: 64 + member_id: 0x8fa57542 + } +} struct_union { id: 0x3bf747f0 kind: STRUCT @@ -208746,6 +211942,15 @@ struct_union { member_id: 0x8fed16f2 } } +struct_union { + id: 0x4f02e8cc + kind: UNION + definition { + bytesize: 512 + member_id: 0x67c7a307 + member_id: 0x2777335c + } +} struct_union { id: 0x4f03a6ae kind: UNION @@ -208782,6 +211987,16 @@ struct_union { member_id: 0xca60e328 } } +struct_union { + id: 0x4fbdc803 + kind: UNION + definition { + bytesize: 8 + member_id: 0x653b6170 + member_id: 0x27000c61 + member_id: 0x36752b74 + } +} struct_union { id: 0x4fd8e877 kind: UNION @@ -209225,6 +212440,15 @@ struct_union { member_id: 0x2e0294e1 } } +struct_union { + id: 0x5ade635b + kind: UNION + definition { + bytesize: 16 + member_id: 0x304c83ff + member_id: 0xde7997b9 + } +} struct_union { id: 0x5ae4b375 kind: UNION @@ -209321,6 +212545,16 @@ struct_union { member_id: 0x63f03d1c } } +struct_union { + id: 0x5cad8df0 + kind: UNION + definition { + bytesize: 8 + member_id: 0x297a76bf + member_id: 0x27000c61 + member_id: 0x36752b74 + } +} struct_union { id: 0x5cc01b50 kind: UNION @@ -210073,6 +213307,15 @@ struct_union { member_id: 0x8ee7990f } } +struct_union { + id: 0x67c0081f + kind: UNION + definition { + bytesize: 8 + member_id: 0xc43f5f8d + member_id: 0xd408f584 + } +} struct_union { id: 0x67d43857 kind: UNION @@ -211923,6 +215166,39 @@ struct_union { member_id: 0x75906a36 } } +struct_union { + id: 0x6fbaf148 + kind: STRUCT + name: "akcipher_alg" + definition { + bytesize: 512 + member_id: 0x9063e9c1 + member_id: 0xf584ce40 + member_id: 0x893e9a51 + member_id: 0x70fa6b40 + member_id: 0xfd2d3002 + member_id: 0x4117392b + member_id: 0xcfd59103 + member_id: 0x1ac7a60f + member_id: 0x0d2e2ebd + member_id: 0xa9e8c522 + member_id: 0x85f3d282 + } +} +struct_union { + id: 0x606acffd + kind: STRUCT + name: "akcipher_request" + definition { + bytesize: 128 + member_id: 0x85e1e383 + member_id: 0x4427a46d + member_id: 0xbbe061af + member_id: 0xe29869f3 + member_id: 0x352c27f4 + member_id: 0x75906a36 + } +} struct_union { id: 0x91212402 kind: STRUCT @@ -213580,6 +216856,17 @@ struct_union { member_id: 0xa06fe161 } } +struct_union { + id: 0x88ce7bb2 + kind: STRUCT + name: "blk_plug_cb" + definition { + bytesize: 32 + member_id: 0x7c00ef52 + member_id: 0x56f376f1 + member_id: 0xff8a91c0 + } +} struct_union { id: 0xbb19ab6d kind: STRUCT @@ -215529,6 +218816,58 @@ struct_union { member_id: 0x3203541e } } +struct_union { + id: 0x276c304c + kind: STRUCT + name: "cdc_ncm_ctx" + definition { + bytesize: 360 + member_id: 0x11638e21 + member_id: 0xa25bc850 + member_id: 0x5e2b88f3 + member_id: 0xce34257f + member_id: 0xaab5e3db + member_id: 0x12ebc87a + member_id: 0x605196d3 + member_id: 0x48630da5 + member_id: 0xfc1d642c + member_id: 0xffb32814 + member_id: 0x5d898398 + member_id: 0x2d67c2b0 + member_id: 0x8d6eed3e + member_id: 0x3a21c0f4 + member_id: 0x69fcaeb3 + member_id: 0xbf6a10c0 + member_id: 0xbd73b897 + member_id: 0x90a7314a + member_id: 0xbc20bf07 + member_id: 0x3a3b9c87 + member_id: 0xf9c0c1b7 + member_id: 0xc168d729 + member_id: 0xa064e9a8 + member_id: 0x6dd1b0db + member_id: 0x38ca06c6 + member_id: 0x61a8790c + member_id: 0xa94058b8 + member_id: 0x3a33fdde + member_id: 0x24dde6e5 + member_id: 0x8c376a11 + member_id: 0xd6166cf3 + member_id: 0x85dc3e67 + member_id: 0x163cb0a1 + member_id: 0x32a32199 + member_id: 0x7cb10669 + member_id: 0x086ff8ab + member_id: 0xaec5023b + member_id: 0x29c64945 + member_id: 0x618af26f + member_id: 0xc1b8b7af + member_id: 0xa8317855 + member_id: 0xe0d8421b + member_id: 0xa15b4dcc + member_id: 0xb3ff3714 + } +} struct_union { id: 0x5f766fc6 kind: STRUCT @@ -217781,6 +221120,15 @@ struct_union { member_id: 0x8597b963 } } +struct_union { + id: 0x0f57eec7 + kind: STRUCT + name: "crypto_akcipher" + definition { + bytesize: 64 + member_id: 0x8597be7c + } +} struct_union { id: 0x293b162f kind: STRUCT @@ -217818,6 +221166,15 @@ struct_union { member_id: 0x2da18bb2 } } +struct_union { + id: 0x37cc7810 + kind: STRUCT + name: "crypto_cipher" + definition { + bytesize: 64 + member_id: 0x8597be7c + } +} struct_union { id: 0x85b25628 kind: STRUCT @@ -218354,6 +221711,15 @@ struct_union { member_id: 0xe0f6393d } } +struct_union { + id: 0xefa4cae6 + kind: STRUCT + name: "des_ctx" + definition { + bytesize: 128 + member_id: 0xbd3cd538 + } +} struct_union { id: 0x2729c17d kind: STRUCT @@ -218828,6 +222194,54 @@ struct_union { member_id: 0xf21adff5 } } +struct_union { + id: 0x95132e54 + kind: STRUCT + name: "devfreq_event_data" + definition { + bytesize: 16 + member_id: 0xd4c95c39 + member_id: 0xb46976b5 + } +} +struct_union { + id: 0x70919762 + kind: STRUCT + name: "devfreq_event_desc" + definition { + bytesize: 32 + member_id: 0x0de57ce8 + member_id: 0x8daeae65 + member_id: 0x6d52b170 + member_id: 0xafbe6621 + } +} +struct_union { + id: 0x12c4bf48 + kind: STRUCT + name: "devfreq_event_dev" + definition { + bytesize: 992 + member_id: 0x0fa6c6af + member_id: 0xce1ac88b + member_id: 0x2d4b3012 + member_id: 0x7a5a9024 + member_id: 0x87e0b654 + } +} +struct_union { + id: 0x8fa09e85 + kind: STRUCT + name: "devfreq_event_ops" + definition { + bytesize: 40 + member_id: 0x98ca1d0f + member_id: 0x0da0f708 + member_id: 0x6290b59b + member_id: 0x87f98767 + member_id: 0xd77c9cbe + } +} struct_union { id: 0xeee59200 kind: STRUCT @@ -219621,6 +223035,17 @@ struct_union { member_id: 0x2d0ec9dd } } +struct_union { + id: 0xdf0bbbf0 + kind: STRUCT + name: "display_timings" + definition { + bytesize: 16 + member_id: 0x349420c4 + member_id: 0xf79a533a + member_id: 0x1f55657f + } +} struct_union { id: 0x75bc7540 kind: STRUCT @@ -219650,6 +223075,268 @@ struct_union { member_id: 0xb20c2eb5 } } +struct_union { + id: 0x08726260 + kind: STRUCT + name: "dm_arg" + definition { + bytesize: 16 + member_id: 0xf9d5048c + member_id: 0x97b38f9c + member_id: 0x7f0253e8 + } +} +struct_union { + id: 0x84f84d67 + kind: STRUCT + name: "dm_arg_set" + definition { + bytesize: 16 + member_id: 0x2075b8f0 + member_id: 0xe8735870 + } +} +struct_union { + id: 0x8b3c3364 + kind: STRUCT + name: "dm_buffer" + definition { + bytesize: 152 + member_id: 0x0f470b14 + member_id: 0x94eba612 + member_id: 0xc81f8729 + member_id: 0x4280b12f + member_id: 0xff8a9211 + member_id: 0x109b80af + member_id: 0x76367e75 + member_id: 0xffa6c51e + member_id: 0x6d2dbcdf + member_id: 0xc0138ce8 + member_id: 0xffe3e6f3 + member_id: 0x72c08b58 + member_id: 0x8c1c72c6 + member_id: 0x522ab1e5 + member_id: 0x077f45a8 + member_id: 0xb4ed2fb3 + member_id: 0xdc734cb7 + member_id: 0x0f75b561 + member_id: 0x32aed56a + member_id: 0xec2a10b4 + } +} +struct_union { + id: 0x9e471477 + kind: STRUCT + name: "dm_bufio_client" + definition { + bytesize: 368 + member_id: 0x2d4b3c00 + member_id: 0x9a7d31f4 + member_id: 0xec4c530d + member_id: 0x545a8863 + member_id: 0x04227360 + member_id: 0x51f02b11 + member_id: 0x3c120643 + member_id: 0x0b50257c + member_id: 0xa0650951 + member_id: 0x6cd173ed + member_id: 0xd9ef0498 + member_id: 0x031120c5 + member_id: 0x56ecab6c + member_id: 0x9a257ac5 + member_id: 0x9460fdf7 + member_id: 0xf910802f + member_id: 0x215141b0 + member_id: 0x6458e4c6 + member_id: 0x46cb87d7 + member_id: 0x5ee21ccd + member_id: 0xf4c5928f + member_id: 0x868ca1f0 + member_id: 0x133be164 + member_id: 0x247d2bc2 + } +} +struct_union { + id: 0x5f5259bd + kind: STRUCT + name: "dm_dev" + definition { + bytesize: 40 + member_id: 0x51f028ab + member_id: 0x57d05c19 + member_id: 0x87085bff + member_id: 0x0d9941a0 + } +} +struct_union { + id: 0x225b463b + kind: STRUCT + name: "dm_io" + definition { + bytesize: 280 + member_id: 0xd6baf777 + member_id: 0x2dccf0c8 + member_id: 0x2d1fe1be + member_id: 0xa3682aac + member_id: 0xff8a90cb + member_id: 0x11f10efe + member_id: 0x96627cf8 + member_id: 0x201cce16 + member_id: 0x43d5e607 + member_id: 0xff5d5e59 + member_id: 0xd07b78d9 + member_id: 0xf705dc19 + member_id: 0x3721dfe0 + member_id: 0x2c593fc1 + } +} +struct_union { + id: 0x0c940ce3 + kind: STRUCT + name: "dm_io_client" + definition { + bytesize: 336 + member_id: 0xde69b270 + member_id: 0xccd15e20 + } +} +struct_union { + id: 0xa1319a08 + kind: STRUCT + name: "dm_kobject_holder" + definition { + bytesize: 128 + member_id: 0x452b206c + member_id: 0xc494a473 + } +} +struct_union { + id: 0xe1d1bbb1 + kind: STRUCT + name: "dm_md_mempools" + definition { + bytesize: 528 + member_id: 0x9929500d + member_id: 0x627115f2 + } +} +struct_union { + id: 0xd2e99e69 + kind: STRUCT + name: "dm_report_zones_args" + definition { + bytesize: 48 + member_id: 0x7cd9a358 + member_id: 0x7cd3c1cb + member_id: 0x9772cb65 + member_id: 0x17637816 + member_id: 0x7e8b2a1f + member_id: 0x46cb8735 + } +} +struct_union { + id: 0x286f60a3 + kind: STRUCT + name: "dm_stats" + definition { + bytesize: 80 + member_id: 0xad898302 + member_id: 0x7c00eec0 + member_id: 0x2660c5df + member_id: 0x552de7df + } +} +struct_union { + id: 0xb4683157 + kind: STRUCT + name: "dm_stats_aux" + definition { + bytesize: 16 + member_id: 0x037856c6 + member_id: 0x5e3459b5 + } +} +struct_union { + id: 0x154fffcf + kind: STRUCT + name: "dm_stats_last_position" + definition { + bytesize: 16 + member_id: 0x0d364652 + member_id: 0xaac934df + } +} +struct_union { + id: 0x96d270ba + kind: STRUCT + name: "dm_table" + definition { + bytesize: 296 + member_id: 0xff5d592e + member_id: 0x5cab8754 + member_id: 0x1b2184e9 + member_id: 0xb91305cd + member_id: 0xad7a9230 + member_id: 0x0e2a551a + member_id: 0x197cb73f + member_id: 0x6da33f40 + member_id: 0x1623d50f + member_id: 0xfa2d1749 + member_id: 0x6f52824f + member_id: 0xdf12b226 + member_id: 0xe590115b + member_id: 0x87085ac9 + member_id: 0x33ed565c + member_id: 0xd4abd33d + member_id: 0x5138cba7 + member_id: 0x1f686eb8 + member_id: 0x5497e4e5 + } +} +struct_union { + id: 0xdd8279d0 + kind: STRUCT + name: "dm_target" + definition { + bytesize: 96 + member_id: 0xb6c41435 + member_id: 0x5c60f365 + member_id: 0x38c2e7fb + member_id: 0xb8d56e3d + member_id: 0x09343eea + member_id: 0xf997f643 + member_id: 0xe8ffd602 + member_id: 0x772e5751 + member_id: 0x4fa0a319 + member_id: 0x319b41b8 + member_id: 0x917961c4 + member_id: 0x7f025c11 + member_id: 0xa1b9c8d2 + member_id: 0x7a833cf4 + member_id: 0x8bbdb526 + member_id: 0x4ccb6a85 + member_id: 0x1a19769d + member_id: 0xf55a45f8 + member_id: 0x2d08134b + member_id: 0x63760b9f + } +} +struct_union { + id: 0xd16b19a7 + kind: STRUCT + name: "dm_target_io" + definition { + bytesize: 200 + member_id: 0xd6baf777 + member_id: 0x2dccf0c8 + member_id: 0x6669afd1 + member_id: 0x9d69c21e + member_id: 0x1e282dde + member_id: 0x399dce5b + member_id: 0x1293b17d + member_id: 0xf6b3df73 + } +} struct_union { id: 0x906b8630 kind: STRUCT @@ -220391,6 +224078,21 @@ struct_union { member_id: 0xd47cf744 } } +struct_union { + id: 0x7a26b33d + kind: STRUCT + name: "drm_afbc_framebuffer" + definition { + bytesize: 224 + member_id: 0x85378cb8 + member_id: 0x3b9c97de + member_id: 0xdb864134 + member_id: 0x6db01f09 + member_id: 0xdeafe619 + member_id: 0x9bd5d3ca + member_id: 0xd5613ffc + } +} struct_union { id: 0x9cb7b96f kind: STRUCT @@ -223269,6 +226971,34 @@ struct_union { member_id: 0x1cd0b4f0 } } +struct_union { + id: 0x8d59cc59 + kind: STRUCT + name: "eth_dev" + definition { + bytesize: 200 + member_id: 0x2d1fec85 + member_id: 0x4b911741 + member_id: 0x723de0ca + member_id: 0x1875f880 + member_id: 0x41836813 + member_id: 0xafc385cf + member_id: 0xd3d22e9f + member_id: 0x32c7bb3d + member_id: 0xc2e1d78f + member_id: 0x143073ec + member_id: 0x7a86fcdb + member_id: 0xb361ca71 + member_id: 0x7f0a76c2 + member_id: 0xd6e660a8 + member_id: 0x896faa0d + member_id: 0xf36870ee + member_id: 0x59c1c7cb + member_id: 0x41e064b8 + member_id: 0x4af00a54 + member_id: 0x770654c6 + } +} struct_union { id: 0xed0cdc47 kind: STRUCT @@ -226709,6 +230439,29 @@ struct_union { member_id: 0xff8a9e7e } } +struct_union { + id: 0xca7029d8 + kind: STRUCT + name: "gether" + definition { + bytesize: 296 + member_id: 0x21a4123c + member_id: 0x694d3c49 + member_id: 0x37e14132 + member_id: 0xbdac13df + member_id: 0x56acdda7 + member_id: 0xbf43ebf0 + member_id: 0x7a0a7faf + member_id: 0x100aab74 + member_id: 0x09807f7a + member_id: 0x7fd91e93 + member_id: 0x07459e81 + member_id: 0xb361ce95 + member_id: 0x7f0a7bae + member_id: 0xadb9bed8 + member_id: 0xcd7ec6ac + } +} struct_union { id: 0x227d416d kind: STRUCT @@ -228013,7 +231766,7 @@ struct_union { member_id: 0xaf4362fa member_id: 0xff66bcf9 member_id: 0xcc6aaeab - member_id: 0x2d081576 + member_id: 0x34e0ff3c member_id: 0x637601c1 } } @@ -235235,6 +238988,15 @@ struct_union { member_id: 0xd590f436 } } +struct_union { + id: 0xc5d806af + kind: UNION + name: "map_info" + definition { + bytesize: 8 + member_id: 0x46e877b0 + } +} struct_union { id: 0xbd562aba kind: STRUCT @@ -235263,6 +239025,57 @@ struct_union { member_id: 0x7cfb135c } } +struct_union { + id: 0x9f9f2e37 + kind: STRUCT + name: "mapped_device" + definition { + bytesize: 1296 + member_id: 0x13692fb1 + member_id: 0x72b151f9 + member_id: 0x0d77c97c + member_id: 0x8deec674 + member_id: 0x2d5bf9c9 + member_id: 0xc5f5f87e + member_id: 0x5cab8146 + member_id: 0x0f379684 + member_id: 0xaddb4c9f + member_id: 0x1f2404cf + member_id: 0x3961e57f + member_id: 0x63660872 + member_id: 0xfa2d1f78 + member_id: 0x0d994b65 + member_id: 0x6071aa84 + member_id: 0x57d05926 + member_id: 0x202d9516 + member_id: 0x4c3543b9 + member_id: 0x3a26f97c + member_id: 0x22fae506 + member_id: 0xd6e6623f + member_id: 0xa9cf9302 + member_id: 0xf0efa471 + member_id: 0x37483f88 + member_id: 0xee14c6d9 + member_id: 0x3cd46820 + member_id: 0x9f773f87 + member_id: 0x56ec2c77 + member_id: 0x271c2c01 + member_id: 0x1704d15b + member_id: 0xdc003eed + member_id: 0xf51d09e4 + member_id: 0x0de002cb + member_id: 0xb95d079c + member_id: 0x1eb686c0 + member_id: 0x69e5d3c9 + member_id: 0xec6548f1 + member_id: 0xcec5b332 + member_id: 0x1f686bd1 + member_id: 0xd68a69a4 + member_id: 0x5fad2d83 + member_id: 0x42b6c2d1 + member_id: 0x2137fd7f + } +} struct_union { id: 0x29d77c73 kind: STRUCT @@ -239468,6 +243281,22 @@ struct_union { member_id: 0x7bb01964 } } +struct_union { + id: 0x292b4bb0 + kind: STRUCT + name: "nls_table" + definition { + bytesize: 64 + member_id: 0x551378c2 + member_id: 0x25050ebe + member_id: 0xe6eaad3f + member_id: 0x26d4a9a4 + member_id: 0x6322a32f + member_id: 0x06048b6e + member_id: 0x4a9653c2 + member_id: 0x11f3dd43 + } +} struct_union { id: 0x594b6ab2 kind: STRUCT @@ -239937,6 +243766,23 @@ struct_union { member_id: 0x386c7184 } } +struct_union { + id: 0xdbe44b66 + kind: STRUCT + name: "oom_control" + definition { + bytesize: 64 + member_id: 0x15c9fb88 + member_id: 0x788bc17d + member_id: 0xc76cfce5 + member_id: 0xa4b05168 + member_id: 0xb51c2507 + member_id: 0x7248bb69 + member_id: 0x1024996f + member_id: 0x3d099644 + member_id: 0xaf3405ec + } +} struct_union { id: 0x95539d46 kind: STRUCT @@ -246401,6 +250247,30 @@ struct_union { member_id: 0x055225e4 } } +struct_union { + id: 0xca62ed00 + kind: STRUCT + name: "rsa_key" + definition { + bytesize: 128 + member_id: 0x4659cf92 + member_id: 0x87e623f5 + member_id: 0xc325cba2 + member_id: 0xa68e47c8 + member_id: 0xe94def1c + member_id: 0x55f0c48b + member_id: 0x12302e1a + member_id: 0x060b5e2a + member_id: 0x0cc91dc5 + member_id: 0xab258a23 + member_id: 0xcc4dd9fb + member_id: 0x73d7a8f4 + member_id: 0x30c8a340 + member_id: 0x086093bd + member_id: 0x8d88c04b + member_id: 0x112d65f6 + } +} struct_union { id: 0xdbc8b0ff kind: STRUCT @@ -246894,6 +250764,16 @@ struct_union { member_id: 0x202d9792 } } +struct_union { + id: 0xc440583a + kind: STRUCT + name: "scatter_walk" + definition { + bytesize: 16 + member_id: 0x9d8652e2 + member_id: 0x9b595d43 + } +} struct_union { id: 0x6d7f0eb8 kind: STRUCT @@ -249287,6 +253167,16 @@ struct_union { member_id: 0x85f3de85 } } +struct_union { + id: 0xeb42d758 + kind: STRUCT + name: "skcipher_instance" + definition { + bytesize: 576 + member_id: 0xfeafbaf6 + member_id: 0x300b2d2f + } +} struct_union { id: 0x5a18785c kind: STRUCT @@ -249301,6 +253191,30 @@ struct_union { member_id: 0x75906a36 } } +struct_union { + id: 0xb9a7d20f + kind: STRUCT + name: "skcipher_walk" + definition { + bytesize: 152 + member_id: 0x446cb466 + member_id: 0xbbab7e83 + member_id: 0x5c6f2950 + member_id: 0x9a42cf0b + member_id: 0xb335975f + member_id: 0x9d16fe6e + member_id: 0xc0824dc3 + member_id: 0x32051c2a + member_id: 0x33decf44 + member_id: 0xe5a6cde2 + member_id: 0x56ccb987 + member_id: 0x8320112b + member_id: 0x2d0fadac + member_id: 0x89cc162f + member_id: 0x5e10ffff + member_id: 0x9d7710c5 + } +} struct_union { id: 0x140795ac kind: STRUCT @@ -251120,6 +255034,19 @@ struct_union { member_id: 0x720365d0 } } +struct_union { + id: 0x85598cc2 + kind: STRUCT + name: "snd_soc_jack_zone" + definition { + bytesize: 32 + member_id: 0xa07cb245 + member_id: 0xeaccae16 + member_id: 0x9f7caab9 + member_id: 0x74a266cc + member_id: 0x7c00e690 + } +} struct_union { id: 0x69e1c6f0 kind: STRUCT @@ -253045,6 +256972,43 @@ struct_union { member_id: 0xd1fdbf5e } } +struct_union { + id: 0xf2cb0e35 + kind: STRUCT + name: "target_type" + definition { + bytesize: 248 + member_id: 0xc504f94b + member_id: 0x0de57809 + member_id: 0x965f1ffc + member_id: 0xa662981f + member_id: 0x64f1a684 + member_id: 0xb0de17e8 + member_id: 0x8d8ccb94 + member_id: 0xe7b15fc6 + member_id: 0x2e40d714 + member_id: 0xec54a25c + member_id: 0x37cf0b9e + member_id: 0x542288b2 + member_id: 0x8a92bcd2 + member_id: 0xc58884a8 + member_id: 0xc22f1b4d + member_id: 0xcae841ae + member_id: 0x20dd7873 + member_id: 0x9de5400c + member_id: 0xd1d88fb4 + member_id: 0x0d0ed2a2 + member_id: 0x60a635ef + member_id: 0x5a8eeaf5 + member_id: 0x4b3c38dc + member_id: 0x6b820536 + member_id: 0xc7158a13 + member_id: 0x830b1efa + member_id: 0x2d081217 + member_id: 0x63760fd1 + member_id: 0x7c00e44f + } +} struct_union { id: 0x4e9556c5 kind: STRUCT @@ -253335,7 +257299,7 @@ struct_union { member_id: 0xedf50137 member_id: 0xd666cd53 member_id: 0x9a3ad7bf - member_id: 0x2d081767 + member_id: 0x3024ec51 member_id: 0x63760531 member_id: 0xac894e97 member_id: 0xe0f63fac @@ -257798,6 +261762,72 @@ struct_union { member_id: 0xfb7cce1d } } +struct_union { + id: 0x305bf810 + kind: STRUCT + name: "usb_cdc_ncm_dpe16" + definition { + bytesize: 4 + member_id: 0xdd4cd36f + member_id: 0x3643720a + } +} +struct_union { + id: 0x3d26f6d4 + kind: STRUCT + name: "usb_cdc_ncm_dpe32" + definition { + bytesize: 8 + member_id: 0x09ca9dd2 + member_id: 0x348d64a1 + } +} +struct_union { + id: 0xc4e4c198 + kind: STRUCT + name: "usb_cdc_ncm_ndp16" + definition { + bytesize: 8 + member_id: 0x1e7efd51 + member_id: 0x070c8108 + member_id: 0x28625ee1 + member_id: 0xab0f277e + } +} +struct_union { + id: 0xfdba3915 + kind: STRUCT + name: "usb_cdc_ncm_ndp32" + definition { + bytesize: 16 + member_id: 0x1e7efd51 + member_id: 0x070c8108 + member_id: 0xe3bc934c + member_id: 0x6e82996c + member_id: 0x46e37740 + member_id: 0x015a8ae1 + } +} +struct_union { + id: 0xc4793083 + kind: STRUCT + name: "usb_cdc_ncm_ntb_parameters" + definition { + bytesize: 28 + member_id: 0x070c8c33 + member_id: 0x6b1b4f66 + member_id: 0x7000a99b + member_id: 0x8464bb02 + member_id: 0x2c655b0e + member_id: 0x2726a674 + member_id: 0x0550cff2 + member_id: 0xc1f69c16 + member_id: 0x5a711378 + member_id: 0xcf666fe6 + member_id: 0x13c51648 + member_id: 0x364cd8ff + } +} struct_union { id: 0x50209186 kind: STRUCT @@ -257877,6 +261907,18 @@ struct_union { member_id: 0xe7429092 } } +struct_union { + id: 0xe6289375 + kind: STRUCT + name: "usb_class_driver" + definition { + bytesize: 32 + member_id: 0x0ddfefbb + member_id: 0x1ea56ad0 + member_id: 0xb1aa5772 + member_id: 0xa298fce5 + } +} struct_union { id: 0xaec12290 kind: STRUCT @@ -263726,6 +267768,24 @@ struct_union { member_id: 0x38c4c69b } } +struct_union { + id: 0xa406f9d2 + kind: STRUCT + name: "xa_state" + definition { + bytesize: 56 + member_id: 0x2d4312a7 + member_id: 0x443272df + member_id: 0xfbb0a625 + member_id: 0xb55e6ff0 + member_id: 0xade1378e + member_id: 0xb6a1c909 + member_id: 0xa6e487bd + member_id: 0x4487c243 + member_id: 0x1ec9237c + member_id: 0x13932b74 + } +} struct_union { id: 0x80c20070 kind: STRUCT @@ -263737,6 +267797,17 @@ struct_union { member_id: 0xfbed12c2 } } +struct_union { + id: 0xbf3a351e + kind: STRUCT + name: "xattr" + definition { + bytesize: 24 + member_id: 0x0de57ce8 + member_id: 0xa010e540 + member_id: 0x9bef952d + } +} struct_union { id: 0x1016eff1 kind: STRUCT @@ -265134,6 +269205,23 @@ struct_union { member_id: 0x739d7255 } } +enumeration { + id: 0x42178190 + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "STATUSTYPE_INFO" + } + enumerator { + name: "STATUSTYPE_TABLE" + value: 1 + } + enumerator { + name: "STATUSTYPE_IMA" + value: 2 + } + } +} enumeration { id: 0x4f34306c definition { @@ -268674,6 +272762,48 @@ enumeration { } } } +enumeration { + id: 0xb01beef1 + name: "compact_result" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "COMPACT_NOT_SUITABLE_ZONE" + } + enumerator { + name: "COMPACT_SKIPPED" + value: 1 + } + enumerator { + name: "COMPACT_DEFERRED" + value: 2 + } + enumerator { + name: "COMPACT_NO_SUITABLE_PAGE" + value: 3 + } + enumerator { + name: "COMPACT_CONTINUE" + value: 4 + } + enumerator { + name: "COMPACT_COMPLETE" + value: 5 + } + enumerator { + name: "COMPACT_PARTIAL_SKIPPED" + value: 6 + } + enumerator { + name: "COMPACT_CONTENDED" + value: 7 + } + enumerator { + name: "COMPACT_SUCCESS" + value: 8 + } + } +} enumeration { id: 0x7bfd6d29 name: "conn_reasons" @@ -270236,6 +274366,28 @@ enumeration { } } } +enumeration { + id: 0xfd56cb64 + name: "dm_queue_mode" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "DM_TYPE_NONE" + } + enumerator { + name: "DM_TYPE_BIO_BASED" + value: 1 + } + enumerator { + name: "DM_TYPE_REQUEST_BASED" + value: 2 + } + enumerator { + name: "DM_TYPE_DAX_BIO_BASED" + value: 3 + } + } +} enumeration { id: 0x3e09ba9c name: "dma_ctrl_flags" @@ -271224,6 +275376,24 @@ enumeration { } } } +enumeration { + id: 0x63bb62a2 + name: "error_detector" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "ERROR_DETECTOR_KFENCE" + } + enumerator { + name: "ERROR_DETECTOR_KASAN" + value: 1 + } + enumerator { + name: "ERROR_DETECTOR_WARN" + value: 2 + } + } +} enumeration { id: 0xcd568da6 name: "ethtool_link_ext_state" @@ -272984,6 +277154,37 @@ enumeration { } } } +enumeration { + id: 0x87463428 + name: "hid_class_request" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "HID_REQ_GET_REPORT" + value: 1 + } + enumerator { + name: "HID_REQ_GET_IDLE" + value: 2 + } + enumerator { + name: "HID_REQ_GET_PROTOCOL" + value: 3 + } + enumerator { + name: "HID_REQ_SET_REPORT" + value: 9 + } + enumerator { + name: "HID_REQ_SET_IDLE" + value: 10 + } + enumerator { + name: "HID_REQ_SET_PROTOCOL" + value: 11 + } + } +} enumeration { id: 0xfa5f37bb name: "hid_report_type" @@ -274379,6 +278580,36 @@ enumeration { } } } +enumeration { + id: 0x0d164218 + name: "lru_list" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "LRU_INACTIVE_ANON" + } + enumerator { + name: "LRU_ACTIVE_ANON" + value: 1 + } + enumerator { + name: "LRU_INACTIVE_FILE" + value: 2 + } + enumerator { + name: "LRU_ACTIVE_FILE" + value: 3 + } + enumerator { + name: "LRU_UNEVICTABLE" + value: 4 + } + enumerator { + name: "NR_LRU_LISTS" + value: 5 + } + } +} enumeration { id: 0x0b05beb9 name: "macsec_offload" @@ -275724,6 +279955,28 @@ enumeration { } } } +enumeration { + id: 0x6df42b18 + name: "oom_constraint" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "CONSTRAINT_NONE" + } + enumerator { + name: "CONSTRAINT_CPUSET" + value: 1 + } + enumerator { + name: "CONSTRAINT_MEMORY_POLICY" + value: 2 + } + enumerator { + name: "CONSTRAINT_MEMCG" + value: 3 + } + } +} enumeration { id: 0xf7c61c85 name: "opp_table_access" @@ -281874,6 +286127,12 @@ function { parameter_id: 0xb0c2eb21 parameter_id: 0x18bd6530 } +function { + id: 0x034a2603 + return_type_id: 0x30408c71 + parameter_id: 0x1fba7d3d + parameter_id: 0x0c96fb14 +} function { id: 0x034f6ce3 return_type_id: 0x34544a3f @@ -281915,6 +286174,13 @@ function { return_type_id: 0xe2774cab parameter_id: 0x24d65b62 } +function { + id: 0x04a35d6c + return_type_id: 0x914dbfdc + parameter_id: 0x126add1c + parameter_id: 0x4585663f + parameter_id: 0x13580d6c +} function { id: 0x04ce0b6f return_type_id: 0x914dbfdc @@ -282023,6 +286289,14 @@ function { return_type_id: 0x48b5725f parameter_id: 0x6720d32f } +function { + id: 0x097c3ebf + return_type_id: 0x48b5725f + parameter_id: 0x6720d32f + parameter_id: 0x0ccdc0f9 + parameter_id: 0x7b64642a + parameter_id: 0x6d7f5ff6 +} function { id: 0x098158fd return_type_id: 0x48b5725f @@ -282203,6 +286477,13 @@ function { return_type_id: 0x343ebce3 parameter_id: 0x343ebce3 } +function { + id: 0x0c5cd477 + return_type_id: 0x0bb0c019 + parameter_id: 0x0258f96e + parameter_id: 0x3e10b518 + parameter_id: 0xf435685e +} function { id: 0x0cd36f30 return_type_id: 0x33756485 @@ -282278,6 +286559,12 @@ function { parameter_id: 0x6d7f5ff6 parameter_id: 0x6d7f5ff6 } +function { + id: 0x0ec08f0d + return_type_id: 0x914dbfdc + parameter_id: 0x3d3b5dd7 + parameter_id: 0x295c7202 +} function { id: 0x0ee8ead6 return_type_id: 0x914dbfdc @@ -282434,6 +286721,18 @@ function { return_type_id: 0x48b5725f parameter_id: 0x0206e690 } +function { + id: 0x101c2d25 + return_type_id: 0x48b5725f + parameter_id: 0x0258f96e + parameter_id: 0x0490bb4a +} +function { + id: 0x101d83a0 + return_type_id: 0x48b5725f + parameter_id: 0x01c5a749 + parameter_id: 0x3d2ef874 +} function { id: 0x10219d88 return_type_id: 0x48b5725f @@ -282594,6 +286893,18 @@ function { return_type_id: 0x48b5725f parameter_id: 0x02862e14 } +function { + id: 0x103cff8e + return_type_id: 0x48b5725f + parameter_id: 0x0292b875 +} +function { + id: 0x103ff2f5 + return_type_id: 0x48b5725f + parameter_id: 0x06835e9c + parameter_id: 0x4585663f + parameter_id: 0x4585663f +} function { id: 0x1043ff6b return_type_id: 0x48b5725f @@ -282637,6 +286948,11 @@ function { parameter_id: 0x6720d32f parameter_id: 0x115a10f4 } +function { + id: 0x104da524 + return_type_id: 0x48b5725f + parameter_id: 0x0357d2dd +} function { id: 0x104de9a9 return_type_id: 0x48b5725f @@ -282710,6 +287026,12 @@ function { parameter_id: 0x00b7947f parameter_id: 0x384f7d7c } +function { + id: 0x105539bd + return_type_id: 0x48b5725f + parameter_id: 0x0483e6f8 + parameter_id: 0x7b64642a +} function { id: 0x10563618 return_type_id: 0x48b5725f @@ -282975,6 +287297,11 @@ function { parameter_id: 0x060cf413 parameter_id: 0x6d7f5ff6 } +function { + id: 0x10aeeb41 + return_type_id: 0x48b5725f + parameter_id: 0x00daeb4b +} function { id: 0x10aef91d return_type_id: 0x48b5725f @@ -283023,6 +287350,13 @@ function { parameter_id: 0x030b9acf parameter_id: 0x26a490c7 } +function { + id: 0x10c07815 + return_type_id: 0x48b5725f + parameter_id: 0x0c2e195c + parameter_id: 0xd0b3a203 + parameter_id: 0x4585663f +} function { id: 0x10c35fd7 return_type_id: 0x48b5725f @@ -283184,6 +287518,13 @@ function { parameter_id: 0xf435685e parameter_id: 0x4585663f } +function { + id: 0x10e535a4 + return_type_id: 0x48b5725f + parameter_id: 0x0c2e195c + parameter_id: 0xd0b3a203 + parameter_id: 0xd0b3a203 +} function { id: 0x10e93841 return_type_id: 0x48b5725f @@ -283498,12 +287839,31 @@ function { return_type_id: 0x48b5725f parameter_id: 0x074f1a14 } +function { + id: 0x114c448e + return_type_id: 0x48b5725f + parameter_id: 0x076327a3 + parameter_id: 0x00c72527 + parameter_id: 0x3f0185ef +} +function { + id: 0x11508453 + return_type_id: 0x9547a3da + parameter_id: 0x2f24a589 +} function { id: 0x1154b37f return_type_id: 0x0bfc9031 parameter_id: 0x0258f96e parameter_id: 0x3e10b518 } +function { + id: 0x11584934 + return_type_id: 0x48b5725f + parameter_id: 0x0a63398f + parameter_id: 0xd9f550d1 + parameter_id: 0xfc0e1dbd +} function { id: 0x115a73a0 return_type_id: 0x48b5725f @@ -284045,6 +288405,13 @@ function { parameter_id: 0x0665e6b6 parameter_id: 0x3e10b518 } +function { + id: 0x11f98eff + return_type_id: 0x48b5725f + parameter_id: 0x06835e9c + parameter_id: 0x33756485 + parameter_id: 0x33756485 +} function { id: 0x11fe33ba return_type_id: 0x48b5725f @@ -284087,6 +288454,23 @@ function { parameter_id: 0xf435685e parameter_id: 0x0379c823 } +function { + id: 0x12101463 + return_type_id: 0x1b8590a8 + parameter_id: 0x26ee682a + parameter_id: 0x33756485 + parameter_id: 0x2c50e503 + parameter_id: 0x18bd6530 +} +function { + id: 0x1210c1fa + return_type_id: 0x1b8590a8 + parameter_id: 0x26ee682a + parameter_id: 0x33756485 + parameter_id: 0x2c50e503 + parameter_id: 0x2c50e503 + parameter_id: 0x18bd6530 +} function { id: 0x1210f89b return_type_id: 0x48b5725f @@ -284116,6 +288500,13 @@ function { return_type_id: 0x48b5725f parameter_id: 0x0a134144 } +function { + id: 0x12201786 + return_type_id: 0x48b5725f + parameter_id: 0x06835e9c + parameter_id: 0xc93e017b + parameter_id: 0xf1a6dfed +} function { id: 0x12217922 return_type_id: 0x48b5725f @@ -284313,6 +288704,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x0bb0c019 } +function { + id: 0x1276a8bd + return_type_id: 0x48b5725f + parameter_id: 0x0dc9e98b + parameter_id: 0x6720d32f +} function { id: 0x1277c151 return_type_id: 0x48b5725f @@ -284547,6 +288944,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x09427c40 } +function { + id: 0x12c92116 + return_type_id: 0x48b5725f + parameter_id: 0x0945c216 +} function { id: 0x12ca5ec4 return_type_id: 0x48b5725f @@ -284684,6 +289086,15 @@ function { parameter_id: 0x09483d5e parameter_id: 0x0858434c } +function { + id: 0x12ed274e + return_type_id: 0x48b5725f + parameter_id: 0x0ae4a2c7 + parameter_id: 0x33756485 + parameter_id: 0x064d6086 + parameter_id: 0x064d6086 + parameter_id: 0x064d6086 +} function { id: 0x12efab79 return_type_id: 0x48b5725f @@ -284749,6 +289160,21 @@ function { return_type_id: 0x48b5725f parameter_id: 0x0e2680c2 } +function { + id: 0x13129118 + return_type_id: 0x48b5725f + parameter_id: 0x0fabaf3b + parameter_id: 0x1b8590a8 + parameter_id: 0x39d1288c + parameter_id: 0x1253769c +} +function { + id: 0x13184981 + return_type_id: 0x48b5725f + parameter_id: 0x0fabaf3b + parameter_id: 0x1b8590a8 + parameter_id: 0x1396794c +} function { id: 0x1327a0fb return_type_id: 0x48b5725f @@ -285019,6 +289445,13 @@ function { parameter_id: 0x81f130ac parameter_id: 0x18bd6530 } +function { + id: 0x137a1cdc + return_type_id: 0x48b5725f + parameter_id: 0x0de4c6b1 + parameter_id: 0x2eab5b8a + parameter_id: 0x87463428 +} function { id: 0x137d1ffc return_type_id: 0x48b5725f @@ -285032,6 +289465,12 @@ function { parameter_id: 0x09427c40 parameter_id: 0x6d7f5ff6 } +function { + id: 0x137f5862 + return_type_id: 0x48b5725f + parameter_id: 0x0ca27481 + parameter_id: 0x33e53462 +} function { id: 0x1382dd85 return_type_id: 0x48b5725f @@ -285091,6 +289530,11 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x6720d32f } +function { + id: 0x1393d7c4 + return_type_id: 0x48b5725f + parameter_id: 0x0c2e195c +} function { id: 0x139c8318 return_type_id: 0x48b5725f @@ -285340,6 +289784,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x0d8bad22 } +function { + id: 0x13ff1655 + return_type_id: 0x48b5725f + parameter_id: 0x0dc9e98b + parameter_id: 0x054f691a +} function { id: 0x1401698f return_type_id: 0x48b5725f @@ -285621,6 +290071,12 @@ function { parameter_id: 0x0cbf60eb parameter_id: 0x6720d32f } +function { + id: 0x1464781e + return_type_id: 0x48b5725f + parameter_id: 0x1582ab06 + parameter_id: 0x6720d32f +} function { id: 0x14667c52 return_type_id: 0x48b5725f @@ -285687,6 +290143,12 @@ function { parameter_id: 0x1d25f132 parameter_id: 0xd41e888f } +function { + id: 0x14827bad + return_type_id: 0xee72cbfc + parameter_id: 0x26ee682a + parameter_id: 0xee72cbfc +} function { id: 0x14830594 return_type_id: 0x48b5725f @@ -285882,6 +290344,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x117e2995 } +function { + id: 0x14c7f0ee + return_type_id: 0x48b5725f + parameter_id: 0x117e85f5 +} function { id: 0x14c81bbb return_type_id: 0x48b5725f @@ -286122,6 +290589,13 @@ function { parameter_id: 0x12e24ee1 parameter_id: 0x4585663f } +function { + id: 0x1539f399 + return_type_id: 0x48b5725f + parameter_id: 0x1582ab06 + parameter_id: 0x33756485 + parameter_id: 0x33756485 +} function { id: 0x153d1e98 return_type_id: 0x48b5725f @@ -286248,6 +290722,12 @@ function { parameter_id: 0x4585663f parameter_id: 0x13580d6c } +function { + id: 0x1566644a + return_type_id: 0x48b5725f + parameter_id: 0x1582ab06 + parameter_id: 0x27a7c613 +} function { id: 0x1566db85 return_type_id: 0x48b5725f @@ -286431,12 +290911,25 @@ function { parameter_id: 0x3b20fed2 parameter_id: 0x4585663f } +function { + id: 0x15976e28 + return_type_id: 0x48b5725f + parameter_id: 0x15a30023 + parameter_id: 0x1b8590a8 + parameter_id: 0x27a7c613 +} function { id: 0x159d827c return_type_id: 0x48b5725f parameter_id: 0x12c0ba43 parameter_id: 0x6d7f5ff6 } +function { + id: 0x159ef67f + return_type_id: 0x48b5725f + parameter_id: 0x1042c9d1 + parameter_id: 0x4585663f +} function { id: 0x159f9b02 return_type_id: 0x48b5725f @@ -286630,6 +291123,13 @@ function { parameter_id: 0x18bd6530 parameter_id: 0xf435685e } +function { + id: 0x160abbb8 + return_type_id: 0x48b5725f + parameter_id: 0x1b8590a8 + parameter_id: 0x1253769c + parameter_id: 0xeb0f6de6 +} function { id: 0x161199c0 return_type_id: 0x48b5725f @@ -286759,6 +291259,14 @@ function { return_type_id: 0x48b5725f parameter_id: 0x1b36c7a2 } +function { + id: 0x1656fc12 + return_type_id: 0x48b5725f + parameter_id: 0x126add1c + parameter_id: 0x914dbfdc + parameter_id: 0x4585663f + parameter_id: 0x13580d6c +} function { id: 0x1658716c return_type_id: 0x48b5725f @@ -286997,6 +291505,12 @@ function { parameter_id: 0x1a6ea392 parameter_id: 0x24706e28 } +function { + id: 0x16949287 + return_type_id: 0x08113aaf + parameter_id: 0x0258f96e + parameter_id: 0x396fe4f8 +} function { id: 0x16983453 return_type_id: 0x48b5725f @@ -287085,6 +291599,24 @@ function { return_type_id: 0x48b5725f parameter_id: 0x18a2fb63 } +function { + id: 0x16b316ef + return_type_id: 0xd5cc9c9a + parameter_id: 0x08bd7371 + parameter_id: 0x1b8590a8 + parameter_id: 0x0c2e195c + parameter_id: 0x2f73da3b + parameter_id: 0x2cacacc0 + parameter_id: 0x24a22acc + parameter_id: 0x06a428cc + parameter_id: 0x6720d32f +} +function { + id: 0x16b4e02b + return_type_id: 0x48b5725f + parameter_id: 0x1b8590a8 + parameter_id: 0x33756485 +} function { id: 0x16b50572 return_type_id: 0x48b5725f @@ -287289,6 +291821,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x19fa9e98 } +function { + id: 0x16e7aaa1 + return_type_id: 0x48b5725f + parameter_id: 0x1b8590a8 + parameter_id: 0x27a7c613 +} function { id: 0x16e9508e return_type_id: 0x48b5725f @@ -287612,12 +292150,23 @@ function { parameter_id: 0x2e18f543 parameter_id: 0x2e18f543 } +function { + id: 0x176f2021 + return_type_id: 0x48b5725f + parameter_id: 0x1b8590a8 + parameter_id: 0x4585663f +} function { id: 0x176fe039 return_type_id: 0x48b5725f parameter_id: 0x1c2f6323 parameter_id: 0x3f1a5886 } +function { + id: 0x1776cedc + return_type_id: 0x48b5725f + parameter_id: 0x1fba7d3d +} function { id: 0x177cb160 return_type_id: 0x48b5725f @@ -287626,6 +292175,13 @@ function { parameter_id: 0x33756485 parameter_id: 0x33756485 } +function { + id: 0x177e4178 + return_type_id: 0x48b5725f + parameter_id: 0x1b8590a8 + parameter_id: 0x4585663f + parameter_id: 0x4585663f +} function { id: 0x177f3bf9 return_type_id: 0x48b5725f @@ -287650,6 +292206,14 @@ function { parameter_id: 0x1a1051a0 parameter_id: 0x6720d32f } +function { + id: 0x1782373c + return_type_id: 0x48b5725f + parameter_id: 0x17a37c1c + parameter_id: 0xbdd18903 + parameter_id: 0x18bd6530 + parameter_id: 0xf435685e +} function { id: 0x1787097a return_type_id: 0x48b5725f @@ -287847,6 +292411,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x1d25f132 } +function { + id: 0x17d74917 + return_type_id: 0x48b5725f + parameter_id: 0x1e820193 + parameter_id: 0x3be6380c +} function { id: 0x17d8b994 return_type_id: 0x48b5725f @@ -287957,6 +292527,12 @@ function { parameter_id: 0x3f0185ef parameter_id: 0x4585663f } +function { + id: 0x18159e1c + return_type_id: 0x48b5725f + parameter_id: 0x21069feb + parameter_id: 0x331a1d7a +} function { id: 0x1817bd12 return_type_id: 0x48b5725f @@ -288107,6 +292683,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x238b8721 } +function { + id: 0x187c3067 + return_type_id: 0x48b5725f + parameter_id: 0x239187d3 +} function { id: 0x187ccd99 return_type_id: 0x17b5cc93 @@ -288847,6 +293428,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x25b73daa } +function { + id: 0x19fc4f29 + return_type_id: 0x48b5725f + parameter_id: 0x275ab027 + parameter_id: 0x2cacacc0 +} function { id: 0x19fe25be return_type_id: 0x48b5725f @@ -288899,6 +293486,12 @@ function { parameter_id: 0x2cd31328 parameter_id: 0x6d7f5ff6 } +function { + id: 0x1a1c4881 + return_type_id: 0x0400f16a + parameter_id: 0x1b55a8f2 + parameter_id: 0x4585663f +} function { id: 0x1a27e882 return_type_id: 0x48b5725f @@ -288950,6 +293543,13 @@ function { return_type_id: 0x48b5725f parameter_id: 0x2b603afb } +function { + id: 0x1a42044c + return_type_id: 0xd5cc9c9a + parameter_id: 0x3bb0740c + parameter_id: 0x18bd6530 + parameter_id: 0xf435685e +} function { id: 0x1a450083 return_type_id: 0x48b5725f @@ -289088,6 +293688,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x2859d899 } +function { + id: 0x1a8f9ccc + return_type_id: 0x48b5725f + parameter_id: 0x285f357e +} function { id: 0x1a902728 return_type_id: 0x48b5725f @@ -289270,6 +293875,11 @@ function { parameter_id: 0x33756485 parameter_id: 0x7f7172c7 } +function { + id: 0x1ae9c33f + return_type_id: 0x48b5725f + parameter_id: 0x29c64ab1 +} function { id: 0x1ae9d1bd return_type_id: 0x48b5725f @@ -289315,6 +293925,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x2e60a6b2 } +function { + id: 0x1b05453e + return_type_id: 0x48b5725f + parameter_id: 0x28a3a74b + parameter_id: 0x6d7f5ff6 +} function { id: 0x1b0d4d60 return_type_id: 0x48b5725f @@ -289337,6 +293953,12 @@ function { parameter_id: 0x2e94a1e1 parameter_id: 0x0ab1f084 } +function { + id: 0x1b18b5bc + return_type_id: 0x48b5725f + parameter_id: 0x2e94a1e1 + parameter_id: 0x097315c2 +} function { id: 0x1b18f64e return_type_id: 0x48b5725f @@ -289518,6 +294140,12 @@ function { parameter_id: 0xf435685e parameter_id: 0x27a7c613 } +function { + id: 0x1b603ccd + return_type_id: 0x48b5725f + parameter_id: 0x285f357e + parameter_id: 0x7be80061 +} function { id: 0x1b6452d7 return_type_id: 0x48b5725f @@ -289608,6 +294236,12 @@ function { parameter_id: 0x2a9beac2 parameter_id: 0x6d7f5ff6 } +function { + id: 0x1b90a8d8 + return_type_id: 0x48b5725f + parameter_id: 0x26ee682a + parameter_id: 0xacd8d043 +} function { id: 0x1b939067 return_type_id: 0x48b5725f @@ -289812,6 +294446,11 @@ function { parameter_id: 0x2131312a parameter_id: 0xc0a0d1f0 } +function { + id: 0x1bd82ebd + return_type_id: 0x48b5725f + parameter_id: 0x2d01fcba +} function { id: 0x1bdaff5e return_type_id: 0x48b5725f @@ -289897,6 +294536,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x326c4938 } +function { + id: 0x1c03dd76 + return_type_id: 0x48b5725f + parameter_id: 0x33756485 + parameter_id: 0x11b57133 +} function { id: 0x1c048955 return_type_id: 0x48b5725f @@ -290047,6 +294692,12 @@ function { parameter_id: 0x02e98c8d parameter_id: 0x2e18f543 } +function { + id: 0x1c32c5f2 + return_type_id: 0x48b5725f + parameter_id: 0x32a623d7 + parameter_id: 0x00c72527 +} function { id: 0x1c362eb2 return_type_id: 0x48b5725f @@ -290176,6 +294827,11 @@ function { parameter_id: 0x31b5a66f parameter_id: 0x2a670b41 } +function { + id: 0x1c5eb40a + return_type_id: 0x48b5725f + parameter_id: 0x331b9666 +} function { id: 0x1c5ec399 return_type_id: 0x48b5725f @@ -290303,6 +294959,11 @@ function { parameter_id: 0x11cfee5a parameter_id: 0x11cfee5a } +function { + id: 0x1c88728f + return_type_id: 0x48b5725f + parameter_id: 0x30408c71 +} function { id: 0x1c88dd20 return_type_id: 0x48b5725f @@ -290355,6 +295016,12 @@ function { parameter_id: 0x914dbfdc parameter_id: 0x6720d32f } +function { + id: 0x1ca44d8a + return_type_id: 0x48b5725f + parameter_id: 0x32a623d7 + parameter_id: 0x25653b02 +} function { id: 0x1ca75909 return_type_id: 0x48b5725f @@ -290362,6 +295029,13 @@ function { parameter_id: 0x274194ac parameter_id: 0x2e18f543 } +function { + id: 0x1caa303b + return_type_id: 0x48b5725f + parameter_id: 0x331b9666 + parameter_id: 0x3e10b518 + parameter_id: 0x331b9666 +} function { id: 0x1cab6a11 return_type_id: 0x48b5725f @@ -290735,6 +295409,11 @@ function { parameter_id: 0x391f15ea parameter_id: 0xf435685e } +function { + id: 0x1d10ef19 + return_type_id: 0x48b5725f + parameter_id: 0x3622fa2a +} function { id: 0x1d1662fd return_type_id: 0x48b5725f @@ -290870,6 +295549,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x368daf92 } +function { + id: 0x1d3cefc2 + return_type_id: 0x48b5725f + parameter_id: 0x32caaf24 + parameter_id: 0x4585663f +} function { id: 0x1d3f8bd2 return_type_id: 0x48b5725f @@ -291041,6 +295726,11 @@ function { parameter_id: 0x3e10b518 parameter_id: 0xa52a0930 } +function { + id: 0x1d8c491d + return_type_id: 0x1b8590a8 + parameter_id: 0x1b8590a8 +} function { id: 0x1d8d431c return_type_id: 0x48b5725f @@ -291584,6 +296274,11 @@ function { parameter_id: 0x3b04bead parameter_id: 0x18bd6530 } +function { + id: 0x1e3bdb22 + return_type_id: 0x48b5725f + parameter_id: 0x3a8e2ac6 +} function { id: 0x1e3db1e5 return_type_id: 0x48b5725f @@ -291747,11 +296442,23 @@ function { parameter_id: 0x6d7f5ff6 parameter_id: 0xac0d3a85 } +function { + id: 0x1e704726 + return_type_id: 0x48b5725f + parameter_id: 0x3ba05ad7 +} function { id: 0x1e70c9ff return_type_id: 0x48b5725f parameter_id: 0x3ba261b0 } +function { + id: 0x1e768676 + return_type_id: 0x48b5725f + parameter_id: 0x39182992 + parameter_id: 0x2c456d6d + parameter_id: 0x6720d32f +} function { id: 0x1e7a9dc2 return_type_id: 0x48b5725f @@ -291902,6 +296609,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x3806390a } +function { + id: 0x1e9b5d67 + return_type_id: 0x48b5725f + parameter_id: 0x380c33d1 +} function { id: 0x1e9be71c return_type_id: 0xd5cc9c9a @@ -292182,6 +296894,14 @@ function { return_type_id: 0x48b5725f parameter_id: 0x39a4e83f } +function { + id: 0x1ef25648 + return_type_id: 0x48b5725f + parameter_id: 0x39182992 + parameter_id: 0x0d164218 + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f +} function { id: 0x1ef27e10 return_type_id: 0x48b5725f @@ -292240,6 +296960,12 @@ function { parameter_id: 0x3f222c68 parameter_id: 0x15b54c6f } +function { + id: 0x1f0b238f + return_type_id: 0x48b5725f + parameter_id: 0x3df0a7d3 + parameter_id: 0x3bd6fa3a +} function { id: 0x1f0d7714 return_type_id: 0x48b5725f @@ -292328,12 +297054,28 @@ function { return_type_id: 0x48b5725f parameter_id: 0x3ee88c45 } +function { + id: 0x1f269fb6 + return_type_id: 0x48b5725f + parameter_id: 0x3df0a7d3 + parameter_id: 0x34e17987 + parameter_id: 0x4585663f + parameter_id: 0x0483e6f8 + parameter_id: 0x4585663f +} function { id: 0x1f26df83 return_type_id: 0x48b5725f parameter_id: 0x31b96ec5 parameter_id: 0xf435685e } +function { + id: 0x1f2853af + return_type_id: 0x48b5725f + parameter_id: 0x3806390a + parameter_id: 0x6d7f5ff6 + parameter_id: 0x11c404ba +} function { id: 0x1f29471f return_type_id: 0xd5cc9c9a @@ -292416,6 +297158,15 @@ function { parameter_id: 0x3d92f9c7 parameter_id: 0x3054f2d7 } +function { + id: 0x1f3dc21f + return_type_id: 0xd5cc9c9a + parameter_id: 0x2f73da3b + parameter_id: 0x0b30ee00 + parameter_id: 0xf435685e + parameter_id: 0x4585663f + parameter_id: 0x379d63b0 +} function { id: 0x1f458cf4 return_type_id: 0x48b5725f @@ -292428,6 +297179,12 @@ function { parameter_id: 0x3760766d parameter_id: 0x8167e73b } +function { + id: 0x1f45db81 + return_type_id: 0x48b5725f + parameter_id: 0x3c417e01 + parameter_id: 0x33756485 +} function { id: 0x1f4af633 return_type_id: 0x48b5725f @@ -292845,6 +297602,11 @@ function { parameter_id: 0x5268af9d parameter_id: 0x6d7f5ff6 } +function { + id: 0x1fcce445 + return_type_id: 0x48b5725f + parameter_id: 0x3d52d75b +} function { id: 0x1fcd1693 return_type_id: 0x48b5725f @@ -292926,6 +297688,19 @@ function { parameter_id: 0x3176a085 parameter_id: 0xc9082b19 } +function { + id: 0x1fe47867 + return_type_id: 0x48b5725f + parameter_id: 0x3df0a7d3 +} +function { + id: 0x1fe91863 + return_type_id: 0x48b5725f + parameter_id: 0x3e10b518 + parameter_id: 0x3e10b518 + parameter_id: 0x324e7f0f + parameter_id: 0x6d7f5ff6 +} function { id: 0x1feaaebf return_type_id: 0x48b5725f @@ -292960,6 +297735,11 @@ function { parameter_id: 0x3e10b518 parameter_id: 0xa52a0930 } +function { + id: 0x1ff04410 + return_type_id: 0x48b5725f + parameter_id: 0x3da0560e +} function { id: 0x1ff204c3 return_type_id: 0x48b5725f @@ -293844,6 +298624,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x92233392 } +function { + id: 0x34270f0c + return_type_id: 0x0490bb4a + parameter_id: 0x36e75420 + parameter_id: 0x3e146274 +} function { id: 0x345f1809 return_type_id: 0xa9403390 @@ -294325,6 +299111,11 @@ function { return_type_id: 0x33756485 parameter_id: 0x37b4f743 } +function { + id: 0x3c97e3d9 + return_type_id: 0x33756485 + parameter_id: 0x34ecba28 +} function { id: 0x3cc96bbe return_type_id: 0x0483e6f8 @@ -294752,6 +299543,12 @@ function { parameter_id: 0x0cbf60eb parameter_id: 0x2b20aa80 } +function { + id: 0x44b624d1 + return_type_id: 0x00c83ba6 + parameter_id: 0x3b04bead + parameter_id: 0x16c5c0ab +} function { id: 0x44ddb78b return_type_id: 0x356691bc @@ -294797,6 +299594,12 @@ function { parameter_id: 0x3860f3c0 parameter_id: 0x6720d32f } +function { + id: 0x45df5dd3 + return_type_id: 0x315b7e01 + parameter_id: 0x3b04bead + parameter_id: 0x6720d32f +} function { id: 0x45f82b62 return_type_id: 0xc9082b19 @@ -294851,6 +299654,11 @@ function { return_type_id: 0xc9082b19 parameter_id: 0x0c0dfa25 } +function { + id: 0x47570b9f + return_type_id: 0x2131312a + parameter_id: 0x2d77f22a +} function { id: 0x4759fa3a return_type_id: 0x04ca9246 @@ -294875,6 +299683,13 @@ function { return_type_id: 0x18bd6530 parameter_id: 0x4585663f } +function { + id: 0x48135354 + return_type_id: 0x35304fb1 + parameter_id: 0x3f84ee3c + parameter_id: 0x33756485 + parameter_id: 0x33756485 +} function { id: 0x48834be4 return_type_id: 0xc9082b19 @@ -294953,6 +299768,11 @@ function { parameter_id: 0x33756485 parameter_id: 0x33756485 } +function { + id: 0x4a02979c + return_type_id: 0xf1a6dfed + parameter_id: 0x1582ab06 +} function { id: 0x4a279a3e return_type_id: 0x3d4280e0 @@ -294998,6 +299818,17 @@ function { parameter_id: 0x4585663f parameter_id: 0x4585663f } +function { + id: 0x4b6ec637 + return_type_id: 0x2d01fcba + parameter_id: 0x0c2e195c + parameter_id: 0x4585663f + parameter_id: 0x4585663f + parameter_id: 0x4585663f + parameter_id: 0x0c33de94 + parameter_id: 0x0c33de94 + parameter_id: 0x4585663f +} function { id: 0x4bbafb54 return_type_id: 0x00c72527 @@ -295033,6 +299864,17 @@ function { return_type_id: 0x18e64f74 parameter_id: 0x3668642a } +function { + id: 0x4d306964 + return_type_id: 0x21069feb + parameter_id: 0x3c9a9fb2 + parameter_id: 0x6720d32f +} +function { + id: 0x4d744842 + return_type_id: 0x3d52d75b + parameter_id: 0x322c8c4b +} function { id: 0x4d878509 return_type_id: 0x21069feb @@ -295061,6 +299903,11 @@ function { return_type_id: 0xc9082b19 parameter_id: 0x2e8d5f05 } +function { + id: 0x4e6eaff2 + return_type_id: 0x00daeb4b + parameter_id: 0x0483e6f8 +} function { id: 0x4e848709 return_type_id: 0x18ea6ae3 @@ -295100,6 +299947,10 @@ function { parameter_id: 0x3b04bead parameter_id: 0x038de60c } +function { + id: 0x4f4e564c + return_type_id: 0x00daeb4b +} function { id: 0x4f645cab return_type_id: 0x00a43052 @@ -295294,6 +300145,13 @@ function { parameter_id: 0x2936263d parameter_id: 0x6720d32f } +function { + id: 0x5274946d + return_type_id: 0x1c898f28 + parameter_id: 0x356691bc + parameter_id: 0x6720d32f + parameter_id: 0x4585663f +} function { id: 0x5281433c return_type_id: 0x92233392 @@ -295367,6 +300225,13 @@ function { return_type_id: 0x7be80061 parameter_id: 0x6720d32f } +function { + id: 0x53d4f2c3 + return_type_id: 0x18bd6530 + parameter_id: 0x17a37c1c + parameter_id: 0x25e45be7 + parameter_id: 0xf435685e +} function { id: 0x53d7cb1d return_type_id: 0x0930c6d9 @@ -295693,6 +300558,12 @@ function { return_type_id: 0x1c898f28 parameter_id: 0x210b9681 } +function { + id: 0x56edbc2a + return_type_id: 0x18bd6530 + parameter_id: 0x0258f96e + parameter_id: 0x3b4ce03a +} function { id: 0x56f10608 return_type_id: 0x18bd6530 @@ -296068,6 +300939,11 @@ function { parameter_id: 0x391f15ea parameter_id: 0xf435685e } +function { + id: 0x5b0b198d + return_type_id: 0x295c7202 + parameter_id: 0x21069feb +} function { id: 0x5b3d7cd1 return_type_id: 0x18bd6530 @@ -296362,6 +301238,13 @@ function { parameter_id: 0x2cac4c27 parameter_id: 0x18bd6530 } +function { + id: 0x5de26741 + return_type_id: 0x18bd6530 + parameter_id: 0x2efd5036 + parameter_id: 0x3dfac2ad + parameter_id: 0xf1a6dfed +} function { id: 0x5de7952d return_type_id: 0x18bd6530 @@ -296405,6 +301288,19 @@ function { parameter_id: 0xf435685e parameter_id: 0x11cfee5a } +function { + id: 0x5e9421aa + return_type_id: 0x18bd6530 + parameter_id: 0x2d01fcba + parameter_id: 0xd0b3a203 + parameter_id: 0x0087f4f8 +} +function { + id: 0x5ebf0597 + return_type_id: 0x18bd6530 + parameter_id: 0x239187d3 + parameter_id: 0x33756485 +} function { id: 0x5ed273d9 return_type_id: 0x18bd6530 @@ -296526,6 +301422,14 @@ function { parameter_id: 0x35d510c3 parameter_id: 0x6720d32f } +function { + id: 0x61257a20 + return_type_id: 0x2170d06d + parameter_id: 0xf1a6dfed + parameter_id: 0x4585663f + parameter_id: 0x6720d32f + parameter_id: 0x2fb2b385 +} function { id: 0x619a645f return_type_id: 0x249959de @@ -296581,6 +301485,11 @@ function { parameter_id: 0x21003da7 parameter_id: 0x31b5a66f } +function { + id: 0x637004ab + return_type_id: 0x1582ab06 + parameter_id: 0x2170d06d +} function { id: 0x6408a046 return_type_id: 0x054f691a @@ -296670,6 +301579,12 @@ function { parameter_id: 0x1c3dbe5a parameter_id: 0x1c3dbe5a } +function { + id: 0x66525607 + return_type_id: 0x82bc7069 + parameter_id: 0x347303b4 + parameter_id: 0x6720d32f +} function { id: 0x6680517a return_type_id: 0x054f691a @@ -296678,6 +301593,19 @@ function { parameter_id: 0x6720d32f parameter_id: 0xf1a6dfed } +function { + id: 0x66880871 + return_type_id: 0x054f691a + parameter_id: 0x380c33d1 + parameter_id: 0x054f691a +} +function { + id: 0x66cc4765 + return_type_id: 0x28a3a74b + parameter_id: 0x1684c624 + parameter_id: 0x18bd6530 + parameter_id: 0x6720d32f +} function { id: 0x66e18f45 return_type_id: 0x2c8c423d @@ -296779,6 +301707,13 @@ function { parameter_id: 0x2584a3b9 parameter_id: 0x6d7f5ff6 } +function { + id: 0x69b2a88c + return_type_id: 0x0945c216 + parameter_id: 0x3e10b518 + parameter_id: 0xc9082b19 + parameter_id: 0xc9082b19 +} function { id: 0x69be77aa return_type_id: 0x054f691a @@ -296899,6 +301834,13 @@ function { parameter_id: 0x054f691a parameter_id: 0xf1a6dfed } +function { + id: 0x6bfb947b + return_type_id: 0x054f691a + parameter_id: 0x0dc9e98b + parameter_id: 0x054f691a + parameter_id: 0x0baa70a7 +} function { id: 0x6c109ae9 return_type_id: 0x249959de @@ -297649,6 +302591,15 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x18bd6530 } +function { + id: 0x81599f70 + return_type_id: 0x120540d1 + parameter_id: 0x32ec08f2 + parameter_id: 0x6720d32f + parameter_id: 0x3e10b518 + parameter_id: 0x18bd6530 + parameter_id: 0x2f802886 +} function { id: 0x81a9f9cd return_type_id: 0x09a83f1c @@ -298167,6 +303118,13 @@ function { return_type_id: 0x2e0f9112 parameter_id: 0x3912ab06 } +function { + id: 0x889f851e + return_type_id: 0x120540d1 + parameter_id: 0x120540d1 + parameter_id: 0x1b8590a8 + parameter_id: 0x04c1427f +} function { id: 0x88bccf1d return_type_id: 0x120540d1 @@ -298260,6 +303218,12 @@ function { parameter_id: 0x120540d1 parameter_id: 0x4585663f } +function { + id: 0x8ad88211 + return_type_id: 0x120540d1 + parameter_id: 0x1b8590a8 + parameter_id: 0x120540d1 +} function { id: 0x8ae0b646 return_type_id: 0x6720d32f @@ -298612,6 +303576,11 @@ function { return_type_id: 0x6720d32f parameter_id: 0x36194830 } +function { + id: 0x90085da5 + return_type_id: 0x6720d32f + parameter_id: 0x3622fa2a +} function { id: 0x9009411d return_type_id: 0x6720d32f @@ -298717,6 +303686,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3668642a } +function { + id: 0x901c3c62 + return_type_id: 0x6720d32f + parameter_id: 0x3ae3ff84 + parameter_id: 0xc9082b19 +} function { id: 0x90208300 return_type_id: 0x6720d32f @@ -299187,6 +304162,13 @@ function { parameter_id: 0x295c7202 parameter_id: 0x7584e7da } +function { + id: 0x90917599 + return_type_id: 0x6720d32f + parameter_id: 0x3df0a7d3 + parameter_id: 0x9ae406d4 + parameter_id: 0x18bd6530 +} function { id: 0x9093971b return_type_id: 0x6720d32f @@ -299796,6 +304778,13 @@ function { parameter_id: 0x0277bf8a parameter_id: 0x07dcdbe1 } +function { + id: 0x9122ac75 + return_type_id: 0x6720d32f + parameter_id: 0x32a623d7 + parameter_id: 0x0483e6f8 + parameter_id: 0x6720d32f +} function { id: 0x91239923 return_type_id: 0x6720d32f @@ -299861,6 +304850,13 @@ function { return_type_id: 0x6720d32f parameter_id: 0x32caaf24 } +function { + id: 0x9133c6a6 + return_type_id: 0x6720d32f + parameter_id: 0x31790b1e + parameter_id: 0x3f0185ef + parameter_id: 0x4585663f +} function { id: 0x913618b5 return_type_id: 0x6720d32f @@ -300378,6 +305374,13 @@ function { parameter_id: 0x3de3f5a1 parameter_id: 0x268136e5 } +function { + id: 0x919a2688 + return_type_id: 0x6720d32f + parameter_id: 0x3064f970 + parameter_id: 0x04a6a89c + parameter_id: 0x4585663f +} function { id: 0x919a7322 return_type_id: 0x6720d32f @@ -300813,6 +305816,13 @@ function { parameter_id: 0x32a623d7 parameter_id: 0x384c5795 } +function { + id: 0x91c8e13a + return_type_id: 0x6720d32f + parameter_id: 0x32a623d7 + parameter_id: 0x3e10b518 + parameter_id: 0x6720d32f +} function { id: 0x91ca11c2 return_type_id: 0x6720d32f @@ -301385,6 +306395,20 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3e292ad1 } +function { + id: 0x920c1213 + return_type_id: 0x6720d32f + parameter_id: 0x3df0a7d3 + parameter_id: 0x33756485 + parameter_id: 0xf435685e +} +function { + id: 0x920d0e3f + return_type_id: 0x6720d32f + parameter_id: 0x384c5795 + parameter_id: 0x6720d32f + parameter_id: 0x09eee7e5 +} function { id: 0x920d4b76 return_type_id: 0x6720d32f @@ -301419,6 +306443,13 @@ function { parameter_id: 0x0483e6f8 parameter_id: 0xf435685e } +function { + id: 0x921502fa + return_type_id: 0x6720d32f + parameter_id: 0x3df0a7d3 + parameter_id: 0x3e2a5e3d + parameter_id: 0x4585663f +} function { id: 0x92153e12 return_type_id: 0xf435685e @@ -301470,6 +306501,14 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3e816a4b } +function { + id: 0x9221eee3 + return_type_id: 0x6720d32f + parameter_id: 0x3df0a7d3 + parameter_id: 0x3e10b518 + parameter_id: 0x9547a3da + parameter_id: 0x0dc11255 +} function { id: 0x92222c71 return_type_id: 0x6720d32f @@ -301712,6 +306751,13 @@ function { parameter_id: 0x3b04bead parameter_id: 0x4585663f } +function { + id: 0x9258444e + return_type_id: 0x6720d32f + parameter_id: 0x3b04bead + parameter_id: 0x4585663f + parameter_id: 0x3e75499e +} function { id: 0x925d3e48 return_type_id: 0x6720d32f @@ -301871,6 +306917,14 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3fac1d22 } +function { + id: 0x926c5025 + return_type_id: 0x6720d32f + parameter_id: 0x3d1364e9 + parameter_id: 0x2bae2afe + parameter_id: 0x1bf16028 + parameter_id: 0x0bb0c019 +} function { id: 0x926d0dd0 return_type_id: 0x6720d32f @@ -302032,6 +307086,14 @@ function { parameter_id: 0x3f37d9d5 parameter_id: 0x32a063f3 } +function { + id: 0x92880f91 + return_type_id: 0x6720d32f + parameter_id: 0x3df0a7d3 + parameter_id: 0x1e820193 + parameter_id: 0x3be6380c + parameter_id: 0x0d30b9c3 +} function { id: 0x928c1332 return_type_id: 0x6720d32f @@ -302089,6 +307151,14 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3c5f865b } +function { + id: 0x9298d745 + return_type_id: 0x6720d32f + parameter_id: 0x3df0a7d3 + parameter_id: 0x1e820193 + parameter_id: 0x7be80061 + parameter_id: 0x3be6380c +} function { id: 0x929a4d8e return_type_id: 0x6720d32f @@ -302179,6 +307249,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3ca2533c } +function { + id: 0x92aa46db + return_type_id: 0x6720d32f + parameter_id: 0x3df0a7d3 + parameter_id: 0x15a30023 +} function { id: 0x92ab09cb return_type_id: 0x6720d32f @@ -302186,6 +307262,15 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x6720d32f } +function { + id: 0x92ab0d8f + return_type_id: 0x6720d32f + parameter_id: 0x351641b0 + parameter_id: 0x92233392 + parameter_id: 0x92233392 + parameter_id: 0x92233392 + parameter_id: 0xc9082b19 +} function { id: 0x92acc8e1 return_type_id: 0x6720d32f @@ -302198,6 +307283,13 @@ function { parameter_id: 0x3ea2e6c1 parameter_id: 0x2124c9f1 } +function { + id: 0x92af5c55 + return_type_id: 0x6720d32f + parameter_id: 0x3df0a7d3 + parameter_id: 0x15a30023 + parameter_id: 0x146a39bf +} function { id: 0x92b5578e return_type_id: 0x6720d32f @@ -302217,6 +307309,15 @@ function { parameter_id: 0x01c5a749 parameter_id: 0x3c2dd1ca } +function { + id: 0x92beb06d + return_type_id: 0x6720d32f + parameter_id: 0x3df0a7d3 + parameter_id: 0x1d44afc8 + parameter_id: 0xd0b3a203 + parameter_id: 0xd0b3a203 + parameter_id: 0x18bd6530 +} function { id: 0x92bf7ef1 return_type_id: 0x6720d32f @@ -302380,6 +307481,12 @@ function { parameter_id: 0xc9082b19 parameter_id: 0x0db138df } +function { + id: 0x92daa424 + return_type_id: 0x6720d32f + parameter_id: 0x3df0a7d3 + parameter_id: 0x099bbff0 +} function { id: 0x92dc6e62 return_type_id: 0x6720d32f @@ -302550,6 +307657,11 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x3e10b518 } +function { + id: 0x92fccadb + return_type_id: 0x6720d32f + parameter_id: 0x3df0a7d3 +} function { id: 0x92fce902 return_type_id: 0x6720d32f @@ -302987,6 +308099,16 @@ function { parameter_id: 0x13580d6c parameter_id: 0x07dcdbe1 } +function { + id: 0x93625762 + return_type_id: 0x6720d32f + parameter_id: 0x3b04bead + parameter_id: 0x079f969f + parameter_id: 0xf435685e + parameter_id: 0x391f15ea + parameter_id: 0x30ccee09 + parameter_id: 0x2a670b41 +} function { id: 0x93627fe0 return_type_id: 0x6720d32f @@ -303010,6 +308132,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3ba261b0 } +function { + id: 0x936a3614 + return_type_id: 0x6720d32f + parameter_id: 0x39d1288c + parameter_id: 0x27a7c613 +} function { id: 0x936c5d25 return_type_id: 0x6720d32f @@ -303021,6 +308149,19 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3bb11c92 } +function { + id: 0x936fda74 + return_type_id: 0x6720d32f + parameter_id: 0x3dcee85d + parameter_id: 0x6720d32f +} +function { + id: 0x9377de98 + return_type_id: 0x6720d32f + parameter_id: 0x380882e7 + parameter_id: 0x391f15ea + parameter_id: 0x4585663f +} function { id: 0x93788ff8 return_type_id: 0x6720d32f @@ -303082,6 +308223,15 @@ function { parameter_id: 0x3e10b518 parameter_id: 0xa52a0930 } +function { + id: 0x938283cb + return_type_id: 0x6720d32f + parameter_id: 0x3b04bead + parameter_id: 0x31c8b544 + parameter_id: 0x12e6ffae + parameter_id: 0x36d2de0e + parameter_id: 0x3db894b0 +} function { id: 0x93833601 return_type_id: 0x6720d32f @@ -303185,6 +308335,13 @@ function { parameter_id: 0x39a8be0c parameter_id: 0x1e8e5a79 } +function { + id: 0x93910e88 + return_type_id: 0x6720d32f + parameter_id: 0x380c33d1 + parameter_id: 0x054f691a + parameter_id: 0x1f73dead +} function { id: 0x9394f11e return_type_id: 0x6720d32f @@ -303253,6 +308410,13 @@ function { parameter_id: 0x4585663f parameter_id: 0x0b27dc43 } +function { + id: 0x939f8199 + return_type_id: 0x6720d32f + parameter_id: 0x3b04bead + parameter_id: 0x36d2de0e + parameter_id: 0x14199568 +} function { id: 0x93a2a3d7 return_type_id: 0x6720d32f @@ -303475,6 +308639,22 @@ function { parameter_id: 0x33756485 parameter_id: 0x33756485 } +function { + id: 0x93e8301d + return_type_id: 0x6720d32f + parameter_id: 0x3df0a7d3 + parameter_id: 0x4585663f + parameter_id: 0x0bb0c019 + parameter_id: 0x0483e6f8 + parameter_id: 0x4585663f +} +function { + id: 0x93e83373 + return_type_id: 0x6720d32f + parameter_id: 0x3df0a7d3 + parameter_id: 0x4585663f + parameter_id: 0x0bb0c019 +} function { id: 0x93e8e7b0 return_type_id: 0x6720d32f @@ -303776,6 +308956,18 @@ function { parameter_id: 0x25653b02 parameter_id: 0x396f8ae8 } +function { + id: 0x94404485 + return_type_id: 0x6720d32f + parameter_id: 0x26ee682a + parameter_id: 0x18bd6530 + parameter_id: 0x6720d32f +} +function { + id: 0x94418fe1 + return_type_id: 0x6720d32f + parameter_id: 0x2705b338 +} function { id: 0x9441b35b return_type_id: 0x6720d32f @@ -303803,6 +308995,14 @@ function { parameter_id: 0x234c60dd parameter_id: 0x4585663f } +function { + id: 0x94471ba6 + return_type_id: 0x6720d32f + parameter_id: 0x2170d06d + parameter_id: 0x6720d32f + parameter_id: 0x1d5bae2a + parameter_id: 0x064d6086 +} function { id: 0x944726c2 return_type_id: 0x6720d32f @@ -303964,6 +309164,13 @@ function { parameter_id: 0x34434827 parameter_id: 0xcddc4fff } +function { + id: 0x946d2b92 + return_type_id: 0x6720d32f + parameter_id: 0x24f9cd24 + parameter_id: 0x323908e0 + parameter_id: 0x6d7f5ff6 +} function { id: 0x946eaca9 return_type_id: 0x52658204 @@ -304193,6 +309400,13 @@ function { return_type_id: 0x6720d32f parameter_id: 0x25520d15 } +function { + id: 0x94d5972f + return_type_id: 0x6720d32f + parameter_id: 0x24f9cd24 + parameter_id: 0x1c1627b0 + parameter_id: 0x6d7f5ff6 +} function { id: 0x94d8cba3 return_type_id: 0x6720d32f @@ -304363,6 +309577,12 @@ function { parameter_id: 0x23f09c34 parameter_id: 0x1dd302e9 } +function { + id: 0x950d2ca0 + return_type_id: 0x6720d32f + parameter_id: 0x21069feb + parameter_id: 0x331a1d7a +} function { id: 0x950f0fae return_type_id: 0x6720d32f @@ -304381,6 +309601,12 @@ function { parameter_id: 0x21069feb parameter_id: 0x38040a6c } +function { + id: 0x9522132a + return_type_id: 0x6720d32f + parameter_id: 0x24f9cd24 + parameter_id: 0x6720d32f +} function { id: 0x952ae349 return_type_id: 0x6720d32f @@ -304605,6 +309831,12 @@ function { parameter_id: 0x25782362 parameter_id: 0x6d7f5ff6 } +function { + id: 0x956e6587 + return_type_id: 0x6720d32f + parameter_id: 0x2170d06d + parameter_id: 0x2cacacc0 +} function { id: 0x957149c4 return_type_id: 0x6720d32f @@ -305082,6 +310314,14 @@ function { parameter_id: 0x2668e644 parameter_id: 0x78d7d113 } +function { + id: 0x95fc7a3d + return_type_id: 0x6720d32f + parameter_id: 0x23f09c34 + parameter_id: 0x23f09c34 + parameter_id: 0x3e10b518 + parameter_id: 0x3e10b518 +} function { id: 0x95fc827f return_type_id: 0x6720d32f @@ -305546,6 +310786,11 @@ function { parameter_id: 0x0483e6f8 parameter_id: 0x914dbfdc } +function { + id: 0x96c09c01 + return_type_id: 0x6720d32f + parameter_id: 0x2d01fcba +} function { id: 0x96c3b4e1 return_type_id: 0x6720d32f @@ -305984,6 +311229,12 @@ function { parameter_id: 0x391f15ea parameter_id: 0x18bd6530 } +function { + id: 0x974e1bca + return_type_id: 0x6720d32f + parameter_id: 0x2953a412 + parameter_id: 0x26847863 +} function { id: 0x975a548f return_type_id: 0x6720d32f @@ -306088,6 +311339,11 @@ function { return_type_id: 0x6720d32f parameter_id: 0x28136e4b } +function { + id: 0x97889594 + return_type_id: 0x6720d32f + parameter_id: 0x2821daec +} function { id: 0x978bc97a return_type_id: 0x6720d32f @@ -306127,6 +311383,14 @@ function { parameter_id: 0x2b21a696 parameter_id: 0x35f82503 } +function { + id: 0x97a0d8a7 + return_type_id: 0x15a30023 + parameter_id: 0x15a30023 + parameter_id: 0x6720d32f + parameter_id: 0xf1a6dfed + parameter_id: 0x0292b875 +} function { id: 0x97a3c07a return_type_id: 0x6720d32f @@ -306155,6 +311419,14 @@ function { parameter_id: 0x25782362 parameter_id: 0xdb6afbca } +function { + id: 0x97b4bbf8 + return_type_id: 0xf435685e + parameter_id: 0x06835e9c + parameter_id: 0x4585663f + parameter_id: 0xf435685e + parameter_id: 0x2f73da3b +} function { id: 0x97b9c78c return_type_id: 0x6720d32f @@ -306499,6 +311771,13 @@ function { parameter_id: 0x2dab4556 parameter_id: 0x1d2416d3 } +function { + id: 0x98214125 + return_type_id: 0x6720d32f + parameter_id: 0x1582ab06 + parameter_id: 0x33756485 + parameter_id: 0x33756485 +} function { id: 0x982246a7 return_type_id: 0x6720d32f @@ -306511,6 +311790,14 @@ function { return_type_id: 0xfc0e1dbd parameter_id: 0xfc0e1dbd } +function { + id: 0x982488f7 + return_type_id: 0x6720d32f + parameter_id: 0x1b8590a8 + parameter_id: 0xd0b3a203 + parameter_id: 0x1977e57b + parameter_id: 0x6720d32f +} function { id: 0x98249b1d return_type_id: 0x6720d32f @@ -306818,6 +312105,14 @@ function { parameter_id: 0x6720d32f parameter_id: 0x3e10b518 } +function { + id: 0x986a916d + return_type_id: 0x6720d32f + parameter_id: 0x1582ab06 + parameter_id: 0x2170d06d + parameter_id: 0x33756485 + parameter_id: 0xf1a6dfed +} function { id: 0x986ccce1 return_type_id: 0x6720d32f @@ -306871,6 +312166,21 @@ function { parameter_id: 0x33756485 parameter_id: 0x0d7d7298 } +function { + id: 0x98773f07 + return_type_id: 0x6720d32f + parameter_id: 0x1582ab06 + parameter_id: 0x27a7c613 + parameter_id: 0x27a7c613 +} +function { + id: 0x98788d90 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0xf1a6dfed + parameter_id: 0x4585663f + parameter_id: 0x33756485 +} function { id: 0x98792c3d return_type_id: 0x3e10b518 @@ -307024,6 +312334,15 @@ function { parameter_id: 0x18bd6530 parameter_id: 0xc93e017b } +function { + id: 0x988bc164 + return_type_id: 0xf435685e + parameter_id: 0x3df0a7d3 + parameter_id: 0x33756485 + parameter_id: 0x18bd6530 + parameter_id: 0xf435685e + parameter_id: 0x2f73da3b +} function { id: 0x988f2c1b return_type_id: 0x6720d32f @@ -307192,6 +312511,11 @@ function { return_type_id: 0x6720d32f parameter_id: 0x14b9453b } +function { + id: 0x98af9d1c + return_type_id: 0x3e10b518 + parameter_id: 0x2bae2afe +} function { id: 0x98b3c900 return_type_id: 0x6720d32f @@ -307516,6 +312840,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x1200e2aa } +function { + id: 0x99010068 + return_type_id: 0x6720d32f + parameter_id: 0x11e6864c + parameter_id: 0x3e10b518 +} function { id: 0x99011cda return_type_id: 0x6720d32f @@ -307641,6 +312971,11 @@ function { return_type_id: 0x6720d32f parameter_id: 0x1285100d } +function { + id: 0x992241b9 + return_type_id: 0x6720d32f + parameter_id: 0x128a8a58 +} function { id: 0x9927995d return_type_id: 0xf435685e @@ -308164,6 +313499,12 @@ function { parameter_id: 0x1aeeade4 parameter_id: 0x6720d32f } +function { + id: 0x99ae995e + return_type_id: 0x6720d32f + parameter_id: 0x1042c9d1 + parameter_id: 0x0fb2015e +} function { id: 0x99aea96e return_type_id: 0x6720d32f @@ -308395,6 +313736,12 @@ function { parameter_id: 0x1c3dbe5a parameter_id: 0x0db25a6d } +function { + id: 0x99d43279 + return_type_id: 0xf435685e + parameter_id: 0x34ecba28 + parameter_id: 0xf435685e +} function { id: 0x99d6eb87 return_type_id: 0x6720d32f @@ -308444,6 +313791,11 @@ function { parameter_id: 0x3b04bead parameter_id: 0x2d1f457b } +function { + id: 0x99df4252 + return_type_id: 0x6720d32f + parameter_id: 0x117e85f5 +} function { id: 0x99e0f6e0 return_type_id: 0x6720d32f @@ -308473,6 +313825,14 @@ function { parameter_id: 0x1e870478 parameter_id: 0xf017819f } +function { + id: 0x99e4a009 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x92233392 + parameter_id: 0x0ed82db2 + parameter_id: 0x082be49e +} function { id: 0x99e6ede5 return_type_id: 0x6720d32f @@ -308487,6 +313847,14 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x92233392 } +function { + id: 0x99e7b457 + return_type_id: 0x6720d32f + parameter_id: 0x12e6ffae + parameter_id: 0x3b04bead + parameter_id: 0xc9082b19 + parameter_id: 0x2e18f543 +} function { id: 0x99eacf10 return_type_id: 0x6720d32f @@ -308505,6 +313873,15 @@ function { parameter_id: 0x126add1c parameter_id: 0x3c2fe980 } +function { + id: 0x99ecdba4 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x92233392 + parameter_id: 0x2e029f76 + parameter_id: 0x1d19a9d5 + parameter_id: 0x6720d32f +} function { id: 0x99ed1149 return_type_id: 0x6720d32f @@ -308613,6 +313990,11 @@ function { parameter_id: 0x1d44326e parameter_id: 0x348ad8b0 } +function { + id: 0x9a04e7d8 + return_type_id: 0xf435685e + parameter_id: 0x34ecba28 +} function { id: 0x9a077ed2 return_type_id: 0x6720d32f @@ -308628,6 +314010,13 @@ function { parameter_id: 0x6720d32f parameter_id: 0x4585663f } +function { + id: 0x9a0f5098 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x6720d32f + parameter_id: 0xf1a6dfed +} function { id: 0x9a10c524 return_type_id: 0x6720d32f @@ -308708,6 +314097,12 @@ function { parameter_id: 0x1d19a9d5 parameter_id: 0x4585663f } +function { + id: 0x9a1d7c68 + return_type_id: 0x6720d32f + parameter_id: 0x12e6ffae + parameter_id: 0xc9082b19 +} function { id: 0x9a1e34e7 return_type_id: 0x6720d32f @@ -308739,6 +314134,15 @@ function { parameter_id: 0x1dc3d428 parameter_id: 0x34a05394 } +function { + id: 0x9a235f02 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x6720d32f + parameter_id: 0x4585663f + parameter_id: 0x4585663f + parameter_id: 0x4585663f +} function { id: 0x9a23bd25 return_type_id: 0xcc33625b @@ -308755,6 +314159,11 @@ function { return_type_id: 0x6720d32f parameter_id: 0x1e9705eb } +function { + id: 0x9a25325b + return_type_id: 0x6720d32f + parameter_id: 0x1e9745d3 +} function { id: 0x9a299233 return_type_id: 0x6720d32f @@ -308791,6 +314200,21 @@ function { parameter_id: 0x6720d32f parameter_id: 0x1d19a9d5 } +function { + id: 0x9a2b6d98 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f +} +function { + id: 0x9a2d8ab0 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x63bb62a2 + parameter_id: 0x33756485 +} function { id: 0x9a2dc3fa return_type_id: 0x6720d32f @@ -308809,6 +314233,12 @@ function { parameter_id: 0x1dc3d428 parameter_id: 0x37f5d3d4 } +function { + id: 0x9a308be1 + return_type_id: 0x6720d32f + parameter_id: 0x1977e57b + parameter_id: 0x7b64642a +} function { id: 0x9a32aa77 return_type_id: 0x6720d32f @@ -309199,6 +314629,11 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x6720d32f } +function { + id: 0x9a6e7c60 + return_type_id: 0x6720d32f + parameter_id: 0x1fba7d3d +} function { id: 0x9a702edf return_type_id: 0x6720d32f @@ -309490,6 +314925,12 @@ function { parameter_id: 0x18e64f74 parameter_id: 0x4585663f } +function { + id: 0x9aaf7e51 + return_type_id: 0x6720d32f + parameter_id: 0x1fba7d3d + parameter_id: 0x30408c71 +} function { id: 0x9ab24357 return_type_id: 0x6720d32f @@ -309508,6 +314949,13 @@ function { parameter_id: 0x188b9e81 parameter_id: 0x4585663f } +function { + id: 0x9ab41198 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x4585663f + parameter_id: 0x36f98e5c +} function { id: 0x9ab438eb return_type_id: 0x6720d32f @@ -309565,6 +315013,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x1ce51dde } +function { + id: 0x9ab9affb + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x4585663f +} function { id: 0x9abc5077 return_type_id: 0x6720d32f @@ -309834,12 +315288,33 @@ function { return_type_id: 0x6720d32f parameter_id: 0x1df06cce } +function { + id: 0x9afd0449 + return_type_id: 0x6720d32f + parameter_id: 0x1b8590a8 + parameter_id: 0x6720d32f +} function { id: 0x9b022eae return_type_id: 0x6720d32f parameter_id: 0x1b8590a8 parameter_id: 0x18ea6ae3 } +function { + id: 0x9b034295 + return_type_id: 0x6720d32f + parameter_id: 0x1b8590a8 + parameter_id: 0x1b8590a8 + parameter_id: 0x3e001c39 + parameter_id: 0xd57eb7ba + parameter_id: 0x18bd6530 +} +function { + id: 0x9b037291 + return_type_id: 0x6720d32f + parameter_id: 0x1b8590a8 + parameter_id: 0x18bd6530 +} function { id: 0x9b03e163 return_type_id: 0x6720d32f @@ -310033,6 +315508,13 @@ function { parameter_id: 0x6d7f5ff6 parameter_id: 0x1d19a9d5 } +function { + id: 0x9b15020e + return_type_id: 0x6720d32f + parameter_id: 0x188b9e81 + parameter_id: 0x2f3288e0 + parameter_id: 0x2f3288e0 +} function { id: 0x9b153afe return_type_id: 0x6720d32f @@ -310317,6 +315799,12 @@ function { parameter_id: 0x4585663f parameter_id: 0x1253769c } +function { + id: 0x9b2efcfe + return_type_id: 0x6720d32f + parameter_id: 0x19e66c71 + parameter_id: 0x35e13364 +} function { id: 0x9b2f1182 return_type_id: 0x6720d32f @@ -310368,6 +315856,12 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x26e55184 } +function { + id: 0x9b35e16b + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x2696c21b +} function { id: 0x9b37fa13 return_type_id: 0x6720d32f @@ -310779,6 +316273,13 @@ function { parameter_id: 0x1aeeade4 parameter_id: 0x1a5d0549 } +function { + id: 0x9b52c397 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x3c692b7e + parameter_id: 0x33756485 +} function { id: 0x9b5377a8 return_type_id: 0x6720d32f @@ -310793,6 +316294,14 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x11cfee5a } +function { + id: 0x9b54acf0 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x3ee88c45 + parameter_id: 0x03ce74cd + parameter_id: 0x11cfee5a +} function { id: 0x9b54b215 return_type_id: 0x6720d32f @@ -311023,6 +316532,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x1b8590a8 } +function { + id: 0x9b626ff1 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x33756485 +} function { id: 0x9b63bb96 return_type_id: 0x6720d32f @@ -311053,6 +316568,13 @@ function { parameter_id: 0x17047654 parameter_id: 0xc9082b19 } +function { + id: 0x9b6602ad + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x33756485 + parameter_id: 0x11b57133 +} function { id: 0x9b660b2c return_type_id: 0x6720d32f @@ -311142,6 +316664,12 @@ function { parameter_id: 0x3e10b518 parameter_id: 0xf435685e } +function { + id: 0x9b6b31b5 + return_type_id: 0xf435685e + parameter_id: 0x3e10b518 + parameter_id: 0xf435685e +} function { id: 0x9b6b9392 return_type_id: 0x6720d32f @@ -311202,6 +316730,13 @@ function { parameter_id: 0x019e2530 parameter_id: 0x11cfee5a } +function { + id: 0x9b6eb2a8 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x33756485 + parameter_id: 0x33756485 +} function { id: 0x9b6eb620 return_type_id: 0x6720d32f @@ -311228,6 +316763,14 @@ function { parameter_id: 0xc9082b19 parameter_id: 0x17b3f4e8 } +function { + id: 0x9b723218 + return_type_id: 0x2a670b41 + parameter_id: 0x3b04bead + parameter_id: 0xc9082b19 + parameter_id: 0x3e10b518 + parameter_id: 0x1c3dbe5a +} function { id: 0x9b7237ea return_type_id: 0x2a670b41 @@ -311426,6 +316969,13 @@ function { parameter_id: 0x6720d32f parameter_id: 0xfc0e1dbd } +function { + id: 0x9b7ba7c5 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x33756485 + parameter_id: 0x6720d32f +} function { id: 0x9b7bfb3b return_type_id: 0x6720d32f @@ -311508,6 +317058,17 @@ function { parameter_id: 0x1c3dbe5a parameter_id: 0x038de60c } +function { + id: 0x9b858538 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x0a63398f + parameter_id: 0x0a63398f + parameter_id: 0x4585663f + parameter_id: 0xf1a6dfed + parameter_id: 0x4585663f + parameter_id: 0x6720d32f +} function { id: 0x9b859556 return_type_id: 0x6720d32f @@ -311573,6 +317134,13 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x0a134144 } +function { + id: 0x9b883042 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x0622699d + parameter_id: 0xfc0e1dbd +} function { id: 0x9b89da18 return_type_id: 0x6720d32f @@ -311666,6 +317234,15 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x30c17c17 } +function { + id: 0x9b91dcee + return_type_id: 0x6720d32f + parameter_id: 0x1b8590a8 + parameter_id: 0x351641b0 + parameter_id: 0x92233392 + parameter_id: 0x2e18f543 + parameter_id: 0xc9082b19 +} function { id: 0x9b922d94 return_type_id: 0x6720d32f @@ -311697,6 +317274,12 @@ function { parameter_id: 0x2a670b41 parameter_id: 0x0db25a6d } +function { + id: 0x9b94dad5 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x0ed82db2 +} function { id: 0x9b957b56 return_type_id: 0x6720d32f @@ -311834,6 +317417,27 @@ function { parameter_id: 0x02a8d0c9 parameter_id: 0x1d19a9d5 } +function { + id: 0x9ba26d2b + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x02a8d0c9 + parameter_id: 0x1f8dbf97 + parameter_id: 0x24373219 + parameter_id: 0x1d6b5d95 + parameter_id: 0x3e6239e1 + parameter_id: 0x6d7f5ff6 + parameter_id: 0x11cfee5a +} +function { + id: 0x9ba26d9c + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x02a8d0c9 + parameter_id: 0x1f8dbf97 + parameter_id: 0x24373219 + parameter_id: 0x1c3dbe5a +} function { id: 0x9ba2e939 return_type_id: 0x6720d32f @@ -311847,12 +317451,30 @@ function { parameter_id: 0x09d25c5b parameter_id: 0x07f5d8a3 } +function { + id: 0x9ba346af + return_type_id: 0x6720d32f + parameter_id: 0x1b55a8f2 + parameter_id: 0x3e10b518 + parameter_id: 0x3e75499e + parameter_id: 0x4585663f + parameter_id: 0x18bd6530 +} function { id: 0x9ba39408 return_type_id: 0x6720d32f parameter_id: 0x18bd6530 parameter_id: 0x030b9acf } +function { + id: 0x9ba3940a + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x054f691a + parameter_id: 0x6720d32f + parameter_id: 0x32a623d7 + parameter_id: 0x4585663f +} function { id: 0x9ba399e4 return_type_id: 0x6720d32f @@ -312256,11 +317878,24 @@ function { parameter_id: 0x33756485 parameter_id: 0x33756485 } +function { + id: 0x9bba572a + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x0622699d + parameter_id: 0x3593bec8 +} function { id: 0x9bba7997 return_type_id: 0x6720d32f parameter_id: 0x18ea6ae3 } +function { + id: 0x9bba87c7 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x054f691a +} function { id: 0x9bbb9163 return_type_id: 0x6720d32f @@ -312324,6 +317959,13 @@ function { parameter_id: 0x3f949c69 parameter_id: 0x13580d6c } +function { + id: 0x9bbe37da + return_type_id: 0x6720d32f + parameter_id: 0x1b8590a8 + parameter_id: 0x3667e19e + parameter_id: 0x18bd6530 +} function { id: 0x9bbe6322 return_type_id: 0x6720d32f @@ -312596,6 +318238,14 @@ function { parameter_id: 0x1bf16028 parameter_id: 0x370ed8aa } +function { + id: 0x9bcdfb6a + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1bf16028 + parameter_id: 0x370ed8aa + parameter_id: 0x11cfee5a +} function { id: 0x9bcfc1f5 return_type_id: 0x6720d32f @@ -312608,6 +318258,14 @@ function { parameter_id: 0x1b2ca025 parameter_id: 0x21003da7 } +function { + id: 0x9bd01103 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1d19a9d5 + parameter_id: 0x2e029f76 + parameter_id: 0x13580d6c +} function { id: 0x9bd01b5c return_type_id: 0x6720d32f @@ -312616,6 +318274,12 @@ function { parameter_id: 0x2e029f76 parameter_id: 0x11cfee5a } +function { + id: 0x9bd09cc2 + return_type_id: 0x6720d32f + parameter_id: 0x1d19a9d5 + parameter_id: 0x4585663f +} function { id: 0x9bd130b8 return_type_id: 0x6720d32f @@ -312707,6 +318371,16 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x3332797f } +function { + id: 0x9bd44256 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1d19a9d5 + parameter_id: 0x38bffa98 + parameter_id: 0x6d7f5ff6 + parameter_id: 0x13580d6c + parameter_id: 0x11cfee5a +} function { id: 0x9bd444ea return_type_id: 0x6720d32f @@ -312931,6 +318605,14 @@ function { parameter_id: 0x1c3dbe5a parameter_id: 0x1c898f28 } +function { + id: 0x9bd8639c + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1f8dbf97 + parameter_id: 0x24373219 + parameter_id: 0x38b368bf +} function { id: 0x9bd88151 return_type_id: 0x6720d32f @@ -312989,6 +318671,12 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x0b3476b2 } +function { + id: 0x9bdaaaaa + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1d44326e +} function { id: 0x9bdad4db return_type_id: 0x6720d32f @@ -313088,6 +318776,14 @@ function { parameter_id: 0x1d19a9d5 parameter_id: 0x13580d6c } +function { + id: 0x9bdcdd91 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1d19a9d5 + parameter_id: 0x1d19a9d5 + parameter_id: 0x11cfee5a +} function { id: 0x9bdcf60d return_type_id: 0x6720d32f @@ -313099,6 +318795,11 @@ function { parameter_id: 0x4585663f parameter_id: 0x6d7f5ff6 } +function { + id: 0x9bdd1a71 + return_type_id: 0x6720d32f + parameter_id: 0x1977e57b +} function { id: 0x9bdd30f1 return_type_id: 0x6720d32f @@ -313136,6 +318837,14 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x141e84b4 } +function { + id: 0x9bddb3a2 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1d19a9d5 + parameter_id: 0x18a16691 + parameter_id: 0x11cfee5a +} function { id: 0x9bddb929 return_type_id: 0x6720d32f @@ -313201,6 +318910,14 @@ function { parameter_id: 0x1d19a9d5 parameter_id: 0x13580d6c } +function { + id: 0x9bdf4df8 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1d19a9d5 + parameter_id: 0x13580d6c + parameter_id: 0x11cfee5a +} function { id: 0x9bdfa419 return_type_id: 0x6720d32f @@ -313354,6 +319071,14 @@ function { parameter_id: 0x92233392 parameter_id: 0x92233392 } +function { + id: 0x9bec16df + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x10de2fab + parameter_id: 0x02a8d0c9 + parameter_id: 0x1f8dbf97 +} function { id: 0x9bee7944 return_type_id: 0x6720d32f @@ -313385,6 +319110,13 @@ function { return_type_id: 0x6720d32f parameter_id: 0x19c40476 } +function { + id: 0x9bf23070 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x11b57133 + parameter_id: 0x6d7f5ff6 +} function { id: 0x9bf37946 return_type_id: 0x6720d32f @@ -313400,6 +319132,16 @@ function { parameter_id: 0x0a134144 parameter_id: 0x13580d6c } +function { + id: 0x9bf4cdf9 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1582ab06 + parameter_id: 0x33756485 + parameter_id: 0x6720d32f + parameter_id: 0xf1a6dfed + parameter_id: 0x2170d06d +} function { id: 0x9bf6c118 return_type_id: 0x6720d32f @@ -313682,6 +319424,14 @@ function { return_type_id: 0x6720d32f parameter_id: 0x06835e9c } +function { + id: 0x9c22a570 + return_type_id: 0x6720d32f + parameter_id: 0x0292b875 + parameter_id: 0x4585663f + parameter_id: 0x4585663f + parameter_id: 0x6720d32f +} function { id: 0x9c24e4e1 return_type_id: 0x6720d32f @@ -314455,6 +320205,12 @@ function { parameter_id: 0x04b193cc parameter_id: 0x06ef24ac } +function { + id: 0x9cb7a3ee + return_type_id: 0x6720d32f + parameter_id: 0x0f78474f + parameter_id: 0xba5444a6 +} function { id: 0x9cb7cef1 return_type_id: 0x6720d32f @@ -315210,6 +320966,12 @@ function { parameter_id: 0x01c5a749 parameter_id: 0x30600191 } +function { + id: 0x9d30566e + return_type_id: 0x6720d32f + parameter_id: 0x026c3dea + parameter_id: 0x0aee8ed6 +} function { id: 0x9d30fa23 return_type_id: 0x6720d32f @@ -315436,6 +321198,12 @@ function { parameter_id: 0x2f73da3b parameter_id: 0x6720d32f } +function { + id: 0x9d4713e6 + return_type_id: 0x6720d32f + parameter_id: 0x034b35b4 + parameter_id: 0x054f691a +} function { id: 0x9d475de3 return_type_id: 0x6720d32f @@ -315761,6 +321529,13 @@ function { parameter_id: 0x1bb6a471 parameter_id: 0x368ec5cb } +function { + id: 0x9d760cc4 + return_type_id: 0x6720d32f + parameter_id: 0x0357d2dd + parameter_id: 0x0b27dc43 + parameter_id: 0x3e10b518 +} function { id: 0x9d763af9 return_type_id: 0x6720d32f @@ -316013,6 +321788,12 @@ function { parameter_id: 0xc700b957 parameter_id: 0x07dcdbe1 } +function { + id: 0x9da46876 + return_type_id: 0x6720d32f + parameter_id: 0x01e0b0cf + parameter_id: 0x1729da91 +} function { id: 0x9da4bde5 return_type_id: 0x6720d32f @@ -316097,6 +321878,11 @@ function { parameter_id: 0x295c7202 parameter_id: 0x4585663f } +function { + id: 0x9db75c24 + return_type_id: 0x6720d32f + parameter_id: 0x00defc2c +} function { id: 0x9db78784 return_type_id: 0x6720d32f @@ -316606,6 +322392,12 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x0c45539b } +function { + id: 0x9de1e6d5 + return_type_id: 0x6720d32f + parameter_id: 0x0258f96e + parameter_id: 0x3dcee85d +} function { id: 0x9de31a69 return_type_id: 0x6720d32f @@ -316825,6 +322617,14 @@ function { return_type_id: 0x6720d32f parameter_id: 0x01f1fcec } +function { + id: 0x9dfe4183 + return_type_id: 0x6720d32f + parameter_id: 0x0c2e195c + parameter_id: 0xd0b3a203 + parameter_id: 0xd0b3a203 + parameter_id: 0xf1a6dfed +} function { id: 0x9dfe427d return_type_id: 0x6720d32f @@ -316937,6 +322737,11 @@ function { parameter_id: 0x0cf3d8fe parameter_id: 0x2ec35650 } +function { + id: 0x9e08a6b2 + return_type_id: 0x6720d32f + parameter_id: 0x0e211675 +} function { id: 0x9e08dfbb return_type_id: 0x6720d32f @@ -317042,6 +322847,14 @@ function { parameter_id: 0x120540d1 parameter_id: 0x0b756bd6 } +function { + id: 0x9e20f17d + return_type_id: 0x6720d32f + parameter_id: 0x0fabaf3b + parameter_id: 0x120540d1 + parameter_id: 0x0b756bd6 + parameter_id: 0x0c715d8d +} function { id: 0x9e215925 return_type_id: 0x6720d32f @@ -317327,6 +323140,28 @@ function { return_type_id: 0x6720d32f parameter_id: 0x0f78474f } +function { + id: 0x9e5fde3c + return_type_id: 0x6720d32f + parameter_id: 0x0dc9e98b + parameter_id: 0x295c7202 + parameter_id: 0x295c7202 + parameter_id: 0x914dbfdc + parameter_id: 0x914dbfdc + parameter_id: 0x391f15ea + parameter_id: 0x914dbfdc +} +function { + id: 0x9e5fdeba + return_type_id: 0x6720d32f + parameter_id: 0x0dc9e98b + parameter_id: 0x295c7202 + parameter_id: 0x295c7202 + parameter_id: 0x914dbfdc + parameter_id: 0x914dbfdc + parameter_id: 0x18bd6530 + parameter_id: 0x914dbfdc +} function { id: 0x9e609ac2 return_type_id: 0x6720d32f @@ -317364,6 +323199,12 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x07dcdbe1 } +function { + id: 0x9e65fffe + return_type_id: 0x6720d32f + parameter_id: 0x09e67e75 + parameter_id: 0x6720d32f +} function { id: 0x9e663e24 return_type_id: 0x6720d32f @@ -317371,6 +323212,12 @@ function { parameter_id: 0x33b77109 parameter_id: 0x0277bf8a } +function { + id: 0x9e67eade + return_type_id: 0x6720d32f + parameter_id: 0x0ca27481 + parameter_id: 0x33e53462 +} function { id: 0x9e68eb19 return_type_id: 0x6720d32f @@ -317433,6 +323280,13 @@ function { parameter_id: 0x366f4294 parameter_id: 0x0e656e5d } +function { + id: 0x9e6f0e68 + return_type_id: 0x6720d32f + parameter_id: 0x09e67e75 + parameter_id: 0x6720d32f + parameter_id: 0x2bc65a97 +} function { id: 0x9e711486 return_type_id: 0x6720d32f @@ -317499,6 +323353,20 @@ function { parameter_id: 0x07dcdbe1 parameter_id: 0x0aa1f0ee } +function { + id: 0x9e7bd8f3 + return_type_id: 0x6720d32f + parameter_id: 0x05c2a3ca + parameter_id: 0xa2e4cbbb +} +function { + id: 0x9e7d48ad + return_type_id: 0x6720d32f + parameter_id: 0x0dc9e98b + parameter_id: 0x21069feb + parameter_id: 0x295c7202 + parameter_id: 0x6720d32f +} function { id: 0x9e7f936c return_type_id: 0x6720d32f @@ -317583,6 +323451,13 @@ function { parameter_id: 0x057af395 parameter_id: 0xc9082b19 } +function { + id: 0x9e9034ea + return_type_id: 0x6720d32f + parameter_id: 0x0dfb7909 + parameter_id: 0x1df06cce + parameter_id: 0x6720d32f +} function { id: 0x9e917c22 return_type_id: 0x6720d32f @@ -317681,6 +323556,12 @@ function { parameter_id: 0x3a40dd6c parameter_id: 0x07dcdbe1 } +function { + id: 0x9eb7f57a + return_type_id: 0x6720d32f + parameter_id: 0x0e211675 + parameter_id: 0x2fd4f232 +} function { id: 0x9eb8629a return_type_id: 0x6720d32f @@ -318088,6 +323969,14 @@ function { parameter_id: 0x054f691a parameter_id: 0xf435685e } +function { + id: 0x9f043139 + return_type_id: 0x6720d32f + parameter_id: 0x08bd7371 + parameter_id: 0x27a7c613 + parameter_id: 0xd5cc9c9a + parameter_id: 0x18bd6530 +} function { id: 0x9f04337e return_type_id: 0x6720d32f @@ -318206,6 +324095,13 @@ function { parameter_id: 0x097315c2 parameter_id: 0x3e10b518 } +function { + id: 0x9f248ea4 + return_type_id: 0x6720d32f + parameter_id: 0x0945c216 + parameter_id: 0x391f15ea + parameter_id: 0x4585663f +} function { id: 0x9f25dc29 return_type_id: 0x6720d32f @@ -318667,6 +324563,16 @@ function { parameter_id: 0x5d8155a5 parameter_id: 0x6720d32f } +function { + id: 0x9f85a1ff + return_type_id: 0x6720d32f + parameter_id: 0x0de4c6b1 + parameter_id: 0x5d8155a5 + parameter_id: 0x2669d715 + parameter_id: 0xf435685e + parameter_id: 0xfa5f37bb + parameter_id: 0x87463428 +} function { id: 0x9f87b817 return_type_id: 0x6720d32f @@ -319095,6 +325001,11 @@ function { id: 0x9fd15b99 return_type_id: 0x11c404ba } +function { + id: 0x9fd193aa + return_type_id: 0x6720d32f + parameter_id: 0x0945c216 +} function { id: 0x9fd1a709 return_type_id: 0x6720d32f @@ -319725,6 +325636,11 @@ function { parameter_id: 0x32a623d7 parameter_id: 0x2584a3b9 } +function { + id: 0xa7436d37 + return_type_id: 0x2d77f22a + parameter_id: 0x2f24a589 +} function { id: 0xa780332f return_type_id: 0x6720d32f @@ -319759,6 +325675,12 @@ function { parameter_id: 0x391f15ea parameter_id: 0x2dec91ef } +function { + id: 0xa7ea77a4 + return_type_id: 0xfc0e1dbd + parameter_id: 0x00c83ba6 + parameter_id: 0x3e10b518 +} function { id: 0xa7f54c85 return_type_id: 0xfc0e1dbd @@ -319818,6 +325740,16 @@ function { parameter_id: 0x01d3d77e parameter_id: 0x6720d32f } +function { + id: 0xa8ae6b7a + return_type_id: 0xfc0e1dbd + parameter_id: 0x3df0a7d3 + parameter_id: 0x33756485 + parameter_id: 0xfc0e1dbd + parameter_id: 0x2b23aa9d + parameter_id: 0x0cbf60eb + parameter_id: 0x28eb23d4 +} function { id: 0xa8d53dcc return_type_id: 0x1253769c @@ -319877,6 +325809,13 @@ function { parameter_id: 0x4585663f parameter_id: 0xf1a6dfed } +function { + id: 0xaa27b09c + return_type_id: 0x0e211675 + parameter_id: 0x0258f96e + parameter_id: 0x3e10b518 + parameter_id: 0x6720d32f +} function { id: 0xaa55ab2e return_type_id: 0x31b5a66f @@ -319901,6 +325840,12 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x3e10b518 } +function { + id: 0xaa9ceb0d + return_type_id: 0x0e211675 + parameter_id: 0x0258f96e + parameter_id: 0x16b45c7f +} function { id: 0xaa9fab30 return_type_id: 0x3dcee85d @@ -320238,6 +326183,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0xb0ddb211 } +function { + id: 0xb28c48b5 + return_type_id: 0x067c4b9a + parameter_id: 0x358ff5b7 + parameter_id: 0x31b5a66f +} function { id: 0xb2be15b9 return_type_id: 0x6720d32f @@ -320268,6 +326219,13 @@ function { parameter_id: 0x315b7e01 parameter_id: 0x358ff5b7 } +function { + id: 0xb3cfd554 + return_type_id: 0x067c4b9a + parameter_id: 0x358ff5b7 + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f +} function { id: 0xb3df35fa return_type_id: 0x06835e9c @@ -320301,6 +326259,12 @@ function { parameter_id: 0x11e6864c parameter_id: 0xf017819f } +function { + id: 0xb55dce02 + return_type_id: 0x160ba102 + parameter_id: 0x0f12d1e7 + parameter_id: 0x6720d32f +} function { id: 0xb649ac13 return_type_id: 0x067c4b9a @@ -320326,6 +326290,14 @@ function { parameter_id: 0x33756485 parameter_id: 0xf1a6dfed } +function { + id: 0xb82f817c + return_type_id: 0x06835e9c + parameter_id: 0x1582ab06 + parameter_id: 0x33756485 + parameter_id: 0x6720d32f + parameter_id: 0xf1a6dfed +} function { id: 0xb8307855 return_type_id: 0x06835e9c @@ -320334,6 +326306,12 @@ function { parameter_id: 0x1650be92 parameter_id: 0x18ea6ae3 } +function { + id: 0xb8358fd3 + return_type_id: 0x06835e9c + parameter_id: 0x1582ab06 + parameter_id: 0x33756485 +} function { id: 0xb87b745c return_type_id: 0x06835e9c @@ -320408,6 +326386,12 @@ function { parameter_id: 0x1908b154 parameter_id: 0x6d7f5ff6 } +function { + id: 0xb98ee524 + return_type_id: 0x399c459b + parameter_id: 0x399c459b + parameter_id: 0x1b8590a8 +} function { id: 0xb996d78c return_type_id: 0xc4cf348e @@ -320420,6 +326404,15 @@ function { parameter_id: 0x14b9453b parameter_id: 0x33756485 } +function { + id: 0xb9f52377 + return_type_id: 0x6720d32f + parameter_id: 0x92233392 + parameter_id: 0x3c417e01 + parameter_id: 0x33756485 + parameter_id: 0x33756485 + parameter_id: 0x6720d32f +} function { id: 0xba11bc6a return_type_id: 0x06835e9c @@ -320436,6 +326429,14 @@ function { parameter_id: 0x1344d43c parameter_id: 0xf1a6dfed } +function { + id: 0xba97bb1d + return_type_id: 0x6720d32f + parameter_id: 0x9565759f + parameter_id: 0x9565759f + parameter_id: 0x6d7f5ff6 + parameter_id: 0x33d50b40 +} function { id: 0xbb40a305 return_type_id: 0x6720d32f @@ -320805,6 +326806,11 @@ function { parameter_id: 0x310ec01d parameter_id: 0x310ec01d } +function { + id: 0xc272f60e + return_type_id: 0x4585663f + parameter_id: 0x32a623d7 +} function { id: 0xc29f6b92 return_type_id: 0x3b399f9e @@ -321230,6 +327236,11 @@ function { parameter_id: 0x6720d32f parameter_id: 0x6720d32f } +function { + id: 0xcc8a0e7e + return_type_id: 0x4585663f + parameter_id: 0x0945c216 +} function { id: 0xcc9736e7 return_type_id: 0x65d74a06 @@ -321268,6 +327279,11 @@ function { parameter_id: 0x37f227e9 parameter_id: 0x6720d32f } +function { + id: 0xcd844708 + return_type_id: 0x4585663f + parameter_id: 0x0d7ce7cc +} function { id: 0xcd8cb8f5 return_type_id: 0x4585663f @@ -321446,6 +327462,15 @@ function { parameter_id: 0x019e2530 parameter_id: 0x4585663f } +function { + id: 0xcfac76b5 + return_type_id: 0x4585663f + parameter_id: 0x04810ecd + parameter_id: 0x1582ab06 + parameter_id: 0x064d6086 + parameter_id: 0x33756485 + parameter_id: 0x7f7172c7 +} function { id: 0xcfc2716e return_type_id: 0x6d7f5ff6 @@ -321644,6 +327669,11 @@ function { return_type_id: 0x02eb105a parameter_id: 0x3e10b518 } +function { + id: 0xd9bb2b92 + return_type_id: 0x4585663f + parameter_id: 0x5d8155a5 +} function { id: 0xd9de6af9 return_type_id: 0x1e93567a @@ -321914,6 +327944,15 @@ function { parameter_id: 0x18a2fb63 parameter_id: 0x4585663f } +function { + id: 0xe10f9802 + return_type_id: 0x2eab5b8a + parameter_id: 0x0de4c6b1 + parameter_id: 0xfa5f37bb + parameter_id: 0x4585663f + parameter_id: 0x4585663f + parameter_id: 0x4585663f +} function { id: 0xe12a6d4e return_type_id: 0x07450c2a @@ -321942,6 +327981,11 @@ function { parameter_id: 0x2df43e6f parameter_id: 0x187ed209 } +function { + id: 0xe2abbe2e + return_type_id: 0x1b55a8f2 + parameter_id: 0x347303b4 +} function { id: 0xe2c8401b return_type_id: 0x3ea2e6c1 @@ -322515,6 +328559,13 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x00c72527 } +function { + id: 0xf12845f8 + return_type_id: 0x32a623d7 + parameter_id: 0x32a623d7 + parameter_id: 0x7584e7da + parameter_id: 0x914dbfdc +} function { id: 0xf1329f23 return_type_id: 0x6d7f5ff6 @@ -322736,6 +328787,17 @@ function { parameter_id: 0x1b55a8f2 parameter_id: 0x4585663f } +function { + id: 0xf2708109 + return_type_id: 0x32a623d7 + parameter_id: 0x380c33d1 +} +function { + id: 0xf272e262 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x31b5a66f + parameter_id: 0x2ef43f67 +} function { id: 0xf275a972 return_type_id: 0x6d7f5ff6 @@ -322760,6 +328822,14 @@ function { return_type_id: 0x26e55184 parameter_id: 0x3e10b518 } +function { + id: 0xf2d3e848 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x324e7f0f + parameter_id: 0x3bcd0c02 + parameter_id: 0x2de928d9 + parameter_id: 0x18bd6530 +} function { id: 0xf2d73ac2 return_type_id: 0x6d7f5ff6 @@ -322848,6 +328918,15 @@ function { return_type_id: 0x6d7f5ff6 parameter_id: 0x36194830 } +function { + id: 0xf3248c4f + return_type_id: 0x6d7f5ff6 + parameter_id: 0x35f8cea5 + parameter_id: 0x3bcd0c02 + parameter_id: 0x4585663f + parameter_id: 0x2de928d9 + parameter_id: 0x18bd6530 +} function { id: 0xf334abb2 return_type_id: 0x6d7f5ff6 @@ -322979,6 +329058,11 @@ function { parameter_id: 0xd0b3a203 parameter_id: 0xd0b3a203 } +function { + id: 0xf3f7a0bb + return_type_id: 0x32a623d7 + parameter_id: 0x3e10b518 +} function { id: 0xf44fff9f return_type_id: 0x6d7f5ff6 @@ -323164,6 +329248,12 @@ function { parameter_id: 0x235889e8 parameter_id: 0x3654c061 } +function { + id: 0xf6be4a6e + return_type_id: 0x6d7f5ff6 + parameter_id: 0x20007040 + parameter_id: 0x06835e9c +} function { id: 0xf6c0819f return_type_id: 0x6d7f5ff6 @@ -323353,6 +329443,12 @@ function { parameter_id: 0x1a61f607 parameter_id: 0x39a83127 } +function { + id: 0xf8e4b6f7 + return_type_id: 0x172847a8 + parameter_id: 0x18bd6530 + parameter_id: 0x6720d32f +} function { id: 0xf8fa1a38 return_type_id: 0x6d7f5ff6 @@ -323403,6 +329499,12 @@ function { return_type_id: 0x6d7f5ff6 parameter_id: 0x1d25f132 } +function { + id: 0xf9f0c251 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x1b8590a8 + parameter_id: 0x6d7f5ff6 +} function { id: 0xf9f5579f return_type_id: 0x6d7f5ff6 @@ -323750,6 +329852,13 @@ function { parameter_id: 0x0258f96e parameter_id: 0xe5b69de1 } +function { + id: 0xfdb03c5c + return_type_id: 0x6d7f5ff6 + parameter_id: 0x0fabaf3b + parameter_id: 0x39d1288c + parameter_id: 0x6720d32f +} function { id: 0xfdb2dd0c return_type_id: 0x6d7f5ff6 @@ -324077,6 +330186,24 @@ elf_symbol { type_id: 0x95e66878 full_name: "___ratelimit" } +elf_symbol { + id: 0x98179c82 + name: "___update_load_avg" + is_defined: true + symbol_type: FUNCTION + crc: 0xc8b1b72f + type_id: 0x1f45db81 + full_name: "___update_load_avg" +} +elf_symbol { + id: 0xfa979d99 + name: "___update_load_sum" + is_defined: true + symbol_type: FUNCTION + crc: 0xd667f721 + type_id: 0xb9f52377 + full_name: "___update_load_sum" +} elf_symbol { id: 0x6e1bc82e name: "__alloc_pages" @@ -324173,6 +330300,24 @@ elf_symbol { type_id: 0x1b18f64e full_name: "__balance_callbacks" } +elf_symbol { + id: 0xac51df48 + name: "__bforget" + is_defined: true + symbol_type: FUNCTION + crc: 0x364b830b + type_id: 0x16c5a8cd + full_name: "__bforget" +} +elf_symbol { + id: 0x2c42b675 + name: "__bh_read_batch" + is_defined: true + symbol_type: FUNCTION + crc: 0xa59bae72 + type_id: 0x097c3ebf + full_name: "__bh_read_batch" +} elf_symbol { id: 0x8920b575 name: "__bitmap_and" @@ -324371,6 +330516,42 @@ elf_symbol { type_id: 0x56fc975d full_name: "__blkg_prfill_u64" } +elf_symbol { + id: 0x2d1c1f2d + name: "__blockdev_direct_IO" + is_defined: true + symbol_type: FUNCTION + crc: 0x02673f92 + type_id: 0x16b316ef + full_name: "__blockdev_direct_IO" +} +elf_symbol { + id: 0x9bed4545 + name: "__bread_gfp" + is_defined: true + symbol_type: FUNCTION + crc: 0xe44aece3 + type_id: 0x65d68df5 + full_name: "__bread_gfp" +} +elf_symbol { + id: 0xefdcf4c1 + name: "__breadahead" + is_defined: true + symbol_type: FUNCTION + crc: 0x6b1f432a + type_id: 0x10c07815 + full_name: "__breadahead" +} +elf_symbol { + id: 0x2f449b9e + name: "__brelse" + is_defined: true + symbol_type: FUNCTION + crc: 0x40b1280f + type_id: 0x16c5a8cd + full_name: "__brelse" +} elf_symbol { id: 0x2057d4fc name: "__check_object_size" @@ -324983,6 +331164,15 @@ elf_symbol { type_id: 0x1c25e791 full_name: "__drm_atomic_helper_crtc_reset" } +elf_symbol { + id: 0xa061e45d + name: "__drm_atomic_helper_disable_plane" + is_defined: true + symbol_type: FUNCTION + crc: 0x3695d680 + type_id: 0x9bf37946 + full_name: "__drm_atomic_helper_disable_plane" +} elf_symbol { id: 0xec903c93 name: "__drm_atomic_helper_plane_destroy_state" @@ -325244,6 +331434,15 @@ elf_symbol { type_id: 0x20cd94dc full_name: "__fdget" } +elf_symbol { + id: 0x6036d483 + name: "__filemap_set_wb_err" + is_defined: true + symbol_type: FUNCTION + crc: 0xf59ce848 + type_id: 0x1464781e + full_name: "__filemap_set_wb_err" +} elf_symbol { id: 0xaf8ee687 name: "__find_nth_bit" @@ -325262,6 +331461,24 @@ elf_symbol { type_id: 0x14667c52 full_name: "__flush_workqueue" } +elf_symbol { + id: 0x6a92cb2d + name: "__folio_alloc" + is_defined: true + symbol_type: FUNCTION + crc: 0xfcda658e + type_id: 0x61257a20 + full_name: "__folio_alloc" +} +elf_symbol { + id: 0x6fc34fdb + name: "__folio_cancel_dirty" + is_defined: true + symbol_type: FUNCTION + crc: 0x6b54d941 + type_id: 0x18c46588 + full_name: "__folio_cancel_dirty" +} elf_symbol { id: 0x47a334c4 name: "__folio_lock" @@ -325406,6 +331623,15 @@ elf_symbol { type_id: 0x98878fd8 full_name: "__hci_cmd_sync_status_sk" } +elf_symbol { + id: 0xb3d97fa3 + name: "__hid_register_driver" + is_defined: true + symbol_type: FUNCTION + crc: 0xe11057d9 + type_id: 0x9d760cc4 + full_name: "__hid_register_driver" +} elf_symbol { id: 0xf245d4a3 name: "__hrtimer_get_remaining" @@ -325550,6 +331776,15 @@ elf_symbol { type_id: 0x15acd3b0 full_name: "__init_waitqueue_head" } +elf_symbol { + id: 0xd02fc75b + name: "__insert_inode_hash" + is_defined: true + symbol_type: FUNCTION + crc: 0x25021594 + type_id: 0x16b4e02b + full_name: "__insert_inode_hash" +} elf_symbol { id: 0xe97034af name: "__ioread32_copy" @@ -325857,6 +332092,15 @@ elf_symbol { type_id: 0x16c5a8cd full_name: "__lock_buffer" } +elf_symbol { + id: 0x0b9d6bbc + name: "__mark_inode_dirty" + is_defined: true + symbol_type: FUNCTION + crc: 0x2370c1c0 + type_id: 0x17e5b6f5 + full_name: "__mark_inode_dirty" +} elf_symbol { id: 0x040ec563 name: "__mdiobus_read" @@ -326001,6 +332245,24 @@ elf_symbol { type_id: 0x1655e07b full_name: "__mmdrop" } +elf_symbol { + id: 0x68d1b187 + name: "__mod_lruvec_state" + is_defined: true + symbol_type: FUNCTION + crc: 0x0ab46d8d + type_id: 0x1e768676 + full_name: "__mod_lruvec_state" +} +elf_symbol { + id: 0x9de4c040 + name: "__mod_zone_page_state" + is_defined: true + symbol_type: FUNCTION + crc: 0x0683f992 + type_id: 0x11584934 + full_name: "__mod_zone_page_state" +} elf_symbol { id: 0x89d01efd name: "__module_get" @@ -326577,6 +332839,15 @@ elf_symbol { type_id: 0x1c3ba516 full_name: "__release_region" } +elf_symbol { + id: 0x9d948fe1 + name: "__remove_inode_hash" + is_defined: true + symbol_type: FUNCTION + crc: 0x152cf8f0 + type_id: 0x167935b9 + full_name: "__remove_inode_hash" +} elf_symbol { id: 0xf7c2da07 name: "__request_module" @@ -326640,6 +332911,15 @@ elf_symbol { type_id: 0x1dbb54c5 full_name: "__rt_mutex_init" } +elf_symbol { + id: 0x31b4eed9 + name: "__rtnl_link_unregister" + is_defined: true + symbol_type: FUNCTION + crc: 0x139f3c01 + type_id: 0x1cd366b4 + full_name: "__rtnl_link_unregister" +} elf_symbol { id: 0x99aa632e name: "__sbitmap_queue_get" @@ -326739,6 +333019,24 @@ elf_symbol { type_id: 0x1009f18b full_name: "__serio_register_port" } +elf_symbol { + id: 0xa2cf1eee + name: "__set_page_dirty_nobuffers" + is_defined: true + symbol_type: FUNCTION + crc: 0x924fff08 + type_id: 0x9c203488 + full_name: "__set_page_dirty_nobuffers" +} +elf_symbol { + id: 0xeaddb422 + name: "__set_page_owner" + is_defined: true + symbol_type: FUNCTION + crc: 0xe501529f + type_id: 0x12201786 + full_name: "__set_page_owner" +} elf_symbol { id: 0x29a11d8a name: "__sg_page_iter_dma_next" @@ -326982,6 +333280,15 @@ elf_symbol { type_id: 0xdfba2774 full_name: "__sw_hweight8" } +elf_symbol { + id: 0xd8a7d75e + name: "__sync_dirty_buffer" + is_defined: true + symbol_type: FUNCTION + crc: 0xc6ed2a41 + type_id: 0x9a308be1 + full_name: "__sync_dirty_buffer" +} elf_symbol { id: 0x04e4f57e name: "__sysfs_match_string" @@ -327099,6 +333406,15 @@ elf_symbol { type_id: 0x9ba7ef87 full_name: "__traceiter_android_rvh_arm64_serror_panic" } +elf_symbol { + id: 0x6d4cc1a2 + name: "__traceiter_android_rvh_attach_entity_load_avg" + is_defined: true + symbol_type: FUNCTION + crc: 0xb9a0b097 + type_id: 0x9b96d02c + full_name: "__traceiter_android_rvh_attach_entity_load_avg" +} elf_symbol { id: 0x48420da9 name: "__traceiter_android_rvh_audio_usb_offload_disconnect" @@ -327135,6 +333451,15 @@ elf_symbol { type_id: 0x9bc25990 full_name: "__traceiter_android_rvh_can_migrate_task" } +elf_symbol { + id: 0xbbd04d50 + name: "__traceiter_android_rvh_cgroup_force_kthread_migration" + is_defined: true + symbol_type: FUNCTION + crc: 0x94b3e68f + type_id: 0x9bddb3a2 + full_name: "__traceiter_android_rvh_cgroup_force_kthread_migration" +} elf_symbol { id: 0xc93c7d6d name: "__traceiter_android_rvh_check_preempt_tick" @@ -327252,6 +333577,15 @@ elf_symbol { type_id: 0x9b116af7 full_name: "__traceiter_android_rvh_dequeue_task_fair" } +elf_symbol { + id: 0xa0a77bb8 + name: "__traceiter_android_rvh_detach_entity_load_avg" + is_defined: true + symbol_type: FUNCTION + crc: 0x477c169e + type_id: 0x9b96d02c + full_name: "__traceiter_android_rvh_detach_entity_load_avg" +} elf_symbol { id: 0xa3b41867 name: "__traceiter_android_rvh_die_kernel_fault" @@ -327486,6 +333820,24 @@ elf_symbol { type_id: 0x9b8019c6 full_name: "__traceiter_android_rvh_iommu_setup_dma_ops" } +elf_symbol { + id: 0xfc83b254 + name: "__traceiter_android_rvh_irqs_disable" + is_defined: true + symbol_type: FUNCTION + crc: 0x707d1f10 + type_id: 0x9b6eb2a8 + full_name: "__traceiter_android_rvh_irqs_disable" +} +elf_symbol { + id: 0x7e99bc71 + name: "__traceiter_android_rvh_irqs_enable" + is_defined: true + symbol_type: FUNCTION + crc: 0x7a345722 + type_id: 0x9b6eb2a8 + full_name: "__traceiter_android_rvh_irqs_enable" +} elf_symbol { id: 0x7c212080 name: "__traceiter_android_rvh_is_cpu_allowed" @@ -327576,6 +333928,24 @@ elf_symbol { type_id: 0x9b8f15f1 full_name: "__traceiter_android_rvh_post_init_entity_util_avg" } +elf_symbol { + id: 0x167fc668 + name: "__traceiter_android_rvh_preempt_disable" + is_defined: true + symbol_type: FUNCTION + crc: 0x1585c762 + type_id: 0x9b6eb2a8 + full_name: "__traceiter_android_rvh_preempt_disable" +} +elf_symbol { + id: 0xd6a514f5 + name: "__traceiter_android_rvh_preempt_enable" + is_defined: true + symbol_type: FUNCTION + crc: 0x3235e37a + type_id: 0x9b6eb2a8 + full_name: "__traceiter_android_rvh_preempt_enable" +} elf_symbol { id: 0xeccbc3c1 name: "__traceiter_android_rvh_prepare_prio_fork" @@ -327612,6 +333982,15 @@ elf_symbol { type_id: 0x9a1a471c full_name: "__traceiter_android_rvh_refrigerator" } +elf_symbol { + id: 0xc191b2f6 + name: "__traceiter_android_rvh_remove_entity_load_avg" + is_defined: true + symbol_type: FUNCTION + crc: 0x4a7a0801 + type_id: 0x9b96d02c + full_name: "__traceiter_android_rvh_remove_entity_load_avg" +} elf_symbol { id: 0xe3e24295 name: "__traceiter_android_rvh_replace_next_task_fair" @@ -327891,6 +334270,15 @@ elf_symbol { type_id: 0x9bc07fe3 full_name: "__traceiter_android_rvh_set_gfp_zone_flags" } +elf_symbol { + id: 0x9c2c2d71 + name: "__traceiter_android_rvh_set_iowait" + is_defined: true + symbol_type: FUNCTION + crc: 0xd1ed6c7e + type_id: 0x9bd01103 + full_name: "__traceiter_android_rvh_set_iowait" +} elf_symbol { id: 0xcac6b03d name: "__traceiter_android_rvh_set_module_core_rw_nx" @@ -327981,6 +334369,24 @@ elf_symbol { type_id: 0x9baf3eaf full_name: "__traceiter_android_rvh_show_max_freq" } +elf_symbol { + id: 0x955e6fc1 + name: "__traceiter_android_rvh_sk_alloc" + is_defined: true + symbol_type: FUNCTION + crc: 0x25e47a00 + type_id: 0x9bdaaaaa + full_name: "__traceiter_android_rvh_sk_alloc" +} +elf_symbol { + id: 0xfe20c6e3 + name: "__traceiter_android_rvh_sk_free" + is_defined: true + symbol_type: FUNCTION + crc: 0xd0de15c8 + type_id: 0x9bdaaaaa + full_name: "__traceiter_android_rvh_sk_free" +} elf_symbol { id: 0x7b07c7f1 name: "__traceiter_android_rvh_tick_entry" @@ -328035,6 +334441,15 @@ elf_symbol { type_id: 0x9bca85c1 full_name: "__traceiter_android_rvh_uclamp_eff_get" } +elf_symbol { + id: 0xa63eb82a + name: "__traceiter_android_rvh_update_blocked_fair" + is_defined: true + symbol_type: FUNCTION + crc: 0x0484f45c + type_id: 0x9b17b01e + full_name: "__traceiter_android_rvh_update_blocked_fair" +} elf_symbol { id: 0xcd824552 name: "__traceiter_android_rvh_update_cpu_capacity" @@ -328044,6 +334459,15 @@ elf_symbol { type_id: 0x9a32aa77 full_name: "__traceiter_android_rvh_update_cpu_capacity" } +elf_symbol { + id: 0xb6d1fa25 + name: "__traceiter_android_rvh_update_load_avg" + is_defined: true + symbol_type: FUNCTION + crc: 0xa1719b21 + type_id: 0x99e4a009 + full_name: "__traceiter_android_rvh_update_load_avg" +} elf_symbol { id: 0x16809a5a name: "__traceiter_android_rvh_update_misfit_status" @@ -328053,6 +334477,15 @@ elf_symbol { type_id: 0x9bd01b5c full_name: "__traceiter_android_rvh_update_misfit_status" } +elf_symbol { + id: 0xfaa2e0a4 + name: "__traceiter_android_rvh_update_rt_rq_load_avg" + is_defined: true + symbol_type: FUNCTION + crc: 0x4748df7a + type_id: 0x99ecdba4 + full_name: "__traceiter_android_rvh_update_rt_rq_load_avg" +} elf_symbol { id: 0xc1ba0eb6 name: "__traceiter_android_rvh_update_thermal_stats" @@ -328098,6 +334531,24 @@ elf_symbol { type_id: 0x9bd1d928 full_name: "__traceiter_android_vh_account_task_time" } +elf_symbol { + id: 0xf71b3e6c + name: "__traceiter_android_vh_adjust_alloc_flags" + is_defined: true + symbol_type: FUNCTION + crc: 0x63961554 + type_id: 0x9ab41198 + full_name: "__traceiter_android_vh_adjust_alloc_flags" +} +elf_symbol { + id: 0xd0b4a794 + name: "__traceiter_android_vh_alloc_oem_binder_struct" + is_defined: true + symbol_type: FUNCTION + crc: 0x72653196 + type_id: 0x9bec16df + full_name: "__traceiter_android_vh_alloc_oem_binder_struct" +} elf_symbol { id: 0x33f9278c name: "__traceiter_android_vh_alloc_pages_failure_bypass" @@ -328116,6 +334567,15 @@ elf_symbol { type_id: 0x98716c4f full_name: "__traceiter_android_vh_alloc_pages_reclaim_bypass" } +elf_symbol { + id: 0xa6e329cd + name: "__traceiter_android_vh_alloc_pages_slowpath" + is_defined: true + symbol_type: FUNCTION + crc: 0xd7a24d94 + type_id: 0x98788d90 + full_name: "__traceiter_android_vh_alloc_pages_slowpath" +} elf_symbol { id: 0x9c240ef1 name: "__traceiter_android_vh_alloc_uid" @@ -328188,6 +334648,15 @@ elf_symbol { type_id: 0x9bdcd3ab full_name: "__traceiter_android_vh_binder_del_ref" } +elf_symbol { + id: 0xcb807696 + name: "__traceiter_android_vh_binder_free_buf" + is_defined: true + symbol_type: FUNCTION + crc: 0x71365aee + type_id: 0x9bd8639c + full_name: "__traceiter_android_vh_binder_free_buf" +} elf_symbol { id: 0xbebf7d98 name: "__traceiter_android_vh_binder_free_proc" @@ -328314,6 +334783,15 @@ elf_symbol { type_id: 0x9ba25f4a full_name: "__traceiter_android_vh_binder_set_priority" } +elf_symbol { + id: 0x6bce867e + name: "__traceiter_android_vh_binder_special_task" + is_defined: true + symbol_type: FUNCTION + crc: 0x93949f33 + type_id: 0x9ba26d2b + full_name: "__traceiter_android_vh_binder_special_task" +} elf_symbol { id: 0x4785a3dd name: "__traceiter_android_vh_binder_thread_read" @@ -328350,6 +334828,15 @@ elf_symbol { type_id: 0x9ba51920 full_name: "__traceiter_android_vh_binder_transaction_init" } +elf_symbol { + id: 0xcc2edef9 + name: "__traceiter_android_vh_binder_transaction_received" + is_defined: true + symbol_type: FUNCTION + crc: 0xffec96fd + type_id: 0x9ba26d9c + full_name: "__traceiter_android_vh_binder_transaction_received" +} elf_symbol { id: 0x61c82fb5 name: "__traceiter_android_vh_binder_wait_for_work" @@ -328377,6 +334864,15 @@ elf_symbol { type_id: 0x9a1a471c full_name: "__traceiter_android_vh_build_sched_domains" } +elf_symbol { + id: 0x31a78b8a + name: "__traceiter_android_vh_bus_iommu_probe" + is_defined: true + symbol_type: FUNCTION + crc: 0x61426ce9 + type_id: 0x9b54acf0 + full_name: "__traceiter_android_vh_bus_iommu_probe" +} elf_symbol { id: 0xa9225bf8 name: "__traceiter_android_vh_cgroup_attach" @@ -328467,6 +334963,24 @@ elf_symbol { type_id: 0x9b63bb96 full_name: "__traceiter_android_vh_cleanup_old_buffers_bypass" } +elf_symbol { + id: 0xa4527895 + name: "__traceiter_android_vh_compaction_exit" + is_defined: true + symbol_type: FUNCTION + crc: 0x5de850c2 + type_id: 0x9a2b6d98 + full_name: "__traceiter_android_vh_compaction_exit" +} +elf_symbol { + id: 0x3644fdcd + name: "__traceiter_android_vh_compaction_try_to_compact_pages_exit" + is_defined: true + symbol_type: FUNCTION + crc: 0xcca408f4 + type_id: 0x9b35e16b + full_name: "__traceiter_android_vh_compaction_try_to_compact_pages_exit" +} elf_symbol { id: 0x9247dcb1 name: "__traceiter_android_vh_cpu_idle_enter" @@ -328611,6 +335125,15 @@ elf_symbol { type_id: 0x9bdc9aae full_name: "__traceiter_android_vh_dup_task_struct" } +elf_symbol { + id: 0x02c8f91b + name: "__traceiter_android_vh_early_resume_begin" + is_defined: true + symbol_type: FUNCTION + crc: 0xc6021d79 + type_id: 0x9bcd4ff7 + full_name: "__traceiter_android_vh_early_resume_begin" +} elf_symbol { id: 0xdcaa59a3 name: "__traceiter_android_vh_enable_thermal_genl_check" @@ -328638,6 +335161,15 @@ elf_symbol { type_id: 0x9bcd4ff7 full_name: "__traceiter_android_vh_encrypt_page" } +elf_symbol { + id: 0x1921d10d + name: "__traceiter_android_vh_exit_check" + is_defined: true + symbol_type: FUNCTION + crc: 0x73fa852b + type_id: 0x9bdbdcc4 + full_name: "__traceiter_android_vh_exit_check" +} elf_symbol { id: 0x1f554c2a name: "__traceiter_android_vh_exit_signal" @@ -328647,6 +335179,15 @@ elf_symbol { type_id: 0x9bdbdcc4 full_name: "__traceiter_android_vh_exit_signal" } +elf_symbol { + id: 0x343adff1 + name: "__traceiter_android_vh_exit_signal_whether_wake" + is_defined: true + symbol_type: FUNCTION + crc: 0x003a6b81 + type_id: 0x9bdfaf3f + full_name: "__traceiter_android_vh_exit_signal_whether_wake" +} elf_symbol { id: 0x93a4717b name: "__traceiter_android_vh_file_is_tiny_bypass" @@ -328656,6 +335197,24 @@ elf_symbol { type_id: 0x9a1e34e7 full_name: "__traceiter_android_vh_file_is_tiny_bypass" } +elf_symbol { + id: 0x49c69e22 + name: "__traceiter_android_vh_filemap_get_folio" + is_defined: true + symbol_type: FUNCTION + crc: 0x5498a15c + type_id: 0x9bf4cdf9 + full_name: "__traceiter_android_vh_filemap_get_folio" +} +elf_symbol { + id: 0x9e91661b + name: "__traceiter_android_vh_free_oem_binder_struct" + is_defined: true + symbol_type: FUNCTION + crc: 0xe3c92b7e + type_id: 0x9ba51920 + full_name: "__traceiter_android_vh_free_oem_binder_struct" +} elf_symbol { id: 0xc189c2a7 name: "__traceiter_android_vh_free_one_page_bypass" @@ -328683,6 +335242,15 @@ elf_symbol { type_id: 0x9bcfc1f5 full_name: "__traceiter_android_vh_free_user" } +elf_symbol { + id: 0x4d354aab + name: "__traceiter_android_vh_freeze_whether_wake" + is_defined: true + symbol_type: FUNCTION + crc: 0xefd9d739 + type_id: 0x9bdfaf3f + full_name: "__traceiter_android_vh_freeze_whether_wake" +} elf_symbol { id: 0x3272ce60 name: "__traceiter_android_vh_freq_qos_add_request" @@ -328917,6 +335485,15 @@ elf_symbol { type_id: 0x9bcd4ff7 full_name: "__traceiter_android_vh_jiffies_update" } +elf_symbol { + id: 0xe261e8cc + name: "__traceiter_android_vh_killed_process" + is_defined: true + symbol_type: FUNCTION + crc: 0x593713f5 + type_id: 0x9bdcdd91 + full_name: "__traceiter_android_vh_killed_process" +} elf_symbol { id: 0x18fde973 name: "__traceiter_android_vh_kswapd_per_node" @@ -329043,6 +335620,51 @@ elf_symbol { type_id: 0x9bb62df9 full_name: "__traceiter_android_vh_meminfo_proc_show" } +elf_symbol { + id: 0x295c28cd + name: "__traceiter_android_vh_mm_alloc_pages_direct_reclaim_enter" + is_defined: true + symbol_type: FUNCTION + crc: 0xe4da6100 + type_id: 0x9ab9affb + full_name: "__traceiter_android_vh_mm_alloc_pages_direct_reclaim_enter" +} +elf_symbol { + id: 0x10e93e46 + name: "__traceiter_android_vh_mm_alloc_pages_direct_reclaim_exit" + is_defined: true + symbol_type: FUNCTION + crc: 0x61d4882e + type_id: 0x9b7ba7c5 + full_name: "__traceiter_android_vh_mm_alloc_pages_direct_reclaim_exit" +} +elf_symbol { + id: 0x49cebcae + name: "__traceiter_android_vh_mm_alloc_pages_may_oom_exit" + is_defined: true + symbol_type: FUNCTION + crc: 0x91a9d265 + type_id: 0x9b52c397 + full_name: "__traceiter_android_vh_mm_alloc_pages_may_oom_exit" +} +elf_symbol { + id: 0x22de652b + name: "__traceiter_android_vh_mm_compaction_begin" + is_defined: true + symbol_type: FUNCTION + crc: 0x2bf4d10b + type_id: 0x9bba572a + full_name: "__traceiter_android_vh_mm_compaction_begin" +} +elf_symbol { + id: 0xf928bf8a + name: "__traceiter_android_vh_mm_compaction_end" + is_defined: true + symbol_type: FUNCTION + crc: 0x3c1880a8 + type_id: 0x9b883042 + full_name: "__traceiter_android_vh_mm_compaction_end" +} elf_symbol { id: 0xe44dacb1 name: "__traceiter_android_vh_mmap_region" @@ -329169,6 +335791,15 @@ elf_symbol { type_id: 0x9bb7fe1c full_name: "__traceiter_android_vh_page_add_new_anon_rmap" } +elf_symbol { + id: 0xd14f3adb + name: "__traceiter_android_vh_percpu_rwsem_wq_add" + is_defined: true + symbol_type: FUNCTION + crc: 0xf0301f63 + type_id: 0x9bf23070 + full_name: "__traceiter_android_vh_percpu_rwsem_wq_add" +} elf_symbol { id: 0x5983841b name: "__traceiter_android_vh_post_image_save" @@ -329187,6 +335818,24 @@ elf_symbol { type_id: 0x9be2da56 full_name: "__traceiter_android_vh_printk_hotplug" } +elf_symbol { + id: 0xeba1d6c7 + name: "__traceiter_android_vh_prio_inheritance" + is_defined: true + symbol_type: FUNCTION + crc: 0xb36e2321 + type_id: 0x9bdf4df8 + full_name: "__traceiter_android_vh_prio_inheritance" +} +elf_symbol { + id: 0x204c04f7 + name: "__traceiter_android_vh_prio_restore" + is_defined: true + symbol_type: FUNCTION + crc: 0x49df0ca0 + type_id: 0x9a33392f + full_name: "__traceiter_android_vh_prio_restore" +} elf_symbol { id: 0xa09f7a4b name: "__traceiter_android_vh_process_madvise_end" @@ -329241,6 +335890,15 @@ elf_symbol { type_id: 0x9bd7019d full_name: "__traceiter_android_vh_record_pcpu_rwsem_starttime" } +elf_symbol { + id: 0x1a91ec8c + name: "__traceiter_android_vh_record_pcpu_rwsem_time_early" + is_defined: true + symbol_type: FUNCTION + crc: 0xeeef021b + type_id: 0x9b6602ad + full_name: "__traceiter_android_vh_record_pcpu_rwsem_time_early" +} elf_symbol { id: 0x92518ec5 name: "__traceiter_android_vh_record_rtmutex_lock_starttime" @@ -329268,6 +335926,24 @@ elf_symbol { type_id: 0x9b5a0fe0 full_name: "__traceiter_android_vh_regmap_update" } +elf_symbol { + id: 0xf10ce16f + name: "__traceiter_android_vh_resume_end" + is_defined: true + symbol_type: FUNCTION + crc: 0x54c248df + type_id: 0x9bcd4ff7 + full_name: "__traceiter_android_vh_resume_end" +} +elf_symbol { + id: 0xa8cef421 + name: "__traceiter_android_vh_rmqueue" + is_defined: true + symbol_type: FUNCTION + crc: 0xa924452c + type_id: 0x9b858538 + full_name: "__traceiter_android_vh_rmqueue" +} elf_symbol { id: 0x8d62858f name: "__traceiter_android_vh_rmqueue_smallest_bypass" @@ -329439,6 +336115,15 @@ elf_symbol { type_id: 0x9b9f0206 full_name: "__traceiter_android_vh_save_hib_resume_bdev" } +elf_symbol { + id: 0x06c7b387 + name: "__traceiter_android_vh_scan_abort_check_wmarks" + is_defined: true + symbol_type: FUNCTION + crc: 0x48b7d14f + type_id: 0x9be885da + full_name: "__traceiter_android_vh_scan_abort_check_wmarks" +} elf_symbol { id: 0x3a4e20d6 name: "__traceiter_android_vh_sched_pelt_multiplier" @@ -329718,6 +336403,15 @@ elf_symbol { type_id: 0x9b85c291 full_name: "__traceiter_android_vh_tune_scan_type" } +elf_symbol { + id: 0x3947ecb4 + name: "__traceiter_android_vh_tune_swappiness" + is_defined: true + symbol_type: FUNCTION + crc: 0xd2ac8d57 + type_id: 0x9be2da56 + full_name: "__traceiter_android_vh_tune_swappiness" +} elf_symbol { id: 0x8a773cc3 name: "__traceiter_android_vh_typec_store_partner_src_caps" @@ -329754,6 +336448,24 @@ elf_symbol { type_id: 0x9b538b4c full_name: "__traceiter_android_vh_typec_tcpm_log" } +elf_symbol { + id: 0x5ab5402f + name: "__traceiter_android_vh_typec_tcpm_modify_src_caps" + is_defined: true + symbol_type: FUNCTION + crc: 0xd505a0db + type_id: 0x9bcdfb6a + full_name: "__traceiter_android_vh_typec_tcpm_modify_src_caps" +} +elf_symbol { + id: 0xaa213206 + name: "__traceiter_android_vh_uclamp_validate" + is_defined: true + symbol_type: FUNCTION + crc: 0xd05b7a41 + type_id: 0x9bd44256 + full_name: "__traceiter_android_vh_uclamp_validate" +} elf_symbol { id: 0xe31bb308 name: "__traceiter_android_vh_ufs_check_int_errors" @@ -329871,6 +336583,24 @@ elf_symbol { type_id: 0x9bcd4ff7 full_name: "__traceiter_android_vh_update_topology_flags_workfn" } +elf_symbol { + id: 0x08824ed3 + name: "__traceiter_android_vh_use_amu_fie" + is_defined: true + symbol_type: FUNCTION + crc: 0xb22c3cda + type_id: 0x9be885da + full_name: "__traceiter_android_vh_use_amu_fie" +} +elf_symbol { + id: 0xcbec9d66 + name: "__traceiter_android_vh_vmscan_kswapd_done" + is_defined: true + symbol_type: FUNCTION + crc: 0x96191a01 + type_id: 0x9a235f02 + full_name: "__traceiter_android_vh_vmscan_kswapd_done" +} elf_symbol { id: 0xb0bf7fd6 name: "__traceiter_android_vh_watchdog_timer_softlockup" @@ -330033,6 +336763,15 @@ elf_symbol { type_id: 0x9ba39408 full_name: "__traceiter_dma_fence_emit" } +elf_symbol { + id: 0x5e5d9a70 + name: "__traceiter_error_report_end" + is_defined: true + symbol_type: FUNCTION + crc: 0xd29c1f10 + type_id: 0x9a2d8ab0 + full_name: "__traceiter_error_report_end" +} elf_symbol { id: 0x104ffeec name: "__traceiter_gpu_mem_total" @@ -330114,6 +336853,24 @@ elf_symbol { type_id: 0x9bbccaf3 full_name: "__traceiter_kfree_skb" } +elf_symbol { + id: 0xbcec3880 + name: "__traceiter_mm_vmscan_direct_reclaim_begin" + is_defined: true + symbol_type: FUNCTION + crc: 0x803bf202 + type_id: 0x9a0f5098 + full_name: "__traceiter_mm_vmscan_direct_reclaim_begin" +} +elf_symbol { + id: 0xa34c49b3 + name: "__traceiter_mm_vmscan_direct_reclaim_end" + is_defined: true + symbol_type: FUNCTION + crc: 0xf2520b8a + type_id: 0x9b626ff1 + full_name: "__traceiter_mm_vmscan_direct_reclaim_end" +} elf_symbol { id: 0x5c33446d name: "__traceiter_mmap_lock_acquire_returned" @@ -330141,6 +336898,69 @@ elf_symbol { type_id: 0x9bcd50ad full_name: "__traceiter_mmap_lock_start_locking" } +elf_symbol { + id: 0x16d7641f + name: "__traceiter_net_dev_queue" + is_defined: true + symbol_type: FUNCTION + crc: 0x51ca976f + type_id: 0x9bba87c7 + full_name: "__traceiter_net_dev_queue" +} +elf_symbol { + id: 0xc8ec671c + name: "__traceiter_net_dev_xmit" + is_defined: true + symbol_type: FUNCTION + crc: 0x7a8f0110 + type_id: 0x9ba3940a + full_name: "__traceiter_net_dev_xmit" +} +elf_symbol { + id: 0x60c24c4f + name: "__traceiter_netif_receive_skb" + is_defined: true + symbol_type: FUNCTION + crc: 0x6957530d + type_id: 0x9bba87c7 + full_name: "__traceiter_netif_receive_skb" +} +elf_symbol { + id: 0xa7548418 + name: "__traceiter_netif_rx" + is_defined: true + symbol_type: FUNCTION + crc: 0x76d09323 + type_id: 0x9bba87c7 + full_name: "__traceiter_netif_rx" +} +elf_symbol { + id: 0xbbfa35c3 + name: "__traceiter_pelt_cfs_tp" + is_defined: true + symbol_type: FUNCTION + crc: 0x53dcc117 + type_id: 0x9b94dad5 + full_name: "__traceiter_pelt_cfs_tp" +} +elf_symbol { + id: 0x328bf22b + name: "__traceiter_pelt_dl_tp" + is_defined: true + symbol_type: FUNCTION + crc: 0x977e9245 + type_id: 0x9b17b01e + full_name: "__traceiter_pelt_dl_tp" +} +elf_symbol { + id: 0xbdceccc2 + name: "__traceiter_pelt_irq_tp" + is_defined: true + symbol_type: FUNCTION + crc: 0xb26f5140 + type_id: 0x9b17b01e + full_name: "__traceiter_pelt_irq_tp" +} elf_symbol { id: 0x3e69b303 name: "__traceiter_pelt_rt_tp" @@ -330186,6 +337006,15 @@ elf_symbol { type_id: 0x9b6cf0df full_name: "__traceiter_rwmmio_write" } +elf_symbol { + id: 0x1e8ffa55 + name: "__traceiter_sched_cpu_capacity_tp" + is_defined: true + symbol_type: FUNCTION + crc: 0xf30b3e42 + type_id: 0x9b17b01e + full_name: "__traceiter_sched_cpu_capacity_tp" +} elf_symbol { id: 0xb614ca1f name: "__traceiter_sched_overutilized_tp" @@ -330258,6 +337087,33 @@ elf_symbol { type_id: 0x9b0e782a full_name: "__traceiter_sched_update_nr_running_tp" } +elf_symbol { + id: 0x00296361 + name: "__traceiter_sched_util_est_cfs_tp" + is_defined: true + symbol_type: FUNCTION + crc: 0xa50436b4 + type_id: 0x9b94dad5 + full_name: "__traceiter_sched_util_est_cfs_tp" +} +elf_symbol { + id: 0xf574f9d9 + name: "__traceiter_sched_util_est_se_tp" + is_defined: true + symbol_type: FUNCTION + crc: 0xbbb17097 + type_id: 0x9b8f15f1 + full_name: "__traceiter_sched_util_est_se_tp" +} +elf_symbol { + id: 0x8fa66546 + name: "__traceiter_sched_wakeup" + is_defined: true + symbol_type: FUNCTION + crc: 0x9339dcb9 + type_id: 0x9bdbdcc4 + full_name: "__traceiter_sched_wakeup" +} elf_symbol { id: 0x20097074 name: "__traceiter_sched_waking" @@ -330357,6 +337213,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_arm64_serror_panic" } +elf_symbol { + id: 0xc9400cec + name: "__tracepoint_android_rvh_attach_entity_load_avg" + is_defined: true + symbol_type: OBJECT + crc: 0x9476c5e4 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_attach_entity_load_avg" +} elf_symbol { id: 0xaf461bff name: "__tracepoint_android_rvh_audio_usb_offload_disconnect" @@ -330393,6 +337258,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_can_migrate_task" } +elf_symbol { + id: 0xb208306e + name: "__tracepoint_android_rvh_cgroup_force_kthread_migration" + is_defined: true + symbol_type: OBJECT + crc: 0x0c180285 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_cgroup_force_kthread_migration" +} elf_symbol { id: 0x60b5a917 name: "__tracepoint_android_rvh_check_preempt_tick" @@ -330510,6 +337384,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_dequeue_task_fair" } +elf_symbol { + id: 0x5029bb46 + name: "__tracepoint_android_rvh_detach_entity_load_avg" + is_defined: true + symbol_type: OBJECT + crc: 0xb186a022 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_detach_entity_load_avg" +} elf_symbol { id: 0x11f903b1 name: "__tracepoint_android_rvh_die_kernel_fault" @@ -330744,6 +337627,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_iommu_setup_dma_ops" } +elf_symbol { + id: 0x4fd98142 + name: "__tracepoint_android_rvh_irqs_disable" + is_defined: true + symbol_type: OBJECT + crc: 0x44ac9f4b + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_irqs_disable" +} +elf_symbol { + id: 0x695c4baf + name: "__tracepoint_android_rvh_irqs_enable" + is_defined: true + symbol_type: OBJECT + crc: 0xc9d53b36 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_irqs_enable" +} elf_symbol { id: 0x99d57c12 name: "__tracepoint_android_rvh_is_cpu_allowed" @@ -330834,6 +337735,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_post_init_entity_util_avg" } +elf_symbol { + id: 0x817c415a + name: "__tracepoint_android_rvh_preempt_disable" + is_defined: true + symbol_type: OBJECT + crc: 0xb4ec0da4 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_preempt_disable" +} +elf_symbol { + id: 0x3fe8bcd7 + name: "__tracepoint_android_rvh_preempt_enable" + is_defined: true + symbol_type: OBJECT + crc: 0x86d490a6 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_preempt_enable" +} elf_symbol { id: 0x50605d97 name: "__tracepoint_android_rvh_prepare_prio_fork" @@ -330870,6 +337789,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_refrigerator" } +elf_symbol { + id: 0x5ac6bcbc + name: "__tracepoint_android_rvh_remove_entity_load_avg" + is_defined: true + symbol_type: OBJECT + crc: 0x6b69fe2c + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_remove_entity_load_avg" +} elf_symbol { id: 0x18bac297 name: "__tracepoint_android_rvh_replace_next_task_fair" @@ -331149,6 +338077,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_set_gfp_zone_flags" } +elf_symbol { + id: 0xbe9f9d4f + name: "__tracepoint_android_rvh_set_iowait" + is_defined: true + symbol_type: OBJECT + crc: 0x343470a7 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_set_iowait" +} elf_symbol { id: 0xda52fd4f name: "__tracepoint_android_rvh_set_module_core_rw_nx" @@ -331239,6 +338176,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_show_max_freq" } +elf_symbol { + id: 0xad588d93 + name: "__tracepoint_android_rvh_sk_alloc" + is_defined: true + symbol_type: OBJECT + crc: 0xda71608c + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_sk_alloc" +} +elf_symbol { + id: 0x05463d55 + name: "__tracepoint_android_rvh_sk_free" + is_defined: true + symbol_type: OBJECT + crc: 0x06bf13fe + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_sk_free" +} elf_symbol { id: 0x8db62b4f name: "__tracepoint_android_rvh_tick_entry" @@ -331293,6 +338248,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_uclamp_eff_get" } +elf_symbol { + id: 0xc3add2dc + name: "__tracepoint_android_rvh_update_blocked_fair" + is_defined: true + symbol_type: OBJECT + crc: 0x6d3cb3aa + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_update_blocked_fair" +} elf_symbol { id: 0xdc2af26c name: "__tracepoint_android_rvh_update_cpu_capacity" @@ -331302,6 +338266,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_update_cpu_capacity" } +elf_symbol { + id: 0xcc5017b7 + name: "__tracepoint_android_rvh_update_load_avg" + is_defined: true + symbol_type: OBJECT + crc: 0x8ae1dc28 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_update_load_avg" +} elf_symbol { id: 0x1362c5b0 name: "__tracepoint_android_rvh_update_misfit_status" @@ -331311,6 +338284,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_update_misfit_status" } +elf_symbol { + id: 0xaa2da792 + name: "__tracepoint_android_rvh_update_rt_rq_load_avg" + is_defined: true + symbol_type: OBJECT + crc: 0x4bcdd224 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_update_rt_rq_load_avg" +} elf_symbol { id: 0x0e614ab0 name: "__tracepoint_android_rvh_update_thermal_stats" @@ -331356,6 +338338,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_account_task_time" } +elf_symbol { + id: 0x8f23a62a + name: "__tracepoint_android_vh_adjust_alloc_flags" + is_defined: true + symbol_type: OBJECT + crc: 0x762cddf3 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_adjust_alloc_flags" +} +elf_symbol { + id: 0xd7f9868e + name: "__tracepoint_android_vh_alloc_oem_binder_struct" + is_defined: true + symbol_type: OBJECT + crc: 0xf8d28f05 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_alloc_oem_binder_struct" +} elf_symbol { id: 0x37776872 name: "__tracepoint_android_vh_alloc_pages_failure_bypass" @@ -331374,6 +338374,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_alloc_pages_reclaim_bypass" } +elf_symbol { + id: 0x1ebb872f + name: "__tracepoint_android_vh_alloc_pages_slowpath" + is_defined: true + symbol_type: OBJECT + crc: 0x08e2839b + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_alloc_pages_slowpath" +} elf_symbol { id: 0xea695d5b name: "__tracepoint_android_vh_alloc_uid" @@ -331446,6 +338455,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_binder_del_ref" } +elf_symbol { + id: 0x19dded7c + name: "__tracepoint_android_vh_binder_free_buf" + is_defined: true + symbol_type: OBJECT + crc: 0xf64d3ead + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_binder_free_buf" +} elf_symbol { id: 0xf32898c6 name: "__tracepoint_android_vh_binder_free_proc" @@ -331572,6 +338590,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_binder_set_priority" } +elf_symbol { + id: 0xdda667b0 + name: "__tracepoint_android_vh_binder_special_task" + is_defined: true + symbol_type: OBJECT + crc: 0x46cb2346 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_binder_special_task" +} elf_symbol { id: 0x306b5ff7 name: "__tracepoint_android_vh_binder_thread_read" @@ -331608,6 +338635,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_binder_transaction_init" } +elf_symbol { + id: 0xabc729f7 + name: "__tracepoint_android_vh_binder_transaction_received" + is_defined: true + symbol_type: OBJECT + crc: 0x73e426b8 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_binder_transaction_received" +} elf_symbol { id: 0x75b174bb name: "__tracepoint_android_vh_binder_wait_for_work" @@ -331635,6 +338671,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_build_sched_domains" } +elf_symbol { + id: 0x527423dc + name: "__tracepoint_android_vh_bus_iommu_probe" + is_defined: true + symbol_type: OBJECT + crc: 0xa5acc533 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_bus_iommu_probe" +} elf_symbol { id: 0xd3845a12 name: "__tracepoint_android_vh_cgroup_attach" @@ -331725,6 +338770,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_cleanup_old_buffers_bypass" } +elf_symbol { + id: 0x9d49459f + name: "__tracepoint_android_vh_compaction_exit" + is_defined: true + symbol_type: OBJECT + crc: 0x69025433 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_compaction_exit" +} +elf_symbol { + id: 0x759240ef + name: "__tracepoint_android_vh_compaction_try_to_compact_pages_exit" + is_defined: true + symbol_type: OBJECT + crc: 0x85c1c35f + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_compaction_try_to_compact_pages_exit" +} elf_symbol { id: 0x26324a1f name: "__tracepoint_android_vh_cpu_idle_enter" @@ -331869,6 +338932,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_dup_task_struct" } +elf_symbol { + id: 0xe5deb919 + name: "__tracepoint_android_vh_early_resume_begin" + is_defined: true + symbol_type: OBJECT + crc: 0xa960bfb2 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_early_resume_begin" +} elf_symbol { id: 0x54b2cd01 name: "__tracepoint_android_vh_enable_thermal_genl_check" @@ -331896,6 +338968,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_encrypt_page" } +elf_symbol { + id: 0x684e5f4f + name: "__tracepoint_android_vh_exit_check" + is_defined: true + symbol_type: OBJECT + crc: 0x49c49792 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_exit_check" +} elf_symbol { id: 0x0d418d38 name: "__tracepoint_android_vh_exit_signal" @@ -331905,6 +338986,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_exit_signal" } +elf_symbol { + id: 0x2121385f + name: "__tracepoint_android_vh_exit_signal_whether_wake" + is_defined: true + symbol_type: OBJECT + crc: 0xfc31d092 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_exit_signal_whether_wake" +} elf_symbol { id: 0x50a83025 name: "__tracepoint_android_vh_file_is_tiny_bypass" @@ -331914,6 +339004,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_file_is_tiny_bypass" } +elf_symbol { + id: 0x6d970e8c + name: "__tracepoint_android_vh_filemap_get_folio" + is_defined: true + symbol_type: OBJECT + crc: 0xf9adf1c9 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_filemap_get_folio" +} +elf_symbol { + id: 0x901d0e89 + name: "__tracepoint_android_vh_free_oem_binder_struct" + is_defined: true + symbol_type: OBJECT + crc: 0xc924dc00 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_free_oem_binder_struct" +} elf_symbol { id: 0x04a824b5 name: "__tracepoint_android_vh_free_one_page_bypass" @@ -331941,6 +339049,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_free_user" } +elf_symbol { + id: 0x888dea6d + name: "__tracepoint_android_vh_freeze_whether_wake" + is_defined: true + symbol_type: OBJECT + crc: 0x8e4434ef + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_freeze_whether_wake" +} elf_symbol { id: 0xace80c56 name: "__tracepoint_android_vh_freq_qos_add_request" @@ -332175,6 +339292,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_jiffies_update" } +elf_symbol { + id: 0xa48390ca + name: "__tracepoint_android_vh_killed_process" + is_defined: true + symbol_type: OBJECT + crc: 0xe41a7380 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_killed_process" +} elf_symbol { id: 0x586a06d1 name: "__tracepoint_android_vh_kswapd_per_node" @@ -332301,6 +339427,51 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_meminfo_proc_show" } +elf_symbol { + id: 0xce7e7dff + name: "__tracepoint_android_vh_mm_alloc_pages_direct_reclaim_enter" + is_defined: true + symbol_type: OBJECT + crc: 0xa744fbcb + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_mm_alloc_pages_direct_reclaim_enter" +} +elf_symbol { + id: 0x1a1d0854 + name: "__tracepoint_android_vh_mm_alloc_pages_direct_reclaim_exit" + is_defined: true + symbol_type: OBJECT + crc: 0xaf85b82e + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_mm_alloc_pages_direct_reclaim_exit" +} +elf_symbol { + id: 0xf2890610 + name: "__tracepoint_android_vh_mm_alloc_pages_may_oom_exit" + is_defined: true + symbol_type: OBJECT + crc: 0xde5036e1 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_mm_alloc_pages_may_oom_exit" +} +elf_symbol { + id: 0xa3d5f70d + name: "__tracepoint_android_vh_mm_compaction_begin" + is_defined: true + symbol_type: OBJECT + crc: 0x7c7bbcab + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_mm_compaction_begin" +} +elf_symbol { + id: 0x72c79d80 + name: "__tracepoint_android_vh_mm_compaction_end" + is_defined: true + symbol_type: OBJECT + crc: 0x1066ddcb + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_mm_compaction_end" +} elf_symbol { id: 0xb6da564f name: "__tracepoint_android_vh_mmap_region" @@ -332427,6 +339598,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_page_add_new_anon_rmap" } +elf_symbol { + id: 0x3d63616d + name: "__tracepoint_android_vh_percpu_rwsem_wq_add" + is_defined: true + symbol_type: OBJECT + crc: 0x036f4a0a + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_percpu_rwsem_wq_add" +} elf_symbol { id: 0xab37fc55 name: "__tracepoint_android_vh_post_image_save" @@ -332445,6 +339625,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_printk_hotplug" } +elf_symbol { + id: 0x2bfccca9 + name: "__tracepoint_android_vh_prio_inheritance" + is_defined: true + symbol_type: OBJECT + crc: 0x6aa3664b + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_prio_inheritance" +} +elf_symbol { + id: 0x2a85f575 + name: "__tracepoint_android_vh_prio_restore" + is_defined: true + symbol_type: OBJECT + crc: 0xd2f66239 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_prio_restore" +} elf_symbol { id: 0xb194c4c5 name: "__tracepoint_android_vh_process_madvise_end" @@ -332499,6 +339697,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_record_pcpu_rwsem_starttime" } +elf_symbol { + id: 0x158c4cfa + name: "__tracepoint_android_vh_record_pcpu_rwsem_time_early" + is_defined: true + symbol_type: OBJECT + crc: 0xfb2f7ea7 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_record_pcpu_rwsem_time_early" +} elf_symbol { id: 0x4568ff8f name: "__tracepoint_android_vh_record_rtmutex_lock_starttime" @@ -332526,6 +339733,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_regmap_update" } +elf_symbol { + id: 0xd6904c6d + name: "__tracepoint_android_vh_resume_end" + is_defined: true + symbol_type: OBJECT + crc: 0xed1903b3 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_resume_end" +} +elf_symbol { + id: 0xcad24ea3 + name: "__tracepoint_android_vh_rmqueue" + is_defined: true + symbol_type: OBJECT + crc: 0xb8168d02 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_rmqueue" +} elf_symbol { id: 0x04365139 name: "__tracepoint_android_vh_rmqueue_smallest_bypass" @@ -332697,6 +339922,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_save_hib_resume_bdev" } +elf_symbol { + id: 0x8b4c2f61 + name: "__tracepoint_android_vh_scan_abort_check_wmarks" + is_defined: true + symbol_type: OBJECT + crc: 0x814e8595 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_scan_abort_check_wmarks" +} elf_symbol { id: 0xb3b18fc4 name: "__tracepoint_android_vh_sched_pelt_multiplier" @@ -332976,6 +340210,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_tune_scan_type" } +elf_symbol { + id: 0xfe6b6962 + name: "__tracepoint_android_vh_tune_swappiness" + is_defined: true + symbol_type: OBJECT + crc: 0x88fcdb6c + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_tune_swappiness" +} elf_symbol { id: 0x18e67da1 name: "__tracepoint_android_vh_typec_store_partner_src_caps" @@ -333012,6 +340255,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_typec_tcpm_log" } +elf_symbol { + id: 0x1f1a25bd + name: "__tracepoint_android_vh_typec_tcpm_modify_src_caps" + is_defined: true + symbol_type: OBJECT + crc: 0x0c9ea609 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_typec_tcpm_modify_src_caps" +} +elf_symbol { + id: 0xf09ef4d0 + name: "__tracepoint_android_vh_uclamp_validate" + is_defined: true + symbol_type: OBJECT + crc: 0xb9255a9f + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_uclamp_validate" +} elf_symbol { id: 0x609a86da name: "__tracepoint_android_vh_ufs_check_int_errors" @@ -333129,6 +340390,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_update_topology_flags_workfn" } +elf_symbol { + id: 0xe100c3ad + name: "__tracepoint_android_vh_use_amu_fie" + is_defined: true + symbol_type: OBJECT + crc: 0x8ea85bac + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_use_amu_fie" +} +elf_symbol { + id: 0x55476a7c + name: "__tracepoint_android_vh_vmscan_kswapd_done" + is_defined: true + symbol_type: OBJECT + crc: 0x46714dec + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_vmscan_kswapd_done" +} elf_symbol { id: 0x42dbeb24 name: "__tracepoint_android_vh_watchdog_timer_softlockup" @@ -333291,6 +340570,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_dma_fence_emit" } +elf_symbol { + id: 0x3b13741e + name: "__tracepoint_error_report_end" + is_defined: true + symbol_type: OBJECT + crc: 0x0a463293 + type_id: 0x18ccbd2c + full_name: "__tracepoint_error_report_end" +} elf_symbol { id: 0xd8f3ca82 name: "__tracepoint_gpu_mem_total" @@ -333372,6 +340660,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_kfree_skb" } +elf_symbol { + id: 0xa7ceb432 + name: "__tracepoint_mm_vmscan_direct_reclaim_begin" + is_defined: true + symbol_type: OBJECT + crc: 0x000c8744 + type_id: 0x18ccbd2c + full_name: "__tracepoint_mm_vmscan_direct_reclaim_begin" +} +elf_symbol { + id: 0x32564229 + name: "__tracepoint_mm_vmscan_direct_reclaim_end" + is_defined: true + symbol_type: OBJECT + crc: 0xe1130765 + type_id: 0x18ccbd2c + full_name: "__tracepoint_mm_vmscan_direct_reclaim_end" +} elf_symbol { id: 0x88a08d67 name: "__tracepoint_mmap_lock_acquire_returned" @@ -333399,6 +340705,69 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_mmap_lock_start_locking" } +elf_symbol { + id: 0xd21276a5 + name: "__tracepoint_net_dev_queue" + is_defined: true + symbol_type: OBJECT + crc: 0x0f304d20 + type_id: 0x18ccbd2c + full_name: "__tracepoint_net_dev_queue" +} +elf_symbol { + id: 0x4a43bdfe + name: "__tracepoint_net_dev_xmit" + is_defined: true + symbol_type: OBJECT + crc: 0xb1d40474 + type_id: 0x18ccbd2c + full_name: "__tracepoint_net_dev_xmit" +} +elf_symbol { + id: 0xd224caa5 + name: "__tracepoint_netif_receive_skb" + is_defined: true + symbol_type: OBJECT + crc: 0x8ee83e85 + type_id: 0x18ccbd2c + full_name: "__tracepoint_netif_receive_skb" +} +elf_symbol { + id: 0xcbc5fd52 + name: "__tracepoint_netif_rx" + is_defined: true + symbol_type: OBJECT + crc: 0x8aa12be4 + type_id: 0x18ccbd2c + full_name: "__tracepoint_netif_rx" +} +elf_symbol { + id: 0x0ab12991 + name: "__tracepoint_pelt_cfs_tp" + is_defined: true + symbol_type: OBJECT + crc: 0x64f74abf + type_id: 0x18ccbd2c + full_name: "__tracepoint_pelt_cfs_tp" +} +elf_symbol { + id: 0x12df1a91 + name: "__tracepoint_pelt_dl_tp" + is_defined: true + symbol_type: OBJECT + crc: 0x15c60a71 + type_id: 0x18ccbd2c + full_name: "__tracepoint_pelt_dl_tp" +} +elf_symbol { + id: 0x67e2af24 + name: "__tracepoint_pelt_irq_tp" + is_defined: true + symbol_type: OBJECT + crc: 0x2200061c + type_id: 0x18ccbd2c + full_name: "__tracepoint_pelt_irq_tp" +} elf_symbol { id: 0xf3cb5921 name: "__tracepoint_pelt_rt_tp" @@ -333444,6 +340813,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_rwmmio_write" } +elf_symbol { + id: 0x191846a3 + name: "__tracepoint_sched_cpu_capacity_tp" + is_defined: true + symbol_type: OBJECT + crc: 0x3b610584 + type_id: 0x18ccbd2c + full_name: "__tracepoint_sched_cpu_capacity_tp" +} elf_symbol { id: 0x2497fb4d name: "__tracepoint_sched_overutilized_tp" @@ -333516,6 +340894,33 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_sched_update_nr_running_tp" } +elf_symbol { + id: 0x2160e0b7 + name: "__tracepoint_sched_util_est_cfs_tp" + is_defined: true + symbol_type: OBJECT + crc: 0x2c790d4a + type_id: 0x18ccbd2c + full_name: "__tracepoint_sched_util_est_cfs_tp" +} +elf_symbol { + id: 0xf586b3bb + name: "__tracepoint_sched_util_est_se_tp" + is_defined: true + symbol_type: OBJECT + crc: 0x3a74e484 + type_id: 0x18ccbd2c + full_name: "__tracepoint_sched_util_est_se_tp" +} +elf_symbol { + id: 0x97e630b0 + name: "__tracepoint_sched_wakeup" + is_defined: true + symbol_type: OBJECT + crc: 0x69515bbc + type_id: 0x18ccbd2c + full_name: "__tracepoint_sched_wakeup" +} elf_symbol { id: 0xa70e8cd2 name: "__tracepoint_sched_waking" @@ -333660,6 +341065,15 @@ elf_symbol { type_id: 0x20cd94dc full_name: "__usecs_to_jiffies" } +elf_symbol { + id: 0x4c0a941a + name: "__v4l2_ctrl_handler_setup" + is_defined: true + symbol_type: FUNCTION + crc: 0x3ae35349 + type_id: 0x9d1bec55 + full_name: "__v4l2_ctrl_handler_setup" +} elf_symbol { id: 0xfc85c168 name: "__v4l2_ctrl_modify_range" @@ -333732,6 +341146,15 @@ elf_symbol { type_id: 0x9f0d3989 full_name: "__video_register_device" } +elf_symbol { + id: 0x6b7624f1 + name: "__vlan_find_dev_deep_rcu" + is_defined: true + symbol_type: FUNCTION + crc: 0xa50a5b08 + type_id: 0xf12845f8 + full_name: "__vlan_find_dev_deep_rcu" +} elf_symbol { id: 0x97d65f20 name: "__vmalloc" @@ -333840,6 +341263,15 @@ elf_symbol { type_id: 0x97ce5a08 full_name: "__xa_alloc_cyclic" } +elf_symbol { + id: 0x4b52e164 + name: "__xa_erase" + is_defined: true + symbol_type: FUNCTION + crc: 0xe02c9c92 + type_id: 0x5cf34a0d + full_name: "__xa_erase" +} elf_symbol { id: 0xd6e3f912 name: "__xa_insert" @@ -333849,6 +341281,15 @@ elf_symbol { type_id: 0x97e0f111 full_name: "__xa_insert" } +elf_symbol { + id: 0x52069d2d + name: "__xa_store" + is_defined: true + symbol_type: FUNCTION + crc: 0xca9beaa4 + type_id: 0x5cf6a3cf + full_name: "__xa_store" +} elf_symbol { id: 0x640280c1 name: "__xdp_rxq_info_reg" @@ -333867,6 +341308,24 @@ elf_symbol { type_id: 0x10605221 full_name: "__xfrm_state_destroy" } +elf_symbol { + id: 0xda249832 + name: "_bcd2bin" + is_defined: true + symbol_type: FUNCTION + crc: 0xb6936ffe + type_id: 0xd9bb2b92 + full_name: "_bcd2bin" +} +elf_symbol { + id: 0x206fe2ef + name: "_bin2bcd" + is_defined: true + symbol_type: FUNCTION + crc: 0x80ca5026 + type_id: 0xdcb8e234 + full_name: "_bin2bcd" +} elf_symbol { id: 0x5693f2df name: "_copy_from_iter" @@ -334335,6 +341794,15 @@ elf_symbol { type_id: 0x1713ee74 full_name: "_trace_android_vh_record_pcpu_rwsem_starttime" } +elf_symbol { + id: 0x874fa015 + name: "_trace_android_vh_record_pcpu_rwsem_time_early" + is_defined: true + symbol_type: FUNCTION + crc: 0x2ea4d65a + type_id: 0x1c03dd76 + full_name: "_trace_android_vh_record_pcpu_rwsem_time_early" +} elf_symbol { id: 0x86a88093 name: "_vb2_fop_release" @@ -334999,6 +342467,15 @@ elf_symbol { type_id: 0x8448d7e4 full_name: "available_idle_cpu" } +elf_symbol { + id: 0x3eb51b20 + name: "avenrun" + is_defined: true + symbol_type: OBJECT + crc: 0xf1e98c74 + type_id: 0x1e18ac15 + full_name: "avenrun" +} elf_symbol { id: 0xb9c34cbd name: "backlight_device_get_by_type" @@ -335341,6 +342818,15 @@ elf_symbol { type_id: 0x15f0919b full_name: "bio_put" } +elf_symbol { + id: 0xa8878d9e + name: "bio_split" + is_defined: true + symbol_type: FUNCTION + crc: 0x8e0ebb54 + type_id: 0x97a0d8a7 + full_name: "bio_split" +} elf_symbol { id: 0x1cb0de6c name: "bio_start_io_acct" @@ -335350,6 +342836,24 @@ elf_symbol { type_id: 0x34c40d5b full_name: "bio_start_io_acct" } +elf_symbol { + id: 0x5cce4e68 + name: "bioset_exit" + is_defined: true + symbol_type: FUNCTION + crc: 0x8065b338 + type_id: 0x103cff8e + full_name: "bioset_exit" +} +elf_symbol { + id: 0x5c0b88b2 + name: "bioset_init" + is_defined: true + symbol_type: FUNCTION + crc: 0x60fece91 + type_id: 0x9c22a570 + full_name: "bioset_init" +} elf_symbol { id: 0xe0e9f920 name: "bit_wait" @@ -335368,6 +342872,15 @@ elf_symbol { type_id: 0x9ad0bd67 full_name: "bit_wait_timeout" } +elf_symbol { + id: 0x00f38540 + name: "bit_waitqueue" + is_defined: true + symbol_type: FUNCTION + crc: 0xad9901ae + type_id: 0xf8e4b6f7 + full_name: "bit_waitqueue" +} elf_symbol { id: 0x181f78de name: "bitmap_alloc" @@ -335494,6 +343007,15 @@ elf_symbol { type_id: 0xfc093226 full_name: "blk_bio_list_merge" } +elf_symbol { + id: 0x650319ec + name: "blk_check_plugged" + is_defined: true + symbol_type: FUNCTION + crc: 0xd27b25dd + type_id: 0x66cc4765 + full_name: "blk_check_plugged" +} elf_symbol { id: 0x4ffac461 name: "blk_crypto_keyslot_index" @@ -335539,6 +343061,15 @@ elf_symbol { type_id: 0x168d2c88 full_name: "blk_execute_rq_nowait" } +elf_symbol { + id: 0x9eda4f26 + name: "blk_fill_rwbs" + is_defined: true + symbol_type: FUNCTION + crc: 0x2bd8a8bb + type_id: 0x105539bd + full_name: "blk_fill_rwbs" +} elf_symbol { id: 0xc0d4821a name: "blk_finish_plug" @@ -336241,6 +343772,15 @@ elf_symbol { type_id: 0x26cc0900 full_name: "blkdev_get_by_path" } +elf_symbol { + id: 0x4d722bb5 + name: "blkdev_issue_discard" + is_defined: true + symbol_type: FUNCTION + crc: 0x992b458f + type_id: 0x9dfe4183 + full_name: "blkdev_issue_discard" +} elf_symbol { id: 0x2a322266 name: "blkdev_issue_flush" @@ -336313,6 +343853,33 @@ elf_symbol { type_id: 0x104d4296 full_name: "blkg_rwstat_recursive_sum" } +elf_symbol { + id: 0xd289c43d + name: "block_dirty_folio" + is_defined: true + symbol_type: FUNCTION + crc: 0x77ada257 + type_id: 0xfb413284 + full_name: "block_dirty_folio" +} +elf_symbol { + id: 0x6efa206d + name: "block_invalidate_folio" + is_defined: true + symbol_type: FUNCTION + crc: 0x3045fd1d + type_id: 0x1b29bd73 + full_name: "block_invalidate_folio" +} +elf_symbol { + id: 0x5cf37146 + name: "block_is_partially_uptodate" + is_defined: true + symbol_type: FUNCTION + crc: 0x5e5d36ff + type_id: 0xf515b7e4 + full_name: "block_is_partially_uptodate" +} elf_symbol { id: 0x427cedc9 name: "blockdev_superblock" @@ -336880,6 +344447,15 @@ elf_symbol { type_id: 0x9a22976b full_name: "btbcm_write_pcm_int_params" } +elf_symbol { + id: 0x6bb6d4ca + name: "buffer_migrate_folio" + is_defined: true + symbol_type: FUNCTION + crc: 0x697d2102 + type_id: 0x986ccce1 + full_name: "buffer_migrate_folio" +} elf_symbol { id: 0x8ea00f54 name: "build_skb" @@ -337337,6 +344913,78 @@ elf_symbol { type_id: 0xe76c6fcf full_name: "capable" } +elf_symbol { + id: 0x61aaf300 + name: "capable_wrt_inode_uidgid" + is_defined: true + symbol_type: FUNCTION + crc: 0xaa02669a + type_id: 0xfdb03c5c + full_name: "capable_wrt_inode_uidgid" +} +elf_symbol { + id: 0x0d8df2d6 + name: "cdc_ncm_bind_common" + is_defined: true + symbol_type: FUNCTION + crc: 0xa165232f + type_id: 0x9e7d48ad + full_name: "cdc_ncm_bind_common" +} +elf_symbol { + id: 0xbe895b99 + name: "cdc_ncm_change_mtu" + is_defined: true + symbol_type: FUNCTION + crc: 0xe9dd0df4 + type_id: 0x90b5e896 + full_name: "cdc_ncm_change_mtu" +} +elf_symbol { + id: 0x438a802b + name: "cdc_ncm_fill_tx_frame" + is_defined: true + symbol_type: FUNCTION + crc: 0x3e5e696a + type_id: 0x6bfb947b + full_name: "cdc_ncm_fill_tx_frame" +} +elf_symbol { + id: 0xe05cfed6 + name: "cdc_ncm_rx_verify_ndp16" + is_defined: true + symbol_type: FUNCTION + crc: 0xbeac75e1 + type_id: 0x9d4fba25 + full_name: "cdc_ncm_rx_verify_ndp16" +} +elf_symbol { + id: 0xb0d627f0 + name: "cdc_ncm_rx_verify_nth16" + is_defined: true + symbol_type: FUNCTION + crc: 0x0c8f8ef8 + type_id: 0x9d4713e6 + full_name: "cdc_ncm_rx_verify_nth16" +} +elf_symbol { + id: 0x3b573ab8 + name: "cdc_ncm_select_altsetting" + is_defined: true + symbol_type: FUNCTION + crc: 0x0bd5ab5f + type_id: 0x5b0b198d + full_name: "cdc_ncm_select_altsetting" +} +elf_symbol { + id: 0xb4ff03eb + name: "cdc_ncm_unbind" + is_defined: true + symbol_type: FUNCTION + crc: 0xb2a5cb89 + type_id: 0x136e318e + full_name: "cdc_ncm_unbind" +} elf_symbol { id: 0xb2bfcc0c name: "cdc_parse_cdc_header" @@ -337400,6 +345048,15 @@ elf_symbol { type_id: 0x17107dc5 full_name: "cdev_init" } +elf_symbol { + id: 0x1ae20002 + name: "ce_aes_expandkey" + is_defined: true + symbol_type: FUNCTION + crc: 0x68f275ad + type_id: 0x982246a7 + full_name: "ce_aes_expandkey" +} elf_symbol { id: 0xc8e5adc6 name: "cec_allocate_adapter" @@ -337481,6 +345138,15 @@ elf_symbol { type_id: 0x158d1ae2 full_name: "cec_notifier_set_phys_addr_from_edid" } +elf_symbol { + id: 0xa383a6c1 + name: "cec_queue_pin_hpd_event" + is_defined: true + symbol_type: FUNCTION + crc: 0xafee3a98 + type_id: 0x1f2853af + full_name: "cec_queue_pin_hpd_event" +} elf_symbol { id: 0x1ff124cb name: "cec_received_msg_ts" @@ -337598,6 +345264,15 @@ elf_symbol { type_id: 0x751b5661 full_name: "cgroup_taskset_next" } +elf_symbol { + id: 0xb7533de5 + name: "cgroup_threadgroup_rwsem" + is_defined: true + symbol_type: OBJECT + crc: 0x4e1c73cb + type_id: 0x6c952252 + full_name: "cgroup_threadgroup_rwsem" +} elf_symbol { id: 0x7a871d1c name: "check_move_unevictable_pages" @@ -337715,6 +345390,15 @@ elf_symbol { type_id: 0x1a0b4b72 full_name: "class_unregister" } +elf_symbol { + id: 0xb242a940 + name: "clean_bdev_aliases" + is_defined: true + symbol_type: FUNCTION + crc: 0xa36f5732 + type_id: 0x10e535a4 + full_name: "clean_bdev_aliases" +} elf_symbol { id: 0xd156aa2c name: "cleancache_register_ops" @@ -337733,6 +345417,15 @@ elf_symbol { type_id: 0x187ab05b full_name: "cleanup_srcu_struct" } +elf_symbol { + id: 0xfa95bdc1 + name: "clear_inode" + is_defined: true + symbol_type: FUNCTION + crc: 0x89b4e8c0 + type_id: 0x167935b9 + full_name: "clear_inode" +} elf_symbol { id: 0xb63845e5 name: "clear_page" @@ -337740,6 +345433,15 @@ elf_symbol { symbol_type: FUNCTION crc: 0x3d9ee9f0 } +elf_symbol { + id: 0x52eaa51b + name: "clear_page_dirty_for_io" + is_defined: true + symbol_type: FUNCTION + crc: 0x20bc8096 + type_id: 0xff048ca3 + full_name: "clear_page_dirty_for_io" +} elf_symbol { id: 0x5332f89b name: "clk_bulk_disable" @@ -337857,6 +345559,15 @@ elf_symbol { type_id: 0xde3bc780 full_name: "clk_fixed_rate_ops" } +elf_symbol { + id: 0xf42e28c4 + name: "clk_fractional_divider_general_approximation" + is_defined: true + symbol_type: FUNCTION + crc: 0xc8861ced + type_id: 0x12ed274e + full_name: "clk_fractional_divider_general_approximation" +} elf_symbol { id: 0x8a96e88d name: "clk_fractional_divider_ops" @@ -337902,6 +345613,15 @@ elf_symbol { type_id: 0xa96c5286 full_name: "clk_get_parent" } +elf_symbol { + id: 0x04880ada + name: "clk_get_phase" + is_defined: true + symbol_type: FUNCTION + crc: 0x1c5ff742 + type_id: 0x92f35938 + full_name: "clk_get_phase" +} elf_symbol { id: 0x25ef9f7a name: "clk_get_rate" @@ -338073,6 +345793,15 @@ elf_symbol { type_id: 0x12217922 full_name: "clk_hw_unregister" } +elf_symbol { + id: 0x91507af8 + name: "clk_hw_unregister_composite" + is_defined: true + symbol_type: FUNCTION + crc: 0xa5812f72 + type_id: 0x12217922 + full_name: "clk_hw_unregister_composite" +} elf_symbol { id: 0xd2c17be4 name: "clk_is_match" @@ -338253,6 +345982,15 @@ elf_symbol { type_id: 0x92046299 full_name: "clk_set_parent" } +elf_symbol { + id: 0x98850f9d + name: "clk_set_phase" + is_defined: true + symbol_type: FUNCTION + crc: 0xb7329c06 + type_id: 0x936fda74 + full_name: "clk_set_phase" +} elf_symbol { id: 0x495f0223 name: "clk_set_rate" @@ -338379,6 +346117,15 @@ elf_symbol { type_id: 0xfa5a390c full_name: "cma_release" } +elf_symbol { + id: 0xfb23b117 + name: "compat_only_sysfs_link_entry_to_kobj" + is_defined: true + symbol_type: FUNCTION + crc: 0x256e3ace + type_id: 0x95fc7a3d + full_name: "compat_only_sysfs_link_entry_to_kobj" +} elf_symbol { id: 0x4f627b39 name: "compat_ptr_ioctl" @@ -338442,6 +346189,15 @@ elf_symbol { type_id: 0x9d7428e0 full_name: "component_bind_all" } +elf_symbol { + id: 0x9901e8ee + name: "component_compare_dev" + is_defined: true + symbol_type: FUNCTION + crc: 0x0b549846 + type_id: 0x9d7428e0 + full_name: "component_compare_dev" +} elf_symbol { id: 0x4bc5faef name: "component_compare_dev_name" @@ -338764,6 +346520,15 @@ elf_symbol { symbol_type: FUNCTION crc: 0x4d0d163d } +elf_symbol { + id: 0x9f1f7cee + name: "copy_page_from_iter_atomic" + is_defined: true + symbol_type: FUNCTION + crc: 0xc8b6f813 + type_id: 0x97b4bbf8 + full_name: "copy_page_from_iter_atomic" +} elf_symbol { id: 0xd89255c2 name: "cpu_all_bits" @@ -338782,6 +346547,15 @@ elf_symbol { type_id: 0xd0d5f663 full_name: "cpu_bit_bitmap" } +elf_symbol { + id: 0x15e1667b + name: "cpu_have_feature" + is_defined: true + symbol_type: FUNCTION + crc: 0x41237f71 + type_id: 0xefc5028b + full_name: "cpu_have_feature" +} elf_symbol { id: 0x33bbeca6 name: "cpu_hotplug_disable" @@ -339385,6 +347159,15 @@ elf_symbol { type_id: 0xc25cf5fc full_name: "cpumask_any_and_distribute" } +elf_symbol { + id: 0xd53a5822 + name: "cpumask_local_spread" + is_defined: true + symbol_type: FUNCTION + crc: 0xc8a91f5b + type_id: 0xde26a438 + full_name: "cpumask_local_spread" +} elf_symbol { id: 0xb1469ae6 name: "cpumask_next_wrap" @@ -339480,6 +347263,15 @@ elf_symbol { type_id: 0x25b94d0a full_name: "crc_ccitt" } +elf_symbol { + id: 0xd5cc5ce2 + name: "create_empty_buffers" + is_defined: true + symbol_type: FUNCTION + crc: 0x9b40f91e + type_id: 0x11f98eff + full_name: "create_empty_buffers" +} elf_symbol { id: 0xc3e46036 name: "create_function_device" @@ -339534,6 +347326,24 @@ elf_symbol { type_id: 0x911583bf full_name: "crypto_ahash_digest" } +elf_symbol { + id: 0xf8751b15 + name: "crypto_ahash_final" + is_defined: true + symbol_type: FUNCTION + crc: 0x1af67977 + type_id: 0x911583bf + full_name: "crypto_ahash_final" +} +elf_symbol { + id: 0xdd9947d5 + name: "crypto_ahash_finup" + is_defined: true + symbol_type: FUNCTION + crc: 0x095c49bc + type_id: 0x911583bf + full_name: "crypto_ahash_finup" +} elf_symbol { id: 0xff08526f name: "crypto_ahash_setkey" @@ -339561,6 +347371,15 @@ elf_symbol { type_id: 0xd40f21a4 full_name: "crypto_alloc_ahash" } +elf_symbol { + id: 0x5d9de9a7 + name: "crypto_alloc_akcipher" + is_defined: true + symbol_type: FUNCTION + crc: 0xdc2b9dfc + type_id: 0x69b2a88c + full_name: "crypto_alloc_akcipher" +} elf_symbol { id: 0x1d1f6717 name: "crypto_alloc_base" @@ -339606,6 +347425,16 @@ elf_symbol { type_id: 0x329319f8 full_name: "crypto_alloc_sync_skcipher" } +elf_symbol { + id: 0xa3db58f1 + name: "crypto_cipher_encrypt_one" + is_defined: true + symbol_type: FUNCTION + crc: 0x1f362def + namespace: "CRYPTO_INTERNAL" + type_id: 0x114c448e + full_name: "crypto_cipher_encrypt_one" +} elf_symbol { id: 0x1257590d name: "crypto_comp_compress" @@ -339750,6 +347579,24 @@ elf_symbol { type_id: 0x9ee20867 full_name: "crypto_register_ahash" } +elf_symbol { + id: 0xc60881ee + name: "crypto_register_akcipher" + is_defined: true + symbol_type: FUNCTION + crc: 0x44f8c5fe + type_id: 0x99df4252 + full_name: "crypto_register_akcipher" +} +elf_symbol { + id: 0xd9005076 + name: "crypto_register_alg" + is_defined: true + symbol_type: FUNCTION + crc: 0x4a1204f0 + type_id: 0x9db75c24 + full_name: "crypto_register_alg" +} elf_symbol { id: 0xcb0ffe5b name: "crypto_register_notifier" @@ -339795,6 +347642,15 @@ elf_symbol { type_id: 0x928f1946 full_name: "crypto_register_skcipher" } +elf_symbol { + id: 0x8e0112d7 + name: "crypto_register_template" + is_defined: true + symbol_type: FUNCTION + crc: 0xf1da2be6 + type_id: 0x9a6e7c60 + full_name: "crypto_register_template" +} elf_symbol { id: 0x0e52d725 name: "crypto_req_done" @@ -339804,6 +347660,24 @@ elf_symbol { type_id: 0x10100c3c full_name: "crypto_req_done" } +elf_symbol { + id: 0x162a73f7 + name: "crypto_sha1_finup" + is_defined: true + symbol_type: FUNCTION + crc: 0xe1737405 + type_id: 0x9fb1dc71 + full_name: "crypto_sha1_finup" +} +elf_symbol { + id: 0x7dcc32e4 + name: "crypto_sha1_update" + is_defined: true + symbol_type: FUNCTION + crc: 0xb7dbc187 + type_id: 0x9fb1df6d + full_name: "crypto_sha1_update" +} elf_symbol { id: 0x91309df9 name: "crypto_shash_digest" @@ -339903,6 +347777,24 @@ elf_symbol { type_id: 0x13fabadb full_name: "crypto_unregister_ahash" } +elf_symbol { + id: 0xdb6ddedf + name: "crypto_unregister_akcipher" + is_defined: true + symbol_type: FUNCTION + crc: 0xbfd52d96 + type_id: 0x14c7f0ee + full_name: "crypto_unregister_akcipher" +} +elf_symbol { + id: 0x883df740 + name: "crypto_unregister_alg" + is_defined: true + symbol_type: FUNCTION + crc: 0xa0dbb600 + type_id: 0x10afee98 + full_name: "crypto_unregister_alg" +} elf_symbol { id: 0x551c18d1 name: "crypto_unregister_notifier" @@ -339948,6 +347840,15 @@ elf_symbol { type_id: 0x1f97abfa full_name: "crypto_unregister_skcipher" } +elf_symbol { + id: 0x801e3d5d + name: "crypto_unregister_template" + is_defined: true + symbol_type: FUNCTION + crc: 0xd6fa098b + type_id: 0x1776cedc + full_name: "crypto_unregister_template" +} elf_symbol { id: 0xd36400de name: "css_next_child" @@ -340020,6 +347921,15 @@ elf_symbol { type_id: 0xb166862a full_name: "current_time" } +elf_symbol { + id: 0x4c090f07 + name: "current_umask" + is_defined: true + symbol_type: FUNCTION + crc: 0x5e95b1cd + type_id: 0x9d80e32f + full_name: "current_umask" +} elf_symbol { id: 0x171eca8a name: "d_add" @@ -340029,6 +347939,15 @@ elf_symbol { type_id: 0x147717e5 full_name: "d_add" } +elf_symbol { + id: 0x82537a82 + name: "d_add_ci" + is_defined: true + symbol_type: FUNCTION + crc: 0x09ad89bb + type_id: 0x889f851e + full_name: "d_add_ci" +} elf_symbol { id: 0x79187969 name: "d_alloc_name" @@ -340038,6 +347957,15 @@ elf_symbol { type_id: 0x8808e1d8 full_name: "d_alloc_name" } +elf_symbol { + id: 0x04f5a6e5 + name: "d_instantiate" + is_defined: true + symbol_type: FUNCTION + crc: 0xff9152a3 + type_id: 0x147717e5 + full_name: "d_instantiate" +} elf_symbol { id: 0x52864a7e name: "d_make_root" @@ -340047,6 +347975,15 @@ elf_symbol { type_id: 0x8a909712 full_name: "d_make_root" } +elf_symbol { + id: 0x8d5ab7b4 + name: "d_obtain_alias" + is_defined: true + symbol_type: FUNCTION + crc: 0x3e22d08f + type_id: 0x8a909712 + full_name: "d_obtain_alias" +} elf_symbol { id: 0xccc25fc1 name: "d_path" @@ -340056,6 +347993,15 @@ elf_symbol { type_id: 0x30964cd5 full_name: "d_path" } +elf_symbol { + id: 0xb96af991 + name: "d_splice_alias" + is_defined: true + symbol_type: FUNCTION + crc: 0x2dc0ecfe + type_id: 0x8ad88211 + full_name: "d_splice_alias" +} elf_symbol { id: 0xb771d13e name: "dapm_clock_event" @@ -340461,6 +348407,15 @@ elf_symbol { type_id: 0x1f15d172 full_name: "delayed_work_timer_fn" } +elf_symbol { + id: 0x1ef313dc + name: "des_expand_key" + is_defined: true + symbol_type: FUNCTION + crc: 0xa8fb743d + type_id: 0x9133c6a6 + full_name: "des_expand_key" +} elf_symbol { id: 0x67daf3cf name: "desc_to_gpio" @@ -340974,6 +348929,15 @@ elf_symbol { type_id: 0x9df535bf full_name: "dev_pm_opp_get_sharing_cpus" } +elf_symbol { + id: 0xe1beb7e3 + name: "dev_pm_opp_get_supplies" + is_defined: true + symbol_type: FUNCTION + crc: 0xa27bcff7 + type_id: 0x9b2efcfe + full_name: "dev_pm_opp_get_supplies" +} elf_symbol { id: 0x0d97ed87 name: "dev_pm_opp_get_suspend_opp_freq" @@ -341397,6 +349361,51 @@ elf_symbol { type_id: 0x11aaf502 full_name: "devfreq_cooling_unregister" } +elf_symbol { + id: 0x349b4e0a + name: "devfreq_event_disable_edev" + is_defined: true + symbol_type: FUNCTION + crc: 0xf7add401 + type_id: 0x9e08a6b2 + full_name: "devfreq_event_disable_edev" +} +elf_symbol { + id: 0x11f117af + name: "devfreq_event_enable_edev" + is_defined: true + symbol_type: FUNCTION + crc: 0x1a88e996 + type_id: 0x9e08a6b2 + full_name: "devfreq_event_enable_edev" +} +elf_symbol { + id: 0x781fabb2 + name: "devfreq_event_get_edev_by_phandle" + is_defined: true + symbol_type: FUNCTION + crc: 0x37666b78 + type_id: 0xaa27b09c + full_name: "devfreq_event_get_edev_by_phandle" +} +elf_symbol { + id: 0xe2544e4d + name: "devfreq_event_get_edev_count" + is_defined: true + symbol_type: FUNCTION + crc: 0x2e31dce9 + type_id: 0x9dee9fa0 + full_name: "devfreq_event_get_edev_count" +} +elf_symbol { + id: 0xdd8da0cf + name: "devfreq_event_get_event" + is_defined: true + symbol_type: FUNCTION + crc: 0x9719d881 + type_id: 0x9eb7f57a + full_name: "devfreq_event_get_event" +} elf_symbol { id: 0x19e74e36 name: "devfreq_get_devfreq_by_node" @@ -341946,6 +349955,15 @@ elf_symbol { type_id: 0x9dee9fa0 full_name: "device_rename" } +elf_symbol { + id: 0xa09675ab + name: "device_set_node" + is_defined: true + symbol_type: FUNCTION + crc: 0x3fd03b85 + type_id: 0x101c2d25 + full_name: "device_set_node" +} elf_symbol { id: 0xcdcce9e8 name: "device_set_of_node_from_dev" @@ -342333,6 +350351,15 @@ elf_symbol { type_id: 0xda80c39b full_name: "devm_devfreq_add_device" } +elf_symbol { + id: 0xa4692a70 + name: "devm_devfreq_event_add_edev" + is_defined: true + symbol_type: FUNCTION + crc: 0x5d86691d + type_id: 0xaa9ceb0d + full_name: "devm_devfreq_event_add_edev" +} elf_symbol { id: 0x3afde7ec name: "devm_devfreq_register_notifier" @@ -342342,6 +350369,15 @@ elf_symbol { type_id: 0x9d8c8e95 full_name: "devm_devfreq_register_notifier" } +elf_symbol { + id: 0x6415475c + name: "devm_devfreq_register_opp_notifier" + is_defined: true + symbol_type: FUNCTION + crc: 0x7d3273ad + type_id: 0x9d8b7529 + full_name: "devm_devfreq_register_opp_notifier" +} elf_symbol { id: 0x2bf23b7c name: "devm_devfreq_remove_device" @@ -342756,6 +350792,15 @@ elf_symbol { type_id: 0x3d63b46a full_name: "devm_kasprintf" } +elf_symbol { + id: 0x0abc683e + name: "devm_kasprintf_strarray" + is_defined: true + symbol_type: FUNCTION + crc: 0xd205a636 + type_id: 0x0c5cd477 + full_name: "devm_kasprintf_strarray" +} elf_symbol { id: 0x7c053015 name: "devm_kfree" @@ -342873,6 +350918,15 @@ elf_symbol { type_id: 0x5468daf3 full_name: "devm_memremap" } +elf_symbol { + id: 0x86c1623f + name: "devm_memunmap" + is_defined: true + symbol_type: FUNCTION + crc: 0xd7fbf31f + type_id: 0x106c9a5c + full_name: "devm_memunmap" +} elf_symbol { id: 0x36e39cf6 name: "devm_mfd_add_devices" @@ -342990,6 +351044,15 @@ elf_symbol { type_id: 0x68eaecc0 full_name: "devm_pci_alloc_host_bridge" } +elf_symbol { + id: 0x92ffc2e2 + name: "devm_pci_remap_cfg_resource" + is_defined: true + symbol_type: FUNCTION + crc: 0x029de2b5 + type_id: 0x56edbc2a + full_name: "devm_pci_remap_cfg_resource" +} elf_symbol { id: 0xd6e5f7c7 name: "devm_phy_create" @@ -343566,6 +351629,15 @@ elf_symbol { type_id: 0x106c9a5c full_name: "devres_remove_group" } +elf_symbol { + id: 0x30dd6796 + name: "disable_hardirq" + is_defined: true + symbol_type: FUNCTION + crc: 0xbd3fe1e3 + type_id: 0xefc5028b + full_name: "disable_hardirq" +} elf_symbol { id: 0x573e2956 name: "disable_irq" @@ -343602,6 +351674,15 @@ elf_symbol { type_id: 0x1bd69e9e full_name: "disk_set_zoned" } +elf_symbol { + id: 0x80814925 + name: "display_timings_release" + is_defined: true + symbol_type: FUNCTION + crc: 0x3b4c240a + type_id: 0x1fcce445 + full_name: "display_timings_release" +} elf_symbol { id: 0x9c5fb17e name: "divider_get_val" @@ -343638,6 +351719,150 @@ elf_symbol { type_id: 0xa5be4b9b full_name: "divider_round_rate_parent" } +elf_symbol { + id: 0xf4cef372 + name: "dm_bufio_client_create" + is_defined: true + symbol_type: FUNCTION + crc: 0xb08df2d2 + type_id: 0x4b6ec637 + full_name: "dm_bufio_client_create" +} +elf_symbol { + id: 0xa2bba96c + name: "dm_bufio_client_destroy" + is_defined: true + symbol_type: FUNCTION + crc: 0xeca7949e + type_id: 0x1bd82ebd + full_name: "dm_bufio_client_destroy" +} +elf_symbol { + id: 0x7848fa66 + name: "dm_bufio_mark_buffer_dirty" + is_defined: true + symbol_type: FUNCTION + crc: 0x0ad0dc4f + type_id: 0x1a8f9ccc + full_name: "dm_bufio_mark_buffer_dirty" +} +elf_symbol { + id: 0x0db19b7a + name: "dm_bufio_new" + is_defined: true + symbol_type: FUNCTION + crc: 0xc0d7df85 + type_id: 0x5e9421aa + full_name: "dm_bufio_new" +} +elf_symbol { + id: 0xed0adecd + name: "dm_bufio_read" + is_defined: true + symbol_type: FUNCTION + crc: 0xb04f56ab + type_id: 0x5e9421aa + full_name: "dm_bufio_read" +} +elf_symbol { + id: 0xd3ad47e6 + name: "dm_bufio_release" + is_defined: true + symbol_type: FUNCTION + crc: 0xe6024e59 + type_id: 0x1a8f9ccc + full_name: "dm_bufio_release" +} +elf_symbol { + id: 0x042d9e44 + name: "dm_bufio_write_dirty_buffers" + is_defined: true + symbol_type: FUNCTION + crc: 0xa82b2066 + type_id: 0x96c09c01 + full_name: "dm_bufio_write_dirty_buffers" +} +elf_symbol { + id: 0x0991ae07 + name: "dm_disk" + is_defined: true + symbol_type: FUNCTION + crc: 0x6c18061f + type_id: 0x47570b9f + full_name: "dm_disk" +} +elf_symbol { + id: 0x650e9b1f + name: "dm_get_device" + is_defined: true + symbol_type: FUNCTION + crc: 0x1e1791d7 + type_id: 0x9221eee3 + full_name: "dm_get_device" +} +elf_symbol { + id: 0xd360b11b + name: "dm_kobject_release" + is_defined: true + symbol_type: FUNCTION + crc: 0x41e9f737 + type_id: 0x1864769e + full_name: "dm_kobject_release" +} +elf_symbol { + id: 0x8c40514f + name: "dm_read_arg_group" + is_defined: true + symbol_type: FUNCTION + crc: 0x39c74235 + type_id: 0x926c5025 + full_name: "dm_read_arg_group" +} +elf_symbol { + id: 0xe7718d4e + name: "dm_register_target" + is_defined: true + symbol_type: FUNCTION + crc: 0x99f64a0c + type_id: 0x90085da5 + full_name: "dm_register_target" +} +elf_symbol { + id: 0xb61b1afb + name: "dm_shift_arg" + is_defined: true + symbol_type: FUNCTION + crc: 0x7d27e504 + type_id: 0x98af9d1c + full_name: "dm_shift_arg" +} +elf_symbol { + id: 0xe96fb6a0 + name: "dm_table_get_md" + is_defined: true + symbol_type: FUNCTION + crc: 0xeba2f002 + type_id: 0xa7436d37 + full_name: "dm_table_get_md" +} +elf_symbol { + id: 0xf99054ab + name: "dm_table_get_mode" + is_defined: true + symbol_type: FUNCTION + crc: 0x925f0075 + type_id: 0x11508453 + full_name: "dm_table_get_mode" +} +elf_symbol { + id: 0x76f0e551 + name: "dm_unregister_target" + is_defined: true + symbol_type: FUNCTION + crc: 0x28405c27 + type_id: 0x1d10ef19 + full_name: "dm_unregister_target" +} elf_symbol { id: 0x6cb15207 name: "dma_alloc_attrs" @@ -343869,6 +352094,15 @@ elf_symbol { type_id: 0x10aa5f7a full_name: "dma_buf_put" } +elf_symbol { + id: 0x77d18a9c + name: "dma_buf_set_name" + is_defined: true + symbol_type: FUNCTION + crc: 0x752c3098 + type_id: 0xa7ea77a4 + full_name: "dma_buf_set_name" +} elf_symbol { id: 0xd0deb542 name: "dma_buf_unmap_attachment" @@ -344828,6 +353062,15 @@ elf_symbol { type_id: 0x9daf738f full_name: "down_write_killable" } +elf_symbol { + id: 0x626b81c7 + name: "down_write_trylock" + is_defined: true + symbol_type: FUNCTION + crc: 0xd0e551cc + type_id: 0x9daf738f + full_name: "down_write_trylock" +} elf_symbol { id: 0x4a57b168 name: "downgrade_write" @@ -344963,6 +353206,15 @@ elf_symbol { type_id: 0x9068c1cc full_name: "drm_add_modes_noedid" } +elf_symbol { + id: 0x7e8263f6 + name: "drm_aperture_remove_conflicting_framebuffers" + is_defined: true + symbol_type: FUNCTION + crc: 0xa5abe6ba + type_id: 0xba97bb1d + full_name: "drm_aperture_remove_conflicting_framebuffers" +} elf_symbol { id: 0x588ab3fd name: "drm_aperture_remove_conflicting_pci_framebuffers" @@ -345809,6 +354061,24 @@ elf_symbol { type_id: 0xfcf090be full_name: "drm_bridge_detect" } +elf_symbol { + id: 0x3ef0db06 + name: "drm_bridge_get_edid" + is_defined: true + symbol_type: FUNCTION + crc: 0xdeb653ce + type_id: 0xc7bc0e4a + full_name: "drm_bridge_get_edid" +} +elf_symbol { + id: 0xc72378aa + name: "drm_bridge_get_modes" + is_defined: true + symbol_type: FUNCTION + crc: 0x8446a07e + type_id: 0x94dc0c27 + full_name: "drm_bridge_get_modes" +} elf_symbol { id: 0xd82232b3 name: "drm_bridge_hpd_notify" @@ -345944,6 +354214,15 @@ elf_symbol { type_id: 0x1cf53808 full_name: "drm_connector_cleanup" } +elf_symbol { + id: 0xf8bd92c8 + name: "drm_connector_has_possible_encoder" + is_defined: true + symbol_type: FUNCTION + crc: 0x2e4b4a64 + type_id: 0xf272e262 + full_name: "drm_connector_has_possible_encoder" +} elf_symbol { id: 0x70b7d94b name: "drm_connector_init" @@ -346088,6 +354367,15 @@ elf_symbol { type_id: 0x1e67551a full_name: "drm_crtc_enable_color_mgmt" } +elf_symbol { + id: 0x08309f5e + name: "drm_crtc_from_index" + is_defined: true + symbol_type: FUNCTION + crc: 0x34429a5e + type_id: 0x45df5dd3 + full_name: "drm_crtc_from_index" +} elf_symbol { id: 0x11e9361c name: "drm_crtc_handle_vblank" @@ -346592,6 +354880,15 @@ elf_symbol { type_id: 0xc21e59d8 full_name: "drm_format_info_block_width" } +elf_symbol { + id: 0x4b9e6227 + name: "drm_format_info_min_pitch" + is_defined: true + symbol_type: FUNCTION + crc: 0x6910e4cd + type_id: 0x5274946d + full_name: "drm_format_info_min_pitch" +} elf_symbol { id: 0x9c6b68f2 name: "drm_framebuffer_cleanup" @@ -346655,6 +354952,15 @@ elf_symbol { type_id: 0x9398dfdf full_name: "drm_gem_create_mmap_offset" } +elf_symbol { + id: 0xd4d38d4c + name: "drm_gem_dmabuf_export" + is_defined: true + symbol_type: FUNCTION + crc: 0x9af5812d + type_id: 0x44b624d1 + full_name: "drm_gem_dmabuf_export" +} elf_symbol { id: 0x81bdff8a name: "drm_gem_dmabuf_mmap" @@ -346691,6 +354997,24 @@ elf_symbol { type_id: 0x10563618 full_name: "drm_gem_dmabuf_vunmap" } +elf_symbol { + id: 0xac1aeaf0 + name: "drm_gem_dumb_map_offset" + is_defined: true + symbol_type: FUNCTION + crc: 0x8220a182 + type_id: 0x99e7b457 + full_name: "drm_gem_dumb_map_offset" +} +elf_symbol { + id: 0x622cdd92 + name: "drm_gem_fb_afbc_init" + is_defined: true + symbol_type: FUNCTION + crc: 0x38ebad6a + type_id: 0x939f8199 + full_name: "drm_gem_fb_afbc_init" +} elf_symbol { id: 0xc7970f23 name: "drm_gem_fb_begin_cpu_access" @@ -346736,6 +355060,15 @@ elf_symbol { type_id: 0x0bfc976c full_name: "drm_gem_fb_get_obj" } +elf_symbol { + id: 0x585410d0 + name: "drm_gem_fb_init_with_funcs" + is_defined: true + symbol_type: FUNCTION + crc: 0x882550af + type_id: 0x938283cb + full_name: "drm_gem_fb_init_with_funcs" +} elf_symbol { id: 0xd4a13963 name: "drm_gem_fb_vmap" @@ -346781,6 +355114,15 @@ elf_symbol { type_id: 0x99d6eb87 full_name: "drm_gem_handle_create" } +elf_symbol { + id: 0xd32d7c35 + name: "drm_gem_handle_delete" + is_defined: true + symbol_type: FUNCTION + crc: 0x855a2628 + type_id: 0x9a1d7c68 + full_name: "drm_gem_handle_delete" +} elf_symbol { id: 0xf76bbee4 name: "drm_gem_lock_reservations" @@ -347411,6 +355753,15 @@ elf_symbol { type_id: 0x19394f8b full_name: "drm_mm_remove_node" } +elf_symbol { + id: 0xd0dd3133 + name: "drm_mm_reserve_node" + is_defined: true + symbol_type: FUNCTION + crc: 0x2754dad8 + type_id: 0x974e1bca + full_name: "drm_mm_reserve_node" +} elf_symbol { id: 0x3b867568 name: "drm_mm_scan_add_block" @@ -347555,6 +355906,15 @@ elf_symbol { type_id: 0x42ee3dd4 full_name: "drm_mode_create_tile_group" } +elf_symbol { + id: 0x0d3b6723 + name: "drm_mode_create_tv_properties" + is_defined: true + symbol_type: FUNCTION + crc: 0x30d9d722 + type_id: 0x9258444e + full_name: "drm_mode_create_tv_properties" +} elf_symbol { id: 0x58b810bd name: "drm_mode_crtc_set_gamma_size" @@ -347618,6 +355978,15 @@ elf_symbol { type_id: 0xc6a0fd0e full_name: "drm_mode_find_dmt" } +elf_symbol { + id: 0xc3ae75b9 + name: "drm_mode_is_420" + is_defined: true + symbol_type: FUNCTION + crc: 0x8c35d2cf + type_id: 0xf10b3730 + full_name: "drm_mode_is_420" +} elf_symbol { id: 0xca851619 name: "drm_mode_is_420_also" @@ -347717,6 +356086,33 @@ elf_symbol { type_id: 0x1f00dfeb full_name: "drm_mode_sort" } +elf_symbol { + id: 0x003f0aec + name: "drm_mode_validate_driver" + is_defined: true + symbol_type: FUNCTION + crc: 0x952d25ca + type_id: 0xb13e733c + full_name: "drm_mode_validate_driver" +} +elf_symbol { + id: 0x43bb72ae + name: "drm_mode_validate_size" + is_defined: true + symbol_type: FUNCTION + crc: 0xd7a9cf42 + type_id: 0xb3cfd554 + full_name: "drm_mode_validate_size" +} +elf_symbol { + id: 0x49fd657a + name: "drm_mode_validate_ycbcr420" + is_defined: true + symbol_type: FUNCTION + crc: 0xcb2c6fb3 + type_id: 0xb28c48b5 + full_name: "drm_mode_validate_ycbcr420" +} elf_symbol { id: 0x4e6bfabc name: "drm_mode_vrefresh" @@ -347861,6 +356257,15 @@ elf_symbol { type_id: 0x9dad5a62 full_name: "drm_of_component_probe" } +elf_symbol { + id: 0xdb6eae3a + name: "drm_of_crtc_port_mask" + is_defined: true + symbol_type: FUNCTION + crc: 0xf557a5fd + type_id: 0x3d0f6874 + full_name: "drm_of_crtc_port_mask" +} elf_symbol { id: 0x122e3e9f name: "drm_of_encoder_active_endpoint" @@ -348248,6 +356653,15 @@ elf_symbol { type_id: 0x9b72aa8f full_name: "drm_property_create_enum" } +elf_symbol { + id: 0x8d62d3e1 + name: "drm_property_create_object" + is_defined: true + symbol_type: FUNCTION + crc: 0x6e0229f2 + type_id: 0x9b723218 + full_name: "drm_property_create_object" +} elf_symbol { id: 0x7a4db2f9 name: "drm_property_create_range" @@ -348293,6 +356707,15 @@ elf_symbol { type_id: 0xff934450 full_name: "drm_property_replace_blob" } +elf_symbol { + id: 0x4cf5ba17 + name: "drm_property_replace_global_blob" + is_defined: true + symbol_type: FUNCTION + crc: 0xd2ff27b8 + type_id: 0x93625762 + full_name: "drm_property_replace_global_blob" +} elf_symbol { id: 0x9718e72e name: "drm_puts" @@ -348644,6 +357067,15 @@ elf_symbol { type_id: 0x9341cc84 full_name: "drmm_mode_config_init" } +elf_symbol { + id: 0x4dae13e9 + name: "drop_nlink" + is_defined: true + symbol_type: FUNCTION + crc: 0x4c7bc8cb + type_id: 0x167935b9 + full_name: "drop_nlink" +} elf_symbol { id: 0xe2b96ffd name: "dst_cache_destroy" @@ -348779,6 +357211,15 @@ elf_symbol { type_id: 0x5ca118ca full_name: "dw_pcie_find_capability" } +elf_symbol { + id: 0xdc24b796 + name: "dw_pcie_find_ext_capability" + is_defined: true + symbol_type: FUNCTION + crc: 0x8adbc3f0 + type_id: 0x0ec08f0d + full_name: "dw_pcie_find_ext_capability" +} elf_symbol { id: 0xb8395a3e name: "dw_pcie_host_init" @@ -348788,6 +357229,15 @@ elf_symbol { type_id: 0x94e69702 full_name: "dw_pcie_host_init" } +elf_symbol { + id: 0xa625950b + name: "dw_pcie_link_up" + is_defined: true + symbol_type: FUNCTION + crc: 0x9b8ebc8e + type_id: 0x92ce345a + full_name: "dw_pcie_link_up" +} elf_symbol { id: 0x9d898d75 name: "dw_pcie_own_conf_map_bus" @@ -349103,6 +357553,24 @@ elf_symbol { type_id: 0x17592b81 full_name: "end_buffer_read_sync" } +elf_symbol { + id: 0x45c0e0ad + name: "end_buffer_write_sync" + is_defined: true + symbol_type: FUNCTION + crc: 0x7207a9fa + type_id: 0x17592b81 + full_name: "end_buffer_write_sync" +} +elf_symbol { + id: 0xf7fd2915 + name: "end_page_writeback" + is_defined: true + symbol_type: FUNCTION + crc: 0xd203f7c4 + type_id: 0x11388634 + full_name: "end_page_writeback" +} elf_symbol { id: 0x7b9ffce9 name: "errno_to_blk_status" @@ -349112,6 +357580,15 @@ elf_symbol { type_id: 0x53bd7367 full_name: "errno_to_blk_status" } +elf_symbol { + id: 0xe506b877 + name: "errseq_set" + is_defined: true + symbol_type: FUNCTION + crc: 0x2ec6bba0 + type_id: 0xb55dce02 + full_name: "errseq_set" +} elf_symbol { id: 0xda116c83 name: "eth_commit_mac_addr_change" @@ -349445,6 +357922,15 @@ elf_symbol { type_id: 0x988f2c1b full_name: "extcon_set_state_sync" } +elf_symbol { + id: 0xad3eb214 + name: "extcon_sync" + is_defined: true + symbol_type: FUNCTION + crc: 0x7893b9d4 + type_id: 0x989473cc + full_name: "extcon_sync" +} elf_symbol { id: 0xb107d2cd name: "extcon_unregister_notifier" @@ -349463,6 +357949,24 @@ elf_symbol { type_id: 0x8432b9df full_name: "fasync_helper" } +elf_symbol { + id: 0xc56006c7 + name: "fault_in_iov_iter_readable" + is_defined: true + symbol_type: FUNCTION + crc: 0xd085a60d + type_id: 0x99d43279 + full_name: "fault_in_iov_iter_readable" +} +elf_symbol { + id: 0x639b2403 + name: "fault_in_safe_writeable" + is_defined: true + symbol_type: FUNCTION + crc: 0xf394f7da + type_id: 0x9b6b31b5 + full_name: "fault_in_safe_writeable" +} elf_symbol { id: 0xbbfb394e name: "fb_get_options" @@ -349499,6 +358003,33 @@ elf_symbol { type_id: 0x50f3b181 full_name: "fget" } +elf_symbol { + id: 0xab45f2a8 + name: "fiemap_fill_next_extent" + is_defined: true + symbol_type: FUNCTION + crc: 0x970a3f8f + type_id: 0x92ab0d8f + full_name: "fiemap_fill_next_extent" +} +elf_symbol { + id: 0x41eed79f + name: "fiemap_prep" + is_defined: true + symbol_type: FUNCTION + crc: 0x12888fc3 + type_id: 0x9b91dcee + full_name: "fiemap_prep" +} +elf_symbol { + id: 0xcdc0fffd + name: "file_check_and_advance_wb_err" + is_defined: true + symbol_type: FUNCTION + crc: 0x247050da + type_id: 0x9bba7997 + full_name: "file_check_and_advance_wb_err" +} elf_symbol { id: 0xe7aacfe5 name: "file_path" @@ -349517,6 +358048,24 @@ elf_symbol { type_id: 0x14609640 full_name: "file_ra_state_init" } +elf_symbol { + id: 0x99b0f07b + name: "file_remove_privs" + is_defined: true + symbol_type: FUNCTION + crc: 0x7adb4755 + type_id: 0x9bba7997 + full_name: "file_remove_privs" +} +elf_symbol { + id: 0xffbe24f4 + name: "file_update_time" + is_defined: true + symbol_type: FUNCTION + crc: 0xf206510a + type_id: 0x9bba7997 + full_name: "file_update_time" +} elf_symbol { id: 0x46b6e531 name: "file_write_and_wait_range" @@ -349526,6 +358075,78 @@ elf_symbol { type_id: 0x9b2d0f7e full_name: "file_write_and_wait_range" } +elf_symbol { + id: 0xbe28ee32 + name: "filemap_add_folio" + is_defined: true + symbol_type: FUNCTION + crc: 0x42f25711 + type_id: 0x986a916d + full_name: "filemap_add_folio" +} +elf_symbol { + id: 0x4927c9f3 + name: "filemap_dirty_folio" + is_defined: true + symbol_type: FUNCTION + crc: 0xa4ca0b75 + type_id: 0xfb413284 + full_name: "filemap_dirty_folio" +} +elf_symbol { + id: 0x50a5072e + name: "filemap_fault" + is_defined: true + symbol_type: FUNCTION + crc: 0x6ea71511 + type_id: 0xcee4fe8d + full_name: "filemap_fault" +} +elf_symbol { + id: 0xef606c3f + name: "filemap_fdatawait_range" + is_defined: true + symbol_type: FUNCTION + crc: 0x021f318f + type_id: 0x98773f07 + full_name: "filemap_fdatawait_range" +} +elf_symbol { + id: 0x3289d59f + name: "filemap_fdatawrite" + is_defined: true + symbol_type: FUNCTION + crc: 0xd20a8cfb + type_id: 0x98e049ee + full_name: "filemap_fdatawrite" +} +elf_symbol { + id: 0x82b19820 + name: "filemap_fdatawrite_range" + is_defined: true + symbol_type: FUNCTION + crc: 0x99f56961 + type_id: 0x98773f07 + full_name: "filemap_fdatawrite_range" +} +elf_symbol { + id: 0x7c937fc2 + name: "filemap_flush" + is_defined: true + symbol_type: FUNCTION + crc: 0x12f67935 + type_id: 0x98e049ee + full_name: "filemap_flush" +} +elf_symbol { + id: 0xc7c68a05 + name: "filemap_write_and_wait_range" + is_defined: true + symbol_type: FUNCTION + crc: 0x44a9ebe6 + type_id: 0x98773f07 + full_name: "filemap_write_and_wait_range" +} elf_symbol { id: 0xb9dc79d0 name: "filp_close" @@ -349742,6 +358363,33 @@ elf_symbol { type_id: 0xfdf39d0a full_name: "flush_work" } +elf_symbol { + id: 0x06c58be7 + name: "folio_add_lru" + is_defined: true + symbol_type: FUNCTION + crc: 0x42a88286 + type_id: 0x18c46588 + full_name: "folio_add_lru" +} +elf_symbol { + id: 0x159a69a3 + name: "folio_mapping" + is_defined: true + symbol_type: FUNCTION + crc: 0xad0ae85f + type_id: 0x637004ab + full_name: "folio_mapping" +} +elf_symbol { + id: 0x39840ab2 + name: "folio_referenced" + is_defined: true + symbol_type: FUNCTION + crc: 0x6114128f + type_id: 0x94471ba6 + full_name: "folio_referenced" +} elf_symbol { id: 0x3dca9a13 name: "folio_wait_bit" @@ -349751,6 +358399,15 @@ elf_symbol { type_id: 0x1958e6c4 full_name: "folio_wait_bit" } +elf_symbol { + id: 0x07508208 + name: "folio_write_one" + is_defined: true + symbol_type: FUNCTION + crc: 0x198f6eb0 + type_id: 0x95dcd734 + full_name: "folio_write_one" +} elf_symbol { id: 0xcb14b5cc name: "follow_pfn" @@ -349787,6 +358444,15 @@ elf_symbol { type_id: 0x1f1c7cd5 full_name: "fortify_panic" } +elf_symbol { + id: 0x5c388f41 + name: "fpsimd_context_busy" + is_defined: true + symbol_type: OBJECT + crc: 0x535be82a + type_id: 0x6d7f5ff6 + full_name: "fpsimd_context_busy" +} elf_symbol { id: 0x93b9959a name: "fput" @@ -350111,6 +358777,15 @@ elf_symbol { type_id: 0xc075980c full_name: "full_name_hash" } +elf_symbol { + id: 0xc35e482b + name: "fwnode_create_software_node" + is_defined: true + symbol_type: FUNCTION + crc: 0xf7a29e9c + type_id: 0x34270f0c + full_name: "fwnode_create_software_node" +} elf_symbol { id: 0x53816b02 name: "fwnode_device_is_available" @@ -350498,6 +359173,24 @@ elf_symbol { type_id: 0x7e204efc full_name: "generic_device_group" } +elf_symbol { + id: 0xe21d8d05 + name: "generic_error_remove_page" + is_defined: true + symbol_type: FUNCTION + crc: 0xae4d8a76 + type_id: 0x98fa4494 + full_name: "generic_error_remove_page" +} +elf_symbol { + id: 0x338cfb0f + name: "generic_file_direct_write" + is_defined: true + symbol_type: FUNCTION + crc: 0x552bc0af + type_id: 0x16637235 + full_name: "generic_file_direct_write" +} elf_symbol { id: 0x94b60724 name: "generic_file_llseek" @@ -350507,6 +359200,24 @@ elf_symbol { type_id: 0x2d64ae3e full_name: "generic_file_llseek" } +elf_symbol { + id: 0x6ac5d61b + name: "generic_file_mmap" + is_defined: true + symbol_type: FUNCTION + crc: 0xe3415064 + type_id: 0x9b923492 + full_name: "generic_file_mmap" +} +elf_symbol { + id: 0x54756210 + name: "generic_file_open" + is_defined: true + symbol_type: FUNCTION + crc: 0x62233d3d + type_id: 0x9b022eae + full_name: "generic_file_open" +} elf_symbol { id: 0x5ec3daa8 name: "generic_file_read_iter" @@ -350516,6 +359227,24 @@ elf_symbol { type_id: 0x16637235 full_name: "generic_file_read_iter" } +elf_symbol { + id: 0x5530f759 + name: "generic_file_splice_read" + is_defined: true + symbol_type: FUNCTION + crc: 0xa2e84b5f + type_id: 0x12c79320 + full_name: "generic_file_splice_read" +} +elf_symbol { + id: 0x3812bb22 + name: "generic_fillattr" + is_defined: true + symbol_type: FUNCTION + crc: 0xb418cdc6 + type_id: 0x13184981 + full_name: "generic_fillattr" +} elf_symbol { id: 0x2f7205ee name: "generic_handle_domain_irq" @@ -350552,6 +359281,15 @@ elf_symbol { type_id: 0x16637235 full_name: "generic_perform_write" } +elf_symbol { + id: 0x4c4073c3 + name: "generic_read_dir" + is_defined: true + symbol_type: FUNCTION + crc: 0x91cfdae1 + type_id: 0x12e4741f + full_name: "generic_read_dir" +} elf_symbol { id: 0x798f83da name: "generic_shutdown_super" @@ -351275,6 +360013,141 @@ elf_symbol { type_id: 0x11a59ba3 full_name: "getboottime64" } +elf_symbol { + id: 0xa7339c42 + name: "gether_cleanup" + is_defined: true + symbol_type: FUNCTION + crc: 0x8878cfa6 + type_id: 0x1ae9c33f + full_name: "gether_cleanup" +} +elf_symbol { + id: 0x23fbc3f8 + name: "gether_connect" + is_defined: true + symbol_type: FUNCTION + crc: 0xea64e647 + type_id: 0xf2708109 + full_name: "gether_connect" +} +elf_symbol { + id: 0x46e18dbd + name: "gether_disconnect" + is_defined: true + symbol_type: FUNCTION + crc: 0x1bf99a25 + type_id: 0x1e9b5d67 + full_name: "gether_disconnect" +} +elf_symbol { + id: 0xf5970852 + name: "gether_get_dev_addr" + is_defined: true + symbol_type: FUNCTION + crc: 0x557d0eb6 + type_id: 0x9122ac75 + full_name: "gether_get_dev_addr" +} +elf_symbol { + id: 0x0a3cdb4a + name: "gether_get_host_addr" + is_defined: true + symbol_type: FUNCTION + crc: 0xb4ae8361 + type_id: 0x9122ac75 + full_name: "gether_get_host_addr" +} +elf_symbol { + id: 0xdb6a18dc + name: "gether_get_host_addr_u8" + is_defined: true + symbol_type: FUNCTION + crc: 0xf8b424a5 + type_id: 0x1c32c5f2 + full_name: "gether_get_host_addr_u8" +} +elf_symbol { + id: 0x412252a6 + name: "gether_get_ifname" + is_defined: true + symbol_type: FUNCTION + crc: 0x5bd0d402 + type_id: 0x9122ac75 + full_name: "gether_get_ifname" +} +elf_symbol { + id: 0x9c589482 + name: "gether_get_qmult" + is_defined: true + symbol_type: FUNCTION + crc: 0xb460cb61 + type_id: 0xc272f60e + full_name: "gether_get_qmult" +} +elf_symbol { + id: 0x0400c852 + name: "gether_register_netdev" + is_defined: true + symbol_type: FUNCTION + crc: 0x1d6ccbe0 + type_id: 0x91296bda + full_name: "gether_register_netdev" +} +elf_symbol { + id: 0xcdcde62d + name: "gether_set_dev_addr" + is_defined: true + symbol_type: FUNCTION + crc: 0x3c2aa803 + type_id: 0x91d1290e + full_name: "gether_set_dev_addr" +} +elf_symbol { + id: 0xba5f9a53 + name: "gether_set_gadget" + is_defined: true + symbol_type: FUNCTION + crc: 0x95a29c7a + type_id: 0x1ca44d8a + full_name: "gether_set_gadget" +} +elf_symbol { + id: 0x8802e047 + name: "gether_set_host_addr" + is_defined: true + symbol_type: FUNCTION + crc: 0x0d98da0f + type_id: 0x91d1290e + full_name: "gether_set_host_addr" +} +elf_symbol { + id: 0xf7264f57 + name: "gether_set_ifname" + is_defined: true + symbol_type: FUNCTION + crc: 0xddaa7799 + type_id: 0x91c8e13a + full_name: "gether_set_ifname" +} +elf_symbol { + id: 0x370e3283 + name: "gether_set_qmult" + is_defined: true + symbol_type: FUNCTION + crc: 0xae8e571d + type_id: 0x1d27ccfe + full_name: "gether_set_qmult" +} +elf_symbol { + id: 0xe87161bc + name: "gether_setup_name_default" + is_defined: true + symbol_type: FUNCTION + crc: 0x5d7e340b + type_id: 0xf3f7a0bb + full_name: "gether_setup_name_default" +} elf_symbol { id: 0x112db471 name: "gf128mul_lle" @@ -351608,6 +360481,15 @@ elf_symbol { type_id: 0x9b54e21c full_name: "gpiochip_populate_parent_fwspec_fourcell" } +elf_symbol { + id: 0x14b7a009 + name: "gpiochip_relres_irq" + is_defined: true + symbol_type: FUNCTION + crc: 0x9c82d602 + type_id: 0x17b7d7d6 + full_name: "gpiochip_relres_irq" +} elf_symbol { id: 0x7dd9e61e name: "gpiochip_remove" @@ -351617,6 +360499,15 @@ elf_symbol { type_id: 0x16a1c24e full_name: "gpiochip_remove" } +elf_symbol { + id: 0x30903940 + name: "gpiochip_reqres_irq" + is_defined: true + symbol_type: FUNCTION + crc: 0x920467d8 + type_id: 0x9aaf656a + full_name: "gpiochip_reqres_irq" +} elf_symbol { id: 0x77a0ab63 name: "gpiochip_unlock_as_irq" @@ -351833,6 +360724,15 @@ elf_symbol { type_id: 0x901afa25 full_name: "gpiod_to_irq" } +elf_symbol { + id: 0x085aa99f + name: "grab_cache_page_write_begin" + is_defined: true + symbol_type: FUNCTION + crc: 0xb2975faa + type_id: 0xb8358fd3 + full_name: "grab_cache_page_write_begin" +} elf_symbol { id: 0x4dcdd24d name: "gre_add_protocol" @@ -352346,6 +361246,15 @@ elf_symbol { type_id: 0x102e21e5 full_name: "hdmi_avi_infoframe_pack" } +elf_symbol { + id: 0x4e8277c6 + name: "hdmi_avi_infoframe_pack_only" + is_defined: true + symbol_type: FUNCTION + crc: 0x2ee4c2b1 + type_id: 0x1a42044c + full_name: "hdmi_avi_infoframe_pack_only" +} elf_symbol { id: 0x7ec10e18 name: "hdmi_drm_infoframe_init" @@ -352454,6 +361363,15 @@ elf_symbol { type_id: 0x98aacbd0 full_name: "hid_allocate_device" } +elf_symbol { + id: 0xa832c6f3 + name: "hid_debug" + is_defined: true + symbol_type: OBJECT + crc: 0x05495392 + type_id: 0x6720d32f + full_name: "hid_debug" +} elf_symbol { id: 0x2ffc7c7e name: "hid_destroy_device" @@ -352463,6 +361381,87 @@ elf_symbol { type_id: 0x13e1603f full_name: "hid_destroy_device" } +elf_symbol { + id: 0x1706be22 + name: "hid_driver_reset_resume" + is_defined: true + symbol_type: FUNCTION + crc: 0x38266a07 + type_id: 0x9ef9d283 + full_name: "hid_driver_reset_resume" +} +elf_symbol { + id: 0x4c3911f0 + name: "hid_driver_suspend" + is_defined: true + symbol_type: FUNCTION + crc: 0x63c99127 + type_id: 0x9d398c85 + full_name: "hid_driver_suspend" +} +elf_symbol { + id: 0x8717f26f + name: "hid_hw_close" + is_defined: true + symbol_type: FUNCTION + crc: 0xffa28586 + type_id: 0x13e1603f + full_name: "hid_hw_close" +} +elf_symbol { + id: 0x361004c8 + name: "hid_hw_open" + is_defined: true + symbol_type: FUNCTION + crc: 0x83abbb03 + type_id: 0x9ef9d283 + full_name: "hid_hw_open" +} +elf_symbol { + id: 0xcf5ea9a2 + name: "hid_hw_output_report" + is_defined: true + symbol_type: FUNCTION + crc: 0x8f5731d2 + type_id: 0x9e5d7885 + full_name: "hid_hw_output_report" +} +elf_symbol { + id: 0x6c303862 + name: "hid_hw_raw_request" + is_defined: true + symbol_type: FUNCTION + crc: 0x1754ea42 + type_id: 0x9f85a1ff + full_name: "hid_hw_raw_request" +} +elf_symbol { + id: 0x553bc5f3 + name: "hid_hw_request" + is_defined: true + symbol_type: FUNCTION + crc: 0xe88265d4 + type_id: 0x137a1cdc + full_name: "hid_hw_request" +} +elf_symbol { + id: 0xfba34655 + name: "hid_hw_start" + is_defined: true + symbol_type: FUNCTION + crc: 0x80c181b3 + type_id: 0x9fefc71b + full_name: "hid_hw_start" +} +elf_symbol { + id: 0x52d444b1 + name: "hid_hw_stop" + is_defined: true + symbol_type: FUNCTION + crc: 0x109cf170 + type_id: 0x13e1603f + full_name: "hid_hw_stop" +} elf_symbol { id: 0x7d0e44ca name: "hid_ignore" @@ -352481,6 +361480,15 @@ elf_symbol { type_id: 0x9d13a27c full_name: "hid_input_report" } +elf_symbol { + id: 0x0eb11e95 + name: "hid_open_report" + is_defined: true + symbol_type: FUNCTION + crc: 0x99072c9a + type_id: 0x9ef9d283 + full_name: "hid_open_report" +} elf_symbol { id: 0x6ca4d0ed name: "hid_parse_report" @@ -352490,6 +361498,33 @@ elf_symbol { type_id: 0x9e711486 full_name: "hid_parse_report" } +elf_symbol { + id: 0x741d5af7 + name: "hid_report_raw_event" + is_defined: true + symbol_type: FUNCTION + crc: 0x358ef5ff + type_id: 0x9d13a27c + full_name: "hid_report_raw_event" +} +elf_symbol { + id: 0x6e37f09d + name: "hid_unregister_driver" + is_defined: true + symbol_type: FUNCTION + crc: 0xe1767c20 + type_id: 0x104da524 + full_name: "hid_unregister_driver" +} +elf_symbol { + id: 0x29d6d842 + name: "hid_validate_values" + is_defined: true + symbol_type: FUNCTION + crc: 0x67c1cd41 + type_id: 0xe10f9802 + full_name: "hid_validate_values" +} elf_symbol { id: 0x21d35235 name: "hidp_hid_driver" @@ -353669,6 +362704,15 @@ elf_symbol { type_id: 0x12c15d81 full_name: "ieee802154_xmit_hw_error" } +elf_symbol { + id: 0xb9f64e9d + name: "iget5_locked" + is_defined: true + symbol_type: FUNCTION + crc: 0xcccf338c + type_id: 0x1210c1fa + full_name: "iget5_locked" +} elf_symbol { id: 0x4a5f3d41 name: "ignore_console_lock_warning" @@ -353678,6 +362722,24 @@ elf_symbol { type_id: 0x74d29cf1 full_name: "ignore_console_lock_warning" } +elf_symbol { + id: 0x4292b79d + name: "igrab" + is_defined: true + symbol_type: FUNCTION + crc: 0x49b765c7 + type_id: 0x1d8c491d + full_name: "igrab" +} +elf_symbol { + id: 0xb779176d + name: "ihold" + is_defined: true + symbol_type: FUNCTION + crc: 0xaafc22eb + type_id: 0x167935b9 + full_name: "ihold" +} elf_symbol { id: 0x98a39db9 name: "iio_alloc_pollfunc" @@ -353732,6 +362794,15 @@ elf_symbol { type_id: 0xa98cedf4 full_name: "iio_channel_get" } +elf_symbol { + id: 0x0b446726 + name: "iio_channel_get_all" + is_defined: true + symbol_type: FUNCTION + crc: 0x30387314 + type_id: 0xa974af20 + full_name: "iio_channel_get_all" +} elf_symbol { id: 0x8aa99af0 name: "iio_channel_release" @@ -353741,6 +362812,15 @@ elf_symbol { type_id: 0x1ef16b9c full_name: "iio_channel_release" } +elf_symbol { + id: 0x5ecdc560 + name: "iio_channel_release_all" + is_defined: true + symbol_type: FUNCTION + crc: 0x47935be9 + type_id: 0x1ef16b9c + full_name: "iio_channel_release_all" +} elf_symbol { id: 0x7ee06725 name: "iio_dealloc_pollfunc" @@ -353984,6 +363064,15 @@ elf_symbol { type_id: 0x16dc304e full_name: "iio_trigger_unregister" } +elf_symbol { + id: 0xdf3e8655 + name: "iio_update_buffers" + is_defined: true + symbol_type: FUNCTION + crc: 0x7cc9b292 + type_id: 0x9b15020e + full_name: "iio_update_buffers" +} elf_symbol { id: 0x6f2f4bd1 name: "iio_write_channel_raw" @@ -353993,6 +363082,15 @@ elf_symbol { type_id: 0x92755a6c full_name: "iio_write_channel_raw" } +elf_symbol { + id: 0xf87ecda4 + name: "ilookup5" + is_defined: true + symbol_type: FUNCTION + crc: 0x3c5a783a + type_id: 0x12101463 + full_name: "ilookup5" +} elf_symbol { id: 0x00b4d2da name: "import_iovec" @@ -354011,6 +363109,15 @@ elf_symbol { type_id: 0x9399e12a full_name: "in4_pton" } +elf_symbol { + id: 0xcc6510bd + name: "in6_dev_finish_destroy" + is_defined: true + symbol_type: FUNCTION + crc: 0x71b83d03 + type_id: 0x1e704726 + full_name: "in6_dev_finish_destroy" +} elf_symbol { id: 0xc93c3b7d name: "in6_pton" @@ -354047,6 +363154,24 @@ elf_symbol { type_id: 0xb1b78fab full_name: "in_egroup_p" } +elf_symbol { + id: 0x63d665a4 + name: "in_group_p" + is_defined: true + symbol_type: FUNCTION + crc: 0x8b8059bd + type_id: 0xb1b78fab + full_name: "in_group_p" +} +elf_symbol { + id: 0x8efc83b2 + name: "inc_nlink" + is_defined: true + symbol_type: FUNCTION + crc: 0xd16fc9d0 + type_id: 0x167935b9 + full_name: "inc_nlink" +} elf_symbol { id: 0x53baed4c name: "inc_node_page_state" @@ -354245,6 +363370,15 @@ elf_symbol { type_id: 0x5d05d02e full_name: "init_pseudo" } +elf_symbol { + id: 0xa64f3c31 + name: "init_special_inode" + is_defined: true + symbol_type: FUNCTION + crc: 0x0b1432c5 + type_id: 0x160abbb8 + full_name: "init_special_inode" +} elf_symbol { id: 0x7dce8737 name: "init_srcu_struct" @@ -354308,6 +363442,60 @@ elf_symbol { type_id: 0x1378736d full_name: "init_wait_var_entry" } +elf_symbol { + id: 0x7a805e08 + name: "inode_dio_wait" + is_defined: true + symbol_type: FUNCTION + crc: 0xe5edf4d7 + type_id: 0x167935b9 + full_name: "inode_dio_wait" +} +elf_symbol { + id: 0x318d9226 + name: "inode_init_once" + is_defined: true + symbol_type: FUNCTION + crc: 0xfcba10c7 + type_id: 0x167935b9 + full_name: "inode_init_once" +} +elf_symbol { + id: 0x4e9dfa3b + name: "inode_init_owner" + is_defined: true + symbol_type: FUNCTION + crc: 0x2924f2e6 + type_id: 0x13129118 + full_name: "inode_init_owner" +} +elf_symbol { + id: 0x7c74ccbc + name: "inode_maybe_inc_iversion" + is_defined: true + symbol_type: FUNCTION + crc: 0xb431e564 + type_id: 0xf9f0c251 + full_name: "inode_maybe_inc_iversion" +} +elf_symbol { + id: 0xf4ae7c22 + name: "inode_newsize_ok" + is_defined: true + symbol_type: FUNCTION + crc: 0x3ee4bf76 + type_id: 0x936a3614 + full_name: "inode_newsize_ok" +} +elf_symbol { + id: 0x2b7e86c2 + name: "inode_set_flags" + is_defined: true + symbol_type: FUNCTION + crc: 0x6d364533 + type_id: 0x177e4178 + full_name: "inode_set_flags" +} elf_symbol { id: 0x18eeb52f name: "input_alloc_absinfo" @@ -354524,6 +363712,15 @@ elf_symbol { type_id: 0x158f9726 full_name: "input_set_capability" } +elf_symbol { + id: 0x31a5a9d7 + name: "input_set_poll_interval" + is_defined: true + symbol_type: FUNCTION + crc: 0xaf8d6e4f + type_id: 0x159ef67f + full_name: "input_set_poll_interval" +} elf_symbol { id: 0xfa66175a name: "input_set_timestamp" @@ -354533,6 +363730,15 @@ elf_symbol { type_id: 0x14cff3f5 full_name: "input_set_timestamp" } +elf_symbol { + id: 0x3975a1c8 + name: "input_setup_polling" + is_defined: true + symbol_type: FUNCTION + crc: 0xe6795292 + type_id: 0x99ae995e + full_name: "input_setup_polling" +} elf_symbol { id: 0x6a48a444 name: "input_unregister_device" @@ -354641,6 +363847,24 @@ elf_symbol { type_id: 0x1b4c69f5 full_name: "interval_tree_remove" } +elf_symbol { + id: 0x22167fe7 + name: "invalidate_bdev" + is_defined: true + symbol_type: FUNCTION + crc: 0xe6a5cbed + type_id: 0x1393d7c4 + full_name: "invalidate_bdev" +} +elf_symbol { + id: 0x38472bf4 + name: "invalidate_inode_pages2_range" + is_defined: true + symbol_type: FUNCTION + crc: 0x91936719 + type_id: 0x98214125 + full_name: "invalidate_inode_pages2_range" +} elf_symbol { id: 0xc3e2d4ae name: "invalidate_mapping_pages" @@ -354758,6 +363982,15 @@ elf_symbol { type_id: 0x1b338a63 full_name: "iommu_detach_device_pasid" } +elf_symbol { + id: 0xc578c7af + name: "iommu_detach_group" + is_defined: true + symbol_type: FUNCTION + crc: 0x41cce3f8 + type_id: 0x1b18b5bc + full_name: "iommu_detach_group" +} elf_symbol { id: 0x4c05b91e name: "iommu_dev_disable_feature" @@ -355091,6 +364324,33 @@ elf_symbol { type_id: 0x1a5fed1b full_name: "iounmap" } +elf_symbol { + id: 0x382b3272 + name: "iov_iter_advance" + is_defined: true + symbol_type: FUNCTION + crc: 0x4a850157 + type_id: 0x189472bc + full_name: "iov_iter_advance" +} +elf_symbol { + id: 0x29ecb8e9 + name: "iov_iter_alignment" + is_defined: true + symbol_type: FUNCTION + crc: 0xd13c0fd5 + type_id: 0x3c97e3d9 + full_name: "iov_iter_alignment" +} +elf_symbol { + id: 0x3d6623cb + name: "iov_iter_get_pages2" + is_defined: true + symbol_type: FUNCTION + crc: 0x43784624 + type_id: 0x1f3dc21f + full_name: "iov_iter_get_pages2" +} elf_symbol { id: 0x71726a83 name: "iov_iter_init" @@ -355118,6 +364378,15 @@ elf_symbol { type_id: 0x189472bc full_name: "iov_iter_revert" } +elf_symbol { + id: 0x1c2c7614 + name: "iov_iter_single_seg_count" + is_defined: true + symbol_type: FUNCTION + crc: 0x1c396b24 + type_id: 0x9a04e7d8 + full_name: "iov_iter_single_seg_count" +} elf_symbol { id: 0x6c6beb07 name: "iova_domain_init_rcaches" @@ -355181,6 +364450,15 @@ elf_symbol { type_id: 0x1557244f full_name: "ip_compute_csum" } +elf_symbol { + id: 0x333700e4 + name: "ip_local_deliver" + is_defined: true + symbol_type: FUNCTION + crc: 0x20dcb3a1 + type_id: 0x9cd33969 + full_name: "ip_local_deliver" +} elf_symbol { id: 0x5234b1b5 name: "ip_local_out" @@ -355694,6 +364972,15 @@ elf_symbol { type_id: 0x1247424a full_name: "irq_gc_mask_set_bit" } +elf_symbol { + id: 0x508904bc + name: "irq_gc_set_wake" + is_defined: true + symbol_type: FUNCTION + crc: 0x12d2b40d + type_id: 0x9e49e56e + full_name: "irq_gc_set_wake" +} elf_symbol { id: 0xe8b2d7a6 name: "irq_generic_chip_ops" @@ -355847,6 +365134,15 @@ elf_symbol { type_id: 0x85d454a8 full_name: "irq_set_parent" } +elf_symbol { + id: 0x3b8e2bac + name: "irq_stat" + is_defined: true + symbol_type: OBJECT + crc: 0xcc365d07 + type_id: 0x0b098126 + full_name: "irq_stat" +} elf_symbol { id: 0xc89a8e29 name: "irq_to_desc" @@ -355901,6 +365197,15 @@ elf_symbol { type_id: 0x9bba7997 full_name: "is_ashmem_file" } +elf_symbol { + id: 0x65d49acf + name: "is_bad_inode" + is_defined: true + symbol_type: FUNCTION + crc: 0x11395a73 + type_id: 0xf8453f2e + full_name: "is_bad_inode" +} elf_symbol { id: 0x064a6e13 name: "is_console_locked" @@ -355956,6 +365261,15 @@ elf_symbol { type_id: 0x9c203488 full_name: "isolate_anon_lru_page" } +elf_symbol { + id: 0xbb7edccb + name: "iter_file_splice_write" + is_defined: true + symbol_type: FUNCTION + crc: 0x4d5b9d7d + type_id: 0x165fda2d + full_name: "iter_file_splice_write" +} elf_symbol { id: 0xd4b34ea6 name: "iterate_dir" @@ -355974,6 +365288,15 @@ elf_symbol { type_id: 0x9659ea27 full_name: "iterate_fd" } +elf_symbol { + id: 0xca27ab6b + name: "iunique" + is_defined: true + symbol_type: FUNCTION + crc: 0x371ada39 + type_id: 0x14827bad + full_name: "iunique" +} elf_symbol { id: 0x124d42c2 name: "iw_handler_get_spy" @@ -356415,6 +365738,15 @@ elf_symbol { type_id: 0x10985193 full_name: "kick_all_cpus_sync" } +elf_symbol { + id: 0xe4128490 + name: "kick_process" + is_defined: true + symbol_type: FUNCTION + crc: 0xf7f30b89 + type_id: 0x17de3be6 + full_name: "kick_process" +} elf_symbol { id: 0xb1072fb1 name: "kill_anon_super" @@ -356424,6 +365756,15 @@ elf_symbol { type_id: 0x1923cb99 full_name: "kill_anon_super" } +elf_symbol { + id: 0xe657d525 + name: "kill_block_super" + is_defined: true + symbol_type: FUNCTION + crc: 0x0ae50695 + type_id: 0x1923cb99 + full_name: "kill_block_super" +} elf_symbol { id: 0x661955d6 name: "kill_fasync" @@ -356514,6 +365855,15 @@ elf_symbol { type_id: 0x5eef7e83 full_name: "kmem_cache_alloc" } +elf_symbol { + id: 0x3b959429 + name: "kmem_cache_alloc_lru" + is_defined: true + symbol_type: FUNCTION + crc: 0x390004c6 + type_id: 0x5de26741 + full_name: "kmem_cache_alloc_lru" +} elf_symbol { id: 0x86921e4b name: "kmem_cache_alloc_node" @@ -357828,6 +367178,15 @@ elf_symbol { type_id: 0x927aedd4 full_name: "led_mc_calc_color_components" } +elf_symbol { + id: 0xbea2c272 + name: "led_set_brightness_nosleep" + is_defined: true + symbol_type: FUNCTION + crc: 0x8d7fee8c + type_id: 0x1d3cefc2 + full_name: "led_set_brightness_nosleep" +} elf_symbol { id: 0x2e74d698 name: "led_set_brightness_sync" @@ -357999,6 +367358,24 @@ elf_symbol { type_id: 0xc8585588 full_name: "llist_reverse_order" } +elf_symbol { + id: 0x6b29ddfb + name: "load_nls" + is_defined: true + symbol_type: FUNCTION + crc: 0x14646232 + type_id: 0x4e6eaff2 + full_name: "load_nls" +} +elf_symbol { + id: 0xc05c2da4 + name: "load_nls_default" + is_defined: true + symbol_type: FUNCTION + crc: 0xbeb78729 + type_id: 0x4f4e564c + full_name: "load_nls_default" +} elf_symbol { id: 0xaaab26df name: "lock_sock_nested" @@ -358179,6 +367556,42 @@ elf_symbol { type_id: 0xf1236ad6 full_name: "mac_pton" } +elf_symbol { + id: 0xf4530070 + name: "make_bad_inode" + is_defined: true + symbol_type: FUNCTION + crc: 0xfc3a4c5b + type_id: 0x167935b9 + full_name: "make_bad_inode" +} +elf_symbol { + id: 0x7ee18475 + name: "mark_buffer_async_write" + is_defined: true + symbol_type: FUNCTION + crc: 0x747d8323 + type_id: 0x16c5a8cd + full_name: "mark_buffer_async_write" +} +elf_symbol { + id: 0x18bd1341 + name: "mark_buffer_dirty" + is_defined: true + symbol_type: FUNCTION + crc: 0xeebcd79e + type_id: 0x16c5a8cd + full_name: "mark_buffer_dirty" +} +elf_symbol { + id: 0xac8ea5a3 + name: "mark_buffer_write_io_error" + is_defined: true + symbol_type: FUNCTION + crc: 0x1161eeb7 + type_id: 0x16c5a8cd + full_name: "mark_buffer_write_io_error" +} elf_symbol { id: 0x5a1c51ee name: "mark_page_accessed" @@ -358566,6 +367979,15 @@ elf_symbol { type_id: 0x173d80e7 full_name: "media_entity_remove_links" } +elf_symbol { + id: 0xda5dc517 + name: "media_entity_setup_link" + is_defined: true + symbol_type: FUNCTION + crc: 0xe5982bfb + type_id: 0x901c3c62 + full_name: "media_entity_setup_link" +} elf_symbol { id: 0x84278a73 name: "media_graph_walk_cleanup" @@ -358674,6 +368096,15 @@ elf_symbol { type_id: 0x59f18b0b full_name: "mem_cgroup_from_id" } +elf_symbol { + id: 0x6da682ae + name: "mem_cgroup_update_lru_size" + is_defined: true + symbol_type: FUNCTION + crc: 0x351f9cbb + type_id: 0x1ef25648 + full_name: "mem_cgroup_update_lru_size" +} elf_symbol { id: 0x7f797603 name: "mem_dump_obj" @@ -359039,6 +368470,15 @@ elf_symbol { type_id: 0x142e3633 full_name: "mii_ethtool_gset" } +elf_symbol { + id: 0x863e9436 + name: "mii_link_ok" + is_defined: true + symbol_type: FUNCTION + crc: 0x957e09ab + type_id: 0x9906a4a5 + full_name: "mii_link_ok" +} elf_symbol { id: 0x1579ecd2 name: "mii_nway_restart" @@ -359309,6 +368749,15 @@ elf_symbol { type_id: 0xf4f34784 full_name: "mipi_dsi_packet_format_is_long" } +elf_symbol { + id: 0xb6dbcbcc + name: "mipi_dsi_packet_format_is_short" + is_defined: true + symbol_type: FUNCTION + crc: 0x238b099f + type_id: 0xf4f34784 + full_name: "mipi_dsi_packet_format_is_short" +} elf_symbol { id: 0xdca2a3c4 name: "mipi_dsi_picture_parameter_set" @@ -359786,6 +369235,15 @@ elf_symbol { type_id: 0x1c081607 full_name: "mmc_set_timing" } +elf_symbol { + id: 0xa6d8e105 + name: "mmc_sw_reset" + is_defined: true + symbol_type: FUNCTION + crc: 0x59a1e31f + type_id: 0x9d19aa55 + full_name: "mmc_sw_reset" +} elf_symbol { id: 0x44bb49dc name: "mmc_switch" @@ -359831,6 +369289,24 @@ elf_symbol { type_id: 0x10985193 full_name: "mmu_notifier_synchronize" } +elf_symbol { + id: 0x8ba1a556 + name: "mnt_drop_write_file" + is_defined: true + symbol_type: FUNCTION + crc: 0x85bbfbfb + type_id: 0x16a2cb2b + full_name: "mnt_drop_write_file" +} +elf_symbol { + id: 0xa5e98cbe + name: "mnt_want_write_file" + is_defined: true + symbol_type: FUNCTION + crc: 0xd1d02e22 + type_id: 0x9bba7997 + full_name: "mnt_want_write_file" +} elf_symbol { id: 0xdf7b9a78 name: "mod_delayed_work_on" @@ -359885,6 +369361,33 @@ elf_symbol { type_id: 0x1251a683 full_name: "module_put" } +elf_symbol { + id: 0x18e8ea11 + name: "mount_bdev" + is_defined: true + symbol_type: FUNCTION + crc: 0x60df2cf1 + type_id: 0x81599f70 + full_name: "mount_bdev" +} +elf_symbol { + id: 0x1405e8c0 + name: "mpage_read_folio" + is_defined: true + symbol_type: FUNCTION + crc: 0xec56bcef + type_id: 0x956e6587 + full_name: "mpage_read_folio" +} +elf_symbol { + id: 0x84babda3 + name: "mpage_readahead" + is_defined: true + symbol_type: FUNCTION + crc: 0x6659babe + type_id: 0x19fc4f29 + full_name: "mpage_readahead" +} elf_symbol { id: 0xbedab58b name: "msi_first_desc" @@ -360713,6 +370216,15 @@ elf_symbol { type_id: 0xfebe0504 full_name: "nf_ct_invert_tuple" } +elf_symbol { + id: 0x8b1dfb41 + name: "nf_register_net_hook" + is_defined: true + symbol_type: FUNCTION + crc: 0x10b94e6c + type_id: 0x9e67eade + full_name: "nf_register_net_hook" +} elf_symbol { id: 0x43078d96 name: "nf_register_net_hooks" @@ -360722,6 +370234,15 @@ elf_symbol { type_id: 0x9e768b87 full_name: "nf_register_net_hooks" } +elf_symbol { + id: 0x840dad92 + name: "nf_unregister_net_hook" + is_defined: true + symbol_type: FUNCTION + crc: 0xd4486d5d + type_id: 0x137f5862 + full_name: "nf_unregister_net_hook" +} elf_symbol { id: 0x619db28f name: "nf_unregister_net_hooks" @@ -361046,6 +370567,15 @@ elf_symbol { type_id: 0x2d64ae3e full_name: "noop_llseek" } +elf_symbol { + id: 0x16059afd + name: "notify_change" + is_defined: true + symbol_type: FUNCTION + crc: 0x1869b2a0 + type_id: 0x9e20f17d + full_name: "notify_change" +} elf_symbol { id: 0x1560f116 name: "nr_cpu_ids" @@ -361073,6 +370603,15 @@ elf_symbol { type_id: 0x6720d32f full_name: "nr_irqs" } +elf_symbol { + id: 0xea37502b + name: "nr_running" + is_defined: true + symbol_type: FUNCTION + crc: 0x909a8abf + type_id: 0xcedb7efb + full_name: "nr_running" +} elf_symbol { id: 0x0bb7f730 name: "nr_swap_pages" @@ -361856,6 +371395,15 @@ elf_symbol { type_id: 0x91f5fad8 full_name: "of_get_display_timing" } +elf_symbol { + id: 0x824695bc + name: "of_get_display_timings" + is_defined: true + symbol_type: FUNCTION + crc: 0x98a67fd3 + type_id: 0x4d744842 + full_name: "of_get_display_timings" +} elf_symbol { id: 0x05a46d27 name: "of_get_drm_display_mode" @@ -362036,6 +371584,15 @@ elf_symbol { type_id: 0x796e9f62 full_name: "of_graph_get_remote_node" } +elf_symbol { + id: 0x9539ac95 + name: "of_graph_get_remote_port" + is_defined: true + symbol_type: FUNCTION + crc: 0xc8fcc975 + type_id: 0x7a78fdc4 + full_name: "of_graph_get_remote_port" +} elf_symbol { id: 0xc699a239 name: "of_graph_get_remote_port_parent" @@ -362342,6 +371899,15 @@ elf_symbol { type_id: 0x119fef8e full_name: "of_phy_simple_xlate" } +elf_symbol { + id: 0xb27a823c + name: "of_pinctrl_get" + is_defined: true + symbol_type: FUNCTION + crc: 0xdcb4edab + type_id: 0xe2abbe2e + full_name: "of_pinctrl_get" +} elf_symbol { id: 0x840bde05 name: "of_platform_depopulate" @@ -362612,6 +372178,15 @@ elf_symbol { type_id: 0x5a09df06 full_name: "of_translate_address" } +elf_symbol { + id: 0xee187039 + name: "of_usb_get_dr_mode_by_phy" + is_defined: true + symbol_type: FUNCTION + crc: 0x2ea7a3cd + type_id: 0x66525607 + full_name: "of_usb_get_dr_mode_by_phy" +} elf_symbol { id: 0x7d8fe18b name: "of_usb_get_phy_mode" @@ -362711,6 +372286,24 @@ elf_symbol { type_id: 0x6720d32f full_name: "overflowuid" } +elf_symbol { + id: 0xdea2b008 + name: "page_cache_next_miss" + is_defined: true + symbol_type: FUNCTION + crc: 0x8865f190 + type_id: 0x340d6f59 + full_name: "page_cache_next_miss" +} +elf_symbol { + id: 0xdf2c83f5 + name: "page_cache_prev_miss" + is_defined: true + symbol_type: FUNCTION + crc: 0x01049f80 + type_id: 0x340d6f59 + full_name: "page_cache_prev_miss" +} elf_symbol { id: 0x60d84cc3 name: "page_endio" @@ -362777,6 +372370,15 @@ elf_symbol { type_id: 0x6a8ce717 full_name: "page_mapping" } +elf_symbol { + id: 0x8cc91d1b + name: "page_owner_inited" + is_defined: true + symbol_type: OBJECT + crc: 0xda1512e5 + type_id: 0x8e47c273 + full_name: "page_owner_inited" +} elf_symbol { id: 0x44e50ff8 name: "page_pinner_inited" @@ -362867,6 +372469,33 @@ elf_symbol { type_id: 0x19658c89 full_name: "page_reporting_unregister" } +elf_symbol { + id: 0x4271852e + name: "page_zero_new_buffers" + is_defined: true + symbol_type: FUNCTION + crc: 0x670fcbd9 + type_id: 0x103ff2f5 + full_name: "page_zero_new_buffers" +} +elf_symbol { + id: 0x0fe80546 + name: "pagecache_get_page" + is_defined: true + symbol_type: FUNCTION + crc: 0xcba46f3c + type_id: 0xb82f817c + full_name: "pagecache_get_page" +} +elf_symbol { + id: 0x9b003f99 + name: "pagevec_lookup_range_tag" + is_defined: true + symbol_type: FUNCTION + crc: 0xb9dae17e + type_id: 0xcfac76b5 + full_name: "pagevec_lookup_range_tag" +} elf_symbol { id: 0x37d86bb7 name: "panic" @@ -363398,6 +373027,51 @@ elf_symbol { type_id: 0x999ac92f full_name: "pci_enable_wake" } +elf_symbol { + id: 0x71efe2ab + name: "pci_epc_map_addr" + is_defined: true + symbol_type: FUNCTION + crc: 0xa4495341 + type_id: 0x98c5cae2 + full_name: "pci_epc_map_addr" +} +elf_symbol { + id: 0xb862467e + name: "pci_epc_mem_alloc_addr" + is_defined: true + symbol_type: FUNCTION + crc: 0xa302beb4 + type_id: 0x53d4f2c3 + full_name: "pci_epc_mem_alloc_addr" +} +elf_symbol { + id: 0xffb38889 + name: "pci_epc_mem_free_addr" + is_defined: true + symbol_type: FUNCTION + crc: 0x2e8936d4 + type_id: 0x1782373c + full_name: "pci_epc_mem_free_addr" +} +elf_symbol { + id: 0x8a8d0c1a + name: "pci_epc_set_bar" + is_defined: true + symbol_type: FUNCTION + crc: 0x40154d6a + type_id: 0x98c78004 + full_name: "pci_epc_set_bar" +} +elf_symbol { + id: 0xb7b28cad + name: "pci_epc_unmap_addr" + is_defined: true + symbol_type: FUNCTION + crc: 0x12d3201e + type_id: 0x15dd5f06 + full_name: "pci_epc_unmap_addr" +} elf_symbol { id: 0x3852868c name: "pci_find_bus" @@ -363551,6 +373225,15 @@ elf_symbol { type_id: 0x5373932e full_name: "pci_ioremap_bar" } +elf_symbol { + id: 0x231d5ec9 + name: "pci_ioremap_wc_bar" + is_defined: true + symbol_type: FUNCTION + crc: 0x4dfe36f9 + type_id: 0x5373932e + full_name: "pci_ioremap_wc_bar" +} elf_symbol { id: 0xec861eec name: "pci_iounmap" @@ -363668,6 +373351,15 @@ elf_symbol { type_id: 0x99f942bc full_name: "pci_msix_vec_count" } +elf_symbol { + id: 0x2f7fc8d4 + name: "pci_num_vf" + is_defined: true + symbol_type: FUNCTION + crc: 0x7c684115 + type_id: 0x99f942bc + full_name: "pci_num_vf" +} elf_symbol { id: 0x180e6903 name: "pci_pio_to_address" @@ -363767,6 +373459,15 @@ elf_symbol { type_id: 0x986a45dd full_name: "pci_request_region" } +elf_symbol { + id: 0xc89c8974 + name: "pci_request_regions" + is_defined: true + symbol_type: FUNCTION + crc: 0x750cbe7f + type_id: 0x99010068 + full_name: "pci_request_regions" +} elf_symbol { id: 0xde0961b5 name: "pci_request_selected_regions" @@ -364064,6 +373765,15 @@ elf_symbol { type_id: 0x12feb005 full_name: "percpu_counter_add_batch" } +elf_symbol { + id: 0x7efbd192 + name: "percpu_counter_batch" + is_defined: true + symbol_type: OBJECT + crc: 0x05240ee7 + type_id: 0x6720d32f + full_name: "percpu_counter_batch" +} elf_symbol { id: 0x22f7748e name: "percpu_down_write" @@ -364505,6 +374215,15 @@ elf_symbol { type_id: 0x911c4ef8 full_name: "phy_mii_ioctl" } +elf_symbol { + id: 0xce039362 + name: "phy_mipi_dphy_config_validate" + is_defined: true + symbol_type: FUNCTION + crc: 0x881bad5e + type_id: 0x94418fe1 + full_name: "phy_mipi_dphy_config_validate" +} elf_symbol { id: 0x890d0269 name: "phy_mipi_dphy_get_default_config" @@ -365225,6 +374944,15 @@ elf_symbol { type_id: 0x9b558913 full_name: "pinctrl_enable" } +elf_symbol { + id: 0x35b1ed7b + name: "pinctrl_find_gpio_range_from_pin" + is_defined: true + symbol_type: FUNCTION + crc: 0x25629e8a + type_id: 0x1a1c4881 + full_name: "pinctrl_find_gpio_range_from_pin" +} elf_symbol { id: 0xf8bcc2db name: "pinctrl_force_default" @@ -365450,6 +375178,15 @@ elf_symbol { type_id: 0x9b4d90bf full_name: "pinctrl_utils_reserve_map" } +elf_symbol { + id: 0x62c010b9 + name: "pinmux_generic_add_function" + is_defined: true + symbol_type: FUNCTION + crc: 0x6264567f + type_id: 0x9ba346af + full_name: "pinmux_generic_add_function" +} elf_symbol { id: 0x013abbf5 name: "pinmux_generic_get_function" @@ -365801,6 +375538,15 @@ elf_symbol { type_id: 0x9dee9fa0 full_name: "pm_clk_add" } +elf_symbol { + id: 0x5b13a53d + name: "pm_clk_add_clk" + is_defined: true + symbol_type: FUNCTION + crc: 0x319b67c2 + type_id: 0x9de1e6d5 + full_name: "pm_clk_add_clk" +} elf_symbol { id: 0xaba73bf2 name: "pm_clk_create" @@ -366080,6 +375826,15 @@ elf_symbol { type_id: 0xfea45b04 full_name: "pm_suspend_default_s2idle" } +elf_symbol { + id: 0x7ee02b97 + name: "pm_suspend_global_flags" + is_defined: true + symbol_type: OBJECT + crc: 0x42635d55 + type_id: 0x4585663f + full_name: "pm_suspend_global_flags" +} elf_symbol { id: 0x2e13b831 name: "pm_suspend_target_state" @@ -366170,6 +375925,15 @@ elf_symbol { type_id: 0x169d12f4 full_name: "power_supply_changed" } +elf_symbol { + id: 0x50bfe1d8 + name: "power_supply_class" + is_defined: true + symbol_type: OBJECT + crc: 0x3e11d97d + type_id: 0x2a4c6b85 + full_name: "power_supply_class" +} elf_symbol { id: 0xa9ebbb66 name: "power_supply_find_ocv2cap_table" @@ -366233,6 +375997,15 @@ elf_symbol { type_id: 0x9ba3144f full_name: "power_supply_get_property" } +elf_symbol { + id: 0xf20efe74 + name: "power_supply_get_property_from_supplier" + is_defined: true + symbol_type: FUNCTION + crc: 0xf188af38 + type_id: 0x9ba3144f + full_name: "power_supply_get_property_from_supplier" +} elf_symbol { id: 0xd28bb85a name: "power_supply_is_system_supplied" @@ -366926,6 +376699,15 @@ elf_symbol { type_id: 0x910aa3e9 full_name: "public_key_verify_signature" } +elf_symbol { + id: 0xd38a2f2a + name: "push_cpu_stop" + is_defined: true + symbol_type: FUNCTION + crc: 0x99bd5133 + type_id: 0x9bafba63 + full_name: "push_cpu_stop" +} elf_symbol { id: 0x11d4227b name: "put_cmsg" @@ -366971,6 +376753,15 @@ elf_symbol { type_id: 0x1f796a1c full_name: "put_iova_domain" } +elf_symbol { + id: 0xb9bfc7b9 + name: "put_pages_list" + is_defined: true + symbol_type: FUNCTION + crc: 0xf0009fee + type_id: 0x1f00dfeb + full_name: "put_pages_list" +} elf_symbol { id: 0x1744651d name: "put_pid" @@ -367025,6 +376816,24 @@ elf_symbol { type_id: 0x1f00dfeb full_name: "putback_movable_pages" } +elf_symbol { + id: 0x8dafa617 + name: "pvclock_gtod_register_notifier" + is_defined: true + symbol_type: FUNCTION + crc: 0xb4b97c90 + type_id: 0x9b6d4a33 + full_name: "pvclock_gtod_register_notifier" +} +elf_symbol { + id: 0x5ae13553 + name: "pwm_adjust_config" + is_defined: true + symbol_type: FUNCTION + crc: 0x22bed5ce + type_id: 0x97889594 + full_name: "pwm_adjust_config" +} elf_symbol { id: 0x53ee2234 name: "pwm_apply_state" @@ -367736,6 +377545,15 @@ elf_symbol { type_id: 0xb8307855 full_name: "read_cache_page" } +elf_symbol { + id: 0x2886690b + name: "readahead_gfp_mask" + is_defined: true + symbol_type: FUNCTION + crc: 0x74cada1a + type_id: 0x4a02979c + full_name: "readahead_gfp_mask" +} elf_symbol { id: 0x46082c90 name: "reboot_mode" @@ -367772,6 +377590,15 @@ elf_symbol { type_id: 0x98e049ee full_name: "reclaim_shmem_address_space" } +elf_symbol { + id: 0x8fe1956e + name: "redirty_page_for_writepage" + is_defined: true + symbol_type: FUNCTION + crc: 0x9d126bc3 + type_id: 0xf6be4a6e + full_name: "redirty_page_for_writepage" +} elf_symbol { id: 0x3b03aaea name: "refcount_dec_and_lock" @@ -368879,6 +378706,15 @@ elf_symbol { type_id: 0x9f59863d full_name: "regulator_set_voltage_time_sel" } +elf_symbol { + id: 0x12ab7c99 + name: "regulator_suspend_enable" + is_defined: true + symbol_type: FUNCTION + crc: 0x668c29cc + type_id: 0x9cb7a3ee + full_name: "regulator_suspend_enable" +} elf_symbol { id: 0x21b06e02 name: "regulator_sync_voltage" @@ -369086,6 +378922,15 @@ elf_symbol { type_id: 0x700bbe07 full_name: "reservation_ww_class" } +elf_symbol { + id: 0xb15014ad + name: "reserve_iova" + is_defined: true + symbol_type: FUNCTION + crc: 0x207ae624 + type_id: 0x48135354 + full_name: "reserve_iova" +} elf_symbol { id: 0x089f5fe6 name: "reset_control_acquire" @@ -369185,6 +379030,15 @@ elf_symbol { type_id: 0x47f7e87e full_name: "return_address" } +elf_symbol { + id: 0xd8c7c137 + name: "reweight_task" + is_defined: true + symbol_type: FUNCTION + crc: 0x3a6ca281 + type_id: 0x1642b8aa + full_name: "reweight_task" +} elf_symbol { id: 0xa3f52060 name: "rfkill_alloc" @@ -369437,6 +379291,15 @@ elf_symbol { type_id: 0x100e6fc8 full_name: "root_device_unregister" } +elf_symbol { + id: 0xbd83c333 + name: "root_mem_cgroup" + is_defined: true + symbol_type: OBJECT + crc: 0x9ab36151 + type_id: 0x1d5bae2a + full_name: "root_mem_cgroup" +} elf_symbol { id: 0x7d858174 name: "root_task_group" @@ -369851,6 +379714,24 @@ elf_symbol { type_id: 0x8e47c273 full_name: "rps_needed" } +elf_symbol { + id: 0xde4d20e6 + name: "rsa_parse_priv_key" + is_defined: true + symbol_type: FUNCTION + crc: 0xd75b20aa + type_id: 0x9377de98 + full_name: "rsa_parse_priv_key" +} +elf_symbol { + id: 0x6a82e2a4 + name: "rsa_parse_pub_key" + is_defined: true + symbol_type: FUNCTION + crc: 0x89ae7aa0 + type_id: 0x9377de98 + full_name: "rsa_parse_pub_key" +} elf_symbol { id: 0xec5e9065 name: "rt6_lookup" @@ -370139,6 +380020,24 @@ elf_symbol { type_id: 0x1192ec84 full_name: "sb800_prefetch" } +elf_symbol { + id: 0x75781cce + name: "sb_min_blocksize" + is_defined: true + symbol_type: FUNCTION + crc: 0xe004c464 + type_id: 0x95a7fa69 + full_name: "sb_min_blocksize" +} +elf_symbol { + id: 0xd3eab591 + name: "sb_set_blocksize" + is_defined: true + symbol_type: FUNCTION + crc: 0x94ed96ed + type_id: 0x95a7fa69 + full_name: "sb_set_blocksize" +} elf_symbol { id: 0x806f167c name: "sbitmap_add_wait_queue" @@ -370391,6 +380290,15 @@ elf_symbol { type_id: 0x9823bcf6 full_name: "schedule_timeout" } +elf_symbol { + id: 0x3bc1cc84 + name: "schedule_timeout_idle" + is_defined: true + symbol_type: FUNCTION + crc: 0x7807f0f8 + type_id: 0x9823bcf6 + full_name: "schedule_timeout_idle" +} elf_symbol { id: 0xb05cd7bd name: "schedule_timeout_interruptible" @@ -370769,6 +380677,15 @@ elf_symbol { type_id: 0x93dfa305 full_name: "sdhci_add_host" } +elf_symbol { + id: 0xf399cd48 + name: "sdhci_adma_write_desc" + is_defined: true + symbol_type: FUNCTION + crc: 0x01560eef + type_id: 0x1ecc6a5d + full_name: "sdhci_adma_write_desc" +} elf_symbol { id: 0x05840f35 name: "sdhci_cleanup_host" @@ -370850,6 +380767,15 @@ elf_symbol { type_id: 0x1f55a7e6 full_name: "sdhci_get_property" } +elf_symbol { + id: 0x15f1b772 + name: "sdhci_pltfm_clk_get_max_clock" + is_defined: true + symbol_type: FUNCTION + crc: 0x91fe6c0a + type_id: 0xc0843ed1 + full_name: "sdhci_pltfm_clk_get_max_clock" +} elf_symbol { id: 0x38940a34 name: "sdhci_pltfm_free" @@ -370868,6 +380794,15 @@ elf_symbol { type_id: 0xb019e307 full_name: "sdhci_pltfm_init" } +elf_symbol { + id: 0x9f8a16f0 + name: "sdhci_pltfm_unregister" + is_defined: true + symbol_type: FUNCTION + crc: 0xca4fab1b + type_id: 0x924d155a + full_name: "sdhci_pltfm_unregister" +} elf_symbol { id: 0xad3b5931 name: "sdhci_remove_host" @@ -370940,6 +380875,24 @@ elf_symbol { type_id: 0x1f5b92f5 full_name: "sdhci_set_bus_width" } +elf_symbol { + id: 0x92732196 + name: "sdhci_set_clock" + is_defined: true + symbol_type: FUNCTION + crc: 0xefd8b1a4 + type_id: 0x1fd10421 + full_name: "sdhci_set_clock" +} +elf_symbol { + id: 0xd29660d9 + name: "sdhci_set_power_and_bus_voltage" + is_defined: true + symbol_type: FUNCTION + crc: 0x3726c8e5 + type_id: 0x1f835b6f + full_name: "sdhci_set_power_and_bus_voltage" +} elf_symbol { id: 0xa6c906b5 name: "sdhci_set_power_noreg" @@ -370949,6 +380902,15 @@ elf_symbol { type_id: 0x1f835b6f full_name: "sdhci_set_power_noreg" } +elf_symbol { + id: 0x77dba918 + name: "sdhci_set_uhs_signaling" + is_defined: true + symbol_type: FUNCTION + crc: 0x30232005 + type_id: 0x1fd10421 + full_name: "sdhci_set_uhs_signaling" +} elf_symbol { id: 0x5cc4535c name: "sdhci_setup_host" @@ -371075,6 +381037,15 @@ elf_symbol { type_id: 0x99685c26 full_name: "sdio_readsb" } +elf_symbol { + id: 0xe1092bbd + name: "sdio_readw" + is_defined: true + symbol_type: FUNCTION + crc: 0xf956e25f + type_id: 0x04a35d6c + full_name: "sdio_readw" +} elf_symbol { id: 0x3003f174 name: "sdio_register_driver" @@ -371174,6 +381145,15 @@ elf_symbol { type_id: 0x980bf22a full_name: "sdio_writesb" } +elf_symbol { + id: 0xb3b8cbe2 + name: "sdio_writew" + is_defined: true + symbol_type: FUNCTION + crc: 0xc72a8a38 + type_id: 0x1656fc12 + full_name: "sdio_writew" +} elf_symbol { id: 0xec171799 name: "security_file_ioctl" @@ -371183,6 +381163,15 @@ elf_symbol { type_id: 0x9aa0b156 full_name: "security_file_ioctl" } +elf_symbol { + id: 0xb7265b03 + name: "security_inode_init_security" + is_defined: true + symbol_type: FUNCTION + crc: 0x1e6fb814 + type_id: 0x9b034295 + full_name: "security_inode_init_security" +} elf_symbol { id: 0x24b9d7ed name: "security_sk_classify_flow" @@ -371705,6 +381694,15 @@ elf_symbol { type_id: 0x130ef56d full_name: "set_next_entity" } +elf_symbol { + id: 0x7e3fb039 + name: "set_nlink" + is_defined: true + symbol_type: FUNCTION + crc: 0x190daaac + type_id: 0x176f2021 + full_name: "set_nlink" +} elf_symbol { id: 0xaae00157 name: "set_normalized_timespec64" @@ -371732,6 +381730,15 @@ elf_symbol { type_id: 0x9c203488 full_name: "set_page_dirty_lock" } +elf_symbol { + id: 0x500f328c + name: "set_page_writeback" + is_defined: true + symbol_type: FUNCTION + crc: 0x7c2bfc58 + type_id: 0xff048ca3 + full_name: "set_page_writeback" +} elf_symbol { id: 0xe19d98a9 name: "set_task_cpu" @@ -371750,6 +381757,15 @@ elf_symbol { type_id: 0x142e0390 full_name: "set_user_nice" } +elf_symbol { + id: 0x7d05df74 + name: "setattr_prepare" + is_defined: true + symbol_type: FUNCTION + crc: 0xd880e38e + type_id: 0x9e20c0b8 + full_name: "setattr_prepare" +} elf_symbol { id: 0x5d6d169f name: "setup_udp_tunnel_sock" @@ -371948,6 +381964,24 @@ elf_symbol { type_id: 0xf07462c6 full_name: "sget_fc" } +elf_symbol { + id: 0x0b4df89e + name: "sha1_init" + is_defined: true + symbol_type: FUNCTION + crc: 0x50624917 + type_id: 0x1c5eb40a + full_name: "sha1_init" +} +elf_symbol { + id: 0x7996527c + name: "sha1_transform" + is_defined: true + symbol_type: FUNCTION + crc: 0x5e0ccb9f + type_id: 0x1caa303b + full_name: "sha1_transform" +} elf_symbol { id: 0x7f3b48aa name: "shmem_file_setup" @@ -372642,6 +382676,60 @@ elf_symbol { type_id: 0x11b644af full_name: "skb_unlink" } +elf_symbol { + id: 0x706a5214 + name: "skcipher_alloc_instance_simple" + is_defined: true + symbol_type: FUNCTION + crc: 0xae8e9e95 + type_id: 0x034a2603 + full_name: "skcipher_alloc_instance_simple" +} +elf_symbol { + id: 0x56fe28ac + name: "skcipher_register_instance" + is_defined: true + symbol_type: FUNCTION + crc: 0xd2b42989 + type_id: 0x9aaf7e51 + full_name: "skcipher_register_instance" +} +elf_symbol { + id: 0xfb0d7eaf + name: "skcipher_walk_aead_decrypt" + is_defined: true + symbol_type: FUNCTION + crc: 0x9356d0fe + type_id: 0x946d2b92 + full_name: "skcipher_walk_aead_decrypt" +} +elf_symbol { + id: 0x910f3594 + name: "skcipher_walk_aead_encrypt" + is_defined: true + symbol_type: FUNCTION + crc: 0x4e121a7c + type_id: 0x946d2b92 + full_name: "skcipher_walk_aead_encrypt" +} +elf_symbol { + id: 0x6a015d4f + name: "skcipher_walk_done" + is_defined: true + symbol_type: FUNCTION + crc: 0xe799e196 + type_id: 0x9522132a + full_name: "skcipher_walk_done" +} +elf_symbol { + id: 0xcb37c2fd + name: "skcipher_walk_virt" + is_defined: true + symbol_type: FUNCTION + crc: 0xa1045e95 + type_id: 0x94d5972f + full_name: "skcipher_walk_virt" +} elf_symbol { id: 0x57adf54a name: "skip_spaces" @@ -373110,6 +383198,15 @@ elf_symbol { type_id: 0x9e61ffc7 full_name: "snd_pcm_create_iec958_consumer_default" } +elf_symbol { + id: 0xa4da49fe + name: "snd_pcm_create_iec958_consumer_hw_params" + is_defined: true + symbol_type: FUNCTION + crc: 0x11eba48e + type_id: 0x96d423b4 + full_name: "snd_pcm_create_iec958_consumer_hw_params" +} elf_symbol { id: 0xb9a87429 name: "snd_pcm_fill_iec958_consumer" @@ -373380,6 +383477,15 @@ elf_symbol { type_id: 0x98e6a470 full_name: "snd_pcm_stop" } +elf_symbol { + id: 0xc26d0753 + name: "snd_pcm_stop_xrun" + is_defined: true + symbol_type: FUNCTION + crc: 0x789b9ad6 + type_id: 0x98aeb261 + full_name: "snd_pcm_stop_xrun" +} elf_symbol { id: 0x1f5649eb name: "snd_sgbuf_get_addr" @@ -374181,6 +384287,24 @@ elf_symbol { type_id: 0x9e6bce91 full_name: "snd_soc_jack_add_gpios" } +elf_symbol { + id: 0xc92a02ef + name: "snd_soc_jack_add_zones" + is_defined: true + symbol_type: FUNCTION + crc: 0x1e0a39c0 + type_id: 0x9e6f0e68 + full_name: "snd_soc_jack_add_zones" +} +elf_symbol { + id: 0x804bafc3 + name: "snd_soc_jack_get_type" + is_defined: true + symbol_type: FUNCTION + crc: 0x0056842b + type_id: 0x9e65fffe + full_name: "snd_soc_jack_get_type" +} elf_symbol { id: 0xabad0839 name: "snd_soc_jack_notifier_register" @@ -375567,6 +385691,15 @@ elf_symbol { type_id: 0x1b3aea40 full_name: "static_key_disable" } +elf_symbol { + id: 0x8ac195eb + name: "static_key_enable" + is_defined: true + symbol_type: FUNCTION + crc: 0x6b2b69f7 + type_id: 0x1b3aea40 + full_name: "static_key_enable" +} elf_symbol { id: 0xd09568e0 name: "static_key_slow_dec" @@ -375930,6 +386063,15 @@ elf_symbol { type_id: 0x1d20fb22 full_name: "suspend_set_ops" } +elf_symbol { + id: 0xd5e0987f + name: "swiotlb_max_segment" + is_defined: true + symbol_type: FUNCTION + crc: 0x5b6b0329 + type_id: 0xcedb7efb + full_name: "swiotlb_max_segment" +} elf_symbol { id: 0x1fe11014 name: "sync_blockdev" @@ -375939,6 +386081,15 @@ elf_symbol { type_id: 0x9e8b6578 full_name: "sync_blockdev" } +elf_symbol { + id: 0x75fe69c4 + name: "sync_dirty_buffer" + is_defined: true + symbol_type: FUNCTION + crc: 0xcedf4474 + type_id: 0x9bdd1a71 + full_name: "sync_dirty_buffer" +} elf_symbol { id: 0x2a267913 name: "sync_file_create" @@ -375957,6 +386108,24 @@ elf_symbol { type_id: 0xc68f67ec full_name: "sync_file_get_fence" } +elf_symbol { + id: 0xfb2634da + name: "sync_filesystem" + is_defined: true + symbol_type: FUNCTION + crc: 0x9b53df8a + type_id: 0x943b7925 + full_name: "sync_filesystem" +} +elf_symbol { + id: 0xe7caa0b7 + name: "sync_inode_metadata" + is_defined: true + symbol_type: FUNCTION + crc: 0xf4644f98 + type_id: 0x9afd0449 + full_name: "sync_inode_metadata" +} elf_symbol { id: 0x3da4fd63 name: "synchronize_irq" @@ -376110,6 +386279,15 @@ elf_symbol { type_id: 0x4585663f full_name: "sysctl_sched_features" } +elf_symbol { + id: 0x87812861 + name: "sysctl_sched_latency" + is_defined: true + symbol_type: OBJECT + crc: 0xceee0cb7 + type_id: 0x4585663f + full_name: "sysctl_sched_latency" +} elf_symbol { id: 0x18d0dd21 name: "sysctl_vals" @@ -376434,6 +386612,15 @@ elf_symbol { type_id: 0x13f8b706 full_name: "system_wq" } +elf_symbol { + id: 0x5a86c789 + name: "tag_pages_for_writeback" + is_defined: true + symbol_type: FUNCTION + crc: 0x31d107da + type_id: 0x1539f399 + full_name: "tag_pages_for_writeback" +} elf_symbol { id: 0x2eda3aae name: "task_active_pid_ns" @@ -376713,6 +386900,15 @@ elf_symbol { type_id: 0xfca015af full_name: "tcpm_port_is_toggling" } +elf_symbol { + id: 0xd2070626 + name: "tcpm_register_port" + is_defined: true + symbol_type: FUNCTION + crc: 0xd95cde3e + type_id: 0x16949287 + full_name: "tcpm_register_port" +} elf_symbol { id: 0xdebe76ba name: "tcpm_sink_frs" @@ -376731,6 +386927,24 @@ elf_symbol { type_id: 0x129c1f38 full_name: "tcpm_sourcing_vbus" } +elf_symbol { + id: 0xfccd15d1 + name: "tcpm_tcpc_reset" + is_defined: true + symbol_type: FUNCTION + crc: 0xea220941 + type_id: 0x129c1f38 + full_name: "tcpm_tcpc_reset" +} +elf_symbol { + id: 0x591431f1 + name: "tcpm_unregister_port" + is_defined: true + symbol_type: FUNCTION + crc: 0x76eeda4b + type_id: 0x129c1f38 + full_name: "tcpm_unregister_port" +} elf_symbol { id: 0x6869c83d name: "tcpm_vbus_change" @@ -376740,6 +386954,24 @@ elf_symbol { type_id: 0x129c1f38 full_name: "tcpm_vbus_change" } +elf_symbol { + id: 0x7cfd9233 + name: "teo_cpu_get_util_threshold" + is_defined: true + symbol_type: FUNCTION + crc: 0x0482d3ad + type_id: 0x2864f998 + full_name: "teo_cpu_get_util_threshold" +} +elf_symbol { + id: 0xbd25c7d0 + name: "teo_cpu_set_util_threshold" + is_defined: true + symbol_type: FUNCTION + crc: 0xba6e00b6 + type_id: 0x099db0ca + full_name: "teo_cpu_set_util_threshold" +} elf_symbol { id: 0x5bbd3545 name: "thermal_cdev_update" @@ -376983,6 +387215,15 @@ elf_symbol { type_id: 0x3e2facf6 full_name: "timespec64_to_jiffies" } +elf_symbol { + id: 0xaed64d9d + name: "timestamp_truncate" + is_defined: true + symbol_type: FUNCTION + crc: 0xe6d28852 + type_id: 0xb98ee524 + full_name: "timestamp_truncate" +} elf_symbol { id: 0xa603e7df name: "tipc_dump_done" @@ -377046,6 +387287,15 @@ elf_symbol { type_id: 0x1c163406 full_name: "topology_update_thermal_pressure" } +elf_symbol { + id: 0x3217f3a4 + name: "touch_atime" + is_defined: true + symbol_type: FUNCTION + crc: 0x838565c7 + type_id: 0x1e3bdb22 + full_name: "touch_atime" +} elf_symbol { id: 0xf7dfdad1 name: "touch_softlockup_watchdog" @@ -377298,6 +387548,42 @@ elf_symbol { type_id: 0x10985193 full_name: "tracing_off" } +elf_symbol { + id: 0x3f07269b + name: "truncate_inode_pages" + is_defined: true + symbol_type: FUNCTION + crc: 0x30d50607 + type_id: 0x1566644a + full_name: "truncate_inode_pages" +} +elf_symbol { + id: 0x3c7c6ce9 + name: "truncate_inode_pages_final" + is_defined: true + symbol_type: FUNCTION + crc: 0xc3c0465a + type_id: 0x15f8fb52 + full_name: "truncate_inode_pages_final" +} +elf_symbol { + id: 0x7a43283c + name: "truncate_pagecache" + is_defined: true + symbol_type: FUNCTION + crc: 0x288af9d7 + type_id: 0x16e7aaa1 + full_name: "truncate_pagecache" +} +elf_symbol { + id: 0x44cd0751 + name: "truncate_setsize" + is_defined: true + symbol_type: FUNCTION + crc: 0x3a8f6a77 + type_id: 0x16e7aaa1 + full_name: "truncate_setsize" +} elf_symbol { id: 0x3d986fb5 name: "try_module_get" @@ -377325,6 +387611,15 @@ elf_symbol { type_id: 0x360a8ce9 full_name: "try_to_free_mem_cgroup_pages" } +elf_symbol { + id: 0x8fa1e478 + name: "try_to_writeback_inodes_sb" + is_defined: true + symbol_type: FUNCTION + crc: 0xaa6bae3f + type_id: 0x1b90a8d8 + full_name: "try_to_writeback_inodes_sb" +} elf_symbol { id: 0xe54aec5b name: "try_wait_for_completion" @@ -379386,6 +389681,15 @@ elf_symbol { type_id: 0x13f52df1 full_name: "uio_unregister_device" } +elf_symbol { + id: 0xa13a99d8 + name: "unload_nls" + is_defined: true + symbol_type: FUNCTION + crc: 0xf632a6eb + type_id: 0x10aeeb41 + full_name: "unload_nls" +} elf_symbol { id: 0x9f5197f0 name: "unlock_buffer" @@ -379395,6 +389699,15 @@ elf_symbol { type_id: 0x16c5a8cd full_name: "unlock_buffer" } +elf_symbol { + id: 0x5ad67dea + name: "unlock_new_inode" + is_defined: true + symbol_type: FUNCTION + crc: 0x8e87ba89 + type_id: 0x167935b9 + full_name: "unlock_new_inode" +} elf_symbol { id: 0x11fd8c82 name: "unlock_page" @@ -379845,6 +390158,15 @@ elf_symbol { type_id: 0x95c42336 full_name: "usb_add_hcd" } +elf_symbol { + id: 0xea314c1f + name: "usb_add_phy" + is_defined: true + symbol_type: FUNCTION + crc: 0xb3aac08b + type_id: 0x9e7bd8f3 + full_name: "usb_add_phy" +} elf_symbol { id: 0xdc59a2d7 name: "usb_add_phy_dev" @@ -380178,6 +390500,15 @@ elf_symbol { type_id: 0x1fbef67f full_name: "usb_deregister" } +elf_symbol { + id: 0x201afca9 + name: "usb_deregister_dev" + is_defined: true + symbol_type: FUNCTION + crc: 0x6835cf09 + type_id: 0x18159e1c + full_name: "usb_deregister_dev" +} elf_symbol { id: 0xd75ad246 name: "usb_device_match_id" @@ -380358,6 +390689,15 @@ elf_symbol { type_id: 0x9dcedb70 full_name: "usb_find_common_endpoints" } +elf_symbol { + id: 0x899ff164 + name: "usb_find_interface" + is_defined: true + symbol_type: FUNCTION + crc: 0x8b21a5ec + type_id: 0x4d306964 + full_name: "usb_find_interface" +} elf_symbol { id: 0x4ec99a42 name: "usb_free_all_descriptors" @@ -380808,6 +391148,15 @@ elf_symbol { type_id: 0x33756485 full_name: "usb_hcds_loaded" } +elf_symbol { + id: 0x00a14c5c + name: "usb_hid_driver" + is_defined: true + symbol_type: OBJECT + crc: 0x06332c5c + type_id: 0x2def15e8 + full_name: "usb_hid_driver" +} elf_symbol { id: 0x868c5f6e name: "usb_hub_clear_tt_buffer" @@ -380862,6 +391211,15 @@ elf_symbol { type_id: 0x9ebe912b full_name: "usb_interface_id" } +elf_symbol { + id: 0x83676405 + name: "usb_interrupt_msg" + is_defined: true + symbol_type: FUNCTION + crc: 0xc5e153c9 + type_id: 0x9fce79d4 + full_name: "usb_interrupt_msg" +} elf_symbol { id: 0x89c78ea4 name: "usb_kill_anchored_urbs" @@ -380952,6 +391310,15 @@ elf_symbol { type_id: 0x11252cf3 full_name: "usb_phy_set_event" } +elf_symbol { + id: 0xbf06fcb7 + name: "usb_poison_anchored_urbs" + is_defined: true + symbol_type: FUNCTION + crc: 0x842f046d + type_id: 0x1d8d80fc + full_name: "usb_poison_anchored_urbs" +} elf_symbol { id: 0xcaff4b1e name: "usb_poison_urb" @@ -381015,6 +391382,15 @@ elf_symbol { type_id: 0x18d9f669 full_name: "usb_queue_reset_device" } +elf_symbol { + id: 0xa60cf3b7 + name: "usb_register_dev" + is_defined: true + symbol_type: FUNCTION + crc: 0xf06b7687 + type_id: 0x950d2ca0 + full_name: "usb_register_dev" +} elf_symbol { id: 0x944deaea name: "usb_register_driver" @@ -381114,6 +391490,15 @@ elf_symbol { type_id: 0x580ef044 full_name: "usb_role_switch_get_drvdata" } +elf_symbol { + id: 0x9de82d32 + name: "usb_role_switch_get_role" + is_defined: true + symbol_type: FUNCTION + crc: 0xff42c374 + type_id: 0x9a23bd25 + full_name: "usb_role_switch_get_role" +} elf_symbol { id: 0x09c05733 name: "usb_role_switch_put" @@ -381492,6 +391877,15 @@ elf_symbol { type_id: 0x1675f88f full_name: "usb_unregister_notify" } +elf_symbol { + id: 0x9ea1c58f + name: "usb_wakeup_enabled_descendants" + is_defined: true + symbol_type: FUNCTION + crc: 0xa1709c0c + type_id: 0xcd844708 + full_name: "usb_wakeup_enabled_descendants" +} elf_symbol { id: 0x140d9164 name: "usb_wakeup_notification" @@ -381501,6 +391895,42 @@ elf_symbol { type_id: 0x12d17df8 full_name: "usb_wakeup_notification" } +elf_symbol { + id: 0xbbf007f4 + name: "usbnet_change_mtu" + is_defined: true + symbol_type: FUNCTION + crc: 0xdf1db1f5 + type_id: 0x90b5e896 + full_name: "usbnet_change_mtu" +} +elf_symbol { + id: 0xd28057f3 + name: "usbnet_defer_kevent" + is_defined: true + symbol_type: FUNCTION + crc: 0x6e3c218b + type_id: 0x1276a8bd + full_name: "usbnet_defer_kevent" +} +elf_symbol { + id: 0x580c56b8 + name: "usbnet_disconnect" + is_defined: true + symbol_type: FUNCTION + crc: 0xfe1e5ee6 + type_id: 0x18d9f669 + full_name: "usbnet_disconnect" +} +elf_symbol { + id: 0x8f0c866d + name: "usbnet_get_drvinfo" + is_defined: true + symbol_type: FUNCTION + crc: 0xa5701874 + type_id: 0x1cc68e0f + full_name: "usbnet_get_drvinfo" +} elf_symbol { id: 0x52816b1c name: "usbnet_get_endpoints" @@ -381510,6 +391940,33 @@ elf_symbol { type_id: 0x9e768332 full_name: "usbnet_get_endpoints" } +elf_symbol { + id: 0x4f4e9353 + name: "usbnet_get_link" + is_defined: true + symbol_type: FUNCTION + crc: 0xa8e792b0 + type_id: 0x4951a397 + full_name: "usbnet_get_link" +} +elf_symbol { + id: 0x3f51a906 + name: "usbnet_get_link_ksettings_mii" + is_defined: true + symbol_type: FUNCTION + crc: 0x2d9393b2 + type_id: 0x914dbe16 + full_name: "usbnet_get_link_ksettings_mii" +} +elf_symbol { + id: 0x6515c416 + name: "usbnet_get_msglevel" + is_defined: true + symbol_type: FUNCTION + crc: 0xaa53e6df + type_id: 0x4951a397 + full_name: "usbnet_get_msglevel" +} elf_symbol { id: 0x19d80976 name: "usbnet_link_change" @@ -381519,6 +391976,150 @@ elf_symbol { type_id: 0x12448959 full_name: "usbnet_link_change" } +elf_symbol { + id: 0x6c854cb3 + name: "usbnet_nway_reset" + is_defined: true + symbol_type: FUNCTION + crc: 0x44c1d620 + type_id: 0x91296bda + full_name: "usbnet_nway_reset" +} +elf_symbol { + id: 0xcd021e80 + name: "usbnet_open" + is_defined: true + symbol_type: FUNCTION + crc: 0x37e3dac8 + type_id: 0x91296bda + full_name: "usbnet_open" +} +elf_symbol { + id: 0x147e4ad2 + name: "usbnet_probe" + is_defined: true + symbol_type: FUNCTION + crc: 0xa6db5d48 + type_id: 0x952154fc + full_name: "usbnet_probe" +} +elf_symbol { + id: 0x167360fc + name: "usbnet_read_cmd" + is_defined: true + symbol_type: FUNCTION + crc: 0xa46394ea + type_id: 0x9e5fdeba + full_name: "usbnet_read_cmd" +} +elf_symbol { + id: 0x69b1070f + name: "usbnet_read_cmd_nopm" + is_defined: true + symbol_type: FUNCTION + crc: 0x721f340d + type_id: 0x9e5fdeba + full_name: "usbnet_read_cmd_nopm" +} +elf_symbol { + id: 0x3be16591 + name: "usbnet_resume" + is_defined: true + symbol_type: FUNCTION + crc: 0xb279d24c + type_id: 0x95c144d5 + full_name: "usbnet_resume" +} +elf_symbol { + id: 0x6e3c0f91 + name: "usbnet_set_link_ksettings_mii" + is_defined: true + symbol_type: FUNCTION + crc: 0x3f50bb22 + type_id: 0x91cc9f9b + full_name: "usbnet_set_link_ksettings_mii" +} +elf_symbol { + id: 0x99cb2edf + name: "usbnet_set_msglevel" + is_defined: true + symbol_type: FUNCTION + crc: 0xcbf61848 + type_id: 0x1f15f9ca + full_name: "usbnet_set_msglevel" +} +elf_symbol { + id: 0x2325cd65 + name: "usbnet_skb_return" + is_defined: true + symbol_type: FUNCTION + crc: 0x7602f70e + type_id: 0x13ff1655 + full_name: "usbnet_skb_return" +} +elf_symbol { + id: 0x9cf79f8d + name: "usbnet_start_xmit" + is_defined: true + symbol_type: FUNCTION + crc: 0x64b56e3d + type_id: 0x5515f11d + full_name: "usbnet_start_xmit" +} +elf_symbol { + id: 0x2f365f93 + name: "usbnet_stop" + is_defined: true + symbol_type: FUNCTION + crc: 0x1328858d + type_id: 0x91296bda + full_name: "usbnet_stop" +} +elf_symbol { + id: 0x6229bd38 + name: "usbnet_suspend" + is_defined: true + symbol_type: FUNCTION + crc: 0xf5d2649e + type_id: 0x96011ad3 + full_name: "usbnet_suspend" +} +elf_symbol { + id: 0x90b81315 + name: "usbnet_tx_timeout" + is_defined: true + symbol_type: FUNCTION + crc: 0x93fad802 + type_id: 0x1d27ccfe + full_name: "usbnet_tx_timeout" +} +elf_symbol { + id: 0xb011e423 + name: "usbnet_write_cmd" + is_defined: true + symbol_type: FUNCTION + crc: 0xf6bbc53f + type_id: 0x9e5fde3c + full_name: "usbnet_write_cmd" +} +elf_symbol { + id: 0x27363bb6 + name: "usbnet_write_cmd_async" + is_defined: true + symbol_type: FUNCTION + crc: 0x54bea6a3 + type_id: 0x9e5fde3c + full_name: "usbnet_write_cmd_async" +} +elf_symbol { + id: 0x10932377 + name: "usbnet_write_cmd_nopm" + is_defined: true + symbol_type: FUNCTION + crc: 0xee57cfe4 + type_id: 0x9e5fde3c + full_name: "usbnet_write_cmd_nopm" +} elf_symbol { id: 0xb5437ef4 name: "usleep_range_state" @@ -381960,6 +392561,15 @@ elf_symbol { type_id: 0x9bba7997 full_name: "v4l2_fh_release" } +elf_symbol { + id: 0x538ad5cc + name: "v4l2_find_dv_timings_cap" + is_defined: true + symbol_type: FUNCTION + crc: 0x3aa68d7a + type_id: 0xf3248c4f + full_name: "v4l2_find_dv_timings_cap" +} elf_symbol { id: 0x2244c8f0 name: "v4l2_format_info" @@ -382419,6 +393029,42 @@ elf_symbol { type_id: 0x900d5d3b full_name: "v4l2_pipeline_link_notify" } +elf_symbol { + id: 0xb2eba8d7 + name: "v4l2_pipeline_pm_get" + is_defined: true + symbol_type: FUNCTION + crc: 0x12d08c2a + type_id: 0x9a25325b + full_name: "v4l2_pipeline_pm_get" +} +elf_symbol { + id: 0xa84f74e5 + name: "v4l2_pipeline_pm_put" + is_defined: true + symbol_type: FUNCTION + crc: 0xce6853d3 + type_id: 0x173d80e7 + full_name: "v4l2_pipeline_pm_put" +} +elf_symbol { + id: 0x64b2fdfd + name: "v4l2_print_dv_timings" + is_defined: true + symbol_type: FUNCTION + crc: 0x08402862 + type_id: 0x1fe91863 + full_name: "v4l2_print_dv_timings" +} +elf_symbol { + id: 0x34ad1913 + name: "v4l2_querymenu" + is_defined: true + symbol_type: FUNCTION + crc: 0x11003a10 + type_id: 0x9d30566e + full_name: "v4l2_querymenu" +} elf_symbol { id: 0x5f3882d0 name: "v4l2_s_ctrl" @@ -382437,6 +393083,15 @@ elf_symbol { type_id: 0x9df4075f full_name: "v4l2_s_parm_cap" } +elf_symbol { + id: 0x90eb49a1 + name: "v4l2_src_change_event_subdev_subscribe" + is_defined: true + symbol_type: FUNCTION + crc: 0xe05167de + type_id: 0x9d3b60fc + full_name: "v4l2_src_change_event_subdev_subscribe" +} elf_symbol { id: 0xac8d7ab3 name: "v4l2_src_change_event_subscribe" @@ -382482,6 +393137,33 @@ elf_symbol { type_id: 0x9d1d4664 full_name: "v4l2_subdev_link_validate_default" } +elf_symbol { + id: 0x5da8252d + name: "v4l2_subdev_notify_event" + is_defined: true + symbol_type: FUNCTION + crc: 0x9389db87 + type_id: 0x101d83a0 + full_name: "v4l2_subdev_notify_event" +} +elf_symbol { + id: 0x1e8152b6 + name: "v4l2_type_names" + is_defined: true + symbol_type: OBJECT + crc: 0x123959a1 + type_id: 0xf95ab7ac + full_name: "v4l2_type_names" +} +elf_symbol { + id: 0xd07f1826 + name: "v4l2_valid_dv_timings" + is_defined: true + symbol_type: FUNCTION + crc: 0x0af3d134 + type_id: 0xf2d3e848 + full_name: "v4l2_valid_dv_timings" +} elf_symbol { id: 0x7733b651 name: "v4l_bound_align_image" @@ -382986,6 +393668,15 @@ elf_symbol { type_id: 0x1eca8a34 full_name: "vhost_dev_cleanup" } +elf_symbol { + id: 0x14bde45c + name: "vhost_dev_flush" + is_defined: true + symbol_type: FUNCTION + crc: 0xdb5a9875 + type_id: 0x1eca8a34 + full_name: "vhost_dev_flush" +} elf_symbol { id: 0x429eeda3 name: "vhost_dev_init" @@ -383094,6 +393785,24 @@ elf_symbol { type_id: 0x90a73fa7 full_name: "video_device_alloc" } +elf_symbol { + id: 0x2e0c3fe5 + name: "video_device_pipeline_start" + is_defined: true + symbol_type: FUNCTION + crc: 0x7a4ef3ef + type_id: 0x9da46876 + full_name: "video_device_pipeline_start" +} +elf_symbol { + id: 0xae3c44c1 + name: "video_device_pipeline_stop" + is_defined: true + symbol_type: FUNCTION + crc: 0xc359213b + type_id: 0x10e07da0 + full_name: "video_device_pipeline_stop" +} elf_symbol { id: 0xb1b42a22 name: "video_device_release" @@ -383139,6 +393848,15 @@ elf_symbol { type_id: 0x1ed8d47c full_name: "videomode_from_timing" } +elf_symbol { + id: 0x6d215713 + name: "videomode_from_timings" + is_defined: true + symbol_type: FUNCTION + crc: 0x414d119a + type_id: 0x919a2688 + full_name: "videomode_from_timings" +} elf_symbol { id: 0x1bf9e9e5 name: "virtio_break_device" @@ -384219,6 +394937,15 @@ elf_symbol { type_id: 0xa7f744cd full_name: "wait_woken" } +elf_symbol { + id: 0x738279bf + name: "wake_bit_function" + is_defined: true + symbol_type: FUNCTION + crc: 0xca431c05 + type_id: 0x9d71353d + full_name: "wake_bit_function" +} elf_symbol { id: 0x7540b5a8 name: "wake_up_bit" @@ -384246,6 +394973,15 @@ elf_symbol { type_id: 0x9ac6895a full_name: "wake_up_process" } +elf_symbol { + id: 0x63928faf + name: "wake_up_state" + is_defined: true + symbol_type: FUNCTION + crc: 0xecf43f83 + type_id: 0x9bd09cc2 + full_name: "wake_up_state" +} elf_symbol { id: 0xecc7b6fc name: "wake_up_var" @@ -384489,6 +395225,15 @@ elf_symbol { type_id: 0x126f3be6 full_name: "wq_worker_comm" } +elf_symbol { + id: 0xa643ac3f + name: "write_inode_now" + is_defined: true + symbol_type: FUNCTION + crc: 0x627c55da + type_id: 0x9afd0449 + full_name: "write_inode_now" +} elf_symbol { id: 0x61731bd0 name: "ww_mutex_lock" @@ -384606,6 +395351,24 @@ elf_symbol { type_id: 0x5cf6a3cf full_name: "xa_store" } +elf_symbol { + id: 0xb5ba02d4 + name: "xas_find" + is_defined: true + symbol_type: FUNCTION + crc: 0x39c9d88c + type_id: 0x5ebf0597 + full_name: "xas_find" +} +elf_symbol { + id: 0x0fe35b07 + name: "xas_pause" + is_defined: true + symbol_type: FUNCTION + crc: 0x0fbc0c0e + type_id: 0x187c3067 + full_name: "xas_pause" +} elf_symbol { id: 0xebb799b4 name: "xdp_convert_zc_to_xdp_frame" @@ -385325,6 +396088,8 @@ interface { symbol_id: 0x5b94e7ac symbol_id: 0x41de13f7 symbol_id: 0xe284f532 + symbol_id: 0x98179c82 + symbol_id: 0xfa979d99 symbol_id: 0x6e1bc82e symbol_id: 0x9fa51b33 symbol_id: 0x228f3ab6 @@ -385337,6 +396102,8 @@ interface { symbol_id: 0xeaf0b860 symbol_id: 0x1bc9d7cd symbol_id: 0xd97b055a + symbol_id: 0xac51df48 + symbol_id: 0x2c42b675 symbol_id: 0x8920b575 symbol_id: 0x149a28b5 symbol_id: 0x1709df48 @@ -385359,6 +396126,10 @@ interface { symbol_id: 0xc8eb813d symbol_id: 0x7bf707d4 symbol_id: 0xbf1d0365 + symbol_id: 0x2d1c1f2d + symbol_id: 0x9bed4545 + symbol_id: 0xefdcf4c1 + symbol_id: 0x2f449b9e symbol_id: 0x2057d4fc symbol_id: 0x4598418e symbol_id: 0x587f0c74 @@ -385427,6 +396198,7 @@ interface { symbol_id: 0x1c1ee265 symbol_id: 0x77466fa6 symbol_id: 0x0b0f732e + symbol_id: 0xa061e45d symbol_id: 0xec903c93 symbol_id: 0x7149b35b symbol_id: 0x04e4be20 @@ -385456,8 +396228,11 @@ interface { symbol_id: 0x80f1cf36 symbol_id: 0x3e32c80e symbol_id: 0x5298aa39 + symbol_id: 0x6036d483 symbol_id: 0xaf8ee687 symbol_id: 0x746a66fc + symbol_id: 0x6a92cb2d + symbol_id: 0x6fc34fdb symbol_id: 0x47a334c4 symbol_id: 0xebf4b11f symbol_id: 0x5b1ea047 @@ -385474,6 +396249,7 @@ interface { symbol_id: 0x010ff5f2 symbol_id: 0xe3bb3be3 symbol_id: 0xdf924e64 + symbol_id: 0xb3d97fa3 symbol_id: 0xf245d4a3 symbol_id: 0x74b9825e symbol_id: 0xd672e937 @@ -385490,6 +396266,7 @@ interface { symbol_id: 0x88943e29 symbol_id: 0x1060f5aa symbol_id: 0x66da9aca + symbol_id: 0xd02fc75b symbol_id: 0xe97034af symbol_id: 0xdb78f816 symbol_id: 0x6db91312 @@ -385524,6 +396301,7 @@ interface { symbol_id: 0xb3ed4cf9 symbol_id: 0x9f86f628 symbol_id: 0x22bd6642 + symbol_id: 0x0b9d6bbc symbol_id: 0x040ec563 symbol_id: 0xa5f70021 symbol_id: 0xc8acd38c @@ -385540,6 +396318,8 @@ interface { symbol_id: 0x0ba13d85 symbol_id: 0x479db511 symbol_id: 0x603dcc7d + symbol_id: 0x68d1b187 + symbol_id: 0x9de4c040 symbol_id: 0x89d01efd symbol_id: 0xf680e61c symbol_id: 0x4cfc63ca @@ -385604,6 +396384,7 @@ interface { symbol_id: 0x3f068dc8 symbol_id: 0x2a48bf7d symbol_id: 0xe3a7489a + symbol_id: 0x9d948fe1 symbol_id: 0xf7c2da07 symbol_id: 0x1141e9bb symbol_id: 0xf263b97f @@ -385611,6 +396392,7 @@ interface { symbol_id: 0x2b453adc symbol_id: 0xd5276fa4 symbol_id: 0x98379aaf + symbol_id: 0x31b4eed9 symbol_id: 0x99aa632e symbol_id: 0xe68925b8 symbol_id: 0x6e3bb1cf @@ -385622,6 +396404,8 @@ interface { symbol_id: 0x55017671 symbol_id: 0x257c4bb9 symbol_id: 0x8aca43ec + symbol_id: 0xa2cf1eee + symbol_id: 0xeaddb422 symbol_id: 0x29a11d8a symbol_id: 0x208b66fa symbol_id: 0x4a440f54 @@ -385649,6 +396433,7 @@ interface { symbol_id: 0x7d0d7b3f symbol_id: 0xef62271a symbol_id: 0x243936f1 + symbol_id: 0xd8a7d75e symbol_id: 0x04e4f57e symbol_id: 0xb04d8b58 symbol_id: 0xd7d29ff4 @@ -385662,10 +396447,12 @@ interface { symbol_id: 0xb42422d5 symbol_id: 0xb3d70eab symbol_id: 0x0b48afa1 + symbol_id: 0x6d4cc1a2 symbol_id: 0x48420da9 symbol_id: 0x144db0a1 symbol_id: 0x192bbbd5 symbol_id: 0xadc13d20 + symbol_id: 0xbbd04d50 symbol_id: 0xc93c7d6d symbol_id: 0x9d00b8f0 symbol_id: 0x5e9397c4 @@ -385679,6 +396466,7 @@ interface { symbol_id: 0x8f1b1c1e symbol_id: 0xd6290b85 symbol_id: 0x3e4ab4f6 + symbol_id: 0xa0a77bb8 symbol_id: 0xa3b41867 symbol_id: 0x40034e11 symbol_id: 0x6e62463e @@ -385705,6 +396493,8 @@ interface { symbol_id: 0x7edcea8d symbol_id: 0x72c43156 symbol_id: 0x61e95c07 + symbol_id: 0xfc83b254 + symbol_id: 0x7e99bc71 symbol_id: 0x7c212080 symbol_id: 0x1ea5d323 symbol_id: 0xc1a482d8 @@ -385715,10 +396505,13 @@ interface { symbol_id: 0x88e9b222 symbol_id: 0x097e467e symbol_id: 0xfad1d9f5 + symbol_id: 0x167fc668 + symbol_id: 0xd6a514f5 symbol_id: 0xeccbc3c1 symbol_id: 0xbd2d27dc symbol_id: 0xe41b0c78 symbol_id: 0x13f466b7 + symbol_id: 0xc191b2f6 symbol_id: 0xe3e24295 symbol_id: 0xaedef3a2 symbol_id: 0xde725472 @@ -385750,6 +396543,7 @@ interface { symbol_id: 0xbe8d73f2 symbol_id: 0xaf658447 symbol_id: 0xe56edb7a + symbol_id: 0x9c2c2d71 symbol_id: 0xcac6b03d symbol_id: 0x4a5f5242 symbol_id: 0x08cd7e9d @@ -385760,21 +396554,29 @@ interface { symbol_id: 0xa01b20ce symbol_id: 0x73c83ef4 symbol_id: 0x46515de8 + symbol_id: 0x955e6fc1 + symbol_id: 0xfe20c6e3 symbol_id: 0x7b07c7f1 symbol_id: 0x968833a5 symbol_id: 0x09f2fded symbol_id: 0x23097c08 symbol_id: 0xe3ee70ae symbol_id: 0xcce6f612 + symbol_id: 0xa63eb82a symbol_id: 0xcd824552 + symbol_id: 0xb6d1fa25 symbol_id: 0x16809a5a + symbol_id: 0xfaa2e0a4 symbol_id: 0xc1ba0eb6 symbol_id: 0x13c17b96 symbol_id: 0xebcd0234 symbol_id: 0xa3af7947 symbol_id: 0x86527a4e + symbol_id: 0xf71b3e6c + symbol_id: 0xd0b4a794 symbol_id: 0x33f9278c symbol_id: 0x2e343246 + symbol_id: 0xa6e329cd symbol_id: 0x9c240ef1 symbol_id: 0x505f4289 symbol_id: 0xd5431a65 @@ -385783,6 +396585,7 @@ interface { symbol_id: 0x528da532 symbol_id: 0x530ad17d symbol_id: 0x6e0b473c + symbol_id: 0xcb807696 symbol_id: 0xbebf7d98 symbol_id: 0x6935b08b symbol_id: 0xd595bd2c @@ -385797,13 +396600,16 @@ interface { symbol_id: 0xc6c9353c symbol_id: 0xd738b678 symbol_id: 0x2a9c6616 + symbol_id: 0x6bce867e symbol_id: 0x4785a3dd symbol_id: 0x25f13dbe symbol_id: 0xf6faffcb symbol_id: 0x5cf60b10 + symbol_id: 0xcc2edef9 symbol_id: 0x61c82fb5 symbol_id: 0x53fba77d symbol_id: 0xe479b209 + symbol_id: 0x31a78b8a symbol_id: 0xa9225bf8 symbol_id: 0x33c527ab symbol_id: 0x5012fcd8 @@ -385814,6 +396620,8 @@ interface { symbol_id: 0x005c7625 symbol_id: 0xf3accb84 symbol_id: 0xef7737f8 + symbol_id: 0xa4527895 + symbol_id: 0x3644fdcd symbol_id: 0x9247dcb1 symbol_id: 0xfd04e27a symbol_id: 0xa124d3e0 @@ -385830,14 +396638,20 @@ interface { symbol_id: 0x9dbd7b92 symbol_id: 0x42312ccc symbol_id: 0xf432d1c9 + symbol_id: 0x02c8f91b symbol_id: 0xdcaa59a3 symbol_id: 0x7ebac47a symbol_id: 0xf586d5b6 + symbol_id: 0x1921d10d symbol_id: 0x1f554c2a + symbol_id: 0x343adff1 symbol_id: 0x93a4717b + symbol_id: 0x49c69e22 + symbol_id: 0x9e91661b symbol_id: 0xc189c2a7 symbol_id: 0x5ecff02f symbol_id: 0xe3ce1f52 + symbol_id: 0x4d354aab symbol_id: 0x3272ce60 symbol_id: 0x4d900d32 symbol_id: 0xe6eff83f @@ -385864,6 +396678,7 @@ interface { symbol_id: 0x0bf41403 symbol_id: 0x4dca46cc symbol_id: 0xf83fbd26 + symbol_id: 0xe261e8cc symbol_id: 0x18fde973 symbol_id: 0xe19d2bf8 symbol_id: 0x993f42ff @@ -385878,6 +396693,11 @@ interface { symbol_id: 0x3431d426 symbol_id: 0x8c174a7d symbol_id: 0xea8ce2b0 + symbol_id: 0x295c28cd + symbol_id: 0x10e93e46 + symbol_id: 0x49cebcae + symbol_id: 0x22de652b + symbol_id: 0xf928bf8a symbol_id: 0xe44dacb1 symbol_id: 0x5612c9d1 symbol_id: 0xa77effd1 @@ -385892,17 +396712,23 @@ interface { symbol_id: 0xe17999f4 symbol_id: 0x721b87b7 symbol_id: 0xacaadcc9 + symbol_id: 0xd14f3adb symbol_id: 0x5983841b symbol_id: 0x7d499dab + symbol_id: 0xeba1d6c7 + symbol_id: 0x204c04f7 symbol_id: 0xa09f7a4b symbol_id: 0x574e7b58 symbol_id: 0xf2c39651 symbol_id: 0x93303c51 symbol_id: 0x7d069e91 symbol_id: 0x0fa39b81 + symbol_id: 0x1a91ec8c symbol_id: 0x92518ec5 symbol_id: 0x9792c22e symbol_id: 0xe2d75052 + symbol_id: 0xf10ce16f + symbol_id: 0xa8cef421 symbol_id: 0x8d62858f symbol_id: 0xcef5d79f symbol_id: 0x91384eff @@ -385922,6 +396748,7 @@ interface { symbol_id: 0x947bd437 symbol_id: 0xbdbb0c65 symbol_id: 0xa1325610 + symbol_id: 0x06c7b387 symbol_id: 0x3a4e20d6 symbol_id: 0x237634b3 symbol_id: 0xb5ed74f6 @@ -385953,10 +396780,13 @@ interface { symbol_id: 0x0119fc41 symbol_id: 0xd9f43028 symbol_id: 0x39155e73 + symbol_id: 0x3947ecb4 symbol_id: 0x8a773cc3 symbol_id: 0x9545623c symbol_id: 0x558490b1 symbol_id: 0x8af2b51e + symbol_id: 0x5ab5402f + symbol_id: 0xaa213206 symbol_id: 0xe31bb308 symbol_id: 0x6a6dc806 symbol_id: 0xa56348c9 @@ -385970,6 +396800,8 @@ interface { symbol_id: 0xcc8dcd0c symbol_id: 0xcb4d15f3 symbol_id: 0x6a8145ff + symbol_id: 0x08824ed3 + symbol_id: 0xcbec9d66 symbol_id: 0xb0bf7fd6 symbol_id: 0xae5e5469 symbol_id: 0x6911084f @@ -385988,6 +396820,7 @@ interface { symbol_id: 0x7e705ab7 symbol_id: 0x7b03aae7 symbol_id: 0x92373f85 + symbol_id: 0x5e5d9a70 symbol_id: 0x104ffeec symbol_id: 0x6d4f31c4 symbol_id: 0xcf61fd25 @@ -385997,14 +396830,24 @@ interface { symbol_id: 0x32248e2a symbol_id: 0xe873a0cb symbol_id: 0x101ec6c5 + symbol_id: 0xbcec3880 + symbol_id: 0xa34c49b3 symbol_id: 0x5c33446d symbol_id: 0x423dad0f symbol_id: 0xc630c439 + symbol_id: 0x16d7641f + symbol_id: 0xc8ec671c + symbol_id: 0x60c24c4f + symbol_id: 0xa7548418 + symbol_id: 0xbbfa35c3 + symbol_id: 0x328bf22b + symbol_id: 0xbdceccc2 symbol_id: 0x3e69b303 symbol_id: 0x7f1a363f symbol_id: 0x2c11fea4 symbol_id: 0x45e62871 symbol_id: 0x85a11e58 + symbol_id: 0x1e8ffa55 symbol_id: 0xb614ca1f symbol_id: 0x2de60b3e symbol_id: 0x9cf075c5 @@ -386013,6 +396856,9 @@ interface { symbol_id: 0x41fdc249 symbol_id: 0x570f3032 symbol_id: 0xc42d0053 + symbol_id: 0x00296361 + symbol_id: 0xf574f9d9 + symbol_id: 0x8fa66546 symbol_id: 0x20097074 symbol_id: 0x863777a0 symbol_id: 0xcac5a7d5 @@ -386024,10 +396870,12 @@ interface { symbol_id: 0x4b7a8fd7 symbol_id: 0xcd36f539 symbol_id: 0x748c1fd7 + symbol_id: 0xc9400cec symbol_id: 0xaf461bff symbol_id: 0xd7757253 symbol_id: 0x1e8a7e23 symbol_id: 0xfe3875f6 + symbol_id: 0xb208306e symbol_id: 0x60b5a917 symbol_id: 0x1dd402e6 symbol_id: 0x070d1e2a @@ -386041,6 +396889,7 @@ interface { symbol_id: 0x3eb0f084 symbol_id: 0x832ab9cf symbol_id: 0xaa8affb8 + symbol_id: 0x5029bb46 symbol_id: 0x11f903b1 symbol_id: 0x25e320a3 symbol_id: 0xcd81b300 @@ -386067,6 +396916,8 @@ interface { symbol_id: 0x0991fcbf symbol_id: 0x693af5b0 symbol_id: 0x59d74b45 + symbol_id: 0x4fd98142 + symbol_id: 0x695c4baf symbol_id: 0x99d57c12 symbol_id: 0x3cb4db49 symbol_id: 0x3a6f3fb2 @@ -386077,10 +396928,13 @@ interface { symbol_id: 0x18752990 symbol_id: 0x448fc4e4 symbol_id: 0x121537db + symbol_id: 0x817c415a + symbol_id: 0x3fe8bcd7 symbol_id: 0x50605d97 symbol_id: 0xa5e991f6 symbol_id: 0x261c997e symbol_id: 0x3b6248c1 + symbol_id: 0x5ac6bcbc symbol_id: 0x18bac297 symbol_id: 0x1a849f34 symbol_id: 0x3f328d3c @@ -386112,6 +396966,7 @@ interface { symbol_id: 0x4bc6b114 symbol_id: 0x93751239 symbol_id: 0x70131d40 + symbol_id: 0xbe9f9d4f symbol_id: 0xda52fd4f symbol_id: 0x86f03c84 symbol_id: 0x498fea3f @@ -386122,21 +396977,29 @@ interface { symbol_id: 0xe48123a4 symbol_id: 0x00b7ed82 symbol_id: 0xe8cacf26 + symbol_id: 0xad588d93 + symbol_id: 0x05463d55 symbol_id: 0x8db62b4f symbol_id: 0xe9c87fab symbol_id: 0xdf07959f symbol_id: 0xafe46ece symbol_id: 0xe445d254 symbol_id: 0x64e2c288 + symbol_id: 0xc3add2dc symbol_id: 0xdc2af26c + symbol_id: 0xcc5017b7 symbol_id: 0x1362c5b0 + symbol_id: 0xaa2da792 symbol_id: 0x0e614ab0 symbol_id: 0xa68c0f10 symbol_id: 0xdcf22716 symbol_id: 0x4f980315 symbol_id: 0xe1489e0c + symbol_id: 0x8f23a62a + symbol_id: 0xd7f9868e symbol_id: 0x37776872 symbol_id: 0xfc735654 + symbol_id: 0x1ebb872f symbol_id: 0xea695d5b symbol_id: 0xd82141b7 symbol_id: 0xe520cb67 @@ -386145,6 +397008,7 @@ interface { symbol_id: 0xfb7cdd24 symbol_id: 0xc8703937 symbol_id: 0x61b56472 + symbol_id: 0x19dded7c symbol_id: 0xf32898c6 symbol_id: 0x332635cd symbol_id: 0xf06625d6 @@ -386159,13 +397023,16 @@ interface { symbol_id: 0x57a9a36a symbol_id: 0x21d8d29a symbol_id: 0x2e04cb9c + symbol_id: 0xdda667b0 symbol_id: 0x306b5ff7 symbol_id: 0x2fce8f78 symbol_id: 0xec7035fd symbol_id: 0xa9d55136 + symbol_id: 0xabc729f7 symbol_id: 0x75b174bb symbol_id: 0x506628ab symbol_id: 0x0d3c7607 + symbol_id: 0x527423dc symbol_id: 0xd3845a12 symbol_id: 0x6f146fe1 symbol_id: 0x678bb5ba @@ -386176,6 +397043,8 @@ interface { symbol_id: 0x5cc4ca5b symbol_id: 0x607a7f0a symbol_id: 0xca10f06e + symbol_id: 0x9d49459f + symbol_id: 0x759240ef symbol_id: 0x26324a1f symbol_id: 0x4ade2774 symbol_id: 0x704b9aae @@ -386192,14 +397061,20 @@ interface { symbol_id: 0xe2d7542c symbol_id: 0x988719fa symbol_id: 0x732a182b + symbol_id: 0xe5deb919 symbol_id: 0x54b2cd01 symbol_id: 0x188eab44 symbol_id: 0xe7584e1c + symbol_id: 0x684e5f4f symbol_id: 0x0d418d38 + symbol_id: 0x2121385f symbol_id: 0x50a83025 + symbol_id: 0x6d970e8c + symbol_id: 0x901d0e89 symbol_id: 0x04a824b5 symbol_id: 0xe6918e09 symbol_id: 0x4d4fd1cc + symbol_id: 0x888dea6d symbol_id: 0xace80c56 symbol_id: 0xa0ce156c symbol_id: 0x46787271 @@ -386226,6 +397101,7 @@ interface { symbol_id: 0x31457bed symbol_id: 0x62c13726 symbol_id: 0xafbca760 + symbol_id: 0xa48390ca symbol_id: 0x586a06d1 symbol_id: 0xda2d53f2 symbol_id: 0x50a5a949 @@ -386240,6 +397116,11 @@ interface { symbol_id: 0xac62c748 symbol_id: 0xa2bd1edf symbol_id: 0xa5b4e5b2 + symbol_id: 0xce7e7dff + symbol_id: 0x1a1d0854 + symbol_id: 0xf2890610 + symbol_id: 0xa3d5f70d + symbol_id: 0x72c79d80 symbol_id: 0xb6da564f symbol_id: 0x41c8d09b symbol_id: 0xe2ad11db @@ -386254,17 +397135,23 @@ interface { symbol_id: 0x76e879b6 symbol_id: 0xae5bbde9 symbol_id: 0x20d2ceb3 + symbol_id: 0x3d63616d symbol_id: 0xab37fc55 symbol_id: 0x49b95a49 + symbol_id: 0x2bfccca9 + symbol_id: 0x2a85f575 symbol_id: 0xb194c4c5 symbol_id: 0x61f8c8ae symbol_id: 0x0e92ee53 symbol_id: 0xb0c197a3 symbol_id: 0x761f292f symbol_id: 0xef7ad117 + symbol_id: 0x158c4cfa symbol_id: 0x4568ff8f symbol_id: 0xe918e2ec symbol_id: 0x13b2fb38 + symbol_id: 0xd6904c6d + symbol_id: 0xcad24ea3 symbol_id: 0x04365139 symbol_id: 0xd94bc301 symbol_id: 0x3fc5ffc9 @@ -386284,6 +397171,7 @@ interface { symbol_id: 0xbe3d9b79 symbol_id: 0x30004003 symbol_id: 0xb91d18b6 + symbol_id: 0x8b4c2f61 symbol_id: 0xb3b18fc4 symbol_id: 0x40d6a8c5 symbol_id: 0x931fa088 @@ -386315,10 +397203,13 @@ interface { symbol_id: 0x09ba106b symbol_id: 0xf9580976 symbol_id: 0x49b955bd + symbol_id: 0xfe6b6962 symbol_id: 0x18e67da1 symbol_id: 0x75a2f39e symbol_id: 0x7b5c377f symbol_id: 0x6436c788 + symbol_id: 0x1f1a25bd + symbol_id: 0xf09ef4d0 symbol_id: 0x609a86da symbol_id: 0x08a49528 symbol_id: 0xa03a7d43 @@ -386332,6 +397223,8 @@ interface { symbol_id: 0xaf7a4dba symbol_id: 0x743ea36d symbol_id: 0xc09d36c9 + symbol_id: 0xe100c3ad + symbol_id: 0x55476a7c symbol_id: 0x42dbeb24 symbol_id: 0xa13f65ff symbol_id: 0xf57e8f65 @@ -386350,6 +397243,7 @@ interface { symbol_id: 0xbf086359 symbol_id: 0xef6e6795 symbol_id: 0xb2d6f207 + symbol_id: 0x3b13741e symbol_id: 0xd8f3ca82 symbol_id: 0xff315556 symbol_id: 0x6d72699f @@ -386359,14 +397253,24 @@ interface { symbol_id: 0x0713b56c symbol_id: 0x83005ddd symbol_id: 0x5c535ca7 + symbol_id: 0xa7ceb432 + symbol_id: 0x32564229 symbol_id: 0x88a08d67 symbol_id: 0xe2682879 symbol_id: 0xdffbb8bf + symbol_id: 0xd21276a5 + symbol_id: 0x4a43bdfe + symbol_id: 0xd224caa5 + symbol_id: 0xcbc5fd52 + symbol_id: 0x0ab12991 + symbol_id: 0x12df1a91 + symbol_id: 0x67e2af24 symbol_id: 0xf3cb5921 symbol_id: 0xcb194ec9 symbol_id: 0x009c40ce symbol_id: 0x02473ce7 symbol_id: 0x65f99dde + symbol_id: 0x191846a3 symbol_id: 0x2497fb4d symbol_id: 0x37548d14 symbol_id: 0x6aa1a617 @@ -386375,6 +397279,9 @@ interface { symbol_id: 0x7d5529d3 symbol_id: 0xe10cee18 symbol_id: 0x477e3555 + symbol_id: 0x2160e0b7 + symbol_id: 0xf586b3bb + symbol_id: 0x97e630b0 symbol_id: 0xa70e8cd2 symbol_id: 0x5b327cd6 symbol_id: 0xe91cdbb3 @@ -386391,6 +397298,7 @@ interface { symbol_id: 0x7c261545 symbol_id: 0xf497de36 symbol_id: 0xf44f6a18 + symbol_id: 0x4c0a941a symbol_id: 0xfc85c168 symbol_id: 0xb6af2644 symbol_id: 0x96901dfb @@ -386399,6 +397307,7 @@ interface { symbol_id: 0x3f61ffe2 symbol_id: 0xab99b62a symbol_id: 0x4648ac0b + symbol_id: 0x6b7624f1 symbol_id: 0x97d65f20 symbol_id: 0xf84b240e symbol_id: 0xb63e140d @@ -386411,9 +397320,13 @@ interface { symbol_id: 0xcf1808d5 symbol_id: 0x01b711f3 symbol_id: 0xb0e141a3 + symbol_id: 0x4b52e164 symbol_id: 0xd6e3f912 + symbol_id: 0x52069d2d symbol_id: 0x640280c1 symbol_id: 0xb3b57b4d + symbol_id: 0xda249832 + symbol_id: 0x206fe2ef symbol_id: 0x5693f2df symbol_id: 0xb029aed0 symbol_id: 0xa762593e @@ -386466,6 +397379,7 @@ interface { symbol_id: 0xa5eaf571 symbol_id: 0x7c570dc6 symbol_id: 0x993e379e + symbol_id: 0x874fa015 symbol_id: 0x86a88093 symbol_id: 0xfbb6649f symbol_id: 0xa3514d5f @@ -386540,6 +397454,7 @@ interface { symbol_id: 0x82786c66 symbol_id: 0xd772fde3 symbol_id: 0x1abdc14f + symbol_id: 0x3eb51b20 symbol_id: 0xb9c34cbd symbol_id: 0x0bd7f049 symbol_id: 0xf54175ef @@ -386578,9 +397493,13 @@ interface { symbol_id: 0x61a552c6 symbol_id: 0x5a9da856 symbol_id: 0x1d853176 + symbol_id: 0xa8878d9e symbol_id: 0x1cb0de6c + symbol_id: 0x5cce4e68 + symbol_id: 0x5c0b88b2 symbol_id: 0xe0e9f920 symbol_id: 0xfba0da8c + symbol_id: 0x00f38540 symbol_id: 0x181f78de symbol_id: 0xbe6da55e symbol_id: 0x95792096 @@ -386595,11 +397514,13 @@ interface { symbol_id: 0x226328f4 symbol_id: 0x0b5d5f1c symbol_id: 0x1516f6b7 + symbol_id: 0x650319ec symbol_id: 0x4ffac461 symbol_id: 0xad8bab96 symbol_id: 0x528ef002 symbol_id: 0x90bf9007 symbol_id: 0xd76a9123 + symbol_id: 0x9eda4f26 symbol_id: 0xc0d4821a symbol_id: 0xaea1564a symbol_id: 0x0d1fc920 @@ -386678,6 +397599,7 @@ interface { symbol_id: 0x4cb4702d symbol_id: 0x0b067d4b symbol_id: 0xc0201123 + symbol_id: 0x4d722bb5 symbol_id: 0x2a322266 symbol_id: 0x57e1cd01 symbol_id: 0xf0581d11 @@ -386686,6 +397608,9 @@ interface { symbol_id: 0xabd39b51 symbol_id: 0x6dfac71b symbol_id: 0xb0184730 + symbol_id: 0xd289c43d + symbol_id: 0x6efa206d + symbol_id: 0x5cf37146 symbol_id: 0x427cedc9 symbol_id: 0x11fbb9ce symbol_id: 0xd4a0f991 @@ -386749,6 +397674,7 @@ interface { symbol_id: 0xb47c5ffe symbol_id: 0xdded4dcd symbol_id: 0x9dea2dda + symbol_id: 0x6bb6d4ca symbol_id: 0x8ea00f54 symbol_id: 0x521ad765 symbol_id: 0x0f9d7b5e @@ -386800,6 +397726,14 @@ interface { symbol_id: 0x9c1662dc symbol_id: 0x9e7fc289 symbol_id: 0x0e419b40 + symbol_id: 0x61aaf300 + symbol_id: 0x0d8df2d6 + symbol_id: 0xbe895b99 + symbol_id: 0x438a802b + symbol_id: 0xe05cfed6 + symbol_id: 0xb0d627f0 + symbol_id: 0x3b573ab8 + symbol_id: 0xb4ff03eb symbol_id: 0xb2bfcc0c symbol_id: 0x06192615 symbol_id: 0x9e3deb49 @@ -386807,6 +397741,7 @@ interface { symbol_id: 0xa84b7a9c symbol_id: 0x1c488fd9 symbol_id: 0x4a75c450 + symbol_id: 0x1ae20002 symbol_id: 0xc8e5adc6 symbol_id: 0xa0a33b62 symbol_id: 0xc80b76b2 @@ -386816,6 +397751,7 @@ interface { symbol_id: 0xfe061fe6 symbol_id: 0xcda0bdad symbol_id: 0x3c28dcec + symbol_id: 0xa383a6c1 symbol_id: 0x1ff124cb symbol_id: 0x80b6d91d symbol_id: 0x229b68f6 @@ -386829,6 +397765,7 @@ interface { symbol_id: 0x4ce62869 symbol_id: 0x6d77f512 symbol_id: 0xb3cbf3c8 + symbol_id: 0xb7533de5 symbol_id: 0x7a871d1c symbol_id: 0x91718d34 symbol_id: 0x65e5fa26 @@ -386842,9 +397779,12 @@ interface { symbol_id: 0xb29100f2 symbol_id: 0xef9eb644 symbol_id: 0xf91cb171 + symbol_id: 0xb242a940 symbol_id: 0xd156aa2c symbol_id: 0x00d9abe7 + symbol_id: 0xfa95bdc1 symbol_id: 0xb63845e5 + symbol_id: 0x52eaa51b symbol_id: 0x5332f89b symbol_id: 0xdfc28761 symbol_id: 0x75df86d2 @@ -386858,11 +397798,13 @@ interface { symbol_id: 0xdac60909 symbol_id: 0x39dbce1e symbol_id: 0x5a11b234 + symbol_id: 0xf42e28c4 symbol_id: 0x8a96e88d symbol_id: 0xbd2ef94c symbol_id: 0x580bab0e symbol_id: 0x48318742 symbol_id: 0xa11919c2 + symbol_id: 0x04880ada symbol_id: 0x25ef9f7a symbol_id: 0xd6393164 symbol_id: 0x6c7fb432 @@ -386882,6 +397824,7 @@ interface { symbol_id: 0x76052ea8 symbol_id: 0x754e3185 symbol_id: 0x72598679 + symbol_id: 0x91507af8 symbol_id: 0xd2c17be4 symbol_id: 0xc5d5f65e symbol_id: 0x6ca4b892 @@ -386902,6 +397845,7 @@ interface { symbol_id: 0xd84adb21 symbol_id: 0xed719736 symbol_id: 0x2b1e3d59 + symbol_id: 0x98850f9d symbol_id: 0x495f0223 symbol_id: 0x7fbd0d58 symbol_id: 0x06f2ea68 @@ -386916,6 +397860,7 @@ interface { symbol_id: 0x5f9864aa symbol_id: 0x966a7c42 symbol_id: 0xab62b21c + symbol_id: 0xfb23b117 symbol_id: 0x4f627b39 symbol_id: 0xda163e44 symbol_id: 0xb375007c @@ -386923,6 +397868,7 @@ interface { symbol_id: 0x0356dc1d symbol_id: 0x53eb2602 symbol_id: 0xcce97787 + symbol_id: 0x9901e8ee symbol_id: 0x4bc5faef symbol_id: 0xa06e08e9 symbol_id: 0x98bdb018 @@ -386959,8 +397905,10 @@ interface { symbol_id: 0x610edc84 symbol_id: 0xd71898b4 symbol_id: 0xc1167624 + symbol_id: 0x9f1f7cee symbol_id: 0xd89255c2 symbol_id: 0x962b6a68 + symbol_id: 0x15e1667b symbol_id: 0x33bbeca6 symbol_id: 0x4e0ae383 symbol_id: 0x81619b01 @@ -387028,6 +397976,7 @@ interface { symbol_id: 0x9b056e94 symbol_id: 0x2061f0ca symbol_id: 0xd878ab56 + symbol_id: 0xd53a5822 symbol_id: 0xb1469ae6 symbol_id: 0x3afbe534 symbol_id: 0x2cc0b276 @@ -387039,20 +397988,25 @@ interface { symbol_id: 0xec1b66f9 symbol_id: 0xac913841 symbol_id: 0x42676517 + symbol_id: 0xd5cc5ce2 symbol_id: 0xc3e46036 symbol_id: 0xcd2564d1 symbol_id: 0x2968f72a symbol_id: 0x0a2b21ec symbol_id: 0xbdd0f4c6 symbol_id: 0xe5e28fcd + symbol_id: 0xf8751b15 + symbol_id: 0xdd9947d5 symbol_id: 0xff08526f symbol_id: 0xc81e9eb3 symbol_id: 0x237a3562 + symbol_id: 0x5d9de9a7 symbol_id: 0x1d1f6717 symbol_id: 0x20c19184 symbol_id: 0xef67fe16 symbol_id: 0x9eca665b symbol_id: 0x3ea8bbd7 + symbol_id: 0xa3db58f1 symbol_id: 0x1257590d symbol_id: 0x833374c8 symbol_id: 0x717034d4 @@ -387069,12 +398023,17 @@ interface { symbol_id: 0x053cd2eb symbol_id: 0xd1471c13 symbol_id: 0x3359f049 + symbol_id: 0xc60881ee + symbol_id: 0xd9005076 symbol_id: 0xcb0ffe5b symbol_id: 0xa79ba8cc symbol_id: 0x23b67585 symbol_id: 0x1e81ded9 symbol_id: 0xfca661a6 + symbol_id: 0x8e0112d7 symbol_id: 0x0e52d725 + symbol_id: 0x162a73f7 + symbol_id: 0x7dcc32e4 symbol_id: 0x91309df9 symbol_id: 0xfdca589d symbol_id: 0xb50ff8bd @@ -387086,11 +398045,14 @@ interface { symbol_id: 0xbb92068e symbol_id: 0x81600265 symbol_id: 0x57a4fa38 + symbol_id: 0xdb6ddedf + symbol_id: 0x883df740 symbol_id: 0x551c18d1 symbol_id: 0xeb9b8f1f symbol_id: 0x4d669c6d symbol_id: 0x6715c595 symbol_id: 0x9f75c77b + symbol_id: 0x801e3d5d symbol_id: 0xd36400de symbol_id: 0x2c08983d symbol_id: 0x81bdacc5 @@ -387099,10 +398061,15 @@ interface { symbol_id: 0x50e383fc symbol_id: 0x823aeba5 symbol_id: 0xde96cb2f + symbol_id: 0x4c090f07 symbol_id: 0x171eca8a + symbol_id: 0x82537a82 symbol_id: 0x79187969 + symbol_id: 0x04f5a6e5 symbol_id: 0x52864a7e + symbol_id: 0x8d5ab7b4 symbol_id: 0xccc25fc1 + symbol_id: 0xb96af991 symbol_id: 0xb771d13e symbol_id: 0x53d11a8d symbol_id: 0x5489a975 @@ -387148,6 +398115,7 @@ interface { symbol_id: 0xf666562b symbol_id: 0xa5179b7b symbol_id: 0xc1583575 + symbol_id: 0x1ef313dc symbol_id: 0x67daf3cf symbol_id: 0xe5161e20 symbol_id: 0x31d27334 @@ -387205,6 +398173,7 @@ interface { symbol_id: 0xf233a4f2 symbol_id: 0x5f8e5002 symbol_id: 0x4bb20cbc + symbol_id: 0xe1beb7e3 symbol_id: 0x0d97ed87 symbol_id: 0x0aa80467 symbol_id: 0x92dcd9e0 @@ -387252,6 +398221,11 @@ interface { symbol_id: 0x04c32c7c symbol_id: 0x15eb01e7 symbol_id: 0x647c0881 + symbol_id: 0x349b4e0a + symbol_id: 0x11f117af + symbol_id: 0x781fabb2 + symbol_id: 0xe2544e4d + symbol_id: 0xdd8da0cf symbol_id: 0x19e74e36 symbol_id: 0xdb9d4783 symbol_id: 0x4c5f0ec2 @@ -387313,6 +398287,7 @@ interface { symbol_id: 0x22e51db4 symbol_id: 0x5a62c5df symbol_id: 0x20c43211 + symbol_id: 0xa09675ab symbol_id: 0xcdcce9e8 symbol_id: 0x67a68b2f symbol_id: 0x89e08852 @@ -387356,7 +398331,9 @@ interface { symbol_id: 0xdeeb802d symbol_id: 0x78407718 symbol_id: 0x88d6fe86 + symbol_id: 0xa4692a70 symbol_id: 0x3afde7ec + symbol_id: 0x6415475c symbol_id: 0x2bf23b7c symbol_id: 0x97301de5 symbol_id: 0x8ed64fa4 @@ -387403,6 +398380,7 @@ interface { symbol_id: 0xb08551d1 symbol_id: 0x5b0ad2ac symbol_id: 0xc576d59e + symbol_id: 0x0abc683e symbol_id: 0x7c053015 symbol_id: 0xff9fcdce symbol_id: 0xa34635ab @@ -387416,6 +398394,7 @@ interface { symbol_id: 0x92b974cd symbol_id: 0x57498e16 symbol_id: 0x888f691d + symbol_id: 0x86c1623f symbol_id: 0x36e39cf6 symbol_id: 0x6e37c2ad symbol_id: 0x91f58d29 @@ -387429,6 +398408,7 @@ interface { symbol_id: 0x6e7e1dc0 symbol_id: 0x1ed62a9d symbol_id: 0x5df7b359 + symbol_id: 0x92ffc2e2 symbol_id: 0xd6e5f7c7 symbol_id: 0x7695d1dd symbol_id: 0xcf6046cf @@ -387493,14 +398473,32 @@ interface { symbol_id: 0xabe60a33 symbol_id: 0x7ae5eeb4 symbol_id: 0x317870a4 + symbol_id: 0x30dd6796 symbol_id: 0x573e2956 symbol_id: 0xe5bfa8c8 symbol_id: 0xd48a6769 symbol_id: 0xdd957eaf + symbol_id: 0x80814925 symbol_id: 0x9c5fb17e symbol_id: 0xedd83590 symbol_id: 0x840989b2 symbol_id: 0x57325158 + symbol_id: 0xf4cef372 + symbol_id: 0xa2bba96c + symbol_id: 0x7848fa66 + symbol_id: 0x0db19b7a + symbol_id: 0xed0adecd + symbol_id: 0xd3ad47e6 + symbol_id: 0x042d9e44 + symbol_id: 0x0991ae07 + symbol_id: 0x650e9b1f + symbol_id: 0xd360b11b + symbol_id: 0x8c40514f + symbol_id: 0xe7718d4e + symbol_id: 0xb61b1afb + symbol_id: 0xe96fb6a0 + symbol_id: 0xf99054ab + symbol_id: 0x76f0e551 symbol_id: 0x6cb15207 symbol_id: 0x12eaf956 symbol_id: 0xac4ecea5 @@ -387525,6 +398523,7 @@ interface { symbol_id: 0xdcb8ed3c symbol_id: 0x4ec1de19 symbol_id: 0xe5cfd7ac + symbol_id: 0x77d18a9c symbol_id: 0xd0deb542 symbol_id: 0x68016e57 symbol_id: 0xe8233473 @@ -387631,6 +398630,7 @@ interface { symbol_id: 0x3d2d0ba2 symbol_id: 0x0d57c53d symbol_id: 0xab93a1ea + symbol_id: 0x626b81c7 symbol_id: 0x4a57b168 symbol_id: 0x8a417941 symbol_id: 0xb04874d2 @@ -387646,6 +398646,7 @@ interface { symbol_id: 0xe5349379 symbol_id: 0xb7abbec5 symbol_id: 0x573a436c + symbol_id: 0x7e8263f6 symbol_id: 0x588ab3fd symbol_id: 0x1389094c symbol_id: 0x098d4189 @@ -387740,6 +398741,8 @@ interface { symbol_id: 0x0dfe64b8 symbol_id: 0x51b726c8 symbol_id: 0x5d9f16f7 + symbol_id: 0x3ef0db06 + symbol_id: 0xc72378aa symbol_id: 0xd82232b3 symbol_id: 0x69a31cde symbol_id: 0xfbc28ac3 @@ -387755,6 +398758,7 @@ interface { symbol_id: 0x1cc3ba5d symbol_id: 0xf01aa08a symbol_id: 0x7fe4fd87 + symbol_id: 0xf8bd92c8 symbol_id: 0x70b7d94b symbol_id: 0x3b6d3ed0 symbol_id: 0xcda9ec73 @@ -387771,6 +398775,7 @@ interface { symbol_id: 0xc8580afc symbol_id: 0xbe89afca symbol_id: 0x3b7c3802 + symbol_id: 0x08309f5e symbol_id: 0x11e9361c symbol_id: 0x98de519f symbol_id: 0x49bf35a9 @@ -387827,6 +398832,7 @@ interface { symbol_id: 0xaad93a6e symbol_id: 0x820af79e symbol_id: 0xf5a866d4 + symbol_id: 0x4b9e6227 symbol_id: 0x9c6b68f2 symbol_id: 0x8ab89d74 symbol_id: 0x717f2784 @@ -387834,20 +398840,25 @@ interface { symbol_id: 0x88d310ca symbol_id: 0x596f41bc symbol_id: 0xcf21a814 + symbol_id: 0xd4d38d4c symbol_id: 0x81bdff8a symbol_id: 0xeba98304 symbol_id: 0x48e94357 symbol_id: 0x6cbff317 + symbol_id: 0xac1aeaf0 + symbol_id: 0x622cdd92 symbol_id: 0xc7970f23 symbol_id: 0x5758ca8d symbol_id: 0x8f687080 symbol_id: 0x128b55c8 symbol_id: 0xd2191311 + symbol_id: 0x585410d0 symbol_id: 0xd4a13963 symbol_id: 0xa09bde3a symbol_id: 0xaef6523a symbol_id: 0xef97e722 symbol_id: 0x026b095a + symbol_id: 0xd32d7c35 symbol_id: 0xf76bbee4 symbol_id: 0x91de51a1 symbol_id: 0x007e9802 @@ -387918,6 +398929,7 @@ interface { symbol_id: 0x93c0dba2 symbol_id: 0xd7cfff98 symbol_id: 0xecb4d16d + symbol_id: 0xd0dd3133 symbol_id: 0x3b867568 symbol_id: 0xc5806cb6 symbol_id: 0xd48e0164 @@ -387934,6 +398946,7 @@ interface { symbol_id: 0xbe3f1757 symbol_id: 0x64649d2c symbol_id: 0x51b5201f + symbol_id: 0x0d3b6723 symbol_id: 0x58b810bd symbol_id: 0x23e302cb symbol_id: 0x9a3d3812 @@ -387941,6 +398954,7 @@ interface { symbol_id: 0xa6782aae symbol_id: 0x648de106 symbol_id: 0xe96cf682 + symbol_id: 0xc3ae75b9 symbol_id: 0xca851619 symbol_id: 0x6a50bad9 symbol_id: 0x1183a93d @@ -387952,6 +398966,9 @@ interface { symbol_id: 0x76120529 symbol_id: 0x7a8a4736 symbol_id: 0x3f8952ab + symbol_id: 0x003f0aec + symbol_id: 0x43bb72ae + symbol_id: 0x49fd657a symbol_id: 0x4e6bfabc symbol_id: 0x935fb0ee symbol_id: 0xe5fad629 @@ -387968,6 +398985,7 @@ interface { symbol_id: 0x0cf86849 symbol_id: 0x6f8184d5 symbol_id: 0x8aa099dd + symbol_id: 0xdb6eae3a symbol_id: 0x122e3e9f symbol_id: 0xc0d6517a symbol_id: 0xd479c471 @@ -388011,11 +399029,13 @@ interface { symbol_id: 0x3bb33b54 symbol_id: 0x8da7c819 symbol_id: 0x808bdf9f + symbol_id: 0x8d62d3e1 symbol_id: 0x7a4db2f9 symbol_id: 0xb96f3f15 symbol_id: 0xafb178b7 symbol_id: 0xceb76dac symbol_id: 0xb1f5cc24 + symbol_id: 0x4cf5ba17 symbol_id: 0x9718e72e symbol_id: 0x8da70bb5 symbol_id: 0xc84875f6 @@ -388055,6 +399075,7 @@ interface { symbol_id: 0xdaf34c14 symbol_id: 0x1f1ab070 symbol_id: 0x66dcfd31 + symbol_id: 0x4dae13e9 symbol_id: 0xe2b96ffd symbol_id: 0x126bb89f symbol_id: 0x2e0e7810 @@ -388070,7 +399091,9 @@ interface { symbol_id: 0x42636e32 symbol_id: 0x9bb960df symbol_id: 0xbf2af0d7 + symbol_id: 0xdc24b796 symbol_id: 0xb8395a3e + symbol_id: 0xa625950b symbol_id: 0x9d898d75 symbol_id: 0x9ec4a8cb symbol_id: 0x9b31fd86 @@ -388106,7 +399129,10 @@ interface { symbol_id: 0x8f99729e symbol_id: 0xb6a9c6f8 symbol_id: 0x309cb0fd + symbol_id: 0x45c0e0ad + symbol_id: 0xf7fd2915 symbol_id: 0x7b9ffce9 + symbol_id: 0xe506b877 symbol_id: 0xda116c83 symbol_id: 0xa279fd1d symbol_id: 0x134d07e5 @@ -388144,15 +399170,31 @@ interface { symbol_id: 0xb1dfbb02 symbol_id: 0xacc42253 symbol_id: 0x0a446897 + symbol_id: 0xad3eb214 symbol_id: 0xb107d2cd symbol_id: 0x8628f24d + symbol_id: 0xc56006c7 + symbol_id: 0x639b2403 symbol_id: 0xbbfb394e symbol_id: 0x79edfc56 symbol_id: 0xc3077f07 symbol_id: 0xedcfa797 + symbol_id: 0xab45f2a8 + symbol_id: 0x41eed79f + symbol_id: 0xcdc0fffd symbol_id: 0xe7aacfe5 symbol_id: 0x9e942fbe + symbol_id: 0x99b0f07b + symbol_id: 0xffbe24f4 symbol_id: 0x46b6e531 + symbol_id: 0xbe28ee32 + symbol_id: 0x4927c9f3 + symbol_id: 0x50a5072e + symbol_id: 0xef606c3f + symbol_id: 0x3289d59f + symbol_id: 0x82b19820 + symbol_id: 0x7c937fc2 + symbol_id: 0xc7c68a05 symbol_id: 0xb9dc79d0 symbol_id: 0x8bbdb127 symbol_id: 0xeaf15c9b @@ -388177,11 +399219,16 @@ interface { symbol_id: 0xb290a148 symbol_id: 0x09d08108 symbol_id: 0x3c7c2553 + symbol_id: 0x06c58be7 + symbol_id: 0x159a69a3 + symbol_id: 0x39840ab2 symbol_id: 0x3dca9a13 + symbol_id: 0x07508208 symbol_id: 0xcb14b5cc symbol_id: 0x1721c938 symbol_id: 0x1bf542c4 symbol_id: 0x5c93a483 + symbol_id: 0x5c388f41 symbol_id: 0x93b9959a symbol_id: 0x618f059e symbol_id: 0x48641588 @@ -388218,6 +399265,7 @@ interface { symbol_id: 0xee139066 symbol_id: 0x613adcb1 symbol_id: 0x370e6f08 + symbol_id: 0xc35e482b symbol_id: 0x53816b02 symbol_id: 0xc9ddb79e symbol_id: 0x11780300 @@ -388261,12 +399309,19 @@ interface { symbol_id: 0xc5fee33e symbol_id: 0x7419d447 symbol_id: 0x30828743 + symbol_id: 0xe21d8d05 + symbol_id: 0x338cfb0f symbol_id: 0x94b60724 + symbol_id: 0x6ac5d61b + symbol_id: 0x54756210 symbol_id: 0x5ec3daa8 + symbol_id: 0x5530f759 + symbol_id: 0x3812bb22 symbol_id: 0x2f7205ee symbol_id: 0x7d577f86 symbol_id: 0x95a840b8 symbol_id: 0x7f639ef1 + symbol_id: 0x4c4073c3 symbol_id: 0x798f83da symbol_id: 0x542785af symbol_id: 0x86da67c0 @@ -388347,6 +399402,21 @@ interface { symbol_id: 0x4ba4e06f symbol_id: 0xbac82e84 symbol_id: 0xa8319a8c + symbol_id: 0xa7339c42 + symbol_id: 0x23fbc3f8 + symbol_id: 0x46e18dbd + symbol_id: 0xf5970852 + symbol_id: 0x0a3cdb4a + symbol_id: 0xdb6a18dc + symbol_id: 0x412252a6 + symbol_id: 0x9c589482 + symbol_id: 0x0400c852 + symbol_id: 0xcdcde62d + symbol_id: 0xba5f9a53 + symbol_id: 0x8802e047 + symbol_id: 0xf7264f57 + symbol_id: 0x370e3283 + symbol_id: 0xe87161bc symbol_id: 0x112db471 symbol_id: 0xfe79963a symbol_id: 0xbc19d975 @@ -388384,7 +399454,9 @@ interface { symbol_id: 0x65492c23 symbol_id: 0xa106a350 symbol_id: 0x59b3b64e + symbol_id: 0x14b7a009 symbol_id: 0x7dd9e61e + symbol_id: 0x30903940 symbol_id: 0x77a0ab63 symbol_id: 0x4825b485 symbol_id: 0xa448ac51 @@ -388409,6 +399481,7 @@ interface { symbol_id: 0x2bcde32a symbol_id: 0x65cf864e symbol_id: 0xc5a4a821 + symbol_id: 0x085aa99f symbol_id: 0x4dcdd24d symbol_id: 0x8df87722 symbol_id: 0x0ac30c0d @@ -388466,6 +399539,7 @@ interface { symbol_id: 0x0e1d2fa4 symbol_id: 0x306e3b3d symbol_id: 0x684435da + symbol_id: 0x4e8277c6 symbol_id: 0x7ec10e18 symbol_id: 0xe197ec6f symbol_id: 0x58069299 @@ -388478,10 +399552,24 @@ interface { symbol_id: 0x88f82161 symbol_id: 0xccc593d6 symbol_id: 0x97a02af0 + symbol_id: 0xa832c6f3 symbol_id: 0x2ffc7c7e + symbol_id: 0x1706be22 + symbol_id: 0x4c3911f0 + symbol_id: 0x8717f26f + symbol_id: 0x361004c8 + symbol_id: 0xcf5ea9a2 + symbol_id: 0x6c303862 + symbol_id: 0x553bc5f3 + symbol_id: 0xfba34655 + symbol_id: 0x52d444b1 symbol_id: 0x7d0e44ca symbol_id: 0x10de460f + symbol_id: 0x0eb11e95 symbol_id: 0x6ca4d0ed + symbol_id: 0x741d5af7 + symbol_id: 0x6e37f09d + symbol_id: 0x29d6d842 symbol_id: 0x21d35235 symbol_id: 0x334ff68f symbol_id: 0xd7ecf501 @@ -388613,14 +399701,19 @@ interface { symbol_id: 0x82d54cd2 symbol_id: 0xec107a09 symbol_id: 0x841218b7 + symbol_id: 0xb9f64e9d symbol_id: 0x4a5f3d41 + symbol_id: 0x4292b79d + symbol_id: 0xb779176d symbol_id: 0x98a39db9 symbol_id: 0xf9fd308c symbol_id: 0x5956f21f symbol_id: 0x76041d7e symbol_id: 0xd941beb8 symbol_id: 0xe4653a75 + symbol_id: 0x0b446726 symbol_id: 0x8aa99af0 + symbol_id: 0x5ecdc560 symbol_id: 0x7ee06725 symbol_id: 0xea065265 symbol_id: 0xd50bc6e1 @@ -388648,13 +399741,18 @@ interface { symbol_id: 0x7551a60b symbol_id: 0x08fd4b84 symbol_id: 0xc6d8f246 + symbol_id: 0xdf3e8655 symbol_id: 0x6f2f4bd1 + symbol_id: 0xf87ecda4 symbol_id: 0x00b4d2da symbol_id: 0xdf968210 + symbol_id: 0xcc6510bd symbol_id: 0xc93c3b7d symbol_id: 0xcae49fd9 symbol_id: 0x83940072 symbol_id: 0x511cdd52 + symbol_id: 0x63d665a4 + symbol_id: 0x8efc83b2 symbol_id: 0x53baed4c symbol_id: 0xaf4fc4b9 symbol_id: 0x2d6e1a71 @@ -388677,6 +399775,7 @@ interface { symbol_id: 0x86c8a137 symbol_id: 0x64e448f4 symbol_id: 0x4e874464 + symbol_id: 0xa64f3c31 symbol_id: 0x7dce8737 symbol_id: 0x3d6f5577 symbol_id: 0x2b35dbba @@ -388684,6 +399783,12 @@ interface { symbol_id: 0x5eecacc4 symbol_id: 0x215b5641 symbol_id: 0xbf6470f2 + symbol_id: 0x7a805e08 + symbol_id: 0x318d9226 + symbol_id: 0x4e9dfa3b + symbol_id: 0x7c74ccbc + symbol_id: 0xf4ae7c22 + symbol_id: 0x2b7e86c2 symbol_id: 0x18eeb52f symbol_id: 0xbc652525 symbol_id: 0x2336c16f @@ -388708,7 +399813,9 @@ interface { symbol_id: 0xdd50f291 symbol_id: 0xd2b5c87d symbol_id: 0xf58961c1 + symbol_id: 0x31a5a9d7 symbol_id: 0xfa66175a + symbol_id: 0x3975a1c8 symbol_id: 0x6a48a444 symbol_id: 0xc73383c1 symbol_id: 0x0ee6aecf @@ -388721,6 +399828,8 @@ interface { symbol_id: 0x0d19106d symbol_id: 0xfe94820e symbol_id: 0xe7fc8dce + symbol_id: 0x22167fe7 + symbol_id: 0x38472bf4 symbol_id: 0xc3e2d4ae symbol_id: 0x6b8c216a symbol_id: 0x6f047c6e @@ -388734,6 +399843,7 @@ interface { symbol_id: 0xe80863b1 symbol_id: 0xd81a7d03 symbol_id: 0x0566bca1 + symbol_id: 0xc578c7af symbol_id: 0x4c05b91e symbol_id: 0xa5459730 symbol_id: 0xe77a1ae2 @@ -388771,9 +399881,13 @@ interface { symbol_id: 0x42137268 symbol_id: 0xa0390871 symbol_id: 0xfb789e26 + symbol_id: 0x382b3272 + symbol_id: 0x29ecb8e9 + symbol_id: 0x3d6623cb symbol_id: 0x71726a83 symbol_id: 0xffb394c4 symbol_id: 0x48a6183b + symbol_id: 0x1c2c7614 symbol_id: 0x6c6beb07 symbol_id: 0x1be0f35f symbol_id: 0xd9fe9b1d @@ -388781,6 +399895,7 @@ interface { symbol_id: 0x7837fb7f symbol_id: 0x807f9d22 symbol_id: 0x6cd920cf + symbol_id: 0x333700e4 symbol_id: 0x5234b1b5 symbol_id: 0xaed020d7 symbol_id: 0xc1d5ac06 @@ -388838,6 +399953,7 @@ interface { symbol_id: 0x9ed1af8c symbol_id: 0xf030b866 symbol_id: 0x01f6343f + symbol_id: 0x508904bc symbol_id: 0xe8b2d7a6 symbol_id: 0x2ed6bfeb symbol_id: 0xa9c80d6c @@ -388855,20 +399971,24 @@ interface { symbol_id: 0x5904d735 symbol_id: 0xcb7dc482 symbol_id: 0xaed00f8c + symbol_id: 0x3b8e2bac symbol_id: 0xc89a8e29 symbol_id: 0x92dfef70 symbol_id: 0xd1f69ecb symbol_id: 0xdbb90310 symbol_id: 0x3d2a104d symbol_id: 0x9ba08730 + symbol_id: 0x65d49acf symbol_id: 0x064a6e13 symbol_id: 0x73ffe9a9 symbol_id: 0x03de6dc5 symbol_id: 0xe4e974b3 symbol_id: 0x2066c48d symbol_id: 0x1cd74592 + symbol_id: 0xbb7edccb symbol_id: 0xd4b34ea6 symbol_id: 0x3c6496cb + symbol_id: 0xca27ab6b symbol_id: 0x124d42c2 symbol_id: 0xd106aba0 symbol_id: 0x5cce6b17 @@ -388918,7 +400038,9 @@ interface { symbol_id: 0x6dc922be symbol_id: 0x5cdb4ea4 symbol_id: 0x6d575dad + symbol_id: 0xe4128490 symbol_id: 0xb1072fb1 + symbol_id: 0xe657d525 symbol_id: 0x661955d6 symbol_id: 0xd6a8ff16 symbol_id: 0x053e25cb @@ -388929,6 +400051,7 @@ interface { symbol_id: 0xa64fdec4 symbol_id: 0xcbec700e symbol_id: 0x394ce3dd + symbol_id: 0x3b959429 symbol_id: 0x86921e4b symbol_id: 0x56f23732 symbol_id: 0xa5a4fafa @@ -389075,6 +400198,7 @@ interface { symbol_id: 0x62cd5012 symbol_id: 0xda95494e symbol_id: 0x76f00da5 + symbol_id: 0xbea2c272 symbol_id: 0x2e74d698 symbol_id: 0x7bbb8d5f symbol_id: 0xa18d331b @@ -389094,6 +400218,8 @@ interface { symbol_id: 0xf33d71ea symbol_id: 0xc50733a4 symbol_id: 0xc162c911 + symbol_id: 0x6b29ddfb + symbol_id: 0xc05c2da4 symbol_id: 0xaaab26df symbol_id: 0x42eaca18 symbol_id: 0x408fc274 @@ -389114,6 +400240,10 @@ interface { symbol_id: 0x01bea327 symbol_id: 0x4f31c756 symbol_id: 0x7bd17841 + symbol_id: 0xf4530070 + symbol_id: 0x7ee18475 + symbol_id: 0x18bd1341 + symbol_id: 0xac8ea5a3 symbol_id: 0x5a1c51ee symbol_id: 0xe4eac6bd symbol_id: 0x602510fe @@ -389157,6 +400287,7 @@ interface { symbol_id: 0xd0b869bf symbol_id: 0x3e285e2f symbol_id: 0xf5924d9f + symbol_id: 0xda5dc517 symbol_id: 0x84278a73 symbol_id: 0xf5327fe3 symbol_id: 0x92649662 @@ -389169,6 +400300,7 @@ interface { symbol_id: 0xa848deda symbol_id: 0x8eadb5fd symbol_id: 0x140f40dd + symbol_id: 0x6da682ae symbol_id: 0x7f797603 symbol_id: 0x01e78001 symbol_id: 0x746374fa @@ -389210,6 +400342,7 @@ interface { symbol_id: 0xbad16ab3 symbol_id: 0x68c3a63b symbol_id: 0xbc90165b + symbol_id: 0x863e9436 symbol_id: 0x1579ecd2 symbol_id: 0xe4572a81 symbol_id: 0x07b15271 @@ -389240,6 +400373,7 @@ interface { symbol_id: 0xd08cb4e7 symbol_id: 0x596b8466 symbol_id: 0xd9f124cf + symbol_id: 0xb6dbcbcc symbol_id: 0xdca2a3c4 symbol_id: 0x6d579aaf symbol_id: 0xe4059d72 @@ -389293,17 +400427,23 @@ interface { symbol_id: 0x2f332836 symbol_id: 0x165e673e symbol_id: 0xe8a26880 + symbol_id: 0xa6d8e105 symbol_id: 0x44bb49dc symbol_id: 0x6e71b72c symbol_id: 0x381bc1b0 symbol_id: 0x236a1277 symbol_id: 0xa062fd64 + symbol_id: 0x8ba1a556 + symbol_id: 0xa5e98cbe symbol_id: 0xdf7b9a78 symbol_id: 0xa259d75f symbol_id: 0x93f5b442 symbol_id: 0xe4008a83 symbol_id: 0x7eaf76f6 symbol_id: 0x65106d59 + symbol_id: 0x18e8ea11 + symbol_id: 0x1405e8c0 + symbol_id: 0x84babda3 symbol_id: 0xbedab58b symbol_id: 0x603dd7ca symbol_id: 0xc30a6d76 @@ -389396,7 +400536,9 @@ interface { symbol_id: 0xb4e99805 symbol_id: 0x471faa17 symbol_id: 0x82e37620 + symbol_id: 0x8b1dfb41 symbol_id: 0x43078d96 + symbol_id: 0x840dad92 symbol_id: 0x619db28f symbol_id: 0x36bc8d13 symbol_id: 0x38637341 @@ -389433,9 +400575,11 @@ interface { symbol_id: 0x39787440 symbol_id: 0x7f258c4e symbol_id: 0x64e6aa0b + symbol_id: 0x16059afd symbol_id: 0x1560f116 symbol_id: 0x1cfcf940 symbol_id: 0x3704ac3f + symbol_id: 0xea37502b symbol_id: 0x0bb7f730 symbol_id: 0xb65e3baf symbol_id: 0xf68f8b33 @@ -389523,6 +400667,7 @@ interface { symbol_id: 0xe2b0e5a5 symbol_id: 0xb8036e9c symbol_id: 0xe36e392a + symbol_id: 0x824695bc symbol_id: 0x05a46d27 symbol_id: 0xe3de7018 symbol_id: 0x26fb2401 @@ -389543,6 +400688,7 @@ interface { symbol_id: 0xd3bfa538 symbol_id: 0x1544acf1 symbol_id: 0xacdbe7cb + symbol_id: 0x9539ac95 symbol_id: 0xc699a239 symbol_id: 0xe63f0c53 symbol_id: 0x8be0e5f9 @@ -389577,6 +400723,7 @@ interface { symbol_id: 0x783e3f26 symbol_id: 0xeb2dab5b symbol_id: 0x5516ad40 + symbol_id: 0xb27a823c symbol_id: 0x840bde05 symbol_id: 0x923f5818 symbol_id: 0x41ba71c8 @@ -389607,6 +400754,7 @@ interface { symbol_id: 0x28517749 symbol_id: 0xdfe02c28 symbol_id: 0xdcce2e99 + symbol_id: 0xee187039 symbol_id: 0x7d8fe18b symbol_id: 0x02252ed7 symbol_id: 0xbfb07eec @@ -389618,6 +400766,8 @@ interface { symbol_id: 0x57ecab02 symbol_id: 0x27d0c7b6 symbol_id: 0x28b33064 + symbol_id: 0xdea2b008 + symbol_id: 0xdf2c83f5 symbol_id: 0x60d84cc3 symbol_id: 0xb613af5e symbol_id: 0xff029108 @@ -389625,6 +400775,7 @@ interface { symbol_id: 0x13dfcd3d symbol_id: 0xc2b69854 symbol_id: 0x4f3e5356 + symbol_id: 0x8cc91d1b symbol_id: 0x44e50ff8 symbol_id: 0xec5c680b symbol_id: 0xdc14ff55 @@ -389635,6 +400786,9 @@ interface { symbol_id: 0x3c537500 symbol_id: 0x1b814fa6 symbol_id: 0x9ca2e070 + symbol_id: 0x4271852e + symbol_id: 0x0fe80546 + symbol_id: 0x9b003f99 symbol_id: 0x37d86bb7 symbol_id: 0x32ecd828 symbol_id: 0xe769f645 @@ -389694,6 +400848,11 @@ interface { symbol_id: 0x8238784d symbol_id: 0xc80fa4a7 symbol_id: 0x39db373c + symbol_id: 0x71efe2ab + symbol_id: 0xb862467e + symbol_id: 0xffb38889 + symbol_id: 0x8a8d0c1a + symbol_id: 0xb7b28cad symbol_id: 0x3852868c symbol_id: 0x27f20808 symbol_id: 0x63876663 @@ -389711,6 +400870,7 @@ interface { symbol_id: 0x9c6c58ea symbol_id: 0x2fefe933 symbol_id: 0x1c994923 + symbol_id: 0x231d5ec9 symbol_id: 0xec861eec symbol_id: 0x5810bdc3 symbol_id: 0x3cbd6214 @@ -389724,6 +400884,7 @@ interface { symbol_id: 0x9a271493 symbol_id: 0xcb617d2b symbol_id: 0x9d3ae050 + symbol_id: 0x2f7fc8d4 symbol_id: 0x180e6903 symbol_id: 0x162de729 symbol_id: 0x5983afac @@ -389735,6 +400896,7 @@ interface { symbol_id: 0xa21a61f0 symbol_id: 0xf6896e34 symbol_id: 0x324ff23b + symbol_id: 0xc89c8974 symbol_id: 0xde0961b5 symbol_id: 0x93ed1ac4 symbol_id: 0xffcee71a @@ -389768,6 +400930,7 @@ interface { symbol_id: 0x123cd197 symbol_id: 0xe57e5e73 symbol_id: 0x8ba9d028 + symbol_id: 0x7efbd192 symbol_id: 0x22f7748e symbol_id: 0x12951e5c symbol_id: 0xe4bc7703 @@ -389817,6 +400980,7 @@ interface { symbol_id: 0x0e1df21c symbol_id: 0xac520589 symbol_id: 0x2eeef935 + symbol_id: 0xce039362 symbol_id: 0x890d0269 symbol_id: 0xa22df476 symbol_id: 0x3b5dbc43 @@ -389897,6 +401061,7 @@ interface { symbol_id: 0x9df74c73 symbol_id: 0x740c134e symbol_id: 0xacd66e9e + symbol_id: 0x35b1ed7b symbol_id: 0xf8bcc2db symbol_id: 0x3f5b9269 symbol_id: 0xdfa2e68a @@ -389922,6 +401087,7 @@ interface { symbol_id: 0xe59b51ac symbol_id: 0x82feb89e symbol_id: 0x417866a8 + symbol_id: 0x62c010b9 symbol_id: 0x013abbf5 symbol_id: 0x9542ffda symbol_id: 0xb1ded749 @@ -389961,6 +401127,7 @@ interface { symbol_id: 0x55fd0d76 symbol_id: 0x25e7db1a symbol_id: 0xb634bd54 + symbol_id: 0x5b13a53d symbol_id: 0xaba73bf2 symbol_id: 0xa2a45fe2 symbol_id: 0xe8ce7aa9 @@ -389992,6 +401159,7 @@ interface { symbol_id: 0xe263dcb4 symbol_id: 0x59caaeac symbol_id: 0x64f92138 + symbol_id: 0x7ee02b97 symbol_id: 0x2e13b831 symbol_id: 0x57ba6430 symbol_id: 0x131272a2 @@ -390002,6 +401170,7 @@ interface { symbol_id: 0x324d8228 symbol_id: 0xd612789c symbol_id: 0x561323f1 + symbol_id: 0x50bfe1d8 symbol_id: 0xa9ebbb66 symbol_id: 0x2f21ba25 symbol_id: 0x81c5befa @@ -390009,6 +401178,7 @@ interface { symbol_id: 0xd1691fe4 symbol_id: 0x4804f611 symbol_id: 0x842fc505 + symbol_id: 0xf20efe74 symbol_id: 0xd28bb85a symbol_id: 0x9e62b4cc symbol_id: 0x26c5a1b9 @@ -390086,17 +401256,21 @@ interface { symbol_id: 0xb36e22d3 symbol_id: 0x683db5bf symbol_id: 0x177fa0e0 + symbol_id: 0xd38a2f2a symbol_id: 0x11d4227b symbol_id: 0x71551ba9 symbol_id: 0x435b99c6 symbol_id: 0x5db8ecdc symbol_id: 0x01768311 + symbol_id: 0xb9bfc7b9 symbol_id: 0x1744651d symbol_id: 0x9103dd70 symbol_id: 0xffdd03be symbol_id: 0x15848de9 symbol_id: 0xde695e5a symbol_id: 0x4e730977 + symbol_id: 0x8dafa617 + symbol_id: 0x5ae13553 symbol_id: 0x53ee2234 symbol_id: 0x227e051f symbol_id: 0x9a5fd229 @@ -390176,10 +401350,12 @@ interface { symbol_id: 0x85c7decb symbol_id: 0x87a9e1a0 symbol_id: 0x5b227eda + symbol_id: 0x2886690b symbol_id: 0x46082c90 symbol_id: 0x590d247f symbol_id: 0x91579542 symbol_id: 0x2a59e35c + symbol_id: 0x8fe1956e symbol_id: 0x3b03aaea symbol_id: 0xeeb1ddf9 symbol_id: 0x54bb98b3 @@ -390303,6 +401479,7 @@ interface { symbol_id: 0x0b03a904 symbol_id: 0x2bce772d symbol_id: 0x705777ef + symbol_id: 0x12ab7c99 symbol_id: 0x21b06e02 symbol_id: 0x70f8b485 symbol_id: 0x3a44a497 @@ -390326,6 +401503,7 @@ interface { symbol_id: 0x0d3c3e14 symbol_id: 0xe5340075 symbol_id: 0x6aab6dda + symbol_id: 0xb15014ad symbol_id: 0x089f5fe6 symbol_id: 0x0c73acc8 symbol_id: 0xace4bcdf @@ -390337,6 +401515,7 @@ interface { symbol_id: 0xd41c441b symbol_id: 0x8607d899 symbol_id: 0x1d945826 + symbol_id: 0xd8c7c137 symbol_id: 0xa3f52060 symbol_id: 0x001f1a24 symbol_id: 0x46d54e34 @@ -390365,6 +401544,7 @@ interface { symbol_id: 0x6af2dc93 symbol_id: 0x56f4af9c symbol_id: 0x93ee7a0f + symbol_id: 0xbd83c333 symbol_id: 0x7d858174 symbol_id: 0x0e66eaf7 symbol_id: 0x81bce56b @@ -390411,6 +401591,8 @@ interface { symbol_id: 0x74c27ecd symbol_id: 0x80913de9 symbol_id: 0xbffd1c46 + symbol_id: 0xde4d20e6 + symbol_id: 0x6a82e2a4 symbol_id: 0xec5e9065 symbol_id: 0x264c5308 symbol_id: 0x205145e9 @@ -390443,6 +401625,8 @@ interface { symbol_id: 0x8fb082a6 symbol_id: 0x570df167 symbol_id: 0x84f045c2 + symbol_id: 0x75781cce + symbol_id: 0xd3eab591 symbol_id: 0x806f167c symbol_id: 0xf13ba64e symbol_id: 0xe4f77cb7 @@ -390471,6 +401655,7 @@ interface { symbol_id: 0x11ca9115 symbol_id: 0xf4841d33 symbol_id: 0x34a94ed3 + symbol_id: 0x3bc1cc84 symbol_id: 0xb05cd7bd symbol_id: 0xf41c5e13 symbol_id: 0xafbfe5ff @@ -390513,6 +401698,7 @@ interface { symbol_id: 0x9c54c873 symbol_id: 0x771aea1d symbol_id: 0x8d3c4841 + symbol_id: 0xf399cd48 symbol_id: 0x05840f35 symbol_id: 0xa6141872 symbol_id: 0x56b779c5 @@ -390522,8 +401708,10 @@ interface { symbol_id: 0x5ab300fb symbol_id: 0x33d40ef0 symbol_id: 0xeb6692c0 + symbol_id: 0x15f1b772 symbol_id: 0x38940a34 symbol_id: 0x322ca1cc + symbol_id: 0x9f8a16f0 symbol_id: 0xad3b5931 symbol_id: 0xdc85b8be symbol_id: 0xd1dc3f24 @@ -390532,7 +401720,10 @@ interface { symbol_id: 0x4e595f64 symbol_id: 0xd94e8fae symbol_id: 0xd2399e18 + symbol_id: 0x92732196 + symbol_id: 0xd29660d9 symbol_id: 0xa6c906b5 + symbol_id: 0x77dba918 symbol_id: 0x5cc4535c symbol_id: 0x7d2c4acc symbol_id: 0x1f593233 @@ -390547,6 +401738,7 @@ interface { symbol_id: 0xbd7218cd symbol_id: 0x8ef4fedc symbol_id: 0x4f956c89 + symbol_id: 0xe1092bbd symbol_id: 0x3003f174 symbol_id: 0xf85ae22f symbol_id: 0xcca4d1a0 @@ -390558,7 +401750,9 @@ interface { symbol_id: 0xbf0b0a4c symbol_id: 0x4a4e8bee symbol_id: 0x5b060b7d + symbol_id: 0xb3b8cbe2 symbol_id: 0xec171799 + symbol_id: 0xb7265b03 symbol_id: 0x24b9d7ed symbol_id: 0x25471057 symbol_id: 0xb77dc501 @@ -390617,11 +401811,14 @@ interface { symbol_id: 0x1f625c64 symbol_id: 0x180ceb0c symbol_id: 0x19ed5e1a + symbol_id: 0x7e3fb039 symbol_id: 0xaae00157 symbol_id: 0x455375fa symbol_id: 0xc1ea8aaa + symbol_id: 0x500f328c symbol_id: 0xe19d98a9 symbol_id: 0xdebcf3e9 + symbol_id: 0x7d05df74 symbol_id: 0x5d6d169f symbol_id: 0x023858a0 symbol_id: 0x7b2c2128 @@ -390644,6 +401841,8 @@ interface { symbol_id: 0x7c74f0ec symbol_id: 0x8525915d symbol_id: 0x12402fa7 + symbol_id: 0x0b4df89e + symbol_id: 0x7996527c symbol_id: 0x7f3b48aa symbol_id: 0xf47010e0 symbol_id: 0x436ee92c @@ -390721,6 +401920,12 @@ interface { symbol_id: 0x745d77d7 symbol_id: 0xee44d535 symbol_id: 0xeedc57e1 + symbol_id: 0x706a5214 + symbol_id: 0x56fe28ac + symbol_id: 0xfb0d7eaf + symbol_id: 0x910f3594 + symbol_id: 0x6a015d4f + symbol_id: 0xcb37c2fd symbol_id: 0x57adf54a symbol_id: 0xcfc71fe1 symbol_id: 0xadfa8107 @@ -390773,6 +401978,7 @@ interface { symbol_id: 0x5f29be60 symbol_id: 0xfd1fa5d2 symbol_id: 0x964dcd4d + symbol_id: 0xa4da49fe symbol_id: 0xb9a87429 symbol_id: 0xbfd5ebac symbol_id: 0x68c67cd0 @@ -390803,6 +402009,7 @@ interface { symbol_id: 0x92edca7e symbol_id: 0xb2f7eb17 symbol_id: 0x8eb5b50d + symbol_id: 0xc26d0753 symbol_id: 0x1f5649eb symbol_id: 0x31ef5894 symbol_id: 0x0af8ff72 @@ -390892,6 +402099,8 @@ interface { symbol_id: 0xcd537f33 symbol_id: 0xef58928a symbol_id: 0x48726233 + symbol_id: 0xc92a02ef + symbol_id: 0x804bafc3 symbol_id: 0xabad0839 symbol_id: 0x6d4398fa symbol_id: 0xce618820 @@ -391046,6 +402255,7 @@ interface { symbol_id: 0xf304733e symbol_id: 0x153d2098 symbol_id: 0xc24d49e4 + symbol_id: 0x8ac195eb symbol_id: 0xd09568e0 symbol_id: 0xe4a0e986 symbol_id: 0x6dc2f0b4 @@ -391087,9 +402297,13 @@ interface { symbol_id: 0x0e1b0b82 symbol_id: 0xfb52ace2 symbol_id: 0x44e002a2 + symbol_id: 0xd5e0987f symbol_id: 0x1fe11014 + symbol_id: 0x75fe69c4 symbol_id: 0x2a267913 symbol_id: 0xf3c91dcd + symbol_id: 0xfb2634da + symbol_id: 0xe7caa0b7 symbol_id: 0x3da4fd63 symbol_id: 0xc49e9f39 symbol_id: 0x89663420 @@ -391107,6 +402321,7 @@ interface { symbol_id: 0x2f857527 symbol_id: 0x3e5f4f82 symbol_id: 0xbf1515af + symbol_id: 0x87812861 symbol_id: 0x18d0dd21 symbol_id: 0x92705587 symbol_id: 0xdbe66171 @@ -391143,6 +402358,7 @@ interface { symbol_id: 0xa64e4b1e symbol_id: 0xd143c302 symbol_id: 0xbf6d0a0f + symbol_id: 0x5a86c789 symbol_id: 0x2eda3aae symbol_id: 0x9891b743 symbol_id: 0x51f65372 @@ -391174,9 +402390,14 @@ interface { symbol_id: 0xbabc4102 symbol_id: 0x4c16a6b4 symbol_id: 0xc8ad19b6 + symbol_id: 0xd2070626 symbol_id: 0xdebe76ba symbol_id: 0xae3ea97c + symbol_id: 0xfccd15d1 + symbol_id: 0x591431f1 symbol_id: 0x6869c83d + symbol_id: 0x7cfd9233 + symbol_id: 0xbd25c7d0 symbol_id: 0x5bbd3545 symbol_id: 0xf4017fdd symbol_id: 0x2d1f2cdd @@ -391204,6 +402425,7 @@ interface { symbol_id: 0x5da495c5 symbol_id: 0xdc3e523b symbol_id: 0x3934d205 + symbol_id: 0xaed64d9d symbol_id: 0xa603e7df symbol_id: 0xfbbf21e2 symbol_id: 0xb08b0149 @@ -391211,6 +402433,7 @@ interface { symbol_id: 0x18c0f285 symbol_id: 0xd3e5c9bd symbol_id: 0x96be8568 + symbol_id: 0x3217f3a4 symbol_id: 0xf7dfdad1 symbol_id: 0x47d78ddb symbol_id: 0x961122f4 @@ -391239,9 +402462,14 @@ interface { symbol_id: 0x3df2f359 symbol_id: 0x33172d21 symbol_id: 0x54bbaa46 + symbol_id: 0x3f07269b + symbol_id: 0x3c7c6ce9 + symbol_id: 0x7a43283c + symbol_id: 0x44cd0751 symbol_id: 0x3d986fb5 symbol_id: 0x2f855953 symbol_id: 0x8814f5b8 + symbol_id: 0x8fa1e478 symbol_id: 0xe54aec5b symbol_id: 0xce4acc7b symbol_id: 0xe244df50 @@ -391471,7 +402699,9 @@ interface { symbol_id: 0xc9fa7338 symbol_id: 0xb163f167 symbol_id: 0x439eff60 + symbol_id: 0xa13a99d8 symbol_id: 0x9f5197f0 + symbol_id: 0x5ad67dea symbol_id: 0x11fd8c82 symbol_id: 0xe41b8f90 symbol_id: 0x60ffe144 @@ -391522,6 +402752,7 @@ interface { symbol_id: 0x8f72141f symbol_id: 0x8dc26f05 symbol_id: 0xcb2698e3 + symbol_id: 0xea314c1f symbol_id: 0xdc59a2d7 symbol_id: 0xc8d57f30 symbol_id: 0xa1439ad9 @@ -391559,6 +402790,7 @@ interface { symbol_id: 0x27e59f46 symbol_id: 0x109adee2 symbol_id: 0x784d1cb4 + symbol_id: 0x201afca9 symbol_id: 0xd75ad246 symbol_id: 0xdefa9d60 symbol_id: 0x905187d4 @@ -391579,6 +402811,7 @@ interface { symbol_id: 0x792a6c04 symbol_id: 0xdc1a1266 symbol_id: 0x4a8ce807 + symbol_id: 0x899ff164 symbol_id: 0x4ec99a42 symbol_id: 0xf83f300d symbol_id: 0x57c3f1e7 @@ -391629,12 +402862,14 @@ interface { symbol_id: 0x700d3d6b symbol_id: 0xbdfbbc33 symbol_id: 0x1b3f668e + symbol_id: 0x00a14c5c symbol_id: 0x868c5f6e symbol_id: 0xb89dad0b symbol_id: 0x110008ad symbol_id: 0x5df193f7 symbol_id: 0x9b635032 symbol_id: 0x4048e514 + symbol_id: 0x83676405 symbol_id: 0x89c78ea4 symbol_id: 0x37cf2035 symbol_id: 0x2db08c33 @@ -391645,6 +402880,7 @@ interface { symbol_id: 0xe9d87e68 symbol_id: 0xf55bd7e0 symbol_id: 0xf3c1fd90 + symbol_id: 0xbf06fcb7 symbol_id: 0xcaff4b1e symbol_id: 0x92510f88 symbol_id: 0x1294ca70 @@ -391652,6 +402888,7 @@ interface { symbol_id: 0x214d76fa symbol_id: 0xa834737e symbol_id: 0x869e15d7 + symbol_id: 0xa60cf3b7 symbol_id: 0x944deaea symbol_id: 0x413dc89c symbol_id: 0xbc035d91 @@ -391663,6 +402900,7 @@ interface { symbol_id: 0xd5bd73b9 symbol_id: 0x951bfee9 symbol_id: 0x55fbd705 + symbol_id: 0x9de82d32 symbol_id: 0x09c05733 symbol_id: 0xf104e451 symbol_id: 0x282288bb @@ -391705,9 +402943,33 @@ interface { symbol_id: 0x0741c87d symbol_id: 0x3bf4fac5 symbol_id: 0xcac8f190 + symbol_id: 0x9ea1c58f symbol_id: 0x140d9164 + symbol_id: 0xbbf007f4 + symbol_id: 0xd28057f3 + symbol_id: 0x580c56b8 + symbol_id: 0x8f0c866d symbol_id: 0x52816b1c + symbol_id: 0x4f4e9353 + symbol_id: 0x3f51a906 + symbol_id: 0x6515c416 symbol_id: 0x19d80976 + symbol_id: 0x6c854cb3 + symbol_id: 0xcd021e80 + symbol_id: 0x147e4ad2 + symbol_id: 0x167360fc + symbol_id: 0x69b1070f + symbol_id: 0x3be16591 + symbol_id: 0x6e3c0f91 + symbol_id: 0x99cb2edf + symbol_id: 0x2325cd65 + symbol_id: 0x9cf79f8d + symbol_id: 0x2f365f93 + symbol_id: 0x6229bd38 + symbol_id: 0x90b81315 + symbol_id: 0xb011e423 + symbol_id: 0x27363bb6 + symbol_id: 0x10932377 symbol_id: 0xb5437ef4 symbol_id: 0x1473720a symbol_id: 0xa459c02b @@ -391757,6 +403019,7 @@ interface { symbol_id: 0x592a4678 symbol_id: 0xff77e1ca symbol_id: 0xe66642fe + symbol_id: 0x538ad5cc symbol_id: 0x2244c8f0 symbol_id: 0x58330374 symbol_id: 0xdb18c924 @@ -391808,13 +403071,21 @@ interface { symbol_id: 0x906c5f61 symbol_id: 0xf40e82dd symbol_id: 0x9b29f9ed + symbol_id: 0xb2eba8d7 + symbol_id: 0xa84f74e5 + symbol_id: 0x64b2fdfd + symbol_id: 0x34ad1913 symbol_id: 0x5f3882d0 symbol_id: 0xe203e72f + symbol_id: 0x90eb49a1 symbol_id: 0xac8d7ab3 symbol_id: 0x2f159216 symbol_id: 0xb1da32d2 symbol_id: 0x354ec447 symbol_id: 0x28f5deaf + symbol_id: 0x5da8252d + symbol_id: 0x1e8152b6 + symbol_id: 0xd07f1826 symbol_id: 0x7733b651 symbol_id: 0x8e6a3c4a symbol_id: 0x3635e264 @@ -391871,6 +403142,7 @@ interface { symbol_id: 0xf33dadbd symbol_id: 0x743ba358 symbol_id: 0x9f33c2c6 + symbol_id: 0x14bde45c symbol_id: 0x429eeda3 symbol_id: 0x67d81c4b symbol_id: 0x5b1b7953 @@ -391883,11 +403155,14 @@ interface { symbol_id: 0x2f1da35c symbol_id: 0x47f90fd0 symbol_id: 0x969a2ec0 + symbol_id: 0x2e0c3fe5 + symbol_id: 0xae3c44c1 symbol_id: 0xb1b42a22 symbol_id: 0x689b6a95 symbol_id: 0xbd9fe5b6 symbol_id: 0x76ec943c symbol_id: 0x1a4e4142 + symbol_id: 0x6d215713 symbol_id: 0x1bf9e9e5 symbol_id: 0xec6b2b3d symbol_id: 0x4b519cf9 @@ -392008,9 +403283,11 @@ interface { symbol_id: 0x60488ecf symbol_id: 0x9d727719 symbol_id: 0xa4027847 + symbol_id: 0x738279bf symbol_id: 0x7540b5a8 symbol_id: 0xb1036d49 symbol_id: 0x9a87f32b + symbol_id: 0x63928faf symbol_id: 0xecc7b6fc symbol_id: 0x5d14316b symbol_id: 0x0094f87c @@ -392038,6 +403315,7 @@ interface { symbol_id: 0x4e8c6206 symbol_id: 0x887e1dde symbol_id: 0x180eeaeb + symbol_id: 0xa643ac3f symbol_id: 0x61731bd0 symbol_id: 0x6f9f10f2 symbol_id: 0x99941051 @@ -392051,6 +403329,8 @@ interface { symbol_id: 0xb91fc02e symbol_id: 0xaa425530 symbol_id: 0x9b05d33a + symbol_id: 0xb5ba02d4 + symbol_id: 0x0fe35b07 symbol_id: 0xebb799b4 symbol_id: 0xcaf4c4fe symbol_id: 0x11080b78 diff --git a/android/abi_gki_aarch64_asus b/android/abi_gki_aarch64_asus new file mode 100644 index 000000000000..98ab875a5b2a --- /dev/null +++ b/android/abi_gki_aarch64_asus @@ -0,0 +1,11 @@ +[abi_symbol_list] +# aura sync + hid_unregister_driver + hid_hw_raw_request + hid_open_report + hid_hw_start + hid_hw_stop + __hid_register_driver + hid_hw_output_report + hid_hw_open + hid_hw_close diff --git a/android/abi_gki_aarch64_exynosauto b/android/abi_gki_aarch64_exynosauto index da26fd1faca5..2854f95356e9 100644 --- a/android/abi_gki_aarch64_exynosauto +++ b/android/abi_gki_aarch64_exynosauto @@ -1,94 +1,812 @@ [abi_symbol_list] # commonly used symbols + __alloc_pages + __alloc_percpu + alloc_workqueue + alt_cb_patch_nops + __arch_copy_from_user + __arch_copy_to_user + arm64_use_ng_mappings + __arm_smccc_smc + atomic_notifier_call_chain + atomic_notifier_chain_register + atomic_notifier_chain_unregister + __bitmap_and + bitmap_find_free_region + bitmap_release_region + __bitmap_weight + blocking_notifier_call_chain + blocking_notifier_chain_register + bpf_trace_run1 + bpf_trace_run2 + bpf_trace_run3 + bpf_trace_run4 + bpf_trace_run6 + call_rcu + cancel_delayed_work + cancel_delayed_work_sync + cancel_work_sync + cdev_init + __check_object_size + __class_create + class_destroy + clk_disable + clk_enable + __clk_get_hw + clk_get_rate + clk_hw_get_parent clk_prepare + clk_register + clk_register_clkdev + clk_register_fixed_factor + clk_register_fixed_rate + clk_set_rate clk_unprepare + cma_alloc + cma_release + complete + complete_all + __const_udelay + __copy_overflow + __cpuhp_setup_state + cpu_hwcaps + cpu_number + __cpu_online_mask + cpu_pm_register_notifier + __cpu_possible_mask + crc32_le + debugfs_create_dir + debugfs_create_file + debugfs_create_u32 + debugfs_remove + default_llseek + delayed_work_timer_fn + del_timer + del_timer_sync + destroy_workqueue + _dev_crit + dev_driver_string + _dev_emerg _dev_err + dev_err_probe + dev_fwnode + device_create + device_create_file + device_destroy + device_for_each_child + device_get_match_data + device_get_phy_mode + device_initialize + device_property_present + device_register + device_remove_file + device_set_wakeup_capable + device_unregister + device_wakeup_disable + device_wakeup_enable _dev_info + devm_add_action + devm_clk_get + devm_free_irq + devm_gen_pool_create + devm_gpio_request_one + devm_i2c_new_dummy_device + devm_ioremap + devm_ioremap_resource + devm_kasprintf + devm_kfree devm_kmalloc + devm_kmemdup + devm_kstrdup + devm_mfd_add_devices + devm_pinctrl_get + devm_platform_ioremap_resource + devm_platform_ioremap_resource_byname + __devm_regmap_init_i2c + devm_regulator_register devm_request_threaded_irq + __devm_reset_control_get + devm_snd_soc_register_card + devm_snd_soc_register_component + devm_thermal_of_zone_register + _dev_notice + devres_add + __devres_alloc_node + dev_set_name _dev_warn + disable_irq + disable_irq_nosync + dma_alloc_attrs + dma_buf_attach + dma_buf_detach + dma_buf_export + dma_buf_get + dma_buf_map_attachment + dma_buf_put + dma_buf_unmap_attachment + dma_fence_add_callback + dma_fence_context_alloc + dma_fence_init + dma_fence_release + dma_fence_remove_callback + dma_fence_signal + dma_fence_wait_timeout + dma_free_attrs + dma_heap_buffer_alloc + dma_heap_find + dma_heap_put + dmam_alloc_attrs + dma_map_page_attrs + dma_map_resource + dma_map_sgtable + dma_release_channel + dma_request_chan + dma_resv_iter_first + dma_resv_iter_next dma_set_coherent_mask dma_set_mask + dma_sync_sg_for_device + dma_sync_single_for_cpu + dma_sync_single_for_device + dma_unmap_page_attrs + dma_unmap_resource + dma_unmap_sg_attrs + down_write + drm_connector_unregister + ___drm_dbg + __drm_dev_dbg + drm_dev_printk + __drm_err + drm_gem_object_free + drm_gem_object_lookup + drm_get_edid + drm_modeset_lock + drm_modeset_unlock + drm_printf + dump_stack + dw_pcie_ep_init + dw_pcie_host_init + dw_pcie_own_conf_map_bus + dw_pcie_read + dw_pcie_read_dbi + dw_pcie_setup_rc + dw_pcie_write + dw_pcie_write_dbi + enable_irq + fd_install + _find_first_bit + _find_first_zero_bit + _find_next_bit + finish_wait + flush_work + __flush_workqueue + fortify_panic + fput + free_irq + __free_pages + fwnode_handle_put + generic_file_llseek + generic_handle_irq + gen_pool_add_owner + gen_pool_alloc_algo_owner + gen_pool_avail + gen_pool_free_owner + gen_pool_size + get_device + get_random_bytes + get_unused_fd_flags + gic_nonsecure_priorities + gpiod_direction_input + gpiod_direction_output_raw + gpiod_get_raw_value + gpiod_set_raw_value + gpio_request_one + gpio_to_desc + handle_edge_irq + handle_level_irq + hrtimer_cancel + hrtimer_init + hrtimer_start_range_ns + i2c_add_adapter + i2c_add_numbered_adapter + i2c_del_adapter + i2c_del_driver + i2c_register_driver + i2c_transfer + i2c_unregister_device + ida_alloc_range + ida_free + __init_swait_queue_head + init_timer_key + init_wait_entry + __init_waitqueue_head + iomem_resource + iommu_get_domain_for_dev + iommu_map + iommu_register_device_fault_handler + iommu_unmap + iommu_unregister_device_fault_handler + ioremap_prot + iounmap + __irq_apply_affinity_hint + irq_chip_ack_parent + irq_chip_mask_parent + irq_chip_unmask_parent + irq_create_mapping_affinity + __irq_domain_add + irq_domain_get_irq_data + irq_domain_remove + irq_domain_set_info + irq_domain_update_bus_token + irq_get_irq_data + irq_modify_status + irq_of_parse_and_map + __irq_resolve_mapping + irq_set_chained_handler_and_data + irq_set_chip_and_handler_name + irq_set_chip_data + irq_set_irq_wake + irq_to_desc + is_vmalloc_addr + jiffies + jiffies_to_msecs + kasan_flag_enabled kfree + kimage_voffset + __kmalloc kmalloc_caches + kmalloc_large kmalloc_trace + kmem_cache_alloc + kmem_cache_create + kmem_cache_destroy + kmem_cache_free + kmemdup + krealloc + kstrdup + kstrtoint + kstrtoll + kstrtouint + kstrtoull + kthread_create_on_node + kthread_park + kthread_parkme + kthread_should_park + kthread_should_stop + kthread_stop + kthread_unpark + ktime_get + ktime_get_mono_fast_ns + ktime_get_real_ts64 + kvfree + kvmalloc_node __list_add_valid + __list_del_entry_valid log_post_read_mmio log_post_write_mmio log_read_mmio log_write_mmio + loops_per_jiffy + mdiobus_read + mdiobus_write + memcpy + memdup_user + mem_section + memset + memstart_addr + misc_register + mod_timer module_layout + __msecs_to_jiffies + msleep + __mutex_init + mutex_is_locked + mutex_lock + mutex_lock_interruptible + mutex_trylock + mutex_unlock + netdev_err + netdev_info + netdev_warn + noop_llseek + nr_cpu_ids + ns_to_timespec64 + __num_online_cpus + of_address_to_resource + of_alias_get_id + of_clk_add_provider + of_clk_get + of_clk_src_onecell_get + of_device_get_match_data + of_device_is_available + of_device_is_compatible + of_find_compatible_node + of_find_device_by_node + of_find_matching_node_and_match + of_find_node_by_name of_find_property + of_get_child_by_name + of_get_named_gpio_flags + of_get_next_child + of_get_property + of_get_regulator_init_data + of_iomap + of_match_device + of_match_node + of_n_addr_cells + of_n_size_cells + __of_parse_phandle_with_args + of_platform_populate + of_property_count_elems_of_size + of_property_read_string + of_property_read_string_helper + of_property_read_u32_index + of_property_read_variable_u16_array of_property_read_variable_u32_array + of_property_read_variable_u8_array + of_prop_next_string + of_prop_next_u32 + of_reserved_mem_device_init_by_idx + of_reserved_mem_device_release + of_reserved_mem_lookup + of_root + oops_in_progress + panic + panic_notifier_list + param_ops_int + param_ops_string + param_ops_uint + pci_alloc_irq_vectors_affinity + pci_clear_master + pci_disable_device + pci_disable_msi + pcie_get_mps + pci_enable_device + pci_epc_mem_alloc_addr + pci_epc_mem_free_addr + pci_epc_set_bar + pci_epc_unmap_addr + pcie_set_mps + pci_find_bus + pci_generic_config_read + pci_generic_config_write + pci_get_device + pci_ioremap_wc_bar + pci_load_saved_state + pci_msi_create_irq_domain + pci_msi_mask_irq + pci_msi_unmask_irq + pci_num_vf + __pci_register_driver + pci_request_regions + pci_rescan_bus + pci_restore_state + pci_save_state + pci_set_master + pci_store_saved_state + pci_unregister_driver + __per_cpu_offset + perf_trace_buf_alloc + perf_trace_run_bpf_submit + phy_init_eee + phylink_create + phylink_generic_validate + pinctrl_lookup_state + pinctrl_select_state __platform_driver_register + platform_driver_unregister + platform_get_irq + platform_get_irq_byname + platform_get_irq_byname_optional + platform_get_irq_optional + platform_get_resource + platform_get_resource_byname + __pm_runtime_disable + pm_runtime_enable + pm_runtime_forbid + pm_runtime_force_resume + pm_runtime_force_suspend + __pm_runtime_idle + __pm_runtime_resume + pm_runtime_set_autosuspend_delay + __pm_runtime_set_status + __pm_runtime_suspend + __pm_runtime_use_autosuspend + pm_wakeup_dev_event + preempt_schedule + preempt_schedule_notrace + prepare_to_wait_event + print_hex_dump _printk + put_device __put_task_struct + put_unused_fd + queue_delayed_work_on + queue_work_on + ___ratelimit + _raw_read_lock_irqsave + _raw_read_unlock_irqrestore + _raw_spin_lock _raw_spin_lock_irqsave + _raw_spin_trylock + _raw_spin_unlock _raw_spin_unlock_irqrestore + _raw_write_lock_irqsave + _raw_write_unlock_irqrestore + rcu_barrier + rdev_get_drvdata + rdev_get_id + refcount_warn_saturate + __register_chrdev + register_console + register_pm_notifier + register_syscore_ops + regmap_read + regmap_update_bits_base + regmap_write + regulator_disable + regulator_enable + regulator_list_voltage_linear + regulator_map_voltage_linear + release_firmware + __release_region + request_firmware + __request_region + request_threaded_irq + reset_control_assert + reset_control_deassert + sched_clock + schedule + schedule_timeout + scnprintf + seq_lseek + seq_printf + seq_puts + seq_read + sg_alloc_table + sg_free_table + sg_init_table + sg_next + simple_attr_open + simple_attr_read + simple_attr_release + simple_attr_write + simple_open + simple_read_from_buffer + simple_write_to_buffer + single_open + single_release + smp_call_on_cpu + snd_pcm_format_width + snd_soc_component_read + snd_soc_component_update_bits + snd_soc_component_write + snd_soc_dai_set_fmt + snd_soc_dai_set_tdm_slot + snd_soc_dai_set_tristate + snd_soc_dapm_get_enum_double + snd_soc_dapm_put_enum_double + snd_soc_get_volsw + snd_soc_info_enum_double + snd_soc_info_volsw + snd_soc_of_get_dai_link_codecs + snd_soc_of_get_dai_name + snd_soc_of_parse_audio_routing + snd_soc_of_put_dai_link_codecs + snd_soc_put_volsw snprintf + sort + split_page + sprintf + sscanf __stack_chk_fail + strcasecmp + strcmp + strcpy + strlcat + strlen + strncmp + strncpy + strnlen + strscpy + strsep + strstr + __sw_hweight32 + sync_file_create + syscon_regmap_lookup_by_phandle + sysfs_create_group + sysfs_create_groups + sysfs_emit + sysfs_remove_group + system_wq + thermal_zone_device_update + trace_event_buffer_commit + trace_event_buffer_reserve + trace_event_printf + trace_event_raw_init + trace_event_reg + trace_handle_return + tracepoint_probe_register + trace_raw_output_prep + __trace_trigger_soft_disabled + ttm_bo_mmap_obj + __udelay + __unregister_chrdev + up_write + __usecs_to_jiffies + usleep_range_state + v4l2_device_register + v4l2_device_unregister + v4l2_fh_add + v4l2_fh_del + v4l2_fh_exit + v4l2_fh_init + vb2_buffer_done + vb2_dma_sg_memops + vb2_plane_cookie + vb2_queue_init + vfree + video_devdata + video_device_alloc + video_device_release + video_ioctl2 + __video_register_device + video_unregister_device + vmalloc + vmap + vunmap + wait_for_completion + wait_for_completion_interruptible_timeout + wait_for_completion_timeout + __wake_up + wake_up_process + __warn_printk + ww_mutex_lock + ww_mutex_unlock + +# required by cmupmucal.ko + debugfs_create_x32 + kernel_kobj + kobject_create_and_add + of_find_node_by_type + +# required by dmatest.ko + __dma_request_channel + mempool_alloc + mempool_alloc_slab + mempool_create + mempool_destroy + mempool_free + mempool_free_slab + param_get_bool + param_get_string + param_ops_bool + param_set_bool + param_set_copystring + set_freezable + set_user_nice + strim + +# required by drm_display_helper.ko + devm_backlight_device_register + _dev_printk + drm_atomic_get_connector_state + drm_atomic_get_crtc_state + drm_atomic_get_new_private_obj_state + drm_atomic_get_old_private_obj_state + drm_atomic_get_private_obj_state + __drm_atomic_helper_private_obj_duplicate_state + drm_atomic_private_obj_fini + drm_atomic_private_obj_init + drm_connector_register + drm_crtc_add_crc_entry + __drm_crtc_commit_free + drm_crtc_commit_wait + drm_crtc_wait_one_vblank + __drm_debug + drm_detect_monitor_audio + drm_display_mode_from_cea_vic + drm_edid_duplicate + drm_edid_get_monitor_name + drm_kms_helper_hotplug_event + drm_mode_object_put + drm_modeset_lock_single_interruptible + drm_object_property_set_value + __drm_printfn_debug + memchr_inv + __sw_hweight8 + system_long_wq + +# required by drm_ttm_helper.ko + drm_print_bits + ttm_bo_vmap + ttm_bo_vunmap + +# required by dss.ko + android_debug_symbol + arch_timer_read_counter + copy_from_kernel_nofault + dump_backtrace + init_task + input_close_device + input_open_device + input_register_handle + input_register_handler + input_unregister_handle + kmsg_dump_get_line + kmsg_dump_rewind + kstat + nr_irqs + of_count_phandle_with_args + proc_create + register_die_notifier + register_restart_handler + return_address + rtc_time64_to_tm + sys_tz + time64_to_tm + touch_softlockup_watchdog + __traceiter_android_vh_ipi_stop + __traceiter_console + __traceiter_cpu_idle + __traceiter_device_pm_callback_end + __traceiter_device_pm_callback_start + __traceiter_hrtimer_expire_entry + __traceiter_hrtimer_expire_exit + __traceiter_irq_handler_entry + __traceiter_irq_handler_exit + __traceiter_rwmmio_post_read + __traceiter_rwmmio_read + __traceiter_rwmmio_write + __traceiter_sched_switch + __traceiter_suspend_resume + __traceiter_workqueue_execute_end + __traceiter_workqueue_execute_start + __tracepoint_android_vh_ipi_stop + __tracepoint_console + __tracepoint_cpu_idle + __tracepoint_device_pm_callback_end + __tracepoint_device_pm_callback_start + __tracepoint_hrtimer_expire_entry + __tracepoint_hrtimer_expire_exit + __tracepoint_irq_handler_entry + __tracepoint_irq_handler_exit + __tracepoint_rwmmio_post_read + __tracepoint_rwmmio_read + __tracepoint_rwmmio_write + __tracepoint_sched_switch + __tracepoint_suspend_resume + __tracepoint_workqueue_execute_end + __tracepoint_workqueue_execute_start + __tty_alloc_driver + tty_driver_kref_put + tty_port_close + tty_port_destroy + tty_port_hangup + tty_port_init + tty_port_link_device + tty_port_open + tty_register_driver + tty_std_termios + tty_unregister_driver + unregister_console + vsnprintf + vzalloc + +# required by dwc3-exynosauto-usb.ko + device_create_managed_software_node + devm_phy_get + devm_regulator_get + phy_exit + phy_init + phy_power_off + phy_power_on + platform_device_add + platform_device_add_resources + platform_device_alloc + platform_device_del + platform_device_put + platform_device_unregister + __pm_relax + pm_runtime_allow + __pm_stay_awake + typec_register_partner + typec_register_port + typec_set_data_role + typec_set_pwr_opmode + typec_set_pwr_role + typec_unregister_partner + typec_unregister_port + unregister_pm_notifier + usb_gadget_set_state + usb_otg_state_string + wakeup_source_register + wakeup_source_unregister + +# required by exynos-acme.ko + bitmap_parselist + __cpu_active_mask + cpufreq_cpu_get + cpufreq_cpu_get_raw + cpufreq_cpu_put + __cpufreq_driver_target + cpufreq_freq_transition_begin + cpufreq_freq_transition_end + cpufreq_frequency_table_verify + cpufreq_generic_attr + cpufreq_register_driver + cpufreq_table_index_unsorted + cpuhp_tasks_frozen + dev_pm_opp_add + freq_qos_add_request + freq_qos_update_request + get_cpu_device + sysfs_create_file_ns + system_state + +# required by exynos-adv-tracer-s2d.ko + simple_strtoul # 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-coresight.ko + __cpuhp_setup_state_cpuslocked + cpu_pm_unregister_notifier + __cpu_present_mask + +# required by exynos-debug-test.ko + _ctype + remove_cpu + smp_call_function + smp_call_function_single + +# required by exynos-ehld.ko + sprint_symbol + +# required by exynos-itmon.ko + bitmap_print_to_pagebuf + free_pages + __get_free_pages + int_pow + +# required by exynos-pd.ko + of_genpd_add_provider_simple + pm_genpd_add_subdomain + pm_genpd_init + +# required by exynos_mfc.ko + clk_get + clk_put + dma_buf_begin_cpu_access + dma_buf_end_cpu_access + dma_buf_vmap + dma_buf_vunmap + hex_dump_to_buffer + iommu_map_sg + __sw_hweight64 + _totalram_pages + vb2_dqbuf + vb2_plane_vaddr + vb2_poll + vb2_qbuf + vb2_querybuf + vb2_queue_release + vb2_reqbufs + vb2_streamoff + vb2_streamon + +# required by exynos_pm_qos.ko + blocking_notifier_chain_unregister + kstrtoint_from_user + # 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 @@ -107,50 +825,886 @@ uart_unregister_driver uart_update_timeout uart_write_wakeup - __warn_printk + +# required by exynosauto_v920_thermal.ko + devm_thermal_of_zone_unregister + of_thermal_get_ntrips + +# required by gpu-sched.ko + mod_delayed_work_on + sched_set_fifo_low + __xa_alloc + xa_destroy + xa_erase + xa_find + xa_find_after + xa_store + +# required by hardlockup-watchdog.ko + cpus_read_lock + cpus_read_unlock + free_percpu + hrtimer_forward + hrtimer_try_to_cancel + +# required by hwmon.ko + __class_register + class_unregister + device_property_read_string + devres_free + devres_release + kobject_uevent_env + strpbrk + sysfs_notify + +# required by i2c-dev.ko + bus_register_notifier + bus_unregister_notifier + cdev_device_add + cdev_device_del + i2c_adapter_type + i2c_bus_type + i2c_for_each_dev + i2c_get_adapter + i2c_put_adapter + i2c_smbus_xfer + i2c_transfer_buffer_flags + i2c_verify_client + register_chrdev_region + unregister_chrdev_region + +# required by i2c-exynosauto.ko + cpu_bit_bitmap + +# required by panic-fingerprint.ko + stack_trace_save + +# required by pcie-exynos-dw-ep.ko + pci_epc_map_addr + +# required by pcs_xpcs.ko + mdiobus_modify_changed + phylink_mii_c22_pcs_decode_state + phylink_mii_c22_pcs_encode_advertisement + +# required by phy-exynosauto-usbdrd-super.ko + __clk_is_enabled + __devm_of_phy_provider_register + devm_phy_create + gpio_request + +# required by pinctrl-samsung-core.ko + device_get_next_child_node + devm_gpiochip_add_data_with_key + devm_pinctrl_register + fwnode_property_present + generic_handle_domain_irq + gpiochip_generic_free + gpiochip_generic_request + gpiochip_get_data + gpiochip_lock_as_irq + gpiochip_unlock_as_irq + irq_domain_xlate_twocell + of_fwnode_ops + of_node_name_eq + pinctrl_add_gpio_range + pinctrl_dev_get_drvdata + pinctrl_remove_gpio_range # 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 + +# required by pwm-samsung.ko + pwmchip_add + pwmchip_remove + pwm_get_chip_data + pwm_set_chip_data + +# required by realtek.ko + __genphy_config_aneg + genphy_handle_interrupt_no_ack + genphy_read_abilities + genphy_read_mmd_unsupported + genphy_read_status + genphy_resume + genphy_soft_reset + genphy_suspend + genphy_update_link + genphy_write_mmd_unsupported + __mdiobus_read + __mdiobus_write + phy_basic_t1_features + phy_drivers_register + phy_drivers_unregister + phy_error + __phy_modify + phy_modify + phy_modify_changed + phy_modify_paged + phy_modify_paged_changed + phy_read_paged + phy_restore_page + phy_select_page + phy_trigger_machine + phy_write_paged + +# required by rtc-s2vps02.ko + devm_rtc_device_register + pm_wakeup_ws_event + rtc_update_irq + rtc_valid_tm + +# required by s2vps02-master-mfd.ko + __devm_irq_alloc_descs + handle_nested_irq + +# required by samsung-iommu-group-v9.ko + iommu_group_alloc + iommu_group_set_name + +# required by samsung-secure-iova.ko + gen_pool_create + gen_pool_destroy + gen_pool_first_fit_align + +# required by samsung_dma_heap.ko + adjust_managed_page_count + anon_inode_getfile + deferred_free + dma_buf_get_flags + dmabuf_page_pool_alloc + dmabuf_page_pool_create + dmabuf_page_pool_destroy + dmabuf_page_pool_free + dmabuf_page_pool_get_size + dma_heap_add + dma_heap_get_dev + dma_heap_get_drvdata + dma_heap_get_name + dma_sync_sg_for_cpu + is_dma_buf_file + iterate_fd + misc_deregister + remap_pfn_range + __sg_page_iter_next + __sg_page_iter_start + __traceiter_android_vh_show_mem + __tracepoint_android_vh_show_mem + +# required by samsung_iommu_v9.ko + device_link_add + device_link_del + iommu_alloc_resv_region + iommu_device_register + iommu_device_sysfs_add + iommu_device_sysfs_remove + iommu_device_unlink + iommu_device_unregister + iommu_fwspec_add_ids + iommu_fwspec_free + iommu_group_for_each_dev + iommu_group_get + iommu_group_get_iommudata + iommu_group_remove_device + iommu_group_set_iommudata + iommu_report_device_fault + of_find_node_with_property + +# required by scaler.ko + clk_set_parent + dma_fence_default_wait + dma_heap_buffer_free + sync_file_get_fence + v4l2_ctrl_handler_free + v4l2_ctrl_handler_init_class + v4l2_ctrl_handler_setup + v4l2_ctrl_new_custom + v4l2_ctrl_new_std + v4l2_m2m_buf_queue + v4l2_m2m_buf_remove + v4l2_m2m_ctx_init + v4l2_m2m_ctx_release + v4l2_m2m_dqbuf + v4l2_m2m_get_curr_priv + v4l2_m2m_get_vq + v4l2_m2m_init + v4l2_m2m_job_finish + v4l2_m2m_mmap + v4l2_m2m_next_buf + v4l2_m2m_poll + v4l2_m2m_qbuf + v4l2_m2m_querybuf + v4l2_m2m_release + v4l2_m2m_reqbufs + v4l2_m2m_streamoff + v4l2_m2m_streamon + v4l2_m2m_try_schedule + v4l_bound_align_image + work_busy + +# required by sgpu.ko + autoremove_wake_function + backlight_device_register + backlight_device_unregister + __bitmap_andnot + __bitmap_xor + bpf_trace_run5 + bpf_trace_run9 + capable + __devm_drm_dev_alloc + devm_iounmap + dma_buf_dynamic_attach + dma_buf_move_notify + dma_buf_pin + dma_buf_unpin + dma_fence_array_create + dma_fence_chain_ops + dma_fence_chain_walk + dma_fence_get_status + dma_fence_get_stub + dma_fence_signal_locked + dma_fence_wait_any_timeout + dma_get_required_mask + dma_resv_add_fence + dma_resv_get_fences + dma_resv_get_singleton + dma_resv_iter_first_unlocked + dma_resv_iter_next_unlocked + dma_resv_reserve_fences + dma_resv_test_signaled + dma_resv_wait_timeout + do_wait_intr + down_read_killable + down_read_trylock + drain_workqueue + drm_add_edid_modes + drm_compat_ioctl + drm_connector_attach_dp_subconnector_property + drm_connector_attach_encoder + drm_connector_cleanup + drm_connector_init + drm_connector_init_with_ddc + drm_connector_list_iter_begin + drm_connector_list_iter_end + drm_connector_list_iter_next + drm_connector_update_edid_property + drm_crtc_cleanup + drm_crtc_helper_set_config + drm_crtc_helper_set_mode + drm_crtc_init + drm_crtc_send_vblank_event + drm_crtc_vblank_count + drm_crtc_vblank_helper_get_vblank_timestamp + drm_crtc_vblank_off + drm_crtc_vblank_on + drm_crtc_vblank_put + drm_cvt_mode + drm_debugfs_create_files + drm_detect_hdmi_monitor + drm_dev_enter + drm_dev_exit + drm_dev_put + drm_dev_register + drm_dev_unregister + drm_edid_header_is_valid + drm_edid_is_valid + drm_encoder_cleanup + drm_encoder_init + drm_framebuffer_cleanup + drm_framebuffer_init + drm_framebuffer_unregister_private + drm_gem_dmabuf_mmap + drm_gem_dmabuf_release + drm_gem_dmabuf_vmap + drm_gem_dmabuf_vunmap + drm_gem_fb_create_handle + drm_gem_fb_destroy + drm_gem_handle_create + drm_gem_mmap + drm_gem_object_release + drm_gem_prime_export + drm_gem_prime_fd_to_handle + drm_gem_prime_handle_to_fd + drm_gem_prime_mmap + drm_gem_private_object_init + drm_handle_vblank + drm_helper_connector_dpms + drm_helper_disable_unused_functions + drm_helper_force_disable_all + drm_helper_hpd_irq_event + drm_helper_mode_fill_fb_struct + drm_helper_probe_single_connector_modes + drm_ioctl + drm_is_current_master + drm_kms_helper_is_poll_worker + drm_kms_helper_poll_disable + drm_kms_helper_poll_enable + drm_kms_helper_poll_fini + drm_kms_helper_poll_init + drm_mm_init + drm_mm_insert_node_in_range + drmm_mode_config_init + drm_mm_print + drm_mm_remove_node + drm_mm_takedown + drm_mode_config_cleanup + drm_mode_create_scaling_mode_property + drm_mode_crtc_set_gamma_size + drm_mode_duplicate + drm_mode_probed_add + drm_mode_set_crtcinfo + drm_mode_set_name + drm_mode_vrefresh + drm_object_attach_property + drm_open + drm_poll + drm_prime_gem_destroy + drm_prime_pages_to_sg + drm_prime_sg_to_dma_addr_array + __drm_printfn_seq_file + drm_property_create_enum + drm_property_create_range + __drm_puts_seq_file + drm_read + drm_release + drm_syncobj_add_point + drm_syncobj_create + drm_syncobj_find + drm_syncobj_find_fence + drm_syncobj_free + drm_syncobj_get_fd + drm_syncobj_get_handle + drm_syncobj_replace_fence + drm_vblank_init + __fdget + flush_delayed_work + __folio_put + gcd + __get_task_comm + handle_simple_irq + i2c_bit_add_bus + i2c_new_client_device + ida_destroy + idr_alloc + idr_destroy + idr_find + idr_for_each + idr_get_next + idr_remove + idr_replace + __init_rwsem + iommu_iova_to_phys + jiffies_to_usecs + ktime_get_ts64 + __memcpy_fromio + __memcpy_toio + memremap + memunmap + mmu_notifier_synchronize + nsecs_to_jiffies + page_pinner_inited + __page_pinner_put_page + param_ops_charp + param_ops_hexint + pci_assign_unassigned_bus_resources + pci_bus_resource_n + pcie_bandwidth_available + pcie_get_speed_cap + pci_enable_atomic_ops_to_root + pci_enable_pcie_error_reporting + pci_free_irq_vectors + pci_get_domain_bus_and_slot + pci_iomap + pci_iounmap + pci_irq_vector + pci_map_rom + pci_msix_vec_count + pci_read_config_word + pci_release_resource + pci_resize_resource + pci_unmap_rom + pci_write_config_dword + pci_write_config_word + perf_pmu_unregister + pid_task + pin_user_pages_fast + pm_runtime_autosuspend_expiration + power_supply_is_system_supplied + __printk_ratelimit + radix_tree_tagged + __rb_erase_color + rb_first_postorder + __rb_insert_augmented + rb_next + rb_next_postorder + __rcu_read_lock + __rcu_read_unlock + seq_putc + seq_write + set_normalized_timespec64 + sg_alloc_table_from_pages_segment + si_meminfo + strchr + sysfs_create_files + sysfs_remove_files + __traceiter_gpu_mem_total + __tracepoint_gpu_mem_total + trace_print_array_seq + ttm_bo_init_reserved + ttm_bo_kmap + ttm_bo_kunmap + ttm_bo_lock_delayed_workqueue + ttm_bo_mem_space + ttm_bo_move_accel_cleanup + ttm_bo_move_memcpy + ttm_bo_move_to_lru_tail + ttm_bo_pin + ttm_bo_put + ttm_bo_set_bulk_move + ttm_bo_unlock_delayed_workqueue + ttm_bo_unpin + ttm_bo_validate + ttm_bo_vm_access + ttm_bo_vm_close + ttm_bo_vm_dummy_page + ttm_bo_vm_fault_reserved + ttm_bo_vm_open + ttm_bo_vm_reserve + 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 + ttm_pool_alloc + ttm_pool_debugfs + ttm_pool_free + ttm_range_man_fini_nocheck + ttm_range_man_init_nocheck + ttm_resource_fini + ttm_resource_free + ttm_resource_init + ttm_resource_manager_evict_all + ttm_resource_manager_init + ttm_resource_manager_usage + ttm_sg_tt_init + ttm_tt_fini + unpin_user_page + up_read + vm_get_page_prot + __wake_up_locked + ww_mutex_lock_interruptible + ww_mutex_trylock + +# required by snd-soc-samsung-abox-core.ko + __devm_regmap_init + __devm_regmap_init_mmio_clk + __devm_request_region + dma_mmap_attrs + irq_set_affinity + kthread_bind + __platform_register_drivers + platform_unregister_drivers + pm_runtime_no_callbacks + snd_ctl_enum_info + snd_pcm_hw_constraint_integer + snd_pcm_lib_free_pages + snd_pcm_lib_ioctl + snd_pcm_lib_malloc_pages + snd_pcm_lib_preallocate_free_for_all + snd_pcm_period_elapsed + snd_soc_add_component_controls + snd_soc_component_init_regmap + snd_soc_dapm_add_routes + snd_soc_dapm_kcontrol_widget + snd_soc_dapm_mux_update_power + snd_soc_dapm_new_control + snd_soc_dapm_new_controls + snd_soc_set_runtime_hwparams + snd_soc_unregister_component + stpcpy + __tasklet_hi_schedule + +# required by snd-soc-tas6424.ko + devm_gpiod_get_optional + devm_regulator_bulk_get + gpiod_set_value_cansleep + regcache_cache_only + regcache_mark_dirty + regcache_sync + regulator_bulk_disable + regulator_bulk_enable + +# required by snd-soc-tlv320adcx140.ko + device_property_read_u8_array + gpiod_set_raw_value_cansleep + snd_soc_dapm_get_volsw + snd_soc_dapm_put_volsw + +# required by spi-exynosauto.ko + gpio_free + __spi_alloc_controller + spi_controller_resume + spi_controller_suspend + spi_delay_exec + spi_finalize_current_message + spi_register_controller + spi_unregister_controller + +# required by spidev.ko + device_property_match_string + driver_unregister + _raw_spin_lock_irq + _raw_spin_unlock_irq + __spi_register_driver + spi_setup + spi_sync + stream_open + +# required by stmmac-platform.ko + devm_clk_get_optional + of_get_mac_address + of_phy_is_fixed_link + +# required by stmmac.ko + bitmap_free + bitmap_zalloc + bpf_dispatcher_xdp_func + bpf_master_redirect_enabled_key + bpf_prog_put + bpf_stats_enabled_key + bpf_warn_invalid_xdp_action + consume_skb + debugfs_rename + dev_addr_mod + dev_close + device_set_wakeup_enable + __dev_kfree_skb_any + devm_alloc_etherdev_mqs + dev_open + do_trace_netlink_extack + dql_completed + dql_reset + eth_mac_addr + ethtool_convert_legacy_u32_to_link_mode + ethtool_convert_link_mode_to_legacy_u32 + ethtool_op_get_link + ethtool_op_get_ts_info + eth_type_trans + flow_block_cb_setup_simple + flow_rule_match_basic + flow_rule_match_ipv4_addrs + flow_rule_match_ports + flow_rule_match_vlan + fwnode_get_named_child_node + fwnode_get_phy_node + get_device_system_crosststamp + __local_bh_enable_ip + mdiobus_alloc_size + mdiobus_free + mdiobus_get_phy + mdiobus_unregister + mdio_device_create + mdio_device_free + __napi_alloc_skb + napi_complete_done + napi_disable + napi_enable + napi_gro_receive + __napi_schedule + napi_schedule_prep + netdev_alert + netdev_pick_tx + netdev_rss_key_fill + netdev_update_features + netif_carrier_off + netif_carrier_on + netif_device_attach + netif_device_detach + netif_napi_add_weight + __netif_napi_del + netif_schedule_queue + netif_set_real_num_rx_queues + netif_set_real_num_tx_queues + netif_tx_wake_queue + net_ratelimit + __of_mdiobus_register + page_pool_alloc_pages + page_pool_create + page_pool_destroy + page_pool_put_defragged_page + page_pool_release_page + phy_attached_info + phylink_connect_phy + phylink_destroy + phylink_disconnect_phy + phylink_ethtool_get_eee + phylink_ethtool_get_pauseparam + phylink_ethtool_get_wol + phylink_ethtool_ksettings_get + phylink_ethtool_ksettings_set + phylink_ethtool_nway_reset + phylink_ethtool_set_eee + phylink_ethtool_set_pauseparam + phylink_ethtool_set_wol + phylink_expects_phy + phylink_fwnode_phy_connect + phylink_get_eee_err + phylink_mii_ioctl + phylink_resume + phylink_speed_down + phylink_speed_up + phylink_start + phylink_stop + phylink_suspend + pinctrl_pm_select_default_state + pinctrl_pm_select_sleep_state + ptp_clock_event + ptp_clock_index + ptp_clock_register + ptp_clock_unregister + _raw_spin_lock_bh + _raw_spin_unlock_bh + register_netdev + register_netdevice_notifier + reset_control_reset + rtnl_lock + rtnl_unlock + skb_add_rx_frag + skb_pull + skb_put + skb_tstamp_tx + synchronize_net + synchronize_rcu + __traceiter_xdp_exception + __tracepoint_xdp_exception + unregister_netdev + unregister_netdevice_notifier + xdp_convert_zc_to_xdp_frame + xdp_do_flush + 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 + xdp_rxq_info_unreg + xdp_rxq_info_unreg_mem_model + xdp_warn + xp_alloc + xp_dma_map + xp_dma_sync_for_cpu_slow + xp_dma_sync_for_device_slow + xp_dma_unmap + xp_free + xp_raw_get_dma + xp_set_rxq_info + xsk_clear_rx_need_wakeup + xsk_get_pool_from_qid + xsk_set_rx_need_wakeup + xsk_set_tx_need_wakeup + xsk_tx_completed + xsk_tx_peek_desc + xsk_tx_release + xsk_uses_need_wakeup + +# required by sxgmac.ko + alloc_chrdev_region + cdev_add + devm_gpiod_get + gpiod_direction_output + gpiod_set_value + +# required by ufs-exynosauto-core.ko + scsi_dma_unmap + scsi_done + ufshcd_auto_hibern8_update + ufshcd_config_pwr_mode + ufshcd_dme_get_attr + ufshcd_dme_set_attr + ufshcd_dump_regs + ufshcd_link_recovery + ufshcd_pltfrm_init + ufshcd_release + ufshcd_remove + ufshcd_shutdown + ufshcd_system_resume + ufshcd_system_suspend + +# preserved by --additions-only + add_wait_queue + bus_find_device + cec_allocate_adapter + cec_delete_adapter + cec_received_msg_ts + cec_register_adapter + cec_s_phys_addr + cec_s_phys_addr_from_edid + cec_transmit_attempt_done_ts + cec_transmit_done_ts + cec_unregister_adapter + component_add + component_bind_all + component_del + component_master_add_with_match + component_master_del + component_unbind_all + console_suspend_enabled + console_trylock + console_unlock + debugfs_lookup + device_rename + devm_mipi_dsi_attach + devm_mipi_dsi_device_register_full + display_timings_release + dma_buf_mmap + drm_atomic_bridge_chain_enable + drm_atomic_bridge_chain_pre_enable + drm_atomic_helper_bridge_destroy_state + drm_atomic_helper_bridge_duplicate_state + drm_atomic_helper_bridge_propagate_bus_fmt + drm_atomic_helper_bridge_reset + drm_atomic_helper_check + drm_atomic_helper_cleanup_planes + drm_atomic_helper_commit + drm_atomic_helper_commit_modeset_disables + 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_crtc_destroy_state + drm_atomic_helper_crtc_duplicate_state + drm_atomic_helper_crtc_reset + drm_atomic_helper_disable_plane + drm_atomic_helper_disable_planes_on_crtc + drm_atomic_helper_fake_vblank + drm_atomic_helper_page_flip + __drm_atomic_helper_plane_destroy_state + __drm_atomic_helper_plane_duplicate_state + __drm_atomic_helper_plane_reset + drm_atomic_helper_set_config + drm_atomic_helper_shutdown + drm_atomic_helper_update_plane + drm_atomic_helper_wait_for_vblanks + drm_bridge_add + drm_bridge_attach + drm_bridge_hpd_notify + drm_bridge_remove + drm_crtc_arm_vblank_event + drm_crtc_handle_vblank + drm_crtc_init_with_planes + drm_crtc_vblank_get + drm_crtc_vblank_waitqueue + drm_dev_alloc + drm_display_mode_from_videomode + drm_display_mode_to_videomode + drm_do_get_edid + drm_flip_work_cleanup + drm_flip_work_commit + drm_flip_work_init + drm_flip_work_queue + drm_format_info + drm_gem_create_mmap_offset + drm_gem_vm_close + drm_gem_vm_open + drm_get_connector_status_name + drm_get_format_info + drm_hdmi_avi_infoframe_from_display_mode + drm_mode_config_helper_resume + drm_mode_config_helper_suspend + drm_mode_config_reset + drm_mode_copy + drm_mode_create + drm_mode_object_get + drm_of_component_match_add + drm_of_crtc_port_mask + drm_of_find_possible_crtcs + drm_panel_add + drm_panel_disable + drm_panel_enable + drm_panel_get_modes + drm_panel_init + drm_panel_prepare + drm_panel_remove + drm_panel_unprepare + drm_plane_cleanup + drm_plane_create_alpha_property + drm_plane_create_blend_mode_property + drm_plane_create_zpos_immutable_property + drm_plane_create_zpos_property + __drm_printfn_info + drm_property_create + drm_property_create_blob + drm_rotation_simplify + drm_state_dump + drm_universal_plane_init + drm_writeback_connector_init + drm_writeback_queue_job + drm_writeback_signal_completion + gpiod_to_irq + hdmi_audio_infoframe_init + hdmi_avi_infoframe_init + hdmi_avi_infoframe_pack + i2c_new_ancillary_device + kstrtobool + kstrtou8 + mipi_dsi_attach + mipi_dsi_detach + mipi_dsi_device_register_full + mipi_dsi_device_unregister + mipi_dsi_driver_register_full + mipi_dsi_driver_unregister + mipi_dsi_host_register + mipi_dsi_host_unregister + of_drm_find_bridge + of_drm_find_panel + of_find_i2c_device_by_node + of_find_mipi_dsi_host_by_node + of_get_display_timings + of_graph_get_endpoint_by_regs + of_graph_get_next_endpoint + of_graph_get_port_by_id + of_graph_get_remote_node + of_graph_get_remote_port + of_graph_get_remote_port_parent + of_graph_parse_endpoint + of_phandle_iterator_init + of_phandle_iterator_next + param_ops_long + platform_bus_type + platform_device_register_full + platform_find_device_by_driver + regmap_bulk_write + regmap_multi_reg_write + regmap_register_patch + regulator_set_load + seq_hex_dump + seq_release + snd_ctl_add + snd_ctl_new1 + snd_pcm_add_chmap_ctls + snd_pcm_create_iec958_consumer_default + snd_pcm_fill_iec958_consumer + snd_pcm_fill_iec958_consumer_hw_params + snd_pcm_hw_constraint_eld + snd_soc_jack_report + strnstr + synchronize_irq + videomode_from_timings + vmalloc_to_page diff --git a/android/abi_gki_aarch64_galaxy b/android/abi_gki_aarch64_galaxy index d14cade9b61a..01f6927b0592 100644 --- a/android/abi_gki_aarch64_galaxy +++ b/android/abi_gki_aarch64_galaxy @@ -359,6 +359,7 @@ __traceiter_android_vh_wq_lockup_pool __traceiter_block_rq_insert __traceiter_console + __traceiter_error_report_end __traceiter_hrtimer_expire_entry __traceiter_hrtimer_expire_exit __traceiter_irq_handler_entry @@ -400,6 +401,7 @@ __tracepoint_android_vh_watchdog_timer_softlockup __tracepoint_android_vh_wq_lockup_pool __tracepoint_block_rq_insert + __tracepoint_error_report_end __tracepoint_console __tracepoint_hrtimer_expire_entry __tracepoint_hrtimer_expire_exit diff --git a/android/abi_gki_aarch64_imx b/android/abi_gki_aarch64_imx index 478cb5cab475..53edd1d3b5d7 100644 --- a/android/abi_gki_aarch64_imx +++ b/android/abi_gki_aarch64_imx @@ -492,6 +492,9 @@ dma_get_sgtable_attrs dma_get_slave_channel dma_heap_add + dma_heap_buffer_alloc + dma_heap_buffer_free + dma_heap_find dma_heap_get_dev dma_heap_get_drvdata dma_heap_get_name @@ -1164,6 +1167,8 @@ kvfree kvfree_call_rcu kvmalloc_node + led_classdev_register_ext + led_classdev_unregister led_init_default_state_get __list_add_valid __list_del_entry_valid @@ -1820,6 +1825,7 @@ schedule schedule_hrtimeout schedule_timeout + schedule_timeout_idle schedule_timeout_uninterruptible scmi_driver_register scmi_driver_unregister diff --git a/android/abi_gki_aarch64_meizu b/android/abi_gki_aarch64_meizu new file mode 100644 index 000000000000..32c666766bd9 --- /dev/null +++ b/android/abi_gki_aarch64_meizu @@ -0,0 +1,14 @@ +[abi_symbol_list] + __traceiter_android_vh_tune_scan_type + __traceiter_android_vh_tune_swappiness + __tracepoint_android_vh_tune_swappiness + __tracepoint_android_vh_tune_scan_type + __traceiter_android_rvh_sk_alloc + __traceiter_android_rvh_sk_free + __tracepoint_android_rvh_sk_alloc + __tracepoint_android_rvh_sk_free + __traceiter_android_vh_alloc_pages_slowpath + __tracepoint_android_vh_tune_swappiness + __tracepoint_android_vh_tune_scan_type + __tracepoint_android_vh_alloc_pages_slowpath + diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index bac4ddf87c67..2dcdd2f1f94c 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -2645,12 +2645,17 @@ __traceiter_android_vh_check_bpf_syscall __traceiter_android_vh_check_file_open __traceiter_android_vh_check_mmap_file + __traceiter_android_vh_compaction_exit + __traceiter_android_vh_compaction_try_to_compact_pages_exit __traceiter_android_vh_cpufreq_fast_switch __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit __traceiter_android_vh_iommu_iovad_alloc_iova __traceiter_android_vh_iommu_iovad_free_iova __traceiter_android_vh_is_fpsimd_save + __traceiter_android_vh_mm_alloc_pages_direct_reclaim_enter + __traceiter_android_vh_mm_alloc_pages_direct_reclaim_exit + __traceiter_android_vh_mm_alloc_pages_may_oom_exit __traceiter_android_vh_rwsem_init __traceiter_android_vh_rwsem_wake __traceiter_android_vh_rwsem_write_finished @@ -2661,6 +2666,7 @@ __traceiter_android_vh_show_suspend_epoch_val __traceiter_android_vh_syscall_prctl_finished __traceiter_android_vh_ufs_clock_scaling + __traceiter_android_vh_vmscan_kswapd_done __traceiter_cpu_frequency __traceiter_gpu_mem_total __traceiter_ipi_entry @@ -2740,12 +2746,17 @@ __tracepoint_android_vh_check_bpf_syscall __tracepoint_android_vh_check_file_open __tracepoint_android_vh_check_mmap_file + __tracepoint_android_vh_compaction_exit + __tracepoint_android_vh_compaction_try_to_compact_pages_exit __tracepoint_android_vh_cpufreq_fast_switch __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit __tracepoint_android_vh_iommu_iovad_alloc_iova __tracepoint_android_vh_iommu_iovad_free_iova __tracepoint_android_vh_is_fpsimd_save + __tracepoint_android_vh_mm_alloc_pages_direct_reclaim_enter + __tracepoint_android_vh_mm_alloc_pages_direct_reclaim_exit + __tracepoint_android_vh_mm_alloc_pages_may_oom_exit __tracepoint_android_vh_rwsem_init __tracepoint_android_vh_rwsem_wake __tracepoint_android_vh_rwsem_write_finished @@ -2756,6 +2767,7 @@ __tracepoint_android_vh_show_suspend_epoch_val __tracepoint_android_vh_syscall_prctl_finished __tracepoint_android_vh_ufs_clock_scaling + __tracepoint_android_vh_vmscan_kswapd_done __tracepoint_cpu_frequency __tracepoint_gpu_mem_total __tracepoint_ipi_entry diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index ee42a50dcbdb..5558b80cb237 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -20,6 +20,9 @@ down_read_trylock drm_crtc_vblank_waitqueue filp_close + folio_add_lru + folio_mapping + folio_referenced for_each_kernel_tracepoint freq_qos_add_notifier freq_qos_remove_notifier @@ -32,22 +35,31 @@ iio_channel_get iio_channel_release iio_get_channel_type + ip_local_deliver ip6_local_out ip6_route_me_harder ip_route_me_harder ipv6_find_hdr + iov_iter_advance is_ashmem_file jiffies_64_to_clock_t + kick_process ktime_get_coarse_real_ts64 + mem_cgroup_update_lru_size memory_cgrp_subsys memory_cgrp_subsys_enabled_key mem_cgroup_from_id mipi_dsi_generic_write mmc_wait_for_cmd + __mod_lruvec_state + __mod_zone_page_state nf_ct_attach nf_ct_delete + nf_register_net_hook nf_register_net_hooks + nf_unregister_net_hook nf_unregister_net_hooks + nr_running of_css __page_file_index __page_mapcount @@ -56,6 +68,7 @@ prepare_to_wait_exclusive proc_symlink public_key_verify_signature + put_pages_list radix_tree_lookup_slot radix_tree_replace_slot _raw_write_trylock @@ -63,8 +76,10 @@ register_tcf_proto_ops regulator_map_voltage_linear_range remove_proc_subtree + root_mem_cgroup rtc_read_alarm rtc_set_alarm + __rtnl_link_unregister sdio_memcpy_fromio sdio_memcpy_toio sdio_set_block_size @@ -90,6 +105,9 @@ __traceiter_android_vh_account_process_tick_gran __traceiter_android_vh_account_task_time __traceiter_android_vh_do_futex + __traceiter_android_vh_exit_check + __traceiter_android_vh_exit_signal_whether_wake + __traceiter_android_vh_freeze_whether_wake __traceiter_android_vh_futex_sleep_start __traceiter_android_vh_futex_wait_end __traceiter_android_vh_futex_wait_start @@ -98,6 +116,7 @@ __traceiter_android_vh_futex_wake_up_q_finish __traceiter_android_vh_record_mutex_lock_starttime __traceiter_android_vh_record_pcpu_rwsem_starttime + __traceiter_android_vh_percpu_rwsem_wq_add __traceiter_android_vh_record_rtmutex_lock_starttime __traceiter_android_vh_record_rwsem_lock_starttime __traceiter_android_vh_alter_mutex_list_add @@ -120,6 +139,7 @@ __traceiter_android_vh_check_folio_look_around_ref __traceiter_android_vh_dup_task_struct __traceiter_android_vh_exit_signal + __traceiter_android_vh_killed_process __traceiter_android_vh_look_around __traceiter_android_vh_look_around_migrate_folio __traceiter_android_vh_mem_cgroup_id_remove @@ -140,6 +160,7 @@ __traceiter_android_vh_rwsem_opt_spin_finish __traceiter_android_vh_rwsem_opt_spin_start __traceiter_android_vh_rwsem_wake_finish + __traceiter_android_vh_adjust_alloc_flags __traceiter_android_vh_sched_stat_runtime_rt __traceiter_android_vh_shrink_node_memcgs __traceiter_android_vh_sync_txn_recvd @@ -150,6 +171,10 @@ __traceiter_block_rq_issue __traceiter_block_rq_merge __traceiter_block_rq_requeue + __traceiter_net_dev_queue + __traceiter_net_dev_xmit + __traceiter_netif_receive_skb + __traceiter_netif_rx __traceiter_sched_stat_blocked __traceiter_sched_stat_iowait __traceiter_sched_stat_runtime @@ -158,6 +183,12 @@ __traceiter_sched_waking __traceiter_task_rename __traceiter_android_vh_test_clear_look_around_ref + __traceiter_android_vh_tune_swappiness + __traceiter_android_vh_alloc_oem_binder_struct + __traceiter_android_vh_binder_transaction_received + __traceiter_android_vh_free_oem_binder_struct + __traceiter_android_vh_binder_special_task + __traceiter_android_vh_binder_free_buf __tracepoint_android_rvh_post_init_entity_util_avg __tracepoint_android_rvh_rtmutex_force_update __tracepoint_android_vh_account_process_tick_gran @@ -182,12 +213,16 @@ __tracepoint_android_vh_check_folio_look_around_ref __tracepoint_android_vh_do_futex __tracepoint_android_vh_dup_task_struct + __tracepoint_android_vh_exit_check __tracepoint_android_vh_exit_signal + __tracepoint_android_vh_killed_process + __tracepoint_android_vh_exit_signal_whether_wake __tracepoint_android_vh_mem_cgroup_id_remove __tracepoint_android_vh_mem_cgroup_css_offline __tracepoint_android_vh_mem_cgroup_css_online __tracepoint_android_vh_mem_cgroup_free __tracepoint_android_vh_mem_cgroup_alloc + __tracepoint_android_vh_freeze_whether_wake __tracepoint_android_vh_futex_sleep_start __tracepoint_android_vh_futex_wait_end __tracepoint_android_vh_futex_wait_start @@ -206,6 +241,7 @@ __tracepoint_android_vh_mutex_unlock_slowpath __tracepoint_android_vh_record_mutex_lock_starttime __tracepoint_android_vh_record_pcpu_rwsem_starttime + __tracepoint_android_vh_percpu_rwsem_wq_add __tracepoint_android_vh_record_rtmutex_lock_starttime __tracepoint_android_vh_record_rwsem_lock_starttime __tracepoint_android_vh_rtmutex_waiter_prio @@ -213,17 +249,23 @@ __tracepoint_android_vh_rwsem_opt_spin_finish __tracepoint_android_vh_rwsem_opt_spin_start __tracepoint_android_vh_rwsem_wake_finish + __tracepoint_android_vh_adjust_alloc_flags __tracepoint_android_vh_sched_stat_runtime_rt __tracepoint_android_vh_shrink_node_memcgs __tracepoint_android_vh_sync_txn_recvd __tracepoint_android_vh_task_blocks_on_rtmutex __tracepoint_android_vh_test_clear_look_around_ref + __tracepoint_android_vh_tune_swappiness __tracepoint_block_bio_queue __tracepoint_block_getrq __tracepoint_block_rq_complete __tracepoint_block_rq_issue __tracepoint_block_rq_merge __tracepoint_block_rq_requeue + __tracepoint_net_dev_queue + __tracepoint_net_dev_xmit + __tracepoint_netif_receive_skb + __tracepoint_netif_rx __tracepoint_sched_stat_blocked __tracepoint_sched_stat_iowait __tracepoint_sched_stat_runtime @@ -231,6 +273,11 @@ __tracepoint_sched_stat_wait __tracepoint_sched_waking __tracepoint_task_rename + __tracepoint_android_vh_alloc_oem_binder_struct + __tracepoint_android_vh_binder_transaction_received + __tracepoint_android_vh_free_oem_binder_struct + __tracepoint_android_vh_binder_special_task + __tracepoint_android_vh_binder_free_buf __trace_puts try_to_free_mem_cgroup_pages typec_mux_get_drvdata @@ -240,5 +287,6 @@ wait_for_completion_io_timeout wait_for_completion_killable_timeout wakeup_source_remove + wake_up_state wq_worker_comm zero_pfn diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index 4fe7be5b8bbe..2da29f765672 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -1,4 +1,5 @@ [abi_symbol_list] + activate_task add_cpu add_timer add_timer_on @@ -30,6 +31,7 @@ __arch_clear_user __arch_copy_from_user __arch_copy_to_user + arch_freq_scale arch_timer_read_counter argv_free argv_split @@ -42,6 +44,7 @@ atomic_notifier_chain_register atomic_notifier_chain_unregister autoremove_wake_function + available_idle_cpu backlight_device_set_brightness badblocks_check badblocks_clear @@ -49,13 +52,19 @@ badblocks_init badblocks_set badblocks_show + balance_push_callback bcmp bdev_end_io_acct bdev_nr_zones bdev_start_io_acct bin2hex + bio_add_page + bio_alloc_bioset + bio_chain bio_endio bio_end_io_acct_remapped + bio_init + bio_put bio_start_io_acct __bitmap_and __bitmap_andnot @@ -76,6 +85,9 @@ bitmap_zalloc blk_abort_request __blk_alloc_disk + blk_check_plugged + blkdev_get_by_dev + blkdev_put blk_execute_rq_nowait __blk_mq_alloc_disk blk_mq_alloc_tag_set @@ -114,6 +126,8 @@ blocking_notifier_chain_unregister bpf_trace_run1 bpf_trace_run10 + bpf_trace_run11 + bpf_trace_run12 bpf_trace_run2 bpf_trace_run3 bpf_trace_run4 @@ -143,11 +157,13 @@ cdev_device_del cdev_init __check_object_size + check_preempt_curr __class_create class_destroy class_interface_unregister __class_register class_unregister + cleancache_register_ops clear_page __ClearPageMovable clk_disable @@ -204,22 +220,36 @@ _copy_from_iter __copy_overflow _copy_to_iter + __cpu_active_mask cpu_all_bits cpu_bit_bitmap + cpufreq_add_update_util_hook cpufreq_cpu_get cpufreq_cpu_get_raw cpufreq_cpu_put + cpufreq_disable_fast_switch + cpufreq_driver_fast_switch + cpufreq_driver_resolve_freq + __cpufreq_driver_target cpufreq_driver_target + cpufreq_enable_fast_switch cpufreq_freq_transition_begin cpufreq_freq_transition_end cpufreq_frequency_table_verify cpufreq_generic_attr cpufreq_get cpufreq_get_policy + cpufreq_policy_transition_delay_us cpufreq_quick_get cpufreq_register_driver + cpufreq_register_governor cpufreq_register_notifier + cpufreq_remove_update_util_hook cpufreq_table_index_unsorted + cpufreq_this_cpu_can_update + cpufreq_update_util_data + cpu_hotplug_disable + cpu_hotplug_enable __cpuhp_remove_state __cpuhp_setup_state __cpuhp_setup_state_cpuslocked @@ -227,15 +257,19 @@ __cpuhp_state_remove_instance cpuhp_tasks_frozen cpu_hwcaps + cpuidle_driver_state_disabled + cpuidle_get_driver cpu_latency_qos_add_request cpu_latency_qos_remove_request cpu_latency_qos_update_request + cpumask_local_spread cpu_number __cpu_online_mask cpu_pm_register_notifier cpu_pm_unregister_notifier __cpu_possible_mask __cpu_present_mask + cpupri_find_fitness cpu_scale cpus_read_lock cpus_read_unlock @@ -275,6 +309,7 @@ csum_partial csum_tcpudp_nofold _ctype + deactivate_task debugfs_attr_read debugfs_attr_write debugfs_create_atomic_t @@ -282,6 +317,7 @@ debugfs_create_devm_seqfile debugfs_create_dir debugfs_create_file + debugfs_create_file_unsafe debugfs_create_size_t debugfs_create_symlink debugfs_create_u16 @@ -326,6 +362,7 @@ __dev_get_by_index dev_get_by_index dev_get_by_name + dev_get_stats device_add device_add_disk device_add_groups @@ -340,6 +377,7 @@ device_get_child_node_count device_get_dma_attr device_get_match_data + device_get_named_child_node device_get_next_child_node device_initialize device_link_add @@ -394,13 +432,17 @@ devm_ioremap_resource devm_ioremap_wc devm_iounmap + __devm_irq_alloc_descs devm_kasprintf devm_kfree devm_kmalloc devm_kmemdup + devm_krealloc devm_kstrdup devm_kstrdup_const devm_led_classdev_register_ext + devm_memremap + devm_memunmap devm_mfd_add_devices devm_nvmem_register __devm_of_phy_provider_register @@ -420,18 +462,21 @@ __devm_regmap_init __devm_regmap_init_i2c __devm_regmap_init_spi + __devm_regmap_init_spmi_ext devm_regulator_bulk_get devm_regulator_get devm_regulator_get_exclusive devm_regulator_get_optional devm_regulator_put devm_regulator_register + devm_request_any_context_irq __devm_request_region devm_request_threaded_irq devm_rtc_device_register devm_snd_soc_register_component devm_thermal_of_cooling_device_register devm_thermal_of_zone_register + devm_thermal_of_zone_unregister devm_usb_get_phy_by_phandle _dev_notice dev_pm_domain_attach_by_name @@ -459,6 +504,7 @@ __devres_alloc_node devres_free dev_set_name + dev_vprintk_emit _dev_warn disable_irq disable_irq_nosync @@ -486,6 +532,7 @@ dmabuf_page_pool_free dmabuf_page_pool_get_size dma_buf_put + dma_buf_set_name dma_buf_unmap_attachment dma_buf_vmap dma_buf_vunmap @@ -542,19 +589,25 @@ drain_workqueue driver_register driver_unregister + drm_add_edid_modes drm_add_modes_noedid drm_atomic_add_affected_connectors drm_atomic_add_affected_planes + drm_atomic_bridge_chain_disable + drm_atomic_bridge_chain_post_disable drm_atomic_commit drm_atomic_get_connector_state drm_atomic_get_crtc_state drm_atomic_get_new_connector_for_encoder + drm_atomic_get_new_private_obj_state drm_atomic_get_old_connector_for_encoder + drm_atomic_get_old_private_obj_state drm_atomic_get_plane_state drm_atomic_get_private_obj_state drm_atomic_helper_bridge_destroy_state drm_atomic_helper_bridge_duplicate_state drm_atomic_helper_bridge_reset + drm_atomic_helper_calc_timestamping_constants drm_atomic_helper_check_modeset drm_atomic_helper_check_planes drm_atomic_helper_check_plane_state @@ -567,7 +620,10 @@ drm_atomic_helper_commit_planes drm_atomic_helper_commit_tail __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_crtc_destroy_state __drm_atomic_helper_crtc_duplicate_state __drm_atomic_helper_crtc_reset @@ -583,6 +639,7 @@ drm_atomic_helper_setup_commit drm_atomic_helper_shutdown drm_atomic_helper_swap_state + drm_atomic_helper_update_legacy_modeset_state drm_atomic_helper_update_plane drm_atomic_helper_wait_for_dependencies drm_atomic_helper_wait_for_flip_done @@ -610,12 +667,17 @@ drm_connector_list_iter_next drm_connector_register drm_connector_unregister + drm_connector_update_edid_property + drm_crtc_add_crc_entry drm_crtc_arm_vblank_event drm_crtc_cleanup + __drm_crtc_commit_free + drm_crtc_commit_wait drm_crtc_enable_color_mgmt drm_crtc_handle_vblank drm_crtc_init_with_planes drm_crtc_send_vblank_event + drm_crtc_vblank_count drm_crtc_vblank_count_and_time drm_crtc_vblank_get drm_crtc_vblank_off @@ -623,10 +685,20 @@ drm_crtc_vblank_put drm_crtc_wait_one_vblank ___drm_dbg + __drm_debug + drm_detect_monitor_audio + __drm_dev_dbg + drm_dev_printk drm_dev_put drm_dev_register drm_dev_unregister + drm_display_mode_from_cea_vic drm_display_mode_to_videomode + drm_do_get_edid + drm_edid_duplicate + drm_edid_get_monitor_name + drm_edid_is_valid + drm_edid_to_sad drm_encoder_cleanup drm_encoder_init __drm_err @@ -648,6 +720,7 @@ drm_gem_private_object_init drm_gem_vm_close drm_gem_vm_open + drm_get_edid drm_get_format_info drm_helper_mode_fill_fb_struct drm_helper_probe_single_connector_modes @@ -655,10 +728,13 @@ drm_kms_helper_hotplug_event drm_kms_helper_poll_fini drm_kms_helper_poll_init + drm_match_cea_mode drmm_kmalloc drmm_mode_config_init drm_mode_config_reset drm_mode_convert_to_umode + drm_mode_copy + drm_mode_destroy drm_mode_duplicate drm_mode_equal drm_mode_equal_no_clocks @@ -672,9 +748,11 @@ drm_modeset_drop_locks drm_modeset_lock drm_modeset_lock_all_ctx + drm_modeset_lock_single_interruptible drm_modeset_unlock drm_mode_vrefresh drm_object_attach_property + drm_object_property_set_value drm_open drm_panel_add drm_panel_disable @@ -724,10 +802,13 @@ dump_backtrace dump_stack dw_handle_msi_irq + dw_pcie_find_capability dw_pcie_host_init dw_pcie_read + dw_pcie_read_dbi dw_pcie_setup_rc dw_pcie_write + dw_pcie_write_dbi __dynamic_dev_dbg __dynamic_pr_debug em_cpu_get @@ -755,6 +836,9 @@ __fdget fd_install fget + file_path + filp_close + filp_open_block find_extend_vma _find_first_and_bit _find_first_bit @@ -765,12 +849,14 @@ _find_next_bit _find_next_zero_bit find_pid_ns + find_task_by_vpid find_vma_intersection finish_wait flush_dcache_page flush_delayed_work flush_work __flush_workqueue + __folio_lock __folio_put folio_wait_bit fortify_panic @@ -791,6 +877,9 @@ freq_qos_add_request freq_qos_remove_request freq_qos_update_request + fs_bio_set + fsnotify + __fsnotify_parent full_name_hash fwnode_get_name fwnode_gpiod_get_index @@ -823,6 +912,22 @@ get_cpu_iowait_time_us get_device __get_free_pages + get_governor_parent_kobj + gether_cleanup + gether_connect + gether_disconnect + gether_get_dev_addr + gether_get_host_addr + gether_get_host_addr_u8 + gether_get_ifname + gether_get_qmult + gether_register_netdev + gether_set_dev_addr + gether_set_gadget + gether_set_host_addr + gether_set_ifname + gether_set_qmult + gether_setup_name_default get_net_ns_by_fd get_net_ns_by_pid get_pid_task @@ -832,6 +937,8 @@ __get_random_u32_below get_random_u8 get_sg_io_hdr + __get_task_comm + get_task_cred get_thermal_instance get_unused_fd_flags get_user_pages @@ -839,6 +946,10 @@ get_vaddr_frames gic_nonsecure_priorities glob_match + gov_attr_set_get + gov_attr_set_init + gov_attr_set_put + governor_sysfs_ops gpiochip_generic_config gpiochip_generic_free gpiochip_generic_request @@ -871,6 +982,7 @@ handle_simple_irq handle_sysrq hashlen_string + have_governor_per_policy hex2bin hex_dump_to_buffer hex_to_bin @@ -888,6 +1000,7 @@ hwrng_register hwrng_unregister i2c_adapter_type + i2c_add_adapter i2c_add_numbered_adapter i2c_bus_type i2c_del_adapter @@ -965,6 +1078,7 @@ interval_tree_iter_first interval_tree_iter_next interval_tree_remove + int_pow int_sqrt int_to_scsilun iomem_resource @@ -1015,7 +1129,9 @@ irq_domain_get_irq_data irq_domain_remove irq_domain_set_info + irq_domain_simple_ops irq_domain_xlate_twocell + irq_force_affinity irq_get_irq_data irq_modify_status irq_of_parse_and_map @@ -1027,6 +1143,8 @@ irq_set_irq_type irq_set_irq_wake irq_to_desc + irq_work_queue + irq_work_sync is_vmalloc_addr jiffies jiffies64_to_msecs @@ -1039,6 +1157,7 @@ kernel_param_lock kernel_param_unlock kernel_restart + kernfs_path_from_node key_create_or_update key_put keyring_alloc @@ -1064,6 +1183,7 @@ kmem_cache_destroy kmem_cache_free kmemdup + kmemdup_nul kobject_add kobject_create_and_add kobject_del @@ -1154,6 +1274,7 @@ mbox_request_channel mbox_send_message memchr + memchr_inv memcmp memcpy __memcpy_fromio @@ -1202,6 +1323,7 @@ __msecs_to_jiffies msleep msleep_interruptible + mtree_load __mutex_init mutex_is_locked mutex_lock @@ -1238,6 +1360,8 @@ netlink_unregister_notifier net_ns_type_operations net_ratelimit + nf_register_net_hooks + nf_unregister_net_hooks nla_find nla_memcpy __nla_parse @@ -1252,6 +1376,7 @@ noop_llseek nr_cpu_ids nr_irqs + ns_capable nsec_to_clock_t ns_to_timespec64 __num_online_cpus @@ -1284,6 +1409,7 @@ of_find_node_by_phandle of_find_node_by_type of_find_node_opts_by_path + of_find_node_with_property of_find_property of_fwnode_ops of_genpd_add_provider_simple @@ -1495,17 +1621,23 @@ prepare_to_wait_event print_hex_dump _printk + _printk_deferred proc_create proc_create_data proc_create_single_data proc_dointvec proc_dostring + proc_douintvec_minmax proc_mkdir proc_mkdir_data proc_remove + proc_set_size + proc_symlink pskb_expand_head __pskb_pull_tail ___pskb_trim + push_cpu_stop + __put_cred put_device put_disk put_iova_domain @@ -1537,6 +1669,8 @@ _raw_spin_lock_bh _raw_spin_lock_irq _raw_spin_lock_irqsave + raw_spin_rq_lock_nested + raw_spin_rq_unlock _raw_spin_trylock _raw_spin_unlock _raw_spin_unlock_bh @@ -1634,7 +1768,10 @@ __request_percpu_irq __request_region request_threaded_irq + resched_curr + reserve_iova return_address + reweight_task rfkill_alloc rfkill_blocked rfkill_destroy @@ -1651,6 +1788,7 @@ rht_bucket_nested_insert __root_device_register root_device_unregister + root_task_group round_jiffies round_jiffies_relative round_jiffies_up @@ -1668,12 +1806,18 @@ rt_mutex_unlock rtnl_is_locked rtnl_lock + rtnl_trylock rtnl_unlock + runqueues sched_clock + sched_feat_keys sched_setattr_nocheck + sched_set_fifo + sched_set_normal sched_setscheduler sched_setscheduler_nocheck sched_show_task + sched_uclamp_used schedule schedule_timeout schedule_timeout_interruptible @@ -1722,6 +1866,7 @@ set_page_dirty set_page_dirty_lock __SetPageMovable + set_task_cpu set_user_nice sg_alloc_table sg_alloc_table_from_pages_segment @@ -1789,6 +1934,7 @@ snd_jack_set_key snd_pcm_format_physical_width snd_pcm_format_width + snd_pcm_hw_constraint_integer snd_pcm_hw_constraint_list snd_pcm_lib_free_pages snd_pcm_lib_ioctl @@ -1845,6 +1991,7 @@ snd_soc_register_card snd_soc_register_component snd_soc_runtime_set_dai_fmt + snd_soc_set_runtime_hwparams snd_soc_unregister_card snd_soc_unregister_component snprintf @@ -1867,6 +2014,10 @@ spi_sync spi_sync_locked spi_unregister_controller + spmi_controller_add + spmi_controller_alloc + spmi_controller_remove + __spmi_driver_register sprintf sprint_symbol srcu_init_notifier_head @@ -1876,9 +2027,11 @@ sscanf __stack_chk_fail static_key_disable + static_key_enable static_key_slow_dec static_key_slow_inc stop_machine + stop_one_cpu_nowait strcasecmp strcat strchr @@ -1892,6 +2045,7 @@ strlen strncasecmp strncat + strnchr strncmp strncpy strncpy_from_user @@ -1904,6 +2058,8 @@ strsep strspn strstr + submit_bio + submit_bio_wait subsys_system_register suspend_set_ops __sw_hweight16 @@ -1917,6 +2073,8 @@ synchronize_net synchronize_rcu syscon_regmap_lookup_by_phandle + sysctl_sched_features + sysctl_sched_latency sysfs_add_file_to_group sysfs_add_link_to_group sysfs_create_file_ns @@ -1946,12 +2104,14 @@ system_wq sys_tz task_active_pid_ns + __tasklet_hi_schedule tasklet_init tasklet_kill __tasklet_schedule tasklet_setup tasklet_unlock_wait __task_pid_nr_ns + task_rq_lock tcpci_get_tcpm_port tcpci_irq tcpci_register_port @@ -1962,17 +2122,25 @@ tcpm_pd_transmit_complete tcpm_port_clean tcpm_port_is_toggling + tcpm_register_port tcpm_sink_frs tcpm_sourcing_vbus + tcpm_tcpc_reset + tcpm_unregister_port tcpm_vbus_change + teo_cpu_get_util_threshold + teo_cpu_set_util_threshold thermal_cdev_update thermal_cooling_device_unregister thermal_of_cooling_device_register + thermal_pressure thermal_zone_device_disable thermal_zone_device_enable thermal_zone_device_register thermal_zone_device_unregister thermal_zone_device_update + thermal_zone_get_temp + thermal_zone_get_zone_by_name thread_group_cputime_adjusted time64_to_tm topology_update_thermal_pressure @@ -1986,17 +2154,69 @@ trace_event_raw_init trace_event_reg trace_handle_return + __traceiter_android_rvh_attach_entity_load_avg + __traceiter_android_rvh_audio_usb_offload_disconnect + __traceiter_android_rvh_can_migrate_task + __traceiter_android_rvh_cgroup_force_kthread_migration + __traceiter_android_rvh_check_preempt_wakeup + __traceiter_android_rvh_cpu_overutilized + __traceiter_android_rvh_dequeue_task + __traceiter_android_rvh_dequeue_task_fair + __traceiter_android_rvh_detach_entity_load_avg + __traceiter_android_rvh_enqueue_task + __traceiter_android_rvh_enqueue_task_fair + __traceiter_android_rvh_find_lowest_rq + __traceiter_android_rvh_irqs_disable + __traceiter_android_rvh_irqs_enable + __traceiter_android_rvh_post_init_entity_util_avg + __traceiter_android_rvh_preempt_disable + __traceiter_android_rvh_preempt_enable + __traceiter_android_rvh_prepare_prio_fork + __traceiter_android_rvh_remove_entity_load_avg + __traceiter_android_rvh_rtmutex_prepare_setprio + __traceiter_android_rvh_sched_newidle_balance + __traceiter_android_rvh_select_task_rq_fair + __traceiter_android_rvh_select_task_rq_rt + __traceiter_android_rvh_set_cpus_allowed_by_task + __traceiter_android_rvh_set_iowait + __traceiter_android_rvh_setscheduler + __traceiter_android_rvh_set_task_cpu + __traceiter_android_rvh_set_user_nice __traceiter_android_rvh_typec_tcpci_get_vbus + __traceiter_android_rvh_uclamp_eff_get + __traceiter_android_rvh_update_blocked_fair + __traceiter_android_rvh_update_load_avg + __traceiter_android_rvh_update_misfit_status + __traceiter_android_rvh_update_rt_rq_load_avg + __traceiter_android_vh_arch_set_freq_scale + __traceiter_android_vh_audio_usb_offload_connect + __traceiter_android_vh_binder_restore_priority + __traceiter_android_vh_binder_set_priority __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit + __traceiter_android_vh_dump_throttled_rt_tasks + __traceiter_android_vh_dup_task_struct + __traceiter_android_vh_early_resume_begin __traceiter_android_vh_enable_thermal_genl_check + __traceiter_android_vh_filemap_get_folio __traceiter_android_vh_ipi_stop + __traceiter_android_vh_meminfo_proc_show + __traceiter_android_vh_mm_compaction_begin + __traceiter_android_vh_mm_compaction_end + __traceiter_android_vh_prio_inheritance + __traceiter_android_vh_prio_restore + __traceiter_android_vh_resume_end + __traceiter_android_vh_rmqueue __traceiter_android_vh_scheduler_tick + __traceiter_android_vh_setscheduler_uclamp + __traceiter_android_vh_si_meminfo_adjust __traceiter_android_vh_sysrq_crash __traceiter_android_vh_typec_store_partner_src_caps __traceiter_android_vh_typec_tcpci_override_toggling __traceiter_android_vh_typec_tcpm_get_timer __traceiter_android_vh_typec_tcpm_log + __traceiter_android_vh_typec_tcpm_modify_src_caps + __traceiter_android_vh_uclamp_validate __traceiter_android_vh_ufs_check_int_errors __traceiter_android_vh_ufs_compl_command __traceiter_android_vh_ufs_fill_prdt @@ -2006,7 +2226,9 @@ __traceiter_android_vh_ufs_send_uic_command __traceiter_android_vh_ufs_update_sdev __traceiter_android_vh_ufs_update_sysfs + __traceiter_android_vh_use_amu_fie __traceiter_clock_set_rate + __traceiter_cpu_frequency __traceiter_device_pm_callback_end __traceiter_device_pm_callback_start __traceiter_gpu_mem_total @@ -2017,22 +2239,86 @@ __traceiter_mmap_lock_acquire_returned __traceiter_mmap_lock_released __traceiter_mmap_lock_start_locking + __traceiter_mm_vmscan_direct_reclaim_begin + __traceiter_mm_vmscan_direct_reclaim_end + __traceiter_pelt_cfs_tp + __traceiter_pelt_dl_tp + __traceiter_pelt_irq_tp + __traceiter_pelt_rt_tp + __traceiter_pelt_se_tp + __traceiter_sched_cpu_capacity_tp + __traceiter_sched_overutilized_tp __traceiter_sched_switch + __traceiter_sched_util_est_cfs_tp + __traceiter_sched_util_est_se_tp + __traceiter_sched_wakeup __traceiter_suspend_resume __traceiter_workqueue_execute_end __traceiter_workqueue_execute_start trace_output_call + __tracepoint_android_rvh_attach_entity_load_avg + __tracepoint_android_rvh_audio_usb_offload_disconnect + __tracepoint_android_rvh_can_migrate_task + __tracepoint_android_rvh_cgroup_force_kthread_migration + __tracepoint_android_rvh_check_preempt_wakeup + __tracepoint_android_rvh_cpu_overutilized + __tracepoint_android_rvh_dequeue_task + __tracepoint_android_rvh_dequeue_task_fair + __tracepoint_android_rvh_detach_entity_load_avg + __tracepoint_android_rvh_enqueue_task + __tracepoint_android_rvh_enqueue_task_fair + __tracepoint_android_rvh_find_lowest_rq + __tracepoint_android_rvh_irqs_disable + __tracepoint_android_rvh_irqs_enable + __tracepoint_android_rvh_post_init_entity_util_avg + __tracepoint_android_rvh_preempt_disable + __tracepoint_android_rvh_preempt_enable + __tracepoint_android_rvh_prepare_prio_fork + __tracepoint_android_rvh_remove_entity_load_avg + __tracepoint_android_rvh_rtmutex_prepare_setprio + __tracepoint_android_rvh_sched_newidle_balance + __tracepoint_android_rvh_select_task_rq_fair + __tracepoint_android_rvh_select_task_rq_rt + __tracepoint_android_rvh_set_cpus_allowed_by_task + __tracepoint_android_rvh_set_iowait + __tracepoint_android_rvh_setscheduler + __tracepoint_android_rvh_set_task_cpu + __tracepoint_android_rvh_set_user_nice __tracepoint_android_rvh_typec_tcpci_get_vbus + __tracepoint_android_rvh_uclamp_eff_get + __tracepoint_android_rvh_update_blocked_fair + __tracepoint_android_rvh_update_load_avg + __tracepoint_android_rvh_update_misfit_status + __tracepoint_android_rvh_update_rt_rq_load_avg + __tracepoint_android_vh_arch_set_freq_scale + __tracepoint_android_vh_audio_usb_offload_connect + __tracepoint_android_vh_binder_restore_priority + __tracepoint_android_vh_binder_set_priority __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit + __tracepoint_android_vh_dump_throttled_rt_tasks + __tracepoint_android_vh_dup_task_struct + __tracepoint_android_vh_early_resume_begin __tracepoint_android_vh_enable_thermal_genl_check + __tracepoint_android_vh_filemap_get_folio __tracepoint_android_vh_ipi_stop + __tracepoint_android_vh_meminfo_proc_show + __tracepoint_android_vh_mm_compaction_begin + __tracepoint_android_vh_mm_compaction_end + __tracepoint_android_vh_prio_inheritance + __tracepoint_android_vh_prio_restore + __tracepoint_android_vh_resume_end + __tracepoint_android_vh_rmqueue __tracepoint_android_vh_scheduler_tick + __tracepoint_android_vh_setscheduler_uclamp + __tracepoint_android_vh_si_meminfo_adjust __tracepoint_android_vh_sysrq_crash __tracepoint_android_vh_typec_store_partner_src_caps __tracepoint_android_vh_typec_tcpci_override_toggling __tracepoint_android_vh_typec_tcpm_get_timer __tracepoint_android_vh_typec_tcpm_log + __tracepoint_android_vh_typec_tcpm_modify_src_caps + __tracepoint_android_vh_uclamp_validate __tracepoint_android_vh_ufs_check_int_errors __tracepoint_android_vh_ufs_compl_command __tracepoint_android_vh_ufs_fill_prdt @@ -2042,7 +2328,9 @@ __tracepoint_android_vh_ufs_send_uic_command __tracepoint_android_vh_ufs_update_sdev __tracepoint_android_vh_ufs_update_sysfs + __tracepoint_android_vh_use_amu_fie __tracepoint_clock_set_rate + __tracepoint_cpu_frequency __tracepoint_device_pm_callback_end __tracepoint_device_pm_callback_start __tracepoint_gpu_mem_total @@ -2053,9 +2341,21 @@ __tracepoint_mmap_lock_acquire_returned __tracepoint_mmap_lock_released __tracepoint_mmap_lock_start_locking + __tracepoint_mm_vmscan_direct_reclaim_begin + __tracepoint_mm_vmscan_direct_reclaim_end + __tracepoint_pelt_cfs_tp + __tracepoint_pelt_dl_tp + __tracepoint_pelt_irq_tp + __tracepoint_pelt_rt_tp + __tracepoint_pelt_se_tp tracepoint_probe_register tracepoint_probe_unregister + __tracepoint_sched_cpu_capacity_tp + __tracepoint_sched_overutilized_tp __tracepoint_sched_switch + __tracepoint_sched_util_est_cfs_tp + __tracepoint_sched_util_est_se_tp + __tracepoint_sched_wakeup __tracepoint_suspend_resume __tracepoint_workqueue_execute_end __tracepoint_workqueue_execute_start @@ -2093,8 +2393,10 @@ uart_unregister_driver uart_update_timeout uart_write_wakeup + uclamp_eff_value __udelay udp4_hwcsum + ufshcd_auto_hibern8_update ufshcd_bkops_ctrl ufshcd_hold ufshcd_pltfrm_init @@ -2130,29 +2432,42 @@ unregister_virtio_driver up update_devfreq + ___update_load_avg + ___update_load_sum + update_rq_clock up_read up_write usb_add_function usb_add_hcd + usb_assign_descriptors usb_copy_descriptors __usb_create_hcd usb_disabled usb_enable_autosuspend + usb_ep_alloc_request usb_ep_autoconfig + usb_ep_disable + usb_ep_enable + usb_ep_free_request + usb_ep_queue + usb_free_all_descriptors usb_function_register usb_function_unregister usb_gadget_activate usb_gadget_deactivate usb_gadget_set_state + usb_gstrings_attach usb_hcd_is_primary_hcd usb_hcd_platform_shutdown usb_hub_find_child usb_interface_id + usb_os_desc_prepare_interf_dir usb_otg_state_string usb_put_function_instance usb_put_hcd usb_register_notify usb_remove_hcd + usb_role_string usb_role_switch_get_drvdata usb_role_switch_register usb_role_switch_unregister @@ -2247,6 +2562,7 @@ vmalloc_user vmap vmf_insert_pfn_prot + vm_iomap_memory vprintk vprintk_emit vring_del_virtqueue @@ -2278,15 +2594,20 @@ wireless_nlevent_flush woken_wake_function work_busy + __write_overflow_field __xa_alloc xa_clear_mark xa_destroy + __xa_erase xa_erase xa_find xa_find_after xa_get_mark xa_load xa_set_mark + xas_find + xas_pause + __xa_store __xfrm_state_destroy xfrm_state_lookup_byspi xfrm_stateonly_find @@ -2294,7 +2615,18 @@ xhci_bus_resume xhci_bus_suspend xhci_gen_setup + xhci_get_endpoint_index xhci_init_driver xhci_resume xhci_run xhci_suspend + zs_compact + zs_create_pool + zs_destroy_pool + zs_free + zs_get_total_pages + zs_huge_class_size + zs_malloc + zs_map_object + zs_pool_stats + zs_unmap_object diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index fcebe5582b85..a49fbc5c7e3c 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -73,6 +73,7 @@ bin2hex bio_endio bio_end_io_acct_remapped + bio_split bio_start_io_acct bitmap_allocate_region __bitmap_and @@ -94,6 +95,8 @@ bit_wait_timeout __blk_alloc_disk blkdev_get_by_dev + blk_crypto_keyslot_index + blk_crypto_register blk_execute_rq blk_execute_rq_nowait __blk_mq_alloc_disk @@ -342,6 +345,7 @@ copy_from_kernel_nofault copy_page __copy_overflow + copy_page _copy_to_iter __cpu_active_mask cpu_bit_bitmap @@ -667,6 +671,7 @@ devm_rtc_allocate_device __devm_rtc_register_device devm_snd_soc_register_card + devm_snd_soc_register_component devm_thermal_of_cooling_device_register devm_thermal_of_zone_register devm_usb_get_phy_by_node @@ -735,6 +740,22 @@ divider_recalc_rate divider_ro_round_rate_parent divider_round_rate_parent + dm_bufio_client_create + dm_bufio_client_destroy + dm_bufio_mark_buffer_dirty + dm_bufio_new + dm_bufio_read + dm_bufio_release + dm_bufio_write_dirty_buffers + dm_disk + dm_get_device + dm_kobject_release + dm_read_arg_group + dm_register_target + dm_shift_arg + dm_table_get_md + dm_table_get_mode + dm_unregister_target dma_alloc_attrs dma_alloc_noncontiguous dma_alloc_pages @@ -854,8 +875,11 @@ 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 drm_atomic_helper_dirtyfb @@ -929,6 +953,7 @@ drm_dev_register drm_dev_unregister drm_display_mode_from_cea_vic + drm_do_get_edid drm_edid_duplicate drm_edid_get_monitor_name drm_edid_is_valid @@ -1331,6 +1356,7 @@ hci_uart_unregister_device hci_unregister_cb hci_unregister_dev + hdmi_audio_infoframe_init hex2bin hex_asc_upper hex_dump_to_buffer @@ -1900,9 +1926,13 @@ migrate_pages migrate_swap __migrate_task + mipi_dsi_attach mipi_dsi_create_packet mipi_dsi_dcs_set_display_brightness mipi_dsi_dcs_set_tear_off + mipi_dsi_detach + mipi_dsi_device_register_full + mipi_dsi_device_unregister mipi_dsi_host_register mipi_dsi_host_unregister misc_deregister @@ -2202,6 +2232,7 @@ page_ext_put page_is_ram page_mapping + page_owner_inited page_pinner_inited __page_pinner_put_page page_pool_alloc_pages @@ -2414,6 +2445,8 @@ __pm_runtime_use_autosuspend __pm_stay_awake pm_stay_awake + pm_suspend_global_flags + pm_suspend_target_state pm_system_wakeup pm_wakeup_dev_event pm_wakeup_ws_event @@ -2877,6 +2910,7 @@ set_normalized_timespec64 set_page_dirty_lock __SetPageMovable + __set_page_owner set_task_cpu setup_udp_tunnel_sock set_user_nice @@ -2980,6 +3014,8 @@ smp_call_function_single smp_call_function_single_async snapshot_get_image_size + snd_ctl_add + snd_ctl_new1 snd_ctl_remove snd_hwdep_new snd_info_create_card_entry @@ -2988,7 +3024,12 @@ snd_info_register snd_interval_refine snd_jack_set_key + snd_pcm_add_chmap_ctls + snd_pcm_create_iec958_consumer_default + snd_pcm_fill_iec958_consumer + snd_pcm_fill_iec958_consumer_hw_params snd_pcm_format_width + snd_pcm_hw_constraint_eld _snd_pcm_hw_params_any snd_pcm_set_managed_buffer snd_pcm_std_chmaps @@ -3269,6 +3310,7 @@ __traceiter_android_rvh_before_do_sched_yield __traceiter_android_rvh_build_perf_domains __traceiter_android_rvh_can_migrate_task + __traceiter_android_rvh_cgroup_force_kthread_migration __traceiter_android_rvh_check_preempt_tick __traceiter_android_rvh_check_preempt_wakeup __traceiter_android_rvh_check_preempt_wakeup_ignore @@ -3340,11 +3382,13 @@ __traceiter_android_rvh_update_thermal_stats __traceiter_android_rvh_util_est_update __traceiter_android_rvh_wake_up_new_task + __traceiter_android_vh_alter_mutex_list_add __traceiter_android_vh_audio_usb_offload_connect __traceiter_android_vh_binder_restore_priority __traceiter_android_vh_binder_set_priority __traceiter_android_vh_binder_wakeup_ilocked __traceiter_android_vh_build_sched_domains + __traceiter_android_vh_bus_iommu_probe __traceiter_android_vh_check_hibernation_swap __traceiter_android_vh_check_uninterrupt_tasks __traceiter_android_vh_check_uninterrupt_tasks_done @@ -3378,6 +3422,7 @@ __traceiter_android_vh_rproc_recovery_set __traceiter_android_vh_save_cpu_resume __traceiter_android_vh_save_hib_resume_bdev + __traceiter_android_vh_scan_abort_check_wmarks __traceiter_android_vh_scheduler_tick __traceiter_android_vh_setscheduler_uclamp __traceiter_android_vh_show_resume_epoch_val @@ -3413,6 +3458,7 @@ __tracepoint_android_rvh_before_do_sched_yield __tracepoint_android_rvh_build_perf_domains __tracepoint_android_rvh_can_migrate_task + __tracepoint_android_rvh_cgroup_force_kthread_migration __tracepoint_android_rvh_check_preempt_tick __tracepoint_android_rvh_check_preempt_wakeup __tracepoint_android_rvh_check_preempt_wakeup_ignore @@ -3484,11 +3530,13 @@ __tracepoint_android_rvh_update_thermal_stats __tracepoint_android_rvh_util_est_update __tracepoint_android_rvh_wake_up_new_task + __tracepoint_android_vh_alter_mutex_list_add __tracepoint_android_vh_audio_usb_offload_connect __tracepoint_android_vh_binder_restore_priority __tracepoint_android_vh_binder_set_priority __tracepoint_android_vh_binder_wakeup_ilocked __tracepoint_android_vh_build_sched_domains + __tracepoint_android_vh_bus_iommu_probe __tracepoint_android_vh_check_hibernation_swap __tracepoint_android_vh_check_uninterrupt_tasks __tracepoint_android_vh_check_uninterrupt_tasks_done @@ -3522,6 +3570,7 @@ __tracepoint_android_vh_rproc_recovery_set __tracepoint_android_vh_save_cpu_resume __tracepoint_android_vh_save_hib_resume_bdev + __tracepoint_android_vh_scan_abort_check_wmarks __tracepoint_android_vh_scheduler_tick __tracepoint_android_vh_setscheduler_uclamp __tracepoint_android_vh_show_resume_epoch_val @@ -3883,6 +3932,7 @@ vhost_dev_init vhost_dev_ioctl vhost_dev_stop + vhost_dev_flush vhost_disable_notify vhost_enable_notify vhost_get_vq_desc diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip new file mode 100644 index 000000000000..8fdda5ad35fb --- /dev/null +++ b/android/abi_gki_aarch64_rockchip @@ -0,0 +1,2805 @@ +[abi_symbol_list] +# commonly used symbols + add_timer + alloc_chrdev_region + alloc_iova_fast + __alloc_pages + __alloc_skb + alloc_workqueue + alt_cb_patch_nops + anon_inode_getfd + __arch_copy_from_user + __arch_copy_to_user + arm64_use_ng_mappings + __arm_smccc_smc + atomic_notifier_call_chain + atomic_notifier_chain_register + atomic_notifier_chain_unregister + _bcd2bin + bcmp + _bin2bcd + __bitmap_andnot + __bitmap_equal + bitmap_free + __bitmap_or + __bitmap_set + __bitmap_xor + bitmap_zalloc + blocking_notifier_call_chain + blocking_notifier_chain_register + blocking_notifier_chain_unregister + bpf_trace_run1 + bpf_trace_run2 + bpf_trace_run3 + bpf_trace_run4 + bpf_trace_run5 + bpf_trace_run6 + bpf_trace_run7 + cancel_delayed_work + cancel_delayed_work_sync + cancel_work_sync + capable + cdev_add + cdev_del + cdev_device_add + cdev_device_del + cdev_init + cec_allocate_adapter + cec_delete_adapter + cec_fill_conn_info_from_drm + cec_notifier_cec_adap_register + cec_notifier_cec_adap_unregister + cec_notifier_conn_register + cec_notifier_conn_unregister + cec_notifier_set_phys_addr + cec_notifier_set_phys_addr_from_edid + cec_queue_pin_hpd_event + cec_received_msg_ts + cec_register_adapter + cec_transmit_attempt_done_ts + cec_unregister_adapter + __check_object_size + __class_create + class_create_file_ns + class_destroy + class_for_each_device + __class_register + class_remove_file_ns + class_unregister + clk_bulk_disable + clk_bulk_enable + clk_bulk_prepare + clk_bulk_unprepare + clk_disable + clk_enable + clk_gate_ops + clk_get + __clk_get_name + clk_get_parent + clk_get_rate + clk_hw_get_flags + clk_hw_get_name + clk_hw_get_parent + clk_hw_get_rate + clk_is_match + __clk_mux_determine_rate + clk_notifier_register + clk_notifier_unregister + clk_prepare + clk_put + clk_register + clk_round_rate + clk_set_parent + clk_set_phase + clk_set_rate + clk_unprepare + clk_unregister + cma_alloc + cma_release + compat_ptr_ioctl + complete + completion_done + __const_udelay + consume_skb + __copy_overflow + cpufreq_cpu_get + __cpufreq_driver_target + cpufreq_generic_suspend + cpufreq_register_governor + cpufreq_register_notifier + cpufreq_unregister_governor + cpu_have_feature + cpu_hwcaps + cpu_latency_qos_add_request + cpu_latency_qos_update_request + cpu_number + __cpu_online_mask + __cpu_possible_mask + cpus_read_lock + cpus_read_unlock + crc16 + crc32_le + crypto_aead_decrypt + crypto_aead_encrypt + crypto_aead_setauthsize + crypto_aead_setkey + crypto_ahash_final + crypto_ahash_setkey + crypto_alloc_aead + crypto_alloc_ahash + crypto_alloc_shash + crypto_alloc_skcipher + crypto_cipher_encrypt_one + crypto_destroy_tfm + __crypto_memneq + crypto_register_aead + crypto_register_template + crypto_shash_update + crypto_skcipher_decrypt + crypto_skcipher_encrypt + crypto_skcipher_setkey + crypto_unregister_aead + crypto_unregister_template + __crypto_xor + csum_partial + _ctype + default_llseek + delayed_work_timer_fn + del_timer + del_timer_sync + destroy_workqueue + dev_addr_mod + dev_close + dev_driver_string + _dev_err + dev_err_probe + devfreq_add_governor + devfreq_recommended_opp + devfreq_register_opp_notifier + devfreq_remove_governor + devfreq_resume_device + devfreq_suspend_device + devfreq_unregister_opp_notifier + dev_fwnode + dev_get_regmap + dev_get_tstats64 + device_create + device_create_file + device_destroy + device_get_child_node_count + device_get_match_data + device_get_named_child_node + device_get_next_child_node + device_initialize + device_link_add + device_link_del + device_property_match_string + device_property_present + device_property_read_string + device_property_read_u32_array + device_property_read_u8_array + device_remove_file + device_set_wakeup_capable + device_set_wakeup_enable + device_unregister + device_wakeup_disable + device_wakeup_enable + _dev_info + __dev_kfree_skb_any + devm_add_action + devm_backlight_device_register + devm_clk_bulk_get + devm_clk_bulk_get_all + devm_clk_get + devm_clk_get_optional + devm_clk_hw_register + devm_clk_register + devm_devfreq_add_device + devm_devfreq_event_add_edev + devm_device_add_group + devm_extcon_dev_allocate + devm_extcon_dev_register + devm_free_irq + devm_fwnode_gpiod_get_index + devm_get_clk_from_child + devm_gpiochip_add_data_with_key + devm_gpiod_get + devm_gpiod_get_index + devm_gpiod_get_index_optional + devm_gpiod_get_optional + devm_gpio_request + devm_gpio_request_one + devm_hwrng_register + devm_iio_channel_get + devm_iio_device_alloc + __devm_iio_device_register + devm_input_allocate_device + devm_ioremap + devm_ioremap_resource + devm_kasprintf + devm_kfree + devm_kmalloc + devm_kmemdup + devm_kstrdup + devm_led_classdev_register_ext + devm_mfd_add_devices + devm_nvmem_register + devm_of_clk_add_hw_provider + devm_of_phy_get + __devm_of_phy_provider_register + devm_phy_create + devm_phy_get + devm_phy_optional_get + devm_pinctrl_get + devm_pinctrl_register + devm_pinctrl_register_and_init + devm_platform_get_and_ioremap_resource + devm_platform_ioremap_resource + devm_platform_ioremap_resource_byname + devm_power_supply_register + devm_pwm_get + devm_regmap_field_alloc + __devm_regmap_init + __devm_regmap_init_i2c + __devm_regmap_init_mmio_clk + devm_regulator_bulk_get + devm_regulator_get + devm_regulator_get_optional + devm_regulator_register + devm_remove_action + devm_request_threaded_irq + devm_reset_control_array_get + __devm_reset_control_get + devm_rtc_allocate_device + __devm_rtc_register_device + devm_snd_dmaengine_pcm_register + devm_snd_soc_register_card + devm_snd_soc_register_component + devm_usb_get_phy + _dev_notice + dev_open + dev_pm_opp_clear_config + dev_pm_opp_disable + dev_pm_opp_find_freq_ceil + dev_pm_opp_find_freq_floor + dev_pm_opp_get_freq + dev_pm_opp_get_opp_count + dev_pm_opp_get_opp_table + dev_pm_opp_get_supplies + dev_pm_opp_get_voltage + dev_pm_opp_of_get_sharing_cpus + dev_pm_opp_of_remove_table + dev_pm_opp_put + dev_pm_opp_put_opp_table + dev_pm_opp_set_config + dev_pm_opp_set_rate + _dev_printk + devres_add + __devres_alloc_node + devres_free + dev_set_name + _dev_warn + disable_irq + disable_irq_nosync + dma_alloc_attrs + dma_buf_attach + dma_buf_begin_cpu_access + dma_buf_detach + dma_buf_end_cpu_access + dma_buf_export + dma_buf_fd + dma_buf_get + dma_buf_map_attachment + dma_buf_mmap + dma_buf_put + dma_buf_unmap_attachment + dma_buf_vmap + dma_buf_vunmap + dma_contiguous_default_area + dma_fence_add_callback + dma_fence_context_alloc + dma_fence_get_status + dma_fence_init + dma_fence_release + dma_fence_signal + dma_free_attrs + dma_get_sgtable_attrs + dma_heap_add + dma_heap_get_name + dmam_alloc_attrs + dma_map_page_attrs + dma_map_resource + dma_map_sg_attrs + dma_map_sgtable + dmam_free_coherent + dma_mmap_attrs + dma_release_channel + dma_request_chan + dma_set_coherent_mask + dma_set_mask + dma_sync_sg_for_cpu + dma_sync_sg_for_device + dma_sync_single_for_cpu + dma_sync_single_for_device + dma_unmap_page_attrs + dma_unmap_resource + dma_unmap_sg_attrs + do_trace_netlink_extack + down + down_read + down_write + driver_unregister + drm_add_edid_modes + drm_add_modes_noedid + drm_atomic_get_connector_state + drm_atomic_get_crtc_state + drm_atomic_get_new_connector_for_encoder + drm_atomic_helper_bridge_destroy_state + drm_atomic_helper_bridge_duplicate_state + drm_atomic_helper_bridge_propagate_bus_fmt + drm_atomic_helper_bridge_reset + drm_atomic_helper_connector_destroy_state + drm_atomic_helper_connector_duplicate_state + drm_atomic_helper_connector_reset + drm_bridge_add + drm_bridge_attach + drm_bridge_detect + drm_bridge_get_modes + drm_bridge_hpd_notify + drm_bridge_remove + drm_compat_ioctl + drm_connector_attach_encoder + drm_connector_cleanup + drm_connector_has_possible_encoder + drm_connector_init + drm_connector_init_with_ddc + drm_connector_list_iter_begin + drm_connector_list_iter_end + drm_connector_list_iter_next + drm_connector_unregister + drm_connector_update_edid_property + ___drm_dbg + drm_detect_hdmi_monitor + drm_detect_monitor_audio + drm_dev_alloc + __drm_dev_dbg + drm_dev_printk + drm_dev_put + drm_dev_register + drm_dev_unregister + drm_display_info_set_bus_formats + drm_display_mode_from_videomode + drm_display_mode_to_videomode + __drm_err + drm_gem_dumb_map_offset + drm_gem_get_pages + drm_gem_handle_create + drm_gem_mmap + drm_gem_object_free + drm_gem_object_init + drm_gem_object_lookup + drm_gem_object_release + drm_gem_prime_fd_to_handle + drm_gem_prime_handle_to_fd + drm_gem_prime_mmap + drm_gem_put_pages + drm_gem_vm_close + drm_gem_vm_open + drm_get_edid + drm_hdmi_avi_infoframe_from_display_mode + drm_hdmi_avi_infoframe_quant_range + drm_hdmi_vendor_infoframe_from_display_mode + drm_helper_hpd_irq_event + drm_helper_probe_single_connector_modes + drm_ioctl + drm_kms_helper_hotplug_event + drm_kms_helper_is_poll_worker + drm_match_cea_mode + drm_mode_copy + drm_mode_create + drm_mode_duplicate + drm_mode_is_420_also + drm_mode_is_420_only + drm_mode_object_put + drm_mode_probed_add + drm_modeset_acquire_fini + drm_modeset_acquire_init + drm_modeset_backoff + drm_modeset_drop_locks + drm_modeset_lock + drm_mode_set_name + drm_modeset_unlock + drm_mode_validate_driver + drm_mode_vrefresh + drm_object_attach_property + drm_of_find_panel_or_bridge + drm_open + drm_panel_add + drm_panel_disable + drm_panel_enable + drm_panel_get_modes + drm_panel_init + drm_panel_prepare + drm_panel_unprepare + drm_poll + drm_prime_gem_destroy + drm_prime_get_contiguous_size + drm_prime_pages_to_sg + drm_prime_sg_to_page_array + drm_printf + drm_property_create_enum + drm_property_replace_global_blob + drm_read + drm_release + dummy_irq_chip + enable_irq + eth_mac_addr + ethtool_op_get_link + ethtool_op_get_ts_info + eth_type_trans + eth_validate_addr + extcon_get_edev_by_phandle + extcon_get_state + extcon_register_notifier + extcon_set_property_capability + extcon_set_state + extcon_set_state_sync + extcon_unregister_notifier + fd_install + _find_first_bit + _find_first_zero_bit + _find_next_bit + _find_next_zero_bit + finish_wait + flush_delayed_work + flush_work + __flush_workqueue + __folio_put + fortify_panic + fput + free_iova_fast + free_irq + free_netdev + __free_pages + free_pages + freq_qos_add_request + freq_qos_remove_request + freq_qos_update_request + fwnode_device_is_available + fwnode_get_name + fwnode_graph_get_next_endpoint + fwnode_graph_get_port_parent + fwnode_graph_get_remote_endpoint + fwnode_graph_get_remote_port_parent + fwnode_handle_put + fwnode_property_present + fwnode_property_read_u32_array + gcd + generic_handle_domain_irq + generic_mii_ioctl + __genphy_config_aneg + genphy_read_status + genphy_resume + genphy_soft_reset + genphy_suspend + gen_pool_add_owner + gen_pool_alloc_algo_owner + gen_pool_create + gen_pool_destroy + gen_pool_free_owner + get_cpu_device + get_device + __get_free_pages + get_random_bytes + get_unused_fd_flags + get_user_pages_remote + get_zeroed_page + gic_nonsecure_priorities + gpiochip_add_pin_range + gpiochip_generic_free + gpiochip_generic_request + gpiochip_get_data + gpiod_cansleep + gpiod_direction_input + gpiod_direction_output + gpiod_direction_output_raw + gpiod_get_optional + gpiod_get_raw_value + gpiod_get_value + gpiod_get_value_cansleep + gpiod_set_consumer_name + gpiod_set_raw_value + gpiod_set_raw_value_cansleep + gpiod_set_value + gpiod_set_value_cansleep + gpiod_to_irq + gpio_free + gpio_request + gpio_to_desc + handle_nested_irq + handle_simple_irq + hdmi_audio_infoframe_init + hdmi_audio_infoframe_pack + hdmi_drm_infoframe_pack + hdmi_infoframe_pack + hdmi_vendor_infoframe_pack + hid_debug + hid_hw_close + hid_hw_open + hid_hw_output_report + hid_hw_raw_request + hid_hw_request + hid_hw_start + hid_hw_stop + hid_open_report + __hid_register_driver + hid_unregister_driver + hid_validate_values + hrtimer_cancel + hrtimer_forward + hrtimer_init + hrtimer_start_range_ns + i2c_adapter_type + i2c_add_adapter + i2c_add_numbered_adapter + i2c_del_adapter + i2c_del_driver + i2c_get_adapter + i2c_put_adapter + i2c_register_driver + i2c_smbus_read_byte + i2c_smbus_read_byte_data + i2c_smbus_read_i2c_block_data + i2c_smbus_read_word_data + i2c_smbus_write_byte_data + i2c_smbus_write_i2c_block_data + __i2c_smbus_xfer + i2c_smbus_xfer + i2c_transfer + i2c_transfer_buffer_flags + i2c_verify_client + idr_alloc + idr_destroy + idr_find + idr_for_each + idr_get_next + idr_preload + idr_remove + iio_buffer_init + iio_buffer_put + iio_device_attach_buffer + iio_push_to_buffers + iio_read_channel_processed + init_net + __init_rwsem + __init_swait_queue_head + init_timer_key + init_wait_entry + __init_waitqueue_head + input_allocate_device + input_event + input_ff_create_memless + input_free_device + input_mt_init_slots + input_mt_report_slot_state + input_register_device + input_set_abs_params + input_set_capability + input_unregister_device + iommu_attach_device + iommu_attach_group + iommu_detach_device + iommu_detach_group + iommu_get_domain_for_dev + iommu_group_get + iommu_group_put + iommu_map + iommu_map_sg + iommu_set_fault_handler + iommu_unmap + ioremap_prot + iounmap + __irq_apply_affinity_hint + irq_create_mapping_affinity + irq_dispose_mapping + __irq_domain_add + irq_domain_remove + irq_get_irq_data + irq_modify_status + irq_of_parse_and_map + __irq_resolve_mapping + irq_set_chained_handler_and_data + irq_set_chip + irq_set_chip_and_handler_name + irq_set_chip_data + irq_set_irq_type + irq_set_irq_wake + irq_to_desc + is_vmalloc_addr + jiffies + jiffies_to_msecs + kasan_flag_enabled + kasprintf + kernel_neon_begin + kernel_neon_end + __kfifo_alloc + __kfifo_free + __kfifo_in + __kfifo_out + kfree + kfree_sensitive + kfree_skb_reason + kimage_voffset + __kmalloc + kmalloc_caches + kmalloc_large + kmalloc_trace + kmem_cache_alloc + kmem_cache_create + kmem_cache_destroy + kmemdup + kobject_create_and_add + kobject_init_and_add + kobject_put + kstrdup + kstrdup_const + kstrtoint + kstrtoll + kstrtouint + kstrtouint_from_user + kstrtoull + kthread_create_on_node + kthread_flush_worker + kthread_queue_work + kthread_should_stop + kthread_stop + ktime_get + ktime_get_mono_fast_ns + ktime_get_real_ts64 + ktime_get_with_offset + kvfree + kvfree_call_rcu + kvmalloc_node + led_classdev_register_ext + led_classdev_unregister + led_set_brightness_nosleep + led_trigger_register + led_trigger_unregister + __list_add_valid + __list_del_entry_valid + __local_bh_enable_ip + log_post_read_mmio + log_post_write_mmio + log_read_mmio + log_write_mmio + mdiobus_alloc_size + mdiobus_free + mdiobus_read + mdiobus_unregister + mdiobus_write + media_create_pad_link + media_device_cleanup + media_device_init + __media_device_register + media_device_unregister + media_entity_pads_init + media_graph_walk_cleanup + media_graph_walk_init + media_graph_walk_next + media_graph_walk_start + media_pad_remote_pad_first + memcpy + __memcpy_fromio + __memcpy_toio + memdup_user + memmove + mem_section + memset + __memset_io + memstart_addr + mfd_add_devices + mfd_remove_devices + mii_check_media + mii_ethtool_gset + mii_nway_restart + mipi_dsi_attach + mipi_dsi_create_packet + mipi_dsi_detach + mipi_dsi_device_register_full + mipi_dsi_device_unregister + mipi_dsi_host_register + mipi_dsi_host_unregister + misc_deregister + misc_register + __mmap_lock_do_trace_acquire_returned + __mmap_lock_do_trace_released + __mmap_lock_do_trace_start_locking + mmc_cqe_request_done + mmc_of_parse + mmc_request_done + __mmdrop + mod_delayed_work_on + mod_timer + module_layout + module_put + __msecs_to_jiffies + msleep + msleep_interruptible + __mutex_init + mutex_is_locked + mutex_lock + mutex_lock_interruptible + mutex_trylock + mutex_unlock + napi_gro_receive + __netdev_alloc_skb + netdev_err + netdev_info + netdev_update_features + netdev_warn + netif_carrier_off + netif_carrier_on + netif_rx + netif_tx_wake_queue + netlink_unicast + net_ratelimit + nla_memcpy + __nla_parse + nla_put + nla_reserve + nonseekable_open + noop_llseek + nr_cpu_ids + ns_to_kernel_old_timeval + ns_to_timespec64 + nvmem_cell_get + nvmem_cell_put + nvmem_cell_read + of_address_to_resource + of_alias_get_id + of_clk_add_hw_provider + of_clk_add_provider + of_clk_del_provider + of_clk_get + of_clk_get_by_name + of_clk_get_parent_count + of_clk_hw_simple_get + of_clk_src_onecell_get + of_clk_src_simple_get + of_count_phandle_with_args + of_device_get_match_data + of_device_is_available + of_device_is_compatible + of_drm_find_bridge + of_drm_find_panel + of_find_compatible_node + of_find_device_by_node + of_find_i2c_device_by_node + of_find_matching_node_and_match + of_find_mipi_dsi_host_by_node + of_find_node_by_name + of_find_node_opts_by_path + of_find_property + of_get_child_by_name + of_get_drm_display_mode + of_get_i2c_adapter_by_node + of_get_named_gpio_flags + of_get_next_available_child + of_get_next_child + of_get_parent + of_get_property + of_get_regulator_init_data + of_graph_get_endpoint_by_regs + of_graph_get_next_endpoint + of_graph_get_remote_node + of_graph_get_remote_port_parent + of_graph_parse_endpoint + of_iomap + of_irq_get_byname + of_machine_is_compatible + of_match_device + of_match_node + of_node_name_eq + of_nvmem_cell_get + __of_parse_phandle_with_args + of_phy_simple_xlate + of_property_count_elems_of_size + of_property_match_string + of_property_read_string + of_property_read_string_helper + of_property_read_u32_index + of_property_read_u64 + of_property_read_u64_index + of_property_read_variable_u32_array + of_property_read_variable_u8_array + of_prop_next_string + of_regulator_match + of_reserved_mem_device_init_by_idx + __of_reset_control_get + of_usb_get_dr_mode_by_phy + of_usb_host_tpl_support + page_pinner_inited + __page_pinner_put_page + panic_notifier_list + param_get_int + param_ops_bool + param_ops_charp + param_ops_int + param_ops_string + param_ops_uint + pcie_capability_clear_and_set_word + pci_read_config_dword + pci_write_config_dword + __per_cpu_offset + perf_trace_buf_alloc + perf_trace_run_bpf_submit + phy_attached_info + phy_configure + phy_drivers_register + phy_drivers_unregister + phy_exit + phy_init + phy_mipi_dphy_config_validate + phy_power_off + phy_power_on + phy_set_mode_ext + pinconf_generic_dt_free_map + pinconf_generic_dt_node_to_map + pinctrl_dev_get_drvdata + pinctrl_enable + pinctrl_generic_add_group + pinctrl_generic_get_group + pinctrl_generic_get_group_count + pinctrl_generic_get_group_name + pinctrl_generic_get_group_pins + pinctrl_gpio_direction_input + pinctrl_gpio_direction_output + pinctrl_lookup_state + pinctrl_pm_select_default_state + pinctrl_pm_select_idle_state + pinctrl_pm_select_sleep_state + pinctrl_select_state + pinctrl_utils_free_map + pinmux_generic_add_function + pinmux_generic_get_function + pinmux_generic_get_function_count + pinmux_generic_get_function_groups + pinmux_generic_get_function_name + platform_device_put + platform_device_register_full + platform_device_unregister + __platform_driver_probe + __platform_driver_register + platform_driver_unregister + platform_get_ethdev_address + platform_get_irq + platform_get_irq_byname + platform_get_irq_optional + platform_get_resource + platform_get_resource_byname + pm_clk_create + pm_clk_destroy + pm_power_off + __pm_relax + pm_relax + __pm_runtime_disable + pm_runtime_enable + pm_runtime_forbid + pm_runtime_force_resume + pm_runtime_force_suspend + pm_runtime_get_if_active + __pm_runtime_idle + __pm_runtime_resume + pm_runtime_set_autosuspend_delay + __pm_runtime_set_status + __pm_runtime_suspend + __pm_runtime_use_autosuspend + __pm_stay_awake + pm_stay_awake + pm_wakeup_dev_event + pm_wakeup_ws_event + power_supply_am_i_supplied + power_supply_changed + power_supply_class + power_supply_get_battery_info + power_supply_get_by_name + power_supply_get_by_phandle + power_supply_get_drvdata + power_supply_get_property + power_supply_register + power_supply_reg_notifier + power_supply_unregister + preempt_schedule + preempt_schedule_notrace + prepare_to_wait_event + print_hex_dump + _printk + proc_create + proc_create_data + proc_dointvec + proc_mkdir + pskb_expand_head + __pskb_pull_tail + put_device + __put_task_struct + put_unused_fd + pwm_adjust_config + pwm_apply_state + queue_delayed_work_on + queue_work_on + ___ratelimit + rational_best_approximation + _raw_read_lock_irqsave + _raw_read_unlock_irqrestore + _raw_spin_lock + _raw_spin_lock_bh + _raw_spin_lock_irq + _raw_spin_lock_irqsave + _raw_spin_trylock + _raw_spin_unlock + _raw_spin_unlock_bh + _raw_spin_unlock_irq + _raw_spin_unlock_irqrestore + _raw_write_lock_irqsave + _raw_write_unlock_irqrestore + rb_erase + rb_insert_color + rb_next + __rcu_read_lock + __rcu_read_unlock + rdev_get_drvdata + rdev_get_id + refcount_warn_saturate + regcache_cache_only + regcache_mark_dirty + regcache_sync + register_chrdev_region + register_inetaddr_notifier + register_netdev + register_netdevice + register_netdevice_notifier + register_pm_notifier + register_reboot_notifier + register_restart_handler + regmap_bulk_read + regmap_bulk_write + regmap_field_read + regmap_field_update_bits_base + regmap_irq_get_domain + regmap_irq_get_virq + regmap_multi_reg_write + regmap_raw_read + regmap_raw_write + regmap_read + regmap_update_bits_base + regmap_write + regulator_bulk_disable + regulator_bulk_enable + regulator_disable + regulator_disable_regmap + regulator_enable + regulator_enable_regmap + regulator_get + regulator_get_optional + regulator_get_voltage + regulator_get_voltage_sel_regmap + regulator_is_enabled + regulator_is_enabled_regmap + regulator_list_voltage_linear + regulator_list_voltage_linear_range + regulator_map_voltage_linear + regulator_map_voltage_linear_range + regulator_put + regulator_register_notifier + regulator_set_ramp_delay_regmap + regulator_set_voltage + regulator_set_voltage_sel_regmap + regulator_set_voltage_time_sel + regulator_unregister + regulator_unregister_notifier + release_firmware + remap_pfn_range + remove_proc_entry + request_firmware + request_threaded_irq + reset_control_assert + reset_control_deassert + rfkill_alloc + rfkill_destroy + rfkill_register + rfkill_set_hw_state_reason + rfkill_unregister + round_jiffies_relative + rtc_class_open + rtc_read_time + rtc_time64_to_tm + rtc_tm_to_time64 + rtc_valid_tm + rtnl_is_locked + rtnl_lock + rtnl_unlock + scatterwalk_map_and_copy + sched_clock + sched_set_fifo + schedule + schedule_timeout + scnprintf + __sdhci_add_host + sdhci_cleanup_host + sdhci_enable_clk + sdhci_get_property + sdhci_pltfm_clk_get_max_clock + sdhci_pltfm_free + sdhci_pltfm_init + sdhci_reset + sdhci_resume_host + sdhci_set_bus_width + sdhci_set_clock + sdhci_setup_host + sdhci_suspend_host + seq_lseek + seq_printf + seq_putc + seq_puts + seq_read + set_page_dirty_lock + sg_alloc_table + sg_alloc_table_from_pages_segment + sg_free_table + sg_init_one + sg_init_table + sg_nents + sg_next + simple_attr_open + simple_attr_release + simple_read_from_buffer + simple_strtol + simple_strtoul + single_open + single_release + skb_add_rx_frag + skb_clone + skb_copy + skb_copy_bits + skb_copy_expand + skb_pull + skb_push + skb_put + skb_trim + skcipher_alloc_instance_simple + skcipher_register_instance + skcipher_walk_done + skcipher_walk_virt + snd_ctl_boolean_mono_info + snd_pcm_format_width + snd_pcm_stop_xrun + snd_soc_add_component_controls + snd_soc_add_dai_controls + snd_soc_card_jack_new_pins + snd_soc_component_read + snd_soc_component_set_jack + snd_soc_component_update_bits + snd_soc_component_write + snd_soc_daifmt_clock_provider_from_bitmap + snd_soc_daifmt_parse_clock_provider_raw + snd_soc_daifmt_parse_format + snd_soc_dai_set_sysclk + snd_soc_dapm_add_routes + snd_soc_dapm_disable_pin_unlocked + snd_soc_dapm_force_enable_pin_unlocked + snd_soc_dapm_get_enum_double + snd_soc_dapm_get_volsw + snd_soc_dapm_new_controls + snd_soc_dapm_put_enum_double + snd_soc_dapm_put_volsw + snd_soc_dapm_sync_unlocked + snd_soc_get_dai_name + snd_soc_get_enum_double + snd_soc_get_volsw + snd_soc_info_enum_double + snd_soc_info_volsw + snd_soc_jack_add_gpios + snd_soc_jack_report + snd_soc_of_parse_audio_routing + snd_soc_of_parse_card_name + snd_soc_params_to_frame_size + snd_soc_pm_ops + snd_soc_put_enum_double + snd_soc_put_volsw + snd_soc_unregister_component + snprintf + sort + __spi_register_driver + spi_setup + spi_sync + sprintf + sscanf + __stack_chk_fail + strcasecmp + strchr + strcmp + strcpy + strlcat + strlcpy + strlen + strncasecmp + strncmp + strncpy + strnlen + strrchr + strscpy + strsep + strstr + __sw_hweight16 + __sw_hweight32 + __sw_hweight64 + __sw_hweight8 + swiotlb_max_segment + sync_file_create + sync_file_get_fence + synchronize_irq + synchronize_net + synchronize_rcu + syscon_node_to_regmap + syscon_regmap_lookup_by_phandle + sysfs_create_file_ns + sysfs_create_group + sysfs_create_link + sysfs_remove_file_ns + sysfs_remove_group + sysfs_remove_link + sysfs_streq + system_freezable_wq + system_highpri_wq + system_long_wq + system_power_efficient_wq + system_state + system_wq + tasklet_init + tasklet_kill + __tasklet_schedule + tasklet_setup + tasklet_unlock_wait + __task_pid_nr_ns + tcpm_tcpc_reset + thermal_zone_get_zone_by_name + trace_event_buffer_commit + trace_event_buffer_reserve + trace_event_printf + trace_event_raw_init + trace_event_reg + trace_handle_return + __traceiter_mmap_lock_acquire_returned + __traceiter_mmap_lock_released + __traceiter_mmap_lock_start_locking + __tracepoint_mmap_lock_acquire_returned + __tracepoint_mmap_lock_released + __tracepoint_mmap_lock_start_locking + trace_print_array_seq + trace_raw_output_prep + __trace_trigger_soft_disabled + typec_mux_get_drvdata + typec_mux_register + typec_mux_unregister + typec_switch_get_drvdata + typec_switch_register + typec_switch_unregister + __udelay + unregister_chrdev_region + unregister_inetaddr_notifier + unregister_netdev + unregister_netdevice_notifier + unregister_netdevice_queue + unregister_reboot_notifier + unregister_sysctl_table + up + update_devfreq + up_read + up_write + usb_add_hcd + usb_alloc_urb + usb_autopm_get_interface + usb_autopm_put_interface + usb_calc_bus_time + usb_control_msg + usb_create_hcd + usb_debug_root + usb_deregister + usb_deregister_dev + usb_disabled + usb_free_urb + usb_hcd_check_unlink_urb + usb_hcd_giveback_urb + usb_hcd_link_urb_to_ep + usb_hcd_resume_root_hub + usb_hcd_unlink_urb_from_ep + usb_hid_driver + usbnet_change_mtu + usbnet_defer_kevent + usbnet_disconnect + usbnet_get_drvinfo + usbnet_get_endpoints + usbnet_get_link + usbnet_get_link_ksettings_mii + usbnet_get_msglevel + usbnet_link_change + usbnet_nway_reset + usbnet_open + usbnet_probe + usbnet_read_cmd + usbnet_read_cmd_nopm + usbnet_resume + usbnet_set_link_ksettings_mii + usbnet_set_msglevel + usbnet_skb_return + usbnet_start_xmit + usbnet_stop + usbnet_suspend + usbnet_tx_timeout + usbnet_write_cmd + usbnet_write_cmd_async + usbnet_write_cmd_nopm + usb_put_hcd + usb_register_dev + usb_register_driver + usb_remove_hcd + usb_set_interface + usb_submit_urb + __usecs_to_jiffies + usleep_range_state + v4l2_ctrl_find + v4l2_ctrl_g_ctrl + v4l2_ctrl_g_ctrl_int64 + v4l2_ctrl_handler_free + v4l2_ctrl_handler_init_class + __v4l2_ctrl_handler_setup + v4l2_ctrl_handler_setup + __v4l2_ctrl_modify_range + v4l2_ctrl_new_custom + v4l2_ctrl_new_int_menu + v4l2_ctrl_new_std + v4l2_ctrl_new_std_menu + v4l2_ctrl_new_std_menu_items + __v4l2_ctrl_s_ctrl + __v4l2_ctrl_s_ctrl_int64 + v4l2_ctrl_subdev_subscribe_event + v4l2_device_register + v4l2_device_register_subdev + __v4l2_device_register_subdev_nodes + v4l2_device_unregister + v4l2_device_unregister_subdev + v4l2_enum_dv_timings_cap + v4l2_event_queue + v4l2_event_subdev_unsubscribe + v4l2_event_subscribe + v4l2_event_unsubscribe + v4l2_fh_open + v4l2_i2c_subdev_init + v4l2_match_dv_timings + v4l2_pipeline_link_notify + v4l2_pipeline_pm_get + v4l2_pipeline_pm_put + v4l2_print_dv_timings + v4l2_querymenu + v4l2_src_change_event_subdev_subscribe + v4l2_subdev_call_wrappers + v4l2_subdev_init + v4l2_subdev_link_validate + v4l2_subdev_notify_event + v4l2_type_names + v4l2_valid_dv_timings + vb2_buffer_done + vb2_dma_contig_memops + vb2_fop_mmap + vb2_fop_poll + vb2_fop_release + vb2_ioctl_create_bufs + vb2_ioctl_dqbuf + vb2_ioctl_expbuf + vb2_ioctl_prepare_buf + vb2_ioctl_qbuf + vb2_ioctl_querybuf + vb2_ioctl_reqbufs + vb2_ioctl_streamoff + vb2_ioctl_streamon + vb2_ops_wait_finish + vb2_ops_wait_prepare + vb2_plane_cookie + vb2_plane_vaddr + vb2_queue_init + vb2_queue_release + vb2_vmalloc_memops + vfree + video_devdata + video_device_pipeline_start + video_device_pipeline_stop + video_device_release_empty + video_ioctl2 + __video_register_device + video_unregister_device + vmalloc + vmap + vm_get_page_prot + vm_map_pages + vsnprintf + vunmap + vzalloc + wait_for_completion + wait_for_completion_timeout + __wake_up + wake_up_process + wakeup_source_add + wakeup_source_remove + __warn_printk + work_busy + +# required by act8865-regulator.ko + regulator_set_pull_down_regmap + +# required by adc-keys.ko + iio_get_channel_type + input_set_poll_interval + input_setup_polling + +# required by aes-ce-ccm.ko + ce_aes_expandkey + skcipher_walk_aead_decrypt + skcipher_walk_aead_encrypt + +# required by analogix_dp.ko + drm_atomic_get_old_connector_for_encoder + +# required by aspm_ext.ko + pci_find_capability + pci_find_ext_capability + +# required by bcmdhd.ko + alloc_etherdev_mqs + cpu_bit_bitmap + down_interruptible + down_timeout + get_random_u32 + iwe_stream_add_event + iwe_stream_add_point + iwe_stream_add_value + __kfifo_init + kobject_uevent + kthread_complete_and_exit + mmc_set_data_timeout + mmc_sw_reset + mmc_wait_for_req + netdev_state_change + __netlink_kernel_create + netlink_kernel_release + nla_put_nohdr + __nlmsg_put + _raw_read_lock_bh + _raw_read_unlock_bh + sched_set_fifo_low + sched_set_normal + sdio_claim_host + sdio_disable_func + sdio_enable_func + sdio_f0_readb + sdio_f0_writeb + sdio_get_host_pm_caps + sdio_memcpy_fromio + sdio_memcpy_toio + sdio_readb + sdio_readl + sdio_readsb + sdio_readw + sdio_register_driver + sdio_release_host + sdio_set_block_size + sdio_set_host_pm_flags + sdio_unregister_driver + sdio_writeb + sdio_writel + sdio_writew + set_cpus_allowed_ptr + __skb_pad + sock_wfree + sprint_symbol + strcat + strspn + sys_tz + unregister_pm_notifier + vprintk + wireless_send_event + +# required by bifrost_kbase.ko + __arch_clear_user + __bitmap_weight + cache_line_size + clear_page + __ClearPageMovable + complete_all + devfreq_add_device + devfreq_cooling_em_register + devfreq_cooling_unregister + devfreq_remove_device + dev_pm_opp_find_freq_exact + dma_fence_default_wait + dma_fence_remove_callback + downgrade_write + down_read_trylock + dump_stack + find_get_pid + find_vma_intersection + __folio_lock + freezer_active + freezing_slow_path + generic_file_llseek + get_user_pages + get_user_pages_fast + hrtimer_active + iomem_resource + kobject_del + kstrndup + kstrtobool_from_user + ktime_get_raw + ktime_get_raw_ts64 + mas_empty_area_rev + memchr + of_dma_is_coherent + of_property_read_variable_u64_array + param_array_ops + param_ops_byte + pid_task + pin_user_pages + pin_user_pages_remote + put_pid + rb_first + rb_prev + rb_replace_node + __refrigerator + register_oom_notifier + register_shrinker + __release_region + remap_vmalloc_range + __request_region + seq_open + __seq_open_private + seq_release + seq_release_private + seq_write + set_freezable + __SetPageMovable + shmem_file_setup + simple_open + strcspn + _totalram_pages + __traceiter_gpu_mem_total + trace_output_call + __tracepoint_gpu_mem_total + trace_print_flags_seq + trace_print_symbols_seq + try_module_get + unlock_page + unmap_mapping_range + unpin_user_page + unregister_oom_notifier + unregister_shrinker + vmalloc_user + vmf_insert_pfn_prot + +# required by bq25890_charger.ko + devm_regmap_field_bulk_alloc + power_supply_get_property_from_supplier + +# required by cdc-wdm.ko + cdc_parse_cdc_header + usb_poison_urb + usb_unpoison_urb + +# required by cdc_mbim.ko + cdc_ncm_bind_common + cdc_ncm_change_mtu + cdc_ncm_fill_tx_frame + cdc_ncm_rx_verify_ndp16 + cdc_ncm_rx_verify_nth16 + cdc_ncm_select_altsetting + cdc_ncm_unbind + in6_dev_finish_destroy + __ipv6_addr_type + ipv6_stub + usb_match_id + __vlan_find_dev_deep_rcu + +# required by cfg80211.ko + bpf_trace_run10 + bpf_trace_run8 + __dev_change_net_namespace + __dev_get_by_index + dev_get_by_index + device_add + device_del + device_rename + genlmsg_multicast_allns + genlmsg_put + genl_register_family + genl_unregister_family + get_net_ns_by_fd + get_net_ns_by_pid + inet_csk_get_port + init_uts_ns + key_create_or_update + key_put + keyring_alloc + kobject_uevent_env + ktime_get_coarse_with_offset + memcmp + netlink_broadcast + netlink_register_notifier + netlink_unregister_notifier + net_ns_type_operations + nla_find + nla_put_64bit + __nla_validate + of_prop_next_u32 + __put_net + register_pernet_device + request_firmware_nowait + rfkill_blocked + rfkill_resume_polling + __sock_create + sock_release + unregister_pernet_device + verify_pkcs7_signature + wireless_nlevent_flush + +# required by clk-link.ko + pm_clk_add + pm_clk_resume + pm_clk_suspend + +# required by clk-out.ko + __clk_hw_register_gate + of_clk_parent_fill + +# required by clk-rk628.ko + devm_reset_controller_register + +# required by clk-rockchip-regmap.ko + clk_hw_get_num_parents + clk_hw_get_parent_by_index + divider_recalc_rate + divider_round_rate_parent + +# required by clk-rockchip.ko + clk_divider_ops + clk_divider_ro_ops + clk_fixed_factor_ops + clk_fractional_divider_general_approximation + clk_fractional_divider_ops + __clk_get_hw + clk_hw_register_composite + clk_hw_round_rate + clk_hw_unregister_composite + clk_mux_ops + clk_mux_ro_ops + clk_register_divider_table + clk_register_fixed_factor + clk_register_gate + clk_register_mux_table + match_string + reset_controller_register + +# required by clk-scmi.ko + clk_hw_set_rate_range + of_clk_hw_onecell_get + scmi_driver_register + scmi_driver_unregister + +# required by cm3218.ko + i2c_smbus_write_word_data + +# required by cma_heap.ko + cma_get_name + dma_heap_get_drvdata + +# required by cpufreq-dt.ko + cpufreq_enable_boost_support + cpufreq_freq_attr_scaling_available_freqs + cpufreq_freq_attr_scaling_boost_freqs + cpufreq_generic_frequency_table_verify + cpufreq_generic_get + cpufreq_register_driver + cpufreq_unregister_driver + dev_pm_opp_free_cpufreq_table + dev_pm_opp_get_max_transition_latency + dev_pm_opp_get_sharing_cpus + dev_pm_opp_get_suspend_opp_freq + dev_pm_opp_init_cpufreq_table + dev_pm_opp_of_cpumask_add_table + dev_pm_opp_of_cpumask_remove_table + dev_pm_opp_of_register_em + dev_pm_opp_set_sharing_cpus + policy_has_boost_freq + +# required by cpufreq_ondemand.ko + cpufreq_cpu_get_raw + cpufreq_dbs_governor_exit + cpufreq_dbs_governor_init + cpufreq_dbs_governor_limits + cpufreq_dbs_governor_start + cpufreq_dbs_governor_stop + cpufreq_table_index_unsorted + dbs_update + get_cpu_idle_time_us + gov_update_cpu_data + sampling_rate_store + +# required by cqhci.ko + devm_blk_crypto_profile_init + +# required by cryptodev.ko + crypto_alloc_akcipher + flush_dcache_page + krealloc + register_sysctl_table + sg_last + +# required by cw221x_battery.ko + power_supply_is_system_supplied + +# required by display-connector.ko + drm_atomic_get_new_bridge_state + drm_probe_ddc + +# required by dm9601.ko + mii_link_ok + +# required by drm_display_helper.ko + drm_atomic_get_new_private_obj_state + drm_atomic_get_old_private_obj_state + drm_atomic_get_private_obj_state + __drm_atomic_helper_private_obj_duplicate_state + drm_atomic_private_obj_fini + drm_atomic_private_obj_init + drm_connector_register + drm_crtc_add_crc_entry + __drm_crtc_commit_free + drm_crtc_commit_wait + drm_crtc_wait_one_vblank + __drm_debug + drm_display_mode_from_cea_vic + drm_edid_duplicate + drm_edid_get_monitor_name + drm_modeset_lock_single_interruptible + drm_object_property_set_value + __drm_printfn_debug + drm_sysfs_connector_status_event + hdmi_drm_infoframe_init + memchr_inv + request_firmware_direct + +# required by drm_dma_helper.ko + dma_alloc_pages + dma_free_pages + dma_mmap_pages + drm_atomic_helper_damage_iter_init + drm_atomic_helper_damage_iter_next + drm_format_info_block_height + drm_format_info_block_width + drm_gem_create_mmap_offset + drm_gem_fb_get_obj + drm_gem_private_object_init + +# required by dw-hdmi-hdcp.ko + kstrtobool + sha1_init + sha1_transform + +# required by dw-hdmi-qp.ko + drm_mode_equal + hdmi_avi_infoframe_pack_only + +# required by dw-hdmi.ko + drm_connector_attach_hdr_output_metadata_property + drm_connector_attach_max_bpc_property + drm_default_rgb_quant_range + +# required by dw-mipi-dsi.ko + drm_panel_bridge_remove + +# required by dw_mmc-rockchip.ko + clk_get_phase + mmc_send_tuning + +# required by dw_mmc.ko + device_property_read_string_array + mmc_add_host + mmc_alloc_host + mmc_can_gpio_cd + mmc_detect_change + mmc_free_host + mmc_gpio_get_cd + mmc_gpio_get_ro + mmc_regulator_get_supply + mmc_regulator_set_ocr + mmc_regulator_set_vqmmc + mmc_remove_host + sdio_signal_irq + sg_miter_next + sg_miter_start + sg_miter_stop + +# required by dw_wdt.ko + watchdog_init_timeout + watchdog_register_device + watchdog_set_restart_priority + watchdog_unregister_device + +# required by dwc2.ko + __bitmap_clear + bitmap_find_next_zero_area_off + kmem_cache_free + of_usb_update_otg_caps + phy_reset + usb_add_gadget_udc + usb_del_gadget_udc + usb_ep_set_maxpacket_limit + usb_gadget_giveback_request + usb_gadget_map_request + usb_gadget_set_state + usb_gadget_unmap_request + usb_get_dr_mode + usb_get_role_switch_default_mode + usb_hcd_map_urb_for_dma + usb_hcd_unmap_urb_for_dma + usb_hub_clear_tt_buffer + usb_phy_set_charger_current + usb_role_switch_get_drvdata + usb_role_switch_get_role + usb_role_switch_register + usb_role_switch_unregister + usb_speed_string + usb_wakeup_enabled_descendants + +# required by dwmac-rockchip.ko + csum_tcpudp_nofold + ip_send_check + of_get_phy_mode + +# required by fusb302.ko + extcon_get_extcon_dev + fwnode_create_software_node + kthread_create_worker + kthread_destroy_worker + tcpm_cc_change + tcpm_pd_hard_reset + tcpm_pd_receive + tcpm_pd_transmit_complete + tcpm_register_port + tcpm_unregister_port + tcpm_vbus_change + +# required by gc2145.ko + v4l2_ctrl_subdev_log_status + +# required by gpio-regulator.ko + gpiod_count + +# required by gpio-rockchip.ko + gpiochip_add_data_with_key + gpiochip_relres_irq + gpiochip_remove + gpiochip_reqres_irq + handle_edge_irq + handle_level_irq + __irq_alloc_domain_generic_chips + irq_gc_ack_set_bit + irq_gc_mask_clr_bit + irq_gc_mask_set_bit + irq_gc_set_wake + irq_generic_chip_ops + irq_get_domain_generic_chip + of_pinctrl_get + +# required by hid-alps.ko + input_alloc_absinfo + input_mt_sync_frame + +# required by hid-holtek-kbd.ko + usb_ifnum_to_if + +# required by hid-primax.ko + hid_report_raw_event + +# required by hid-thrustmaster.ko + usb_interrupt_msg + usb_kill_urb + +# required by i2c-dev.ko + bus_register_notifier + bus_unregister_notifier + device_for_each_child + i2c_bus_type + i2c_for_each_dev + sysfs_emit + +# required by i2c-gpio.ko + desc_to_gpio + i2c_bit_add_numbered_bus + +# required by i2c-hid.ko + hid_add_device + hid_allocate_device + hid_destroy_device + hid_driver_reset_resume + hid_driver_suspend + hid_input_report + hid_parse_report + +# required by i2c-mux.ko + __i2c_transfer + rt_mutex_lock + rt_mutex_trylock + rt_mutex_unlock + +# required by i2c-rk3x.ko + i2c_parse_fw_timings + unregister_restart_handler + +# required by industrialio-buffer-cb.ko + iio_channel_get_all + iio_channel_release_all + iio_update_buffers + +# required by industrialio-triggered-buffer.ko + iio_alloc_pollfunc + iio_dealloc_pollfunc + iio_device_id + +# required by io-domain.ko + _dev_crit + +# required by kalmia.ko + usb_bulk_msg + +# required by kfifo_buf.ko + __kfifo_from_user + __kfifo_to_user + +# required by leds-gpio.ko + led_init_default_state_get + +# required by leds-rgb13h.ko + led_classdev_flash_register_ext + led_classdev_flash_unregister + +# required by ledtrig-heartbeat.ko + avenrun + +# required by mac80211.ko + alloc_netdev_mqs + __alloc_percpu_gfp + arc4_crypt + arc4_setkey + call_rcu + crc32_be + crypto_shash_digest + crypto_shash_finup + crypto_shash_setkey + dev_alloc_name + dev_fetch_sw_netstats + __dev_queue_xmit + ether_setup + free_percpu + 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 + netdev_set_default_ethtool_ops + netif_receive_skb + netif_receive_skb_list + netif_tx_stop_all_queues + ___pskb_trim + rcu_barrier + register_inet6addr_notifier + rhashtable_free_and_destroy + rhashtable_insert_slow + rhltable_init + __rht_bucket_nested + rht_bucket_nested + rht_bucket_nested_insert + round_jiffies + round_jiffies_up + skb_checksum_help + skb_clone_sk + skb_complete_wifi_ack + skb_dequeue + skb_ensure_writable + __skb_get_hash + __skb_gso_segment + skb_queue_head + skb_queue_purge + skb_queue_tail + unregister_inet6addr_notifier + unregister_netdevice_many + +# required by max96755f.ko + kstrtou8 + +# required by ohci-hcd.ko + dma_pool_alloc + dma_pool_create + dma_pool_destroy + dma_pool_free + gen_pool_dma_alloc_align + gen_pool_dma_zalloc_align + sb800_prefetch + schedule_timeout_uninterruptible + usb_amd_dev_put + usb_amd_quirk_pll_disable + usb_amd_quirk_pll_enable + usb_hc_died + usb_hcd_poll_rh_status + usb_hcds_loaded + usb_root_hub_lost_power + +# required by ohci-platform.ko + usb_hcd_platform_shutdown + +# required by optee-rng.ko + driver_register + +# required by optee.ko + alloc_pages_exact + __arm_smccc_hvc + bus_for_each_dev + device_register + free_pages_exact + mas_find + memremap + memunmap + pfn_is_map_memory + wait_for_completion_interruptible + +# required by panel-simple.ko + drm_bus_flags_from_videomode + drm_connector_set_panel_orientation + drm_panel_of_backlight + drm_panel_remove + mipi_dsi_compression_mode + mipi_dsi_dcs_get_display_brightness + mipi_dsi_dcs_set_display_brightness + mipi_dsi_dcs_write_buffer + mipi_dsi_driver_register_full + mipi_dsi_driver_unregister + mipi_dsi_generic_write + mipi_dsi_picture_parameter_set + of_drm_get_panel_orientation + of_find_i2c_adapter_by_node + of_get_display_timing + videomode_from_timing + +# required by pcie-dw-rockchip.ko + device_release_driver + dw_pcie_find_ext_capability + dw_pcie_host_init + dw_pcie_link_up + dw_pcie_read + dw_pcie_read_dbi + dw_pcie_setup_rc + dw_pcie_write + dw_pcie_write_dbi + generic_handle_irq + pci_disable_link_state + pci_set_power_state + +# required by pcierockchiphost.ko + devm_pci_alloc_host_bridge + devm_pci_remap_cfg_resource + jiffies_to_usecs + of_pci_get_max_link_speed + pci_host_probe + pci_remove_root_bus + pci_stop_root_bus + regulator_get_current_limit + +# required by pcs_xpcs.ko + __bitmap_and + mdiobus_modify_changed + phylink_mii_c22_pcs_decode_state + phylink_mii_c22_pcs_encode_advertisement + +# required by phy-rockchip-inno-usb2.ko + devm_extcon_register_notifier + extcon_sync + +# required by phy-rockchip-inno-usb3.ko + usb_add_phy + +# required by phy-rockchip-samsung-hdptx-hdmi.ko + of_platform_device_create + +# required by phy-rockchip-usbdp.ko + usb_get_maximum_speed + +# required by pinctrl-rk628.ko + irq_domain_xlate_twocell + pinctrl_add_gpio_range + pinctrl_find_gpio_range_from_pin + +# required by pinctrl-rk805.ko + device_set_node + +# required by pinctrl-rockchip.ko + devm_kasprintf_strarray + of_find_node_by_phandle + of_platform_depopulate + of_platform_populate + pinconf_generic_parse_dt_config + pinctrl_force_default + pinctrl_force_sleep + pin_get_name + +# required by pl330.ko + amba_driver_register + amba_driver_unregister + dma_async_device_register + dma_async_device_unregister + dma_async_tx_descriptor_init + dmaengine_unmap_put + dma_get_slave_channel + loops_per_jiffy + of_dma_controller_free + of_dma_controller_register + pm_runtime_irq_safe + +# required by pm_domains.ko + clk_bulk_put + of_genpd_add_provider_onecell + panic + param_get_bool + param_set_bool + pm_clk_add_clk + pm_genpd_add_subdomain + pm_genpd_init + pm_genpd_remove + pm_wq + +# required by pwm-regulator.ko + regulator_map_voltage_iterate + +# required by pwm-rockchip.ko + __ndelay + pwmchip_add + pwmchip_remove + +# required by pwm_bl.ko + backlight_device_register + backlight_device_unregister + pwm_free + pwm_request + +# required by pwrseq_simple.ko + bitmap_alloc + devm_gpiod_get_array + gpiod_set_array_value_cansleep + mmc_pwrseq_register + mmc_pwrseq_unregister + +# required by reboot-mode.ko + devres_release + kernel_kobj + kfree_const + +# required by rfkill-rk.ko + rfkill_init_sw_state + rfkill_set_sw_state + +# required by rga3.ko + dma_fence_wait_timeout + find_vma + idr_alloc_cyclic + kstrdup_quotable_cmdline + mmput + +# required by rk628.ko + irq_domain_xlate_onetwocell + irq_set_parent + +# required by rk628_dsi.ko + bus_find_device + device_match_name + platform_bus_type + +# required by rk805-pwrkey.ko + devm_request_any_context_irq + +# required by rk806-core.ko + devm_regmap_add_irq_chip + +# required by rk806-spi.ko + spi_write_then_read + +# required by rk808-regulator.ko + gpiod_is_active_low + +# required by rk808.ko + devm_register_sys_off_handler + platform_device_add + platform_device_alloc + register_syscore_ops + regmap_add_irq_chip + regmap_del_irq_chip + unregister_syscore_ops + +# required by rk860x-regulator.ko + regulator_suspend_enable + +# required by rk_crypto.ko + crypto_ahash_digest + crypto_ahash_finup + crypto_dequeue_request + crypto_enqueue_request + crypto_init_queue + crypto_register_ahash + crypto_register_akcipher + crypto_register_skcipher + crypto_req_done + crypto_unregister_ahash + crypto_unregister_akcipher + crypto_unregister_skcipher + des_expand_key + rsa_parse_priv_key + rsa_parse_pub_key + scatterwalk_ffwd + sg_copy_from_buffer + sg_copy_to_buffer + sg_nents_for_len + sg_pcopy_from_buffer + sg_pcopy_to_buffer + +# required by rk_fiq_debugger.ko + console_lock + console_unlock + __cpuhp_setup_state + cpu_pm_register_notifier + of_irq_parse_one + oops_in_progress + platform_device_register + +# required by rk_headset_irq_hook_adc.ko + iio_read_channel_raw + +# required by rk_ircut.ko + drain_workqueue + +# required by rk_vcodec.ko + devm_iounmap + disable_hardirq + __fdget + __kthread_init_worker + kthread_worker_fn + proc_create_single_data + proc_remove + reserve_iova + +# required by rknpu.ko + dev_pm_domain_attach_by_name + dev_pm_domain_detach + drm_gem_handle_delete + drm_gem_mmap_obj + drm_gem_prime_export + drm_gem_prime_import_dev + of_dma_configure_id + set_user_nice + vmf_insert_mixed + vm_insert_page + +# required by rockchip-cpufreq.ko + cpufreq_unregister_notifier + +# required by rockchip-hdmirx.ko + cec_s_phys_addr + cpu_latency_qos_remove_request + device_create_with_groups + of_reserved_mem_device_release + v4l2_ctrl_log_status + v4l2_ctrl_subscribe_event + v4l2_find_dv_timings_cap + v4l2_src_change_event_subscribe + vb2_fop_read + +# required by rockchip-rng.ko + devm_of_iomap + +# required by rockchip_bus.ko + cpu_topology + +# required by rockchip_dmc.ko + cpufreq_cpu_put + cpufreq_quick_get + devfreq_event_disable_edev + devfreq_event_enable_edev + devfreq_event_get_edev_by_phandle + devfreq_event_get_edev_count + devfreq_event_get_event + devfreq_monitor_resume + devfreq_monitor_start + devfreq_monitor_stop + devfreq_monitor_suspend + devfreq_update_interval + devm_devfreq_register_opp_notifier + dev_pm_opp_add + input_close_device + input_open_device + input_register_handle + input_register_handler + input_unregister_handle + +# required by rockchip_dmc_common.ko + down_write_trylock + +# required by rockchip_headset_core.ko + iio_channel_get + +# required by rockchip_iommu.ko + iommu_device_register + iommu_device_sysfs_add + iommu_device_sysfs_remove + iommu_group_alloc + iommu_group_ref_get + platform_irq_count + report_iommu_fault + +# required by rockchip_ipa.ko + of_get_compatible_child + +# required by rockchip_opp_select.ko + dev_pm_opp_of_add_table + regulator_get_linear_step + +# required by rockchip_pwm_remotectl.ko + __tasklet_hi_schedule + +# required by rockchip_saradc.ko + iio_get_time_ns + iio_trigger_notify_done + +# required by rockchip_system_monitor.ko + add_cpu + bitmap_parselist + compat_only_sysfs_link_entry_to_kobj + dev_pm_qos_add_request + dev_pm_qos_remove_request + dev_pm_qos_update_request + remove_cpu + thermal_zone_get_temp + +# required by rockchip_thermal.ko + devm_clk_put + devm_thermal_of_zone_register + thermal_zone_device_disable + thermal_zone_device_enable + thermal_zone_device_update + +# required by rockchipdrm.ko + adjust_managed_page_count + component_add + component_bind_all + component_compare_dev + component_del + component_master_add_with_match + component_master_del + component_match_add_release + component_unbind_all + devm_of_phy_get_by_index + driver_find_device + drm_aperture_remove_conflicting_framebuffers + drm_atomic_commit + drm_atomic_get_plane_state + drm_atomic_helper_check + drm_atomic_helper_check_plane_state + drm_atomic_helper_cleanup_planes + drm_atomic_helper_commit + drm_atomic_helper_commit_hw_done + drm_atomic_helper_commit_modeset_disables + drm_atomic_helper_commit_modeset_enables + drm_atomic_helper_commit_planes + __drm_atomic_helper_connector_destroy_state + __drm_atomic_helper_connector_duplicate_state + __drm_atomic_helper_connector_reset + __drm_atomic_helper_crtc_destroy_state + __drm_atomic_helper_crtc_duplicate_state + __drm_atomic_helper_disable_plane + drm_atomic_helper_duplicate_state + drm_atomic_helper_fake_vblank + drm_atomic_helper_page_flip + __drm_atomic_helper_plane_destroy_state + __drm_atomic_helper_plane_duplicate_state + __drm_atomic_helper_plane_reset + drm_atomic_helper_set_config + drm_atomic_helper_shutdown + drm_atomic_helper_swap_state + drm_atomic_helper_wait_for_vblanks + drm_atomic_set_crtc_for_connector + drm_atomic_set_crtc_for_plane + drm_atomic_set_fb_for_plane + drm_atomic_set_mode_for_crtc + drm_atomic_state_alloc + __drm_atomic_state_free + drm_bridge_chain_mode_set + drm_bridge_get_edid + drm_connector_list_update + drm_crtc_cleanup + drm_crtc_enable_color_mgmt + drm_crtc_from_index + drm_crtc_handle_vblank + drm_crtc_init_with_planes + drm_crtc_send_vblank_event + drm_crtc_vblank_get + drm_crtc_vblank_off + drm_crtc_vblank_on + drm_crtc_vblank_put + drm_do_get_edid + drm_encoder_cleanup + drm_encoder_init + drm_event_reserve_init_locked + drm_firmware_drivers_only + drm_flip_work_cleanup + drm_flip_work_commit + drm_flip_work_init + drm_flip_work_queue + drm_format_info + drm_format_info_min_pitch + drm_framebuffer_cleanup + drm_framebuffer_init + drm_gem_dmabuf_export + drm_gem_dmabuf_mmap + drm_gem_dmabuf_release + drm_gem_dmabuf_vmap + drm_gem_dmabuf_vunmap + drm_gem_fb_afbc_init + drm_gem_fb_create_handle + drm_gem_fb_init_with_funcs + drm_gem_map_attach + drm_gem_map_detach + drm_gem_map_dma_buf + drm_gem_unmap_dma_buf + drm_get_format_info + drm_helper_mode_fill_fb_struct + drm_kms_helper_poll_enable + drm_kms_helper_poll_fini + drm_kms_helper_poll_init + drm_mm_init + drm_mm_insert_node_in_range + drmm_mode_config_init + drm_mm_print + drm_mm_remove_node + drm_mm_reserve_node + drm_mm_takedown + drm_mode_config_cleanup + drm_mode_config_helper_resume + drm_mode_config_helper_suspend + drm_mode_config_reset + drm_mode_create_hdmi_colorspace_property + drm_mode_create_tv_properties + drm_mode_crtc_set_gamma_size + drm_mode_debug_printmodeline + drm_mode_is_420 + drm_mode_object_get + drm_mode_prune_invalid + drm_mode_set_crtcinfo + drm_modeset_lock_all + drm_modeset_unlock_all + drm_mode_sort + drm_mode_validate_size + drm_mode_validate_ycbcr420 + drm_of_crtc_port_mask + drm_of_encoder_active_endpoint + drm_plane_cleanup + drm_plane_create_alpha_property + drm_plane_create_blend_mode_property + drm_plane_create_rotation_property + drm_plane_create_zpos_property + __drm_printfn_seq_file + drm_property_blob_get + drm_property_blob_put + drm_property_create + drm_property_create_bitmask + drm_property_create_bool + drm_property_create_object + drm_property_create_range + drm_property_destroy + drm_property_lookup_blob + drm_property_replace_blob + __drm_puts_seq_file + drm_rect_calc_hscale + drm_self_refresh_helper_cleanup + drm_self_refresh_helper_init + drm_send_event_locked + drm_simple_encoder_init + drm_universal_plane_init + drm_vblank_init + drm_writeback_connector_init + drm_writeback_queue_job + drm_writeback_signal_completion + hdmi_drm_infoframe_pack_only + iommu_domain_alloc + iommu_domain_free + memblock_free + mipi_dsi_packet_format_is_short + of_clk_set_defaults + of_find_backlight_by_node + of_fwnode_ops + of_get_next_parent + of_graph_get_port_by_id + of_graph_get_remote_endpoint + of_graph_get_remote_port + phy_mipi_dphy_get_default_config + platform_find_device_by_driver + __platform_register_drivers + platform_unregister_drivers + system_unbound_wq + __vmalloc + +# required by rtc-rk808.ko + rtc_update_irq + +# required by sdhci-of-arasan.ko + sdhci_add_host + sdhci_cqe_disable + sdhci_cqe_enable + sdhci_cqe_irq + sdhci_dumpregs + sdhci_execute_tuning + sdhci_pltfm_unregister + sdhci_set_power_and_bus_voltage + sdhci_set_uhs_signaling + +# required by sdhci-of-dwcmshc.ko + devm_clk_bulk_get_optional + dma_get_required_mask + sdhci_adma_write_desc + sdhci_remove_host + sdhci_request + +# required by sg.ko + blk_execute_rq_nowait + blk_mq_free_request + blk_rq_map_user_io + blk_rq_unmap_user + cdev_alloc + class_interface_unregister + fasync_helper + get_sg_io_hdr + kill_fasync + __module_get + put_sg_io_hdr + _raw_write_lock_irq + _raw_write_unlock_irq + register_sysctl + scsi_alloc_request + scsi_autopm_get_device + scsi_autopm_put_device + scsi_block_when_processing_errors + scsi_cmd_allowed + scsi_command_size_tbl + scsi_device_get + scsi_device_put + scsi_ioctl + scsi_ioctl_block_when_processing_errors + scsi_normalize_sense + __scsi_print_sense + scsi_register_interface + sdev_prefix_printk + +# required by sha1-ce.ko + crypto_register_shash + crypto_sha1_finup + crypto_sha1_update + crypto_unregister_shash + fpsimd_context_busy + irq_stat + +# required by sii902x.ko + hdmi_avi_infoframe_pack + +# required by smsc.ko + devm_clk_get_optional_enabled + phy_error + phy_trigger_machine + +# required by smsc95xx.ko + __irq_domain_alloc_fwnode + irq_domain_free_fwnode + irq_domain_simple_ops + __mdiobus_register + net_selftest + net_selftest_get_count + net_selftest_get_strings + phy_connect_direct + phy_disconnect + phy_ethtool_get_link_ksettings + phy_ethtool_nway_reset + phy_ethtool_set_link_ksettings + phy_find_first + phy_get_pause + phy_init_hw + phy_mii_ioctl + phy_print_status + phy_start + phy_stop + usb_autopm_get_interface_no_resume + +# required by snd-soc-aw883xx.ko + snd_soc_register_component + +# required by snd-soc-es8316.ko + snd_pcm_hw_constraint_list + +# required by snd-soc-hdmi-codec.ko + snd_ctl_add + snd_ctl_new1 + snd_pcm_add_chmap_ctls + snd_pcm_create_iec958_consumer_default + snd_pcm_fill_iec958_consumer + snd_pcm_fill_iec958_consumer_hw_params + snd_pcm_hw_constraint_eld + snd_pcm_stop + +# required by snd-soc-rk817.ko + snd_soc_component_exit_regmap + snd_soc_component_init_regmap + +# required by snd-soc-rockchip-hdmi.ko + snd_soc_dapm_new_widgets + +# required by snd-soc-rockchip-multicodecs.ko + snd_soc_dapm_get_pin_switch + snd_soc_dapm_info_pin_switch + snd_soc_dapm_put_pin_switch + snd_soc_jack_add_zones + snd_soc_jack_get_type + +# required by snd-soc-rockchip-spdif.ko + snd_pcm_create_iec958_consumer_hw_params + +# required by snd-soc-rt5640.ko + regmap_register_patch + snd_soc_dapm_force_bias_level + +# required by snd-soc-simple-card-utils.ko + devm_kvasprintf + snd_pcm_hw_constraint_minmax + snd_soc_component_set_sysclk + snd_soc_dai_active + snd_soc_dai_set_tdm_slot + snd_soc_of_parse_audio_simple_widgets + snd_soc_of_parse_pin_switches + snd_soc_runtime_calc_hw + +# required by snd-soc-simple-card.ko + snd_soc_dai_link_set_capabilities + snd_soc_of_get_dai_name + snd_soc_of_parse_aux_devs + snd_soc_of_parse_node_prefix + snd_soc_of_parse_tdm_slot + +# required by spi-rockchip.ko + devm_spi_register_controller + __spi_alloc_controller + spi_controller_resume + spi_controller_suspend + +# required by spidev.ko + __register_chrdev + stream_open + __unregister_chrdev + +# required by stmmac-platform.ko + device_get_phy_mode + of_get_mac_address + of_phy_is_fixed_link + platform_get_irq_byname_optional + +# required by stmmac.ko + bpf_dispatcher_xdp_func + bpf_master_redirect_enabled_key + bpf_prog_put + bpf_stats_enabled_key + bpf_warn_invalid_xdp_action + devm_alloc_etherdev_mqs + dql_completed + dql_reset + ethtool_convert_legacy_u32_to_link_mode + ethtool_convert_link_mode_to_legacy_u32 + flow_block_cb_setup_simple + flow_rule_match_basic + flow_rule_match_ipv4_addrs + flow_rule_match_ports + flow_rule_match_vlan + fwnode_get_named_child_node + fwnode_get_phy_node + get_device_system_crosststamp + mdiobus_get_phy + mdio_device_create + mdio_device_free + __napi_alloc_skb + napi_complete_done + napi_disable + napi_enable + __napi_schedule + napi_schedule_prep + netdev_alert + netdev_pick_tx + netdev_rss_key_fill + netif_device_attach + netif_device_detach + netif_napi_add_weight + __netif_napi_del + netif_schedule_queue + netif_set_real_num_rx_queues + netif_set_real_num_tx_queues + __num_online_cpus + __of_mdiobus_register + page_pool_alloc_pages + page_pool_create + page_pool_destroy + page_pool_put_defragged_page + page_pool_release_page + phy_init_eee + phylink_connect_phy + phylink_create + phylink_destroy + phylink_disconnect_phy + phylink_ethtool_get_eee + phylink_ethtool_get_pauseparam + phylink_ethtool_get_wol + phylink_ethtool_ksettings_get + phylink_ethtool_ksettings_set + phylink_ethtool_nway_reset + 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 + phylink_mii_ioctl + phylink_resume + phylink_speed_down + phylink_speed_up + phylink_start + phylink_stop + phylink_suspend + ptp_clock_event + ptp_clock_index + ptp_clock_register + ptp_clock_unregister + reset_control_reset + skb_tstamp_tx + __traceiter_xdp_exception + __tracepoint_xdp_exception + xdp_convert_zc_to_xdp_frame + xdp_do_flush + 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 + xdp_rxq_info_unreg + xdp_rxq_info_unreg_mem_model + xdp_warn + xp_alloc + xp_dma_map + xp_dma_sync_for_cpu_slow + xp_dma_sync_for_device_slow + xp_dma_unmap + xp_free + xp_raw_get_dma + xp_set_rxq_info + xsk_clear_rx_need_wakeup + xsk_get_pool_from_qid + xsk_set_rx_need_wakeup + xsk_set_tx_need_wakeup + xsk_tx_completed + xsk_tx_peek_desc + xsk_tx_release + xsk_uses_need_wakeup + +# required by sw_sync.ko + dma_fence_free + dma_fence_signal_locked + __get_task_comm + +# required by system_heap.ko + dmabuf_page_pool_alloc + dmabuf_page_pool_create + dmabuf_page_pool_destroy + dmabuf_page_pool_free + dmabuf_page_pool_get_size + dma_heap_get_dev + __sg_page_iter_next + __sg_page_iter_start + +# required by tcpci_husb311.ko + tcpci_get_tcpm_port + tcpci_irq + tcpci_register_port + tcpci_unregister_port + +# required by tee.ko + add_uevent_var + bus_register + bus_unregister + class_find_device + crypto_shash_final + gen_pool_first_fit_align + gen_pool_virt_to_phys + get_kernel_pages + idr_replace + in_egroup_p + pin_user_pages_fast + unpin_user_pages + uuid_null + vmalloc_to_page + +# required by timer-rockchip.ko + clockevents_config_and_register + +# required by tps65132-regulator.ko + regulator_set_active_discharge_regmap + +# required by trancevibrator.ko + usb_get_dev + usb_put_dev + +# required by twofish_generic.ko + crypto_register_alg + crypto_unregister_alg + +# required by usblp.ko + add_wait_queue + default_wake_function + remove_wait_queue + stpcpy + usb_anchor_urb + usb_find_common_endpoints + usb_find_interface + usb_get_intf + usb_kill_anchored_urbs + usb_poison_anchored_urbs + usb_put_intf + usb_unanchor_urb + +# required by v4l2-async.ko + fwnode_handle_get + media_create_ancillary_link + +# required by v4l2-fwnode.ko + fwnode_graph_parse_endpoint + fwnode_property_get_reference_args + fwnode_property_read_string + fwnode_property_read_u64_array + +# required by video_rkcif.ko + media_entity_setup_link + +# required by video_rkisp.ko + param_ops_ullong + v4l2_ctrl_poll + +# required by videobuf2-cma-sg.ko + frame_vector_to_pages + split_page + vb2_common_vm_ops + vb2_create_framevec + vb2_destroy_framevec + vm_map_ram + vm_unmap_ram + +# required by vl6180.ko + iio_read_const_attr diff --git a/android/abi_gki_aarch64_tuxera b/android/abi_gki_aarch64_tuxera new file mode 100644 index 000000000000..cbffd3f1685f --- /dev/null +++ b/android/abi_gki_aarch64_tuxera @@ -0,0 +1,280 @@ +[abi_symbol_list] + alt_cb_patch_nops + __arch_copy_from_user + __arch_copy_to_user + autoremove_wake_function + balance_dirty_pages_ratelimited + bcmp + __bforget + __bh_read_batch + bio_add_page + bio_alloc_bioset + bio_put + __bitmap_weight + bit_waitqueue + blkdev_issue_discard + blkdev_issue_flush + blk_finish_plug + blk_start_plug + __blockdev_direct_IO + block_dirty_folio + block_invalidate_folio + block_is_partially_uptodate + __breadahead + __bread_gfp + __brelse + buffer_migrate_folio + call_rcu + capable + capable_wrt_inode_uidgid + __check_object_size + clean_bdev_aliases + clear_inode + clear_page + clear_page_dirty_for_io + copy_page_from_iter_atomic + cpu_hwcaps + create_empty_buffers + current_umask + d_add + d_add_ci + d_instantiate + d_make_root + d_obtain_alias + down_read + down_write + down_write_trylock + dput + drop_nlink + d_splice_alias + dump_stack + end_buffer_read_sync + end_buffer_write_sync + end_page_writeback + errseq_set + fault_in_iov_iter_readable + fault_in_safe_writeable + fget + fiemap_fill_next_extent + fiemap_prep + file_check_and_advance_wb_err + filemap_add_folio + filemap_dirty_folio + filemap_fault + filemap_fdatawait_range + filemap_fdatawrite + filemap_fdatawrite_range + filemap_flush + __filemap_set_wb_err + filemap_write_and_wait_range + file_remove_privs + file_update_time + file_write_and_wait_range + finish_wait + flush_dcache_page + __folio_alloc + __folio_cancel_dirty + __folio_lock + __folio_put + folio_wait_bit + folio_write_one + fortify_panic + fput + freezer_active + freezing_slow_path + fs_bio_set + generic_error_remove_page + generic_file_direct_write + generic_file_llseek + generic_file_mmap + generic_file_open + generic_file_read_iter + generic_file_splice_read + generic_fillattr + generic_perform_write + generic_read_dir + generic_write_checks + __getblk_gfp + gic_nonsecure_priorities + grab_cache_page_write_begin + iget5_locked + igrab + ihold + ilookup5 + inc_nlink + in_group_p + __init_rwsem + init_special_inode + init_wait_entry + __init_waitqueue_head + inode_dio_wait + inode_init_once + inode_init_owner + inode_maybe_inc_iversion + inode_newsize_ok + inode_set_flags + __insert_inode_hash + invalidate_bdev + invalidate_inode_pages2_range + invalidate_mapping_pages + io_schedule + iov_iter_advance + iov_iter_alignment + iov_iter_get_pages2 + iov_iter_single_seg_count + iput + is_bad_inode + iter_file_splice_write + iunique + jiffies + jiffies_to_msecs + kasan_flag_enabled + kfree + kill_block_super + __kmalloc + kmalloc_caches + kmalloc_trace + kmem_cache_alloc + kmem_cache_alloc_lru + kmem_cache_create + kmem_cache_create_usercopy + kmem_cache_destroy + kmem_cache_free + krealloc + kthread_complete_and_exit + kthread_create_on_node + kthread_should_stop + kthread_stop + ktime_get_coarse_real_ts64 + kvfree + __list_add_valid + __list_del_entry_valid + load_nls + load_nls_default + __lock_buffer + make_bad_inode + mark_buffer_async_write + mark_buffer_dirty + mark_buffer_write_io_error + __mark_inode_dirty + mark_page_accessed + memcmp + memcpy + memmove + memset + mktime64 + mnt_drop_write_file + mnt_want_write_file + mount_bdev + mpage_readahead + mpage_read_folio + __msecs_to_jiffies + __mutex_init + mutex_lock + mutex_trylock + mutex_unlock + new_inode + notify_change + pagecache_get_page + page_cache_next_miss + page_cache_prev_miss + page_pinner_inited + __page_pinner_put_page + pagevec_lookup_range_tag + __pagevec_release + page_zero_new_buffers + __percpu_down_read + preempt_schedule + preempt_schedule_notrace + prepare_to_wait + prepare_to_wait_event + _printk + __printk_ratelimit + ___ratelimit + _raw_read_lock + _raw_read_lock_irqsave + _raw_read_unlock + _raw_read_unlock_irqrestore + _raw_spin_lock + _raw_spin_lock_irqsave + _raw_spin_unlock + _raw_spin_unlock_irqrestore + _raw_write_lock + _raw_write_lock_irqsave + _raw_write_unlock + _raw_write_unlock_irqrestore + rcu_barrier + rcuwait_wake_up + readahead_gfp_mask + read_cache_page + redirty_page_for_writepage + __refrigerator + register_filesystem + __remove_inode_hash + sb_min_blocksize + sb_set_blocksize + schedule + schedule_timeout + schedule_timeout_interruptible + security_inode_init_security + seq_printf + setattr_prepare + set_freezable + set_nlink + set_page_dirty + __set_page_dirty_nobuffers + set_page_writeback + set_user_nice + simple_strtol + simple_strtoul + simple_strtoull + snprintf + sprintf + sscanf + __stack_chk_fail + strchr + strcmp + strlen + strncasecmp + strncmp + strsep + strstr + submit_bh + submit_bio + sync_blockdev + __sync_dirty_buffer + sync_dirty_buffer + sync_filesystem + sync_inode_metadata + sys_tz + tag_pages_for_writeback + time64_to_tm + timestamp_truncate + touch_atime + _trace_android_vh_record_pcpu_rwsem_starttime + _trace_android_vh_record_pcpu_rwsem_time_early + truncate_inode_pages + truncate_inode_pages_final + truncate_pagecache + truncate_setsize + try_to_writeback_inodes_sb + unload_nls + unlock_buffer + unlock_new_inode + unlock_page + unregister_filesystem + up_read + up_write + vfree + vfs_fsync_range + __vmalloc + vmalloc + vsnprintf + vzalloc + __wait_on_buffer + wake_bit_function + __wake_up + wake_up_process + __warn_printk + write_inode_now + xa_load diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc index ac818f2e495f..af9b8e60d708 100644 --- a/android/abi_gki_aarch64_unisoc +++ b/android/abi_gki_aarch64_unisoc @@ -412,6 +412,7 @@ param_ops_int param_ops_uint pcpu_nr_pages + percpu_counter_batch __per_cpu_offset perf_trace_buf_alloc perf_trace_run_bpf_submit @@ -1912,6 +1913,8 @@ # required by trusty-log.ko vm_map_ram vm_unmap_ram +# required by sprd_time_sync_cp.ko + pvclock_gtod_register_notifier # required by trusty-pm.ko unregister_syscore_ops diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo index b17c82fe8684..679c37e8b995 100644 --- a/android/abi_gki_aarch64_vivo +++ b/android/abi_gki_aarch64_vivo @@ -807,6 +807,7 @@ blk_bio_list_merge blk_execute_rq blk_execute_rq_nowait + blk_fill_rwbs blk_mq_alloc_request blk_mq_alloc_sq_tag_set blk_mq_alloc_tag_set diff --git a/android/abi_gki_aarch64_xiaomi b/android/abi_gki_aarch64_xiaomi index 5a0852cf19f6..1ca73267f242 100644 --- a/android/abi_gki_aarch64_xiaomi +++ b/android/abi_gki_aarch64_xiaomi @@ -332,3 +332,12 @@ #required by xm_ispv4_pcie.ko pci_ioremap_bar pci_disable_pcie_error_reporting + +#required by lock_optimization module + __traceiter_android_vh_record_pcpu_rwsem_time_early + __tracepoint_android_vh_record_pcpu_rwsem_time_early + cgroup_threadgroup_rwsem + +#required by zram.ko + bioset_init + bioset_exit diff --git a/android/gki_aarch64_protected_modules b/android/gki_aarch64_protected_modules index d6b0777dd474..3f1af7946695 100644 --- a/android/gki_aarch64_protected_modules +++ b/android/gki_aarch64_protected_modules @@ -1,3 +1,4 @@ +arch/arm64/geniezone/gzvm.ko drivers/bluetooth/btbcm.ko drivers/bluetooth/btqca.ko drivers/bluetooth/btsdio.ko diff --git a/arch/arm64/Kbuild b/arch/arm64/Kbuild index e4847ba0e3c9..ddcb496ce66c 100644 --- a/arch/arm64/Kbuild +++ b/arch/arm64/Kbuild @@ -5,6 +5,7 @@ obj-$(CONFIG_XEN) += xen/ obj-$(subst m,y,$(CONFIG_HYPERV)) += hyperv/ obj-$(CONFIG_GUNYAH) += gunyah/ obj-$(CONFIG_CRYPTO) += crypto/ +obj-$(CONFIG_MTK_GZVM) += geniezone/ # for cleaning subdir- += boot diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index a354cff562ed..abf7b41cdc85 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -95,6 +95,7 @@ CONFIG_MODPROBE_PATH="/system/bin/modprobe" CONFIG_BLK_DEV_ZONED=y CONFIG_BLK_DEV_THROTTLING=y CONFIG_BLK_CGROUP_IOCOST=y +CONFIG_BLK_CGROUP_IOPRIO=y CONFIG_BLK_INLINE_ENCRYPTION=y CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y CONFIG_IOSCHED_BFQ=y @@ -551,6 +552,7 @@ CONFIG_GUNYAH=y CONFIG_GUNYAH_VCPU=y CONFIG_GUNYAH_IRQFD=y CONFIG_GUNYAH_IOEVENTFD=y +CONFIG_MTK_GZVM=m CONFIG_VHOST_VSOCK=y CONFIG_STAGING=y CONFIG_ASHMEM=y diff --git a/arch/arm64/configs/rockchip_gki.fragment b/arch/arm64/configs/rockchip_gki.fragment new file mode 100644 index 000000000000..c31a4e8280f5 --- /dev/null +++ b/arch/arm64/configs/rockchip_gki.fragment @@ -0,0 +1,358 @@ +# CONFIG_MODULE_SIG_ALL is not set +CONFIG_PWRSEQ_SIMPLE=m +CONFIG_AP6XXX=m +CONFIG_ARCH_ROCKCHIP=y +CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=m +CONFIG_ARM_ROCKCHIP_CPUFREQ=m +CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ=m +CONFIG_BACKLIGHT_PWM=m +CONFIG_BATTERY_CW2015=m +CONFIG_BATTERY_CW2017=m +CONFIG_BATTERY_CW221X=m +CONFIG_BATTERY_RK817=m +CONFIG_BATTERY_RK818=m +CONFIG_BMA2XX_ACC=m +CONFIG_CHARGER_BQ25700=m +CONFIG_CHARGER_BQ25890=m +CONFIG_CHARGER_RK817=m +CONFIG_CHARGER_RK818=m +CONFIG_CHARGER_SC89890=m +CONFIG_CHARGER_SGM41542=m +CONFIG_CHR_DEV_SG=m +CONFIG_COMMON_CLK_PWM=m +CONFIG_COMMON_CLK_RK808=m +CONFIG_COMMON_CLK_ROCKCHIP=m +CONFIG_COMMON_CLK_SCMI=m +CONFIG_COMPASS_AK8963=m +CONFIG_COMPASS_AK8975=m +CONFIG_COMPASS_DEVICE=m +CONFIG_CPUFREQ_DT=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_PX30=y +CONFIG_CPU_RK3399=y +CONFIG_CPU_RK3562=y +CONFIG_CPU_RK3568=y +CONFIG_CPU_RK3588=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=m +CONFIG_CRYPTO_DEV_ROCKCHIP=m +CONFIG_CRYPTO_DEV_ROCKCHIP_DEV=m +CONFIG_CRYPTO_SHA1_ARM64_CE=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_DEVFREQ_EVENT_ROCKCHIP_NOCP=m +CONFIG_DMABUF_HEAPS_CMA=m +CONFIG_DMABUF_HEAPS_SYSTEM=m +CONFIG_DRAGONRISE_FF=y +CONFIG_DRM_DISPLAY_CONNECTOR=m +CONFIG_DRM_DW_HDMI_CEC=m +CONFIG_DRM_DW_HDMI_I2S_AUDIO=m +CONFIG_DRM_MAXIM_MAX96745=m +CONFIG_DRM_MAXIM_MAX96755F=m +CONFIG_DRM_PANEL_SIMPLE=m +CONFIG_DRM_RK1000_TVE=m +CONFIG_DRM_RK630_TVE=m +CONFIG_DRM_ROCKCHIP=m +CONFIG_DRM_ROCKCHIP_RK618=m +CONFIG_DRM_ROCKCHIP_RK628=m +CONFIG_DRM_ROHM_BU18XL82=m +CONFIG_DRM_SII902X=m +CONFIG_DTC_SYMBOLS=y +# CONFIG_DWMAC_GENERIC is not set +# CONFIG_DWMAC_IPQ806X is not set +# CONFIG_DWMAC_QCOM_ETHQOS is not set +# CONFIG_DWMAC_SUN8I is not set +# CONFIG_DWMAC_SUNXI is not set +CONFIG_DW_WATCHDOG=m +CONFIG_FIQ_DEBUGGER=m +CONFIG_FIQ_DEBUGGER_CONSOLE=y +CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y +CONFIG_FIQ_DEBUGGER_NO_SLEEP=y +CONFIG_FIQ_DEBUGGER_TRUST_ZONE=y +CONFIG_GPIO_ROCKCHIP=m +CONFIG_GREENASIA_FF=y +CONFIG_GSENSOR_DEVICE=m +CONFIG_GS_DA223=m +CONFIG_GS_KXTJ9=m +CONFIG_GS_LIS3DH=m +CONFIG_GS_LSM303D=m +CONFIG_GS_MC3230=m +CONFIG_GS_MMA7660=m +CONFIG_GS_MMA8452=m +CONFIG_GS_MXC6655XA=m +CONFIG_GS_SC7660=m +CONFIG_GS_SC7A20=m +CONFIG_GS_SC7A30=m +CONFIG_GYROSCOPE_DEVICE=m +CONFIG_GYRO_EWTSA=m +CONFIG_GYRO_L3G20D=m +CONFIG_GYRO_L3G4200D=m +CONFIG_GYRO_LSM330=m +CONFIG_GYRO_MPU6500=m +CONFIG_GYRO_MPU6880=m +CONFIG_HALL_DEVICE=m +CONFIG_HID_A4TECH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_ALPS=m +CONFIG_HID_APPLEIR=m +CONFIG_HID_AUREAL=m +CONFIG_HID_BELKIN=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_HID_EMS_FF=m +CONFIG_HID_EZKEY=m +CONFIG_HID_GREENASIA=m +CONFIG_HID_GYRATION=m +CONFIG_HID_HOLTEK=m +CONFIG_HID_ICADE=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LENOVO=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_NTRIG=m +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PRIMAX=m +CONFIG_HID_SAITEK=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_STEELSERIES=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_HID_TIVO=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_WALTOP=m +CONFIG_HID_ZEROPLUS=m +CONFIG_HID_ZYDACRON=m +CONFIG_HS_MH248=m +CONFIG_HW_RANDOM_ROCKCHIP=m +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_GPIO=m +CONFIG_I2C_HID_OF=m +CONFIG_I2C_RK3X=m +CONFIG_IEP=m +CONFIG_IIO_BUFFER_CB=m +CONFIG_INPUT_RK805_PWRKEY=m +CONFIG_KEYBOARD_ADC=m +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_RGB13H=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LIGHT_DEVICE=m +CONFIG_LSM330_ACC=m +CONFIG_LS_CM3217=m +CONFIG_LS_CM3218=m +CONFIG_LS_STK3410=m +CONFIG_LS_UCS14620=m +CONFIG_MALI_BIFROST=m +CONFIG_MALI_BIFROST_DEBUG=y +CONFIG_MALI_BIFROST_EXPERT=y +CONFIG_MALI_CSF_SUPPORT=y +CONFIG_MALI_PLATFORM_NAME="rk" +CONFIG_MALI_PWRSOFT_765=y +CONFIG_MFD_RK618=m +CONFIG_MFD_RK628=m +CONFIG_MFD_RK630_I2C=m +CONFIG_MFD_RK806_SPI=m +CONFIG_MFD_RK808=m +CONFIG_MMC_DW=m +CONFIG_MMC_DW_ROCKCHIP=m +CONFIG_MMC_SDHCI_OF_ARASAN=m +CONFIG_MMC_SDHCI_OF_DWCMSHC=m +CONFIG_MPU6500_ACC=m +CONFIG_MPU6880_ACC=m +CONFIG_NVMEM_ROCKCHIP_EFUSE=m +CONFIG_NVMEM_ROCKCHIP_OTP=m +CONFIG_OPTEE=m +CONFIG_PANTHERLORD_FF=y +CONFIG_PCIEASPM_EXT=m +CONFIG_PCIE_DW_ROCKCHIP=m +CONFIG_PCIE_ROCKCHIP_HOST=m +CONFIG_PHY_ROCKCHIP_CSI2_DPHY=m +CONFIG_PHY_ROCKCHIP_DP=m +CONFIG_PHY_ROCKCHIP_EMMC=m +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=m +CONFIG_PHY_ROCKCHIP_INNO_HDMI=m +CONFIG_PHY_ROCKCHIP_INNO_USB2=m +CONFIG_PHY_ROCKCHIP_INNO_USB3=m +CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=m +CONFIG_PHY_ROCKCHIP_NANENG_EDP=m +CONFIG_PHY_ROCKCHIP_PCIE=m +CONFIG_PHY_ROCKCHIP_SAMSUNG_DCPHY=m +CONFIG_PHY_ROCKCHIP_SAMSUNG_HDPTX=m +CONFIG_PHY_ROCKCHIP_SAMSUNG_HDPTX_HDMI=m +CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=m +CONFIG_PHY_ROCKCHIP_TYPEC=m +CONFIG_PHY_ROCKCHIP_USB=m +CONFIG_PHY_ROCKCHIP_USBDP=m +CONFIG_PINCTRL_RK805=m +CONFIG_PINCTRL_RK806=m +CONFIG_PINCTRL_ROCKCHIP=m +CONFIG_PL330_DMA=m +CONFIG_PROXIMITY_DEVICE=m +CONFIG_PS_STK3410=m +CONFIG_PS_UCS14620=m +CONFIG_PWM_ROCKCHIP=m +CONFIG_REGULATOR_ACT8865=m +CONFIG_REGULATOR_FAN53555=m +CONFIG_REGULATOR_GPIO=m +CONFIG_REGULATOR_LP8752=m +CONFIG_REGULATOR_MP8865=m +CONFIG_REGULATOR_PWM=m +CONFIG_REGULATOR_RK806=m +CONFIG_REGULATOR_RK808=m +CONFIG_REGULATOR_RK860X=m +CONFIG_REGULATOR_TPS65132=m +CONFIG_REGULATOR_WL2868C=m +CONFIG_REGULATOR_XZ3216=m +CONFIG_RFKILL_RK=m +CONFIG_RK_CONSOLE_THREAD=y +CONFIG_RK_HEADSET=m +CONFIG_ROCKCHIP_ANALOGIX_DP=y +CONFIG_ROCKCHIP_CDN_DP=y +CONFIG_ROCKCHIP_CPUINFO=m +CONFIG_ROCKCHIP_DEBUG=m +CONFIG_ROCKCHIP_DW_DP=y +CONFIG_ROCKCHIP_DW_HDCP2=m +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y +CONFIG_ROCKCHIP_GRF=m +CONFIG_ROCKCHIP_INNO_HDMI=y +CONFIG_ROCKCHIP_IODOMAIN=m +CONFIG_ROCKCHIP_IOMMU=m +CONFIG_ROCKCHIP_IPA=m +CONFIG_ROCKCHIP_LVDS=y +CONFIG_ROCKCHIP_MPP_AV1DEC=y +CONFIG_ROCKCHIP_MPP_IEP2=y +CONFIG_ROCKCHIP_MPP_JPGDEC=y +CONFIG_ROCKCHIP_MPP_RKVDEC=y +CONFIG_ROCKCHIP_MPP_RKVDEC2=y +CONFIG_ROCKCHIP_MPP_RKVENC=y +CONFIG_ROCKCHIP_MPP_RKVENC2=y +CONFIG_ROCKCHIP_MPP_SERVICE=m +CONFIG_ROCKCHIP_MPP_VDPU1=y +CONFIG_ROCKCHIP_MPP_VDPU2=y +CONFIG_ROCKCHIP_MPP_VEPU1=y +CONFIG_ROCKCHIP_MPP_VEPU2=y +CONFIG_ROCKCHIP_MULTI_RGA=m +CONFIG_ROCKCHIP_OPP=m +CONFIG_ROCKCHIP_PHY=m +CONFIG_ROCKCHIP_PM_DOMAINS=m +CONFIG_ROCKCHIP_PVTM=m +CONFIG_ROCKCHIP_RAM_VENDOR_STORAGE=m +CONFIG_ROCKCHIP_REMOTECTL=m +CONFIG_ROCKCHIP_REMOTECTL_PWM=m +CONFIG_ROCKCHIP_RGB=y +CONFIG_ROCKCHIP_RKNPU=m +CONFIG_ROCKCHIP_SARADC=m +CONFIG_ROCKCHIP_SIP=m +CONFIG_ROCKCHIP_SUSPEND_MODE=m +CONFIG_ROCKCHIP_SYSTEM_MONITOR=m +CONFIG_ROCKCHIP_THERMAL=m +CONFIG_ROCKCHIP_TIMER=m +CONFIG_ROCKCHIP_VENDOR_STORAGE=m +CONFIG_ROCKCHIP_VENDOR_STORAGE_UPDATE_LOADER=y +CONFIG_RTC_DRV_HYM8563=m +CONFIG_RTC_DRV_RK808=m +CONFIG_SENSOR_DEVICE=m +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_SND_SIMPLE_CARD=m +CONFIG_SND_SOC_AW883XX=m +CONFIG_SND_SOC_BT_SCO=m +CONFIG_SND_SOC_CX2072X=m +CONFIG_SND_SOC_DUMMY_CODEC=m +CONFIG_SND_SOC_ES7202=m +CONFIG_SND_SOC_ES7210=m +CONFIG_SND_SOC_ES7243E=m +CONFIG_SND_SOC_ES8311=m +CONFIG_SND_SOC_ES8316=m +CONFIG_SND_SOC_ES8323=m +CONFIG_SND_SOC_ES8326=m +CONFIG_SND_SOC_ES8396=m +CONFIG_SND_SOC_RK3328=m +CONFIG_SND_SOC_RK817=m +CONFIG_SND_SOC_RK_CODEC_DIGITAL=m +CONFIG_SND_SOC_RK_DSM=m +CONFIG_SND_SOC_ROCKCHIP=m +CONFIG_SND_SOC_ROCKCHIP_HDMI=m +CONFIG_SND_SOC_ROCKCHIP_I2S=m +CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=m +CONFIG_SND_SOC_ROCKCHIP_MULTICODECS=m +CONFIG_SND_SOC_ROCKCHIP_PDM=m +CONFIG_SND_SOC_ROCKCHIP_SAI=m +CONFIG_SND_SOC_ROCKCHIP_SPDIF=m +CONFIG_SND_SOC_ROCKCHIP_SPDIFRX=m +CONFIG_SND_SOC_RT5640=m +CONFIG_SND_SOC_SPDIF=m +CONFIG_SPI_ROCKCHIP=m +CONFIG_SPI_SPIDEV=m +CONFIG_STMMAC_ETH=m +CONFIG_SW_SYNC=m +CONFIG_SYSCON_REBOOT_MODE=m +CONFIG_TEE=m +CONFIG_TEST_POWER=m +CONFIG_TOUCHSCREEN_ELAN5515=m +CONFIG_TOUCHSCREEN_GSL3673=m +CONFIG_TOUCHSCREEN_GSLX680_PAD=m +CONFIG_TOUCHSCREEN_GT1X=m +CONFIG_TYPEC_FUSB302=m +CONFIG_TYPEC_HUSB311=m +CONFIG_UCS12CM0=m +CONFIG_USB_DWC2=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_OHCI_HCD=m +# CONFIG_USB_OHCI_HCD_PCI is not set +CONFIG_USB_OHCI_HCD_PLATFORM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_VIDEO_AW36518=m +CONFIG_VIDEO_AW8601=m +CONFIG_VIDEO_CN3927V=m +CONFIG_VIDEO_DW9714=m +CONFIG_VIDEO_FP5510=m +CONFIG_VIDEO_GC2145=m +CONFIG_VIDEO_GC2385=m +CONFIG_VIDEO_GC4C33=m +CONFIG_VIDEO_GC8034=m +CONFIG_VIDEO_IMX415=m +CONFIG_VIDEO_LT6911UXC=m +CONFIG_VIDEO_LT7911D=m +CONFIG_VIDEO_NVP6188=m +CONFIG_VIDEO_OV02B10=m +CONFIG_VIDEO_OV13850=m +CONFIG_VIDEO_OV13855=m +CONFIG_VIDEO_OV50C40=m +CONFIG_VIDEO_OV5695=m +CONFIG_VIDEO_OV8858=m +CONFIG_VIDEO_RK628_BT1120=m +CONFIG_VIDEO_RK628_CSI=m +CONFIG_VIDEO_RK_IRCUT=m +CONFIG_VIDEO_ROCKCHIP_CIF=m +CONFIG_VIDEO_ROCKCHIP_HDMIRX=m +CONFIG_VIDEO_ROCKCHIP_ISP=m +CONFIG_VIDEO_ROCKCHIP_ISPP=m +CONFIG_VIDEO_ROCKCHIP_RKISP1=m +CONFIG_VIDEO_S5K3L6XX=m +CONFIG_VIDEO_S5KJN1=m +CONFIG_VIDEO_SGM3784=m +CONFIG_VIDEO_THCV244=m +CONFIG_VL6180=m +CONFIG_WIFI_BUILD_MODULE=y +CONFIG_WL_ROCKCHIP=m +# CONFIG_USB_DUMMY_HCD is not set diff --git a/arch/arm64/geniezone/Makefile b/arch/arm64/geniezone/Makefile new file mode 100644 index 000000000000..0e4f1087f9de --- /dev/null +++ b/arch/arm64/geniezone/Makefile @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: GPL-2.0-only +# +# Main Makefile for gzvm, this one includes drivers/virt/geniezone/Makefile +# +include $(srctree)/drivers/virt/geniezone/Makefile + +gzvm-y += vm.o vcpu.o vgic.o + +obj-$(CONFIG_MTK_GZVM) += gzvm.o diff --git a/arch/arm64/geniezone/gzvm_arch_common.h b/arch/arm64/geniezone/gzvm_arch_common.h new file mode 100644 index 000000000000..f57f799bbbc9 --- /dev/null +++ b/arch/arm64/geniezone/gzvm_arch_common.h @@ -0,0 +1,114 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2023 MediaTek Inc. + */ + +#ifndef __GZVM_ARCH_COMMON_H__ +#define __GZVM_ARCH_COMMON_H__ + +#include + +enum { + GZVM_FUNC_CREATE_VM = 0, + GZVM_FUNC_DESTROY_VM = 1, + GZVM_FUNC_CREATE_VCPU = 2, + GZVM_FUNC_DESTROY_VCPU = 3, + GZVM_FUNC_SET_MEMREGION = 4, + GZVM_FUNC_RUN = 5, + GZVM_FUNC_GET_ONE_REG = 8, + GZVM_FUNC_SET_ONE_REG = 9, + GZVM_FUNC_IRQ_LINE = 10, + GZVM_FUNC_CREATE_DEVICE = 11, + GZVM_FUNC_PROBE = 12, + GZVM_FUNC_ENABLE_CAP = 13, + GZVM_FUNC_INFORM_EXIT = 14, + GZVM_FUNC_MEMREGION_PURPOSE = 15, + GZVM_FUNC_SET_DTB_CONFIG = 16, + GZVM_FUNC_MAP_GUEST = 17, + GZVM_FUNC_MAP_GUEST_BLOCK = 18, + NR_GZVM_FUNC, +}; + +#define SMC_ENTITY_MTK 59 +#define GZVM_FUNCID_START (0x1000) +#define GZVM_HCALL_ID(func) \ + ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, ARM_SMCCC_SMC_32, \ + SMC_ENTITY_MTK, (GZVM_FUNCID_START + (func))) + +#define MT_HVC_GZVM_CREATE_VM GZVM_HCALL_ID(GZVM_FUNC_CREATE_VM) +#define MT_HVC_GZVM_DESTROY_VM GZVM_HCALL_ID(GZVM_FUNC_DESTROY_VM) +#define MT_HVC_GZVM_CREATE_VCPU GZVM_HCALL_ID(GZVM_FUNC_CREATE_VCPU) +#define MT_HVC_GZVM_DESTROY_VCPU GZVM_HCALL_ID(GZVM_FUNC_DESTROY_VCPU) +#define MT_HVC_GZVM_SET_MEMREGION GZVM_HCALL_ID(GZVM_FUNC_SET_MEMREGION) +#define MT_HVC_GZVM_RUN GZVM_HCALL_ID(GZVM_FUNC_RUN) +#define MT_HVC_GZVM_GET_ONE_REG GZVM_HCALL_ID(GZVM_FUNC_GET_ONE_REG) +#define MT_HVC_GZVM_SET_ONE_REG GZVM_HCALL_ID(GZVM_FUNC_SET_ONE_REG) +#define MT_HVC_GZVM_IRQ_LINE GZVM_HCALL_ID(GZVM_FUNC_IRQ_LINE) +#define MT_HVC_GZVM_CREATE_DEVICE GZVM_HCALL_ID(GZVM_FUNC_CREATE_DEVICE) +#define MT_HVC_GZVM_PROBE GZVM_HCALL_ID(GZVM_FUNC_PROBE) +#define MT_HVC_GZVM_ENABLE_CAP GZVM_HCALL_ID(GZVM_FUNC_ENABLE_CAP) +#define MT_HVC_GZVM_INFORM_EXIT GZVM_HCALL_ID(GZVM_FUNC_INFORM_EXIT) +#define MT_HVC_GZVM_MEMREGION_PURPOSE GZVM_HCALL_ID(GZVM_FUNC_MEMREGION_PURPOSE) +#define MT_HVC_GZVM_SET_DTB_CONFIG GZVM_HCALL_ID(GZVM_FUNC_SET_DTB_CONFIG) +#define MT_HVC_GZVM_MAP_GUEST GZVM_HCALL_ID(GZVM_FUNC_MAP_GUEST) +#define MT_HVC_GZVM_MAP_GUEST_BLOCK GZVM_HCALL_ID(GZVM_FUNC_MAP_GUEST_BLOCK) + +#define GIC_V3_NR_LRS 16 + +/** + * gzvm_hypcall_wrapper() - the wrapper for hvc calls + * @a0-a7: arguments passed in registers 0 to 7 + * @res: result values from registers 0 to 3 + * + * Return: The wrapper helps caller to convert geniezone errno to Linux errno. + */ +static inline int gzvm_hypcall_wrapper(unsigned long a0, unsigned long a1, + unsigned long a2, unsigned long a3, + unsigned long a4, unsigned long a5, + unsigned long a6, unsigned long a7, + struct arm_smccc_res *res) +{ + arm_smccc_hvc(a0, a1, a2, a3, a4, a5, a6, a7, res); + return gzvm_err_to_errno(res->a0); +} + +static inline u16 get_vmid_from_tuple(unsigned int tuple) +{ + return (u16)(tuple >> 16); +} + +static inline u16 get_vcpuid_from_tuple(unsigned int tuple) +{ + return (u16)(tuple & 0xffff); +} + +/** + * struct gzvm_vcpu_hwstate: Sync architecture state back to host for handling + * @nr_lrs: The available LRs(list registers) in Soc. + * @__pad: add an explicit '__u32 __pad;' in the middle to make it clear + * what the actual layout is. + * @lr: The array of LRs(list registers). + * + * - Keep the same layout of hypervisor data struct. + * - Sync list registers back for acking virtual device interrupt status. + */ +struct gzvm_vcpu_hwstate { + __le32 nr_lrs; + __le32 __pad; + __le64 lr[GIC_V3_NR_LRS]; +}; + +static inline unsigned int +assemble_vm_vcpu_tuple(u16 vmid, u16 vcpuid) +{ + return ((unsigned int)vmid << 16 | vcpuid); +} + +static inline void +disassemble_vm_vcpu_tuple(unsigned int tuple, u16 *vmid, u16 *vcpuid) +{ + *vmid = get_vmid_from_tuple(tuple); + *vcpuid = get_vcpuid_from_tuple(tuple); +} + +#endif /* __GZVM_ARCH_COMMON_H__ */ diff --git a/arch/arm64/geniezone/vcpu.c b/arch/arm64/geniezone/vcpu.c new file mode 100644 index 000000000000..f6670bd77ad6 --- /dev/null +++ b/arch/arm64/geniezone/vcpu.c @@ -0,0 +1,80 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2023 MediaTek Inc. + */ + +#include +#include +#include + +#include +#include +#include "gzvm_arch_common.h" + +int gzvm_arch_vcpu_update_one_reg(struct gzvm_vcpu *vcpu, __u64 reg_id, + bool is_write, __u64 *data) +{ + struct arm_smccc_res res; + unsigned long a1; + int ret; + + a1 = assemble_vm_vcpu_tuple(vcpu->gzvm->vm_id, vcpu->vcpuid); + if (!is_write) { + ret = gzvm_hypcall_wrapper(MT_HVC_GZVM_GET_ONE_REG, + a1, reg_id, 0, 0, 0, 0, 0, &res); + if (ret == 0) + *data = res.a1; + } else { + ret = gzvm_hypcall_wrapper(MT_HVC_GZVM_SET_ONE_REG, + a1, reg_id, *data, 0, 0, 0, 0, &res); + } + + return ret; +} + +int gzvm_arch_vcpu_run(struct gzvm_vcpu *vcpu, __u64 *exit_reason) +{ + struct arm_smccc_res res; + unsigned long a1; + int ret; + + a1 = assemble_vm_vcpu_tuple(vcpu->gzvm->vm_id, vcpu->vcpuid); + ret = gzvm_hypcall_wrapper(MT_HVC_GZVM_RUN, a1, 0, 0, 0, 0, 0, + 0, &res); + *exit_reason = res.a1; + return ret; +} + +int gzvm_arch_destroy_vcpu(u16 vm_id, int vcpuid) +{ + struct arm_smccc_res res; + unsigned long a1; + + a1 = assemble_vm_vcpu_tuple(vm_id, vcpuid); + gzvm_hypcall_wrapper(MT_HVC_GZVM_DESTROY_VCPU, a1, 0, 0, 0, 0, 0, 0, + &res); + + return 0; +} + +/** + * gzvm_arch_create_vcpu() - Call smc to gz hypervisor to create vcpu + * @vm_id: vm id + * @vcpuid: vcpu id + * @run: Virtual address of vcpu->run + * + * Return: The wrapper helps caller to convert geniezone errno to Linux errno. + */ +int gzvm_arch_create_vcpu(u16 vm_id, int vcpuid, void *run) +{ + struct arm_smccc_res res; + unsigned long a1, a2; + int ret; + + a1 = assemble_vm_vcpu_tuple(vm_id, vcpuid); + a2 = (__u64)virt_to_phys(run); + ret = gzvm_hypcall_wrapper(MT_HVC_GZVM_CREATE_VCPU, a1, a2, 0, 0, 0, 0, + 0, &res); + + return ret; +} diff --git a/arch/arm64/geniezone/vgic.c b/arch/arm64/geniezone/vgic.c new file mode 100644 index 000000000000..122125f7f8d4 --- /dev/null +++ b/arch/arm64/geniezone/vgic.c @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2023 MediaTek Inc. + */ + +#include +#include +#include +#include "gzvm_arch_common.h" + +int gzvm_arch_create_device(u16 vm_id, struct gzvm_create_device *gzvm_dev) +{ + struct arm_smccc_res res; + + return gzvm_hypcall_wrapper(MT_HVC_GZVM_CREATE_DEVICE, vm_id, + virt_to_phys(gzvm_dev), 0, 0, 0, 0, 0, + &res); +} + +/** + * gzvm_arch_inject_irq() - Inject virtual interrupt to a VM + * @gzvm: Pointer to struct gzvm + * @vcpu_idx: vcpu index, only valid if PPI + * @irq: *SPI* irq number (excluding offset value `32`) + * @level: 1 if true else 0 + * + * Return: + * * 0 - Success. + * * Negative - Failure. + */ +int gzvm_arch_inject_irq(struct gzvm *gzvm, unsigned int vcpu_idx, + u32 irq, bool level) +{ + unsigned long a1 = assemble_vm_vcpu_tuple(gzvm->vm_id, vcpu_idx); + struct arm_smccc_res res; + + /* + * VMM's virtual device irq number starts from 0, but ARM's shared peripheral + * interrupt number starts from 32. hypervisor adds offset 32 + */ + gzvm_hypcall_wrapper(MT_HVC_GZVM_IRQ_LINE, a1, irq, level, + 0, 0, 0, 0, &res); + if (res.a0) { + pr_err("Failed to set IRQ level (%d) to irq#%u on vcpu %d with ret=%d\n", + level, irq, vcpu_idx, (int)res.a0); + return -EFAULT; + } + + return 0; +} diff --git a/arch/arm64/geniezone/vm.c b/arch/arm64/geniezone/vm.c new file mode 100644 index 000000000000..683244f76994 --- /dev/null +++ b/arch/arm64/geniezone/vm.c @@ -0,0 +1,380 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2023 MediaTek Inc. + */ + +#include +#include +#include + +#include +#include +#include "gzvm_arch_common.h" + +#define PAR_PA47_MASK ((((1UL << 48) - 1) >> 12) << 12) + +int gzvm_arch_inform_exit(u16 vm_id) +{ + struct arm_smccc_res res; + + arm_smccc_hvc(MT_HVC_GZVM_INFORM_EXIT, vm_id, 0, 0, 0, 0, 0, 0, &res); + if (res.a0 == 0) + return 0; + + return -ENXIO; +} + +int gzvm_arch_probe(void) +{ + struct arm_smccc_res res; + + arm_smccc_hvc(MT_HVC_GZVM_PROBE, 0, 0, 0, 0, 0, 0, 0, &res); + if (res.a0) + return -ENXIO; + + return 0; +} + +int gzvm_arch_set_memregion(u16 vm_id, size_t buf_size, + phys_addr_t region) +{ + struct arm_smccc_res res; + + return gzvm_hypcall_wrapper(MT_HVC_GZVM_SET_MEMREGION, vm_id, + buf_size, region, 0, 0, 0, 0, &res); +} + +static int gzvm_cap_vm_gpa_size(void __user *argp) +{ + __u64 value = CONFIG_ARM64_PA_BITS; + + if (copy_to_user(argp, &value, sizeof(__u64))) + return -EFAULT; + + return 0; +} + +int gzvm_arch_check_extension(struct gzvm *gzvm, __u64 cap, void __user *argp) +{ + int ret; + + switch (cap) { + case GZVM_CAP_PROTECTED_VM: { + __u64 success = 1; + + if (copy_to_user(argp, &success, sizeof(__u64))) + return -EFAULT; + + return 0; + } + case GZVM_CAP_VM_GPA_SIZE: { + ret = gzvm_cap_vm_gpa_size(argp); + return ret; + } + default: + break; + } + + return -EOPNOTSUPP; +} + +/** + * gzvm_arch_create_vm() - create vm + * @vm_type: VM type. Only supports Linux VM now. + * + * Return: + * * positive value - VM ID + * * -ENOMEM - Memory not enough for storing VM data + */ +int gzvm_arch_create_vm(unsigned long vm_type) +{ + struct arm_smccc_res res; + int ret; + + ret = gzvm_hypcall_wrapper(MT_HVC_GZVM_CREATE_VM, vm_type, 0, 0, 0, 0, + 0, 0, &res); + return ret ? ret : res.a1; +} + +int gzvm_arch_destroy_vm(u16 vm_id) +{ + struct arm_smccc_res res; + + return gzvm_hypcall_wrapper(MT_HVC_GZVM_DESTROY_VM, vm_id, 0, 0, 0, 0, + 0, 0, &res); +} + +int gzvm_arch_memregion_purpose(struct gzvm *gzvm, + struct gzvm_userspace_memory_region *mem) +{ + struct arm_smccc_res res; + + return gzvm_hypcall_wrapper(MT_HVC_GZVM_MEMREGION_PURPOSE, gzvm->vm_id, + mem->guest_phys_addr, mem->memory_size, + mem->flags, 0, 0, 0, &res); +} + +int gzvm_arch_set_dtb_config(struct gzvm *gzvm, struct gzvm_dtb_config *cfg) +{ + struct arm_smccc_res res; + + return gzvm_hypcall_wrapper(MT_HVC_GZVM_SET_DTB_CONFIG, gzvm->vm_id, + cfg->dtb_addr, cfg->dtb_size, 0, 0, 0, 0, + &res); +} + +static int gzvm_vm_arch_enable_cap(struct gzvm *gzvm, + struct gzvm_enable_cap *cap, + struct arm_smccc_res *res) +{ + return gzvm_hypcall_wrapper(MT_HVC_GZVM_ENABLE_CAP, gzvm->vm_id, + cap->cap, cap->args[0], cap->args[1], + cap->args[2], cap->args[3], cap->args[4], + res); +} + +/** + * gzvm_vm_ioctl_get_pvmfw_size() - Get pvmfw size from hypervisor, return + * in x1, and return to userspace in args + * @gzvm: Pointer to struct gzvm. + * @cap: Pointer to struct gzvm_enable_cap. + * @argp: Pointer to struct gzvm_enable_cap in user space. + * + * Return: + * * 0 - Succeed + * * -EINVAL - Hypervisor return invalid results + * * -EFAULT - Fail to copy back to userspace buffer + */ +static int gzvm_vm_ioctl_get_pvmfw_size(struct gzvm *gzvm, + struct gzvm_enable_cap *cap, + void __user *argp) +{ + struct arm_smccc_res res = {0}; + + if (gzvm_vm_arch_enable_cap(gzvm, cap, &res) != 0) + return -EINVAL; + + cap->args[1] = res.a1; + if (copy_to_user(argp, cap, sizeof(*cap))) + return -EFAULT; + + return 0; +} + +/** + * fill_constituents() - Populate pa to buffer until full + * @consti: Pointer to struct mem_region_addr_range. + * @consti_cnt: Constituent count. + * @max_nr_consti: Maximum number of constituent count. + * @gfn: Guest frame number. + * @total_pages: Total page numbers. + * @slot: Pointer to struct gzvm_memslot. + * + * Return: how many pages we've fill in, negative if error + */ +static int fill_constituents(struct mem_region_addr_range *consti, + int *consti_cnt, int max_nr_consti, u64 gfn, + u32 total_pages, struct gzvm_memslot *slot) +{ + u64 pfn, prev_pfn, gfn_end; + int nr_pages = 1; + int i = 0; + + if (unlikely(total_pages == 0)) + return -EINVAL; + gfn_end = gfn + total_pages; + + /* entry 0 */ + if (gzvm_gfn_to_pfn_memslot(slot, gfn, &pfn) != 0) + return -EFAULT; + consti[0].address = PFN_PHYS(pfn); + consti[0].pg_cnt = 1; + gfn++; + prev_pfn = pfn; + + while (i < max_nr_consti && gfn < gfn_end) { + if (gzvm_gfn_to_pfn_memslot(slot, gfn, &pfn) != 0) + return -EFAULT; + if (pfn == (prev_pfn + 1)) { + consti[i].pg_cnt++; + } else { + i++; + if (i >= max_nr_consti) + break; + consti[i].address = PFN_PHYS(pfn); + consti[i].pg_cnt = 1; + } + prev_pfn = pfn; + gfn++; + nr_pages++; + } + if (i != max_nr_consti) + i++; + *consti_cnt = i; + + return nr_pages; +} + +/** + * populate_mem_region() - Iterate all mem slot and populate pa to buffer until it's full + * @gzvm: Pointer to struct gzvm. + * + * Return: 0 if it is successful, negative if error + */ +static int populate_mem_region(struct gzvm *gzvm) +{ + int slot_cnt = 0; + + while (slot_cnt < GZVM_MAX_MEM_REGION && gzvm->memslot[slot_cnt].npages != 0) { + struct gzvm_memslot *memslot = &gzvm->memslot[slot_cnt]; + struct gzvm_memory_region_ranges *region; + int max_nr_consti, remain_pages; + u64 gfn, gfn_end; + u32 buf_size; + + buf_size = PAGE_SIZE * 2; + region = alloc_pages_exact(buf_size, GFP_KERNEL); + if (!region) + return -ENOMEM; + + max_nr_consti = (buf_size - sizeof(*region)) / + sizeof(struct mem_region_addr_range); + + region->slot = memslot->slot_id; + remain_pages = memslot->npages; + gfn = memslot->base_gfn; + gfn_end = gfn + remain_pages; + + while (gfn < gfn_end) { + int nr_pages; + + nr_pages = fill_constituents(region->constituents, + ®ion->constituent_cnt, + max_nr_consti, gfn, + remain_pages, memslot); + + if (nr_pages < 0) { + pr_err("Failed to fill constituents\n"); + free_pages_exact(region, buf_size); + return -EFAULT; + } + + region->gpa = PFN_PHYS(gfn); + region->total_pages = nr_pages; + remain_pages -= nr_pages; + gfn += nr_pages; + + if (gzvm_arch_set_memregion(gzvm->vm_id, buf_size, + virt_to_phys(region))) { + pr_err("Failed to register memregion to hypervisor\n"); + free_pages_exact(region, buf_size); + return -EFAULT; + } + } + free_pages_exact(region, buf_size); + ++slot_cnt; + } + return 0; +} + +/** + * gzvm_vm_ioctl_cap_pvm() - Proceed GZVM_CAP_PROTECTED_VM's subcommands + * @gzvm: Pointer to struct gzvm. + * @cap: Pointer to struct gzvm_enable_cap. + * @argp: Pointer to struct gzvm_enable_cap in user space. + * + * Return: + * * 0 - Succeed + * * -EINVAL - Invalid subcommand or arguments + */ +static int gzvm_vm_ioctl_cap_pvm(struct gzvm *gzvm, + struct gzvm_enable_cap *cap, + void __user *argp) +{ + struct arm_smccc_res res = {0}; + int ret; + + switch (cap->args[0]) { + case GZVM_CAP_PVM_SET_PVMFW_GPA: + fallthrough; + case GZVM_CAP_PVM_SET_PROTECTED_VM: + /* + * If the hypervisor doesn't support block-based demand paging, we + * populate memory in advance to improve performance for protected VM. + */ + if (gzvm->demand_page_gran == PAGE_SIZE) + populate_mem_region(gzvm); + ret = gzvm_vm_arch_enable_cap(gzvm, cap, &res); + return ret; + case GZVM_CAP_PVM_GET_PVMFW_SIZE: + ret = gzvm_vm_ioctl_get_pvmfw_size(gzvm, cap, argp); + return ret; + default: + break; + } + + return -EINVAL; +} + +int gzvm_vm_ioctl_arch_enable_cap(struct gzvm *gzvm, + struct gzvm_enable_cap *cap, + void __user *argp) +{ + struct arm_smccc_res res = {0}; + int ret; + + switch (cap->cap) { + case GZVM_CAP_PROTECTED_VM: + ret = gzvm_vm_ioctl_cap_pvm(gzvm, cap, argp); + return ret; + case GZVM_CAP_BLOCK_BASED_DEMAND_PAGING: + ret = gzvm_vm_arch_enable_cap(gzvm, cap, &res); + return ret; + default: + break; + } + + return -EINVAL; +} + +/** + * gzvm_hva_to_pa_arch() - converts hva to pa with arch-specific way + * @hva: Host virtual address. + * + * Return: GZVM_PA_ERR_BAD for translation error + */ +u64 gzvm_hva_to_pa_arch(u64 hva) +{ + unsigned long flags; + u64 par; + + local_irq_save(flags); + asm volatile("at s1e1r, %0" :: "r" (hva)); + isb(); + par = read_sysreg_par(); + local_irq_restore(flags); + + if (par & SYS_PAR_EL1_F) + return GZVM_PA_ERR_BAD; + par = par & PAR_PA47_MASK; + if (!par) + return GZVM_PA_ERR_BAD; + return par; +} + +int gzvm_arch_map_guest(u16 vm_id, int memslot_id, u64 pfn, u64 gfn, + u64 nr_pages) +{ + struct arm_smccc_res res; + + return gzvm_hypcall_wrapper(MT_HVC_GZVM_MAP_GUEST, vm_id, memslot_id, + pfn, gfn, nr_pages, 0, 0, &res); +} + +int gzvm_arch_map_guest_block(u16 vm_id, int memslot_id, u64 gfn, u64 nr_pages) +{ + struct arm_smccc_res res; + + return gzvm_hypcall_wrapper(MT_HVC_GZVM_MAP_GUEST_BLOCK, vm_id, + memslot_id, gfn, nr_pages, 0, 0, 0, &res); +} diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h index 6755a0d9f3f0..60e834c85ea7 100644 --- a/arch/arm64/include/asm/kvm_asm.h +++ b/arch/arm64/include/asm/kvm_asm.h @@ -259,6 +259,8 @@ extern unsigned long kvm_nvhe_sym(kvm_arm_hyp_percpu_base)[]; DECLARE_KVM_NVHE_SYM(__per_cpu_start); DECLARE_KVM_NVHE_SYM(__per_cpu_end); +extern unsigned long kvm_nvhe_sym(kvm_arm_hyp_host_fp_state)[]; + DECLARE_KVM_HYP_SYM(__bp_harden_hyp_vecs); #define __bp_harden_hyp_vecs CHOOSE_HYP_SYM(__bp_harden_hyp_vecs) diff --git a/arch/arm64/include/asm/kvm_pgtable.h b/arch/arm64/include/asm/kvm_pgtable.h index ce85d55fb981..56e5edcc5aee 100644 --- a/arch/arm64/include/asm/kvm_pgtable.h +++ b/arch/arm64/include/asm/kvm_pgtable.h @@ -234,7 +234,7 @@ enum kvm_pgtable_prot { #define KVM_HOST_S2_DEFAULT_MMIO_PTE \ (KVM_HOST_S2_DEFAULT_MEM_PTE | \ - KVM_PTE_LEAF_ATTR_HI_S2_XN) + FIELD_PREP(KVM_PTE_LEAF_ATTR_HI_S2_XN, KVM_PTE_LEAF_ATTR_HI_S2_XN_XN)) #define PAGE_HYP KVM_PGTABLE_PROT_RW #define PAGE_HYP_EXEC (KVM_PGTABLE_PROT_R | KVM_PGTABLE_PROT_X) diff --git a/arch/arm64/include/asm/kvm_pkvm.h b/arch/arm64/include/asm/kvm_pkvm.h index a1459fbe2d46..3077c2514a6d 100644 --- a/arch/arm64/include/asm/kvm_pkvm.h +++ b/arch/arm64/include/asm/kvm_pkvm.h @@ -414,10 +414,4 @@ static inline size_t pkvm_host_fp_state_size(void) return sizeof(struct user_fpsimd_state); } -static inline unsigned long hyp_host_fp_pages(unsigned long nr_cpus) -{ - return PAGE_ALIGN(size_mul(nr_cpus, pkvm_host_fp_state_size())) >> - PAGE_SHIFT; -} - #endif /* __ARM64_KVM_PKVM_H__ */ diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h index ffaa502a4d42..ab2dc568e7a1 100644 --- a/arch/arm64/include/asm/memory.h +++ b/arch/arm64/include/asm/memory.h @@ -113,13 +113,21 @@ #define OVERFLOW_STACK_SIZE SZ_4K +#if PAGE_SIZE == SZ_4K +#define NVHE_STACK_SHIFT (PAGE_SHIFT + 1) +#else +#define NVHE_STACK_SHIFT PAGE_SHIFT +#endif + +#define NVHE_STACK_SIZE (UL(1) << NVHE_STACK_SHIFT) + /* * With the minimum frame size of [x29, x30], exactly half the combined * sizes of the hyp and overflow stacks is the maximum size needed to * save the unwinded stacktrace; plus an additional entry to delimit the * end. */ -#define NVHE_STACKTRACE_SIZE ((OVERFLOW_STACK_SIZE + PAGE_SIZE) / 2 + sizeof(long)) +#define NVHE_STACKTRACE_SIZE ((OVERFLOW_STACK_SIZE + NVHE_STACK_SIZE) / 2 + sizeof(long)) /* * Alignment of kernel segments (e.g. .text, .data). diff --git a/arch/arm64/include/asm/stacktrace/nvhe.h b/arch/arm64/include/asm/stacktrace/nvhe.h index 25ab83a315a7..141f6d0e119a 100644 --- a/arch/arm64/include/asm/stacktrace/nvhe.h +++ b/arch/arm64/include/asm/stacktrace/nvhe.h @@ -47,7 +47,7 @@ static inline void kvm_nvhe_unwind_init(struct unwind_state *state, DECLARE_KVM_NVHE_PER_CPU(unsigned long [OVERFLOW_STACK_SIZE/sizeof(long)], overflow_stack); DECLARE_KVM_NVHE_PER_CPU(struct kvm_nvhe_stacktrace_info, kvm_stacktrace_info); -DECLARE_PER_CPU(unsigned long, kvm_arm_hyp_stack_page); +DECLARE_PER_CPU(unsigned long, kvm_arm_hyp_stack_base); void kvm_nvhe_dump_backtrace(unsigned long hyp_offset); diff --git a/arch/arm64/kernel/image-vars.h b/arch/arm64/kernel/image-vars.h index 1e57ebccac9d..f91c36004f45 100644 --- a/arch/arm64/kernel/image-vars.h +++ b/arch/arm64/kernel/image-vars.h @@ -113,7 +113,7 @@ KVM_NVHE_ALIAS(__hyp_data_start); KVM_NVHE_ALIAS(__hyp_data_end); KVM_NVHE_ALIAS(__hyp_rodata_start); KVM_NVHE_ALIAS(__hyp_rodata_end); -#ifdef CONFIG_FTRACE +#ifdef CONFIG_TRACING KVM_NVHE_ALIAS(__hyp_event_ids_start); KVM_NVHE_ALIAS(__hyp_event_ids_end); #endif diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c index 817d788cd866..7c93307bd960 100644 --- a/arch/arm64/kernel/topology.c +++ b/arch/arm64/kernel/topology.c @@ -22,6 +22,8 @@ #include #include +#include + #ifdef CONFIG_ACPI static bool __init acpi_cpu_is_threaded(int cpu) { @@ -151,6 +153,11 @@ static void amu_scale_freq_tick(void) { u64 prev_core_cnt, prev_const_cnt; u64 core_cnt, const_cnt, scale; + bool use_amu_fie = true; + + trace_android_vh_use_amu_fie(&use_amu_fie); + if(!use_amu_fie) + return; prev_const_cnt = this_cpu_read(arch_const_cycles_prev); prev_core_cnt = this_cpu_read(arch_core_cycles_prev); diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index c9fb5aff6a06..dd187094ab40 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -50,7 +50,7 @@ static enum kvm_mode kvm_mode = KVM_MODE_DEFAULT; DECLARE_KVM_HYP_PER_CPU(unsigned long, kvm_hyp_vector); -DEFINE_PER_CPU(unsigned long, kvm_arm_hyp_stack_page); +DEFINE_PER_CPU(unsigned long, kvm_arm_hyp_stack_base); DECLARE_KVM_NVHE_PER_CPU(struct kvm_nvhe_init_params, kvm_init_params); DECLARE_KVM_NVHE_PER_CPU(int, hyp_cpu_number); @@ -1646,6 +1646,11 @@ static unsigned long nvhe_percpu_order(void) return size ? get_order(size) : 0; } +static inline size_t pkvm_host_fp_state_order(void) +{ + return get_order(pkvm_host_fp_state_size()); +} + /* A lookup table holding the hypervisor VA for each vector slot */ static void *hyp_spectre_vector_selector[BP_HARDEN_EL2_SLOTS]; @@ -2008,8 +2013,10 @@ static void teardown_hyp_mode(void) free_hyp_pgds(); for_each_possible_cpu(cpu) { - free_page(per_cpu(kvm_arm_hyp_stack_page, cpu)); + free_pages(per_cpu(kvm_arm_hyp_stack_base, cpu), NVHE_STACK_SHIFT - PAGE_SHIFT); free_pages(kvm_nvhe_sym(kvm_arm_hyp_percpu_base)[cpu], nvhe_percpu_order()); + free_pages(kvm_nvhe_sym(kvm_arm_hyp_host_fp_state)[cpu], + pkvm_host_fp_state_order()); } } @@ -2096,6 +2103,48 @@ static int kvm_hyp_init_protection(u32 hyp_va_bits) return 0; } +static int init_pkvm_host_fp_state(void) +{ + int cpu; + + if (!is_protected_kvm_enabled()) + return 0; + + /* Allocate pages for protected-mode host-fp state. */ + for_each_possible_cpu(cpu) { + struct page *page; + unsigned long addr; + + page = alloc_pages(GFP_KERNEL, pkvm_host_fp_state_order()); + if (!page) + return -ENOMEM; + + addr = (unsigned long)page_address(page); + kvm_nvhe_sym(kvm_arm_hyp_host_fp_state)[cpu] = addr; + } + + /* + * Don't map the pages in hyp since these are only used in protected + * mode, which will (re)create its own mapping when initialized. + */ + + return 0; +} + +/* + * Finalizes the initialization of hyp mode, once everything else is initialized + * and the initialziation process cannot fail. + */ +static void finalize_init_hyp_mode(void) +{ + int cpu; + + for_each_possible_cpu(cpu) { + kvm_nvhe_sym(kvm_arm_hyp_host_fp_state)[cpu] = + kern_hyp_va(kvm_nvhe_sym(kvm_arm_hyp_host_fp_state)[cpu]); + } +} + /** * Inits Hyp-mode on all online CPUs */ @@ -2123,15 +2172,15 @@ static int init_hyp_mode(void) * Allocate stack pages for Hypervisor-mode */ for_each_possible_cpu(cpu) { - unsigned long stack_page; + unsigned long stack_base; - stack_page = __get_free_page(GFP_KERNEL); - if (!stack_page) { + stack_base = __get_free_pages(GFP_KERNEL, NVHE_STACK_SHIFT - PAGE_SHIFT); + if (!stack_base) { err = -ENOMEM; goto out_err; } - per_cpu(kvm_arm_hyp_stack_page, cpu) = stack_page; + per_cpu(kvm_arm_hyp_stack_base, cpu) = stack_base; } /* @@ -2207,7 +2256,7 @@ static int init_hyp_mode(void) */ for_each_possible_cpu(cpu) { struct kvm_nvhe_init_params *params = per_cpu_ptr_nvhe_sym(kvm_init_params, cpu); - char *stack_page = (char *)per_cpu(kvm_arm_hyp_stack_page, cpu); + char *stack_base = (char *)per_cpu(kvm_arm_hyp_stack_base, cpu); unsigned long hyp_addr; /* @@ -2215,7 +2264,7 @@ static int init_hyp_mode(void) * and guard page. The allocation is also aligned based on * the order of its size. */ - err = hyp_alloc_private_va_range(PAGE_SIZE * 2, &hyp_addr); + err = hyp_alloc_private_va_range(NVHE_STACK_SIZE * 2, &hyp_addr); if (err) { kvm_err("Cannot allocate hyp stack guard page\n"); goto out_err; @@ -2226,12 +2275,12 @@ static int init_hyp_mode(void) * at the higher address and leave the lower guard page * unbacked. * - * Any valid stack address now has the PAGE_SHIFT bit as 1 + * Any valid stack address now has the NVHE_STACK_SHIFT bit as 1 * and addresses corresponding to the guard page have the - * PAGE_SHIFT bit as 0 - this is used for overflow detection. + * NVHE_STACK_SHIFT bit as 0 - this is used for overflow detection. */ - err = __create_hyp_mappings(hyp_addr + PAGE_SIZE, PAGE_SIZE, - __pa(stack_page), PAGE_HYP); + err = __create_hyp_mappings(hyp_addr + NVHE_STACK_SIZE, NVHE_STACK_SIZE, + __pa(stack_base), PAGE_HYP); if (err) { kvm_err("Cannot map hyp stack\n"); goto out_err; @@ -2243,9 +2292,9 @@ static int init_hyp_mode(void) * __hyp_pa() won't do the right thing there, since the stack * has been mapped in the flexible private VA space. */ - params->stack_pa = __pa(stack_page); + params->stack_pa = __pa(stack_base); - params->stack_hyp_va = hyp_addr + (2 * PAGE_SIZE); + params->stack_hyp_va = hyp_addr + (2 * NVHE_STACK_SIZE); } for_each_possible_cpu(cpu) { @@ -2263,6 +2312,10 @@ static int init_hyp_mode(void) cpu_prepare_hyp_mode(cpu); } + err = init_pkvm_host_fp_state(); + if (err) + goto out_err; + kvm_hyp_init_symbols(); /* TODO: Real .h interface */ @@ -2421,6 +2474,13 @@ int kvm_arch_init(void *opaque) kvm_info("Hyp mode initialized successfully\n"); } + /* + * This should be called after initialization is done and failure isn't + * possible anymore. + */ + if (!in_hyp_mode) + finalize_init_hyp_mode(); + return 0; out_hyp: diff --git a/arch/arm64/kvm/hyp/hyp-constants.c b/arch/arm64/kvm/hyp/hyp-constants.c index 9fe0d2a624ef..5c4a797a701f 100644 --- a/arch/arm64/kvm/hyp/hyp-constants.c +++ b/arch/arm64/kvm/hyp/hyp-constants.c @@ -10,7 +10,7 @@ int main(void) DEFINE(STRUCT_HYP_PAGE_SIZE, sizeof(struct hyp_page)); DEFINE(PKVM_HYP_VM_SIZE, sizeof(struct pkvm_hyp_vm)); DEFINE(PKVM_HYP_VCPU_SIZE, sizeof(struct pkvm_hyp_vcpu)); -#ifdef CONFIG_FTRACE +#ifdef CONFIG_TRACING DEFINE(STRUCT_HYP_BUFFER_PAGE_SIZE, sizeof(struct hyp_buffer_page)); #endif return 0; diff --git a/arch/arm64/kvm/hyp/include/nvhe/pkvm.h b/arch/arm64/kvm/hyp/include/nvhe/pkvm.h index b11fd818fff9..943cf7fc7124 100644 --- a/arch/arm64/kvm/hyp/include/nvhe/pkvm.h +++ b/arch/arm64/kvm/hyp/include/nvhe/pkvm.h @@ -82,8 +82,6 @@ struct pkvm_hyp_vm { struct pkvm_hyp_vcpu *vcpus[]; }; -extern void *host_fp_state; - static inline struct pkvm_hyp_vm * pkvm_hyp_vcpu_to_hyp_vm(struct pkvm_hyp_vcpu *hyp_vcpu) { @@ -107,7 +105,6 @@ extern phys_addr_t pvmfw_base; extern phys_addr_t pvmfw_size; void pkvm_hyp_vm_table_init(void *tbl); -void pkvm_hyp_host_fp_init(void *host_fp); int __pkvm_init_vm(struct kvm *host_kvm, unsigned long vm_hva, unsigned long pgd_hva, unsigned long last_ran_hva); diff --git a/arch/arm64/kvm/hyp/nvhe/host.S b/arch/arm64/kvm/hyp/nvhe/host.S index b6c0188c4b35..fa91c890033e 100644 --- a/arch/arm64/kvm/hyp/nvhe/host.S +++ b/arch/arm64/kvm/hyp/nvhe/host.S @@ -154,12 +154,12 @@ SYM_FUNC_END(__host_hvc) /* * Test whether the SP has overflowed, without corrupting a GPR. - * nVHE hypervisor stacks are aligned so that the PAGE_SHIFT bit + * nVHE hypervisor stacks are aligned so that the NVHE_STACK_SHIFT bit * of SP should always be 1. */ add sp, sp, x0 // sp' = sp + x0 sub x0, sp, x0 // x0' = sp' - x0 = (sp + x0) - x0 = sp - tbz x0, #PAGE_SHIFT, .L__hyp_sp_overflow\@ + tbz x0, #NVHE_STACK_SHIFT, .L__hyp_sp_overflow\@ sub x0, sp, x0 // x0'' = sp' - x0' = (sp + x0) - sp = x0 sub sp, sp, x0 // sp'' = sp' - x0 = (sp + x0) - x0 = sp diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c index 48e20ad5ff38..995c3a840010 100644 --- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c +++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c @@ -1383,11 +1383,15 @@ static void handle_host_smc(struct kvm_cpu_context *host_ctxt) handled = kvm_host_ffa_handler(host_ctxt); if (!handled && smp_load_acquire(&default_host_smc_handler)) handled = default_host_smc_handler(host_ctxt); - if (!handled) - __kvm_hyp_host_forward_smc(host_ctxt); trace_host_smc(func_id, !handled); + if (!handled) { + trace_hyp_exit(); + __kvm_hyp_host_forward_smc(host_ctxt); + trace_hyp_enter(); + } + /* SMC was trapped, move ELR past the current PC. */ kvm_skip_host_instr(); } diff --git a/arch/arm64/kvm/hyp/nvhe/mem_protect.c b/arch/arm64/kvm/hyp/nvhe/mem_protect.c index 2aeb5a8a7baa..7dcfe1bf5c69 100644 --- a/arch/arm64/kvm/hyp/nvhe/mem_protect.c +++ b/arch/arm64/kvm/hyp/nvhe/mem_protect.c @@ -1048,9 +1048,20 @@ static int __host_check_page_state_range(u64 addr, u64 size, static int __host_set_page_state_range(u64 addr, u64 size, enum pkvm_page_state state) { + bool update_iommu = true; enum kvm_pgtable_prot prot = pkvm_mkstate(PKVM_HOST_MEM_PROT, state); - return host_stage2_idmap_locked(addr, size, prot, true); + /* + * Sharing and unsharing host pages shouldn't change the IOMMU page tables, + * so avoid extra page tables walks for the IOMMU. + * HOWEVER THIS WILL NOT WORK WHEN DEVICE ASSIGNMENT IS SUPPORTED AS THE GUEST + * MIGHT HAVE ACCESS TO DMA. + * but as Android-14 doesn't support device assignment this should be fine. + */ + if ((state == PKVM_PAGE_OWNED) || (state == PKVM_PAGE_SHARED_OWNED)) + update_iommu = false; + + return host_stage2_idmap_locked(addr, size, prot, update_iommu); } static int host_request_owned_transition(u64 *completer_addr, @@ -2038,6 +2049,7 @@ static int restrict_host_page_perms(u64 addr, kvm_pte_t pte, u32 level, enum kvm } #define MODULE_PROT_ALLOWLIST (KVM_PGTABLE_PROT_RWX | \ + KVM_PGTABLE_PROT_DEVICE |\ KVM_PGTABLE_PROT_NC | \ KVM_PGTABLE_PROT_PXN | \ KVM_PGTABLE_PROT_UXN) diff --git a/arch/arm64/kvm/hyp/nvhe/pkvm.c b/arch/arm64/kvm/hyp/nvhe/pkvm.c index bb25de654934..b3acb60a2d6c 100644 --- a/arch/arm64/kvm/hyp/nvhe/pkvm.c +++ b/arch/arm64/kvm/hyp/nvhe/pkvm.c @@ -41,17 +41,15 @@ static DEFINE_PER_CPU(struct pkvm_hyp_vcpu *, loaded_hyp_vcpu); * * Only valid when (fp_state == FP_STATE_GUEST_OWNED) in the hyp vCPU structure. */ -void *host_fp_state; +unsigned long __ro_after_init kvm_arm_hyp_host_fp_state[NR_CPUS]; static void *__get_host_fpsimd_bytes(void) { - void *state = host_fp_state + - size_mul(pkvm_host_fp_state_size(), hyp_smp_processor_id()); - - if (state < host_fp_state) - return NULL; - - return state; + /* + * The addresses in this array have been converted to hyp addresses + * in finalize_init_hyp_mode(). + */ + return (void *)kvm_arm_hyp_host_fp_state[hyp_smp_processor_id()]; } struct user_fpsimd_state *get_host_fpsimd_state(struct kvm_vcpu *vcpu) @@ -295,12 +293,6 @@ void pkvm_hyp_vm_table_init(void *tbl) vm_table = tbl; } -void pkvm_hyp_host_fp_init(void *host_fp) -{ - WARN_ON(host_fp_state); - host_fp_state = host_fp; -} - /* * Return the hyp vm structure corresponding to the handle. */ diff --git a/arch/arm64/kvm/hyp/nvhe/setup.c b/arch/arm64/kvm/hyp/nvhe/setup.c index c0f502c5edb2..fb942785388e 100644 --- a/arch/arm64/kvm/hyp/nvhe/setup.c +++ b/arch/arm64/kvm/hyp/nvhe/setup.c @@ -34,7 +34,6 @@ static void *vm_table_base; static void *hyp_pgt_base; static void *host_s2_pgt_base; static void *ffa_proxy_pages; -static void *hyp_host_fp_base; static struct kvm_pgtable_mm_ops pkvm_pgtable_mm_ops; static struct hyp_pool hpool; @@ -69,10 +68,21 @@ static int divide_memory_pool(void *virt, unsigned long size) if (!ffa_proxy_pages) return -ENOMEM; - nr_pages = hyp_host_fp_pages(hyp_nr_cpus); - hyp_host_fp_base = hyp_early_alloc_contig(nr_pages); - if (!hyp_host_fp_base) - return -ENOMEM; + return 0; +} + +static int create_hyp_host_fp_mappings(void) +{ + void *start, *end; + int ret, i; + + for (i = 0; i < hyp_nr_cpus; i++) { + start = (void *)kern_hyp_va(kvm_arm_hyp_host_fp_state[i]); + end = start + PAGE_ALIGN(pkvm_host_fp_state_size()); + ret = pkvm_create_mappings(start, end, PAGE_HYP); + if (ret) + return ret; + } return 0; } @@ -140,7 +150,7 @@ static int recreate_hyp_mappings(phys_addr_t phys, unsigned long size, * and guard page. The allocation is also aligned based on * the order of its size. */ - ret = pkvm_alloc_private_va_range(PAGE_SIZE * 2, &hyp_addr); + ret = pkvm_alloc_private_va_range(NVHE_STACK_SIZE * 2, &hyp_addr); if (ret) return ret; @@ -149,21 +159,23 @@ static int recreate_hyp_mappings(phys_addr_t phys, unsigned long size, * at the higher address and leave the lower guard page * unbacked. * - * Any valid stack address now has the PAGE_SHIFT bit as 1 + * Any valid stack address now has the NVHE_STACK_SHIFT bit as 1 * and addresses corresponding to the guard page have the - * PAGE_SHIFT bit as 0 - this is used for overflow detection. + * NVHE_STACK_SHIFT bit as 0 - this is used for overflow detection. */ hyp_spin_lock(&pkvm_pgd_lock); - ret = kvm_pgtable_hyp_map(&pkvm_pgtable, hyp_addr + PAGE_SIZE, - PAGE_SIZE, params->stack_pa, PAGE_HYP); + ret = kvm_pgtable_hyp_map(&pkvm_pgtable, hyp_addr + NVHE_STACK_SIZE, + NVHE_STACK_SIZE, params->stack_pa, PAGE_HYP); hyp_spin_unlock(&pkvm_pgd_lock); if (ret) return ret; /* Update stack_hyp_va to end of the stack's private VA range */ - params->stack_hyp_va = hyp_addr + (2 * PAGE_SIZE); + params->stack_hyp_va = hyp_addr + (2 * NVHE_STACK_SIZE); } + create_hyp_host_fp_mappings(); + /* * Map the host sections RO in the hypervisor, but transfer the * ownership from the host to the hypervisor itself to make sure they @@ -405,7 +417,6 @@ void __noreturn __pkvm_init_finalise(void) goto out; pkvm_hyp_vm_table_init(vm_table_base); - pkvm_hyp_host_fp_init(hyp_host_fp_base); out: /* * We tail-called to here from handle___pkvm_init() and will not return, diff --git a/arch/arm64/kvm/hyp/nvhe/stacktrace.c b/arch/arm64/kvm/hyp/nvhe/stacktrace.c index ed6b58b19cfa..5b6eeab1a774 100644 --- a/arch/arm64/kvm/hyp/nvhe/stacktrace.c +++ b/arch/arm64/kvm/hyp/nvhe/stacktrace.c @@ -28,7 +28,7 @@ static void hyp_prepare_backtrace(unsigned long fp, unsigned long pc) struct kvm_nvhe_stacktrace_info *stacktrace_info = this_cpu_ptr(&kvm_stacktrace_info); struct kvm_nvhe_init_params *params = this_cpu_ptr(&kvm_init_params); - stacktrace_info->stack_base = (unsigned long)(params->stack_hyp_va - PAGE_SIZE); + stacktrace_info->stack_base = (unsigned long)(params->stack_hyp_va - NVHE_STACK_SIZE); stacktrace_info->overflow_stack_base = (unsigned long)this_cpu_ptr(overflow_stack); stacktrace_info->fp = fp; stacktrace_info->pc = pc; @@ -54,7 +54,7 @@ static struct stack_info stackinfo_get_hyp(void) { struct kvm_nvhe_init_params *params = this_cpu_ptr(&kvm_init_params); unsigned long high = params->stack_hyp_va; - unsigned long low = high - PAGE_SIZE; + unsigned long low = high - NVHE_STACK_SIZE; return (struct stack_info) { .low = low, diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c index 9e2f5a5dc379..807e66c05709 100644 --- a/arch/arm64/kvm/mmu.c +++ b/arch/arm64/kvm/mmu.c @@ -701,7 +701,7 @@ static int get_user_mapping_size(struct kvm *kvm, u64 addr) static bool stage2_force_pte_cb(u64 addr, u64 end, enum kvm_pgtable_prot prot) { - return true; + return false; } static bool stage2_pte_is_counted(kvm_pte_t pte, u32 level) diff --git a/arch/arm64/kvm/pkvm.c b/arch/arm64/kvm/pkvm.c index b601ff98e9f2..1cff760b8f23 100644 --- a/arch/arm64/kvm/pkvm.c +++ b/arch/arm64/kvm/pkvm.c @@ -173,7 +173,6 @@ void __init kvm_hyp_reserve(void) hyp_mem_pages += hyp_vm_table_pages(); hyp_mem_pages += hyp_vmemmap_pages(STRUCT_HYP_PAGE_SIZE); hyp_mem_pages += hyp_ffa_proxy_pages(); - hyp_mem_pages += hyp_host_fp_pages(num_possible_cpus()); /* * Try to allocate a PMD-aligned region to reduce TLB pressure once @@ -504,10 +503,6 @@ static int __init finalize_pkvm(void) if (pkvm_load_early_modules()) pkvm_firmware_rmem_clear(); - /* If no DMA protection. */ - if (!pkvm_iommu_finalized()) - pkvm_firmware_rmem_clear(); - /* * Exclude HYP sections from kmemleak so that they don't get peeked * at, which would end badly once inaccessible. @@ -516,6 +511,12 @@ static int __init finalize_pkvm(void) kmemleak_free_part(__hyp_data_start, __hyp_data_end - __hyp_data_start); kmemleak_free_part_phys(hyp_mem_base, hyp_mem_size); + flush_deferred_probe_now(); + + /* If no DMA protection. */ + if (!pkvm_iommu_finalized()) + pkvm_firmware_rmem_clear(); + ret = pkvm_drop_host_privileges(); if (ret) { pr_err("Failed to de-privilege the host kernel: %d\n", ret); diff --git a/arch/arm64/kvm/stacktrace.c b/arch/arm64/kvm/stacktrace.c index 3ace5b75813b..b9744a932920 100644 --- a/arch/arm64/kvm/stacktrace.c +++ b/arch/arm64/kvm/stacktrace.c @@ -50,7 +50,7 @@ static struct stack_info stackinfo_get_hyp(void) struct kvm_nvhe_stacktrace_info *stacktrace_info = this_cpu_ptr_nvhe_sym(kvm_stacktrace_info); unsigned long low = (unsigned long)stacktrace_info->stack_base; - unsigned long high = low + PAGE_SIZE; + unsigned long high = low + NVHE_STACK_SIZE; return (struct stack_info) { .low = low, @@ -60,8 +60,8 @@ static struct stack_info stackinfo_get_hyp(void) static struct stack_info stackinfo_get_hyp_kern_va(void) { - unsigned long low = (unsigned long)*this_cpu_ptr(&kvm_arm_hyp_stack_page); - unsigned long high = low + PAGE_SIZE; + unsigned long low = (unsigned long)*this_cpu_ptr(&kvm_arm_hyp_stack_base); + unsigned long high = low + NVHE_STACK_SIZE; return (struct stack_info) { .low = low, diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index 6307a0128691..34a85587c4f4 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -90,6 +90,7 @@ CONFIG_MODULE_SIG_PROTECT=y CONFIG_BLK_DEV_ZONED=y CONFIG_BLK_DEV_THROTTLING=y CONFIG_BLK_CGROUP_IOCOST=y +CONFIG_BLK_CGROUP_IOPRIO=y CONFIG_BLK_INLINE_ENCRYPTION=y CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y CONFIG_IOSCHED_BFQ=y diff --git a/block/blk-ioc.c b/block/blk-ioc.c index 63fc02042408..25dd4db11121 100644 --- a/block/blk-ioc.c +++ b/block/blk-ioc.c @@ -77,6 +77,10 @@ static void ioc_destroy_icq(struct io_cq *icq) struct elevator_type *et = q->elevator->type; lockdep_assert_held(&ioc->lock); + lockdep_assert_held(&q->queue_lock); + + if (icq->flags & ICQ_DESTROYED) + return; radix_tree_delete(&ioc->icq_tree, icq->q->id); hlist_del_init(&icq->ioc_node); @@ -128,12 +132,7 @@ static void ioc_release_fn(struct work_struct *work) spin_lock(&q->queue_lock); spin_lock(&ioc->lock); - /* - * The icq may have been destroyed when the ioc lock - * was released. - */ - if (!(icq->flags & ICQ_DESTROYED)) - ioc_destroy_icq(icq); + ioc_destroy_icq(icq); spin_unlock(&q->queue_lock); rcu_read_unlock(); @@ -171,23 +170,20 @@ static bool ioc_delay_free(struct io_context *ioc) */ void ioc_clear_queue(struct request_queue *q) { - LIST_HEAD(icq_list); - spin_lock_irq(&q->queue_lock); - list_splice_init(&q->icq_list, &icq_list); - spin_unlock_irq(&q->queue_lock); - - rcu_read_lock(); - while (!list_empty(&icq_list)) { + while (!list_empty(&q->icq_list)) { struct io_cq *icq = - list_entry(icq_list.next, struct io_cq, q_node); + list_first_entry(&q->icq_list, struct io_cq, q_node); - spin_lock_irq(&icq->ioc->lock); - if (!(icq->flags & ICQ_DESTROYED)) - ioc_destroy_icq(icq); - spin_unlock_irq(&icq->ioc->lock); + /* + * Other context won't hold ioc lock to wait for queue_lock, see + * details in ioc_release_fn(). + */ + spin_lock(&icq->ioc->lock); + ioc_destroy_icq(icq); + spin_unlock(&icq->ioc->lock); } - rcu_read_unlock(); + spin_unlock_irq(&q->queue_lock); } #else /* CONFIG_BLK_ICQ */ static inline void ioc_exit_icqs(struct io_context *ioc) diff --git a/block/blk-ioprio.c b/block/blk-ioprio.c index 8bb6b8eba4ce..4eba569d4823 100644 --- a/block/blk-ioprio.c +++ b/block/blk-ioprio.c @@ -23,25 +23,28 @@ /** * enum prio_policy - I/O priority class policy. * @POLICY_NO_CHANGE: (default) do not modify the I/O priority class. - * @POLICY_NONE_TO_RT: modify IOPRIO_CLASS_NONE into IOPRIO_CLASS_RT. + * @POLICY_PROMOTE_TO_RT: modify no-IOPRIO_CLASS_RT to IOPRIO_CLASS_RT. * @POLICY_RESTRICT_TO_BE: modify IOPRIO_CLASS_NONE and IOPRIO_CLASS_RT into * IOPRIO_CLASS_BE. * @POLICY_ALL_TO_IDLE: change the I/O priority class into IOPRIO_CLASS_IDLE. + * @POLICY_NONE_TO_RT: an alias for POLICY_PROMOTE_TO_RT. * * See also . */ enum prio_policy { POLICY_NO_CHANGE = 0, - POLICY_NONE_TO_RT = 1, + POLICY_PROMOTE_TO_RT = 1, POLICY_RESTRICT_TO_BE = 2, POLICY_ALL_TO_IDLE = 3, + POLICY_NONE_TO_RT = 4, }; static const char *policy_name[] = { [POLICY_NO_CHANGE] = "no-change", - [POLICY_NONE_TO_RT] = "none-to-rt", + [POLICY_PROMOTE_TO_RT] = "promote-to-rt", [POLICY_RESTRICT_TO_BE] = "restrict-to-be", [POLICY_ALL_TO_IDLE] = "idle", + [POLICY_NONE_TO_RT] = "none-to-rt", }; static struct blkcg_policy ioprio_policy; @@ -189,6 +192,20 @@ void blkcg_set_ioprio(struct bio *bio) if (!blkcg || blkcg->prio_policy == POLICY_NO_CHANGE) return; + if (blkcg->prio_policy == POLICY_PROMOTE_TO_RT || + blkcg->prio_policy == POLICY_NONE_TO_RT) { + /* + * For RT threads, the default priority level is 4 because + * task_nice is 0. By promoting non-RT io-priority to RT-class + * and default level 4, those requests that are already + * RT-class but need a higher io-priority can use ioprio_set() + * to achieve this. + */ + if (IOPRIO_PRIO_CLASS(bio->bi_ioprio) != IOPRIO_CLASS_RT) + bio->bi_ioprio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_RT, 4); + return; + } + /* * Except for IOPRIO_CLASS_NONE, higher I/O priority numbers * correspond to a lower priority. Hence, the max_t() below selects diff --git a/build.config.rockchip b/build.config.rockchip new file mode 100644 index 000000000000..c3d089708674 --- /dev/null +++ b/build.config.rockchip @@ -0,0 +1,15 @@ +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.aarch64 + +BUILD_INITRAMFS=1 +LZ4_RAMDISK=1 +DEFCONFIG=rockchip_gki_defconfig +FRAGMENT_CONFIG=${KERNEL_DIR}/arch/arm64/configs/rockchip_gki.fragment +PRE_DEFCONFIG_CMDS="KCONFIG_CONFIG=${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/gki_defconfig ${ROOT_DIR}/${FRAGMENT_CONFIG}" +POST_DEFCONFIG_CMDS="rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG}" + +DTC_INCLUDE=${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/boot/dts/rockchip + +FILES="${FILES} +arch/arm64/boot/dts/rockchip/rk3588*.dtb +" diff --git a/crypto/fips140-defs.h b/crypto/fips140-defs.h index 9005f9513308..d3f62e3c3f37 100644 --- a/crypto/fips140-defs.h +++ b/crypto/fips140-defs.h @@ -17,9 +17,9 @@ * related macros to be expanded as they would be for built-in code; e.g., * module_init() adds the function to the .initcalls section of the binary. * - * The .c file that contains the real module_init() for fips140.ko is then - * responsible for redefining MODULE, and the real module_init() is responsible - * for executing all the initcalls that were collected into .initcalls. + * The .c files that contain the real module_init, module license, and module + * parameters for fips140.ko are then responsible for redefining MODULE. The + * real module_init executes all initcalls that were collected into .initcalls. */ #undef MODULE diff --git a/crypto/fips140-eval-testing.c b/crypto/fips140-eval-testing.c index ea3cd653983a..fdc786884d11 100644 --- a/crypto/fips140-eval-testing.c +++ b/crypto/fips140-eval-testing.c @@ -20,6 +20,14 @@ __inline_maybe_unused notrace #undef BUILD_FIPS140_KO +/* + * Since this .c file contains real module parameters for fips140.ko, it needs + * to be compiled normally, so undo the hacks that were done in fips140-defs.h. + */ +#define MODULE +#undef KBUILD_MODFILE +#undef __DISABLE_EXPORTS + #include #include #include diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 28b57e733977..766b9d5dffb1 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -1761,6 +1761,7 @@ static void binder_free_transaction(struct binder_transaction *t) { struct binder_proc *target_proc = t->to_proc; + trace_android_vh_free_oem_binder_struct(t); if (target_proc) { binder_inner_proc_lock(target_proc); target_proc->outstanding_txns--; @@ -2931,6 +2932,7 @@ static int binder_proc_transaction(struct binder_transaction *t, bool pending_async = false; struct binder_transaction *t_outdated = NULL; bool skip = false; + bool enqueue_task = true; BUG_ON(!node); binder_node_lock(node); @@ -2970,7 +2972,10 @@ static int binder_proc_transaction(struct binder_transaction *t, binder_transaction_priority(thread, t, node); binder_enqueue_thread_work_ilocked(thread, &t->work); } else if (!pending_async) { - binder_enqueue_work_ilocked(&t->work, &proc->todo); + trace_android_vh_binder_special_task(t, proc, thread, + &t->work, &proc->todo, !oneway, &enqueue_task); + if (enqueue_task) + binder_enqueue_work_ilocked(&t->work, &proc->todo); } else { if ((t->flags & TF_UPDATE_TXN) && proc->is_frozen) { t_outdated = binder_find_outdated_transaction_ilocked(t, @@ -2983,7 +2988,10 @@ static int binder_proc_transaction(struct binder_transaction *t, proc->outstanding_txns--; } } - binder_enqueue_work_ilocked(&t->work, &node->async_todo); + trace_android_vh_binder_special_task(t, proc, thread, + &t->work, &node->async_todo, !oneway, &enqueue_task); + if (enqueue_task) + binder_enqueue_work_ilocked(&t->work, &node->async_todo); } trace_android_vh_binder_proc_transaction_finish(proc, t, @@ -3460,6 +3468,7 @@ static void binder_transaction(struct binder_proc *proc, t->buffer->target_node = target_node; t->buffer->clear_on_free = !!(t->flags & TF_CLEAR_BUF); trace_binder_transaction_alloc_buf(t->buffer); + trace_android_vh_alloc_oem_binder_struct(tr, t, target_proc); if (binder_alloc_copy_user_to_buffer( &target_proc->alloc, @@ -3964,6 +3973,9 @@ binder_free_buf(struct binder_proc *proc, struct binder_thread *thread, struct binder_buffer *buffer, bool is_failure) { + bool enqueue_task = true; + + trace_android_vh_binder_free_buf(proc, thread, buffer); binder_inner_proc_lock(proc); if (buffer->transaction) { buffer->transaction->buffer = NULL; @@ -3983,8 +3995,10 @@ binder_free_buf(struct binder_proc *proc, if (!w) { buf_node->has_async_transaction = false; } else { - binder_enqueue_work_ilocked( - w, &proc->todo); + trace_android_vh_binder_special_task(NULL, proc, thread, w, + &proc->todo, false, &enqueue_task); + if (enqueue_task) + binder_enqueue_work_ilocked(w, &proc->todo); binder_wakeup_proc_ilocked(proc); } binder_node_inner_unlock(buf_node); @@ -4926,6 +4940,7 @@ skip: ptr += trsize; trace_binder_transaction_received(t); + trace_android_vh_binder_transaction_received(t, proc, thread, cmd); binder_stat_br(proc, thread, cmd); binder_debug(BINDER_DEBUG_TRANSACTION, "%d:%d %s %d %d:%d, cmd %u size %zd-%zd ptr %016llx-%016llx\n", diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 229f0e712f93..289b292d7958 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -67,7 +67,8 @@ #include #include #include - +#include +#include /* * Export tracepoints that act as a bare tracehook (ie: have no trace event * associated with them) to allow external modules to probe them. @@ -85,6 +86,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_set_priority); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_restore_priority); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_wakeup_ilocked); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_send_sig_info); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_killed_process); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_wait_start); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_wait_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_init); @@ -136,6 +138,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_update_sysfs); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_command); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_compl_command); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_set_task); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cgroup_force_kthread_migration); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_syscall_prctl_finished); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_uic_command); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_tm_command); @@ -180,12 +183,14 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_record_mutex_lock_starttime); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_record_rtmutex_lock_starttime); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_record_rwsem_lock_starttime); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_record_pcpu_rwsem_starttime); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_percpu_rwsem_wq_add); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_module_core_rw_nx); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_module_init_rw_nx); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_module_permit_before_init); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_module_permit_after_init); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_is_initialized); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_shmem_get_folio); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_record_pcpu_rwsem_time_early); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_mmap_file); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_file_open); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_bpf_syscall); @@ -249,6 +254,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_readahead_gfp_mask); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_mutex_list_add); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_unlock_slowpath); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake_finish); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_adjust_alloc_flags); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_looper_state_registered); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_thread_read); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_free_proc); @@ -320,3 +326,28 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_look_around); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_look_around_migrate_folio); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_test_clear_look_around_ref); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_scan_type); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_swappiness); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_signal_whether_wake); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_check); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freeze_whether_wake); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_use_amu_fie); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_scan_abort_check_wmarks); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_oem_binder_struct); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_transaction_received); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_oem_binder_struct); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_special_task); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_free_buf); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_compaction_exit); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_compaction_try_to_compact_pages_exit); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_alloc_pages_direct_reclaim_enter); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_alloc_pages_direct_reclaim_exit); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_alloc_pages_may_oom_exit); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_vmscan_kswapd_done); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_compaction_begin); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_compaction_end); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_bus_iommu_probe); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rmqueue); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_resume_begin); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_resume_end); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_early_resume_begin); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_get_folio); diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c index 2cdade8aa933..148e24b91cf1 100644 --- a/drivers/base/arch_topology.c +++ b/drivers/base/arch_topology.c @@ -34,6 +34,12 @@ static DEFINE_PER_CPU(u32, freq_factor) = 1; static bool supports_scale_freq_counters(const struct cpumask *cpus) { + bool use_amu_fie = true; + + trace_android_vh_use_amu_fie(&use_amu_fie); + if (!use_amu_fie) + return false; + return cpumask_subset(cpus, &scale_freq_counters_mask); } diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 380a53b6aee8..6f118289db7d 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -761,6 +761,29 @@ void wait_for_device_probe(void) } EXPORT_SYMBOL_GPL(wait_for_device_probe); +/** + * flush_deferred_probe_now + * + * This function should be used sparingly. It's meant for when we need to flush + * the deferred probe list at earlier initcall levels. Really meant only for KVM + * needs. This function should never be exported because it makes no sense for + * modules to call this. + */ +void flush_deferred_probe_now(void) +{ + /* + * Really shouldn't using this if deferred probe has already been + * enabled + */ + if (WARN_ON(driver_deferred_probe_enable)) + return; + + driver_deferred_probe_enable = true; + driver_deferred_probe_trigger(); + wait_for_device_probe(); + driver_deferred_probe_enable = false; +} + static int __driver_probe_device(struct device_driver *drv, struct device *dev) { int ret = 0; diff --git a/drivers/clk/clk-fractional-divider.c b/drivers/clk/clk-fractional-divider.c index 8efa5142ff8c..cae0ea9fff98 100644 --- a/drivers/clk/clk-fractional-divider.c +++ b/drivers/clk/clk-fractional-divider.c @@ -126,6 +126,7 @@ void clk_fractional_divider_general_approximation(struct clk_hw *hw, GENMASK(fd->mwidth - 1, 0), GENMASK(fd->nwidth - 1, 0), m, n); } +EXPORT_SYMBOL_GPL(clk_fractional_divider_general_approximation); static long clk_fd_round_rate(struct clk_hw *hw, unsigned long rate, unsigned long *parent_rate) diff --git a/drivers/cpuidle/governors/teo.c b/drivers/cpuidle/governors/teo.c index 987fc5f3997d..b6f1ceae251a 100644 --- a/drivers/cpuidle/governors/teo.c +++ b/drivers/cpuidle/governors/teo.c @@ -202,6 +202,19 @@ struct teo_cpu { static DEFINE_PER_CPU(struct teo_cpu, teo_cpus); +unsigned long teo_cpu_get_util_threshold(int cpu) +{ + struct teo_cpu *cpu_data = per_cpu_ptr(&teo_cpus, cpu); + return cpu_data->util_threshold; +} +EXPORT_SYMBOL_GPL(teo_cpu_get_util_threshold); +void teo_cpu_set_util_threshold(int cpu, unsigned long util) +{ + struct teo_cpu *cpu_data = per_cpu_ptr(&teo_cpus, cpu); + cpu_data->util_threshold = util; +} +EXPORT_SYMBOL_GPL(teo_cpu_set_util_threshold); + /** * teo_cpu_is_utilized - Check if the CPU's util is above the threshold * @cpu: Target CPU @@ -397,13 +410,23 @@ static int teo_select(struct cpuidle_driver *drv, struct cpuidle_device *dev, * the shallowest non-polling state and exit. */ if (drv->state_count < 3 && cpu_data->utilized) { - for (i = 0; i < drv->state_count; ++i) { - if (!dev->states_usage[i].disable && - !(drv->states[i].flags & CPUIDLE_FLAG_POLLING)) { - idx = i; - goto end; - } - } + /* The CPU is utilized, so assume a short idle duration. */ + duration_ns = teo_middle_of_bin(0, drv); + /* + * If state 0 is enabled and it is not a polling one, select it + * right away unless the scheduler tick has been stopped, in + * which case care needs to be taken to leave the CPU in a deep + * enough state in case it is not woken up any time soon after + * all. If state 1 is disabled, though, state 0 must be used + * anyway. + */ + if ((!idx && !(drv->states[0].flags & CPUIDLE_FLAG_POLLING) && + teo_time_ok(duration_ns)) || dev->states_usage[1].disable) + idx = 0; + else /* Assume that state 1 is not a polling one and use it. */ + idx = 1; + + goto end; } /* @@ -539,10 +562,20 @@ static int teo_select(struct cpuidle_driver *drv, struct cpuidle_device *dev, /* * If the CPU is being utilized over the threshold, choose a shallower - * non-polling state to improve latency + * non-polling state to improve latency, unless the scheduler tick has + * been stopped already and the shallower state's target residency is + * not sufficiently large. */ - if (cpu_data->utilized) - idx = teo_find_shallower_state(drv, dev, idx, duration_ns, true); + if (cpu_data->utilized) { + s64 span_ns; + + i = teo_find_shallower_state(drv, dev, idx, duration_ns, true); + span_ns = teo_middle_of_bin(i, drv); + if (teo_time_ok(span_ns)) { + idx = i; + duration_ns = span_ns; + } + } end: /* diff --git a/drivers/hid/.kunitconfig b/drivers/hid/.kunitconfig index 04daeff5c970..675a8209c7ae 100644 --- a/drivers/hid/.kunitconfig +++ b/drivers/hid/.kunitconfig @@ -1,5 +1,6 @@ CONFIG_KUNIT=y CONFIG_USB=y CONFIG_USB_HID=y +CONFIG_HID_BATTERY_STRENGTH=y CONFIG_HID_UCLOGIC=y CONFIG_HID_KUNIT_TEST=y diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig index c1873ccc7248..9ad5e43d9961 100644 --- a/drivers/hid/Kconfig +++ b/drivers/hid/Kconfig @@ -1263,6 +1263,7 @@ config HID_MCP2221 config HID_KUNIT_TEST tristate "KUnit tests for HID" if !KUNIT_ALL_TESTS depends on KUNIT + depends on HID_BATTERY_STRENGTH depends on HID_UCLOGIC default KUNIT_ALL_TESTS help diff --git a/drivers/hid/hid-input-test.c b/drivers/hid/hid-input-test.c new file mode 100644 index 000000000000..77c2d45ac62a --- /dev/null +++ b/drivers/hid/hid-input-test.c @@ -0,0 +1,80 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * HID to Linux Input mapping + * + * Copyright (c) 2022 José Expósito + */ + +#include + +static void hid_test_input_set_battery_charge_status(struct kunit *test) +{ + struct hid_device *dev; + bool handled; + + dev = kunit_kzalloc(test, sizeof(*dev), GFP_KERNEL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev); + + handled = hidinput_set_battery_charge_status(dev, HID_DG_HEIGHT, 0); + KUNIT_EXPECT_FALSE(test, handled); + KUNIT_EXPECT_EQ(test, dev->battery_charge_status, POWER_SUPPLY_STATUS_UNKNOWN); + + handled = hidinput_set_battery_charge_status(dev, HID_BAT_CHARGING, 0); + KUNIT_EXPECT_TRUE(test, handled); + KUNIT_EXPECT_EQ(test, dev->battery_charge_status, POWER_SUPPLY_STATUS_DISCHARGING); + + handled = hidinput_set_battery_charge_status(dev, HID_BAT_CHARGING, 1); + KUNIT_EXPECT_TRUE(test, handled); + KUNIT_EXPECT_EQ(test, dev->battery_charge_status, POWER_SUPPLY_STATUS_CHARGING); +} + +static void hid_test_input_get_battery_property(struct kunit *test) +{ + struct power_supply *psy; + struct hid_device *dev; + union power_supply_propval val; + int ret; + + dev = kunit_kzalloc(test, sizeof(*dev), GFP_KERNEL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev); + dev->battery_avoid_query = true; + + psy = kunit_kzalloc(test, sizeof(*psy), GFP_KERNEL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, psy); + psy->drv_data = dev; + + dev->battery_status = HID_BATTERY_UNKNOWN; + dev->battery_charge_status = POWER_SUPPLY_STATUS_CHARGING; + ret = hidinput_get_battery_property(psy, POWER_SUPPLY_PROP_STATUS, &val); + KUNIT_EXPECT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, val.intval, POWER_SUPPLY_STATUS_UNKNOWN); + + dev->battery_status = HID_BATTERY_REPORTED; + dev->battery_charge_status = POWER_SUPPLY_STATUS_CHARGING; + ret = hidinput_get_battery_property(psy, POWER_SUPPLY_PROP_STATUS, &val); + KUNIT_EXPECT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, val.intval, POWER_SUPPLY_STATUS_CHARGING); + + dev->battery_status = HID_BATTERY_REPORTED; + dev->battery_charge_status = POWER_SUPPLY_STATUS_DISCHARGING; + ret = hidinput_get_battery_property(psy, POWER_SUPPLY_PROP_STATUS, &val); + KUNIT_EXPECT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, val.intval, POWER_SUPPLY_STATUS_DISCHARGING); +} + +static struct kunit_case hid_input_tests[] = { + KUNIT_CASE(hid_test_input_set_battery_charge_status), + KUNIT_CASE(hid_test_input_get_battery_property), + { } +}; + +static struct kunit_suite hid_input_test_suite = { + .name = "hid_input", + .test_cases = hid_input_tests, +}; + +kunit_test_suite(hid_input_test_suite); + +MODULE_DESCRIPTION("HID input KUnit tests"); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("José Expósito "); diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index c59483763d62..4900269d2c1a 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -492,7 +492,7 @@ static int hidinput_get_battery_property(struct power_supply *psy, if (dev->battery_status == HID_BATTERY_UNKNOWN) val->intval = POWER_SUPPLY_STATUS_UNKNOWN; else - val->intval = POWER_SUPPLY_STATUS_DISCHARGING; + val->intval = dev->battery_charge_status; break; case POWER_SUPPLY_PROP_SCOPE: @@ -560,6 +560,7 @@ static int hidinput_setup_battery(struct hid_device *dev, unsigned report_type, dev->battery_max = max; dev->battery_report_type = report_type; dev->battery_report_id = field->report->id; + dev->battery_charge_status = POWER_SUPPLY_STATUS_DISCHARGING; /* * Stylus is normally not connected to the device and thus we @@ -626,6 +627,20 @@ static void hidinput_update_battery(struct hid_device *dev, int value) power_supply_changed(dev->battery); } } + +static bool hidinput_set_battery_charge_status(struct hid_device *dev, + unsigned int usage, int value) +{ + switch (usage) { + case HID_BAT_CHARGING: + dev->battery_charge_status = value ? + POWER_SUPPLY_STATUS_CHARGING : + POWER_SUPPLY_STATUS_DISCHARGING; + return true; + } + + return false; +} #else /* !CONFIG_HID_BATTERY_STRENGTH */ static int hidinput_setup_battery(struct hid_device *dev, unsigned report_type, struct hid_field *field, bool is_percentage) @@ -640,6 +655,12 @@ static void hidinput_cleanup_battery(struct hid_device *dev) static void hidinput_update_battery(struct hid_device *dev, int value) { } + +static bool hidinput_set_battery_charge_status(struct hid_device *dev, + unsigned int usage, int value) +{ + return false; +} #endif /* CONFIG_HID_BATTERY_STRENGTH */ static bool hidinput_field_in_collection(struct hid_device *device, struct hid_field *field, @@ -1239,6 +1260,9 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel hidinput_setup_battery(device, HID_INPUT_REPORT, field, true); usage->type = EV_PWR; return; + case HID_BAT_CHARGING: + usage->type = EV_PWR; + return; } goto unknown; case HID_UP_CAMERA: @@ -1491,7 +1515,11 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct return; if (usage->type == EV_PWR) { - hidinput_update_battery(hid, value); + bool handled = hidinput_set_battery_charge_status(hid, usage->hid, value); + + if (!handled) + hidinput_update_battery(hid, value); + return; } @@ -2356,3 +2384,7 @@ void hidinput_disconnect(struct hid_device *hid) cancel_work_sync(&hid->led_work); } EXPORT_SYMBOL_GPL(hidinput_disconnect); + +#ifdef CONFIG_HID_KUNIT_TEST +#include "hid-input-test.c" +#endif diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 54aeeeb04318..73631db4e855 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -2060,10 +2060,6 @@ static struct protection_domain *protection_domain_alloc(unsigned int type) int mode = DEFAULT_PGTABLE_LEVEL; int ret; - domain = kzalloc(sizeof(*domain), GFP_KERNEL); - if (!domain) - return NULL; - /* * Force IOMMU v1 page table when iommu=pt and * when allocating domain for pass-through devices. @@ -2079,6 +2075,10 @@ static struct protection_domain *protection_domain_alloc(unsigned int type) return NULL; } + domain = kzalloc(sizeof(*domain), GFP_KERNEL); + if (!domain) + return NULL; + switch (pgtable) { case AMD_IOMMU_V1: ret = protection_domain_init_v1(domain, mode); diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c index c9bdec523454..cb0dc831834c 100644 --- a/drivers/iommu/dma-iommu.c +++ b/drivers/iommu/dma-iommu.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -392,6 +393,8 @@ void iommu_dma_get_resv_regions(struct device *dev, struct list_head *list) if (!is_of_node(dev_iommu_fwspec_get(dev)->iommu_fwnode)) iort_iommu_get_resv_regions(dev, list); + if (dev->of_node) + of_iommu_get_resv_regions(dev, list); } EXPORT_SYMBOL(iommu_dma_get_resv_regions); @@ -776,6 +779,7 @@ static struct page **__iommu_dma_alloc_pages(struct device *dev, order_size = 1U << order; if (order_mask > order_size) alloc_flags |= __GFP_NORETRY; + trace_android_vh_adjust_alloc_flags(order, &alloc_flags); page = alloc_pages_node(nid, alloc_flags, order); if (!page) continue; diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 3355e3b3ddc7..2f789f12c38c 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "dma-iommu.h" @@ -223,7 +224,8 @@ int iommu_device_register(struct iommu_device *iommu, * already the de-facto behaviour, since any possible combination of * existing drivers would compete for at least the PCI or platform bus. */ - if (iommu_buses[0]->iommu_ops && iommu_buses[0]->iommu_ops != ops) + if (iommu_buses[0]->iommu_ops && iommu_buses[0]->iommu_ops != ops + && !trace_android_vh_bus_iommu_probe_enabled()) return -EBUSY; iommu->ops = ops; @@ -235,6 +237,11 @@ int iommu_device_register(struct iommu_device *iommu, spin_unlock(&iommu_device_lock); for (int i = 0; i < ARRAY_SIZE(iommu_buses) && !err; i++) { + bool skip = false; + + trace_android_vh_bus_iommu_probe(iommu, iommu_buses[i], &skip); + if (skip) + continue; iommu_buses[i]->iommu_ops = ops; err = bus_iommu_probe(iommu_buses[i]); } diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c index 5696314ae69e..da271c5596fb 100644 --- a/drivers/iommu/of_iommu.c +++ b/drivers/iommu/of_iommu.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -172,3 +173,98 @@ const struct iommu_ops *of_iommu_configure(struct device *dev, return ops; } + +static enum iommu_resv_type __maybe_unused +iommu_resv_region_get_type(struct device *dev, + struct resource *phys, + phys_addr_t start, size_t length) +{ + phys_addr_t end = start + length - 1; + + /* + * IOMMU regions without an associated physical region cannot be + * mapped and are simply reservations. + */ + if (phys->start >= phys->end) + return IOMMU_RESV_RESERVED; + + /* may be IOMMU_RESV_DIRECT_RELAXABLE for certain cases */ + if (start == phys->start && end == phys->end) + return IOMMU_RESV_DIRECT; + + dev_warn(dev, "treating non-direct mapping [%pr] -> [%pap-%pap] as reservation\n", &phys, + &start, &end); + return IOMMU_RESV_RESERVED; +} + +/** + * of_iommu_get_resv_regions - reserved region driver helper for device tree + * @dev: device for which to get reserved regions + * @list: reserved region list + * + * IOMMU drivers can use this to implement their .get_resv_regions() callback + * for memory regions attached to a device tree node. See the reserved-memory + * device tree bindings on how to use these: + * + * Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt + */ +void of_iommu_get_resv_regions(struct device *dev, struct list_head *list) +{ +#if IS_ENABLED(CONFIG_OF_ADDRESS) + struct of_phandle_iterator it; + int err; + + of_for_each_phandle(&it, err, dev->of_node, "memory-region", NULL, 0) { + const __be32 *maps, *end; + struct resource phys; + int size; + + memset(&phys, 0, sizeof(phys)); + + /* + * The "reg" property is optional and can be omitted by reserved-memory regions + * that represent reservations in the IOVA space, which are regions that should + * not be mapped. + */ + if (of_find_property(it.node, "reg", NULL)) { + err = of_address_to_resource(it.node, 0, &phys); + if (err < 0) { + dev_err(dev, "failed to parse memory region %pOF: %d\n", + it.node, err); + continue; + } + } + + maps = of_get_property(it.node, "iommu-addresses", &size); + if (!maps) + continue; + + end = maps + size / sizeof(__be32); + + while (maps < end) { + struct device_node *np; + u32 phandle; + + phandle = be32_to_cpup(maps++); + np = of_find_node_by_phandle(phandle); + + if (np == dev->of_node) { + int prot = IOMMU_READ | IOMMU_WRITE; + struct iommu_resv_region *region; + enum iommu_resv_type type; + phys_addr_t iova; + size_t length; + + maps = of_translate_dma_region(np, maps, &iova, &length); + type = iommu_resv_region_get_type(dev, &phys, iova, length); + + region = iommu_alloc_resv_region(iova, length, prot, type, + GFP_KERNEL); + if (region) + list_add_tail(®ion->list, list); + } + } + } +#endif +} +EXPORT_SYMBOL(of_iommu_get_resv_regions); diff --git a/drivers/misc/uid_sys_stats.c b/drivers/misc/uid_sys_stats.c index f5eaa63035ca..095962102ac7 100644 --- a/drivers/misc/uid_sys_stats.c +++ b/drivers/misc/uid_sys_stats.c @@ -19,20 +19,24 @@ #include #include #include +#include #include #include #include -#include #include #include #include #include - +#include #define UID_HASH_BITS 10 +#define UID_HASH_NUMS (1 << UID_HASH_BITS) DECLARE_HASHTABLE(hash_table, UID_HASH_BITS); +/* + * uid_lock[bkt] ensure consistency of hash_table[bkt] + */ +spinlock_t uid_lock[UID_HASH_NUMS]; -static DEFINE_RT_MUTEX(uid_lock); static struct proc_dir_entry *cpu_parent; static struct proc_dir_entry *io_parent; static struct proc_dir_entry *proc_parent; @@ -77,6 +81,32 @@ struct uid_entry { #endif }; +static inline int trylock_uid(uid_t uid) +{ + return spin_trylock( + &uid_lock[hash_min(uid, HASH_BITS(hash_table))]); +} + +static inline void lock_uid(uid_t uid) +{ + spin_lock(&uid_lock[hash_min(uid, HASH_BITS(hash_table))]); +} + +static inline void unlock_uid(uid_t uid) +{ + spin_unlock(&uid_lock[hash_min(uid, HASH_BITS(hash_table))]); +} + +static inline void lock_uid_by_bkt(u32 bkt) +{ + spin_lock(&uid_lock[bkt]); +} + +static inline void unlock_uid_by_bkt(u32 bkt) +{ + spin_unlock(&uid_lock[bkt]); +} + static u64 compute_write_bytes(struct task_io_accounting *ioac) { if (ioac->write_bytes <= ioac->cancelled_write_bytes) @@ -332,24 +362,29 @@ static int uid_cputime_show(struct seq_file *m, void *v) struct user_namespace *user_ns = current_user_ns(); u64 utime; u64 stime; - unsigned long bkt; + u32 bkt; uid_t uid; - rt_mutex_lock(&uid_lock); - - hash_for_each(hash_table, bkt, uid_entry, hash) { - uid_entry->active_stime = 0; - uid_entry->active_utime = 0; + for (bkt = 0, uid_entry = NULL; uid_entry == NULL && + bkt < HASH_SIZE(hash_table); bkt++) { + lock_uid_by_bkt(bkt); + hlist_for_each_entry(uid_entry, &hash_table[bkt], hash) { + uid_entry->active_stime = 0; + uid_entry->active_utime = 0; + } + unlock_uid_by_bkt(bkt); } rcu_read_lock(); do_each_thread(temp, task) { uid = from_kuid_munged(user_ns, task_uid(task)); + lock_uid(uid); + if (!uid_entry || uid_entry->uid != uid) uid_entry = find_or_register_uid(uid); if (!uid_entry) { rcu_read_unlock(); - rt_mutex_unlock(&uid_lock); + unlock_uid(uid); pr_err("%s: failed to find the uid_entry for uid %d\n", __func__, uid); return -ENOMEM; @@ -360,19 +395,24 @@ static int uid_cputime_show(struct seq_file *m, void *v) uid_entry->active_utime += utime; uid_entry->active_stime += stime; } + unlock_uid(uid); } while_each_thread(temp, task); rcu_read_unlock(); - hash_for_each(hash_table, bkt, uid_entry, hash) { - u64 total_utime = uid_entry->utime + - uid_entry->active_utime; - u64 total_stime = uid_entry->stime + - uid_entry->active_stime; - seq_printf(m, "%d: %llu %llu\n", uid_entry->uid, - ktime_to_us(total_utime), ktime_to_us(total_stime)); + for (bkt = 0, uid_entry = NULL; uid_entry == NULL && + bkt < HASH_SIZE(hash_table); bkt++) { + lock_uid_by_bkt(bkt); + hlist_for_each_entry(uid_entry, &hash_table[bkt], hash) { + u64 total_utime = uid_entry->utime + + uid_entry->active_utime; + u64 total_stime = uid_entry->stime + + uid_entry->active_stime; + seq_printf(m, "%d: %llu %llu\n", uid_entry->uid, + ktime_to_us(total_utime), ktime_to_us(total_stime)); + } + unlock_uid_by_bkt(bkt); } - rt_mutex_unlock(&uid_lock); return 0; } @@ -420,9 +460,8 @@ static ssize_t uid_remove_write(struct file *file, return -EINVAL; } - rt_mutex_lock(&uid_lock); - for (; uid_start <= uid_end; uid_start++) { + lock_uid(uid_start); hash_for_each_possible_safe(hash_table, uid_entry, tmp, hash, (uid_t)uid_start) { if (uid_start == uid_entry->uid) { @@ -431,9 +470,9 @@ static ssize_t uid_remove_write(struct file *file, kfree(uid_entry); } } + unlock_uid(uid_start); } - rt_mutex_unlock(&uid_lock); return count; } @@ -471,41 +510,59 @@ static void add_uid_io_stats(struct uid_entry *uid_entry, __add_uid_io_stats(uid_entry, &task->ioac, slot); } -static void update_io_stats_all_locked(void) +static void update_io_stats_all(void) { struct uid_entry *uid_entry = NULL; struct task_struct *task, *temp; struct user_namespace *user_ns = current_user_ns(); - unsigned long bkt; + u32 bkt; uid_t uid; - hash_for_each(hash_table, bkt, uid_entry, hash) { - memset(&uid_entry->io[UID_STATE_TOTAL_CURR], 0, - sizeof(struct io_stats)); - set_io_uid_tasks_zero(uid_entry); + for (bkt = 0, uid_entry = NULL; uid_entry == NULL && bkt < HASH_SIZE(hash_table); + bkt++) { + lock_uid_by_bkt(bkt); + hlist_for_each_entry(uid_entry, &hash_table[bkt], hash) { + memset(&uid_entry->io[UID_STATE_TOTAL_CURR], 0, + sizeof(struct io_stats)); + set_io_uid_tasks_zero(uid_entry); + } + unlock_uid_by_bkt(bkt); } rcu_read_lock(); do_each_thread(temp, task) { uid = from_kuid_munged(user_ns, task_uid(task)); + lock_uid(uid); if (!uid_entry || uid_entry->uid != uid) uid_entry = find_or_register_uid(uid); - if (!uid_entry) + if (!uid_entry) { + unlock_uid(uid); continue; + } add_uid_io_stats(uid_entry, task, UID_STATE_TOTAL_CURR); + unlock_uid(uid); } while_each_thread(temp, task); rcu_read_unlock(); - hash_for_each(hash_table, bkt, uid_entry, hash) { - compute_io_bucket_stats(&uid_entry->io[uid_entry->state], - &uid_entry->io[UID_STATE_TOTAL_CURR], - &uid_entry->io[UID_STATE_TOTAL_LAST], - &uid_entry->io[UID_STATE_DEAD_TASKS]); - compute_io_uid_tasks(uid_entry); + for (bkt = 0, uid_entry = NULL; uid_entry == NULL && bkt < HASH_SIZE(hash_table); + bkt++) { + lock_uid_by_bkt(bkt); + hlist_for_each_entry(uid_entry, &hash_table[bkt], hash) { + compute_io_bucket_stats(&uid_entry->io[uid_entry->state], + &uid_entry->io[UID_STATE_TOTAL_CURR], + &uid_entry->io[UID_STATE_TOTAL_LAST], + &uid_entry->io[UID_STATE_DEAD_TASKS]); + compute_io_uid_tasks(uid_entry); + } + unlock_uid_by_bkt(bkt); } } +#ifndef CONFIG_UID_SYS_STATS_DEBUG +static void update_io_stats_uid(struct uid_entry *uid_entry) +#else static void update_io_stats_uid_locked(struct uid_entry *uid_entry) +#endif { struct task_struct *task, *temp; struct user_namespace *user_ns = current_user_ns(); @@ -533,14 +590,15 @@ static void update_io_stats_uid_locked(struct uid_entry *uid_entry) static int uid_io_show(struct seq_file *m, void *v) { struct uid_entry *uid_entry; - unsigned long bkt; + u32 bkt; - rt_mutex_lock(&uid_lock); + update_io_stats_all(); + for (bkt = 0, uid_entry = NULL; uid_entry == NULL && bkt < HASH_SIZE(hash_table); + bkt++) { - update_io_stats_all_locked(); - - hash_for_each(hash_table, bkt, uid_entry, hash) { - seq_printf(m, "%d %llu %llu %llu %llu %llu %llu %llu %llu %llu %llu\n", + lock_uid_by_bkt(bkt); + hlist_for_each_entry(uid_entry, &hash_table[bkt], hash) { + seq_printf(m, "%d %llu %llu %llu %llu %llu %llu %llu %llu %llu %llu\n", uid_entry->uid, uid_entry->io[UID_STATE_FOREGROUND].rchar, uid_entry->io[UID_STATE_FOREGROUND].wchar, @@ -553,10 +611,11 @@ static int uid_io_show(struct seq_file *m, void *v) uid_entry->io[UID_STATE_FOREGROUND].fsync, uid_entry->io[UID_STATE_BACKGROUND].fsync); - show_io_uid_tasks(m, uid_entry); + show_io_uid_tasks(m, uid_entry); + } + unlock_uid_by_bkt(bkt); } - rt_mutex_unlock(&uid_lock); return 0; } @@ -584,6 +643,9 @@ static ssize_t uid_procstat_write(struct file *file, uid_t uid; int argc, state; char input[128]; +#ifndef CONFIG_UID_SYS_STATS_DEBUG + struct uid_entry uid_entry_tmp; +#endif if (count >= sizeof(input)) return -EINVAL; @@ -600,24 +662,51 @@ static ssize_t uid_procstat_write(struct file *file, if (state != UID_STATE_BACKGROUND && state != UID_STATE_FOREGROUND) return -EINVAL; - rt_mutex_lock(&uid_lock); - + lock_uid(uid); uid_entry = find_or_register_uid(uid); if (!uid_entry) { - rt_mutex_unlock(&uid_lock); + unlock_uid(uid); return -EINVAL; } if (uid_entry->state == state) { - rt_mutex_unlock(&uid_lock); + unlock_uid(uid); return count; } +#ifndef CONFIG_UID_SYS_STATS_DEBUG + /* + * Update_io_stats_uid_locked would take a long lock-time of uid_lock + * due to call do_each_thread to compute uid_entry->io, which would + * cause to lock competition sometime. + * + * Using uid_entry_tmp to get the result of Update_io_stats_uid, + * so that we can unlock_uid during update_io_stats_uid, in order + * to avoid the unnecessary lock-time of uid_lock. + */ + uid_entry_tmp.uid = uid_entry->uid; + memcpy(uid_entry_tmp.io, uid_entry->io, + sizeof(struct io_stats) * UID_STATE_SIZE); + unlock_uid(uid); + update_io_stats_uid(&uid_entry_tmp); + + lock_uid(uid); + hlist_for_each_entry(uid_entry, &hash_table[hash_min(uid, HASH_BITS(hash_table))], hash) { + if (uid_entry->uid == uid_entry_tmp.uid) { + memcpy(uid_entry->io, uid_entry_tmp.io, + sizeof(struct io_stats) * UID_STATE_SIZE); + uid_entry->state = state; + break; + } + } + unlock_uid(uid); +#else update_io_stats_uid_locked(uid_entry); uid_entry->state = state; - rt_mutex_unlock(&uid_lock); + unlock_uid(uid); +#endif return count; } @@ -636,22 +725,21 @@ struct update_stats_work { struct task_io_accounting ioac; u64 utime; u64 stime; - struct update_stats_work *next; + struct llist_node node; }; -static atomic_long_t work_usw; +static LLIST_HEAD(work_usw); static void update_stats_workfn(struct work_struct *work) { - struct update_stats_work *usw; + struct update_stats_work *usw, *t; struct uid_entry *uid_entry; struct task_entry *task_entry __maybe_unused; + struct llist_node *node; - rt_mutex_lock(&uid_lock); - while ((usw = (struct update_stats_work *)atomic_long_read(&work_usw))) { - if (atomic_long_cmpxchg(&work_usw, (long)usw, (long)(usw->next)) != (long)usw) - continue; - + node = llist_del_all(&work_usw); + llist_for_each_entry_safe(usw, t, node, node) { + lock_uid(usw->uid); uid_entry = find_uid_entry(usw->uid); if (!uid_entry) goto next; @@ -664,16 +752,17 @@ static void update_stats_workfn(struct work_struct *work) if (!task_entry) goto next; add_uid_tasks_io_stats(task_entry, &usw->ioac, - UID_STATE_DEAD_TASKS); + UID_STATE_DEAD_TASKS); #endif __add_uid_io_stats(uid_entry, &usw->ioac, UID_STATE_DEAD_TASKS); next: + unlock_uid(usw->uid); #ifdef CONFIG_UID_SYS_STATS_DEBUG put_task_struct(usw->task); #endif kfree(usw); } - rt_mutex_unlock(&uid_lock); + } static DECLARE_WORK(update_stats_work, update_stats_workfn); @@ -689,7 +778,7 @@ static int process_notifier(struct notifier_block *self, return NOTIFY_OK; uid = from_kuid_munged(current_user_ns(), task_uid(task)); - if (!rt_mutex_trylock(&uid_lock)) { + if (!trylock_uid(uid)) { struct update_stats_work *usw; usw = kmalloc(sizeof(struct update_stats_work), GFP_KERNEL); @@ -704,8 +793,7 @@ static int process_notifier(struct notifier_block *self, */ usw->ioac = task->ioac; task_cputime_adjusted(task, &usw->utime, &usw->stime); - usw->next = (struct update_stats_work *)atomic_long_xchg(&work_usw, - (long)usw); + llist_add(&usw->node, &work_usw); schedule_work(&update_stats_work); } return NOTIFY_OK; @@ -724,7 +812,7 @@ static int process_notifier(struct notifier_block *self, add_uid_io_stats(uid_entry, task, UID_STATE_DEAD_TASKS); exit: - rt_mutex_unlock(&uid_lock); + unlock_uid(uid); return NOTIFY_OK; } @@ -732,9 +820,18 @@ static struct notifier_block process_notifier_block = { .notifier_call = process_notifier, }; +static void init_hash_table_and_lock(void) +{ + int i; + + hash_init(hash_table); + for (i = 0; i < UID_HASH_NUMS; i++) + spin_lock_init(&uid_lock[i]); +} + static int __init proc_uid_sys_stats_init(void) { - hash_init(hash_table); + init_hash_table_and_lock(); cpu_parent = proc_mkdir("uid_cputime", NULL); if (!cpu_parent) { diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index 894e2690c643..9a52283d7754 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -2183,6 +2183,8 @@ static int ravb_close(struct net_device *ndev) of_phy_deregister_fixed_link(np); } + cancel_work_sync(&priv->work); + if (info->multi_irqs) { free_irq(priv->tx_irqs[RAVB_NC], ndev); free_irq(priv->rx_irqs[RAVB_NC], ndev); @@ -2907,8 +2909,6 @@ static int ravb_remove(struct platform_device *pdev) clk_disable_unprepare(priv->gptp_clk); clk_disable_unprepare(priv->refclk); - dma_free_coherent(ndev->dev.parent, priv->desc_bat_size, priv->desc_bat, - priv->desc_bat_dma); /* Set reset mode */ ravb_write(ndev, CCC_OPC_RESET, CCC); unregister_netdev(ndev); @@ -2916,6 +2916,8 @@ static int ravb_remove(struct platform_device *pdev) netif_napi_del(&priv->napi[RAVB_NC]); netif_napi_del(&priv->napi[RAVB_BE]); ravb_mdio_release(priv); + dma_free_coherent(ndev->dev.parent, priv->desc_bat_size, priv->desc_bat, + priv->desc_bat_dma); pm_runtime_put_sync(&pdev->dev); pm_runtime_disable(&pdev->dev); reset_control_assert(priv->rstc); diff --git a/drivers/of/address.c b/drivers/of/address.c index 67763e5b8c0e..4c0b169ef9bf 100644 --- a/drivers/of/address.c +++ b/drivers/of/address.c @@ -626,6 +626,47 @@ u64 of_translate_dma_address(struct device_node *dev, const __be32 *in_addr) } EXPORT_SYMBOL(of_translate_dma_address); +/** + * of_translate_dma_region - Translate device tree address and size tuple + * @dev: device tree node for which to translate + * @prop: pointer into array of cells + * @start: return value for the start of the DMA range + * @length: return value for the length of the DMA range + * + * Returns a pointer to the cell immediately following the translated DMA region. + */ +const __be32 *of_translate_dma_region(struct device_node *dev, const __be32 *prop, + phys_addr_t *start, size_t *length) +{ + struct device_node *parent; + u64 address, size; + int na, ns; + + parent = __of_get_dma_parent(dev); + if (!parent) + return NULL; + + na = of_bus_n_addr_cells(parent); + ns = of_bus_n_size_cells(parent); + + of_node_put(parent); + + address = of_translate_dma_address(dev, prop); + if (address == OF_BAD_ADDR) + return NULL; + + size = of_read_number(prop + na, ns); + + if (start) + *start = address; + + if (length) + *length = size; + + return prop + na + ns; +} +EXPORT_SYMBOL(of_translate_dma_region); + const __be32 *__of_get_address(struct device_node *dev, int index, int bar_no, u64 *size, unsigned int *flags) { diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c index fc636f9ee421..ce3864365e97 100644 --- a/drivers/of/of_reserved_mem.c +++ b/drivers/of/of_reserved_mem.c @@ -285,6 +285,16 @@ void __init fdt_init_reserved_mem(void) else memblock_phys_free(rmem->base, rmem->size); + } else { + phys_addr_t end = rmem->base + rmem->size - 1; + bool reusable = + (of_get_flat_dt_prop(node, "reusable", NULL)) != NULL; + + pr_info("%pa..%pa ( %lu KB ) %s %s %s\n", + &rmem->base, &end, (unsigned long)(rmem->size / SZ_1K), + nomap ? "nomap" : "map", + reusable ? "reusable" : "non-reusable", + rmem->name ? rmem->name : "unknown"); } } } diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index 28d2f753cc9c..6241d3f4e9d5 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -479,20 +479,15 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp) if (ret) goto err_free_msi; - if (dw_pcie_link_up(pci)) { - dw_pcie_print_link_status(pci); - } else { + if (!dw_pcie_link_up(pci)) { ret = dw_pcie_start_link(pci); if (ret) goto err_free_msi; - - if (pci->ops && pci->ops->start_link) { - ret = dw_pcie_wait_for_link(pci); - if (ret) - goto err_stop_link; - } } + /* Ignore errors, the link may come up later */ + dw_pcie_wait_for_link(pci); + bridge->sysdata = pp; ret = pci_host_probe(bridge); diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/controller/dwc/pcie-designware.c index c1ba86680489..575834cae3b9 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -434,20 +434,9 @@ void dw_pcie_disable_atu(struct dw_pcie *pci, u32 dir, int index) dw_pcie_writel_atu(pci, dir, index, PCIE_ATU_REGION_CTRL2, 0); } -void dw_pcie_print_link_status(struct dw_pcie *pci) -{ - u32 offset, val; - - offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP); - val = dw_pcie_readw_dbi(pci, offset + PCI_EXP_LNKSTA); - - dev_info(pci->dev, "PCIe Gen.%u x%u link up\n", - FIELD_GET(PCI_EXP_LNKSTA_CLS, val), - FIELD_GET(PCI_EXP_LNKSTA_NLW, val)); -} - int dw_pcie_wait_for_link(struct dw_pcie *pci) { + u32 offset, val; int retries; /* Check if the link is up or not */ @@ -463,7 +452,12 @@ int dw_pcie_wait_for_link(struct dw_pcie *pci) return -ETIMEDOUT; } - dw_pcie_print_link_status(pci); + offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP); + val = dw_pcie_readw_dbi(pci, offset + PCI_EXP_LNKSTA); + + dev_info(pci->dev, "PCIe Gen.%u x%u link up\n", + FIELD_GET(PCI_EXP_LNKSTA_CLS, val), + FIELD_GET(PCI_EXP_LNKSTA_NLW, val)); return 0; } diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h index 408c9a770d43..a871ae7eb59e 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -351,7 +351,6 @@ int dw_pcie_prog_inbound_atu(struct dw_pcie *pci, u8 func_no, int index, void dw_pcie_disable_atu(struct dw_pcie *pci, u32 dir, int index); void dw_pcie_setup(struct dw_pcie *pci); void dw_pcie_iatu_detect(struct dw_pcie *pci); -void dw_pcie_print_link_status(struct dw_pcie *pci); static inline void dw_pcie_writel_dbi(struct dw_pcie *pci, u32 reg, u32 val) { diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c index 7db51781289e..f4cafca1a7da 100644 --- a/drivers/tty/serial/8250/8250_dw.c +++ b/drivers/tty/serial/8250/8250_dw.c @@ -523,7 +523,10 @@ static int dw8250_probe(struct platform_device *pdev) if (!regs) return dev_err_probe(dev, -EINVAL, "no registers defined\n"); - irq = platform_get_irq(pdev, 0); + irq = platform_get_irq_optional(pdev, 0); + /* no interrupt -> fall back to polling */ + if (irq == -ENXIO) + irq = 0; if (irq < 0) return irq; diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index e7031cd1855f..f5e5752100c2 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -295,7 +295,6 @@ static inline void ufshcd_add_delay_before_dme_cmd(struct ufs_hba *hba); static int ufshcd_host_reset_and_restore(struct ufs_hba *hba); static void ufshcd_resume_clkscaling(struct ufs_hba *hba); static void ufshcd_suspend_clkscaling(struct ufs_hba *hba); -static void __ufshcd_suspend_clkscaling(struct ufs_hba *hba); static int ufshcd_scale_clks(struct ufs_hba *hba, bool scale_up); static irqreturn_t ufshcd_intr(int irq, void *__hba); static int ufshcd_change_power_mode(struct ufs_hba *hba, @@ -1418,9 +1417,10 @@ static void ufshcd_clk_scaling_suspend_work(struct work_struct *work) return; } hba->clk_scaling.is_suspended = true; + hba->clk_scaling.window_start_t = 0; spin_unlock_irqrestore(hba->host->host_lock, irq_flags); - __ufshcd_suspend_clkscaling(hba); + devfreq_suspend_device(hba->devfreq); } static void ufshcd_clk_scaling_resume_work(struct work_struct *work) @@ -1465,6 +1465,13 @@ static int ufshcd_devfreq_target(struct device *dev, return 0; } + /* Skip scaling clock when clock scaling is suspended */ + if (hba->clk_scaling.is_suspended) { + spin_unlock_irqrestore(hba->host->host_lock, irq_flags); + dev_warn(hba->dev, "clock scaling is suspended, skip"); + return 0; + } + if (!hba->clk_scaling.active_reqs) sched_clk_scaling_suspend_work = true; @@ -1496,7 +1503,7 @@ static int ufshcd_devfreq_target(struct device *dev, ktime_to_us(ktime_sub(ktime_get(), start)), ret); out: - if (sched_clk_scaling_suspend_work) + if (sched_clk_scaling_suspend_work && !scale_up) queue_work(hba->clk_scaling.workq, &hba->clk_scaling.suspend_work); @@ -1602,16 +1609,6 @@ static void ufshcd_devfreq_remove(struct ufs_hba *hba) dev_pm_opp_remove(hba->dev, clki->max_freq); } -static void __ufshcd_suspend_clkscaling(struct ufs_hba *hba) -{ - unsigned long flags; - - devfreq_suspend_device(hba->devfreq); - spin_lock_irqsave(hba->host->host_lock, flags); - hba->clk_scaling.window_start_t = 0; - spin_unlock_irqrestore(hba->host->host_lock, flags); -} - static void ufshcd_suspend_clkscaling(struct ufs_hba *hba) { unsigned long flags; @@ -1624,11 +1621,12 @@ static void ufshcd_suspend_clkscaling(struct ufs_hba *hba) if (!hba->clk_scaling.is_suspended) { suspend = true; hba->clk_scaling.is_suspended = true; + hba->clk_scaling.window_start_t = 0; } spin_unlock_irqrestore(hba->host->host_lock, flags); if (suspend) - __ufshcd_suspend_clkscaling(hba); + devfreq_suspend_device(hba->devfreq); } static void ufshcd_resume_clkscaling(struct ufs_hba *hba) @@ -7859,6 +7857,20 @@ static int ufshcd_eh_host_reset_handler(struct scsi_cmnd *cmd) hba = shost_priv(cmd->device->host); + /* + * If runtime pm send SSU and got timeout, scsi_error_handler + * stuck at this function to wait for flush_work(&hba->eh_work). + * And ufshcd_err_handler(eh_work) stuck at wait for runtime pm active. + * Do ufshcd_link_recovery instead schedule eh_work can prevent + * dead lock to happen. + */ + if (hba->pm_op_in_progress) { + if (ufshcd_link_recovery(hba)) + err = FAILED; + + return err; + } + spin_lock_irqsave(hba->host->host_lock, flags); hba->force_reset = true; ufshcd_schedule_eh_work(hba); diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index dcdc367d6612..26a27ff50408 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -3103,6 +3103,48 @@ done: return status; } +/* + * hub_port_stop_enumerate - stop USB enumeration or ignore port events + * @hub: target hub + * @port1: port num of the port + * @retries: port retries number of hub_port_init() + * + * Return: + * true: ignore port actions/events or give up connection attempts. + * false: keep original behavior. + * + * This function will be based on retries to check whether the port which is + * marked with early_stop attribute would stop enumeration or ignore events. + * + * Note: + * This function didn't change anything if early_stop is not set, and it will + * prevent all connection attempts when early_stop is set and the attempts of + * the port are more than 1. + */ +static bool hub_port_stop_enumerate(struct usb_hub *hub, int port1, int retries) +{ + struct usb_port *port_dev = hub->ports[port1 - 1]; + + if (port_dev->early_stop) { + if (port_dev->ignore_event) + return true; + + /* + * We want unsuccessful attempts to fail quickly. + * Since some devices may need one failure during + * port initialization, we allow two tries but no + * more. + */ + if (retries < 2) + return false; + + port_dev->ignore_event = 1; + } else + port_dev->ignore_event = 0; + + return port_dev->ignore_event; +} + /* Check if a port is power on */ int usb_port_is_power_on(struct usb_hub *hub, unsigned int portstatus) { @@ -4897,6 +4939,11 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1, do_new_scheme = use_new_scheme(udev, retry_counter, port_dev); for (retries = 0; retries < GET_DESCRIPTOR_TRIES; (++retries, msleep(100))) { + if (hub_port_stop_enumerate(hub, port1, retries)) { + retval = -ENODEV; + break; + } + if (do_new_scheme) { retval = hub_enable_device(udev); if (retval < 0) { @@ -5323,6 +5370,11 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, status = 0; for (i = 0; i < PORT_INIT_TRIES; i++) { + if (hub_port_stop_enumerate(hub, port1, i)) { + status = -ENODEV; + break; + } + usb_lock_port(port_dev); mutex_lock(hcd->address0_mutex); retry_locked = true; @@ -5687,6 +5739,10 @@ static void port_event(struct usb_hub *hub, int port1) if (!pm_runtime_active(&port_dev->dev)) return; + /* skip port actions if ignore_event and early_stop are true */ + if (port_dev->ignore_event && port_dev->early_stop) + return; + if (hub_handle_remote_wakeup(hub, port1, portstatus, portchange)) connect_change = 1; @@ -6010,6 +6066,10 @@ static int usb_reset_and_verify_device(struct usb_device *udev) mutex_lock(hcd->address0_mutex); for (i = 0; i < PORT_INIT_TRIES; ++i) { + if (hub_port_stop_enumerate(parent_hub, port1, i)) { + ret = -ENODEV; + break; + } /* ep0 maxpacket size may change; let the HCD know about it. * Other endpoints will be handled by re-enumeration. */ diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h index f244cc475e3e..37897afd1b64 100644 --- a/drivers/usb/core/hub.h +++ b/drivers/usb/core/hub.h @@ -92,6 +92,8 @@ struct usb_hub { * @is_superspeed cache super-speed status * @usb3_lpm_u1_permit: whether USB3 U1 LPM is permitted. * @usb3_lpm_u2_permit: whether USB3 U2 LPM is permitted. + * @early_stop: whether port initialization will be stopped earlier. + * @ignore_event: whether events of the port are ignored. */ struct usb_port { struct usb_device *child; @@ -107,6 +109,8 @@ struct usb_port { u32 over_current_count; u8 portnum; u32 quirks; + unsigned int early_stop:1; + unsigned int ignore_event:1; unsigned int is_superspeed:1; unsigned int usb3_lpm_u1_permit:1; unsigned int usb3_lpm_u2_permit:1; diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c index e458ed17c7a1..b2cad06885b5 100644 --- a/drivers/usb/core/port.c +++ b/drivers/usb/core/port.c @@ -17,6 +17,32 @@ static int usb_port_block_power_off; static const struct attribute_group *port_dev_group[]; +static ssize_t early_stop_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct usb_port *port_dev = to_usb_port(dev); + + return sysfs_emit(buf, "%s\n", port_dev->early_stop ? "yes" : "no"); +} + +static ssize_t early_stop_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + struct usb_port *port_dev = to_usb_port(dev); + bool value; + + if (kstrtobool(buf, &value)) + return -EINVAL; + + if (value) + port_dev->early_stop = 1; + else + port_dev->early_stop = 0; + + return count; +} +static DEVICE_ATTR_RW(early_stop); + static ssize_t disable_show(struct device *dev, struct device_attribute *attr, char *buf) { @@ -247,6 +273,7 @@ static struct attribute *port_dev_attrs[] = { &dev_attr_quirks.attr, &dev_attr_over_current_count.attr, &dev_attr_disable.attr, + &dev_attr_early_stop.attr, NULL, }; diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c index 9511b2218a63..638225a53e2b 100644 --- a/drivers/usb/gadget/function/f_midi.c +++ b/drivers/usb/gadget/function/f_midi.c @@ -1023,40 +1023,30 @@ static int f_midi_bind(struct usb_configuration *c, struct usb_function *f) if (!f->fs_descriptors) goto fail_f_midi; - if (gadget_is_dualspeed(c->cdev->gadget)) { - bulk_in_desc.wMaxPacketSize = cpu_to_le16(512); - bulk_out_desc.wMaxPacketSize = cpu_to_le16(512); - f->hs_descriptors = usb_copy_descriptors(midi_function); - if (!f->hs_descriptors) - goto fail_f_midi; - } + bulk_in_desc.wMaxPacketSize = cpu_to_le16(512); + bulk_out_desc.wMaxPacketSize = cpu_to_le16(512); + f->hs_descriptors = usb_copy_descriptors(midi_function); + if (!f->hs_descriptors) + goto fail_f_midi; - if (gadget_is_superspeed(c->cdev->gadget)) { - bulk_in_desc.wMaxPacketSize = cpu_to_le16(1024); - bulk_out_desc.wMaxPacketSize = cpu_to_le16(1024); - i = endpoint_descriptor_index; - midi_function[i++] = (struct usb_descriptor_header *) - &bulk_out_desc; - midi_function[i++] = (struct usb_descriptor_header *) - &bulk_out_ss_comp_desc; - midi_function[i++] = (struct usb_descriptor_header *) - &ms_out_desc; - midi_function[i++] = (struct usb_descriptor_header *) - &bulk_in_desc; - midi_function[i++] = (struct usb_descriptor_header *) - &bulk_in_ss_comp_desc; - midi_function[i++] = (struct usb_descriptor_header *) - &ms_in_desc; - f->ss_descriptors = usb_copy_descriptors(midi_function); - if (!f->ss_descriptors) - goto fail_f_midi; - - if (gadget_is_superspeed_plus(c->cdev->gadget)) { - f->ssp_descriptors = usb_copy_descriptors(midi_function); - if (!f->ssp_descriptors) - goto fail_f_midi; - } - } + bulk_in_desc.wMaxPacketSize = cpu_to_le16(1024); + bulk_out_desc.wMaxPacketSize = cpu_to_le16(1024); + i = endpoint_descriptor_index; + midi_function[i++] = (struct usb_descriptor_header *) + &bulk_out_desc; + midi_function[i++] = (struct usb_descriptor_header *) + &bulk_out_ss_comp_desc; + midi_function[i++] = (struct usb_descriptor_header *) + &ms_out_desc; + midi_function[i++] = (struct usb_descriptor_header *) + &bulk_in_desc; + midi_function[i++] = (struct usb_descriptor_header *) + &bulk_in_ss_comp_desc; + midi_function[i++] = (struct usb_descriptor_header *) + &ms_in_desc; + f->ss_descriptors = usb_copy_descriptors(midi_function); + if (!f->ss_descriptors) + goto fail_f_midi; kfree(midi_function); diff --git a/drivers/usb/gadget/function/f_uvc.c b/drivers/usb/gadget/function/f_uvc.c index 32f2c1645467..8eca4aff215c 100644 --- a/drivers/usb/gadget/function/f_uvc.c +++ b/drivers/usb/gadget/function/f_uvc.c @@ -492,6 +492,7 @@ uvc_copy_descriptors(struct uvc_device *uvc, enum usb_device_speed speed) void *mem; switch (speed) { + case USB_SPEED_SUPER_PLUS: case USB_SPEED_SUPER: uvc_control_desc = uvc->desc.ss_control; uvc_streaming_cls = uvc->desc.ss_streaming; @@ -536,7 +537,8 @@ uvc_copy_descriptors(struct uvc_device *uvc, enum usb_device_speed speed) + uvc_control_ep.bLength + uvc_control_cs_ep.bLength + uvc_streaming_intf_alt0.bLength; - if (speed == USB_SPEED_SUPER) { + if (speed == USB_SPEED_SUPER || + speed == USB_SPEED_SUPER_PLUS) { bytes += uvc_ss_control_comp.bLength; n_desc = 6; } else { @@ -580,7 +582,8 @@ uvc_copy_descriptors(struct uvc_device *uvc, enum usb_device_speed speed) uvc_control_header->baInterfaceNr[0] = uvc->streaming_intf; UVC_COPY_DESCRIPTOR(mem, dst, &uvc_control_ep); - if (speed == USB_SPEED_SUPER) + if (speed == USB_SPEED_SUPER + || speed == USB_SPEED_SUPER_PLUS) UVC_COPY_DESCRIPTOR(mem, dst, &uvc_ss_control_comp); UVC_COPY_DESCRIPTOR(mem, dst, &uvc_control_cs_ep); @@ -673,21 +676,13 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f) } uvc->control_ep = ep; - if (gadget_is_superspeed(c->cdev->gadget)) - ep = usb_ep_autoconfig_ss(cdev->gadget, &uvc_ss_streaming_ep, - &uvc_ss_streaming_comp); - else if (gadget_is_dualspeed(cdev->gadget)) - ep = usb_ep_autoconfig(cdev->gadget, &uvc_hs_streaming_ep); - else - ep = usb_ep_autoconfig(cdev->gadget, &uvc_fs_streaming_ep); - + ep = usb_ep_autoconfig(cdev->gadget, &uvc_fs_streaming_ep); if (!ep) { uvcg_info(f, "Unable to allocate streaming EP\n"); goto error; } uvc->video.ep = ep; - uvc_fs_streaming_ep.bEndpointAddress = uvc->video.ep->address; uvc_hs_streaming_ep.bEndpointAddress = uvc->video.ep->address; uvc_ss_streaming_ep.bEndpointAddress = uvc->video.ep->address; @@ -726,21 +721,26 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f) f->fs_descriptors = NULL; goto error; } - if (gadget_is_dualspeed(cdev->gadget)) { - f->hs_descriptors = uvc_copy_descriptors(uvc, USB_SPEED_HIGH); - if (IS_ERR(f->hs_descriptors)) { - ret = PTR_ERR(f->hs_descriptors); - f->hs_descriptors = NULL; - goto error; - } + + f->hs_descriptors = uvc_copy_descriptors(uvc, USB_SPEED_HIGH); + if (IS_ERR(f->hs_descriptors)) { + ret = PTR_ERR(f->hs_descriptors); + f->hs_descriptors = NULL; + goto error; } - if (gadget_is_superspeed(c->cdev->gadget)) { - f->ss_descriptors = uvc_copy_descriptors(uvc, USB_SPEED_SUPER); - if (IS_ERR(f->ss_descriptors)) { - ret = PTR_ERR(f->ss_descriptors); - f->ss_descriptors = NULL; - goto error; - } + + f->ss_descriptors = uvc_copy_descriptors(uvc, USB_SPEED_SUPER); + if (IS_ERR(f->ss_descriptors)) { + ret = PTR_ERR(f->ss_descriptors); + f->ss_descriptors = NULL; + goto error; + } + + f->ssp_descriptors = uvc_copy_descriptors(uvc, USB_SPEED_SUPER_PLUS); + if (IS_ERR(f->ssp_descriptors)) { + ret = PTR_ERR(f->ssp_descriptors); + f->ssp_descriptors = NULL; + goto error; } /* Preallocate control endpoint request. */ diff --git a/drivers/usb/gadget/function/u_phonet.h b/drivers/usb/gadget/function/u_phonet.h index c53233b37192..ff62ca22c40d 100644 --- a/drivers/usb/gadget/function/u_phonet.h +++ b/drivers/usb/gadget/function/u_phonet.h @@ -20,7 +20,6 @@ struct f_phonet_opts { struct net_device *gphonet_setup_default(void); void gphonet_set_gadget(struct net_device *net, struct usb_gadget *g); int gphonet_register_netdev(struct net_device *net); -int phonet_bind_config(struct usb_configuration *c, struct net_device *dev); void gphonet_cleanup(struct net_device *dev); #endif /* __U_PHONET_H */ diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c index 3c51355ccc94..b8854e8a771f 100644 --- a/drivers/usb/gadget/function/u_serial.c +++ b/drivers/usb/gadget/function/u_serial.c @@ -538,16 +538,20 @@ static int gs_alloc_requests(struct usb_ep *ep, struct list_head *head, static int gs_start_io(struct gs_port *port) { struct list_head *head = &port->read_pool; - struct usb_ep *ep = port->port_usb->out; + struct usb_ep *ep; int status; unsigned started; + if (!port->port_usb || !port->port.tty) + return -EIO; + /* Allocate RX and TX I/O buffers. We can't easily do this much * earlier (with GFP_KERNEL) because the requests are coupled to * endpoints, as are the packet sizes we'll be using. Different * configurations may use different endpoints with a given port; * and high speed vs full speed changes packet sizes too. */ + ep = port->port_usb->out; status = gs_alloc_requests(ep, head, gs_read_complete, &port->read_allocated); if (status) diff --git a/drivers/usb/gadget/function/u_serial.h b/drivers/usb/gadget/function/u_serial.h index 102a7323a1fd..901d99310bc4 100644 --- a/drivers/usb/gadget/function/u_serial.h +++ b/drivers/usb/gadget/function/u_serial.h @@ -71,8 +71,4 @@ void gserial_disconnect(struct gserial *); void gserial_suspend(struct gserial *p); void gserial_resume(struct gserial *p); -/* functions are bound to configurations by a config or gadget driver */ -int gser_bind_config(struct usb_configuration *c, u8 port_num); -int obex_bind_config(struct usb_configuration *c, u8 port_num); - #endif /* __U_SERIAL_H */ diff --git a/drivers/usb/gadget/function/uvc.h b/drivers/usb/gadget/function/uvc.h index 40226b1f7e14..289c5611e138 100644 --- a/drivers/usb/gadget/function/uvc.h +++ b/drivers/usb/gadget/function/uvc.h @@ -176,8 +176,6 @@ struct uvc_file_handle { */ extern void uvc_function_setup_continue(struct uvc_device *uvc); -extern void uvc_endpoint_stream(struct uvc_device *dev); - extern void uvc_function_connect(struct uvc_device *uvc); extern void uvc_function_disconnect(struct uvc_device *uvc); diff --git a/drivers/usb/gadget/function/uvc_video.c b/drivers/usb/gadget/function/uvc_video.c index e81865978299..91af3b1ef0d4 100644 --- a/drivers/usb/gadget/function/uvc_video.c +++ b/drivers/usb/gadget/function/uvc_video.c @@ -382,13 +382,13 @@ static void uvcg_video_pump(struct work_struct *work) { struct uvc_video *video = container_of(work, struct uvc_video, pump); struct uvc_video_queue *queue = &video->queue; + /* video->max_payload_size is only set when using bulk transfer */ + bool is_bulk = video->max_payload_size; struct usb_request *req = NULL; struct uvc_buffer *buf; unsigned long flags; + bool buf_done; int ret; - bool buf_int; - /* video->max_payload_size is only set when using bulk transfer */ - bool is_bulk = video->max_payload_size; while (video->ep->enabled) { /* @@ -414,20 +414,19 @@ static void uvcg_video_pump(struct work_struct *work) if (buf != NULL) { video->encode(req, video, buf); - /* Always interrupt for the last request of a video buffer */ - buf_int = buf->state == UVC_BUF_STATE_DONE; + buf_done = buf->state == UVC_BUF_STATE_DONE; } else if (!(queue->flags & UVC_QUEUE_DISCONNECTED) && !is_bulk) { /* * No video buffer available; the queue is still connected and - * we're traferring over ISOC. Queue a 0 length request to + * we're transferring over ISOC. Queue a 0 length request to * prevent missed ISOC transfers. */ req->length = 0; - buf_int = false; + buf_done = false; } else { /* - * Either queue has been disconnected or no video buffer - * available to bulk transfer. Either way, stop processing + * Either the queue has been disconnected or no video buffer + * available for bulk transfer. Either way, stop processing * further. */ spin_unlock_irqrestore(&queue->irqlock, flags); @@ -435,11 +434,24 @@ static void uvcg_video_pump(struct work_struct *work) } /* - * With usb3 we have more requests. This will decrease the - * interrupt load to a quarter but also catches the corner - * cases, which needs to be handled. + * With USB3 handling more requests at a higher speed, we can't + * afford to generate an interrupt for every request. Decide to + * interrupt: + * + * - When no more requests are available in the free queue, as + * this may be our last chance to refill the endpoint's + * request queue. + * + * - When this is request is the last request for the video + * buffer, as we want to start sending the next video buffer + * ASAP in case it doesn't get started already in the next + * iteration of this loop. + * + * - Four times over the length of the requests queue (as + * indicated by video->uvc_num_requests), as a trade-off + * between latency and interrupt load. */ - if (list_empty(&video->req_free) || buf_int || + if (list_empty(&video->req_free) || buf_done || !(video->req_int_count % DIV_ROUND_UP(video->uvc_num_requests, 4))) { video->req_int_count = 0; diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c index 878255a62287..1c0c61e8ba69 100644 --- a/drivers/usb/gadget/udc/core.c +++ b/drivers/usb/gadget/udc/core.c @@ -1099,16 +1099,12 @@ EXPORT_SYMBOL_GPL(usb_gadget_set_state); /* ------------------------------------------------------------------------- */ /* Acquire connect_lock before calling this function. */ -static int usb_udc_connect_control_locked(struct usb_udc *udc) __must_hold(&udc->connect_lock) +static void usb_udc_connect_control_locked(struct usb_udc *udc) __must_hold(&udc->connect_lock) { - int ret; - if (udc->vbus) - ret = usb_gadget_connect_locked(udc->gadget); + usb_gadget_connect_locked(udc->gadget); else - ret = usb_gadget_disconnect_locked(udc->gadget); - - return ret; + usb_gadget_disconnect_locked(udc->gadget); } static void vbus_event_work(struct work_struct *work) @@ -1582,21 +1578,12 @@ static int gadget_bind_driver(struct device *dev) } usb_gadget_enable_async_callbacks(udc); udc->allow_connect = true; - ret = usb_udc_connect_control_locked(udc); - if (ret) - goto err_connect_control; - + usb_udc_connect_control_locked(udc); 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); diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c index 20a00e386668..ed0a7a6817cc 100644 --- a/drivers/usb/typec/altmodes/displayport.c +++ b/drivers/usb/typec/altmodes/displayport.c @@ -302,6 +302,10 @@ static int dp_altmode_vdm(struct typec_altmode *alt, case CMD_EXIT_MODE: dp->data.status = 0; dp->data.conf = 0; + if (dp->hpd) { + dp->hpd = false; + sysfs_notify(&dp->alt->dev.kobj, "displayport", "hpd"); + } break; case DP_CMD_STATUS_UPDATE: dp->data.status = *vdo; diff --git a/drivers/usb/typec/bus.c b/drivers/usb/typec/bus.c index 31c2a3130cad..ef79217a903f 100644 --- a/drivers/usb/typec/bus.c +++ b/drivers/usb/typec/bus.c @@ -156,7 +156,20 @@ EXPORT_SYMBOL_GPL(typec_altmode_exit); */ void typec_altmode_attention(struct typec_altmode *adev, u32 vdo) { - struct typec_altmode *pdev = &to_altmode(adev)->partner->adev; + struct altmode *partner = to_altmode(adev)->partner; + struct typec_altmode *pdev; + + /* + * If partner is NULL then a NULL pointer error occurs when + * dereferencing pdev and its operations. The original upstream commit + * changes the return type so the tcpm can log when this occurs, but + * due to KMI restrictions we can only silently prevent the error for + * now. + */ + if (!partner) + return; + + pdev = &partner->adev; if (pdev->ops && pdev->ops->attention) pdev->ops->attention(pdev, vdo); diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c index 47a2c73df342..dc2dea3768fb 100644 --- a/drivers/usb/typec/ucsi/ucsi.c +++ b/drivers/usb/typec/ucsi/ucsi.c @@ -785,6 +785,7 @@ static void ucsi_handle_connector_change(struct work_struct *work) if (ret < 0) { dev_err(ucsi->dev, "%s: GET_CONNECTOR_STATUS failed (%d)\n", __func__, ret); + clear_bit(EVENT_PENDING, &con->ucsi->flags); goto out_unlock; } diff --git a/drivers/virt/Kconfig b/drivers/virt/Kconfig index c39409b69d01..41440e116e71 100644 --- a/drivers/virt/Kconfig +++ b/drivers/virt/Kconfig @@ -54,4 +54,6 @@ source "drivers/virt/coco/sev-guest/Kconfig" source "drivers/virt/gunyah/Kconfig" +source "drivers/virt/geniezone/Kconfig" + endif diff --git a/drivers/virt/geniezone/Kconfig b/drivers/virt/geniezone/Kconfig new file mode 100644 index 000000000000..2643fb8913cc --- /dev/null +++ b/drivers/virt/geniezone/Kconfig @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: GPL-2.0-only + +config MTK_GZVM + tristate "GenieZone Hypervisor driver for guest VM operation" + depends on ARM64 + help + This driver, gzvm, enables to run guest VMs on MTK GenieZone + hypervisor. It exports kvm-like interfaces for VMM (e.g., crosvm) in + order to operate guest VMs on GenieZone hypervisor. + + GenieZone hypervisor now only supports MediaTek SoC and arm64 + architecture. + + Select M if you want it be built as a module (gzvm.ko). + + If unsure, say N. diff --git a/drivers/virt/geniezone/Makefile b/drivers/virt/geniezone/Makefile new file mode 100644 index 000000000000..f62f91f02640 --- /dev/null +++ b/drivers/virt/geniezone/Makefile @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-2.0-only +# +# Makefile for GenieZone driver, this file should be include in arch's +# to avoid two ko being generated. +# + +GZVM_DIR ?= ../../../drivers/virt/geniezone + +gzvm-y := $(GZVM_DIR)/gzvm_main.o $(GZVM_DIR)/gzvm_vm.o \ + $(GZVM_DIR)/gzvm_vcpu.o $(GZVM_DIR)/gzvm_irqfd.o \ + $(GZVM_DIR)/gzvm_ioeventfd.o $(GZVM_DIR)/gzvm_mmu.o \ + $(GZVM_DIR)/gzvm_exception.o diff --git a/drivers/virt/geniezone/gzvm_common.h b/drivers/virt/geniezone/gzvm_common.h new file mode 100644 index 000000000000..c8d90fee3a18 --- /dev/null +++ b/drivers/virt/geniezone/gzvm_common.h @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2023 MediaTek Inc. + */ + +#ifndef __GZ_COMMON_H__ +#define __GZ_COMMON_H__ + +int gzvm_irqchip_inject_irq(struct gzvm *gzvm, unsigned int vcpu_idx, + u32 irq, bool level); + +#endif /* __GZVM_COMMON_H__ */ diff --git a/drivers/virt/geniezone/gzvm_exception.c b/drivers/virt/geniezone/gzvm_exception.c new file mode 100644 index 000000000000..31fdb4ae8db4 --- /dev/null +++ b/drivers/virt/geniezone/gzvm_exception.c @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2023 MediaTek Inc. + */ + +#include +#include + +/** + * gzvm_handle_guest_exception() - Handle guest exception + * @vcpu: Pointer to struct gzvm_vcpu_run in userspace + * Return: + * * true - This exception has been processed, no need to back to VMM. + * * false - This exception has not been processed, require userspace. + */ +bool gzvm_handle_guest_exception(struct gzvm_vcpu *vcpu) +{ + int ret; + + for (int i = 0; i < ARRAY_SIZE(vcpu->run->exception.reserved); i++) { + if (vcpu->run->exception.reserved[i]) + return -EINVAL; + } + + switch (vcpu->run->exception.exception) { + case GZVM_EXCEPTION_PAGE_FAULT: + ret = gzvm_handle_page_fault(vcpu); + break; + case GZVM_EXCEPTION_UNKNOWN: + fallthrough; + default: + ret = -EFAULT; + } + + if (!ret) + return true; + else + return false; +} diff --git a/drivers/virt/geniezone/gzvm_ioeventfd.c b/drivers/virt/geniezone/gzvm_ioeventfd.c new file mode 100644 index 000000000000..04b17e0b783b --- /dev/null +++ b/drivers/virt/geniezone/gzvm_ioeventfd.c @@ -0,0 +1,276 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2023 MediaTek Inc. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct gzvm_ioevent { + struct list_head list; + __u64 addr; + __u32 len; + struct eventfd_ctx *evt_ctx; + __u64 datamatch; + bool wildcard; +}; + +/** + * ioeventfd_check_collision() - Check collison assumes gzvm->slots_lock held. + * @gzvm: Pointer to gzvm. + * @p: Pointer to gzvm_ioevent. + * + * Return: + * * true - collison found + * * false - no collison + */ +static bool ioeventfd_check_collision(struct gzvm *gzvm, struct gzvm_ioevent *p) +{ + struct gzvm_ioevent *_p; + + list_for_each_entry(_p, &gzvm->ioevents, list) { + if (_p->addr == p->addr && + (!_p->len || !p->len || + (_p->len == p->len && + (_p->wildcard || p->wildcard || + _p->datamatch == p->datamatch)))) + return true; + if (p->addr >= _p->addr && p->addr < _p->addr + _p->len) + return true; + } + + return false; +} + +static void gzvm_ioevent_release(struct gzvm_ioevent *p) +{ + eventfd_ctx_put(p->evt_ctx); + list_del(&p->list); + kfree(p); +} + +static bool gzvm_ioevent_in_range(struct gzvm_ioevent *p, __u64 addr, int len, + const void *val) +{ + u64 _val; + + if (addr != p->addr) + /* address must be precise for a hit */ + return false; + + if (!p->len) + /* length = 0 means only look at the address, so always a hit */ + return true; + + if (len != p->len) + /* address-range must be precise for a hit */ + return false; + + if (p->wildcard) + /* all else equal, wildcard is always a hit */ + return true; + + /* otherwise, we have to actually compare the data */ + + WARN_ON_ONCE(!IS_ALIGNED((unsigned long)val, len)); + + switch (len) { + case 1: + _val = *(u8 *)val; + break; + case 2: + _val = *(u16 *)val; + break; + case 4: + _val = *(u32 *)val; + break; + case 8: + _val = *(u64 *)val; + break; + default: + return false; + } + + return _val == p->datamatch; +} + +static int gzvm_deassign_ioeventfd(struct gzvm *gzvm, + struct gzvm_ioeventfd *args) +{ + struct gzvm_ioevent *p, *tmp; + struct eventfd_ctx *evt_ctx; + int ret = -ENOENT; + bool wildcard; + + evt_ctx = eventfd_ctx_fdget(args->fd); + if (IS_ERR(evt_ctx)) + return PTR_ERR(evt_ctx); + + wildcard = !(args->flags & GZVM_IOEVENTFD_FLAG_DATAMATCH); + + mutex_lock(&gzvm->lock); + + list_for_each_entry_safe(p, tmp, &gzvm->ioevents, list) { + if (p->evt_ctx != evt_ctx || + p->addr != args->addr || + p->len != args->len || + p->wildcard != wildcard) + continue; + + if (!p->wildcard && p->datamatch != args->datamatch) + continue; + + gzvm_ioevent_release(p); + ret = 0; + break; + } + + mutex_unlock(&gzvm->lock); + + /* got in the front of this function */ + eventfd_ctx_put(evt_ctx); + + return ret; +} + +static int gzvm_assign_ioeventfd(struct gzvm *gzvm, struct gzvm_ioeventfd *args) +{ + struct eventfd_ctx *evt_ctx; + struct gzvm_ioevent *evt; + int ret; + + evt_ctx = eventfd_ctx_fdget(args->fd); + if (IS_ERR(evt_ctx)) + return PTR_ERR(evt_ctx); + + evt = kmalloc(sizeof(*evt), GFP_KERNEL); + if (!evt) + return -ENOMEM; + *evt = (struct gzvm_ioevent) { + .addr = args->addr, + .len = args->len, + .evt_ctx = evt_ctx, + }; + if (args->flags & GZVM_IOEVENTFD_FLAG_DATAMATCH) { + evt->datamatch = args->datamatch; + evt->wildcard = false; + } else { + evt->wildcard = true; + } + + if (ioeventfd_check_collision(gzvm, evt)) { + ret = -EEXIST; + goto err_free; + } + + mutex_lock(&gzvm->lock); + list_add_tail(&evt->list, &gzvm->ioevents); + mutex_unlock(&gzvm->lock); + + return 0; + +err_free: + kfree(evt); + eventfd_ctx_put(evt_ctx); + return ret; +} + +/** + * gzvm_ioeventfd_check_valid() - Check user arguments is valid. + * @args: Pointer to gzvm_ioeventfd. + * + * Return: + * * true if user arguments are valid. + * * false if user arguments are invalid. + */ +static bool gzvm_ioeventfd_check_valid(struct gzvm_ioeventfd *args) +{ + /* must be natural-word sized, or 0 to ignore length */ + switch (args->len) { + case 0: + case 1: + case 2: + case 4: + case 8: + break; + default: + return false; + } + + /* check for range overflow */ + if (args->addr + args->len < args->addr) + return false; + + /* check for extra flags that we don't understand */ + if (args->flags & ~GZVM_IOEVENTFD_VALID_FLAG_MASK) + return false; + + /* ioeventfd with no length can't be combined with DATAMATCH */ + if (!args->len && (args->flags & GZVM_IOEVENTFD_FLAG_DATAMATCH)) + return false; + + /* gzvm does not support pio bus ioeventfd */ + if (args->flags & GZVM_IOEVENTFD_FLAG_PIO) + return false; + + return true; +} + +/** + * gzvm_ioeventfd() - Register ioevent to ioevent list. + * @gzvm: Pointer to gzvm. + * @args: Pointer to gzvm_ioeventfd. + * + * Return: + * * 0 - Success. + * * Negative - Failure. + */ +int gzvm_ioeventfd(struct gzvm *gzvm, struct gzvm_ioeventfd *args) +{ + if (gzvm_ioeventfd_check_valid(args) == false) + return -EINVAL; + + if (args->flags & GZVM_IOEVENTFD_FLAG_DEASSIGN) + return gzvm_deassign_ioeventfd(gzvm, args); + return gzvm_assign_ioeventfd(gzvm, args); +} + +/** + * gzvm_ioevent_write() - Travers this vm's registered ioeventfd to see if + * need notifying it. + * @vcpu: Pointer to vcpu. + * @addr: mmio address. + * @len: mmio size. + * @val: Pointer to void. + * + * Return: + * * true if this io is already sent to ioeventfd's listener. + * * false if we cannot find any ioeventfd registering this mmio write. + */ +bool gzvm_ioevent_write(struct gzvm_vcpu *vcpu, __u64 addr, int len, + const void *val) +{ + struct gzvm_ioevent *e; + + list_for_each_entry(e, &vcpu->gzvm->ioevents, list) { + if (gzvm_ioevent_in_range(e, addr, len, val)) { + eventfd_signal(e->evt_ctx, 1); + return true; + } + } + return false; +} + +int gzvm_init_ioeventfd(struct gzvm *gzvm) +{ + INIT_LIST_HEAD(&gzvm->ioevents); + + return 0; +} diff --git a/drivers/virt/geniezone/gzvm_irqfd.c b/drivers/virt/geniezone/gzvm_irqfd.c new file mode 100644 index 000000000000..fe77d074cf20 --- /dev/null +++ b/drivers/virt/geniezone/gzvm_irqfd.c @@ -0,0 +1,382 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2023 MediaTek Inc. + */ + +#include +#include +#include +#include "gzvm_common.h" + +struct gzvm_irq_ack_notifier { + struct hlist_node link; + unsigned int gsi; + void (*irq_acked)(struct gzvm_irq_ack_notifier *ian); +}; + +/** + * struct gzvm_kernel_irqfd: gzvm kernel irqfd descriptor. + * @gzvm: Pointer to struct gzvm. + * @wait: Wait queue entry. + * @gsi: Used for level IRQ fast-path. + * @eventfd: Used for setup/shutdown. + * @list: struct list_head. + * @pt: struct poll_table_struct. + * @shutdown: struct work_struct. + */ +struct gzvm_kernel_irqfd { + struct gzvm *gzvm; + wait_queue_entry_t wait; + + int gsi; + + struct eventfd_ctx *eventfd; + struct list_head list; + poll_table pt; + struct work_struct shutdown; +}; + +static struct workqueue_struct *irqfd_cleanup_wq; + +/** + * irqfd_set_irq(): irqfd to inject virtual interrupt. + * @gzvm: Pointer to gzvm. + * @irq: This is spi interrupt number (starts from 0 instead of 32). + * @level: irq triggered level. + */ +static void irqfd_set_irq(struct gzvm *gzvm, u32 irq, int level) +{ + if (level) + gzvm_irqchip_inject_irq(gzvm, 0, irq, level); +} + +/** + * irqfd_shutdown() - Race-free decouple logic (ordering is critical). + * @work: Pointer to work_struct. + */ +static void irqfd_shutdown(struct work_struct *work) +{ + struct gzvm_kernel_irqfd *irqfd = + container_of(work, struct gzvm_kernel_irqfd, shutdown); + struct gzvm *gzvm = irqfd->gzvm; + u64 cnt; + + /* Make sure irqfd has been initialized in assign path. */ + synchronize_srcu(&gzvm->irq_srcu); + + /* + * Synchronize with the wait-queue and unhook ourselves to prevent + * further events. + */ + eventfd_ctx_remove_wait_queue(irqfd->eventfd, &irqfd->wait, &cnt); + + /* + * It is now safe to release the object's resources + */ + eventfd_ctx_put(irqfd->eventfd); + kfree(irqfd); +} + +/** + * irqfd_is_active() - Assumes gzvm->irqfds.lock is held. + * @irqfd: Pointer to gzvm_kernel_irqfd. + * + * Return: + * * true - irqfd is active. + */ +static bool irqfd_is_active(struct gzvm_kernel_irqfd *irqfd) +{ + return list_empty(&irqfd->list) ? false : true; +} + +/** + * irqfd_deactivate() - Mark the irqfd as inactive and schedule it for removal. + * assumes gzvm->irqfds.lock is held. + * @irqfd: Pointer to gzvm_kernel_irqfd. + */ +static void irqfd_deactivate(struct gzvm_kernel_irqfd *irqfd) +{ + if (!irqfd_is_active(irqfd)) + return; + + list_del_init(&irqfd->list); + + queue_work(irqfd_cleanup_wq, &irqfd->shutdown); +} + +/** + * irqfd_wakeup() - Callback of irqfd wait queue, would be woken by writing to + * irqfd to do virtual interrupt injection. + * @wait: Pointer to wait_queue_entry_t. + * @mode: Unused. + * @sync: Unused. + * @key: Get flags about Epoll events. + * + * Return: + * * 0 - Success + */ +static int irqfd_wakeup(wait_queue_entry_t *wait, unsigned int mode, int sync, + void *key) +{ + struct gzvm_kernel_irqfd *irqfd = + container_of(wait, struct gzvm_kernel_irqfd, wait); + __poll_t flags = key_to_poll(key); + struct gzvm *gzvm = irqfd->gzvm; + + if (flags & EPOLLIN) { + u64 cnt; + + eventfd_ctx_do_read(irqfd->eventfd, &cnt); + /* gzvm's irq injection is not blocked, don't need workq */ + irqfd_set_irq(gzvm, irqfd->gsi, 1); + } + + if (flags & EPOLLHUP) { + /* The eventfd is closing, detach from GZVM */ + unsigned long iflags; + + spin_lock_irqsave(&gzvm->irqfds.lock, iflags); + + /* + * Do more check if someone deactivated the irqfd before + * we could acquire the irqfds.lock. + */ + if (irqfd_is_active(irqfd)) + irqfd_deactivate(irqfd); + + spin_unlock_irqrestore(&gzvm->irqfds.lock, iflags); + } + + return 0; +} + +static void irqfd_ptable_queue_proc(struct file *file, wait_queue_head_t *wqh, + poll_table *pt) +{ + struct gzvm_kernel_irqfd *irqfd = + container_of(pt, struct gzvm_kernel_irqfd, pt); + add_wait_queue_priority(wqh, &irqfd->wait); +} + +static int gzvm_irqfd_assign(struct gzvm *gzvm, struct gzvm_irqfd *args) +{ + struct gzvm_kernel_irqfd *irqfd, *tmp; + struct fd f; + struct eventfd_ctx *eventfd = NULL; + int ret; + int idx; + + irqfd = kzalloc(sizeof(*irqfd), GFP_KERNEL_ACCOUNT); + if (!irqfd) + return -ENOMEM; + + irqfd->gzvm = gzvm; + irqfd->gsi = args->gsi; + + INIT_LIST_HEAD(&irqfd->list); + INIT_WORK(&irqfd->shutdown, irqfd_shutdown); + + f = fdget(args->fd); + if (!f.file) { + ret = -EBADF; + goto out; + } + + eventfd = eventfd_ctx_fileget(f.file); + if (IS_ERR(eventfd)) { + ret = PTR_ERR(eventfd); + goto fail; + } + + irqfd->eventfd = eventfd; + + /* + * Install our own custom wake-up handling so we are notified via + * a callback whenever someone signals the underlying eventfd + */ + init_waitqueue_func_entry(&irqfd->wait, irqfd_wakeup); + init_poll_funcptr(&irqfd->pt, irqfd_ptable_queue_proc); + + spin_lock_irq(&gzvm->irqfds.lock); + + ret = 0; + list_for_each_entry(tmp, &gzvm->irqfds.items, list) { + if (irqfd->eventfd != tmp->eventfd) + continue; + /* This fd is used for another irq already. */ + pr_err("already used: gsi=%d fd=%d\n", args->gsi, args->fd); + ret = -EBUSY; + spin_unlock_irq(&gzvm->irqfds.lock); + goto fail; + } + + idx = srcu_read_lock(&gzvm->irq_srcu); + + list_add_tail(&irqfd->list, &gzvm->irqfds.items); + + spin_unlock_irq(&gzvm->irqfds.lock); + + vfs_poll(f.file, &irqfd->pt); + + srcu_read_unlock(&gzvm->irq_srcu, idx); + + /* + * do not drop the file until the irqfd is fully initialized, otherwise + * we might race against the EPOLLHUP + */ + fdput(f); + return 0; + +fail: + if (eventfd && !IS_ERR(eventfd)) + eventfd_ctx_put(eventfd); + + fdput(f); + +out: + kfree(irqfd); + return ret; +} + +static void gzvm_notify_acked_gsi(struct gzvm *gzvm, int gsi) +{ + struct gzvm_irq_ack_notifier *gian; + + hlist_for_each_entry_srcu(gian, &gzvm->irq_ack_notifier_list, + link, srcu_read_lock_held(&gzvm->irq_srcu)) + if (gian->gsi == gsi) + gian->irq_acked(gian); +} + +void gzvm_notify_acked_irq(struct gzvm *gzvm, unsigned int gsi) +{ + int idx; + + idx = srcu_read_lock(&gzvm->irq_srcu); + gzvm_notify_acked_gsi(gzvm, gsi); + srcu_read_unlock(&gzvm->irq_srcu, idx); +} + +/** + * gzvm_irqfd_deassign() - Shutdown any irqfd's that match fd+gsi. + * @gzvm: Pointer to gzvm. + * @args: Pointer to gzvm_irqfd. + * + * Return: + * * 0 - Success. + * * Negative value - Failure. + */ +static int gzvm_irqfd_deassign(struct gzvm *gzvm, struct gzvm_irqfd *args) +{ + struct gzvm_kernel_irqfd *irqfd, *tmp; + struct eventfd_ctx *eventfd; + + eventfd = eventfd_ctx_fdget(args->fd); + if (IS_ERR(eventfd)) + return PTR_ERR(eventfd); + + spin_lock_irq(&gzvm->irqfds.lock); + + list_for_each_entry_safe(irqfd, tmp, &gzvm->irqfds.items, list) { + if (irqfd->eventfd == eventfd && irqfd->gsi == args->gsi) + irqfd_deactivate(irqfd); + } + + spin_unlock_irq(&gzvm->irqfds.lock); + eventfd_ctx_put(eventfd); + + /* + * Block until we know all outstanding shutdown jobs have completed + * so that we guarantee there will not be any more interrupts on this + * gsi once this deassign function returns. + */ + flush_workqueue(irqfd_cleanup_wq); + + return 0; +} + +int gzvm_irqfd(struct gzvm *gzvm, struct gzvm_irqfd *args) +{ + for (int i = 0; i < ARRAY_SIZE(args->pad); i++) { + if (args->pad[i]) + return -EINVAL; + } + + if (args->flags & + ~(GZVM_IRQFD_FLAG_DEASSIGN | GZVM_IRQFD_FLAG_RESAMPLE)) + return -EINVAL; + + if (args->flags & GZVM_IRQFD_FLAG_DEASSIGN) + return gzvm_irqfd_deassign(gzvm, args); + + return gzvm_irqfd_assign(gzvm, args); +} + +/** + * gzvm_vm_irqfd_init() - Initialize irqfd data structure per VM + * + * @gzvm: Pointer to struct gzvm. + * + * Return: + * * 0 - Success. + * * Negative - Failure. + */ +int gzvm_vm_irqfd_init(struct gzvm *gzvm) +{ + mutex_init(&gzvm->irq_lock); + + spin_lock_init(&gzvm->irqfds.lock); + INIT_LIST_HEAD(&gzvm->irqfds.items); + if (init_srcu_struct(&gzvm->irq_srcu)) + return -EINVAL; + INIT_HLIST_HEAD(&gzvm->irq_ack_notifier_list); + + return 0; +} + +/** + * gzvm_vm_irqfd_release() - This function is called as the gzvm VM fd is being + * released. Shutdown all irqfds that still remain open. + * @gzvm: Pointer to gzvm. + */ +void gzvm_vm_irqfd_release(struct gzvm *gzvm) +{ + struct gzvm_kernel_irqfd *irqfd, *tmp; + + spin_lock_irq(&gzvm->irqfds.lock); + + list_for_each_entry_safe(irqfd, tmp, &gzvm->irqfds.items, list) + irqfd_deactivate(irqfd); + + spin_unlock_irq(&gzvm->irqfds.lock); + + /* + * Block until we know all outstanding shutdown jobs have completed. + */ + flush_workqueue(irqfd_cleanup_wq); +} + +/** + * gzvm_drv_irqfd_init() - Erase flushing work items when a VM exits. + * + * Return: + * * 0 - Success. + * * Negative - Failure. + * + * Create a host-wide workqueue for issuing deferred shutdown requests + * aggregated from all vm* instances. We need our own isolated + * queue to ease flushing work items when a VM exits. + */ +int gzvm_drv_irqfd_init(void) +{ + irqfd_cleanup_wq = alloc_workqueue("gzvm-irqfd-cleanup", 0, 0); + if (!irqfd_cleanup_wq) + return -ENOMEM; + + return 0; +} + +void gzvm_drv_irqfd_exit(void) +{ + destroy_workqueue(irqfd_cleanup_wq); +} diff --git a/drivers/virt/geniezone/gzvm_main.c b/drivers/virt/geniezone/gzvm_main.c new file mode 100644 index 000000000000..badcedb6cd5f --- /dev/null +++ b/drivers/virt/geniezone/gzvm_main.c @@ -0,0 +1,144 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2023 MediaTek Inc. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * gzvm_err_to_errno() - Convert geniezone return value to standard errno + * + * @err: Return value from geniezone function return + * + * Return: Standard errno + */ +int gzvm_err_to_errno(unsigned long err) +{ + int gz_err = (int)err; + + switch (gz_err) { + case 0: + return 0; + case ERR_NO_MEMORY: + return -ENOMEM; + case ERR_INVALID_ARGS: + return -EINVAL; + case ERR_NOT_SUPPORTED: + return -EOPNOTSUPP; + case ERR_NOT_IMPLEMENTED: + return -EOPNOTSUPP; + case ERR_FAULT: + return -EFAULT; + default: + break; + } + + return -EINVAL; +} + +/** + * gzvm_dev_ioctl_check_extension() - Check if given capability is support + * or not + * + * @gzvm: Pointer to struct gzvm + * @args: Pointer in u64 from userspace + * + * Return: + * * 0 - Supported, no error + * * -EOPNOTSUPP - Unsupported + * * -EFAULT - Failed to get data from userspace + */ +long gzvm_dev_ioctl_check_extension(struct gzvm *gzvm, unsigned long args) +{ + __u64 cap; + void __user *argp = (void __user *)args; + + if (copy_from_user(&cap, argp, sizeof(uint64_t))) + return -EFAULT; + return gzvm_arch_check_extension(gzvm, cap, argp); +} + +static long gzvm_dev_ioctl(struct file *filp, unsigned int cmd, + unsigned long user_args) +{ + long ret; + + switch (cmd) { + case GZVM_CREATE_VM: + ret = gzvm_dev_ioctl_create_vm(user_args); + return ret; + case GZVM_CHECK_EXTENSION: + if (!user_args) + return -EINVAL; + ret = gzvm_dev_ioctl_check_extension(NULL, user_args); + return ret; + default: + break; + } + + return -ENOTTY; +} + +static const struct file_operations gzvm_chardev_ops = { + .unlocked_ioctl = gzvm_dev_ioctl, + .llseek = noop_llseek, +}; + +static struct miscdevice gzvm_dev = { + .minor = MISC_DYNAMIC_MINOR, + .name = KBUILD_MODNAME, + .fops = &gzvm_chardev_ops, +}; + +static int gzvm_drv_probe(struct platform_device *pdev) +{ + int ret; + + if (gzvm_arch_probe() != 0) { + dev_err(&pdev->dev, "Not found available conduit\n"); + return -ENODEV; + } + + ret = misc_register(&gzvm_dev); + if (ret) + return ret; + + return gzvm_drv_irqfd_init(); +} + +static int gzvm_drv_remove(struct platform_device *pdev) +{ + gzvm_drv_irqfd_exit(); + gzvm_destroy_all_vms(); + misc_deregister(&gzvm_dev); + return 0; +} + +static const struct of_device_id gzvm_of_match[] = { + { .compatible = "mediatek,geniezone-hyp" }, + {/* sentinel */}, +}; + +static struct platform_driver gzvm_driver = { + .probe = gzvm_drv_probe, + .remove = gzvm_drv_remove, + .driver = { + .name = KBUILD_MODNAME, + .owner = THIS_MODULE, + .of_match_table = gzvm_of_match, + }, +}; + +module_platform_driver(gzvm_driver); + +MODULE_DEVICE_TABLE(of, gzvm_of_match); +MODULE_AUTHOR("MediaTek"); +MODULE_DESCRIPTION("GenieZone interface for VMM"); +MODULE_LICENSE("GPL"); diff --git a/drivers/virt/geniezone/gzvm_mmu.c b/drivers/virt/geniezone/gzvm_mmu.c new file mode 100644 index 000000000000..c4421ca294c8 --- /dev/null +++ b/drivers/virt/geniezone/gzvm_mmu.c @@ -0,0 +1,247 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2023 MediaTek Inc. + */ + +#include + +/** + * hva_to_pa_fast() - converts hva to pa in generic fast way + * @hva: Host virtual address. + * + * Return: GZVM_PA_ERR_BAD for translation error + */ +u64 hva_to_pa_fast(u64 hva) +{ + struct page *page[1]; + u64 pfn; + + if (get_user_page_fast_only(hva, 0, page)) { + pfn = page_to_phys(page[0]); + put_page((struct page *)page); + return pfn; + } + return GZVM_PA_ERR_BAD; +} + +/** + * hva_to_pa_slow() - converts hva to pa in a slow way + * @hva: Host virtual address + * + * This function converts HVA to PA in a slow way because the target hva is not + * yet allocated and mapped in the host stage1 page table, we cannot find it + * directly from current page table. + * Thus, we have to allocate it and this operation is much slower than directly + * find via current page table. + * + * Context: This function may sleep + * Return: PA or GZVM_PA_ERR_BAD for translation error + */ +u64 hva_to_pa_slow(u64 hva) +{ + struct page *page = NULL; + u64 pfn = 0; + int npages; + + npages = get_user_pages_unlocked(hva, 1, &page, 0); + if (npages != 1) + return GZVM_PA_ERR_BAD; + + if (page) { + pfn = page_to_phys(page); + put_page(page); + return pfn; + } + + return GZVM_PA_ERR_BAD; +} + +static u64 __gzvm_gfn_to_pfn_memslot(struct gzvm_memslot *memslot, u64 gfn) +{ + u64 hva, pa; + + hva = gzvm_gfn_to_hva_memslot(memslot, gfn); + + pa = gzvm_hva_to_pa_arch(hva); + if (pa != GZVM_PA_ERR_BAD) + return PHYS_PFN(pa); + + pa = hva_to_pa_fast(hva); + if (pa != GZVM_PA_ERR_BAD) + return PHYS_PFN(pa); + + pa = hva_to_pa_slow(hva); + if (pa != GZVM_PA_ERR_BAD) + return PHYS_PFN(pa); + + return GZVM_PA_ERR_BAD; +} + +/** + * gzvm_gfn_to_pfn_memslot() - Translate gfn (guest ipa) to pfn (host pa), + * result is in @pfn + * @memslot: Pointer to struct gzvm_memslot. + * @gfn: Guest frame number. + * @pfn: Host page frame number. + * + * Return: + * * 0 - Succeed + * * -EFAULT - Failed to convert + */ +int gzvm_gfn_to_pfn_memslot(struct gzvm_memslot *memslot, u64 gfn, + u64 *pfn) +{ + u64 __pfn; + + if (!memslot) + return -EFAULT; + + __pfn = __gzvm_gfn_to_pfn_memslot(memslot, gfn); + if (__pfn == GZVM_PA_ERR_BAD) { + *pfn = 0; + return -EFAULT; + } + + *pfn = __pfn; + + return 0; +} + +static int cmp_ppages(struct rb_node *node, const struct rb_node *parent) +{ + struct gzvm_pinned_page *a = container_of(node, + struct gzvm_pinned_page, + node); + struct gzvm_pinned_page *b = container_of(parent, + struct gzvm_pinned_page, + node); + + if (a->ipa < b->ipa) + return -1; + if (a->ipa > b->ipa) + return 1; + return 0; +} + +static int gzvm_insert_ppage(struct gzvm *vm, struct gzvm_pinned_page *ppage) +{ + if (rb_find_add(&ppage->node, &vm->pinned_pages, cmp_ppages)) + return -EEXIST; + return 0; +} + +static int pin_one_page(struct gzvm *vm, unsigned long hva, u64 gpa) +{ + unsigned int flags = FOLL_HWPOISON | FOLL_LONGTERM | FOLL_WRITE; + struct gzvm_pinned_page *ppage = NULL; + struct mm_struct *mm = current->mm; + struct page *page = NULL; + + ppage = kmalloc(sizeof(*ppage), GFP_KERNEL_ACCOUNT); + if (!ppage) + return -ENOMEM; + + mmap_read_lock(mm); + pin_user_pages(hva, 1, flags, &page, NULL); + mmap_read_unlock(mm); + + if (!page) { + kfree(ppage); + return -EFAULT; + } + + ppage->page = page; + ppage->ipa = gpa; + gzvm_insert_ppage(vm, ppage); + + return 0; +} + +static int handle_block_demand_page(struct gzvm *vm, int memslot_id, u64 gfn) +{ + unsigned long hva; + u64 pfn, __gfn; + int ret, i; + + u32 nr_entries = GZVM_BLOCK_BASED_DEMAND_PAGE_SIZE / PAGE_SIZE; + struct gzvm_memslot *memslot = &vm->memslot[memslot_id]; + u64 start_gfn = ALIGN_DOWN(gfn, nr_entries); + u32 total_pages = memslot->npages; + u64 base_gfn = memslot->base_gfn; + + /* if the demand region is less than a block, adjust the nr_entries */ + if (start_gfn + nr_entries > base_gfn + total_pages) + nr_entries = base_gfn + total_pages - start_gfn; + + mutex_lock(&vm->demand_paging_lock); + for (i = 0, __gfn = start_gfn; i < nr_entries; i++, __gfn++) { + ret = gzvm_gfn_to_pfn_memslot(&vm->memslot[memslot_id], __gfn, + &pfn); + if (unlikely(ret)) { + ret = -ERR_FAULT; + goto err_unlock; + } + vm->demand_page_buffer[i] = pfn; + + hva = gzvm_gfn_to_hva_memslot(&vm->memslot[memslot_id], __gfn); + ret = pin_one_page(vm, hva, PFN_PHYS(__gfn)); + if (ret) + goto err_unlock; + } + + ret = gzvm_arch_map_guest_block(vm->vm_id, memslot_id, start_gfn, + nr_entries); + if (unlikely(ret)) { + ret = -EFAULT; + goto err_unlock; + } + +err_unlock: + mutex_unlock(&vm->demand_paging_lock); + + return ret; +} + +static int handle_single_demand_page(struct gzvm *vm, int memslot_id, u64 gfn) +{ + unsigned long hva; + int ret; + u64 pfn; + + ret = gzvm_gfn_to_pfn_memslot(&vm->memslot[memslot_id], gfn, &pfn); + if (unlikely(ret)) + return -EFAULT; + + ret = gzvm_arch_map_guest(vm->vm_id, memslot_id, pfn, gfn, 1); + if (unlikely(ret)) + return -EFAULT; + + hva = gzvm_gfn_to_hva_memslot(&vm->memslot[memslot_id], gfn); + return pin_one_page(vm, hva, PFN_PHYS(gfn)); +} + +/** + * gzvm_handle_page_fault() - Handle guest page fault, find corresponding page + * for the faulting gpa + * @vcpu: Pointer to struct gzvm_vcpu_run of the faulting vcpu + * + * Return: + * * 0 - Success to handle guest page fault + * * -EFAULT - Failed to map phys addr to guest's GPA + */ +int gzvm_handle_page_fault(struct gzvm_vcpu *vcpu) +{ + struct gzvm *vm = vcpu->gzvm; + int memslot_id; + u64 gfn; + + gfn = PHYS_PFN(vcpu->run->exception.fault_gpa); + memslot_id = gzvm_find_memslot(vm, gfn); + if (unlikely(memslot_id < 0)) + return -EFAULT; + + if (vm->demand_page_gran == PAGE_SIZE) + return handle_single_demand_page(vm, memslot_id, gfn); + else + return handle_block_demand_page(vm, memslot_id, gfn); +} diff --git a/drivers/virt/geniezone/gzvm_vcpu.c b/drivers/virt/geniezone/gzvm_vcpu.c new file mode 100644 index 000000000000..455ae2e4285c --- /dev/null +++ b/drivers/virt/geniezone/gzvm_vcpu.c @@ -0,0 +1,279 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2023 MediaTek Inc. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* maximum size needed for holding an integer */ +#define ITOA_MAX_LEN 12 + +static long gzvm_vcpu_update_one_reg(struct gzvm_vcpu *vcpu, + void __user *argp, + bool is_write) +{ + struct gzvm_one_reg reg; + void __user *reg_addr; + u64 data = 0; + u64 reg_size; + long ret; + + if (copy_from_user(®, argp, sizeof(reg))) + return -EFAULT; + + reg_addr = (void __user *)reg.addr; + reg_size = (reg.id & GZVM_REG_SIZE_MASK) >> GZVM_REG_SIZE_SHIFT; + reg_size = BIT(reg_size); + + if (reg_size != 1 && reg_size != 2 && reg_size != 4 && reg_size != 8) + return -EINVAL; + + if (is_write) { + /* GZ hypervisor would filter out invalid vcpu register access */ + if (copy_from_user(&data, reg_addr, reg_size)) + return -EFAULT; + } else { + return -EOPNOTSUPP; + } + + ret = gzvm_arch_vcpu_update_one_reg(vcpu, reg.id, is_write, &data); + + if (ret) + return ret; + + return 0; +} + +/** + * gzvm_vcpu_handle_mmio() - Handle mmio in kernel space. + * @vcpu: Pointer to vcpu. + * + * Return: + * * true - This mmio exit has been processed. + * * false - This mmio exit has not been processed, require userspace. + */ +static bool gzvm_vcpu_handle_mmio(struct gzvm_vcpu *vcpu) +{ + __u64 addr; + __u32 len; + const void *val_ptr; + + /* So far, we don't have in-kernel mmio read handler */ + if (!vcpu->run->mmio.is_write) + return false; + addr = vcpu->run->mmio.phys_addr; + len = vcpu->run->mmio.size; + val_ptr = &vcpu->run->mmio.data; + + return gzvm_ioevent_write(vcpu, addr, len, val_ptr); +} + +/** + * gzvm_vcpu_run() - Handle vcpu run ioctl, entry point to guest and exit + * point from guest + * @vcpu: Pointer to struct gzvm_vcpu + * @argp: Pointer to struct gzvm_vcpu_run in userspace + * + * Return: + * * 0 - Success. + * * Negative - Failure. + */ +static long gzvm_vcpu_run(struct gzvm_vcpu *vcpu, void __user *argp) +{ + bool need_userspace = false; + u64 exit_reason = 0; + + if (copy_from_user(vcpu->run, argp, sizeof(struct gzvm_vcpu_run))) + return -EFAULT; + + for (int i = 0; i < ARRAY_SIZE(vcpu->run->padding1); i++) { + if (vcpu->run->padding1[i]) + return -EINVAL; + } + + if (vcpu->run->immediate_exit == 1) + return -EINTR; + + while (!need_userspace && !signal_pending(current)) { + gzvm_arch_vcpu_run(vcpu, &exit_reason); + + switch (exit_reason) { + case GZVM_EXIT_MMIO: + if (!gzvm_vcpu_handle_mmio(vcpu)) + need_userspace = true; + break; + /** + * it's geniezone's responsibility to fill corresponding data + * structure + */ + case GZVM_EXIT_EXCEPTION: + if (!gzvm_handle_guest_exception(vcpu)) + need_userspace = true; + break; + case GZVM_EXIT_HYPERCALL: + fallthrough; + case GZVM_EXIT_DEBUG: + fallthrough; + case GZVM_EXIT_FAIL_ENTRY: + fallthrough; + case GZVM_EXIT_INTERNAL_ERROR: + fallthrough; + case GZVM_EXIT_SYSTEM_EVENT: + fallthrough; + case GZVM_EXIT_SHUTDOWN: + need_userspace = true; + break; + case GZVM_EXIT_IRQ: + fallthrough; + case GZVM_EXIT_GZ: + break; + case GZVM_EXIT_UNKNOWN: + fallthrough; + default: + pr_err("vcpu unknown exit\n"); + need_userspace = true; + goto out; + } + } + +out: + if (copy_to_user(argp, vcpu->run, sizeof(struct gzvm_vcpu_run))) + return -EFAULT; + if (signal_pending(current)) { + // invoke hvc to inform gz to map memory + gzvm_arch_inform_exit(vcpu->gzvm->vm_id); + return -ERESTARTSYS; + } + return 0; +} + +static long gzvm_vcpu_ioctl(struct file *filp, unsigned int ioctl, + unsigned long arg) +{ + int ret = -ENOTTY; + void __user *argp = (void __user *)arg; + struct gzvm_vcpu *vcpu = filp->private_data; + + switch (ioctl) { + case GZVM_RUN: + ret = gzvm_vcpu_run(vcpu, argp); + break; + case GZVM_GET_ONE_REG: + /* !is_write */ + ret = -EOPNOTSUPP; + break; + case GZVM_SET_ONE_REG: + /* is_write */ + ret = gzvm_vcpu_update_one_reg(vcpu, argp, true); + break; + default: + break; + } + + return ret; +} + +static const struct file_operations gzvm_vcpu_fops = { + .unlocked_ioctl = gzvm_vcpu_ioctl, + .llseek = noop_llseek, +}; + +/* caller must hold the vm lock */ +static void gzvm_destroy_vcpu(struct gzvm_vcpu *vcpu) +{ + if (!vcpu) + return; + + gzvm_arch_destroy_vcpu(vcpu->gzvm->vm_id, vcpu->vcpuid); + /* clean guest's data */ + memset(vcpu->run, 0, GZVM_VCPU_RUN_MAP_SIZE); + free_pages_exact(vcpu->run, GZVM_VCPU_RUN_MAP_SIZE); + kfree(vcpu); +} + +/** + * gzvm_destroy_vcpus() - Destroy all vcpus, caller has to hold the vm lock + * + * @gzvm: vm struct that owns the vcpus + */ +void gzvm_destroy_vcpus(struct gzvm *gzvm) +{ + int i; + + for (i = 0; i < GZVM_MAX_VCPUS; i++) { + gzvm_destroy_vcpu(gzvm->vcpus[i]); + gzvm->vcpus[i] = NULL; + } +} + +/* create_vcpu_fd() - Allocates an inode for the vcpu. */ +static int create_vcpu_fd(struct gzvm_vcpu *vcpu) +{ + /* sizeof("gzvm-vcpu:") + max(strlen(itoa(vcpuid))) + null */ + char name[10 + ITOA_MAX_LEN + 1]; + + snprintf(name, sizeof(name), "gzvm-vcpu:%d", vcpu->vcpuid); + return anon_inode_getfd(name, &gzvm_vcpu_fops, vcpu, O_RDWR | O_CLOEXEC); +} + +/** + * gzvm_vm_ioctl_create_vcpu() - for GZVM_CREATE_VCPU + * @gzvm: Pointer to struct gzvm + * @cpuid: equals arg + * + * Return: Fd of vcpu, negative errno if error occurs + */ +int gzvm_vm_ioctl_create_vcpu(struct gzvm *gzvm, u32 cpuid) +{ + struct gzvm_vcpu *vcpu; + int ret; + + if (cpuid >= GZVM_MAX_VCPUS) + return -EINVAL; + + vcpu = kzalloc(sizeof(*vcpu), GFP_KERNEL); + if (!vcpu) + return -ENOMEM; + + /** + * Allocate 2 pages for data sharing between driver and gz hypervisor + * + * |- page 0 -|- page 1 -| + * |gzvm_vcpu_run|......|hwstate|.......| + * + */ + vcpu->run = alloc_pages_exact(GZVM_VCPU_RUN_MAP_SIZE, + GFP_KERNEL_ACCOUNT | __GFP_ZERO); + if (!vcpu->run) { + ret = -ENOMEM; + goto free_vcpu; + } + vcpu->hwstate = (void *)vcpu->run + PAGE_SIZE; + vcpu->vcpuid = cpuid; + vcpu->gzvm = gzvm; + mutex_init(&vcpu->lock); + + ret = gzvm_arch_create_vcpu(gzvm->vm_id, vcpu->vcpuid, vcpu->run); + if (ret < 0) + goto free_vcpu_run; + + ret = create_vcpu_fd(vcpu); + if (ret < 0) + goto free_vcpu_run; + gzvm->vcpus[cpuid] = vcpu; + + return ret; + +free_vcpu_run: + free_pages_exact(vcpu->run, GZVM_VCPU_RUN_MAP_SIZE); +free_vcpu: + kfree(vcpu); + return ret; +} diff --git a/drivers/virt/geniezone/gzvm_vm.c b/drivers/virt/geniezone/gzvm_vm.c new file mode 100644 index 000000000000..a7d43bedfad0 --- /dev/null +++ b/drivers/virt/geniezone/gzvm_vm.c @@ -0,0 +1,468 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2023 MediaTek Inc. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "gzvm_common.h" + +static DEFINE_MUTEX(gzvm_list_lock); +static LIST_HEAD(gzvm_list); + +u64 gzvm_gfn_to_hva_memslot(struct gzvm_memslot *memslot, u64 gfn) +{ + u64 offset = gfn - memslot->base_gfn; + + return memslot->userspace_addr + offset * PAGE_SIZE; +} + +/** + * gzvm_find_memslot() - Find memslot containing this @gpa + * @vm: Pointer to struct gzvm + * @gfn: Guest frame number + * + * Return: + * * >=0 - Index of memslot + * * -EFAULT - Not found + */ +int gzvm_find_memslot(struct gzvm *vm, u64 gfn) +{ + int i; + + for (i = 0; i < GZVM_MAX_MEM_REGION; i++) { + if (vm->memslot[i].npages == 0) + continue; + + if (gfn >= vm->memslot[i].base_gfn && + gfn < vm->memslot[i].base_gfn + vm->memslot[i].npages) + return i; + } + + return -EFAULT; +} + +/** + * register_memslot_addr_range() - Register memory region to GenieZone + * @gzvm: Pointer to struct gzvm + * @memslot: Pointer to struct gzvm_memslot + * + * Return: 0 for success, negative number for error + */ +static int +register_memslot_addr_range(struct gzvm *gzvm, struct gzvm_memslot *memslot) +{ + struct gzvm_memory_region_ranges *region; + u32 buf_size = PAGE_SIZE * 2; + u64 gfn; + + region = alloc_pages_exact(buf_size, GFP_KERNEL); + if (!region) + return -ENOMEM; + + region->slot = memslot->slot_id; + region->total_pages = memslot->npages; + gfn = memslot->base_gfn; + region->gpa = PFN_PHYS(gfn); + + if (gzvm_arch_set_memregion(gzvm->vm_id, buf_size, + virt_to_phys(region))) { + pr_err("Failed to register memregion to hypervisor\n"); + free_pages_exact(region, buf_size); + return -EFAULT; + } + + free_pages_exact(region, buf_size); + return 0; +} + +/** + * gzvm_vm_ioctl_set_memory_region() - Set memory region of guest + * @gzvm: Pointer to struct gzvm. + * @mem: Input memory region from user. + * + * Return: 0 for success, negative number for error + * + * -EXIO - The memslot is out-of-range + * -EFAULT - Cannot find corresponding vma + * -EINVAL - Region size and VMA size mismatch + */ +static int +gzvm_vm_ioctl_set_memory_region(struct gzvm *gzvm, + struct gzvm_userspace_memory_region *mem) +{ + int ret; + struct vm_area_struct *vma; + struct gzvm_memslot *memslot; + unsigned long size; + __u32 slot; + + slot = mem->slot; + if (slot >= GZVM_MAX_MEM_REGION) + return -ENXIO; + memslot = &gzvm->memslot[slot]; + + vma = vma_lookup(gzvm->mm, mem->userspace_addr); + if (!vma) + return -EFAULT; + + size = vma->vm_end - vma->vm_start; + if (size != mem->memory_size) + return -EINVAL; + + memslot->base_gfn = __phys_to_pfn(mem->guest_phys_addr); + memslot->npages = size >> PAGE_SHIFT; + memslot->userspace_addr = mem->userspace_addr; + memslot->vma = vma; + memslot->flags = mem->flags; + memslot->slot_id = mem->slot; + + ret = gzvm_arch_memregion_purpose(gzvm, mem); + if (ret) { + pr_err("Failed to config memory region for the specified purpose\n"); + return -EFAULT; + } + return register_memslot_addr_range(gzvm, memslot); +} + +int gzvm_irqchip_inject_irq(struct gzvm *gzvm, unsigned int vcpu_idx, + u32 irq, bool level) +{ + return gzvm_arch_inject_irq(gzvm, vcpu_idx, irq, level); +} + +static int gzvm_vm_ioctl_irq_line(struct gzvm *gzvm, + struct gzvm_irq_level *irq_level) +{ + u32 irq = irq_level->irq; + u32 vcpu_idx, vcpu2_idx, irq_num; + bool level = irq_level->level; + + vcpu_idx = FIELD_GET(GZVM_IRQ_LINE_VCPU, irq); + vcpu2_idx = FIELD_GET(GZVM_IRQ_LINE_VCPU2, irq) * (GZVM_IRQ_VCPU_MASK + 1); + irq_num = FIELD_GET(GZVM_IRQ_LINE_NUM, irq); + + return gzvm_irqchip_inject_irq(gzvm, vcpu_idx + vcpu2_idx, irq_num, + level); +} + +static int gzvm_vm_ioctl_create_device(struct gzvm *gzvm, void __user *argp) +{ + struct gzvm_create_device *gzvm_dev; + void *dev_data = NULL; + int ret; + + gzvm_dev = (struct gzvm_create_device *)alloc_pages_exact(PAGE_SIZE, + GFP_KERNEL); + if (!gzvm_dev) + return -ENOMEM; + if (copy_from_user(gzvm_dev, argp, sizeof(*gzvm_dev))) { + ret = -EFAULT; + goto err_free_dev; + } + + if (gzvm_dev->attr_addr != 0 && gzvm_dev->attr_size != 0) { + size_t attr_size = gzvm_dev->attr_size; + void __user *attr_addr = (void __user *)gzvm_dev->attr_addr; + + /* Size of device specific data should not be over a page. */ + if (attr_size > PAGE_SIZE) + return -EINVAL; + + dev_data = alloc_pages_exact(attr_size, GFP_KERNEL); + if (!dev_data) { + ret = -ENOMEM; + goto err_free_dev; + } + + if (copy_from_user(dev_data, attr_addr, attr_size)) { + ret = -EFAULT; + goto err_free_dev_data; + } + gzvm_dev->attr_addr = virt_to_phys(dev_data); + } + + ret = gzvm_arch_create_device(gzvm->vm_id, gzvm_dev); +err_free_dev_data: + if (dev_data) + free_pages_exact(dev_data, 0); +err_free_dev: + free_pages_exact(gzvm_dev, 0); + return ret; +} + +static int gzvm_vm_ioctl_enable_cap(struct gzvm *gzvm, + struct gzvm_enable_cap *cap, + void __user *argp) +{ + return gzvm_vm_ioctl_arch_enable_cap(gzvm, cap, argp); +} + +/* gzvm_vm_ioctl() - Ioctl handler of VM FD */ +static long gzvm_vm_ioctl(struct file *filp, unsigned int ioctl, + unsigned long arg) +{ + long ret; + void __user *argp = (void __user *)arg; + struct gzvm *gzvm = filp->private_data; + + switch (ioctl) { + case GZVM_CHECK_EXTENSION: { + ret = gzvm_dev_ioctl_check_extension(gzvm, arg); + break; + } + case GZVM_CREATE_VCPU: { + ret = gzvm_vm_ioctl_create_vcpu(gzvm, arg); + break; + } + case GZVM_SET_USER_MEMORY_REGION: { + struct gzvm_userspace_memory_region userspace_mem; + + if (copy_from_user(&userspace_mem, argp, sizeof(userspace_mem))) { + ret = -EFAULT; + goto out; + } + ret = gzvm_vm_ioctl_set_memory_region(gzvm, &userspace_mem); + break; + } + case GZVM_IRQ_LINE: { + struct gzvm_irq_level irq_event; + + if (copy_from_user(&irq_event, argp, sizeof(irq_event))) { + ret = -EFAULT; + goto out; + } + ret = gzvm_vm_ioctl_irq_line(gzvm, &irq_event); + break; + } + case GZVM_CREATE_DEVICE: { + ret = gzvm_vm_ioctl_create_device(gzvm, argp); + break; + } + case GZVM_IRQFD: { + struct gzvm_irqfd data; + + if (copy_from_user(&data, argp, sizeof(data))) { + ret = -EFAULT; + goto out; + } + ret = gzvm_irqfd(gzvm, &data); + break; + } + case GZVM_IOEVENTFD: { + struct gzvm_ioeventfd data; + + if (copy_from_user(&data, argp, sizeof(data))) { + ret = -EFAULT; + goto out; + } + ret = gzvm_ioeventfd(gzvm, &data); + break; + } + case GZVM_ENABLE_CAP: { + struct gzvm_enable_cap cap; + + if (copy_from_user(&cap, argp, sizeof(cap))) { + ret = -EFAULT; + goto out; + } + ret = gzvm_vm_ioctl_enable_cap(gzvm, &cap, argp); + break; + } + case GZVM_SET_DTB_CONFIG: { + struct gzvm_dtb_config cfg; + + if (copy_from_user(&cfg, argp, sizeof(cfg))) { + ret = -EFAULT; + goto out; + } + ret = gzvm_arch_set_dtb_config(gzvm, &cfg); + break; + } + default: + ret = -ENOTTY; + } +out: + return ret; +} + +static void gzvm_destroy_ppage(struct gzvm *gzvm) +{ + struct gzvm_pinned_page *ppage; + struct rb_node *node; + + node = rb_first(&gzvm->pinned_pages); + while (node) { + ppage = rb_entry(node, struct gzvm_pinned_page, node); + unpin_user_pages_dirty_lock(&ppage->page, 1, true); + node = rb_next(node); + rb_erase(&ppage->node, &gzvm->pinned_pages); + kfree(ppage); + } +} + +static void gzvm_destroy_vm(struct gzvm *gzvm) +{ + size_t allocated_size; + + pr_debug("VM-%u is going to be destroyed\n", gzvm->vm_id); + + mutex_lock(&gzvm->lock); + + gzvm_vm_irqfd_release(gzvm); + gzvm_destroy_vcpus(gzvm); + gzvm_arch_destroy_vm(gzvm->vm_id); + + mutex_lock(&gzvm_list_lock); + list_del(&gzvm->vm_list); + mutex_unlock(&gzvm_list_lock); + + if (gzvm->demand_page_buffer) { + allocated_size = GZVM_BLOCK_BASED_DEMAND_PAGE_SIZE / PAGE_SIZE * sizeof(u64); + free_pages_exact(gzvm->demand_page_buffer, allocated_size); + } + + mutex_unlock(&gzvm->lock); + + gzvm_destroy_ppage(gzvm); + + kfree(gzvm); +} + +static int gzvm_vm_release(struct inode *inode, struct file *filp) +{ + struct gzvm *gzvm = filp->private_data; + + gzvm_destroy_vm(gzvm); + return 0; +} + +static const struct file_operations gzvm_vm_fops = { + .release = gzvm_vm_release, + .unlocked_ioctl = gzvm_vm_ioctl, + .llseek = noop_llseek, +}; + +/** + * setup_vm_demand_paging - Query hypervisor suitable demand page size and set + * @vm: gzvm instance for setting up demand page size + * + * Return: void + */ +static void setup_vm_demand_paging(struct gzvm *vm) +{ + u32 buf_size = GZVM_BLOCK_BASED_DEMAND_PAGE_SIZE / PAGE_SIZE * sizeof(u64); + struct gzvm_enable_cap cap = {0}; + void *buffer; + int ret; + + mutex_init(&vm->demand_paging_lock); + buffer = alloc_pages_exact(buf_size, GFP_KERNEL); + if (!buffer) { + /* Fall back to use default page size for demand paging */ + vm->demand_page_gran = PAGE_SIZE; + vm->demand_page_buffer = NULL; + return; + } + + cap.cap = GZVM_CAP_BLOCK_BASED_DEMAND_PAGING; + cap.args[0] = GZVM_BLOCK_BASED_DEMAND_PAGE_SIZE; + cap.args[1] = (__u64)virt_to_phys(buffer); + /* demand_page_buffer is freed when destroy VM */ + vm->demand_page_buffer = buffer; + + ret = gzvm_vm_ioctl_enable_cap(vm, &cap, NULL); + if (ret == 0) { + vm->demand_page_gran = GZVM_BLOCK_BASED_DEMAND_PAGE_SIZE; + /* freed when destroy vm */ + vm->demand_page_buffer = buffer; + } else { + vm->demand_page_gran = PAGE_SIZE; + vm->demand_page_buffer = NULL; + free_pages_exact(buffer, buf_size); + } +} + +static struct gzvm *gzvm_create_vm(unsigned long vm_type) +{ + int ret; + struct gzvm *gzvm; + + gzvm = kzalloc(sizeof(*gzvm), GFP_KERNEL); + if (!gzvm) + return ERR_PTR(-ENOMEM); + + ret = gzvm_arch_create_vm(vm_type); + if (ret < 0) { + kfree(gzvm); + return ERR_PTR(ret); + } + + gzvm->vm_id = ret; + gzvm->mm = current->mm; + mutex_init(&gzvm->lock); + gzvm->pinned_pages = RB_ROOT; + + ret = gzvm_vm_irqfd_init(gzvm); + if (ret) { + pr_err("Failed to initialize irqfd\n"); + kfree(gzvm); + return ERR_PTR(ret); + } + + ret = gzvm_init_ioeventfd(gzvm); + if (ret) { + pr_err("Failed to initialize ioeventfd\n"); + kfree(gzvm); + return ERR_PTR(ret); + } + + setup_vm_demand_paging(gzvm); + + mutex_lock(&gzvm_list_lock); + list_add(&gzvm->vm_list, &gzvm_list); + mutex_unlock(&gzvm_list_lock); + + pr_debug("VM-%u is created\n", gzvm->vm_id); + + return gzvm; +} + +/** + * gzvm_dev_ioctl_create_vm - Create vm fd + * @vm_type: VM type. Only supports Linux VM now. + * + * Return: fd of vm, negative if error + */ +int gzvm_dev_ioctl_create_vm(unsigned long vm_type) +{ + struct gzvm *gzvm; + + gzvm = gzvm_create_vm(vm_type); + if (IS_ERR(gzvm)) + return PTR_ERR(gzvm); + + return anon_inode_getfd("gzvm-vm", &gzvm_vm_fops, gzvm, + O_RDWR | O_CLOEXEC); +} + +void gzvm_destroy_all_vms(void) +{ + struct gzvm *gzvm, *tmp; + + mutex_lock(&gzvm_list_lock); + if (list_empty(&gzvm_list)) + goto out; + + list_for_each_entry_safe(gzvm, tmp, &gzvm_list, vm_list) + gzvm_destroy_vm(gzvm); + +out: + mutex_unlock(&gzvm_list_lock); +} diff --git a/drivers/virt/gunyah/rsc_mgr.c b/drivers/virt/gunyah/rsc_mgr.c index ab29e7687e3b..170a2d37da68 100644 --- a/drivers/virt/gunyah/rsc_mgr.c +++ b/drivers/virt/gunyah/rsc_mgr.c @@ -300,7 +300,7 @@ struct gh_resource *gh_rm_alloc_resource(struct gh_rm *rm, struct gh_rm_hyp_reso ghrsc->capid = le64_to_cpu(hyp_resource->cap_id); ghrsc->irq = IRQ_NOTCONNECTED; ghrsc->rm_label = le32_to_cpu(hyp_resource->resource_label); - if (hyp_resource->virq) { + if (hyp_resource->virq && hyp_resource->virq != GH_RM_RESOURCE_NO_VIRQ) { struct gh_irq_chip_data irq_data = { .gh_virq = le32_to_cpu(hyp_resource->virq), }; @@ -567,10 +567,7 @@ static int gh_rm_send_request(struct gh_rm *rm, u32 message_id, hdr_template.seq = cpu_to_le16(connection->reply.seq); hdr_template.msg_id = cpu_to_le32(message_id); - ret = mutex_lock_interruptible(&rm->send_lock); - if (ret) - return ret; - + mutex_lock(&rm->send_lock); do { msg = kmem_cache_zalloc(rm->cache, GFP_KERNEL); if (!msg) { diff --git a/fs/erofs/data.c b/fs/erofs/data.c index c7bed8ad7d06..83532525282e 100644 --- a/fs/erofs/data.c +++ b/fs/erofs/data.c @@ -29,11 +29,15 @@ void erofs_put_metabuf(struct erofs_buf *buf) buf->page = NULL; } +/* + * Derive the block size from inode->i_blkbits to make compatible with + * anonymous inode in fscache mode. + */ void *erofs_bread(struct erofs_buf *buf, struct inode *inode, erofs_blk_t blkaddr, enum erofs_kmap_type type) { + erofs_off_t offset = (erofs_off_t)blkaddr << inode->i_blkbits; struct address_space *const mapping = inode->i_mapping; - erofs_off_t offset = blknr_to_addr(blkaddr); pgoff_t index = offset >> PAGE_SHIFT; struct page *page = buf->page; struct folio *folio; @@ -84,33 +88,32 @@ static int erofs_map_blocks_flatmode(struct inode *inode, erofs_blk_t nblocks, lastblk; u64 offset = map->m_la; struct erofs_inode *vi = EROFS_I(inode); + struct super_block *sb = inode->i_sb; bool tailendpacking = (vi->datalayout == EROFS_INODE_FLAT_INLINE); - nblocks = DIV_ROUND_UP(inode->i_size, EROFS_BLKSIZ); + nblocks = erofs_iblks(inode); lastblk = nblocks - tailendpacking; /* there is no hole in flatmode */ map->m_flags = EROFS_MAP_MAPPED; - if (offset < blknr_to_addr(lastblk)) { - map->m_pa = blknr_to_addr(vi->raw_blkaddr) + map->m_la; - map->m_plen = blknr_to_addr(lastblk) - offset; + if (offset < erofs_pos(sb, lastblk)) { + map->m_pa = erofs_pos(sb, vi->raw_blkaddr) + map->m_la; + map->m_plen = erofs_pos(sb, lastblk) - offset; } else if (tailendpacking) { map->m_pa = erofs_iloc(inode) + vi->inode_isize + - vi->xattr_isize + erofs_blkoff(offset); + vi->xattr_isize + erofs_blkoff(sb, offset); map->m_plen = inode->i_size - offset; /* inline data should be located in the same meta block */ - if (erofs_blkoff(map->m_pa) + map->m_plen > EROFS_BLKSIZ) { - erofs_err(inode->i_sb, - "inline data cross block boundary @ nid %llu", + if (erofs_blkoff(sb, map->m_pa) + map->m_plen > sb->s_blocksize) { + erofs_err(sb, "inline data cross block boundary @ nid %llu", vi->nid); DBG_BUGON(1); return -EFSCORRUPTED; } map->m_flags |= EROFS_MAP_META; } else { - erofs_err(inode->i_sb, - "internal error @ nid: %llu (size %llu), m_la 0x%llx", + erofs_err(sb, "internal error @ nid: %llu (size %llu), m_la 0x%llx", vi->nid, inode->i_size, map->m_la); DBG_BUGON(1); return -EIO; @@ -154,29 +157,29 @@ int erofs_map_blocks(struct inode *inode, pos = ALIGN(erofs_iloc(inode) + vi->inode_isize + vi->xattr_isize, unit) + unit * chunknr; - kaddr = erofs_read_metabuf(&buf, sb, erofs_blknr(pos), EROFS_KMAP); + kaddr = erofs_read_metabuf(&buf, sb, erofs_blknr(sb, pos), EROFS_KMAP); if (IS_ERR(kaddr)) { err = PTR_ERR(kaddr); goto out; } map->m_la = chunknr << vi->chunkbits; map->m_plen = min_t(erofs_off_t, 1UL << vi->chunkbits, - roundup(inode->i_size - map->m_la, EROFS_BLKSIZ)); + round_up(inode->i_size - map->m_la, sb->s_blocksize)); /* handle block map */ if (!(vi->chunkformat & EROFS_CHUNK_FORMAT_INDEXES)) { - __le32 *blkaddr = kaddr + erofs_blkoff(pos); + __le32 *blkaddr = kaddr + erofs_blkoff(sb, pos); if (le32_to_cpu(*blkaddr) == EROFS_NULL_ADDR) { map->m_flags = 0; } else { - map->m_pa = blknr_to_addr(le32_to_cpu(*blkaddr)); + map->m_pa = erofs_pos(sb, le32_to_cpu(*blkaddr)); map->m_flags = EROFS_MAP_MAPPED; } goto out_unlock; } /* parse chunk indexes */ - idx = kaddr + erofs_blkoff(pos); + idx = kaddr + erofs_blkoff(sb, pos); switch (le32_to_cpu(idx->blkaddr)) { case EROFS_NULL_ADDR: map->m_flags = 0; @@ -184,7 +187,7 @@ int erofs_map_blocks(struct inode *inode, default: map->m_deviceid = le16_to_cpu(idx->device_id) & EROFS_SB(sb)->device_id_mask; - map->m_pa = blknr_to_addr(le32_to_cpu(idx->blkaddr)); + map->m_pa = erofs_pos(sb, le32_to_cpu(idx->blkaddr)); map->m_flags = EROFS_MAP_MAPPED; break; } @@ -228,8 +231,8 @@ int erofs_map_dev(struct super_block *sb, struct erofs_map_dev *map) if (!dif->mapped_blkaddr) continue; - startoff = blknr_to_addr(dif->mapped_blkaddr); - length = blknr_to_addr(dif->blocks); + startoff = erofs_pos(sb, dif->mapped_blkaddr); + length = erofs_pos(sb, dif->blocks); if (map->m_pa >= startoff && map->m_pa < startoff + length) { @@ -250,6 +253,7 @@ static int erofs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, unsigned int flags, struct iomap *iomap, struct iomap *srcmap) { int ret; + struct super_block *sb = inode->i_sb; struct erofs_map_blocks map; struct erofs_map_dev mdev; @@ -264,7 +268,7 @@ static int erofs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, .m_deviceid = map.m_deviceid, .m_pa = map.m_pa, }; - ret = erofs_map_dev(inode->i_sb, &mdev); + ret = erofs_map_dev(sb, &mdev); if (ret) return ret; @@ -290,11 +294,11 @@ static int erofs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, struct erofs_buf buf = __EROFS_BUF_INITIALIZER; iomap->type = IOMAP_INLINE; - ptr = erofs_read_metabuf(&buf, inode->i_sb, - erofs_blknr(mdev.m_pa), EROFS_KMAP); + ptr = erofs_read_metabuf(&buf, sb, + erofs_blknr(sb, mdev.m_pa), EROFS_KMAP); if (IS_ERR(ptr)) return PTR_ERR(ptr); - iomap->inline_data = ptr + erofs_blkoff(mdev.m_pa); + iomap->inline_data = ptr + erofs_blkoff(sb, mdev.m_pa); iomap->private = buf.base; } else { iomap->type = IOMAP_MAPPED; diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c index 51b7ac7166d9..7021e2cf6146 100644 --- a/fs/erofs/decompressor.c +++ b/fs/erofs/decompressor.c @@ -42,7 +42,7 @@ int z_erofs_load_lz4_config(struct super_block *sb, if (!sbi->lz4.max_pclusterblks) { sbi->lz4.max_pclusterblks = 1; /* reserved case */ } else if (sbi->lz4.max_pclusterblks > - Z_EROFS_PCLUSTER_MAX_SIZE / EROFS_BLKSIZ) { + erofs_blknr(sb, Z_EROFS_PCLUSTER_MAX_SIZE)) { erofs_err(sb, "too large lz4 pclusterblks %u", sbi->lz4.max_pclusterblks); return -EINVAL; @@ -221,13 +221,13 @@ static int z_erofs_lz4_decompress_mem(struct z_erofs_lz4_decompress_ctx *ctx, support_0padding = true; ret = z_erofs_fixup_insize(rq, headpage + rq->pageofs_in, min_t(unsigned int, rq->inputsize, - EROFS_BLKSIZ - rq->pageofs_in)); + rq->sb->s_blocksize - rq->pageofs_in)); if (ret) { kunmap_atomic(headpage); return ret; } may_inplace = !((rq->pageofs_in + rq->inputsize) & - (EROFS_BLKSIZ - 1)); + (rq->sb->s_blocksize - 1)); } inputmargin = rq->pageofs_in; diff --git a/fs/erofs/decompressor_lzma.c b/fs/erofs/decompressor_lzma.c index 5cd612a8f858..2fd49091c1bb 100644 --- a/fs/erofs/decompressor_lzma.c +++ b/fs/erofs/decompressor_lzma.c @@ -166,8 +166,8 @@ int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, /* 1. get the exact LZMA compressed size */ kin = kmap(*rq->in); err = z_erofs_fixup_insize(rq, kin + rq->pageofs_in, - min_t(unsigned int, rq->inputsize, - EROFS_BLKSIZ - rq->pageofs_in)); + min_t(unsigned int, rq->inputsize, + rq->sb->s_blocksize - rq->pageofs_in)); if (err) { kunmap(*rq->in); return err; diff --git a/fs/erofs/dir.c b/fs/erofs/dir.c index ecf28f66b97d..966a88cc529e 100644 --- a/fs/erofs/dir.c +++ b/fs/erofs/dir.c @@ -67,9 +67,11 @@ static int erofs_readdir(struct file *f, struct dir_context *ctx) { struct inode *dir = file_inode(f); struct erofs_buf buf = __EROFS_BUF_INITIALIZER; + struct super_block *sb = dir->i_sb; + unsigned long bsz = sb->s_blocksize; const size_t dirsize = i_size_read(dir); - unsigned int i = ctx->pos / EROFS_BLKSIZ; - unsigned int ofs = ctx->pos % EROFS_BLKSIZ; + unsigned int i = erofs_blknr(sb, ctx->pos); + unsigned int ofs = erofs_blkoff(sb, ctx->pos); int err = 0; bool initial = true; @@ -79,32 +81,28 @@ static int erofs_readdir(struct file *f, struct dir_context *ctx) de = erofs_bread(&buf, dir, i, EROFS_KMAP); if (IS_ERR(de)) { - erofs_err(dir->i_sb, - "fail to readdir of logical block %u of nid %llu", + erofs_err(sb, "fail to readdir of logical block %u of nid %llu", i, EROFS_I(dir)->nid); err = PTR_ERR(de); break; } nameoff = le16_to_cpu(de->nameoff); - if (nameoff < sizeof(struct erofs_dirent) || - nameoff >= EROFS_BLKSIZ) { - erofs_err(dir->i_sb, - "invalid de[0].nameoff %u @ nid %llu", + if (nameoff < sizeof(struct erofs_dirent) || nameoff >= bsz) { + erofs_err(sb, "invalid de[0].nameoff %u @ nid %llu", nameoff, EROFS_I(dir)->nid); err = -EFSCORRUPTED; break; } - maxsize = min_t(unsigned int, - dirsize - ctx->pos + ofs, EROFS_BLKSIZ); + maxsize = min_t(unsigned int, dirsize - ctx->pos + ofs, bsz); /* search dirents at the arbitrary position */ if (initial) { initial = false; ofs = roundup(ofs, sizeof(struct erofs_dirent)); - ctx->pos = blknr_to_addr(i) + ofs; + ctx->pos = erofs_pos(sb, i) + ofs; if (ofs >= nameoff) goto skip_this; } @@ -114,7 +112,7 @@ static int erofs_readdir(struct file *f, struct dir_context *ctx) if (err) break; skip_this: - ctx->pos = blknr_to_addr(i) + maxsize; + ctx->pos = erofs_pos(sb, i) + maxsize; ++i; ofs = 0; } diff --git a/fs/erofs/erofs_fs.h b/fs/erofs/erofs_fs.h index dbcd24371002..44876a97cabd 100644 --- a/fs/erofs/erofs_fs.h +++ b/fs/erofs/erofs_fs.h @@ -53,7 +53,7 @@ struct erofs_super_block { __le32 magic; /* file system magic number */ __le32 checksum; /* crc32c(super_block) */ __le32 feature_compat; - __u8 blkszbits; /* support block_size == PAGE_SIZE only */ + __u8 blkszbits; /* filesystem block size in bit shift */ __u8 sb_extslots; /* superblock size = 128 + sb_extslots * 16 */ __le16 root_nid; /* nid of root directory */ @@ -75,7 +75,8 @@ struct erofs_super_block { } __packed u1; __le16 extra_devices; /* # of devices besides the primary device */ __le16 devt_slotoff; /* startoff = devt_slotoff * devt_slotsize */ - __u8 reserved[6]; + __u8 dirblkbits; /* directory block size in bit shift */ + __u8 reserved[5]; __le64 packed_nid; /* nid of the special packed inode */ __u8 reserved2[24]; }; diff --git a/fs/erofs/fscache.c b/fs/erofs/fscache.c index 076cf8a149ef..7ce60ad121f0 100644 --- a/fs/erofs/fscache.c +++ b/fs/erofs/fscache.c @@ -282,8 +282,8 @@ static int erofs_fscache_data_read(struct address_space *mapping, void *src; /* For tail packing layout, the offset may be non-zero. */ - offset = erofs_blkoff(map.m_pa); - blknr = erofs_blknr(map.m_pa); + offset = erofs_blkoff(sb, map.m_pa); + blknr = erofs_blknr(sb, map.m_pa); size = map.m_llen; src = erofs_read_metabuf(&buf, sb, blknr, EROFS_KMAP); @@ -333,8 +333,6 @@ static int erofs_fscache_read_folio(struct file *file, struct folio *folio) bool unlock; int ret; - DBG_BUGON(folio_size(folio) != EROFS_BLKSIZ); - ret = erofs_fscache_data_read(folio_mapping(folio), folio_pos(folio), folio_size(folio), &unlock); if (unlock) { @@ -530,6 +528,7 @@ struct erofs_fscache *erofs_fscache_acquire_cookie(struct super_block *sb, inode->i_size = OFFSET_MAX; inode->i_mapping->a_ops = &erofs_fscache_meta_aops; mapping_set_gfp_mask(inode->i_mapping, GFP_NOFS); + inode->i_blkbits = EROFS_SB(sb)->blkszbits; ctx->inode = inode; } diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c index e090bcd46db1..8fc41fd1620c 100644 --- a/fs/erofs/inode.c +++ b/fs/erofs/inode.c @@ -23,8 +23,8 @@ static void *erofs_read_inode(struct erofs_buf *buf, unsigned int ifmt; int err; - blkaddr = erofs_blknr(inode_loc); - *ofs = erofs_blkoff(inode_loc); + blkaddr = erofs_blknr(sb, inode_loc); + *ofs = erofs_blkoff(sb, inode_loc); erofs_dbg("%s, reading inode nid %llu at %u of blkaddr %u", __func__, vi->nid, *ofs, blkaddr); @@ -58,11 +58,11 @@ static void *erofs_read_inode(struct erofs_buf *buf, case EROFS_INODE_LAYOUT_EXTENDED: vi->inode_isize = sizeof(struct erofs_inode_extended); /* check if the extended inode acrosses block boundary */ - if (*ofs + vi->inode_isize <= EROFS_BLKSIZ) { + if (*ofs + vi->inode_isize <= sb->s_blocksize) { *ofs += vi->inode_isize; die = (struct erofs_inode_extended *)dic; } else { - const unsigned int gotten = EROFS_BLKSIZ - *ofs; + const unsigned int gotten = sb->s_blocksize - *ofs; copied = kmalloc(vi->inode_isize, GFP_NOFS); if (!copied) { @@ -176,7 +176,7 @@ static void *erofs_read_inode(struct erofs_buf *buf, err = -EOPNOTSUPP; goto err_out; } - vi->chunkbits = LOG_BLOCK_SIZE + + vi->chunkbits = sb->s_blocksize_bits + (vi->chunkformat & EROFS_CHUNK_FORMAT_BLKBITS_MASK); } inode->i_mtime.tv_sec = inode->i_ctime.tv_sec; @@ -189,11 +189,12 @@ static void *erofs_read_inode(struct erofs_buf *buf, (vi->datalayout == EROFS_INODE_FLAT_PLAIN || vi->datalayout == EROFS_INODE_CHUNK_BASED)) inode->i_flags |= S_DAX; + if (!nblks) /* measure inode.i_blocks as generic filesystems */ - inode->i_blocks = roundup(inode->i_size, EROFS_BLKSIZ) >> 9; + inode->i_blocks = round_up(inode->i_size, sb->s_blocksize) >> 9; else - inode->i_blocks = nblks << LOG_SECTORS_PER_BLOCK; + inode->i_blocks = nblks << (sb->s_blocksize_bits - 9); return kaddr; bogusimode: @@ -211,11 +212,12 @@ static int erofs_fill_symlink(struct inode *inode, void *kaddr, unsigned int m_pofs) { struct erofs_inode *vi = EROFS_I(inode); + unsigned int bsz = i_blocksize(inode); char *lnk; /* if it cannot be handled with fast symlink scheme */ if (vi->datalayout != EROFS_INODE_FLAT_INLINE || - inode->i_size >= EROFS_BLKSIZ || inode->i_size < 0) { + inode->i_size >= bsz || inode->i_size < 0) { inode->i_op = &erofs_symlink_iops; return 0; } @@ -226,7 +228,7 @@ static int erofs_fill_symlink(struct inode *inode, void *kaddr, m_pofs += vi->xattr_isize; /* inline symlink data shouldn't cross block boundary */ - if (m_pofs + inode->i_size > EROFS_BLKSIZ) { + if (m_pofs + inode->i_size > bsz) { kfree(lnk); erofs_err(inode->i_sb, "inline data cross block boundary @ nid %llu", @@ -289,7 +291,8 @@ static int erofs_fill_inode(struct inode *inode) } if (erofs_inode_is_data_compressed(vi->datalayout)) { - if (!erofs_is_fscache_mode(inode->i_sb)) + if (!erofs_is_fscache_mode(inode->i_sb) && + inode->i_sb->s_blocksize_bits == PAGE_SHIFT) err = z_erofs_fill_inode(inode); else err = -EOPNOTSUPP; diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index d8d09fc3ed65..1c03daf83a68 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -145,8 +145,8 @@ struct erofs_sb_info { #endif u16 device_id_mask; /* valid bits of device id to be used */ - /* inode slot unit size in bit shift */ - unsigned char islotbits; + unsigned char islotbits; /* inode slot unit size in bit shift */ + unsigned char blkszbits; /* filesystem block size in bit shift */ u32 sb_size; /* total superblock size */ u32 build_time_nsec; @@ -239,21 +239,6 @@ static inline int erofs_wait_on_workgroup_freezed(struct erofs_workgroup *grp) VAL != EROFS_LOCKED_MAGIC); } -/* we strictly follow PAGE_SIZE and no buffer head yet */ -#define LOG_BLOCK_SIZE PAGE_SHIFT - -#undef LOG_SECTORS_PER_BLOCK -#define LOG_SECTORS_PER_BLOCK (PAGE_SHIFT - 9) - -#undef SECTORS_PER_BLOCK -#define SECTORS_PER_BLOCK (1 << SECTORS_PER_BLOCK) - -#define EROFS_BLKSIZ (1 << LOG_BLOCK_SIZE) - -#if (EROFS_BLKSIZ % 4096 || !EROFS_BLKSIZ) -#error erofs cannot be used in this platform -#endif - enum erofs_kmap_type { EROFS_NO_KMAP, /* don't map the buffer */ EROFS_KMAP, /* use kmap() to map the buffer */ @@ -269,9 +254,10 @@ struct erofs_buf { #define ROOT_NID(sb) ((sb)->root_nid) -#define erofs_blknr(addr) ((addr) / EROFS_BLKSIZ) -#define erofs_blkoff(addr) ((addr) % EROFS_BLKSIZ) -#define blknr_to_addr(nr) ((erofs_off_t)(nr) * EROFS_BLKSIZ) +#define erofs_blknr(sb, addr) ((addr) >> (sb)->s_blocksize_bits) +#define erofs_blkoff(sb, addr) ((addr) & ((sb)->s_blocksize - 1)) +#define erofs_pos(sb, blk) ((erofs_off_t)(blk) << (sb)->s_blocksize_bits) +#define erofs_iblks(i) (round_up((i)->i_size, i_blocksize(i)) >> (i)->i_blkbits) #define EROFS_FEATURE_FUNCS(name, compat, feature) \ static inline bool erofs_sb_has_##name(struct erofs_sb_info *sbi) \ @@ -343,16 +329,10 @@ static inline erofs_off_t erofs_iloc(struct inode *inode) { struct erofs_sb_info *sbi = EROFS_I_SB(inode); - return blknr_to_addr(sbi->meta_blkaddr) + + return erofs_pos(inode->i_sb, sbi->meta_blkaddr) + (EROFS_I(inode)->nid << sbi->islotbits); } -static inline unsigned long erofs_inode_datablocks(struct inode *inode) -{ - /* since i_size cannot be changed */ - return DIV_ROUND_UP(inode->i_size, EROFS_BLKSIZ); -} - static inline unsigned int erofs_bitrange(unsigned int value, unsigned int bit, unsigned int bits) { diff --git a/fs/erofs/namei.c b/fs/erofs/namei.c index 0dc34721080c..cf56a8acafbb 100644 --- a/fs/erofs/namei.c +++ b/fs/erofs/namei.c @@ -5,7 +5,6 @@ * Copyright (C) 2022, Alibaba Cloud */ #include "xattr.h" - #include struct erofs_qstr { @@ -87,19 +86,14 @@ static struct erofs_dirent *find_target_dirent(struct erofs_qstr *name, return ERR_PTR(-ENOENT); } -static void *find_target_block_classic(struct erofs_buf *target, - struct inode *dir, - struct erofs_qstr *name, - int *_ndirents) +static void *erofs_find_target_block(struct erofs_buf *target, + struct inode *dir, struct erofs_qstr *name, int *_ndirents) { - unsigned int startprfx, endprfx; - int head, back; + unsigned int bsz = i_blocksize(dir); + int head = 0, back = erofs_iblks(dir) - 1; + unsigned int startprfx = 0, endprfx = 0; void *candidate = ERR_PTR(-ENOENT); - startprfx = endprfx = 0; - head = 0; - back = erofs_inode_datablocks(dir) - 1; - while (head <= back) { const int mid = head + (back - head) / 2; struct erofs_buf buf = __EROFS_BUF_INITIALIZER; @@ -107,8 +101,7 @@ static void *find_target_block_classic(struct erofs_buf *target, de = erofs_bread(&buf, dir, mid, EROFS_KMAP); if (!IS_ERR(de)) { - const int nameoff = nameoff_from_disk(de->nameoff, - EROFS_BLKSIZ); + const int nameoff = nameoff_from_disk(de->nameoff, bsz); const int ndirents = nameoff / sizeof(*de); int diff; unsigned int matched; @@ -128,11 +121,10 @@ static void *find_target_block_classic(struct erofs_buf *target, dname.name = (u8 *)de + nameoff; if (ndirents == 1) - dname.end = (u8 *)de + EROFS_BLKSIZ; + dname.end = (u8 *)de + bsz; else dname.end = (u8 *)de + - nameoff_from_disk(de[1].nameoff, - EROFS_BLKSIZ); + nameoff_from_disk(de[1].nameoff, bsz); /* string comparison without already matched prefix */ diff = erofs_dirnamecmp(name, &dname, &matched); @@ -180,13 +172,13 @@ int erofs_namei(struct inode *dir, const struct qstr *name, erofs_nid_t *nid, qn.end = name->name + name->len; ndirents = 0; - - de = find_target_block_classic(&buf, dir, &qn, &ndirents); + de = erofs_find_target_block(&buf, dir, &qn, &ndirents); if (IS_ERR(de)) return PTR_ERR(de); if (ndirents) - de = find_target_dirent(&qn, (u8 *)de, EROFS_BLKSIZ, ndirents); + de = find_target_dirent(&qn, (u8 *)de, i_blocksize(dir), + ndirents); if (!IS_ERR(de)) { *nid = le64_to_cpu(de->nid); diff --git a/fs/erofs/super.c b/fs/erofs/super.c index bd8bf8fc2f5d..b073b38c1c77 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -53,18 +53,21 @@ void _erofs_info(struct super_block *sb, const char *function, static int erofs_superblock_csum_verify(struct super_block *sb, void *sbdata) { + size_t len = 1 << EROFS_SB(sb)->blkszbits; struct erofs_super_block *dsb; u32 expected_crc, crc; - dsb = kmemdup(sbdata + EROFS_SUPER_OFFSET, - EROFS_BLKSIZ - EROFS_SUPER_OFFSET, GFP_KERNEL); + if (len > EROFS_SUPER_OFFSET) + len -= EROFS_SUPER_OFFSET; + + dsb = kmemdup(sbdata + EROFS_SUPER_OFFSET, len, GFP_KERNEL); if (!dsb) return -ENOMEM; expected_crc = le32_to_cpu(dsb->checksum); dsb->checksum = 0; /* to allow for x86 boot sectors and other oddities. */ - crc = crc32c(~0, dsb, EROFS_BLKSIZ - EROFS_SUPER_OFFSET); + crc = crc32c(~0, dsb, len); kfree(dsb); if (crc != expected_crc) { @@ -133,11 +136,11 @@ static void *erofs_read_metadata(struct super_block *sb, struct erofs_buf *buf, int len, i, cnt; *offset = round_up(*offset, 4); - ptr = erofs_read_metabuf(buf, sb, erofs_blknr(*offset), EROFS_KMAP); + ptr = erofs_read_metabuf(buf, sb, erofs_blknr(sb, *offset), EROFS_KMAP); if (IS_ERR(ptr)) return ptr; - len = le16_to_cpu(*(__le16 *)&ptr[erofs_blkoff(*offset)]); + len = le16_to_cpu(*(__le16 *)&ptr[erofs_blkoff(sb, *offset)]); if (!len) len = U16_MAX + 1; buffer = kmalloc(len, GFP_KERNEL); @@ -147,14 +150,15 @@ static void *erofs_read_metadata(struct super_block *sb, struct erofs_buf *buf, *lengthp = len; for (i = 0; i < len; i += cnt) { - cnt = min(EROFS_BLKSIZ - (int)erofs_blkoff(*offset), len - i); - ptr = erofs_read_metabuf(buf, sb, erofs_blknr(*offset), + cnt = min_t(int, sb->s_blocksize - erofs_blkoff(sb, *offset), + len - i); + ptr = erofs_read_metabuf(buf, sb, erofs_blknr(sb, *offset), EROFS_KMAP); if (IS_ERR(ptr)) { kfree(buffer); return ptr; } - memcpy(buffer + i, ptr + erofs_blkoff(*offset), cnt); + memcpy(buffer + i, ptr + erofs_blkoff(sb, *offset), cnt); *offset += cnt; } return buffer; @@ -229,10 +233,10 @@ static int erofs_init_device(struct erofs_buf *buf, struct super_block *sb, struct block_device *bdev; void *ptr; - ptr = erofs_read_metabuf(buf, sb, erofs_blknr(*pos), EROFS_KMAP); + ptr = erofs_read_metabuf(buf, sb, erofs_blknr(sb, *pos), EROFS_KMAP); if (IS_ERR(ptr)) return PTR_ERR(ptr); - dis = ptr + erofs_blkoff(*pos); + dis = ptr + erofs_blkoff(sb, *pos); if (!dif->path) { if (!dis->tag[0]) { @@ -330,7 +334,6 @@ static int erofs_read_superblock(struct super_block *sb) struct erofs_sb_info *sbi; struct erofs_buf buf = __EROFS_BUF_INITIALIZER; struct erofs_super_block *dsb; - unsigned int blkszbits; void *data; int ret; @@ -349,6 +352,16 @@ static int erofs_read_superblock(struct super_block *sb) goto out; } + sbi->blkszbits = dsb->blkszbits; + if (sbi->blkszbits < 9 || sbi->blkszbits > PAGE_SHIFT) { + erofs_err(sb, "blkszbits %u isn't supported", sbi->blkszbits); + goto out; + } + if (dsb->dirblkbits) { + erofs_err(sb, "dirblkbits %u isn't supported", dsb->dirblkbits); + goto out; + } + sbi->feature_compat = le32_to_cpu(dsb->feature_compat); if (erofs_sb_has_sb_chksum(sbi)) { ret = erofs_superblock_csum_verify(sb, data); @@ -357,19 +370,11 @@ static int erofs_read_superblock(struct super_block *sb) } ret = -EINVAL; - blkszbits = dsb->blkszbits; - /* 9(512 bytes) + LOG_SECTORS_PER_BLOCK == LOG_BLOCK_SIZE */ - if (blkszbits != LOG_BLOCK_SIZE) { - erofs_err(sb, "blkszbits %u isn't supported on this platform", - blkszbits); - goto out; - } - if (!check_layout_compatibility(sb, dsb)) goto out; sbi->sb_size = 128 + dsb->sb_extslots * EROFS_SB_EXTSLOT_SIZE; - if (sbi->sb_size > EROFS_BLKSIZ) { + if (sbi->sb_size > PAGE_SIZE - EROFS_SUPER_OFFSET) { erofs_err(sb, "invalid sb_extslots %u (more than a fs block)", sbi->sb_size); goto out; @@ -724,9 +729,10 @@ static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc) sbi->domain_id = ctx->domain_id; ctx->domain_id = NULL; + sbi->blkszbits = PAGE_SHIFT; if (erofs_is_fscache_mode(sb)) { - sb->s_blocksize = EROFS_BLKSIZ; - sb->s_blocksize_bits = LOG_BLOCK_SIZE; + sb->s_blocksize = PAGE_SIZE; + sb->s_blocksize_bits = PAGE_SHIFT; err = erofs_fscache_register_fs(sb); if (err) @@ -736,8 +742,8 @@ static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc) if (err) return err; } else { - if (!sb_set_blocksize(sb, EROFS_BLKSIZ)) { - erofs_err(sb, "failed to set erofs blksize"); + if (!sb_set_blocksize(sb, PAGE_SIZE)) { + errorfc(fc, "failed to set initial blksize"); return -EINVAL; } @@ -750,12 +756,24 @@ static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc) if (err) return err; - if (test_opt(&sbi->opt, DAX_ALWAYS)) { - BUILD_BUG_ON(EROFS_BLKSIZ != PAGE_SIZE); + if (sb->s_blocksize_bits != sbi->blkszbits) { + if (erofs_is_fscache_mode(sb)) { + errorfc(fc, "unsupported blksize for fscache mode"); + return -EINVAL; + } + if (!sb_set_blocksize(sb, 1 << sbi->blkszbits)) { + errorfc(fc, "failed to set erofs blksize"); + return -EINVAL; + } + } + if (test_opt(&sbi->opt, DAX_ALWAYS)) { if (!sbi->dax_dev) { errorfc(fc, "DAX unsupported by block device. Turning off DAX."); clear_opt(&sbi->opt, DAX_ALWAYS); + } else if (sbi->blkszbits != PAGE_SHIFT) { + errorfc(fc, "unsupported blocksize for DAX"); + clear_opt(&sbi->opt, DAX_ALWAYS); } } @@ -1059,7 +1077,7 @@ static int erofs_statfs(struct dentry *dentry, struct kstatfs *buf) id = huge_encode_dev(sb->s_bdev->bd_dev); buf->f_type = sb->s_magic; - buf->f_bsize = EROFS_BLKSIZ; + buf->f_bsize = sb->s_blocksize; buf->f_blocks = sbi->total_blocks; buf->f_bfree = buf->f_bavail = 0; diff --git a/fs/erofs/xattr.c b/fs/erofs/xattr.c index a2776abf3698..7c09ad1beb83 100644 --- a/fs/erofs/xattr.c +++ b/fs/erofs/xattr.c @@ -68,8 +68,8 @@ static int init_inode_xattrs(struct inode *inode) } it.buf = __EROFS_BUF_INITIALIZER; - it.blkaddr = erofs_blknr(erofs_iloc(inode) + vi->inode_isize); - it.ofs = erofs_blkoff(erofs_iloc(inode) + vi->inode_isize); + it.blkaddr = erofs_blknr(sb, erofs_iloc(inode) + vi->inode_isize); + it.ofs = erofs_blkoff(sb, erofs_iloc(inode) + vi->inode_isize); /* read in shared xattr array (non-atomic, see kmalloc below) */ it.kaddr = erofs_read_metabuf(&it.buf, sb, it.blkaddr, EROFS_KMAP); @@ -92,9 +92,9 @@ static int init_inode_xattrs(struct inode *inode) it.ofs += sizeof(struct erofs_xattr_ibody_header); for (i = 0; i < vi->xattr_shared_count; ++i) { - if (it.ofs >= EROFS_BLKSIZ) { + if (it.ofs >= sb->s_blocksize) { /* cannot be unaligned */ - DBG_BUGON(it.ofs != EROFS_BLKSIZ); + DBG_BUGON(it.ofs != sb->s_blocksize); it.kaddr = erofs_read_metabuf(&it.buf, sb, ++it.blkaddr, EROFS_KMAP); @@ -139,15 +139,15 @@ struct xattr_iter_handlers { static inline int xattr_iter_fixup(struct xattr_iter *it) { - if (it->ofs < EROFS_BLKSIZ) + if (it->ofs < it->sb->s_blocksize) return 0; - it->blkaddr += erofs_blknr(it->ofs); + it->blkaddr += erofs_blknr(it->sb, it->ofs); it->kaddr = erofs_read_metabuf(&it->buf, it->sb, it->blkaddr, EROFS_KMAP_ATOMIC); if (IS_ERR(it->kaddr)) return PTR_ERR(it->kaddr); - it->ofs = erofs_blkoff(it->ofs); + it->ofs = erofs_blkoff(it->sb, it->ofs); return 0; } @@ -165,8 +165,8 @@ static int inline_xattr_iter_begin(struct xattr_iter *it, inline_xattr_ofs = vi->inode_isize + xattr_header_sz; - it->blkaddr = erofs_blknr(erofs_iloc(inode) + inline_xattr_ofs); - it->ofs = erofs_blkoff(erofs_iloc(inode) + inline_xattr_ofs); + it->blkaddr = erofs_blknr(it->sb, erofs_iloc(inode) + inline_xattr_ofs); + it->ofs = erofs_blkoff(it->sb, erofs_iloc(inode) + inline_xattr_ofs); it->kaddr = erofs_read_metabuf(&it->buf, inode->i_sb, it->blkaddr, EROFS_KMAP_ATOMIC); if (IS_ERR(it->kaddr)) @@ -222,8 +222,8 @@ static int xattr_foreach(struct xattr_iter *it, processed = 0; while (processed < entry.e_name_len) { - if (it->ofs >= EROFS_BLKSIZ) { - DBG_BUGON(it->ofs > EROFS_BLKSIZ); + if (it->ofs >= it->sb->s_blocksize) { + DBG_BUGON(it->ofs > it->sb->s_blocksize); err = xattr_iter_fixup(it); if (err) @@ -231,7 +231,7 @@ static int xattr_foreach(struct xattr_iter *it, it->ofs = 0; } - slice = min_t(unsigned int, EROFS_BLKSIZ - it->ofs, + slice = min_t(unsigned int, it->sb->s_blocksize - it->ofs, entry.e_name_len - processed); /* handle name */ @@ -257,8 +257,8 @@ static int xattr_foreach(struct xattr_iter *it, } while (processed < value_sz) { - if (it->ofs >= EROFS_BLKSIZ) { - DBG_BUGON(it->ofs > EROFS_BLKSIZ); + if (it->ofs >= it->sb->s_blocksize) { + DBG_BUGON(it->ofs > it->sb->s_blocksize); err = xattr_iter_fixup(it); if (err) @@ -266,7 +266,7 @@ static int xattr_foreach(struct xattr_iter *it, it->ofs = 0; } - slice = min_t(unsigned int, EROFS_BLKSIZ - it->ofs, + slice = min_t(unsigned int, it->sb->s_blocksize - it->ofs, value_sz - processed); op->value(it, processed, it->kaddr + it->ofs, slice); it->ofs += slice; @@ -352,15 +352,14 @@ static int shared_getxattr(struct inode *inode, struct getxattr_iter *it) { struct erofs_inode *const vi = EROFS_I(inode); struct super_block *const sb = inode->i_sb; - struct erofs_sb_info *const sbi = EROFS_SB(sb); unsigned int i; int ret = -ENOATTR; for (i = 0; i < vi->xattr_shared_count; ++i) { erofs_blk_t blkaddr = - xattrblock_addr(sbi, vi->xattr_shared_xattrs[i]); + xattrblock_addr(sb, vi->xattr_shared_xattrs[i]); - it->it.ofs = xattrblock_offset(sbi, vi->xattr_shared_xattrs[i]); + it->it.ofs = xattrblock_offset(sb, vi->xattr_shared_xattrs[i]); it->it.kaddr = erofs_read_metabuf(&it->it.buf, sb, blkaddr, EROFS_KMAP_ATOMIC); if (IS_ERR(it->it.kaddr)) @@ -564,15 +563,14 @@ static int shared_listxattr(struct listxattr_iter *it) struct inode *const inode = d_inode(it->dentry); struct erofs_inode *const vi = EROFS_I(inode); struct super_block *const sb = inode->i_sb; - struct erofs_sb_info *const sbi = EROFS_SB(sb); unsigned int i; int ret = 0; for (i = 0; i < vi->xattr_shared_count; ++i) { erofs_blk_t blkaddr = - xattrblock_addr(sbi, vi->xattr_shared_xattrs[i]); + xattrblock_addr(sb, vi->xattr_shared_xattrs[i]); - it->it.ofs = xattrblock_offset(sbi, vi->xattr_shared_xattrs[i]); + it->it.ofs = xattrblock_offset(sb, vi->xattr_shared_xattrs[i]); it->it.kaddr = erofs_read_metabuf(&it->it.buf, sb, blkaddr, EROFS_KMAP_ATOMIC); if (IS_ERR(it->it.kaddr)) diff --git a/fs/erofs/xattr.h b/fs/erofs/xattr.h index 0a43c9ee9f8f..f7a21aaa9755 100644 --- a/fs/erofs/xattr.h +++ b/fs/erofs/xattr.h @@ -19,21 +19,21 @@ static inline unsigned int inlinexattr_header_size(struct inode *inode) sizeof(u32) * EROFS_I(inode)->xattr_shared_count; } -static inline erofs_blk_t xattrblock_addr(struct erofs_sb_info *sbi, +static inline erofs_blk_t xattrblock_addr(struct super_block *sb, unsigned int xattr_id) { #ifdef CONFIG_EROFS_FS_XATTR - return sbi->xattr_blkaddr + - xattr_id * sizeof(__u32) / EROFS_BLKSIZ; + return EROFS_SB(sb)->xattr_blkaddr + + xattr_id * sizeof(__u32) / sb->s_blocksize; #else return 0; #endif } -static inline unsigned int xattrblock_offset(struct erofs_sb_info *sbi, +static inline unsigned int xattrblock_offset(struct super_block *sb, unsigned int xattr_id) { - return (xattr_id * sizeof(__u32)) % EROFS_BLKSIZ; + return (xattr_id * sizeof(__u32)) % sb->s_blocksize; } #ifdef CONFIG_EROFS_FS_XATTR diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index 38c1558b7a38..451b9a6cba68 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -779,7 +779,7 @@ static int z_erofs_register_pcluster(struct z_erofs_decompress_frontend *fe) if (ztailpacking) { pcl->obj.index = 0; /* which indicates ztailpacking */ - pcl->pageofs_in = erofs_blkoff(map->m_pa); + pcl->pageofs_in = erofs_blkoff(fe->inode->i_sb, map->m_pa); pcl->tailpacking_size = map->m_plen; } else { pcl->obj.index = map->m_pa >> PAGE_SHIFT; @@ -894,6 +894,7 @@ static int z_erofs_read_fragment(struct inode *inode, erofs_off_t pos, struct page *page, unsigned int pageofs, unsigned int len) { + struct super_block *sb = inode->i_sb; struct inode *packed_inode = EROFS_I_SB(inode)->packed_inode; struct erofs_buf buf = __EROFS_BUF_INITIALIZER; u8 *src, *dst; @@ -905,16 +906,16 @@ static int z_erofs_read_fragment(struct inode *inode, erofs_off_t pos, pos += EROFS_I(inode)->z_fragmentoff; for (i = 0; i < len; i += cnt) { cnt = min_t(unsigned int, len - i, - EROFS_BLKSIZ - erofs_blkoff(pos)); + sb->s_blocksize - erofs_blkoff(sb, pos)); src = erofs_bread(&buf, packed_inode, - erofs_blknr(pos), EROFS_KMAP); + erofs_blknr(sb, pos), EROFS_KMAP); if (IS_ERR(src)) { erofs_put_metabuf(&buf); return PTR_ERR(src); } dst = kmap_local_page(page); - memcpy(dst + pageofs + i, src + erofs_blkoff(pos), cnt); + memcpy(dst + pageofs + i, src + erofs_blkoff(sb, pos), cnt); kunmap_local(dst); pos += cnt; } @@ -969,7 +970,8 @@ repeat: void *mp; mp = erofs_read_metabuf(&fe->map.buf, inode->i_sb, - erofs_blknr(map->m_pa), EROFS_NO_KMAP); + erofs_blknr(inode->i_sb, map->m_pa), + EROFS_NO_KMAP); if (IS_ERR(mp)) { err = PTR_ERR(mp); erofs_err(inode->i_sb, @@ -1374,7 +1376,6 @@ static void z_erofs_decompress_queue(const struct z_erofs_decompressqueue *io, LIST_HEAD_INIT(be.decompressed_secondary_bvecs), }; z_erofs_next_pcluster_t owned = io->head; - while (owned != Z_EROFS_PCLUSTER_TAIL) { DBG_BUGON(owned == Z_EROFS_PCLUSTER_NIL); @@ -1420,7 +1421,7 @@ static void z_erofs_decompress_kickoff(struct z_erofs_decompressqueue *io, if (atomic_add_return(bios, &io->pending_bios)) return; /* Use (kthread_)work and sync decompression for atomic contexts only */ - if (in_atomic() || irqs_disabled()) { + if (!in_task() || irqs_disabled() || rcu_read_lock_any_held()) { #ifdef CONFIG_EROFS_FS_PCPU_KTHREAD struct kthread_worker *worker; @@ -1680,11 +1681,11 @@ static void z_erofs_submit_queue(struct z_erofs_decompress_frontend *f, /* no device id here, thus it will always succeed */ mdev = (struct erofs_map_dev) { - .m_pa = blknr_to_addr(pcl->obj.index), + .m_pa = erofs_pos(sb, pcl->obj.index), }; (void)erofs_map_dev(sb, &mdev); - cur = erofs_blknr(mdev.m_pa); + cur = erofs_blknr(sb, mdev.m_pa); end = cur + pcl->pclusterpages; do { @@ -1718,7 +1719,7 @@ submit_bio_retry: last_bdev = mdev.m_bdev; bio->bi_iter.bi_sector = (sector_t)cur << - LOG_SECTORS_PER_BLOCK; + (sb->s_blocksize_bits - 9); bio->bi_private = q[JQ_SUBMIT]; if (f->readahead) bio->bi_opf |= REQ_RAHEAD; diff --git a/fs/erofs/zmap.c b/fs/erofs/zmap.c index 0337b70b2dac..8973ccad707d 100644 --- a/fs/erofs/zmap.c +++ b/fs/erofs/zmap.c @@ -7,10 +7,6 @@ #include #include -static int z_erofs_do_map_blocks(struct inode *inode, - struct erofs_map_blocks *map, - int flags); - int z_erofs_fill_inode(struct inode *inode) { struct erofs_inode *const vi = EROFS_I(inode); @@ -22,132 +18,13 @@ int z_erofs_fill_inode(struct inode *inode) vi->z_advise = 0; vi->z_algorithmtype[0] = 0; vi->z_algorithmtype[1] = 0; - vi->z_logical_clusterbits = LOG_BLOCK_SIZE; + vi->z_logical_clusterbits = inode->i_sb->s_blocksize_bits; set_bit(EROFS_I_Z_INITED_BIT, &vi->flags); } inode->i_mapping->a_ops = &z_erofs_aops; return 0; } -static int z_erofs_fill_inode_lazy(struct inode *inode) -{ - struct erofs_inode *const vi = EROFS_I(inode); - struct super_block *const sb = inode->i_sb; - int err, headnr; - erofs_off_t pos; - struct erofs_buf buf = __EROFS_BUF_INITIALIZER; - void *kaddr; - struct z_erofs_map_header *h; - - if (test_bit(EROFS_I_Z_INITED_BIT, &vi->flags)) { - /* - * paired with smp_mb() at the end of the function to ensure - * fields will only be observed after the bit is set. - */ - smp_mb(); - return 0; - } - - if (wait_on_bit_lock(&vi->flags, EROFS_I_BL_Z_BIT, TASK_KILLABLE)) - return -ERESTARTSYS; - - err = 0; - if (test_bit(EROFS_I_Z_INITED_BIT, &vi->flags)) - goto out_unlock; - - pos = ALIGN(erofs_iloc(inode) + vi->inode_isize + vi->xattr_isize, 8); - kaddr = erofs_read_metabuf(&buf, sb, erofs_blknr(pos), EROFS_KMAP); - if (IS_ERR(kaddr)) { - err = PTR_ERR(kaddr); - goto out_unlock; - } - - h = kaddr + erofs_blkoff(pos); - /* - * if the highest bit of the 8-byte map header is set, the whole file - * is stored in the packed inode. The rest bits keeps z_fragmentoff. - */ - if (h->h_clusterbits >> Z_EROFS_FRAGMENT_INODE_BIT) { - vi->z_advise = Z_EROFS_ADVISE_FRAGMENT_PCLUSTER; - vi->z_fragmentoff = le64_to_cpu(*(__le64 *)h) ^ (1ULL << 63); - vi->z_tailextent_headlcn = 0; - goto done; - } - vi->z_advise = le16_to_cpu(h->h_advise); - vi->z_algorithmtype[0] = h->h_algorithmtype & 15; - vi->z_algorithmtype[1] = h->h_algorithmtype >> 4; - - headnr = 0; - if (vi->z_algorithmtype[0] >= Z_EROFS_COMPRESSION_MAX || - vi->z_algorithmtype[++headnr] >= Z_EROFS_COMPRESSION_MAX) { - erofs_err(sb, "unknown HEAD%u format %u for nid %llu, please upgrade kernel", - headnr + 1, vi->z_algorithmtype[headnr], vi->nid); - err = -EOPNOTSUPP; - goto out_put_metabuf; - } - - vi->z_logical_clusterbits = LOG_BLOCK_SIZE + (h->h_clusterbits & 7); - if (!erofs_sb_has_big_pcluster(EROFS_SB(sb)) && - vi->z_advise & (Z_EROFS_ADVISE_BIG_PCLUSTER_1 | - Z_EROFS_ADVISE_BIG_PCLUSTER_2)) { - erofs_err(sb, "per-inode big pcluster without sb feature for nid %llu", - vi->nid); - err = -EFSCORRUPTED; - goto out_put_metabuf; - } - if (vi->datalayout == EROFS_INODE_FLAT_COMPRESSION && - !(vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_1) ^ - !(vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_2)) { - erofs_err(sb, "big pcluster head1/2 of compact indexes should be consistent for nid %llu", - vi->nid); - err = -EFSCORRUPTED; - goto out_put_metabuf; - } - - if (vi->z_advise & Z_EROFS_ADVISE_INLINE_PCLUSTER) { - struct erofs_map_blocks map = { - .buf = __EROFS_BUF_INITIALIZER - }; - - vi->z_idata_size = le16_to_cpu(h->h_idata_size); - err = z_erofs_do_map_blocks(inode, &map, - EROFS_GET_BLOCKS_FINDTAIL); - erofs_put_metabuf(&map.buf); - - if (!map.m_plen || - erofs_blkoff(map.m_pa) + map.m_plen > EROFS_BLKSIZ) { - erofs_err(sb, "invalid tail-packing pclustersize %llu", - map.m_plen); - err = -EFSCORRUPTED; - } - if (err < 0) - goto out_put_metabuf; - } - - if (vi->z_advise & Z_EROFS_ADVISE_FRAGMENT_PCLUSTER && - !(h->h_clusterbits >> Z_EROFS_FRAGMENT_INODE_BIT)) { - struct erofs_map_blocks map = { - .buf = __EROFS_BUF_INITIALIZER - }; - - vi->z_fragmentoff = le32_to_cpu(h->h_fragmentoff); - err = z_erofs_do_map_blocks(inode, &map, - EROFS_GET_BLOCKS_FINDTAIL); - erofs_put_metabuf(&map.buf); - if (err < 0) - goto out_put_metabuf; - } -done: - /* paired with smp_mb() at the beginning of the function */ - smp_mb(); - set_bit(EROFS_I_Z_INITED_BIT, &vi->flags); -out_put_metabuf: - erofs_put_metabuf(&buf); -out_unlock: - clear_and_wake_up_bit(EROFS_I_BL_Z_BIT, &vi->flags); - return err; -} - struct z_erofs_maprecorder { struct inode *inode; struct erofs_map_blocks *map; @@ -176,13 +53,13 @@ static int legacy_load_cluster_from_disk(struct z_erofs_maprecorder *m, unsigned int advise, type; m->kaddr = erofs_read_metabuf(&m->map->buf, inode->i_sb, - erofs_blknr(pos), EROFS_KMAP_ATOMIC); + erofs_blknr(inode->i_sb, pos), EROFS_KMAP_ATOMIC); if (IS_ERR(m->kaddr)) return PTR_ERR(m->kaddr); m->nextpackoff = pos + sizeof(struct z_erofs_vle_decompressed_index); m->lcn = lcn; - di = m->kaddr + erofs_blkoff(pos); + di = m->kaddr + erofs_blkoff(inode->i_sb, pos); advise = le16_to_cpu(di->di_advise); type = (advise >> Z_EROFS_VLE_DI_CLUSTER_TYPE_BIT) & @@ -283,7 +160,7 @@ static int unpack_compacted_index(struct z_erofs_maprecorder *m, (vcnt << amortizedshift); big_pcluster = vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_1; encodebits = ((vcnt << amortizedshift) - sizeof(__le32)) * 8 / vcnt; - eofs = erofs_blkoff(pos); + eofs = erofs_blkoff(m->inode->i_sb, pos); base = round_down(eofs, vcnt << amortizedshift); in = m->kaddr + base; @@ -375,7 +252,7 @@ static int compacted_load_cluster_from_disk(struct z_erofs_maprecorder *m, struct erofs_inode *const vi = EROFS_I(inode); const erofs_off_t ebase = sizeof(struct z_erofs_map_header) + ALIGN(erofs_iloc(inode) + vi->inode_isize + vi->xattr_isize, 8); - const unsigned int totalidx = DIV_ROUND_UP(inode->i_size, EROFS_BLKSIZ); + unsigned int totalidx = erofs_iblks(inode); unsigned int compacted_4b_initial, compacted_2b; unsigned int amortizedshift; erofs_off_t pos; @@ -413,7 +290,7 @@ static int compacted_load_cluster_from_disk(struct z_erofs_maprecorder *m, out: pos += lcn * (1 << amortizedshift); m->kaddr = erofs_read_metabuf(&m->map->buf, inode->i_sb, - erofs_blknr(pos), EROFS_KMAP_ATOMIC); + erofs_blknr(inode->i_sb, pos), EROFS_KMAP_ATOMIC); if (IS_ERR(m->kaddr)) return PTR_ERR(m->kaddr); return unpack_compacted_index(m, amortizedshift, pos, lookahead); @@ -483,6 +360,7 @@ static int z_erofs_extent_lookback(struct z_erofs_maprecorder *m, static int z_erofs_get_extent_compressedlen(struct z_erofs_maprecorder *m, unsigned int initial_lcn) { + struct super_block *sb = m->inode->i_sb; struct erofs_inode *const vi = EROFS_I(m->inode); struct erofs_map_blocks *const map = m->map; const unsigned int lclusterbits = vi->z_logical_clusterbits; @@ -529,7 +407,7 @@ static int z_erofs_get_extent_compressedlen(struct z_erofs_maprecorder *m, * if the 1st NONHEAD lcluster is actually PLAIN or HEAD type * rather than CBLKCNT, it's a 1 lcluster-sized pcluster. */ - m->compressedblks = 1 << (lclusterbits - LOG_BLOCK_SIZE); + m->compressedblks = 1 << (lclusterbits - sb->s_blocksize_bits); break; case Z_EROFS_VLE_CLUSTER_TYPE_NONHEAD: if (m->delta[0] != 1) @@ -545,7 +423,7 @@ static int z_erofs_get_extent_compressedlen(struct z_erofs_maprecorder *m, return -EFSCORRUPTED; } out: - map->m_plen = (u64)m->compressedblks << LOG_BLOCK_SIZE; + map->m_plen = erofs_pos(sb, m->compressedblks); return 0; err_bonus_cblkcnt: erofs_err(m->inode->i_sb, @@ -688,7 +566,7 @@ static int z_erofs_do_map_blocks(struct inode *inode, } else if (fragment && m.lcn == vi->z_tailextent_headlcn) { map->m_flags |= EROFS_MAP_FRAGMENT; } else { - map->m_pa = blknr_to_addr(m.pblk); + map->m_pa = erofs_pos(inode->i_sb, m.pblk); err = z_erofs_get_extent_compressedlen(&m, initial_lcn); if (err) goto unmap_out; @@ -715,7 +593,7 @@ static int z_erofs_do_map_blocks(struct inode *inode, if ((flags & EROFS_GET_BLOCKS_FIEMAP) || ((flags & EROFS_GET_BLOCKS_READMORE) && map->m_algorithmformat == Z_EROFS_COMPRESSION_LZMA && - map->m_llen >= EROFS_BLKSIZ)) { + map->m_llen >= i_blocksize(inode))) { err = z_erofs_get_extent_decompressedlen(&m); if (!err) map->m_flags |= EROFS_MAP_FULL_MAPPED; @@ -729,6 +607,125 @@ unmap_out: return err; } +static int z_erofs_fill_inode_lazy(struct inode *inode) +{ + struct erofs_inode *const vi = EROFS_I(inode); + struct super_block *const sb = inode->i_sb; + int err, headnr; + erofs_off_t pos; + struct erofs_buf buf = __EROFS_BUF_INITIALIZER; + void *kaddr; + struct z_erofs_map_header *h; + + if (test_bit(EROFS_I_Z_INITED_BIT, &vi->flags)) { + /* + * paired with smp_mb() at the end of the function to ensure + * fields will only be observed after the bit is set. + */ + smp_mb(); + return 0; + } + + if (wait_on_bit_lock(&vi->flags, EROFS_I_BL_Z_BIT, TASK_KILLABLE)) + return -ERESTARTSYS; + + err = 0; + if (test_bit(EROFS_I_Z_INITED_BIT, &vi->flags)) + goto out_unlock; + + pos = ALIGN(erofs_iloc(inode) + vi->inode_isize + vi->xattr_isize, 8); + kaddr = erofs_read_metabuf(&buf, sb, erofs_blknr(sb, pos), EROFS_KMAP); + if (IS_ERR(kaddr)) { + err = PTR_ERR(kaddr); + goto out_unlock; + } + + h = kaddr + erofs_blkoff(sb, pos); + /* + * if the highest bit of the 8-byte map header is set, the whole file + * is stored in the packed inode. The rest bits keeps z_fragmentoff. + */ + if (h->h_clusterbits >> Z_EROFS_FRAGMENT_INODE_BIT) { + vi->z_advise = Z_EROFS_ADVISE_FRAGMENT_PCLUSTER; + vi->z_fragmentoff = le64_to_cpu(*(__le64 *)h) ^ (1ULL << 63); + vi->z_tailextent_headlcn = 0; + goto done; + } + vi->z_advise = le16_to_cpu(h->h_advise); + vi->z_algorithmtype[0] = h->h_algorithmtype & 15; + vi->z_algorithmtype[1] = h->h_algorithmtype >> 4; + + headnr = 0; + if (vi->z_algorithmtype[0] >= Z_EROFS_COMPRESSION_MAX || + vi->z_algorithmtype[++headnr] >= Z_EROFS_COMPRESSION_MAX) { + erofs_err(sb, "unknown HEAD%u format %u for nid %llu, please upgrade kernel", + headnr + 1, vi->z_algorithmtype[headnr], vi->nid); + err = -EOPNOTSUPP; + goto out_put_metabuf; + } + + vi->z_logical_clusterbits = sb->s_blocksize_bits + (h->h_clusterbits & 7); + if (!erofs_sb_has_big_pcluster(EROFS_SB(sb)) && + vi->z_advise & (Z_EROFS_ADVISE_BIG_PCLUSTER_1 | + Z_EROFS_ADVISE_BIG_PCLUSTER_2)) { + erofs_err(sb, "per-inode big pcluster without sb feature for nid %llu", + vi->nid); + err = -EFSCORRUPTED; + goto out_put_metabuf; + } + if (vi->datalayout == EROFS_INODE_FLAT_COMPRESSION && + !(vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_1) ^ + !(vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_2)) { + erofs_err(sb, "big pcluster head1/2 of compact indexes should be consistent for nid %llu", + vi->nid); + err = -EFSCORRUPTED; + goto out_put_metabuf; + } + + if (vi->z_advise & Z_EROFS_ADVISE_INLINE_PCLUSTER) { + struct erofs_map_blocks map = { + .buf = __EROFS_BUF_INITIALIZER + }; + + vi->z_idata_size = le16_to_cpu(h->h_idata_size); + err = z_erofs_do_map_blocks(inode, &map, + EROFS_GET_BLOCKS_FINDTAIL); + erofs_put_metabuf(&map.buf); + + if (!map.m_plen || + erofs_blkoff(sb, map.m_pa) + map.m_plen > sb->s_blocksize) { + erofs_err(sb, "invalid tail-packing pclustersize %llu", + map.m_plen); + err = -EFSCORRUPTED; + } + if (err < 0) + goto out_put_metabuf; + } + + if (vi->z_advise & Z_EROFS_ADVISE_FRAGMENT_PCLUSTER && + !(h->h_clusterbits >> Z_EROFS_FRAGMENT_INODE_BIT)) { + struct erofs_map_blocks map = { + .buf = __EROFS_BUF_INITIALIZER + }; + + vi->z_fragmentoff = le32_to_cpu(h->h_fragmentoff); + err = z_erofs_do_map_blocks(inode, &map, + EROFS_GET_BLOCKS_FINDTAIL); + erofs_put_metabuf(&map.buf); + if (err < 0) + goto out_put_metabuf; + } +done: + /* paired with smp_mb() at the beginning of the function */ + smp_mb(); + set_bit(EROFS_I_Z_INITED_BIT, &vi->flags); +out_put_metabuf: + erofs_put_metabuf(&buf); +out_unlock: + clear_and_wake_up_bit(EROFS_I_BL_Z_BIT, &vi->flags); + return err; +} + int z_erofs_map_blocks_iter(struct inode *inode, struct erofs_map_blocks *map, int flags) { diff --git a/fs/fuse/backing.c b/fs/fuse/backing.c index 9df0535ad20f..303a78a63cd2 100644 --- a/fs/fuse/backing.c +++ b/fs/fuse/backing.c @@ -1446,32 +1446,34 @@ int fuse_mkdir_initialize( int fuse_mkdir_backing( struct fuse_bpf_args *fa, - struct inode *dir, struct dentry *entry, umode_t mode) + struct inode *dir_inode, struct dentry *entry, umode_t mode) { int err = 0; const struct fuse_mkdir_in *fmi = fa->in_args[0].value; - struct fuse_inode *fuse_inode = get_fuse_inode(dir); - struct inode *backing_inode = fuse_inode->backing_inode; + struct fuse_inode *dir_fuse_inode = get_fuse_inode(dir_inode); + struct inode *dir_backing_inode = dir_fuse_inode->backing_inode; struct path backing_path = {}; struct inode *inode = NULL; - struct dentry *d; //TODO Actually deal with changing the backing entry in mkdir get_fuse_backing_path(entry, &backing_path); if (!backing_path.dentry) return -EBADF; - inode_lock_nested(backing_inode, I_MUTEX_PARENT); + inode_lock_nested(dir_backing_inode, I_MUTEX_PARENT); mode = fmi->mode; - if (!IS_POSIXACL(backing_inode)) + if (!IS_POSIXACL(dir_backing_inode)) mode &= ~fmi->umask; - err = vfs_mkdir(&init_user_ns, backing_inode, backing_path.dentry, mode); + err = vfs_mkdir(&init_user_ns, dir_backing_inode, backing_path.dentry, + mode); if (err) goto out; if (d_really_is_negative(backing_path.dentry) || unlikely(d_unhashed(backing_path.dentry))) { - d = lookup_one_len(entry->d_name.name, backing_path.dentry->d_parent, - entry->d_name.len); + struct dentry *d = lookup_one_len(entry->d_name.name, + backing_path.dentry->d_parent, + entry->d_name.len); + if (IS_ERR(d)) { err = PTR_ERR(d); goto out; @@ -1479,14 +1481,19 @@ int fuse_mkdir_backing( dput(backing_path.dentry); backing_path.dentry = d; } - inode = fuse_iget_backing(dir->i_sb, fuse_inode->nodeid, backing_inode); + inode = fuse_iget_backing(dir_inode->i_sb, 0, + backing_path.dentry->d_inode); if (IS_ERR(inode)) { err = PTR_ERR(inode); goto out; } d_instantiate(entry, inode); + if (get_fuse_inode(inode)->bpf) + bpf_prog_put(get_fuse_inode(inode)->bpf); + get_fuse_inode(inode)->bpf = get_fuse_dentry(entry)->bpf; + get_fuse_dentry(entry)->bpf = NULL; out: - inode_unlock(backing_inode); + inode_unlock(dir_backing_inode); path_put(&backing_path); return err; } diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index 59dee8d5b578..6770f1f6d226 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -192,7 +192,7 @@ static bool backing_data_changed(struct fuse_inode *fi, struct dentry *entry, int err; bool ret = true; - if (!entry) { + if (!entry || !fi->backing_inode) { ret = false; goto put_backing_file; } diff --git a/fs/proc/base.c b/fs/proc/base.c index eec5b19c0534..9652d9ec1427 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -98,6 +98,7 @@ #include #include #include +#include #include "internal.h" #include "fd.h" @@ -344,13 +345,24 @@ static ssize_t get_task_cmdline(struct task_struct *tsk, char __user *buf, size_t count, loff_t *pos) { struct mm_struct *mm; + bool prio_inherited = false; + int saved_prio; ssize_t ret; mm = get_task_mm(tsk); if (!mm) return 0; + /* + * access_remote_vm() holds the hot mmap_sem lock which can cause the + * task for which we read cmdline etc for by some debug deamon to slow + * down and suffer a performance hit. Especially if the reader task has + * a low nice value. + */ + trace_android_vh_prio_inheritance(tsk, &saved_prio, &prio_inherited); ret = get_mm_cmdline(mm, buf, count, pos); + if (prio_inherited) + trace_android_vh_prio_restore(saved_prio); mmput(mm); return ret; } diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h index 1035cb423fc1..c223ca3eebaa 100644 --- a/include/linux/cpuidle.h +++ b/include/linux/cpuidle.h @@ -314,4 +314,12 @@ extern s64 cpuidle_governor_latency_req(unsigned int cpu); #define CPU_PM_CPU_IDLE_ENTER_RETENTION_PARAM(low_level_idle_enter, idx, state) \ __CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, state, 1) +#ifdef CONFIG_CPU_IDLE_GOV_TEO +unsigned long teo_cpu_get_util_threshold(int cpu); +void teo_cpu_set_util_threshold(int cpu, unsigned long util); +#else +static inline unsigned long teo_cpu_get_util_threshold(int cpu) {return -1;} +static inline void teo_cpu_set_util_threshold(int cpu, unsigned long util) {} +#endif + #endif /* _LINUX_CPUIDLE_H */ diff --git a/include/linux/device/driver.h b/include/linux/device/driver.h index d2a71e25caab..b2d338904de2 100644 --- a/include/linux/device/driver.h +++ b/include/linux/device/driver.h @@ -134,6 +134,7 @@ extern struct device_driver *driver_find(const char *name, struct bus_type *bus); extern int driver_probe_done(void); extern void wait_for_device_probe(void); +extern void flush_deferred_probe_now(void); void __init wait_for_init_devices_probe(void); /* sysfs interface for exporting driver attributes */ diff --git a/include/linux/gunyah_rsc_mgr.h b/include/linux/gunyah_rsc_mgr.h index bc55be6d8d33..0d9ec6d5162d 100644 --- a/include/linux/gunyah_rsc_mgr.h +++ b/include/linux/gunyah_rsc_mgr.h @@ -139,6 +139,7 @@ struct gh_rm_hyp_resource { __le32 resource_label; __le64 cap_id; __le32 virq_handle; +#define GH_RM_RESOURCE_NO_VIRQ 0xFFFFFFFF __le32 virq; __le64 base; __le64 size; diff --git a/include/linux/gzvm_drv.h b/include/linux/gzvm_drv.h new file mode 100644 index 000000000000..0de4642bc01f --- /dev/null +++ b/include/linux/gzvm_drv.h @@ -0,0 +1,200 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2023 MediaTek Inc. + */ + +#ifndef __GZVM_DRV_H__ +#define __GZVM_DRV_H__ + +#include +#include +#include +#include +#include +#include +#include + +/* + * For the normal physical address, the highest 12 bits should be zero, so we + * can mask bit 62 ~ bit 52 to indicate the error physical address + */ +#define GZVM_PA_ERR_BAD (0x7ffULL << 52) + +#define GZVM_VCPU_MMAP_SIZE PAGE_SIZE +#define INVALID_VM_ID 0xffff + +/* + * These are the definitions of APIs between GenieZone hypervisor and driver, + * there's no need to be visible to uapi. Furthermore, we need GenieZone + * specific error code in order to map to Linux errno + */ +#define NO_ERROR (0) +#define ERR_NO_MEMORY (-5) +#define ERR_INVALID_ARGS (-8) +#define ERR_NOT_SUPPORTED (-24) +#define ERR_NOT_IMPLEMENTED (-27) +#define ERR_FAULT (-40) +#define GZVM_IRQFD_RESAMPLE_IRQ_SOURCE_ID 1 + +/* + * The following data structures are for data transferring between driver and + * hypervisor, and they're aligned with hypervisor definitions + */ +#define GZVM_MAX_VCPUS 8 +#define GZVM_MAX_MEM_REGION 10 + +#define GZVM_VCPU_RUN_MAP_SIZE (PAGE_SIZE * 2) + +#define GZVM_BLOCK_BASED_DEMAND_PAGE_SIZE (2 * 1024 * 1024) /* 2MB */ + +/* struct mem_region_addr_range - Identical to ffa memory constituent */ +struct mem_region_addr_range { + /* the base IPA of the constituent memory region, aligned to 4 kiB */ + __u64 address; + /* the number of 4 kiB pages in the constituent memory region. */ + __u32 pg_cnt; + __u32 reserved; +}; + +struct gzvm_memory_region_ranges { + __u32 slot; + __u32 constituent_cnt; + __u64 total_pages; + __u64 gpa; + struct mem_region_addr_range constituents[]; +}; + +/* struct gzvm_memslot - VM's memory slot descriptor */ +struct gzvm_memslot { + u64 base_gfn; /* begin of guest page frame */ + unsigned long npages; /* number of pages this slot covers */ + unsigned long userspace_addr; /* corresponding userspace va */ + struct vm_area_struct *vma; /* vma related to this userspace addr */ + u32 flags; + u32 slot_id; +}; + +struct gzvm_vcpu { + struct gzvm *gzvm; + int vcpuid; + /* lock of vcpu*/ + struct mutex lock; + struct gzvm_vcpu_run *run; + struct gzvm_vcpu_hwstate *hwstate; +}; + +struct gzvm_pinned_page { + struct rb_node node; + struct page *page; + u64 ipa; +}; + +struct gzvm { + struct gzvm_vcpu *vcpus[GZVM_MAX_VCPUS]; + /* userspace tied to this vm */ + struct mm_struct *mm; + struct gzvm_memslot memslot[GZVM_MAX_MEM_REGION]; + /* lock for list_add*/ + struct mutex lock; + + struct { + /* lock for irqfds list operation */ + spinlock_t lock; + struct list_head items; + struct list_head resampler_list; + /* lock for irqfds resampler */ + struct mutex resampler_lock; + } irqfds; + + struct list_head ioevents; + + struct list_head vm_list; + u16 vm_id; + + struct hlist_head irq_ack_notifier_list; + struct srcu_struct irq_srcu; + /* lock for irq injection */ + struct mutex irq_lock; + + /* + * demand page granularity: how much memory we allocate for VM in a + * single page fault + */ + u32 demand_page_gran; + /* the mailbox for transferring large portion pages */ + u64 *demand_page_buffer; + /* + * lock for preventing multiple cpu using the same demand page mailbox + * at the same time + */ + struct mutex demand_paging_lock; + + /* Use rb-tree to record pin/unpin page */ + struct rb_root pinned_pages; +}; + +long gzvm_dev_ioctl_check_extension(struct gzvm *gzvm, unsigned long args); +int gzvm_dev_ioctl_create_vm(unsigned long vm_type); + +int gzvm_err_to_errno(unsigned long err); + +void gzvm_destroy_all_vms(void); + +void gzvm_destroy_vcpus(struct gzvm *gzvm); + +/* arch-dependant functions */ +int gzvm_arch_probe(void); +int gzvm_arch_set_memregion(u16 vm_id, size_t buf_size, + phys_addr_t region); +int gzvm_arch_check_extension(struct gzvm *gzvm, __u64 cap, void __user *argp); +int gzvm_arch_create_vm(unsigned long vm_type); +int gzvm_arch_destroy_vm(u16 vm_id); +int gzvm_arch_map_guest(u16 vm_id, int memslot_id, u64 pfn, u64 gfn, + u64 nr_pages); +int gzvm_arch_map_guest_block(u16 vm_id, int memslot_id, u64 gfn, u64 nr_pages); +int gzvm_vm_ioctl_arch_enable_cap(struct gzvm *gzvm, + struct gzvm_enable_cap *cap, + void __user *argp); + +u64 gzvm_hva_to_pa_arch(u64 hva); +int gzvm_vm_ioctl_create_vcpu(struct gzvm *gzvm, u32 cpuid); +int gzvm_arch_vcpu_update_one_reg(struct gzvm_vcpu *vcpu, __u64 reg_id, + bool is_write, __u64 *data); +int gzvm_arch_create_vcpu(u16 vm_id, int vcpuid, void *run); +int gzvm_arch_vcpu_run(struct gzvm_vcpu *vcpu, __u64 *exit_reason); +int gzvm_arch_destroy_vcpu(u16 vm_id, int vcpuid); +int gzvm_arch_inform_exit(u16 vm_id); + +u64 gzvm_gfn_to_hva_memslot(struct gzvm_memslot *memslot, u64 gfn); +u64 hva_to_pa_fast(u64 hva); +u64 hva_to_pa_slow(u64 hva); +int gzvm_gfn_to_pfn_memslot(struct gzvm_memslot *memslot, u64 gfn, u64 *pfn); +int gzvm_find_memslot(struct gzvm *vm, u64 gpa); +int gzvm_handle_page_fault(struct gzvm_vcpu *vcpu); +bool gzvm_handle_guest_exception(struct gzvm_vcpu *vcpu); + +int gzvm_arch_create_device(u16 vm_id, struct gzvm_create_device *gzvm_dev); +int gzvm_arch_inject_irq(struct gzvm *gzvm, unsigned int vcpu_idx, + u32 irq, bool level); + +void gzvm_notify_acked_irq(struct gzvm *gzvm, unsigned int gsi); +int gzvm_irqfd(struct gzvm *gzvm, struct gzvm_irqfd *args); +int gzvm_drv_irqfd_init(void); +void gzvm_drv_irqfd_exit(void); +int gzvm_vm_irqfd_init(struct gzvm *gzvm); +void gzvm_vm_irqfd_release(struct gzvm *gzvm); + +int gzvm_arch_memregion_purpose(struct gzvm *gzvm, + struct gzvm_userspace_memory_region *mem); +int gzvm_arch_set_dtb_config(struct gzvm *gzvm, struct gzvm_dtb_config *args); + +int gzvm_init_ioeventfd(struct gzvm *gzvm); +int gzvm_ioeventfd(struct gzvm *gzvm, struct gzvm_ioeventfd *args); +bool gzvm_ioevent_write(struct gzvm_vcpu *vcpu, __u64 addr, int len, + const void *val); +void eventfd_ctx_do_read(struct eventfd_ctx *ctx, __u64 *cnt); +struct vm_area_struct *vma_lookup(struct mm_struct *mm, unsigned long addr); +void add_wait_queue_priority(struct wait_queue_head *wq_head, + struct wait_queue_entry *wq_entry); + +#endif /* __GZVM_DRV_H__ */ diff --git a/include/linux/hid.h b/include/linux/hid.h index 48cf5ee4ff71..9420731114e5 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -314,6 +314,7 @@ struct hid_item { #define HID_DG_LATENCYMODE 0x000d0060 #define HID_BAT_ABSOLUTESTATEOFCHARGE 0x00850065 +#define HID_BAT_CHARGING 0x00850044 #define HID_VD_ASUS_CUSTOM_MEDIA_KEYS 0xff310076 @@ -658,7 +659,7 @@ struct hid_device { /* device report descriptor */ unsigned int id; /* system unique id */ - ANDROID_KABI_RESERVE(1); + ANDROID_KABI_USE(1, struct { __s32 battery_charge_status; u32 padding; }); ANDROID_KABI_RESERVE(2); }; diff --git a/include/linux/of_address.h b/include/linux/of_address.h index 45598dbec269..78d3fa9b4ff8 100644 --- a/include/linux/of_address.h +++ b/include/linux/of_address.h @@ -38,6 +38,8 @@ struct of_pci_range { /* Translate a DMA address from device space to CPU space */ extern u64 of_translate_dma_address(struct device_node *dev, const __be32 *in_addr); +extern const __be32 *of_translate_dma_region(struct device_node *dev, const __be32 *addr, + phys_addr_t *start, size_t *length); #ifdef CONFIG_OF_ADDRESS extern u64 of_translate_address(struct device_node *np, const __be32 *addr); diff --git a/include/linux/of_iommu.h b/include/linux/of_iommu.h index 55c1eb300a86..9a5e6b410dd2 100644 --- a/include/linux/of_iommu.h +++ b/include/linux/of_iommu.h @@ -12,6 +12,9 @@ extern const struct iommu_ops *of_iommu_configure(struct device *dev, struct device_node *master_np, const u32 *id); +extern void of_iommu_get_resv_regions(struct device *dev, + struct list_head *list); + #else static inline const struct iommu_ops *of_iommu_configure(struct device *dev, @@ -21,6 +24,11 @@ static inline const struct iommu_ops *of_iommu_configure(struct device *dev, return NULL; } +static inline void of_iommu_get_resv_regions(struct device *dev, + struct list_head *list) +{ +} + #endif /* CONFIG_OF_IOMMU */ #endif /* __OF_IOMMU_H */ diff --git a/include/linux/oom.h b/include/linux/oom.h index 7d0c9c48a0c5..f008e23d9b41 100644 --- a/include/linux/oom.h +++ b/include/linux/oom.h @@ -112,4 +112,6 @@ extern void oom_killer_enable(void); extern struct task_struct *find_lock_task_mm(struct task_struct *p); +/* call for adding killed process to reaper. */ +extern void add_to_oom_reaper(struct task_struct *p); #endif /* _INCLUDE_LINUX_OOM_H */ diff --git a/include/linux/percpu-rwsem.h b/include/linux/percpu-rwsem.h index ebd81e03f3c1..7734ef905011 100644 --- a/include/linux/percpu-rwsem.h +++ b/include/linux/percpu-rwsem.h @@ -23,6 +23,9 @@ struct percpu_rw_semaphore { #endif }; +void _trace_android_vh_record_pcpu_rwsem_time_early( + unsigned long settime, struct percpu_rw_semaphore *sem); + #ifdef CONFIG_DEBUG_LOCK_ALLOC #define __PERCPU_RWSEM_DEP_MAP_INIT(lockname) .dep_map = { .name = #lockname }, #else @@ -54,6 +57,8 @@ static inline void percpu_down_read(struct percpu_rw_semaphore *sem) rwsem_acquire_read(&sem->dep_map, 0, 0, _RET_IP_); preempt_disable(); + _trace_android_vh_record_pcpu_rwsem_time_early(jiffies, sem); + /* * We are in an RCU-sched read-side critical section, so the writer * cannot both change sem->state from readers_fast and start checking @@ -93,6 +98,7 @@ static inline bool percpu_down_read_trylock(struct percpu_rw_semaphore *sem) */ if (ret) { + _trace_android_vh_record_pcpu_rwsem_time_early(jiffies, sem); _trace_android_vh_record_pcpu_rwsem_starttime(current, jiffies); rwsem_acquire_read(&sem->dep_map, 0, 1, _RET_IP_); } @@ -124,6 +130,7 @@ static inline void percpu_up_read(struct percpu_rw_semaphore *sem) this_cpu_dec(*sem->read_count); rcuwait_wake_up(&sem->writer); } + _trace_android_vh_record_pcpu_rwsem_time_early(0, sem); _trace_android_vh_record_pcpu_rwsem_starttime(current, 0); preempt_enable(); } diff --git a/include/linux/sched.h b/include/linux/sched.h index 4e5e406611e4..f5b50c82aa3a 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -758,10 +758,8 @@ struct task_struct { #endif unsigned int __state; -#ifdef CONFIG_PREEMPT_RT /* saved state for "spinlock sleepers" */ - unsigned int saved_state; -#endif + /* moved to ANDROID_KABI_USE(1, unsigned int saved_state) */ /* * This begins the randomizable portion of task_struct. Only @@ -1548,7 +1546,7 @@ struct task_struct { */ union rv_task_monitor rv[RV_PER_TASK_MONITORS]; #endif - ANDROID_KABI_RESERVE(1); + ANDROID_KABI_USE(1, unsigned int saved_state); ANDROID_KABI_RESERVE(2); ANDROID_KABI_RESERVE(3); ANDROID_KABI_RESERVE(4); @@ -2031,15 +2029,12 @@ static __always_inline void scheduler_ipi(void) */ preempt_fold_need_resched(); } -extern unsigned long wait_task_inactive(struct task_struct *, unsigned int match_state); #else static inline void scheduler_ipi(void) { } -static inline unsigned long wait_task_inactive(struct task_struct *p, unsigned int match_state) -{ - return 1; -} #endif +extern unsigned long wait_task_inactive(struct task_struct *, unsigned int match_state); + /* * Set thread flags in other task's structures. * See asm/thread_info.h for TIF_xxxx flags available: diff --git a/include/trace/events/erofs.h b/include/trace/events/erofs.h index e095d36db939..01d0b8927376 100644 --- a/include/trace/events/erofs.h +++ b/include/trace/events/erofs.h @@ -66,8 +66,8 @@ TRACE_EVENT(erofs_fill_inode, TP_fast_assign( __entry->dev = inode->i_sb->s_dev; __entry->nid = EROFS_I(inode)->nid; - __entry->blkaddr = erofs_blknr(erofs_iloc(inode)); - __entry->ofs = erofs_blkoff(erofs_iloc(inode)); + __entry->blkaddr = erofs_blknr(inode->i_sb, erofs_iloc(inode)); + __entry->ofs = erofs_blkoff(inode->i_sb, erofs_iloc(inode)); ), TP_printk("dev = (%d,%d), nid = %llu, blkaddr %u ofs %u", diff --git a/include/trace/hooks/binder.h b/include/trace/hooks/binder.h index 991e9b1271a1..216b5645db73 100644 --- a/include/trace/hooks/binder.h +++ b/include/trace/hooks/binder.h @@ -11,7 +11,11 @@ * mechanism for vendor modules to hook and extend functionality */ struct binder_transaction; +struct binder_transaction_data; struct task_struct; +struct binder_work; +struct binder_buffer; + DECLARE_HOOK(android_vh_binder_transaction_init, TP_PROTO(struct binder_transaction *t), TP_ARGS(t)); @@ -93,6 +97,26 @@ DECLARE_HOOK(android_vh_binder_new_ref, DECLARE_HOOK(android_vh_binder_del_ref, TP_PROTO(struct task_struct *proc, uint32_t ref_desc), TP_ARGS(proc, ref_desc)); +DECLARE_HOOK(android_vh_alloc_oem_binder_struct, + TP_PROTO(struct binder_transaction_data *tr, struct binder_transaction *t, + struct binder_proc *proc), + TP_ARGS(tr, t, proc)); +DECLARE_HOOK(android_vh_binder_transaction_received, + TP_PROTO(struct binder_transaction *t, struct binder_proc *proc, + struct binder_thread *thread, uint32_t cmd), + TP_ARGS(t, proc, thread, cmd)); +DECLARE_HOOK(android_vh_free_oem_binder_struct, + TP_PROTO(struct binder_transaction *t), + TP_ARGS(t)); +DECLARE_HOOK(android_vh_binder_special_task, + TP_PROTO(struct binder_transaction *t, struct binder_proc *proc, + struct binder_thread *thread, struct binder_work *w, + struct list_head *head, bool sync, bool *special_task), + TP_ARGS(t, proc, thread, w, head, sync, special_task)); +DECLARE_HOOK(android_vh_binder_free_buf, + TP_PROTO(struct binder_proc *proc, struct binder_thread *thread, + struct binder_buffer *buffer), + TP_ARGS(proc, thread, buffer)); #endif /* _TRACE_HOOK_BINDER_H */ /* This part must be outside protection */ diff --git a/include/trace/hooks/cgroup.h b/include/trace/hooks/cgroup.h index a50e6abc55ee..b824197118f9 100644 --- a/include/trace/hooks/cgroup.h +++ b/include/trace/hooks/cgroup.h @@ -23,6 +23,10 @@ DECLARE_HOOK(android_vh_cgroup_attach, TP_PROTO(struct cgroup_subsys *ss, struct cgroup_taskset *tset), TP_ARGS(ss, tset)); +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); + DECLARE_RESTRICTED_HOOK(android_rvh_cpuset_fork, TP_PROTO(struct task_struct *p, bool *inherit_cpus), TP_ARGS(p, inherit_cpus), 1); diff --git a/include/trace/hooks/compaction.h b/include/trace/hooks/compaction.h new file mode 100644 index 000000000000..3286de01d58b --- /dev/null +++ b/include/trace/hooks/compaction.h @@ -0,0 +1,20 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM compaction + +#define TRACE_INCLUDE_PATH trace/hooks + +#if !defined(_TRACE_HOOK_COMPACTION_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_COMPACTION_H + +#include + +DECLARE_HOOK(android_vh_compaction_exit, + TP_PROTO(int node_id, int order, const int highest_zoneidx), + TP_ARGS(node_id, order, highest_zoneidx)); +enum compact_result; +DECLARE_HOOK(android_vh_compaction_try_to_compact_pages_exit, + TP_PROTO(enum compact_result *compact_result), + TP_ARGS(compact_result)); +#endif /* _TRACE_HOOK_COMPACTION_H */ +/* This part must be outside protection */ +#include diff --git a/include/trace/hooks/dtask.h b/include/trace/hooks/dtask.h index 1552b71c1792..a63a2868e626 100644 --- a/include/trace/hooks/dtask.h +++ b/include/trace/hooks/dtask.h @@ -15,6 +15,7 @@ struct mutex; struct rt_mutex_base; struct rw_semaphore; struct task_struct; +struct percpu_rw_semaphore; DECLARE_HOOK(android_vh_mutex_wait_start, TP_PROTO(struct mutex *lock), @@ -80,6 +81,12 @@ DECLARE_HOOK(android_vh_record_rwsem_lock_starttime, DECLARE_HOOK(android_vh_record_pcpu_rwsem_starttime, TP_PROTO(struct task_struct *tsk, unsigned long settime_jiffies), TP_ARGS(tsk, settime_jiffies)); +DECLARE_HOOK(android_vh_record_pcpu_rwsem_time_early, + TP_PROTO(unsigned long settime_jiffies, struct percpu_rw_semaphore *sem), + TP_ARGS(settime_jiffies, sem)); +DECLARE_HOOK(android_vh_percpu_rwsem_wq_add, + TP_PROTO(struct percpu_rw_semaphore *sem, bool reader), + TP_ARGS(sem, reader)); struct mutex_waiter; DECLARE_HOOK(android_vh_alter_mutex_list_add, @@ -101,6 +108,19 @@ DECLARE_HOOK(android_vh_task_blocks_on_rtmutex, DECLARE_HOOK(android_vh_rtmutex_waiter_prio, TP_PROTO(struct task_struct *task, int *waiter_prio), TP_ARGS(task, waiter_prio)); + +DECLARE_HOOK(android_vh_exit_signal_whether_wake, + TP_PROTO(struct task_struct *p, bool *wake), + TP_ARGS(p, wake)); + +DECLARE_HOOK(android_vh_exit_check, + TP_PROTO(struct task_struct *p), + TP_ARGS(p)); + +DECLARE_HOOK(android_vh_freeze_whether_wake, + TP_PROTO(struct task_struct *t, bool *wake), + TP_ARGS(t, wake)); + #endif /* _TRACE_HOOK_DTASK_H */ /* This part must be outside protection */ diff --git a/include/trace/hooks/iommu.h b/include/trace/hooks/iommu.h index d36446f0dd40..7629ca915ecd 100644 --- a/include/trace/hooks/iommu.h +++ b/include/trace/hooks/iommu.h @@ -15,6 +15,7 @@ DECLARE_RESTRICTED_HOOK(android_rvh_iommu_setup_dma_ops, struct iova_domain; struct iova; +struct iommu_device; DECLARE_RESTRICTED_HOOK(android_rvh_iommu_alloc_insert_iova, TP_PROTO(struct iova_domain *iovad, unsigned long size, @@ -40,6 +41,13 @@ DECLARE_RESTRICTED_HOOK(android_rvh_iommu_limit_align_shift, unsigned long *shift), TP_ARGS(iovad, size, shift), 1); +DECLARE_HOOK(android_vh_bus_iommu_probe, + TP_PROTO(struct iommu_device *iommu, struct bus_type *bus, bool *skip), + TP_ARGS(iommu, bus, skip)); +DECLARE_HOOK(android_vh_adjust_alloc_flags, + TP_PROTO(unsigned int order, gfp_t *alloc_flags), + TP_ARGS(order, alloc_flags)); + #endif /* _TRACE_HOOK_IOMMU_H */ /* This part must be outside protection */ diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index e49cc31ea70d..ab479064007c 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -12,6 +12,7 @@ struct shmem_inode_info; struct folio; struct page_vma_mapped_walk; +struct compact_control; DECLARE_RESTRICTED_HOOK(android_rvh_shmem_get_folio, TP_PROTO(struct shmem_inode_info *info, struct folio **folio), @@ -46,6 +47,16 @@ DECLARE_HOOK(android_vh_page_add_new_anon_rmap, TP_PROTO(struct page *page, struct vm_area_struct *vma, unsigned long address), TP_ARGS(page, vma, address)); +DECLARE_HOOK(android_vh_rmqueue, + TP_PROTO(struct zone *preferred_zone, struct zone *zone, + unsigned int order, gfp_t gfp_flags, + unsigned int alloc_flags, int migratetype), + TP_ARGS(preferred_zone, zone, order, + gfp_flags, alloc_flags, migratetype)); +DECLARE_HOOK(android_vh_filemap_get_folio, + TP_PROTO(struct address_space *mapping, pgoff_t index, + int fgp_flags, gfp_t gfp_mask, struct folio *folio), + TP_ARGS(mapping, index, fgp_flags, gfp_mask, folio)); DECLARE_HOOK(android_vh_meminfo_proc_show, TP_PROTO(struct seq_file *m), TP_ARGS(m)); @@ -106,6 +117,12 @@ DECLARE_HOOK(android_vh_madvise_cold_pageout_skip, TP_PROTO(struct vm_area_struct *vma, struct page *page, bool pageout, bool *need_skip), TP_ARGS(vma, page, pageout, need_skip)); +DECLARE_HOOK(android_vh_mm_compaction_begin, + TP_PROTO(struct compact_control *cc, long *vendor_ret), + TP_ARGS(cc, vendor_ret)); +DECLARE_HOOK(android_vh_mm_compaction_end, + TP_PROTO(struct compact_control *cc, long vendor_ret), + TP_ARGS(cc, vendor_ret)); struct mem_cgroup; DECLARE_HOOK(android_vh_mem_cgroup_alloc, TP_PROTO(struct mem_cgroup *memcg), @@ -141,6 +158,16 @@ DECLARE_HOOK(android_vh_look_around, struct vm_area_struct *vma, int *referenced), TP_ARGS(pvmw, folio, vma, referenced)); +DECLARE_HOOK(android_vh_mm_alloc_pages_direct_reclaim_enter, + TP_PROTO(unsigned int order), + TP_ARGS(order)); +DECLARE_HOOK(android_vh_mm_alloc_pages_direct_reclaim_exit, + TP_PROTO(unsigned long did_some_progress, int retry_times), + TP_ARGS(did_some_progress, retry_times)); +struct oom_control; +DECLARE_HOOK(android_vh_mm_alloc_pages_may_oom_exit, + TP_PROTO(struct oom_control *oc, unsigned long did_some_progress), + TP_ARGS(oc, did_some_progress)); #endif /* _TRACE_HOOK_MM_H */ /* This part must be outside protection */ diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 4cc3f0cded7b..462552ec537e 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -321,6 +321,11 @@ DECLARE_HOOK(android_vh_setscheduler_uclamp, TP_PROTO(struct task_struct *tsk, int clamp_id, unsigned int value), TP_ARGS(tsk, clamp_id, value)); +DECLARE_HOOK(android_vh_uclamp_validate, + TP_PROTO(struct task_struct *p, const struct sched_attr *attr, + bool user, int *ret, bool *done), + TP_ARGS(p, attr, user, ret, done)); + DECLARE_HOOK(android_vh_update_topology_flags_workfn, TP_PROTO(void *unused), TP_ARGS(unused)); @@ -389,7 +394,45 @@ DECLARE_HOOK(android_vh_mmput, TP_PROTO(struct mm_struct *mm), TP_ARGS(mm)); -/* macro versions of hooks are no longer required */ +struct sched_attr; +DECLARE_HOOK(android_vh_set_sugov_sched_attr, + TP_PROTO(struct sched_attr *attr), + TP_ARGS(attr)); +DECLARE_RESTRICTED_HOOK(android_rvh_set_iowait, + TP_PROTO(struct task_struct *p, struct rq *rq, int *should_iowait_boost), + TP_ARGS(p, rq, should_iowait_boost), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_attach_entity_load_avg, + TP_PROTO(struct cfs_rq *cfs_rq, struct sched_entity *se), + TP_ARGS(cfs_rq, se), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_detach_entity_load_avg, + TP_PROTO(struct cfs_rq *cfs_rq, struct sched_entity *se), + TP_ARGS(cfs_rq, se), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_update_load_avg, + TP_PROTO(u64 now, struct cfs_rq *cfs_rq, struct sched_entity *se), + TP_ARGS(now, cfs_rq, se), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_remove_entity_load_avg, + TP_PROTO(struct cfs_rq *cfs_rq, struct sched_entity *se), + TP_ARGS(cfs_rq, se), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_update_blocked_fair, + TP_PROTO(struct rq *rq), + TP_ARGS(rq), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_update_rt_rq_load_avg, + TP_PROTO(u64 now, struct rq *rq, struct task_struct *tsk, int running), + TP_ARGS(now, rq, tsk, running), 1); + +DECLARE_HOOK(android_vh_prio_inheritance, + TP_PROTO(struct task_struct *p, int *saved_prio, bool *prio_inherited), + TP_ARGS(p, saved_prio, prio_inherited)); + +DECLARE_HOOK(android_vh_prio_restore, + TP_PROTO(int saved_prio), + TP_ARGS(saved_prio)); #endif /* _TRACE_HOOK_SCHED_H */ /* This part must be outside protection */ diff --git a/include/trace/hooks/signal.h b/include/trace/hooks/signal.h index 4e61006cb145..c845aec359d7 100644 --- a/include/trace/hooks/signal.h +++ b/include/trace/hooks/signal.h @@ -14,6 +14,9 @@ DECLARE_HOOK(android_vh_do_send_sig_info, DECLARE_HOOK(android_vh_exit_signal, TP_PROTO(struct task_struct *task), TP_ARGS(task)); +DECLARE_HOOK(android_vh_killed_process, + TP_PROTO(struct task_struct *killer, struct task_struct *dst, bool *reap), + TP_ARGS(killer, dst, reap)); #endif /* _TRACE_HOOK_SIGNAL_H */ /* This part must be outside protection */ #include diff --git a/include/trace/hooks/suspend.h b/include/trace/hooks/suspend.h new file mode 100644 index 000000000000..b4ae25393cd9 --- /dev/null +++ b/include/trace/hooks/suspend.h @@ -0,0 +1,26 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM suspend + +#define TRACE_INCLUDE_PATH trace/hooks + +#if !defined(_TRACE_HOOK_SUSPEND_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_SUSPEND_H + +#include + +DECLARE_HOOK(android_vh_resume_begin, + TP_PROTO(void *unused), + TP_ARGS(unused)) +DECLARE_HOOK(android_vh_resume_end, + TP_PROTO(void *unused), + TP_ARGS(unused)) +DECLARE_HOOK(android_vh_early_resume_begin, + TP_PROTO(void *unused), + TP_ARGS(unused)) + +/* macro versions of hooks are no longer required */ + +#endif /* _TRACE_HOOK_SUSPEND_H */ +/* This part must be outside protection */ +#include diff --git a/include/trace/hooks/topology.h b/include/trace/hooks/topology.h index d2673d4379c1..56a9fd22f8c6 100644 --- a/include/trace/hooks/topology.h +++ b/include/trace/hooks/topology.h @@ -24,6 +24,10 @@ DECLARE_HOOK(android_vh_arch_set_freq_scale, #endif +DECLARE_HOOK(android_vh_use_amu_fie, + TP_PROTO(bool *use_amu_fie), + TP_ARGS(use_amu_fie)); + #endif /* _TRACE_HOOK_TOPOLOGY_H */ /* This part must be outside protection */ #include diff --git a/include/trace/hooks/vmscan.h b/include/trace/hooks/vmscan.h index d66ab9279266..f9effdd2d03e 100644 --- a/include/trace/hooks/vmscan.h +++ b/include/trace/hooks/vmscan.h @@ -43,6 +43,16 @@ enum scan_balance; DECLARE_HOOK(android_vh_tune_scan_type, TP_PROTO(enum scan_balance *scan_type), TP_ARGS(scan_type)); +DECLARE_HOOK(android_vh_tune_swappiness, + TP_PROTO(int *swappiness), + TP_ARGS(swappiness)); +DECLARE_HOOK(android_vh_scan_abort_check_wmarks, + TP_PROTO(bool *check_wmarks), + TP_ARGS(check_wmarks)); +DECLARE_HOOK(android_vh_vmscan_kswapd_done, + TP_PROTO(int node_id, unsigned int highest_zoneidx, unsigned int alloc_order, + unsigned int reclaim_order), + TP_ARGS(node_id, highest_zoneidx, alloc_order, reclaim_order)); #endif /* _TRACE_HOOK_VMSCAN_H */ /* This part must be outside protection */ #include diff --git a/include/uapi/linux/android_fuse.h b/include/uapi/linux/android_fuse.h index 221e30ea7f01..58f3d171952d 100644 --- a/include/uapi/linux/android_fuse.h +++ b/include/uapi/linux/android_fuse.h @@ -56,15 +56,29 @@ struct fuse_in_postfilter_header { /** One input argument of a request */ struct fuse_bpf_in_arg { uint32_t size; - const void *value; - const void *end_offset; + uint32_t padding; + union { + const void *value; + uint64_t padding2; + }; + union { + const void *end_offset; + uint64_t padding3; + }; }; /** One output argument of a request */ struct fuse_bpf_arg { uint32_t size; - void *value; - void *end_offset; + uint32_t padding; + union { + void *value; + uint64_t padding2; + }; + union { + void *end_offset; + uint64_t padding3; + }; }; #define FUSE_MAX_IN_ARGS 5 @@ -80,6 +94,7 @@ struct fuse_bpf_args { uint32_t in_numargs; uint32_t out_numargs; uint32_t flags; + uint32_t padding; struct fuse_bpf_in_arg in_args[FUSE_MAX_IN_ARGS]; struct fuse_bpf_arg out_args[FUSE_MAX_OUT_ARGS]; }; diff --git a/include/uapi/linux/gzvm.h b/include/uapi/linux/gzvm.h new file mode 100644 index 000000000000..f858b04bf7b9 --- /dev/null +++ b/include/uapi/linux/gzvm.h @@ -0,0 +1,390 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* + * Copyright (c) 2023 MediaTek Inc. + */ + +/** + * DOC: UAPI of GenieZone Hypervisor + * + * This file declares common data structure shared among user space, + * kernel space, and GenieZone hypervisor. + */ +#ifndef __GZVM_H__ +#define __GZVM_H__ + +#include +#include +#include + +#define GZVM_CAP_VM_GPA_SIZE 0xa5 +#define GZVM_CAP_PROTECTED_VM 0xffbadab1 +/* query hypervisor supported block-based demand page */ +#define GZVM_CAP_BLOCK_BASED_DEMAND_PAGING 0x9201 + +/* sub-commands put in args[0] for GZVM_CAP_PROTECTED_VM */ +#define GZVM_CAP_PVM_SET_PVMFW_GPA 0 +#define GZVM_CAP_PVM_GET_PVMFW_SIZE 1 +/* GZVM_CAP_PVM_SET_PROTECTED_VM only sets protected but not load pvmfw */ +#define GZVM_CAP_PVM_SET_PROTECTED_VM 2 + +/* + * Architecture specific registers are to be defined and ORed with + * the arch identifier. + */ +#define GZVM_REG_ARCH_ARM64 0x6000000000000000ULL +#define GZVM_REG_ARCH_MASK 0xff00000000000000ULL + +/* + * Reg size = BIT((reg.id & GZVM_REG_SIZE_MASK) >> GZVM_REG_SIZE_SHIFT) bytes + */ +#define GZVM_REG_SIZE_SHIFT 52 +#define GZVM_REG_SIZE_MASK 0x00f0000000000000ULL + +#define GZVM_REG_SIZE_U8 0x0000000000000000ULL +#define GZVM_REG_SIZE_U16 0x0010000000000000ULL +#define GZVM_REG_SIZE_U32 0x0020000000000000ULL +#define GZVM_REG_SIZE_U64 0x0030000000000000ULL +#define GZVM_REG_SIZE_U128 0x0040000000000000ULL +#define GZVM_REG_SIZE_U256 0x0050000000000000ULL +#define GZVM_REG_SIZE_U512 0x0060000000000000ULL +#define GZVM_REG_SIZE_U1024 0x0070000000000000ULL +#define GZVM_REG_SIZE_U2048 0x0080000000000000ULL + +/* Register type definitions */ +#define GZVM_REG_TYPE_SHIFT 16 +/* Register type: general purpose */ +#define GZVM_REG_TYPE_GENERAL (0x10 << GZVM_REG_TYPE_SHIFT) + +/* GZVM ioctls */ +#define GZVM_IOC_MAGIC 0x92 /* gz */ + +/* ioctls for /dev/gzvm fds */ +#define GZVM_CREATE_VM _IO(GZVM_IOC_MAGIC, 0x01) /* Returns a Geniezone VM fd */ + +/* + * Check if the given capability is supported or not. + * The argument is capability. Ex. GZVM_CAP_PROTECTED_VM or GZVM_CAP_VM_GPA_SIZE + * return is 0 (supported, no error) + * return is -EOPNOTSUPP (unsupported) + * return is -EFAULT (failed to get the argument from userspace) + */ +#define GZVM_CHECK_EXTENSION _IO(GZVM_IOC_MAGIC, 0x03) + +/* ioctls for VM fds */ +/* for GZVM_SET_MEMORY_REGION */ +struct gzvm_memory_region { + __u32 slot; + __u32 flags; + __u64 guest_phys_addr; + __u64 memory_size; /* bytes */ +}; + +#define GZVM_SET_MEMORY_REGION _IOW(GZVM_IOC_MAGIC, 0x40, \ + struct gzvm_memory_region) +/* + * GZVM_CREATE_VCPU receives as a parameter the vcpu slot, + * and returns a vcpu fd. + */ +#define GZVM_CREATE_VCPU _IO(GZVM_IOC_MAGIC, 0x41) + +/* for GZVM_SET_USER_MEMORY_REGION */ +struct gzvm_userspace_memory_region { + __u32 slot; + __u32 flags; + __u64 guest_phys_addr; + /* bytes */ + __u64 memory_size; + /* start of the userspace allocated memory */ + __u64 userspace_addr; +}; + +#define GZVM_SET_USER_MEMORY_REGION _IOW(GZVM_IOC_MAGIC, 0x46, \ + struct gzvm_userspace_memory_region) + +/* for GZVM_IRQ_LINE, irq field index values */ +#define GZVM_IRQ_VCPU_MASK 0xff +#define GZVM_IRQ_LINE_TYPE GENMASK(27, 24) +#define GZVM_IRQ_LINE_VCPU GENMASK(23, 16) +#define GZVM_IRQ_LINE_VCPU2 GENMASK(31, 28) +#define GZVM_IRQ_LINE_NUM GENMASK(15, 0) + +/* irq_type field */ +#define GZVM_IRQ_TYPE_CPU 0 +#define GZVM_IRQ_TYPE_SPI 1 +#define GZVM_IRQ_TYPE_PPI 2 + +/* out-of-kernel GIC cpu interrupt injection irq_number field */ +#define GZVM_IRQ_CPU_IRQ 0 +#define GZVM_IRQ_CPU_FIQ 1 + +struct gzvm_irq_level { + union { + __u32 irq; + __s32 status; + }; + __u32 level; +}; + +#define GZVM_IRQ_LINE _IOW(GZVM_IOC_MAGIC, 0x61, \ + struct gzvm_irq_level) + +enum gzvm_device_type { + GZVM_DEV_TYPE_ARM_VGIC_V3_DIST = 0, + GZVM_DEV_TYPE_ARM_VGIC_V3_REDIST = 1, + GZVM_DEV_TYPE_MAX, +}; + +/** + * struct gzvm_create_device: For GZVM_CREATE_DEVICE. + * @dev_type: Device type. + * @id: Device id. + * @flags: Bypass to hypervisor to handle them and these are flags of virtual + * devices. + * @dev_addr: Device ipa address in VM's view. + * @dev_reg_size: Device register range size. + * @attr_addr: If user -> kernel, this is user virtual address of device + * specific attributes (if needed). If kernel->hypervisor, + * this is ipa. + * @attr_size: This attr_size is the buffer size in bytes of each attribute + * needed from various devices. The attribute here refers to the + * additional data passed from VMM(e.g. Crosvm) to GenieZone + * hypervisor when virtual devices were to be created. Thus, + * we need attr_addr and attr_size in the gzvm_create_device + * structure to keep track of the attribute mentioned. + * + * Store information needed to create device. + */ +struct gzvm_create_device { + __u32 dev_type; + __u32 id; + __u64 flags; + __u64 dev_addr; + __u64 dev_reg_size; + __u64 attr_addr; + __u64 attr_size; +}; + +#define GZVM_CREATE_DEVICE _IOWR(GZVM_IOC_MAGIC, 0xe0, \ + struct gzvm_create_device) + +/* + * ioctls for vcpu fds + */ +#define GZVM_RUN _IO(GZVM_IOC_MAGIC, 0x80) + +/* VM exit reason */ +enum { + GZVM_EXIT_UNKNOWN = 0x92920000, + GZVM_EXIT_MMIO = 0x92920001, + GZVM_EXIT_HYPERCALL = 0x92920002, + GZVM_EXIT_IRQ = 0x92920003, + GZVM_EXIT_EXCEPTION = 0x92920004, + GZVM_EXIT_DEBUG = 0x92920005, + GZVM_EXIT_FAIL_ENTRY = 0x92920006, + GZVM_EXIT_INTERNAL_ERROR = 0x92920007, + GZVM_EXIT_SYSTEM_EVENT = 0x92920008, + GZVM_EXIT_SHUTDOWN = 0x92920009, + GZVM_EXIT_GZ = 0x9292000a, +}; + +/* exception definitions of GZVM_EXIT_EXCEPTION */ +enum { + GZVM_EXCEPTION_UNKNOWN = 0x0, + GZVM_EXCEPTION_PAGE_FAULT = 0x1, +}; + +/** + * struct gzvm_vcpu_run: Same purpose as kvm_run, this struct is + * shared between userspace, kernel and + * GenieZone hypervisor + * @exit_reason: The reason why gzvm_vcpu_run has stopped running the vCPU + * @immediate_exit: Polled when the vcpu is scheduled. + * If set, immediately returns -EINTR + * @padding1: Reserved for future-proof and must be zero filled + * @mmio: The nested struct in anonymous union. Handle mmio in host side + * @phys_addr: The address guest tries to access + * @data: The value to be written (is_write is 1) or + * be filled by user for reads (is_write is 0) + * @size: The size of written data. + * Only the first `size` bytes of `data` are handled + * @reg_nr: The register number where the data is stored + * @is_write: 1 for VM to perform a write or 0 for VM to perform a read + * @fail_entry: The nested struct in anonymous union. + * Handle invalid entry address at the first run + * @hardware_entry_failure_reason: The reason codes about hardware entry failure + * @cpu: The current processor number via smp_processor_id() + * @exception: The nested struct in anonymous union. + * Handle exception occurred in VM + * @exception: Which exception vector + * @error_code: Exception error codes + * @fault_gpa: Fault GPA (guest physical address or IPA in ARM) + * @reserved: Future-proof reservation and reset to zero in hypervisor. + * Fill up to the union size, 256 bytes. + * @hypercall: The nested struct in anonymous union. + * Some hypercalls issued from VM must be handled + * @args: The hypercall's arguments + * @internal: The nested struct in anonymous union. The errors from hypervisor + * @suberror: The errors codes about GZVM_EXIT_INTERNAL_ERROR + * @ndata: The number of elements used in data[] + * @data: Keep the detailed information about GZVM_EXIT_INTERNAL_ERROR + * @system_event: The nested struct in anonymous union. + * VM's PSCI must be handled by host + * @type: System event type. + * Ex. GZVM_SYSTEM_EVENT_SHUTDOWN or GZVM_SYSTEM_EVENT_RESET...etc. + * @ndata: The number of elements used in data[] + * @data: Keep the detailed information about GZVM_EXIT_SYSTEM_EVENT + * @padding: Fix it to a reasonable size future-proof for keeping the same + * struct size when adding new variables in the union is needed + * + * Keep identical layout between the 3 modules + */ +struct gzvm_vcpu_run { + /* to userspace */ + __u32 exit_reason; + __u8 immediate_exit; + __u8 padding1[3]; + /* union structure of collection of guest exit reason */ + union { + /* GZVM_EXIT_MMIO */ + struct { + /* from FAR_EL2 */ + __u64 phys_addr; + __u8 data[8]; + /* from ESR_EL2 as */ + __u64 size; + /* from ESR_EL2 */ + __u32 reg_nr; + /* from ESR_EL2 */ + __u8 is_write; + } mmio; + /* GZVM_EXIT_FAIL_ENTRY */ + struct { + __u64 hardware_entry_failure_reason; + __u32 cpu; + } fail_entry; + /* GZVM_EXIT_EXCEPTION */ + struct { + __u32 exception; + __u32 error_code; + __u64 fault_gpa; + __u64 reserved[30]; + } exception; + /* GZVM_EXIT_HYPERCALL */ + struct { + __u64 args[8]; /* in-out */ + } hypercall; + /* GZVM_EXIT_INTERNAL_ERROR */ + struct { + __u32 suberror; + __u32 ndata; + __u64 data[16]; + } internal; + /* GZVM_EXIT_SYSTEM_EVENT */ + struct { +#define GZVM_SYSTEM_EVENT_SHUTDOWN 1 +#define GZVM_SYSTEM_EVENT_RESET 2 +#define GZVM_SYSTEM_EVENT_CRASH 3 +#define GZVM_SYSTEM_EVENT_WAKEUP 4 +#define GZVM_SYSTEM_EVENT_SUSPEND 5 +#define GZVM_SYSTEM_EVENT_SEV_TERM 6 +#define GZVM_SYSTEM_EVENT_S2IDLE 7 + __u32 type; + __u32 ndata; + __u64 data[16]; + } system_event; + char padding[256]; + }; +}; + +/** + * struct gzvm_enable_cap: The `capability support` on GenieZone hypervisor + * @cap: `GZVM_CAP_ARM_PROTECTED_VM` or `GZVM_CAP_ARM_VM_IPA_SIZE` + * @args: x3-x7 registers can be used for additional args + */ +struct gzvm_enable_cap { + __u64 cap; + __u64 args[5]; +}; + +#define GZVM_ENABLE_CAP _IOW(GZVM_IOC_MAGIC, 0xa3, \ + struct gzvm_enable_cap) + +/* for GZVM_GET/SET_ONE_REG */ +struct gzvm_one_reg { + __u64 id; + __u64 addr; +}; + +#define GZVM_GET_ONE_REG _IOW(GZVM_IOC_MAGIC, 0xab, \ + struct gzvm_one_reg) +#define GZVM_SET_ONE_REG _IOW(GZVM_IOC_MAGIC, 0xac, \ + struct gzvm_one_reg) + +#define GZVM_REG_GENERIC 0x0000000000000000ULL + +#define GZVM_IRQFD_FLAG_DEASSIGN BIT(0) +/* + * GZVM_IRQFD_FLAG_RESAMPLE indicates resamplefd is valid and specifies + * the irqfd to operate in resampling mode for level triggered interrupt + * emulation. + */ +#define GZVM_IRQFD_FLAG_RESAMPLE BIT(1) + +/** + * struct gzvm_irqfd: gzvm irqfd descriptor + * @fd: File descriptor. + * @gsi: Used for level IRQ fast-path. + * @flags: FLAG_DEASSIGN or FLAG_RESAMPLE. + * @resamplefd: The file descriptor of the resampler. + * @pad: Reserved for future-proof. + */ +struct gzvm_irqfd { + __u32 fd; + __u32 gsi; + __u32 flags; + __u32 resamplefd; + __u8 pad[16]; +}; + +#define GZVM_IRQFD _IOW(GZVM_IOC_MAGIC, 0x76, struct gzvm_irqfd) + +enum { + gzvm_ioeventfd_flag_nr_datamatch = 0, + gzvm_ioeventfd_flag_nr_pio = 1, + gzvm_ioeventfd_flag_nr_deassign = 2, + gzvm_ioeventfd_flag_nr_max, +}; + +#define GZVM_IOEVENTFD_FLAG_DATAMATCH (1 << gzvm_ioeventfd_flag_nr_datamatch) +#define GZVM_IOEVENTFD_FLAG_PIO (1 << gzvm_ioeventfd_flag_nr_pio) +#define GZVM_IOEVENTFD_FLAG_DEASSIGN (1 << gzvm_ioeventfd_flag_nr_deassign) +#define GZVM_IOEVENTFD_VALID_FLAG_MASK ((1 << gzvm_ioeventfd_flag_nr_max) - 1) + +struct gzvm_ioeventfd { + __u64 datamatch; + /* private: legal pio/mmio address */ + __u64 addr; + /* private: 1, 2, 4, or 8 bytes; or 0 to ignore length */ + __u32 len; + __s32 fd; + __u32 flags; + __u8 pad[36]; +}; + +#define GZVM_IOEVENTFD _IOW(GZVM_IOC_MAGIC, 0x79, struct gzvm_ioeventfd) + +/** + * struct gzvm_dtb_config: store address and size of dtb passed from userspace + * + * @dtb_addr: dtb address set by VMM (guset memory) + * @dtb_size: dtb size + */ +struct gzvm_dtb_config { + __u64 dtb_addr; + __u64 dtb_size; +}; + +#define GZVM_SET_DTB_CONFIG _IOW(GZVM_IOC_MAGIC, 0xff, \ + struct gzvm_dtb_config) + +#endif /* __GZVM_H__ */ diff --git a/kernel/cgroup/cgroup-internal.h b/kernel/cgroup/cgroup-internal.h index 367b0a42ada9..892b770067b5 100644 --- a/kernel/cgroup/cgroup-internal.h +++ b/kernel/cgroup/cgroup-internal.h @@ -251,7 +251,8 @@ int cgroup_attach_task(struct cgroup *dst_cgrp, struct task_struct *leader, void cgroup_attach_lock(bool lock_threadgroup); void cgroup_attach_unlock(bool lock_threadgroup); struct task_struct *cgroup_procs_write_start(char *buf, bool threadgroup, - bool *locked) + bool *locked, + struct cgroup *dst_cgrp); __acquires(&cgroup_threadgroup_rwsem); void cgroup_procs_write_finish(struct task_struct *task, bool locked) __releases(&cgroup_threadgroup_rwsem); diff --git a/kernel/cgroup/cgroup-v1.c b/kernel/cgroup/cgroup-v1.c index d0fd9392b944..9f4801d67d57 100644 --- a/kernel/cgroup/cgroup-v1.c +++ b/kernel/cgroup/cgroup-v1.c @@ -501,7 +501,7 @@ static ssize_t __cgroup1_procs_write(struct kernfs_open_file *of, if (!cgrp) return -ENODEV; - task = cgroup_procs_write_start(buf, threadgroup, &locked); + task = cgroup_procs_write_start(buf, threadgroup, &locked, cgrp); ret = PTR_ERR_OR_ZERO(task); if (ret) goto out_unlock; diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index b3a0cb605407..9bf089ccd609 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -115,6 +115,7 @@ static DEFINE_SPINLOCK(cgroup_idr_lock); static DEFINE_SPINLOCK(cgroup_file_kn_lock); DEFINE_PERCPU_RWSEM(cgroup_threadgroup_rwsem); +EXPORT_SYMBOL_GPL(cgroup_threadgroup_rwsem); #define cgroup_assert_mutex_or_rcu_locked() \ RCU_LOCKDEP_WARN(!rcu_read_lock_held() && \ @@ -2935,10 +2936,12 @@ int cgroup_attach_task(struct cgroup *dst_cgrp, struct task_struct *leader, } struct task_struct *cgroup_procs_write_start(char *buf, bool threadgroup, - bool *threadgroup_locked) + bool *threadgroup_locked, + struct cgroup *dst_cgrp) { struct task_struct *tsk; pid_t pid; + bool force_migration = false; if (kstrtoint(strstrip(buf), 0, &pid) || pid < 0) return ERR_PTR(-EINVAL); @@ -2969,13 +2972,16 @@ struct task_struct *cgroup_procs_write_start(char *buf, bool threadgroup, if (threadgroup) tsk = tsk->group_leader; + if (tsk->flags & PF_KTHREAD) + trace_android_rvh_cgroup_force_kthread_migration(tsk, dst_cgrp, &force_migration); + /* * kthreads may acquire PF_NO_SETAFFINITY during initialization. * If userland migrates such a kthread to a non-root cgroup, it can * become trapped in a cpuset, or RT kthread may be born in a * cgroup with no rt_runtime allocated. Just say no. */ - if (tsk->no_cgroup_migration || (tsk->flags & PF_NO_SETAFFINITY)) { + if (!force_migration && (tsk->no_cgroup_migration || (tsk->flags & PF_NO_SETAFFINITY))) { tsk = ERR_PTR(-EINVAL); goto out_unlock_threadgroup; } @@ -5162,7 +5168,7 @@ static ssize_t __cgroup_procs_write(struct kernfs_open_file *of, char *buf, if (!dst_cgrp) return -ENODEV; - task = cgroup_procs_write_start(buf, threadgroup, &threadgroup_locked); + task = cgroup_procs_write_start(buf, threadgroup, &threadgroup_locked, dst_cgrp); ret = PTR_ERR_OR_ZERO(task); if (ret) goto out_unlock; diff --git a/kernel/cgroup/freezer.c b/kernel/cgroup/freezer.c index 617861a54793..d0224d3c0a32 100644 --- a/kernel/cgroup/freezer.c +++ b/kernel/cgroup/freezer.c @@ -7,6 +7,7 @@ #include "cgroup-internal.h" #include +#include /* * Propagate the cgroup frozen state upwards by the cgroup tree. @@ -155,17 +156,21 @@ void cgroup_leave_frozen(bool always_leave) static void cgroup_freeze_task(struct task_struct *task, bool freeze) { unsigned long flags; + bool wake = true; /* If the task is about to die, don't bother with freezing it. */ if (!lock_task_sighand(task, &flags)) return; + trace_android_vh_freeze_whether_wake(task, &wake); if (freeze) { task->jobctl |= JOBCTL_TRAP_FREEZE; - signal_wake_up(task, false); + if (wake) + signal_wake_up(task, false); } else { task->jobctl &= ~JOBCTL_TRAP_FREEZE; - wake_up_process(task); + if (wake) + wake_up_process(task); } unlock_task_sighand(task, &flags); diff --git a/kernel/exit.c b/kernel/exit.c index 1e3b9675fbe5..15ae928cdd2f 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -73,6 +73,7 @@ #include #include #include +#include /* * The default value should be high enough to not crash a system that randomly @@ -827,6 +828,8 @@ void __noreturn do_exit(long code) io_uring_files_cancel(); exit_signals(tsk); /* sets PF_EXITING */ + trace_android_vh_exit_check(current); + /* sync mm's RSS info before statistics gathering */ if (tsk->mm) sync_mm_rss(tsk->mm); diff --git a/kernel/freezer.c b/kernel/freezer.c index b672c614b1e9..abd7f58cfe04 100644 --- a/kernel/freezer.c +++ b/kernel/freezer.c @@ -74,7 +74,11 @@ bool __refrigerator(bool check_kthr_stop) for (;;) { bool freeze; + raw_spin_lock_irq(¤t->pi_lock); set_current_state(TASK_FROZEN); + /* unstale saved_state so that __thaw_task() will wake us up */ + current->saved_state = TASK_RUNNING; + raw_spin_unlock_irq(¤t->pi_lock); spin_lock_irq(&freezer_lock); freeze = freezing(current) && !(check_kthr_stop && kthread_should_stop()); @@ -133,6 +137,7 @@ static int __set_task_frozen(struct task_struct *p, void *arg) WARN_ON_ONCE(debug_locks && p->lockdep_depth); #endif + p->saved_state = p->__state; WRITE_ONCE(p->__state, TASK_FROZEN); return TASK_FROZEN; } @@ -174,42 +179,34 @@ bool freeze_task(struct task_struct *p) } /* - * The special task states (TASK_STOPPED, TASK_TRACED) keep their canonical - * state in p->jobctl. If either of them got a wakeup that was missed because - * TASK_FROZEN, then their canonical state reflects that and the below will - * refuse to restore the special state and instead issue the wakeup. + * Restore the saved_state before the task entered freezer. For typical task + * in the __refrigerator(), saved_state == TASK_RUNNING so nothing happens + * here. For tasks which were TASK_NORMAL | TASK_FREEZABLE, their initial state + * is restored unless they got an expected wakeup (see ttwu_state_match()). + * Returns 1 if the task state was restored. */ -static int __set_task_special(struct task_struct *p, void *arg) +static int __restore_freezer_state(struct task_struct *p, void *arg) { - unsigned int state = 0; + unsigned int state = p->saved_state; - if (p->jobctl & JOBCTL_TRACED) - state = TASK_TRACED; - - else if (p->jobctl & JOBCTL_STOPPED) - state = TASK_STOPPED; - - if (state) + if (state != TASK_RUNNING) { WRITE_ONCE(p->__state, state); + return 1; + } - return state; + return 0; } void __thaw_task(struct task_struct *p) { - unsigned long flags, flags2; + unsigned long flags; spin_lock_irqsave(&freezer_lock, flags); if (WARN_ON_ONCE(freezing(p))) goto unlock; - if (lock_task_sighand(p, &flags2)) { - /* TASK_FROZEN -> TASK_{STOPPED,TRACED} */ - bool ret = task_call_func(p, __set_task_special, NULL); - unlock_task_sighand(p, &flags2); - if (ret) - goto unlock; - } + if (task_call_func(p, __restore_freezer_state, NULL)) + goto unlock; wake_up_state(p, TASK_FROZEN); unlock: diff --git a/kernel/locking/percpu-rwsem.c b/kernel/locking/percpu-rwsem.c index 084aedde3d0f..549da829c954 100644 --- a/kernel/locking/percpu-rwsem.c +++ b/kernel/locking/percpu-rwsem.c @@ -26,6 +26,20 @@ void _trace_android_vh_record_pcpu_rwsem_starttime(struct task_struct *tsk, } EXPORT_SYMBOL_GPL(_trace_android_vh_record_pcpu_rwsem_starttime); +/* + * trace_android_vh_record_pcpu_rwsem_time_early is called in + * include/linux/percpu-rwsem.h by including include/hooks/dtask.h, which + * will result to build-err. So we create + * func: _trace_android_vh_record_pcpu_rwsem_time_early for percpu-rwsem.h to call. +*/ + +void _trace_android_vh_record_pcpu_rwsem_time_early( + unsigned long settime, struct percpu_rw_semaphore *sem) +{ + trace_android_vh_record_pcpu_rwsem_time_early(settime, sem); +} +EXPORT_SYMBOL_GPL(_trace_android_vh_record_pcpu_rwsem_time_early); + int __percpu_init_rwsem(struct percpu_rw_semaphore *sem, const char *name, struct lock_class_key *key) { @@ -167,6 +181,7 @@ static void percpu_rwsem_wait(struct percpu_rw_semaphore *sem, bool reader) if (wait) { wq_entry.flags |= WQ_FLAG_EXCLUSIVE | reader * WQ_FLAG_CUSTOM; __add_wait_queue_entry_tail(&sem->waiters, &wq_entry); + trace_android_vh_percpu_rwsem_wq_add(sem, reader); } spin_unlock_irq(&sem->waiters.lock); @@ -242,6 +257,8 @@ void __sched percpu_down_write(struct percpu_rw_semaphore *sem) rwsem_acquire(&sem->dep_map, 0, 0, _RET_IP_); trace_contention_begin(sem, LCB_F_PERCPU | LCB_F_WRITE); + trace_android_vh_record_pcpu_rwsem_time_early(jiffies, sem); + /* Notify readers to take the slow path. */ rcu_sync_enter(&sem->rss); @@ -294,6 +311,7 @@ void percpu_up_write(struct percpu_rw_semaphore *sem) * exclusive write lock because its counting. */ rcu_sync_exit(&sem->rss); + trace_android_vh_record_pcpu_rwsem_time_early(0, sem); trace_android_vh_record_pcpu_rwsem_starttime(current, 0); } EXPORT_SYMBOL_GPL(percpu_up_write); diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c index c61c378e514f..eb4fad35128a 100644 --- a/kernel/power/suspend.c +++ b/kernel/power/suspend.c @@ -31,6 +31,7 @@ #include #include #include +#include #include "power.h" @@ -460,6 +461,7 @@ static int suspend_enter(suspend_state_t state, bool *wakeup) error = suspend_ops->enter(state); trace_suspend_resume(TPS("machine_suspend"), state, false); + trace_android_vh_early_resume_begin(NULL); } else if (*wakeup) { error = -EBUSY; } @@ -528,6 +530,7 @@ int suspend_devices_and_enter(suspend_state_t state) } while (!error && !wakeup && platform_suspend_again(state)); Resume_devices: + trace_android_vh_resume_begin(NULL); suspend_test_start(); dpm_resume_end(PMSG_RESUME); suspend_test_finish("resume devices"); @@ -538,6 +541,7 @@ int suspend_devices_and_enter(suspend_state_t state) Close: platform_resume_end(state); pm_suspend_target_state = PM_SUSPEND_ON; + trace_android_vh_resume_end(NULL); return error; Recover_platform: diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 0b4e4d374ca1..c9acddf7eff1 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -116,6 +116,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(sched_util_est_se_tp); EXPORT_TRACEPOINT_SYMBOL_GPL(sched_update_nr_running_tp); EXPORT_TRACEPOINT_SYMBOL_GPL(sched_switch); EXPORT_TRACEPOINT_SYMBOL_GPL(sched_waking); +EXPORT_TRACEPOINT_SYMBOL_GPL(sched_wakeup); #ifdef CONFIG_SCHEDSTATS EXPORT_TRACEPOINT_SYMBOL_GPL(sched_stat_sleep); EXPORT_TRACEPOINT_SYMBOL_GPL(sched_stat_wait); @@ -1880,10 +1881,16 @@ done: #endif static int uclamp_validate(struct task_struct *p, - const struct sched_attr *attr) + const struct sched_attr *attr, bool user) { int util_min = p->uclamp_req[UCLAMP_MIN].value; int util_max = p->uclamp_req[UCLAMP_MAX].value; + bool done = false; + int ret = 0; + + trace_android_vh_uclamp_validate(p, attr, user, &ret, &done); + if (done) + return ret; if (attr->sched_flags & SCHED_FLAG_UTIL_CLAMP_MIN) { util_min = attr->sched_util_min; @@ -1905,11 +1912,19 @@ static int uclamp_validate(struct task_struct *p, /* * We have valid uclamp attributes; make sure uclamp is enabled. * - * We need to do that here, because enabling static branches is a - * blocking operation which obviously cannot be done while holding + * We need to do that here, because enabling static branches is + * a blocking operation which obviously cannot be done while holding * scheduler locks. + * + * We only enable the static key if this was initiated by user space + * request. There should be no in-kernel users of uclamp except to + * implement things like inheritance like in binder. These in-kernel + * callers can rightfully be called be sometimes in_atomic() context + * which is invalid context to enable the key in. The enabling path + * unconditionally holds the cpus_read_lock() which might_sleep(). */ - static_branch_enable(&sched_uclamp_used); + if (user) + static_branch_enable(&sched_uclamp_used); return 0; } @@ -2050,7 +2065,7 @@ static void __init init_uclamp(void) static inline void uclamp_rq_inc(struct rq *rq, struct task_struct *p) { } static inline void uclamp_rq_dec(struct rq *rq, struct task_struct *p) { } static inline int uclamp_validate(struct task_struct *p, - const struct sched_attr *attr) + const struct sched_attr *attr, bool user) { return -EOPNOTSUPP; } @@ -2235,6 +2250,149 @@ void check_preempt_curr(struct rq *rq, struct task_struct *p, int flags) } EXPORT_SYMBOL_GPL(check_preempt_curr); +static __always_inline +int __task_state_match(struct task_struct *p, unsigned int state) +{ + if (READ_ONCE(p->__state) & state) + return 1; + + if (READ_ONCE(p->saved_state) & state) + return -1; + + return 0; +} + +static __always_inline +int task_state_match(struct task_struct *p, unsigned int state) +{ + int match; + + /* + * Serialize against current_save_and_set_rtlock_wait_state(), + * current_restore_rtlock_saved_state(), and __refrigerator(). + */ + raw_spin_lock_irq(&p->pi_lock); + match = __task_state_match(p, state); + raw_spin_unlock_irq(&p->pi_lock); + + return match; +} + +/* + * wait_task_inactive - wait for a thread to unschedule. + * + * Wait for the thread to block in any of the states set in @match_state. + * If it changes, i.e. @p might have woken up, then return zero. When we + * succeed in waiting for @p to be off its CPU, we return a positive number + * (its total switch count). If a second call a short while later returns the + * same number, the caller can be sure that @p has remained unscheduled the + * whole time. + * + * The caller must ensure that the task *will* unschedule sometime soon, + * else this function might spin for a *long* time. This function can't + * be called with interrupts off, or it may introduce deadlock with + * smp_call_function() if an IPI is sent by the same process we are + * waiting to become inactive. + */ +unsigned long wait_task_inactive(struct task_struct *p, unsigned int match_state) +{ + int running, queued, match; + struct rq_flags rf; + unsigned long ncsw; + struct rq *rq; + + for (;;) { + /* + * We do the initial early heuristics without holding + * any task-queue locks at all. We'll only try to get + * the runqueue lock when things look like they will + * work out! + */ + rq = task_rq(p); + + /* + * If the task is actively running on another CPU + * still, just relax and busy-wait without holding + * any locks. + * + * NOTE! Since we don't hold any locks, it's not + * even sure that "rq" stays as the right runqueue! + * But we don't care, since "task_on_cpu()" will + * return false if the runqueue has changed and p + * is actually now running somewhere else! + */ + while (task_on_cpu(rq, p)) { + if (!task_state_match(p, match_state)) + return 0; + cpu_relax(); + } + + /* + * Ok, time to look more closely! We need the rq + * lock now, to be *sure*. If we're wrong, we'll + * just go back and repeat. + */ + rq = task_rq_lock(p, &rf); + trace_sched_wait_task(p); + running = task_on_cpu(rq, p); + queued = task_on_rq_queued(p); + ncsw = 0; + if ((match = __task_state_match(p, match_state))) { + /* + * When matching on p->saved_state, consider this task + * still queued so it will wait. + */ + if (match < 0) + queued = 1; + ncsw = p->nvcsw | LONG_MIN; /* sets MSB */ + } + task_rq_unlock(rq, p, &rf); + + /* + * If it changed from the expected state, bail out now. + */ + if (unlikely(!ncsw)) + break; + + /* + * Was it really running after all now that we + * checked with the proper locks actually held? + * + * Oops. Go back and try again.. + */ + if (unlikely(running)) { + cpu_relax(); + continue; + } + + /* + * It's not enough that it's not actively running, + * it must be off the runqueue _entirely_, and not + * preempted! + * + * So if it was still runnable (but just not actively + * running right now), it's preempted, and we should + * yield - it could be a while. + */ + if (unlikely(queued)) { + ktime_t to = NSEC_PER_SEC / HZ; + + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_hrtimeout(&to, HRTIMER_MODE_REL_HARD); + continue; + } + + /* + * Ahh, all good. It wasn't running, and it wasn't + * runnable, which means that it will never become + * running in the future either. We're all done! + */ + break; + } + + return ncsw; +} + #ifdef CONFIG_SMP static void @@ -2588,6 +2746,7 @@ out_unlock: put_task_struct(p); return 0; } +EXPORT_SYMBOL_GPL(push_cpu_stop); /* * sched_class::set_cpus_allowed must do the below, but is not required to @@ -3348,114 +3507,6 @@ out: } EXPORT_SYMBOL_GPL(migrate_swap); -/* - * wait_task_inactive - wait for a thread to unschedule. - * - * Wait for the thread to block in any of the states set in @match_state. - * If it changes, i.e. @p might have woken up, then return zero. When we - * succeed in waiting for @p to be off its CPU, we return a positive number - * (its total switch count). If a second call a short while later returns the - * same number, the caller can be sure that @p has remained unscheduled the - * whole time. - * - * The caller must ensure that the task *will* unschedule sometime soon, - * else this function might spin for a *long* time. This function can't - * be called with interrupts off, or it may introduce deadlock with - * smp_call_function() if an IPI is sent by the same process we are - * waiting to become inactive. - */ -unsigned long wait_task_inactive(struct task_struct *p, unsigned int match_state) -{ - int running, queued; - struct rq_flags rf; - unsigned long ncsw; - struct rq *rq; - - for (;;) { - /* - * We do the initial early heuristics without holding - * any task-queue locks at all. We'll only try to get - * the runqueue lock when things look like they will - * work out! - */ - rq = task_rq(p); - - /* - * If the task is actively running on another CPU - * still, just relax and busy-wait without holding - * any locks. - * - * NOTE! Since we don't hold any locks, it's not - * even sure that "rq" stays as the right runqueue! - * But we don't care, since "task_on_cpu()" will - * return false if the runqueue has changed and p - * is actually now running somewhere else! - */ - while (task_on_cpu(rq, p)) { - if (!(READ_ONCE(p->__state) & match_state)) - return 0; - cpu_relax(); - } - - /* - * Ok, time to look more closely! We need the rq - * lock now, to be *sure*. If we're wrong, we'll - * just go back and repeat. - */ - rq = task_rq_lock(p, &rf); - trace_sched_wait_task(p); - running = task_on_cpu(rq, p); - queued = task_on_rq_queued(p); - ncsw = 0; - if (READ_ONCE(p->__state) & match_state) - ncsw = p->nvcsw | LONG_MIN; /* sets MSB */ - task_rq_unlock(rq, p, &rf); - - /* - * If it changed from the expected state, bail out now. - */ - if (unlikely(!ncsw)) - break; - - /* - * Was it really running after all now that we - * checked with the proper locks actually held? - * - * Oops. Go back and try again.. - */ - if (unlikely(running)) { - cpu_relax(); - continue; - } - - /* - * It's not enough that it's not actively running, - * it must be off the runqueue _entirely_, and not - * preempted! - * - * So if it was still runnable (but just not actively - * running right now), it's preempted, and we should - * yield - it could be a while. - */ - if (unlikely(queued)) { - ktime_t to = NSEC_PER_SEC / HZ; - - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_hrtimeout(&to, HRTIMER_MODE_REL_HARD); - continue; - } - - /* - * Ahh, all good. It wasn't running, and it wasn't - * runnable, which means that it will never become - * running in the future either. We're all done! - */ - break; - } - - return ncsw; -} - /*** * kick_process - kick a running thread to enter/exit the kernel * @p: the to-be-kicked thread @@ -3993,34 +4044,37 @@ static void ttwu_queue(struct task_struct *p, int cpu, int wake_flags) * The caller holds p::pi_lock if p != current or has preemption * disabled when p == current. * - * The rules of PREEMPT_RT saved_state: + * The rules of saved_state: * * The related locking code always holds p::pi_lock when updating * p::saved_state, which means the code is fully serialized in both cases. * - * The lock wait and lock wakeups happen via TASK_RTLOCK_WAIT. No other - * bits set. This allows to distinguish all wakeup scenarios. + * For PREEMPT_RT, the lock wait and lock wakeups happen via TASK_RTLOCK_WAIT. + * No other bits set. This allows to distinguish all wakeup scenarios. + * + * For FREEZER, the wakeup happens via TASK_FROZEN. No other bits set. This + * allows us to prevent early wakeup of tasks before they can be run on + * asymmetric ISA architectures (eg ARMv9). */ static __always_inline bool ttwu_state_match(struct task_struct *p, unsigned int state, int *success) { + int match; + if (IS_ENABLED(CONFIG_DEBUG_PREEMPT)) { WARN_ON_ONCE((state & TASK_RTLOCK_WAIT) && state != TASK_RTLOCK_WAIT); } - if (READ_ONCE(p->__state) & state) { - *success = 1; - return true; - } + *success = !!(match = __task_state_match(p, state)); -#ifdef CONFIG_PREEMPT_RT /* * Saved state preserves the task state across blocking on - * an RT lock. If the state matches, set p::saved_state to - * TASK_RUNNING, but do not wake the task because it waits - * for a lock wakeup. Also indicate success because from - * the regular waker's point of view this has succeeded. + * an RT lock or TASK_FREEZABLE tasks. If the state matches, + * set p::saved_state to TASK_RUNNING, but do not wake the task + * because it waits for a lock wakeup or __thaw_task(). Also + * indicate success because from the regular waker's point of + * view this has succeeded. * * After acquiring the lock the task will restore p::__state * from p::saved_state which ensures that the regular @@ -4028,12 +4082,10 @@ bool ttwu_state_match(struct task_struct *p, unsigned int state, int *success) * p::saved_state to TASK_RUNNING so any further tests will * not result in false positives vs. @success */ - if (p->saved_state & state) { + if (match < 0) p->saved_state = TASK_RUNNING; - *success = 1; - } -#endif - return false; + + return match > 0; } /* @@ -4455,6 +4507,7 @@ int wake_up_state(struct task_struct *p, unsigned int state) { return try_to_wake_up(p, state, 0); } +EXPORT_SYMBOL(wake_up_state); /* * Perform scheduler related setup for a newly forked process p. @@ -5364,6 +5417,7 @@ unsigned int nr_running(void) return sum; } +EXPORT_SYMBOL(nr_running); /* * Check if only the current task is running on the CPU. @@ -7647,7 +7701,7 @@ recheck: /* Update task specific "requested" clamps */ if (attr->sched_flags & SCHED_FLAG_UTIL_CLAMP) { - retval = uclamp_validate(p, attr); + retval = uclamp_validate(p, attr, user); if (retval) return retval; } diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c index 042e5ad60843..bf0426428915 100644 --- a/kernel/sched/cpufreq_schedutil.c +++ b/kernel/sched/cpufreq_schedutil.c @@ -603,6 +603,7 @@ static int sugov_kthread_create(struct sugov_policy *sg_policy) if (policy->fast_switch_enabled) return 0; + trace_android_vh_set_sugov_sched_attr(&attr); kthread_init_work(&sg_policy->work, sugov_work); kthread_init_worker(&sg_policy->worker); thread = kthread_create(kthread_worker_fn, &sg_policy->worker, diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 0a09be6f7b9b..240e16edb487 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -3350,6 +3350,7 @@ void reweight_task(struct task_struct *p, int prio) reweight_entity(cfs_rq, se, weight); load->inv_weight = sched_prio_to_wmult[prio]; } +EXPORT_SYMBOL_GPL(reweight_task); static inline int throttled_hierarchy(struct cfs_rq *cfs_rq); @@ -4128,6 +4129,8 @@ static void attach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *s else se->avg.load_sum = 1; + trace_android_rvh_attach_entity_load_avg(cfs_rq, se); + enqueue_load_avg(cfs_rq, se); cfs_rq->avg.util_avg += se->avg.util_avg; cfs_rq->avg.util_sum += se->avg.util_sum; @@ -4151,6 +4154,8 @@ static void attach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *s */ static void detach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *se) { + trace_android_rvh_detach_entity_load_avg(cfs_rq, se); + dequeue_load_avg(cfs_rq, se); sub_positive(&cfs_rq->avg.util_avg, se->avg.util_avg); sub_positive(&cfs_rq->avg.util_sum, se->avg.util_sum); @@ -4195,6 +4200,8 @@ static inline void update_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *s decayed = update_cfs_rq_load_avg(now, cfs_rq); decayed |= propagate_entity_load_avg(se); + trace_android_rvh_update_load_avg(now, cfs_rq, se); + if (!se->avg.last_update_time && (flags & DO_ATTACH)) { /* @@ -4252,6 +4259,8 @@ static void remove_entity_load_avg(struct sched_entity *se) sync_entity_load_avg(se); + trace_android_rvh_remove_entity_load_avg(cfs_rq, se); + raw_spin_lock_irqsave(&cfs_rq->removed.lock, flags); ++cfs_rq->removed.nr; cfs_rq->removed.util_avg += se->avg.util_avg; @@ -6126,6 +6135,7 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags) struct sched_entity *se = &p->se; int idle_h_nr_running = task_has_idle_policy(p); int task_new = !(flags & ENQUEUE_WAKEUP); + int should_iowait_boost; /* * The code below (indirectly) updates schedutil which looks at @@ -6140,7 +6150,9 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags) * utilization updates, so do it here explicitly with the IOWAIT flag * passed. */ - if (p->in_iowait) + should_iowait_boost = p->in_iowait; + trace_android_rvh_set_iowait(p, rq, &should_iowait_boost); + if (should_iowait_boost) cpufreq_update_util(rq, SCHED_CPUFREQ_IOWAIT); for_each_sched_entity(se) { @@ -8803,6 +8815,8 @@ static bool __update_blocked_fair(struct rq *rq, bool *done) bool decayed = false; int cpu = cpu_of(rq); + trace_android_rvh_update_blocked_fair(rq); + /* * Iterates the task_group tree in a bottom up fashion, see * list_add_leaf_cfs_rq() for details. diff --git a/kernel/sched/pelt.c b/kernel/sched/pelt.c index a005458373be..c1c84f5a3c03 100644 --- a/kernel/sched/pelt.c +++ b/kernel/sched/pelt.c @@ -176,7 +176,7 @@ accumulate_sum(u64 delta, struct sched_avg *sa, * load_avg = u_0` + y*(u_0 + u_1*y + u_2*y^2 + ... ) * = u_0 + u_1*y + u_2*y^2 + ... [re-labeling u_i --> u_{i+1}] */ -static __always_inline int +int ___update_load_sum(u64 now, struct sched_avg *sa, unsigned long load, unsigned long runnable, int running) { @@ -228,6 +228,7 @@ ___update_load_sum(u64 now, struct sched_avg *sa, return 1; } +EXPORT_SYMBOL_GPL(___update_load_sum); /* * When syncing *_avg with *_sum, we must take into account the current @@ -253,7 +254,7 @@ ___update_load_sum(u64 now, struct sched_avg *sa, * the period_contrib of cfs_rq when updating the sched_avg of a sched_entity * if it's more convenient. */ -static __always_inline void +void ___update_load_avg(struct sched_avg *sa, unsigned long load) { u32 divider = get_pelt_divider(sa); @@ -265,6 +266,7 @@ ___update_load_avg(struct sched_avg *sa, unsigned long load) sa->runnable_avg = div_u64(sa->runnable_sum, divider); WRITE_ONCE(sa->util_avg, sa->util_sum / divider); } +EXPORT_SYMBOL_GPL(___update_load_avg); /* * sched_entity: diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index 0c7907723056..6e4994558ba9 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -1848,6 +1848,7 @@ static inline void set_next_task_rt(struct rq *rq, struct task_struct *p, bool f */ if (rq->curr->sched_class != &rt_sched_class) update_rt_rq_load_avg(rq_clock_pelt(rq), rq, 0); + trace_android_rvh_update_rt_rq_load_avg(rq_clock_pelt(rq), rq, p, 0); rt_queue_push_tasks(rq); } @@ -1918,6 +1919,7 @@ static void put_prev_task_rt(struct rq *rq, struct task_struct *p) update_curr_rt(rq); update_rt_rq_load_avg(rq_clock_pelt(rq), rq, 1); + trace_android_rvh_update_rt_rq_load_avg(rq_clock_pelt(rq), rq, p, 1); /* * The previous task needs to be made eligible for pushing @@ -2741,6 +2743,7 @@ static void task_tick_rt(struct rq *rq, struct task_struct *p, int queued) update_curr_rt(rq); update_rt_rq_load_avg(rq_clock_pelt(rq), rq, 1); + trace_android_rvh_update_rt_rq_load_avg(rq_clock_pelt(rq), rq, p, 1); watchdog(rq, p); diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index f528b1f6cbb9..a4c6f277c0f6 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -99,3 +99,14 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_irqtime_account_process_tick); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_post_init_entity_util_avg); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_effective_cpu_util); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmput); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_uclamp_validate); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_sugov_sched_attr); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_iowait); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_attach_entity_load_avg); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_detach_entity_load_avg); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_load_avg); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_remove_entity_load_avg); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_blocked_fair); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_rt_rq_load_avg); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_prio_inheritance); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_prio_restore); diff --git a/kernel/signal.c b/kernel/signal.c index 8e5ade75abca..a55cc27959e7 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -45,6 +45,7 @@ #include #include #include +#include #define CREATE_TRACE_POINTS #include @@ -58,6 +59,7 @@ #undef CREATE_TRACE_POINTS #include +#include /* * SLAB caches for signal bits. */ @@ -1005,6 +1007,7 @@ static void complete_signal(int sig, struct task_struct *p, enum pid_type type) { struct signal_struct *signal = p->signal; struct task_struct *t; + bool wake; /* * Now find a thread we can wake up to take the signal off the queue. @@ -1064,7 +1067,10 @@ static void complete_signal(int sig, struct task_struct *p, enum pid_type type) trace_android_vh_exit_signal(t); task_clear_jobctl_pending(t, JOBCTL_PENDING_MASK); sigaddset(&t->pending.signal, SIGKILL); - signal_wake_up(t, 1); + wake = true; + trace_android_vh_exit_signal_whether_wake(t, &wake); + if (wake) + signal_wake_up(t, 1); } while_each_thread(p, t); return; } @@ -1447,8 +1453,16 @@ int group_send_sig_info(int sig, struct kernel_siginfo *info, ret = check_kill_permission(sig, info, p); rcu_read_unlock(); - if (!ret && sig) + if (!ret && sig) { ret = do_send_sig_info(sig, info, p, type); + if (!ret && sig == SIGKILL) { + bool reap = false; + + trace_android_vh_killed_process(current, p, &reap); + if (reap) + add_to_oom_reaper(p); + } + } return ret; } diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 7af29cd333d9..826f7b8d5e05 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -75,6 +75,7 @@ #define MA_STATE_PREALLOC 4 #define ma_parent_ptr(x) ((struct maple_pnode *)(x)) +#define mas_tree_parent(x) ((unsigned long)(x->tree) | MA_ROOT_PARENT) #define ma_mnode_ptr(x) ((struct maple_node *)(x)) #define ma_enode_ptr(x) ((struct maple_enode *)(x)) static struct kmem_cache *maple_node_cache; @@ -1002,27 +1003,9 @@ static inline void mat_add(struct ma_topiary *mat, mat->tail = dead_enode; } -static void mte_destroy_walk(struct maple_enode *, struct maple_tree *); -static inline void mas_free(struct ma_state *mas, struct maple_enode *used); - -/* - * mas_mat_free() - Free all nodes in a dead list. - * @mas - the maple state - * @mat - the ma_topiary linked list of dead nodes to free. - * - * Free walk a dead list. - */ -static void mas_mat_free(struct ma_state *mas, struct ma_topiary *mat) -{ - struct maple_enode *next; - - while (mat->head) { - next = mte_to_mat(mat->head)->next; - mas_free(mas, mat->head); - mat->head = next; - } -} - +static void mt_free_walk(struct rcu_head *head); +static void mt_destroy_walk(struct maple_enode *enode, struct maple_tree *mt, + bool free); /* * mas_mat_destroy() - Free all nodes and subtrees in a dead list. * @mas - the maple state @@ -1033,10 +1016,15 @@ static void mas_mat_free(struct ma_state *mas, struct ma_topiary *mat) static void mas_mat_destroy(struct ma_state *mas, struct ma_topiary *mat) { struct maple_enode *next; + struct maple_node *node; + bool in_rcu = mt_in_rcu(mas->tree); while (mat->head) { next = mte_to_mat(mat->head)->next; - mte_destroy_walk(mat->head, mat->mtree); + node = mte_to_node(mat->head); + mt_destroy_walk(mat->head, mas->tree, !in_rcu); + if (in_rcu) + call_rcu(&node->rcu, mt_free_walk); mat->head = next; } } @@ -1731,7 +1719,7 @@ static inline void mas_adopt_children(struct ma_state *mas, struct maple_enode *parent) { enum maple_type type = mte_node_type(parent); - struct maple_node *node = mas_mn(mas); + struct maple_node *node = mte_to_node(parent); void __rcu **slots = ma_slots(node, type); unsigned long *pivots = ma_pivots(node, type); struct maple_enode *child; @@ -1745,53 +1733,54 @@ static inline void mas_adopt_children(struct ma_state *mas, } /* - * mas_replace() - Replace a maple node in the tree with mas->node. Uses the - * parent encoding to locate the maple node in the tree. - * @mas - the ma_state to use for operations. - * @advanced - boolean to adopt the child nodes and free the old node (false) or - * leave the node (true) and handle the adoption and free elsewhere. + * mas_put_in_tree() - Put a new node in the tree, smp_wmb(), and mark the old + * node as dead. + * @mas - the maple state with the new node + * @old_enode - The old maple encoded node to replace. */ -static inline void mas_replace(struct ma_state *mas, bool advanced) +static inline void mas_put_in_tree(struct ma_state *mas, + struct maple_enode *old_enode) __must_hold(mas->tree->lock) { - struct maple_node *mn = mas_mn(mas); - struct maple_enode *old_enode; - unsigned char offset = 0; - void __rcu **slots = NULL; - - if (ma_is_root(mn)) { - old_enode = mas_root_locked(mas); - } else { - offset = mte_parent_slot(mas->node); - slots = ma_slots(mte_parent(mas->node), - mas_parent_enum(mas, mas->node)); - old_enode = mas_slot_locked(mas, slots, offset); - } - - if (!advanced && !mte_is_leaf(mas->node)) - mas_adopt_children(mas, mas->node); + unsigned char offset; + void __rcu **slots; if (mte_is_root(mas->node)) { - mn->parent = ma_parent_ptr( - ((unsigned long)mas->tree | MA_ROOT_PARENT)); + mas_mn(mas)->parent = ma_parent_ptr(mas_tree_parent(mas)); rcu_assign_pointer(mas->tree->ma_root, mte_mk_root(mas->node)); mas_set_height(mas); } else { + + offset = mte_parent_slot(mas->node); + slots = ma_slots(mte_parent(mas->node), + mas_parent_enum(mas, mas->node)); rcu_assign_pointer(slots[offset], mas->node); } - if (!advanced) { - mte_set_node_dead(old_enode); - mas_free(mas, old_enode); - } + mte_set_node_dead(old_enode); } /* - * mas_new_child() - Find the new child of a node. - * @mas: the maple state + * mas_replace_node() - Replace a node by putting it in the tree, marking it + * dead, and freeing it. + * the parent encoding to locate the maple node in the tree. + * @mas - the ma_state with @mas->node pointing to the new node. + * @old_enode - The old maple encoded node. + */ +static inline void mas_replace_node(struct ma_state *mas, + struct maple_enode *old_enode) + __must_hold(mas->tree->ma_lock) +{ + mas_put_in_tree(mas, old_enode); + mas_free(mas, old_enode); +} + +/* + * mas_find_child() - Find a child who has the parent @mas->node. + * @mas: the maple state with the parent. * @child: the maple state to store the child. */ -static inline bool mas_new_child(struct ma_state *mas, struct ma_state *child) +static inline bool mas_find_child(struct ma_state *mas, struct ma_state *child) __must_hold(mas->tree->lock) { enum maple_type mt; @@ -2093,56 +2082,6 @@ static inline void mab_mas_cp(struct maple_big_node *b_node, } } -/* - * mas_descend_adopt() - Descend through a sub-tree and adopt children. - * @mas: the maple state with the maple encoded node of the sub-tree. - * - * Descend through a sub-tree and adopt children who do not have the correct - * parents set. Follow the parents which have the correct parents as they are - * the new entries which need to be followed to find other incorrectly set - * parents. - */ -static inline void mas_descend_adopt(struct ma_state *mas) -{ - struct ma_state list[3], next[3]; - int i, n; - - /* - * At each level there may be up to 3 correct parent pointers which indicates - * the new nodes which need to be walked to find any new nodes at a lower level. - */ - - for (i = 0; i < 3; i++) { - list[i] = *mas; - list[i].offset = 0; - next[i].offset = 0; - } - next[0] = *mas; - - while (!mte_is_leaf(list[0].node)) { - n = 0; - for (i = 0; i < 3; i++) { - if (mas_is_none(&list[i])) - continue; - - if (i && list[i-1].node == list[i].node) - continue; - - while ((n < 3) && (mas_new_child(&list[i], &next[n]))) - n++; - - mas_adopt_children(&list[i], list[i].node); - } - - while (n < 3) - next[n++].node = MAS_NONE; - - /* descend by setting the list to the children */ - for (i = 0; i < 3; i++) - list[i] = next[i]; - } -} - /* * mas_bulk_rebalance() - Rebalance the end of a tree after a bulk insert. * @mas: The maple state @@ -2356,97 +2295,6 @@ done: wr_mas->offset_end = mas->offset = offset; } -/* - * mas_topiary_range() - Add a range of slots to the topiary. - * @mas: The maple state - * @destroy: The topiary to add the slots (usually destroy) - * @start: The starting slot inclusively - * @end: The end slot inclusively - */ -static inline void mas_topiary_range(struct ma_state *mas, - struct ma_topiary *destroy, unsigned char start, unsigned char end) -{ - void __rcu **slots; - unsigned char offset; - - MT_BUG_ON(mas->tree, mte_is_leaf(mas->node)); - slots = ma_slots(mas_mn(mas), mte_node_type(mas->node)); - for (offset = start; offset <= end; offset++) { - struct maple_enode *enode = mas_slot_locked(mas, slots, offset); - - if (mte_dead_node(enode)) - continue; - - mat_add(destroy, enode); - } -} - -/* - * mast_topiary() - Add the portions of the tree to the removal list; either to - * be freed or discarded (destroy walk). - * @mast: The maple_subtree_state. - */ -static inline void mast_topiary(struct maple_subtree_state *mast) -{ - MA_WR_STATE(wr_mas, mast->orig_l, NULL); - unsigned char r_start, r_end; - unsigned char l_start, l_end; - void __rcu **l_slots, **r_slots; - - wr_mas.type = mte_node_type(mast->orig_l->node); - mast->orig_l->index = mast->orig_l->last; - mas_wr_node_walk(&wr_mas); - l_start = mast->orig_l->offset + 1; - l_end = mas_data_end(mast->orig_l); - r_start = 0; - r_end = mast->orig_r->offset; - - if (r_end) - r_end--; - - l_slots = ma_slots(mas_mn(mast->orig_l), - mte_node_type(mast->orig_l->node)); - - r_slots = ma_slots(mas_mn(mast->orig_r), - mte_node_type(mast->orig_r->node)); - - if ((l_start < l_end) && - mte_dead_node(mas_slot_locked(mast->orig_l, l_slots, l_start))) { - l_start++; - } - - if (mte_dead_node(mas_slot_locked(mast->orig_r, r_slots, r_end))) { - if (r_end) - r_end--; - } - - if ((l_start > r_end) && (mast->orig_l->node == mast->orig_r->node)) - return; - - /* At the node where left and right sides meet, add the parts between */ - if (mast->orig_l->node == mast->orig_r->node) { - return mas_topiary_range(mast->orig_l, mast->destroy, - l_start, r_end); - } - - /* mast->orig_r is different and consumed. */ - if (mte_is_leaf(mast->orig_r->node)) - return; - - if (mte_dead_node(mas_slot_locked(mast->orig_l, l_slots, l_end))) - l_end--; - - - if (l_start <= l_end) - mas_topiary_range(mast->orig_l, mast->destroy, l_start, l_end); - - if (mte_dead_node(mas_slot_locked(mast->orig_r, r_slots, r_start))) - r_start++; - - if (r_start <= r_end) - mas_topiary_range(mast->orig_r, mast->destroy, 0, r_end); -} - /* * mast_rebalance_next() - Rebalance against the next node * @mast: The maple subtree state @@ -2482,7 +2330,7 @@ static inline void mast_rebalance_prev(struct maple_subtree_state *mast) /* * mast_spanning_rebalance() - Rebalance nodes with nearest neighbour favouring * the node to the right. Checking the nodes to the right then the left at each - * level upwards until root is reached. Free and destroy as needed. + * level upwards until root is reached. * Data is copied into the @mast->bn. * @mast: The maple_subtree_state. */ @@ -2491,8 +2339,6 @@ bool mast_spanning_rebalance(struct maple_subtree_state *mast) { struct ma_state r_tmp = *mast->orig_r; struct ma_state l_tmp = *mast->orig_l; - struct maple_enode *ancestor = NULL; - unsigned char start, end; unsigned char depth = 0; r_tmp = *mast->orig_r; @@ -2501,87 +2347,25 @@ bool mast_spanning_rebalance(struct maple_subtree_state *mast) mas_ascend(mast->orig_r); mas_ascend(mast->orig_l); depth++; - if (!ancestor && - (mast->orig_r->node == mast->orig_l->node)) { - ancestor = mast->orig_r->node; - end = mast->orig_r->offset - 1; - start = mast->orig_l->offset + 1; - } - if (mast->orig_r->offset < mas_data_end(mast->orig_r)) { - if (!ancestor) { - ancestor = mast->orig_r->node; - start = 0; - } - mast->orig_r->offset++; do { mas_descend(mast->orig_r); mast->orig_r->offset = 0; - depth--; - } while (depth); + } while (--depth); mast_rebalance_next(mast); - do { - unsigned char l_off = 0; - struct maple_enode *child = r_tmp.node; - - mas_ascend(&r_tmp); - if (ancestor == r_tmp.node) - l_off = start; - - if (r_tmp.offset) - r_tmp.offset--; - - if (l_off < r_tmp.offset) - mas_topiary_range(&r_tmp, mast->destroy, - l_off, r_tmp.offset); - - if (l_tmp.node != child) - mat_add(mast->free, child); - - } while (r_tmp.node != ancestor); - *mast->orig_l = l_tmp; return true; - } else if (mast->orig_l->offset != 0) { - if (!ancestor) { - ancestor = mast->orig_l->node; - end = mas_data_end(mast->orig_l); - } - mast->orig_l->offset--; do { mas_descend(mast->orig_l); mast->orig_l->offset = mas_data_end(mast->orig_l); - depth--; - } while (depth); + } while (--depth); mast_rebalance_prev(mast); - do { - unsigned char r_off; - struct maple_enode *child = l_tmp.node; - - mas_ascend(&l_tmp); - if (ancestor == l_tmp.node) - r_off = end; - else - r_off = mas_data_end(&l_tmp); - - if (l_tmp.offset < r_off) - l_tmp.offset++; - - if (l_tmp.offset < r_off) - mas_topiary_range(&l_tmp, mast->destroy, - l_tmp.offset, r_off); - - if (r_tmp.node != child) - mat_add(mast->free, child); - - } while (l_tmp.node != ancestor); - *mast->orig_r = r_tmp; return true; } @@ -2593,36 +2377,24 @@ bool mast_spanning_rebalance(struct maple_subtree_state *mast) } /* - * mast_ascend_free() - Add current original maple state nodes to the free list - * and ascend. + * mast_ascend() - Ascend the original left and right maple states. * @mast: the maple subtree state. * - * Ascend the original left and right sides and add the previous nodes to the - * free list. Set the slots to point to the correct location in the new nodes. + * Ascend the original left and right sides. Set the offsets to point to the + * data already in the new tree (@mast->l and @mast->r). */ -static inline void -mast_ascend_free(struct maple_subtree_state *mast) +static inline void mast_ascend(struct maple_subtree_state *mast) { MA_WR_STATE(wr_mas, mast->orig_r, NULL); - struct maple_enode *left = mast->orig_l->node; - struct maple_enode *right = mast->orig_r->node; - mas_ascend(mast->orig_l); mas_ascend(mast->orig_r); - mat_add(mast->free, left); - - if (left != right) - mat_add(mast->free, right); mast->orig_r->offset = 0; mast->orig_r->index = mast->r->max; /* last should be larger than or equal to index */ if (mast->orig_r->last < mast->orig_r->index) mast->orig_r->last = mast->orig_r->index; - /* - * The node may not contain the value so set slot to ensure all - * of the nodes contents are freed or destroyed. - */ + wr_mas.type = mte_node_type(mast->orig_r->node); mas_wr_node_walk(&wr_mas); /* Set up the left side of things */ @@ -2800,31 +2572,148 @@ static inline void mast_set_split_parents(struct maple_subtree_state *mast, mas_set_split_parent(mast->r, l, r, &slot, split); } +/* + * mas_topiary_node() - Dispose of a singe node + * @mas: The maple state for pushing nodes + * @enode: The encoded maple node + * @in_rcu: If the tree is in rcu mode + * + * The node will either be RCU freed or pushed back on the maple state. + */ +static inline void mas_topiary_node(struct ma_state *mas, + struct maple_enode *enode, bool in_rcu) +{ + struct maple_node *tmp; + + if (enode == MAS_NONE) + return; + + tmp = mte_to_node(enode); + mte_set_node_dead(enode); + if (in_rcu) + ma_free_rcu(tmp); + else + mas_push_node(mas, tmp); +} + +/* + * mas_topiary_replace() - Replace the data with new data, then repair the + * parent links within the new tree. Iterate over the dead sub-tree and collect + * the dead subtrees and topiary the nodes that are no longer of use. + * + * The new tree will have up to three children with the correct parent. Keep + * track of the new entries as they need to be followed to find the next level + * of new entries. + * + * The old tree will have up to three children with the old parent. Keep track + * of the old entries as they may have more nodes below replaced. Nodes within + * [index, last] are dead subtrees, others need to be freed and followed. + * + * @mas: The maple state pointing at the new data + * @old_enode: The maple encoded node being replaced + * + */ +static inline void mas_topiary_replace(struct ma_state *mas, + struct maple_enode *old_enode) +{ + struct ma_state tmp[3], tmp_next[3]; + MA_TOPIARY(subtrees, mas->tree); + bool in_rcu; + int i, n; + + /* Place data in tree & then mark node as old */ + mas_put_in_tree(mas, old_enode); + + /* Update the parent pointers in the tree */ + tmp[0] = *mas; + tmp[0].offset = 0; + tmp[1].node = MAS_NONE; + tmp[2].node = MAS_NONE; + while (!mte_is_leaf(tmp[0].node)) { + n = 0; + for (i = 0; i < 3; i++) { + if (mas_is_none(&tmp[i])) + continue; + + while (n < 3) { + if (!mas_find_child(&tmp[i], &tmp_next[n])) + break; + n++; + } + + mas_adopt_children(&tmp[i], tmp[i].node); + } + + if (WARN_ON(n == 0)) + break; + + while (n < 3) + tmp_next[n++].node = MAS_NONE; + + for (i = 0; i < 3; i++) + tmp[i] = tmp_next[i]; + } + + /* Collect the old nodes that need to be discarded */ + if (mte_is_leaf(old_enode)) + return mas_free(mas, old_enode); + + tmp[0] = *mas; + tmp[0].offset = 0; + tmp[0].node = old_enode; + tmp[1].node = MAS_NONE; + tmp[2].node = MAS_NONE; + in_rcu = mt_in_rcu(mas->tree); + do { + n = 0; + for (i = 0; i < 3; i++) { + if (mas_is_none(&tmp[i])) + continue; + + while (n < 3) { + if (!mas_find_child(&tmp[i], &tmp_next[n])) + break; + + if ((tmp_next[n].min >= tmp_next->index) && + (tmp_next[n].max <= tmp_next->last)) { + mat_add(&subtrees, tmp_next[n].node); + tmp_next[n].node = MAS_NONE; + } else { + n++; + } + } + } + + if (WARN_ON(n == 0)) + break; + + while (n < 3) + tmp_next[n++].node = MAS_NONE; + + for (i = 0; i < 3; i++) { + mas_topiary_node(mas, tmp[i].node, in_rcu); + tmp[i] = tmp_next[i]; + } + } while (!mte_is_leaf(tmp[0].node)); + + for (i = 0; i < 3; i++) + mas_topiary_node(mas, tmp[i].node, in_rcu); + + mas_mat_destroy(mas, &subtrees); +} + /* * mas_wmb_replace() - Write memory barrier and replace * @mas: The maple state - * @free: the maple topiary list of nodes to free - * @destroy: The maple topiary list of nodes to destroy (walk and free) + * @old: The old maple encoded node that is being replaced. * * Updates gap as necessary. */ static inline void mas_wmb_replace(struct ma_state *mas, - struct ma_topiary *free, - struct ma_topiary *destroy) + struct maple_enode *old_enode) { - /* All nodes must see old data as dead prior to replacing that data */ - smp_wmb(); /* Needed for RCU */ - /* Insert the new data in the tree */ - mas_replace(mas, true); - - if (!mte_is_leaf(mas->node)) - mas_descend_adopt(mas); - - mas_mat_free(mas, free); - - if (destroy) - mas_mat_destroy(mas, destroy); + mas_topiary_replace(mas, old_enode); if (mte_is_leaf(mas->node)) return; @@ -2832,29 +2721,6 @@ static inline void mas_wmb_replace(struct ma_state *mas, mas_update_gap(mas); } -/* - * mast_new_root() - Set a new tree root during subtree creation - * @mast: The maple subtree state - * @mas: The maple state - */ -static inline void mast_new_root(struct maple_subtree_state *mast, - struct ma_state *mas) -{ - mas_mn(mast->l)->parent = - ma_parent_ptr(((unsigned long)mas->tree | MA_ROOT_PARENT)); - if (!mte_dead_node(mast->orig_l->node) && - !mte_is_root(mast->orig_l->node)) { - do { - mast_ascend_free(mast); - mast_topiary(mast); - } while (!mte_is_root(mast->orig_l->node)); - } - if ((mast->orig_l->node != mas->node) && - (mast->l->depth > mas_mt_height(mas))) { - mat_add(mast->free, mas->node); - } -} - /* * mast_cp_to_nodes() - Copy data out to nodes. * @mast: The maple subtree state @@ -3038,12 +2904,11 @@ static int mas_spanning_rebalance(struct ma_state *mas, unsigned char split, mid_split; unsigned char slot = 0; struct maple_enode *left = NULL, *middle = NULL, *right = NULL; + struct maple_enode *old_enode; MA_STATE(l_mas, mas->tree, mas->index, mas->index); MA_STATE(r_mas, mas->tree, mas->index, mas->last); MA_STATE(m_mas, mas->tree, mas->index, mas->index); - MA_TOPIARY(free, mas->tree); - MA_TOPIARY(destroy, mas->tree); /* * The tree needs to be rebalanced and leaves need to be kept at the same level. @@ -3052,8 +2917,6 @@ static int mas_spanning_rebalance(struct ma_state *mas, mast->l = &l_mas; mast->m = &m_mas; mast->r = &r_mas; - mast->free = &free; - mast->destroy = &destroy; l_mas.node = r_mas.node = m_mas.node = MAS_NONE; /* Check if this is not root and has sufficient data. */ @@ -3061,7 +2924,7 @@ static int mas_spanning_rebalance(struct ma_state *mas, unlikely(mast->bn->b_end <= mt_min_slots[mast->bn->type])) mast_spanning_rebalance(mast); - mast->orig_l->depth = 0; + l_mas.depth = 0; /* * Each level of the tree is examined and balanced, pushing data to the left or @@ -3072,7 +2935,7 @@ static int mas_spanning_rebalance(struct ma_state *mas, * original tree and the partially new tree. To remedy the parent pointers in * the old tree, the new data is swapped into the active tree and a walk down * the tree is performed and the parent pointers are updated. - * See mas_descend_adopt() for more information.. + * See mas_topiary_replace() for more information. */ while (count--) { mast->bn->b_end--; @@ -3089,13 +2952,13 @@ static int mas_spanning_rebalance(struct ma_state *mas, */ memset(mast->bn, 0, sizeof(struct maple_big_node)); mast->bn->type = mte_node_type(left); - mast->orig_l->depth++; + l_mas.depth++; /* Root already stored in l->node. */ if (mas_is_root_limits(mast->l)) goto new_root; - mast_ascend_free(mast); + mast_ascend(mast); mast_combine_cp_left(mast); l_mas.offset = mast->bn->b_end; mab_set_b_end(mast->bn, &l_mas, left); @@ -3104,7 +2967,6 @@ static int mas_spanning_rebalance(struct ma_state *mas, /* Copy anything necessary out of the right node. */ mast_combine_cp_right(mast); - mast_topiary(mast); mast->orig_l->last = mast->orig_l->max; if (mast_sufficient(mast)) @@ -3126,7 +2988,7 @@ static int mas_spanning_rebalance(struct ma_state *mas, l_mas.node = mt_mk_node(ma_mnode_ptr(mas_pop_node(mas)), mte_node_type(mast->orig_l->node)); - mast->orig_l->depth++; + l_mas.depth++; mab_mas_cp(mast->bn, 0, mt_slots[mast->bn->type] - 1, &l_mas, true); mte_set_parent(left, l_mas.node, slot); if (middle) @@ -3137,23 +2999,20 @@ static int mas_spanning_rebalance(struct ma_state *mas, if (mas_is_root_limits(mast->l)) { new_root: - mast_new_root(mast, mas); + mas_mn(mast->l)->parent = ma_parent_ptr(mas_tree_parent(mas)); + while (!mte_is_root(mast->orig_l->node)) + mast_ascend(mast); } else { mas_mn(&l_mas)->parent = mas_mn(mast->orig_l)->parent; } - if (!mte_dead_node(mast->orig_l->node)) - mat_add(&free, mast->orig_l->node); - - mas->depth = mast->orig_l->depth; - *mast->orig_l = l_mas; - mte_set_node_dead(mas->node); - - /* Set up mas for insertion. */ - mast->orig_l->depth = mas->depth; - mast->orig_l->alloc = mas->alloc; - *mas = *mast->orig_l; - mas_wmb_replace(mas, &free, &destroy); + old_enode = mast->orig_l->node; + mas->depth = l_mas.depth; + mas->node = l_mas.node; + mas->min = l_mas.min; + mas->max = l_mas.max; + mas->offset = l_mas.offset; + mas_wmb_replace(mas, old_enode); mtree_range_walk(mas); return mast->bn->b_end; } @@ -3229,7 +3088,7 @@ static inline void mas_destroy_rebalance(struct ma_state *mas, unsigned char end { enum maple_type mt = mte_node_type(mas->node); struct maple_node reuse, *newnode, *parent, *new_left, *left, *node; - struct maple_enode *eparent; + struct maple_enode *eparent, *old_eparent; unsigned char offset, tmp, split = mt_slots[mt] / 2; void __rcu **l_slots, **slots; unsigned long *l_pivs, *pivs, gap; @@ -3271,7 +3130,7 @@ static inline void mas_destroy_rebalance(struct ma_state *mas, unsigned char end l_mas.max = l_pivs[split]; mas->min = l_mas.max + 1; - eparent = mt_mk_node(mte_parent(l_mas.node), + old_eparent = mt_mk_node(mte_parent(l_mas.node), mas_parent_enum(&l_mas, l_mas.node)); tmp += end; if (!in_rcu) { @@ -3287,7 +3146,7 @@ static inline void mas_destroy_rebalance(struct ma_state *mas, unsigned char end memcpy(node, newnode, sizeof(struct maple_node)); ma_set_meta(node, mt, 0, tmp - 1); - mte_set_pivot(eparent, mte_parent_slot(l_mas.node), + mte_set_pivot(old_eparent, mte_parent_slot(l_mas.node), l_pivs[split]); /* Remove data from l_pivs. */ @@ -3295,6 +3154,7 @@ static inline void mas_destroy_rebalance(struct ma_state *mas, unsigned char end memset(l_pivs + tmp, 0, sizeof(unsigned long) * (max_p - tmp)); memset(l_slots + tmp, 0, sizeof(void *) * (max_s - tmp)); ma_set_meta(left, mt, 0, split); + eparent = old_eparent; goto done; } @@ -3319,7 +3179,7 @@ static inline void mas_destroy_rebalance(struct ma_state *mas, unsigned char end parent = mas_pop_node(mas); slots = ma_slots(parent, mt); pivs = ma_pivots(parent, mt); - memcpy(parent, mte_to_node(eparent), sizeof(struct maple_node)); + memcpy(parent, mte_to_node(old_eparent), sizeof(struct maple_node)); rcu_assign_pointer(slots[offset], mas->node); rcu_assign_pointer(slots[offset - 1], l_mas.node); pivs[offset - 1] = l_mas.max; @@ -3331,8 +3191,10 @@ done: mte_set_gap(eparent, mte_parent_slot(l_mas.node), gap); mas_ascend(mas); - if (in_rcu) - mas_replace(mas, false); + if (in_rcu) { + mas_replace_node(mas, old_eparent); + mas_adopt_children(mas, mas->node); + } mas_update_gap(mas); } @@ -3381,7 +3243,6 @@ static inline void mast_fill_bnode(struct maple_subtree_state *mast, unsigned char skip) { bool cp = true; - struct maple_enode *old = mas->node; unsigned char split; memset(mast->bn->gap, 0, sizeof(unsigned long) * ARRAY_SIZE(mast->bn->gap)); @@ -3393,7 +3254,6 @@ static inline void mast_fill_bnode(struct maple_subtree_state *mast, cp = false; } else { mas_ascend(mas); - mat_add(mast->free, old); mas->offset = mte_parent_slot(mas->node); } @@ -3497,13 +3357,11 @@ static inline bool mas_push_data(struct ma_state *mas, int height, split = mt_slots[mast->bn->type] - 2; if (left) { /* Switch mas to prev node */ - mat_add(mast->free, mas->node); *mas = tmp_mas; /* Start using mast->l for the left side. */ tmp_mas.node = mast->l->node; *mast->l = tmp_mas; } else { - mat_add(mast->free, tmp_mas.node); tmp_mas.node = mast->r->node; *mast->r = tmp_mas; split = slot_total - split; @@ -3531,6 +3389,7 @@ static int mas_split(struct ma_state *mas, struct maple_big_node *b_node) struct maple_subtree_state mast; int height = 0; unsigned char mid_split, split = 0; + struct maple_enode *old; /* * Splitting is handled differently from any other B-tree; the Maple @@ -3553,7 +3412,6 @@ static int mas_split(struct ma_state *mas, struct maple_big_node *b_node) MA_STATE(r_mas, mas->tree, mas->index, mas->last); MA_STATE(prev_l_mas, mas->tree, mas->index, mas->last); MA_STATE(prev_r_mas, mas->tree, mas->index, mas->last); - MA_TOPIARY(mat, mas->tree); trace_ma_op(__func__, mas); mas->depth = mas_mt_height(mas); @@ -3566,7 +3424,6 @@ static int mas_split(struct ma_state *mas, struct maple_big_node *b_node) mast.r = &r_mas; mast.orig_l = &prev_l_mas; mast.orig_r = &prev_r_mas; - mast.free = &mat; mast.bn = b_node; while (height++ <= mas->depth) { @@ -3606,9 +3463,9 @@ static int mas_split(struct ma_state *mas, struct maple_big_node *b_node) } /* Set the original node as dead */ - mat_add(mast.free, mas->node); + old = mas->node; mas->node = l_mas.node; - mas_wmb_replace(mas, mast.free, NULL); + mas_wmb_replace(mas, old); mtree_range_walk(mas); return 1; } @@ -3650,11 +3507,13 @@ static inline int mas_commit_b_node(struct ma_wr_state *wr_mas, struct maple_big_node *b_node, unsigned char end) { struct maple_node *node; + struct maple_enode *old_enode; unsigned char b_end = b_node->b_end; enum maple_type b_type = b_node->type; + old_enode = wr_mas->mas->node; if ((b_end < mt_min_slots[b_type]) && - (!mte_is_root(wr_mas->mas->node)) && + (!mte_is_root(old_enode)) && (mas_mt_height(wr_mas->mas) > 1)) return mas_rebalance(wr_mas->mas, b_node); @@ -3672,7 +3531,7 @@ static inline int mas_commit_b_node(struct ma_wr_state *wr_mas, node->parent = mas_mn(wr_mas->mas)->parent; wr_mas->mas->node = mt_mk_node(node, b_type); mab_mas_cp(b_node, 0, b_end, wr_mas->mas, false); - mas_replace(wr_mas->mas, false); + mas_replace_node(wr_mas->mas, old_enode); reuse_node: mas_update_gap(wr_mas->mas); return 1; @@ -3699,8 +3558,7 @@ static inline int mas_root_expand(struct ma_state *mas, void *entry) node = mas_pop_node(mas); pivots = ma_pivots(node, type); slots = ma_slots(node, type); - node->parent = ma_parent_ptr( - ((unsigned long)mas->tree | MA_ROOT_PARENT)); + node->parent = ma_parent_ptr(mas_tree_parent(mas)); mas->node = mt_mk_node(node, type); if (mas->index) { @@ -3955,6 +3813,7 @@ dead_node: return NULL; } +static void mte_destroy_walk(struct maple_enode *, struct maple_tree *); /* * mas_new_root() - Create a new root node that only contains the entry passed * in. @@ -3988,8 +3847,7 @@ static inline int mas_new_root(struct ma_state *mas, void *entry) node = mas_pop_node(mas); pivots = ma_pivots(node, type); slots = ma_slots(node, type); - node->parent = ma_parent_ptr( - ((unsigned long)mas->tree | MA_ROOT_PARENT)); + node->parent = ma_parent_ptr(mas_tree_parent(mas)); mas->node = mt_mk_node(node, type); rcu_assign_pointer(slots[0], entry); pivots[0] = mas->last; @@ -4022,7 +3880,6 @@ static inline int mas_wr_spanning_store(struct ma_wr_state *wr_mas) /* Left and Right side of spanning store */ MA_STATE(l_mas, NULL, 0, 0); MA_STATE(r_mas, NULL, 0, 0); - MA_WR_STATE(r_wr_mas, &r_mas, wr_mas->entry); MA_WR_STATE(l_wr_mas, &l_mas, wr_mas->entry); @@ -4219,9 +4076,10 @@ static inline bool mas_wr_node_store(struct ma_wr_state *wr_mas) done: mas_leaf_set_meta(mas, newnode, dst_pivots, maple_leaf_64, new_end); if (in_rcu) { - mte_set_node_dead(mas->node); + struct maple_enode *old_enode = mas->node; + mas->node = mt_mk_node(newnode, wr_mas->type); - mas_replace(mas, false); + mas_replace_node(mas, old_enode); } else { memcpy(wr_mas->node, newnode, sizeof(struct maple_node)); } @@ -5898,7 +5756,7 @@ int mas_expected_entries(struct ma_state *mas, unsigned long nr_entries) /* Internal nodes */ nr_nodes += DIV_ROUND_UP(nr_nodes, nonleaf_cap); /* Add working room for split (2 nodes) + new parents */ - mas_node_count(mas, nr_nodes + 3); + mas_node_count_gfp(mas, nr_nodes + 3, GFP_KERNEL); /* Detect if allocations run out */ mas->mas_flags |= MA_STATE_PREALLOC; diff --git a/lib/test_maple_tree.c b/lib/test_maple_tree.c index fad668042f3e..ab9d4461abc9 100644 --- a/lib/test_maple_tree.c +++ b/lib/test_maple_tree.c @@ -9,6 +9,7 @@ #include #include +#include #define MTREE_ALLOC_MAX 0x2000000000000Ul #ifndef CONFIG_DEBUG_MAPLE_TREE @@ -1678,17 +1679,21 @@ static noinline void __init check_forking(struct maple_tree *mt) void *val; MA_STATE(mas, mt, 0, 0); MA_STATE(newmas, mt, 0, 0); + struct rw_semaphore newmt_lock; + + init_rwsem(&newmt_lock); for (i = 0; i <= nr_entries; i++) mtree_store_range(mt, i*10, i*10 + 5, xa_mk_value(i), GFP_KERNEL); mt_set_non_kernel(99999); - mt_init_flags(&newmt, MT_FLAGS_ALLOC_RANGE); + mt_init_flags(&newmt, MT_FLAGS_ALLOC_RANGE | MT_FLAGS_LOCK_EXTERN); + mt_set_external_lock(&newmt, &newmt_lock); newmas.tree = &newmt; mas_reset(&newmas); mas_reset(&mas); - mas_lock(&newmas); + down_write(&newmt_lock); mas.index = 0; mas.last = 0; if (mas_expected_entries(&newmas, nr_entries)) { @@ -1703,10 +1708,10 @@ static noinline void __init check_forking(struct maple_tree *mt) } rcu_read_unlock(); mas_destroy(&newmas); - mas_unlock(&newmas); mt_validate(&newmt); mt_set_non_kernel(0); - mtree_destroy(&newmt); + __mt_destroy(&newmt); + up_write(&newmt_lock); } static noinline void __init check_iteration(struct maple_tree *mt) @@ -1818,6 +1823,10 @@ static noinline void __init bench_forking(struct maple_tree *mt) void *val; MA_STATE(mas, mt, 0, 0); MA_STATE(newmas, mt, 0, 0); + struct rw_semaphore newmt_lock; + + init_rwsem(&newmt_lock); + mt_set_external_lock(&newmt, &newmt_lock); for (i = 0; i <= nr_entries; i++) mtree_store_range(mt, i*10, i*10 + 5, @@ -1832,7 +1841,7 @@ static noinline void __init bench_forking(struct maple_tree *mt) mas.index = 0; mas.last = 0; rcu_read_lock(); - mas_lock(&newmas); + down_write(&newmt_lock); if (mas_expected_entries(&newmas, nr_entries)) { printk("OOM!"); BUG_ON(1); @@ -1843,11 +1852,11 @@ static noinline void __init bench_forking(struct maple_tree *mt) mas_store(&newmas, val); } mas_destroy(&newmas); - mas_unlock(&newmas); rcu_read_unlock(); mt_validate(&newmt); mt_set_non_kernel(0); - mtree_destroy(&newmt); + __mt_destroy(&newmt); + up_write(&newmt_lock); } } #endif @@ -2453,6 +2462,10 @@ static noinline void __init check_dup_gaps(struct maple_tree *mt, void *tmp; MA_STATE(mas, mt, 0, 0); MA_STATE(newmas, &newmt, 0, 0); + struct rw_semaphore newmt_lock; + + init_rwsem(&newmt_lock); + mt_set_external_lock(&newmt, &newmt_lock); if (!zero_start) i = 1; @@ -2462,9 +2475,9 @@ static noinline void __init check_dup_gaps(struct maple_tree *mt, mtree_store_range(mt, i*10, (i+1)*10 - gap, xa_mk_value(i), GFP_KERNEL); - mt_init_flags(&newmt, MT_FLAGS_ALLOC_RANGE); + mt_init_flags(&newmt, MT_FLAGS_ALLOC_RANGE | MT_FLAGS_LOCK_EXTERN); mt_set_non_kernel(99999); - mas_lock(&newmas); + down_write(&newmt_lock); ret = mas_expected_entries(&newmas, nr_entries); mt_set_non_kernel(0); MT_BUG_ON(mt, ret != 0); @@ -2477,9 +2490,9 @@ static noinline void __init check_dup_gaps(struct maple_tree *mt, } rcu_read_unlock(); mas_destroy(&newmas); - mas_unlock(&newmas); - mtree_destroy(&newmt); + __mt_destroy(&newmt); + up_write(&newmt_lock); } /* Duplicate many sizes of trees. Mainly to test expected entry values */ diff --git a/mm/compaction.c b/mm/compaction.c index 2d9bc2ebfadf..b9a67520d442 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -49,6 +49,9 @@ static inline void count_compact_events(enum vm_event_item item, long delta) #define CREATE_TRACE_POINTS #include +#undef CREATE_TRACE_POINTS +#include +#include #define block_start_pfn(pfn, order) round_down(pfn, 1UL << (order)) #define block_end_pfn(pfn, order) ALIGN((pfn) + 1, 1UL << (order)) @@ -2321,6 +2324,7 @@ compact_zone(struct compact_control *cc, struct capture_control *capc) const bool sync = cc->mode != MIGRATE_ASYNC; bool update_cached; unsigned int nr_succeeded = 0; + long vendor_ret; /* * These counters track activities during zone compaction. Initialize @@ -2391,6 +2395,7 @@ compact_zone(struct compact_control *cc, struct capture_control *capc) cc->zone->compact_cached_migrate_pfn[0] == cc->zone->compact_cached_migrate_pfn[1]; trace_mm_compaction_begin(cc, start_pfn, end_pfn, sync); + trace_android_vh_mm_compaction_begin(cc, &vendor_ret); /* lru_add_drain_all could be expensive with involving other CPUs */ lru_add_drain(); @@ -2516,6 +2521,7 @@ out: count_compact_events(COMPACTMIGRATE_SCANNED, cc->total_migrate_scanned); count_compact_events(COMPACTFREE_SCANNED, cc->total_free_scanned); + trace_android_vh_mm_compaction_end(cc, vendor_ret); trace_mm_compaction_end(cc, start_pfn, end_pfn, sync, ret); return ret; @@ -2655,7 +2661,7 @@ enum compact_result try_to_compact_pages(gfp_t gfp_mask, unsigned int order, || fatal_signal_pending(current)) break; } - + trace_android_vh_compaction_try_to_compact_pages_exit(&rc); return rc; } @@ -2902,6 +2908,7 @@ static void kcompactd_do_work(pg_data_t *pgdat) VM_BUG_ON(!list_empty(&cc.freepages)); VM_BUG_ON(!list_empty(&cc.migratepages)); } + trace_android_vh_compaction_exit(pgdat->node_id, cc.order, cc.highest_zoneidx); /* * Regardless of success, we are done until woken up next. But remember diff --git a/mm/filemap.c b/mm/filemap.c index 65bc874b7996..c445deb4d32c 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -50,6 +50,9 @@ #define CREATE_TRACE_POINTS #include +#undef CREATE_TRACE_POINTS +#include + /* * FIXME: remove all knowledge of the buffer layer from the core VM */ @@ -1930,6 +1933,9 @@ repeat: return folio; folio = NULL; } + + trace_android_vh_filemap_get_folio(mapping, index, fgp_flags, + gfp, folio); if (!folio) goto no_page; diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 9286493075cd..b30680563d7a 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -78,6 +78,7 @@ struct cgroup_subsys memory_cgrp_subsys __read_mostly; EXPORT_SYMBOL(memory_cgrp_subsys); struct mem_cgroup *root_mem_cgroup __read_mostly; +EXPORT_SYMBOL_GPL(root_mem_cgroup); /* Active memory cgroup to use from an interrupt context */ DEFINE_PER_CPU(struct mem_cgroup *, int_active_memcg); @@ -827,6 +828,7 @@ void __mod_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, if (!mem_cgroup_disabled()) __mod_memcg_lruvec_state(lruvec, idx, val); } +EXPORT_SYMBOL_GPL(__mod_lruvec_state); void __mod_lruvec_page_state(struct page *page, enum node_stat_item idx, int val) @@ -1392,6 +1394,7 @@ void mem_cgroup_update_lru_size(struct lruvec *lruvec, enum lru_list lru, if (nr_pages > 0) *lru_size += nr_pages; } +EXPORT_SYMBOL_GPL(mem_cgroup_update_lru_size); /** * mem_cgroup_margin - calculate chargeable space of a memory cgroup diff --git a/mm/memory.c b/mm/memory.c index 0f780a8dfaef..78d5312c0078 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3500,6 +3500,12 @@ reuse: return wp_page_shared(vmf); } copy: + if ((vmf->flags & FAULT_FLAG_VMA_LOCK) && !vma->anon_vma) { + pte_unmap_unlock(vmf->pte, vmf->ptl); + vma_end_read(vmf->vma); + return VM_FAULT_RETRY; + } + /* * Ok, we need to copy. Oh, well.. */ diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 1276e49b31b0..2c5b854f767b 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -745,6 +745,19 @@ static inline void queue_oom_reaper(struct task_struct *tsk) } #endif /* CONFIG_MMU */ +/** + * tsk->mm has to be non NULL and caller has to guarantee it is stable (either + * under task_lock or operate on the current). + */ +static void __mark_oom_victim(struct task_struct *tsk) +{ + struct mm_struct *mm = tsk->mm; + + if (!cmpxchg(&tsk->signal->oom_mm, NULL, mm)) { + mmgrab(tsk->signal->oom_mm); + } +} + /** * mark_oom_victim - mark the given task as OOM victim * @tsk: task to mark @@ -757,16 +770,13 @@ static inline void queue_oom_reaper(struct task_struct *tsk) */ static void mark_oom_victim(struct task_struct *tsk) { - struct mm_struct *mm = tsk->mm; - WARN_ON(oom_killer_disabled); /* OOM killer might race with memcg OOM */ if (test_and_set_tsk_thread_flag(tsk, TIF_MEMDIE)) return; /* oom_mm is bound to the signal struct life time. */ - if (!cmpxchg(&tsk->signal->oom_mm, NULL, mm)) - mmgrab(tsk->signal->oom_mm); + __mark_oom_victim(tsk); /* * Make sure that the task is woken up from uninterruptible sleep @@ -1260,3 +1270,16 @@ put_task: return -ENOSYS; #endif /* CONFIG_MMU */ } + +void add_to_oom_reaper(struct task_struct *p) +{ + p = find_lock_task_mm(p); + if (!p) + return; + + if (task_will_free_mem(p)) { + __mark_oom_victim(p); + queue_oom_reaper(p); + } + task_unlock(p); +} diff --git a/mm/page_alloc.c b/mm/page_alloc.c index d5ca46562e88..b246d214ce31 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -3590,12 +3590,13 @@ void free_unref_page(struct page *page, unsigned int order) * excessively into the page allocator */ migratetype = get_pcppage_migratetype(page); - if (unlikely(migratetype >= MIGRATE_PCPTYPES)) { + if (unlikely(migratetype > MIGRATE_RECLAIMABLE)) { if (unlikely(is_migrate_isolate(migratetype))) { free_one_page(page_zone(page), page, pfn, order, migratetype, FPI_NONE); return; } - migratetype = MIGRATE_MOVABLE; + if (migratetype == MIGRATE_HIGHATOMIC) + migratetype = MIGRATE_MOVABLE; } zone = page_zone(page); @@ -3939,6 +3940,8 @@ struct page *rmqueue(struct zone *preferred_zone, page = rmqueue_buddy(preferred_zone, zone, order, alloc_flags, migratetype); + trace_android_vh_rmqueue(preferred_zone, zone, order, + gfp_flags, alloc_flags, migratetype); out: /* Separate test+clear to avoid unnecessary atomics */ @@ -4503,6 +4506,7 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order, if (!mutex_trylock(&oom_lock)) { *did_some_progress = 1; schedule_timeout_uninterruptible(1); + trace_android_vh_mm_alloc_pages_may_oom_exit(&oc, *did_some_progress); return NULL; } @@ -4565,6 +4569,7 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order, } out: mutex_unlock(&oom_lock); + trace_android_vh_mm_alloc_pages_may_oom_exit(&oc, *did_some_progress); return page; } @@ -4868,10 +4873,12 @@ __alloc_pages_direct_reclaim(gfp_t gfp_mask, unsigned int order, unsigned int alloc_flags, const struct alloc_context *ac, unsigned long *did_some_progress) { + int retry_times = 0; struct page *page = NULL; unsigned long pflags; bool drained = false; + trace_android_vh_mm_alloc_pages_direct_reclaim_enter(order); psi_memstall_enter(&pflags); *did_some_progress = __perform_reclaim(gfp_mask, order, ac); if (unlikely(!(*did_some_progress))) @@ -4889,11 +4896,12 @@ retry: unreserve_highatomic_pageblock(ac, false); drain_all_pages(NULL); drained = true; + ++retry_times; goto retry; } out: psi_memstall_leave(&pflags); - + trace_android_vh_mm_alloc_pages_direct_reclaim_exit(*did_some_progress, retry_times); return page; } @@ -6709,19 +6717,17 @@ static void __build_all_zonelists(void *data) unsigned long flags; /* - * Explicitly disable this CPU's interrupts before taking seqlock - * to prevent any IRQ handler from calling into the page allocator - * (e.g. GFP_ATOMIC) that could hit zonelist_iter_begin and livelock. + * The zonelist_update_seq must be acquired with irqsave because the + * reader can be invoked from IRQ with GFP_ATOMIC. */ - local_irq_save(flags); + write_seqlock_irqsave(&zonelist_update_seq, flags); /* - * Explicitly disable this CPU's synchronous printk() before taking - * seqlock to prevent any printk() from trying to hold port->lock, for + * Also disable synchronous printk() to prevent any printk() from + * trying to hold port->lock, for * tty_insert_flip_string_and_push_buffer() on other CPU might be * calling kmalloc(GFP_ATOMIC | __GFP_NOWARN) with port->lock held. */ printk_deferred_enter(); - write_seqlock(&zonelist_update_seq); #ifdef CONFIG_NUMA memset(node_load, 0, sizeof(node_load)); @@ -6758,9 +6764,8 @@ static void __build_all_zonelists(void *data) #endif } - write_sequnlock(&zonelist_update_seq); printk_deferred_exit(); - local_irq_restore(flags); + write_sequnlock_irqrestore(&zonelist_update_seq, flags); } static noinline void __init diff --git a/mm/page_owner.c b/mm/page_owner.c index ab06f4391954..95c436aec4c0 100644 --- a/mm/page_owner.c +++ b/mm/page_owner.c @@ -36,6 +36,7 @@ struct page_owner { static bool page_owner_enabled __initdata; DEFINE_STATIC_KEY_FALSE(page_owner_inited); +EXPORT_SYMBOL_GPL(page_owner_inited); static depot_stack_handle_t dummy_handle; static depot_stack_handle_t failure_handle; @@ -214,6 +215,7 @@ noinline void __set_page_owner(struct page *page, unsigned short order, __set_page_owner_handle(page_ext, handle, order, gfp_mask); page_ext_put(page_ext); } +EXPORT_SYMBOL_GPL(__set_page_owner); void __set_page_owner_migrate_reason(struct page *page, int reason) { diff --git a/mm/rmap.c b/mm/rmap.c index d1603eb79818..707de1aa3ceb 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -936,6 +936,7 @@ int folio_referenced(struct folio *folio, int is_locked, return rwc.contended ? -1 : pra.referenced; } +EXPORT_SYMBOL_GPL(folio_referenced); static int page_vma_mkclean_one(struct page_vma_mapped_walk *pvmw) { diff --git a/mm/vmscan.c b/mm/vmscan.c index 89e6f4b7b789..75a5b6b7358c 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -73,6 +73,9 @@ #undef CREATE_TRACE_POINTS #include +EXPORT_TRACEPOINT_SYMBOL_GPL(mm_vmscan_direct_reclaim_begin); +EXPORT_TRACEPOINT_SYMBOL_GPL(mm_vmscan_direct_reclaim_end); + struct scan_control { /* How many pages shrink_list() should reclaim */ unsigned long nr_to_reclaim; @@ -2976,6 +2979,8 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc, goto out; } + + trace_android_vh_tune_swappiness(&swappiness); /* * Global reclaim will swap to prevent OOM even with no * swappiness, but memcg users want to use this knob to @@ -3229,6 +3234,7 @@ static struct lruvec *get_lruvec(struct mem_cgroup *memcg, int nid) static int get_swappiness(struct lruvec *lruvec, struct scan_control *sc) { + int swappiness; struct mem_cgroup *memcg = lruvec_memcg(lruvec); struct pglist_data *pgdat = lruvec_pgdat(lruvec); @@ -3239,7 +3245,10 @@ static int get_swappiness(struct lruvec *lruvec, struct scan_control *sc) mem_cgroup_get_nr_swap_pages(memcg) <= 0) return 0; - return mem_cgroup_swappiness(memcg); + swappiness = mem_cgroup_swappiness(memcg); + trace_android_vh_tune_swappiness(&swappiness); + + return swappiness; } static int get_nr_gens(struct lruvec *lruvec, int type) @@ -4707,10 +4716,11 @@ static void lru_gen_rotate_memcg(struct lruvec *lruvec, int op) { int seg; int old, new; + unsigned long flags; int bin = get_random_u32_below(MEMCG_NR_BINS); struct pglist_data *pgdat = lruvec_pgdat(lruvec); - spin_lock(&pgdat->memcg_lru.lock); + spin_lock_irqsave(&pgdat->memcg_lru.lock, flags); VM_WARN_ON_ONCE(hlist_nulls_unhashed(&lruvec->lrugen.list)); @@ -4745,7 +4755,7 @@ static void lru_gen_rotate_memcg(struct lruvec *lruvec, int op) if (!pgdat->memcg_lru.nr_memcgs[old] && old == get_memcg_gen(pgdat->memcg_lru.seq)) WRITE_ONCE(pgdat->memcg_lru.seq, pgdat->memcg_lru.seq + 1); - spin_unlock(&pgdat->memcg_lru.lock); + spin_unlock_irqrestore(&pgdat->memcg_lru.lock, flags); } void lru_gen_online_memcg(struct mem_cgroup *memcg) @@ -4758,7 +4768,7 @@ void lru_gen_online_memcg(struct mem_cgroup *memcg) struct pglist_data *pgdat = NODE_DATA(nid); struct lruvec *lruvec = get_lruvec(memcg, nid); - spin_lock(&pgdat->memcg_lru.lock); + spin_lock_irq(&pgdat->memcg_lru.lock); VM_WARN_ON_ONCE(!hlist_nulls_unhashed(&lruvec->lrugen.list)); @@ -4769,7 +4779,7 @@ void lru_gen_online_memcg(struct mem_cgroup *memcg) lruvec->lrugen.gen = gen; - spin_unlock(&pgdat->memcg_lru.lock); + spin_unlock_irq(&pgdat->memcg_lru.lock); } } @@ -4793,7 +4803,7 @@ void lru_gen_release_memcg(struct mem_cgroup *memcg) struct pglist_data *pgdat = NODE_DATA(nid); struct lruvec *lruvec = get_lruvec(memcg, nid); - spin_lock(&pgdat->memcg_lru.lock); + spin_lock_irq(&pgdat->memcg_lru.lock); VM_WARN_ON_ONCE(hlist_nulls_unhashed(&lruvec->lrugen.list)); @@ -4805,7 +4815,7 @@ void lru_gen_release_memcg(struct mem_cgroup *memcg) if (!pgdat->memcg_lru.nr_memcgs[gen] && gen == get_memcg_gen(pgdat->memcg_lru.seq)) WRITE_ONCE(pgdat->memcg_lru.seq, pgdat->memcg_lru.seq + 1); - spin_unlock(&pgdat->memcg_lru.lock); + spin_unlock_irq(&pgdat->memcg_lru.lock); } } @@ -5293,11 +5303,51 @@ static unsigned long get_nr_to_reclaim(struct scan_control *sc) return max(sc->nr_to_reclaim, compact_gap(sc->order)); } +static bool should_abort_scan(struct lruvec *lruvec, struct scan_control *sc) +{ + unsigned long nr_to_reclaim = get_nr_to_reclaim(sc); + bool check_wmarks = false; + int i; + + if (sc->nr_reclaimed >= nr_to_reclaim) + return true; + + trace_android_vh_scan_abort_check_wmarks(&check_wmarks); + + if (!check_wmarks) + return false; + + if (!current_is_kswapd()) + return false; + + for (i = 0; i <= sc->reclaim_idx; i++) { + unsigned long wmark; + struct zone *zone = lruvec_pgdat(lruvec)->node_zones + i; + + if (!managed_zone(zone)) + continue; + + if (sysctl_numa_balancing_mode & NUMA_BALANCING_MEMORY_TIERING) + wmark = wmark_pages(zone, WMARK_PROMO); + else + wmark = high_wmark_pages(zone); + + /* + * Abort scan once the target number of order zero pages are met. + * Reclaim MIN_LRU_BATCH << 2 to facilitate immediate kswapd sleep. + */ + wmark += MIN_LRU_BATCH << 2; + if (!zone_watermark_ok_safe(zone, 0, wmark, sc->reclaim_idx)) + return false; + } + + return true; +} + static bool try_to_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc) { long nr_to_scan; unsigned long scanned = 0; - unsigned long nr_to_reclaim = get_nr_to_reclaim(sc); int swappiness = get_swappiness(lruvec, sc); /* clean file folios are more likely to exist */ @@ -5319,7 +5369,7 @@ static bool try_to_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc) if (scanned >= nr_to_scan) break; - if (sc->nr_reclaimed >= nr_to_reclaim) + if (should_abort_scan(lruvec, sc)) break; cond_resched(); @@ -5378,10 +5428,9 @@ static void shrink_many(struct pglist_data *pgdat, struct scan_control *sc) int bin; int first_bin; struct lruvec *lruvec; - struct lru_gen_folio *lrugen; + struct lru_gen_folio *lrugen = NULL; struct mem_cgroup *memcg; const struct hlist_nulls_node *pos; - unsigned long nr_to_reclaim = get_nr_to_reclaim(sc); bin = first_bin = get_random_u32_below(MEMCG_NR_BINS); restart: @@ -5412,7 +5461,7 @@ restart: rcu_read_lock(); - if (sc->nr_reclaimed >= nr_to_reclaim) + if (should_abort_scan(lruvec, sc)) break; } @@ -5423,7 +5472,7 @@ restart: mem_cgroup_put(memcg); - if (sc->nr_reclaimed >= nr_to_reclaim) + if (lruvec && should_abort_scan(lruvec, sc)) return; /* restart if raced with lru_gen_rotate_memcg() */ @@ -7761,6 +7810,8 @@ kswapd_try_sleep: alloc_order); reclaim_order = balance_pgdat(pgdat, alloc_order, highest_zoneidx); + trace_android_vh_vmscan_kswapd_done(pgdat->node_id, highest_zoneidx, + alloc_order, reclaim_order); if (reclaim_order < alloc_order) goto kswapd_try_sleep; } diff --git a/modules.bzl b/modules.bzl index 868ef5ed2bd3..52d92225aab4 100644 --- a/modules.bzl +++ b/modules.bzl @@ -6,7 +6,7 @@ This module contains a full list of kernel modules compiled by GKI. """ -COMMON_GKI_MODULES_LIST = [ +_COMMON_GKI_MODULES_LIST = [ # keep sorted "drivers/block/zram/zram.ko", "drivers/bluetooth/btbcm.ko", @@ -68,3 +68,56 @@ COMMON_GKI_MODULES_LIST = [ "net/tipc/diag.ko", "net/tipc/tipc.ko", ] + +# Deprecated - Use `get_gki_modules_list` function instead. +COMMON_GKI_MODULES_LIST = _COMMON_GKI_MODULES_LIST + +_ARM_GKI_MODULES_LIST = [ + # keep sorted +] + +_ARM64_GKI_MODULES_LIST = [ + # keep sorted + "arch/arm64/geniezone/gzvm.ko", +] + +_RISCV64_GKI_MODULES_LIST = [ + # keep sorted +] + +_X86_GKI_MODULES_LIST = [ + # keep sorted +] + +_X86_64_GKI_MODULES_LIST = [ + # keep sorted +] + +# buildifier: disable=unnamed-macro +def get_gki_modules_list(arch = None): + """ Provides the list of GKI modules. + + Args: + arch: One of [arm, arm64, i386, x86_64, riscv64]. + + Returns: + The list of GKI modules for the given |arch|. + """ + gki_modules_list = [] + _COMMON_GKI_MODULES_LIST + if arch == "arm": + gki_modules_list += _ARM_GKI_MODULES_LIST + elif arch == "arm64": + gki_modules_list += _ARM64_GKI_MODULES_LIST + elif arch == "i386": + gki_modules_list += _X86_GKI_MODULES_LIST + elif arch == "x86_64": + gki_modules_list += _X86_64_GKI_MODULES_LIST + elif arch == "riscv64": + gki_modules_list += _RISCV64_GKI_MODULES_LIST + else: + fail("{}: arch {} not supported. Use one of [arm, arm64, i386, x86_64, riscv64]".format( + str(native.package_relative_label(":x")).removesuffix(":x"), + arch, + )) + + return gki_modules_list diff --git a/net/core/net-traces.c b/net/core/net-traces.c index 82a8a5c05639..ed7d56d17665 100644 --- a/net/core/net-traces.c +++ b/net/core/net-traces.c @@ -60,3 +60,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(napi_poll); EXPORT_TRACEPOINT_SYMBOL_GPL(tcp_send_reset); EXPORT_TRACEPOINT_SYMBOL_GPL(tcp_bad_csum); + +EXPORT_TRACEPOINT_SYMBOL_GPL(net_dev_queue); +EXPORT_TRACEPOINT_SYMBOL_GPL(net_dev_xmit); +EXPORT_TRACEPOINT_SYMBOL_GPL(netif_receive_skb); +EXPORT_TRACEPOINT_SYMBOL_GPL(netif_rx); + diff --git a/net/core/sock_map.c b/net/core/sock_map.c index 96db7409baa1..9abbc96e457e 100644 --- a/net/core/sock_map.c +++ b/net/core/sock_map.c @@ -412,8 +412,9 @@ static int __sock_map_delete(struct bpf_stab *stab, struct sock *sk_test, { struct sock *sk; int err = 0; + unsigned long flags; - raw_spin_lock_bh(&stab->lock); + raw_spin_lock_irqsave(&stab->lock, flags); sk = *psk; if (!sk_test || sk_test == sk) sk = xchg(psk, NULL); @@ -423,7 +424,7 @@ static int __sock_map_delete(struct bpf_stab *stab, struct sock *sk_test, else err = -EINVAL; - raw_spin_unlock_bh(&stab->lock); + raw_spin_unlock_irqrestore(&stab->lock, flags); return err; } @@ -921,11 +922,12 @@ static int sock_hash_delete_elem(struct bpf_map *map, void *key) struct bpf_shtab_bucket *bucket; struct bpf_shtab_elem *elem; int ret = -ENOENT; + unsigned long flags; hash = sock_hash_bucket_hash(key, key_size); bucket = sock_hash_select_bucket(htab, hash); - raw_spin_lock_bh(&bucket->lock); + raw_spin_lock_irqsave(&bucket->lock, flags); elem = sock_hash_lookup_elem_raw(&bucket->head, hash, key, key_size); if (elem) { hlist_del_rcu(&elem->node); @@ -933,7 +935,7 @@ static int sock_hash_delete_elem(struct bpf_map *map, void *key) sock_hash_free_elem(htab, elem); ret = 0; } - raw_spin_unlock_bh(&bucket->lock); + raw_spin_unlock_irqrestore(&bucket->lock, flags); return ret; } diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c index d97eb280cb2e..485465d7624e 100644 --- a/net/netfilter/nfnetlink_log.c +++ b/net/netfilter/nfnetlink_log.c @@ -460,7 +460,6 @@ __build_packet_message(struct nfnl_log_net *log, sk_buff_data_t old_tail = inst->skb->tail; struct sock *sk; const unsigned char *hwhdrp; - ktime_t tstamp; nlh = nfnl_msg_put(inst->skb, 0, 0, nfnl_msg_type(NFNL_SUBSYS_ULOG, NFULNL_MSG_PACKET), @@ -589,10 +588,9 @@ __build_packet_message(struct nfnl_log_net *log, goto nla_put_failure; } - tstamp = skb_tstamp_cond(skb, false); - if (hooknum <= NF_INET_FORWARD && tstamp) { + if (hooknum <= NF_INET_FORWARD) { + struct timespec64 kts = ktime_to_timespec64(skb_tstamp_cond(skb, true)); struct nfulnl_msg_packet_timestamp ts; - struct timespec64 kts = ktime_to_timespec64(tstamp); ts.sec = cpu_to_be64(kts.tv_sec); ts.usec = cpu_to_be64(kts.tv_nsec / NSEC_PER_USEC); diff --git a/tools/include/linux/rwsem.h b/tools/include/linux/rwsem.h new file mode 100644 index 000000000000..83971b3cbfce --- /dev/null +++ b/tools/include/linux/rwsem.h @@ -0,0 +1,40 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +#ifndef _TOOLS__RWSEM_H +#define _TOOLS__RWSEM_H + +#include + +struct rw_semaphore { + pthread_rwlock_t lock; +}; + +static inline int init_rwsem(struct rw_semaphore *sem) +{ + return pthread_rwlock_init(&sem->lock, NULL); +} + +static inline int exit_rwsem(struct rw_semaphore *sem) +{ + return pthread_rwlock_destroy(&sem->lock); +} + +static inline int down_read(struct rw_semaphore *sem) +{ + return pthread_rwlock_rdlock(&sem->lock); +} + +static inline int up_read(struct rw_semaphore *sem) +{ + return pthread_rwlock_unlock(&sem->lock); +} + +static inline int down_write(struct rw_semaphore *sem) +{ + return pthread_rwlock_wrlock(&sem->lock); +} + +static inline int up_write(struct rw_semaphore *sem) +{ + return pthread_rwlock_unlock(&sem->lock); +} +#endif /* _TOOLS_RWSEM_H */ diff --git a/tools/testing/selftests/filesystems/fuse/fuse_test.c b/tools/testing/selftests/filesystems/fuse/fuse_test.c index 0bf1f030cbcd..01730e57dc51 100644 --- a/tools/testing/selftests/filesystems/fuse/fuse_test.c +++ b/tools/testing/selftests/filesystems/fuse/fuse_test.c @@ -2047,6 +2047,38 @@ out: return result; } +static int bpf_test_mkdir_and_remove_bpf(const char *mount_dir) +{ + const char *dir = "dir"; + + int result = TEST_FAILURE; + int src_fd = -1; + int bpf_fd = -1; + int fuse_dev = -1; + int fd = -1; + int fd2 = -1; + + TEST(src_fd = open(ft_src, O_DIRECTORY | O_RDONLY | O_CLOEXEC), + src_fd != -1); + TESTEQUAL(install_elf_bpf("test_bpf.bpf", "test_mkdir_remove", &bpf_fd, + NULL, NULL), 0); + TESTEQUAL(mount_fuse_no_init(mount_dir, bpf_fd, src_fd, &fuse_dev), 0); + TEST(fd = s_mkdir(s_path(s(mount_dir), s(dir)), 0777), + fd != -1); + TEST(fd2 = s_open(s_path(s(mount_dir), s(dir)), O_RDONLY), + fd2 != -1); + + result = TEST_SUCCESS; +out: + close(fd2); + close(fd); + close(fuse_dev); + close(bpf_fd); + close(src_fd); + umount(mount_dir); + return result; +} + static void parse_range(const char *ranges, bool *run_test, size_t tests) { size_t i; @@ -2175,6 +2207,7 @@ int main(int argc, char *argv[]) MAKE_TEST(bpf_test_lookup_postfilter), MAKE_TEST(flock_test), MAKE_TEST(bpf_test_create_and_remove_bpf), + MAKE_TEST(bpf_test_mkdir_and_remove_bpf), }; #undef MAKE_TEST diff --git a/tools/testing/selftests/filesystems/fuse/test_bpf.c b/tools/testing/selftests/filesystems/fuse/test_bpf.c index e02bdb4a9380..a014b915c059 100644 --- a/tools/testing/selftests/filesystems/fuse/test_bpf.c +++ b/tools/testing/selftests/filesystems/fuse/test_bpf.c @@ -530,4 +530,26 @@ int createremovebpf_test(struct fuse_bpf_args *fa) } } +SEC("test_mkdir_remove") +int mkdirremovebpf_test(struct fuse_bpf_args *fa) +{ + switch (fa->opcode) { + case FUSE_LOOKUP | FUSE_PREFILTER: { + return FUSE_BPF_BACKING | FUSE_BPF_POST_FILTER; + } + case FUSE_LOOKUP | FUSE_POSTFILTER: { + struct fuse_entry_bpf_out *febo = fa->out_args[1].value; + + febo->bpf_action = FUSE_ACTION_REMOVE; + return 0; + } + + case FUSE_OPENDIR | FUSE_PREFILTER: { + return -EIO; + } + + default: + return FUSE_BPF_BACKING; + } +} diff --git a/tools/testing/selftests/tc-testing/config b/tools/testing/selftests/tc-testing/config index 0c3978fd6bcc..71706197ba0f 100644 --- a/tools/testing/selftests/tc-testing/config +++ b/tools/testing/selftests/tc-testing/config @@ -15,14 +15,11 @@ CONFIG_NET_SCHED=y # # Queueing/Scheduling # -CONFIG_NET_SCH_ATM=m CONFIG_NET_SCH_CAKE=m -CONFIG_NET_SCH_CBQ=m CONFIG_NET_SCH_CBS=m CONFIG_NET_SCH_CHOKE=m CONFIG_NET_SCH_CODEL=m CONFIG_NET_SCH_DRR=m -CONFIG_NET_SCH_DSMARK=m CONFIG_NET_SCH_ETF=m CONFIG_NET_SCH_FQ=m CONFIG_NET_SCH_FQ_CODEL=m @@ -60,8 +57,6 @@ CONFIG_NET_CLS_FLOW=m CONFIG_NET_CLS_FLOWER=m CONFIG_NET_CLS_MATCHALL=m CONFIG_NET_CLS_ROUTE4=m -CONFIG_NET_CLS_RSVP=m -CONFIG_NET_CLS_TCINDEX=m CONFIG_NET_EMATCH=y CONFIG_NET_EMATCH_STACK=32 CONFIG_NET_EMATCH_CMP=m